diff --git a/frontend/node_modules/.vite/deps/_metadata.json b/frontend/node_modules/.vite/deps/_metadata.json index 502111a9..74c34ce8 100644 --- a/frontend/node_modules/.vite/deps/_metadata.json +++ b/frontend/node_modules/.vite/deps/_metadata.json @@ -2,7 +2,7 @@ "hash": "8e064f63", "configHash": "9602e671", "lockfileHash": "2af5d584", - "browserHash": "96f57e4a", + "browserHash": "c9ed3368", "optimized": { "vue-router": { "src": "../../vue-router/dist/vue-router.mjs", @@ -19,487 +19,487 @@ "vuetify": { "src": "../../vuetify/lib/framework.js", "file": "vuetify.js", - "fileHash": "c6e98d38", + "fileHash": "a3d44ba9", "needsInterop": false }, "vuetify/components/VAlert": { "src": "../../vuetify/lib/components/VAlert/index.js", "file": "vuetify_components_VAlert.js", - "fileHash": "ab007c98", + "fileHash": "0494828d", "needsInterop": false }, "vuetify/components/VApp": { "src": "../../vuetify/lib/components/VApp/index.js", "file": "vuetify_components_VApp.js", - "fileHash": "f20430f7", + "fileHash": "8691f9fe", "needsInterop": false }, "vuetify/components/VAppBar": { "src": "../../vuetify/lib/components/VAppBar/index.js", "file": "vuetify_components_VAppBar.js", - "fileHash": "269d1d21", + "fileHash": "ef23c19d", "needsInterop": false }, "vuetify/components/VAvatar": { "src": "../../vuetify/lib/components/VAvatar/index.js", "file": "vuetify_components_VAvatar.js", - "fileHash": "ec01a545", + "fileHash": "5ce8925c", "needsInterop": false }, "vuetify/components/VBtn": { "src": "../../vuetify/lib/components/VBtn/index.js", "file": "vuetify_components_VBtn.js", - "fileHash": "0fcf61d0", + "fileHash": "cf4c48b6", "needsInterop": false }, "vuetify/components/VBtnToggle": { "src": "../../vuetify/lib/components/VBtnToggle/index.js", "file": "vuetify_components_VBtnToggle.js", - "fileHash": "639387a0", + "fileHash": "d1a4f67d", "needsInterop": false }, "vuetify/components/VCard": { "src": "../../vuetify/lib/components/VCard/index.js", "file": "vuetify_components_VCard.js", - "fileHash": "1fdfa6bf", + "fileHash": "baee0497", "needsInterop": false }, "vuetify/components/VChip": { "src": "../../vuetify/lib/components/VChip/index.js", "file": "vuetify_components_VChip.js", - "fileHash": "65e75ee4", + "fileHash": "40af6466", "needsInterop": false }, "vuetify/components/VCode": { "src": "../../vuetify/lib/components/VCode/index.js", "file": "vuetify_components_VCode.js", - "fileHash": "c2812980", + "fileHash": "73fb1a0d", "needsInterop": false }, "vuetify/components/VDataTable": { "src": "../../vuetify/lib/components/VDataTable/index.js", "file": "vuetify_components_VDataTable.js", - "fileHash": "a51c2fa4", + "fileHash": "0015d97a", "needsInterop": false }, "vuetify/components/VDialog": { "src": "../../vuetify/lib/components/VDialog/index.js", "file": "vuetify_components_VDialog.js", - "fileHash": "9634c8d8", + "fileHash": "96235b6a", "needsInterop": false }, "vuetify/components/VDivider": { "src": "../../vuetify/lib/components/VDivider/index.js", "file": "vuetify_components_VDivider.js", - "fileHash": "7aa6c03c", + "fileHash": "22b91c53", "needsInterop": false }, "vuetify/components/VEmptyState": { "src": "../../vuetify/lib/components/VEmptyState/index.js", "file": "vuetify_components_VEmptyState.js", - "fileHash": "85c1d869", + "fileHash": "6fcb7e7d", "needsInterop": false }, "vuetify/components/VExpansionPanel": { "src": "../../vuetify/lib/components/VExpansionPanel/index.js", "file": "vuetify_components_VExpansionPanel.js", - "fileHash": "a0026ebc", + "fileHash": "4b5f700a", "needsInterop": false }, "vuetify/components/VFileInput": { "src": "../../vuetify/lib/components/VFileInput/index.js", "file": "vuetify_components_VFileInput.js", - "fileHash": "b38829ad", + "fileHash": "767d6c24", "needsInterop": false }, "vuetify/components/VForm": { "src": "../../vuetify/lib/components/VForm/index.js", "file": "vuetify_components_VForm.js", - "fileHash": "ed25eb6f", + "fileHash": "f956317f", "needsInterop": false }, "vuetify/components/VGrid": { "src": "../../vuetify/lib/components/VGrid/index.js", "file": "vuetify_components_VGrid.js", - "fileHash": "a4bea739", + "fileHash": "4bbfc290", "needsInterop": false }, "vuetify/components/VIcon": { "src": "../../vuetify/lib/components/VIcon/index.js", "file": "vuetify_components_VIcon.js", - "fileHash": "539b5820", + "fileHash": "6bf4db8a", "needsInterop": false }, "vuetify/components/VImg": { "src": "../../vuetify/lib/components/VImg/index.js", "file": "vuetify_components_VImg.js", - "fileHash": "5753ddf7", + "fileHash": "9c4fdff1", "needsInterop": false }, "vuetify/components/VList": { "src": "../../vuetify/lib/components/VList/index.js", "file": "vuetify_components_VList.js", - "fileHash": "9322645a", + "fileHash": "14e9b6f5", "needsInterop": false }, "vuetify/components/VMain": { "src": "../../vuetify/lib/components/VMain/index.js", "file": "vuetify_components_VMain.js", - "fileHash": "33923772", + "fileHash": "818f7c3d", "needsInterop": false }, "vuetify/components/VMenu": { "src": "../../vuetify/lib/components/VMenu/index.js", "file": "vuetify_components_VMenu.js", - "fileHash": "8cecfbc2", + "fileHash": "6d91a786", "needsInterop": false }, "vuetify/components/VNavigationDrawer": { "src": "../../vuetify/lib/components/VNavigationDrawer/index.js", "file": "vuetify_components_VNavigationDrawer.js", - "fileHash": "32ab5ae0", + "fileHash": "7f6e5d05", "needsInterop": false }, "vuetify/components/VProgressLinear": { "src": "../../vuetify/lib/components/VProgressLinear/index.js", "file": "vuetify_components_VProgressLinear.js", - "fileHash": "9856819c", + "fileHash": "198b1e0f", "needsInterop": false }, "vuetify/components/VSelect": { "src": "../../vuetify/lib/components/VSelect/index.js", "file": "vuetify_components_VSelect.js", - "fileHash": "92807e93", + "fileHash": "a88065a3", "needsInterop": false }, "vuetify/components/VSheet": { "src": "../../vuetify/lib/components/VSheet/index.js", "file": "vuetify_components_VSheet.js", - "fileHash": "e87c90bb", + "fileHash": "bbb3fab6", "needsInterop": false }, "vuetify/components/VSnackbar": { "src": "../../vuetify/lib/components/VSnackbar/index.js", "file": "vuetify_components_VSnackbar.js", - "fileHash": "65283df8", + "fileHash": "13b79196", "needsInterop": false }, "vuetify/components/VSwitch": { "src": "../../vuetify/lib/components/VSwitch/index.js", "file": "vuetify_components_VSwitch.js", - "fileHash": "5798cdd3", + "fileHash": "e04d0dea", "needsInterop": false }, "vuetify/components/VTabs": { "src": "../../vuetify/lib/components/VTabs/index.js", "file": "vuetify_components_VTabs.js", - "fileHash": "05f9a354", + "fileHash": "ea54a15a", "needsInterop": false }, "vuetify/components/VTextField": { "src": "../../vuetify/lib/components/VTextField/index.js", "file": "vuetify_components_VTextField.js", - "fileHash": "6959b30d", + "fileHash": "2fdbd616", "needsInterop": false }, "vuetify/components/VTextarea": { "src": "../../vuetify/lib/components/VTextarea/index.js", "file": "vuetify_components_VTextarea.js", - "fileHash": "88df35a8", + "fileHash": "d7862242", "needsInterop": false }, "vuetify/components/VTimeline": { "src": "../../vuetify/lib/components/VTimeline/index.js", "file": "vuetify_components_VTimeline.js", - "fileHash": "dfc98cd0", + "fileHash": "f6ba4991", "needsInterop": false }, "vuetify/components/VToolbar": { "src": "../../vuetify/lib/components/VToolbar/index.js", "file": "vuetify_components_VToolbar.js", - "fileHash": "37534b0f", + "fileHash": "822ddc35", "needsInterop": false }, "vuetify/components/transitions": { "src": "../../vuetify/lib/components/transitions/index.js", "file": "vuetify_components_transitions.js", - "fileHash": "d7b77fc2", + "fileHash": "0f566edd", "needsInterop": false }, "vuetify/labs/VDateInput": { "src": "../../vuetify/lib/labs/VDateInput/index.js", "file": "vuetify_labs_VDateInput.js", - "fileHash": "25fd9cc8", + "fileHash": "682c9f40", "needsInterop": false } }, "chunks": { - "VAvatar-DdzLb6e_": { - "file": "VAvatar-DdzLb6e_.js", + "VAvatar-BHEBKXii": { + "file": "VAvatar-BHEBKXii.js", "isDynamicEntry": false }, - "VBadge-CiN6PgMV": { - "file": "VBadge-CiN6PgMV.js", + "VBadge-DTJk6Mtd": { + "file": "VBadge-DTJk6Mtd.js", "isDynamicEntry": false }, - "VBtn-0bT-99qM": { - "file": "VBtn-0bT-99qM.js", + "VBtn-Bm4dgaEe": { + "file": "VBtn-Bm4dgaEe.js", "isDynamicEntry": false }, - "VBtnToggle-COHI6AoR": { - "file": "VBtnToggle-COHI6AoR.js", + "VBtnToggle-BtUiWTgd": { + "file": "VBtnToggle-BtUiWTgd.js", "isDynamicEntry": false }, - "VChip-CE9xKsuM": { - "file": "VChip-CE9xKsuM.js", + "VChip-D8z4sLH7": { + "file": "VChip-D8z4sLH7.js", "isDynamicEntry": false }, - "VDefaultsProvider-CTN39wwv": { - "file": "VDefaultsProvider-CTN39wwv.js", + "VDefaultsProvider-C3Dl0By9": { + "file": "VDefaultsProvider-C3Dl0By9.js", "isDynamicEntry": false }, - "VDivider-vMskEUvN": { - "file": "VDivider-vMskEUvN.js", + "VDivider-Bm22Quav": { + "file": "VDivider-Bm22Quav.js", "isDynamicEntry": false }, - "VField-D15cm8qP": { - "file": "VField-D15cm8qP.js", + "VField-CDtYQTyk": { + "file": "VField-CDtYQTyk.js", "isDynamicEntry": false }, - "VGrid-DPxB4khS": { - "file": "VGrid-DPxB4khS.js", + "VGrid-xu6tptBP": { + "file": "VGrid-xu6tptBP.js", "isDynamicEntry": false }, - "VIcon-sEJi0XKP": { - "file": "VIcon-sEJi0XKP.js", + "VIcon-DqvHH35X": { + "file": "VIcon-DqvHH35X.js", "isDynamicEntry": false }, - "VImg-B3K_zKHG": { - "file": "VImg-B3K_zKHG.js", + "VImg-D29ak-Ji": { + "file": "VImg-D29ak-Ji.js", "isDynamicEntry": false }, - "VLabel-BWVZfhvb": { - "file": "VLabel-BWVZfhvb.js", + "VLabel-BK6j7Ce3": { + "file": "VLabel-BK6j7Ce3.js", "isDynamicEntry": false }, - "VList-BPYFsjU7": { - "file": "VList-BPYFsjU7.js", + "VList-BhbWLtAc": { + "file": "VList-BhbWLtAc.js", "isDynamicEntry": false }, - "VMenu-tK8Rb46Q": { - "file": "VMenu-tK8Rb46Q.js", + "VMenu-g8bPIWQQ": { + "file": "VMenu-g8bPIWQQ.js", "isDynamicEntry": false }, - "VOverlay-CXGz5s5q": { - "file": "VOverlay-CXGz5s5q.js", + "VOverlay-BntBXXGT": { + "file": "VOverlay-BntBXXGT.js", "isDynamicEntry": false }, - "VProgressCircular-BQ041Mfz": { - "file": "VProgressCircular-BQ041Mfz.js", + "VProgressCircular-z2FRmexp": { + "file": "VProgressCircular-z2FRmexp.js", "isDynamicEntry": false }, - "VProgressLinear-DIOl79V8": { - "file": "VProgressLinear-DIOl79V8.js", + "VProgressLinear-Wk0zAkvE": { + "file": "VProgressLinear-Wk0zAkvE.js", "isDynamicEntry": false }, - "VSelect-DP-1aJrD": { - "file": "VSelect-DP-1aJrD.js", + "VSelect-9P7g-lSZ": { + "file": "VSelect-9P7g-lSZ.js", "isDynamicEntry": false }, - "VSelectionControl-CPYYRZWE": { - "file": "VSelectionControl-CPYYRZWE.js", + "VSelectionControl-DGk6dNy-": { + "file": "VSelectionControl-DGk6dNy-.js", "isDynamicEntry": false }, - "VSheet-C9a054Bu": { - "file": "VSheet-C9a054Bu.js", + "VSheet-CdUUbWcK": { + "file": "VSheet-CdUUbWcK.js", "isDynamicEntry": false }, - "VSlideGroup-CTSq2TjT": { - "file": "VSlideGroup-CTSq2TjT.js", + "VSlideGroup-CVNSOV5n": { + "file": "VSlideGroup-CVNSOV5n.js", "isDynamicEntry": false }, - "VTextField-BAHlIp66": { - "file": "VTextField-BAHlIp66.js", + "VTextField-CbHSipIH": { + "file": "VTextField-CbHSipIH.js", "isDynamicEntry": false }, - "VToolbar-CBjuzsOU": { - "file": "VToolbar-CBjuzsOU.js", + "VToolbar-DAPb7QHO": { + "file": "VToolbar-DAPb7QHO.js", "isDynamicEntry": false }, - "anchor-fmhqx-jH": { - "file": "anchor-fmhqx-jH.js", + "anchor-Co261iQQ": { + "file": "anchor-Co261iQQ.js", "isDynamicEntry": false }, - "animation-IGJS3o2f": { - "file": "animation-IGJS3o2f.js", + "animation-gSo9lwa6": { + "file": "animation-gSo9lwa6.js", "isDynamicEntry": false }, - "autofocus-DSuuMpGE": { - "file": "autofocus-DSuuMpGE.js", + "autofocus-xE7ffHAe": { + "file": "autofocus-xE7ffHAe.js", "isDynamicEntry": false }, - "border-BomwBLze": { - "file": "border-BomwBLze.js", + "border-DgwbzrV0": { + "file": "border-DgwbzrV0.js", "isDynamicEntry": false }, - "box-De_BNjdi": { - "file": "box-De_BNjdi.js", + "box-BNWMOtF7": { + "file": "box-BNWMOtF7.js", "isDynamicEntry": false }, - "color-CsNXUJXB": { - "file": "color-CsNXUJXB.js", + "color-B0NTWdor": { + "file": "color-B0NTWdor.js", "isDynamicEntry": false }, - "colorUtils-CrR4MKb6": { - "file": "colorUtils-CrR4MKb6.js", + "colorUtils-CIHuTsPA": { + "file": "colorUtils-CIHuTsPA.js", "isDynamicEntry": false }, - "component-cNt7KGbA": { - "file": "component-cNt7KGbA.js", + "component-W6F5nwNC": { + "file": "component-W6F5nwNC.js", "isDynamicEntry": false }, - "createSimpleFunctional-CJfT4avK": { - "file": "createSimpleFunctional-CJfT4avK.js", + "createSimpleFunctional-DYAlCmHj": { + "file": "createSimpleFunctional-DYAlCmHj.js", "isDynamicEntry": false }, - "date-DIfArSSH": { - "file": "date-DIfArSSH.js", + "date-DVxTP86R": { + "file": "date-DVxTP86R.js", "isDynamicEntry": false }, - "deepEqual-tRUStdYj": { - "file": "deepEqual-tRUStdYj.js", + "deepEqual-BC7T2p7H": { + "file": "deepEqual-BC7T2p7H.js", "isDynamicEntry": false }, - "defineComponent-92h8LsW-": { - "file": "defineComponent-92h8LsW-.js", + "defineComponent-D5UWd5Vb": { + "file": "defineComponent-D5UWd5Vb.js", "isDynamicEntry": false }, - "density-D-xugoKB": { - "file": "density-D-xugoKB.js", + "density-Dey2iIaF": { + "file": "density-Dey2iIaF.js", "isDynamicEntry": false }, - "dimensions-BOUfezru": { - "file": "dimensions-BOUfezru.js", + "dimensions-DYqEoPdw": { + "file": "dimensions-DYqEoPdw.js", "isDynamicEntry": false }, - "display-NNQAdN_b": { - "file": "display-NNQAdN_b.js", + "display-BD8QD-8J": { + "file": "display-BD8QD-8J.js", "isDynamicEntry": false }, "easing-DfcvkbkS": { "file": "easing-DfcvkbkS.js", "isDynamicEntry": false }, - "elevation-B2sqdJV6": { - "file": "elevation-B2sqdJV6.js", + "elevation-DF9Lgrr_": { + "file": "elevation-DF9Lgrr_.js", "isDynamicEntry": false }, - "focusTrap-5P1D0YbH": { - "file": "focusTrap-5P1D0YbH.js", + "focusTrap-BRlT3Jgx": { + "file": "focusTrap-BRlT3Jgx.js", "isDynamicEntry": false }, - "form-aavUvMUm": { - "file": "form-aavUvMUm.js", + "form-DdDtsBxc": { + "file": "form-DdDtsBxc.js", "isDynamicEntry": false }, - "forwardRefs-BgbYSFg3": { - "file": "forwardRefs-BgbYSFg3.js", + "forwardRefs-C50LZ3ti": { + "file": "forwardRefs-C50LZ3ti.js", "isDynamicEntry": false }, "getScrollParent-DuXs8SPu": { "file": "getScrollParent-DuXs8SPu.js", "isDynamicEntry": false }, - "goto-CD4cxzRn": { - "file": "goto-CD4cxzRn.js", + "goto-B27jmATn": { + "file": "goto-B27jmATn.js", "isDynamicEntry": false }, - "group-Ba02qEMS": { - "file": "group-Ba02qEMS.js", + "group-sYL2sZpA": { + "file": "group-sYL2sZpA.js", "isDynamicEntry": false }, - "icons-BqOQHwEN": { - "file": "icons-BqOQHwEN.js", + "icons-czM1t0u4": { + "file": "icons-czM1t0u4.js", "isDynamicEntry": false }, - "intersect-B3zhL1Fk": { - "file": "intersect-B3zhL1Fk.js", + "intersect-CzF7r7uD": { + "file": "intersect-CzF7r7uD.js", "isDynamicEntry": false }, - "layout-Booh7E97": { - "file": "layout-Booh7E97.js", + "layout-DcSzssSI": { + "file": "layout-DcSzssSI.js", "isDynamicEntry": false }, - "lazy-CNRMZBuk": { - "file": "lazy-CNRMZBuk.js", + "lazy-CSlNPYYk": { + "file": "lazy-CSlNPYYk.js", "isDynamicEntry": false }, - "loader-Cg-RQrUq": { - "file": "loader-Cg-RQrUq.js", + "loader-Dn_UJdiG": { + "file": "loader-Dn_UJdiG.js", "isDynamicEntry": false }, - "locale-BI-ulWIe": { - "file": "locale-BI-ulWIe.js", + "locale-DTRSr4yu": { + "file": "locale-DTRSr4yu.js", "isDynamicEntry": false }, - "location-Df6p1WYP": { - "file": "location-Df6p1WYP.js", + "location-DD-AfEFw": { + "file": "location-DD-AfEFw.js", "isDynamicEntry": false }, - "position-ew5Obs9G": { - "file": "position-ew5Obs9G.js", + "position-7CDSPI1P": { + "file": "position-7CDSPI1P.js", "isDynamicEntry": false }, - "proxiedModel-BI_mmSsi": { - "file": "proxiedModel-BI_mmSsi.js", + "proxiedModel-BOZtsMxA": { + "file": "proxiedModel-BOZtsMxA.js", "isDynamicEntry": false }, - "resizeObserver-Cj_8nVae": { - "file": "resizeObserver-Cj_8nVae.js", + "resizeObserver-BhsZsTWI": { + "file": "resizeObserver-BhsZsTWI.js", "isDynamicEntry": false }, - "ripple-BcjS5Kg8": { - "file": "ripple-BcjS5Kg8.js", + "ripple-Q8q1hNUv": { + "file": "ripple-Q8q1hNUv.js", "isDynamicEntry": false }, - "rounded-zeYjdF6x": { - "file": "rounded-zeYjdF6x.js", + "rounded-m6mNMWh4": { + "file": "rounded-m6mNMWh4.js", "isDynamicEntry": false }, - "router-CXIrojRO": { - "file": "router-CXIrojRO.js", + "router-CiYG9tKT": { + "file": "router-CiYG9tKT.js", "isDynamicEntry": false }, - "scopeId-BhBMGBSS": { - "file": "scopeId-BhBMGBSS.js", + "scopeId-BbFYJclW": { + "file": "scopeId-BbFYJclW.js", "isDynamicEntry": false }, - "ssrBoot-DPOmvdPm": { - "file": "ssrBoot-DPOmvdPm.js", + "ssrBoot-Dt2Wz9ZC": { + "file": "ssrBoot-Dt2Wz9ZC.js", "isDynamicEntry": false }, - "tag-BzACG_PL": { - "file": "tag-BzACG_PL.js", + "tag-CIFqtlp2": { + "file": "tag-CIFqtlp2.js", "isDynamicEntry": false }, - "theme-CwW_z-RC": { - "file": "theme-CwW_z-RC.js", + "theme-C1b955Ym": { + "file": "theme-C1b955Ym.js", "isDynamicEntry": false }, - "transition-C2n5e2YD": { - "file": "transition-C2n5e2YD.js", + "transition-BieT_XBo": { + "file": "transition-BieT_XBo.js", "isDynamicEntry": false }, - "transitions-CIB99T2D": { - "file": "transitions-CIB99T2D.js", + "transitions-llwxsiay": { + "file": "transitions-llwxsiay.js", "isDynamicEntry": false }, - "useRender-kn3mcOTh": { - "file": "useRender-kn3mcOTh.js", + "useRender-DB_YiTtB": { + "file": "useRender-DB_YiTtB.js", "isDynamicEntry": false }, - "variant-CXhPdVre": { - "file": "variant-CXhPdVre.js", + "variant-BcdnKFgE": { + "file": "variant-BcdnKFgE.js", "isDynamicEntry": false }, "vue.runtime.esm-bundler-BvoXUmaf": { diff --git a/frontend/node_modules/.vite/deps/vuetify.js b/frontend/node_modules/.vite/deps/vuetify.js index 2bcaa301..e74a3dba 100644 --- a/frontend/node_modules/.vite/deps/vuetify.js +++ b/frontend/node_modules/.vite/deps/vuetify.js @@ -1,12 +1,12 @@ import { Mn as effectScope, Ot as nextTick, U as computed, Vn as onScopeDispose, Wn as reactive, er as toValue, gn as watch, pt as h } from "./vue.runtime.esm-bundler-BvoXUmaf.js"; -import { G as mergeDeep, I as includes, a as createDefaults, ct as consoleWarn, i as DefaultsSymbol, nt as IN_BROWSER, s as useDefaults, t as defineComponent, ut as propsFactory, z as isObject } from "./defineComponent-92h8LsW-.js"; -import { a as useLayout } from "./layout-Booh7E97.js"; -import { i as useRtl, n as createLocale, r as useLocale, t as LocaleSymbol } from "./locale-BI-ulWIe.js"; -import { a as useTheme, n as createTheme, t as ThemeSymbol } from "./theme-CwW_z-RC.js"; -import { o as VSvgIcon, r as VClassIcon, t as IconSymbol } from "./icons-BqOQHwEN.js"; -import { a as useDisplay, r as createDisplay, t as DisplaySymbol } from "./display-NNQAdN_b.js"; -import { n as DateOptionsSymbol, o as useDate, r as createDate, t as DateAdapterSymbol } from "./date-DIfArSSH.js"; -import { n as createGoTo, r as useGoTo, t as GoToSymbol } from "./goto-CD4cxzRn.js"; +import { B as isObject, K as mergeDeep, L as includes, a as createDefaults, i as DefaultsSymbol, lt as consoleWarn, rt as IN_BROWSER, s as useDefaults, t as defineComponent, u as propsFactory } from "./defineComponent-D5UWd5Vb.js"; +import { o as VSvgIcon, r as VClassIcon, t as IconSymbol } from "./icons-czM1t0u4.js"; +import { a as useTheme, n as createTheme, t as ThemeSymbol } from "./theme-C1b955Ym.js"; +import { i as useRtl, n as createLocale, r as useLocale, t as LocaleSymbol } from "./locale-DTRSr4yu.js"; +import { a as useLayout } from "./layout-DcSzssSI.js"; +import { a as useDisplay, r as createDisplay, t as DisplaySymbol } from "./display-BD8QD-8J.js"; +import { n as DateOptionsSymbol, o as useDate, r as createDate, t as DateAdapterSymbol } from "./date-DVxTP86R.js"; +import { n as createGoTo, r as useGoTo, t as GoToSymbol } from "./goto-B27jmATn.js"; //#region node_modules/vuetify/lib/composables/hotkey/key-aliases.js /** * Centralized key alias mapping for consistent key normalization across the hotkey system. diff --git a/frontend/node_modules/.vite/deps/vuetify_components_VApp.js b/frontend/node_modules/.vite/deps/vuetify_components_VApp.js index 40e5c741..b4b167a0 100644 --- a/frontend/node_modules/.vite/deps/vuetify_components_VApp.js +++ b/frontend/node_modules/.vite/deps/vuetify_components_VApp.js @@ -1,10 +1,10 @@ import { W as createBaseVNode, ar as normalizeClass, sr as normalizeStyle } from "./vue.runtime.esm-bundler-BvoXUmaf.js"; -import { K as omit, r as genericComponent, ut as propsFactory } from "./defineComponent-92h8LsW-.js"; -import { t as makeComponentProps } from "./component-cNt7KGbA.js"; -import { t as useRender } from "./useRender-kn3mcOTh.js"; -import { i as makeLayoutProps, n as createLayout } from "./layout-Booh7E97.js"; -import { i as useRtl } from "./locale-BI-ulWIe.js"; -import { i as provideTheme, r as makeThemeProps } from "./theme-CwW_z-RC.js"; +import { q as omit, r as genericComponent, u as propsFactory } from "./defineComponent-D5UWd5Vb.js"; +import { t as makeComponentProps } from "./component-W6F5nwNC.js"; +import { t as useRender } from "./useRender-DB_YiTtB.js"; +import { i as provideTheme, r as makeThemeProps } from "./theme-C1b955Ym.js"; +import { i as useRtl } from "./locale-DTRSr4yu.js"; +import { i as makeLayoutProps, n as createLayout } from "./layout-DcSzssSI.js"; import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VApp/VApp.css"; //#region node_modules/vuetify/lib/components/VApp/VApp.js var makeVAppProps = propsFactory({ diff --git a/frontend/node_modules/.vite/deps/vuetify_components_VAppBar.js b/frontend/node_modules/.vite/deps/vuetify_components_VAppBar.js index c67c5bdd..ed510342 100644 --- a/frontend/node_modules/.vite/deps/vuetify_components_VAppBar.js +++ b/frontend/node_modules/.vite/deps/vuetify_components_VAppBar.js @@ -1,11 +1,11 @@ import { Dt as mergeProps, Ft as onMounted, Kn as ref, Qn as toRef, U as computed, Yn as shallowRef, _n as watchEffect, et as createVNode, gn as watch, jt as onBeforeUnmount } from "./vue.runtime.esm-bundler-BvoXUmaf.js"; -import { K as omit, ct as consoleWarn, g as clamp, r as genericComponent, ut as propsFactory } from "./defineComponent-92h8LsW-.js"; -import { t as useRender } from "./useRender-kn3mcOTh.js"; -import { o as useLayoutItem, r as makeLayoutItemProps } from "./layout-Booh7E97.js"; -import { n as useToggleScope, t as useProxiedModel } from "./proxiedModel-BI_mmSsi.js"; -import { i as makeVToolbarTitleProps, n as makeVToolbarProps, r as VToolbarTitle, t as VToolbar } from "./VToolbar-CBjuzsOU.js"; -import { t as useSsrBoot } from "./ssrBoot-DPOmvdPm.js"; -import { n as makeVBtnProps, t as VBtn } from "./VBtn-0bT-99qM.js"; +import { _ as clamp, lt as consoleWarn, q as omit, r as genericComponent, u as propsFactory } from "./defineComponent-D5UWd5Vb.js"; +import { t as useRender } from "./useRender-DB_YiTtB.js"; +import { n as useToggleScope, t as useProxiedModel } from "./proxiedModel-BOZtsMxA.js"; +import { o as useLayoutItem, r as makeLayoutItemProps } from "./layout-DcSzssSI.js"; +import { t as useSsrBoot } from "./ssrBoot-Dt2Wz9ZC.js"; +import { i as makeVToolbarTitleProps, n as makeVToolbarProps, r as VToolbarTitle, t as VToolbar } from "./VToolbar-DAPb7QHO.js"; +import { n as makeVBtnProps, t as VBtn } from "./VBtn-Bm4dgaEe.js"; import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VAppBar/VAppBar.css"; //#region node_modules/vuetify/lib/composables/scroll.js var makeScrollProps = propsFactory({ diff --git a/frontend/node_modules/.vite/deps/vuetify_components_VAvatar.js b/frontend/node_modules/.vite/deps/vuetify_components_VAvatar.js index 0945cb34..c07ebb98 100644 --- a/frontend/node_modules/.vite/deps/vuetify_components_VAvatar.js +++ b/frontend/node_modules/.vite/deps/vuetify_components_VAvatar.js @@ -1,2 +1,2 @@ -import { t as VAvatar } from "./VAvatar-DdzLb6e_.js"; +import { t as VAvatar } from "./VAvatar-BHEBKXii.js"; export { VAvatar }; diff --git a/frontend/node_modules/.vite/deps/vuetify_components_VBtn.js b/frontend/node_modules/.vite/deps/vuetify_components_VBtn.js index cd23db29..108c6f6b 100644 --- a/frontend/node_modules/.vite/deps/vuetify_components_VBtn.js +++ b/frontend/node_modules/.vite/deps/vuetify_components_VBtn.js @@ -1,2 +1,2 @@ -import { t as VBtn } from "./VBtn-0bT-99qM.js"; +import { t as VBtn } from "./VBtn-Bm4dgaEe.js"; export { VBtn }; diff --git a/frontend/node_modules/.vite/deps/vuetify_components_VCard.js b/frontend/node_modules/.vite/deps/vuetify_components_VCard.js index 0b93cf40..f0a12198 100644 --- a/frontend/node_modules/.vite/deps/vuetify_components_VCard.js +++ b/frontend/node_modules/.vite/deps/vuetify_components_VCard.js @@ -1,26 +1,26 @@ import { Cn as withDirectives, Dt as mergeProps, M as Fragment, W as createBaseVNode, Yn as shallowRef, ar as normalizeClass, cr as toDisplayString, et as createVNode, gn as watch, sr as normalizeStyle } from "./vue.runtime.esm-bundler-BvoXUmaf.js"; -import { _ as convertToUnit, o as provideDefaults, r as genericComponent, ut as propsFactory } from "./defineComponent-92h8LsW-.js"; -import { t as makeComponentProps } from "./component-cNt7KGbA.js"; -import { t as createSimpleFunctional } from "./createSimpleFunctional-CJfT4avK.js"; -import { t as useRender } from "./useRender-kn3mcOTh.js"; -import { i as provideTheme, r as makeThemeProps } from "./theme-CwW_z-RC.js"; -import { t as makeTagProps } from "./tag-BzACG_PL.js"; -import { t as VDefaultsProvider } from "./VDefaultsProvider-CTN39wwv.js"; -import { n as useDimension, t as makeDimensionProps } from "./dimensions-BOUfezru.js"; -import { t as VImg } from "./VImg-B3K_zKHG.js"; -import { n as useRounded, t as makeRoundedProps } from "./rounded-zeYjdF6x.js"; -import { n as useBorder, t as makeBorderProps } from "./border-BomwBLze.js"; -import { n as useElevation, t as makeElevationProps } from "./elevation-B2sqdJV6.js"; -import { n as useLocation, t as makeLocationProps } from "./location-Df6p1WYP.js"; -import { n as useDensity, t as makeDensityProps } from "./density-D-xugoKB.js"; -import { n as makeVariantProps, r as useVariant, t as genOverlays } from "./variant-CXhPdVre.js"; -import { n as IconValue } from "./icons-BqOQHwEN.js"; -import { t as VIcon } from "./VIcon-sEJi0XKP.js"; -import { n as makeLoaderProps, r as useLoader, t as LoaderSlot } from "./loader-Cg-RQrUq.js"; -import { n as usePosition, t as makePositionProps } from "./position-ew5Obs9G.js"; -import { r as useLink, t as makeRouterProps } from "./router-CXIrojRO.js"; -import { t as Ripple } from "./ripple-BcjS5Kg8.js"; -import { t as VAvatar } from "./VAvatar-DdzLb6e_.js"; +import { o as provideDefaults, r as genericComponent, u as propsFactory, v as convertToUnit } from "./defineComponent-D5UWd5Vb.js"; +import { t as makeComponentProps } from "./component-W6F5nwNC.js"; +import { t as createSimpleFunctional } from "./createSimpleFunctional-DYAlCmHj.js"; +import { t as useRender } from "./useRender-DB_YiTtB.js"; +import { n as IconValue } from "./icons-czM1t0u4.js"; +import { t as VIcon } from "./VIcon-DqvHH35X.js"; +import { t as makeTagProps } from "./tag-CIFqtlp2.js"; +import { i as provideTheme, r as makeThemeProps } from "./theme-C1b955Ym.js"; +import { n as useDimension, t as makeDimensionProps } from "./dimensions-DYqEoPdw.js"; +import { n as useLocation, t as makeLocationProps } from "./location-DD-AfEFw.js"; +import { n as useRounded, t as makeRoundedProps } from "./rounded-m6mNMWh4.js"; +import { t as VDefaultsProvider } from "./VDefaultsProvider-C3Dl0By9.js"; +import { t as VImg } from "./VImg-D29ak-Ji.js"; +import { n as useBorder, t as makeBorderProps } from "./border-DgwbzrV0.js"; +import { n as useDensity, t as makeDensityProps } from "./density-Dey2iIaF.js"; +import { n as makeVariantProps, r as useVariant, t as genOverlays } from "./variant-BcdnKFgE.js"; +import { t as VAvatar } from "./VAvatar-BHEBKXii.js"; +import { r as useLink, t as makeRouterProps } from "./router-CiYG9tKT.js"; +import { n as useElevation, t as makeElevationProps } from "./elevation-DF9Lgrr_.js"; +import { t as Ripple } from "./ripple-Q8q1hNUv.js"; +import { n as makeLoaderProps, r as useLoader, t as LoaderSlot } from "./loader-Dn_UJdiG.js"; +import { n as usePosition, t as makePositionProps } from "./position-7CDSPI1P.js"; import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VCard/VCard.css"; //#region node_modules/vuetify/lib/components/VCard/VCardActions.js var makeVCardActionsProps = propsFactory({ diff --git a/frontend/node_modules/.vite/deps/vuetify_components_VCode.js b/frontend/node_modules/.vite/deps/vuetify_components_VCode.js index 53d221f9..1c97547d 100644 --- a/frontend/node_modules/.vite/deps/vuetify_components_VCode.js +++ b/frontend/node_modules/.vite/deps/vuetify_components_VCode.js @@ -1,4 +1,4 @@ -import { t as createSimpleFunctional } from "./createSimpleFunctional-CJfT4avK.js"; +import { t as createSimpleFunctional } from "./createSimpleFunctional-DYAlCmHj.js"; import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VCode/VCode.css"; //#region node_modules/vuetify/lib/components/VCode/index.js var VCode = createSimpleFunctional("v-code", "code"); diff --git a/frontend/node_modules/.vite/deps/vuetify_components_VDialog.js b/frontend/node_modules/.vite/deps/vuetify_components_VDialog.js index b38b46fe..0b22228c 100644 --- a/frontend/node_modules/.vite/deps/vuetify_components_VDialog.js +++ b/frontend/node_modules/.vite/deps/vuetify_components_VDialog.js @@ -1,12 +1,12 @@ import { Dt as mergeProps, Kn as ref, Ot as nextTick, et as createVNode, gn as watch } from "./vue.runtime.esm-bundler-BvoXUmaf.js"; -import { K as omit, r as genericComponent, ut as propsFactory } from "./defineComponent-92h8LsW-.js"; -import { n as makeVOverlayProps, t as VOverlay } from "./VOverlay-CXGz5s5q.js"; -import { t as useRender } from "./useRender-kn3mcOTh.js"; -import { t as useProxiedModel } from "./proxiedModel-BI_mmSsi.js"; -import { _ as VDialogTransition } from "./transitions-CIB99T2D.js"; -import { t as VDefaultsProvider } from "./VDefaultsProvider-CTN39wwv.js"; -import { t as useScopeId } from "./scopeId-BhBMGBSS.js"; -import { t as forwardRefs } from "./forwardRefs-BgbYSFg3.js"; +import { q as omit, r as genericComponent, u as propsFactory } from "./defineComponent-D5UWd5Vb.js"; +import { n as makeVOverlayProps, t as VOverlay } from "./VOverlay-BntBXXGT.js"; +import { t as useRender } from "./useRender-DB_YiTtB.js"; +import { t as useProxiedModel } from "./proxiedModel-BOZtsMxA.js"; +import { t as VDefaultsProvider } from "./VDefaultsProvider-C3Dl0By9.js"; +import { _ as VDialogTransition } from "./transitions-llwxsiay.js"; +import { t as useScopeId } from "./scopeId-BbFYJclW.js"; +import { t as forwardRefs } from "./forwardRefs-C50LZ3ti.js"; import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VDialog/VDialog.css"; //#region node_modules/vuetify/lib/components/VDialog/VDialog.js var makeVDialogProps = propsFactory({ diff --git a/frontend/node_modules/.vite/deps/vuetify_components_VDivider.js b/frontend/node_modules/.vite/deps/vuetify_components_VDivider.js index 9c90011d..e95a56c7 100644 --- a/frontend/node_modules/.vite/deps/vuetify_components_VDivider.js +++ b/frontend/node_modules/.vite/deps/vuetify_components_VDivider.js @@ -1,2 +1,2 @@ -import { t as VDivider } from "./VDivider-vMskEUvN.js"; +import { t as VDivider } from "./VDivider-Bm22Quav.js"; export { VDivider }; diff --git a/frontend/node_modules/.vite/deps/vuetify_components_VExpansionPanel.js b/frontend/node_modules/.vite/deps/vuetify_components_VExpansionPanel.js index f28291c4..6d51bc08 100644 --- a/frontend/node_modules/.vite/deps/vuetify_components_VExpansionPanel.js +++ b/frontend/node_modules/.vite/deps/vuetify_components_VExpansionPanel.js @@ -1,20 +1,20 @@ import { C as vShow, Cn as withDirectives, Qn as toRef, U as computed, Ut as provide, W as createBaseVNode, ar as normalizeClass, et as createVNode, sr as normalizeStyle, xt as inject } from "./vue.runtime.esm-bundler-BvoXUmaf.js"; -import { X as pick, o as provideDefaults, r as genericComponent, ut as propsFactory } from "./defineComponent-92h8LsW-.js"; -import { t as makeComponentProps } from "./component-cNt7KGbA.js"; -import { t as useRender } from "./useRender-kn3mcOTh.js"; -import { i as provideTheme, r as makeThemeProps } from "./theme-CwW_z-RC.js"; -import { t as makeTagProps } from "./tag-BzACG_PL.js"; -import { i as VExpandTransition } from "./transitions-CIB99T2D.js"; -import { t as VDefaultsProvider } from "./VDefaultsProvider-CTN39wwv.js"; -import { n as useDimension, t as makeDimensionProps } from "./dimensions-BOUfezru.js"; -import { t as useBackgroundColor } from "./color-CsNXUJXB.js"; -import { n as useRounded, t as makeRoundedProps } from "./rounded-zeYjdF6x.js"; -import { n as useElevation, t as makeElevationProps } from "./elevation-B2sqdJV6.js"; -import { i as useGroupItem, n as makeGroupProps, r as useGroup, t as makeGroupItemProps } from "./group-Ba02qEMS.js"; -import { n as IconValue } from "./icons-BqOQHwEN.js"; -import { t as VIcon } from "./VIcon-sEJi0XKP.js"; -import { t as Ripple } from "./ripple-BcjS5Kg8.js"; -import { n as useLazy, t as makeLazyProps } from "./lazy-CNRMZBuk.js"; +import { Z as pick, o as provideDefaults, r as genericComponent, u as propsFactory } from "./defineComponent-D5UWd5Vb.js"; +import { t as makeComponentProps } from "./component-W6F5nwNC.js"; +import { t as useRender } from "./useRender-DB_YiTtB.js"; +import { t as useBackgroundColor } from "./color-B0NTWdor.js"; +import { n as IconValue } from "./icons-czM1t0u4.js"; +import { t as VIcon } from "./VIcon-DqvHH35X.js"; +import { t as makeTagProps } from "./tag-CIFqtlp2.js"; +import { i as provideTheme, r as makeThemeProps } from "./theme-C1b955Ym.js"; +import { n as useDimension, t as makeDimensionProps } from "./dimensions-DYqEoPdw.js"; +import { n as useRounded, t as makeRoundedProps } from "./rounded-m6mNMWh4.js"; +import { t as VDefaultsProvider } from "./VDefaultsProvider-C3Dl0By9.js"; +import { i as VExpandTransition } from "./transitions-llwxsiay.js"; +import { n as useLazy, t as makeLazyProps } from "./lazy-CSlNPYYk.js"; +import { n as useElevation, t as makeElevationProps } from "./elevation-DF9Lgrr_.js"; +import { t as Ripple } from "./ripple-Q8q1hNUv.js"; +import { i as useGroupItem, n as makeGroupProps, r as useGroup, t as makeGroupItemProps } from "./group-sYL2sZpA.js"; import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VExpansionPanel/VExpansionPanel.css"; //#region node_modules/vuetify/lib/components/VExpansionPanel/shared.js var VExpansionPanelSymbol = Symbol.for("vuetify:v-expansion-panel"); diff --git a/frontend/node_modules/.vite/deps/vuetify_components_VGrid.js b/frontend/node_modules/.vite/deps/vuetify_components_VGrid.js index fb0cfa60..1c351e5d 100644 --- a/frontend/node_modules/.vite/deps/vuetify_components_VGrid.js +++ b/frontend/node_modules/.vite/deps/vuetify_components_VGrid.js @@ -1,2 +1,2 @@ -import { i as VContainer, n as VRow, r as VCol, t as VSpacer } from "./VGrid-DPxB4khS.js"; +import { i as VContainer, n as VRow, r as VCol, t as VSpacer } from "./VGrid-xu6tptBP.js"; export { VCol, VContainer, VRow, VSpacer }; diff --git a/frontend/node_modules/.vite/deps/vuetify_components_VIcon.js b/frontend/node_modules/.vite/deps/vuetify_components_VIcon.js index 4c7bc348..3d03dadd 100644 --- a/frontend/node_modules/.vite/deps/vuetify_components_VIcon.js +++ b/frontend/node_modules/.vite/deps/vuetify_components_VIcon.js @@ -1,3 +1,3 @@ -import { a as VLigatureIcon, i as VComponentIcon, o as VSvgIcon, r as VClassIcon } from "./icons-BqOQHwEN.js"; -import { t as VIcon } from "./VIcon-sEJi0XKP.js"; +import { a as VLigatureIcon, i as VComponentIcon, o as VSvgIcon, r as VClassIcon } from "./icons-czM1t0u4.js"; +import { t as VIcon } from "./VIcon-DqvHH35X.js"; export { VClassIcon, VComponentIcon, VIcon, VLigatureIcon, VSvgIcon }; diff --git a/frontend/node_modules/.vite/deps/vuetify_components_VImg.js b/frontend/node_modules/.vite/deps/vuetify_components_VImg.js index 050438ab..3871fd16 100644 --- a/frontend/node_modules/.vite/deps/vuetify_components_VImg.js +++ b/frontend/node_modules/.vite/deps/vuetify_components_VImg.js @@ -1,2 +1,2 @@ -import { t as VImg } from "./VImg-B3K_zKHG.js"; +import { t as VImg } from "./VImg-D29ak-Ji.js"; export { VImg }; diff --git a/frontend/node_modules/.vite/deps/vuetify_components_VList.js b/frontend/node_modules/.vite/deps/vuetify_components_VList.js index 5e89ba60..b32653f2 100644 --- a/frontend/node_modules/.vite/deps/vuetify_components_VList.js +++ b/frontend/node_modules/.vite/deps/vuetify_components_VList.js @@ -1,2 +1,2 @@ -import { c as VListItem, d as VListGroup, i as VList, l as VListItemTitle, n as VListItemAction, r as VListImg, s as VListSubheader, t as VListItemMedia, u as VListItemSubtitle } from "./VList-BPYFsjU7.js"; +import { c as VListItem, d as VListGroup, i as VList, l as VListItemTitle, n as VListItemAction, r as VListImg, s as VListSubheader, t as VListItemMedia, u as VListItemSubtitle } from "./VList-BhbWLtAc.js"; export { VList, VListGroup, VListImg, VListItem, VListItemAction, VListItemMedia, VListItemSubtitle, VListItemTitle, VListSubheader }; diff --git a/frontend/node_modules/.vite/deps/vuetify_components_VMain.js b/frontend/node_modules/.vite/deps/vuetify_components_VMain.js index 2d1e4861..68497b92 100644 --- a/frontend/node_modules/.vite/deps/vuetify_components_VMain.js +++ b/frontend/node_modules/.vite/deps/vuetify_components_VMain.js @@ -1,11 +1,11 @@ import { W as createBaseVNode, ar as normalizeClass, et as createVNode, sr as normalizeStyle } from "./vue.runtime.esm-bundler-BvoXUmaf.js"; -import { r as genericComponent, ut as propsFactory } from "./defineComponent-92h8LsW-.js"; -import { t as makeComponentProps } from "./component-cNt7KGbA.js"; -import { t as useRender } from "./useRender-kn3mcOTh.js"; -import { a as useLayout } from "./layout-Booh7E97.js"; -import { t as makeTagProps } from "./tag-BzACG_PL.js"; -import { n as useDimension, t as makeDimensionProps } from "./dimensions-BOUfezru.js"; -import { t as useSsrBoot } from "./ssrBoot-DPOmvdPm.js"; +import { r as genericComponent, u as propsFactory } from "./defineComponent-D5UWd5Vb.js"; +import { t as makeComponentProps } from "./component-W6F5nwNC.js"; +import { t as useRender } from "./useRender-DB_YiTtB.js"; +import { t as makeTagProps } from "./tag-CIFqtlp2.js"; +import { n as useDimension, t as makeDimensionProps } from "./dimensions-DYqEoPdw.js"; +import { a as useLayout } from "./layout-DcSzssSI.js"; +import { t as useSsrBoot } from "./ssrBoot-Dt2Wz9ZC.js"; import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VMain/VMain.css"; //#region node_modules/vuetify/lib/components/VMain/VMain.js var makeVMainProps = propsFactory({ diff --git a/frontend/node_modules/.vite/deps/vuetify_components_VMenu.js b/frontend/node_modules/.vite/deps/vuetify_components_VMenu.js index 2fa64aad..c3524506 100644 --- a/frontend/node_modules/.vite/deps/vuetify_components_VMenu.js +++ b/frontend/node_modules/.vite/deps/vuetify_components_VMenu.js @@ -1,2 +1,2 @@ -import { t as VMenu } from "./VMenu-tK8Rb46Q.js"; +import { t as VMenu } from "./VMenu-g8bPIWQQ.js"; export { VMenu }; diff --git a/frontend/node_modules/.vite/deps/vuetify_components_VNavigationDrawer.js b/frontend/node_modules/.vite/deps/vuetify_components_VNavigationDrawer.js index 3c72bc6d..9c7f7c03 100644 --- a/frontend/node_modules/.vite/deps/vuetify_components_VNavigationDrawer.js +++ b/frontend/node_modules/.vite/deps/vuetify_components_VNavigationDrawer.js @@ -1,24 +1,24 @@ import { Dt as mergeProps, Ft as onMounted, Gn as readonly, Kn as ref, M as Fragment, Ot as nextTick, Qn as toRef, U as computed, Vn as onScopeDispose, W as createBaseVNode, Yn as shallowRef, _n as watchEffect, et as createVNode, gn as watch, jt as onBeforeUnmount, n as Transition } from "./vue.runtime.esm-bundler-BvoXUmaf.js"; -import { K as omit, _ as convertToUnit, g as clamp, o as provideDefaults, r as genericComponent, u as CircularBuffer, ut as propsFactory } from "./defineComponent-92h8LsW-.js"; -import { t as makeComponentProps } from "./component-cNt7KGbA.js"; -import { o as toPhysical } from "./anchor-fmhqx-jH.js"; -import { t as useRender } from "./useRender-kn3mcOTh.js"; -import { o as useLayoutItem, r as makeLayoutItemProps } from "./layout-Booh7E97.js"; -import { n as useToggleScope, t as useProxiedModel } from "./proxiedModel-BI_mmSsi.js"; -import { i as useRtl } from "./locale-BI-ulWIe.js"; -import { i as provideTheme, r as makeThemeProps } from "./theme-CwW_z-RC.js"; -import { t as makeTagProps } from "./tag-BzACG_PL.js"; -import { t as VDefaultsProvider } from "./VDefaultsProvider-CTN39wwv.js"; -import { t as VImg } from "./VImg-B3K_zKHG.js"; -import { t as useBackgroundColor } from "./color-CsNXUJXB.js"; -import { n as useRounded, t as makeRoundedProps } from "./rounded-zeYjdF6x.js"; -import { n as useBorder, t as makeBorderProps } from "./border-BomwBLze.js"; -import { n as useElevation, t as makeElevationProps } from "./elevation-B2sqdJV6.js"; -import { t as useSsrBoot } from "./ssrBoot-DPOmvdPm.js"; -import { i as useRouter } from "./router-CXIrojRO.js"; -import { a as useDisplay, i as makeDisplayProps } from "./display-NNQAdN_b.js"; -import { i as useDelay, n as useFocusTrap, r as makeDelayProps, t as makeFocusTrapProps } from "./focusTrap-5P1D0YbH.js"; -import { t as useScopeId } from "./scopeId-BhBMGBSS.js"; +import { _ as clamp, d as CircularBuffer, o as provideDefaults, q as omit, r as genericComponent, u as propsFactory, v as convertToUnit } from "./defineComponent-D5UWd5Vb.js"; +import { o as toPhysical } from "./anchor-Co261iQQ.js"; +import { t as makeComponentProps } from "./component-W6F5nwNC.js"; +import { t as useRender } from "./useRender-DB_YiTtB.js"; +import { t as useBackgroundColor } from "./color-B0NTWdor.js"; +import { t as makeTagProps } from "./tag-CIFqtlp2.js"; +import { i as provideTheme, r as makeThemeProps } from "./theme-C1b955Ym.js"; +import { n as useToggleScope, t as useProxiedModel } from "./proxiedModel-BOZtsMxA.js"; +import { i as useRtl } from "./locale-DTRSr4yu.js"; +import { n as useRounded, t as makeRoundedProps } from "./rounded-m6mNMWh4.js"; +import { t as VDefaultsProvider } from "./VDefaultsProvider-C3Dl0By9.js"; +import { t as VImg } from "./VImg-D29ak-Ji.js"; +import { n as useBorder, t as makeBorderProps } from "./border-DgwbzrV0.js"; +import { o as useLayoutItem, r as makeLayoutItemProps } from "./layout-DcSzssSI.js"; +import { i as useDelay, n as useFocusTrap, r as makeDelayProps, t as makeFocusTrapProps } from "./focusTrap-BRlT3Jgx.js"; +import { a as useDisplay, i as makeDisplayProps } from "./display-BD8QD-8J.js"; +import { i as useRouter } from "./router-CiYG9tKT.js"; +import { t as useScopeId } from "./scopeId-BbFYJclW.js"; +import { t as useSsrBoot } from "./ssrBoot-Dt2Wz9ZC.js"; +import { n as useElevation, t as makeElevationProps } from "./elevation-DF9Lgrr_.js"; import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VNavigationDrawer/VNavigationDrawer.css"; //#region node_modules/vuetify/lib/components/VNavigationDrawer/sticky.js function useSticky({ rootEl, isSticky, layoutItemStyles }) { diff --git a/frontend/node_modules/.vite/deps/vuetify_components_VSelect.js b/frontend/node_modules/.vite/deps/vuetify_components_VSelect.js index 93022bbf..65ff2fca 100644 --- a/frontend/node_modules/.vite/deps/vuetify_components_VSelect.js +++ b/frontend/node_modules/.vite/deps/vuetify_components_VSelect.js @@ -1,2 +1,2 @@ -import { t as VSelect } from "./VSelect-DP-1aJrD.js"; +import { t as VSelect } from "./VSelect-9P7g-lSZ.js"; export { VSelect }; diff --git a/frontend/node_modules/.vite/deps/vuetify_components_VSheet.js b/frontend/node_modules/.vite/deps/vuetify_components_VSheet.js index 9c6c707d..491b63d5 100644 --- a/frontend/node_modules/.vite/deps/vuetify_components_VSheet.js +++ b/frontend/node_modules/.vite/deps/vuetify_components_VSheet.js @@ -1,2 +1,2 @@ -import { t as VSheet } from "./VSheet-C9a054Bu.js"; +import { t as VSheet } from "./VSheet-CdUUbWcK.js"; export { VSheet }; diff --git a/frontend/node_modules/.vite/deps/vuetify_components_VSwitch.js b/frontend/node_modules/.vite/deps/vuetify_components_VSwitch.js index 942484d7..1991842f 100644 --- a/frontend/node_modules/.vite/deps/vuetify_components_VSwitch.js +++ b/frontend/node_modules/.vite/deps/vuetify_components_VSwitch.js @@ -1,15 +1,15 @@ import { Dt as mergeProps, Kn as ref, M as Fragment, Qn as toRef, W as createBaseVNode, ar as normalizeClass, cn as useId, et as createVNode, sr as normalizeStyle } from "./vue.runtime.esm-bundler-BvoXUmaf.js"; -import { T as filterInputAttrs, at as SUPPORTS_MATCH_MEDIA, r as genericComponent, ut as propsFactory } from "./defineComponent-92h8LsW-.js"; -import { t as useRender } from "./useRender-kn3mcOTh.js"; -import { t as useProxiedModel } from "./proxiedModel-BI_mmSsi.js"; -import { c as VScaleTransition } from "./transitions-CIB99T2D.js"; -import { t as VDefaultsProvider } from "./VDefaultsProvider-CTN39wwv.js"; -import { t as VIcon } from "./VIcon-sEJi0XKP.js"; -import { t as VProgressCircular } from "./VProgressCircular-BQ041Mfz.js"; -import { r as useLoader, t as LoaderSlot } from "./loader-Cg-RQrUq.js"; -import { t as forwardRefs } from "./forwardRefs-BgbYSFg3.js"; -import { a as useFocus, n as VInput, r as makeVInputProps } from "./VLabel-BWVZfhvb.js"; -import { n as makeVSelectionControlProps, t as VSelectionControl } from "./VSelectionControl-CPYYRZWE.js"; +import { E as filterInputAttrs, ot as SUPPORTS_MATCH_MEDIA, r as genericComponent, u as propsFactory } from "./defineComponent-D5UWd5Vb.js"; +import { t as useRender } from "./useRender-DB_YiTtB.js"; +import { t as VIcon } from "./VIcon-DqvHH35X.js"; +import { t as useProxiedModel } from "./proxiedModel-BOZtsMxA.js"; +import { t as VDefaultsProvider } from "./VDefaultsProvider-C3Dl0By9.js"; +import { c as VScaleTransition } from "./transitions-llwxsiay.js"; +import { t as forwardRefs } from "./forwardRefs-C50LZ3ti.js"; +import { t as VProgressCircular } from "./VProgressCircular-z2FRmexp.js"; +import { r as useLoader, t as LoaderSlot } from "./loader-Dn_UJdiG.js"; +import { a as useFocus, n as VInput, r as makeVInputProps } from "./VLabel-BK6j7Ce3.js"; +import { n as makeVSelectionControlProps, t as VSelectionControl } from "./VSelectionControl-DGk6dNy-.js"; import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VSwitch/VSwitch.css"; //#region node_modules/vuetify/lib/components/VSwitch/VSwitch.js var makeVSwitchProps = propsFactory({ diff --git a/frontend/node_modules/.vite/deps/vuetify_components_VTabs.js b/frontend/node_modules/.vite/deps/vuetify_components_VTabs.js index 8c8d86bf..84436165 100644 --- a/frontend/node_modules/.vite/deps/vuetify_components_VTabs.js +++ b/frontend/node_modules/.vite/deps/vuetify_components_VTabs.js @@ -1,24 +1,24 @@ import { C as vShow, Cn as withDirectives, Dt as mergeProps, Kn as ref, M as Fragment, Ot as nextTick, Qn as toRef, U as computed, Ut as provide, W as createBaseVNode, Yn as shallowRef, ar as normalizeClass, et as createVNode, gn as watch, sr as normalizeStyle, xt as inject } from "./vue.runtime.esm-bundler-BvoXUmaf.js"; -import { K as omit, U as keys, X as pick, _ as convertToUnit, nt as IN_BROWSER, o as provideDefaults, r as genericComponent, rt as PREFERS_REDUCED_MOTION, ut as propsFactory, z as isObject } from "./defineComponent-92h8LsW-.js"; -import { t as makeComponentProps } from "./component-cNt7KGbA.js"; -import { t as animate } from "./animation-IGJS3o2f.js"; +import { B as isObject, W as keys, Z as pick, it as PREFERS_REDUCED_MOTION, o as provideDefaults, q as omit, r as genericComponent, rt as IN_BROWSER, u as propsFactory, v as convertToUnit } from "./defineComponent-D5UWd5Vb.js"; +import { t as animate } from "./animation-gSo9lwa6.js"; +import { t as makeComponentProps } from "./component-W6F5nwNC.js"; import { i as standardEasing } from "./easing-DfcvkbkS.js"; import { t as getScrollParent } from "./getScrollParent-DuXs8SPu.js"; -import { t as useRender } from "./useRender-kn3mcOTh.js"; -import { t as useProxiedModel } from "./proxiedModel-BI_mmSsi.js"; -import { i as useRtl, r as useLocale } from "./locale-BI-ulWIe.js"; -import { i as provideTheme, r as makeThemeProps } from "./theme-CwW_z-RC.js"; -import { t as makeTagProps } from "./tag-BzACG_PL.js"; -import { r as useTextColor, t as useBackgroundColor } from "./color-CsNXUJXB.js"; -import { t as MaybeTransition } from "./transition-C2n5e2YD.js"; -import { t as useSsrBoot } from "./ssrBoot-DPOmvdPm.js"; -import { n as useDensity, t as makeDensityProps } from "./density-D-xugoKB.js"; -import { i as useGroupItem, r as useGroup, t as makeGroupItemProps } from "./group-Ba02qEMS.js"; -import { n as makeVBtnProps, t as VBtn } from "./VBtn-0bT-99qM.js"; -import { n as useLazy, t as makeLazyProps } from "./lazy-CNRMZBuk.js"; -import { t as useScopeId } from "./scopeId-BhBMGBSS.js"; -import { t as forwardRefs } from "./forwardRefs-BgbYSFg3.js"; -import { r as makeVSlideGroupProps, t as VSlideGroup } from "./VSlideGroup-CTSq2TjT.js"; +import { t as useRender } from "./useRender-DB_YiTtB.js"; +import { r as useTextColor, t as useBackgroundColor } from "./color-B0NTWdor.js"; +import { t as makeTagProps } from "./tag-CIFqtlp2.js"; +import { i as provideTheme, r as makeThemeProps } from "./theme-C1b955Ym.js"; +import { t as useProxiedModel } from "./proxiedModel-BOZtsMxA.js"; +import { i as useRtl, r as useLocale } from "./locale-DTRSr4yu.js"; +import { t as MaybeTransition } from "./transition-BieT_XBo.js"; +import { n as useDensity, t as makeDensityProps } from "./density-Dey2iIaF.js"; +import { n as useLazy, t as makeLazyProps } from "./lazy-CSlNPYYk.js"; +import { t as useScopeId } from "./scopeId-BbFYJclW.js"; +import { t as forwardRefs } from "./forwardRefs-C50LZ3ti.js"; +import { t as useSsrBoot } from "./ssrBoot-Dt2Wz9ZC.js"; +import { i as useGroupItem, r as useGroup, t as makeGroupItemProps } from "./group-sYL2sZpA.js"; +import { n as makeVBtnProps, t as VBtn } from "./VBtn-Bm4dgaEe.js"; +import { r as makeVSlideGroupProps, t as VSlideGroup } from "./VSlideGroup-CVNSOV5n.js"; import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VTabs/VTab.css"; import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VTabs/VTabs.css"; import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VWindow/VWindow.css"; diff --git a/frontend/node_modules/.vite/deps/vuetify_components_VToolbar.js b/frontend/node_modules/.vite/deps/vuetify_components_VToolbar.js index b7a0d828..1086cda9 100644 --- a/frontend/node_modules/.vite/deps/vuetify_components_VToolbar.js +++ b/frontend/node_modules/.vite/deps/vuetify_components_VToolbar.js @@ -1,9 +1,9 @@ import { Qn as toRef, W as createBaseVNode, ar as normalizeClass, sr as normalizeStyle } from "./vue.runtime.esm-bundler-BvoXUmaf.js"; -import { o as provideDefaults, r as genericComponent, ut as propsFactory } from "./defineComponent-92h8LsW-.js"; -import { t as makeComponentProps } from "./component-cNt7KGbA.js"; -import { t as useRender } from "./useRender-kn3mcOTh.js"; -import { r as VToolbarTitle, t as VToolbar } from "./VToolbar-CBjuzsOU.js"; -import { n as makeVariantProps } from "./variant-CXhPdVre.js"; +import { o as provideDefaults, r as genericComponent, u as propsFactory } from "./defineComponent-D5UWd5Vb.js"; +import { t as makeComponentProps } from "./component-W6F5nwNC.js"; +import { t as useRender } from "./useRender-DB_YiTtB.js"; +import { n as makeVariantProps } from "./variant-BcdnKFgE.js"; +import { r as VToolbarTitle, t as VToolbar } from "./VToolbar-DAPb7QHO.js"; //#region node_modules/vuetify/lib/components/VToolbar/VToolbarItems.js var makeVToolbarItemsProps = propsFactory({ ...makeComponentProps(), diff --git a/frontend/src/components/AppSnackbar.vue b/frontend/src/components/AppSnackbar.vue index 2ff005e4..273e6f95 100644 --- a/frontend/src/components/AppSnackbar.vue +++ b/frontend/src/components/AppSnackbar.vue @@ -27,7 +27,7 @@ function toast(message, opts = {}) { } // Shorthand helpers -const success = (msg, opts = {}) => toast(msg, { color: 'success', icon: 'mdi-check-circle-outline', ...opts }) +const success = (msg, opts = {}) => toast(msg, { color: 'blue-grey', icon: 'mdi-check-circle-outline', ...opts }) const error = (msg, opts = {}) => toast(msg, { color: 'error', icon: 'mdi-alert-circle-outline', ...opts }) const warning = (msg, opts = {}) => toast(msg, { color: 'warning', icon: 'mdi-alert-outline', ...opts }) const info = (msg, opts = {}) => toast(msg, { color: 'info', icon: 'mdi-information-outline', ...opts }) diff --git a/frontend/src/plugins/vuetify.ts b/frontend/src/plugins/vuetify.ts index a4df9386..55498815 100644 --- a/frontend/src/plugins/vuetify.ts +++ b/frontend/src/plugins/vuetify.ts @@ -13,7 +13,6 @@ import { VDateInput } from 'vuetify/labs/VDateInput' export default createVuetify({ theme: { defaultTheme: 'system', - utilities: false, }, components: { VDateInput, diff --git a/node_modules/.bin/jiti b/node_modules/.bin/jiti new file mode 120000 index 00000000..18f28cf3 --- /dev/null +++ b/node_modules/.bin/jiti @@ -0,0 +1 @@ +../jiti/lib/jiti-cli.mjs \ No newline at end of file diff --git a/node_modules/.bin/nanoid b/node_modules/.bin/nanoid new file mode 120000 index 00000000..e2be547b --- /dev/null +++ b/node_modules/.bin/nanoid @@ -0,0 +1 @@ +../nanoid/bin/nanoid.cjs \ No newline at end of file diff --git a/node_modules/.bin/rolldown b/node_modules/.bin/rolldown new file mode 120000 index 00000000..7725012c --- /dev/null +++ b/node_modules/.bin/rolldown @@ -0,0 +1 @@ +../rolldown/bin/cli.mjs \ No newline at end of file diff --git a/node_modules/.bin/vite b/node_modules/.bin/vite new file mode 120000 index 00000000..6d1e3bea --- /dev/null +++ b/node_modules/.bin/vite @@ -0,0 +1 @@ +../vite/bin/vite.js \ No newline at end of file diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json new file mode 100644 index 00000000..af2bcc79 --- /dev/null +++ b/node_modules/.package-lock.json @@ -0,0 +1,558 @@ +{ + "name": "routie2", + "lockfileVersion": 3, + "requires": true, + "packages": { + "node_modules/@emnapi/core": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", + "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.1", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", + "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz", + "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==", + "license": "MIT", + "optional": true, + "dependencies": { + "@tybys/wasm-util": "^0.10.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1" + } + }, + "node_modules/@oxc-project/types": { + "version": "0.127.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.127.0.tgz", + "integrity": "sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ==", + "license": "MIT", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.0.0-rc.17", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.17.tgz", + "integrity": "sha512-4ksWc9n0mhlZpZ9PMZgTGjeOPRu8MB1Z3Tz0Mo02eWfWCHMW1zN82Qz/pL/rC+yQa+8ZnutMF0JjJe7PjwasYw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.17", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.17.tgz", + "integrity": "sha512-n8iosDOt6Ig1UhJ2AYqoIhHWh/isz0xpicHTzpKBeotdVsTEcxsSA/i3EVM7gQAj0rU27OLAxCjzlj15IWY7bg==", + "license": "MIT", + "peer": true + }, + "node_modules/@tailwindcss/node": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.2.4.tgz", + "integrity": "sha512-Ai7+yQPxz3ddrDQzFfBKdHEVBg0w3Zl83jnjuwxnZOsnH9pGn93QHQtpU0p/8rYWxvbFZHneni6p1BSLK4DkGA==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "enhanced-resolve": "^5.19.0", + "jiti": "^2.6.1", + "lightningcss": "1.32.0", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.2.4" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.2.4.tgz", + "integrity": "sha512-9El/iI069DKDSXwTvB9J4BwdO5JhRrOweGaK25taBAvBXyXqJAX+Jqdvs8r8gKpsI/1m0LeJLyQYTf/WLrBT1Q==", + "license": "MIT", + "engines": { + "node": ">= 20" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.2.4", + "@tailwindcss/oxide-darwin-arm64": "4.2.4", + "@tailwindcss/oxide-darwin-x64": "4.2.4", + "@tailwindcss/oxide-freebsd-x64": "4.2.4", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.4", + "@tailwindcss/oxide-linux-arm64-gnu": "4.2.4", + "@tailwindcss/oxide-linux-arm64-musl": "4.2.4", + "@tailwindcss/oxide-linux-x64-gnu": "4.2.4", + "@tailwindcss/oxide-linux-x64-musl": "4.2.4", + "@tailwindcss/oxide-wasm32-wasi": "4.2.4", + "@tailwindcss/oxide-win32-arm64-msvc": "4.2.4", + "@tailwindcss/oxide-win32-x64-msvc": "4.2.4" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.2.4.tgz", + "integrity": "sha512-tSC/Kbqpz/5/o/C2sG7QvOxAKqyd10bq+ypZNf+9Fi2TvbVbv1zNpcEptcsU7DPROaSbVgUXmrzKhurFvo5eDg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.2.4.tgz", + "integrity": "sha512-pCvohwOCspk3ZFn6eJzrrX3g4n2JY73H6MmYC87XfGPyTty4YsCjYTMArRZm/zOI8dIt3+EcrLHAFPe5A4bgtw==", + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.2.4", + "@tailwindcss/oxide": "4.2.4", + "tailwindcss": "4.2.4" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7 || ^8" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.21.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.0.tgz", + "integrity": "sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/nanoid": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", + "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC", + "peer": true + }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.13", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.13.tgz", + "integrity": "sha512-qif0+jGGZoLWdHey3UFHHWP0H7Gbmsk8T5VEqyYFbWqPr1XqvLGBbk/sl8V5exGmcYJklJOhOQq1pV9IcsiFag==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/rolldown": { + "version": "1.0.0-rc.17", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.17.tgz", + "integrity": "sha512-ZrT53oAKrtA4+YtBWPQbtPOxIbVDbxT0orcYERKd63VJTF13zPcgXTvD4843L8pcsI7M6MErt8QtON6lrB9tyA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@oxc-project/types": "=0.127.0", + "@rolldown/pluginutils": "1.0.0-rc.17" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm64": "1.0.0-rc.17", + "@rolldown/binding-darwin-arm64": "1.0.0-rc.17", + "@rolldown/binding-darwin-x64": "1.0.0-rc.17", + "@rolldown/binding-freebsd-x64": "1.0.0-rc.17", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.17", + "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.17", + "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.17", + "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.17", + "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.17", + "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.17", + "@rolldown/binding-linux-x64-musl": "1.0.0-rc.17", + "@rolldown/binding-openharmony-arm64": "1.0.0-rc.17", + "@rolldown/binding-wasm32-wasi": "1.0.0-rc.17", + "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.17", + "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.17" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tailwindcss": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.2.4.tgz", + "integrity": "sha512-HhKppgO81FQof5m6TEnuBWCZGgfRAWbaeOaGT00KOy/Pf/j6oUihdvBpA7ltCeAvZpFhW3j0PTclkxsd4IXYDA==", + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", + "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", + "license": "MIT", + "peer": true, + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD", + "optional": true + }, + "node_modules/vite": { + "version": "8.0.10", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.10.tgz", + "integrity": "sha512-rZuUu9j6J5uotLDs+cAA4O5H4K1SfPliUlQwqa6YEwSrWDZzP4rhm00oJR5snMewjxF5V/K3D4kctsUTsIU9Mw==", + "license": "MIT", + "peer": true, + "dependencies": { + "lightningcss": "^1.32.0", + "picomatch": "^4.0.4", + "postcss": "^8.5.10", + "rolldown": "1.0.0-rc.17", + "tinyglobby": "^0.2.16" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.1.0", + "esbuild": "^0.27.0 || ^0.28.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "@vitejs/devtools": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + } + } +} diff --git a/node_modules/@emnapi/core/LICENSE b/node_modules/@emnapi/core/LICENSE new file mode 100644 index 00000000..05a59441 --- /dev/null +++ b/node_modules/@emnapi/core/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021-present Toyobayashi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/@emnapi/core/README.md b/node_modules/@emnapi/core/README.md new file mode 100644 index 00000000..c98dddca --- /dev/null +++ b/node_modules/@emnapi/core/README.md @@ -0,0 +1 @@ +See [https://github.com/toyobayashi/emnapi](https://github.com/toyobayashi/emnapi) diff --git a/node_modules/@emnapi/core/dist/emnapi-core.cjs.js b/node_modules/@emnapi/core/dist/emnapi-core.cjs.js new file mode 100644 index 00000000..cd71fc49 --- /dev/null +++ b/node_modules/@emnapi/core/dist/emnapi-core.cjs.js @@ -0,0 +1,7397 @@ +var wasiThreads = require('@emnapi/wasi-threads'); + +const _WebAssembly = typeof WebAssembly !== 'undefined' + ? WebAssembly + : typeof WXWebAssembly !== 'undefined' + ? WXWebAssembly + : undefined; +function validateImports(imports) { + if (imports && typeof imports !== 'object') { + throw new TypeError('imports must be an object or undefined'); + } + return true; +} +function load(wasmInput, imports) { + if (!wasmInput) + throw new TypeError('Invalid wasm source'); + validateImports(imports); + imports = imports !== null && imports !== void 0 ? imports : {}; + try { + const then = typeof wasmInput === 'object' && wasmInput !== null && 'then' in wasmInput ? wasmInput.then : undefined; + if (typeof then === 'function') { + return then.call(wasmInput, (input) => load(input, imports)); + } + } + catch (_) { } + if (wasmInput instanceof ArrayBuffer || ArrayBuffer.isView(wasmInput)) { + return _WebAssembly.instantiate(wasmInput, imports); + } + if (wasmInput instanceof _WebAssembly.Module) { + return _WebAssembly.instantiate(wasmInput, imports).then((instance) => { + return { instance, module: wasmInput }; + }); + } + if (typeof Response !== 'undefined' && wasmInput instanceof Response) { + return wasmInput.arrayBuffer().then(buffer => { + return _WebAssembly.instantiate(buffer, imports); + }); + } + const inputIsString = typeof wasmInput === 'string'; + if (inputIsString || (typeof URL !== 'undefined' && wasmInput instanceof URL)) { + if (inputIsString && typeof wx !== 'undefined' && typeof __wxConfig !== 'undefined') { + return _WebAssembly.instantiate(wasmInput, imports); + } + if (typeof fetch !== 'function') { + throw new TypeError('wasm source can not be a string or URL in this environment'); + } + if (typeof _WebAssembly.instantiateStreaming === 'function') { + try { + return _WebAssembly.instantiateStreaming(fetch(wasmInput), imports).catch(() => { + return load(fetch(wasmInput), imports); + }); + } + catch (_) { + return load(fetch(wasmInput), imports); + } + } + else { + return load(fetch(wasmInput), imports); + } + } + throw new TypeError('Invalid wasm source'); +} +function loadSync(wasmInput, imports) { + if (!wasmInput) + throw new TypeError('Invalid wasm source'); + validateImports(imports); + imports = imports !== null && imports !== void 0 ? imports : {}; + let module; + if ((wasmInput instanceof ArrayBuffer) || ArrayBuffer.isView(wasmInput)) { + module = new _WebAssembly.Module(wasmInput); + } + else if (wasmInput instanceof WebAssembly.Module) { + module = wasmInput; + } + else { + throw new TypeError('Invalid wasm source'); + } + const instance = new _WebAssembly.Instance(module, imports); + const source = { instance, module }; + return source; +} + +function createNapiModule(options) { + var napiModule = (function () { + var ENVIRONMENT_IS_NODE = typeof process === 'object' && process !== null && typeof process.versions === 'object' && process.versions !== null && typeof process.versions.node === 'string'; + var ENVIRONMENT_IS_PTHREAD = Boolean(options.childThread); + var waitThreadStart = typeof options.waitThreadStart === 'number' ? options.waitThreadStart : Boolean(options.waitThreadStart); + var wasmInstance; + var wasmMemory; + var wasmTable; + var _malloc; + var _free; + function abort(msg) { + if (typeof _WebAssembly.RuntimeError === 'function') { + throw new _WebAssembly.RuntimeError(msg); + } + throw Error(msg); + } + var napiModule = { + imports: { + env: {}, + napi: {}, + emnapi: {} + }, + exports: {}, + emnapi: {}, + loaded: false, + filename: '', + childThread: ENVIRONMENT_IS_PTHREAD, + initWorker: undefined, + waitThreadStart: waitThreadStart, + PThread: undefined, + init: function (options) { + if (napiModule.loaded) + return napiModule.exports; + if (!options) + throw new TypeError('Invalid napi init options'); + var instance = options.instance; + if (!(instance === null || instance === void 0 ? void 0 : instance.exports)) + throw new TypeError('Invalid wasm instance'); + wasmInstance = instance; + var exports$1 = instance.exports; + var module = options.module; + var memory = options.memory || exports$1.memory; + var table = options.table || exports$1.__indirect_function_table; + if (!(module instanceof _WebAssembly.Module)) + throw new TypeError('Invalid wasm module'); + if (!(memory instanceof _WebAssembly.Memory)) + throw new TypeError('Invalid wasm memory'); + if (!(table instanceof _WebAssembly.Table)) + throw new TypeError('Invalid wasm table'); + wasmMemory = memory; + wasmTable = table; + if (typeof exports$1.malloc !== 'function') + throw new TypeError('malloc is not exported'); + if (typeof exports$1.free !== 'function') + throw new TypeError('free is not exported'); + _malloc = exports$1.malloc; + _free = exports$1.free; + if (!napiModule.childThread) { + var moduleApiVersion = 8; + var node_api_module_get_api_version_v1 = instance.exports.node_api_module_get_api_version_v1; + if (typeof node_api_module_get_api_version_v1 === 'function') { + moduleApiVersion = node_api_module_get_api_version_v1(); + } + var envObject = napiModule.envObject || (napiModule.envObject = emnapiCtx.createEnv(napiModule.filename, moduleApiVersion, function (cb) { return (wasmTable.get(cb)); }, function (cb) { return (wasmTable.get(cb)); }, abort, emnapiNodeBinding)); + var scope_1 = emnapiCtx.openScope(envObject); + try { + envObject.callIntoModule(function (_envObject) { + var exports$1 = napiModule.exports; + var exportsHandle = scope_1.add(exports$1); + var napi_register_wasm_v1 = instance.exports.napi_register_wasm_v1; + var napiValue = napi_register_wasm_v1(_envObject.id, exportsHandle.id); + napiModule.exports = (!napiValue) ? exports$1 : emnapiCtx.handleStore.get(napiValue).value; + }); + } + catch (e) { + if (e !== 'unwind') { + throw e; + } + } + finally { + emnapiCtx.closeScope(envObject, scope_1); + } + napiModule.loaded = true; + delete napiModule.envObject; + return napiModule.exports; + } + } + }; + var emnapiCtx; + var emnapiNodeBinding; + var onCreateWorker = undefined; + var err; + if (!ENVIRONMENT_IS_PTHREAD) { + var context = options.context; + if (typeof context !== 'object' || context === null) { + throw new TypeError("Invalid `options.context`. Use `import { getDefaultContext } from '@emnapi/runtime'`"); + } + emnapiCtx = context; + } + else { + emnapiCtx = options === null || options === void 0 ? void 0 : options.context; + var postMsg = typeof options.postMessage === 'function' + ? options.postMessage + : typeof postMessage === 'function' + ? postMessage + : undefined; + if (typeof postMsg !== 'function') { + throw new TypeError('No postMessage found'); + } + napiModule.postMessage = postMsg; + } + if (typeof options.filename === 'string') { + napiModule.filename = options.filename; + } + if (typeof options.onCreateWorker === 'function') { + onCreateWorker = options.onCreateWorker; + } + if (typeof options.print === 'function') { + options.print; + } + else { + console.log.bind(console); + } + if (typeof options.printErr === 'function') { + err = options.printErr; + } + else { + err = console.warn.bind(console); + } + if ('nodeBinding' in options) { + var nodeBinding = options.nodeBinding; + if (typeof nodeBinding !== 'object' || nodeBinding === null) { + throw new TypeError('Invalid `options.nodeBinding`. Use @emnapi/node-binding package'); + } + emnapiNodeBinding = nodeBinding; + } + var emnapiAsyncWorkPoolSize = 0; + if ('asyncWorkPoolSize' in options) { + if (typeof options.asyncWorkPoolSize !== 'number') { + throw new TypeError('options.asyncWorkPoolSize must be a integer'); + } + emnapiAsyncWorkPoolSize = options.asyncWorkPoolSize >> 0; + if (emnapiAsyncWorkPoolSize > 1024) { + emnapiAsyncWorkPoolSize = 1024; + } + else if (emnapiAsyncWorkPoolSize < -1024) { + emnapiAsyncWorkPoolSize = -1024; + } + } + var singleThreadAsyncWork = ENVIRONMENT_IS_PTHREAD ? false : (emnapiAsyncWorkPoolSize <= 0); + function _emnapi_async_work_pool_size() { + return Math.abs(emnapiAsyncWorkPoolSize); + } + napiModule.imports.env._emnapi_async_work_pool_size = _emnapi_async_work_pool_size; + function emnapiAddSendListener(worker) { + if (!worker) + return false; + if (worker._emnapiSendListener) + return true; + var handler = function (e) { + var data = ENVIRONMENT_IS_NODE ? e : e.data; + var __emnapi__ = data.__emnapi__; + if (__emnapi__ && __emnapi__.type === 'async-send') { + if (ENVIRONMENT_IS_PTHREAD) { + var postMessage_1 = napiModule.postMessage; + postMessage_1({ __emnapi__: __emnapi__ }); + } + else { + var callback = __emnapi__.payload.callback; + (wasmTable.get(callback))(__emnapi__.payload.data); + } + } + }; + var dispose = function () { + if (ENVIRONMENT_IS_NODE) { + worker.off('message', handler); + } + else { + worker.removeEventListener('message', handler, false); + } + delete worker._emnapiSendListener; + }; + worker._emnapiSendListener = { handler: handler, dispose: dispose }; + if (ENVIRONMENT_IS_NODE) { + worker.on('message', handler); + } + else { + worker.addEventListener('message', handler, false); + } + return true; + } + napiModule.emnapi.addSendListener = emnapiAddSendListener; + var PThread = new wasiThreads.ThreadManager(ENVIRONMENT_IS_PTHREAD + ? { + printErr: err, + childThread: true + } + : { + printErr: err, + beforeLoad: function (worker) { + emnapiAddSendListener(worker); + }, + reuseWorker: options.reuseWorker, + onCreateWorker: onCreateWorker + }); + napiModule.PThread = PThread; + function napi_set_last_error(env, error_code, engine_error_code, engine_reserved) { + var envObject = emnapiCtx.envStore.get(env); + return envObject.setLastError(error_code, engine_error_code, engine_reserved); + } + function napi_clear_last_error(env) { + var envObject = emnapiCtx.envStore.get(env); + return envObject.clearLastError(); + } + function _emnapi_get_node_version(major, minor, patch) { + major >>>= 0; + minor >>>= 0; + patch >>>= 0; + var versions = (typeof process === 'object' && process !== null && + typeof process.versions === 'object' && process.versions !== null && + typeof process.versions.node === 'string') + ? process.versions.node.split('.').map(function (n) { return Number(n); }) + : [0, 0, 0]; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(major, versions[0], true); + HEAP_DATA_VIEW.setUint32(minor, versions[1], true); + HEAP_DATA_VIEW.setUint32(patch, versions[2], true); + } + function _emnapi_runtime_keepalive_push() { + } + function _emnapi_runtime_keepalive_pop() { + } + function _emnapi_set_immediate(callback, data) { + emnapiCtx.feature.setImmediate(function () { + (wasmTable.get(callback))(data); + }); + } + function _emnapi_next_tick(callback, data) { + Promise.resolve().then(function () { + (wasmTable.get(callback))(data); + }); + } + function _emnapi_callback_into_module(forceUncaught, env, callback, data, close_scope_if_throw) { + var envObject = emnapiCtx.envStore.get(env); + var scope = emnapiCtx.openScope(envObject); + try { + envObject.callbackIntoModule(Boolean(forceUncaught), function () { + (wasmTable.get(callback))(env, data); + }); + } + catch (err) { + emnapiCtx.closeScope(envObject, scope); + if (close_scope_if_throw) { + emnapiCtx.closeScope(envObject); + } + throw err; + } + emnapiCtx.closeScope(envObject, scope); + } + function _emnapi_call_finalizer(forceUncaught, env, callback, data, hint) { + var envObject = emnapiCtx.envStore.get(env); + callback >>>= 0; + envObject.callFinalizerInternal(forceUncaught, callback, data, hint); + } + function _emnapi_ctx_increase_waiting_request_counter() { + emnapiCtx.increaseWaitingRequestCounter(); + } + function _emnapi_ctx_decrease_waiting_request_counter() { + emnapiCtx.decreaseWaitingRequestCounter(); + } + function _emnapi_is_main_runtime_thread() { + return ENVIRONMENT_IS_PTHREAD ? 0 : 1; + } + function _emnapi_is_main_browser_thread() { + return (typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE) ? 1 : 0; + } + function _emnapi_unwind() { + throw 'unwind'; + } + function _emnapi_get_now() { + return performance.timeOrigin + performance.now(); + } + function $emnapiSetValueI64(result, numberValue) { + var tempDouble; + var tempI64 = [ + numberValue >>> 0, + (tempDouble = numberValue, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) + ]; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt32(result, tempI64[0], true); + HEAP_DATA_VIEW.setInt32(result + 4, tempI64[1], true); + } + function _emnapi_open_handle_scope() { + return emnapiCtx.openScope().id; + } + function _emnapi_close_handle_scope(_scope) { + return emnapiCtx.closeScope(); + } + var utilMod = Object.freeze({ + __proto__: null, + $emnapiSetValueI64: $emnapiSetValueI64, + _emnapi_call_finalizer: _emnapi_call_finalizer, + _emnapi_callback_into_module: _emnapi_callback_into_module, + _emnapi_close_handle_scope: _emnapi_close_handle_scope, + _emnapi_ctx_decrease_waiting_request_counter: _emnapi_ctx_decrease_waiting_request_counter, + _emnapi_ctx_increase_waiting_request_counter: _emnapi_ctx_increase_waiting_request_counter, + _emnapi_get_node_version: _emnapi_get_node_version, + _emnapi_get_now: _emnapi_get_now, + _emnapi_is_main_browser_thread: _emnapi_is_main_browser_thread, + _emnapi_is_main_runtime_thread: _emnapi_is_main_runtime_thread, + _emnapi_next_tick: _emnapi_next_tick, + _emnapi_open_handle_scope: _emnapi_open_handle_scope, + _emnapi_runtime_keepalive_pop: _emnapi_runtime_keepalive_pop, + _emnapi_runtime_keepalive_push: _emnapi_runtime_keepalive_push, + _emnapi_set_immediate: _emnapi_set_immediate, + _emnapi_unwind: _emnapi_unwind, + napi_clear_last_error: napi_clear_last_error, + napi_set_last_error: napi_set_last_error + }); + function emnapiGetWorkerByPthreadPtr(pthreadPtr) { + var view = new DataView(wasmMemory.buffer); + var tidOffset = 20; + var tid = view.getInt32(pthreadPtr + tidOffset, true); + var worker = PThread.pthreads[tid]; + return worker; + } + function _emnapi_worker_ref(pthreadPtr) { + if (ENVIRONMENT_IS_PTHREAD) + return; + pthreadPtr >>>= 0; + var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr); + if (worker && typeof worker.ref === 'function') { + worker.ref(); + } + } + function _emnapi_worker_unref(pthreadPtr) { + if (ENVIRONMENT_IS_PTHREAD) + return; + pthreadPtr >>>= 0; + var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr); + if (worker && typeof worker.unref === 'function') { + worker.unref(); + } + } + function _emnapi_async_send_js(type, callback, data) { + if (ENVIRONMENT_IS_PTHREAD) { + var postMessage_1 = napiModule.postMessage; + postMessage_1({ + __emnapi__: { + type: 'async-send', + payload: { + callback: callback, + data: data + } + } + }); + } + else { + switch (type) { + case 0: + _emnapi_set_immediate(callback, data); + break; + case 1: + _emnapi_next_tick(callback, data); + break; + } + } + } + var uvThreadpoolReadyResolve; + var uvThreadpoolReady = new Promise(function (resolve) { + uvThreadpoolReadyResolve = function () { + uvThreadpoolReady.ready = true; + resolve(); + }; + }); + uvThreadpoolReady.ready = false; + function _emnapi_after_uvthreadpool_ready(callback, q, type) { + if (uvThreadpoolReady.ready) { + (wasmTable.get(callback))(q, type); + } + else { + uvThreadpoolReady.then(function () { + (wasmTable.get(callback))(q, type); + }); + } + } + function _emnapi_tell_js_uvthreadpool(threads, size) { + var p = []; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + var _loop_1 = function (i) { + var pthreadPtr = HEAP_DATA_VIEW.getUint32(threads + i * 4, true); + var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr); + p.push(new Promise(function (resolve) { + var handler = function (e) { + var data = ENVIRONMENT_IS_NODE ? e : e.data; + var __emnapi__ = data.__emnapi__; + if (__emnapi__ && __emnapi__.type === 'async-thread-ready') { + resolve(); + if (worker && typeof worker.unref === 'function') { + worker.unref(); + } + if (ENVIRONMENT_IS_NODE) { + worker.off('message', handler); + } + else { + worker.removeEventListener('message', handler); + } + } + }; + if (ENVIRONMENT_IS_NODE) { + worker.on('message', handler); + } + else { + worker.addEventListener('message', handler); + } + })); + }; + for (var i = 0; i < size; i++) { + _loop_1(i); + } + Promise.all(p).then(uvThreadpoolReadyResolve); + } + function _emnapi_emit_async_thread_ready() { + if (!ENVIRONMENT_IS_PTHREAD) + return; + var postMessage = napiModule.postMessage; + postMessage({ + __emnapi__: { + type: 'async-thread-ready', + payload: {} + } + }); + } + var asyncMod = Object.freeze({ + __proto__: null, + _emnapi_after_uvthreadpool_ready: _emnapi_after_uvthreadpool_ready, + _emnapi_async_send_js: _emnapi_async_send_js, + _emnapi_emit_async_thread_ready: _emnapi_emit_async_thread_ready, + _emnapi_tell_js_uvthreadpool: _emnapi_tell_js_uvthreadpool, + _emnapi_worker_ref: _emnapi_worker_ref, + _emnapi_worker_unref: _emnapi_worker_unref + }); + function napi_adjust_external_memory(env, change_in_bytes, adjusted_value) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + if (!adjusted_value) + return envObject.setLastError(1); + var adjusted_memory = emnapiCtx.adjustAmountOfExternalAllocatedMemory(change_in_bytes); + adjusted_value >>>= 0; + if (emnapiCtx.feature.supportBigInt) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(adjusted_memory), true); + } + else { + $emnapiSetValueI64(adjusted_value, Number(adjusted_memory)); + } + return envObject.clearLastError(); + } + var memoryMod = Object.freeze({ + __proto__: null, + napi_adjust_external_memory: napi_adjust_external_memory + }); + var emnapiAWST = { + idGen: {}, + values: [undefined], + queued: new Set(), + pending: [], + init: function () { + var idGen = { + nextId: 1, + list: [], + generate: function () { + var id; + if (idGen.list.length) { + id = idGen.list.shift(); + } + else { + id = idGen.nextId; + idGen.nextId++; + } + return id; + }, + reuse: function (id) { + idGen.list.push(id); + } + }; + emnapiAWST.idGen = idGen; + emnapiAWST.values = [undefined]; + emnapiAWST.queued = new Set(); + emnapiAWST.pending = []; + }, + create: function (env, resource, resourceName, execute, complete, data) { + var asyncId = 0; + var triggerAsyncId = 0; + if (emnapiNodeBinding) { + var asyncContext = emnapiNodeBinding.node.emitAsyncInit(resource, resourceName, -1); + asyncId = asyncContext.asyncId; + triggerAsyncId = asyncContext.triggerAsyncId; + } + var id = emnapiAWST.idGen.generate(); + emnapiAWST.values[id] = { + env: env, + id: id, + resource: resource, + asyncId: asyncId, + triggerAsyncId: triggerAsyncId, + status: 0, + execute: execute, + complete: complete, + data: data + }; + return id; + }, + callComplete: function (work, status) { + var complete = work.complete; + var env = work.env; + var data = work.data; + var callback = function () { + if (!complete) + return; + var envObject = emnapiCtx.envStore.get(env); + var scope = emnapiCtx.openScope(envObject); + try { + envObject.callbackIntoModule(true, function () { + (wasmTable.get(complete))(env, status, data); + }); + } + finally { + emnapiCtx.closeScope(envObject, scope); + } + }; + if (emnapiNodeBinding) { + emnapiNodeBinding.node.makeCallback(work.resource, callback, [], { + asyncId: work.asyncId, + triggerAsyncId: work.triggerAsyncId + }); + } + else { + callback(); + } + }, + queue: function (id) { + var work = emnapiAWST.values[id]; + if (!work) + return; + if (work.status === 0) { + work.status = 1; + if (emnapiAWST.queued.size >= (Math.abs(emnapiAsyncWorkPoolSize) || 4)) { + emnapiAWST.pending.push(id); + return; + } + emnapiAWST.queued.add(id); + var env_1 = work.env; + var data_1 = work.data; + var execute = work.execute; + work.status = 2; + emnapiCtx.feature.setImmediate(function () { + (wasmTable.get(execute))(env_1, data_1); + emnapiAWST.queued.delete(id); + work.status = 3; + emnapiCtx.feature.setImmediate(function () { + emnapiAWST.callComplete(work, 0); + }); + if (emnapiAWST.pending.length > 0) { + var nextWorkId = emnapiAWST.pending.shift(); + emnapiAWST.values[nextWorkId].status = 0; + emnapiAWST.queue(nextWorkId); + } + }); + } + }, + cancel: function (id) { + var index = emnapiAWST.pending.indexOf(id); + if (index !== -1) { + var work_1 = emnapiAWST.values[id]; + if (work_1 && (work_1.status === 1)) { + work_1.status = 4; + emnapiAWST.pending.splice(index, 1); + emnapiCtx.feature.setImmediate(function () { + emnapiAWST.callComplete(work_1, 11); + }); + return 0; + } + else { + return 9; + } + } + return 9; + }, + remove: function (id) { + var work = emnapiAWST.values[id]; + if (!work) + return; + if (emnapiNodeBinding) { + emnapiNodeBinding.node.emitAsyncDestroy({ + asyncId: work.asyncId, + triggerAsyncId: work.triggerAsyncId + }); + } + emnapiAWST.values[id] = undefined; + emnapiAWST.idGen.reuse(id); + } + }; + function _emnapi_node_emit_async_init(async_resource, async_resource_name, trigger_async_id, result) { + if (!emnapiNodeBinding) + return; + var resource = emnapiCtx.handleStore.get(async_resource).value; + var resource_name = emnapiCtx.handleStore.get(async_resource_name).value; + var asyncContext = emnapiNodeBinding.node.emitAsyncInit(resource, resource_name, trigger_async_id); + var asyncId = asyncContext.asyncId; + var triggerAsyncId = asyncContext.triggerAsyncId; + if (result) { + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setFloat64(result, asyncId, true); + HEAP_DATA_VIEW.setFloat64(result + 8, triggerAsyncId, true); + } + } + function _emnapi_node_emit_async_destroy(async_id, trigger_async_id) { + if (!emnapiNodeBinding) + return; + emnapiNodeBinding.node.emitAsyncDestroy({ + asyncId: async_id, + triggerAsyncId: trigger_async_id + }); + } + function _emnapi_node_make_callback(env, async_resource, cb, argv, size, async_id, trigger_async_id, result) { + var i = 0; + var v; + if (!emnapiNodeBinding) + return; + var resource = emnapiCtx.handleStore.get(async_resource).value; + var callback = emnapiCtx.handleStore.get(cb).value; + argv >>>= 0; + size >>>= 0; + size = size >>> 0; + var arr = Array(size); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + for (; i < size; i++) { + var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); + arr[i] = emnapiCtx.handleStore.get(argVal).value; + } + var ret = emnapiNodeBinding.node.makeCallback(resource, callback, arr, { + asyncId: async_id, + triggerAsyncId: trigger_async_id + }); + if (result) { + result >>>= 0; + var envObject = emnapiCtx.envStore.get(env); + v = envObject.ensureHandleId(ret); + HEAP_DATA_VIEW.setUint32(result, v, true); + } + } + function _emnapi_async_init_js(async_resource, async_resource_name, result) { + if (!emnapiNodeBinding) { + return 9; + } + var resource; + if (async_resource) { + resource = Object(emnapiCtx.handleStore.get(async_resource).value); + } + var name = emnapiCtx.handleStore.get(async_resource_name).value; + var ret = emnapiNodeBinding.napi.asyncInit(resource, name); + if (ret.status !== 0) + return ret.status; + var numberValue = ret.value; + if (!((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63))))) { + numberValue = numberValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); + if (numberValue >= (BigInt(1) << BigInt(63))) { + numberValue = numberValue - (BigInt(1) << BigInt(64)); + } + } + var low = Number(numberValue & BigInt(0xffffffff)); + var high = Number(numberValue >> BigInt(32)); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt32(result, low, true); + HEAP_DATA_VIEW.setInt32(result + 4, high, true); + return 0; + } + function _emnapi_async_destroy_js(async_context) { + if (!emnapiNodeBinding) { + return 9; + } + async_context >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + var low = HEAP_DATA_VIEW.getInt32(async_context, true); + var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true); + var pointer = BigInt(low >>> 0) | (BigInt(high) << BigInt(32)); + var ret = emnapiNodeBinding.napi.asyncDestroy(pointer); + if (ret.status !== 0) + return ret.status; + return 0; + } + function napi_open_callback_scope(env, ignored, async_context_handle, result) { + throw new Error('napi_open_callback_scope has not been implemented yet'); + } + function napi_close_callback_scope(env, scope) { + throw new Error('napi_close_callback_scope has not been implemented yet'); + } + function napi_make_callback(env, async_context, recv, func, argc, argv, result) { + var i = 0; + var v; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!emnapiNodeBinding) { + return envObject.setLastError(9); + } + if (!recv) + return envObject.setLastError(1); + if (argc > 0) { + if (!argv) + return envObject.setLastError(1); + } + var v8recv = Object(emnapiCtx.handleStore.get(recv).value); + var v8func = emnapiCtx.handleStore.get(func).value; + if (typeof v8func !== 'function') { + return envObject.setLastError(1); + } + async_context >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + var low = HEAP_DATA_VIEW.getInt32(async_context, true); + var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true); + var ctx = BigInt(low >>> 0) | (BigInt(high) << BigInt(32)); + argv >>>= 0; + argc >>>= 0; + argc = argc >>> 0; + var arr = Array(argc); + for (; i < argc; i++) { + var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); + arr[i] = emnapiCtx.handleStore.get(argVal).value; + } + var ret = emnapiNodeBinding.napi.makeCallback(ctx, v8recv, v8func, arr); + if (ret.error) { + throw ret.error; + } + if (ret.status !== 0) + return envObject.setLastError(ret.status); + if (result) { + result >>>= 0; + v = envObject.ensureHandleId(ret.value); + HEAP_DATA_VIEW.setUint32(result, v, true); + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function _emnapi_env_check_gc_access(env) { + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + } + var nodeMod = Object.freeze({ + __proto__: null, + _emnapi_async_destroy_js: _emnapi_async_destroy_js, + _emnapi_async_init_js: _emnapi_async_init_js, + _emnapi_env_check_gc_access: _emnapi_env_check_gc_access, + _emnapi_node_emit_async_destroy: _emnapi_node_emit_async_destroy, + _emnapi_node_emit_async_init: _emnapi_node_emit_async_init, + _emnapi_node_make_callback: _emnapi_node_make_callback, + napi_close_callback_scope: napi_close_callback_scope, + napi_make_callback: napi_make_callback, + napi_open_callback_scope: napi_open_callback_scope + }); + var emnapiTSFN = { + _liveSet: {}, + offset: { + __size__: 0, + resource: 0, + async_id: 0, + trigger_async_id: 0, + queue_size: 0, + is_some: 0, + queue: 0, + async_pending: 0, + async_u_fd: 0, + thread_count: 0, + state: 0, + dispatch_state: 0, + context: 0, + max_queue_size: 0, + ref: 0, + env: 0, + finalize_data: 0, + finalize_cb: 0, + call_js_cb: 0, + handles_closing: 0, + async_ref: 0, + mutex: 0, + cond: 0 + }, + init: function () { + emnapiTSFN._liveSet = new Set(); + emnapiTSFN.offset.__size__ = 184; + emnapiTSFN.offset.resource = 0; + emnapiTSFN.offset.async_id = 8; + emnapiTSFN.offset.trigger_async_id = 16; + emnapiTSFN.offset.queue_size = 60; + emnapiTSFN.offset.is_some = 24; + emnapiTSFN.offset.queue = 64; + emnapiTSFN.offset.async_pending = 132; + emnapiTSFN.offset.async_u_fd = 96; + emnapiTSFN.offset.thread_count = 136; + emnapiTSFN.offset.state = 140; + emnapiTSFN.offset.dispatch_state = 144; + emnapiTSFN.offset.context = 148; + emnapiTSFN.offset.max_queue_size = 152; + emnapiTSFN.offset.ref = 156; + emnapiTSFN.offset.env = 160; + emnapiTSFN.offset.finalize_data = 164; + emnapiTSFN.offset.finalize_cb = 168; + emnapiTSFN.offset.call_js_cb = 172; + emnapiTSFN.offset.handles_closing = 176; + emnapiTSFN.offset.async_ref = 180; + emnapiTSFN.offset.mutex = 32; + emnapiTSFN.offset.cond = 56; + emnapiTSFN.offset.mutex = emnapiTSFN.offset.mutex + 4; + if (typeof PThread !== 'undefined') { + PThread.unusedWorkers.forEach(emnapiTSFN.addListener); + PThread.runningWorkers.forEach(emnapiTSFN.addListener); + var __original_getNewWorker_1 = PThread.getNewWorker; + PThread.getNewWorker = function () { + var r = __original_getNewWorker_1.apply(this, arguments); + emnapiTSFN.addListener(r); + return r; + }; + } + }, + addListener: function (worker) { + if (!worker) + return false; + if (worker._emnapiTSFNListener) + return true; + var handler = function (e) { + var data = ENVIRONMENT_IS_NODE ? e : e.data; + var __emnapi__ = data.__emnapi__; + if (__emnapi__) { + var type = __emnapi__.type; + var payload = __emnapi__.payload; + if (type === 'tsfn-send') { + var pendng = payload.tsfn + emnapiTSFN.offset.async_pending; + if (Atomics.load(new Int32Array(wasmMemory.buffer), pendng >>> 2) !== 0) { + emnapiTSFN.enqueue(payload.tsfn); + } + } + } + }; + var dispose = function () { + if (ENVIRONMENT_IS_NODE) { + worker.off('message', handler); + } + else { + worker.removeEventListener('message', handler, false); + } + delete worker._emnapiTSFNListener; + }; + worker._emnapiTSFNListener = { handler: handler, dispose: dispose }; + if (ENVIRONMENT_IS_NODE) { + worker.on('message', handler); + } + else { + worker.addEventListener('message', handler, false); + } + return true; + }, + initQueue: function (func) { + var size = 2 * 4; + var queue = _malloc(size); + if (!queue) + return false; + queue >>>= 0; + new Uint8Array(wasmMemory.buffer, queue, size).fill(0); + emnapiTSFN.storeSizeTypeValue(func + emnapiTSFN.offset.queue, queue, false); + return true; + }, + destroyQueue: function (func) { + var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false); + if (queue) { + var node = emnapiTSFN.loadSizeTypeValue(queue, false); + while (node !== 0) { + var next = emnapiTSFN.loadSizeTypeValue(node + 4, false); + _free(node); + node = next; + } + _free(queue); + } + }, + pushQueue: function (func, data) { + var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false); + var head = emnapiTSFN.loadSizeTypeValue(queue, false); + var tail = emnapiTSFN.loadSizeTypeValue(queue + 4, false); + var size = 2 * 4; + var node = _malloc(size); + if (!node) + throw new Error('OOM'); + node >>>= 0; + emnapiTSFN.storeSizeTypeValue(node, data, false); + emnapiTSFN.storeSizeTypeValue(node + 4, 0, false); + if (head === 0 && tail === 0) { + emnapiTSFN.storeSizeTypeValue(queue, node, false); + emnapiTSFN.storeSizeTypeValue(queue + 4, node, false); + } + else { + emnapiTSFN.storeSizeTypeValue(tail + 4, node, false); + emnapiTSFN.storeSizeTypeValue(queue + 4, node, false); + } + emnapiTSFN.addQueueSize(func); + }, + shiftQueue: function (func) { + var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false); + var head = emnapiTSFN.loadSizeTypeValue(queue, false); + if (head === 0) + return 0; + var node = head; + var next = emnapiTSFN.loadSizeTypeValue(head + 4, false); + emnapiTSFN.storeSizeTypeValue(queue, next, false); + if (next === 0) { + emnapiTSFN.storeSizeTypeValue(queue + 4, 0, false); + } + emnapiTSFN.storeSizeTypeValue(node + 4, 0, false); + var value = emnapiTSFN.loadSizeTypeValue(node, false); + _free(node); + emnapiTSFN.subQueueSize(func); + return value; + }, + push: function (func, data, mode) { + var mutex = emnapiTSFN.getMutex(func); + var cond = emnapiTSFN.getCond(func); + var waitCondition = function () { + var queueSize = emnapiTSFN.getQueueSize(func); + var maxSize = emnapiTSFN.getMaxQueueSize(func); + return queueSize >= maxSize && maxSize > 0 && emnapiTSFN.getState(func) === 0; + }; + var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE; + var shouldDelete = false; + var ret = mutex.execute(function () { + while (waitCondition()) { + if (mode === 0) { + return 15; + } + if (isBrowserMain) { + return 21; + } + cond.wait(); + } + if (emnapiTSFN.getState(func) === 0) { + emnapiTSFN.pushQueue(func, data); + emnapiTSFN.send(func); + return 0; + } + if (emnapiTSFN.getThreadCount(func) === 0) { + return 1; + } + emnapiTSFN.subThreadCount(func); + if (!(emnapiTSFN.getState(func) === 2 && emnapiTSFN.getThreadCount(func) === 0)) { + return 16; + } + shouldDelete = true; + return 16; + }); + if (shouldDelete) { + emnapiTSFN.destroy(func); + } + return ret; + }, + getMutex: function (func) { + var index = func + emnapiTSFN.offset.mutex; + var mutex = { + lock: function () { + var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE; + var i32a = new Int32Array(wasmMemory.buffer, index, 1); + if (isBrowserMain) { + while (true) { + var oldValue = Atomics.compareExchange(i32a, 0, 0, 10); + if (oldValue === 0) { + return; + } + } + } + else { + while (true) { + var oldValue = Atomics.compareExchange(i32a, 0, 0, 10); + if (oldValue === 0) { + return; + } + Atomics.wait(i32a, 0, 10); + } + } + }, + unlock: function () { + var i32a = new Int32Array(wasmMemory.buffer, index, 1); + var oldValue = Atomics.compareExchange(i32a, 0, 10, 0); + if (oldValue !== 10) { + throw new Error('Tried to unlock while not holding the mutex'); + } + Atomics.notify(i32a, 0, 1); + }, + execute: function (fn) { + mutex.lock(); + try { + return fn(); + } + finally { + mutex.unlock(); + } + } + }; + return mutex; + }, + getCond: function (func) { + var index = func + emnapiTSFN.offset.cond; + var mutex = emnapiTSFN.getMutex(func); + var cond = { + wait: function () { + var i32a = new Int32Array(wasmMemory.buffer, index, 1); + var value = Atomics.load(i32a, 0); + mutex.unlock(); + Atomics.wait(i32a, 0, value); + mutex.lock(); + }, + signal: function () { + var i32a = new Int32Array(wasmMemory.buffer, index, 1); + Atomics.add(i32a, 0, 1); + Atomics.notify(i32a, 0, 1); + } + }; + return cond; + }, + getQueueSize: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue_size, true); + }, + addQueueSize: function (func) { + var offset = emnapiTSFN.offset.queue_size; + var arr, index; + arr = new Uint32Array(wasmMemory.buffer); + index = (func + offset) >>> 2; + Atomics.add(arr, index, 1); + }, + subQueueSize: function (func) { + var offset = emnapiTSFN.offset.queue_size; + var arr, index; + arr = new Uint32Array(wasmMemory.buffer); + index = (func + offset) >>> 2; + Atomics.sub(arr, index, 1); + }, + getThreadCount: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.thread_count, true); + }, + addThreadCount: function (func) { + var offset = emnapiTSFN.offset.thread_count; + var arr, index; + arr = new Uint32Array(wasmMemory.buffer); + index = (func + offset) >>> 2; + Atomics.add(arr, index, 1); + }, + subThreadCount: function (func) { + var offset = emnapiTSFN.offset.thread_count; + var arr, index; + arr = new Uint32Array(wasmMemory.buffer); + index = (func + offset) >>> 2; + Atomics.sub(arr, index, 1); + }, + getState: function (func) { + return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.state) >>> 2); + }, + setState: function (func, value) { + Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.state) >>> 2, value); + }, + getHandlesClosing: function (func) { + return Atomics.load(new Int8Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing)); + }, + setHandlesClosing: function (func, value) { + Atomics.store(new Int8Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing), value); + }, + getDispatchState: function (func) { + return Atomics.load(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >>> 2); + }, + getContext: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.context, false); + }, + getMaxQueueSize: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.max_queue_size, true); + }, + getEnv: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.env, false); + }, + getCallJSCb: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.call_js_cb, false); + }, + getRef: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.ref, false); + }, + getResource: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.resource, false); + }, + getFinalizeCb: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.finalize_cb, false); + }, + getFinalizeData: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.finalize_data, false); + }, + loadSizeTypeValue: function (offset, unsigned) { + var ret; + var arr; + if (unsigned) { + arr = new Uint32Array(wasmMemory.buffer); + ret = Atomics.load(arr, offset >>> 2); + return ret; + } + else { + arr = new Int32Array(wasmMemory.buffer); + ret = Atomics.load(arr, offset >>> 2); + return ret; + } + }, + storeSizeTypeValue: function (offset, value, unsigned) { + var arr; + if (unsigned) { + arr = new Uint32Array(wasmMemory.buffer); + Atomics.store(arr, offset >>> 2, value); + return undefined; + } + else { + arr = new Int32Array(wasmMemory.buffer); + Atomics.store(arr, offset >>> 2, value >>> 0); + return undefined; + } + }, + releaseResources: function (func) { + if (emnapiTSFN.getState(func) !== 2) { + emnapiTSFN.setState(func, 2); + var env = emnapiTSFN.getEnv(func); + var envObject = emnapiCtx.envStore.get(env); + var ref = emnapiTSFN.getRef(func); + if (ref) { + emnapiCtx.refStore.get(ref).dispose(); + } + var resource = emnapiTSFN.getResource(func); + emnapiCtx.refStore.get(resource).dispose(); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(func + emnapiTSFN.offset.is_some, 0, true); + emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func); + envObject.unref(); + var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >>> 2; + var arr = new Uint32Array(wasmMemory.buffer); + if (Atomics.load(arr, asyncRefOffset) > 0) { + Atomics.store(arr, asyncRefOffset, 0); + emnapiCtx.decreaseWaitingRequestCounter(); + } + if (emnapiNodeBinding) { + var view = new DataView(wasmMemory.buffer); + var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true); + var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true); + _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId); + } + } + }, + destroy: function (func) { + emnapiTSFN._liveSet.delete(func); + emnapiTSFN.destroyQueue(func); + emnapiTSFN.releaseResources(func); + _free(func); + }, + emptyQueue: function (func) { + var drainQueue = []; + emnapiTSFN.getMutex(func).execute(function () { + while (emnapiTSFN.getQueueSize(func) > 0) { + drainQueue.push(emnapiTSFN.shiftQueue(func)); + } + }); + var callJsCb = emnapiTSFN.getCallJSCb(func); + var context = emnapiTSFN.getContext(func); + var data; + for (var i = 0; i < drainQueue.length; i++) { + data = drainQueue[i]; + if (callJsCb) { + (wasmTable.get(callJsCb))(0, 0, context, data); + } + } + }, + maybeDelete: function (func) { + var shouldDelete = false; + emnapiTSFN.getMutex(func).execute(function () { + if (emnapiTSFN.getThreadCount(func) > 0) { + emnapiTSFN.releaseResources(func); + } + else { + shouldDelete = true; + } + }); + if (shouldDelete) { + emnapiTSFN.destroy(func); + } + }, + finalize: function (func) { + var env = emnapiTSFN.getEnv(func); + var envObject = emnapiCtx.envStore.get(env); + emnapiCtx.openScope(envObject); + var finalize = emnapiTSFN.getFinalizeCb(func); + var data = emnapiTSFN.getFinalizeData(func); + var context = emnapiTSFN.getContext(func); + var f = function () { + envObject.callFinalizerInternal(0, finalize, data, context); + }; + try { + emnapiTSFN.emptyQueue(func); + if (finalize) { + if (emnapiNodeBinding) { + var resource = emnapiTSFN.getResource(func); + var resource_value = emnapiCtx.refStore.get(resource).get(); + var resourceObject = emnapiCtx.handleStore.get(resource_value).value; + var view = new DataView(wasmMemory.buffer); + var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true); + var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true); + emnapiNodeBinding.node.makeCallback(resourceObject, f, [], { + asyncId: asyncId, + triggerAsyncId: triggerAsyncId + }); + } + else { + f(); + } + } + emnapiTSFN.maybeDelete(func); + } + finally { + emnapiCtx.closeScope(envObject); + } + }, + cleanup: function (func) { + emnapiTSFN.closeHandlesAndMaybeDelete(func, 1); + }, + closeHandlesAndMaybeDelete: function (func, set_closing) { + var env = emnapiTSFN.getEnv(func); + var envObject = emnapiCtx.envStore.get(env); + emnapiCtx.openScope(envObject); + try { + if (set_closing) { + emnapiTSFN.getMutex(func).execute(function () { + emnapiTSFN.setState(func, 1); + if (emnapiTSFN.getMaxQueueSize(func) > 0) { + emnapiTSFN.getCond(func).signal(); + } + }); + } + if (emnapiTSFN.getHandlesClosing(func)) { + return; + } + emnapiTSFN.setHandlesClosing(func, 1); + Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.async_pending) >>> 2, 1); + emnapiCtx.feature.setImmediate(function () { + emnapiTSFN.finalize(func); + }); + } + finally { + emnapiCtx.closeScope(envObject); + } + }, + dispatchOne: function (func) { + var data = 0; + var popped_value = false; + var has_more = false; + var mutex = emnapiTSFN.getMutex(func); + var cond = emnapiTSFN.getCond(func); + mutex.execute(function () { + if (emnapiTSFN.getState(func) === 0) { + var size = emnapiTSFN.getQueueSize(func); + if (size > 0) { + data = emnapiTSFN.shiftQueue(func); + popped_value = true; + var maxQueueSize = emnapiTSFN.getMaxQueueSize(func); + if (size === maxQueueSize && maxQueueSize > 0) { + cond.signal(); + } + size--; + } + if (size === 0) { + if (emnapiTSFN.getThreadCount(func) === 0) { + emnapiTSFN.setState(func, 1); + if (emnapiTSFN.getMaxQueueSize(func) > 0) { + cond.signal(); + } + emnapiTSFN.closeHandlesAndMaybeDelete(func, 0); + } + } + else { + has_more = true; + } + } + else { + emnapiTSFN.closeHandlesAndMaybeDelete(func, 0); + } + }); + if (popped_value) { + var env = emnapiTSFN.getEnv(func); + var envObject_1 = emnapiCtx.envStore.get(env); + emnapiCtx.openScope(envObject_1); + var f = function () { + envObject_1.callbackIntoModule(false, function () { + var callJsCb = emnapiTSFN.getCallJSCb(func); + var ref = emnapiTSFN.getRef(func); + var js_callback = ref ? emnapiCtx.refStore.get(ref).get() : 0; + if (callJsCb) { + var context = emnapiTSFN.getContext(func); + (wasmTable.get(callJsCb))(env, js_callback, context, data); + } + else { + var jsCallback = js_callback ? emnapiCtx.handleStore.get(js_callback).value : null; + if (typeof jsCallback === 'function') { + jsCallback(); + } + } + }); + }; + try { + if (emnapiNodeBinding) { + var resource = emnapiTSFN.getResource(func); + var resource_value = emnapiCtx.refStore.get(resource).get(); + var resourceObject = emnapiCtx.handleStore.get(resource_value).value; + var view = new DataView(wasmMemory.buffer); + emnapiNodeBinding.node.makeCallback(resourceObject, f, [], { + asyncId: view.getFloat64(func + emnapiTSFN.offset.async_id, true), + triggerAsyncId: view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true) + }); + } + else { + f(); + } + } + finally { + emnapiCtx.closeScope(envObject_1); + } + } + return has_more; + }, + dispatch: function (func) { + var has_more = true; + var iterations_left = 1000; + var ui32a = new Uint32Array(wasmMemory.buffer); + var index = (func + emnapiTSFN.offset.dispatch_state) >>> 2; + while (has_more && --iterations_left !== 0) { + Atomics.store(ui32a, index, 1); + has_more = emnapiTSFN.dispatchOne(func); + if (Atomics.exchange(ui32a, index, 0) !== 1) { + has_more = true; + } + } + if (has_more) { + emnapiTSFN.send(func); + } + }, + enqueue: function (func) { + var pending = func + emnapiTSFN.offset.async_pending; + var scheduled = func + emnapiTSFN.offset.async_u_fd; + var i32a = new Int32Array(wasmMemory.buffer); + if (Atomics.exchange(i32a, scheduled >>> 2, 1) !== 0) { + return; + } + emnapiCtx.feature.setImmediate(function () { + if (!emnapiTSFN._liveSet.has(func)) { + return; + } + if (Atomics.load(i32a, pending >>> 2) === 0) { + Atomics.store(i32a, scheduled >>> 2, 0); + return; + } + emnapiCtx.feature.setImmediate(function () { + try { + if (Atomics.exchange(i32a, pending >>> 2, 0) === 0) { + return; + } + if (!emnapiTSFN._liveSet.has(func)) { + return; + } + emnapiTSFN.dispatch(func); + } + finally { + if (emnapiTSFN._liveSet.has(func)) { + Atomics.store(i32a, scheduled >>> 2, 0); + if (Atomics.load(i32a, pending >>> 2) !== 0) { + emnapiTSFN.enqueue(func); + } + } + } + }); + }); + }, + send: function (func) { + var current_state = Atomics.or(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >>> 2, 1 << 1); + if ((current_state & 1) === 1) { + return; + } + var pendng = func + emnapiTSFN.offset.async_pending; + if (Atomics.load(new Int32Array(wasmMemory.buffer), pendng >>> 2) !== 0) { + return; + } + if (Atomics.exchange(new Int32Array(wasmMemory.buffer), pendng >>> 2, 1) === 0) { + if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) { + postMessage({ + __emnapi__: { + type: 'tsfn-send', + payload: { + tsfn: func + } + } + }); + } + else { + emnapiTSFN.enqueue(func); + } + } + } + }; + function napi_create_threadsafe_function(env, func, async_resource, async_resource_name, max_queue_size, initial_thread_count, thread_finalize_data, thread_finalize_cb, context, call_js_cb, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!async_resource_name) + return envObject.setLastError(1); + max_queue_size >>>= 0; + initial_thread_count >>>= 0; + env >>>= 0; + thread_finalize_data >>>= 0; + thread_finalize_cb >>>= 0; + context >>>= 0; + call_js_cb >>>= 0; + max_queue_size = max_queue_size >>> 0; + initial_thread_count = initial_thread_count >>> 0; + if (initial_thread_count === 0) { + return envObject.setLastError(1); + } + if (!result) + return envObject.setLastError(1); + var ref = 0; + func >>>= 0; + if (!func) { + if (!call_js_cb) + return envObject.setLastError(1); + } + else { + var funcValue = emnapiCtx.handleStore.get(func).value; + if (typeof funcValue !== 'function') { + return envObject.setLastError(1); + } + ref = emnapiCtx.createReference(envObject, func, 1, 1).id; + } + var asyncResourceObject; + if (async_resource) { + asyncResourceObject = emnapiCtx.handleStore.get(async_resource).value; + if (asyncResourceObject == null) { + return envObject.setLastError(2); + } + asyncResourceObject = Object(asyncResourceObject); + } + else { + asyncResourceObject = {}; + } + var resource = envObject.ensureHandleId(asyncResourceObject); + var asyncResourceName = emnapiCtx.handleStore.get(async_resource_name).value; + if (typeof asyncResourceName === 'symbol') { + return envObject.setLastError(3); + } + asyncResourceName = String(asyncResourceName); + var resource_name = envObject.ensureHandleId(asyncResourceName); + var sizeofTSFN = emnapiTSFN.offset.__size__; + var tsfn = _malloc(sizeofTSFN); + if (!tsfn) + return envObject.setLastError(9); + tsfn >>>= 0; + new Uint8Array(wasmMemory.buffer).subarray(tsfn, tsfn + sizeofTSFN).fill(0); + var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1); + var resource_ = resourceRef.id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.resource, resource_, true); + if (!emnapiTSFN.initQueue(tsfn)) { + _free(tsfn); + resourceRef.dispose(); + return envObject.setLastError(9); + } + _emnapi_node_emit_async_init(resource, resource_name, -1, tsfn + emnapiTSFN.offset.async_id); + HEAP_DATA_VIEW.setInt8(tsfn + emnapiTSFN.offset.is_some, 1, true); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.thread_count, initial_thread_count, true); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.context, context, true); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.max_queue_size, max_queue_size, true); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.ref, ref, true); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.env, env, true); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_data, thread_finalize_data, true); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_cb, thread_finalize_cb, true); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.call_js_cb, call_js_cb, true); + emnapiCtx.addCleanupHook(envObject, emnapiTSFN.cleanup, tsfn); + emnapiTSFN._liveSet.add(tsfn); + envObject.ref(); + emnapiCtx.increaseWaitingRequestCounter(); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.async_ref, 1, true); + result >>>= 0; + HEAP_DATA_VIEW.setUint32(result, tsfn, true); + return envObject.clearLastError(); + } + function napi_get_threadsafe_function_context(func, result) { + if (!func || !result) { + abort(); + return 1; + } + func >>>= 0; + result >>>= 0; + var context = emnapiTSFN.getContext(func); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, context, true); + return 0; + } + function napi_call_threadsafe_function(func, data, mode) { + if (!func) { + abort(); + return 1; + } + func >>>= 0; + data >>>= 0; + return emnapiTSFN.push(func, data, mode); + } + function napi_acquire_threadsafe_function(func) { + if (!func) { + abort(); + return 1; + } + func >>>= 0; + var mutex = emnapiTSFN.getMutex(func); + return mutex.execute(function () { + if (emnapiTSFN.getState(func) === 0) { + emnapiTSFN.addThreadCount(func); + return 0; + } + return 16; + }); + } + function napi_release_threadsafe_function(func, mode) { + if (!func) { + abort(); + return 1; + } + func >>>= 0; + var mutex = emnapiTSFN.getMutex(func); + var cond = emnapiTSFN.getCond(func); + var shouldDelete = false; + var ret = mutex.execute(function () { + if (emnapiTSFN.getThreadCount(func) === 0) { + return 1; + } + emnapiTSFN.subThreadCount(func); + if (emnapiTSFN.getThreadCount(func) === 0 || mode === 1) { + if (emnapiTSFN.getState(func) === 0) { + if (mode === 1) { + emnapiTSFN.setState(func, 1); + } + if (emnapiTSFN.getState(func) === 1 && emnapiTSFN.getMaxQueueSize(func) > 0) { + cond.signal(); + } + emnapiTSFN.send(func); + } + } + if (!(emnapiTSFN.getState(func) === 2 && emnapiTSFN.getThreadCount(func) === 0)) { + return 0; + } + shouldDelete = true; + return 0; + }); + if (shouldDelete) { + emnapiTSFN.destroy(func); + } + return ret; + } + function napi_unref_threadsafe_function(env, func) { + if (!func) { + abort(); + return 1; + } + func >>>= 0; + var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >>> 2; + var arr = new Uint32Array(wasmMemory.buffer); + var currentValue = Atomics.load(arr, asyncRefOffset); + if (currentValue > 0) { + Atomics.store(arr, asyncRefOffset, currentValue - 1); + if (currentValue === 1) { + emnapiCtx.decreaseWaitingRequestCounter(); + } + } + return 0; + } + function napi_ref_threadsafe_function(env, func) { + if (!func) { + abort(); + return 1; + } + func >>>= 0; + var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >>> 2; + var arr = new Uint32Array(wasmMemory.buffer); + var currentValue = Atomics.load(arr, asyncRefOffset); + if (!currentValue) { + emnapiCtx.increaseWaitingRequestCounter(); + } + Atomics.store(arr, asyncRefOffset, currentValue + 1); + return 0; + } + var emnapiAWMT = { + pool: [], + workerReady: null, + globalAddress: 0, + globalOffset: { + idle_threads: 0, + q: 1 * 4, + next: 1 * 4, + prev: 2 * 4, + mutex: 3 * 4, + cond: 4 * 4, + exit_message: 5 * 4, + end: 7 * 4 + }, + offset: { + resource: 0, + async_id: 8, + trigger_async_id: 16, + env: 24, + status: 1 * 4 + 24, + queue: 2 * 4 + 24, + queue_next: 2 * 4 + 24, + queue_prev: 3 * 4 + 24, + data: 4 * 4 + 24, + execute: 5 * 4 + 24, + complete: 6 * 4 + 24, + end: 7 * 4 + 24 + }, + init: function () { + emnapiAWMT.pool = []; + emnapiAWMT.workerReady = null; + if (typeof PThread !== 'undefined') { + PThread.unusedWorkers.forEach(emnapiAWMT.addListener); + PThread.runningWorkers.forEach(emnapiAWMT.addListener); + var __original_getNewWorker_1 = PThread.getNewWorker; + PThread.getNewWorker = function () { + var r = __original_getNewWorker_1.apply(this, arguments); + emnapiAWMT.addListener(r); + return r; + }; + } + }, + addListener: function (worker) { + if (!worker) + return false; + if (worker._emnapiAWMTListener) + return true; + var handler = function (e) { + var data = ENVIRONMENT_IS_NODE ? e : e.data; + var __emnapi__ = data.__emnapi__; + if (__emnapi__) { + var type = __emnapi__.type; + var payload = __emnapi__.payload; + if (type === 'async-work-complete') { + emnapiAWMT.callComplete(payload.work, 0); + } + } + }; + var dispose = function () { + if (ENVIRONMENT_IS_NODE) { + worker.off('message', handler); + } + else { + worker.removeEventListener('message', handler, false); + } + delete worker._emnapiAWMTListener; + }; + worker._emnapiAWMTListener = { handler: handler, dispose: dispose }; + if (ENVIRONMENT_IS_NODE) { + worker.on('message', handler); + } + else { + worker.addEventListener('message', handler, false); + } + return true; + }, + initGlobal: function () { + if (!emnapiAWMT.globalAddress) { + emnapiAWMT.globalAddress = _malloc(emnapiAWMT.globalOffset.end); + emnapiAWMT.globalAddress >>>= 0; + var size = emnapiAWMT.globalOffset.end; + var addr = emnapiAWMT.globalAddress; + new Uint8Array(wasmMemory.buffer, addr, size).fill(0); + emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q); + emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.exit_message); + } + }, + terminateWorkers: function () { + emnapiAWMT.pool.forEach(function (w) { + var _a, _b; + (_a = w._emnapiAWMTListener) === null || _a === void 0 ? void 0 : _a.dispose(); + (_b = w._emnapiTSFNListener) === null || _b === void 0 ? void 0 : _b.dispose(); + w.terminate(); + }); + emnapiAWMT.pool.length = 0; + }, + initWorkers: function (n) { + if (ENVIRONMENT_IS_PTHREAD) { + return emnapiAWMT.workerReady || (emnapiAWMT.workerReady = Promise.resolve()); + } + if (emnapiAWMT.workerReady) + return emnapiAWMT.workerReady; + if (!('emnapi_async_worker_create' in wasmInstance.exports)) { + throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags'); + } + var emnapi_async_worker_create = wasmInstance.exports.emnapi_async_worker_create; + var args = []; + emnapiAWMT.initGlobal(); + for (var i = 0; i < n; ++i) { + args.push(emnapi_async_worker_create(1, emnapiAWMT.globalAddress)); + } + var promises = args.map(function (index) { + if (index === 0) { + return Promise.reject(new Error('Failed to create async worker')); + } + var worker; + if (index < 0) { + worker = emnapiAWMT.pool[-index - 1]; + if (worker) + return worker.whenLoaded; + } + index >>>= 0; + var view = new DataView(wasmMemory.buffer); + var tidOffset = 20; + var tid = view.getInt32(index + tidOffset, true); + worker = PThread.pthreads[tid]; + return worker.whenLoaded; + }); + emnapiAWMT.workerReady = Promise.all(promises); + return emnapiAWMT.workerReady; + }, + getResource: function (work) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.resource, true); + }, + getExecute: function (work) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.execute, true); + }, + getComplete: function (work) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.complete, true); + }, + getEnv: function (work) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.env, true); + }, + getData: function (work) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.data, true); + }, + getMutex: function () { + var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.mutex; + var mutex = { + lock: function () { + var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE; + var i32a = new Int32Array(wasmMemory.buffer, index, 1); + if (isBrowserMain) { + while (true) { + var oldValue = Atomics.compareExchange(i32a, 0, 0, 10); + if (oldValue === 0) { + return; + } + } + } + else { + while (true) { + var oldValue = Atomics.compareExchange(i32a, 0, 0, 10); + if (oldValue === 0) { + return; + } + Atomics.wait(i32a, 0, 10); + } + } + }, + unlock: function () { + var i32a = new Int32Array(wasmMemory.buffer, index, 1); + var oldValue = Atomics.compareExchange(i32a, 0, 10, 0); + if (oldValue !== 10) { + throw new Error('Tried to unlock while not holding the mutex'); + } + Atomics.notify(i32a, 0, 1); + }, + execute: function (fn) { + mutex.lock(); + try { + return fn(); + } + finally { + mutex.unlock(); + } + } + }; + return mutex; + }, + getCond: function () { + var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.cond; + var mutex = emnapiAWMT.getMutex(); + var cond = { + wait: function () { + var i32a = new Int32Array(wasmMemory.buffer, index, 1); + var value = Atomics.load(i32a, 0); + mutex.unlock(); + Atomics.wait(i32a, 0, value); + mutex.lock(); + }, + signal: function () { + var i32a = new Int32Array(wasmMemory.buffer, index, 1); + Atomics.add(i32a, 0, 1); + Atomics.notify(i32a, 0, 1); + } + }; + return cond; + }, + queueInit: function (q) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(q, q, true); + HEAP_DATA_VIEW.setUint32(q + 4, q, true); + }, + queueInsertTail: function (h, q) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(q, h, true); + var tempValue = HEAP_DATA_VIEW.getUint32(h + 4, true); + HEAP_DATA_VIEW.setUint32(q + 4, tempValue, true); + var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true); + HEAP_DATA_VIEW.setUint32(qprev, q, true); + HEAP_DATA_VIEW.setUint32(h + 4, q, true); + }, + queueRemove: function (q) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true); + var qnext = HEAP_DATA_VIEW.getUint32(q, true); + HEAP_DATA_VIEW.setUint32(qprev, qnext, true); + HEAP_DATA_VIEW.setUint32(qnext + 4, qprev, true); + }, + queueEmpty: function (q) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + return q == HEAP_DATA_VIEW.getUint32(q, true); + }, + scheduleWork: function (work) { + var _a; + if (!((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready)) { + emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () { + emnapiAWMT.workerReady.ready = true; + }).catch(function (err) { + emnapiAWMT.workerReady = null; + throw err; + }); + } + emnapiCtx.increaseWaitingRequestCounter(); + var statusBuffer = new Int32Array(wasmMemory.buffer, work + emnapiAWMT.offset.status, 1); + Atomics.store(statusBuffer, 0, 0); + var mutex = emnapiAWMT.getMutex(); + var cond = emnapiAWMT.getCond(); + mutex.lock(); + try { + emnapiAWMT.queueInsertTail(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q, work + emnapiAWMT.offset.queue); + } + catch (err) { + emnapiCtx.decreaseWaitingRequestCounter(); + mutex.unlock(); + throw err; + } + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (HEAP_DATA_VIEW.getUint32(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads, true) > 0) { + cond.signal(); + } + mutex.unlock(); + }, + cancelWork: function (work) { + var cancelled = false; + emnapiAWMT.getMutex().execute(function () { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + cancelled = !emnapiAWMT.queueEmpty(work + emnapiAWMT.offset.queue) && HEAP_DATA_VIEW.getInt32(work + emnapiAWMT.offset.status, true) !== 2; + if (cancelled) { + emnapiAWMT.queueRemove(work + emnapiAWMT.offset.queue); + } + }); + if (!cancelled) { + return 9; + } + if (Atomics.compareExchange(new Int32Array(wasmMemory.buffer, work + emnapiAWMT.offset.status, 1), 0, 0, 1) !== 0) { + return 9; + } + emnapiCtx.feature.setImmediate(function () { + emnapiAWMT.callComplete(work, 11); + }); + return 0; + }, + callComplete: function (work, status) { + emnapiCtx.decreaseWaitingRequestCounter(); + var complete = emnapiAWMT.getComplete(work); + var env = emnapiAWMT.getEnv(work); + var data = emnapiAWMT.getData(work); + var envObject = emnapiCtx.envStore.get(env); + var scope = emnapiCtx.openScope(envObject); + var callback = function () { + if (!complete) + return; + envObject.callbackIntoModule(true, function () { + (wasmTable.get(complete))(env, status, data); + }); + }; + try { + if (emnapiNodeBinding) { + var resource = emnapiAWMT.getResource(work); + var resource_value = emnapiCtx.refStore.get(resource).get(); + var resourceObject = emnapiCtx.handleStore.get(resource_value).value; + var view = new DataView(wasmMemory.buffer); + var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true); + var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true); + emnapiNodeBinding.node.makeCallback(resourceObject, callback, [], { + asyncId: asyncId, + triggerAsyncId: triggerAsyncId + }); + } + else { + callback(); + } + } + finally { + emnapiCtx.closeScope(envObject, scope); + } + } + }; + emnapiAWMT.init(); + var napi_create_async_work = singleThreadAsyncWork + ? function (env, resource, resource_name, execute, complete, data, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!execute) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var resourceObject; + if (resource) { + resourceObject = Object(emnapiCtx.handleStore.get(resource).value); + } + else { + resourceObject = {}; + } + if (!resource_name) + return envObject.setLastError(1); + var resourceName = String(emnapiCtx.handleStore.get(resource_name).value); + var id = emnapiAWST.create(env, resourceObject, resourceName, execute, complete, data); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, id, true); + return envObject.clearLastError(); + } + : function (env, resource, resource_name, execute, complete, data, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!execute) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var resourceObject; + if (resource) { + resourceObject = Object(emnapiCtx.handleStore.get(resource).value); + } + else { + resourceObject = {}; + } + if (!resource_name) + return envObject.setLastError(1); + var sizeofAW = emnapiAWMT.offset.end; + var aw = _malloc(sizeofAW); + if (!aw) + return envObject.setLastError(9); + aw >>>= 0; + new Uint8Array(wasmMemory.buffer).subarray(aw, aw + sizeofAW).fill(0); + var s = envObject.ensureHandleId(resourceObject); + var resourceRef = emnapiCtx.createReference(envObject, s, 1, 1); + var resource_ = resourceRef.id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(aw, resource_, true); + _emnapi_node_emit_async_init(s, resource_name, -1, aw + emnapiAWMT.offset.async_id); + HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.env, env, true); + HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.execute, execute, true); + HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.complete, complete, true); + HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.data, data, true); + emnapiAWMT.queueInit(aw + emnapiAWMT.offset.queue); + result >>>= 0; + HEAP_DATA_VIEW.setUint32(result, aw, true); + return envObject.clearLastError(); + }; + var napi_delete_async_work = singleThreadAsyncWork + ? function (env, work) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!work) + return envObject.setLastError(1); + work >>>= 0; + emnapiAWST.remove(work); + return envObject.clearLastError(); + } + : function (env, work) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!work) + return envObject.setLastError(1); + work >>>= 0; + var resource = emnapiAWMT.getResource(work); + emnapiCtx.refStore.get(resource).dispose(); + if (emnapiNodeBinding) { + var view = new DataView(wasmMemory.buffer); + var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true); + var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true); + _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId); + } + _free(work); + return envObject.clearLastError(); + }; + var napi_queue_async_work = singleThreadAsyncWork + ? function (env, work) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + if (!work) + return envObject.setLastError(1); + work >>>= 0; + emnapiAWST.queue(work); + return envObject.clearLastError(); + } + : function (env, work) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + if (!work) + return envObject.setLastError(1); + work >>>= 0; + emnapiAWMT.scheduleWork(work); + return envObject.clearLastError(); + }; + var napi_cancel_async_work = singleThreadAsyncWork + ? function (env, work) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + if (!work) + return envObject.setLastError(1); + work >>>= 0; + var status = emnapiAWST.cancel(work); + if (status === 0) + return envObject.clearLastError(); + return envObject.setLastError(status); + } + : function (env, work) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + if (!work) + return envObject.setLastError(1); + work >>>= 0; + var status = emnapiAWMT.cancelWork(work); + if (status === 0) + return envObject.clearLastError(); + return envObject.setLastError(status); + }; + function _emnapi_async_worker(globalAddress) { + globalAddress >>>= 0; + emnapiAWMT.globalAddress = globalAddress; + var mutex = emnapiAWMT.getMutex(); + var cond = emnapiAWMT.getCond(); + mutex.lock(); + var exitMessageAddr = globalAddress + emnapiAWMT.globalOffset.exit_message; + var idleThreadsAddr = globalAddress + emnapiAWMT.globalOffset.idle_threads; + var workerQueueAddr = globalAddress + emnapiAWMT.globalOffset.q; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + for (;;) { + while (emnapiAWMT.queueEmpty(workerQueueAddr)) { + Atomics.add(new Int32Array(wasmMemory.buffer, idleThreadsAddr, 1), 0, 1); + cond.wait(); + Atomics.sub(new Int32Array(wasmMemory.buffer, idleThreadsAddr, 1), 0, 1); + } + var q = HEAP_DATA_VIEW.getUint32(workerQueueAddr, true); + if (q === exitMessageAddr) { + cond.signal(); + mutex.unlock(); + break; + } + var work = q - emnapiAWMT.offset.queue; + emnapiAWMT.queueRemove(q); + emnapiAWMT.queueInit(q); + mutex.unlock(); + var statusBuffer = new Int32Array(wasmMemory.buffer, work + emnapiAWMT.offset.status, 1); + if (Atomics.load(statusBuffer, 0) === 1) { + abort('unreachable'); + } + var execute = emnapiAWMT.getExecute(work); + var env = emnapiAWMT.getEnv(work); + var data = emnapiAWMT.getData(work); + (wasmTable.get(execute))(env, data); + Atomics.store(statusBuffer, 0, 2); + var postMessage_1 = napiModule.postMessage; + postMessage_1({ + __emnapi__: { + type: 'async-work-complete', + payload: { work: work } + } + }); + mutex.lock(); + } + return 0; + } + function _emnapi_spawn_worker(f, globalAddress) { + if (typeof onCreateWorker !== 'function') { + throw new TypeError('`options.onCreateWorker` is not a function'); + } + var promises = []; + var args = []; + if (!('emnapi_async_worker_create' in wasmInstance.exports)) { + throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags'); + } + args.push(wasmInstance.exports.emnapi_async_worker_create(0, 0)); + var handleError = function (e) { + if ('message' in e && (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1)) { + emnapiAWMT.terminateWorkers(); + } + }; + var ret; + try { + var worker_1 = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' }); + var p = PThread.loadWasmModuleToWorker(worker_1); + if (ENVIRONMENT_IS_NODE) { + worker_1.on('error', handleError); + } + else { + worker_1.addEventListener('error', handleError, false); + } + emnapiAWMT.addListener(worker_1); + emnapiTSFN.addListener(worker_1); + promises.push(p.then(function () { + if (typeof worker_1.unref === 'function') { + worker_1.unref(); + } + })); + ret = emnapiAWMT.pool.push(worker_1) - 1; + var arg = args[0]; + worker_1.threadBlockBase = arg; + worker_1.postMessage({ + __emnapi__: { + type: 'async-worker-init', + payload: { arg: arg, func: [f, globalAddress] } + } + }); + } + catch (err) { + var arg = args[0]; + _free(arg); + throw err; + } + return ret; + } + function initWorker(startArg, func) { + if (napiModule.childThread) { + if (typeof wasmInstance.exports.emnapi_async_worker_init !== 'function') { + throw new TypeError('`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags'); + } + wasmInstance.exports.emnapi_async_worker_init(startArg); + (wasmTable.get(func[0]))(func[1]); + } + else { + throw new Error('startThread is only available in child threads'); + } + } + napiModule.initWorker = initWorker; + var asyncWorkMod = Object.freeze({ + __proto__: null, + _emnapi_async_worker: _emnapi_async_worker, + _emnapi_spawn_worker: _emnapi_spawn_worker, + napi_cancel_async_work: napi_cancel_async_work, + napi_create_async_work: napi_create_async_work, + napi_delete_async_work: napi_delete_async_work, + napi_queue_async_work: napi_queue_async_work + }); + var emnapiExternalMemory = { + registry: typeof FinalizationRegistry === 'function' ? new FinalizationRegistry(function (_pointer) { _free(_pointer); }) : undefined, + table: new WeakMap(), + wasmMemoryViewTable: new WeakMap(), + init: function () { + emnapiExternalMemory.registry = typeof FinalizationRegistry === 'function' ? new FinalizationRegistry(function (_pointer) { _free(_pointer); }) : undefined; + emnapiExternalMemory.table = new WeakMap(); + emnapiExternalMemory.wasmMemoryViewTable = new WeakMap(); + }, + isSharedArrayBuffer: function (value) { + return ((typeof SharedArrayBuffer === 'function' && value instanceof SharedArrayBuffer) || + (Object.prototype.toString.call(value) === '[object SharedArrayBuffer]')); + }, + isDetachedArrayBuffer: function (arrayBuffer) { + if (arrayBuffer.byteLength === 0) { + try { + new Uint8Array(arrayBuffer); + } + catch (_) { + return true; + } + } + return false; + }, + getArrayBufferPointer: function (arrayBuffer, shouldCopy) { + var _a; + var info = { + address: 0, + ownership: 0, + runtimeAllocated: 0 + }; + if (arrayBuffer === wasmMemory.buffer) { + return info; + } + var isDetached = emnapiExternalMemory.isDetachedArrayBuffer(arrayBuffer); + if (emnapiExternalMemory.table.has(arrayBuffer)) { + var cachedInfo = emnapiExternalMemory.table.get(arrayBuffer); + if (isDetached) { + cachedInfo.address = 0; + return cachedInfo; + } + if (shouldCopy && cachedInfo.ownership === 0 && cachedInfo.runtimeAllocated === 1) { + new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), cachedInfo.address); + } + return cachedInfo; + } + if (isDetached || (arrayBuffer.byteLength === 0)) { + return info; + } + if (!shouldCopy) { + return info; + } + var pointer = _malloc(arrayBuffer.byteLength); + if (!pointer) + throw new Error('Out of memory'); + pointer >>>= 0; + new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), pointer); + info.address = pointer; + info.ownership = emnapiExternalMemory.registry ? 0 : 1; + info.runtimeAllocated = 1; + emnapiExternalMemory.table.set(arrayBuffer, info); + (_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(arrayBuffer, pointer); + return info; + }, + getOrUpdateMemoryView: function (view) { + if (view.buffer === wasmMemory.buffer) { + if (!emnapiExternalMemory.wasmMemoryViewTable.has(view)) { + emnapiExternalMemory.wasmMemoryViewTable.set(view, { + Ctor: view.constructor, + address: view.byteOffset, + length: view instanceof DataView ? view.byteLength : view.length, + ownership: 1, + runtimeAllocated: 0 + }); + } + return view; + } + var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) || emnapiExternalMemory.isSharedArrayBuffer(view.buffer); + if (maybeOldWasmMemory && emnapiExternalMemory.wasmMemoryViewTable.has(view)) { + var info = emnapiExternalMemory.wasmMemoryViewTable.get(view); + var Ctor = info.Ctor; + var newView = void 0; + var Buffer_1 = emnapiCtx.feature.Buffer; + if (typeof Buffer_1 === 'function' && Ctor === Buffer_1) { + newView = Buffer_1.from(wasmMemory.buffer, info.address, info.length); + } + else { + newView = new Ctor(wasmMemory.buffer, info.address, info.length); + } + emnapiExternalMemory.wasmMemoryViewTable.set(newView, info); + return newView; + } + return view; + }, + getViewPointer: function (view, shouldCopy) { + view = emnapiExternalMemory.getOrUpdateMemoryView(view); + if (view.buffer === wasmMemory.buffer) { + if (emnapiExternalMemory.wasmMemoryViewTable.has(view)) { + var _a = emnapiExternalMemory.wasmMemoryViewTable.get(view), address_1 = _a.address, ownership_1 = _a.ownership, runtimeAllocated_1 = _a.runtimeAllocated; + return { address: address_1, ownership: ownership_1, runtimeAllocated: runtimeAllocated_1, view: view }; + } + return { address: view.byteOffset, ownership: 1, runtimeAllocated: 0, view: view }; + } + var _b = emnapiExternalMemory.getArrayBufferPointer(view.buffer, shouldCopy), address = _b.address, ownership = _b.ownership, runtimeAllocated = _b.runtimeAllocated; + return { address: address === 0 ? 0 : (address + view.byteOffset), ownership: ownership, runtimeAllocated: runtimeAllocated, view: view }; + } + }; + var emnapiString = { + utf8Decoder: undefined, + utf16Decoder: undefined, + init: function () { + var fallbackDecoder = { + decode: function (bytes) { + var inputIndex = 0; + var pendingSize = Math.min(0x1000, bytes.length + 1); + var pending = new Uint16Array(pendingSize); + var chunks = []; + var pendingIndex = 0; + for (;;) { + var more = inputIndex < bytes.length; + if (!more || (pendingIndex >= pendingSize - 1)) { + var subarray = pending.subarray(0, pendingIndex); + var arraylike = subarray; + chunks.push(String.fromCharCode.apply(null, arraylike)); + if (!more) { + return chunks.join(''); + } + bytes = bytes.subarray(inputIndex); + inputIndex = 0; + pendingIndex = 0; + } + var byte1 = bytes[inputIndex++]; + if ((byte1 & 0x80) === 0) { + pending[pendingIndex++] = byte1; + } + else if ((byte1 & 0xe0) === 0xc0) { + var byte2 = bytes[inputIndex++] & 0x3f; + pending[pendingIndex++] = ((byte1 & 0x1f) << 6) | byte2; + } + else if ((byte1 & 0xf0) === 0xe0) { + var byte2 = bytes[inputIndex++] & 0x3f; + var byte3 = bytes[inputIndex++] & 0x3f; + pending[pendingIndex++] = ((byte1 & 0x1f) << 12) | (byte2 << 6) | byte3; + } + else if ((byte1 & 0xf8) === 0xf0) { + var byte2 = bytes[inputIndex++] & 0x3f; + var byte3 = bytes[inputIndex++] & 0x3f; + var byte4 = bytes[inputIndex++] & 0x3f; + var codepoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0c) | (byte3 << 0x06) | byte4; + if (codepoint > 0xffff) { + codepoint -= 0x10000; + pending[pendingIndex++] = (codepoint >>> 10) & 0x3ff | 0xd800; + codepoint = 0xdc00 | codepoint & 0x3ff; + } + pending[pendingIndex++] = codepoint; + } + else ; + } + } + }; + var utf8Decoder; + utf8Decoder = typeof TextDecoder === 'function' ? new TextDecoder() : fallbackDecoder; + emnapiString.utf8Decoder = utf8Decoder; + var fallbackDecoder2 = { + decode: function (input) { + var bytes = new Uint16Array(input.buffer, input.byteOffset, input.byteLength / 2); + if (bytes.length <= 0x1000) { + return String.fromCharCode.apply(null, bytes); + } + var chunks = []; + var i = 0; + var len = 0; + for (; i < bytes.length; i += len) { + len = Math.min(0x1000, bytes.length - i); + chunks.push(String.fromCharCode.apply(null, bytes.subarray(i, i + len))); + } + return chunks.join(''); + } + }; + var utf16Decoder; + utf16Decoder = typeof TextDecoder === 'function' ? new TextDecoder('utf-16le') : fallbackDecoder2; + emnapiString.utf16Decoder = utf16Decoder; + }, + lengthBytesUTF8: function (str) { + var c; + var len = 0; + for (var i = 0; i < str.length; ++i) { + c = str.charCodeAt(i); + if (c <= 0x7F) { + len++; + } + else if (c <= 0x7FF) { + len += 2; + } + else if (c >= 0xD800 && c <= 0xDFFF) { + len += 4; + ++i; + } + else { + len += 3; + } + } + return len; + }, + UTF8ToString: function (ptr, length) { + if (!ptr || !length) + return ''; + ptr >>>= 0; + var HEAPU8 = new Uint8Array(wasmMemory.buffer); + var end = ptr; + if (length === -1 || length === 4294967295) { + for (; HEAPU8[end];) + ++end; + } + else { + end = ptr + (length >>> 0); + } + length = end - ptr; + if (length <= 16) { + var idx = ptr; + var str = ''; + while (idx < end) { + var u0 = HEAPU8[idx++]; + if (!(u0 & 0x80)) { + str += String.fromCharCode(u0); + continue; + } + var u1 = HEAPU8[idx++] & 63; + if ((u0 & 0xE0) === 0xC0) { + str += String.fromCharCode(((u0 & 31) << 6) | u1); + continue; + } + var u2 = HEAPU8[idx++] & 63; + if ((u0 & 0xF0) === 0xE0) { + u0 = ((u0 & 15) << 12) | (u1 << 6) | u2; + } + else { + u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (HEAPU8[idx++] & 63); + } + if (u0 < 0x10000) { + str += String.fromCharCode(u0); + } + else { + var ch = u0 - 0x10000; + str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); + } + } + return str; + } + return emnapiString.utf8Decoder.decode(((typeof SharedArrayBuffer === "function" && HEAPU8.buffer instanceof SharedArrayBuffer) || (Object.prototype.toString.call(HEAPU8.buffer) === "[object SharedArrayBuffer]")) ? HEAPU8.slice(ptr, end) : HEAPU8.subarray(ptr, end)); + }, + stringToUTF8: function (str, outPtr, maxBytesToWrite) { + var HEAPU8 = new Uint8Array(wasmMemory.buffer); + var outIdx = outPtr; + outIdx >>>= 0; + if (!(maxBytesToWrite > 0)) { + return 0; + } + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 0xD800 && u <= 0xDFFF) { + var u1 = str.charCodeAt(++i); + u = 0x10000 + ((u & 0x3FF) << 10) | (u1 & 0x3FF); + } + if (u <= 0x7F) { + if (outIdx >= endIdx) + break; + HEAPU8[outIdx++] = u; + } + else if (u <= 0x7FF) { + if (outIdx + 1 >= endIdx) + break; + HEAPU8[outIdx++] = 0xC0 | (u >> 6); + HEAPU8[outIdx++] = 0x80 | (u & 63); + } + else if (u <= 0xFFFF) { + if (outIdx + 2 >= endIdx) + break; + HEAPU8[outIdx++] = 0xE0 | (u >> 12); + HEAPU8[outIdx++] = 0x80 | ((u >> 6) & 63); + HEAPU8[outIdx++] = 0x80 | (u & 63); + } + else { + if (outIdx + 3 >= endIdx) + break; + HEAPU8[outIdx++] = 0xF0 | (u >> 18); + HEAPU8[outIdx++] = 0x80 | ((u >> 12) & 63); + HEAPU8[outIdx++] = 0x80 | ((u >> 6) & 63); + HEAPU8[outIdx++] = 0x80 | (u & 63); + } + } + HEAPU8[outIdx] = 0; + return outIdx - startIdx; + }, + UTF16ToString: function (ptr, length) { + if (!ptr || !length) + return ''; + ptr >>>= 0; + var end = ptr; + if (length === -1 || length === 4294967295) { + var idx = end >>> 1; + var HEAPU16 = new Uint16Array(wasmMemory.buffer); + while (HEAPU16[idx]) + ++idx; + end = (idx << 1) >>> 0; + } + else { + end = ptr + (length >>> 0) * 2; + } + length = end - ptr; + if (length <= 32) { + return String.fromCharCode.apply(null, new Uint16Array(wasmMemory.buffer, ptr, length / 2)); + } + var HEAPU8 = new Uint8Array(wasmMemory.buffer); + return emnapiString.utf16Decoder.decode(((typeof SharedArrayBuffer === "function" && HEAPU8.buffer instanceof SharedArrayBuffer) || (Object.prototype.toString.call(HEAPU8.buffer) === "[object SharedArrayBuffer]")) ? HEAPU8.slice(ptr, end) : HEAPU8.subarray(ptr, end)); + }, + stringToUTF16: function (str, outPtr, maxBytesToWrite) { + if (maxBytesToWrite === undefined) { + maxBytesToWrite = 0x7FFFFFFF; + } + if (maxBytesToWrite < 2) + return 0; + maxBytesToWrite -= 2; + var startPtr = outPtr; + var numCharsToWrite = (maxBytesToWrite < str.length * 2) ? (maxBytesToWrite / 2) : str.length; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + for (var i = 0; i < numCharsToWrite; ++i) { + var codeUnit = str.charCodeAt(i); + HEAP_DATA_VIEW.setInt16(outPtr, codeUnit, true); + outPtr += 2; + } + HEAP_DATA_VIEW.setInt16(outPtr, 0, true); + return outPtr - startPtr; + }, + newString: function (env, str, length, result, stringMaker) { + length >>>= 0; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + var autoLength = length === -1 || length === 4294967295; + var sizelength = length >>> 0; + if (length !== 0) { + if (!str) + return envObject.setLastError(1); + } + if (!result) + return envObject.setLastError(1); + if (!(autoLength || (sizelength <= 2147483647))) + return envObject.setLastError(1); + str >>>= 0; + var strValue = stringMaker(str, autoLength, sizelength); + result >>>= 0; + var value = emnapiCtx.addToCurrentScope(strValue).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + }, + newExternalString: function (env, str, length, finalize_callback, finalize_hint, result, copied, createApi, stringMaker) { + length >>>= 0; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + var autoLength = length === -1 || length === 4294967295; + var sizelength = length >>> 0; + if (length !== 0) { + if (!str) + return envObject.setLastError(1); + } + if (!result) + return envObject.setLastError(1); + if (!(autoLength || (sizelength <= 2147483647))) + return envObject.setLastError(1); + var status = createApi(env, str, length, result); + if (status === 0) { + if (copied) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(copied, 1, true); + } + if (finalize_callback) { + envObject.callFinalizer(finalize_callback, str, finalize_hint); + } + } + return status; + } + }; + function napi_get_array_length(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + if (!handle.isArray()) { + return envObject.setLastError(8); + } + result >>>= 0; + var v = handle.value.length >>> 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_get_arraybuffer_info(env, arraybuffer, data, byte_length) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!arraybuffer) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(arraybuffer); + if (!handle.isArrayBuffer() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) { + return envObject.setLastError(1); + } + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (data) { + data >>>= 0; + var p = emnapiExternalMemory.getArrayBufferPointer(handle.value, true).address; + HEAP_DATA_VIEW.setUint32(data, p, true); + } + if (byte_length) { + byte_length >>>= 0; + HEAP_DATA_VIEW.setUint32(byte_length, handle.value.byteLength, true); + } + return envObject.clearLastError(); + } + function node_api_set_prototype(env, object, value) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1); + var obj = emnapiCtx.handleStore.get(object).value; + if (obj == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var type = typeof obj; + var v = void 0; + try { + v = (type === 'object' && obj !== null) || type === 'function' ? obj : Object(obj); + } + catch (_) { + return envObject.setLastError(2); + } + var val = emnapiCtx.handleStore.get(value).value; + Object.setPrototypeOf(v, val); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_get_prototype(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + if (handle.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var v = void 0; + try { + v = handle.isObject() || handle.isFunction() ? handle.value : Object(handle.value); + } + catch (_) { + return envObject.setLastError(2); + } + result >>>= 0; + var p = envObject.ensureHandleId(Object.getPrototypeOf(v)); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, p, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_get_typedarray_info(env, typedarray, type, length, data, arraybuffer, byte_offset) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!typedarray) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(typedarray); + if (!handle.isTypedArray()) { + return envObject.setLastError(1); + } + var v = handle.value; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (type) { + type >>>= 0; + var t = void 0; + if (v instanceof Int8Array) { + t = 0; + } + else if (v instanceof Uint8Array) { + t = 1; + } + else if (v instanceof Uint8ClampedArray) { + t = 2; + } + else if (v instanceof Int16Array) { + t = 3; + } + else if (v instanceof Uint16Array) { + t = 4; + } + else if (v instanceof Int32Array) { + t = 5; + } + else if (v instanceof Uint32Array) { + t = 6; + } + else if (typeof Float16Array === 'function' && v instanceof Float16Array) { + t = 11; + } + else if (v instanceof Float32Array) { + t = 7; + } + else if (v instanceof Float64Array) { + t = 8; + } + else if (v instanceof BigInt64Array) { + t = 9; + } + else if (v instanceof BigUint64Array) { + t = 10; + } + else { + return envObject.setLastError(9); + } + HEAP_DATA_VIEW.setInt32(type, t, true); + } + v = emnapiExternalMemory.getOrUpdateMemoryView(v); + if (length) { + length >>>= 0; + HEAP_DATA_VIEW.setUint32(length, v.length, true); + } + if (data || arraybuffer) { + if (data) { + data >>>= 0; + var p = emnapiExternalMemory.getViewPointer(v, true).address; + HEAP_DATA_VIEW.setUint32(data, p, true); + } + if (arraybuffer) { + arraybuffer >>>= 0; + var ab = envObject.ensureHandleId(v.buffer); + HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true); + } + } + if (byte_offset) { + byte_offset >>>= 0; + HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true); + } + return envObject.clearLastError(); + } + function napi_get_buffer_info(env, buffer, data, length) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!buffer) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(buffer); + if (!handle.isBuffer(emnapiCtx.feature.Buffer)) + return envObject.setLastError(1); + if (handle.isDataView()) { + return napi_get_dataview_info(env, buffer, length, data, 0, 0); + } + return napi_get_typedarray_info(env, buffer, 0, length, data, 0, 0); + } + function napi_get_dataview_info(env, dataview, byte_length, data, arraybuffer, byte_offset) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!dataview) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(dataview); + if (!handle.isDataView()) { + return envObject.setLastError(1); + } + var v = emnapiExternalMemory.getOrUpdateMemoryView(handle.value); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (byte_length) { + byte_length >>>= 0; + HEAP_DATA_VIEW.setUint32(byte_length, v.byteLength, true); + } + if (data || arraybuffer) { + if (data) { + data >>>= 0; + var p = emnapiExternalMemory.getViewPointer(v, true).address; + HEAP_DATA_VIEW.setUint32(data, p, true); + } + if (arraybuffer) { + arraybuffer >>>= 0; + var ab = envObject.ensureHandleId(v.buffer); + HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true); + } + } + if (byte_offset) { + byte_offset >>>= 0; + HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true); + } + return envObject.clearLastError(); + } + function napi_get_date_value(env, value, result) { + var v; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + if (!handle.isDate()) { + return envObject.setLastError(1); + } + result >>>= 0; + v = handle.value.valueOf(); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setFloat64(result, v, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_get_value_bool(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + if (typeof handle.value !== 'boolean') { + return envObject.setLastError(7); + } + result >>>= 0; + var r = handle.value ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + function napi_get_value_double(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + if (typeof handle.value !== 'number') { + return envObject.setLastError(6); + } + result >>>= 0; + var r = handle.value; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setFloat64(result, r, true); + return envObject.clearLastError(); + } + function napi_get_value_bigint_int64(env, value, result, lossless) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!emnapiCtx.feature.supportBigInt) { + return envObject.setLastError(9); + } + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + if (!lossless) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + var numberValue = handle.value; + if (typeof numberValue !== 'bigint') { + return envObject.setLastError(6); + } + lossless >>>= 0; + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if ((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63)))) { + HEAP_DATA_VIEW.setInt8(lossless, 1, true); + } + else { + HEAP_DATA_VIEW.setInt8(lossless, 0, true); + numberValue = numberValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); + if (numberValue >= (BigInt(1) << BigInt(63))) { + numberValue = numberValue - (BigInt(1) << BigInt(64)); + } + } + var low = Number(numberValue & BigInt(0xffffffff)); + var high = Number(numberValue >> BigInt(32)); + HEAP_DATA_VIEW.setInt32(result, low, true); + HEAP_DATA_VIEW.setInt32(result + 4, high, true); + return envObject.clearLastError(); + } + function napi_get_value_bigint_uint64(env, value, result, lossless) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!emnapiCtx.feature.supportBigInt) { + return envObject.setLastError(9); + } + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + if (!lossless) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + var numberValue = handle.value; + if (typeof numberValue !== 'bigint') { + return envObject.setLastError(6); + } + lossless >>>= 0; + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if ((numberValue >= BigInt(0)) && (numberValue < (BigInt(1) << BigInt(64)))) { + HEAP_DATA_VIEW.setInt8(lossless, 1, true); + } + else { + HEAP_DATA_VIEW.setInt8(lossless, 0, true); + numberValue = numberValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); + } + var low = Number(numberValue & BigInt(0xffffffff)); + var high = Number(numberValue >> BigInt(32)); + HEAP_DATA_VIEW.setUint32(result, low, true); + HEAP_DATA_VIEW.setUint32(result + 4, high, true); + return envObject.clearLastError(); + } + function napi_get_value_bigint_words(env, value, sign_bit, word_count, words) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!emnapiCtx.feature.supportBigInt) { + return envObject.setLastError(9); + } + if (!value) + return envObject.setLastError(1); + if (!word_count) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + if (!handle.isBigInt()) { + return envObject.setLastError(17); + } + var isMinus = handle.value < BigInt(0); + sign_bit >>>= 0; + words >>>= 0; + word_count >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + var word_count_int = HEAP_DATA_VIEW.getUint32(word_count, true); + word_count_int >>>= 0; + var wordCount = 0; + var bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value; + while (bigintValue !== BigInt(0)) { + wordCount++; + bigintValue = bigintValue >> BigInt(64); + } + bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value; + if (!sign_bit && !words) { + word_count_int = wordCount; + HEAP_DATA_VIEW.setUint32(word_count, word_count_int, true); + } + else { + if (!sign_bit) + return envObject.setLastError(1); + if (!words) + return envObject.setLastError(1); + var wordsArr = []; + while (bigintValue !== BigInt(0)) { + var uint64 = bigintValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); + wordsArr.push(uint64); + bigintValue = bigintValue >> BigInt(64); + } + var len = Math.min(word_count_int, wordsArr.length); + for (var i = 0; i < len; i++) { + var low = Number(wordsArr[i] & BigInt(0xffffffff)); + var high = Number(wordsArr[i] >> BigInt(32)); + HEAP_DATA_VIEW.setUint32(words + i * 8, low, true); + HEAP_DATA_VIEW.setUint32(words + (i * 8 + 4), high, true); + } + HEAP_DATA_VIEW.setInt32(sign_bit, isMinus ? 1 : 0, true); + HEAP_DATA_VIEW.setUint32(word_count, len, true); + } + return envObject.clearLastError(); + } + function napi_get_value_external(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + if (!handle.isExternal()) { + return envObject.setLastError(1); + } + result >>>= 0; + var p = handle.data(); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, p, true); + return envObject.clearLastError(); + } + function napi_get_value_int32(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + if (typeof handle.value !== 'number') { + return envObject.setLastError(6); + } + result >>>= 0; + var v = new Int32Array([handle.value])[0]; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt32(result, v, true); + return envObject.clearLastError(); + } + function napi_get_value_int64(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + if (typeof handle.value !== 'number') { + return envObject.setLastError(6); + } + var numberValue = handle.value; + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (numberValue === Number.POSITIVE_INFINITY || numberValue === Number.NEGATIVE_INFINITY || isNaN(numberValue)) { + HEAP_DATA_VIEW.setInt32(result, 0, true); + HEAP_DATA_VIEW.setInt32(result + 4, 0, true); + } + else if (numberValue < -9223372036854776e3) { + HEAP_DATA_VIEW.setInt32(result, 0, true); + HEAP_DATA_VIEW.setInt32(result + 4, 2147483648, true); + } + else if (numberValue >= 9223372036854776000) { + HEAP_DATA_VIEW.setUint32(result, 4294967295, true); + HEAP_DATA_VIEW.setUint32(result + 4, 2147483647, true); + } + else { + $emnapiSetValueI64(result, Math.trunc(numberValue)); + } + return envObject.clearLastError(); + } + function napi_get_value_string_latin1(env, value, buf, buf_size, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + result >>>= 0; + buf >>>= 0; + buf_size >>>= 0; + buf_size = buf_size >>> 0; + var handle = emnapiCtx.handleStore.get(value); + if (typeof handle.value !== 'string') { + return envObject.setLastError(3); + } + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (!buf) { + if (!result) + return envObject.setLastError(1); + HEAP_DATA_VIEW.setUint32(result, handle.value.length, true); + } + else if (buf_size !== 0) { + var copied = 0; + var v = void 0; + for (var i = 0; i < buf_size - 1; ++i) { + v = handle.value.charCodeAt(i) & 0xff; + HEAP_DATA_VIEW.setUint8(buf + i, v, true); + copied++; + } + HEAP_DATA_VIEW.setUint8(buf + copied, 0, true); + if (result) { + HEAP_DATA_VIEW.setUint32(result, copied, true); + } + } + else if (result) { + HEAP_DATA_VIEW.setUint32(result, 0, true); + } + return envObject.clearLastError(); + } + function napi_get_value_string_utf8(env, value, buf, buf_size, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + result >>>= 0; + buf >>>= 0; + buf_size >>>= 0; + buf_size = buf_size >>> 0; + var handle = emnapiCtx.handleStore.get(value); + if (typeof handle.value !== 'string') { + return envObject.setLastError(3); + } + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (!buf) { + if (!result) + return envObject.setLastError(1); + var strLength = emnapiString.lengthBytesUTF8(handle.value); + HEAP_DATA_VIEW.setUint32(result, strLength, true); + } + else if (buf_size !== 0) { + var copied = emnapiString.stringToUTF8(handle.value, buf, buf_size); + if (result) { + HEAP_DATA_VIEW.setUint32(result, copied, true); + } + } + else if (result) { + HEAP_DATA_VIEW.setUint32(result, 0, true); + } + return envObject.clearLastError(); + } + function napi_get_value_string_utf16(env, value, buf, buf_size, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + result >>>= 0; + buf >>>= 0; + buf_size >>>= 0; + buf_size = buf_size >>> 0; + var handle = emnapiCtx.handleStore.get(value); + if (typeof handle.value !== 'string') { + return envObject.setLastError(3); + } + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (!buf) { + if (!result) + return envObject.setLastError(1); + HEAP_DATA_VIEW.setUint32(result, handle.value.length, true); + } + else if (buf_size !== 0) { + var copied = emnapiString.stringToUTF16(handle.value, buf, buf_size * 2); + if (result) { + HEAP_DATA_VIEW.setUint32(result, copied / 2, true); + } + } + else if (result) { + HEAP_DATA_VIEW.setUint32(result, 0, true); + } + return envObject.clearLastError(); + } + function napi_get_value_uint32(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + if (typeof handle.value !== 'number') { + return envObject.setLastError(6); + } + result >>>= 0; + var v = new Uint32Array([handle.value])[0]; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.clearLastError(); + } + var convert2cMod = Object.freeze({ + __proto__: null, + napi_get_array_length: napi_get_array_length, + napi_get_arraybuffer_info: napi_get_arraybuffer_info, + napi_get_buffer_info: napi_get_buffer_info, + napi_get_dataview_info: napi_get_dataview_info, + napi_get_date_value: napi_get_date_value, + napi_get_prototype: napi_get_prototype, + napi_get_typedarray_info: napi_get_typedarray_info, + napi_get_value_bigint_int64: napi_get_value_bigint_int64, + napi_get_value_bigint_uint64: napi_get_value_bigint_uint64, + napi_get_value_bigint_words: napi_get_value_bigint_words, + napi_get_value_bool: napi_get_value_bool, + napi_get_value_double: napi_get_value_double, + napi_get_value_external: napi_get_value_external, + napi_get_value_int32: napi_get_value_int32, + napi_get_value_int64: napi_get_value_int64, + napi_get_value_string_latin1: napi_get_value_string_latin1, + napi_get_value_string_utf16: napi_get_value_string_utf16, + napi_get_value_string_utf8: napi_get_value_string_utf8, + napi_get_value_uint32: napi_get_value_uint32, + node_api_set_prototype: node_api_set_prototype + }); + function napi_create_int32(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + result >>>= 0; + var v = emnapiCtx.addToCurrentScope(value).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.clearLastError(); + } + function napi_create_uint32(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + result >>>= 0; + var v = emnapiCtx.addToCurrentScope(value >>> 0).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.clearLastError(); + } + function napi_create_int64(env, low, high, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + var value; + if (!high) + return envObject.setLastError(1); + value = Number(low); + var v1 = emnapiCtx.addToCurrentScope(value).id; + high >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(high, v1, true); + return envObject.clearLastError(); + } + function napi_create_double(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + result >>>= 0; + var v = emnapiCtx.addToCurrentScope(value).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.clearLastError(); + } + function napi_create_string_latin1(env, str, length, result) { + return emnapiString.newString(env, str, length, result, function (str, autoLength, sizeLength) { + var latin1String = ''; + var len = 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (autoLength) { + while (true) { + var ch = HEAP_DATA_VIEW.getUint8(str, true); + if (!ch) + break; + latin1String += String.fromCharCode(ch); + str++; + } + } + else { + while (len < sizeLength) { + var ch = HEAP_DATA_VIEW.getUint8(str, true); + if (!ch) + break; + latin1String += String.fromCharCode(ch); + len++; + str++; + } + } + return latin1String; + }); + } + function napi_create_string_utf16(env, str, length, result) { + return emnapiString.newString(env, str, length, result, function (str) { + return emnapiString.UTF16ToString(str, length); + }); + } + function napi_create_string_utf8(env, str, length, result) { + return emnapiString.newString(env, str, length, result, function (str) { + return emnapiString.UTF8ToString(str, length); + }); + } + function node_api_create_external_string_latin1(env, str, length, finalize_callback, finalize_hint, result, copied) { + return emnapiString.newExternalString(env, str, length, finalize_callback, finalize_hint, result, copied, napi_create_string_latin1, undefined); + } + function node_api_create_external_string_utf16(env, str, length, finalize_callback, finalize_hint, result, copied) { + return emnapiString.newExternalString(env, str, length, finalize_callback, finalize_hint, result, copied, napi_create_string_utf16, undefined); + } + function node_api_create_property_key_latin1(env, str, length, result) { + return napi_create_string_latin1(env, str, length, result); + } + function node_api_create_property_key_utf8(env, str, length, result) { + return napi_create_string_utf8(env, str, length, result); + } + function node_api_create_property_key_utf16(env, str, length, result) { + return napi_create_string_utf16(env, str, length, result); + } + function napi_create_bigint_int64(env, low, high, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!emnapiCtx.feature.supportBigInt) { + return envObject.setLastError(9); + } + var value; + if (!high) + return envObject.setLastError(1); + value = low; + var v1 = emnapiCtx.addToCurrentScope(value).id; + high >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(high, v1, true); + return envObject.clearLastError(); + } + function napi_create_bigint_uint64(env, low, high, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!emnapiCtx.feature.supportBigInt) { + return envObject.setLastError(9); + } + var value; + if (!high) + return envObject.setLastError(1); + value = low & ((BigInt(1) << BigInt(64)) - BigInt(1)); + var v1 = emnapiCtx.addToCurrentScope(value).id; + high >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(high, v1, true); + return envObject.clearLastError(); + } + function napi_create_bigint_words(env, sign_bit, word_count, words, result) { + var v, i; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!emnapiCtx.feature.supportBigInt) { + return envObject.setLastError(9); + } + if (!result) + return envObject.setLastError(1); + words >>>= 0; + word_count >>>= 0; + word_count = word_count >>> 0; + if (word_count > 2147483647) { + return envObject.setLastError(1); + } + if (word_count > (1024 * 1024 / (4 * 8) / 2)) { + throw new RangeError('Maximum BigInt size exceeded'); + } + var value = BigInt(0); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + for (i = 0; i < word_count; i++) { + var low = HEAP_DATA_VIEW.getUint32(words + i * 8, true); + var high = HEAP_DATA_VIEW.getUint32(words + (i * 8 + 4), true); + var wordi = BigInt(low) | (BigInt(high) << BigInt(32)); + value += wordi << BigInt(64 * i); + } + value *= ((BigInt(sign_bit) % BigInt(2) === BigInt(0)) ? BigInt(1) : BigInt(-1)); + result >>>= 0; + v = emnapiCtx.addToCurrentScope(value).id; + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + var convert2napiMod = Object.freeze({ + __proto__: null, + napi_create_bigint_int64: napi_create_bigint_int64, + napi_create_bigint_uint64: napi_create_bigint_uint64, + napi_create_bigint_words: napi_create_bigint_words, + napi_create_double: napi_create_double, + napi_create_int32: napi_create_int32, + napi_create_int64: napi_create_int64, + napi_create_string_latin1: napi_create_string_latin1, + napi_create_string_utf16: napi_create_string_utf16, + napi_create_string_utf8: napi_create_string_utf8, + napi_create_uint32: napi_create_uint32, + node_api_create_external_string_latin1: node_api_create_external_string_latin1, + node_api_create_external_string_utf16: node_api_create_external_string_utf16, + node_api_create_property_key_latin1: node_api_create_property_key_latin1, + node_api_create_property_key_utf16: node_api_create_property_key_utf16, + node_api_create_property_key_utf8: node_api_create_property_key_utf8 + }); + function emnapiCreateFunction(envObject, utf8name, length, cb, data) { + utf8name >>>= 0; + var functionName = (!utf8name || !length) ? '' : (emnapiString.UTF8ToString(utf8name, length)); + var f; + var napiCallback = (wasmTable.get(cb)); + var callback = function (envObject) { + return napiCallback(envObject.id, envObject.ctx.scopeStore.currentScope.id); + }; + var makeFunction = function (envObject, callback) { + return function () { + var scope = envObject.ctx.openScope(envObject); + var callbackInfo = scope.callbackInfo; + callbackInfo.data = data; + callbackInfo.args = arguments; + callbackInfo.thiz = this; + callbackInfo.fn = f; + try { + var napiValue = envObject.callIntoModule(callback); + return (!napiValue) ? undefined : envObject.ctx.handleStore.get(napiValue).value; + } + finally { + callbackInfo.data = 0; + callbackInfo.args = undefined; + callbackInfo.thiz = undefined; + callbackInfo.fn = undefined; + envObject.ctx.closeScope(envObject, scope); + } + }; + }; + if (functionName === '') { + f = makeFunction(envObject, callback); + return { status: 0, f: f }; + } + if (!(/^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(functionName))) { + return { status: 1, f: undefined }; + } + if (emnapiCtx.feature.supportNewFunction) { + var _ = makeFunction(envObject, callback); + try { + f = (new Function('_', 'return function ' + functionName + '(){' + + '"use strict";' + + 'return _.apply(this,arguments);' + + '};'))(_); + } + catch (_err) { + f = makeFunction(envObject, callback); + if (emnapiCtx.feature.canSetFunctionName) + Object.defineProperty(f, 'name', { value: functionName }); + } + } + else { + f = makeFunction(envObject, callback); + if (emnapiCtx.feature.canSetFunctionName) + Object.defineProperty(f, 'name', { value: functionName }); + } + return { status: 0, f: f }; + } + function emnapiDefineProperty(envObject, obj, propertyName, method, getter, setter, value, attributes, data) { + if (getter || setter) { + var localGetter = void 0; + var localSetter = void 0; + if (getter) { + localGetter = emnapiCreateFunction(envObject, 0, 0, getter, data).f; + } + if (setter) { + localSetter = emnapiCreateFunction(envObject, 0, 0, setter, data).f; + } + var desc = { + configurable: (attributes & 4) !== 0, + enumerable: (attributes & 2) !== 0, + get: localGetter, + set: localSetter + }; + Object.defineProperty(obj, propertyName, desc); + } + else if (method) { + var localMethod = emnapiCreateFunction(envObject, 0, 0, method, data).f; + var desc = { + configurable: (attributes & 4) !== 0, + enumerable: (attributes & 2) !== 0, + writable: (attributes & 1) !== 0, + value: localMethod + }; + Object.defineProperty(obj, propertyName, desc); + } + else { + var desc = { + configurable: (attributes & 4) !== 0, + enumerable: (attributes & 2) !== 0, + writable: (attributes & 1) !== 0, + value: emnapiCtx.handleStore.get(value).value + }; + Object.defineProperty(obj, propertyName, desc); + } + } + function emnapiGetHandle(js_object) { + var handle = emnapiCtx.handleStore.get(js_object); + if (!(handle.isObject() || handle.isFunction())) { + return { status: 1 }; + } + if (typeof emnapiExternalMemory !== 'undefined' && ArrayBuffer.isView(handle.value)) { + if (emnapiExternalMemory.wasmMemoryViewTable.has(handle.value)) { + handle = emnapiCtx.addToCurrentScope(emnapiExternalMemory.wasmMemoryViewTable.get(handle.value)); + } + } + return { status: 0, handle: handle }; + } + function emnapiWrap(env, js_object, native_object, finalize_cb, finalize_hint, result) { + var referenceId; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!emnapiCtx.feature.supportFinalizer) { + if (finalize_cb) { + throw emnapiCtx.createNotSupportWeakRefError('napi_wrap', 'Parameter "finalize_cb" must be 0(NULL)'); + } + if (result) { + throw emnapiCtx.createNotSupportWeakRefError('napi_wrap', 'Parameter "result" must be 0(NULL)'); + } + } + if (!js_object) + return envObject.setLastError(1); + var handleResult = emnapiGetHandle(js_object); + if (handleResult.status !== 0) { + return envObject.setLastError(handleResult.status); + } + var handle = handleResult.handle; + if (envObject.getObjectBinding(handle.value).wrapped !== 0) { + return envObject.setLastError(1); + } + var reference = void 0; + if (result) { + if (!finalize_cb) + return envObject.setLastError(1); + reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 1, finalize_cb, native_object, finalize_hint); + result >>>= 0; + referenceId = reference.id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, referenceId, true); + } + else { + if (finalize_cb) { + reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 0, finalize_cb, native_object, finalize_hint); + } + else { + reference = emnapiCtx.createReferenceWithData(envObject, handle.id, 0, 0, native_object); + } + } + envObject.getObjectBinding(handle.value).wrapped = reference.id; + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function emnapiUnwrap(env, js_object, result, action) { + var data; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!js_object) + return envObject.setLastError(1); + if (action === 0) { + if (!result) + return envObject.setLastError(1); + } + var value = emnapiCtx.handleStore.get(js_object); + if (!(value.isObject() || value.isFunction())) { + return envObject.setLastError(1); + } + var binding = envObject.getObjectBinding(value.value); + var referenceId = binding.wrapped; + var ref = emnapiCtx.refStore.get(referenceId); + if (!ref) + return envObject.setLastError(1); + if (result) { + result >>>= 0; + data = ref.data(); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, data, true); + } + if (action === 1) { + binding.wrapped = 0; + if (ref.ownership() === 1) { + ref.resetFinalizer(); + } + else { + ref.dispose(); + } + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_define_class(env, utf8name, length, constructor, callback_data, property_count, properties, result) { + var propPtr, valueHandleId, attributes; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1); + if (!constructor) + return envObject.setLastError(1); + length >>>= 0; + properties >>>= 0; + property_count >>>= 0; + property_count = property_count >>> 0; + if (property_count > 0) { + if (!properties) + return envObject.setLastError(1); + } + if (!((length >= -1 && length <= 2147483647) || length === 4294967295) || (!utf8name)) { + return envObject.setLastError(1); + } + var fresult = emnapiCreateFunction(envObject, utf8name, length, constructor, callback_data); + if (fresult.status !== 0) + return envObject.setLastError(fresult.status); + var F = fresult.f; + var propertyName = void 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + for (var i = 0; i < property_count; i++) { + propPtr = properties + (i * (4 * 8)); + var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true); + var name_1 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true); + var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true); + var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true); + var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true); + var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true); + attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true); + attributes >>>= 0; + var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true); + if (utf8Name) { + propertyName = emnapiString.UTF8ToString(utf8Name, -1); + } + else { + if (!name_1) { + return envObject.setLastError(4); + } + propertyName = emnapiCtx.handleStore.get(name_1).value; + if (typeof propertyName !== 'string' && typeof propertyName !== 'symbol') { + return envObject.setLastError(4); + } + } + if ((attributes & 1024) !== 0) { + emnapiDefineProperty(envObject, F, propertyName, method, getter, setter, value, attributes, data); + continue; + } + emnapiDefineProperty(envObject, F.prototype, propertyName, method, getter, setter, value, attributes, data); + } + var valueHandle = emnapiCtx.addToCurrentScope(F); + valueHandleId = valueHandle.id; + result >>>= 0; + HEAP_DATA_VIEW.setUint32(result, valueHandleId, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_wrap(env, js_object, native_object, finalize_cb, finalize_hint, result) { + return emnapiWrap(env, js_object, native_object, finalize_cb, finalize_hint, result); + } + function napi_unwrap(env, js_object, result) { + return emnapiUnwrap(env, js_object, result, 0); + } + function napi_remove_wrap(env, js_object, result) { + return emnapiUnwrap(env, js_object, result, 1); + } + function napi_type_tag_object(env, object, type_tag) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!object) { + return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1); + } + var value = emnapiCtx.handleStore.get(object); + if (!(value.isObject() || value.isFunction())) { + return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 2); + } + type_tag >>>= 0; + if (!type_tag) { + return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1); + } + var binding = envObject.getObjectBinding(value.value); + if (binding.tag !== null) { + return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1); + } + var tag = new Uint8Array(16); + tag.set(new Uint8Array(wasmMemory.buffer, type_tag, 16)); + binding.tag = new Uint32Array(tag.buffer); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_check_object_type_tag(env, object, type_tag, result) { + var ret = true; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!object) { + return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1); + } + var value = emnapiCtx.handleStore.get(object); + if (!(value.isObject() || value.isFunction())) { + return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 2); + } + if (!type_tag) { + return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1); + } + if (!result) { + return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1); + } + var binding = envObject.getObjectBinding(value.value); + if (binding.tag !== null) { + type_tag >>>= 0; + var tag = binding.tag; + var typeTag = new Uint32Array(wasmMemory.buffer, type_tag, 4); + ret = (tag[0] === typeTag[0] && + tag[1] === typeTag[1] && + tag[2] === typeTag[2] && + tag[3] === typeTag[3]); + } + else { + ret = false; + } + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, ret ? 1 : 0, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_add_finalizer(env, js_object, finalize_data, finalize_cb, finalize_hint, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!emnapiCtx.feature.supportFinalizer) { + return envObject.setLastError(9); + } + if (!js_object) + return envObject.setLastError(1); + if (!finalize_cb) + return envObject.setLastError(1); + var handleResult = emnapiGetHandle(js_object); + if (handleResult.status !== 0) { + return envObject.setLastError(handleResult.status); + } + var handle = handleResult.handle; + var ownership = !result ? 0 : 1; + finalize_data >>>= 0; + finalize_cb >>>= 0; + finalize_hint >>>= 0; + var reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, ownership, finalize_cb, finalize_data, finalize_hint); + if (result) { + result >>>= 0; + var referenceId = reference.id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, referenceId, true); + } + return envObject.clearLastError(); + } + function node_api_post_finalizer(env, finalize_cb, finalize_data, finalize_hint) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.enqueueFinalizer(emnapiCtx.createTrackedFinalizer(envObject, finalize_cb, finalize_data, finalize_hint)); + return envObject.clearLastError(); + } + var wrapMod = Object.freeze({ + __proto__: null, + napi_add_finalizer: napi_add_finalizer, + napi_check_object_type_tag: napi_check_object_type_tag, + napi_define_class: napi_define_class, + napi_remove_wrap: napi_remove_wrap, + napi_type_tag_object: napi_type_tag_object, + napi_unwrap: napi_unwrap, + napi_wrap: napi_wrap, + node_api_post_finalizer: node_api_post_finalizer + }); + function emnapi_create_memory_view(env, typedarray_type, external_data, byte_length, finalize_cb, finalize_hint, result) { + var value; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1); + byte_length >>>= 0; + external_data >>>= 0; + result >>>= 0; + byte_length = byte_length >>> 0; + if (!external_data) { + byte_length = 0; + } + if (byte_length > 2147483647) { + throw new RangeError('Cannot create a memory view larger than 2147483647 bytes'); + } + if ((external_data + byte_length) > wasmMemory.buffer.byteLength) { + throw new RangeError('Memory out of range'); + } + if (!emnapiCtx.feature.supportFinalizer && finalize_cb) { + throw emnapiCtx.createNotSupportWeakRefError('emnapi_create_memory_view', 'Parameter "finalize_cb" must be 0(NULL)'); + } + var viewDescriptor = void 0; + switch (typedarray_type) { + case 0: + viewDescriptor = { Ctor: Int8Array, address: external_data, length: byte_length, ownership: 1, runtimeAllocated: 0 }; + break; + case 1: + viewDescriptor = { Ctor: Uint8Array, address: external_data, length: byte_length, ownership: 1, runtimeAllocated: 0 }; + break; + case 2: + viewDescriptor = { Ctor: Uint8ClampedArray, address: external_data, length: byte_length, ownership: 1, runtimeAllocated: 0 }; + break; + case 3: + viewDescriptor = { Ctor: Int16Array, address: external_data, length: byte_length >> 1, ownership: 1, runtimeAllocated: 0 }; + break; + case 4: + viewDescriptor = { Ctor: Uint16Array, address: external_data, length: byte_length >> 1, ownership: 1, runtimeAllocated: 0 }; + break; + case 5: + viewDescriptor = { Ctor: Int32Array, address: external_data, length: byte_length >> 2, ownership: 1, runtimeAllocated: 0 }; + break; + case 6: + viewDescriptor = { Ctor: Uint32Array, address: external_data, length: byte_length >> 2, ownership: 1, runtimeAllocated: 0 }; + break; + case 7: + viewDescriptor = { Ctor: Float32Array, address: external_data, length: byte_length >> 2, ownership: 1, runtimeAllocated: 0 }; + break; + case 8: + viewDescriptor = { Ctor: Float64Array, address: external_data, length: byte_length >> 3, ownership: 1, runtimeAllocated: 0 }; + break; + case 9: + viewDescriptor = { Ctor: BigInt64Array, address: external_data, length: byte_length >> 3, ownership: 1, runtimeAllocated: 0 }; + break; + case 10: + viewDescriptor = { Ctor: BigUint64Array, address: external_data, length: byte_length >> 3, ownership: 1, runtimeAllocated: 0 }; + break; + case -1: + viewDescriptor = { Ctor: DataView, address: external_data, length: byte_length, ownership: 1, runtimeAllocated: 0 }; + break; + case 11: + if (typeof Float16Array !== 'function') { + return envObject.setLastError(1); + } + viewDescriptor = { Ctor: Float16Array, address: external_data, length: byte_length >> 1, ownership: 1, runtimeAllocated: 0 }; + break; + case -2: { + if (!emnapiCtx.feature.Buffer) { + throw emnapiCtx.createNotSupportBufferError('emnapi_create_memory_view', ''); + } + viewDescriptor = { Ctor: emnapiCtx.feature.Buffer, address: external_data, length: byte_length, ownership: 1, runtimeAllocated: 0 }; + break; + } + default: return envObject.setLastError(1); + } + var Ctor = viewDescriptor.Ctor; + var typedArray = typedarray_type === -2 + ? emnapiCtx.feature.Buffer.from(wasmMemory.buffer, viewDescriptor.address, viewDescriptor.length) + : new Ctor(wasmMemory.buffer, viewDescriptor.address, viewDescriptor.length); + var handle = emnapiCtx.addToCurrentScope(typedArray); + emnapiExternalMemory.wasmMemoryViewTable.set(typedArray, viewDescriptor); + if (finalize_cb) { + var status_1 = napi_add_finalizer(env, handle.id, external_data, finalize_cb, finalize_hint, 0); + if (status_1 === 10) { + var err = envObject.tryCatch.extractException(); + envObject.clearLastError(); + throw err; + } + else if (status_1 !== 0) { + return envObject.setLastError(status_1); + } + } + value = handle.id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function emnapi_is_support_weakref() { + return emnapiCtx.feature.supportFinalizer ? 1 : 0; + } + function emnapi_is_support_bigint() { + return emnapiCtx.feature.supportBigInt ? 1 : 0; + } + function emnapi_is_node_binding_available() { + return emnapiNodeBinding ? 1 : 0; + } + function $emnapiSyncMemory(js_to_wasm, arrayBufferOrView, offset, len) { + offset = offset !== null && offset !== void 0 ? offset : 0; + offset = offset >>> 0; + var view; + if (arrayBufferOrView instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) { + var pointer = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false).address; + if (!pointer) + throw new Error('Unknown ArrayBuffer address'); + if (typeof len !== 'number' || len === -1 || len === 4294967295) { + len = arrayBufferOrView.byteLength - offset; + } + len = len >>> 0; + if (len === 0) + return arrayBufferOrView; + view = new Uint8Array(arrayBufferOrView, offset, len); + var wasmMemoryU8 = new Uint8Array(wasmMemory.buffer); + if (!js_to_wasm) { + view.set(wasmMemoryU8.subarray(pointer, pointer + len)); + } + else { + wasmMemoryU8.set(view, pointer); + } + return arrayBufferOrView; + } + if (ArrayBuffer.isView(arrayBufferOrView)) { + var viewPointerInfo = emnapiExternalMemory.getViewPointer(arrayBufferOrView, false); + var latestView = viewPointerInfo.view; + var pointer = viewPointerInfo.address; + if (!pointer) + throw new Error('Unknown ArrayBuffer address'); + if (typeof len !== 'number' || len === -1 || len === 4294967295) { + len = latestView.byteLength - offset; + } + len = len >>> 0; + if (len === 0) + return latestView; + view = new Uint8Array(latestView.buffer, latestView.byteOffset + offset, len); + var wasmMemoryU8 = new Uint8Array(wasmMemory.buffer); + if (!js_to_wasm) { + view.set(wasmMemoryU8.subarray(pointer, pointer + len)); + } + else { + wasmMemoryU8.set(view, pointer); + } + return latestView; + } + throw new TypeError('emnapiSyncMemory expect ArrayBuffer or ArrayBufferView as first parameter'); + } + function emnapi_sync_memory(env, js_to_wasm, arraybuffer_or_view, offset, len) { + var v; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!arraybuffer_or_view) + return envObject.setLastError(1); + arraybuffer_or_view >>>= 0; + offset >>>= 0; + len >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + var handleId = HEAP_DATA_VIEW.getUint32(arraybuffer_or_view, true); + var handle = envObject.ctx.handleStore.get(handleId); + if (!handle.isArrayBuffer() && !handle.isTypedArray() && !handle.isDataView() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) { + return envObject.setLastError(1); + } + var ret = $emnapiSyncMemory(Boolean(js_to_wasm), handle.value, offset, len); + if (handle.value !== ret) { + arraybuffer_or_view >>>= 0; + v = envObject.ensureHandleId(ret); + HEAP_DATA_VIEW.setUint32(arraybuffer_or_view, v, true); + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function $emnapiGetMemoryAddress(arrayBufferOrView) { + var isArrayBuffer = arrayBufferOrView instanceof ArrayBuffer; + var isDataView = arrayBufferOrView instanceof DataView; + var isTypedArray = ArrayBuffer.isView(arrayBufferOrView) && !isDataView; + if (!isArrayBuffer && !isTypedArray && !isDataView && !emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) { + throw new TypeError('emnapiGetMemoryAddress expect ArrayBuffer or ArrayBufferView as first parameter'); + } + var info; + if (isArrayBuffer) { + info = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false); + } + else { + info = emnapiExternalMemory.getViewPointer(arrayBufferOrView, false); + } + return { + address: info.address, + ownership: info.ownership, + runtimeAllocated: info.runtimeAllocated + }; + } + function emnapi_get_memory_address(env, arraybuffer_or_view, address, ownership, runtime_allocated) { + var p, runtimeAllocated, ownershipOut; + var info; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!arraybuffer_or_view) + return envObject.setLastError(1); + if (!address && !ownership && !runtime_allocated) { + return envObject.setLastError(1); + } + var handle = envObject.ctx.handleStore.get(arraybuffer_or_view); + info = $emnapiGetMemoryAddress(handle.value); + p = info.address; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (address) { + address >>>= 0; + HEAP_DATA_VIEW.setUint32(address, p, true); + } + if (ownership) { + ownership >>>= 0; + ownershipOut = info.ownership; + HEAP_DATA_VIEW.setInt32(ownership, ownershipOut, true); + } + if (runtime_allocated) { + runtime_allocated >>>= 0; + runtimeAllocated = info.runtimeAllocated; + HEAP_DATA_VIEW.setInt8(runtime_allocated, runtimeAllocated, true); + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function emnapi_get_runtime_version(env, version) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + if (!version) + return envObject.setLastError(1); + var runtimeVersion; + try { + runtimeVersion = emnapiCtx.getRuntimeVersions().version; + } + catch (_) { + return envObject.setLastError(9); + } + var versions = runtimeVersion.split('.') + .map(function (n) { return Number(n); }); + version >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(version, versions[0], true); + HEAP_DATA_VIEW.setUint32(version + 4, versions[1], true); + HEAP_DATA_VIEW.setUint32(version + 8, versions[2], true); + return envObject.clearLastError(); + } + var emnapiMod = Object.freeze({ + __proto__: null, + $emnapiGetMemoryAddress: $emnapiGetMemoryAddress, + $emnapiSyncMemory: $emnapiSyncMemory, + emnapi_create_memory_view: emnapi_create_memory_view, + emnapi_get_memory_address: emnapi_get_memory_address, + emnapi_get_runtime_version: emnapi_get_runtime_version, + emnapi_is_node_binding_available: emnapi_is_node_binding_available, + emnapi_is_support_bigint: emnapi_is_support_bigint, + emnapi_is_support_weakref: emnapi_is_support_weakref, + emnapi_sync_memory: emnapi_sync_memory + }); + function napi_create_array(env, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + result >>>= 0; + var value = emnapiCtx.addToCurrentScope([]).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + function napi_create_array_with_length(env, length, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + length >>>= 0; + result >>>= 0; + length = length >>> 0; + var value = emnapiCtx.addToCurrentScope(new Array(length)).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + function emnapiCreateArrayBuffer(byte_length, data, shared) { + byte_length >>>= 0; + byte_length = byte_length >>> 0; + var arrayBuffer = shared ? new SharedArrayBuffer(byte_length) : new ArrayBuffer(byte_length); + if (data) { + data >>>= 0; + var p = emnapiExternalMemory.getArrayBufferPointer(arrayBuffer, true).address; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(data, p, true); + } + return arrayBuffer; + } + function napi_create_arraybuffer(env, byte_length, data, result) { + var value; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1); + result >>>= 0; + var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, false); + value = emnapiCtx.addToCurrentScope(arrayBuffer).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function node_api_create_sharedarraybuffer(env, byte_length, data, result) { + var value; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1); + result >>>= 0; + var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, true); + value = emnapiCtx.addToCurrentScope(arrayBuffer).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_create_date(env, time, result) { + var value; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1); + result >>>= 0; + value = emnapiCtx.addToCurrentScope(new Date(time)).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_create_external(env, data, finalize_cb, finalize_hint, result) { + var value; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1); + if (!emnapiCtx.feature.supportFinalizer && finalize_cb) { + throw emnapiCtx.createNotSupportWeakRefError('napi_create_external', 'Parameter "finalize_cb" must be 0(NULL)'); + } + var externalHandle = emnapiCtx.getCurrentScope().addExternal(data); + if (finalize_cb) { + emnapiCtx.createReferenceWithFinalizer(envObject, externalHandle.id, 0, 0, finalize_cb, data, finalize_hint); + } + result >>>= 0; + value = externalHandle.id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_create_external_arraybuffer(env, external_data, byte_length, finalize_cb, finalize_hint, result) { + var value; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1); + byte_length >>>= 0; + external_data >>>= 0; + result >>>= 0; + byte_length = byte_length >>> 0; + if (!external_data) { + byte_length = 0; + } + if ((external_data + byte_length) > wasmMemory.buffer.byteLength) { + throw new RangeError('Memory out of range'); + } + if (!emnapiCtx.feature.supportFinalizer && finalize_cb) { + throw emnapiCtx.createNotSupportWeakRefError('napi_create_external_arraybuffer', 'Parameter "finalize_cb" must be 0(NULL)'); + } + var arrayBuffer = new ArrayBuffer(byte_length); + if (byte_length === 0) { + try { + var MessageChannel_1 = emnapiCtx.feature.MessageChannel; + var messageChannel = new MessageChannel_1(); + messageChannel.port1.postMessage(arrayBuffer, [arrayBuffer]); + } + catch (_) { } + } + else { + var u8arr = new Uint8Array(arrayBuffer); + u8arr.set(new Uint8Array(wasmMemory.buffer).subarray(external_data, external_data + byte_length)); + emnapiExternalMemory.table.set(arrayBuffer, { + address: external_data, + ownership: 1, + runtimeAllocated: 0 + }); + } + var handle = emnapiCtx.addToCurrentScope(arrayBuffer); + if (finalize_cb) { + var status_1 = napi_add_finalizer(env, handle.id, external_data, finalize_cb, finalize_hint, 0); + if (status_1 === 10) { + var err = envObject.tryCatch.extractException(); + envObject.clearLastError(); + throw err; + } + else if (status_1 !== 0) { + return envObject.setLastError(status_1); + } + } + value = handle.id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_create_object(env, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + result >>>= 0; + var value = emnapiCtx.addToCurrentScope({}).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + function node_api_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + property_count >>>= 0; + property_count = property_count >>> 0; + if (property_count > 0) { + if (!property_names) + return envObject.setLastError(1); + if (!property_values) + return envObject.setLastError(1); + } + var v8_prototype_or_null = prototype_or_null + ? emnapiCtx.handleStore.get(prototype_or_null).value + : null; + var properties = {}; + property_names >>>= 0; + property_values >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + for (var i = 0; i < property_count; i++) { + var name_value = emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_names + i * 4, true)).value; + if (!(typeof name_value === "string" || typeof name_value === "symbol")) + return envObject.setLastError(4); + properties[name_value] = { + value: emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_values + i * 4, true)).value, + writable: true, + enumerable: true, + configurable: true + }; + } + var obj; + try { + obj = Object.defineProperties(Object.create(v8_prototype_or_null), properties); + } + catch (_) { + return envObject.setLastError(9); + } + var value = emnapiCtx.addToCurrentScope(obj).id; + result >>>= 0; + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + function napi_create_symbol(env, description, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (!description) { + var value = emnapiCtx.addToCurrentScope(Symbol()).id; + HEAP_DATA_VIEW.setUint32(result, value, true); + } + else { + var handle = emnapiCtx.handleStore.get(description); + var desc = handle.value; + if (typeof desc !== 'string') { + return envObject.setLastError(3); + } + var v = emnapiCtx.addToCurrentScope(Symbol(desc)).id; + HEAP_DATA_VIEW.setUint32(result, v, true); + } + return envObject.clearLastError(); + } + function napi_create_typedarray(env, type, length, arraybuffer, byte_offset, result) { + var value; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!arraybuffer) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(arraybuffer); + if (!handle.isArrayBuffer()) { + return envObject.setLastError(1); + } + var buffer = handle.value; + byte_offset >>>= 0; + length >>>= 0; + var createTypedArray = function (envObject, Type, size_of_element, buffer, byte_offset, length) { + var _a; + byte_offset = byte_offset >>> 0; + length = length >>> 0; + if (size_of_element > 1) { + if ((byte_offset) % (size_of_element) !== 0) { + var err = new RangeError("start offset of ".concat((_a = Type.name) !== null && _a !== void 0 ? _a : '', " should be a multiple of ").concat(size_of_element)); + err.code = 'ERR_NAPI_INVALID_TYPEDARRAY_ALIGNMENT'; + envObject.tryCatch.setError(err); + return envObject.setLastError(9); + } + } + if (((length * size_of_element) + byte_offset) > buffer.byteLength) { + var err = new RangeError('Invalid typed array length'); + err.code = 'ERR_NAPI_INVALID_TYPEDARRAY_LENGTH'; + envObject.tryCatch.setError(err); + return envObject.setLastError(9); + } + var out = new Type(buffer, byte_offset, length); + if (buffer === wasmMemory.buffer) { + if (!emnapiExternalMemory.wasmMemoryViewTable.has(out)) { + emnapiExternalMemory.wasmMemoryViewTable.set(out, { + Ctor: Type, + address: byte_offset, + length: length, + ownership: 1, + runtimeAllocated: 0 + }); + } + } + result >>>= 0; + value = emnapiCtx.addToCurrentScope(out).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + }; + switch (type) { + case 0: + return createTypedArray(envObject, Int8Array, 1, buffer, byte_offset, length); + case 1: + return createTypedArray(envObject, Uint8Array, 1, buffer, byte_offset, length); + case 2: + return createTypedArray(envObject, Uint8ClampedArray, 1, buffer, byte_offset, length); + case 3: + return createTypedArray(envObject, Int16Array, 2, buffer, byte_offset, length); + case 4: + return createTypedArray(envObject, Uint16Array, 2, buffer, byte_offset, length); + case 5: + return createTypedArray(envObject, Int32Array, 4, buffer, byte_offset, length); + case 6: + return createTypedArray(envObject, Uint32Array, 4, buffer, byte_offset, length); + case 7: + return createTypedArray(envObject, Float32Array, 4, buffer, byte_offset, length); + case 8: + return createTypedArray(envObject, Float64Array, 8, buffer, byte_offset, length); + case 9: + return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length); + case 10: + return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length); + case 11: + if (typeof Float16Array !== 'function') { + return envObject.setLastError(1); + } + return createTypedArray(envObject, Float16Array, 2, buffer, byte_offset, length); + default: + return envObject.setLastError(1); + } + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_create_buffer(env, size, data, result) { + var _a; + var value, pointer; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1); + var Buffer = emnapiCtx.feature.Buffer; + if (!Buffer) { + throw emnapiCtx.createNotSupportBufferError('napi_create_buffer', ''); + } + result >>>= 0; + var buffer = void 0; + size >>>= 0; + size = size >>> 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (!data || (size === 0)) { + buffer = Buffer.alloc(size); + value = emnapiCtx.addToCurrentScope(buffer).id; + HEAP_DATA_VIEW.setUint32(result, value, true); + } + else { + pointer = _malloc(size); + if (!pointer) + throw new Error('Out of memory'); + pointer >>>= 0; + new Uint8Array(wasmMemory.buffer).subarray(pointer, pointer + size).fill(0); + var buffer_1 = Buffer.from(wasmMemory.buffer, pointer, size); + var viewDescriptor = { + Ctor: Buffer, + address: pointer, + length: size, + ownership: emnapiExternalMemory.registry ? 0 : 1, + runtimeAllocated: 1 + }; + emnapiExternalMemory.wasmMemoryViewTable.set(buffer_1, viewDescriptor); + (_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(viewDescriptor, pointer); + value = emnapiCtx.addToCurrentScope(buffer_1).id; + HEAP_DATA_VIEW.setUint32(result, value, true); + data >>>= 0; + HEAP_DATA_VIEW.setUint32(data, pointer, true); + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_create_buffer_copy(env, length, data, result_data, result) { + var value; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1); + var Buffer = emnapiCtx.feature.Buffer; + if (!Buffer) { + throw emnapiCtx.createNotSupportBufferError('napi_create_buffer_copy', ''); + } + var arrayBuffer = emnapiCreateArrayBuffer(length, result_data, false); + var buffer = Buffer.from(arrayBuffer); + data >>>= 0; + length >>>= 0; + buffer.set(new Uint8Array(wasmMemory.buffer).subarray(data, data + length)); + value = emnapiCtx.addToCurrentScope(buffer).id; + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_create_external_buffer(env, length, data, finalize_cb, finalize_hint, result) { + return emnapi_create_memory_view(env, -2, data, length, finalize_cb, finalize_hint, result); + } + function node_api_create_buffer_from_arraybuffer(env, arraybuffer, byte_offset, byte_length, result) { + var value; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!arraybuffer) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + byte_offset >>>= 0; + byte_length >>>= 0; + byte_offset = byte_offset >>> 0; + byte_length = byte_length >>> 0; + var handle = emnapiCtx.handleStore.get(arraybuffer); + if (!handle.isArrayBuffer()) { + return envObject.setLastError(1); + } + var buffer = handle.value; + if ((byte_length + byte_offset) > buffer.byteLength) { + var err = new RangeError('The byte offset + length is out of range'); + err.code = 'ERR_OUT_OF_RANGE'; + throw err; + } + var Buffer = emnapiCtx.feature.Buffer; + if (!Buffer) { + throw emnapiCtx.createNotSupportBufferError('node_api_create_buffer_from_arraybuffer', ''); + } + var out = Buffer.from(buffer, byte_offset, byte_length); + if (buffer === wasmMemory.buffer) { + if (!emnapiExternalMemory.wasmMemoryViewTable.has(out)) { + emnapiExternalMemory.wasmMemoryViewTable.set(out, { + Ctor: Buffer, + address: byte_offset, + length: byte_length, + ownership: 1, + runtimeAllocated: 0 + }); + } + } + result >>>= 0; + value = emnapiCtx.addToCurrentScope(out).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_create_dataview(env, byte_length, arraybuffer, byte_offset, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!arraybuffer) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + byte_length >>>= 0; + byte_offset >>>= 0; + byte_length = byte_length >>> 0; + byte_offset = byte_offset >>> 0; + var value = emnapiCtx.handleStore.get(arraybuffer).value; + var createDataview = function (buffer) { + if ((byte_length + byte_offset) > buffer.byteLength) { + var err = new RangeError('byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in'); + err.code = 'ERR_NAPI_INVALID_DATAVIEW_ARGS'; + throw err; + } + var dataview = new DataView(buffer, byte_offset, byte_length); + if (buffer === wasmMemory.buffer) { + if (!emnapiExternalMemory.wasmMemoryViewTable.has(dataview)) { + emnapiExternalMemory.wasmMemoryViewTable.set(dataview, { + Ctor: DataView, + address: byte_offset, + length: byte_length, + ownership: 1, + runtimeAllocated: 0 + }); + } + } + result >>>= 0; + var v = emnapiCtx.addToCurrentScope(dataview).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.getReturnStatus(); + }; + if (value instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(value)) { + return createDataview(value); + } + else { + return envObject.setLastError(1); + } + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function node_api_symbol_for(env, utf8description, length, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + length >>>= 0; + utf8description >>>= 0; + result >>>= 0; + var autoLength = length === -1 || length === 4294967295; + var sizelength = length >>> 0; + if (length !== 0) { + if (!utf8description) + return envObject.setLastError(1); + } + if (!(autoLength || (sizelength <= 2147483647))) { + return envObject.setLastError(1); + } + var descriptionString = emnapiString.UTF8ToString(utf8description, length); + var value = emnapiCtx.addToCurrentScope(Symbol.for(descriptionString)).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + var createMod = Object.freeze({ + __proto__: null, + napi_create_array: napi_create_array, + napi_create_array_with_length: napi_create_array_with_length, + napi_create_arraybuffer: napi_create_arraybuffer, + napi_create_buffer: napi_create_buffer, + napi_create_buffer_copy: napi_create_buffer_copy, + napi_create_dataview: napi_create_dataview, + napi_create_date: napi_create_date, + napi_create_external: napi_create_external, + napi_create_external_arraybuffer: napi_create_external_arraybuffer, + napi_create_external_buffer: napi_create_external_buffer, + napi_create_object: napi_create_object, + napi_create_symbol: napi_create_symbol, + napi_create_typedarray: napi_create_typedarray, + node_api_create_buffer_from_arraybuffer: node_api_create_buffer_from_arraybuffer, + node_api_create_object_with_properties: node_api_create_object_with_properties, + node_api_create_sharedarraybuffer: node_api_create_sharedarraybuffer, + node_api_symbol_for: node_api_symbol_for + }); + function napi_get_boolean(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + result >>>= 0; + var v = value === 0 ? 3 : 4; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.clearLastError(); + } + function napi_get_global(env, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + result >>>= 0; + var value = 5; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + function napi_get_null(env, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + result >>>= 0; + var value = 2; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + function napi_get_undefined(env, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + result >>>= 0; + var value = 1; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + var globalMod = Object.freeze({ + __proto__: null, + napi_get_boolean: napi_get_boolean, + napi_get_global: napi_get_global, + napi_get_null: napi_get_null, + napi_get_undefined: napi_get_undefined + }); + function napi_set_instance_data(env, data, finalize_cb, finalize_hint) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + data >>>= 0; + finalize_cb >>>= 0; + finalize_hint >>>= 0; + envObject.setInstanceData(data, finalize_cb, finalize_hint); + return envObject.clearLastError(); + } + function napi_get_instance_data(env, data) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + if (!data) + return envObject.setLastError(1); + data >>>= 0; + var value = envObject.getInstanceData(); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(data, value, true); + return envObject.clearLastError(); + } + var envMod = Object.freeze({ + __proto__: null, + napi_get_instance_data: napi_get_instance_data, + napi_set_instance_data: napi_set_instance_data + }); + function _emnapi_get_last_error_info(env, error_code, engine_error_code, engine_reserved) { + error_code >>>= 0; + engine_error_code >>>= 0; + engine_reserved >>>= 0; + var envObject = emnapiCtx.envStore.get(env); + var lastError = envObject.lastError; + var errorCode = lastError.errorCode; + var engineErrorCode = lastError.engineErrorCode >>> 0; + var engineReserved = lastError.engineReserved; + engineReserved >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt32(error_code, errorCode, true); + HEAP_DATA_VIEW.setUint32(engine_error_code, engineErrorCode, true); + HEAP_DATA_VIEW.setUint32(engine_reserved, engineReserved, true); + } + function napi_throw(env, error) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!error) + return envObject.setLastError(1); + envObject.tryCatch.setError(emnapiCtx.handleStore.get(error).value); + return envObject.clearLastError(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_throw_error(env, code, msg) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!msg) + return envObject.setLastError(1); + code >>>= 0; + msg >>>= 0; + var error = new Error(emnapiString.UTF8ToString(msg, -1)); + if (code) + error.code = emnapiString.UTF8ToString(code, -1); + envObject.tryCatch.setError(error); + return envObject.clearLastError(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_throw_type_error(env, code, msg) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!msg) + return envObject.setLastError(1); + code >>>= 0; + msg >>>= 0; + var error = new TypeError(emnapiString.UTF8ToString(msg, -1)); + if (code) + error.code = emnapiString.UTF8ToString(code, -1); + envObject.tryCatch.setError(error); + return envObject.clearLastError(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_throw_range_error(env, code, msg) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!msg) + return envObject.setLastError(1); + code >>>= 0; + msg >>>= 0; + var error = new RangeError(emnapiString.UTF8ToString(msg, -1)); + if (code) + error.code = emnapiString.UTF8ToString(code, -1); + envObject.tryCatch.setError(error); + return envObject.clearLastError(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function node_api_throw_syntax_error(env, code, msg) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!msg) + return envObject.setLastError(1); + code >>>= 0; + msg >>>= 0; + var error = new SyntaxError(emnapiString.UTF8ToString(msg, -1)); + if (code) + error.code = emnapiString.UTF8ToString(code, -1); + envObject.tryCatch.setError(error); + return envObject.clearLastError(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_is_exception_pending(env, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + var r = envObject.tryCatch.hasCaught(); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); + return envObject.clearLastError(); + } + function napi_create_error(env, code, msg, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!msg) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var msgValue = emnapiCtx.handleStore.get(msg).value; + if (typeof msgValue !== 'string') { + return envObject.setLastError(3); + } + var error = new Error(msgValue); + if (code) { + var codeValue = emnapiCtx.handleStore.get(code).value; + if (typeof codeValue !== 'string') { + return envObject.setLastError(3); + } + error.code = codeValue; + } + result >>>= 0; + var value = emnapiCtx.addToCurrentScope(error).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + function napi_create_type_error(env, code, msg, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!msg) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var msgValue = emnapiCtx.handleStore.get(msg).value; + if (typeof msgValue !== 'string') { + return envObject.setLastError(3); + } + var error = new TypeError(msgValue); + if (code) { + var codeValue = emnapiCtx.handleStore.get(code).value; + if (typeof codeValue !== 'string') { + return envObject.setLastError(3); + } + error.code = codeValue; + } + result >>>= 0; + var value = emnapiCtx.addToCurrentScope(error).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + function napi_create_range_error(env, code, msg, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!msg) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var msgValue = emnapiCtx.handleStore.get(msg).value; + if (typeof msgValue !== 'string') { + return envObject.setLastError(3); + } + var error = new RangeError(msgValue); + if (code) { + var codeValue = emnapiCtx.handleStore.get(code).value; + if (typeof codeValue !== 'string') { + return envObject.setLastError(3); + } + error.code = codeValue; + } + result >>>= 0; + var value = emnapiCtx.addToCurrentScope(error).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + function node_api_create_syntax_error(env, code, msg, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!msg) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var msgValue = emnapiCtx.handleStore.get(msg).value; + if (typeof msgValue !== 'string') { + return envObject.setLastError(3); + } + var error = new SyntaxError(msgValue); + if (code) { + var codeValue = emnapiCtx.handleStore.get(code).value; + if (typeof codeValue !== 'string') { + return envObject.setLastError(3); + } + error.code = codeValue; + } + result >>>= 0; + var value = emnapiCtx.addToCurrentScope(error).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + function napi_get_and_clear_last_exception(env, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (!envObject.tryCatch.hasCaught()) { + HEAP_DATA_VIEW.setUint32(result, 1, true); + return envObject.clearLastError(); + } + else { + var err = envObject.tryCatch.exception(); + var value = envObject.ensureHandleId(err); + HEAP_DATA_VIEW.setUint32(result, value, true); + envObject.tryCatch.reset(); + } + return envObject.clearLastError(); + } + function napi_fatal_error(location, location_len, message, message_len) { + location >>>= 0; + location_len >>>= 0; + message >>>= 0; + message_len >>>= 0; + var locationStr = emnapiString.UTF8ToString(location, location_len); + var messageStr = emnapiString.UTF8ToString(message, message_len); + if (emnapiNodeBinding) { + emnapiNodeBinding.napi.fatalError(locationStr, messageStr); + } + else { + abort('FATAL ERROR: ' + locationStr + ' ' + messageStr); + } + } + function napi_fatal_exception(env, err) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!err) + return envObject.setLastError(1); + var error = envObject.ctx.handleStore.get(err); + try { + envObject.triggerFatalException(error.value); + } + catch (_) { + return envObject.setLastError(9); + } + return envObject.clearLastError(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + var errorMod = Object.freeze({ + __proto__: null, + _emnapi_get_last_error_info: _emnapi_get_last_error_info, + napi_create_error: napi_create_error, + napi_create_range_error: napi_create_range_error, + napi_create_type_error: napi_create_type_error, + napi_fatal_error: napi_fatal_error, + napi_fatal_exception: napi_fatal_exception, + napi_get_and_clear_last_exception: napi_get_and_clear_last_exception, + napi_is_exception_pending: napi_is_exception_pending, + napi_throw: napi_throw, + napi_throw_error: napi_throw_error, + napi_throw_range_error: napi_throw_range_error, + napi_throw_type_error: napi_throw_type_error, + node_api_create_syntax_error: node_api_create_syntax_error, + node_api_throw_syntax_error: node_api_throw_syntax_error + }); + function _emnapi_create_function(env, utf8name, length, cb, data, result) { + length >>>= 0; + var envObject = emnapiCtx.envStore.get(env); + var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data); + if (fresult.status !== 0) + return envObject.setLastError(fresult.status); + var f = fresult.f; + var valueHandle = emnapiCtx.addToCurrentScope(f); + result >>>= 0; + var value = valueHandle.id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + function napi_create_function(env, utf8name, length, cb, data, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1); + if (!cb) + return envObject.setLastError(1); + return _emnapi_create_function(env, utf8name, length, cb, data, result); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_get_cb_info(env, cbinfo, argc, argv, this_arg, data) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + if (!cbinfo) + return envObject.setLastError(1); + var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo; + argc >>>= 0; + argv >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (argv) { + if (!argc) + return envObject.setLastError(1); + var argcValue = HEAP_DATA_VIEW.getUint32(argc, true); + argcValue >>>= 0; + var len = cbinfoValue.args.length; + var arrlen = argcValue < len ? argcValue : len; + var i = 0; + for (; i < arrlen; i++) { + var argVal = envObject.ensureHandleId(cbinfoValue.args[i]); + HEAP_DATA_VIEW.setUint32(argv + i * 4, argVal, true); + } + if (i < argcValue) { + for (; i < argcValue; i++) { + HEAP_DATA_VIEW.setUint32(argv + i * 4, 1, true); + } + } + } + if (argc) { + HEAP_DATA_VIEW.setUint32(argc, cbinfoValue.args.length, true); + } + if (this_arg) { + this_arg >>>= 0; + var v = envObject.ensureHandleId(cbinfoValue.thiz); + HEAP_DATA_VIEW.setUint32(this_arg, v, true); + } + if (data) { + data >>>= 0; + HEAP_DATA_VIEW.setUint32(data, cbinfoValue.data, true); + } + return envObject.clearLastError(); + } + function napi_call_function(env, recv, func, argc, argv, result) { + var i = 0; + var v; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!recv) + return envObject.setLastError(1); + argc >>>= 0; + argv >>>= 0; + result >>>= 0; + argc = argc >>> 0; + if (argc > 0) { + if (!argv) + return envObject.setLastError(1); + } + var v8recv = emnapiCtx.handleStore.get(recv).value; + if (!func) + return envObject.setLastError(1); + var v8func = emnapiCtx.handleStore.get(func).value; + if (typeof v8func !== 'function') + return envObject.setLastError(1); + var args = []; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + for (; i < argc; i++) { + var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); + args.push(emnapiCtx.handleStore.get(argVal).value); + } + var ret = v8func.apply(v8recv, args); + if (result) { + v = envObject.ensureHandleId(ret); + HEAP_DATA_VIEW.setUint32(result, v, true); + } + return envObject.clearLastError(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_new_instance(env, constructor, argc, argv, result) { + var i; + var v; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!constructor) + return envObject.setLastError(1); + argc >>>= 0; + argv >>>= 0; + result >>>= 0; + argc = argc >>> 0; + if (argc > 0) { + if (!argv) + return envObject.setLastError(1); + } + if (!result) + return envObject.setLastError(1); + var Ctor = emnapiCtx.handleStore.get(constructor).value; + if (typeof Ctor !== 'function') + return envObject.setLastError(1); + var ret = void 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (emnapiCtx.feature.supportReflect) { + var argList = Array(argc); + for (i = 0; i < argc; i++) { + var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); + argList[i] = emnapiCtx.handleStore.get(argVal).value; + } + ret = Reflect.construct(Ctor, argList, Ctor); + } + else { + var args = Array(argc + 1); + args[0] = undefined; + for (i = 0; i < argc; i++) { + var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); + args[i + 1] = emnapiCtx.handleStore.get(argVal).value; + } + var BoundCtor = Ctor.bind.apply(Ctor, args); + ret = new BoundCtor(); + } + if (result) { + v = envObject.ensureHandleId(ret); + HEAP_DATA_VIEW.setUint32(result, v, true); + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_get_new_target(env, cbinfo, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!cbinfo) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + result >>>= 0; + var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo; + var thiz = cbinfoValue.thiz, fn = cbinfoValue.fn; + var value = thiz == null || thiz.constructor == null + ? 0 + : thiz instanceof fn + ? envObject.ensureHandleId(thiz.constructor) + : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + var functionMod = Object.freeze({ + __proto__: null, + _emnapi_create_function: _emnapi_create_function, + napi_call_function: napi_call_function, + napi_create_function: napi_create_function, + napi_get_cb_info: napi_get_cb_info, + napi_get_new_target: napi_get_new_target, + napi_new_instance: napi_new_instance + }); + function napi_open_handle_scope(env, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + var scope = emnapiCtx.openScope(envObject); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, scope.id, true); + return envObject.clearLastError(); + } + function napi_close_handle_scope(env, scope) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!scope) + return envObject.setLastError(1); + if ((envObject.openHandleScopes === 0)) { + return 13; + } + emnapiCtx.closeScope(envObject); + return envObject.clearLastError(); + } + function napi_open_escapable_handle_scope(env, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + var scope = emnapiCtx.openScope(envObject); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, scope.id, true); + return envObject.clearLastError(); + } + function napi_close_escapable_handle_scope(env, scope) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!scope) + return envObject.setLastError(1); + if ((envObject.openHandleScopes === 0)) { + return 13; + } + emnapiCtx.closeScope(envObject); + return envObject.clearLastError(); + } + function napi_escape_handle(env, scope, escapee, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!scope) + return envObject.setLastError(1); + if (!escapee) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var scopeObject = emnapiCtx.scopeStore.get(scope); + if (!scopeObject.escapeCalled()) { + escapee >>>= 0; + result >>>= 0; + var newHandle = scopeObject.escape(escapee); + var value = newHandle ? newHandle.id : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + return envObject.setLastError(12); + } + function napi_create_reference(env, value, initial_refcount, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + if (envObject.moduleApiVersion < 10) { + if (!(handle.isObject() || handle.isFunction() || handle.isSymbol())) { + return envObject.setLastError(1); + } + } + var ref = emnapiCtx.createReference(envObject, handle.id, initial_refcount >>> 0, 1); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, ref.id, true); + return envObject.clearLastError(); + } + function napi_delete_reference(env, ref) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + if (!ref) + return envObject.setLastError(1); + emnapiCtx.refStore.get(ref).dispose(); + return envObject.clearLastError(); + } + function napi_reference_ref(env, ref, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!ref) + return envObject.setLastError(1); + var count = emnapiCtx.refStore.get(ref).ref(); + if (result) { + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, count, true); + } + return envObject.clearLastError(); + } + function napi_reference_unref(env, ref, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!ref) + return envObject.setLastError(1); + var reference = emnapiCtx.refStore.get(ref); + var refcount = reference.refcount(); + if (refcount === 0) { + return envObject.setLastError(9); + } + var count = reference.unref(); + if (result) { + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, count, true); + } + return envObject.clearLastError(); + } + function napi_get_reference_value(env, ref, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!ref) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var reference = emnapiCtx.refStore.get(ref); + var handleId = reference.get(envObject); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, handleId, true); + return envObject.clearLastError(); + } + function napi_add_env_cleanup_hook(env, fun, arg) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + if (!fun) + return envObject.setLastError(1); + fun >>>= 0; + arg >>>= 0; + emnapiCtx.addCleanupHook(envObject, fun, arg); + return 0; + } + function napi_remove_env_cleanup_hook(env, fun, arg) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + if (!fun) + return envObject.setLastError(1); + fun >>>= 0; + arg >>>= 0; + emnapiCtx.removeCleanupHook(envObject, fun, arg); + return 0; + } + function _emnapi_env_ref(env) { + var envObject = emnapiCtx.envStore.get(env); + envObject.ref(); + } + function _emnapi_env_unref(env) { + var envObject = emnapiCtx.envStore.get(env); + envObject.unref(); + } + var lifeMod = Object.freeze({ + __proto__: null, + _emnapi_env_ref: _emnapi_env_ref, + _emnapi_env_unref: _emnapi_env_unref, + napi_add_env_cleanup_hook: napi_add_env_cleanup_hook, + napi_close_escapable_handle_scope: napi_close_escapable_handle_scope, + napi_close_handle_scope: napi_close_handle_scope, + napi_create_reference: napi_create_reference, + napi_delete_reference: napi_delete_reference, + napi_escape_handle: napi_escape_handle, + napi_get_reference_value: napi_get_reference_value, + napi_open_escapable_handle_scope: napi_open_escapable_handle_scope, + napi_open_handle_scope: napi_open_handle_scope, + napi_reference_ref: napi_reference_ref, + napi_reference_unref: napi_reference_unref, + napi_remove_env_cleanup_hook: napi_remove_env_cleanup_hook + }); + function _emnapi_get_filename(env, buf, len) { + var envObject = emnapiCtx.envStore.get(env); + var filename = envObject.filename; + if (!buf) { + return emnapiString.lengthBytesUTF8(filename); + } + return emnapiString.stringToUTF8(filename, buf, len); + } + var miscellaneousMod = Object.freeze({ + __proto__: null, + _emnapi_get_filename: _emnapi_get_filename + }); + function napi_create_promise(env, deferred, promise) { + var deferredObjectId, value; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!deferred) + return envObject.setLastError(1); + if (!promise) + return envObject.setLastError(1); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + var p = new Promise(function (resolve, reject) { + var deferredObject = emnapiCtx.createDeferred({ resolve: resolve, reject: reject }); + deferredObjectId = deferredObject.id; + deferred >>>= 0; + HEAP_DATA_VIEW.setUint32(deferred, deferredObjectId, true); + }); + promise >>>= 0; + value = emnapiCtx.addToCurrentScope(p).id; + HEAP_DATA_VIEW.setUint32(promise, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_resolve_deferred(env, deferred, resolution) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!deferred) + return envObject.setLastError(1); + if (!resolution) + return envObject.setLastError(1); + var deferredObject = emnapiCtx.deferredStore.get(deferred); + deferredObject.resolve(emnapiCtx.handleStore.get(resolution).value); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_reject_deferred(env, deferred, resolution) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!deferred) + return envObject.setLastError(1); + if (!resolution) + return envObject.setLastError(1); + var deferredObject = emnapiCtx.deferredStore.get(deferred); + deferredObject.reject(emnapiCtx.handleStore.get(resolution).value); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_is_promise(env, value, is_promise) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!is_promise) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(value); + is_promise >>>= 0; + var r = h.isPromise() ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(is_promise, r, true); + return envObject.clearLastError(); + } + var promiseMod = Object.freeze({ + __proto__: null, + napi_create_promise: napi_create_promise, + napi_is_promise: napi_is_promise, + napi_reject_deferred: napi_reject_deferred, + napi_resolve_deferred: napi_resolve_deferred + }); + function napi_get_all_property_names(env, object, key_mode, key_filter, key_conversion, result) { + var value; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1); + if (!object) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(object); + if (h.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var obj = void 0; + try { + obj = h.isObject() || h.isFunction() ? h.value : Object(h.value); + } + catch (_) { + return envObject.setLastError(2); + } + if (key_mode !== 0 && key_mode !== 1) { + return envObject.setLastError(1); + } + if (key_conversion !== 0 && key_conversion !== 1) { + return envObject.setLastError(1); + } + var props = []; + var names = void 0; + var symbols = void 0; + var i = void 0; + var own = true; + var integerIndiceRegex = /^(0|[1-9][0-9]*)$/; + do { + names = Object.getOwnPropertyNames(obj); + symbols = Object.getOwnPropertySymbols(obj); + for (i = 0; i < names.length; i++) { + props.push({ + name: integerIndiceRegex.test(names[i]) ? Number(names[i]) : names[i], + desc: Object.getOwnPropertyDescriptor(obj, names[i]), + own: own + }); + } + for (i = 0; i < symbols.length; i++) { + props.push({ + name: symbols[i], + desc: Object.getOwnPropertyDescriptor(obj, symbols[i]), + own: own + }); + } + if (key_mode === 1) { + break; + } + obj = Object.getPrototypeOf(obj); + own = false; + } while (obj); + var ret = []; + var addName = function (ret, name, key_filter, conversion_mode) { + if (ret.indexOf(name) !== -1) + return; + if (conversion_mode === 0) { + ret.push(name); + } + else if (conversion_mode === 1) { + var realName = typeof name === 'number' ? String(name) : name; + if (typeof realName === 'string') { + if (!(key_filter & 8)) { + ret.push(realName); + } + } + else { + ret.push(realName); + } + } + }; + for (i = 0; i < props.length; i++) { + var prop = props[i]; + var name_1 = prop.name; + var desc = prop.desc; + if (key_filter === 0) { + addName(ret, name_1, key_filter, key_conversion); + } + else { + if (key_filter & 8 && typeof name_1 === 'string') { + continue; + } + if (key_filter & 16 && typeof name_1 === 'symbol') { + continue; + } + var shouldAdd = true; + switch (key_filter & 7) { + case 1: { + shouldAdd = Boolean(desc.writable); + break; + } + case 2: { + shouldAdd = Boolean(desc.enumerable); + break; + } + case (1 | 2): { + shouldAdd = Boolean(desc.writable && desc.enumerable); + break; + } + case 4: { + shouldAdd = Boolean(desc.configurable); + break; + } + case (4 | 1): { + shouldAdd = Boolean(desc.configurable && desc.writable); + break; + } + case (4 | 2): { + shouldAdd = Boolean(desc.configurable && desc.enumerable); + break; + } + case (4 | 2 | 1): { + shouldAdd = Boolean(desc.configurable && desc.enumerable && desc.writable); + break; + } + } + if (shouldAdd) { + addName(ret, name_1, key_filter, key_conversion); + } + } + } + result >>>= 0; + value = emnapiCtx.addToCurrentScope(ret).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_get_property_names(env, object, result) { + return napi_get_all_property_names(env, object, 0, 2 | 16, 1, result); + } + function napi_set_property(env, object, key, value) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!key) + return envObject.setLastError(1); + if (!value) + return envObject.setLastError(1); + if (!object) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(object); + if (!(h.isObject() || h.isFunction())) { + return envObject.setLastError(2); + } + h.value[emnapiCtx.handleStore.get(key).value] = emnapiCtx.handleStore.get(value).value; + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_has_property(env, object, key, result) { + var r; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!key) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + if (!object) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(object); + if (h.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var v = void 0; + try { + v = h.isObject() || h.isFunction() ? h.value : Object(h.value); + } + catch (_) { + return envObject.setLastError(2); + } + result >>>= 0; + r = (emnapiCtx.handleStore.get(key).value in v) ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_get_property(env, object, key, result) { + var value; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!key) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + if (!object) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(object); + if (h.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var v = void 0; + try { + v = h.isObject() || h.isFunction() ? h.value : Object(h.value); + } + catch (_) { + return envObject.setLastError(2); + } + result >>>= 0; + value = envObject.ensureHandleId(v[emnapiCtx.handleStore.get(key).value]); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_delete_property(env, object, key, result) { + var r; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!key) + return envObject.setLastError(1); + if (!object) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(object); + if (!(h.isObject() || h.isFunction())) { + return envObject.setLastError(2); + } + var propertyKey = emnapiCtx.handleStore.get(key).value; + if (emnapiCtx.feature.supportReflect) { + r = Reflect.deleteProperty(h.value, propertyKey); + } + else { + try { + r = delete h.value[propertyKey]; + } + catch (_) { + r = false; + } + } + if (result) { + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_has_own_property(env, object, key, result) { + var r; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!key) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + if (!object) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(object); + if (h.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var v = void 0; + try { + v = h.isObject() || h.isFunction() ? h.value : Object(h.value); + } + catch (_) { + return envObject.setLastError(2); + } + var prop = emnapiCtx.handleStore.get(key).value; + if (typeof prop !== 'string' && typeof prop !== 'symbol') { + return envObject.setLastError(4); + } + r = Object.prototype.hasOwnProperty.call(v, emnapiCtx.handleStore.get(key).value); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_set_named_property(env, object, cname, value) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1); + if (!object) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(object); + if (!(h.isObject() || h.isFunction())) { + return envObject.setLastError(2); + } + if (!cname) { + return envObject.setLastError(1); + } + cname >>>= 0; + emnapiCtx.handleStore.get(object).value[emnapiString.UTF8ToString(cname, -1)] = emnapiCtx.handleStore.get(value).value; + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_has_named_property(env, object, utf8name, result) { + var r; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1); + if (!object) + return envObject.setLastError(1); + if (!utf8name) { + return envObject.setLastError(1); + } + var h = emnapiCtx.handleStore.get(object); + if (h.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var v = void 0; + try { + v = h.isObject() || h.isFunction() ? h.value : Object(h.value); + } + catch (_) { + return envObject.setLastError(2); + } + utf8name >>>= 0; + result >>>= 0; + r = emnapiString.UTF8ToString(utf8name, -1) in v; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_get_named_property(env, object, utf8name, result) { + var value; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1); + if (!object) + return envObject.setLastError(1); + if (!utf8name) { + return envObject.setLastError(1); + } + var h = emnapiCtx.handleStore.get(object); + if (h.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var v = void 0; + try { + v = h.isObject() || h.isFunction() ? h.value : Object(h.value); + } + catch (_) { + return envObject.setLastError(2); + } + utf8name >>>= 0; + result >>>= 0; + value = envObject.ensureHandleId(v[emnapiString.UTF8ToString(utf8name, -1)]); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_set_element(env, object, index, value) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1); + if (!object) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(object); + if (!(h.isObject() || h.isFunction())) { + return envObject.setLastError(2); + } + h.value[index >>> 0] = emnapiCtx.handleStore.get(value).value; + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_has_element(env, object, index, result) { + var r; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1); + if (!object) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(object); + if (h.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var v = void 0; + try { + v = h.isObject() || h.isFunction() ? h.value : Object(h.value); + } + catch (_) { + return envObject.setLastError(2); + } + result >>>= 0; + r = ((index >>> 0) in v) ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_get_element(env, object, index, result) { + var value; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1); + if (!object) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(object); + if (h.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var v = void 0; + try { + v = h.isObject() || h.isFunction() ? h.value : Object(h.value); + } + catch (_) { + return envObject.setLastError(2); + } + result >>>= 0; + value = envObject.ensureHandleId(v[index >>> 0]); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_delete_element(env, object, index, result) { + var r; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!object) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(object); + if (!(h.isObject() || h.isFunction())) { + return envObject.setLastError(2); + } + if (emnapiCtx.feature.supportReflect) { + r = Reflect.deleteProperty(h.value, index >>> 0); + } + else { + try { + r = delete h.value[index >>> 0]; + } + catch (_) { + r = false; + } + } + if (result) { + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_define_properties(env, object, property_count, properties) { + var propPtr, attributes; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + properties >>>= 0; + property_count >>>= 0; + property_count = property_count >>> 0; + if (property_count > 0) { + if (!properties) + return envObject.setLastError(1); + } + if (!object) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(object); + var maybeObject = h.value; + if (!(h.isObject() || h.isFunction())) { + return envObject.setLastError(2); + } + var propertyName = void 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + for (var i = 0; i < property_count; i++) { + propPtr = properties + (i * (4 * 8)); + var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true); + var name_2 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true); + var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true); + var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true); + var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true); + var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true); + attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true); + attributes >>>= 0; + var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true); + if (utf8Name) { + propertyName = emnapiString.UTF8ToString(utf8Name, -1); + } + else { + if (!name_2) { + return envObject.setLastError(4); + } + propertyName = emnapiCtx.handleStore.get(name_2).value; + if (typeof propertyName !== 'string' && typeof propertyName !== 'symbol') { + return envObject.setLastError(4); + } + } + emnapiDefineProperty(envObject, maybeObject, propertyName, method, getter, setter, value, attributes, data); + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_object_freeze(env, object) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!object) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(object); + var maybeObject = h.value; + if (!(h.isObject() || h.isFunction())) { + return envObject.setLastError(2); + } + Object.freeze(maybeObject); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_object_seal(env, object) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!object) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(object); + var maybeObject = h.value; + if (!(h.isObject() || h.isFunction())) { + return envObject.setLastError(2); + } + Object.seal(maybeObject); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + var propertyMod = Object.freeze({ + __proto__: null, + napi_define_properties: napi_define_properties, + napi_delete_element: napi_delete_element, + napi_delete_property: napi_delete_property, + napi_get_all_property_names: napi_get_all_property_names, + napi_get_element: napi_get_element, + napi_get_named_property: napi_get_named_property, + napi_get_property: napi_get_property, + napi_get_property_names: napi_get_property_names, + napi_has_element: napi_has_element, + napi_has_named_property: napi_has_named_property, + napi_has_own_property: napi_has_own_property, + napi_has_property: napi_has_property, + napi_object_freeze: napi_object_freeze, + napi_object_seal: napi_object_seal, + napi_set_element: napi_set_element, + napi_set_named_property: napi_set_named_property, + napi_set_property: napi_set_property + }); + function napi_run_script(env, script, result) { + var status; + var value; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!script) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var v8Script = emnapiCtx.handleStore.get(script); + if (!v8Script.isString()) { + return envObject.setLastError(3); + } + var g = emnapiCtx.handleStore.get(5).value; + var ret = g.eval(v8Script.value); + result >>>= 0; + value = envObject.ensureHandleId(ret); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + status = envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + return status; + } + var scriptMod = Object.freeze({ + __proto__: null, + napi_run_script: napi_run_script + }); + function napi_typeof(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var v = emnapiCtx.handleStore.get(value); + result >>>= 0; + var r; + if (v.isNumber()) { + r = 3; + } + else if (v.isBigInt()) { + r = 9; + } + else if (v.isString()) { + r = 4; + } + else if (v.isFunction()) { + r = 7; + } + else if (v.isExternal()) { + r = 8; + } + else if (v.isObject()) { + r = 6; + } + else if (v.isBoolean()) { + r = 2; + } + else if (v.isUndefined()) { + r = 0; + } + else if (v.isSymbol()) { + r = 5; + } + else if (v.isNull()) { + r = 1; + } + else { + return envObject.setLastError(1); + } + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt32(result, r, true); + return envObject.clearLastError(); + } + function napi_coerce_to_bool(env, value, result) { + var v; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + result >>>= 0; + v = handle.value ? 4 : 3; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_coerce_to_number(env, value, result) { + var v; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + if (handle.isBigInt()) { + throw new TypeError('Cannot convert a BigInt value to a number'); + } + result >>>= 0; + v = emnapiCtx.addToCurrentScope(Number(handle.value)).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_coerce_to_object(env, value, result) { + var v; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + if (handle.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + result >>>= 0; + v = envObject.ensureHandleId(Object(handle.value)); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_coerce_to_string(env, value, result) { + var v; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + if (handle.isSymbol()) { + throw new TypeError('Cannot convert a Symbol value to a string'); + } + result >>>= 0; + v = emnapiCtx.addToCurrentScope(String(handle.value)).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_instanceof(env, object, constructor, result) { + var r; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!object) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + if (!constructor) + return envObject.setLastError(1); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, 0, true); + var ctor = emnapiCtx.handleStore.get(constructor); + if (!ctor.isFunction()) { + return envObject.setLastError(5); + } + var val = emnapiCtx.handleStore.get(object).value; + var ret = val instanceof ctor.value; + r = ret ? 1 : 0; + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_is_array(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(value); + result >>>= 0; + var r = h.isArray() ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + function napi_is_arraybuffer(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(value); + result >>>= 0; + var r = h.isArrayBuffer() ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + function node_api_is_sharedarraybuffer(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(value); + result >>>= 0; + var r = ((typeof SharedArrayBuffer === 'function' && h.value instanceof SharedArrayBuffer) || + (Object.prototype.toString.call(h.value) === '[object SharedArrayBuffer]')) + ? 1 + : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + function napi_is_date(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(value); + result >>>= 0; + var r = h.isDate() ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + function napi_is_error(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var val = emnapiCtx.handleStore.get(value).value; + result >>>= 0; + var r = (val instanceof Error) ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + function napi_is_typedarray(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(value); + result >>>= 0; + var r = h.isTypedArray() ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + function napi_is_buffer(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(value); + result >>>= 0; + var r = h.isBuffer(emnapiCtx.feature.Buffer) ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + function napi_is_dataview(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(value); + result >>>= 0; + var r = h.isDataView() ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + function napi_strict_equals(env, lhs, rhs, result) { + var r; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!lhs) + return envObject.setLastError(1); + if (!rhs) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var lv = emnapiCtx.handleStore.get(lhs).value; + var rv = emnapiCtx.handleStore.get(rhs).value; + result >>>= 0; + r = (lv === rv) ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_detach_arraybuffer(env, arraybuffer) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!arraybuffer) + return envObject.setLastError(1); + var value = emnapiCtx.handleStore.get(arraybuffer).value; + if (!(value instanceof ArrayBuffer)) { + if (typeof SharedArrayBuffer === 'function' && (value instanceof SharedArrayBuffer)) { + return envObject.setLastError(20); + } + return envObject.setLastError(19); + } + try { + var MessageChannel_1 = emnapiCtx.feature.MessageChannel; + var messageChannel = new MessageChannel_1(); + messageChannel.port1.postMessage(value, [value]); + } + catch (_) { + return envObject.setLastError(9); + } + return envObject.clearLastError(); + } + function napi_is_detached_arraybuffer(env, arraybuffer, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!arraybuffer) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(arraybuffer); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (h.isArrayBuffer() && h.value.byteLength === 0) { + try { + new Uint8Array(h.value); + } + catch (_) { + HEAP_DATA_VIEW.setInt8(result, 1, true); + return envObject.getReturnStatus(); + } + } + HEAP_DATA_VIEW.setInt8(result, 0, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + var valueOperationMod = Object.freeze({ + __proto__: null, + napi_coerce_to_bool: napi_coerce_to_bool, + napi_coerce_to_number: napi_coerce_to_number, + napi_coerce_to_object: napi_coerce_to_object, + napi_coerce_to_string: napi_coerce_to_string, + napi_detach_arraybuffer: napi_detach_arraybuffer, + napi_instanceof: napi_instanceof, + napi_is_array: napi_is_array, + napi_is_arraybuffer: napi_is_arraybuffer, + napi_is_buffer: napi_is_buffer, + napi_is_dataview: napi_is_dataview, + napi_is_date: napi_is_date, + napi_is_detached_arraybuffer: napi_is_detached_arraybuffer, + napi_is_error: napi_is_error, + napi_is_typedarray: napi_is_typedarray, + napi_strict_equals: napi_strict_equals, + napi_typeof: napi_typeof, + node_api_is_sharedarraybuffer: node_api_is_sharedarraybuffer + }); + function napi_get_version(env, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + if (!result) + return envObject.setLastError(1); + var NODE_API_SUPPORTED_VERSION_MAX = 10; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, NODE_API_SUPPORTED_VERSION_MAX, true); + return envObject.clearLastError(); + } + var versionMod = Object.freeze({ + __proto__: null, + napi_get_version: napi_get_version + }); + emnapiAWST.init(); + emnapiExternalMemory.init(); + emnapiString.init(); + emnapiTSFN.init(); + PThread.init(); + napiModule.emnapi.syncMemory = $emnapiSyncMemory; + napiModule.emnapi.getMemoryAddress = $emnapiGetMemoryAddress; + function addImports(mod) { + var keys = Object.keys(mod); + for (var i = 0; i < keys.length; ++i) { + var k = keys[i]; + if (k.indexOf('$') === 0) + continue; + if (k.indexOf('emnapi_') === 0) { + napiModule.imports.emnapi[k] = mod[k]; + } + else if (k.indexOf('_emnapi_') === 0 || k === 'napi_set_last_error' || k === 'napi_clear_last_error') { + napiModule.imports.env[k] = mod[k]; + } + else { + napiModule.imports.napi[k] = mod[k]; + } + } + } + addImports(asyncMod); + addImports(memoryMod); + addImports(asyncWorkMod); + addImports(utilMod); + addImports(convert2cMod); + addImports(convert2napiMod); + addImports(createMod); + addImports(globalMod); + addImports(wrapMod); + addImports(envMod); + addImports(emnapiMod); + addImports(errorMod); + addImports(functionMod); + addImports(lifeMod); + addImports(miscellaneousMod); + addImports(nodeMod); + addImports(promiseMod); + addImports(propertyMod); + addImports(scriptMod); + addImports(valueOperationMod); + addImports(versionMod); + napiModule.imports.napi.napi_create_threadsafe_function = napi_create_threadsafe_function; + napiModule.imports.napi.napi_get_threadsafe_function_context = napi_get_threadsafe_function_context; + napiModule.imports.napi.napi_call_threadsafe_function = napi_call_threadsafe_function; + napiModule.imports.napi.napi_acquire_threadsafe_function = napi_acquire_threadsafe_function; + napiModule.imports.napi.napi_release_threadsafe_function = napi_release_threadsafe_function; + napiModule.imports.napi.napi_unref_threadsafe_function = napi_unref_threadsafe_function; + napiModule.imports.napi.napi_ref_threadsafe_function = napi_ref_threadsafe_function; + return napiModule; + })(); + return napiModule; +} + +function loadNapiModuleImpl(loadFn, userNapiModule, wasmInput, options) { + options = options !== null && options !== void 0 ? options : {}; + const getMemory = options.getMemory; + const getTable = options.getTable; + const beforeInit = options.beforeInit; + if (getMemory != null && typeof getMemory !== 'function') { + throw new TypeError('options.getMemory is not a function'); + } + if (getTable != null && typeof getTable !== 'function') { + throw new TypeError('options.getTable is not a function'); + } + if (beforeInit != null && typeof beforeInit !== 'function') { + throw new TypeError('options.beforeInit is not a function'); + } + let napiModule; + const isLoad = typeof userNapiModule === 'object' && userNapiModule !== null; + if (isLoad) { + if (userNapiModule.loaded) { + throw new Error('napiModule has already loaded'); + } + napiModule = userNapiModule; + } + else { + napiModule = createNapiModule(options); + } + const wasi = options.wasi; + let wasiThreads$1; + let importObject = { + env: napiModule.imports.env, + napi: napiModule.imports.napi, + emnapi: napiModule.imports.emnapi + }; + if (wasi) { + wasiThreads$1 = new wasiThreads.WASIThreads(napiModule.childThread + ? { + wasi, + childThread: true, + postMessage: napiModule.postMessage + } + : { + wasi, + threadManager: napiModule.PThread, + waitThreadStart: napiModule.waitThreadStart + }); + Object.assign(importObject, typeof wasi.getImportObject === 'function' + ? wasi.getImportObject() + : { wasi_snapshot_preview1: wasi.wasiImport }); + Object.assign(importObject, wasiThreads$1.getImportObject()); + } + const overwriteImports = options.overwriteImports; + if (typeof overwriteImports === 'function') { + const newImportObject = overwriteImports(importObject); + if (typeof newImportObject === 'object' && newImportObject !== null) { + importObject = newImportObject; + } + } + return loadFn(wasmInput, importObject, (err, source) => { + if (err) { + throw err; + } + const originalInstance = source.instance; + let instance = originalInstance; + const originalExports = originalInstance.exports; + const exportMemory = 'memory' in originalExports; + const importMemory = 'memory' in importObject.env; + const memory = getMemory + ? getMemory(originalExports) + : exportMemory + ? originalExports.memory + : importMemory + ? importObject.env.memory + : undefined; + if (!memory) { + throw new Error('memory is neither exported nor imported'); + } + const table = getTable ? getTable(originalExports) : originalExports.__indirect_function_table; + if (wasi && !exportMemory) { + const exports$1 = Object.create(null); + Object.assign(exports$1, originalExports, { memory }); + instance = { exports: exports$1 }; + } + const module = source.module; + if (wasi) { + instance = wasiThreads$1.initialize(instance, module, memory); + } + else { + napiModule.PThread.setup(module, memory); + } + const emnapiInit = () => { + if (beforeInit) { + beforeInit({ + instance: originalInstance, + module + }); + } + napiModule.init({ + instance, + module, + memory, + table + }); + const ret = { + instance: originalInstance, + module, + usedInstance: instance + }; + if (!isLoad) { + ret.napiModule = napiModule; + } + return ret; + }; + if (napiModule.PThread.shouldPreloadWorkers()) { + const poolReady = napiModule.PThread.loadWasmModuleToAllWorkers(); + if (loadFn === loadCallback) { + return poolReady.then(emnapiInit); + } + else { + throw new Error('Synchronous loading is not supported with worker pool (reuseWorker.size > 0)'); + } + } + return emnapiInit(); + }); +} +function loadCallback(wasmInput, importObject, callback) { + return load(wasmInput, importObject).then((source) => { + return callback(null, source); + }, err => { + return callback(err); + }); +} +function loadSyncCallback(wasmInput, importObject, callback) { + let source; + try { + source = loadSync(wasmInput, importObject); + } + catch (err) { + return callback(err); + } + return callback(null, source); +} +function loadNapiModule(napiModule, wasmInput, options) { + if (typeof napiModule !== 'object' || napiModule === null) { + throw new TypeError('Invalid napiModule'); + } + return loadNapiModuleImpl(loadCallback, napiModule, wasmInput, options); +} +function loadNapiModuleSync(napiModule, wasmInput, options) { + if (typeof napiModule !== 'object' || napiModule === null) { + throw new TypeError('Invalid napiModule'); + } + return loadNapiModuleImpl(loadSyncCallback, napiModule, wasmInput, options); +} +function instantiateNapiModule(wasmInput, options) { + return loadNapiModuleImpl(loadCallback, undefined, wasmInput, options); +} +function instantiateNapiModuleSync(wasmInput, options) { + return loadNapiModuleImpl(loadSyncCallback, undefined, wasmInput, options); +} + +class MessageHandler extends wasiThreads.ThreadMessageHandler { + constructor(options) { + if (typeof options.onLoad !== 'function') { + throw new TypeError('options.onLoad is not a function'); + } + const userOnError = options.onError; + super({ + ...options, + onError: (err, type) => { + var _a; + const emnapi_thread_crashed = (_a = this.instance) === null || _a === void 0 ? void 0 : _a.exports.emnapi_thread_crashed; + if (typeof emnapi_thread_crashed === 'function') { + emnapi_thread_crashed(); + } + if (typeof userOnError === 'function') { + userOnError(err, type); + } + else { + throw err; + } + } + }); + this.napiModule = undefined; + } + instantiate(data) { + const source = this.onLoad(data); + const then = source.then; + if (typeof then === 'function') { + return source.then((result) => { + this.napiModule = result.napiModule; + return result; + }); + } + this.napiModule = source.napiModule; + return source; + } + handle(e) { + var _a; + super.handle(e); + if ((_a = e === null || e === void 0 ? void 0 : e.data) === null || _a === void 0 ? void 0 : _a.__emnapi__) { + const type = e.data.__emnapi__.type; + const payload = e.data.__emnapi__.payload; + try { + if (type === 'async-worker-init') { + this.handleAfterLoad(e, () => { + this.napiModule.initWorker(payload.arg, payload.func); + }); + } + } + catch (err) { + this.onError(err, type); + } + } + } +} + +const version = "1.10.0"; + +exports.MessageHandler = MessageHandler; +exports.createNapiModule = createNapiModule; +exports.instantiateNapiModule = instantiateNapiModule; +exports.instantiateNapiModuleSync = instantiateNapiModuleSync; +exports.loadNapiModule = loadNapiModule; +exports.loadNapiModuleSync = loadNapiModuleSync; +exports.version = version; +Object.keys(wasiThreads).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, { + enumerable: true, + get: function () { return wasiThreads[k]; } + }); +}); diff --git a/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.d.ts b/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.d.ts new file mode 100644 index 00000000..0ec6eb84 --- /dev/null +++ b/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.d.ts @@ -0,0 +1,420 @@ +/// + +import type { Context } from '@emnapi/runtime'; +import type { ReferenceOwnership } from '@emnapi/runtime'; +import type { Worker as Worker_2 } from 'worker_threads'; + +/** @public */ +export declare type BaseCreateOptions = { + filename?: string + nodeBinding?: NodeBinding + reuseWorker?: ThreadManagerOptionsMain['reuseWorker'] + asyncWorkPoolSize?: number + waitThreadStart?: MainThreadBaseOptions['waitThreadStart'] + onCreateWorker?: (info: CreateWorkerInfo) => any + print?: (str: string) => void + printErr?: (str: string) => void + postMessage?: (msg: any) => any +} + +/** @public */ +export declare interface BaseOptions { + wasi: WASIInstance; + version?: 'preview1'; + wasm64?: boolean; +} + +/** @public */ +export declare interface ChildThreadOptions extends BaseOptions { + childThread: true; + postMessage?: (data: any) => void; +} + +/** @public */ +export declare interface CleanupThreadPayload { + tid: number; +} + +/** @public */ +export declare interface CommandInfo { + type: T; + payload: CommandPayloadMap[T]; +} + +/** @public */ +export declare interface CommandPayloadMap { + load: LoadPayload; + loaded: LoadedPayload; + start: StartPayload; + 'cleanup-thread': CleanupThreadPayload; + 'terminate-all-threads': TerminateAllThreadsPayload; + 'spawn-thread': SpawnThreadPayload; +} + +/** @public */ +export declare type CommandType = keyof CommandPayloadMap; + +/** @public */ +export declare function createInstanceProxy(instance: WebAssembly.Instance, memory?: WebAssembly.Memory | (() => WebAssembly.Memory)): WebAssembly.Instance; + +/** @public */ +export declare function createNapiModule ( +options: CreateOptions +): NapiModule + +/** @public */ +export declare type CreateOptions = BaseCreateOptions & ({ + context: Context + childThread?: boolean +} | { + context?: Context + childThread: true +}) + +/** @public */ +export declare interface CreateWorkerInfo { + type: 'thread' | 'async-work' + name: string +} + +/** @public */ +export declare interface InitOptions { + instance: WebAssembly.Instance + module: WebAssembly.Module + memory?: WebAssembly.Memory + table?: WebAssembly.Table +} + +export declare type InputType = string | URL | Response | BufferSource | WebAssembly.Module; + +/** @public */ +export declare interface InstantiatedSource extends LoadedSource { + napiModule: NapiModule; +} + +/** @public */ +export declare function instantiateNapiModule( +/** Only support `BufferSource` or `WebAssembly.Module` on Node.js */ +wasmInput: InputType | Promise, options: InstantiateOptions): Promise; + +/** @public */ +export declare function instantiateNapiModuleSync(wasmInput: BufferSource | WebAssembly.Module, options: InstantiateOptions): InstantiatedSource; + +/** @public */ +export declare type InstantiateOptions = CreateOptions & LoadOptions; + +/** @public */ +export declare function isSharedArrayBuffer(value: any): value is SharedArrayBuffer; + +/** @public */ +export declare function isTrapError(e: Error): e is WebAssembly.RuntimeError; + +/** @public */ +export declare interface LoadedPayload { +} + +/** @public */ +export declare interface LoadedSource extends WebAssembly.WebAssemblyInstantiatedSource { + usedInstance: WebAssembly.Instance; +} + +/** @public */ +export declare function loadNapiModule(napiModule: NapiModule, +/** Only support `BufferSource` or `WebAssembly.Module` on Node.js */ +wasmInput: InputType | Promise, options?: LoadOptions): Promise; + +/** @public */ +export declare function loadNapiModuleSync(napiModule: NapiModule, wasmInput: BufferSource | WebAssembly.Module, options?: LoadOptions): LoadedSource; + +/** @public */ +export declare interface LoadOptions { + wasi?: WASIInstance; + overwriteImports?: (importObject: WebAssembly.Imports) => WebAssembly.Imports; + beforeInit?: (source: WebAssembly.WebAssemblyInstantiatedSource) => void; + getMemory?: (exports: WebAssembly.Exports) => WebAssembly.Memory; + getTable?: (exports: WebAssembly.Exports) => WebAssembly.Table; +} + +/** @public */ +export declare interface LoadPayload { + wasmModule: WebAssembly.Module; + wasmMemory: WebAssembly.Memory; + sab?: Int32Array; +} + +/** @public */ +export declare interface MainThreadBaseOptions extends BaseOptions { + waitThreadStart?: boolean | number; +} + +/** @public */ +export declare type MainThreadOptions = MainThreadOptionsWithThreadManager | MainThreadOptionsCreateThreadManager; + +/** @public */ +export declare interface MainThreadOptionsCreateThreadManager extends MainThreadBaseOptions, ThreadManagerOptionsMain { +} + +/** @public */ +export declare interface MainThreadOptionsWithThreadManager extends MainThreadBaseOptions { + threadManager?: ThreadManager | (() => ThreadManager); +} + +/** @public */ +export declare interface MessageEventData { + __emnapi__: CommandInfo; +} + +/** @public */ +export declare class MessageHandler extends ThreadMessageHandler { + napiModule: NapiModule | undefined; + constructor(options: MessageHandlerOptions); + instantiate(data: LoadPayload): InstantiatedSource | PromiseLike; + handle(e: WorkerMessageEvent): void; +} + +/** @public */ +export declare interface MessageHandlerOptions extends ThreadMessageHandlerOptions { + onLoad: (data: LoadPayload) => InstantiatedSource | PromiseLike; +} + +/** @public */ +export declare interface NapiModule { + imports: { + env: any + napi: any + emnapi: any + } + exports: any + loaded: boolean + filename: string + childThread: boolean + emnapi: { + syncMemory ( + js_to_wasm: boolean, + arrayBufferOrView: T, + offset?: number, + len?: number + ): T + getMemoryAddress (arrayBufferOrView: ArrayBuffer | ArrayBufferView): PointerInfo + addSendListener (worker: any): boolean + } + + init (options: InitOptions): any + initWorker (arg: number, func: [number, number]): void + postMessage?: (msg: any) => any + + waitThreadStart: boolean | number + /* Excluded from this release type: PThread */} + +/** @public */ +export declare interface NodeBinding { + node: { + emitAsyncInit: Function + emitAsyncDestroy: Function + makeCallback: Function + } + napi: { + asyncInit: Function + asyncDestroy: Function + makeCallback: Function + } +} + +/** @public */ +export declare interface PointerInfo { + address: number + ownership: ReferenceOwnership + runtimeAllocated: 0 | 1 +} + +/** @public */ +export declare interface ReuseWorkerOptions { + /** + * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size | PTHREAD_POOL_SIZE} + */ + size: number; + /** + * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size-strict | PTHREAD_POOL_SIZE_STRICT} + */ + strict?: boolean; +} + +/** @public */ +export declare interface SpawnThreadPayload { + startArg: number; + errorOrTid: number; +} + +/** @public */ +export declare interface StartPayload { + tid: number; + arg: number; + sab?: Int32Array; +} + +/** @public */ +export declare interface StartResult { + exitCode: number; + instance: WebAssembly.Instance; +} + +/** @public */ +export declare interface TerminateAllThreadsPayload { +} + +/** @public */ +export declare class ThreadManager { + unusedWorkers: WorkerLike[]; + runningWorkers: WorkerLike[]; + pthreads: Record; + get nextWorkerID(): number; + wasmModule: WebAssembly.Module | null; + wasmMemory: WebAssembly.Memory | null; + private readonly messageEvents; + private readonly _childThread; + private readonly _onCreateWorker; + private readonly _reuseWorker; + private readonly _beforeLoad?; + /* Excluded from this release type: printErr */ + threadSpawn?: ((startArg: number, errorOrTid?: number) => number); + constructor(options: ThreadManagerOptions); + init(): void; + initMainThread(): void; + private preparePool; + shouldPreloadWorkers(): boolean; + loadWasmModuleToAllWorkers(): Promise; + preloadWorkers(): Promise; + setup(wasmModule: WebAssembly.Module, wasmMemory: WebAssembly.Memory): void; + markId(worker: WorkerLike): number; + returnWorkerToPool(worker: WorkerLike): void; + loadWasmModuleToWorker(worker: WorkerLike, sab?: Int32Array): Promise; + allocateUnusedWorker(): WorkerLike; + getNewWorker(sab?: Int32Array): WorkerLike | undefined; + cleanThread(worker: WorkerLike, tid: number, force?: boolean): void; + terminateWorker(worker: WorkerLike): void; + terminateAllThreads(): void; + addMessageEventListener(worker: WorkerLike, onMessage: (e: WorkerMessageEvent) => void): () => void; + fireMessageEvent(worker: WorkerLike, e: WorkerMessageEvent): void; +} + +/** @public */ +export declare type ThreadManagerOptions = ThreadManagerOptionsMain | ThreadManagerOptionsChild; + +/** @public */ +export declare interface ThreadManagerOptionsBase { + printErr?: (message: string) => void; + threadSpawn?: (startArg: number, errorOrTid?: number) => number; +} + +/** @public */ +export declare interface ThreadManagerOptionsChild extends ThreadManagerOptionsBase { + childThread: true; +} + +/** @public */ +export declare interface ThreadManagerOptionsMain extends ThreadManagerOptionsBase { + beforeLoad?: (worker: WorkerLike) => any; + reuseWorker?: boolean | number | ReuseWorkerOptions; + onCreateWorker: WorkerFactory; + childThread?: false; +} + +/** @public */ +export declare class ThreadMessageHandler { + protected instance: WebAssembly.Instance | undefined; + private messagesBeforeLoad; + protected postMessage: (message: any) => void; + protected onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; + protected onError: (error: Error, type: WorkerMessageType) => void; + constructor(options?: ThreadMessageHandlerOptions); + /** @virtual */ + instantiate(data: LoadPayload): WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; + /** @virtual */ + handle(e: WorkerMessageEvent>): void; + private _load; + private _start; + protected _loaded(err: Error | null, source: WebAssembly.WebAssemblyInstantiatedSource | null, payload: LoadPayload): void; + protected handleAfterLoad(e: E, f: (e: E) => void): void; +} + +/** @public */ +export declare interface ThreadMessageHandlerOptions { + onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; + onError?: (error: Error, type: WorkerMessageType) => void; + postMessage?: (message: any) => void; +} + +export declare const version: string; + +/** @public */ +export declare interface WASIInstance { + readonly wasiImport?: Record; + initialize(instance: object): void; + start(instance: object): number; + getImportObject?(): any; +} + +/** @public */ +export declare class WASIThreads { + PThread: ThreadManager | undefined; + private wasmMemory; + private wasmInstance; + private readonly threadSpawn; + readonly childThread: boolean; + private readonly postMessage; + readonly wasi: WASIInstance; + constructor(options: WASIThreadsOptions); + getImportObject(): { + wasi: WASIThreadsImports; + }; + setup(wasmInstance: WebAssembly.Instance, wasmModule: WebAssembly.Module, wasmMemory?: WebAssembly.Memory): void; + preloadWorkers(): Promise; + /** + * It's ok to call this method to a WASI command module. + * + * in child thread, must call this method instead of {@link WASIThreads.start} even if it's a WASI command module + * + * @returns A proxied WebAssembly instance if in child thread, other wise the original instance + */ + initialize(instance: WebAssembly.Instance, module: WebAssembly.Module, memory?: WebAssembly.Memory): WebAssembly.Instance; + /** + * Equivalent to calling {@link WASIThreads.initialize} and then calling {@link WASIInstance.start} + * ```js + * this.initialize(instance, module, memory) + * this.wasi.start(instance) + * ``` + */ + start(instance: WebAssembly.Instance, module: WebAssembly.Module, memory?: WebAssembly.Memory): StartResult; + terminateAllThreads(): void; +} + +/** @public */ +export declare interface WASIThreadsImports { + 'thread-spawn': (startArg: number, errorOrTid?: number) => number; +} + +/** @public */ +export declare type WASIThreadsOptions = MainThreadOptions | ChildThreadOptions; + +/** @public */ +export declare type WorkerFactory = (ctx: { + type: string; + name: string; +}) => WorkerLike; + +/** @public */ +export declare type WorkerLike = (Worker | Worker_2) & { + whenLoaded?: Promise; + loaded?: boolean; + __emnapi_tid?: number; +}; + +/** @public */ +export declare interface WorkerMessageEvent { + data: T; +} + +/** @public */ +export declare type WorkerMessageType = 'load' | 'start'; + +export { } diff --git a/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.js b/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.js new file mode 100644 index 00000000..0b5fadfa --- /dev/null +++ b/node_modules/@emnapi/core/dist/emnapi-core.cjs.min.js @@ -0,0 +1 @@ +var e=require("@emnapi/wasi-threads");const r="undefined"!=typeof WebAssembly?WebAssembly:"undefined"!=typeof WXWebAssembly?WXWebAssembly:void 0;function t(e){if(e&&"object"!=typeof e)throw new TypeError("imports must be an object or undefined");return!0}function n(e,a){if(!e)throw new TypeError("Invalid wasm source");t(a),a=null!=a?a:{};try{const r="object"==typeof e&&null!==e&&"then"in e?e.then:void 0;if("function"==typeof r)return r.call(e,e=>n(e,a))}catch(e){}if(e instanceof ArrayBuffer||ArrayBuffer.isView(e))return r.instantiate(e,a);if(e instanceof r.Module)return r.instantiate(e,a).then(r=>({instance:r,module:e}));if("undefined"!=typeof Response&&e instanceof Response)return e.arrayBuffer().then(e=>r.instantiate(e,a));const o="string"==typeof e;if(o||"undefined"!=typeof URL&&e instanceof URL){if(o&&"undefined"!=typeof wx&&"undefined"!=typeof __wxConfig)return r.instantiate(e,a);if("function"!=typeof fetch)throw new TypeError("wasm source can not be a string or URL in this environment");if("function"!=typeof r.instantiateStreaming)return n(fetch(e),a);try{return r.instantiateStreaming(fetch(e),a).catch(()=>n(fetch(e),a))}catch(r){return n(fetch(e),a)}}throw new TypeError("Invalid wasm source")}function a(t){var n=function(){var n,a,o,s,i,u="object"==typeof process&&null!==process&&"object"==typeof process.versions&&null!==process.versions&&"string"==typeof process.versions.node,f=Boolean(t.childThread),c="number"==typeof t.waitThreadStart?t.waitThreadStart:Boolean(t.waitThreadStart);function l(e){if("function"==typeof r.RuntimeError)throw new r.RuntimeError(e);throw Error(e)}var d,v,p,g={imports:{env:{},napi:{},emnapi:{}},exports:{},emnapi:{},loaded:!1,filename:"",childThread:f,initWorker:void 0,waitThreadStart:c,PThread:void 0,init:function(e){if(g.loaded)return g.exports;if(!e)throw new TypeError("Invalid napi init options");var t=e.instance;if(!(null==t?void 0:t.exports))throw new TypeError("Invalid wasm instance");n=t;var u=t.exports,f=e.module,c=e.memory||u.memory,p=e.table||u.__indirect_function_table;if(!(f instanceof r.Module))throw new TypeError("Invalid wasm module");if(!(c instanceof r.Memory))throw new TypeError("Invalid wasm memory");if(!(p instanceof r.Table))throw new TypeError("Invalid wasm table");if(a=c,o=p,"function"!=typeof u.malloc)throw new TypeError("malloc is not exported");if("function"!=typeof u.free)throw new TypeError("free is not exported");if(s=u.malloc,i=u.free,!g.childThread){var y=8,h=t.exports.node_api_module_get_api_version_v1;"function"==typeof h&&(y=h());var _=g.envObject||(g.envObject=d.createEnv(g.filename,y,function(e){return o.get(e)},function(e){return o.get(e)},l,v)),E=d.openScope(_);try{_.callIntoModule(function(e){var r=g.exports,n=E.add(r),a=(0,t.exports.napi_register_wasm_v1)(e.id,n.id);g.exports=a?d.handleStore.get(a).value:r})}catch(e){if("unwind"!==e)throw e}finally{d.closeScope(_,E)}return g.loaded=!0,delete g.envObject,g.exports}}},y=void 0;if(f){d=null==t?void 0:t.context;var h="function"==typeof t.postMessage?t.postMessage:"function"==typeof postMessage?postMessage:void 0;if("function"!=typeof h)throw new TypeError("No postMessage found");g.postMessage=h}else{var _=t.context;if("object"!=typeof _||null===_)throw new TypeError("Invalid `options.context`. Use `import { getDefaultContext } from '@emnapi/runtime'`");d=_}if("string"==typeof t.filename&&(g.filename=t.filename),"function"==typeof t.onCreateWorker&&(y=t.onCreateWorker),"function"==typeof t.print?t.print:console.log.bind(console),p="function"==typeof t.printErr?t.printErr:console.warn.bind(console),"nodeBinding"in t){var E=t.nodeBinding;if("object"!=typeof E||null===E)throw new TypeError("Invalid `options.nodeBinding`. Use @emnapi/node-binding package");v=E}var w=0;if("asyncWorkPoolSize"in t){if("number"!=typeof t.asyncWorkPoolSize)throw new TypeError("options.asyncWorkPoolSize must be a integer");(w=t.asyncWorkPoolSize|0)>1024?w=1024:w<-1024&&(w=-1024)}var L=!f&&w<=0;function m(){return Math.abs(w)}function b(e){if(!e)return!1;if(e._emnapiSendListener)return!0;var r=function(e){var r=(u?e:e.data).__emnapi__;if(r&&"async-send"===r.type)if(f){(0,g.postMessage)({__emnapi__:r})}else{var t=r.payload.callback;o.get(t)(r.payload.data)}};return e._emnapiSendListener={handler:r,dispose:function(){u?e.off("message",r):e.removeEventListener("message",r,!1),delete e._emnapiSendListener}},u?e.on("message",r):e.addEventListener("message",r,!1),!0}g.imports.env._emnapi_async_work_pool_size=m,g.emnapi.addSendListener=b;var S=new e.ThreadManager(f?{printErr:p,childThread:!0}:{printErr:p,beforeLoad:function(e){b(e)},reuseWorker:t.reuseWorker,onCreateWorker:y});function A(e,r){d.feature.setImmediate(function(){o.get(e)(r)})}function C(e,r){Promise.resolve().then(function(){o.get(e)(r)})}function I(e,r){var t,n=[r>>>0,(t=r,+Math.abs(t)>=1?t>0?(0|Math.min(+Math.floor(t/4294967296),4294967295))>>>0:~~+Math.ceil((t-+(~~t>>>0))/4294967296)>>>0:0)],o=new DataView(a.buffer);o.setInt32(e,n[0],!0),o.setInt32(e+4,n[1],!0)}g.PThread=S;var k,U=Object.freeze({__proto__:null,$emnapiSetValueI64:I,_emnapi_call_finalizer:function(e,r,t,n,a){t>>>=0,d.envStore.get(r).callFinalizerInternal(e,t,n,a)},_emnapi_callback_into_module:function(e,r,t,n,a){var s=d.envStore.get(r),i=d.openScope(s);try{s.callbackIntoModule(Boolean(e),function(){o.get(t)(r,n)})}catch(e){throw d.closeScope(s,i),a&&d.closeScope(s),e}d.closeScope(s,i)},_emnapi_close_handle_scope:function(e){return d.closeScope()},_emnapi_ctx_decrease_waiting_request_counter:function(){d.decreaseWaitingRequestCounter()},_emnapi_ctx_increase_waiting_request_counter:function(){d.increaseWaitingRequestCounter()},_emnapi_get_node_version:function(e,r,t){e>>>=0,r>>>=0,t>>>=0;var n="object"==typeof process&&null!==process&&"object"==typeof process.versions&&null!==process.versions&&"string"==typeof process.versions.node?process.versions.node.split(".").map(function(e){return Number(e)}):[0,0,0],o=new DataView(a.buffer);o.setUint32(e,n[0],!0),o.setUint32(r,n[1],!0),o.setUint32(t,n[2],!0)},_emnapi_get_now:function(){return performance.timeOrigin+performance.now()},_emnapi_is_main_browser_thread:function(){return"undefined"==typeof window||"undefined"==typeof document||u?0:1},_emnapi_is_main_runtime_thread:function(){return f?0:1},_emnapi_next_tick:C,_emnapi_open_handle_scope:function(){return d.openScope().id},_emnapi_runtime_keepalive_pop:function(){},_emnapi_runtime_keepalive_push:function(){},_emnapi_set_immediate:A,_emnapi_unwind:function(){throw"unwind"},napi_clear_last_error:function(e){return d.envStore.get(e).clearLastError()},napi_set_last_error:function(e,r,t,n){return d.envStore.get(e).setLastError(r,t,n)}});function V(e){var r=new DataView(a.buffer).getInt32(e+20,!0);return S.pthreads[r]}var T=new Promise(function(e){k=function(){T.ready=!0,e()}});T.ready=!1;var D=Object.freeze({__proto__:null,_emnapi_after_uvthreadpool_ready:function(e,r,t){T.ready?o.get(e)(r,t):T.then(function(){o.get(e)(r,t)})},_emnapi_async_send_js:function(e,r,t){if(f)(0,g.postMessage)({__emnapi__:{type:"async-send",payload:{callback:r,data:t}}});else switch(e){case 0:A(r,t);break;case 1:C(r,t)}},_emnapi_emit_async_thread_ready:function(){f&&(0,g.postMessage)({__emnapi__:{type:"async-thread-ready",payload:{}}})},_emnapi_tell_js_uvthreadpool:function(e,r){for(var t=[],n=new DataView(a.buffer),o=function(r){var a=V(n.getUint32(e+4*r,!0));t.push(new Promise(function(e){var r=function(t){var n=(u?t:t.data).__emnapi__;n&&"async-thread-ready"===n.type&&(e(),a&&"function"==typeof a.unref&&a.unref(),u?a.off("message",r):a.removeEventListener("message",r))};u?a.on("message",r):a.addEventListener("message",r)}))},s=0;s>>=0);r&&"function"==typeof r.ref&&r.ref()}},_emnapi_worker_unref:function(e){if(!f){var r=V(e>>>=0);r&&"function"==typeof r.unref&&r.unref()}}});var B=Object.freeze({__proto__:null,napi_adjust_external_memory:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(!t)return n.setLastError(1);var o=d.adjustAmountOfExternalAllocatedMemory(r);return t>>>=0,d.feature.supportBigInt?new DataView(a.buffer).setBigInt64(t,BigInt(o),!0):I(t,Number(o)),n.clearLastError()}}),x={idGen:{},values:[void 0],queued:new Set,pending:[],init:function(){var e={nextId:1,list:[],generate:function(){var r;return e.list.length?r=e.list.shift():(r=e.nextId,e.nextId++),r},reuse:function(r){e.list.push(r)}};x.idGen=e,x.values=[void 0],x.queued=new Set,x.pending=[]},create:function(e,r,t,n,a,o){var s=0,i=0;if(v){var u=v.node.emitAsyncInit(r,t,-1);s=u.asyncId,i=u.triggerAsyncId}var f=x.idGen.generate();return x.values[f]={env:e,id:f,resource:r,asyncId:s,triggerAsyncId:i,status:0,execute:n,complete:a,data:o},f},callComplete:function(e,r){var t=e.complete,n=e.env,a=e.data,s=function(){if(t){var e=d.envStore.get(n),s=d.openScope(e);try{e.callbackIntoModule(!0,function(){o.get(t)(n,r,a)})}finally{d.closeScope(e,s)}}};v?v.node.makeCallback(e.resource,s,[],{asyncId:e.asyncId,triggerAsyncId:e.triggerAsyncId}):s()},queue:function(e){var r=x.values[e];if(r&&0===r.status){if(r.status=1,x.queued.size>=(Math.abs(w)||4))return void x.pending.push(e);x.queued.add(e);var t=r.env,n=r.data,a=r.execute;r.status=2,d.feature.setImmediate(function(){if(o.get(a)(t,n),x.queued.delete(e),r.status=3,d.feature.setImmediate(function(){x.callComplete(r,0)}),x.pending.length>0){var s=x.pending.shift();x.values[s].status=0,x.queue(s)}})}},cancel:function(e){var r=x.pending.indexOf(e);if(-1!==r){var t=x.values[e];return t&&1===t.status?(t.status=4,x.pending.splice(r,1),d.feature.setImmediate(function(){x.callComplete(t,11)}),0):9}return 9},remove:function(e){var r=x.values[e];r&&(v&&v.node.emitAsyncDestroy({asyncId:r.asyncId,triggerAsyncId:r.triggerAsyncId}),x.values[e]=void 0,x.idGen.reuse(e))}};function j(e,r,t,n){if(v){var o=d.handleStore.get(e).value,s=d.handleStore.get(r).value,i=v.node.emitAsyncInit(o,s,t),u=i.asyncId,f=i.triggerAsyncId;if(n){n>>>=0;var c=new DataView(a.buffer);c.setFloat64(n,u,!0),c.setFloat64(n+8,f,!0)}}}function O(e,r){v&&v.node.emitAsyncDestroy({asyncId:e,triggerAsyncId:r})}var R=Object.freeze({__proto__:null,_emnapi_async_destroy_js:function(e){if(!v)return 9;e>>>=0;var r=new DataView(a.buffer),t=r.getInt32(e,!0),n=r.getInt32(e+4,!0),o=BigInt(t>>>0)|BigInt(n)<=BigInt(-1)*(BigInt(1)<=BigInt(1)<>BigInt(32));t>>>=0;var c=new DataView(a.buffer);return c.setInt32(t,u,!0),c.setInt32(t+4,f,!0),0},_emnapi_env_check_gc_access:function(e){d.envStore.get(e).checkGCAccess()},_emnapi_node_emit_async_destroy:O,_emnapi_node_emit_async_init:j,_emnapi_node_make_callback:function(e,r,t,n,o,s,i,u){var f,c=0;if(v){var l=d.handleStore.get(r).value,p=d.handleStore.get(t).value;n>>>=0,o>>>=0,o>>>=0;for(var g=Array(o),y=new DataView(a.buffer);c>>=0,f=d.envStore.get(e).ensureHandleId(_),y.setUint32(u,f,!0)}},napi_close_callback_scope:function(e,r){throw new Error("napi_close_callback_scope has not been implemented yet")},napi_make_callback:function(e,r,t,n,o,s,i){var u,f=0;if(!e)return 1;var c=d.envStore.get(e);if(c.checkGCAccess(),!c.tryCatch.isEmpty())return c.setLastError(10);if(!c.canCallIntoJs())return c.setLastError(c.moduleApiVersion>=10?23:10);c.clearLastError();try{if(!v)return c.setLastError(9);if(!t)return c.setLastError(1);if(o>0&&!s)return c.setLastError(1);var l=Object(d.handleStore.get(t).value),p=d.handleStore.get(n).value;if("function"!=typeof p)return c.setLastError(1);r>>>=0;var g=new DataView(a.buffer),y=g.getInt32(r,!0),h=g.getInt32(r+4,!0),_=BigInt(y>>>0)|BigInt(h)<>>=0,o>>>=0,o>>>=0;for(var E=Array(o);f>>=0,u=c.ensureHandleId(L.value),g.setUint32(i,u,!0)),c.getReturnStatus())}catch(e){return c.tryCatch.setError(e),c.setLastError(10)}},napi_open_callback_scope:function(e,r,t,n){throw new Error("napi_open_callback_scope has not been implemented yet")}}),G={_liveSet:{},offset:{__size__:0,resource:0,async_id:0,trigger_async_id:0,queue_size:0,is_some:0,queue:0,async_pending:0,async_u_fd:0,thread_count:0,state:0,dispatch_state:0,context:0,max_queue_size:0,ref:0,env:0,finalize_data:0,finalize_cb:0,call_js_cb:0,handles_closing:0,async_ref:0,mutex:0,cond:0},init:function(){if(G._liveSet=new Set,G.offset.__size__=184,G.offset.resource=0,G.offset.async_id=8,G.offset.trigger_async_id=16,G.offset.queue_size=60,G.offset.is_some=24,G.offset.queue=64,G.offset.async_pending=132,G.offset.async_u_fd=96,G.offset.thread_count=136,G.offset.state=140,G.offset.dispatch_state=144,G.offset.context=148,G.offset.max_queue_size=152,G.offset.ref=156,G.offset.env=160,G.offset.finalize_data=164,G.offset.finalize_cb=168,G.offset.call_js_cb=172,G.offset.handles_closing=176,G.offset.async_ref=180,G.offset.mutex=32,G.offset.cond=56,G.offset.mutex=G.offset.mutex+4,void 0!==S){S.unusedWorkers.forEach(G.addListener),S.runningWorkers.forEach(G.addListener);var e=S.getNewWorker;S.getNewWorker=function(){var r=e.apply(this,arguments);return G.addListener(r),r}}},addListener:function(e){if(!e)return!1;if(e._emnapiTSFNListener)return!0;var r=function(e){var r=(u?e:e.data).__emnapi__;if(r){var t=r.type,n=r.payload;if("tsfn-send"===t){var o=n.tsfn+G.offset.async_pending;0!==Atomics.load(new Int32Array(a.buffer),o>>>2)&&G.enqueue(n.tsfn)}}};return e._emnapiTSFNListener={handler:r,dispose:function(){u?e.off("message",r):e.removeEventListener("message",r,!1),delete e._emnapiTSFNListener}},u?e.on("message",r):e.addEventListener("message",r,!1),!0},initQueue:function(e){var r=s(8);return!!r&&(r>>>=0,new Uint8Array(a.buffer,r,8).fill(0),G.storeSizeTypeValue(e+G.offset.queue,r,!1),!0)},destroyQueue:function(e){var r=G.loadSizeTypeValue(e+G.offset.queue,!1);if(r){for(var t=G.loadSizeTypeValue(r,!1);0!==t;){var n=G.loadSizeTypeValue(t+4,!1);i(t),t=n}i(r)}},pushQueue:function(e,r){var t=G.loadSizeTypeValue(e+G.offset.queue,!1),n=G.loadSizeTypeValue(t,!1),a=G.loadSizeTypeValue(t+4,!1),o=s(8);if(!o)throw new Error("OOM");o>>>=0,G.storeSizeTypeValue(o,r,!1),G.storeSizeTypeValue(o+4,0,!1),0===n&&0===a?(G.storeSizeTypeValue(t,o,!1),G.storeSizeTypeValue(t+4,o,!1)):(G.storeSizeTypeValue(a+4,o,!1),G.storeSizeTypeValue(t+4,o,!1)),G.addQueueSize(e)},shiftQueue:function(e){var r=G.loadSizeTypeValue(e+G.offset.queue,!1),t=G.loadSizeTypeValue(r,!1);if(0===t)return 0;var n=t,a=G.loadSizeTypeValue(t+4,!1);G.storeSizeTypeValue(r,a,!1),0===a&&G.storeSizeTypeValue(r+4,0,!1),G.storeSizeTypeValue(n+4,0,!1);var o=G.loadSizeTypeValue(n,!1);return i(n),G.subQueueSize(e),o},push:function(e,r,t){var n=G.getMutex(e),a=G.getCond(e),o=function(){var r=G.getQueueSize(e),t=G.getMaxQueueSize(e);return r>=t&&t>0&&0===G.getState(e)},s="undefined"!=typeof window&&"undefined"!=typeof document&&!u,i=!1,f=n.execute(function(){for(;o();){if(0===t)return 15;if(s)return 21;a.wait()}return 0===G.getState(e)?(G.pushQueue(e,r),G.send(e),0):0===G.getThreadCount(e)?1:(G.subThreadCount(e),2!==G.getState(e)||0!==G.getThreadCount(e)||(i=!0),16)});return i&&G.destroy(e),f},getMutex:function(e){var r=e+G.offset.mutex,t={lock:function(){var e="undefined"!=typeof window&&"undefined"!=typeof document&&!u,t=new Int32Array(a.buffer,r,1);if(e)for(;;){if(0===Atomics.compareExchange(t,0,0,10))return}else for(;;){if(0===Atomics.compareExchange(t,0,0,10))return;Atomics.wait(t,0,10)}},unlock:function(){var e=new Int32Array(a.buffer,r,1);if(10!==Atomics.compareExchange(e,0,10,0))throw new Error("Tried to unlock while not holding the mutex");Atomics.notify(e,0,1)},execute:function(e){t.lock();try{return e()}finally{t.unlock()}}};return t},getCond:function(e){var r=e+G.offset.cond,t=G.getMutex(e);return{wait:function(){var e=new Int32Array(a.buffer,r,1),n=Atomics.load(e,0);t.unlock(),Atomics.wait(e,0,n),t.lock()},signal:function(){var e=new Int32Array(a.buffer,r,1);Atomics.add(e,0,1),Atomics.notify(e,0,1)}}},getQueueSize:function(e){return G.loadSizeTypeValue(e+G.offset.queue_size,!0)},addQueueSize:function(e){var r,t,n=G.offset.queue_size;r=new Uint32Array(a.buffer),t=e+n>>>2,Atomics.add(r,t,1)},subQueueSize:function(e){var r,t,n=G.offset.queue_size;r=new Uint32Array(a.buffer),t=e+n>>>2,Atomics.sub(r,t,1)},getThreadCount:function(e){return G.loadSizeTypeValue(e+G.offset.thread_count,!0)},addThreadCount:function(e){var r,t,n=G.offset.thread_count;r=new Uint32Array(a.buffer),t=e+n>>>2,Atomics.add(r,t,1)},subThreadCount:function(e){var r,t,n=G.offset.thread_count;r=new Uint32Array(a.buffer),t=e+n>>>2,Atomics.sub(r,t,1)},getState:function(e){return Atomics.load(new Int32Array(a.buffer),e+G.offset.state>>>2)},setState:function(e,r){Atomics.store(new Int32Array(a.buffer),e+G.offset.state>>>2,r)},getHandlesClosing:function(e){return Atomics.load(new Int8Array(a.buffer),e+G.offset.handles_closing)},setHandlesClosing:function(e,r){Atomics.store(new Int8Array(a.buffer),e+G.offset.handles_closing,r)},getDispatchState:function(e){return Atomics.load(new Uint32Array(a.buffer),e+G.offset.dispatch_state>>>2)},getContext:function(e){return G.loadSizeTypeValue(e+G.offset.context,!1)},getMaxQueueSize:function(e){return G.loadSizeTypeValue(e+G.offset.max_queue_size,!0)},getEnv:function(e){return G.loadSizeTypeValue(e+G.offset.env,!1)},getCallJSCb:function(e){return G.loadSizeTypeValue(e+G.offset.call_js_cb,!1)},getRef:function(e){return G.loadSizeTypeValue(e+G.offset.ref,!1)},getResource:function(e){return G.loadSizeTypeValue(e+G.offset.resource,!1)},getFinalizeCb:function(e){return G.loadSizeTypeValue(e+G.offset.finalize_cb,!1)},getFinalizeData:function(e){return G.loadSizeTypeValue(e+G.offset.finalize_data,!1)},loadSizeTypeValue:function(e,r){var t;return r?(t=new Uint32Array(a.buffer),Atomics.load(t,e>>>2)):(t=new Int32Array(a.buffer),Atomics.load(t,e>>>2))},storeSizeTypeValue:function(e,r,t){var n;return t?(n=new Uint32Array(a.buffer),void Atomics.store(n,e>>>2,r)):(n=new Int32Array(a.buffer),void Atomics.store(n,e>>>2,r>>>0))},releaseResources:function(e){if(2!==G.getState(e)){G.setState(e,2);var r=G.getEnv(e),t=d.envStore.get(r),n=G.getRef(e);n&&d.refStore.get(n).dispose();var o=G.getResource(e);d.refStore.get(o).dispose(),new DataView(a.buffer).setInt8(e+G.offset.is_some,0,!0),d.removeCleanupHook(t,G.cleanup,e),t.unref();var s=e+G.offset.async_ref>>>2,i=new Uint32Array(a.buffer);if(Atomics.load(i,s)>0&&(Atomics.store(i,s,0),d.decreaseWaitingRequestCounter()),v){var u=new DataView(a.buffer);O(u.getFloat64(e+G.offset.async_id,!0),u.getFloat64(e+G.offset.trigger_async_id,!0))}}},destroy:function(e){G._liveSet.delete(e),G.destroyQueue(e),G.releaseResources(e),i(e)},emptyQueue:function(e){var r=[];G.getMutex(e).execute(function(){for(;G.getQueueSize(e)>0;)r.push(G.shiftQueue(e))});for(var t,n=G.getCallJSCb(e),a=G.getContext(e),s=0;s0?G.releaseResources(e):r=!0}),r&&G.destroy(e)},finalize:function(e){var r=G.getEnv(e),t=d.envStore.get(r);d.openScope(t);var n=G.getFinalizeCb(e),o=G.getFinalizeData(e),s=G.getContext(e),i=function(){t.callFinalizerInternal(0,n,o,s)};try{if(G.emptyQueue(e),n)if(v){var u=G.getResource(e),f=d.refStore.get(u).get(),c=d.handleStore.get(f).value,l=new DataView(a.buffer),p=l.getFloat64(e+G.offset.async_id,!0),g=l.getFloat64(e+G.offset.trigger_async_id,!0);v.node.makeCallback(c,i,[],{asyncId:p,triggerAsyncId:g})}else i();G.maybeDelete(e)}finally{d.closeScope(t)}},cleanup:function(e){G.closeHandlesAndMaybeDelete(e,1)},closeHandlesAndMaybeDelete:function(e,r){var t=G.getEnv(e),n=d.envStore.get(t);d.openScope(n);try{if(r&&G.getMutex(e).execute(function(){G.setState(e,1),G.getMaxQueueSize(e)>0&&G.getCond(e).signal()}),G.getHandlesClosing(e))return;G.setHandlesClosing(e,1),Atomics.store(new Int32Array(a.buffer),e+G.offset.async_pending>>>2,1),d.feature.setImmediate(function(){G.finalize(e)})}finally{d.closeScope(n)}},dispatchOne:function(e){var r=0,t=!1,n=!1,s=G.getMutex(e),i=G.getCond(e);if(s.execute(function(){if(0===G.getState(e)){var a=G.getQueueSize(e);if(a>0){r=G.shiftQueue(e),t=!0;var o=G.getMaxQueueSize(e);a===o&&o>0&&i.signal(),a--}0===a?0===G.getThreadCount(e)&&(G.setState(e,1),G.getMaxQueueSize(e)>0&&i.signal(),G.closeHandlesAndMaybeDelete(e,0)):n=!0}else G.closeHandlesAndMaybeDelete(e,0)}),t){var u=G.getEnv(e),f=d.envStore.get(u);d.openScope(f);var c=function(){f.callbackIntoModule(!1,function(){var t=G.getCallJSCb(e),n=G.getRef(e),a=n?d.refStore.get(n).get():0;if(t){var s=G.getContext(e);o.get(t)(u,a,s,r)}else{var i=a?d.handleStore.get(a).value:null;"function"==typeof i&&i()}})};try{if(v){var l=G.getResource(e),p=d.refStore.get(l).get(),g=d.handleStore.get(p).value,y=new DataView(a.buffer);v.node.makeCallback(g,c,[],{asyncId:y.getFloat64(e+G.offset.async_id,!0),triggerAsyncId:y.getFloat64(e+G.offset.trigger_async_id,!0)})}else c()}finally{d.closeScope(f)}}return n},dispatch:function(e){for(var r=!0,t=1e3,n=new Uint32Array(a.buffer),o=e+G.offset.dispatch_state>>>2;r&&0!==--t;)Atomics.store(n,o,1),r=G.dispatchOne(e),1!==Atomics.exchange(n,o,0)&&(r=!0);r&&G.send(e)},enqueue:function(e){var r=e+G.offset.async_pending,t=e+G.offset.async_u_fd,n=new Int32Array(a.buffer);0===Atomics.exchange(n,t>>>2,1)&&d.feature.setImmediate(function(){G._liveSet.has(e)&&(0!==Atomics.load(n,r>>>2)?d.feature.setImmediate(function(){try{if(0===Atomics.exchange(n,r>>>2,0))return;if(!G._liveSet.has(e))return;G.dispatch(e)}finally{G._liveSet.has(e)&&(Atomics.store(n,t>>>2,0),0!==Atomics.load(n,r>>>2)&&G.enqueue(e))}}):Atomics.store(n,t>>>2,0))})},send:function(e){if(1&~Atomics.or(new Uint32Array(a.buffer),e+G.offset.dispatch_state>>>2,2)){var r=e+G.offset.async_pending;0===Atomics.load(new Int32Array(a.buffer),r>>>2)&&0===Atomics.exchange(new Int32Array(a.buffer),r>>>2,1)&&(void 0!==f&&f?postMessage({__emnapi__:{type:"tsfn-send",payload:{tsfn:e}}}):G.enqueue(e))}}};var z={pool:[],workerReady:null,globalAddress:0,globalOffset:{idle_threads:0,q:4,next:4,prev:8,mutex:12,cond:16,exit_message:20,end:28},offset:{resource:0,async_id:8,trigger_async_id:16,env:24,status:28,queue:32,queue_next:32,queue_prev:36,data:40,execute:44,complete:48,end:52},init:function(){if(z.pool=[],z.workerReady=null,void 0!==S){S.unusedWorkers.forEach(z.addListener),S.runningWorkers.forEach(z.addListener);var e=S.getNewWorker;S.getNewWorker=function(){var r=e.apply(this,arguments);return z.addListener(r),r}}},addListener:function(e){if(!e)return!1;if(e._emnapiAWMTListener)return!0;var r=function(e){var r=(u?e:e.data).__emnapi__;if(r){var t=r.type,n=r.payload;"async-work-complete"===t&&z.callComplete(n.work,0)}};return e._emnapiAWMTListener={handler:r,dispose:function(){u?e.off("message",r):e.removeEventListener("message",r,!1),delete e._emnapiAWMTListener}},u?e.on("message",r):e.addEventListener("message",r,!1),!0},initGlobal:function(){if(!z.globalAddress){z.globalAddress=s(z.globalOffset.end),z.globalAddress>>>=0;var e=z.globalOffset.end,r=z.globalAddress;new Uint8Array(a.buffer,r,e).fill(0),z.queueInit(z.globalAddress+z.globalOffset.q),z.queueInit(z.globalAddress+z.globalOffset.exit_message)}},terminateWorkers:function(){z.pool.forEach(function(e){var r,t;null===(r=e._emnapiAWMTListener)||void 0===r||r.dispose(),null===(t=e._emnapiTSFNListener)||void 0===t||t.dispose(),e.terminate()}),z.pool.length=0},initWorkers:function(e){if(f)return z.workerReady||(z.workerReady=Promise.resolve());if(z.workerReady)return z.workerReady;if(!("emnapi_async_worker_create"in n.exports))throw new TypeError("`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags");var r=n.exports.emnapi_async_worker_create,t=[];z.initGlobal();for(var o=0;o>>=0;var t=new DataView(a.buffer).getInt32(e+20,!0);return(r=S.pthreads[t]).whenLoaded});return z.workerReady=Promise.all(s),z.workerReady},getResource:function(e){return new DataView(a.buffer).getUint32(e+z.offset.resource,!0)},getExecute:function(e){return new DataView(a.buffer).getUint32(e+z.offset.execute,!0)},getComplete:function(e){return new DataView(a.buffer).getUint32(e+z.offset.complete,!0)},getEnv:function(e){return new DataView(a.buffer).getUint32(e+z.offset.env,!0)},getData:function(e){return new DataView(a.buffer).getUint32(e+z.offset.data,!0)},getMutex:function(){var e=z.globalAddress+z.globalOffset.mutex,r={lock:function(){var r="undefined"!=typeof window&&"undefined"!=typeof document&&!u,t=new Int32Array(a.buffer,e,1);if(r)for(;;){if(0===Atomics.compareExchange(t,0,0,10))return}else for(;;){if(0===Atomics.compareExchange(t,0,0,10))return;Atomics.wait(t,0,10)}},unlock:function(){var r=new Int32Array(a.buffer,e,1);if(10!==Atomics.compareExchange(r,0,10,0))throw new Error("Tried to unlock while not holding the mutex");Atomics.notify(r,0,1)},execute:function(e){r.lock();try{return e()}finally{r.unlock()}}};return r},getCond:function(){var e=z.globalAddress+z.globalOffset.cond,r=z.getMutex();return{wait:function(){var t=new Int32Array(a.buffer,e,1),n=Atomics.load(t,0);r.unlock(),Atomics.wait(t,0,n),r.lock()},signal:function(){var r=new Int32Array(a.buffer,e,1);Atomics.add(r,0,1),Atomics.notify(r,0,1)}}},queueInit:function(e){var r=new DataView(a.buffer);r.setUint32(e,e,!0),r.setUint32(e+4,e,!0)},queueInsertTail:function(e,r){var t=new DataView(a.buffer);t.setUint32(r,e,!0);var n=t.getUint32(e+4,!0);t.setUint32(r+4,n,!0);var o=t.getUint32(r+4,!0);t.setUint32(o,r,!0),t.setUint32(e+4,r,!0)},queueRemove:function(e){var r=new DataView(a.buffer),t=r.getUint32(e+4,!0),n=r.getUint32(e,!0);r.setUint32(t,n,!0),r.setUint32(n+4,t,!0)},queueEmpty:function(e){return e==new DataView(a.buffer).getUint32(e,!0)},scheduleWork:function(e){var r;(null===(r=z.workerReady)||void 0===r?void 0:r.ready)||z.initWorkers(m()).then(function(){z.workerReady.ready=!0}).catch(function(e){throw z.workerReady=null,e}),d.increaseWaitingRequestCounter();var t=new Int32Array(a.buffer,e+z.offset.status,1);Atomics.store(t,0,0);var n=z.getMutex(),o=z.getCond();n.lock();try{z.queueInsertTail(z.globalAddress+z.globalOffset.q,e+z.offset.queue)}catch(e){throw d.decreaseWaitingRequestCounter(),n.unlock(),e}new DataView(a.buffer).getUint32(z.globalAddress+z.globalOffset.idle_threads,!0)>0&&o.signal(),n.unlock()},cancelWork:function(e){var r=!1;return z.getMutex().execute(function(){var t=new DataView(a.buffer);(r=!z.queueEmpty(e+z.offset.queue)&&2!==t.getInt32(e+z.offset.status,!0))&&z.queueRemove(e+z.offset.queue)}),r?0!==Atomics.compareExchange(new Int32Array(a.buffer,e+z.offset.status,1),0,0,1)?9:(d.feature.setImmediate(function(){z.callComplete(e,11)}),0):9},callComplete:function(e,r){d.decreaseWaitingRequestCounter();var t=z.getComplete(e),n=z.getEnv(e),s=z.getData(e),i=d.envStore.get(n),u=d.openScope(i),f=function(){t&&i.callbackIntoModule(!0,function(){o.get(t)(n,r,s)})};try{if(v){var c=z.getResource(e),l=d.refStore.get(c).get(),p=d.handleStore.get(l).value,g=new DataView(a.buffer),y=g.getFloat64(e+z.offset.async_id,!0),h=g.getFloat64(e+z.offset.trigger_async_id,!0);v.node.makeCallback(p,f,[],{asyncId:y,triggerAsyncId:h})}else f()}finally{d.closeScope(i,u)}}};z.init();var M=L?function(e,r,t,n,o,s,i){if(!e)return 1;var u,f=d.envStore.get(e);if(f.checkGCAccess(),!n)return f.setLastError(1);if(!i)return f.setLastError(1);if(u=r?Object(d.handleStore.get(r).value):{},!t)return f.setLastError(1);var c=String(d.handleStore.get(t).value),l=x.create(e,u,c,n,o,s);return i>>>=0,new DataView(a.buffer).setUint32(i,l,!0),f.clearLastError()}:function(e,r,t,n,o,i,u){if(!e)return 1;var f,c=d.envStore.get(e);if(c.checkGCAccess(),!n)return c.setLastError(1);if(!u)return c.setLastError(1);if(f=r?Object(d.handleStore.get(r).value):{},!t)return c.setLastError(1);var l=z.offset.end,v=s(l);if(!v)return c.setLastError(9);v>>>=0,new Uint8Array(a.buffer).subarray(v,v+l).fill(0);var p=c.ensureHandleId(f),g=d.createReference(c,p,1,1).id,y=new DataView(a.buffer);return y.setUint32(v,g,!0),j(p,t,-1,v+z.offset.async_id),y.setUint32(v+z.offset.env,e,!0),y.setUint32(v+z.offset.execute,n,!0),y.setUint32(v+z.offset.complete,o,!0),y.setUint32(v+z.offset.data,i,!0),z.queueInit(v+z.offset.queue),u>>>=0,y.setUint32(u,v,!0),c.clearLastError()},F=L?function(e,r){if(!e)return 1;var t=d.envStore.get(e);return t.checkGCAccess(),r?(r>>>=0,x.remove(r),t.clearLastError()):t.setLastError(1)}:function(e,r){if(!e)return 1;var t=d.envStore.get(e);if(t.checkGCAccess(),!r)return t.setLastError(1);r>>>=0;var n=z.getResource(r);if(d.refStore.get(n).dispose(),v){var o=new DataView(a.buffer);O(o.getFloat64(r+z.offset.async_id,!0),o.getFloat64(r+z.offset.trigger_async_id,!0))}return i(r),t.clearLastError()},W=L?function(e,r){if(!e)return 1;var t=d.envStore.get(e);return r?(r>>>=0,x.queue(r),t.clearLastError()):t.setLastError(1)}:function(e,r){if(!e)return 1;var t=d.envStore.get(e);return r?(r>>>=0,z.scheduleWork(r),t.clearLastError()):t.setLastError(1)},q=L?function(e,r){if(!e)return 1;var t=d.envStore.get(e);if(!r)return t.setLastError(1);r>>>=0;var n=x.cancel(r);return 0===n?t.clearLastError():t.setLastError(n)}:function(e,r){if(!e)return 1;var t=d.envStore.get(e);if(!r)return t.setLastError(1);r>>>=0;var n=z.cancelWork(r);return 0===n?t.clearLastError():t.setLastError(n)};g.initWorker=function(e,r){if(!g.childThread)throw new Error("startThread is only available in child threads");if("function"!=typeof n.exports.emnapi_async_worker_init)throw new TypeError("`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags");n.exports.emnapi_async_worker_init(e),o.get(r[0])(r[1])};var N=Object.freeze({__proto__:null,_emnapi_async_worker:function(e){e>>>=0,z.globalAddress=e;var r=z.getMutex(),t=z.getCond();r.lock();for(var n=e+z.globalOffset.exit_message,s=e+z.globalOffset.idle_threads,i=e+z.globalOffset.q,u=new DataView(a.buffer);;){for(;z.queueEmpty(i);)Atomics.add(new Int32Array(a.buffer,s,1),0,1),t.wait(),Atomics.sub(new Int32Array(a.buffer,s,1),0,1);var f=u.getUint32(i,!0);if(f===n){t.signal(),r.unlock();break}var c=f-z.offset.queue;z.queueRemove(f),z.queueInit(f),r.unlock();var d=new Int32Array(a.buffer,c+z.offset.status,1);1===Atomics.load(d,0)&&l("unreachable");var v=z.getExecute(c),p=z.getEnv(c),y=z.getData(c);o.get(v)(p,y),Atomics.store(d,0,2),(0,g.postMessage)({__emnapi__:{type:"async-work-complete",payload:{work:c}}}),r.lock()}return 0},_emnapi_spawn_worker:function(e,r){if("function"!=typeof y)throw new TypeError("`options.onCreateWorker` is not a function");var t=[];if(!("emnapi_async_worker_create"in n.exports))throw new TypeError("`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags");t.push(n.exports.emnapi_async_worker_create(0,0));var a,o=function(e){!("message"in e)||-1===e.message.indexOf("RuntimeError")&&-1===e.message.indexOf("unreachable")||z.terminateWorkers()};try{var s=y({type:"async-work",name:"emnapi-async-worker"}),f=S.loadWasmModuleToWorker(s);u?s.on("error",o):s.addEventListener("error",o,!1),z.addListener(s),G.addListener(s),[].push(f.then(function(){"function"==typeof s.unref&&s.unref()})),a=z.pool.push(s)-1;var c=t[0];s.threadBlockBase=c,s.postMessage({__emnapi__:{type:"async-worker-init",payload:{arg:c,func:[e,r]}}})}catch(e){c=t[0];throw i(c),e}return a},napi_cancel_async_work:q,napi_create_async_work:M,napi_delete_async_work:F,napi_queue_async_work:W}),J={registry:"function"==typeof FinalizationRegistry?new FinalizationRegistry(function(e){i(e)}):void 0,table:new WeakMap,wasmMemoryViewTable:new WeakMap,init:function(){J.registry="function"==typeof FinalizationRegistry?new FinalizationRegistry(function(e){i(e)}):void 0,J.table=new WeakMap,J.wasmMemoryViewTable=new WeakMap},isSharedArrayBuffer:function(e){return"function"==typeof SharedArrayBuffer&&e instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(e)},isDetachedArrayBuffer:function(e){if(0===e.byteLength)try{new Uint8Array(e)}catch(e){return!0}return!1},getArrayBufferPointer:function(e,r){var t,n={address:0,ownership:0,runtimeAllocated:0};if(e===a.buffer)return n;var o=J.isDetachedArrayBuffer(e);if(J.table.has(e)){var i=J.table.get(e);return o?(i.address=0,i):(r&&0===i.ownership&&1===i.runtimeAllocated&&new Uint8Array(a.buffer).set(new Uint8Array(e),i.address),i)}if(o||0===e.byteLength)return n;if(!r)return n;var u=s(e.byteLength);if(!u)throw new Error("Out of memory");return u>>>=0,new Uint8Array(a.buffer).set(new Uint8Array(e),u),n.address=u,n.ownership=J.registry?0:1,n.runtimeAllocated=1,J.table.set(e,n),null===(t=J.registry)||void 0===t||t.register(e,u),n},getOrUpdateMemoryView:function(e){if(e.buffer===a.buffer)return J.wasmMemoryViewTable.has(e)||J.wasmMemoryViewTable.set(e,{Ctor:e.constructor,address:e.byteOffset,length:e instanceof DataView?e.byteLength:e.length,ownership:1,runtimeAllocated:0}),e;if((J.isDetachedArrayBuffer(e.buffer)||J.isSharedArrayBuffer(e.buffer))&&J.wasmMemoryViewTable.has(e)){var r=J.wasmMemoryViewTable.get(e),t=r.Ctor,n=void 0,o=d.feature.Buffer;return n="function"==typeof o&&t===o?o.from(a.buffer,r.address,r.length):new t(a.buffer,r.address,r.length),J.wasmMemoryViewTable.set(n,r),n}return e},getViewPointer:function(e,r){if((e=J.getOrUpdateMemoryView(e)).buffer===a.buffer){if(J.wasmMemoryViewTable.has(e)){var t=J.wasmMemoryViewTable.get(e);return{address:t.address,ownership:t.ownership,runtimeAllocated:t.runtimeAllocated,view:e}}return{address:e.byteOffset,ownership:1,runtimeAllocated:0,view:e}}var n=J.getArrayBufferPointer(e.buffer,r),o=n.address,s=n.ownership,i=n.runtimeAllocated;return{address:0===o?0:o+e.byteOffset,ownership:s,runtimeAllocated:i,view:e}}},P={utf8Decoder:void 0,utf16Decoder:void 0,init:function(){var e,r={decode:function(e){for(var r=0,t=Math.min(4096,e.length+1),n=new Uint16Array(t),a=[],o=0;;){var s=r=t-1){var i=n.subarray(0,o);if(a.push(String.fromCharCode.apply(null,i)),!s)return a.join("");e=e.subarray(r),r=0,o=0}var u=e[r++];if(128&u){if(192==(224&u)){var f=63&e[r++];n[o++]=(31&u)<<6|f}else if(224==(240&u)){f=63&e[r++];var c=63&e[r++];n[o++]=(31&u)<<12|f<<6|c}else if(240==(248&u)){var l=(7&u)<<18|(f=63&e[r++])<<12|(c=63&e[r++])<<6|63&e[r++];l>65535&&(l-=65536,n[o++]=l>>>10&1023|55296,l=56320|1023&l),n[o++]=l}}else n[o++]=u}}};e="function"==typeof TextDecoder?new TextDecoder:r,P.utf8Decoder=e;var t,n={decode:function(e){var r=new Uint16Array(e.buffer,e.byteOffset,e.byteLength/2);if(r.length<=4096)return String.fromCharCode.apply(null,r);for(var t=[],n=0,a=0;n=55296&&r<=57343?(t+=4,++n):t+=3;return t},UTF8ToString:function(e,r){if(!e||!r)return"";e>>>=0;var t=new Uint8Array(a.buffer),n=e;if(-1===r||4294967295===r)for(;t[n];)++n;else n=e+(r>>>0);if((r=n-e)<=16){for(var o=e,s="";o>10,56320|1023&c)}}else s+=String.fromCharCode((31&i)<<6|u)}else s+=String.fromCharCode(i)}return s}return P.utf8Decoder.decode("function"==typeof SharedArrayBuffer&&t.buffer instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(t.buffer)?t.slice(e,n):t.subarray(e,n))},stringToUTF8:function(e,r,t){var n=new Uint8Array(a.buffer),o=r;if(!(t>0))return 0;for(var s=o>>>=0,i=o+t-1,u=0;u=55296&&f<=57343)f=65536+((1023&f)<<10)|1023&e.charCodeAt(++u);if(f<=127){if(o>=i)break;n[o++]=f}else if(f<=2047){if(o+1>=i)break;n[o++]=192|f>>6,n[o++]=128|63&f}else if(f<=65535){if(o+2>=i)break;n[o++]=224|f>>12,n[o++]=128|f>>6&63,n[o++]=128|63&f}else{if(o+3>=i)break;n[o++]=240|f>>18,n[o++]=128|f>>12&63,n[o++]=128|f>>6&63,n[o++]=128|63&f}}return n[o]=0,o-s},UTF16ToString:function(e,r){if(!e||!r)return"";var t=e>>>=0;if(-1===r||4294967295===r){for(var n=t>>>1,o=new Uint16Array(a.buffer);o[n];)++n;t=n<<1>>>0}else t=e+2*(r>>>0);if((r=t-e)<=32)return String.fromCharCode.apply(null,new Uint16Array(a.buffer,e,r/2));var s=new Uint8Array(a.buffer);return P.utf16Decoder.decode("function"==typeof SharedArrayBuffer&&s.buffer instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(s.buffer)?s.slice(e,t):s.subarray(e,t))},stringToUTF16:function(e,r,t){if(void 0===t&&(t=2147483647),t<2)return 0;for(var n=r,o=(t-=2)<2*e.length?t/2:e.length,s=new DataView(a.buffer),i=0;i>>=0,!e)return 1;var s=d.envStore.get(e);s.checkGCAccess();var i=-1===t||4294967295===t,u=t>>>0;if(0!==t&&!r)return s.setLastError(1);if(!n)return s.setLastError(1);if(!(i||u<=2147483647))return s.setLastError(1);var f=o(r>>>=0,i,u);n>>>=0;var c=d.addToCurrentScope(f).id;return new DataView(a.buffer).setUint32(n,c,!0),s.clearLastError()},newExternalString:function(e,r,t,n,o,s,i,u,f){if(t>>>=0,!e)return 1;var c=d.envStore.get(e);c.checkGCAccess();var l=-1===t||4294967295===t,v=t>>>0;if(0!==t&&!r)return c.setLastError(1);if(!s)return c.setLastError(1);if(!(l||v<=2147483647))return c.setLastError(1);var p=u(e,r,t,s);if(0===p){if(i)new DataView(a.buffer).setInt8(i,1,!0);n&&c.callFinalizer(n,r,o)}return p}};function H(e,r,t,n,o,s,i){if(!e)return 1;var u=d.envStore.get(e);if(u.checkGCAccess(),!r)return u.setLastError(1);var f=d.handleStore.get(r);if(!f.isTypedArray())return u.setLastError(1);var c=f.value,l=new DataView(a.buffer);if(t){t>>>=0;var v=void 0;if(c instanceof Int8Array)v=0;else if(c instanceof Uint8Array)v=1;else if(c instanceof Uint8ClampedArray)v=2;else if(c instanceof Int16Array)v=3;else if(c instanceof Uint16Array)v=4;else if(c instanceof Int32Array)v=5;else if(c instanceof Uint32Array)v=6;else if("function"==typeof Float16Array&&c instanceof Float16Array)v=11;else if(c instanceof Float32Array)v=7;else if(c instanceof Float64Array)v=8;else if(c instanceof BigInt64Array)v=9;else{if(!(c instanceof BigUint64Array))return u.setLastError(9);v=10}l.setInt32(t,v,!0)}if(c=J.getOrUpdateMemoryView(c),n&&(n>>>=0,l.setUint32(n,c.length,!0)),o||s){if(o){o>>>=0;var p=J.getViewPointer(c,!0).address;l.setUint32(o,p,!0)}if(s){s>>>=0;var g=u.ensureHandleId(c.buffer);l.setUint32(s,g,!0)}}return i&&(i>>>=0,l.setUint32(i,c.byteOffset,!0)),u.clearLastError()}function Q(e,r,t,n,o,s){if(!e)return 1;var i=d.envStore.get(e);if(i.checkGCAccess(),!r)return i.setLastError(1);var u=d.handleStore.get(r);if(!u.isDataView())return i.setLastError(1);var f=J.getOrUpdateMemoryView(u.value),c=new DataView(a.buffer);if(t&&(t>>>=0,c.setUint32(t,f.byteLength,!0)),n||o){if(n){n>>>=0;var l=J.getViewPointer(f,!0).address;c.setUint32(n,l,!0)}if(o){o>>>=0;var v=i.ensureHandleId(f.buffer);c.setUint32(o,v,!0)}}return s&&(s>>>=0,c.setUint32(s,f.byteOffset,!0)),i.clearLastError()}var $=Object.freeze({__proto__:null,napi_get_array_length:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!r)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(r);if(!o.isArray())return n.setLastError(8);t>>>=0;var s=o.value.length>>>0;return new DataView(a.buffer).setUint32(t,s,!0),n.getReturnStatus()}catch(e){return n.tryCatch.setError(e),n.setLastError(10)}},napi_get_arraybuffer_info:function(e,r,t,n){if(!e)return 1;var o=d.envStore.get(e);if(o.checkGCAccess(),!r)return o.setLastError(1);var s=d.handleStore.get(r);if(!s.isArrayBuffer()&&!J.isSharedArrayBuffer(s.value))return o.setLastError(1);var i=new DataView(a.buffer);if(t){t>>>=0;var u=J.getArrayBufferPointer(s.value,!0).address;i.setUint32(t,u,!0)}return n&&(n>>>=0,i.setUint32(n,s.value.byteLength,!0)),o.clearLastError()},napi_get_buffer_info:function(e,r,t,n){if(!e)return 1;var a=d.envStore.get(e);if(a.checkGCAccess(),!r)return a.setLastError(1);var o=d.handleStore.get(r);return o.isBuffer(d.feature.Buffer)?o.isDataView()?Q(e,r,n,t,0,0):H(e,r,0,n,t,0,0):a.setLastError(1)},napi_get_dataview_info:Q,napi_get_date_value:function(e,r,t){var n;if(!e)return 1;var o=d.envStore.get(e);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{if(!r)return o.setLastError(1);if(!t)return o.setLastError(1);var s=d.handleStore.get(r);return s.isDate()?(t>>>=0,n=s.value.valueOf(),new DataView(a.buffer).setFloat64(t,n,!0),o.getReturnStatus()):o.setLastError(1)}catch(e){return o.tryCatch.setError(e),o.setLastError(10)}},napi_get_prototype:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!r)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(r);if(null==o.value)throw new TypeError("Cannot convert undefined or null to object");var s=void 0;try{s=o.isObject()||o.isFunction()?o.value:Object(o.value)}catch(e){return n.setLastError(2)}t>>>=0;var i=n.ensureHandleId(Object.getPrototypeOf(s));return new DataView(a.buffer).setUint32(t,i,!0),n.getReturnStatus()}catch(e){return n.tryCatch.setError(e),n.setLastError(10)}},napi_get_typedarray_info:H,napi_get_value_bigint_int64:function(e,r,t,n){if(!e)return 1;var o=d.envStore.get(e);if(o.checkGCAccess(),!d.feature.supportBigInt)return o.setLastError(9);if(!r)return o.setLastError(1);if(!t)return o.setLastError(1);if(!n)return o.setLastError(1);var s=d.handleStore.get(r).value;if("bigint"!=typeof s)return o.setLastError(6);n>>>=0,t>>>=0;var i=new DataView(a.buffer);s>=BigInt(-1)*(BigInt(1)<=BigInt(1)<>BigInt(32));return i.setInt32(t,u,!0),i.setInt32(t+4,f,!0),o.clearLastError()},napi_get_value_bigint_uint64:function(e,r,t,n){if(!e)return 1;var o=d.envStore.get(e);if(o.checkGCAccess(),!d.feature.supportBigInt)return o.setLastError(9);if(!r)return o.setLastError(1);if(!t)return o.setLastError(1);if(!n)return o.setLastError(1);var s=d.handleStore.get(r).value;if("bigint"!=typeof s)return o.setLastError(6);n>>>=0,t>>>=0;var i=new DataView(a.buffer);s>=BigInt(0)&&s>BigInt(32));return i.setUint32(t,u,!0),i.setUint32(t+4,f,!0),o.clearLastError()},napi_get_value_bigint_words:function(e,r,t,n,o){if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!d.feature.supportBigInt)return s.setLastError(9);if(!r)return s.setLastError(1);if(!n)return s.setLastError(1);var i=d.handleStore.get(r);if(!i.isBigInt())return s.setLastError(17);var u=i.value>>=0,o>>>=0,n>>>=0;var f=new DataView(a.buffer),c=f.getUint32(n,!0);c>>>=0;for(var l=0,v=u?i.value*BigInt(-1):i.value;v!==BigInt(0);)l++,v>>=BigInt(64);if(v=u?i.value*BigInt(-1):i.value,t||o){if(!t)return s.setLastError(1);if(!o)return s.setLastError(1);for(var p=[];v!==BigInt(0);){var g=v&(BigInt(1)<>=BigInt(64)}for(var y=Math.min(c,p.length),h=0;h>BigInt(32));f.setUint32(o+8*h,_,!0),f.setUint32(o+(8*h+4),E,!0)}f.setInt32(t,u?1:0,!0),f.setUint32(n,y,!0)}else c=l,f.setUint32(n,c,!0);return s.clearLastError()},napi_get_value_bool:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(r);if("boolean"!=typeof o.value)return n.setLastError(7);t>>>=0;var s=o.value?1:0;return new DataView(a.buffer).setInt8(t,s,!0),n.clearLastError()},napi_get_value_double:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(r);if("number"!=typeof o.value)return n.setLastError(6);t>>>=0;var s=o.value;return new DataView(a.buffer).setFloat64(t,s,!0),n.clearLastError()},napi_get_value_external:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(r);if(!o.isExternal())return n.setLastError(1);t>>>=0;var s=o.data();return new DataView(a.buffer).setUint32(t,s,!0),n.clearLastError()},napi_get_value_int32:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(r);if("number"!=typeof o.value)return n.setLastError(6);t>>>=0;var s=new Int32Array([o.value])[0];return new DataView(a.buffer).setInt32(t,s,!0),n.clearLastError()},napi_get_value_int64:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(r);if("number"!=typeof o.value)return n.setLastError(6);var s=o.value;t>>>=0;var i=new DataView(a.buffer);return s===Number.POSITIVE_INFINITY||s===Number.NEGATIVE_INFINITY||isNaN(s)?(i.setInt32(t,0,!0),i.setInt32(t+4,0,!0)):s<-0x8000000000000000?(i.setInt32(t,0,!0),i.setInt32(t+4,2147483648,!0)):s>=0x8000000000000000?(i.setUint32(t,4294967295,!0),i.setUint32(t+4,2147483647,!0)):I(t,Math.trunc(s)),n.clearLastError()},napi_get_value_string_latin1:function(e,r,t,n,o){if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!r)return s.setLastError(1);o>>>=0,t>>>=0,n>>>=0,n>>>=0;var i=d.handleStore.get(r);if("string"!=typeof i.value)return s.setLastError(3);var u=new DataView(a.buffer);if(t)if(0!==n){for(var f=0,c=void 0,l=0;l>>=0,t>>>=0,n>>>=0,n>>>=0;var i=d.handleStore.get(r);if("string"!=typeof i.value)return s.setLastError(3);var u=new DataView(a.buffer);if(t)if(0!==n){var f=P.stringToUTF16(i.value,t,2*n);o&&u.setUint32(o,f/2,!0)}else o&&u.setUint32(o,0,!0);else{if(!o)return s.setLastError(1);u.setUint32(o,i.value.length,!0)}return s.clearLastError()},napi_get_value_string_utf8:function(e,r,t,n,o){if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!r)return s.setLastError(1);o>>>=0,t>>>=0,n>>>=0,n>>>=0;var i=d.handleStore.get(r);if("string"!=typeof i.value)return s.setLastError(3);var u=new DataView(a.buffer);if(t)if(0!==n){var f=P.stringToUTF8(i.value,t,n);o&&u.setUint32(o,f,!0)}else o&&u.setUint32(o,0,!0);else{if(!o)return s.setLastError(1);var c=P.lengthBytesUTF8(i.value);u.setUint32(o,c,!0)}return s.clearLastError()},napi_get_value_uint32:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(r);if("number"!=typeof o.value)return n.setLastError(6);t>>>=0;var s=new Uint32Array([o.value])[0];return new DataView(a.buffer).setUint32(t,s,!0),n.clearLastError()},node_api_set_prototype:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!t)return n.setLastError(1);var a=d.handleStore.get(r).value;if(null==a)throw new TypeError("Cannot convert undefined or null to object");var o=typeof a,s=void 0;try{s="object"===o&&null!==a||"function"===o?a:Object(a)}catch(e){return n.setLastError(2)}var i=d.handleStore.get(t).value;return Object.setPrototypeOf(s,i),n.getReturnStatus()}catch(e){return n.tryCatch.setError(e),n.setLastError(10)}}});function Y(e,r,t,n){return P.newString(e,r,t,n,function(e,r,t){var n="",o=0,s=new DataView(a.buffer);if(r)for(;;){if(!(i=s.getUint8(e,!0)))break;n+=String.fromCharCode(i),e++}else for(;o>>=0,new DataView(a.buffer).setUint32(t,i,!0),s.clearLastError()},napi_create_bigint_uint64:function(e,r,t,n){if(!e)return 1;var o,s=d.envStore.get(e);if(s.checkGCAccess(),!d.feature.supportBigInt)return s.setLastError(9);if(!t)return s.setLastError(1);o=r&(BigInt(1)<>>=0,new DataView(a.buffer).setUint32(t,i,!0),s.clearLastError()},napi_create_bigint_words:function(e,r,t,n,o){var s,i;if(!e)return 1;var u=d.envStore.get(e);if(u.checkGCAccess(),!u.tryCatch.isEmpty())return u.setLastError(10);if(!u.canCallIntoJs())return u.setLastError(u.moduleApiVersion>=10?23:10);u.clearLastError();try{if(!d.feature.supportBigInt)return u.setLastError(9);if(!o)return u.setLastError(1);if(n>>>=0,t>>>=0,(t>>>=0)>2147483647)return u.setLastError(1);if(t>16384)throw new RangeError("Maximum BigInt size exceeded");var f=BigInt(0),c=new DataView(a.buffer);for(i=0;i>>=0,s=d.addToCurrentScope(f).id,c.setUint32(o,s,!0),u.getReturnStatus()}catch(e){return u.tryCatch.setError(e),u.setLastError(10)}},napi_create_double:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!t)return n.setLastError(1);t>>>=0;var o=d.addToCurrentScope(r).id;return new DataView(a.buffer).setUint32(t,o,!0),n.clearLastError()},napi_create_int32:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!t)return n.setLastError(1);t>>>=0;var o=d.addToCurrentScope(r).id;return new DataView(a.buffer).setUint32(t,o,!0),n.clearLastError()},napi_create_int64:function(e,r,t,n){if(!e)return 1;var o,s=d.envStore.get(e);if(s.checkGCAccess(),!t)return s.setLastError(1);o=Number(r);var i=d.addToCurrentScope(o).id;return t>>>=0,new DataView(a.buffer).setUint32(t,i,!0),s.clearLastError()},napi_create_string_latin1:Y,napi_create_string_utf16:X,napi_create_string_utf8:Z,napi_create_uint32:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!t)return n.setLastError(1);t>>>=0;var o=d.addToCurrentScope(r>>>0).id;return new DataView(a.buffer).setUint32(t,o,!0),n.clearLastError()},node_api_create_external_string_latin1:function(e,r,t,n,a,o,s){return P.newExternalString(e,r,t,n,a,o,s,Y,void 0)},node_api_create_external_string_utf16:function(e,r,t,n,a,o,s){return P.newExternalString(e,r,t,n,a,o,s,X,void 0)},node_api_create_property_key_latin1:function(e,r,t,n){return Y(e,r,t,n)},node_api_create_property_key_utf16:function(e,r,t,n){return X(e,r,t,n)},node_api_create_property_key_utf8:function(e,r,t,n){return Z(e,r,t,n)}});function ee(e,r,t,n,a){var s,i=(r>>>=0)&&t?P.UTF8ToString(r,t):"",u=o.get(n),f=function(e){return u(e.id,e.ctx.scopeStore.currentScope.id)},c=function(e,r){return function(){var t=e.ctx.openScope(e),n=t.callbackInfo;n.data=a,n.args=arguments,n.thiz=this,n.fn=s;try{var o=e.callIntoModule(r);return o?e.ctx.handleStore.get(o).value:void 0}finally{n.data=0,n.args=void 0,n.thiz=void 0,n.fn=void 0,e.ctx.closeScope(e,t)}}};if(""===i)return{status:0,f:s=c(e,f)};if(!/^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(i))return{status:1,f:void 0};if(d.feature.supportNewFunction){var l=c(e,f);try{s=new Function("_","return function "+i+'(){"use strict";return _.apply(this,arguments);};')(l)}catch(r){s=c(e,f),d.feature.canSetFunctionName&&Object.defineProperty(s,"name",{value:i})}}else s=c(e,f),d.feature.canSetFunctionName&&Object.defineProperty(s,"name",{value:i});return{status:0,f:s}}function re(e,r,t,n,a,o,s,i,u){if(a||o){var f=void 0,c=void 0;a&&(f=ee(e,0,0,a,u).f),o&&(c=ee(e,0,0,o,u).f);var l={configurable:!!(4&i),enumerable:!!(2&i),get:f,set:c};Object.defineProperty(r,t,l)}else if(n){l={configurable:!!(4&i),enumerable:!!(2&i),writable:!!(1&i),value:ee(e,0,0,n,u).f};Object.defineProperty(r,t,l)}else{l={configurable:!!(4&i),enumerable:!!(2&i),writable:!!(1&i),value:d.handleStore.get(s).value};Object.defineProperty(r,t,l)}}function te(e){var r=d.handleStore.get(e);return r.isObject()||r.isFunction()?(void 0!==J&&ArrayBuffer.isView(r.value)&&J.wasmMemoryViewTable.has(r.value)&&(r=d.addToCurrentScope(J.wasmMemoryViewTable.get(r.value))),{status:0,handle:r}):{status:1}}function ne(e,r,t,n){var o;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!r)return s.setLastError(1);if(0===n&&!t)return s.setLastError(1);var i=d.handleStore.get(r);if(!i.isObject()&&!i.isFunction())return s.setLastError(1);var u=s.getObjectBinding(i.value),f=u.wrapped,c=d.refStore.get(f);if(!c)return s.setLastError(1);if(t)t>>>=0,o=c.data(),new DataView(a.buffer).setUint32(t,o,!0);return 1===n&&(u.wrapped=0,1===c.ownership()?c.resetFinalizer():c.dispose()),s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}}function ae(e,r,t,n,o,s){if(!e)return 1;var i=d.envStore.get(e);if(i.checkGCAccess(),!d.feature.supportFinalizer)return i.setLastError(9);if(!r)return i.setLastError(1);if(!n)return i.setLastError(1);var u=te(r);if(0!==u.status)return i.setLastError(u.status);var f=u.handle,c=s?1:0;t>>>=0,n>>>=0,o>>>=0;var l=d.createReferenceWithFinalizer(i,f.id,0,c,n,t,o);if(s){s>>>=0;var v=l.id;new DataView(a.buffer).setUint32(s,v,!0)}return i.clearLastError()}var oe=Object.freeze({__proto__:null,napi_add_finalizer:ae,napi_check_object_type_tag:function(e,r,t,n){var o=!0;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!r)return s.setLastError(s.tryCatch.hasCaught()?10:1);var i=d.handleStore.get(r);if(!i.isObject()&&!i.isFunction())return s.setLastError(s.tryCatch.hasCaught()?10:2);if(!t)return s.setLastError(s.tryCatch.hasCaught()?10:1);if(!n)return s.setLastError(s.tryCatch.hasCaught()?10:1);var u=s.getObjectBinding(i.value);if(null!==u.tag){t>>>=0;var f=u.tag,c=new Uint32Array(a.buffer,t,4);o=f[0]===c[0]&&f[1]===c[1]&&f[2]===c[2]&&f[3]===c[3]}else o=!1;return n>>>=0,new DataView(a.buffer).setInt8(n,o?1:0,!0),s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_define_class:function(e,r,t,n,o,s,i,u){var f,c,l;if(!e)return 1;var v=d.envStore.get(e);if(v.checkGCAccess(),!v.tryCatch.isEmpty())return v.setLastError(10);if(!v.canCallIntoJs())return v.setLastError(v.moduleApiVersion>=10?23:10);v.clearLastError();try{if(!u)return v.setLastError(1);if(!n)return v.setLastError(1);if(t>>>=0,i>>>=0,s>>>=0,(s>>>=0)>0&&!i)return v.setLastError(1);if(!(t>=-1&&t<=2147483647||4294967295===t)||!r)return v.setLastError(1);var p=ee(v,r,t,n,o);if(0!==p.status)return v.setLastError(p.status);for(var g=p.f,y=void 0,h=new DataView(a.buffer),_=0;_>>=0;var A=h.getUint32(f+28,!0);if(E)y=P.UTF8ToString(E,-1);else{if(!w)return v.setLastError(4);if("string"!=typeof(y=d.handleStore.get(w).value)&&"symbol"!=typeof y)return v.setLastError(4)}1024&l?re(v,g,y,L,m,b,S,l,A):re(v,g.prototype,y,L,m,b,S,l,A)}return c=d.addToCurrentScope(g).id,u>>>=0,h.setUint32(u,c,!0),v.getReturnStatus()}catch(e){return v.tryCatch.setError(e),v.setLastError(10)}},napi_remove_wrap:function(e,r,t){return ne(e,r,t,1)},napi_type_tag_object:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!r)return n.setLastError(n.tryCatch.hasCaught()?10:1);var o=d.handleStore.get(r);if(!o.isObject()&&!o.isFunction())return n.setLastError(n.tryCatch.hasCaught()?10:2);if(!(t>>>=0))return n.setLastError(n.tryCatch.hasCaught()?10:1);var s=n.getObjectBinding(o.value);if(null!==s.tag)return n.setLastError(n.tryCatch.hasCaught()?10:1);var i=new Uint8Array(16);return i.set(new Uint8Array(a.buffer,t,16)),s.tag=new Uint32Array(i.buffer),n.getReturnStatus()}catch(e){return n.tryCatch.setError(e),n.setLastError(10)}},napi_unwrap:function(e,r,t){return ne(e,r,t,0)},napi_wrap:function(e,r,t,n,o,s){return function(e,r,t,n,o,s){var i;if(!e)return 1;var u=d.envStore.get(e);if(u.checkGCAccess(),!u.tryCatch.isEmpty())return u.setLastError(10);if(!u.canCallIntoJs())return u.setLastError(u.moduleApiVersion>=10?23:10);u.clearLastError();try{if(!d.feature.supportFinalizer){if(n)throw d.createNotSupportWeakRefError("napi_wrap",'Parameter "finalize_cb" must be 0(NULL)');if(s)throw d.createNotSupportWeakRefError("napi_wrap",'Parameter "result" must be 0(NULL)')}if(!r)return u.setLastError(1);var f=te(r);if(0!==f.status)return u.setLastError(f.status);var c=f.handle;if(0!==u.getObjectBinding(c.value).wrapped)return u.setLastError(1);var l=void 0;if(s){if(!n)return u.setLastError(1);l=d.createReferenceWithFinalizer(u,c.id,0,1,n,t,o),s>>>=0,i=l.id,new DataView(a.buffer).setUint32(s,i,!0)}else l=n?d.createReferenceWithFinalizer(u,c.id,0,0,n,t,o):d.createReferenceWithData(u,c.id,0,0,t);return u.getObjectBinding(c.value).wrapped=l.id,u.getReturnStatus()}catch(e){return u.tryCatch.setError(e),u.setLastError(10)}}(e,r,t,n,o,s)},node_api_post_finalizer:function(e,r,t,n){if(!e)return 1;var a=d.envStore.get(e);return a.enqueueFinalizer(d.createTrackedFinalizer(a,r,t,n)),a.clearLastError()}});function se(e,r,t,n,o,s,i){var u;if(!e)return 1;var f=d.envStore.get(e);if(f.checkGCAccess(),!f.tryCatch.isEmpty())return f.setLastError(10);if(!f.canCallIntoJs())return f.setLastError(f.moduleApiVersion>=10?23:10);f.clearLastError();try{if(!i)return f.setLastError(1);if(n>>>=0,i>>>=0,n>>>=0,(t>>>=0)||(n=0),n>2147483647)throw new RangeError("Cannot create a memory view larger than 2147483647 bytes");if(t+n>a.buffer.byteLength)throw new RangeError("Memory out of range");if(!d.feature.supportFinalizer&&o)throw d.createNotSupportWeakRefError("emnapi_create_memory_view",'Parameter "finalize_cb" must be 0(NULL)');var c=void 0;switch(r){case 0:c={Ctor:Int8Array,address:t,length:n,ownership:1,runtimeAllocated:0};break;case 1:c={Ctor:Uint8Array,address:t,length:n,ownership:1,runtimeAllocated:0};break;case 2:c={Ctor:Uint8ClampedArray,address:t,length:n,ownership:1,runtimeAllocated:0};break;case 3:c={Ctor:Int16Array,address:t,length:n>>1,ownership:1,runtimeAllocated:0};break;case 4:c={Ctor:Uint16Array,address:t,length:n>>1,ownership:1,runtimeAllocated:0};break;case 5:c={Ctor:Int32Array,address:t,length:n>>2,ownership:1,runtimeAllocated:0};break;case 6:c={Ctor:Uint32Array,address:t,length:n>>2,ownership:1,runtimeAllocated:0};break;case 7:c={Ctor:Float32Array,address:t,length:n>>2,ownership:1,runtimeAllocated:0};break;case 8:c={Ctor:Float64Array,address:t,length:n>>3,ownership:1,runtimeAllocated:0};break;case 9:c={Ctor:BigInt64Array,address:t,length:n>>3,ownership:1,runtimeAllocated:0};break;case 10:c={Ctor:BigUint64Array,address:t,length:n>>3,ownership:1,runtimeAllocated:0};break;case-1:c={Ctor:DataView,address:t,length:n,ownership:1,runtimeAllocated:0};break;case 11:if("function"!=typeof Float16Array)return f.setLastError(1);c={Ctor:Float16Array,address:t,length:n>>1,ownership:1,runtimeAllocated:0};break;case-2:if(!d.feature.Buffer)throw d.createNotSupportBufferError("emnapi_create_memory_view","");c={Ctor:d.feature.Buffer,address:t,length:n,ownership:1,runtimeAllocated:0};break;default:return f.setLastError(1)}var l=c.Ctor,v=-2===r?d.feature.Buffer.from(a.buffer,c.address,c.length):new l(a.buffer,c.address,c.length),p=d.addToCurrentScope(v);if(J.wasmMemoryViewTable.set(v,c),o){var g=ae(e,p.id,t,o,s,0);if(10===g){var y=f.tryCatch.extractException();throw f.clearLastError(),y}if(0!==g)return f.setLastError(g)}return u=p.id,new DataView(a.buffer).setUint32(i,u,!0),f.getReturnStatus()}catch(y){return f.tryCatch.setError(y),f.setLastError(10)}}function ie(e,r,t,n){var o;if(t=null!=t?t:0,t>>>=0,r instanceof ArrayBuffer||J.isSharedArrayBuffer(r)){if(!(i=J.getArrayBufferPointer(r,!1).address))throw new Error("Unknown ArrayBuffer address");if("number"==typeof n&&-1!==n&&4294967295!==n||(n=r.byteLength-t),0===(n>>>=0))return r;o=new Uint8Array(r,t,n);var s=new Uint8Array(a.buffer);return e?s.set(o,i):o.set(s.subarray(i,i+n)),r}if(ArrayBuffer.isView(r)){var i,u=J.getViewPointer(r,!1),f=u.view;if(!(i=u.address))throw new Error("Unknown ArrayBuffer address");if("number"==typeof n&&-1!==n&&4294967295!==n||(n=f.byteLength-t),0===(n>>>=0))return f;o=new Uint8Array(f.buffer,f.byteOffset+t,n);s=new Uint8Array(a.buffer);return e?s.set(o,i):o.set(s.subarray(i,i+n)),f}throw new TypeError("emnapiSyncMemory expect ArrayBuffer or ArrayBufferView as first parameter")}function ue(e){var r,t=e instanceof ArrayBuffer,n=e instanceof DataView,a=ArrayBuffer.isView(e)&&!n;if(!(t||a||n||J.isSharedArrayBuffer(e)))throw new TypeError("emnapiGetMemoryAddress expect ArrayBuffer or ArrayBufferView as first parameter");return{address:(r=t?J.getArrayBufferPointer(e,!1):J.getViewPointer(e,!1)).address,ownership:r.ownership,runtimeAllocated:r.runtimeAllocated}}var fe=Object.freeze({__proto__:null,$emnapiGetMemoryAddress:ue,$emnapiSyncMemory:ie,emnapi_create_memory_view:se,emnapi_get_memory_address:function(e,r,t,n,o){var s,i,u,f;if(!e)return 1;var c=d.envStore.get(e);if(c.checkGCAccess(),!c.tryCatch.isEmpty())return c.setLastError(10);if(!c.canCallIntoJs())return c.setLastError(c.moduleApiVersion>=10?23:10);c.clearLastError();try{if(!r)return c.setLastError(1);if(!t&&!n&&!o)return c.setLastError(1);s=(f=ue(c.ctx.handleStore.get(r).value)).address;var l=new DataView(a.buffer);return t&&(t>>>=0,l.setUint32(t,s,!0)),n&&(n>>>=0,u=f.ownership,l.setInt32(n,u,!0)),o&&(o>>>=0,i=f.runtimeAllocated,l.setInt8(o,i,!0)),c.getReturnStatus()}catch(e){return c.tryCatch.setError(e),c.setLastError(10)}},emnapi_get_runtime_version:function(e,r){if(!e)return 1;var t,n=d.envStore.get(e);if(!r)return n.setLastError(1);try{t=d.getRuntimeVersions().version}catch(e){return n.setLastError(9)}var o=t.split(".").map(function(e){return Number(e)});r>>>=0;var s=new DataView(a.buffer);return s.setUint32(r,o[0],!0),s.setUint32(r+4,o[1],!0),s.setUint32(r+8,o[2],!0),n.clearLastError()},emnapi_is_node_binding_available:function(){return v?1:0},emnapi_is_support_bigint:function(){return d.feature.supportBigInt?1:0},emnapi_is_support_weakref:function(){return d.feature.supportFinalizer?1:0},emnapi_sync_memory:function(e,r,t,n,o){var s;if(!e)return 1;var i=d.envStore.get(e);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!t)return i.setLastError(1);t>>>=0,n>>>=0,o>>>=0;var u=new DataView(a.buffer),f=u.getUint32(t,!0),c=i.ctx.handleStore.get(f);if(!(c.isArrayBuffer()||c.isTypedArray()||c.isDataView()||J.isSharedArrayBuffer(c.value)))return i.setLastError(1);var l=ie(Boolean(r),c.value,n,o);return c.value!==l&&(t>>>=0,s=i.ensureHandleId(l),u.setUint32(t,s,!0)),i.getReturnStatus()}catch(e){return i.tryCatch.setError(e),i.setLastError(10)}}});function ce(e,r,t){e>>>=0,e>>>=0;var n=t?new SharedArrayBuffer(e):new ArrayBuffer(e);if(r){r>>>=0;var o=J.getArrayBufferPointer(n,!0).address;new DataView(a.buffer).setUint32(r,o,!0)}return n}var le=Object.freeze({__proto__:null,napi_create_array:function(e,r){if(!e)return 1;var t=d.envStore.get(e);if(t.checkGCAccess(),!r)return t.setLastError(1);r>>>=0;var n=d.addToCurrentScope([]).id;return new DataView(a.buffer).setUint32(r,n,!0),t.clearLastError()},napi_create_array_with_length:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!t)return n.setLastError(1);r>>>=0,t>>>=0,r>>>=0;var o=d.addToCurrentScope(new Array(r)).id;return new DataView(a.buffer).setUint32(t,o,!0),n.clearLastError()},napi_create_arraybuffer:function(e,r,t,n){var o;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!n)return s.setLastError(1);n>>>=0;var i=ce(r,t,!1);return o=d.addToCurrentScope(i).id,new DataView(a.buffer).setUint32(n,o,!0),s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_create_buffer:function(e,r,t,n){var o,i,u;if(!e)return 1;var f=d.envStore.get(e);if(f.checkGCAccess(),!f.tryCatch.isEmpty())return f.setLastError(10);if(!f.canCallIntoJs())return f.setLastError(f.moduleApiVersion>=10?23:10);f.clearLastError();try{if(!n)return f.setLastError(1);var c=d.feature.Buffer;if(!c)throw d.createNotSupportBufferError("napi_create_buffer","");n>>>=0;var l=void 0;r>>>=0,r>>>=0;var v=new DataView(a.buffer);if(t&&0!==r){if(!(u=s(r)))throw new Error("Out of memory");u>>>=0,new Uint8Array(a.buffer).subarray(u,u+r).fill(0);var p=c.from(a.buffer,u,r),g={Ctor:c,address:u,length:r,ownership:J.registry?0:1,runtimeAllocated:1};J.wasmMemoryViewTable.set(p,g),null===(o=J.registry)||void 0===o||o.register(g,u),i=d.addToCurrentScope(p).id,v.setUint32(n,i,!0),t>>>=0,v.setUint32(t,u,!0)}else l=c.alloc(r),i=d.addToCurrentScope(l).id,v.setUint32(n,i,!0);return f.getReturnStatus()}catch(e){return f.tryCatch.setError(e),f.setLastError(10)}},napi_create_buffer_copy:function(e,r,t,n,o){var s;if(!e)return 1;var i=d.envStore.get(e);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!o)return i.setLastError(1);var u=d.feature.Buffer;if(!u)throw d.createNotSupportBufferError("napi_create_buffer_copy","");var f=ce(r,n,!1),c=u.from(f);return t>>>=0,r>>>=0,c.set(new Uint8Array(a.buffer).subarray(t,t+r)),s=d.addToCurrentScope(c).id,o>>>=0,new DataView(a.buffer).setUint32(o,s,!0),i.getReturnStatus()}catch(e){return i.tryCatch.setError(e),i.setLastError(10)}},napi_create_dataview:function(e,r,t,n,o){if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!t)return s.setLastError(1);if(!o)return s.setLastError(1);r>>>=0,n>>>=0,r>>>=0,n>>>=0;var i=d.handleStore.get(t).value;return i instanceof ArrayBuffer||J.isSharedArrayBuffer(i)?function(e){if(r+n>e.byteLength){var t=new RangeError("byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in");throw t.code="ERR_NAPI_INVALID_DATAVIEW_ARGS",t}var i=new DataView(e,n,r);e===a.buffer&&(J.wasmMemoryViewTable.has(i)||J.wasmMemoryViewTable.set(i,{Ctor:DataView,address:n,length:r,ownership:1,runtimeAllocated:0})),o>>>=0;var u=d.addToCurrentScope(i).id;return new DataView(a.buffer).setUint32(o,u,!0),s.getReturnStatus()}(i):s.setLastError(1)}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_create_date:function(e,r,t){var n;if(!e)return 1;var o=d.envStore.get(e);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{return t?(t>>>=0,n=d.addToCurrentScope(new Date(r)).id,new DataView(a.buffer).setUint32(t,n,!0),o.getReturnStatus()):o.setLastError(1)}catch(e){return o.tryCatch.setError(e),o.setLastError(10)}},napi_create_external:function(e,r,t,n,o){var s;if(!e)return 1;var i=d.envStore.get(e);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!o)return i.setLastError(1);if(!d.feature.supportFinalizer&&t)throw d.createNotSupportWeakRefError("napi_create_external",'Parameter "finalize_cb" must be 0(NULL)');var u=d.getCurrentScope().addExternal(r);return t&&d.createReferenceWithFinalizer(i,u.id,0,0,t,r,n),o>>>=0,s=u.id,new DataView(a.buffer).setUint32(o,s,!0),i.clearLastError()}catch(e){return i.tryCatch.setError(e),i.setLastError(10)}},napi_create_external_arraybuffer:function(e,r,t,n,o,s){var i;if(!e)return 1;var u=d.envStore.get(e);if(u.checkGCAccess(),!u.tryCatch.isEmpty())return u.setLastError(10);if(!u.canCallIntoJs())return u.setLastError(u.moduleApiVersion>=10?23:10);u.clearLastError();try{if(!s)return u.setLastError(1);if(t>>>=0,s>>>=0,t>>>=0,(r>>>=0)||(t=0),r+t>a.buffer.byteLength)throw new RangeError("Memory out of range");if(!d.feature.supportFinalizer&&n)throw d.createNotSupportWeakRefError("napi_create_external_arraybuffer",'Parameter "finalize_cb" must be 0(NULL)');var f=new ArrayBuffer(t);if(0===t)try{(new(0,d.feature.MessageChannel)).port1.postMessage(f,[f])}catch(e){}else new Uint8Array(f).set(new Uint8Array(a.buffer).subarray(r,r+t)),J.table.set(f,{address:r,ownership:1,runtimeAllocated:0});var c=d.addToCurrentScope(f);if(n){var l=ae(e,c.id,r,n,o,0);if(10===l){var v=u.tryCatch.extractException();throw u.clearLastError(),v}if(0!==l)return u.setLastError(l)}return i=c.id,new DataView(a.buffer).setUint32(s,i,!0),u.getReturnStatus()}catch(v){return u.tryCatch.setError(v),u.setLastError(10)}},napi_create_external_buffer:function(e,r,t,n,a,o){return se(e,-2,t,r,n,a,o)},napi_create_object:function(e,r){if(!e)return 1;var t=d.envStore.get(e);if(t.checkGCAccess(),!r)return t.setLastError(1);r>>>=0;var n=d.addToCurrentScope({}).id;return new DataView(a.buffer).setUint32(r,n,!0),t.clearLastError()},napi_create_symbol:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!t)return n.setLastError(1);t>>>=0;var o=new DataView(a.buffer);if(r){var s=d.handleStore.get(r).value;if("string"!=typeof s)return n.setLastError(3);var i=d.addToCurrentScope(Symbol(s)).id;o.setUint32(t,i,!0)}else{var u=d.addToCurrentScope(Symbol()).id;o.setUint32(t,u,!0)}return n.clearLastError()},napi_create_typedarray:function(e,r,t,n,o,s){var i;if(!e)return 1;var u=d.envStore.get(e);if(u.checkGCAccess(),!u.tryCatch.isEmpty())return u.setLastError(10);if(!u.canCallIntoJs())return u.setLastError(u.moduleApiVersion>=10?23:10);u.clearLastError();try{if(!n)return u.setLastError(1);if(!s)return u.setLastError(1);var f=d.handleStore.get(n);if(!f.isArrayBuffer())return u.setLastError(1);var c=f.value;o>>>=0,t>>>=0;var l=function(e,r,t,n,o,u){var f,c;if((o>>>=0,u>>>=0,t>1)&&o%t!==0)return(c=new RangeError("start offset of ".concat(null!==(f=r.name)&&void 0!==f?f:""," should be a multiple of ").concat(t))).code="ERR_NAPI_INVALID_TYPEDARRAY_ALIGNMENT",e.tryCatch.setError(c),e.setLastError(9);if(u*t+o>n.byteLength)return(c=new RangeError("Invalid typed array length")).code="ERR_NAPI_INVALID_TYPEDARRAY_LENGTH",e.tryCatch.setError(c),e.setLastError(9);var l=new r(n,o,u);return n===a.buffer&&(J.wasmMemoryViewTable.has(l)||J.wasmMemoryViewTable.set(l,{Ctor:r,address:o,length:u,ownership:1,runtimeAllocated:0})),s>>>=0,i=d.addToCurrentScope(l).id,new DataView(a.buffer).setUint32(s,i,!0),e.getReturnStatus()};switch(r){case 0:return l(u,Int8Array,1,c,o,t);case 1:return l(u,Uint8Array,1,c,o,t);case 2:return l(u,Uint8ClampedArray,1,c,o,t);case 3:return l(u,Int16Array,2,c,o,t);case 4:return l(u,Uint16Array,2,c,o,t);case 5:return l(u,Int32Array,4,c,o,t);case 6:return l(u,Uint32Array,4,c,o,t);case 7:return l(u,Float32Array,4,c,o,t);case 8:return l(u,Float64Array,8,c,o,t);case 9:return l(u,BigInt64Array,8,c,o,t);case 10:return l(u,BigUint64Array,8,c,o,t);case 11:return"function"!=typeof Float16Array?u.setLastError(1):l(u,Float16Array,2,c,o,t);default:return u.setLastError(1)}}catch(e){return u.tryCatch.setError(e),u.setLastError(10)}},node_api_create_buffer_from_arraybuffer:function(e,r,t,n,o){var s;if(!e)return 1;var i=d.envStore.get(e);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!r)return i.setLastError(1);if(!o)return i.setLastError(1);t>>>=0,n>>>=0,t>>>=0,n>>>=0;var u=d.handleStore.get(r);if(!u.isArrayBuffer())return i.setLastError(1);var f=u.value;if(n+t>f.byteLength){var c=new RangeError("The byte offset + length is out of range");throw c.code="ERR_OUT_OF_RANGE",c}var l=d.feature.Buffer;if(!l)throw d.createNotSupportBufferError("node_api_create_buffer_from_arraybuffer","");var v=l.from(f,t,n);return f===a.buffer&&(J.wasmMemoryViewTable.has(v)||J.wasmMemoryViewTable.set(v,{Ctor:l,address:t,length:n,ownership:1,runtimeAllocated:0})),o>>>=0,s=d.addToCurrentScope(v).id,new DataView(a.buffer).setUint32(o,s,!0),i.getReturnStatus()}catch(c){return i.tryCatch.setError(c),i.setLastError(10)}},node_api_create_object_with_properties:function(e,r,t,n,o,s){if(!e)return 1;var i=d.envStore.get(e);if(i.checkGCAccess(),!s)return i.setLastError(1);if(o>>>=0,(o>>>=0)>0){if(!t)return i.setLastError(1);if(!n)return i.setLastError(1)}var u=r?d.handleStore.get(r).value:null,f={};t>>>=0,n>>>=0;for(var c,l=new DataView(a.buffer),v=0;v>>=0,l.setUint32(s,g,!0),i.clearLastError()},node_api_create_sharedarraybuffer:function(e,r,t,n){var o;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!n)return s.setLastError(1);n>>>=0;var i=ce(r,t,!0);return o=d.addToCurrentScope(i).id,new DataView(a.buffer).setUint32(n,o,!0),s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},node_api_symbol_for:function(e,r,t,n){if(!e)return 1;var o=d.envStore.get(e);if(o.checkGCAccess(),!n)return o.setLastError(1);r>>>=0,n>>>=0;var s=-1===(t>>>=0)||4294967295===t,i=t>>>0;if(0!==t&&!r)return o.setLastError(1);if(!(s||i<=2147483647))return o.setLastError(1);var u=P.UTF8ToString(r,t),f=d.addToCurrentScope(Symbol.for(u)).id;return new DataView(a.buffer).setUint32(n,f,!0),o.clearLastError()}});var de=Object.freeze({__proto__:null,napi_get_boolean:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!t)return n.setLastError(1);t>>>=0;var o=0===r?3:4;return new DataView(a.buffer).setUint32(t,o,!0),n.clearLastError()},napi_get_global:function(e,r){if(!e)return 1;var t=d.envStore.get(e);return t.checkGCAccess(),r?(r>>>=0,new DataView(a.buffer).setUint32(r,5,!0),t.clearLastError()):t.setLastError(1)},napi_get_null:function(e,r){if(!e)return 1;var t=d.envStore.get(e);return t.checkGCAccess(),r?(r>>>=0,new DataView(a.buffer).setUint32(r,2,!0),t.clearLastError()):t.setLastError(1)},napi_get_undefined:function(e,r){if(!e)return 1;var t=d.envStore.get(e);return t.checkGCAccess(),r?(r>>>=0,new DataView(a.buffer).setUint32(r,1,!0),t.clearLastError()):t.setLastError(1)}});var ve=Object.freeze({__proto__:null,napi_get_instance_data:function(e,r){if(!e)return 1;var t=d.envStore.get(e);if(!r)return t.setLastError(1);r>>>=0;var n=t.getInstanceData();return new DataView(a.buffer).setUint32(r,n,!0),t.clearLastError()},napi_set_instance_data:function(e,r,t,n){if(!e)return 1;var a=d.envStore.get(e);return r>>>=0,t>>>=0,n>>>=0,a.setInstanceData(r,t,n),a.clearLastError()}});var pe=Object.freeze({__proto__:null,_emnapi_get_last_error_info:function(e,r,t,n){r>>>=0,t>>>=0,n>>>=0;var o=d.envStore.get(e).lastError,s=o.errorCode,i=o.engineErrorCode>>>0,u=o.engineReserved;u>>>=0;var f=new DataView(a.buffer);f.setInt32(r,s,!0),f.setUint32(t,i,!0),f.setUint32(n,u,!0)},napi_create_error:function(e,r,t,n){if(!e)return 1;var o=d.envStore.get(e);if(o.checkGCAccess(),!t)return o.setLastError(1);if(!n)return o.setLastError(1);var s=d.handleStore.get(t).value;if("string"!=typeof s)return o.setLastError(3);var i=new Error(s);if(r){var u=d.handleStore.get(r).value;if("string"!=typeof u)return o.setLastError(3);i.code=u}n>>>=0;var f=d.addToCurrentScope(i).id;return new DataView(a.buffer).setUint32(n,f,!0),o.clearLastError()},napi_create_range_error:function(e,r,t,n){if(!e)return 1;var o=d.envStore.get(e);if(o.checkGCAccess(),!t)return o.setLastError(1);if(!n)return o.setLastError(1);var s=d.handleStore.get(t).value;if("string"!=typeof s)return o.setLastError(3);var i=new RangeError(s);if(r){var u=d.handleStore.get(r).value;if("string"!=typeof u)return o.setLastError(3);i.code=u}n>>>=0;var f=d.addToCurrentScope(i).id;return new DataView(a.buffer).setUint32(n,f,!0),o.clearLastError()},napi_create_type_error:function(e,r,t,n){if(!e)return 1;var o=d.envStore.get(e);if(o.checkGCAccess(),!t)return o.setLastError(1);if(!n)return o.setLastError(1);var s=d.handleStore.get(t).value;if("string"!=typeof s)return o.setLastError(3);var i=new TypeError(s);if(r){var u=d.handleStore.get(r).value;if("string"!=typeof u)return o.setLastError(3);i.code=u}n>>>=0;var f=d.addToCurrentScope(i).id;return new DataView(a.buffer).setUint32(n,f,!0),o.clearLastError()},napi_fatal_error:function(e,r,t,n){e>>>=0,r>>>=0,t>>>=0,n>>>=0;var a=P.UTF8ToString(e,r),o=P.UTF8ToString(t,n);v?v.napi.fatalError(a,o):l("FATAL ERROR: "+a+" "+o)},napi_fatal_exception:function(e,r){if(!e)return 1;var t=d.envStore.get(e);if(t.checkGCAccess(),!t.tryCatch.isEmpty())return t.setLastError(10);if(!t.canCallIntoJs())return t.setLastError(t.moduleApiVersion>=10?23:10);t.clearLastError();try{if(!r)return t.setLastError(1);var n=t.ctx.handleStore.get(r);try{t.triggerFatalException(n.value)}catch(e){return t.setLastError(9)}return t.clearLastError()}catch(r){return t.tryCatch.setError(r),t.setLastError(10)}},napi_get_and_clear_last_exception:function(e,r){if(!e)return 1;var t=d.envStore.get(e);if(t.checkGCAccess(),!r)return t.setLastError(1);r>>>=0;var n=new DataView(a.buffer);if(!t.tryCatch.hasCaught())return n.setUint32(r,1,!0),t.clearLastError();var o=t.tryCatch.exception(),s=t.ensureHandleId(o);return n.setUint32(r,s,!0),t.tryCatch.reset(),t.clearLastError()},napi_is_exception_pending:function(e,r){if(!e)return 1;var t=d.envStore.get(e);if(t.checkGCAccess(),!r)return t.setLastError(1);var n=t.tryCatch.hasCaught();return r>>>=0,new DataView(a.buffer).setInt8(r,n?1:0,!0),t.clearLastError()},napi_throw:function(e,r){if(!e)return 1;var t=d.envStore.get(e);if(t.checkGCAccess(),!t.tryCatch.isEmpty())return t.setLastError(10);if(!t.canCallIntoJs())return t.setLastError(t.moduleApiVersion>=10?23:10);t.clearLastError();try{return r?(t.tryCatch.setError(d.handleStore.get(r).value),t.clearLastError()):t.setLastError(1)}catch(e){return t.tryCatch.setError(e),t.setLastError(10)}},napi_throw_error:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!t)return n.setLastError(1);r>>>=0,t>>>=0;var a=new Error(P.UTF8ToString(t,-1));return r&&(a.code=P.UTF8ToString(r,-1)),n.tryCatch.setError(a),n.clearLastError()}catch(e){return n.tryCatch.setError(e),n.setLastError(10)}},napi_throw_range_error:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!t)return n.setLastError(1);r>>>=0,t>>>=0;var a=new RangeError(P.UTF8ToString(t,-1));return r&&(a.code=P.UTF8ToString(r,-1)),n.tryCatch.setError(a),n.clearLastError()}catch(e){return n.tryCatch.setError(e),n.setLastError(10)}},napi_throw_type_error:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!t)return n.setLastError(1);r>>>=0,t>>>=0;var a=new TypeError(P.UTF8ToString(t,-1));return r&&(a.code=P.UTF8ToString(r,-1)),n.tryCatch.setError(a),n.clearLastError()}catch(e){return n.tryCatch.setError(e),n.setLastError(10)}},node_api_create_syntax_error:function(e,r,t,n){if(!e)return 1;var o=d.envStore.get(e);if(o.checkGCAccess(),!t)return o.setLastError(1);if(!n)return o.setLastError(1);var s=d.handleStore.get(t).value;if("string"!=typeof s)return o.setLastError(3);var i=new SyntaxError(s);if(r){var u=d.handleStore.get(r).value;if("string"!=typeof u)return o.setLastError(3);i.code=u}n>>>=0;var f=d.addToCurrentScope(i).id;return new DataView(a.buffer).setUint32(n,f,!0),o.clearLastError()},node_api_throw_syntax_error:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!t)return n.setLastError(1);r>>>=0,t>>>=0;var a=new SyntaxError(P.UTF8ToString(t,-1));return r&&(a.code=P.UTF8ToString(r,-1)),n.tryCatch.setError(a),n.clearLastError()}catch(e){return n.tryCatch.setError(e),n.setLastError(10)}}});function ge(e,r,t,n,o,s){t>>>=0;var i=d.envStore.get(e),u=ee(i,r,t,n,o);if(0!==u.status)return i.setLastError(u.status);var f=u.f;s>>>=0;var c=d.addToCurrentScope(f).id;return new DataView(a.buffer).setUint32(s,c,!0),i.getReturnStatus()}var ye=Object.freeze({__proto__:null,_emnapi_create_function:ge,napi_call_function:function(e,r,t,n,o,s){var i,u=0;if(!e)return 1;var f=d.envStore.get(e);if(f.checkGCAccess(),!f.tryCatch.isEmpty())return f.setLastError(10);if(!f.canCallIntoJs())return f.setLastError(f.moduleApiVersion>=10?23:10);f.clearLastError();try{if(!r)return f.setLastError(1);if(n>>>=0,o>>>=0,s>>>=0,(n>>>=0)>0&&!o)return f.setLastError(1);var c=d.handleStore.get(r).value;if(!t)return f.setLastError(1);var l=d.handleStore.get(t).value;if("function"!=typeof l)return f.setLastError(1);for(var v=[],p=new DataView(a.buffer);u=10?23:10);s.clearLastError();try{return o&&n?ge(e,r,t,n,a,o):s.setLastError(1)}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_get_cb_info:function(e,r,t,n,o,s){if(!e)return 1;var i=d.envStore.get(e);if(!r)return i.setLastError(1);var u=d.scopeStore.get(r).callbackInfo;t>>>=0,n>>>=0;var f=new DataView(a.buffer);if(n){if(!t)return i.setLastError(1);var c=f.getUint32(t,!0);c>>>=0;for(var l=u.args.length,v=c>>=0;var y=i.ensureHandleId(u.thiz);f.setUint32(o,y,!0)}return s&&(s>>>=0,f.setUint32(s,u.data,!0)),i.clearLastError()},napi_get_new_target:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);t>>>=0;var o=d.scopeStore.get(r).callbackInfo,s=o.thiz,i=o.fn,u=null==s||null==s.constructor?0:s instanceof i?n.ensureHandleId(s.constructor):0;return new DataView(a.buffer).setUint32(t,u,!0),n.clearLastError()},napi_new_instance:function(e,r,t,n,o){var s,i;if(!e)return 1;var u=d.envStore.get(e);if(u.checkGCAccess(),!u.tryCatch.isEmpty())return u.setLastError(10);if(!u.canCallIntoJs())return u.setLastError(u.moduleApiVersion>=10?23:10);u.clearLastError();try{if(!r)return u.setLastError(1);if(t>>>=0,n>>>=0,o>>>=0,(t>>>=0)>0&&!n)return u.setLastError(1);if(!o)return u.setLastError(1);var f=d.handleStore.get(r).value;if("function"!=typeof f)return u.setLastError(1);var c=void 0,l=new DataView(a.buffer);if(d.feature.supportReflect){var v=Array(t);for(s=0;s>>=0,t>>>=0,d.addCleanupHook(n,r,t),0):n.setLastError(1)},napi_close_escapable_handle_scope:function(e,r){if(!e)return 1;var t=d.envStore.get(e);return t.checkGCAccess(),r?0===t.openHandleScopes?13:(d.closeScope(t),t.clearLastError()):t.setLastError(1)},napi_close_handle_scope:function(e,r){if(!e)return 1;var t=d.envStore.get(e);return t.checkGCAccess(),r?0===t.openHandleScopes?13:(d.closeScope(t),t.clearLastError()):t.setLastError(1)},napi_create_reference:function(e,r,t,n){if(!e)return 1;var o=d.envStore.get(e);if(o.checkGCAccess(),!r)return o.setLastError(1);if(!n)return o.setLastError(1);var s=d.handleStore.get(r);if(o.moduleApiVersion<10&&!(s.isObject()||s.isFunction()||s.isSymbol()))return o.setLastError(1);var i=d.createReference(o,s.id,t>>>0,1);return n>>>=0,new DataView(a.buffer).setUint32(n,i.id,!0),o.clearLastError()},napi_delete_reference:function(e,r){if(!e)return 1;var t=d.envStore.get(e);return r?(d.refStore.get(r).dispose(),t.clearLastError()):t.setLastError(1)},napi_escape_handle:function(e,r,t,n){if(!e)return 1;var o=d.envStore.get(e);if(o.checkGCAccess(),!r)return o.setLastError(1);if(!t)return o.setLastError(1);if(!n)return o.setLastError(1);var s=d.scopeStore.get(r);if(!s.escapeCalled()){t>>>=0,n>>>=0;var i=s.escape(t),u=i?i.id:0;return new DataView(a.buffer).setUint32(n,u,!0),o.clearLastError()}return o.setLastError(12)},napi_get_reference_value:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.refStore.get(r).get(n);return t>>>=0,new DataView(a.buffer).setUint32(t,o,!0),n.clearLastError()},napi_open_escapable_handle_scope:function(e,r){if(!e)return 1;var t=d.envStore.get(e);if(t.checkGCAccess(),!r)return t.setLastError(1);var n=d.openScope(t);return r>>>=0,new DataView(a.buffer).setUint32(r,n.id,!0),t.clearLastError()},napi_open_handle_scope:function(e,r){if(!e)return 1;var t=d.envStore.get(e);if(t.checkGCAccess(),!r)return t.setLastError(1);var n=d.openScope(t);return r>>>=0,new DataView(a.buffer).setUint32(r,n.id,!0),t.clearLastError()},napi_reference_ref:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);var o=d.refStore.get(r).ref();return t&&(t>>>=0,new DataView(a.buffer).setUint32(t,o,!0)),n.clearLastError()},napi_reference_unref:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);var o=d.refStore.get(r);if(0===o.refcount())return n.setLastError(9);var s=o.unref();return t&&(t>>>=0,new DataView(a.buffer).setUint32(t,s,!0)),n.clearLastError()},napi_remove_env_cleanup_hook:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);return r?(r>>>=0,t>>>=0,d.removeCleanupHook(n,r,t),0):n.setLastError(1)}});var _e=Object.freeze({__proto__:null,_emnapi_get_filename:function(e,r,t){var n=d.envStore.get(e).filename;return r?P.stringToUTF8(n,r,t):P.lengthBytesUTF8(n)}});var Ee=Object.freeze({__proto__:null,napi_create_promise:function(e,r,t){var n,o;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!r)return s.setLastError(1);if(!t)return s.setLastError(1);var i=new DataView(a.buffer),u=new Promise(function(e,t){var a=d.createDeferred({resolve:e,reject:t});n=a.id,r>>>=0,i.setUint32(r,n,!0)});return t>>>=0,o=d.addToCurrentScope(u).id,i.setUint32(t,o,!0),s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_is_promise:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);t>>>=0;var o=d.handleStore.get(r).isPromise()?1:0;return new DataView(a.buffer).setInt8(t,o,!0),n.clearLastError()},napi_reject_deferred:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{return r&&t?(d.deferredStore.get(r).reject(d.handleStore.get(t).value),n.getReturnStatus()):n.setLastError(1)}catch(e){return n.tryCatch.setError(e),n.setLastError(10)}},napi_resolve_deferred:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{return r&&t?(d.deferredStore.get(r).resolve(d.handleStore.get(t).value),n.getReturnStatus()):n.setLastError(1)}catch(e){return n.tryCatch.setError(e),n.setLastError(10)}}});function we(e,r,t,n,o,s){var i;if(!e)return 1;var u=d.envStore.get(e);if(u.checkGCAccess(),!u.tryCatch.isEmpty())return u.setLastError(10);if(!u.canCallIntoJs())return u.setLastError(u.moduleApiVersion>=10?23:10);u.clearLastError();try{if(!s)return u.setLastError(1);if(!r)return u.setLastError(1);var f=d.handleStore.get(r);if(null==f.value)throw new TypeError("Cannot convert undefined or null to object");var c=void 0;try{c=f.isObject()||f.isFunction()?f.value:Object(f.value)}catch(e){return u.setLastError(2)}if(0!==t&&1!==t)return u.setLastError(1);if(0!==o&&1!==o)return u.setLastError(1);var l=[],v=void 0,p=void 0,g=void 0,y=!0,h=/^(0|[1-9][0-9]*)$/;do{for(v=Object.getOwnPropertyNames(c),p=Object.getOwnPropertySymbols(c),g=0;g>>=0,i=d.addToCurrentScope(_).id,new DataView(a.buffer).setUint32(s,i,!0),u.getReturnStatus()}catch(e){return u.tryCatch.setError(e),u.setLastError(10)}}var Le=Object.freeze({__proto__:null,napi_define_properties:function(e,r,t,n){var o,s;if(!e)return 1;var i=d.envStore.get(e);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(n>>>=0,t>>>=0,(t>>>=0)>0&&!n)return i.setLastError(1);if(!r)return i.setLastError(1);var u=d.handleStore.get(r),f=u.value;if(!u.isObject()&&!u.isFunction())return i.setLastError(2);for(var c=void 0,l=new DataView(a.buffer),v=0;v>>=0;var w=l.getUint32(o+28,!0);if(p)c=P.UTF8ToString(p,-1);else{if(!g)return i.setLastError(4);if("string"!=typeof(c=d.handleStore.get(g).value)&&"symbol"!=typeof c)return i.setLastError(4)}re(i,f,c,y,h,_,E,s,w)}return i.getReturnStatus()}catch(e){return i.tryCatch.setError(e),i.setLastError(10)}},napi_delete_element:function(e,r,t,n){var o;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!r)return s.setLastError(1);var i=d.handleStore.get(r);if(!i.isObject()&&!i.isFunction())return s.setLastError(2);if(d.feature.supportReflect)o=Reflect.deleteProperty(i.value,t>>>0);else try{o=delete i.value[t>>>0]}catch(e){o=!1}if(n)n>>>=0,new DataView(a.buffer).setInt8(n,o?1:0,!0);return s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_delete_property:function(e,r,t,n){var o;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!t)return s.setLastError(1);if(!r)return s.setLastError(1);var i=d.handleStore.get(r);if(!i.isObject()&&!i.isFunction())return s.setLastError(2);var u=d.handleStore.get(t).value;if(d.feature.supportReflect)o=Reflect.deleteProperty(i.value,u);else try{o=delete i.value[u]}catch(e){o=!1}if(n)n>>>=0,new DataView(a.buffer).setInt8(n,o?1:0,!0);return s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_get_all_property_names:we,napi_get_element:function(e,r,t,n){var o;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!n)return s.setLastError(1);if(!r)return s.setLastError(1);var i=d.handleStore.get(r);if(null==i.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=i.isObject()||i.isFunction()?i.value:Object(i.value)}catch(e){return s.setLastError(2)}return n>>>=0,o=s.ensureHandleId(u[t>>>0]),new DataView(a.buffer).setUint32(n,o,!0),s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_get_named_property:function(e,r,t,n){var o;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!n)return s.setLastError(1);if(!r)return s.setLastError(1);if(!t)return s.setLastError(1);var i=d.handleStore.get(r);if(null==i.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=i.isObject()||i.isFunction()?i.value:Object(i.value)}catch(e){return s.setLastError(2)}return t>>>=0,n>>>=0,o=s.ensureHandleId(u[P.UTF8ToString(t,-1)]),new DataView(a.buffer).setUint32(n,o,!0),s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_get_property:function(e,r,t,n){var o;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!t)return s.setLastError(1);if(!n)return s.setLastError(1);if(!r)return s.setLastError(1);var i=d.handleStore.get(r);if(null==i.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=i.isObject()||i.isFunction()?i.value:Object(i.value)}catch(e){return s.setLastError(2)}return n>>>=0,o=s.ensureHandleId(u[d.handleStore.get(t).value]),new DataView(a.buffer).setUint32(n,o,!0),s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_get_property_names:function(e,r,t){return we(e,r,0,18,1,t)},napi_has_element:function(e,r,t,n){var o;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!n)return s.setLastError(1);if(!r)return s.setLastError(1);var i=d.handleStore.get(r);if(null==i.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=i.isObject()||i.isFunction()?i.value:Object(i.value)}catch(e){return s.setLastError(2)}return n>>>=0,o=t>>>0 in u?1:0,new DataView(a.buffer).setInt8(n,o,!0),s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_has_named_property:function(e,r,t,n){var o;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!n)return s.setLastError(1);if(!r)return s.setLastError(1);if(!t)return s.setLastError(1);var i=d.handleStore.get(r);if(null==i.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=i.isObject()||i.isFunction()?i.value:Object(i.value)}catch(e){return s.setLastError(2)}return t>>>=0,n>>>=0,o=P.UTF8ToString(t,-1)in u,new DataView(a.buffer).setInt8(n,o?1:0,!0),s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_has_own_property:function(e,r,t,n){var o;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!t)return s.setLastError(1);if(!n)return s.setLastError(1);if(!r)return s.setLastError(1);var i=d.handleStore.get(r);if(null==i.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=i.isObject()||i.isFunction()?i.value:Object(i.value)}catch(e){return s.setLastError(2)}var f=d.handleStore.get(t).value;return"string"!=typeof f&&"symbol"!=typeof f?s.setLastError(4):(o=Object.prototype.hasOwnProperty.call(u,d.handleStore.get(t).value),n>>>=0,new DataView(a.buffer).setInt8(n,o?1:0,!0),s.getReturnStatus())}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_has_property:function(e,r,t,n){var o;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!t)return s.setLastError(1);if(!n)return s.setLastError(1);if(!r)return s.setLastError(1);var i=d.handleStore.get(r);if(null==i.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=i.isObject()||i.isFunction()?i.value:Object(i.value)}catch(e){return s.setLastError(2)}return n>>>=0,o=d.handleStore.get(t).value in u?1:0,new DataView(a.buffer).setInt8(n,o,!0),s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_object_freeze:function(e,r){if(!e)return 1;var t=d.envStore.get(e);if(t.checkGCAccess(),!t.tryCatch.isEmpty())return t.setLastError(10);if(!t.canCallIntoJs())return t.setLastError(t.moduleApiVersion>=10?23:10);t.clearLastError();try{if(!r)return t.setLastError(1);var n=d.handleStore.get(r),a=n.value;return n.isObject()||n.isFunction()?(Object.freeze(a),t.getReturnStatus()):t.setLastError(2)}catch(e){return t.tryCatch.setError(e),t.setLastError(10)}},napi_object_seal:function(e,r){if(!e)return 1;var t=d.envStore.get(e);if(t.checkGCAccess(),!t.tryCatch.isEmpty())return t.setLastError(10);if(!t.canCallIntoJs())return t.setLastError(t.moduleApiVersion>=10?23:10);t.clearLastError();try{if(!r)return t.setLastError(1);var n=d.handleStore.get(r),a=n.value;return n.isObject()||n.isFunction()?(Object.seal(a),t.getReturnStatus()):t.setLastError(2)}catch(e){return t.tryCatch.setError(e),t.setLastError(10)}},napi_set_element:function(e,r,t,n){if(!e)return 1;var a=d.envStore.get(e);if(a.checkGCAccess(),!a.tryCatch.isEmpty())return a.setLastError(10);if(!a.canCallIntoJs())return a.setLastError(a.moduleApiVersion>=10?23:10);a.clearLastError();try{if(!n)return a.setLastError(1);if(!r)return a.setLastError(1);var o=d.handleStore.get(r);return o.isObject()||o.isFunction()?(o.value[t>>>0]=d.handleStore.get(n).value,a.getReturnStatus()):a.setLastError(2)}catch(e){return a.tryCatch.setError(e),a.setLastError(10)}},napi_set_named_property:function(e,r,t,n){if(!e)return 1;var a=d.envStore.get(e);if(a.checkGCAccess(),!a.tryCatch.isEmpty())return a.setLastError(10);if(!a.canCallIntoJs())return a.setLastError(a.moduleApiVersion>=10?23:10);a.clearLastError();try{if(!n)return a.setLastError(1);if(!r)return a.setLastError(1);var o=d.handleStore.get(r);return o.isObject()||o.isFunction()?t?(t>>>=0,d.handleStore.get(r).value[P.UTF8ToString(t,-1)]=d.handleStore.get(n).value,a.getReturnStatus()):a.setLastError(1):a.setLastError(2)}catch(e){return a.tryCatch.setError(e),a.setLastError(10)}},napi_set_property:function(e,r,t,n){if(!e)return 1;var a=d.envStore.get(e);if(a.checkGCAccess(),!a.tryCatch.isEmpty())return a.setLastError(10);if(!a.canCallIntoJs())return a.setLastError(a.moduleApiVersion>=10?23:10);a.clearLastError();try{if(!t)return a.setLastError(1);if(!n)return a.setLastError(1);if(!r)return a.setLastError(1);var o=d.handleStore.get(r);return o.isObject()||o.isFunction()?(o.value[d.handleStore.get(t).value]=d.handleStore.get(n).value,a.getReturnStatus()):a.setLastError(2)}catch(e){return a.tryCatch.setError(e),a.setLastError(10)}}});var me=Object.freeze({__proto__:null,napi_run_script:function(e,r,t){var n,o;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!r)return s.setLastError(1);if(!t)return s.setLastError(1);var i=d.handleStore.get(r);if(!i.isString())return s.setLastError(3);var u=d.handleStore.get(5).value.eval(i.value);t>>>=0,o=s.ensureHandleId(u),new DataView(a.buffer).setUint32(t,o,!0),n=s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}return n}});var be=Object.freeze({__proto__:null,napi_coerce_to_bool:function(e,r,t){var n;if(!e)return 1;var o=d.envStore.get(e);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{if(!r)return o.setLastError(1);if(!t)return o.setLastError(1);var s=d.handleStore.get(r);return t>>>=0,n=s.value?4:3,new DataView(a.buffer).setUint32(t,n,!0),o.getReturnStatus()}catch(e){return o.tryCatch.setError(e),o.setLastError(10)}},napi_coerce_to_number:function(e,r,t){var n;if(!e)return 1;var o=d.envStore.get(e);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{if(!r)return o.setLastError(1);if(!t)return o.setLastError(1);var s=d.handleStore.get(r);if(s.isBigInt())throw new TypeError("Cannot convert a BigInt value to a number");return t>>>=0,n=d.addToCurrentScope(Number(s.value)).id,new DataView(a.buffer).setUint32(t,n,!0),o.getReturnStatus()}catch(e){return o.tryCatch.setError(e),o.setLastError(10)}},napi_coerce_to_object:function(e,r,t){var n;if(!e)return 1;var o=d.envStore.get(e);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{if(!r)return o.setLastError(1);if(!t)return o.setLastError(1);var s=d.handleStore.get(r);if(null==s.value)throw new TypeError("Cannot convert undefined or null to object");return t>>>=0,n=o.ensureHandleId(Object(s.value)),new DataView(a.buffer).setUint32(t,n,!0),o.getReturnStatus()}catch(e){return o.tryCatch.setError(e),o.setLastError(10)}},napi_coerce_to_string:function(e,r,t){var n;if(!e)return 1;var o=d.envStore.get(e);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{if(!r)return o.setLastError(1);if(!t)return o.setLastError(1);var s=d.handleStore.get(r);if(s.isSymbol())throw new TypeError("Cannot convert a Symbol value to a string");return t>>>=0,n=d.addToCurrentScope(String(s.value)).id,new DataView(a.buffer).setUint32(t,n,!0),o.getReturnStatus()}catch(e){return o.tryCatch.setError(e),o.setLastError(10)}},napi_detach_arraybuffer:function(e,r){if(!e)return 1;var t=d.envStore.get(e);if(t.checkGCAccess(),!r)return t.setLastError(1);var n=d.handleStore.get(r).value;if(!(n instanceof ArrayBuffer))return"function"==typeof SharedArrayBuffer&&n instanceof SharedArrayBuffer?t.setLastError(20):t.setLastError(19);try{(new(0,d.feature.MessageChannel)).port1.postMessage(n,[n])}catch(e){return t.setLastError(9)}return t.clearLastError()},napi_instanceof:function(e,r,t,n){var o;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!r)return s.setLastError(1);if(!n)return s.setLastError(1);if(!t)return s.setLastError(1);n>>>=0;var i=new DataView(a.buffer);i.setInt8(n,0,!0);var u=d.handleStore.get(t);return u.isFunction()?(o=d.handleStore.get(r).value instanceof u.value?1:0,i.setInt8(n,o,!0),s.getReturnStatus()):s.setLastError(5)}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_is_array:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);t>>>=0;var o=d.handleStore.get(r).isArray()?1:0;return new DataView(a.buffer).setInt8(t,o,!0),n.clearLastError()},napi_is_arraybuffer:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);t>>>=0;var o=d.handleStore.get(r).isArrayBuffer()?1:0;return new DataView(a.buffer).setInt8(t,o,!0),n.clearLastError()},napi_is_buffer:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);t>>>=0;var o=d.handleStore.get(r).isBuffer(d.feature.Buffer)?1:0;return new DataView(a.buffer).setInt8(t,o,!0),n.clearLastError()},napi_is_dataview:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);t>>>=0;var o=d.handleStore.get(r).isDataView()?1:0;return new DataView(a.buffer).setInt8(t,o,!0),n.clearLastError()},napi_is_date:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);t>>>=0;var o=d.handleStore.get(r).isDate()?1:0;return new DataView(a.buffer).setInt8(t,o,!0),n.clearLastError()},napi_is_detached_arraybuffer:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!r)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(r);t>>>=0;var s=new DataView(a.buffer);if(o.isArrayBuffer()&&0===o.value.byteLength)try{new Uint8Array(o.value)}catch(e){return s.setInt8(t,1,!0),n.getReturnStatus()}return s.setInt8(t,0,!0),n.getReturnStatus()}catch(e){return n.tryCatch.setError(e),n.setLastError(10)}},napi_is_error:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);t>>>=0;var o=d.handleStore.get(r).value instanceof Error?1:0;return new DataView(a.buffer).setInt8(t,o,!0),n.clearLastError()},napi_is_typedarray:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);t>>>=0;var o=d.handleStore.get(r).isTypedArray()?1:0;return new DataView(a.buffer).setInt8(t,o,!0),n.clearLastError()},napi_strict_equals:function(e,r,t,n){var o;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!r)return s.setLastError(1);if(!t)return s.setLastError(1);if(!n)return s.setLastError(1);var i=d.handleStore.get(r).value,u=d.handleStore.get(t).value;return n>>>=0,o=i===u?1:0,new DataView(a.buffer).setInt8(n,o,!0),s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_typeof:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);var o,s=d.handleStore.get(r);if(t>>>=0,s.isNumber())o=3;else if(s.isBigInt())o=9;else if(s.isString())o=4;else if(s.isFunction())o=7;else if(s.isExternal())o=8;else if(s.isObject())o=6;else if(s.isBoolean())o=2;else if(s.isUndefined())o=0;else if(s.isSymbol())o=5;else{if(!s.isNull())return n.setLastError(1);o=1}return new DataView(a.buffer).setInt32(t,o,!0),n.clearLastError()},node_api_is_sharedarraybuffer:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(r);t>>>=0;var s="function"==typeof SharedArrayBuffer&&o.value instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(o.value)?1:0;return new DataView(a.buffer).setInt8(t,s,!0),n.clearLastError()}});var Se=Object.freeze({__proto__:null,napi_get_version:function(e,r){if(!e)return 1;var t=d.envStore.get(e);return r?(new DataView(a.buffer).setUint32(r,10,!0),t.clearLastError()):t.setLastError(1)}});function Ae(e){for(var r=Object.keys(e),t=0;t>>=0,u>>>=0,e>>>=0,f>>>=0,c>>>=0,l>>>=0,v>>>=0,o>>>=0,0===(u>>>=0))return g.setLastError(1);if(!p)return g.setLastError(1);var y,h=0;if(r>>>=0){if("function"!=typeof d.handleStore.get(r).value)return g.setLastError(1);h=d.createReference(g,r,1,1).id}else if(!v)return g.setLastError(1);if(t){if(null==(y=d.handleStore.get(t).value))return g.setLastError(2);y=Object(y)}else y={};var _=g.ensureHandleId(y),E=d.handleStore.get(n).value;if("symbol"==typeof E)return g.setLastError(3);E=String(E);var w=g.ensureHandleId(E),L=G.offset.__size__,m=s(L);if(!m)return g.setLastError(9);m>>>=0,new Uint8Array(a.buffer).subarray(m,m+L).fill(0);var b=d.createReference(g,_,1,1),S=b.id,A=new DataView(a.buffer);return A.setUint32(m+G.offset.resource,S,!0),G.initQueue(m)?(j(_,w,-1,m+G.offset.async_id),A.setInt8(m+G.offset.is_some,1,!0),A.setUint32(m+G.offset.thread_count,u,!0),A.setUint32(m+G.offset.context,l,!0),A.setUint32(m+G.offset.max_queue_size,o,!0),A.setUint32(m+G.offset.ref,h,!0),A.setUint32(m+G.offset.env,e,!0),A.setUint32(m+G.offset.finalize_data,f,!0),A.setUint32(m+G.offset.finalize_cb,c,!0),A.setUint32(m+G.offset.call_js_cb,v,!0),d.addCleanupHook(g,G.cleanup,m),G._liveSet.add(m),g.ref(),d.increaseWaitingRequestCounter(),A.setUint32(m+G.offset.async_ref,1,!0),p>>>=0,A.setUint32(p,m,!0),g.clearLastError()):(i(m),b.dispose(),g.setLastError(9))},g.imports.napi.napi_get_threadsafe_function_context=function(e,r){if(!e||!r)return l(),1;e>>>=0,r>>>=0;var t=G.getContext(e);return new DataView(a.buffer).setUint32(r,t,!0),0},g.imports.napi.napi_call_threadsafe_function=function(e,r,t){return e?(e>>>=0,r>>>=0,G.push(e,r,t)):(l(),1)},g.imports.napi.napi_acquire_threadsafe_function=function(e){return e?(e>>>=0,G.getMutex(e).execute(function(){return 0===G.getState(e)?(G.addThreadCount(e),0):16})):(l(),1)},g.imports.napi.napi_release_threadsafe_function=function(e,r){if(!e)return l(),1;e>>>=0;var t=G.getMutex(e),n=G.getCond(e),a=!1,o=t.execute(function(){return 0===G.getThreadCount(e)?1:(G.subThreadCount(e),0!==G.getThreadCount(e)&&1!==r||0===G.getState(e)&&(1===r&&G.setState(e,1),1===G.getState(e)&&G.getMaxQueueSize(e)>0&&n.signal(),G.send(e)),2!==G.getState(e)||0!==G.getThreadCount(e)||(a=!0),0)});return a&&G.destroy(e),o},g.imports.napi.napi_unref_threadsafe_function=function(e,r){if(!r)return l(),1;var t=(r>>>=0)+G.offset.async_ref>>>2,n=new Uint32Array(a.buffer),o=Atomics.load(n,t);return o>0&&(Atomics.store(n,t,o-1),1===o&&d.decreaseWaitingRequestCounter()),0},g.imports.napi.napi_ref_threadsafe_function=function(e,r){if(!r)return l(),1;var t=(r>>>=0)+G.offset.async_ref>>>2,n=new Uint32Array(a.buffer),o=Atomics.load(n,t);return o||d.increaseWaitingRequestCounter(),Atomics.store(n,t,o+1),0},g}();return n}function o(r,t,n,o){const i=(o=null!=o?o:{}).getMemory,u=o.getTable,f=o.beforeInit;if(null!=i&&"function"!=typeof i)throw new TypeError("options.getMemory is not a function");if(null!=u&&"function"!=typeof u)throw new TypeError("options.getTable is not a function");if(null!=f&&"function"!=typeof f)throw new TypeError("options.beforeInit is not a function");let c;const l="object"==typeof t&&null!==t;if(l){if(t.loaded)throw new Error("napiModule has already loaded");c=t}else c=a(o);const d=o.wasi;let v,p={env:c.imports.env,napi:c.imports.napi,emnapi:c.imports.emnapi};d&&(v=new e.WASIThreads(c.childThread?{wasi:d,childThread:!0,postMessage:c.postMessage}:{wasi:d,threadManager:c.PThread,waitThreadStart:c.waitThreadStart}),Object.assign(p,"function"==typeof d.getImportObject?d.getImportObject():{wasi_snapshot_preview1:d.wasiImport}),Object.assign(p,v.getImportObject()));const g=o.overwriteImports;if("function"==typeof g){const e=g(p);"object"==typeof e&&null!==e&&(p=e)}return r(n,p,(e,t)=>{if(e)throw e;const n=t.instance;let a=n;const o=n.exports,g="memory"in o,y="memory"in p.env,h=i?i(o):g?o.memory:y?p.env.memory:void 0;if(!h)throw new Error("memory is neither exported nor imported");const _=u?u(o):o.__indirect_function_table;if(d&&!g){const e=Object.create(null);Object.assign(e,o,{memory:h}),a={exports:e}}const E=t.module;d?a=v.initialize(a,E,h):c.PThread.setup(E,h);const w=()=>{f&&f({instance:n,module:E}),c.init({instance:a,module:E,memory:h,table:_});const e={instance:n,module:E,usedInstance:a};return l||(e.napiModule=c),e};if(c.PThread.shouldPreloadWorkers()){const e=c.PThread.loadWasmModuleToAllWorkers();if(r===s)return e.then(w);throw new Error("Synchronous loading is not supported with worker pool (reuseWorker.size > 0)")}return w()})}function s(e,r,t){return n(e,r).then(e=>t(null,e),e=>t(e))}function i(e,n,a){let o;try{o=function(e,n){if(!e)throw new TypeError("Invalid wasm source");let a;if(t(n),n=null!=n?n:{},e instanceof ArrayBuffer||ArrayBuffer.isView(e))a=new r.Module(e);else{if(!(e instanceof WebAssembly.Module))throw new TypeError("Invalid wasm source");a=e}return{instance:new r.Instance(a,n),module:a}}(e,n)}catch(e){return a(e)}return a(null,o)}class u extends e.ThreadMessageHandler{constructor(e){if("function"!=typeof e.onLoad)throw new TypeError("options.onLoad is not a function");const r=e.onError;super({...e,onError:(e,t)=>{var n;const a=null===(n=this.instance)||void 0===n?void 0:n.exports.emnapi_thread_crashed;if("function"==typeof a&&a(),"function"!=typeof r)throw e;r(e,t)}}),this.napiModule=void 0}instantiate(e){const r=this.onLoad(e);return"function"==typeof r.then?r.then(e=>(this.napiModule=e.napiModule,e)):(this.napiModule=r.napiModule,r)}handle(e){var r;if(super.handle(e),null===(r=null==e?void 0:e.data)||void 0===r?void 0:r.__emnapi__){const r=e.data.__emnapi__.type,t=e.data.__emnapi__.payload;try{"async-worker-init"===r&&this.handleAfterLoad(e,()=>{this.napiModule.initWorker(t.arg,t.func)})}catch(e){this.onError(e,r)}}}}exports.MessageHandler=u,exports.createNapiModule=a,exports.instantiateNapiModule=function(e,r){return o(s,void 0,e,r)},exports.instantiateNapiModuleSync=function(e,r){return o(i,void 0,e,r)},exports.loadNapiModule=function(e,r,t){if("object"!=typeof e||null===e)throw new TypeError("Invalid napiModule");return o(s,e,r,t)},exports.loadNapiModuleSync=function(e,r,t){if("object"!=typeof e||null===e)throw new TypeError("Invalid napiModule");return o(i,e,r,t)},exports.version="1.10.0",Object.keys(e).forEach(function(r){"default"===r||Object.prototype.hasOwnProperty.call(exports,r)||Object.defineProperty(exports,r,{enumerable:!0,get:function(){return e[r]}})}); diff --git a/node_modules/@emnapi/core/dist/emnapi-core.d.mts b/node_modules/@emnapi/core/dist/emnapi-core.d.mts new file mode 100644 index 00000000..0ec6eb84 --- /dev/null +++ b/node_modules/@emnapi/core/dist/emnapi-core.d.mts @@ -0,0 +1,420 @@ +/// + +import type { Context } from '@emnapi/runtime'; +import type { ReferenceOwnership } from '@emnapi/runtime'; +import type { Worker as Worker_2 } from 'worker_threads'; + +/** @public */ +export declare type BaseCreateOptions = { + filename?: string + nodeBinding?: NodeBinding + reuseWorker?: ThreadManagerOptionsMain['reuseWorker'] + asyncWorkPoolSize?: number + waitThreadStart?: MainThreadBaseOptions['waitThreadStart'] + onCreateWorker?: (info: CreateWorkerInfo) => any + print?: (str: string) => void + printErr?: (str: string) => void + postMessage?: (msg: any) => any +} + +/** @public */ +export declare interface BaseOptions { + wasi: WASIInstance; + version?: 'preview1'; + wasm64?: boolean; +} + +/** @public */ +export declare interface ChildThreadOptions extends BaseOptions { + childThread: true; + postMessage?: (data: any) => void; +} + +/** @public */ +export declare interface CleanupThreadPayload { + tid: number; +} + +/** @public */ +export declare interface CommandInfo { + type: T; + payload: CommandPayloadMap[T]; +} + +/** @public */ +export declare interface CommandPayloadMap { + load: LoadPayload; + loaded: LoadedPayload; + start: StartPayload; + 'cleanup-thread': CleanupThreadPayload; + 'terminate-all-threads': TerminateAllThreadsPayload; + 'spawn-thread': SpawnThreadPayload; +} + +/** @public */ +export declare type CommandType = keyof CommandPayloadMap; + +/** @public */ +export declare function createInstanceProxy(instance: WebAssembly.Instance, memory?: WebAssembly.Memory | (() => WebAssembly.Memory)): WebAssembly.Instance; + +/** @public */ +export declare function createNapiModule ( +options: CreateOptions +): NapiModule + +/** @public */ +export declare type CreateOptions = BaseCreateOptions & ({ + context: Context + childThread?: boolean +} | { + context?: Context + childThread: true +}) + +/** @public */ +export declare interface CreateWorkerInfo { + type: 'thread' | 'async-work' + name: string +} + +/** @public */ +export declare interface InitOptions { + instance: WebAssembly.Instance + module: WebAssembly.Module + memory?: WebAssembly.Memory + table?: WebAssembly.Table +} + +export declare type InputType = string | URL | Response | BufferSource | WebAssembly.Module; + +/** @public */ +export declare interface InstantiatedSource extends LoadedSource { + napiModule: NapiModule; +} + +/** @public */ +export declare function instantiateNapiModule( +/** Only support `BufferSource` or `WebAssembly.Module` on Node.js */ +wasmInput: InputType | Promise, options: InstantiateOptions): Promise; + +/** @public */ +export declare function instantiateNapiModuleSync(wasmInput: BufferSource | WebAssembly.Module, options: InstantiateOptions): InstantiatedSource; + +/** @public */ +export declare type InstantiateOptions = CreateOptions & LoadOptions; + +/** @public */ +export declare function isSharedArrayBuffer(value: any): value is SharedArrayBuffer; + +/** @public */ +export declare function isTrapError(e: Error): e is WebAssembly.RuntimeError; + +/** @public */ +export declare interface LoadedPayload { +} + +/** @public */ +export declare interface LoadedSource extends WebAssembly.WebAssemblyInstantiatedSource { + usedInstance: WebAssembly.Instance; +} + +/** @public */ +export declare function loadNapiModule(napiModule: NapiModule, +/** Only support `BufferSource` or `WebAssembly.Module` on Node.js */ +wasmInput: InputType | Promise, options?: LoadOptions): Promise; + +/** @public */ +export declare function loadNapiModuleSync(napiModule: NapiModule, wasmInput: BufferSource | WebAssembly.Module, options?: LoadOptions): LoadedSource; + +/** @public */ +export declare interface LoadOptions { + wasi?: WASIInstance; + overwriteImports?: (importObject: WebAssembly.Imports) => WebAssembly.Imports; + beforeInit?: (source: WebAssembly.WebAssemblyInstantiatedSource) => void; + getMemory?: (exports: WebAssembly.Exports) => WebAssembly.Memory; + getTable?: (exports: WebAssembly.Exports) => WebAssembly.Table; +} + +/** @public */ +export declare interface LoadPayload { + wasmModule: WebAssembly.Module; + wasmMemory: WebAssembly.Memory; + sab?: Int32Array; +} + +/** @public */ +export declare interface MainThreadBaseOptions extends BaseOptions { + waitThreadStart?: boolean | number; +} + +/** @public */ +export declare type MainThreadOptions = MainThreadOptionsWithThreadManager | MainThreadOptionsCreateThreadManager; + +/** @public */ +export declare interface MainThreadOptionsCreateThreadManager extends MainThreadBaseOptions, ThreadManagerOptionsMain { +} + +/** @public */ +export declare interface MainThreadOptionsWithThreadManager extends MainThreadBaseOptions { + threadManager?: ThreadManager | (() => ThreadManager); +} + +/** @public */ +export declare interface MessageEventData { + __emnapi__: CommandInfo; +} + +/** @public */ +export declare class MessageHandler extends ThreadMessageHandler { + napiModule: NapiModule | undefined; + constructor(options: MessageHandlerOptions); + instantiate(data: LoadPayload): InstantiatedSource | PromiseLike; + handle(e: WorkerMessageEvent): void; +} + +/** @public */ +export declare interface MessageHandlerOptions extends ThreadMessageHandlerOptions { + onLoad: (data: LoadPayload) => InstantiatedSource | PromiseLike; +} + +/** @public */ +export declare interface NapiModule { + imports: { + env: any + napi: any + emnapi: any + } + exports: any + loaded: boolean + filename: string + childThread: boolean + emnapi: { + syncMemory ( + js_to_wasm: boolean, + arrayBufferOrView: T, + offset?: number, + len?: number + ): T + getMemoryAddress (arrayBufferOrView: ArrayBuffer | ArrayBufferView): PointerInfo + addSendListener (worker: any): boolean + } + + init (options: InitOptions): any + initWorker (arg: number, func: [number, number]): void + postMessage?: (msg: any) => any + + waitThreadStart: boolean | number + /* Excluded from this release type: PThread */} + +/** @public */ +export declare interface NodeBinding { + node: { + emitAsyncInit: Function + emitAsyncDestroy: Function + makeCallback: Function + } + napi: { + asyncInit: Function + asyncDestroy: Function + makeCallback: Function + } +} + +/** @public */ +export declare interface PointerInfo { + address: number + ownership: ReferenceOwnership + runtimeAllocated: 0 | 1 +} + +/** @public */ +export declare interface ReuseWorkerOptions { + /** + * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size | PTHREAD_POOL_SIZE} + */ + size: number; + /** + * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size-strict | PTHREAD_POOL_SIZE_STRICT} + */ + strict?: boolean; +} + +/** @public */ +export declare interface SpawnThreadPayload { + startArg: number; + errorOrTid: number; +} + +/** @public */ +export declare interface StartPayload { + tid: number; + arg: number; + sab?: Int32Array; +} + +/** @public */ +export declare interface StartResult { + exitCode: number; + instance: WebAssembly.Instance; +} + +/** @public */ +export declare interface TerminateAllThreadsPayload { +} + +/** @public */ +export declare class ThreadManager { + unusedWorkers: WorkerLike[]; + runningWorkers: WorkerLike[]; + pthreads: Record; + get nextWorkerID(): number; + wasmModule: WebAssembly.Module | null; + wasmMemory: WebAssembly.Memory | null; + private readonly messageEvents; + private readonly _childThread; + private readonly _onCreateWorker; + private readonly _reuseWorker; + private readonly _beforeLoad?; + /* Excluded from this release type: printErr */ + threadSpawn?: ((startArg: number, errorOrTid?: number) => number); + constructor(options: ThreadManagerOptions); + init(): void; + initMainThread(): void; + private preparePool; + shouldPreloadWorkers(): boolean; + loadWasmModuleToAllWorkers(): Promise; + preloadWorkers(): Promise; + setup(wasmModule: WebAssembly.Module, wasmMemory: WebAssembly.Memory): void; + markId(worker: WorkerLike): number; + returnWorkerToPool(worker: WorkerLike): void; + loadWasmModuleToWorker(worker: WorkerLike, sab?: Int32Array): Promise; + allocateUnusedWorker(): WorkerLike; + getNewWorker(sab?: Int32Array): WorkerLike | undefined; + cleanThread(worker: WorkerLike, tid: number, force?: boolean): void; + terminateWorker(worker: WorkerLike): void; + terminateAllThreads(): void; + addMessageEventListener(worker: WorkerLike, onMessage: (e: WorkerMessageEvent) => void): () => void; + fireMessageEvent(worker: WorkerLike, e: WorkerMessageEvent): void; +} + +/** @public */ +export declare type ThreadManagerOptions = ThreadManagerOptionsMain | ThreadManagerOptionsChild; + +/** @public */ +export declare interface ThreadManagerOptionsBase { + printErr?: (message: string) => void; + threadSpawn?: (startArg: number, errorOrTid?: number) => number; +} + +/** @public */ +export declare interface ThreadManagerOptionsChild extends ThreadManagerOptionsBase { + childThread: true; +} + +/** @public */ +export declare interface ThreadManagerOptionsMain extends ThreadManagerOptionsBase { + beforeLoad?: (worker: WorkerLike) => any; + reuseWorker?: boolean | number | ReuseWorkerOptions; + onCreateWorker: WorkerFactory; + childThread?: false; +} + +/** @public */ +export declare class ThreadMessageHandler { + protected instance: WebAssembly.Instance | undefined; + private messagesBeforeLoad; + protected postMessage: (message: any) => void; + protected onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; + protected onError: (error: Error, type: WorkerMessageType) => void; + constructor(options?: ThreadMessageHandlerOptions); + /** @virtual */ + instantiate(data: LoadPayload): WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; + /** @virtual */ + handle(e: WorkerMessageEvent>): void; + private _load; + private _start; + protected _loaded(err: Error | null, source: WebAssembly.WebAssemblyInstantiatedSource | null, payload: LoadPayload): void; + protected handleAfterLoad(e: E, f: (e: E) => void): void; +} + +/** @public */ +export declare interface ThreadMessageHandlerOptions { + onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; + onError?: (error: Error, type: WorkerMessageType) => void; + postMessage?: (message: any) => void; +} + +export declare const version: string; + +/** @public */ +export declare interface WASIInstance { + readonly wasiImport?: Record; + initialize(instance: object): void; + start(instance: object): number; + getImportObject?(): any; +} + +/** @public */ +export declare class WASIThreads { + PThread: ThreadManager | undefined; + private wasmMemory; + private wasmInstance; + private readonly threadSpawn; + readonly childThread: boolean; + private readonly postMessage; + readonly wasi: WASIInstance; + constructor(options: WASIThreadsOptions); + getImportObject(): { + wasi: WASIThreadsImports; + }; + setup(wasmInstance: WebAssembly.Instance, wasmModule: WebAssembly.Module, wasmMemory?: WebAssembly.Memory): void; + preloadWorkers(): Promise; + /** + * It's ok to call this method to a WASI command module. + * + * in child thread, must call this method instead of {@link WASIThreads.start} even if it's a WASI command module + * + * @returns A proxied WebAssembly instance if in child thread, other wise the original instance + */ + initialize(instance: WebAssembly.Instance, module: WebAssembly.Module, memory?: WebAssembly.Memory): WebAssembly.Instance; + /** + * Equivalent to calling {@link WASIThreads.initialize} and then calling {@link WASIInstance.start} + * ```js + * this.initialize(instance, module, memory) + * this.wasi.start(instance) + * ``` + */ + start(instance: WebAssembly.Instance, module: WebAssembly.Module, memory?: WebAssembly.Memory): StartResult; + terminateAllThreads(): void; +} + +/** @public */ +export declare interface WASIThreadsImports { + 'thread-spawn': (startArg: number, errorOrTid?: number) => number; +} + +/** @public */ +export declare type WASIThreadsOptions = MainThreadOptions | ChildThreadOptions; + +/** @public */ +export declare type WorkerFactory = (ctx: { + type: string; + name: string; +}) => WorkerLike; + +/** @public */ +export declare type WorkerLike = (Worker | Worker_2) & { + whenLoaded?: Promise; + loaded?: boolean; + __emnapi_tid?: number; +}; + +/** @public */ +export declare interface WorkerMessageEvent { + data: T; +} + +/** @public */ +export declare type WorkerMessageType = 'load' | 'start'; + +export { } diff --git a/node_modules/@emnapi/core/dist/emnapi-core.d.ts b/node_modules/@emnapi/core/dist/emnapi-core.d.ts new file mode 100644 index 00000000..06df18d3 --- /dev/null +++ b/node_modules/@emnapi/core/dist/emnapi-core.d.ts @@ -0,0 +1,422 @@ +/// + +import type { Context } from '@emnapi/runtime'; +import type { ReferenceOwnership } from '@emnapi/runtime'; +import type { Worker as Worker_2 } from 'worker_threads'; + +/** @public */ +export declare type BaseCreateOptions = { + filename?: string + nodeBinding?: NodeBinding + reuseWorker?: ThreadManagerOptionsMain['reuseWorker'] + asyncWorkPoolSize?: number + waitThreadStart?: MainThreadBaseOptions['waitThreadStart'] + onCreateWorker?: (info: CreateWorkerInfo) => any + print?: (str: string) => void + printErr?: (str: string) => void + postMessage?: (msg: any) => any +} + +/** @public */ +export declare interface BaseOptions { + wasi: WASIInstance; + version?: 'preview1'; + wasm64?: boolean; +} + +/** @public */ +export declare interface ChildThreadOptions extends BaseOptions { + childThread: true; + postMessage?: (data: any) => void; +} + +/** @public */ +export declare interface CleanupThreadPayload { + tid: number; +} + +/** @public */ +export declare interface CommandInfo { + type: T; + payload: CommandPayloadMap[T]; +} + +/** @public */ +export declare interface CommandPayloadMap { + load: LoadPayload; + loaded: LoadedPayload; + start: StartPayload; + 'cleanup-thread': CleanupThreadPayload; + 'terminate-all-threads': TerminateAllThreadsPayload; + 'spawn-thread': SpawnThreadPayload; +} + +/** @public */ +export declare type CommandType = keyof CommandPayloadMap; + +/** @public */ +export declare function createInstanceProxy(instance: WebAssembly.Instance, memory?: WebAssembly.Memory | (() => WebAssembly.Memory)): WebAssembly.Instance; + +/** @public */ +export declare function createNapiModule ( +options: CreateOptions +): NapiModule + +/** @public */ +export declare type CreateOptions = BaseCreateOptions & ({ + context: Context + childThread?: boolean +} | { + context?: Context + childThread: true +}) + +/** @public */ +export declare interface CreateWorkerInfo { + type: 'thread' | 'async-work' + name: string +} + +/** @public */ +export declare interface InitOptions { + instance: WebAssembly.Instance + module: WebAssembly.Module + memory?: WebAssembly.Memory + table?: WebAssembly.Table +} + +export declare type InputType = string | URL | Response | BufferSource | WebAssembly.Module; + +/** @public */ +export declare interface InstantiatedSource extends LoadedSource { + napiModule: NapiModule; +} + +/** @public */ +export declare function instantiateNapiModule( +/** Only support `BufferSource` or `WebAssembly.Module` on Node.js */ +wasmInput: InputType | Promise, options: InstantiateOptions): Promise; + +/** @public */ +export declare function instantiateNapiModuleSync(wasmInput: BufferSource | WebAssembly.Module, options: InstantiateOptions): InstantiatedSource; + +/** @public */ +export declare type InstantiateOptions = CreateOptions & LoadOptions; + +/** @public */ +export declare function isSharedArrayBuffer(value: any): value is SharedArrayBuffer; + +/** @public */ +export declare function isTrapError(e: Error): e is WebAssembly.RuntimeError; + +/** @public */ +export declare interface LoadedPayload { +} + +/** @public */ +export declare interface LoadedSource extends WebAssembly.WebAssemblyInstantiatedSource { + usedInstance: WebAssembly.Instance; +} + +/** @public */ +export declare function loadNapiModule(napiModule: NapiModule, +/** Only support `BufferSource` or `WebAssembly.Module` on Node.js */ +wasmInput: InputType | Promise, options?: LoadOptions): Promise; + +/** @public */ +export declare function loadNapiModuleSync(napiModule: NapiModule, wasmInput: BufferSource | WebAssembly.Module, options?: LoadOptions): LoadedSource; + +/** @public */ +export declare interface LoadOptions { + wasi?: WASIInstance; + overwriteImports?: (importObject: WebAssembly.Imports) => WebAssembly.Imports; + beforeInit?: (source: WebAssembly.WebAssemblyInstantiatedSource) => void; + getMemory?: (exports: WebAssembly.Exports) => WebAssembly.Memory; + getTable?: (exports: WebAssembly.Exports) => WebAssembly.Table; +} + +/** @public */ +export declare interface LoadPayload { + wasmModule: WebAssembly.Module; + wasmMemory: WebAssembly.Memory; + sab?: Int32Array; +} + +/** @public */ +export declare interface MainThreadBaseOptions extends BaseOptions { + waitThreadStart?: boolean | number; +} + +/** @public */ +export declare type MainThreadOptions = MainThreadOptionsWithThreadManager | MainThreadOptionsCreateThreadManager; + +/** @public */ +export declare interface MainThreadOptionsCreateThreadManager extends MainThreadBaseOptions, ThreadManagerOptionsMain { +} + +/** @public */ +export declare interface MainThreadOptionsWithThreadManager extends MainThreadBaseOptions { + threadManager?: ThreadManager | (() => ThreadManager); +} + +/** @public */ +export declare interface MessageEventData { + __emnapi__: CommandInfo; +} + +/** @public */ +export declare class MessageHandler extends ThreadMessageHandler { + napiModule: NapiModule | undefined; + constructor(options: MessageHandlerOptions); + instantiate(data: LoadPayload): InstantiatedSource | PromiseLike; + handle(e: WorkerMessageEvent): void; +} + +/** @public */ +export declare interface MessageHandlerOptions extends ThreadMessageHandlerOptions { + onLoad: (data: LoadPayload) => InstantiatedSource | PromiseLike; +} + +/** @public */ +export declare interface NapiModule { + imports: { + env: any + napi: any + emnapi: any + } + exports: any + loaded: boolean + filename: string + childThread: boolean + emnapi: { + syncMemory ( + js_to_wasm: boolean, + arrayBufferOrView: T, + offset?: number, + len?: number + ): T + getMemoryAddress (arrayBufferOrView: ArrayBuffer | ArrayBufferView): PointerInfo + addSendListener (worker: any): boolean + } + + init (options: InitOptions): any + initWorker (arg: number, func: [number, number]): void + postMessage?: (msg: any) => any + + waitThreadStart: boolean | number + /* Excluded from this release type: PThread */} + +/** @public */ +export declare interface NodeBinding { + node: { + emitAsyncInit: Function + emitAsyncDestroy: Function + makeCallback: Function + } + napi: { + asyncInit: Function + asyncDestroy: Function + makeCallback: Function + } +} + +/** @public */ +export declare interface PointerInfo { + address: number + ownership: ReferenceOwnership + runtimeAllocated: 0 | 1 +} + +/** @public */ +export declare interface ReuseWorkerOptions { + /** + * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size | PTHREAD_POOL_SIZE} + */ + size: number; + /** + * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size-strict | PTHREAD_POOL_SIZE_STRICT} + */ + strict?: boolean; +} + +/** @public */ +export declare interface SpawnThreadPayload { + startArg: number; + errorOrTid: number; +} + +/** @public */ +export declare interface StartPayload { + tid: number; + arg: number; + sab?: Int32Array; +} + +/** @public */ +export declare interface StartResult { + exitCode: number; + instance: WebAssembly.Instance; +} + +/** @public */ +export declare interface TerminateAllThreadsPayload { +} + +/** @public */ +export declare class ThreadManager { + unusedWorkers: WorkerLike[]; + runningWorkers: WorkerLike[]; + pthreads: Record; + get nextWorkerID(): number; + wasmModule: WebAssembly.Module | null; + wasmMemory: WebAssembly.Memory | null; + private readonly messageEvents; + private readonly _childThread; + private readonly _onCreateWorker; + private readonly _reuseWorker; + private readonly _beforeLoad?; + /* Excluded from this release type: printErr */ + threadSpawn?: ((startArg: number, errorOrTid?: number) => number); + constructor(options: ThreadManagerOptions); + init(): void; + initMainThread(): void; + private preparePool; + shouldPreloadWorkers(): boolean; + loadWasmModuleToAllWorkers(): Promise; + preloadWorkers(): Promise; + setup(wasmModule: WebAssembly.Module, wasmMemory: WebAssembly.Memory): void; + markId(worker: WorkerLike): number; + returnWorkerToPool(worker: WorkerLike): void; + loadWasmModuleToWorker(worker: WorkerLike, sab?: Int32Array): Promise; + allocateUnusedWorker(): WorkerLike; + getNewWorker(sab?: Int32Array): WorkerLike | undefined; + cleanThread(worker: WorkerLike, tid: number, force?: boolean): void; + terminateWorker(worker: WorkerLike): void; + terminateAllThreads(): void; + addMessageEventListener(worker: WorkerLike, onMessage: (e: WorkerMessageEvent) => void): () => void; + fireMessageEvent(worker: WorkerLike, e: WorkerMessageEvent): void; +} + +/** @public */ +export declare type ThreadManagerOptions = ThreadManagerOptionsMain | ThreadManagerOptionsChild; + +/** @public */ +export declare interface ThreadManagerOptionsBase { + printErr?: (message: string) => void; + threadSpawn?: (startArg: number, errorOrTid?: number) => number; +} + +/** @public */ +export declare interface ThreadManagerOptionsChild extends ThreadManagerOptionsBase { + childThread: true; +} + +/** @public */ +export declare interface ThreadManagerOptionsMain extends ThreadManagerOptionsBase { + beforeLoad?: (worker: WorkerLike) => any; + reuseWorker?: boolean | number | ReuseWorkerOptions; + onCreateWorker: WorkerFactory; + childThread?: false; +} + +/** @public */ +export declare class ThreadMessageHandler { + protected instance: WebAssembly.Instance | undefined; + private messagesBeforeLoad; + protected postMessage: (message: any) => void; + protected onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; + protected onError: (error: Error, type: WorkerMessageType) => void; + constructor(options?: ThreadMessageHandlerOptions); + /** @virtual */ + instantiate(data: LoadPayload): WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; + /** @virtual */ + handle(e: WorkerMessageEvent>): void; + private _load; + private _start; + protected _loaded(err: Error | null, source: WebAssembly.WebAssemblyInstantiatedSource | null, payload: LoadPayload): void; + protected handleAfterLoad(e: E, f: (e: E) => void): void; +} + +/** @public */ +export declare interface ThreadMessageHandlerOptions { + onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; + onError?: (error: Error, type: WorkerMessageType) => void; + postMessage?: (message: any) => void; +} + +export declare const version: string; + +/** @public */ +export declare interface WASIInstance { + readonly wasiImport?: Record; + initialize(instance: object): void; + start(instance: object): number; + getImportObject?(): any; +} + +/** @public */ +export declare class WASIThreads { + PThread: ThreadManager | undefined; + private wasmMemory; + private wasmInstance; + private readonly threadSpawn; + readonly childThread: boolean; + private readonly postMessage; + readonly wasi: WASIInstance; + constructor(options: WASIThreadsOptions); + getImportObject(): { + wasi: WASIThreadsImports; + }; + setup(wasmInstance: WebAssembly.Instance, wasmModule: WebAssembly.Module, wasmMemory?: WebAssembly.Memory): void; + preloadWorkers(): Promise; + /** + * It's ok to call this method to a WASI command module. + * + * in child thread, must call this method instead of {@link WASIThreads.start} even if it's a WASI command module + * + * @returns A proxied WebAssembly instance if in child thread, other wise the original instance + */ + initialize(instance: WebAssembly.Instance, module: WebAssembly.Module, memory?: WebAssembly.Memory): WebAssembly.Instance; + /** + * Equivalent to calling {@link WASIThreads.initialize} and then calling {@link WASIInstance.start} + * ```js + * this.initialize(instance, module, memory) + * this.wasi.start(instance) + * ``` + */ + start(instance: WebAssembly.Instance, module: WebAssembly.Module, memory?: WebAssembly.Memory): StartResult; + terminateAllThreads(): void; +} + +/** @public */ +export declare interface WASIThreadsImports { + 'thread-spawn': (startArg: number, errorOrTid?: number) => number; +} + +/** @public */ +export declare type WASIThreadsOptions = MainThreadOptions | ChildThreadOptions; + +/** @public */ +export declare type WorkerFactory = (ctx: { + type: string; + name: string; +}) => WorkerLike; + +/** @public */ +export declare type WorkerLike = (Worker | Worker_2) & { + whenLoaded?: Promise; + loaded?: boolean; + __emnapi_tid?: number; +}; + +/** @public */ +export declare interface WorkerMessageEvent { + data: T; +} + +/** @public */ +export declare type WorkerMessageType = 'load' | 'start'; + +export { } + +export as namespace emnapiCore; diff --git a/node_modules/@emnapi/core/dist/emnapi-core.esm-bundler.js b/node_modules/@emnapi/core/dist/emnapi-core.esm-bundler.js new file mode 100644 index 00000000..7ba54260 --- /dev/null +++ b/node_modules/@emnapi/core/dist/emnapi-core.esm-bundler.js @@ -0,0 +1,8228 @@ +import { ThreadManager, WASIThreads, ThreadMessageHandler } from '@emnapi/wasi-threads'; +export * from '@emnapi/wasi-threads'; +import { __extends, __assign } from 'tslib'; + +/* eslint-disable no-undef */ +var _WebAssembly = typeof WebAssembly !== 'undefined' + ? WebAssembly + : typeof WXWebAssembly !== 'undefined' + ? WXWebAssembly + : undefined; +function validateImports(imports) { + if (imports && typeof imports !== 'object') { + throw new TypeError('imports must be an object or undefined'); + } + return true; +} +function load(wasmInput, imports) { + if (!wasmInput) + throw new TypeError('Invalid wasm source'); + validateImports(imports); + imports = imports !== null && imports !== void 0 ? imports : {}; + // Promise + try { + var then = typeof wasmInput === 'object' && wasmInput !== null && 'then' in wasmInput ? wasmInput.then : undefined; + if (typeof then === 'function') { + return then.call(wasmInput, function (input) { return load(input, imports); }); + } + } + catch (_) { } + // BufferSource + if (wasmInput instanceof ArrayBuffer || ArrayBuffer.isView(wasmInput)) { + return _WebAssembly.instantiate(wasmInput, imports); + } + // WebAssembly.Module + if (wasmInput instanceof _WebAssembly.Module) { + return _WebAssembly.instantiate(wasmInput, imports).then(function (instance) { + return { instance: instance, module: wasmInput }; + }); + } + // Response + if (typeof Response !== 'undefined' && wasmInput instanceof Response) { + return wasmInput.arrayBuffer().then(function (buffer) { + return _WebAssembly.instantiate(buffer, imports); + }); + } + // string | URL + var inputIsString = typeof wasmInput === 'string'; + if (inputIsString || (typeof URL !== 'undefined' && wasmInput instanceof URL)) { + if (inputIsString && typeof wx !== 'undefined' && typeof __wxConfig !== 'undefined') { + return _WebAssembly.instantiate(wasmInput, imports); + } + if (typeof fetch !== 'function') { + throw new TypeError('wasm source can not be a string or URL in this environment'); + } + if (typeof _WebAssembly.instantiateStreaming === 'function') { + try { + return _WebAssembly.instantiateStreaming(fetch(wasmInput), imports).catch(function () { + return load(fetch(wasmInput), imports); + }); + } + catch (_) { + return load(fetch(wasmInput), imports); + } + } + else { + return load(fetch(wasmInput), imports); + } + } + throw new TypeError('Invalid wasm source'); +} +function loadSync(wasmInput, imports) { + if (!wasmInput) + throw new TypeError('Invalid wasm source'); + validateImports(imports); + imports = imports !== null && imports !== void 0 ? imports : {}; + var module; + if ((wasmInput instanceof ArrayBuffer) || ArrayBuffer.isView(wasmInput)) { + module = new _WebAssembly.Module(wasmInput); + } + else if (wasmInput instanceof WebAssembly.Module) { + module = wasmInput; + } + else { + throw new TypeError('Invalid wasm source'); + } + var instance = new _WebAssembly.Instance(module, imports); + var source = { instance: instance, module: module }; + return source; +} + +function createNapiModule(options) { + var napiModule = (function () { + var ENVIRONMENT_IS_NODE = typeof process === 'object' && process !== null && typeof process.versions === 'object' && process.versions !== null && typeof process.versions.node === 'string'; + var ENVIRONMENT_IS_PTHREAD = Boolean(options.childThread); + var waitThreadStart = typeof options.waitThreadStart === 'number' ? options.waitThreadStart : Boolean(options.waitThreadStart); + var wasmInstance; + var wasmMemory; + var wasmTable; + var _malloc; + var _free; + function abort(msg) { + if (typeof _WebAssembly.RuntimeError === 'function') { + throw new _WebAssembly.RuntimeError(msg); + } + throw Error(msg); + } + var napiModule = { + imports: { + env: {}, + napi: {}, + emnapi: {} + }, + exports: {}, + emnapi: {}, + loaded: false, + filename: '', + childThread: ENVIRONMENT_IS_PTHREAD, + initWorker: undefined, + waitThreadStart: waitThreadStart, + PThread: undefined, + init: function (options) { + if (napiModule.loaded) + return napiModule.exports; + if (!options) + throw new TypeError('Invalid napi init options'); + var instance = options.instance; + if (!(instance === null || instance === void 0 ? void 0 : instance.exports)) + throw new TypeError('Invalid wasm instance'); + wasmInstance = instance; + var exports$1 = instance.exports; + var module = options.module; + var memory = options.memory || exports$1.memory; + var table = options.table || exports$1.__indirect_function_table; + if (!(module instanceof _WebAssembly.Module)) + throw new TypeError('Invalid wasm module'); + if (!(memory instanceof _WebAssembly.Memory)) + throw new TypeError('Invalid wasm memory'); + if (!(table instanceof _WebAssembly.Table)) + throw new TypeError('Invalid wasm table'); + wasmMemory = memory; + wasmTable = table; + if (typeof exports$1.malloc !== 'function') + throw new TypeError('malloc is not exported'); + if (typeof exports$1.free !== 'function') + throw new TypeError('free is not exported'); + _malloc = exports$1.malloc; + _free = exports$1.free; + if (!napiModule.childThread) { + // main thread only + var moduleApiVersion = 8 /* Version.NODE_API_DEFAULT_MODULE_API_VERSION */; + var node_api_module_get_api_version_v1 = instance.exports.node_api_module_get_api_version_v1; + if (typeof node_api_module_get_api_version_v1 === 'function') { + moduleApiVersion = node_api_module_get_api_version_v1(); + } + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing + var envObject = napiModule.envObject || (napiModule.envObject = emnapiCtx.createEnv(napiModule.filename, moduleApiVersion, function (cb) { return (wasmTable.get(cb)); }, function (cb) { return (wasmTable.get(cb)); }, abort, emnapiNodeBinding)); + var scope_1 = emnapiCtx.openScope(envObject); + try { + envObject.callIntoModule(function (_envObject) { + var exports$1 = napiModule.exports; + var exportsHandle = scope_1.add(exports$1); + var napi_register_wasm_v1 = instance.exports.napi_register_wasm_v1; + var napiValue = napi_register_wasm_v1(_envObject.id, exportsHandle.id); + napiModule.exports = (!napiValue) ? exports$1 : emnapiCtx.handleStore.get(napiValue).value; + }); + } + catch (e) { + if (e !== 'unwind') { + throw e; + } + } + finally { + emnapiCtx.closeScope(envObject, scope_1); + } + napiModule.loaded = true; + delete napiModule.envObject; + return napiModule.exports; + } + } + }; + var emnapiCtx; + var emnapiNodeBinding; + var onCreateWorker = undefined; + var err; + if (!ENVIRONMENT_IS_PTHREAD) { + var context = options.context; + if (typeof context !== 'object' || context === null) { + throw new TypeError("Invalid `options.context`. Use `import { getDefaultContext } from '@emnapi/runtime'`"); + } + emnapiCtx = context; + } + else { + emnapiCtx = options === null || options === void 0 ? void 0 : options.context; + var postMsg = typeof options.postMessage === 'function' + ? options.postMessage + : typeof postMessage === 'function' + ? postMessage + : undefined; + if (typeof postMsg !== 'function') { + throw new TypeError('No postMessage found'); + } + napiModule.postMessage = postMsg; + } + if (typeof options.filename === 'string') { + napiModule.filename = options.filename; + } + if (typeof options.onCreateWorker === 'function') { + onCreateWorker = options.onCreateWorker; + } + if (typeof options.print === 'function') { + options.print; + } + else { + console.log.bind(console); + } + if (typeof options.printErr === 'function') { + err = options.printErr; + } + else { + err = console.warn.bind(console); + } + if ('nodeBinding' in options) { + var nodeBinding = options.nodeBinding; + if (typeof nodeBinding !== 'object' || nodeBinding === null) { + throw new TypeError('Invalid `options.nodeBinding`. Use @emnapi/node-binding package'); + } + emnapiNodeBinding = nodeBinding; + } + var emnapiAsyncWorkPoolSize = 0; + if ('asyncWorkPoolSize' in options) { + if (typeof options.asyncWorkPoolSize !== 'number') { + throw new TypeError('options.asyncWorkPoolSize must be a integer'); + } + emnapiAsyncWorkPoolSize = options.asyncWorkPoolSize >> 0; + if (emnapiAsyncWorkPoolSize > 1024) { + emnapiAsyncWorkPoolSize = 1024; + } + else if (emnapiAsyncWorkPoolSize < -1024) { + emnapiAsyncWorkPoolSize = -1024; + } + } + var singleThreadAsyncWork = ENVIRONMENT_IS_PTHREAD ? false : (emnapiAsyncWorkPoolSize <= 0); + function _emnapi_async_work_pool_size() { + return Math.abs(emnapiAsyncWorkPoolSize); + } + napiModule.imports.env._emnapi_async_work_pool_size = _emnapi_async_work_pool_size; + // ------------------------------ pthread ------------------------------- + function emnapiAddSendListener(worker) { + if (!worker) + return false; + if (worker._emnapiSendListener) + return true; + var handler = function (e) { + var data = ENVIRONMENT_IS_NODE ? e : e.data; + var __emnapi__ = data.__emnapi__; + if (__emnapi__ && __emnapi__.type === 'async-send') { + if (ENVIRONMENT_IS_PTHREAD) { + var postMessage_1 = napiModule.postMessage; + postMessage_1({ __emnapi__: __emnapi__ }); + } + else { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var callback = __emnapi__.payload.callback; + (wasmTable.get(callback))(__emnapi__.payload.data); + } + } + }; + var dispose = function () { + if (ENVIRONMENT_IS_NODE) { + worker.off('message', handler); + } + else { + worker.removeEventListener('message', handler, false); + } + delete worker._emnapiSendListener; + }; + worker._emnapiSendListener = { handler: handler, dispose: dispose }; + if (ENVIRONMENT_IS_NODE) { + worker.on('message', handler); + } + else { + worker.addEventListener('message', handler, false); + } + return true; + } + napiModule.emnapi.addSendListener = emnapiAddSendListener; + var PThread = new ThreadManager(ENVIRONMENT_IS_PTHREAD + ? { + printErr: err, + childThread: true + } + : { + printErr: err, + beforeLoad: function (worker) { + emnapiAddSendListener(worker); + }, + reuseWorker: options.reuseWorker, + onCreateWorker: onCreateWorker + }); + napiModule.PThread = PThread; + /** + * @__sig ipiip + */ + function napi_set_last_error(env, error_code, engine_error_code, engine_reserved) { + var envObject = emnapiCtx.envStore.get(env); + return envObject.setLastError(error_code, engine_error_code, engine_reserved); + } + /** + * @__sig ip + */ + function napi_clear_last_error(env) { + var envObject = emnapiCtx.envStore.get(env); + return envObject.clearLastError(); + } + /** + * @__sig vppp + */ + function _emnapi_get_node_version(major, minor, patch) { + major >>>= 0; + minor >>>= 0; + patch >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var versions = (typeof process === 'object' && process !== null && + typeof process.versions === 'object' && process.versions !== null && + typeof process.versions.node === 'string') + ? process.versions.node.split('.').map(function (n) { return Number(n); }) + : [0, 0, 0]; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(major, versions[0], true); + HEAP_DATA_VIEW.setUint32(minor, versions[1], true); + HEAP_DATA_VIEW.setUint32(patch, versions[2], true); + } + /** + * @__sig v + * @__deps $runtimeKeepalivePush + */ + function _emnapi_runtime_keepalive_push() { + } + /** + * @__sig v + * @__deps $runtimeKeepalivePop + */ + function _emnapi_runtime_keepalive_pop() { + } + /** + * @__sig vpp + */ + function _emnapi_set_immediate(callback, data) { + emnapiCtx.feature.setImmediate(function () { + (wasmTable.get(callback))(data); + }); + } + /** + * @__sig vpp + */ + function _emnapi_next_tick(callback, data) { + // eslint-disable-next-line @typescript-eslint/no-floating-promises + Promise.resolve().then(function () { + (wasmTable.get(callback))(data); + }); + } + /** + * @__sig vipppi + */ + function _emnapi_callback_into_module(forceUncaught, env, callback, data, close_scope_if_throw) { + var envObject = emnapiCtx.envStore.get(env); + var scope = emnapiCtx.openScope(envObject); + try { + envObject.callbackIntoModule(Boolean(forceUncaught), function () { + (wasmTable.get(callback))(env, data); + }); + } + catch (err) { + emnapiCtx.closeScope(envObject, scope); + if (close_scope_if_throw) { + emnapiCtx.closeScope(envObject); + } + throw err; + } + emnapiCtx.closeScope(envObject, scope); + } + /** + * @__sig vipppp + */ + function _emnapi_call_finalizer(forceUncaught, env, callback, data, hint) { + var envObject = emnapiCtx.envStore.get(env); + callback >>>= 0; + envObject.callFinalizerInternal(forceUncaught, callback, data, hint); + } + /** + * @__sig v + */ + function _emnapi_ctx_increase_waiting_request_counter() { + emnapiCtx.increaseWaitingRequestCounter(); + } + /** + * @__sig v + */ + function _emnapi_ctx_decrease_waiting_request_counter() { + emnapiCtx.decreaseWaitingRequestCounter(); + } + /** + * @__sig i + */ + function _emnapi_is_main_runtime_thread() { + return ENVIRONMENT_IS_PTHREAD ? 0 : 1; + } + /** + * @__sig i + */ + function _emnapi_is_main_browser_thread() { + return (typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE) ? 1 : 0; + } + /** + * @__sig v + */ + function _emnapi_unwind() { + // eslint-disable-next-line @typescript-eslint/no-throw-literal + throw 'unwind'; + } + /** + * @__sig d + */ + function _emnapi_get_now() { + return performance.timeOrigin + performance.now(); + } + function $emnapiSetValueI64(result, numberValue) { + var tempDouble; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var tempI64 = [ + numberValue >>> 0, + (tempDouble = numberValue, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) + ]; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt32(result, tempI64[0], true); + HEAP_DATA_VIEW.setInt32(result + 4, tempI64[1], true); + } + /** + * @__deps $emnapiCtx + * @__sig p + */ + function _emnapi_open_handle_scope() { + return emnapiCtx.openScope().id; + } + /** + * @__deps $emnapiCtx + * @__sig vp + */ + function _emnapi_close_handle_scope(_scope) { + return emnapiCtx.closeScope(); + } + var utilMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + $emnapiSetValueI64: $emnapiSetValueI64, + _emnapi_call_finalizer: _emnapi_call_finalizer, + _emnapi_callback_into_module: _emnapi_callback_into_module, + _emnapi_close_handle_scope: _emnapi_close_handle_scope, + _emnapi_ctx_decrease_waiting_request_counter: _emnapi_ctx_decrease_waiting_request_counter, + _emnapi_ctx_increase_waiting_request_counter: _emnapi_ctx_increase_waiting_request_counter, + _emnapi_get_node_version: _emnapi_get_node_version, + _emnapi_get_now: _emnapi_get_now, + _emnapi_is_main_browser_thread: _emnapi_is_main_browser_thread, + _emnapi_is_main_runtime_thread: _emnapi_is_main_runtime_thread, + _emnapi_next_tick: _emnapi_next_tick, + _emnapi_open_handle_scope: _emnapi_open_handle_scope, + _emnapi_runtime_keepalive_pop: _emnapi_runtime_keepalive_pop, + _emnapi_runtime_keepalive_push: _emnapi_runtime_keepalive_push, + _emnapi_set_immediate: _emnapi_set_immediate, + _emnapi_unwind: _emnapi_unwind, + napi_clear_last_error: napi_clear_last_error, + napi_set_last_error: napi_set_last_error + }); + function emnapiGetWorkerByPthreadPtr(pthreadPtr) { + var view = new DataView(wasmMemory.buffer); + /** + * wasi-sdk-20.0+threads + * + * struct pthread { + * struct pthread *self; // 0 + * struct pthread *prev, *next; // 4, 8 + * uintptr_t sysinfo; // 12 + * uintptr_t canary; // 16 + * int tid; // 20 + * // ... + * } + */ + var tidOffset = 20; + var tid = view.getInt32(pthreadPtr + tidOffset, true); + var worker = PThread.pthreads[tid]; + return worker; + } + /** @__sig vp */ + function _emnapi_worker_ref(pthreadPtr) { + if (ENVIRONMENT_IS_PTHREAD) + return; + pthreadPtr >>>= 0; + var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr); + if (worker && typeof worker.ref === 'function') { + worker.ref(); + } + } + /** @__sig vp */ + function _emnapi_worker_unref(pthreadPtr) { + if (ENVIRONMENT_IS_PTHREAD) + return; + pthreadPtr >>>= 0; + var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr); + if (worker && typeof worker.unref === 'function') { + worker.unref(); + } + } + /** @__sig vipp */ + function _emnapi_async_send_js(type, callback, data) { + if (ENVIRONMENT_IS_PTHREAD) { + var postMessage_1 = napiModule.postMessage; + postMessage_1({ + __emnapi__: { + type: 'async-send', + payload: { + callback: callback, + data: data + } + } + }); + } + else { + switch (type) { + case 0: + _emnapi_set_immediate(callback, data); + break; + case 1: + _emnapi_next_tick(callback, data); + break; + } + } + } + // function ptrToString (ptr: number): string { + // return '0x' + ('00000000' + ptr.toString(16)).slice(-8) + // } + var uvThreadpoolReadyResolve; + var uvThreadpoolReady = new Promise(function (resolve) { + uvThreadpoolReadyResolve = function () { + uvThreadpoolReady.ready = true; + resolve(); + }; + }); + uvThreadpoolReady.ready = false; + /** @__sig vppi */ + function _emnapi_after_uvthreadpool_ready(callback, q, type) { + if (uvThreadpoolReady.ready) { + (wasmTable.get(callback))(q, type); + } + else { + uvThreadpoolReady.then(function () { + (wasmTable.get(callback))(q, type); + }); + } + } + /** @__sig vpi */ + function _emnapi_tell_js_uvthreadpool(threads, size) { + var p = []; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + var _loop_1 = function (i) { + var pthreadPtr = HEAP_DATA_VIEW.getUint32(threads + i * 4, true); + var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr); + p.push(new Promise(function (resolve) { + var handler = function (e) { + var data = ENVIRONMENT_IS_NODE ? e : e.data; + var __emnapi__ = data.__emnapi__; + if (__emnapi__ && __emnapi__.type === 'async-thread-ready') { + resolve(); + if (worker && typeof worker.unref === 'function') { + worker.unref(); + } + if (ENVIRONMENT_IS_NODE) { + worker.off('message', handler); + } + else { + worker.removeEventListener('message', handler); + } + } + }; + if (ENVIRONMENT_IS_NODE) { + worker.on('message', handler); + } + else { + worker.addEventListener('message', handler); + } + })); + }; + for (var i = 0; i < size; i++) { + _loop_1(i); + } + Promise.all(p).then(uvThreadpoolReadyResolve); + } + /** @__sig v */ + function _emnapi_emit_async_thread_ready() { + if (!ENVIRONMENT_IS_PTHREAD) + return; + var postMessage = napiModule.postMessage; + postMessage({ + __emnapi__: { + type: 'async-thread-ready', + payload: {} + } + }); + } + var asyncMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + _emnapi_after_uvthreadpool_ready: _emnapi_after_uvthreadpool_ready, + _emnapi_async_send_js: _emnapi_async_send_js, + _emnapi_emit_async_thread_ready: _emnapi_emit_async_thread_ready, + _emnapi_tell_js_uvthreadpool: _emnapi_tell_js_uvthreadpool, + _emnapi_worker_ref: _emnapi_worker_ref, + _emnapi_worker_unref: _emnapi_worker_unref + }); + /** @__sig ipjp */ + function napi_adjust_external_memory(env, change_in_bytes, adjusted_value) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + var envObject = emnapiCtx.envStore.get(env); + if (!adjusted_value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + // eslint-disable-next-line prefer-const + var adjusted_memory = emnapiCtx.adjustAmountOfExternalAllocatedMemory(change_in_bytes); + adjusted_value >>>= 0; + if (emnapiCtx.feature.supportBigInt) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(adjusted_memory), true); + } + else { + $emnapiSetValueI64(adjusted_value, Number(adjusted_memory)); + } + return envObject.clearLastError(); + } + var memoryMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + napi_adjust_external_memory: napi_adjust_external_memory + }); + /** + * @__postset + * ``` + * emnapiAWST.init(); + * ``` + */ + var emnapiAWST = { + idGen: {}, + values: [undefined], + queued: new Set(), + pending: [], + init: function () { + var idGen = { + nextId: 1, + list: [], + generate: function () { + var id; + if (idGen.list.length) { + id = idGen.list.shift(); + } + else { + id = idGen.nextId; + idGen.nextId++; + } + return id; + }, + reuse: function (id) { + idGen.list.push(id); + } + }; + emnapiAWST.idGen = idGen; + emnapiAWST.values = [undefined]; + emnapiAWST.queued = new Set(); + emnapiAWST.pending = []; + }, + create: function (env, resource, resourceName, execute, complete, data) { + var asyncId = 0; + var triggerAsyncId = 0; + if (emnapiNodeBinding) { + var asyncContext = emnapiNodeBinding.node.emitAsyncInit(resource, resourceName, -1); + asyncId = asyncContext.asyncId; + triggerAsyncId = asyncContext.triggerAsyncId; + } + var id = emnapiAWST.idGen.generate(); + emnapiAWST.values[id] = { + env: env, + id: id, + resource: resource, + asyncId: asyncId, + triggerAsyncId: triggerAsyncId, + status: 0, + execute: execute, + complete: complete, + data: data + }; + return id; + }, + callComplete: function (work, status) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var complete = work.complete; + var env = work.env; + var data = work.data; + var callback = function () { + if (!complete) + return; + var envObject = emnapiCtx.envStore.get(env); + var scope = emnapiCtx.openScope(envObject); + try { + envObject.callbackIntoModule(true, function () { + (wasmTable.get(complete))(env, status, data); + }); + } + finally { + emnapiCtx.closeScope(envObject, scope); + } + }; + if (emnapiNodeBinding) { + emnapiNodeBinding.node.makeCallback(work.resource, callback, [], { + asyncId: work.asyncId, + triggerAsyncId: work.triggerAsyncId + }); + } + else { + callback(); + } + }, + queue: function (id) { + var work = emnapiAWST.values[id]; + if (!work) + return; + if (work.status === 0) { + work.status = 1; + if (emnapiAWST.queued.size >= (Math.abs(emnapiAsyncWorkPoolSize) || 4)) { + emnapiAWST.pending.push(id); + return; + } + emnapiAWST.queued.add(id); + var env_1 = work.env; + var data_1 = work.data; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var execute = work.execute; + work.status = 2; + emnapiCtx.feature.setImmediate(function () { + (wasmTable.get(execute))(env_1, data_1); + emnapiAWST.queued.delete(id); + work.status = 3; + emnapiCtx.feature.setImmediate(function () { + emnapiAWST.callComplete(work, 0 /* napi_status.napi_ok */); + }); + if (emnapiAWST.pending.length > 0) { + var nextWorkId = emnapiAWST.pending.shift(); + emnapiAWST.values[nextWorkId].status = 0; + emnapiAWST.queue(nextWorkId); + } + }); + } + }, + cancel: function (id) { + var index = emnapiAWST.pending.indexOf(id); + if (index !== -1) { + var work_1 = emnapiAWST.values[id]; + if (work_1 && (work_1.status === 1)) { + work_1.status = 4; + emnapiAWST.pending.splice(index, 1); + emnapiCtx.feature.setImmediate(function () { + emnapiAWST.callComplete(work_1, 11 /* napi_status.napi_cancelled */); + }); + return 0 /* napi_status.napi_ok */; + } + else { + return 9 /* napi_status.napi_generic_failure */; + } + } + return 9 /* napi_status.napi_generic_failure */; + }, + remove: function (id) { + var work = emnapiAWST.values[id]; + if (!work) + return; + if (emnapiNodeBinding) { + emnapiNodeBinding.node.emitAsyncDestroy({ + asyncId: work.asyncId, + triggerAsyncId: work.triggerAsyncId + }); + } + emnapiAWST.values[id] = undefined; + emnapiAWST.idGen.reuse(id); + } + }; + /** @__sig vppdp */ + function _emnapi_node_emit_async_init(async_resource, async_resource_name, trigger_async_id, result) { + if (!emnapiNodeBinding) + return; + var resource = emnapiCtx.handleStore.get(async_resource).value; + var resource_name = emnapiCtx.handleStore.get(async_resource_name).value; + var asyncContext = emnapiNodeBinding.node.emitAsyncInit(resource, resource_name, trigger_async_id); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var asyncId = asyncContext.asyncId; + var triggerAsyncId = asyncContext.triggerAsyncId; + if (result) { + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setFloat64(result, asyncId, true); + HEAP_DATA_VIEW.setFloat64(result + 8, triggerAsyncId, true); + } + } + /** @__sig vdd */ + function _emnapi_node_emit_async_destroy(async_id, trigger_async_id) { + if (!emnapiNodeBinding) + return; + emnapiNodeBinding.node.emitAsyncDestroy({ + asyncId: async_id, + triggerAsyncId: trigger_async_id + }); + } + /* vpddp export function _emnapi_node_open_callback_scope (async_resource: napi_value, async_id: double, trigger_async_id: double, result: Pointer): void { + if (!emnapiNodeBinding || !result) return + const resource = emnapiCtx.handleStore.get(async_resource)!.value + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const nativeCallbackScopePointer = emnapiNodeBinding.node.openCallbackScope(resource, { + asyncId: async_id, + triggerAsyncId: trigger_async_id + }) + + from64('result') + $_TODO_makeSetValue('result', 0, 'nativeCallbackScopePointer', 'i64') + } + + vp + export function _emnapi_node_close_callback_scope (scope: Pointer): void { + if (!emnapiNodeBinding || !scope) return + from64('scope') + const nativeCallbackScopePointer = $_TODO_makeGetValue('scope', 0, 'i64') + emnapiNodeBinding.node.closeCallbackScope(BigInt(nativeCallbackScopePointer)) + } */ + /** @__sig ipppppddp */ + function _emnapi_node_make_callback(env, async_resource, cb, argv, size, async_id, trigger_async_id, result) { + var i = 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v; + if (!emnapiNodeBinding) + return; + var resource = emnapiCtx.handleStore.get(async_resource).value; + var callback = emnapiCtx.handleStore.get(cb).value; + argv >>>= 0; + size >>>= 0; + size = size >>> 0; + var arr = Array(size); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + for (; i < size; i++) { + var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); + arr[i] = emnapiCtx.handleStore.get(argVal).value; + } + var ret = emnapiNodeBinding.node.makeCallback(resource, callback, arr, { + asyncId: async_id, + triggerAsyncId: trigger_async_id + }); + if (result) { + result >>>= 0; + var envObject = emnapiCtx.envStore.get(env); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + v = envObject.ensureHandleId(ret); + HEAP_DATA_VIEW.setUint32(result, v, true); + } + } + /** @__sig ippp */ + function _emnapi_async_init_js(async_resource, async_resource_name, result) { + if (!emnapiNodeBinding) { + return 9 /* napi_status.napi_generic_failure */; + } + var resource; + if (async_resource) { + resource = Object(emnapiCtx.handleStore.get(async_resource).value); + } + var name = emnapiCtx.handleStore.get(async_resource_name).value; + var ret = emnapiNodeBinding.napi.asyncInit(resource, name); + if (ret.status !== 0) + return ret.status; + var numberValue = ret.value; + if (!((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63))))) { + numberValue = numberValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); + if (numberValue >= (BigInt(1) << BigInt(63))) { + numberValue = numberValue - (BigInt(1) << BigInt(64)); + } + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var low = Number(numberValue & BigInt(0xffffffff)); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var high = Number(numberValue >> BigInt(32)); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt32(result, low, true); + HEAP_DATA_VIEW.setInt32(result + 4, high, true); + return 0 /* napi_status.napi_ok */; + } + /** @__sig ip */ + function _emnapi_async_destroy_js(async_context) { + if (!emnapiNodeBinding) { + return 9 /* napi_status.napi_generic_failure */; + } + async_context >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + var low = HEAP_DATA_VIEW.getInt32(async_context, true); + var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true); + var pointer = BigInt(low >>> 0) | (BigInt(high) << BigInt(32)); + var ret = emnapiNodeBinding.napi.asyncDestroy(pointer); + if (ret.status !== 0) + return ret.status; + return 0 /* napi_status.napi_ok */; + } + // https://github.com/nodejs/node-addon-api/pull/1283 + /** @__sig ipppp */ + function napi_open_callback_scope(env, ignored, async_context_handle, result) { + throw new Error('napi_open_callback_scope has not been implemented yet'); + } + /** @__sig ipp */ + function napi_close_callback_scope(env, scope) { + throw new Error('napi_close_callback_scope has not been implemented yet'); + } + /** @__sig ippppppp */ + function napi_make_callback(env, async_context, recv, func, argc, argv, result) { + var i = 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!emnapiNodeBinding) { + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + if (!recv) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (argc > 0) { + if (!argv) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var v8recv = Object(emnapiCtx.handleStore.get(recv).value); + var v8func = emnapiCtx.handleStore.get(func).value; + if (typeof v8func !== 'function') { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + async_context >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + var low = HEAP_DATA_VIEW.getInt32(async_context, true); + var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true); + var ctx = BigInt(low >>> 0) | (BigInt(high) << BigInt(32)); + argv >>>= 0; + argc >>>= 0; + argc = argc >>> 0; + var arr = Array(argc); + for (; i < argc; i++) { + var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); + arr[i] = emnapiCtx.handleStore.get(argVal).value; + } + var ret = emnapiNodeBinding.napi.makeCallback(ctx, v8recv, v8func, arr); + if (ret.error) { + throw ret.error; + } + if (ret.status !== 0 /* napi_status.napi_ok */) + return envObject.setLastError(ret.status); + if (result) { + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + v = envObject.ensureHandleId(ret.value); + HEAP_DATA_VIEW.setUint32(result, v, true); + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig vp */ + function _emnapi_env_check_gc_access(env) { + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + } + var nodeMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + _emnapi_async_destroy_js: _emnapi_async_destroy_js, + _emnapi_async_init_js: _emnapi_async_init_js, + _emnapi_env_check_gc_access: _emnapi_env_check_gc_access, + _emnapi_node_emit_async_destroy: _emnapi_node_emit_async_destroy, + _emnapi_node_emit_async_init: _emnapi_node_emit_async_init, + _emnapi_node_make_callback: _emnapi_node_make_callback, + napi_close_callback_scope: napi_close_callback_scope, + napi_make_callback: napi_make_callback, + napi_open_callback_scope: napi_open_callback_scope + }); + /** + * @__deps malloc + * @__deps free + * @__postset + * ``` + * emnapiTSFN.init(); + * ``` + */ + var emnapiTSFN = { + _liveSet: {}, + offset: { + __size__: 0, + /* napi_ref */ resource: 0, + /* double */ async_id: 0, + /* double */ trigger_async_id: 0, + /* size_t */ queue_size: 0, + /* bool */ is_some: 0, + /* void* */ queue: 0, + // Reuse uv_async_t storage as JS-side wakeup state: pending event + scheduled drain. + async_pending: 0, + async_u_fd: 0, + /* size_t */ thread_count: 0, + /* int32_t */ state: 0, + /* atomic_uchar */ dispatch_state: 0, + /* void* */ context: 0, + /* size_t */ max_queue_size: 0, + /* napi_ref */ ref: 0, + /* napi_env */ env: 0, + /* void* */ finalize_data: 0, + /* napi_finalize */ finalize_cb: 0, + /* napi_threadsafe_function_call_js */ call_js_cb: 0, + /* bool */ handles_closing: 0, + /* bool */ async_ref: 0, + /* int32_t */ mutex: 0, + /* int32_t */ cond: 0 + }, + init: function () { + emnapiTSFN._liveSet = new Set(); + emnapiTSFN.offset.__size__ = 184 /* NapiTSFNOffset32.__size__ */; + emnapiTSFN.offset.resource = 0 /* NapiTSFNOffset32.async_resource_resource */; + emnapiTSFN.offset.async_id = 8 /* NapiTSFNOffset32.async_resource_async_context_async_id */; + emnapiTSFN.offset.trigger_async_id = 16 /* NapiTSFNOffset32.async_resource_async_context_trigger_async_id */; + emnapiTSFN.offset.queue_size = 60 /* NapiTSFNOffset32.queue_size */; + emnapiTSFN.offset.is_some = 24 /* NapiTSFNOffset32.async_resource_is_some */; + emnapiTSFN.offset.queue = 64 /* NapiTSFNOffset32.queue */; + emnapiTSFN.offset.async_pending = 132 /* NapiTSFNOffset32.async_pending */; + emnapiTSFN.offset.async_u_fd = 96 /* NapiTSFNOffset32.async_u_fd */; + emnapiTSFN.offset.thread_count = 136 /* NapiTSFNOffset32.thread_count */; + emnapiTSFN.offset.state = 140 /* NapiTSFNOffset32.state */; + emnapiTSFN.offset.dispatch_state = 144 /* NapiTSFNOffset32.dispatch_state */; + emnapiTSFN.offset.context = 148 /* NapiTSFNOffset32.context */; + emnapiTSFN.offset.max_queue_size = 152 /* NapiTSFNOffset32.max_queue_size */; + emnapiTSFN.offset.ref = 156 /* NapiTSFNOffset32.ref */; + emnapiTSFN.offset.env = 160 /* NapiTSFNOffset32.env */; + emnapiTSFN.offset.finalize_data = 164 /* NapiTSFNOffset32.finalize_data */; + emnapiTSFN.offset.finalize_cb = 168 /* NapiTSFNOffset32.finalize_cb */; + emnapiTSFN.offset.call_js_cb = 172 /* NapiTSFNOffset32.call_js_cb */; + emnapiTSFN.offset.handles_closing = 176 /* NapiTSFNOffset32.handles_closing */; + emnapiTSFN.offset.async_ref = 180 /* NapiTSFNOffset32.async_ref */; + emnapiTSFN.offset.mutex = 32 /* NapiTSFNOffset32.mutex */; + emnapiTSFN.offset.cond = 56 /* NapiTSFNOffset32.cond */; + emnapiTSFN.offset.mutex = emnapiTSFN.offset.mutex + 4; + if (typeof PThread !== 'undefined') { + PThread.unusedWorkers.forEach(emnapiTSFN.addListener); + PThread.runningWorkers.forEach(emnapiTSFN.addListener); + var __original_getNewWorker_1 = PThread.getNewWorker; + PThread.getNewWorker = function () { + var r = __original_getNewWorker_1.apply(this, arguments); + emnapiTSFN.addListener(r); + return r; + }; + } + }, + addListener: function (worker) { + if (!worker) + return false; + if (worker._emnapiTSFNListener) + return true; + var handler = function (e) { + var data = ENVIRONMENT_IS_NODE ? e : e.data; + var __emnapi__ = data.__emnapi__; + if (__emnapi__) { + var type = __emnapi__.type; + var payload = __emnapi__.payload; + if (type === 'tsfn-send') { + var pendng = payload.tsfn + emnapiTSFN.offset.async_pending; + if (Atomics.load(new Int32Array(wasmMemory.buffer), pendng >>> 2) !== 0) { + emnapiTSFN.enqueue(payload.tsfn); + } + } + } + }; + var dispose = function () { + if (ENVIRONMENT_IS_NODE) { + worker.off('message', handler); + } + else { + worker.removeEventListener('message', handler, false); + } + delete worker._emnapiTSFNListener; + }; + worker._emnapiTSFNListener = { handler: handler, dispose: dispose }; + if (ENVIRONMENT_IS_NODE) { + worker.on('message', handler); + } + else { + worker.addEventListener('message', handler, false); + } + return true; + }, + initQueue: function (func) { + var size = 2 * 4; + var queue = _malloc(size); + if (!queue) + return false; + queue >>>= 0; + new Uint8Array(wasmMemory.buffer, queue, size).fill(0); + emnapiTSFN.storeSizeTypeValue(func + emnapiTSFN.offset.queue, queue, false); + return true; + }, + destroyQueue: function (func) { + var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false); + if (queue) { + var node = emnapiTSFN.loadSizeTypeValue(queue, false); + while (node !== 0) { + var next = emnapiTSFN.loadSizeTypeValue(node + 4, false); + _free(node); + node = next; + } + _free(queue); + } + }, + pushQueue: function (func, data) { + var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false); + var head = emnapiTSFN.loadSizeTypeValue(queue, false); + var tail = emnapiTSFN.loadSizeTypeValue(queue + 4, false); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var size = 2 * 4; + var node = _malloc(size); + if (!node) + throw new Error('OOM'); + node >>>= 0; + emnapiTSFN.storeSizeTypeValue(node, data, false); + emnapiTSFN.storeSizeTypeValue(node + 4, 0, false); + if (head === 0 && tail === 0) { + emnapiTSFN.storeSizeTypeValue(queue, node, false); + emnapiTSFN.storeSizeTypeValue(queue + 4, node, false); + } + else { + emnapiTSFN.storeSizeTypeValue(tail + 4, node, false); + emnapiTSFN.storeSizeTypeValue(queue + 4, node, false); + } + emnapiTSFN.addQueueSize(func); + }, + shiftQueue: function (func) { + var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false); + var head = emnapiTSFN.loadSizeTypeValue(queue, false); + if (head === 0) + return 0; + var node = head; + var next = emnapiTSFN.loadSizeTypeValue(head + 4, false); + emnapiTSFN.storeSizeTypeValue(queue, next, false); + if (next === 0) { + emnapiTSFN.storeSizeTypeValue(queue + 4, 0, false); + } + emnapiTSFN.storeSizeTypeValue(node + 4, 0, false); + var value = emnapiTSFN.loadSizeTypeValue(node, false); + _free(node); + emnapiTSFN.subQueueSize(func); + return value; + }, + push: function (func, data, mode) { + var mutex = emnapiTSFN.getMutex(func); + var cond = emnapiTSFN.getCond(func); + var waitCondition = function () { + var queueSize = emnapiTSFN.getQueueSize(func); + var maxSize = emnapiTSFN.getMaxQueueSize(func); + return queueSize >= maxSize && maxSize > 0 && emnapiTSFN.getState(func) === 0 /* State.kOpen */; + }; + var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE; + var shouldDelete = false; + var ret = mutex.execute(function () { + while (waitCondition()) { + if (mode === 0 /* napi_threadsafe_function_call_mode.napi_tsfn_nonblocking */) { + return 15 /* napi_status.napi_queue_full */; + } + /** + * Browser JS main thread can not use `Atomics.wait` + * + * Related: + * https://github.com/nodejs/node/pull/32689 + * https://github.com/nodejs/node/pull/33453 + */ + if (isBrowserMain) { + return 21 /* napi_status.napi_would_deadlock */; + } + cond.wait(); + } + if (emnapiTSFN.getState(func) === 0 /* State.kOpen */) { + emnapiTSFN.pushQueue(func, data); + emnapiTSFN.send(func); + return 0 /* napi_status.napi_ok */; + } + if (emnapiTSFN.getThreadCount(func) === 0) { + return 1 /* napi_status.napi_invalid_arg */; + } + emnapiTSFN.subThreadCount(func); + if (!(emnapiTSFN.getState(func) === 2 /* State.kClosed */ && emnapiTSFN.getThreadCount(func) === 0)) { + return 16 /* napi_status.napi_closing */; + } + shouldDelete = true; + return 16 /* napi_status.napi_closing */; + }); + if (shouldDelete) { + emnapiTSFN.destroy(func); + } + return ret; + }, + getMutex: function (func) { + var index = func + emnapiTSFN.offset.mutex; + var mutex = { + lock: function () { + var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE; + var i32a = new Int32Array(wasmMemory.buffer, index, 1); + if (isBrowserMain) { + while (true) { + var oldValue = Atomics.compareExchange(i32a, 0, 0, 10); + if (oldValue === 0) { + return; + } + } + } + else { + while (true) { + var oldValue = Atomics.compareExchange(i32a, 0, 0, 10); + if (oldValue === 0) { + return; + } + Atomics.wait(i32a, 0, 10); + } + } + }, + /* lockAsync () { + return new Promise(resolve => { + const again = (): void => { fn() } + const fn = (): void => { + const i32a = new Int32Array(wasmMemory.buffer, index, 1) + const oldValue = Atomics.compareExchange(i32a, 0, 0, 10) + if (oldValue === 0) { + resolve() + return + } + (Atomics as any).waitAsync(i32a, 0, 10).value.then(again) + } + fn() + }) + }, */ + unlock: function () { + var i32a = new Int32Array(wasmMemory.buffer, index, 1); + var oldValue = Atomics.compareExchange(i32a, 0, 10, 0); + if (oldValue !== 10) { + throw new Error('Tried to unlock while not holding the mutex'); + } + Atomics.notify(i32a, 0, 1); + }, + execute: function (fn) { + mutex.lock(); + try { + return fn(); + } + finally { + mutex.unlock(); + } + } /* , + executeAsync (fn: () => Promise): Promise { + return mutex.lockAsync().then(() => { + const r = fn() + mutex.unlock() + return r + }, (err) => { + mutex.unlock() + throw err + }) + } */ + }; + return mutex; + }, + getCond: function (func) { + var index = func + emnapiTSFN.offset.cond; + var mutex = emnapiTSFN.getMutex(func); + var cond = { + wait: function () { + var i32a = new Int32Array(wasmMemory.buffer, index, 1); + var value = Atomics.load(i32a, 0); + mutex.unlock(); + Atomics.wait(i32a, 0, value); + mutex.lock(); + }, + /* waitAsync () { + const i32a = new Int32Array(wasmMemory.buffer, index, 1) + const value = Atomics.load(i32a, 0) + mutex.unlock() + const lock = (): Promise => mutex.lockAsync() + try { + return (Atomics as any).waitAsync(i32a, 0, value).value.then(lock, lock) + } catch (err) { + return lock() + } + }, */ + signal: function () { + var i32a = new Int32Array(wasmMemory.buffer, index, 1); + Atomics.add(i32a, 0, 1); + Atomics.notify(i32a, 0, 1); + } + }; + return cond; + }, + getQueueSize: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue_size, true); + }, + addQueueSize: function (func) { + var offset = emnapiTSFN.offset.queue_size; + var arr, index; + arr = new Uint32Array(wasmMemory.buffer); + index = (func + offset) >>> 2; + Atomics.add(arr, index, 1); + }, + subQueueSize: function (func) { + var offset = emnapiTSFN.offset.queue_size; + var arr, index; + arr = new Uint32Array(wasmMemory.buffer); + index = (func + offset) >>> 2; + Atomics.sub(arr, index, 1); + }, + getThreadCount: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.thread_count, true); + }, + addThreadCount: function (func) { + var offset = emnapiTSFN.offset.thread_count; + var arr, index; + arr = new Uint32Array(wasmMemory.buffer); + index = (func + offset) >>> 2; + Atomics.add(arr, index, 1); + }, + subThreadCount: function (func) { + var offset = emnapiTSFN.offset.thread_count; + var arr, index; + arr = new Uint32Array(wasmMemory.buffer); + index = (func + offset) >>> 2; + Atomics.sub(arr, index, 1); + }, + getState: function (func) { + return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.state) >>> 2); + }, + setState: function (func, value) { + Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.state) >>> 2, value); + }, + getHandlesClosing: function (func) { + return Atomics.load(new Int8Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing)); + }, + setHandlesClosing: function (func, value) { + Atomics.store(new Int8Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing), value); + }, + getDispatchState: function (func) { + return Atomics.load(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >>> 2); + }, + getContext: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.context, false); + }, + getMaxQueueSize: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.max_queue_size, true); + }, + getEnv: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.env, false); + }, + getCallJSCb: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.call_js_cb, false); + }, + getRef: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.ref, false); + }, + getResource: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.resource, false); + }, + getFinalizeCb: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.finalize_cb, false); + }, + getFinalizeData: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.finalize_data, false); + }, + loadSizeTypeValue: function (offset, unsigned) { + var ret; + var arr; + if (unsigned) { + arr = new Uint32Array(wasmMemory.buffer); + ret = Atomics.load(arr, offset >>> 2); + return ret; + } + else { + arr = new Int32Array(wasmMemory.buffer); + ret = Atomics.load(arr, offset >>> 2); + return ret; + } + }, + storeSizeTypeValue: function (offset, value, unsigned) { + var arr; + if (unsigned) { + arr = new Uint32Array(wasmMemory.buffer); + Atomics.store(arr, offset >>> 2, value); + return undefined; + } + else { + arr = new Int32Array(wasmMemory.buffer); + Atomics.store(arr, offset >>> 2, value >>> 0); + return undefined; + } + }, + releaseResources: function (func) { + if (emnapiTSFN.getState(func) !== 2 /* State.kClosed */) { + emnapiTSFN.setState(func, 2 /* State.kClosed */); + var env = emnapiTSFN.getEnv(func); + var envObject = emnapiCtx.envStore.get(env); + var ref = emnapiTSFN.getRef(func); + if (ref) { + emnapiCtx.refStore.get(ref).dispose(); + } + var resource = emnapiTSFN.getResource(func); + emnapiCtx.refStore.get(resource).dispose(); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(func + emnapiTSFN.offset.is_some, 0, true); + emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func); + envObject.unref(); + var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >>> 2; + var arr = new Uint32Array(wasmMemory.buffer); + if (Atomics.load(arr, asyncRefOffset) > 0) { + Atomics.store(arr, asyncRefOffset, 0); + emnapiCtx.decreaseWaitingRequestCounter(); + } + if (emnapiNodeBinding) { + var view = new DataView(wasmMemory.buffer); + var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true); + var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true); + _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId); + } + } + }, + destroy: function (func) { + emnapiTSFN._liveSet.delete(func); + emnapiTSFN.destroyQueue(func); + emnapiTSFN.releaseResources(func); + _free(func); + }, + emptyQueue: function (func) { + var drainQueue = []; + emnapiTSFN.getMutex(func).execute(function () { + while (emnapiTSFN.getQueueSize(func) > 0) { + drainQueue.push(emnapiTSFN.shiftQueue(func)); + } + }); + var callJsCb = emnapiTSFN.getCallJSCb(func); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var context = emnapiTSFN.getContext(func); + var data; + for (var i = 0; i < drainQueue.length; i++) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + data = drainQueue[i]; + if (callJsCb) { + (wasmTable.get(callJsCb))(0, 0, context, data); + } + } + }, + maybeDelete: function (func) { + var shouldDelete = false; + emnapiTSFN.getMutex(func).execute(function () { + if (emnapiTSFN.getThreadCount(func) > 0) { + emnapiTSFN.releaseResources(func); + } + else { + shouldDelete = true; + } + }); + if (shouldDelete) { + emnapiTSFN.destroy(func); + } + }, + finalize: function (func) { + var env = emnapiTSFN.getEnv(func); + var envObject = emnapiCtx.envStore.get(env); + emnapiCtx.openScope(envObject); + var finalize = emnapiTSFN.getFinalizeCb(func); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var data = emnapiTSFN.getFinalizeData(func); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var context = emnapiTSFN.getContext(func); + var f = function () { + envObject.callFinalizerInternal(0, finalize, data, context); + }; + try { + emnapiTSFN.emptyQueue(func); + if (finalize) { + if (emnapiNodeBinding) { + var resource = emnapiTSFN.getResource(func); + var resource_value = emnapiCtx.refStore.get(resource).get(); + var resourceObject = emnapiCtx.handleStore.get(resource_value).value; + var view = new DataView(wasmMemory.buffer); + var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true); + var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true); + emnapiNodeBinding.node.makeCallback(resourceObject, f, [], { + asyncId: asyncId, + triggerAsyncId: triggerAsyncId + }); + } + else { + f(); + } + } + emnapiTSFN.maybeDelete(func); + } + finally { + emnapiCtx.closeScope(envObject); + } + }, + cleanup: function (func) { + emnapiTSFN.closeHandlesAndMaybeDelete(func, 1); + }, + closeHandlesAndMaybeDelete: function (func, set_closing) { + var env = emnapiTSFN.getEnv(func); + var envObject = emnapiCtx.envStore.get(env); + emnapiCtx.openScope(envObject); + try { + if (set_closing) { + emnapiTSFN.getMutex(func).execute(function () { + emnapiTSFN.setState(func, 1 /* State.kClosing */); + if (emnapiTSFN.getMaxQueueSize(func) > 0) { + emnapiTSFN.getCond(func).signal(); + } + }); + } + if (emnapiTSFN.getHandlesClosing(func)) { + return; + } + emnapiTSFN.setHandlesClosing(func, 1); + Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.async_pending) >>> 2, 1); + emnapiCtx.feature.setImmediate(function () { + emnapiTSFN.finalize(func); + }); + } + finally { + emnapiCtx.closeScope(envObject); + } + }, + dispatchOne: function (func) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var data = 0; + var popped_value = false; + var has_more = false; + var mutex = emnapiTSFN.getMutex(func); + var cond = emnapiTSFN.getCond(func); + mutex.execute(function () { + if (emnapiTSFN.getState(func) === 0 /* State.kOpen */) { + var size = emnapiTSFN.getQueueSize(func); + if (size > 0) { + data = emnapiTSFN.shiftQueue(func); + popped_value = true; + var maxQueueSize = emnapiTSFN.getMaxQueueSize(func); + if (size === maxQueueSize && maxQueueSize > 0) { + cond.signal(); + } + size--; + } + if (size === 0) { + if (emnapiTSFN.getThreadCount(func) === 0) { + emnapiTSFN.setState(func, 1 /* State.kClosing */); + if (emnapiTSFN.getMaxQueueSize(func) > 0) { + cond.signal(); + } + emnapiTSFN.closeHandlesAndMaybeDelete(func, 0); + } + } + else { + has_more = true; + } + } + else { + emnapiTSFN.closeHandlesAndMaybeDelete(func, 0); + } + }); + if (popped_value) { + var env = emnapiTSFN.getEnv(func); + var envObject_1 = emnapiCtx.envStore.get(env); + emnapiCtx.openScope(envObject_1); + var f = function () { + envObject_1.callbackIntoModule(false, function () { + var callJsCb = emnapiTSFN.getCallJSCb(func); + var ref = emnapiTSFN.getRef(func); + var js_callback = ref ? emnapiCtx.refStore.get(ref).get() : 0; + if (callJsCb) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var context = emnapiTSFN.getContext(func); + (wasmTable.get(callJsCb))(env, js_callback, context, data); + } + else { + var jsCallback = js_callback ? emnapiCtx.handleStore.get(js_callback).value : null; + if (typeof jsCallback === 'function') { + jsCallback(); + } + } + }); + }; + try { + if (emnapiNodeBinding) { + var resource = emnapiTSFN.getResource(func); + var resource_value = emnapiCtx.refStore.get(resource).get(); + var resourceObject = emnapiCtx.handleStore.get(resource_value).value; + var view = new DataView(wasmMemory.buffer); + emnapiNodeBinding.node.makeCallback(resourceObject, f, [], { + asyncId: view.getFloat64(func + emnapiTSFN.offset.async_id, true), + triggerAsyncId: view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true) + }); + } + else { + f(); + } + } + finally { + emnapiCtx.closeScope(envObject_1); + } + } + return has_more; + }, + dispatch: function (func) { + var has_more = true; + var iterations_left = 1000; + var ui32a = new Uint32Array(wasmMemory.buffer); + var index = (func + emnapiTSFN.offset.dispatch_state) >>> 2; + while (has_more && --iterations_left !== 0) { + Atomics.store(ui32a, index, 1); + has_more = emnapiTSFN.dispatchOne(func); + if (Atomics.exchange(ui32a, index, 0) !== 1) { + has_more = true; + } + } + if (has_more) { + emnapiTSFN.send(func); + } + }, + enqueue: function (func) { + // `pending` means a worker thread has requested a wakeup that has not + // been drained on the main thread yet. + var pending = func + emnapiTSFN.offset.async_pending; + // `scheduled` prevents queueing the same main-thread drain chain more than + // once while a previous wakeup is still in flight. + var scheduled = func + emnapiTSFN.offset.async_u_fd; + var i32a = new Int32Array(wasmMemory.buffer); + if (Atomics.exchange(i32a, scheduled >>> 2, 1) !== 0) { + return; + } + // Match uv_async_send-style coalescing in JS: the first turn represents + // the wakeup reaching the main thread, and the second turn performs the + // actual TSFN drain after nearby Send/Signal calls have had a chance to + // collapse into the shared AsyncProgressWorker state. + emnapiCtx.feature.setImmediate(function () { + if (!emnapiTSFN._liveSet.has(func)) { + return; + } + if (Atomics.load(i32a, pending >>> 2) === 0) { + Atomics.store(i32a, scheduled >>> 2, 0); + return; + } + emnapiCtx.feature.setImmediate(function () { + try { + // Consume the coalesced wakeup once, then let dispatch() observe any + // queue mutations through dispatch_state like the C implementation. + if (Atomics.exchange(i32a, pending >>> 2, 0) === 0) { + return; + } + // After destroy(), the func address is freed. Skip dispatch + // to avoid use-after-free (JS-side lifecycle check). + if (!emnapiTSFN._liveSet.has(func)) { + return; + } + emnapiTSFN.dispatch(func); + } + finally { + // Allow a later wakeup to schedule a new drain chain. If another + // worker-thread send raced with this drain, enqueue one more turn. + if (emnapiTSFN._liveSet.has(func)) { + Atomics.store(i32a, scheduled >>> 2, 0); + if (Atomics.load(i32a, pending >>> 2) !== 0) { + emnapiTSFN.enqueue(func); + } + } + } + }); + }); + }, + send: function (func) { + var current_state = Atomics.or(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >>> 2, 1 << 1); + if ((current_state & 1) === 1) { + return; + } + var pendng = func + emnapiTSFN.offset.async_pending; + // A wakeup is already pending, so this send only needs to leave the queued + // work in the TSFN queue and let the existing drain pick it up. + if (Atomics.load(new Int32Array(wasmMemory.buffer), pendng >>> 2) !== 0) { + return; + } + if (Atomics.exchange(new Int32Array(wasmMemory.buffer), pendng >>> 2, 1) === 0) { + if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) { + // Worker threads only post a wakeup token. Main-thread draining is + // serialized by enqueue() once the message is received. + postMessage({ + __emnapi__: { + type: 'tsfn-send', + payload: { + tsfn: func + } + } + }); + } + else { + // On the main thread we can skip the cross-thread hop and schedule the + // coalesced drain chain directly. + emnapiTSFN.enqueue(func); + } + } + } + }; + /** @__sig ippppppppppp */ + function napi_create_threadsafe_function(env, func, async_resource, async_resource_name, max_queue_size, initial_thread_count, thread_finalize_data, thread_finalize_cb, context, call_js_cb, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!async_resource_name) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + max_queue_size >>>= 0; + initial_thread_count >>>= 0; + env >>>= 0; + thread_finalize_data >>>= 0; + thread_finalize_cb >>>= 0; + context >>>= 0; + call_js_cb >>>= 0; + max_queue_size = max_queue_size >>> 0; + initial_thread_count = initial_thread_count >>> 0; + if (initial_thread_count === 0) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var ref = 0; + func >>>= 0; + if (!func) { + if (!call_js_cb) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + else { + var funcValue = emnapiCtx.handleStore.get(func).value; + if (typeof funcValue !== 'function') { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + ref = emnapiCtx.createReference(envObject, func, 1, 1 /* ReferenceOwnership.kUserland */).id; + } + var asyncResourceObject; + if (async_resource) { + asyncResourceObject = emnapiCtx.handleStore.get(async_resource).value; + if (asyncResourceObject == null) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + asyncResourceObject = Object(asyncResourceObject); + } + else { + asyncResourceObject = {}; + } + var resource = envObject.ensureHandleId(asyncResourceObject); + var asyncResourceName = emnapiCtx.handleStore.get(async_resource_name).value; + if (typeof asyncResourceName === 'symbol') { + return envObject.setLastError(3 /* napi_status.napi_string_expected */); + } + asyncResourceName = String(asyncResourceName); + var resource_name = envObject.ensureHandleId(asyncResourceName); + // tsfn create + var sizeofTSFN = emnapiTSFN.offset.__size__; + // eslint-disable-next-line prefer-const + var tsfn = _malloc(sizeofTSFN); + if (!tsfn) + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + tsfn >>>= 0; + new Uint8Array(wasmMemory.buffer).subarray(tsfn, tsfn + sizeofTSFN).fill(0); + var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1 /* ReferenceOwnership.kUserland */); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var resource_ = resourceRef.id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.resource, resource_, true); + if (!emnapiTSFN.initQueue(tsfn)) { + _free(tsfn); + resourceRef.dispose(); + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + _emnapi_node_emit_async_init(resource, resource_name, -1, tsfn + emnapiTSFN.offset.async_id); + HEAP_DATA_VIEW.setInt8(tsfn + emnapiTSFN.offset.is_some, 1, true); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.thread_count, initial_thread_count, true); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.context, context, true); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.max_queue_size, max_queue_size, true); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.ref, ref, true); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.env, env, true); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_data, thread_finalize_data, true); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_cb, thread_finalize_cb, true); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.call_js_cb, call_js_cb, true); + emnapiCtx.addCleanupHook(envObject, emnapiTSFN.cleanup, tsfn); + emnapiTSFN._liveSet.add(tsfn); + envObject.ref(); + emnapiCtx.increaseWaitingRequestCounter(); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.async_ref, 1, true); + result >>>= 0; + HEAP_DATA_VIEW.setUint32(result, tsfn, true); + return envObject.clearLastError(); + } + /** @__sig ipp */ + function napi_get_threadsafe_function_context(func, result) { + if (!func || !result) { + abort(); + return 1 /* napi_status.napi_invalid_arg */; + } + func >>>= 0; + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var context = emnapiTSFN.getContext(func); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, context, true); + return 0 /* napi_status.napi_ok */; + } + /** @__sig ippi */ + function napi_call_threadsafe_function(func, data, mode) { + if (!func) { + abort(); + return 1 /* napi_status.napi_invalid_arg */; + } + func >>>= 0; + data >>>= 0; + return emnapiTSFN.push(func, data, mode); + } + /** @__sig ip */ + function napi_acquire_threadsafe_function(func) { + if (!func) { + abort(); + return 1 /* napi_status.napi_invalid_arg */; + } + func >>>= 0; + var mutex = emnapiTSFN.getMutex(func); + return mutex.execute(function () { + if (emnapiTSFN.getState(func) === 0 /* State.kOpen */) { + emnapiTSFN.addThreadCount(func); + return 0 /* napi_status.napi_ok */; + } + return 16 /* napi_status.napi_closing */; + }); + } + /** @__sig ipi */ + function napi_release_threadsafe_function(func, mode) { + if (!func) { + abort(); + return 1 /* napi_status.napi_invalid_arg */; + } + func >>>= 0; + var mutex = emnapiTSFN.getMutex(func); + var cond = emnapiTSFN.getCond(func); + var shouldDelete = false; + var ret = mutex.execute(function () { + if (emnapiTSFN.getThreadCount(func) === 0) { + return 1 /* napi_status.napi_invalid_arg */; + } + emnapiTSFN.subThreadCount(func); + if (emnapiTSFN.getThreadCount(func) === 0 || mode === 1 /* napi_threadsafe_function_release_mode.napi_tsfn_abort */) { + if (emnapiTSFN.getState(func) === 0 /* State.kOpen */) { + if (mode === 1 /* napi_threadsafe_function_release_mode.napi_tsfn_abort */) { + emnapiTSFN.setState(func, 1 /* State.kClosing */); + } + if (emnapiTSFN.getState(func) === 1 /* State.kClosing */ && emnapiTSFN.getMaxQueueSize(func) > 0) { + cond.signal(); + } + emnapiTSFN.send(func); + } + } + if (!(emnapiTSFN.getState(func) === 2 /* State.kClosed */ && emnapiTSFN.getThreadCount(func) === 0)) { + return 0 /* napi_status.napi_ok */; + } + shouldDelete = true; + return 0 /* napi_status.napi_ok */; + }); + if (shouldDelete) { + emnapiTSFN.destroy(func); + } + return ret; + } + /** @__sig ipp */ + function napi_unref_threadsafe_function(env, func) { + if (!func) { + abort(); + return 1 /* napi_status.napi_invalid_arg */; + } + func >>>= 0; + var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >>> 2; + var arr = new Uint32Array(wasmMemory.buffer); + var currentValue = Atomics.load(arr, asyncRefOffset); + if (currentValue > 0) { + Atomics.store(arr, asyncRefOffset, currentValue - 1); + if (currentValue === 1) { + emnapiCtx.decreaseWaitingRequestCounter(); + } + } + return 0 /* napi_status.napi_ok */; + } + /** @__sig ipp */ + function napi_ref_threadsafe_function(env, func) { + if (!func) { + abort(); + return 1 /* napi_status.napi_invalid_arg */; + } + func >>>= 0; + var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >>> 2; + var arr = new Uint32Array(wasmMemory.buffer); + var currentValue = Atomics.load(arr, asyncRefOffset); + if (!currentValue) { + emnapiCtx.increaseWaitingRequestCounter(); + } + Atomics.store(arr, asyncRefOffset, currentValue + 1); + return 0 /* napi_status.napi_ok */; + } + var emnapiAWMT = { + pool: [], + workerReady: null, + globalAddress: 0, + globalOffset: { + idle_threads: 0, + q: 1 * 4, + next: 1 * 4, + prev: 2 * 4, + mutex: 3 * 4, + cond: 4 * 4, + exit_message: 5 * 4, + end: 7 * 4 + }, + offset: { + /* napi_ref */ resource: 0, + /* double */ async_id: 8, + /* double */ trigger_async_id: 16, + /* napi_env */ env: 24, + /* int32_t */ status: 1 * 4 + 24, // 0 for pending, 1 for cancelled, 2 for completed + queue: 2 * 4 + 24, + queue_next: 2 * 4 + 24, + queue_prev: 3 * 4 + 24, + /* void* */ data: 4 * 4 + 24, + /* napi_async_execute_callback */ execute: 5 * 4 + 24, + /* napi_async_complete_callback */ complete: 6 * 4 + 24, + end: 7 * 4 + 24 + }, + init: function () { + emnapiAWMT.pool = []; + emnapiAWMT.workerReady = null; + if (typeof PThread !== 'undefined') { + PThread.unusedWorkers.forEach(emnapiAWMT.addListener); + PThread.runningWorkers.forEach(emnapiAWMT.addListener); + var __original_getNewWorker_1 = PThread.getNewWorker; + PThread.getNewWorker = function () { + var r = __original_getNewWorker_1.apply(this, arguments); + emnapiAWMT.addListener(r); + return r; + }; + } + }, + addListener: function (worker) { + if (!worker) + return false; + if (worker._emnapiAWMTListener) + return true; + var handler = function (e) { + var data = ENVIRONMENT_IS_NODE ? e : e.data; + var __emnapi__ = data.__emnapi__; + if (__emnapi__) { + var type = __emnapi__.type; + var payload = __emnapi__.payload; + if (type === 'async-work-complete') { + emnapiAWMT.callComplete(payload.work, 0 /* napi_status.napi_ok */); + } + } + }; + var dispose = function () { + if (ENVIRONMENT_IS_NODE) { + worker.off('message', handler); + } + else { + worker.removeEventListener('message', handler, false); + } + delete worker._emnapiAWMTListener; + }; + worker._emnapiAWMTListener = { handler: handler, dispose: dispose }; + if (ENVIRONMENT_IS_NODE) { + worker.on('message', handler); + } + else { + worker.addEventListener('message', handler, false); + } + return true; + }, + initGlobal: function () { + if (!emnapiAWMT.globalAddress) { + emnapiAWMT.globalAddress = _malloc(emnapiAWMT.globalOffset.end); + emnapiAWMT.globalAddress >>>= 0; + var size = emnapiAWMT.globalOffset.end; + var addr = emnapiAWMT.globalAddress; + new Uint8Array(wasmMemory.buffer, addr, size).fill(0); + emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q); + emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.exit_message); + } + }, + terminateWorkers: function () { + emnapiAWMT.pool.forEach(function (w) { + var _a, _b; + (_a = w._emnapiAWMTListener) === null || _a === void 0 ? void 0 : _a.dispose(); + (_b = w._emnapiTSFNListener) === null || _b === void 0 ? void 0 : _b.dispose(); + w.terminate(); + }); + emnapiAWMT.pool.length = 0; + }, + initWorkers: function (n) { + if (ENVIRONMENT_IS_PTHREAD) { + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing + return emnapiAWMT.workerReady || (emnapiAWMT.workerReady = Promise.resolve()); + } + if (emnapiAWMT.workerReady) + return emnapiAWMT.workerReady; + if (!('emnapi_async_worker_create' in wasmInstance.exports)) { + throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags'); + } + var emnapi_async_worker_create = wasmInstance.exports.emnapi_async_worker_create; + var args = []; + emnapiAWMT.initGlobal(); + for (var i = 0; i < n; ++i) { + args.push(emnapi_async_worker_create(1, emnapiAWMT.globalAddress)); + } + var promises = args.map(function (index) { + if (index === 0) { + return Promise.reject(new Error('Failed to create async worker')); + } + var worker; + if (index < 0) { + worker = emnapiAWMT.pool[-index - 1]; + if (worker) + return worker.whenLoaded; + } + index >>>= 0; + var view = new DataView(wasmMemory.buffer); + var tidOffset = 20; + var tid = view.getInt32(index + tidOffset, true); + worker = PThread.pthreads[tid]; + return worker.whenLoaded; + }); + emnapiAWMT.workerReady = Promise.all(promises); + return emnapiAWMT.workerReady; + }, + getResource: function (work) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.resource, true); + }, + getExecute: function (work) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.execute, true); + }, + getComplete: function (work) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.complete, true); + }, + getEnv: function (work) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.env, true); + }, + getData: function (work) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.data, true); + }, + getMutex: function () { + var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.mutex; + var mutex = { + lock: function () { + var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE; + var i32a = new Int32Array(wasmMemory.buffer, index, 1); + if (isBrowserMain) { + while (true) { + var oldValue = Atomics.compareExchange(i32a, 0, 0, 10); + if (oldValue === 0) { + return; + } + } + } + else { + while (true) { + var oldValue = Atomics.compareExchange(i32a, 0, 0, 10); + if (oldValue === 0) { + return; + } + Atomics.wait(i32a, 0, 10); + } + } + }, + unlock: function () { + var i32a = new Int32Array(wasmMemory.buffer, index, 1); + var oldValue = Atomics.compareExchange(i32a, 0, 10, 0); + if (oldValue !== 10) { + throw new Error('Tried to unlock while not holding the mutex'); + } + Atomics.notify(i32a, 0, 1); + }, + execute: function (fn) { + mutex.lock(); + try { + return fn(); + } + finally { + mutex.unlock(); + } + } + }; + return mutex; + }, + getCond: function () { + var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.cond; + var mutex = emnapiAWMT.getMutex(); + var cond = { + wait: function () { + var i32a = new Int32Array(wasmMemory.buffer, index, 1); + var value = Atomics.load(i32a, 0); + mutex.unlock(); + Atomics.wait(i32a, 0, value); + mutex.lock(); + }, + signal: function () { + var i32a = new Int32Array(wasmMemory.buffer, index, 1); + Atomics.add(i32a, 0, 1); + Atomics.notify(i32a, 0, 1); + } + }; + return cond; + }, + queueInit: function (q) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(q, q, true); + HEAP_DATA_VIEW.setUint32(q + 4, q, true); + }, + queueInsertTail: function (h, q) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(q, h, true); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var tempValue = HEAP_DATA_VIEW.getUint32(h + 4, true); + HEAP_DATA_VIEW.setUint32(q + 4, tempValue, true); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true); + HEAP_DATA_VIEW.setUint32(qprev, q, true); + HEAP_DATA_VIEW.setUint32(h + 4, q, true); + }, + queueRemove: function (q) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var qnext = HEAP_DATA_VIEW.getUint32(q, true); + HEAP_DATA_VIEW.setUint32(qprev, qnext, true); + HEAP_DATA_VIEW.setUint32(qnext + 4, qprev, true); + }, + queueEmpty: function (q) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + // eslint-disable-next-line eqeqeq + return q == HEAP_DATA_VIEW.getUint32(q, true); + }, + scheduleWork: function (work) { + var _a; + if (!((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready)) { + emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () { + emnapiAWMT.workerReady.ready = true; + }).catch(function (err) { + emnapiAWMT.workerReady = null; + throw err; + }); + } + emnapiCtx.increaseWaitingRequestCounter(); + var statusBuffer = new Int32Array(wasmMemory.buffer, work + emnapiAWMT.offset.status, 1); + Atomics.store(statusBuffer, 0, 0 /* AsyncWorkStatus.Pending */); + var mutex = emnapiAWMT.getMutex(); + var cond = emnapiAWMT.getCond(); + mutex.lock(); + try { + emnapiAWMT.queueInsertTail(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q, work + emnapiAWMT.offset.queue); + } + catch (err) { + emnapiCtx.decreaseWaitingRequestCounter(); + mutex.unlock(); + throw err; + } + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (HEAP_DATA_VIEW.getUint32(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads, true) > 0) { + cond.signal(); + } + mutex.unlock(); + }, + cancelWork: function (work) { + var cancelled = false; + emnapiAWMT.getMutex().execute(function () { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + cancelled = !emnapiAWMT.queueEmpty(work + emnapiAWMT.offset.queue) && HEAP_DATA_VIEW.getInt32(work + emnapiAWMT.offset.status, true) !== 2 /* AsyncWorkStatus.Completed */; + if (cancelled) { + emnapiAWMT.queueRemove(work + emnapiAWMT.offset.queue); + } + }); + if (!cancelled) { + return 9 /* napi_status.napi_generic_failure */; + } + if (Atomics.compareExchange(new Int32Array(wasmMemory.buffer, work + emnapiAWMT.offset.status, 1), 0, 0 /* AsyncWorkStatus.Pending */, 1 /* AsyncWorkStatus.Cancelled */) !== 0 /* AsyncWorkStatus.Pending */) { + return 9 /* napi_status.napi_generic_failure */; + } + emnapiCtx.feature.setImmediate(function () { + emnapiAWMT.callComplete(work, 11 /* napi_status.napi_cancelled */); + }); + return 0 /* napi_status.napi_ok */; + }, + callComplete: function (work, status) { + emnapiCtx.decreaseWaitingRequestCounter(); + var complete = emnapiAWMT.getComplete(work); + var env = emnapiAWMT.getEnv(work); + var data = emnapiAWMT.getData(work); + var envObject = emnapiCtx.envStore.get(env); + var scope = emnapiCtx.openScope(envObject); + var callback = function () { + if (!complete) + return; + envObject.callbackIntoModule(true, function () { + (wasmTable.get(complete))(env, status, data); + }); + }; + try { + if (emnapiNodeBinding) { + var resource = emnapiAWMT.getResource(work); + var resource_value = emnapiCtx.refStore.get(resource).get(); + var resourceObject = emnapiCtx.handleStore.get(resource_value).value; + var view = new DataView(wasmMemory.buffer); + var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true); + var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true); + emnapiNodeBinding.node.makeCallback(resourceObject, callback, [], { + asyncId: asyncId, + triggerAsyncId: triggerAsyncId + }); + } + else { + callback(); + } + } + finally { + emnapiCtx.closeScope(envObject, scope); + } + } + }; + emnapiAWMT.init(); + /** @__sig ippppppp */ + var napi_create_async_work = singleThreadAsyncWork + ? function (env, resource, resource_name, execute, complete, data, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!execute) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var resourceObject; + if (resource) { + resourceObject = Object(emnapiCtx.handleStore.get(resource).value); + } + else { + resourceObject = {}; + } + if (!resource_name) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var resourceName = String(emnapiCtx.handleStore.get(resource_name).value); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var id = emnapiAWST.create(env, resourceObject, resourceName, execute, complete, data); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, id, true); + return envObject.clearLastError(); + } + : function (env, resource, resource_name, execute, complete, data, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!execute) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var resourceObject; + if (resource) { + resourceObject = Object(emnapiCtx.handleStore.get(resource).value); + } + else { + resourceObject = {}; + } + if (!resource_name) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var sizeofAW = emnapiAWMT.offset.end; + var aw = _malloc(sizeofAW); + if (!aw) + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + aw >>>= 0; + new Uint8Array(wasmMemory.buffer).subarray(aw, aw + sizeofAW).fill(0); + var s = envObject.ensureHandleId(resourceObject); + var resourceRef = emnapiCtx.createReference(envObject, s, 1, 1 /* ReferenceOwnership.kUserland */); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var resource_ = resourceRef.id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(aw, resource_, true); + _emnapi_node_emit_async_init(s, resource_name, -1, aw + emnapiAWMT.offset.async_id); + HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.env, env, true); + HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.execute, execute, true); + HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.complete, complete, true); + HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.data, data, true); + emnapiAWMT.queueInit(aw + emnapiAWMT.offset.queue); + result >>>= 0; + HEAP_DATA_VIEW.setUint32(result, aw, true); + return envObject.clearLastError(); + }; + /** @__sig ipp */ + var napi_delete_async_work = singleThreadAsyncWork + ? function (env, work) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!work) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + work >>>= 0; + emnapiAWST.remove(work); + return envObject.clearLastError(); + } + : function (env, work) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!work) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + work >>>= 0; + var resource = emnapiAWMT.getResource(work); + emnapiCtx.refStore.get(resource).dispose(); + if (emnapiNodeBinding) { + var view = new DataView(wasmMemory.buffer); + var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true); + var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true); + _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId); + } + _free(work); + return envObject.clearLastError(); + }; + /** @__sig ipp */ + var napi_queue_async_work = singleThreadAsyncWork + ? function (env, work) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + var envObject = emnapiCtx.envStore.get(env); + if (!work) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + work >>>= 0; + emnapiAWST.queue(work); + return envObject.clearLastError(); + } + : function (env, work) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + var envObject = emnapiCtx.envStore.get(env); + if (!work) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + work >>>= 0; + emnapiAWMT.scheduleWork(work); + return envObject.clearLastError(); + }; + /** @__sig ipp */ + var napi_cancel_async_work = singleThreadAsyncWork + ? function (env, work) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + var envObject = emnapiCtx.envStore.get(env); + if (!work) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + work >>>= 0; + var status = emnapiAWST.cancel(work); + if (status === 0 /* napi_status.napi_ok */) + return envObject.clearLastError(); + return envObject.setLastError(status); + } + : function (env, work) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + var envObject = emnapiCtx.envStore.get(env); + if (!work) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + work >>>= 0; + var status = emnapiAWMT.cancelWork(work); + if (status === 0 /* napi_status.napi_ok */) + return envObject.clearLastError(); + return envObject.setLastError(status); + }; + /** @__sig pp */ + function _emnapi_async_worker(globalAddress) { + globalAddress >>>= 0; + emnapiAWMT.globalAddress = globalAddress; + var mutex = emnapiAWMT.getMutex(); + var cond = emnapiAWMT.getCond(); + mutex.lock(); + var exitMessageAddr = globalAddress + emnapiAWMT.globalOffset.exit_message; + var idleThreadsAddr = globalAddress + emnapiAWMT.globalOffset.idle_threads; + var workerQueueAddr = globalAddress + emnapiAWMT.globalOffset.q; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + for (;;) { + while (emnapiAWMT.queueEmpty(workerQueueAddr)) { + Atomics.add(new Int32Array(wasmMemory.buffer, idleThreadsAddr, 1), 0, 1); + cond.wait(); + Atomics.sub(new Int32Array(wasmMemory.buffer, idleThreadsAddr, 1), 0, 1); + } + var q = HEAP_DATA_VIEW.getUint32(workerQueueAddr, true); + if (q === exitMessageAddr) { + cond.signal(); + mutex.unlock(); + break; + } + var work = q - emnapiAWMT.offset.queue; + emnapiAWMT.queueRemove(q); + emnapiAWMT.queueInit(q); + mutex.unlock(); + var statusBuffer = new Int32Array(wasmMemory.buffer, work + emnapiAWMT.offset.status, 1); + if (Atomics.load(statusBuffer, 0) === 1 /* AsyncWorkStatus.Cancelled */) { + abort('unreachable'); + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var execute = emnapiAWMT.getExecute(work); + var env = emnapiAWMT.getEnv(work); + var data = emnapiAWMT.getData(work); + (wasmTable.get(execute))(env, data); + Atomics.store(statusBuffer, 0, 2 /* AsyncWorkStatus.Completed */); + var postMessage_1 = napiModule.postMessage; + postMessage_1({ + __emnapi__: { + type: 'async-work-complete', + payload: { work: work } + } + }); + mutex.lock(); + } + return 0; + } + /** @__sig ipp */ + function _emnapi_spawn_worker(f, globalAddress) { + if (typeof onCreateWorker !== 'function') { + throw new TypeError('`options.onCreateWorker` is not a function'); + } + var promises = []; + var args = []; + if (!('emnapi_async_worker_create' in wasmInstance.exports)) { + throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags'); + } + args.push(wasmInstance.exports.emnapi_async_worker_create(0, 0)); + var handleError = function (e) { + if ('message' in e && (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1)) { + emnapiAWMT.terminateWorkers(); + } + }; + var ret; + try { + var worker_1 = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' }); + var p = PThread.loadWasmModuleToWorker(worker_1); + if (ENVIRONMENT_IS_NODE) { + worker_1.on('error', handleError); + } + else { + worker_1.addEventListener('error', handleError, false); + } + emnapiAWMT.addListener(worker_1); + emnapiTSFN.addListener(worker_1); + promises.push(p.then(function () { + if (typeof worker_1.unref === 'function') { + worker_1.unref(); + } + })); + ret = emnapiAWMT.pool.push(worker_1) - 1; + var arg = args[0]; + worker_1.threadBlockBase = arg; + worker_1.postMessage({ + __emnapi__: { + type: 'async-worker-init', + payload: { arg: arg, func: [f, globalAddress] } + } + }); + } + catch (err) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var arg = args[0]; + _free(arg); + throw err; + } + return ret; + } + function initWorker(startArg, func) { + if (napiModule.childThread) { + if (typeof wasmInstance.exports.emnapi_async_worker_init !== 'function') { + throw new TypeError('`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags'); + } + wasmInstance.exports.emnapi_async_worker_init(startArg); + (wasmTable.get(func[0]))(func[1]); + } + else { + throw new Error('startThread is only available in child threads'); + } + } + napiModule.initWorker = initWorker; + var asyncWorkMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + _emnapi_async_worker: _emnapi_async_worker, + _emnapi_spawn_worker: _emnapi_spawn_worker, + napi_cancel_async_work: napi_cancel_async_work, + napi_create_async_work: napi_create_async_work, + napi_delete_async_work: napi_delete_async_work, + napi_queue_async_work: napi_queue_async_work + }); + /** + * @__deps malloc + * @__deps free + * @__postset + * ``` + * emnapiExternalMemory.init(); + * ``` + */ + var emnapiExternalMemory = { + registry: typeof FinalizationRegistry === 'function' ? new FinalizationRegistry(function (_pointer) { _free(_pointer); }) : undefined, + table: new WeakMap(), + wasmMemoryViewTable: new WeakMap(), + init: function () { + emnapiExternalMemory.registry = typeof FinalizationRegistry === 'function' ? new FinalizationRegistry(function (_pointer) { _free(_pointer); }) : undefined; + emnapiExternalMemory.table = new WeakMap(); + emnapiExternalMemory.wasmMemoryViewTable = new WeakMap(); + }, + isSharedArrayBuffer: function (value) { + return ((typeof SharedArrayBuffer === 'function' && value instanceof SharedArrayBuffer) || + (Object.prototype.toString.call(value) === '[object SharedArrayBuffer]')); + }, + isDetachedArrayBuffer: function (arrayBuffer) { + if (arrayBuffer.byteLength === 0) { + try { + // eslint-disable-next-line no-new + new Uint8Array(arrayBuffer); + } + catch (_) { + return true; + } + } + return false; + }, + getArrayBufferPointer: function (arrayBuffer, shouldCopy) { + var _a; + var info = { + address: 0, + ownership: 0 /* ReferenceOwnership.kRuntime */, + runtimeAllocated: 0 + }; + if (arrayBuffer === wasmMemory.buffer) { + return info; + } + var isDetached = emnapiExternalMemory.isDetachedArrayBuffer(arrayBuffer); + if (emnapiExternalMemory.table.has(arrayBuffer)) { + var cachedInfo = emnapiExternalMemory.table.get(arrayBuffer); + if (isDetached) { + cachedInfo.address = 0; + return cachedInfo; + } + if (shouldCopy && cachedInfo.ownership === 0 /* ReferenceOwnership.kRuntime */ && cachedInfo.runtimeAllocated === 1) { + new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), cachedInfo.address); + } + return cachedInfo; + } + if (isDetached || (arrayBuffer.byteLength === 0)) { + return info; + } + if (!shouldCopy) { + return info; + } + var pointer = _malloc(arrayBuffer.byteLength); + if (!pointer) + throw new Error('Out of memory'); + pointer >>>= 0; + new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), pointer); + info.address = pointer; + info.ownership = emnapiExternalMemory.registry ? 0 /* ReferenceOwnership.kRuntime */ : 1 /* ReferenceOwnership.kUserland */; + info.runtimeAllocated = 1; + emnapiExternalMemory.table.set(arrayBuffer, info); + (_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(arrayBuffer, pointer); + return info; + }, + getOrUpdateMemoryView: function (view) { + if (view.buffer === wasmMemory.buffer) { + if (!emnapiExternalMemory.wasmMemoryViewTable.has(view)) { + emnapiExternalMemory.wasmMemoryViewTable.set(view, { + Ctor: view.constructor, + address: view.byteOffset, + length: view instanceof DataView ? view.byteLength : view.length, + ownership: 1 /* ReferenceOwnership.kUserland */, + runtimeAllocated: 0 + }); + } + return view; + } + var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) || emnapiExternalMemory.isSharedArrayBuffer(view.buffer); + if (maybeOldWasmMemory && emnapiExternalMemory.wasmMemoryViewTable.has(view)) { + var info = emnapiExternalMemory.wasmMemoryViewTable.get(view); + var Ctor = info.Ctor; + var newView = void 0; + var Buffer_1 = emnapiCtx.feature.Buffer; + if (typeof Buffer_1 === 'function' && Ctor === Buffer_1) { + newView = Buffer_1.from(wasmMemory.buffer, info.address, info.length); + } + else { + newView = new Ctor(wasmMemory.buffer, info.address, info.length); + } + emnapiExternalMemory.wasmMemoryViewTable.set(newView, info); + return newView; + } + return view; + }, + getViewPointer: function (view, shouldCopy) { + view = emnapiExternalMemory.getOrUpdateMemoryView(view); + if (view.buffer === wasmMemory.buffer) { + if (emnapiExternalMemory.wasmMemoryViewTable.has(view)) { + var _a = emnapiExternalMemory.wasmMemoryViewTable.get(view), address_1 = _a.address, ownership_1 = _a.ownership, runtimeAllocated_1 = _a.runtimeAllocated; + return { address: address_1, ownership: ownership_1, runtimeAllocated: runtimeAllocated_1, view: view }; + } + return { address: view.byteOffset, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0, view: view }; + } + var _b = emnapiExternalMemory.getArrayBufferPointer(view.buffer, shouldCopy), address = _b.address, ownership = _b.ownership, runtimeAllocated = _b.runtimeAllocated; + return { address: address === 0 ? 0 : (address + view.byteOffset), ownership: ownership, runtimeAllocated: runtimeAllocated, view: view }; + } + }; + /* eslint-disable @typescript-eslint/indent */ + /** + * @__postset + * ``` + * emnapiString.init(); + * ``` + */ + var emnapiString = { + utf8Decoder: undefined, + utf16Decoder: undefined, + init: function () { + var fallbackDecoder = { + decode: function (bytes) { + var inputIndex = 0; + var pendingSize = Math.min(0x1000, bytes.length + 1); + var pending = new Uint16Array(pendingSize); + var chunks = []; + var pendingIndex = 0; + for (;;) { + var more = inputIndex < bytes.length; + if (!more || (pendingIndex >= pendingSize - 1)) { + var subarray = pending.subarray(0, pendingIndex); + var arraylike = subarray; + chunks.push(String.fromCharCode.apply(null, arraylike)); + if (!more) { + return chunks.join(''); + } + bytes = bytes.subarray(inputIndex); + inputIndex = 0; + pendingIndex = 0; + } + var byte1 = bytes[inputIndex++]; + if ((byte1 & 0x80) === 0) { + pending[pendingIndex++] = byte1; + } + else if ((byte1 & 0xe0) === 0xc0) { + var byte2 = bytes[inputIndex++] & 0x3f; + pending[pendingIndex++] = ((byte1 & 0x1f) << 6) | byte2; + } + else if ((byte1 & 0xf0) === 0xe0) { + var byte2 = bytes[inputIndex++] & 0x3f; + var byte3 = bytes[inputIndex++] & 0x3f; + pending[pendingIndex++] = ((byte1 & 0x1f) << 12) | (byte2 << 6) | byte3; + } + else if ((byte1 & 0xf8) === 0xf0) { + var byte2 = bytes[inputIndex++] & 0x3f; + var byte3 = bytes[inputIndex++] & 0x3f; + var byte4 = bytes[inputIndex++] & 0x3f; + var codepoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0c) | (byte3 << 0x06) | byte4; + if (codepoint > 0xffff) { + codepoint -= 0x10000; + pending[pendingIndex++] = (codepoint >>> 10) & 0x3ff | 0xd800; + codepoint = 0xdc00 | codepoint & 0x3ff; + } + pending[pendingIndex++] = codepoint; + } + else ; + } + } + }; + var utf8Decoder; + utf8Decoder = typeof TextDecoder === 'function' ? new TextDecoder() : fallbackDecoder; + emnapiString.utf8Decoder = utf8Decoder; + var fallbackDecoder2 = { + decode: function (input) { + var bytes = new Uint16Array(input.buffer, input.byteOffset, input.byteLength / 2); + if (bytes.length <= 0x1000) { + return String.fromCharCode.apply(null, bytes); + } + var chunks = []; + var i = 0; + var len = 0; + for (; i < bytes.length; i += len) { + len = Math.min(0x1000, bytes.length - i); + chunks.push(String.fromCharCode.apply(null, bytes.subarray(i, i + len))); + } + return chunks.join(''); + } + }; + var utf16Decoder; + utf16Decoder = typeof TextDecoder === 'function' ? new TextDecoder('utf-16le') : fallbackDecoder2; + emnapiString.utf16Decoder = utf16Decoder; + }, + lengthBytesUTF8: function (str) { + var c; + var len = 0; + for (var i = 0; i < str.length; ++i) { + c = str.charCodeAt(i); + if (c <= 0x7F) { + len++; + } + else if (c <= 0x7FF) { + len += 2; + } + else if (c >= 0xD800 && c <= 0xDFFF) { + len += 4; + ++i; + } + else { + len += 3; + } + } + return len; + }, + UTF8ToString: function (ptr, length) { + if (!ptr || !length) + return ''; + ptr >>>= 0; + var HEAPU8 = new Uint8Array(wasmMemory.buffer); + var end = ptr; + if (length === -1 || length === 4294967295) { + for (; HEAPU8[end];) + ++end; + } + else { + end = ptr + (length >>> 0); + } + length = end - ptr; + if (length <= 16) { + var idx = ptr; + var str = ''; + while (idx < end) { + var u0 = HEAPU8[idx++]; + if (!(u0 & 0x80)) { + str += String.fromCharCode(u0); + continue; + } + var u1 = HEAPU8[idx++] & 63; + if ((u0 & 0xE0) === 0xC0) { + str += String.fromCharCode(((u0 & 31) << 6) | u1); + continue; + } + var u2 = HEAPU8[idx++] & 63; + if ((u0 & 0xF0) === 0xE0) { + u0 = ((u0 & 15) << 12) | (u1 << 6) | u2; + } + else { + u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (HEAPU8[idx++] & 63); + } + if (u0 < 0x10000) { + str += String.fromCharCode(u0); + } + else { + var ch = u0 - 0x10000; + str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); + } + } + return str; + } + return emnapiString.utf8Decoder.decode(((typeof SharedArrayBuffer === "function" && HEAPU8.buffer instanceof SharedArrayBuffer) || (Object.prototype.toString.call(HEAPU8.buffer) === "[object SharedArrayBuffer]")) ? HEAPU8.slice(ptr, end) : HEAPU8.subarray(ptr, end)); + }, + stringToUTF8: function (str, outPtr, maxBytesToWrite) { + var HEAPU8 = new Uint8Array(wasmMemory.buffer); + var outIdx = outPtr; + outIdx >>>= 0; + if (!(maxBytesToWrite > 0)) { + return 0; + } + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 0xD800 && u <= 0xDFFF) { + var u1 = str.charCodeAt(++i); + u = 0x10000 + ((u & 0x3FF) << 10) | (u1 & 0x3FF); + } + if (u <= 0x7F) { + if (outIdx >= endIdx) + break; + HEAPU8[outIdx++] = u; + } + else if (u <= 0x7FF) { + if (outIdx + 1 >= endIdx) + break; + HEAPU8[outIdx++] = 0xC0 | (u >> 6); + HEAPU8[outIdx++] = 0x80 | (u & 63); + } + else if (u <= 0xFFFF) { + if (outIdx + 2 >= endIdx) + break; + HEAPU8[outIdx++] = 0xE0 | (u >> 12); + HEAPU8[outIdx++] = 0x80 | ((u >> 6) & 63); + HEAPU8[outIdx++] = 0x80 | (u & 63); + } + else { + if (outIdx + 3 >= endIdx) + break; + HEAPU8[outIdx++] = 0xF0 | (u >> 18); + HEAPU8[outIdx++] = 0x80 | ((u >> 12) & 63); + HEAPU8[outIdx++] = 0x80 | ((u >> 6) & 63); + HEAPU8[outIdx++] = 0x80 | (u & 63); + } + } + HEAPU8[outIdx] = 0; + return outIdx - startIdx; + }, + UTF16ToString: function (ptr, length) { + if (!ptr || !length) + return ''; + ptr >>>= 0; + var end = ptr; + if (length === -1 || length === 4294967295) { + var idx = end >>> 1; + var HEAPU16 = new Uint16Array(wasmMemory.buffer); + while (HEAPU16[idx]) + ++idx; + end = (idx << 1) >>> 0; + } + else { + end = ptr + (length >>> 0) * 2; + } + length = end - ptr; + if (length <= 32) { + return String.fromCharCode.apply(null, new Uint16Array(wasmMemory.buffer, ptr, length / 2)); + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var HEAPU8 = new Uint8Array(wasmMemory.buffer); + return emnapiString.utf16Decoder.decode(((typeof SharedArrayBuffer === "function" && HEAPU8.buffer instanceof SharedArrayBuffer) || (Object.prototype.toString.call(HEAPU8.buffer) === "[object SharedArrayBuffer]")) ? HEAPU8.slice(ptr, end) : HEAPU8.subarray(ptr, end)); + }, + stringToUTF16: function (str, outPtr, maxBytesToWrite) { + if (maxBytesToWrite === undefined) { + maxBytesToWrite = 0x7FFFFFFF; + } + if (maxBytesToWrite < 2) + return 0; + maxBytesToWrite -= 2; + var startPtr = outPtr; + var numCharsToWrite = (maxBytesToWrite < str.length * 2) ? (maxBytesToWrite / 2) : str.length; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + for (var i = 0; i < numCharsToWrite; ++i) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var codeUnit = str.charCodeAt(i); + HEAP_DATA_VIEW.setInt16(outPtr, codeUnit, true); + outPtr += 2; + } + HEAP_DATA_VIEW.setInt16(outPtr, 0, true); + return outPtr - startPtr; + }, + newString: function (env, str, length, result, stringMaker) { + length >>>= 0; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + var autoLength = length === -1 || length === 4294967295; + var sizelength = length >>> 0; + if (length !== 0) { + if (!str) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!(autoLength || (sizelength <= 2147483647))) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + str >>>= 0; + var strValue = stringMaker(str, autoLength, sizelength); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = emnapiCtx.addToCurrentScope(strValue).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + }, + newExternalString: function (env, str, length, finalize_callback, finalize_hint, result, copied, createApi, stringMaker) { + length >>>= 0; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + var autoLength = length === -1 || length === 4294967295; + var sizelength = length >>> 0; + if (length !== 0) { + if (!str) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!(autoLength || (sizelength <= 2147483647))) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var status = createApi(env, str, length, result); + if (status === 0 /* napi_status.napi_ok */) { + if (copied) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(copied, 1, true); + } + if (finalize_callback) { + envObject.callFinalizer(finalize_callback, str, finalize_hint); + } + } + return status; + } + }; + /** + * @__sig ippp + */ + function napi_get_array_length(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + if (!handle.isArray()) { + return envObject.setLastError(8 /* napi_status.napi_array_expected */); + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v = handle.value.length >>> 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ipppp + */ + function napi_get_arraybuffer_info(env, arraybuffer, data, byte_length) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!arraybuffer) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(arraybuffer); + if (!handle.isArrayBuffer() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (data) { + data >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var p = emnapiExternalMemory.getArrayBufferPointer(handle.value, true).address; + HEAP_DATA_VIEW.setUint32(data, p, true); + } + if (byte_length) { + byte_length >>>= 0; + HEAP_DATA_VIEW.setUint32(byte_length, handle.value.byteLength, true); + } + return envObject.clearLastError(); + } + /** + * @__sig ippp + */ + function node_api_set_prototype(env, object, value) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var obj = emnapiCtx.handleStore.get(object).value; + if (obj == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var type = typeof obj; + var v = void 0; + try { + v = (type === 'object' && obj !== null) || type === 'function' ? obj : Object(obj); + } + catch (_) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + var val = emnapiCtx.handleStore.get(value).value; + Object.setPrototypeOf(v, val); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ippp + */ + function napi_get_prototype(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + if (handle.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var v = void 0; + try { + v = handle.isObject() || handle.isFunction() ? handle.value : Object(handle.value); + } + catch (_) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var p = envObject.ensureHandleId(Object.getPrototypeOf(v)); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, p, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ippppppp + */ + function napi_get_typedarray_info(env, typedarray, type, length, data, arraybuffer, byte_offset) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!typedarray) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(typedarray); + if (!handle.isTypedArray()) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var v = handle.value; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (type) { + type >>>= 0; + var t = void 0; + if (v instanceof Int8Array) { + t = 0 /* napi_typedarray_type.napi_int8_array */; + } + else if (v instanceof Uint8Array) { + t = 1 /* napi_typedarray_type.napi_uint8_array */; + } + else if (v instanceof Uint8ClampedArray) { + t = 2 /* napi_typedarray_type.napi_uint8_clamped_array */; + } + else if (v instanceof Int16Array) { + t = 3 /* napi_typedarray_type.napi_int16_array */; + } + else if (v instanceof Uint16Array) { + t = 4 /* napi_typedarray_type.napi_uint16_array */; + } + else if (v instanceof Int32Array) { + t = 5 /* napi_typedarray_type.napi_int32_array */; + } + else if (v instanceof Uint32Array) { + t = 6 /* napi_typedarray_type.napi_uint32_array */; + } + else if (typeof Float16Array === 'function' && v instanceof Float16Array) { + t = 11 /* napi_typedarray_type.napi_float16_array */; + } + else if (v instanceof Float32Array) { + t = 7 /* napi_typedarray_type.napi_float32_array */; + } + else if (v instanceof Float64Array) { + t = 8 /* napi_typedarray_type.napi_float64_array */; + } + else if (v instanceof BigInt64Array) { + t = 9 /* napi_typedarray_type.napi_bigint64_array */; + } + else if (v instanceof BigUint64Array) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + t = 10 /* napi_typedarray_type.napi_biguint64_array */; + } + else { + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + HEAP_DATA_VIEW.setInt32(type, t, true); + } + v = emnapiExternalMemory.getOrUpdateMemoryView(v); + if (length) { + length >>>= 0; + HEAP_DATA_VIEW.setUint32(length, v.length, true); + } + if (data || arraybuffer) { + if (data) { + data >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var p = emnapiExternalMemory.getViewPointer(v, true).address; + HEAP_DATA_VIEW.setUint32(data, p, true); + } + if (arraybuffer) { + arraybuffer >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var ab = envObject.ensureHandleId(v.buffer); + HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true); + } + } + if (byte_offset) { + byte_offset >>>= 0; + HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true); + } + return envObject.clearLastError(); + } + /** + * @__sig ipppp + */ + function napi_get_buffer_info(env, buffer, data, length) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!buffer) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(buffer); + if (!handle.isBuffer(emnapiCtx.feature.Buffer)) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (handle.isDataView()) { + return napi_get_dataview_info(env, buffer, length, data, 0, 0); + } + return napi_get_typedarray_info(env, buffer, 0, length, data, 0, 0); + } + /** + * @__sig ipppppp + */ + function napi_get_dataview_info(env, dataview, byte_length, data, arraybuffer, byte_offset) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!dataview) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(dataview); + if (!handle.isDataView()) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var v = emnapiExternalMemory.getOrUpdateMemoryView(handle.value); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (byte_length) { + byte_length >>>= 0; + HEAP_DATA_VIEW.setUint32(byte_length, v.byteLength, true); + } + if (data || arraybuffer) { + if (data) { + data >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var p = emnapiExternalMemory.getViewPointer(v, true).address; + HEAP_DATA_VIEW.setUint32(data, p, true); + } + if (arraybuffer) { + arraybuffer >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var ab = envObject.ensureHandleId(v.buffer); + HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true); + } + } + if (byte_offset) { + byte_offset >>>= 0; + HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true); + } + return envObject.clearLastError(); + } + /** + * @__sig ippp + */ + function napi_get_date_value(env, value, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + if (!handle.isDate()) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + result >>>= 0; + v = handle.value.valueOf(); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setFloat64(result, v, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ippp + */ + function napi_get_value_bool(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + if (typeof handle.value !== 'boolean') { + return envObject.setLastError(7 /* napi_status.napi_boolean_expected */); + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r = handle.value ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + /** + * @__sig ippp + */ + function napi_get_value_double(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + if (typeof handle.value !== 'number') { + return envObject.setLastError(6 /* napi_status.napi_number_expected */); + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r = handle.value; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setFloat64(result, r, true); + return envObject.clearLastError(); + } + /** + * @__sig ipppp + */ + function napi_get_value_bigint_int64(env, value, result, lossless) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!emnapiCtx.feature.supportBigInt) { + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!lossless) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + var numberValue = handle.value; + if (typeof numberValue !== 'bigint') { + return envObject.setLastError(6 /* napi_status.napi_number_expected */); + } + lossless >>>= 0; + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if ((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63)))) { + HEAP_DATA_VIEW.setInt8(lossless, 1, true); + } + else { + HEAP_DATA_VIEW.setInt8(lossless, 0, true); + numberValue = numberValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); + if (numberValue >= (BigInt(1) << BigInt(63))) { + numberValue = numberValue - (BigInt(1) << BigInt(64)); + } + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var low = Number(numberValue & BigInt(0xffffffff)); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var high = Number(numberValue >> BigInt(32)); + HEAP_DATA_VIEW.setInt32(result, low, true); + HEAP_DATA_VIEW.setInt32(result + 4, high, true); + return envObject.clearLastError(); + } + /** + * @__sig ipppp + */ + function napi_get_value_bigint_uint64(env, value, result, lossless) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!emnapiCtx.feature.supportBigInt) { + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!lossless) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + var numberValue = handle.value; + if (typeof numberValue !== 'bigint') { + return envObject.setLastError(6 /* napi_status.napi_number_expected */); + } + lossless >>>= 0; + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if ((numberValue >= BigInt(0)) && (numberValue < (BigInt(1) << BigInt(64)))) { + HEAP_DATA_VIEW.setInt8(lossless, 1, true); + } + else { + HEAP_DATA_VIEW.setInt8(lossless, 0, true); + numberValue = numberValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var low = Number(numberValue & BigInt(0xffffffff)); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var high = Number(numberValue >> BigInt(32)); + HEAP_DATA_VIEW.setUint32(result, low, true); + HEAP_DATA_VIEW.setUint32(result + 4, high, true); + return envObject.clearLastError(); + } + /** + * @__sig ippppp + */ + function napi_get_value_bigint_words(env, value, sign_bit, word_count, words) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!emnapiCtx.feature.supportBigInt) { + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!word_count) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + if (!handle.isBigInt()) { + return envObject.setLastError(17 /* napi_status.napi_bigint_expected */); + } + var isMinus = handle.value < BigInt(0); + sign_bit >>>= 0; + words >>>= 0; + word_count >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + var word_count_int = HEAP_DATA_VIEW.getUint32(word_count, true); + word_count_int >>>= 0; + var wordCount = 0; + var bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value; + while (bigintValue !== BigInt(0)) { + wordCount++; + bigintValue = bigintValue >> BigInt(64); + } + bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value; + if (!sign_bit && !words) { + word_count_int = wordCount; + HEAP_DATA_VIEW.setUint32(word_count, word_count_int, true); + } + else { + if (!sign_bit) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!words) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var wordsArr = []; + while (bigintValue !== BigInt(0)) { + var uint64 = bigintValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); + wordsArr.push(uint64); + bigintValue = bigintValue >> BigInt(64); + } + var len = Math.min(word_count_int, wordsArr.length); + for (var i = 0; i < len; i++) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var low = Number(wordsArr[i] & BigInt(0xffffffff)); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var high = Number(wordsArr[i] >> BigInt(32)); + HEAP_DATA_VIEW.setUint32(words + i * 8, low, true); + HEAP_DATA_VIEW.setUint32(words + (i * 8 + 4), high, true); + } + HEAP_DATA_VIEW.setInt32(sign_bit, isMinus ? 1 : 0, true); + HEAP_DATA_VIEW.setUint32(word_count, len, true); + } + return envObject.clearLastError(); + } + /** + * @__sig ippp + */ + function napi_get_value_external(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + if (!handle.isExternal()) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var p = handle.data(); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, p, true); + return envObject.clearLastError(); + } + /** + * @__sig ippp + */ + function napi_get_value_int32(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + if (typeof handle.value !== 'number') { + return envObject.setLastError(6 /* napi_status.napi_number_expected */); + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v = new Int32Array([handle.value])[0]; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt32(result, v, true); + return envObject.clearLastError(); + } + /** + * @__sig ippp + */ + function napi_get_value_int64(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + if (typeof handle.value !== 'number') { + return envObject.setLastError(6 /* napi_status.napi_number_expected */); + } + var numberValue = handle.value; + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (numberValue === Number.POSITIVE_INFINITY || numberValue === Number.NEGATIVE_INFINITY || isNaN(numberValue)) { + HEAP_DATA_VIEW.setInt32(result, 0, true); + HEAP_DATA_VIEW.setInt32(result + 4, 0, true); + } + else if (numberValue < /* INT64_RANGE_NEGATIVE */ -9223372036854776e3) { + HEAP_DATA_VIEW.setInt32(result, 0, true); + HEAP_DATA_VIEW.setInt32(result + 4, 2147483648, true); + } + else if (numberValue >= /* INT64_RANGE_POSITIVE */ 9223372036854776000) { + HEAP_DATA_VIEW.setUint32(result, 4294967295, true); + HEAP_DATA_VIEW.setUint32(result + 4, 2147483647, true); + } + else { + $emnapiSetValueI64(result, Math.trunc(numberValue)); + } + return envObject.clearLastError(); + } + /** + * @__sig ippppp + */ + function napi_get_value_string_latin1(env, value, buf, buf_size, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + buf >>>= 0; + buf_size >>>= 0; + buf_size = buf_size >>> 0; + var handle = emnapiCtx.handleStore.get(value); + if (typeof handle.value !== 'string') { + return envObject.setLastError(3 /* napi_status.napi_string_expected */); + } + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (!buf) { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + HEAP_DATA_VIEW.setUint32(result, handle.value.length, true); + } + else if (buf_size !== 0) { + var copied = 0; + var v = void 0; + for (var i = 0; i < buf_size - 1; ++i) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + v = handle.value.charCodeAt(i) & 0xff; + HEAP_DATA_VIEW.setUint8(buf + i, v, true); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + copied++; + } + HEAP_DATA_VIEW.setUint8(buf + copied, 0, true); + if (result) { + HEAP_DATA_VIEW.setUint32(result, copied, true); + } + } + else if (result) { + HEAP_DATA_VIEW.setUint32(result, 0, true); + } + return envObject.clearLastError(); + } + /** + * @__sig ippppp + */ + function napi_get_value_string_utf8(env, value, buf, buf_size, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + buf >>>= 0; + buf_size >>>= 0; + buf_size = buf_size >>> 0; + var handle = emnapiCtx.handleStore.get(value); + if (typeof handle.value !== 'string') { + return envObject.setLastError(3 /* napi_status.napi_string_expected */); + } + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (!buf) { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var strLength = emnapiString.lengthBytesUTF8(handle.value); + HEAP_DATA_VIEW.setUint32(result, strLength, true); + } + else if (buf_size !== 0) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var copied = emnapiString.stringToUTF8(handle.value, buf, buf_size); + if (result) { + HEAP_DATA_VIEW.setUint32(result, copied, true); + } + } + else if (result) { + HEAP_DATA_VIEW.setUint32(result, 0, true); + } + return envObject.clearLastError(); + } + /** + * @__sig ippppp + */ + function napi_get_value_string_utf16(env, value, buf, buf_size, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + buf >>>= 0; + buf_size >>>= 0; + buf_size = buf_size >>> 0; + var handle = emnapiCtx.handleStore.get(value); + if (typeof handle.value !== 'string') { + return envObject.setLastError(3 /* napi_status.napi_string_expected */); + } + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (!buf) { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + HEAP_DATA_VIEW.setUint32(result, handle.value.length, true); + } + else if (buf_size !== 0) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var copied = emnapiString.stringToUTF16(handle.value, buf, buf_size * 2); + if (result) { + HEAP_DATA_VIEW.setUint32(result, copied / 2, true); + } + } + else if (result) { + HEAP_DATA_VIEW.setUint32(result, 0, true); + } + return envObject.clearLastError(); + } + /** + * @__sig ippp + */ + function napi_get_value_uint32(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + if (typeof handle.value !== 'number') { + return envObject.setLastError(6 /* napi_status.napi_number_expected */); + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v = new Uint32Array([handle.value])[0]; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.clearLastError(); + } + var convert2cMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + napi_get_array_length: napi_get_array_length, + napi_get_arraybuffer_info: napi_get_arraybuffer_info, + napi_get_buffer_info: napi_get_buffer_info, + napi_get_dataview_info: napi_get_dataview_info, + napi_get_date_value: napi_get_date_value, + napi_get_prototype: napi_get_prototype, + napi_get_typedarray_info: napi_get_typedarray_info, + napi_get_value_bigint_int64: napi_get_value_bigint_int64, + napi_get_value_bigint_uint64: napi_get_value_bigint_uint64, + napi_get_value_bigint_words: napi_get_value_bigint_words, + napi_get_value_bool: napi_get_value_bool, + napi_get_value_double: napi_get_value_double, + napi_get_value_external: napi_get_value_external, + napi_get_value_int32: napi_get_value_int32, + napi_get_value_int64: napi_get_value_int64, + napi_get_value_string_latin1: napi_get_value_string_latin1, + napi_get_value_string_utf16: napi_get_value_string_utf16, + napi_get_value_string_utf8: napi_get_value_string_utf8, + napi_get_value_uint32: napi_get_value_uint32, + node_api_set_prototype: node_api_set_prototype + }); + /** + * @__sig ipip + */ + function napi_create_int32(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v = emnapiCtx.addToCurrentScope(value).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.clearLastError(); + } + /** + * @__sig ipip + */ + function napi_create_uint32(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v = emnapiCtx.addToCurrentScope(value >>> 0).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.clearLastError(); + } + /** + * @__sig ipjp + */ + function napi_create_int64(env, low, high, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + var value; + if (!high) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + value = Number(low); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v1 = emnapiCtx.addToCurrentScope(value).id; + high >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(high, v1, true); + return envObject.clearLastError(); + } + /** + * @__sig ipdp + */ + function napi_create_double(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v = emnapiCtx.addToCurrentScope(value).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.clearLastError(); + } + /** + * @__sig ipppp + */ + function napi_create_string_latin1(env, str, length, result) { + return emnapiString.newString(env, str, length, result, function (str, autoLength, sizeLength) { + var latin1String = ''; + var len = 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (autoLength) { + while (true) { + var ch = HEAP_DATA_VIEW.getUint8(str, true); + if (!ch) + break; + latin1String += String.fromCharCode(ch); + str++; + } + } + else { + while (len < sizeLength) { + var ch = HEAP_DATA_VIEW.getUint8(str, true); + if (!ch) + break; + latin1String += String.fromCharCode(ch); + len++; + str++; + } + } + return latin1String; + }); + } + /** + * @__sig ipppp + */ + function napi_create_string_utf16(env, str, length, result) { + return emnapiString.newString(env, str, length, result, function (str) { + return emnapiString.UTF16ToString(str, length); + }); + } + /** + * @__sig ipppp + */ + function napi_create_string_utf8(env, str, length, result) { + return emnapiString.newString(env, str, length, result, function (str) { + return emnapiString.UTF8ToString(str, length); + }); + } + /** + * @__sig ippppppp + */ + function node_api_create_external_string_latin1(env, str, length, finalize_callback, finalize_hint, result, copied) { + return emnapiString.newExternalString(env, str, length, finalize_callback, finalize_hint, result, copied, napi_create_string_latin1, undefined); + } + /** + * @__sig ippppppp + */ + function node_api_create_external_string_utf16(env, str, length, finalize_callback, finalize_hint, result, copied) { + return emnapiString.newExternalString(env, str, length, finalize_callback, finalize_hint, result, copied, napi_create_string_utf16, undefined); + } + /** + * @__sig ipppp + */ + function node_api_create_property_key_latin1(env, str, length, result) { + return napi_create_string_latin1(env, str, length, result); + } + /** + * @__sig ipppp + */ + function node_api_create_property_key_utf8(env, str, length, result) { + return napi_create_string_utf8(env, str, length, result); + } + /** + * @__sig ipppp + */ + function node_api_create_property_key_utf16(env, str, length, result) { + return napi_create_string_utf16(env, str, length, result); + } + /** + * @__sig ipjp + */ + function napi_create_bigint_int64(env, low, high, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!emnapiCtx.feature.supportBigInt) { + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + var value; + if (!high) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + value = low; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v1 = emnapiCtx.addToCurrentScope(value).id; + high >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(high, v1, true); + return envObject.clearLastError(); + } + /** + * @__sig ipjp + */ + function napi_create_bigint_uint64(env, low, high, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!emnapiCtx.feature.supportBigInt) { + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + var value; + if (!high) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + value = low & ((BigInt(1) << BigInt(64)) - BigInt(1)); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v1 = emnapiCtx.addToCurrentScope(value).id; + high >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(high, v1, true); + return envObject.clearLastError(); + } + /** + * @__sig ipippp + */ + function napi_create_bigint_words(env, sign_bit, word_count, words, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v, i; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!emnapiCtx.feature.supportBigInt) { + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + words >>>= 0; + word_count >>>= 0; + word_count = word_count >>> 0; + if (word_count > 2147483647) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + if (word_count > (1024 * 1024 / (4 * 8) / 2)) { + throw new RangeError('Maximum BigInt size exceeded'); + } + var value = BigInt(0); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + for (i = 0; i < word_count; i++) { + var low = HEAP_DATA_VIEW.getUint32(words + i * 8, true); + var high = HEAP_DATA_VIEW.getUint32(words + (i * 8 + 4), true); + var wordi = BigInt(low) | (BigInt(high) << BigInt(32)); + value += wordi << BigInt(64 * i); + } + value *= ((BigInt(sign_bit) % BigInt(2) === BigInt(0)) ? BigInt(1) : BigInt(-1)); + result >>>= 0; + v = emnapiCtx.addToCurrentScope(value).id; + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + var convert2napiMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + napi_create_bigint_int64: napi_create_bigint_int64, + napi_create_bigint_uint64: napi_create_bigint_uint64, + napi_create_bigint_words: napi_create_bigint_words, + napi_create_double: napi_create_double, + napi_create_int32: napi_create_int32, + napi_create_int64: napi_create_int64, + napi_create_string_latin1: napi_create_string_latin1, + napi_create_string_utf16: napi_create_string_utf16, + napi_create_string_utf8: napi_create_string_utf8, + napi_create_uint32: napi_create_uint32, + node_api_create_external_string_latin1: node_api_create_external_string_latin1, + node_api_create_external_string_utf16: node_api_create_external_string_utf16, + node_api_create_property_key_latin1: node_api_create_property_key_latin1, + node_api_create_property_key_utf16: node_api_create_property_key_utf16, + node_api_create_property_key_utf8: node_api_create_property_key_utf8 + }); + function emnapiCreateFunction(envObject, utf8name, length, cb, data) { + utf8name >>>= 0; + var functionName = (!utf8name || !length) ? '' : (emnapiString.UTF8ToString(utf8name, length)); + var f; + var napiCallback = (wasmTable.get(cb)); + var callback = function (envObject) { + return napiCallback(envObject.id, envObject.ctx.scopeStore.currentScope.id); + }; + var makeFunction = function (envObject, callback) { + return function () { + var scope = envObject.ctx.openScope(envObject); + var callbackInfo = scope.callbackInfo; + callbackInfo.data = data; + callbackInfo.args = arguments; + callbackInfo.thiz = this; + callbackInfo.fn = f; + try { + var napiValue = envObject.callIntoModule(callback); + return (!napiValue) ? undefined : envObject.ctx.handleStore.get(napiValue).value; + } + finally { + callbackInfo.data = 0; + callbackInfo.args = undefined; + callbackInfo.thiz = undefined; + callbackInfo.fn = undefined; + envObject.ctx.closeScope(envObject, scope); + } + }; + }; + if (functionName === '') { + f = makeFunction(envObject, callback); + return { status: 0 /* napi_status.napi_ok */, f: f }; + } + if (!(/^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(functionName))) { + return { status: 1 /* napi_status.napi_invalid_arg */, f: undefined }; + } + if (emnapiCtx.feature.supportNewFunction) { + var _ = makeFunction(envObject, callback); + try { + f = (new Function('_', 'return function ' + functionName + '(){' + + '"use strict";' + + 'return _.apply(this,arguments);' + + '};'))(_); + } + catch (_err) { + f = makeFunction(envObject, callback); + if (emnapiCtx.feature.canSetFunctionName) + Object.defineProperty(f, 'name', { value: functionName }); + } + } + else { + f = makeFunction(envObject, callback); + if (emnapiCtx.feature.canSetFunctionName) + Object.defineProperty(f, 'name', { value: functionName }); + } + return { status: 0 /* napi_status.napi_ok */, f: f }; + } + function emnapiDefineProperty(envObject, obj, propertyName, method, getter, setter, value, attributes, data) { + if (getter || setter) { + var localGetter = void 0; + var localSetter = void 0; + if (getter) { + localGetter = emnapiCreateFunction(envObject, 0, 0, getter, data).f; + } + if (setter) { + localSetter = emnapiCreateFunction(envObject, 0, 0, setter, data).f; + } + var desc = { + configurable: (attributes & 4 /* napi_property_attributes.napi_configurable */) !== 0, + enumerable: (attributes & 2 /* napi_property_attributes.napi_enumerable */) !== 0, + get: localGetter, + set: localSetter + }; + Object.defineProperty(obj, propertyName, desc); + } + else if (method) { + var localMethod = emnapiCreateFunction(envObject, 0, 0, method, data).f; + var desc = { + configurable: (attributes & 4 /* napi_property_attributes.napi_configurable */) !== 0, + enumerable: (attributes & 2 /* napi_property_attributes.napi_enumerable */) !== 0, + writable: (attributes & 1 /* napi_property_attributes.napi_writable */) !== 0, + value: localMethod + }; + Object.defineProperty(obj, propertyName, desc); + } + else { + var desc = { + configurable: (attributes & 4 /* napi_property_attributes.napi_configurable */) !== 0, + enumerable: (attributes & 2 /* napi_property_attributes.napi_enumerable */) !== 0, + writable: (attributes & 1 /* napi_property_attributes.napi_writable */) !== 0, + value: emnapiCtx.handleStore.get(value).value + }; + Object.defineProperty(obj, propertyName, desc); + } + } + function emnapiGetHandle(js_object) { + var handle = emnapiCtx.handleStore.get(js_object); + if (!(handle.isObject() || handle.isFunction())) { + return { status: 1 /* napi_status.napi_invalid_arg */ }; + } + if (typeof emnapiExternalMemory !== 'undefined' && ArrayBuffer.isView(handle.value)) { + if (emnapiExternalMemory.wasmMemoryViewTable.has(handle.value)) { + handle = emnapiCtx.addToCurrentScope(emnapiExternalMemory.wasmMemoryViewTable.get(handle.value)); + } + } + return { status: 0 /* napi_status.napi_ok */, handle: handle }; + } + function emnapiWrap(env, js_object, native_object, finalize_cb, finalize_hint, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var referenceId; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!emnapiCtx.feature.supportFinalizer) { + if (finalize_cb) { + throw emnapiCtx.createNotSupportWeakRefError('napi_wrap', 'Parameter "finalize_cb" must be 0(NULL)'); + } + if (result) { + throw emnapiCtx.createNotSupportWeakRefError('napi_wrap', 'Parameter "result" must be 0(NULL)'); + } + } + if (!js_object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handleResult = emnapiGetHandle(js_object); + if (handleResult.status !== 0 /* napi_status.napi_ok */) { + return envObject.setLastError(handleResult.status); + } + var handle = handleResult.handle; + if (envObject.getObjectBinding(handle.value).wrapped !== 0) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var reference = void 0; + if (result) { + if (!finalize_cb) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 1 /* ReferenceOwnership.kUserland */, finalize_cb, native_object, finalize_hint); + result >>>= 0; + referenceId = reference.id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, referenceId, true); + } + else { + if (finalize_cb) { + reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 0 /* ReferenceOwnership.kRuntime */, finalize_cb, native_object, finalize_hint); + } + else { + reference = emnapiCtx.createReferenceWithData(envObject, handle.id, 0, 0 /* ReferenceOwnership.kRuntime */, native_object); + } + } + envObject.getObjectBinding(handle.value).wrapped = reference.id; + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + function emnapiUnwrap(env, js_object, result, action) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var data; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!js_object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (action === 0 /* UnwrapAction.KeepWrap */) { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var value = emnapiCtx.handleStore.get(js_object); + if (!(value.isObject() || value.isFunction())) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var binding = envObject.getObjectBinding(value.value); + var referenceId = binding.wrapped; + var ref = emnapiCtx.refStore.get(referenceId); + if (!ref) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (result) { + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + data = ref.data(); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, data, true); + } + if (action === 1 /* UnwrapAction.RemoveWrap */) { + binding.wrapped = 0; + if (ref.ownership() === 1 /* ReferenceOwnership.kUserland */) { + // When the wrap is been removed, the finalizer should be reset. + ref.resetFinalizer(); + } + else { + ref.dispose(); + } + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ipppppppp + */ + function napi_define_class(env, utf8name, length, constructor, callback_data, property_count, properties, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var propPtr, valueHandleId, attributes; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!constructor) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + length >>>= 0; + properties >>>= 0; + property_count >>>= 0; + property_count = property_count >>> 0; + if (property_count > 0) { + if (!properties) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + if (!((length >= -1 && length <= 2147483647) || length === 4294967295) || (!utf8name)) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var fresult = emnapiCreateFunction(envObject, utf8name, length, constructor, callback_data); + if (fresult.status !== 0 /* napi_status.napi_ok */) + return envObject.setLastError(fresult.status); + var F = fresult.f; + var propertyName = void 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + for (var i = 0; i < property_count; i++) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + propPtr = properties + (i * (4 * 8)); + var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true); + var name_1 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true); + var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true); + var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true); + var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true); + var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true); + attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true); + attributes >>>= 0; + var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true); + if (utf8Name) { + propertyName = emnapiString.UTF8ToString(utf8Name, -1); + } + else { + if (!name_1) { + return envObject.setLastError(4 /* napi_status.napi_name_expected */); + } + propertyName = emnapiCtx.handleStore.get(name_1).value; + if (typeof propertyName !== 'string' && typeof propertyName !== 'symbol') { + return envObject.setLastError(4 /* napi_status.napi_name_expected */); + } + } + if ((attributes & 1024 /* napi_property_attributes.napi_static */) !== 0) { + emnapiDefineProperty(envObject, F, propertyName, method, getter, setter, value, attributes, data); + continue; + } + emnapiDefineProperty(envObject, F.prototype, propertyName, method, getter, setter, value, attributes, data); + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var valueHandle = emnapiCtx.addToCurrentScope(F); + valueHandleId = valueHandle.id; + result >>>= 0; + HEAP_DATA_VIEW.setUint32(result, valueHandleId, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ipppppp + */ + function napi_wrap(env, js_object, native_object, finalize_cb, finalize_hint, result) { + return emnapiWrap(env, js_object, native_object, finalize_cb, finalize_hint, result); + } + /** + * @__sig ippp + */ + function napi_unwrap(env, js_object, result) { + return emnapiUnwrap(env, js_object, result, 0 /* UnwrapAction.KeepWrap */); + } + /** + * @__sig ippp + */ + function napi_remove_wrap(env, js_object, result) { + return emnapiUnwrap(env, js_object, result, 1 /* UnwrapAction.RemoveWrap */); + } + /** + * @__sig ippp + */ + function napi_type_tag_object(env, object, type_tag) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!object) { + return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */); + } + var value = emnapiCtx.handleStore.get(object); + if (!(value.isObject() || value.isFunction())) { + return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 2 /* napi_status.napi_object_expected */); + } + type_tag >>>= 0; + if (!type_tag) { + return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */); + } + var binding = envObject.getObjectBinding(value.value); + if (binding.tag !== null) { + return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */); + } + var tag = new Uint8Array(16); + tag.set(new Uint8Array(wasmMemory.buffer, type_tag, 16)); + binding.tag = new Uint32Array(tag.buffer); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ipppp + */ + function napi_check_object_type_tag(env, object, type_tag, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars, one-var + var ret = true; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!object) { + return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */); + } + var value = emnapiCtx.handleStore.get(object); + if (!(value.isObject() || value.isFunction())) { + return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 2 /* napi_status.napi_object_expected */); + } + if (!type_tag) { + return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */); + } + if (!result) { + return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */); + } + var binding = envObject.getObjectBinding(value.value); + if (binding.tag !== null) { + type_tag >>>= 0; + var tag = binding.tag; + var typeTag = new Uint32Array(wasmMemory.buffer, type_tag, 4); + ret = (tag[0] === typeTag[0] && + tag[1] === typeTag[1] && + tag[2] === typeTag[2] && + tag[3] === typeTag[3]); + } + else { + ret = false; + } + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, ret ? 1 : 0, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ipppppp + */ + function napi_add_finalizer(env, js_object, finalize_data, finalize_cb, finalize_hint, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!emnapiCtx.feature.supportFinalizer) { + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + if (!js_object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!finalize_cb) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handleResult = emnapiGetHandle(js_object); + if (handleResult.status !== 0 /* napi_status.napi_ok */) { + return envObject.setLastError(handleResult.status); + } + var handle = handleResult.handle; + var ownership = !result ? 0 /* ReferenceOwnership.kRuntime */ : 1 /* ReferenceOwnership.kUserland */; + finalize_data >>>= 0; + finalize_cb >>>= 0; + finalize_hint >>>= 0; + var reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, ownership, finalize_cb, finalize_data, finalize_hint); + if (result) { + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var referenceId = reference.id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, referenceId, true); + } + return envObject.clearLastError(); + } + /** + * @__sig ipppp + */ + function node_api_post_finalizer(env, finalize_cb, finalize_data, finalize_hint) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + var envObject = emnapiCtx.envStore.get(env); + envObject.enqueueFinalizer(emnapiCtx.createTrackedFinalizer(envObject, finalize_cb, finalize_data, finalize_hint)); + return envObject.clearLastError(); + } + var wrapMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + napi_add_finalizer: napi_add_finalizer, + napi_check_object_type_tag: napi_check_object_type_tag, + napi_define_class: napi_define_class, + napi_remove_wrap: napi_remove_wrap, + napi_type_tag_object: napi_type_tag_object, + napi_unwrap: napi_unwrap, + napi_wrap: napi_wrap, + node_api_post_finalizer: node_api_post_finalizer + }); + /** + * @__sig ipippppp + */ + function emnapi_create_memory_view(env, typedarray_type, external_data, byte_length, finalize_cb, finalize_hint, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + byte_length >>>= 0; + external_data >>>= 0; + result >>>= 0; + byte_length = byte_length >>> 0; + if (!external_data) { + byte_length = 0; + } + if (byte_length > 2147483647) { + throw new RangeError('Cannot create a memory view larger than 2147483647 bytes'); + } + if ((external_data + byte_length) > wasmMemory.buffer.byteLength) { + throw new RangeError('Memory out of range'); + } + if (!emnapiCtx.feature.supportFinalizer && finalize_cb) { + throw emnapiCtx.createNotSupportWeakRefError('emnapi_create_memory_view', 'Parameter "finalize_cb" must be 0(NULL)'); + } + var viewDescriptor = void 0; + switch (typedarray_type) { + case 0 /* emnapi_memory_view_type.emnapi_int8_array */: + viewDescriptor = { Ctor: Int8Array, address: external_data, length: byte_length, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; + break; + case 1 /* emnapi_memory_view_type.emnapi_uint8_array */: + viewDescriptor = { Ctor: Uint8Array, address: external_data, length: byte_length, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; + break; + case 2 /* emnapi_memory_view_type.emnapi_uint8_clamped_array */: + viewDescriptor = { Ctor: Uint8ClampedArray, address: external_data, length: byte_length, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; + break; + case 3 /* emnapi_memory_view_type.emnapi_int16_array */: + viewDescriptor = { Ctor: Int16Array, address: external_data, length: byte_length >> 1, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; + break; + case 4 /* emnapi_memory_view_type.emnapi_uint16_array */: + viewDescriptor = { Ctor: Uint16Array, address: external_data, length: byte_length >> 1, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; + break; + case 5 /* emnapi_memory_view_type.emnapi_int32_array */: + viewDescriptor = { Ctor: Int32Array, address: external_data, length: byte_length >> 2, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; + break; + case 6 /* emnapi_memory_view_type.emnapi_uint32_array */: + viewDescriptor = { Ctor: Uint32Array, address: external_data, length: byte_length >> 2, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; + break; + case 7 /* emnapi_memory_view_type.emnapi_float32_array */: + viewDescriptor = { Ctor: Float32Array, address: external_data, length: byte_length >> 2, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; + break; + case 8 /* emnapi_memory_view_type.emnapi_float64_array */: + viewDescriptor = { Ctor: Float64Array, address: external_data, length: byte_length >> 3, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; + break; + case 9 /* emnapi_memory_view_type.emnapi_bigint64_array */: + viewDescriptor = { Ctor: BigInt64Array, address: external_data, length: byte_length >> 3, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; + break; + case 10 /* emnapi_memory_view_type.emnapi_biguint64_array */: + viewDescriptor = { Ctor: BigUint64Array, address: external_data, length: byte_length >> 3, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; + break; + case -1 /* emnapi_memory_view_type.emnapi_data_view */: + viewDescriptor = { Ctor: DataView, address: external_data, length: byte_length, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; + break; + case 11 /* emnapi_memory_view_type.emnapi_float16_array */: + if (typeof Float16Array !== 'function') { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + viewDescriptor = { Ctor: Float16Array, address: external_data, length: byte_length >> 1, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; + break; + case -2 /* emnapi_memory_view_type.emnapi_buffer */: { + if (!emnapiCtx.feature.Buffer) { + throw emnapiCtx.createNotSupportBufferError('emnapi_create_memory_view', ''); + } + viewDescriptor = { Ctor: emnapiCtx.feature.Buffer, address: external_data, length: byte_length, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; + break; + } + default: return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var Ctor = viewDescriptor.Ctor; + var typedArray = typedarray_type === -2 /* emnapi_memory_view_type.emnapi_buffer */ + ? emnapiCtx.feature.Buffer.from(wasmMemory.buffer, viewDescriptor.address, viewDescriptor.length) + : new Ctor(wasmMemory.buffer, viewDescriptor.address, viewDescriptor.length); + var handle = emnapiCtx.addToCurrentScope(typedArray); + emnapiExternalMemory.wasmMemoryViewTable.set(typedArray, viewDescriptor); + if (finalize_cb) { + var status_1 = napi_add_finalizer(env, handle.id, external_data, finalize_cb, finalize_hint, /* NULL */ 0); + if (status_1 === 10 /* napi_status.napi_pending_exception */) { + var err = envObject.tryCatch.extractException(); + envObject.clearLastError(); + throw err; + } + else if (status_1 !== 0 /* napi_status.napi_ok */) { + return envObject.setLastError(status_1); + } + } + value = handle.id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig i + */ + function emnapi_is_support_weakref() { + return emnapiCtx.feature.supportFinalizer ? 1 : 0; + } + /** + * @__sig i + */ + function emnapi_is_support_bigint() { + return emnapiCtx.feature.supportBigInt ? 1 : 0; + } + /** + * @__sig i + */ + function emnapi_is_node_binding_available() { + return emnapiNodeBinding ? 1 : 0; + } + function $emnapiSyncMemory(js_to_wasm, arrayBufferOrView, offset, len) { + offset = offset !== null && offset !== void 0 ? offset : 0; + offset = offset >>> 0; + var view; + if (arrayBufferOrView instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) { + var pointer = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false).address; + if (!pointer) + throw new Error('Unknown ArrayBuffer address'); + if (typeof len !== 'number' || len === -1 || len === 4294967295) { + len = arrayBufferOrView.byteLength - offset; + } + len = len >>> 0; + if (len === 0) + return arrayBufferOrView; + view = new Uint8Array(arrayBufferOrView, offset, len); + var wasmMemoryU8 = new Uint8Array(wasmMemory.buffer); + if (!js_to_wasm) { + view.set(wasmMemoryU8.subarray(pointer, pointer + len)); + } + else { + wasmMemoryU8.set(view, pointer); + } + return arrayBufferOrView; + } + if (ArrayBuffer.isView(arrayBufferOrView)) { + var viewPointerInfo = emnapiExternalMemory.getViewPointer(arrayBufferOrView, false); + var latestView = viewPointerInfo.view; + var pointer = viewPointerInfo.address; + if (!pointer) + throw new Error('Unknown ArrayBuffer address'); + if (typeof len !== 'number' || len === -1 || len === 4294967295) { + len = latestView.byteLength - offset; + } + len = len >>> 0; + if (len === 0) + return latestView; + view = new Uint8Array(latestView.buffer, latestView.byteOffset + offset, len); + var wasmMemoryU8 = new Uint8Array(wasmMemory.buffer); + if (!js_to_wasm) { + view.set(wasmMemoryU8.subarray(pointer, pointer + len)); + } + else { + wasmMemoryU8.set(view, pointer); + } + return latestView; + } + throw new TypeError('emnapiSyncMemory expect ArrayBuffer or ArrayBufferView as first parameter'); + } + /** + * @__sig ipippp + */ + function emnapi_sync_memory(env, js_to_wasm, arraybuffer_or_view, offset, len) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!arraybuffer_or_view) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + arraybuffer_or_view >>>= 0; + offset >>>= 0; + len >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + var handleId = HEAP_DATA_VIEW.getUint32(arraybuffer_or_view, true); + var handle = envObject.ctx.handleStore.get(handleId); + if (!handle.isArrayBuffer() && !handle.isTypedArray() && !handle.isDataView() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var ret = $emnapiSyncMemory(Boolean(js_to_wasm), handle.value, offset, len); + if (handle.value !== ret) { + arraybuffer_or_view >>>= 0; + v = envObject.ensureHandleId(ret); + HEAP_DATA_VIEW.setUint32(arraybuffer_or_view, v, true); + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + function $emnapiGetMemoryAddress(arrayBufferOrView) { + var isArrayBuffer = arrayBufferOrView instanceof ArrayBuffer; + var isDataView = arrayBufferOrView instanceof DataView; + var isTypedArray = ArrayBuffer.isView(arrayBufferOrView) && !isDataView; + if (!isArrayBuffer && !isTypedArray && !isDataView && !emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) { + throw new TypeError('emnapiGetMemoryAddress expect ArrayBuffer or ArrayBufferView as first parameter'); + } + var info; + if (isArrayBuffer) { + info = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false); + } + else { + info = emnapiExternalMemory.getViewPointer(arrayBufferOrView, false); + } + return { + address: info.address, + ownership: info.ownership, + runtimeAllocated: info.runtimeAllocated + }; + } + /** + * @__sig ipppp + */ + function emnapi_get_memory_address(env, arraybuffer_or_view, address, ownership, runtime_allocated) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var p, runtimeAllocated, ownershipOut; + var info; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!arraybuffer_or_view) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!address && !ownership && !runtime_allocated) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var handle = envObject.ctx.handleStore.get(arraybuffer_or_view); + info = $emnapiGetMemoryAddress(handle.value); + p = info.address; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (address) { + address >>>= 0; + HEAP_DATA_VIEW.setUint32(address, p, true); + } + if (ownership) { + ownership >>>= 0; + ownershipOut = info.ownership; + HEAP_DATA_VIEW.setInt32(ownership, ownershipOut, true); + } + if (runtime_allocated) { + runtime_allocated >>>= 0; + runtimeAllocated = info.runtimeAllocated; + HEAP_DATA_VIEW.setInt8(runtime_allocated, runtimeAllocated, true); + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ipp + */ + function emnapi_get_runtime_version(env, version) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + var envObject = emnapiCtx.envStore.get(env); + if (!version) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var runtimeVersion; + try { + runtimeVersion = emnapiCtx.getRuntimeVersions().version; + } + catch (_) { + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var versions = runtimeVersion.split('.') + .map(function (n) { return Number(n); }); + version >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(version, versions[0], true); + HEAP_DATA_VIEW.setUint32(version + 4, versions[1], true); + HEAP_DATA_VIEW.setUint32(version + 8, versions[2], true); + return envObject.clearLastError(); + } + var emnapiMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + $emnapiGetMemoryAddress: $emnapiGetMemoryAddress, + $emnapiSyncMemory: $emnapiSyncMemory, + emnapi_create_memory_view: emnapi_create_memory_view, + emnapi_get_memory_address: emnapi_get_memory_address, + emnapi_get_runtime_version: emnapi_get_runtime_version, + emnapi_is_node_binding_available: emnapi_is_node_binding_available, + emnapi_is_support_bigint: emnapi_is_support_bigint, + emnapi_is_support_weakref: emnapi_is_support_weakref, + emnapi_sync_memory: emnapi_sync_memory + }); + /** + * @__sig ipp + */ + function napi_create_array(env, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = emnapiCtx.addToCurrentScope([]).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + /** + * @__sig ippp + */ + function napi_create_array_with_length(env, length, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + length >>>= 0; + result >>>= 0; + length = length >>> 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = emnapiCtx.addToCurrentScope(new Array(length)).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + function emnapiCreateArrayBuffer(byte_length, data, shared) { + byte_length >>>= 0; + byte_length = byte_length >>> 0; + var arrayBuffer = shared ? new SharedArrayBuffer(byte_length) : new ArrayBuffer(byte_length); + if (data) { + data >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var p = emnapiExternalMemory.getArrayBufferPointer(arrayBuffer, true).address; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(data, p, true); + } + return arrayBuffer; + } + /** + * @__sig ipppp + */ + function napi_create_arraybuffer(env, byte_length, data, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, false); + value = emnapiCtx.addToCurrentScope(arrayBuffer).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ipppp + */ + function node_api_create_sharedarraybuffer(env, byte_length, data, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, true); + value = emnapiCtx.addToCurrentScope(arrayBuffer).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ipdp + */ + function napi_create_date(env, time, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + value = emnapiCtx.addToCurrentScope(new Date(time)).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ippppp + */ + function napi_create_external(env, data, finalize_cb, finalize_hint, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!emnapiCtx.feature.supportFinalizer && finalize_cb) { + throw emnapiCtx.createNotSupportWeakRefError('napi_create_external', 'Parameter "finalize_cb" must be 0(NULL)'); + } + var externalHandle = emnapiCtx.getCurrentScope().addExternal(data); + if (finalize_cb) { + emnapiCtx.createReferenceWithFinalizer(envObject, externalHandle.id, 0, 0 /* ReferenceOwnership.kRuntime */, finalize_cb, data, finalize_hint); + } + result >>>= 0; + value = externalHandle.id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ipppppp + */ + function napi_create_external_arraybuffer(env, external_data, byte_length, finalize_cb, finalize_hint, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + byte_length >>>= 0; + external_data >>>= 0; + result >>>= 0; + byte_length = byte_length >>> 0; + if (!external_data) { + byte_length = 0; + } + if ((external_data + byte_length) > wasmMemory.buffer.byteLength) { + throw new RangeError('Memory out of range'); + } + if (!emnapiCtx.feature.supportFinalizer && finalize_cb) { + throw emnapiCtx.createNotSupportWeakRefError('napi_create_external_arraybuffer', 'Parameter "finalize_cb" must be 0(NULL)'); + } + var arrayBuffer = new ArrayBuffer(byte_length); + if (byte_length === 0) { + try { + var MessageChannel_1 = emnapiCtx.feature.MessageChannel; + var messageChannel = new MessageChannel_1(); + messageChannel.port1.postMessage(arrayBuffer, [arrayBuffer]); + } + catch (_) { } + } + else { + var u8arr = new Uint8Array(arrayBuffer); + u8arr.set(new Uint8Array(wasmMemory.buffer).subarray(external_data, external_data + byte_length)); + emnapiExternalMemory.table.set(arrayBuffer, { + address: external_data, + ownership: 1 /* ReferenceOwnership.kUserland */, + runtimeAllocated: 0 + }); + } + var handle = emnapiCtx.addToCurrentScope(arrayBuffer); + if (finalize_cb) { + var status_1 = napi_add_finalizer(env, handle.id, external_data, finalize_cb, finalize_hint, /* NULL */ 0); + if (status_1 === 10 /* napi_status.napi_pending_exception */) { + var err = envObject.tryCatch.extractException(); + envObject.clearLastError(); + throw err; + } + else if (status_1 !== 0 /* napi_status.napi_ok */) { + return envObject.setLastError(status_1); + } + } + value = handle.id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ipp + */ + function napi_create_object(env, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = emnapiCtx.addToCurrentScope({}).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + /** + * @__sig ipppppp + */ + function node_api_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + property_count >>>= 0; + property_count = property_count >>> 0; + if (property_count > 0) { + if (!property_names) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!property_values) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var v8_prototype_or_null = prototype_or_null + ? emnapiCtx.handleStore.get(prototype_or_null).value + : null; + var properties = {}; + property_names >>>= 0; + property_values >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + for (var i = 0; i < property_count; i++) { + var name_value = emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_names + i * 4, true)).value; + if (!(typeof name_value === "string" || typeof name_value === "symbol")) + return envObject.setLastError(4 /* napi_status.napi_name_expected */); + properties[name_value] = { + value: emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_values + i * 4, true)).value, + writable: true, + enumerable: true, + configurable: true + }; + } + var obj; + try { + obj = Object.defineProperties(Object.create(v8_prototype_or_null), properties); + } + catch (_) { + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = emnapiCtx.addToCurrentScope(obj).id; + result >>>= 0; + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + /** + * @__sig ippp + */ + function napi_create_symbol(env, description, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (!description) { + // eslint-disable-next-line symbol-description, @typescript-eslint/no-unused-vars + var value = emnapiCtx.addToCurrentScope(Symbol()).id; + HEAP_DATA_VIEW.setUint32(result, value, true); + } + else { + var handle = emnapiCtx.handleStore.get(description); + var desc = handle.value; + if (typeof desc !== 'string') { + return envObject.setLastError(3 /* napi_status.napi_string_expected */); + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v = emnapiCtx.addToCurrentScope(Symbol(desc)).id; + HEAP_DATA_VIEW.setUint32(result, v, true); + } + return envObject.clearLastError(); + } + /** + * @__sig ipipppp + */ + function napi_create_typedarray(env, type, length, arraybuffer, byte_offset, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!arraybuffer) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(arraybuffer); + if (!handle.isArrayBuffer()) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var buffer = handle.value; + byte_offset >>>= 0; + length >>>= 0; + var createTypedArray = function (envObject, Type, size_of_element, buffer, byte_offset, length) { + var _a; + byte_offset = byte_offset >>> 0; + length = length >>> 0; + if (size_of_element > 1) { + if ((byte_offset) % (size_of_element) !== 0) { + var err = new RangeError("start offset of ".concat((_a = Type.name) !== null && _a !== void 0 ? _a : '', " should be a multiple of ").concat(size_of_element)); + err.code = 'ERR_NAPI_INVALID_TYPEDARRAY_ALIGNMENT'; + envObject.tryCatch.setError(err); + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + } + if (((length * size_of_element) + byte_offset) > buffer.byteLength) { + var err = new RangeError('Invalid typed array length'); + err.code = 'ERR_NAPI_INVALID_TYPEDARRAY_LENGTH'; + envObject.tryCatch.setError(err); + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + var out = new Type(buffer, byte_offset, length); + if (buffer === wasmMemory.buffer) { + if (!emnapiExternalMemory.wasmMemoryViewTable.has(out)) { + emnapiExternalMemory.wasmMemoryViewTable.set(out, { + Ctor: Type, + address: byte_offset, + length: length, + ownership: 1 /* ReferenceOwnership.kUserland */, + runtimeAllocated: 0 + }); + } + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + value = emnapiCtx.addToCurrentScope(out).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + }; + switch (type) { + case 0 /* napi_typedarray_type.napi_int8_array */: + return createTypedArray(envObject, Int8Array, 1, buffer, byte_offset, length); + case 1 /* napi_typedarray_type.napi_uint8_array */: + return createTypedArray(envObject, Uint8Array, 1, buffer, byte_offset, length); + case 2 /* napi_typedarray_type.napi_uint8_clamped_array */: + return createTypedArray(envObject, Uint8ClampedArray, 1, buffer, byte_offset, length); + case 3 /* napi_typedarray_type.napi_int16_array */: + return createTypedArray(envObject, Int16Array, 2, buffer, byte_offset, length); + case 4 /* napi_typedarray_type.napi_uint16_array */: + return createTypedArray(envObject, Uint16Array, 2, buffer, byte_offset, length); + case 5 /* napi_typedarray_type.napi_int32_array */: + return createTypedArray(envObject, Int32Array, 4, buffer, byte_offset, length); + case 6 /* napi_typedarray_type.napi_uint32_array */: + return createTypedArray(envObject, Uint32Array, 4, buffer, byte_offset, length); + case 7 /* napi_typedarray_type.napi_float32_array */: + return createTypedArray(envObject, Float32Array, 4, buffer, byte_offset, length); + case 8 /* napi_typedarray_type.napi_float64_array */: + return createTypedArray(envObject, Float64Array, 8, buffer, byte_offset, length); + case 9 /* napi_typedarray_type.napi_bigint64_array */: + return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length); + case 10 /* napi_typedarray_type.napi_biguint64_array */: + return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length); + case 11 /* napi_typedarray_type.napi_float16_array */: + if (typeof Float16Array !== 'function') { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + return createTypedArray(envObject, Float16Array, 2, buffer, byte_offset, length); + default: + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__deps malloc + * @__sig ippp + */ + function napi_create_buffer(env, size, data, result) { + var _a; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value, pointer; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var Buffer = emnapiCtx.feature.Buffer; + if (!Buffer) { + throw emnapiCtx.createNotSupportBufferError('napi_create_buffer', ''); + } + result >>>= 0; + var buffer = void 0; + size >>>= 0; + size = size >>> 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (!data || (size === 0)) { + buffer = Buffer.alloc(size); + value = emnapiCtx.addToCurrentScope(buffer).id; + HEAP_DATA_VIEW.setUint32(result, value, true); + } + else { + pointer = _malloc(size); + if (!pointer) + throw new Error('Out of memory'); + pointer >>>= 0; + new Uint8Array(wasmMemory.buffer).subarray(pointer, pointer + size).fill(0); + var buffer_1 = Buffer.from(wasmMemory.buffer, pointer, size); + var viewDescriptor = { + Ctor: Buffer, + address: pointer, + length: size, + ownership: emnapiExternalMemory.registry ? 0 /* ReferenceOwnership.kRuntime */ : 1 /* ReferenceOwnership.kUserland */, + runtimeAllocated: 1 + }; + emnapiExternalMemory.wasmMemoryViewTable.set(buffer_1, viewDescriptor); + (_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(viewDescriptor, pointer); + value = emnapiCtx.addToCurrentScope(buffer_1).id; + HEAP_DATA_VIEW.setUint32(result, value, true); + data >>>= 0; + HEAP_DATA_VIEW.setUint32(data, pointer, true); + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ippppp + */ + function napi_create_buffer_copy(env, length, data, result_data, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var Buffer = emnapiCtx.feature.Buffer; + if (!Buffer) { + throw emnapiCtx.createNotSupportBufferError('napi_create_buffer_copy', ''); + } + var arrayBuffer = emnapiCreateArrayBuffer(length, result_data, false); + var buffer = Buffer.from(arrayBuffer); + data >>>= 0; + length >>>= 0; + buffer.set(new Uint8Array(wasmMemory.buffer).subarray(data, data + length)); + value = emnapiCtx.addToCurrentScope(buffer).id; + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ipppppp + */ + function napi_create_external_buffer(env, length, data, finalize_cb, finalize_hint, result) { + return emnapi_create_memory_view(env, -2 /* emnapi_memory_view_type.emnapi_buffer */, data, length, finalize_cb, finalize_hint, result); + } + /** + * @__sig ippppp + */ + function node_api_create_buffer_from_arraybuffer(env, arraybuffer, byte_offset, byte_length, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!arraybuffer) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + byte_offset >>>= 0; + byte_length >>>= 0; + byte_offset = byte_offset >>> 0; + byte_length = byte_length >>> 0; + var handle = emnapiCtx.handleStore.get(arraybuffer); + if (!handle.isArrayBuffer()) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var buffer = handle.value; + if ((byte_length + byte_offset) > buffer.byteLength) { + var err = new RangeError('The byte offset + length is out of range'); + err.code = 'ERR_OUT_OF_RANGE'; + throw err; + } + var Buffer = emnapiCtx.feature.Buffer; + if (!Buffer) { + throw emnapiCtx.createNotSupportBufferError('node_api_create_buffer_from_arraybuffer', ''); + } + var out = Buffer.from(buffer, byte_offset, byte_length); + if (buffer === wasmMemory.buffer) { + if (!emnapiExternalMemory.wasmMemoryViewTable.has(out)) { + emnapiExternalMemory.wasmMemoryViewTable.set(out, { + Ctor: Buffer, + address: byte_offset, + length: byte_length, + ownership: 1 /* ReferenceOwnership.kUserland */, + runtimeAllocated: 0 + }); + } + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + value = emnapiCtx.addToCurrentScope(out).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ippppp + */ + function napi_create_dataview(env, byte_length, arraybuffer, byte_offset, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!arraybuffer) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + byte_length >>>= 0; + byte_offset >>>= 0; + byte_length = byte_length >>> 0; + byte_offset = byte_offset >>> 0; + var value = emnapiCtx.handleStore.get(arraybuffer).value; + var createDataview = function (buffer) { + if ((byte_length + byte_offset) > buffer.byteLength) { + var err = new RangeError('byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in'); + err.code = 'ERR_NAPI_INVALID_DATAVIEW_ARGS'; + throw err; + } + var dataview = new DataView(buffer, byte_offset, byte_length); + if (buffer === wasmMemory.buffer) { + if (!emnapiExternalMemory.wasmMemoryViewTable.has(dataview)) { + emnapiExternalMemory.wasmMemoryViewTable.set(dataview, { + Ctor: DataView, + address: byte_offset, + length: byte_length, + ownership: 1 /* ReferenceOwnership.kUserland */, + runtimeAllocated: 0 + }); + } + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v = emnapiCtx.addToCurrentScope(dataview).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.getReturnStatus(); + }; + if (value instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(value)) { + return createDataview(value); + } + else { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ipppp + */ + function node_api_symbol_for(env, utf8description, length, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + length >>>= 0; + utf8description >>>= 0; + result >>>= 0; + var autoLength = length === -1 || length === 4294967295; + var sizelength = length >>> 0; + if (length !== 0) { + if (!utf8description) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + if (!(autoLength || (sizelength <= 2147483647))) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var descriptionString = emnapiString.UTF8ToString(utf8description, length); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = emnapiCtx.addToCurrentScope(Symbol.for(descriptionString)).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + var createMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + napi_create_array: napi_create_array, + napi_create_array_with_length: napi_create_array_with_length, + napi_create_arraybuffer: napi_create_arraybuffer, + napi_create_buffer: napi_create_buffer, + napi_create_buffer_copy: napi_create_buffer_copy, + napi_create_dataview: napi_create_dataview, + napi_create_date: napi_create_date, + napi_create_external: napi_create_external, + napi_create_external_arraybuffer: napi_create_external_arraybuffer, + napi_create_external_buffer: napi_create_external_buffer, + napi_create_object: napi_create_object, + napi_create_symbol: napi_create_symbol, + napi_create_typedarray: napi_create_typedarray, + node_api_create_buffer_from_arraybuffer: node_api_create_buffer_from_arraybuffer, + node_api_create_object_with_properties: node_api_create_object_with_properties, + node_api_create_sharedarraybuffer: node_api_create_sharedarraybuffer, + node_api_symbol_for: node_api_symbol_for + }); + /** @__sig ipip */ + function napi_get_boolean(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v = value === 0 ? 3 /* GlobalHandle.FALSE */ : 4 /* GlobalHandle.TRUE */; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.clearLastError(); + } + /** @__sig ipp */ + function napi_get_global(env, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = 5 /* GlobalHandle.GLOBAL */; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + /** @__sig ipp */ + function napi_get_null(env, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = 2 /* GlobalHandle.NULL */; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + /** @__sig ipp */ + function napi_get_undefined(env, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = 1 /* GlobalHandle.UNDEFINED */; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + var globalMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + napi_get_boolean: napi_get_boolean, + napi_get_global: napi_get_global, + napi_get_null: napi_get_null, + napi_get_undefined: napi_get_undefined + }); + /** @__sig ipppp */ + function napi_set_instance_data(env, data, finalize_cb, finalize_hint) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + var envObject = emnapiCtx.envStore.get(env); + data >>>= 0; + finalize_cb >>>= 0; + finalize_hint >>>= 0; + envObject.setInstanceData(data, finalize_cb, finalize_hint); + return envObject.clearLastError(); + } + /** @__sig ipp */ + function napi_get_instance_data(env, data) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + var envObject = emnapiCtx.envStore.get(env); + if (!data) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + data >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = envObject.getInstanceData(); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(data, value, true); + return envObject.clearLastError(); + } + var envMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + napi_get_instance_data: napi_get_instance_data, + napi_set_instance_data: napi_set_instance_data + }); + /** @__sig vpppp */ + function _emnapi_get_last_error_info(env, error_code, engine_error_code, engine_reserved) { + error_code >>>= 0; + engine_error_code >>>= 0; + engine_reserved >>>= 0; + var envObject = emnapiCtx.envStore.get(env); + var lastError = envObject.lastError; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var errorCode = lastError.errorCode; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var engineErrorCode = lastError.engineErrorCode >>> 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var engineReserved = lastError.engineReserved; + engineReserved >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt32(error_code, errorCode, true); + HEAP_DATA_VIEW.setUint32(engine_error_code, engineErrorCode, true); + HEAP_DATA_VIEW.setUint32(engine_reserved, engineReserved, true); + } + /** @__sig ipp */ + function napi_throw(env, error) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!error) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + envObject.tryCatch.setError(emnapiCtx.handleStore.get(error).value); + return envObject.clearLastError(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippp */ + function napi_throw_error(env, code, msg) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!msg) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + code >>>= 0; + msg >>>= 0; + var error = new Error(emnapiString.UTF8ToString(msg, -1)); + if (code) + error.code = emnapiString.UTF8ToString(code, -1); + envObject.tryCatch.setError(error); + return envObject.clearLastError(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippp */ + function napi_throw_type_error(env, code, msg) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!msg) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + code >>>= 0; + msg >>>= 0; + var error = new TypeError(emnapiString.UTF8ToString(msg, -1)); + if (code) + error.code = emnapiString.UTF8ToString(code, -1); + envObject.tryCatch.setError(error); + return envObject.clearLastError(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippp */ + function napi_throw_range_error(env, code, msg) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!msg) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + code >>>= 0; + msg >>>= 0; + var error = new RangeError(emnapiString.UTF8ToString(msg, -1)); + if (code) + error.code = emnapiString.UTF8ToString(code, -1); + envObject.tryCatch.setError(error); + return envObject.clearLastError(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippp */ + function node_api_throw_syntax_error(env, code, msg) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!msg) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + code >>>= 0; + msg >>>= 0; + var error = new SyntaxError(emnapiString.UTF8ToString(msg, -1)); + if (code) + error.code = emnapiString.UTF8ToString(code, -1); + envObject.tryCatch.setError(error); + return envObject.clearLastError(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ipp */ + function napi_is_exception_pending(env, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r = envObject.tryCatch.hasCaught(); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); + return envObject.clearLastError(); + } + /** @__sig ipppp */ + function napi_create_error(env, code, msg, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!msg) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var msgValue = emnapiCtx.handleStore.get(msg).value; + if (typeof msgValue !== 'string') { + return envObject.setLastError(3 /* napi_status.napi_string_expected */); + } + var error = new Error(msgValue); + if (code) { + var codeValue = emnapiCtx.handleStore.get(code).value; + if (typeof codeValue !== 'string') { + return envObject.setLastError(3 /* napi_status.napi_string_expected */); + } + error.code = codeValue; + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = emnapiCtx.addToCurrentScope(error).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + /** @__sig ipppp */ + function napi_create_type_error(env, code, msg, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!msg) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var msgValue = emnapiCtx.handleStore.get(msg).value; + if (typeof msgValue !== 'string') { + return envObject.setLastError(3 /* napi_status.napi_string_expected */); + } + var error = new TypeError(msgValue); + if (code) { + var codeValue = emnapiCtx.handleStore.get(code).value; + if (typeof codeValue !== 'string') { + return envObject.setLastError(3 /* napi_status.napi_string_expected */); + } + error.code = codeValue; + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = emnapiCtx.addToCurrentScope(error).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + /** @__sig ipppp */ + function napi_create_range_error(env, code, msg, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!msg) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var msgValue = emnapiCtx.handleStore.get(msg).value; + if (typeof msgValue !== 'string') { + return envObject.setLastError(3 /* napi_status.napi_string_expected */); + } + var error = new RangeError(msgValue); + if (code) { + var codeValue = emnapiCtx.handleStore.get(code).value; + if (typeof codeValue !== 'string') { + return envObject.setLastError(3 /* napi_status.napi_string_expected */); + } + error.code = codeValue; + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = emnapiCtx.addToCurrentScope(error).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + /** @__sig ipppp */ + function node_api_create_syntax_error(env, code, msg, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!msg) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var msgValue = emnapiCtx.handleStore.get(msg).value; + if (typeof msgValue !== 'string') { + return envObject.setLastError(3 /* napi_status.napi_string_expected */); + } + var error = new SyntaxError(msgValue); + if (code) { + var codeValue = emnapiCtx.handleStore.get(code).value; + if (typeof codeValue !== 'string') { + return envObject.setLastError(3 /* napi_status.napi_string_expected */); + } + error.code = codeValue; + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = emnapiCtx.addToCurrentScope(error).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + /** @__sig ipp */ + function napi_get_and_clear_last_exception(env, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (!envObject.tryCatch.hasCaught()) { + HEAP_DATA_VIEW.setUint32(result, 1, true); // ID_UNDEFINED + return envObject.clearLastError(); + } + else { + var err = envObject.tryCatch.exception(); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = envObject.ensureHandleId(err); + HEAP_DATA_VIEW.setUint32(result, value, true); + envObject.tryCatch.reset(); + } + return envObject.clearLastError(); + } + /** @__sig vpppp */ + function napi_fatal_error(location, location_len, message, message_len) { + location >>>= 0; + location_len >>>= 0; + message >>>= 0; + message_len >>>= 0; + var locationStr = emnapiString.UTF8ToString(location, location_len); + var messageStr = emnapiString.UTF8ToString(message, message_len); + if (emnapiNodeBinding) { + emnapiNodeBinding.napi.fatalError(locationStr, messageStr); + } + else { + abort('FATAL ERROR: ' + locationStr + ' ' + messageStr); + } + } + /** @__sig ipp */ + function napi_fatal_exception(env, err) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!err) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var error = envObject.ctx.handleStore.get(err); + try { + envObject.triggerFatalException(error.value); + } + catch (_) { + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + return envObject.clearLastError(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + var errorMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + _emnapi_get_last_error_info: _emnapi_get_last_error_info, + napi_create_error: napi_create_error, + napi_create_range_error: napi_create_range_error, + napi_create_type_error: napi_create_type_error, + napi_fatal_error: napi_fatal_error, + napi_fatal_exception: napi_fatal_exception, + napi_get_and_clear_last_exception: napi_get_and_clear_last_exception, + napi_is_exception_pending: napi_is_exception_pending, + napi_throw: napi_throw, + napi_throw_error: napi_throw_error, + napi_throw_range_error: napi_throw_range_error, + napi_throw_type_error: napi_throw_type_error, + node_api_create_syntax_error: node_api_create_syntax_error, + node_api_throw_syntax_error: node_api_throw_syntax_error + }); + /** @__sig ipppppp */ + function _emnapi_create_function(env, utf8name, length, cb, data, result) { + length >>>= 0; + var envObject = emnapiCtx.envStore.get(env); + var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data); + if (fresult.status !== 0 /* napi_status.napi_ok */) + return envObject.setLastError(fresult.status); + var f = fresult.f; + var valueHandle = emnapiCtx.addToCurrentScope(f); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = valueHandle.id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + /** @__sig ipppppp */ + function napi_create_function(env, utf8name, length, cb, data, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!cb) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + return _emnapi_create_function(env, utf8name, length, cb, data, result); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ipppppp */ + function napi_get_cb_info(env, cbinfo, argc, argv, this_arg, data) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + var envObject = emnapiCtx.envStore.get(env); + if (!cbinfo) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo; + argc >>>= 0; + argv >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (argv) { + if (!argc) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var argcValue = HEAP_DATA_VIEW.getUint32(argc, true); + argcValue >>>= 0; + var len = cbinfoValue.args.length; + var arrlen = argcValue < len ? argcValue : len; + var i = 0; + for (; i < arrlen; i++) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var argVal = envObject.ensureHandleId(cbinfoValue.args[i]); + HEAP_DATA_VIEW.setUint32(argv + i * 4, argVal, true); + } + if (i < argcValue) { + for (; i < argcValue; i++) { + HEAP_DATA_VIEW.setUint32(argv + i * 4, 1, true); + } + } + } + if (argc) { + HEAP_DATA_VIEW.setUint32(argc, cbinfoValue.args.length, true); + } + if (this_arg) { + this_arg >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v = envObject.ensureHandleId(cbinfoValue.thiz); + HEAP_DATA_VIEW.setUint32(this_arg, v, true); + } + if (data) { + data >>>= 0; + HEAP_DATA_VIEW.setUint32(data, cbinfoValue.data, true); + } + return envObject.clearLastError(); + } + /** @__sig ipppppp */ + function napi_call_function(env, recv, func, argc, argv, result) { + var i = 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!recv) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + argc >>>= 0; + argv >>>= 0; + result >>>= 0; + argc = argc >>> 0; + if (argc > 0) { + if (!argv) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var v8recv = emnapiCtx.handleStore.get(recv).value; + if (!func) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var v8func = emnapiCtx.handleStore.get(func).value; + if (typeof v8func !== 'function') + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var args = []; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + for (; i < argc; i++) { + var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); + args.push(emnapiCtx.handleStore.get(argVal).value); + } + var ret = v8func.apply(v8recv, args); + if (result) { + v = envObject.ensureHandleId(ret); + HEAP_DATA_VIEW.setUint32(result, v, true); + } + return envObject.clearLastError(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippppp */ + function napi_new_instance(env, constructor, argc, argv, result) { + var i; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!constructor) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + argc >>>= 0; + argv >>>= 0; + result >>>= 0; + argc = argc >>> 0; + if (argc > 0) { + if (!argv) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var Ctor = emnapiCtx.handleStore.get(constructor).value; + if (typeof Ctor !== 'function') + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var ret = void 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (emnapiCtx.feature.supportReflect) { + var argList = Array(argc); + for (i = 0; i < argc; i++) { + var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); + argList[i] = emnapiCtx.handleStore.get(argVal).value; + } + ret = Reflect.construct(Ctor, argList, Ctor); + } + else { + var args = Array(argc + 1); + args[0] = undefined; + for (i = 0; i < argc; i++) { + var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); + args[i + 1] = emnapiCtx.handleStore.get(argVal).value; + } + var BoundCtor = Ctor.bind.apply(Ctor, args); + ret = new BoundCtor(); + } + if (result) { + v = envObject.ensureHandleId(ret); + HEAP_DATA_VIEW.setUint32(result, v, true); + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippp */ + function napi_get_new_target(env, cbinfo, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!cbinfo) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo; + var thiz = cbinfoValue.thiz, fn = cbinfoValue.fn; + // eslint-disable-next-line @typescript-eslint/prefer-optional-chain, @typescript-eslint/no-unused-vars + var value = thiz == null || thiz.constructor == null + ? 0 + : thiz instanceof fn + ? envObject.ensureHandleId(thiz.constructor) + : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + var functionMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + _emnapi_create_function: _emnapi_create_function, + napi_call_function: napi_call_function, + napi_create_function: napi_create_function, + napi_get_cb_info: napi_get_cb_info, + napi_get_new_target: napi_get_new_target, + napi_new_instance: napi_new_instance + }); + /** @__sig ipp */ + function napi_open_handle_scope(env, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var scope = emnapiCtx.openScope(envObject); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, scope.id, true); + return envObject.clearLastError(); + } + /** @__sig ipp */ + function napi_close_handle_scope(env, scope) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!scope) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if ((envObject.openHandleScopes === 0)) { + return 13 /* napi_status.napi_handle_scope_mismatch */; + } + emnapiCtx.closeScope(envObject); + return envObject.clearLastError(); + } + /** @__sig ipp */ + function napi_open_escapable_handle_scope(env, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var scope = emnapiCtx.openScope(envObject); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, scope.id, true); + return envObject.clearLastError(); + } + /** @__sig ipp */ + function napi_close_escapable_handle_scope(env, scope) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!scope) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if ((envObject.openHandleScopes === 0)) { + return 13 /* napi_status.napi_handle_scope_mismatch */; + } + emnapiCtx.closeScope(envObject); + return envObject.clearLastError(); + } + /** @__sig ipppp */ + function napi_escape_handle(env, scope, escapee, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!scope) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!escapee) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var scopeObject = emnapiCtx.scopeStore.get(scope); + if (!scopeObject.escapeCalled()) { + escapee >>>= 0; + result >>>= 0; + var newHandle = scopeObject.escape(escapee); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = newHandle ? newHandle.id : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + return envObject.setLastError(12 /* napi_status.napi_escape_called_twice */); + } + /** @__sig ippip */ + function napi_create_reference(env, value, initial_refcount, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + if (envObject.moduleApiVersion < 10) { + if (!(handle.isObject() || handle.isFunction() || handle.isSymbol())) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var ref = emnapiCtx.createReference(envObject, handle.id, initial_refcount >>> 0, 1 /* ReferenceOwnership.kUserland */); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, ref.id, true); + return envObject.clearLastError(); + } + /** @__sig ipp */ + function napi_delete_reference(env, ref) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + var envObject = emnapiCtx.envStore.get(env); + if (!ref) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + emnapiCtx.refStore.get(ref).dispose(); + return envObject.clearLastError(); + } + /** @__sig ippp */ + function napi_reference_ref(env, ref, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!ref) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var count = emnapiCtx.refStore.get(ref).ref(); + if (result) { + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, count, true); + } + return envObject.clearLastError(); + } + /** @__sig ippp */ + function napi_reference_unref(env, ref, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!ref) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var reference = emnapiCtx.refStore.get(ref); + var refcount = reference.refcount(); + if (refcount === 0) { + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var count = reference.unref(); + if (result) { + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, count, true); + } + return envObject.clearLastError(); + } + /** @__sig ippp */ + function napi_get_reference_value(env, ref, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!ref) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var reference = emnapiCtx.refStore.get(ref); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var handleId = reference.get(envObject); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, handleId, true); + return envObject.clearLastError(); + } + /** @__sig ippp */ + function napi_add_env_cleanup_hook(env, fun, arg) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + var envObject = emnapiCtx.envStore.get(env); + if (!fun) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + fun >>>= 0; + arg >>>= 0; + emnapiCtx.addCleanupHook(envObject, fun, arg); + return 0 /* napi_status.napi_ok */; + } + /** @__sig ippp */ + function napi_remove_env_cleanup_hook(env, fun, arg) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + var envObject = emnapiCtx.envStore.get(env); + if (!fun) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + fun >>>= 0; + arg >>>= 0; + emnapiCtx.removeCleanupHook(envObject, fun, arg); + return 0 /* napi_status.napi_ok */; + } + /** @__sig vp */ + function _emnapi_env_ref(env) { + var envObject = emnapiCtx.envStore.get(env); + envObject.ref(); + } + /** @__sig vp */ + function _emnapi_env_unref(env) { + var envObject = emnapiCtx.envStore.get(env); + envObject.unref(); + } + var lifeMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + _emnapi_env_ref: _emnapi_env_ref, + _emnapi_env_unref: _emnapi_env_unref, + napi_add_env_cleanup_hook: napi_add_env_cleanup_hook, + napi_close_escapable_handle_scope: napi_close_escapable_handle_scope, + napi_close_handle_scope: napi_close_handle_scope, + napi_create_reference: napi_create_reference, + napi_delete_reference: napi_delete_reference, + napi_escape_handle: napi_escape_handle, + napi_get_reference_value: napi_get_reference_value, + napi_open_escapable_handle_scope: napi_open_escapable_handle_scope, + napi_open_handle_scope: napi_open_handle_scope, + napi_reference_ref: napi_reference_ref, + napi_reference_unref: napi_reference_unref, + napi_remove_env_cleanup_hook: napi_remove_env_cleanup_hook + }); + /** @__sig ippi */ + function _emnapi_get_filename(env, buf, len) { + var envObject = emnapiCtx.envStore.get(env); + var filename = envObject.filename; + if (!buf) { + return emnapiString.lengthBytesUTF8(filename); + } + return emnapiString.stringToUTF8(filename, buf, len); + } + var miscellaneousMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + _emnapi_get_filename: _emnapi_get_filename + }); + /** @__sig ippp */ + function napi_create_promise(env, deferred, promise) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var deferredObjectId, value; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!deferred) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!promise) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + var p = new Promise(function (resolve, reject) { + var deferredObject = emnapiCtx.createDeferred({ resolve: resolve, reject: reject }); + deferredObjectId = deferredObject.id; + deferred >>>= 0; + HEAP_DATA_VIEW.setUint32(deferred, deferredObjectId, true); + }); + promise >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + value = emnapiCtx.addToCurrentScope(p).id; + HEAP_DATA_VIEW.setUint32(promise, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippp */ + function napi_resolve_deferred(env, deferred, resolution) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!deferred) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!resolution) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var deferredObject = emnapiCtx.deferredStore.get(deferred); + deferredObject.resolve(emnapiCtx.handleStore.get(resolution).value); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippp */ + function napi_reject_deferred(env, deferred, resolution) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!deferred) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!resolution) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var deferredObject = emnapiCtx.deferredStore.get(deferred); + deferredObject.reject(emnapiCtx.handleStore.get(resolution).value); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippp */ + function napi_is_promise(env, value, is_promise) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!is_promise) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(value); + is_promise >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r = h.isPromise() ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(is_promise, r, true); + return envObject.clearLastError(); + } + var promiseMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + napi_create_promise: napi_create_promise, + napi_is_promise: napi_is_promise, + napi_reject_deferred: napi_reject_deferred, + napi_resolve_deferred: napi_resolve_deferred + }); + /** @__sig ippiiip */ + function napi_get_all_property_names(env, object, key_mode, key_filter, key_conversion, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(object); + if (h.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var obj = void 0; + try { + obj = h.isObject() || h.isFunction() ? h.value : Object(h.value); + } + catch (_) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + if (key_mode !== 0 /* napi_key_collection_mode.napi_key_include_prototypes */ && key_mode !== 1 /* napi_key_collection_mode.napi_key_own_only */) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + if (key_conversion !== 0 /* napi_key_conversion.napi_key_keep_numbers */ && key_conversion !== 1 /* napi_key_conversion.napi_key_numbers_to_strings */) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var props = []; + var names = void 0; + var symbols = void 0; + var i = void 0; + var own = true; + var integerIndiceRegex = /^(0|[1-9][0-9]*)$/; + do { + names = Object.getOwnPropertyNames(obj); + symbols = Object.getOwnPropertySymbols(obj); + for (i = 0; i < names.length; i++) { + props.push({ + name: integerIndiceRegex.test(names[i]) ? Number(names[i]) : names[i], + desc: Object.getOwnPropertyDescriptor(obj, names[i]), + own: own + }); + } + for (i = 0; i < symbols.length; i++) { + props.push({ + name: symbols[i], + desc: Object.getOwnPropertyDescriptor(obj, symbols[i]), + own: own + }); + } + if (key_mode === 1 /* napi_key_collection_mode.napi_key_own_only */) { + break; + } + obj = Object.getPrototypeOf(obj); + own = false; + } while (obj); + var ret = []; + var addName = function (ret, name, key_filter, conversion_mode) { + if (ret.indexOf(name) !== -1) + return; + if (conversion_mode === 0 /* napi_key_conversion.napi_key_keep_numbers */) { + ret.push(name); + } + else if (conversion_mode === 1 /* napi_key_conversion.napi_key_numbers_to_strings */) { + var realName = typeof name === 'number' ? String(name) : name; + if (typeof realName === 'string') { + if (!(key_filter & 8 /* napi_key_filter.napi_key_skip_strings */)) { + ret.push(realName); + } + } + else { + ret.push(realName); + } + } + }; + for (i = 0; i < props.length; i++) { + var prop = props[i]; + var name_1 = prop.name; + var desc = prop.desc; + if (key_filter === 0 /* napi_key_filter.napi_key_all_properties */) { + addName(ret, name_1, key_filter, key_conversion); + } + else { + if (key_filter & 8 /* napi_key_filter.napi_key_skip_strings */ && typeof name_1 === 'string') { + continue; + } + if (key_filter & 16 /* napi_key_filter.napi_key_skip_symbols */ && typeof name_1 === 'symbol') { + continue; + } + var shouldAdd = true; + switch (key_filter & 7) { + case 1 /* napi_key_filter.napi_key_writable */: { + shouldAdd = Boolean(desc.writable); + break; + } + case 2 /* napi_key_filter.napi_key_enumerable */: { + shouldAdd = Boolean(desc.enumerable); + break; + } + case (1 /* napi_key_filter.napi_key_writable */ | 2 /* napi_key_filter.napi_key_enumerable */): { + shouldAdd = Boolean(desc.writable && desc.enumerable); + break; + } + case 4 /* napi_key_filter.napi_key_configurable */: { + shouldAdd = Boolean(desc.configurable); + break; + } + case (4 /* napi_key_filter.napi_key_configurable */ | 1 /* napi_key_filter.napi_key_writable */): { + shouldAdd = Boolean(desc.configurable && desc.writable); + break; + } + case (4 /* napi_key_filter.napi_key_configurable */ | 2 /* napi_key_filter.napi_key_enumerable */): { + shouldAdd = Boolean(desc.configurable && desc.enumerable); + break; + } + case (4 /* napi_key_filter.napi_key_configurable */ | 2 /* napi_key_filter.napi_key_enumerable */ | 1 /* napi_key_filter.napi_key_writable */): { + shouldAdd = Boolean(desc.configurable && desc.enumerable && desc.writable); + break; + } + } + if (shouldAdd) { + addName(ret, name_1, key_filter, key_conversion); + } + } + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + value = emnapiCtx.addToCurrentScope(ret).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippp */ + function napi_get_property_names(env, object, result) { + return napi_get_all_property_names(env, object, 0 /* napi_key_collection_mode.napi_key_include_prototypes */, 2 /* napi_key_filter.napi_key_enumerable */ | 16 /* napi_key_filter.napi_key_skip_symbols */, 1 /* napi_key_conversion.napi_key_numbers_to_strings */, result); + } + /** @__sig ipppp */ + function napi_set_property(env, object, key, value) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!key) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(object); + if (!(h.isObject() || h.isFunction())) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + h.value[emnapiCtx.handleStore.get(key).value] = emnapiCtx.handleStore.get(value).value; + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ipppp */ + function napi_has_property(env, object, key, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!key) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(object); + if (h.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var v = void 0; + try { + v = h.isObject() || h.isFunction() ? h.value : Object(h.value); + } + catch (_) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + result >>>= 0; + r = (emnapiCtx.handleStore.get(key).value in v) ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ipppp */ + function napi_get_property(env, object, key, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!key) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(object); + if (h.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var v = void 0; + try { + v = h.isObject() || h.isFunction() ? h.value : Object(h.value); + } + catch (_) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + value = envObject.ensureHandleId(v[emnapiCtx.handleStore.get(key).value]); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ipppp */ + function napi_delete_property(env, object, key, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!key) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(object); + if (!(h.isObject() || h.isFunction())) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + var propertyKey = emnapiCtx.handleStore.get(key).value; + if (emnapiCtx.feature.supportReflect) { + r = Reflect.deleteProperty(h.value, propertyKey); + } + else { + try { + r = delete h.value[propertyKey]; + } + catch (_) { + r = false; + } + } + if (result) { + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ipppp */ + function napi_has_own_property(env, object, key, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!key) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(object); + if (h.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var v = void 0; + try { + v = h.isObject() || h.isFunction() ? h.value : Object(h.value); + } + catch (_) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + var prop = emnapiCtx.handleStore.get(key).value; + if (typeof prop !== 'string' && typeof prop !== 'symbol') { + return envObject.setLastError(4 /* napi_status.napi_name_expected */); + } + r = Object.prototype.hasOwnProperty.call(v, emnapiCtx.handleStore.get(key).value); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ipppp */ + function napi_set_named_property(env, object, cname, value) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(object); + if (!(h.isObject() || h.isFunction())) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + if (!cname) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + cname >>>= 0; + emnapiCtx.handleStore.get(object).value[emnapiString.UTF8ToString(cname, -1)] = emnapiCtx.handleStore.get(value).value; + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ipppp */ + function napi_has_named_property(env, object, utf8name, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!utf8name) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var h = emnapiCtx.handleStore.get(object); + if (h.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var v = void 0; + try { + v = h.isObject() || h.isFunction() ? h.value : Object(h.value); + } + catch (_) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + utf8name >>>= 0; + result >>>= 0; + r = emnapiString.UTF8ToString(utf8name, -1) in v; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ipppp */ + function napi_get_named_property(env, object, utf8name, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!utf8name) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var h = emnapiCtx.handleStore.get(object); + if (h.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var v = void 0; + try { + v = h.isObject() || h.isFunction() ? h.value : Object(h.value); + } + catch (_) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + utf8name >>>= 0; + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + value = envObject.ensureHandleId(v[emnapiString.UTF8ToString(utf8name, -1)]); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippip */ + function napi_set_element(env, object, index, value) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(object); + if (!(h.isObject() || h.isFunction())) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + h.value[index >>> 0] = emnapiCtx.handleStore.get(value).value; + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippip */ + function napi_has_element(env, object, index, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(object); + if (h.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var v = void 0; + try { + v = h.isObject() || h.isFunction() ? h.value : Object(h.value); + } + catch (_) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + result >>>= 0; + r = ((index >>> 0) in v) ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippip */ + function napi_get_element(env, object, index, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(object); + if (h.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var v = void 0; + try { + v = h.isObject() || h.isFunction() ? h.value : Object(h.value); + } + catch (_) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + value = envObject.ensureHandleId(v[index >>> 0]); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippip */ + function napi_delete_element(env, object, index, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(object); + if (!(h.isObject() || h.isFunction())) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + if (emnapiCtx.feature.supportReflect) { + r = Reflect.deleteProperty(h.value, index >>> 0); + } + else { + try { + r = delete h.value[index >>> 0]; + } + catch (_) { + r = false; + } + } + if (result) { + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ipppp */ + function napi_define_properties(env, object, property_count, properties) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var propPtr, attributes; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + properties >>>= 0; + property_count >>>= 0; + property_count = property_count >>> 0; + if (property_count > 0) { + if (!properties) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(object); + var maybeObject = h.value; + if (!(h.isObject() || h.isFunction())) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + var propertyName = void 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + for (var i = 0; i < property_count; i++) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + propPtr = properties + (i * (4 * 8)); + var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true); + var name_2 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true); + var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true); + var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true); + var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true); + var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true); + attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true); + attributes >>>= 0; + var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true); + if (utf8Name) { + propertyName = emnapiString.UTF8ToString(utf8Name, -1); + } + else { + if (!name_2) { + return envObject.setLastError(4 /* napi_status.napi_name_expected */); + } + propertyName = emnapiCtx.handleStore.get(name_2).value; + if (typeof propertyName !== 'string' && typeof propertyName !== 'symbol') { + return envObject.setLastError(4 /* napi_status.napi_name_expected */); + } + } + emnapiDefineProperty(envObject, maybeObject, propertyName, method, getter, setter, value, attributes, data); + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ipp */ + function napi_object_freeze(env, object) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(object); + var maybeObject = h.value; + if (!(h.isObject() || h.isFunction())) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + Object.freeze(maybeObject); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ipp */ + function napi_object_seal(env, object) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(object); + var maybeObject = h.value; + if (!(h.isObject() || h.isFunction())) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + Object.seal(maybeObject); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + var propertyMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + napi_define_properties: napi_define_properties, + napi_delete_element: napi_delete_element, + napi_delete_property: napi_delete_property, + napi_get_all_property_names: napi_get_all_property_names, + napi_get_element: napi_get_element, + napi_get_named_property: napi_get_named_property, + napi_get_property: napi_get_property, + napi_get_property_names: napi_get_property_names, + napi_has_element: napi_has_element, + napi_has_named_property: napi_has_named_property, + napi_has_own_property: napi_has_own_property, + napi_has_property: napi_has_property, + napi_object_freeze: napi_object_freeze, + napi_object_seal: napi_object_seal, + napi_set_element: napi_set_element, + napi_set_named_property: napi_set_named_property, + napi_set_property: napi_set_property + }); + /** @__sig ippp */ + function napi_run_script(env, script, result) { + var status; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!script) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var v8Script = emnapiCtx.handleStore.get(script); + if (!v8Script.isString()) { + return envObject.setLastError(3 /* napi_status.napi_string_expected */); + } + var g = emnapiCtx.handleStore.get(5 /* GlobalHandle.GLOBAL */).value; + var ret = g.eval(v8Script.value); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + value = envObject.ensureHandleId(ret); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + status = envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + return status; + } + var scriptMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + napi_run_script: napi_run_script + }); + /** @__sig ippp */ + function napi_typeof(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var v = emnapiCtx.handleStore.get(value); + result >>>= 0; + var r; + if (v.isNumber()) { + r = 3 /* napi_valuetype.napi_number */; + } + else if (v.isBigInt()) { + r = 9 /* napi_valuetype.napi_bigint */; + } + else if (v.isString()) { + r = 4 /* napi_valuetype.napi_string */; + } + else if (v.isFunction()) { + // This test has to come before IsObject because IsFunction + // implies IsObject + r = 7 /* napi_valuetype.napi_function */; + } + else if (v.isExternal()) { + // This test has to come before IsObject because IsExternal + // implies IsObject + r = 8 /* napi_valuetype.napi_external */; + } + else if (v.isObject()) { + r = 6 /* napi_valuetype.napi_object */; + } + else if (v.isBoolean()) { + r = 2 /* napi_valuetype.napi_boolean */; + } + else if (v.isUndefined()) { + r = 0 /* napi_valuetype.napi_undefined */; + } + else if (v.isSymbol()) { + r = 5 /* napi_valuetype.napi_symbol */; + } + else if (v.isNull()) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + r = 1 /* napi_valuetype.napi_null */; + } + else { + // Should not get here unless V8 has added some new kind of value. + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt32(result, r, true); + return envObject.clearLastError(); + } + /** @__sig ippp */ + function napi_coerce_to_bool(env, value, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + result >>>= 0; + v = handle.value ? 4 /* GlobalHandle.TRUE */ : 3 /* GlobalHandle.FALSE */; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippp */ + function napi_coerce_to_number(env, value, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + if (handle.isBigInt()) { + throw new TypeError('Cannot convert a BigInt value to a number'); + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + v = emnapiCtx.addToCurrentScope(Number(handle.value)).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippp */ + function napi_coerce_to_object(env, value, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + if (handle.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + v = envObject.ensureHandleId(Object(handle.value)); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippp */ + function napi_coerce_to_string(env, value, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + if (handle.isSymbol()) { + throw new TypeError('Cannot convert a Symbol value to a string'); + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + v = emnapiCtx.addToCurrentScope(String(handle.value)).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ipppp */ + function napi_instanceof(env, object, constructor, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!constructor) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, 0, true); + var ctor = emnapiCtx.handleStore.get(constructor); + if (!ctor.isFunction()) { + return envObject.setLastError(5 /* napi_status.napi_function_expected */); + } + var val = emnapiCtx.handleStore.get(object).value; + var ret = val instanceof ctor.value; + r = ret ? 1 : 0; + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippp */ + function napi_is_array(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(value); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r = h.isArray() ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + /** @__sig ippp */ + function napi_is_arraybuffer(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(value); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r = h.isArrayBuffer() ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + /** @__sig ippp */ + function node_api_is_sharedarraybuffer(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(value); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r = ((typeof SharedArrayBuffer === 'function' && h.value instanceof SharedArrayBuffer) || + (Object.prototype.toString.call(h.value) === '[object SharedArrayBuffer]')) + ? 1 + : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + /** @__sig ippp */ + function napi_is_date(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(value); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r = h.isDate() ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + /** @__sig ippp */ + function napi_is_error(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var val = emnapiCtx.handleStore.get(value).value; + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r = (val instanceof Error) ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + /** @__sig ippp */ + function napi_is_typedarray(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(value); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r = h.isTypedArray() ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + /** @__sig ippp */ + function napi_is_buffer(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(value); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r = h.isBuffer(emnapiCtx.feature.Buffer) ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + /** @__sig ippp */ + function napi_is_dataview(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(value); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r = h.isDataView() ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + /** @__sig ipppp */ + function napi_strict_equals(env, lhs, rhs, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!lhs) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!rhs) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var lv = emnapiCtx.handleStore.get(lhs).value; + var rv = emnapiCtx.handleStore.get(rhs).value; + result >>>= 0; + r = (lv === rv) ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ipp */ + function napi_detach_arraybuffer(env, arraybuffer) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!arraybuffer) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var value = emnapiCtx.handleStore.get(arraybuffer).value; + if (!(value instanceof ArrayBuffer)) { + if (typeof SharedArrayBuffer === 'function' && (value instanceof SharedArrayBuffer)) { + return envObject.setLastError(20 /* napi_status.napi_detachable_arraybuffer_expected */); + } + return envObject.setLastError(19 /* napi_status.napi_arraybuffer_expected */); + } + try { + var MessageChannel_1 = emnapiCtx.feature.MessageChannel; + var messageChannel = new MessageChannel_1(); + messageChannel.port1.postMessage(value, [value]); + } + catch (_) { + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + return envObject.clearLastError(); + } + /** @__sig ippp */ + function napi_is_detached_arraybuffer(env, arraybuffer, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!arraybuffer) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(arraybuffer); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (h.isArrayBuffer() && h.value.byteLength === 0) { + try { + // eslint-disable-next-line no-new + new Uint8Array(h.value); + } + catch (_) { + HEAP_DATA_VIEW.setInt8(result, 1, true); + return envObject.getReturnStatus(); + } + } + HEAP_DATA_VIEW.setInt8(result, 0, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + var valueOperationMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + napi_coerce_to_bool: napi_coerce_to_bool, + napi_coerce_to_number: napi_coerce_to_number, + napi_coerce_to_object: napi_coerce_to_object, + napi_coerce_to_string: napi_coerce_to_string, + napi_detach_arraybuffer: napi_detach_arraybuffer, + napi_instanceof: napi_instanceof, + napi_is_array: napi_is_array, + napi_is_arraybuffer: napi_is_arraybuffer, + napi_is_buffer: napi_is_buffer, + napi_is_dataview: napi_is_dataview, + napi_is_date: napi_is_date, + napi_is_detached_arraybuffer: napi_is_detached_arraybuffer, + napi_is_error: napi_is_error, + napi_is_typedarray: napi_is_typedarray, + napi_strict_equals: napi_strict_equals, + napi_typeof: napi_typeof, + node_api_is_sharedarraybuffer: node_api_is_sharedarraybuffer + }); + /** @__sig ipp */ + function napi_get_version(env, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + var envObject = emnapiCtx.envStore.get(env); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var NODE_API_SUPPORTED_VERSION_MAX = 10 /* Version.NODE_API_SUPPORTED_VERSION_MAX */; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, NODE_API_SUPPORTED_VERSION_MAX, true); + return envObject.clearLastError(); + } + var versionMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + napi_get_version: napi_get_version + }); + emnapiAWST.init(); + emnapiExternalMemory.init(); + emnapiString.init(); + emnapiTSFN.init(); + PThread.init(); + napiModule.emnapi.syncMemory = $emnapiSyncMemory; + napiModule.emnapi.getMemoryAddress = $emnapiGetMemoryAddress; + function addImports(mod) { + var keys = Object.keys(mod); + for (var i = 0; i < keys.length; ++i) { + var k = keys[i]; + if (k.indexOf('$') === 0) + continue; + if (k.indexOf('emnapi_') === 0) { + napiModule.imports.emnapi[k] = mod[k]; + } + else if (k.indexOf('_emnapi_') === 0 || k === 'napi_set_last_error' || k === 'napi_clear_last_error') { + napiModule.imports.env[k] = mod[k]; + } + else { + napiModule.imports.napi[k] = mod[k]; + } + } + } + addImports(asyncMod); + addImports(memoryMod); + addImports(asyncWorkMod); + addImports(utilMod); + addImports(convert2cMod); + addImports(convert2napiMod); + addImports(createMod); + addImports(globalMod); + addImports(wrapMod); + addImports(envMod); + addImports(emnapiMod); + addImports(errorMod); + addImports(functionMod); + addImports(lifeMod); + addImports(miscellaneousMod); + addImports(nodeMod); + addImports(promiseMod); + addImports(propertyMod); + addImports(scriptMod); + addImports(valueOperationMod); + addImports(versionMod); + napiModule.imports.napi.napi_create_threadsafe_function = napi_create_threadsafe_function; + napiModule.imports.napi.napi_get_threadsafe_function_context = napi_get_threadsafe_function_context; + napiModule.imports.napi.napi_call_threadsafe_function = napi_call_threadsafe_function; + napiModule.imports.napi.napi_acquire_threadsafe_function = napi_acquire_threadsafe_function; + napiModule.imports.napi.napi_release_threadsafe_function = napi_release_threadsafe_function; + napiModule.imports.napi.napi_unref_threadsafe_function = napi_unref_threadsafe_function; + napiModule.imports.napi.napi_ref_threadsafe_function = napi_ref_threadsafe_function; + return napiModule; + })(); + return napiModule; +} + +function loadNapiModuleImpl(loadFn, userNapiModule, wasmInput, options) { + // eslint-disable-next-line @typescript-eslint/consistent-type-assertions + options = options !== null && options !== void 0 ? options : {}; + var getMemory = options.getMemory; + var getTable = options.getTable; + var beforeInit = options.beforeInit; + if (getMemory != null && typeof getMemory !== 'function') { + throw new TypeError('options.getMemory is not a function'); + } + if (getTable != null && typeof getTable !== 'function') { + throw new TypeError('options.getTable is not a function'); + } + if (beforeInit != null && typeof beforeInit !== 'function') { + throw new TypeError('options.beforeInit is not a function'); + } + var napiModule; + var isLoad = typeof userNapiModule === 'object' && userNapiModule !== null; + if (isLoad) { + if (userNapiModule.loaded) { + throw new Error('napiModule has already loaded'); + } + napiModule = userNapiModule; + } + else { + napiModule = createNapiModule(options); + } + var wasi = options.wasi; + var wasiThreads; + var importObject = { + env: napiModule.imports.env, + napi: napiModule.imports.napi, + emnapi: napiModule.imports.emnapi + }; + if (wasi) { + wasiThreads = new WASIThreads(napiModule.childThread + ? { + wasi: wasi, + childThread: true, + postMessage: napiModule.postMessage + } + : { + wasi: wasi, + threadManager: napiModule.PThread, + waitThreadStart: napiModule.waitThreadStart + }); + Object.assign(importObject, typeof wasi.getImportObject === 'function' + ? wasi.getImportObject() + : { wasi_snapshot_preview1: wasi.wasiImport }); + Object.assign(importObject, wasiThreads.getImportObject()); + } + var overwriteImports = options.overwriteImports; + if (typeof overwriteImports === 'function') { + var newImportObject = overwriteImports(importObject); + if (typeof newImportObject === 'object' && newImportObject !== null) { + importObject = newImportObject; + } + } + return loadFn(wasmInput, importObject, function (err, source) { + if (err) { + throw err; + } + var originalInstance = source.instance; + var instance = originalInstance; + var originalExports = originalInstance.exports; + var exportMemory = 'memory' in originalExports; + var importMemory = 'memory' in importObject.env; + var memory = getMemory + ? getMemory(originalExports) + : exportMemory + ? originalExports.memory + : importMemory + ? importObject.env.memory + : undefined; + if (!memory) { + throw new Error('memory is neither exported nor imported'); + } + var table = getTable ? getTable(originalExports) : originalExports.__indirect_function_table; + if (wasi && !exportMemory) { + var exports_1 = Object.create(null); + Object.assign(exports_1, originalExports, { memory: memory }); + instance = { exports: exports_1 }; + } + var module = source.module; + if (wasi) { + instance = wasiThreads.initialize(instance, module, memory); + } + else { + napiModule.PThread.setup(module, memory); + } + var emnapiInit = function () { + if (beforeInit) { + beforeInit({ + instance: originalInstance, + module: module + }); + } + napiModule.init({ + instance: instance, + module: module, + memory: memory, + table: table + }); + var ret = { + instance: originalInstance, + module: module, + usedInstance: instance + }; + if (!isLoad) { + ret.napiModule = napiModule; + } + return ret; + }; + if (napiModule.PThread.shouldPreloadWorkers()) { + var poolReady = napiModule.PThread.loadWasmModuleToAllWorkers(); + if (loadFn === loadCallback) { + return poolReady.then(emnapiInit); + } + else { + throw new Error('Synchronous loading is not supported with worker pool (reuseWorker.size > 0)'); + } + } + return emnapiInit(); + }); +} +function loadCallback(wasmInput, importObject, callback) { + return load(wasmInput, importObject).then(function (source) { + return callback(null, source); + }, function (err) { + return callback(err); + }); +} +function loadSyncCallback(wasmInput, importObject, callback) { + var source; + try { + source = loadSync(wasmInput, importObject); + } + catch (err) { + return callback(err); + } + return callback(null, source); +} +/** @public */ +function loadNapiModule(napiModule, +/** Only support `BufferSource` or `WebAssembly.Module` on Node.js */ +wasmInput, options) { + if (typeof napiModule !== 'object' || napiModule === null) { + throw new TypeError('Invalid napiModule'); + } + return loadNapiModuleImpl(loadCallback, napiModule, wasmInput, options); +} +/** @public */ +function loadNapiModuleSync(napiModule, wasmInput, options) { + if (typeof napiModule !== 'object' || napiModule === null) { + throw new TypeError('Invalid napiModule'); + } + return loadNapiModuleImpl(loadSyncCallback, napiModule, wasmInput, options); +} +/** @public */ +function instantiateNapiModule( +/** Only support `BufferSource` or `WebAssembly.Module` on Node.js */ +wasmInput, options) { + return loadNapiModuleImpl(loadCallback, undefined, wasmInput, options); +} +/** @public */ +function instantiateNapiModuleSync(wasmInput, options) { + return loadNapiModuleImpl(loadSyncCallback, undefined, wasmInput, options); +} + +/** @public */ +var MessageHandler = /*#__PURE__*/ (function (_super) { + __extends(MessageHandler, _super); + function MessageHandler(options) { + var _this = this; + if (typeof options.onLoad !== 'function') { + throw new TypeError('options.onLoad is not a function'); + } + var userOnError = options.onError; + _this = _super.call(this, __assign(__assign({}, options), { onError: function (err, type) { + var _a; + var emnapi_thread_crashed = (_a = _this.instance) === null || _a === void 0 ? void 0 : _a.exports.emnapi_thread_crashed; + if (typeof emnapi_thread_crashed === 'function') { + emnapi_thread_crashed(); + } /* else { + tryWakeUpPthreadJoin(this.instance!) + } */ + if (typeof userOnError === 'function') { + userOnError(err, type); + } + else { + throw err; + } + } })) || this; + _this.napiModule = undefined; + return _this; + } + MessageHandler.prototype.instantiate = function (data) { + var _this = this; + var source = this.onLoad(data); + var then = source.then; + if (typeof then === 'function') { + return source.then(function (result) { + _this.napiModule = result.napiModule; + return result; + }); + } + this.napiModule = source.napiModule; + return source; + }; + MessageHandler.prototype.handle = function (e) { + var _this = this; + var _a; + _super.prototype.handle.call(this, e); + if ((_a = e === null || e === void 0 ? void 0 : e.data) === null || _a === void 0 ? void 0 : _a.__emnapi__) { + var type = e.data.__emnapi__.type; + var payload_1 = e.data.__emnapi__.payload; + try { + if (type === 'async-worker-init') { + this.handleAfterLoad(e, function () { + _this.napiModule.initWorker(payload_1.arg, payload_1.func); + }); + } + } + catch (err) { + this.onError(err, type); + } + } + }; + return MessageHandler; +}(ThreadMessageHandler)); +// function tryWakeUpPthreadJoin (instance: WebAssembly.Instance): void { +// // https://github.com/WebAssembly/wasi-libc/blob/574b88da481569b65a237cb80daf9a2d5aeaf82d/libc-top-half/musl/src/thread/pthread_join.c#L18-L21 +// const pthread_self = instance.exports.pthread_self as () => number +// const memory = instance.exports.memory as WebAssembly.Memory +// if (typeof pthread_self === 'function') { +// const selfThread = pthread_self() +// if (selfThread && memory) { +// // https://github.com/WebAssembly/wasi-libc/blob/574b88da481569b65a237cb80daf9a2d5aeaf82d/libc-top-half/musl/src/internal/pthread_impl.h#L45 +// const detatchState = new Int32Array(memory.buffer, selfThread + 7 * 4 /** detach_state */, 1) +// Atomics.store(detatchState, 0, 0) +// Atomics.notify(detatchState, 0, Infinity) +// } +// } +// } + +var version = "1.10.0"; + +export { MessageHandler, createNapiModule, instantiateNapiModule, instantiateNapiModuleSync, loadNapiModule, loadNapiModuleSync, version }; diff --git a/node_modules/@emnapi/core/dist/emnapi-core.js b/node_modules/@emnapi/core/dist/emnapi-core.js new file mode 100644 index 00000000..05b90339 --- /dev/null +++ b/node_modules/@emnapi/core/dist/emnapi-core.js @@ -0,0 +1,9231 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.emnapiCore = {})); +})(this, (function (exports) { + /* eslint-disable no-undef */ + var _WebAssembly$1 = typeof WebAssembly !== 'undefined' + ? WebAssembly + : typeof WXWebAssembly !== 'undefined' + ? WXWebAssembly + : undefined; + function validateImports(imports) { + if (imports && typeof imports !== 'object') { + throw new TypeError('imports must be an object or undefined'); + } + return true; + } + function load(wasmInput, imports) { + if (!wasmInput) + throw new TypeError('Invalid wasm source'); + validateImports(imports); + imports = imports !== null && imports !== void 0 ? imports : {}; + // Promise + try { + var then = typeof wasmInput === 'object' && wasmInput !== null && 'then' in wasmInput ? wasmInput.then : undefined; + if (typeof then === 'function') { + return then.call(wasmInput, function (input) { return load(input, imports); }); + } + } + catch (_) { } + // BufferSource + if (wasmInput instanceof ArrayBuffer || ArrayBuffer.isView(wasmInput)) { + return _WebAssembly$1.instantiate(wasmInput, imports); + } + // WebAssembly.Module + if (wasmInput instanceof _WebAssembly$1.Module) { + return _WebAssembly$1.instantiate(wasmInput, imports).then(function (instance) { + return { instance: instance, module: wasmInput }; + }); + } + // Response + if (typeof Response !== 'undefined' && wasmInput instanceof Response) { + return wasmInput.arrayBuffer().then(function (buffer) { + return _WebAssembly$1.instantiate(buffer, imports); + }); + } + // string | URL + var inputIsString = typeof wasmInput === 'string'; + if (inputIsString || (typeof URL !== 'undefined' && wasmInput instanceof URL)) { + if (inputIsString && typeof wx !== 'undefined' && typeof __wxConfig !== 'undefined') { + return _WebAssembly$1.instantiate(wasmInput, imports); + } + if (typeof fetch !== 'function') { + throw new TypeError('wasm source can not be a string or URL in this environment'); + } + if (typeof _WebAssembly$1.instantiateStreaming === 'function') { + try { + return _WebAssembly$1.instantiateStreaming(fetch(wasmInput), imports).catch(function () { + return load(fetch(wasmInput), imports); + }); + } + catch (_) { + return load(fetch(wasmInput), imports); + } + } + else { + return load(fetch(wasmInput), imports); + } + } + throw new TypeError('Invalid wasm source'); + } + function loadSync(wasmInput, imports) { + if (!wasmInput) + throw new TypeError('Invalid wasm source'); + validateImports(imports); + imports = imports !== null && imports !== void 0 ? imports : {}; + var module; + if ((wasmInput instanceof ArrayBuffer) || ArrayBuffer.isView(wasmInput)) { + module = new _WebAssembly$1.Module(wasmInput); + } + else if (wasmInput instanceof WebAssembly.Module) { + module = wasmInput; + } + else { + throw new TypeError('Invalid wasm source'); + } + var instance = new _WebAssembly$1.Instance(module, imports); + var source = { instance: instance, module: module }; + return source; + } + + var _WebAssembly = typeof WebAssembly !== 'undefined' + ? WebAssembly + : typeof WXWebAssembly !== 'undefined' + ? WXWebAssembly + : undefined; + var ENVIRONMENT_IS_NODE = typeof process === 'object' && process !== null && + typeof process.versions === 'object' && process.versions !== null && + typeof process.versions.node === 'string'; + function getPostMessage(options) { + return typeof (options === null || options === void 0 ? void 0 : options.postMessage) === 'function' + ? options.postMessage + : typeof postMessage === 'function' + ? postMessage + : undefined; + } + function serizeErrorToBuffer(sab, code, error) { + var i32array = new Int32Array(sab); + Atomics.store(i32array, 0, code); + if (code > 1 && error) { + var name_1 = error.name; + var message = error.message; + var stack = error.stack; + var nameBuffer = new TextEncoder().encode(name_1); + var messageBuffer = new TextEncoder().encode(message); + var stackBuffer = new TextEncoder().encode(stack); + Atomics.store(i32array, 1, nameBuffer.length); + Atomics.store(i32array, 2, messageBuffer.length); + Atomics.store(i32array, 3, stackBuffer.length); + var buffer = new Uint8Array(sab); + buffer.set(nameBuffer, 16); + buffer.set(messageBuffer, 16 + nameBuffer.length); + buffer.set(stackBuffer, 16 + nameBuffer.length + messageBuffer.length); + } + } + function deserizeErrorFromBuffer(sab) { + var _a, _b; + var i32array = new Int32Array(sab); + var status = Atomics.load(i32array, 0); + if (status <= 1) { + return null; + } + var nameLength = Atomics.load(i32array, 1); + var messageLength = Atomics.load(i32array, 2); + var stackLength = Atomics.load(i32array, 3); + var buffer = new Uint8Array(sab); + var nameBuffer = buffer.slice(16, 16 + nameLength); + var messageBuffer = buffer.slice(16 + nameLength, 16 + nameLength + messageLength); + var stackBuffer = buffer.slice(16 + nameLength + messageLength, 16 + nameLength + messageLength + stackLength); + var name = new TextDecoder().decode(nameBuffer); + var message = new TextDecoder().decode(messageBuffer); + var stack = new TextDecoder().decode(stackBuffer); + var ErrorConstructor = (_a = globalThis[name]) !== null && _a !== void 0 ? _a : (name === 'RuntimeError' ? ((_b = _WebAssembly.RuntimeError) !== null && _b !== void 0 ? _b : Error) : Error); + var error = new ErrorConstructor(message); + Object.defineProperty(error, 'stack', { + value: stack, + writable: true, + enumerable: false, + configurable: true + }); + return error; + } + /** @public */ + function isSharedArrayBuffer(value) { + return ((typeof SharedArrayBuffer === 'function' && value instanceof SharedArrayBuffer) || + (Object.prototype.toString.call(value) === '[object SharedArrayBuffer]')); + } + /** @public */ + function isTrapError(e) { + try { + return e instanceof _WebAssembly.RuntimeError; + } + catch (_) { + return false; + } + } + + function createMessage(type, payload) { + return { + __emnapi__: { + type: type, + payload: payload + } + }; + } + + var WASI_THREADS_MAX_TID = 0x1FFFFFFF; + function checkSharedWasmMemory(wasmMemory) { + if (wasmMemory) { + if (!isSharedArrayBuffer(wasmMemory.buffer)) { + throw new Error('Multithread features require shared wasm memory. ' + + 'Try to compile with `-matomics -mbulk-memory` and use `--import-memory --shared-memory` during linking, ' + + 'then create WebAssembly.Memory with `shared: true` option'); + } + } + else { + if (typeof SharedArrayBuffer === 'undefined') { + throw new Error('Current environment does not support SharedArrayBuffer, threads are not available!'); + } + } + } + function getReuseWorker(value) { + var _a; + if (typeof value === 'boolean') { + return value ? { size: 0, strict: false } : false; + } + if (typeof value === 'number') { + if (!(value >= 0)) { + throw new RangeError('reuseWorker: size must be a non-negative integer'); + } + return { size: value, strict: false }; + } + if (!value) { + return false; + } + var size = (_a = Number(value.size)) !== null && _a !== void 0 ? _a : 0; + var strict = Boolean(value.strict); + if (!(size > 0) && strict) { + throw new RangeError('reuseWorker: size must be set to positive integer if strict is set to true'); + } + return { size: size, strict: strict }; + } + var nextWorkerID = 0; + /** @public */ + var ThreadManager = /*#__PURE__*/ (function () { + function ThreadManager(options) { + var _a; + this.unusedWorkers = []; + this.runningWorkers = []; + this.pthreads = Object.create(null); + this.wasmModule = null; + this.wasmMemory = null; + this.messageEvents = new WeakMap(); + if (!options) { + throw new TypeError('ThreadManager(): options is not provided'); + } + if ('childThread' in options) { + this._childThread = Boolean(options.childThread); + } + else { + this._childThread = false; + } + if (this._childThread) { + this._onCreateWorker = undefined; + this._reuseWorker = false; + this._beforeLoad = undefined; + } + else { + this._onCreateWorker = options.onCreateWorker; + this._reuseWorker = getReuseWorker(options.reuseWorker); + this._beforeLoad = options.beforeLoad; + } + this.printErr = (_a = options.printErr) !== null && _a !== void 0 ? _a : console.error.bind(console); + this.threadSpawn = options.threadSpawn; + } + Object.defineProperty(ThreadManager.prototype, "nextWorkerID", { + get: function () { return nextWorkerID; }, + enumerable: false, + configurable: true + }); + ThreadManager.prototype.init = function () { + if (!this._childThread) { + this.initMainThread(); + } + }; + ThreadManager.prototype.initMainThread = function () { + this.preparePool(); + }; + ThreadManager.prototype.preparePool = function () { + if (this._reuseWorker) { + if (this._reuseWorker.size) { + var pthreadPoolSize = this._reuseWorker.size; + while (pthreadPoolSize--) { + var worker = this.allocateUnusedWorker(); + if (ENVIRONMENT_IS_NODE) { + // https://github.com/nodejs/node/issues/53036 + worker.once('message', function () { }); + worker.unref(); + } + } + } + } + }; + ThreadManager.prototype.shouldPreloadWorkers = function () { + return !this._childThread && this._reuseWorker && this._reuseWorker.size > 0; + }; + ThreadManager.prototype.loadWasmModuleToAllWorkers = function () { + var _this_1 = this; + var promises = Array(this.unusedWorkers.length); + var _loop_1 = function (i) { + var worker = this_1.unusedWorkers[i]; + if (ENVIRONMENT_IS_NODE) + worker.ref(); + promises[i] = this_1.loadWasmModuleToWorker(worker).then(function (w) { + if (ENVIRONMENT_IS_NODE) + worker.unref(); + return w; + }, function (e) { + if (ENVIRONMENT_IS_NODE) + worker.unref(); + throw e; + }); + }; + var this_1 = this; + for (var i = 0; i < this.unusedWorkers.length; ++i) { + _loop_1(i); + } + return Promise.all(promises).catch(function (err) { + _this_1.terminateAllThreads(); + throw err; + }); + }; + ThreadManager.prototype.preloadWorkers = function () { + if (this.shouldPreloadWorkers()) { + return this.loadWasmModuleToAllWorkers(); + } + return Promise.resolve([]); + }; + ThreadManager.prototype.setup = function (wasmModule, wasmMemory) { + this.wasmModule = wasmModule; + this.wasmMemory = wasmMemory; + }; + ThreadManager.prototype.markId = function (worker) { + if (worker.__emnapi_tid) + return worker.__emnapi_tid; + var tid = nextWorkerID + 43; + nextWorkerID = (nextWorkerID + 1) % (WASI_THREADS_MAX_TID - 42); + this.pthreads[tid] = worker; + worker.__emnapi_tid = tid; + return tid; + }; + ThreadManager.prototype.returnWorkerToPool = function (worker) { + var tid = worker.__emnapi_tid; + if (tid !== undefined) { + delete this.pthreads[tid]; + } + this.unusedWorkers.push(worker); + this.runningWorkers.splice(this.runningWorkers.indexOf(worker), 1); + delete worker.__emnapi_tid; + if (ENVIRONMENT_IS_NODE) { + worker.unref(); + } + }; + ThreadManager.prototype.loadWasmModuleToWorker = function (worker, sab) { + var _this_1 = this; + if (worker.whenLoaded) + return worker.whenLoaded; + var err = this.printErr; + var beforeLoad = this._beforeLoad; + // eslint-disable-next-line @typescript-eslint/no-this-alias + var _this = this; + worker.whenLoaded = new Promise(function (resolve, reject) { + var handleError = function (e) { + var message = 'worker sent an error!'; + if (worker.__emnapi_tid !== undefined) { + message = 'worker (tid = ' + worker.__emnapi_tid + ') sent an error!'; + } + if ('message' in e) { + err(message + ' ' + e.message); + if (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1) { + try { + _this.terminateAllThreads(); + } + catch (_) { } + } + } + else { + err(message); + } + reject(e); + throw e; + }; + var handleMessage = function (data) { + if (data.__emnapi__) { + var type = data.__emnapi__.type; + var payload = data.__emnapi__.payload; + if (type === 'loaded') { + worker.loaded = true; + if (ENVIRONMENT_IS_NODE && !worker.__emnapi_tid) { + worker.unref(); + } + resolve(worker); + // if (payload.err) { + // err('failed to load in child thread: ' + (payload.err.message || payload.err)) + // } + } + else if (type === 'cleanup-thread') { + if (payload.tid in _this_1.pthreads) { + _this_1.cleanThread(worker, payload.tid); + } + } + else if (type === 'spawn-thread') { + _this_1.threadSpawn(payload.startArg, payload.errorOrTid); + } + else if (type === 'terminate-all-threads') { + _this_1.terminateAllThreads(); + } + } + }; + worker.onmessage = function (e) { + handleMessage(e.data); + _this_1.fireMessageEvent(worker, e); + }; + worker.onerror = handleError; + if (ENVIRONMENT_IS_NODE) { + worker.on('message', function (data) { + var _a, _b; + (_b = (_a = worker).onmessage) === null || _b === void 0 ? void 0 : _b.call(_a, { + data: data + }); + }); + worker.on('error', function (e) { + var _a, _b; + (_b = (_a = worker).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, e); + }); + worker.on('detachedExit', function () { }); + } + if (typeof beforeLoad === 'function') { + beforeLoad(worker); + } + try { + worker.postMessage(createMessage('load', { + wasmModule: _this_1.wasmModule, + wasmMemory: _this_1.wasmMemory, + sab: sab + })); + } + catch (err) { + checkSharedWasmMemory(_this_1.wasmMemory); + throw err; + } + }); + return worker.whenLoaded; + }; + ThreadManager.prototype.allocateUnusedWorker = function () { + var _onCreateWorker = this._onCreateWorker; + if (typeof _onCreateWorker !== 'function') { + throw new TypeError('`options.onCreateWorker` is not provided'); + } + var worker = _onCreateWorker({ type: 'thread', name: 'emnapi-pthread' }); + this.unusedWorkers.push(worker); + return worker; + }; + ThreadManager.prototype.getNewWorker = function (sab) { + if (this._reuseWorker) { + if (this.unusedWorkers.length === 0) { + if (this._reuseWorker.strict) { + if (!ENVIRONMENT_IS_NODE) { + var err = this.printErr; + err('Tried to spawn a new thread, but the thread pool is exhausted.\n' + + 'This might result in a deadlock unless some threads eventually exit or the code explicitly breaks out to the event loop.'); + return; + } + } + var worker_1 = this.allocateUnusedWorker(); + // eslint-disable-next-line @typescript-eslint/no-floating-promises + this.loadWasmModuleToWorker(worker_1, sab); + } + return this.unusedWorkers.pop(); + } + var worker = this.allocateUnusedWorker(); + // eslint-disable-next-line @typescript-eslint/no-floating-promises + this.loadWasmModuleToWorker(worker, sab); + return this.unusedWorkers.pop(); + }; + ThreadManager.prototype.cleanThread = function (worker, tid, force) { + if (!force && this._reuseWorker) { + this.returnWorkerToPool(worker); + } + else { + delete this.pthreads[tid]; + var index = this.runningWorkers.indexOf(worker); + if (index !== -1) { + this.runningWorkers.splice(index, 1); + } + this.terminateWorker(worker); + delete worker.__emnapi_tid; + } + }; + ThreadManager.prototype.terminateWorker = function (worker) { + var _this_1 = this; + var _a; + var tid = worker.__emnapi_tid; + // eslint-disable-next-line @typescript-eslint/no-floating-promises + worker.terminate(); + (_a = this.messageEvents.get(worker)) === null || _a === void 0 ? void 0 : _a.clear(); + this.messageEvents.delete(worker); + worker.onmessage = function (e) { + if (e.data.__emnapi__) { + var err = _this_1.printErr; + err('received "' + e.data.__emnapi__.type + '" command from terminated worker: ' + tid); + } + }; + }; + ThreadManager.prototype.terminateAllThreads = function () { + for (var i = 0; i < this.runningWorkers.length; ++i) { + this.terminateWorker(this.runningWorkers[i]); + } + for (var i = 0; i < this.unusedWorkers.length; ++i) { + this.terminateWorker(this.unusedWorkers[i]); + } + this.unusedWorkers = []; + this.runningWorkers = []; + this.pthreads = Object.create(null); + this.preparePool(); + }; + ThreadManager.prototype.addMessageEventListener = function (worker, onMessage) { + var listeners = this.messageEvents.get(worker); + if (!listeners) { + listeners = new Set(); + this.messageEvents.set(worker, listeners); + } + listeners.add(onMessage); + return function () { + listeners === null || listeners === void 0 ? void 0 : listeners.delete(onMessage); + }; + }; + ThreadManager.prototype.fireMessageEvent = function (worker, e) { + var listeners = this.messageEvents.get(worker); + if (!listeners) + return; + var err = this.printErr; + listeners.forEach(function (listener) { + try { + listener(e); + } + catch (e) { + err(e.stack); + } + }); + }; + return ThreadManager; + }()); + + var kIsProxy = Symbol('kIsProxy'); + /** @public */ + function createInstanceProxy(instance, memory) { + if (instance[kIsProxy]) + return instance; + // https://github.com/nodejs/help/issues/4102 + var originalExports = instance.exports; + var createHandler = function (target) { + var handlers = [ + 'apply', + 'construct', + 'defineProperty', + 'deleteProperty', + 'get', + 'getOwnPropertyDescriptor', + 'getPrototypeOf', + 'has', + 'isExtensible', + 'ownKeys', + 'preventExtensions', + 'set', + 'setPrototypeOf' + ]; + var handler = {}; + var _loop_1 = function (i) { + var name_1 = handlers[i]; + handler[name_1] = function () { + var args = Array.prototype.slice.call(arguments, 1); + args.unshift(target); + return Reflect[name_1].apply(Reflect, args); + }; + }; + for (var i = 0; i < handlers.length; i++) { + _loop_1(i); + } + return handler; + }; + var handler = createHandler(originalExports); + var _initialize = function () { }; + var _start = function () { return 0; }; + handler.get = function (_target, p, receiver) { + var _a; + if (p === 'memory') { + return (_a = (typeof memory === 'function' ? memory() : memory)) !== null && _a !== void 0 ? _a : Reflect.get(originalExports, p, receiver); + } + if (p === '_initialize') { + return p in originalExports ? _initialize : undefined; + } + if (p === '_start') { + return p in originalExports ? _start : undefined; + } + return Reflect.get(originalExports, p, receiver); + }; + handler.has = function (_target, p) { + if (p === 'memory') + return true; + return Reflect.has(originalExports, p); + }; + var exportsProxy = new Proxy(Object.create(null), handler); + return new Proxy(instance, { + get: function (target, p, receiver) { + if (p === 'exports') { + return exportsProxy; + } + if (p === kIsProxy) { + return true; + } + return Reflect.get(target, p, receiver); + } + }); + } + + var patchedWasiInstances = new WeakMap(); + /** @public */ + var WASIThreads = /*#__PURE__*/ (function () { + function WASIThreads(options) { + var _this_1 = this; + if (!options) { + throw new TypeError('WASIThreads(): options is not provided'); + } + if (!options.wasi) { + throw new TypeError('WASIThreads(): options.wasi is not provided'); + } + patchedWasiInstances.set(this, new WeakSet()); + var wasi = options.wasi; + patchWasiInstance(this, wasi); + this.wasi = wasi; + if ('childThread' in options) { + this.childThread = Boolean(options.childThread); + } + else { + this.childThread = false; + } + this.PThread = undefined; + if ('threadManager' in options) { + if (typeof options.threadManager === 'function') { + this.PThread = options.threadManager(); + } + else { + this.PThread = options.threadManager; + } + } + else { + if (!this.childThread) { + this.PThread = new ThreadManager(options); + this.PThread.init(); + } + } + var waitThreadStart = false; + if ('waitThreadStart' in options) { + waitThreadStart = typeof options.waitThreadStart === 'number' ? options.waitThreadStart : Boolean(options.waitThreadStart); + } + var postMessage = getPostMessage(options); + if (this.childThread && typeof postMessage !== 'function') { + throw new TypeError('options.postMessage is not a function'); + } + this.postMessage = postMessage; + var wasm64 = Boolean(options.wasm64); + var threadSpawn = function (startArg, errorOrTid) { + var _a; + var EAGAIN = 6; + var isNewABI = errorOrTid !== undefined; + try { + checkSharedWasmMemory(_this_1.wasmMemory); + } + catch (err) { + (_a = _this_1.PThread) === null || _a === void 0 ? void 0 : _a.printErr(err.stack); + if (isNewABI) { + var struct_1 = new Int32Array(_this_1.wasmMemory.buffer, errorOrTid, 2); + Atomics.store(struct_1, 0, 1); + Atomics.store(struct_1, 1, EAGAIN); + Atomics.notify(struct_1, 1); + return 1; + } + else { + return -EAGAIN; + } + } + if (!isNewABI) { + var malloc = _this_1.wasmInstance.exports.malloc; + errorOrTid = wasm64 ? Number(malloc(BigInt(8))) : (malloc(8) >>> 0); + if (!errorOrTid) { + return -48; /* ENOMEM */ + } + } + var _free = _this_1.wasmInstance.exports.free; + var free = wasm64 ? function (ptr) { _free(BigInt(ptr)); } : _free; + var struct = new Int32Array(_this_1.wasmMemory.buffer, errorOrTid, 2); + Atomics.store(struct, 0, 0); + Atomics.store(struct, 1, 0); + if (_this_1.childThread) { + postMessage(createMessage('spawn-thread', { + startArg: startArg, + errorOrTid: errorOrTid + })); + Atomics.wait(struct, 1, 0); + var isError = Atomics.load(struct, 0); + var result = Atomics.load(struct, 1); + if (isNewABI) { + return isError; + } + free(errorOrTid); + return isError ? -result : result; + } + var shouldWait = waitThreadStart || (waitThreadStart === 0); + var sab; + if (shouldWait) { + sab = new Int32Array(new SharedArrayBuffer(16 + 8192)); + Atomics.store(sab, 0, 0); + } + var worker; + var tid; + var PThread = _this_1.PThread; + try { + worker = PThread.getNewWorker(sab); + if (!worker) { + throw new Error('failed to get new worker'); + } + tid = PThread.markId(worker); + if (ENVIRONMENT_IS_NODE) { + worker.unref(); + } + worker.postMessage(createMessage('start', { + tid: tid, + arg: startArg, + sab: sab + })); + if (shouldWait) { + if (typeof waitThreadStart === 'number') { + var waitResult = Atomics.wait(sab, 0, 0, waitThreadStart); + if (waitResult === 'timed-out') { + try { + PThread.cleanThread(worker, tid, true); + } + catch (_) { } + throw new Error('Spawning thread timed out. Please check if the worker is created successfully and if message is handled properly in the worker.'); + } + } + else { + Atomics.wait(sab, 0, 0); + } + var r = Atomics.load(sab, 0); + if (r > 1) { + try { + PThread.cleanThread(worker, tid, true); + } + catch (_) { } + throw deserizeErrorFromBuffer(sab.buffer); + } + } + } + catch (e) { + Atomics.store(struct, 0, 1); + Atomics.store(struct, 1, EAGAIN); + Atomics.notify(struct, 1); + PThread === null || PThread === void 0 ? void 0 : PThread.printErr(e.stack); + if (isNewABI) { + return 1; + } + free(errorOrTid); + return -EAGAIN; + } + Atomics.store(struct, 0, 0); + Atomics.store(struct, 1, tid); + Atomics.notify(struct, 1); + PThread.runningWorkers.push(worker); + if (!shouldWait) { + worker.whenLoaded.catch(function (err) { + delete worker.whenLoaded; + PThread.cleanThread(worker, tid, true); + throw err; + }); + } + if (isNewABI) { + return 0; + } + free(errorOrTid); + return tid; + }; + this.threadSpawn = threadSpawn; + if (this.PThread) { + this.PThread.threadSpawn = threadSpawn; + } + } + WASIThreads.prototype.getImportObject = function () { + return { + wasi: { + 'thread-spawn': this.threadSpawn + } + }; + }; + WASIThreads.prototype.setup = function (wasmInstance, wasmModule, wasmMemory) { + wasmMemory !== null && wasmMemory !== void 0 ? wasmMemory : (wasmMemory = wasmInstance.exports.memory); + this.wasmInstance = wasmInstance; + this.wasmMemory = wasmMemory; + if (this.PThread) { + this.PThread.setup(wasmModule, wasmMemory); + } + }; + WASIThreads.prototype.preloadWorkers = function () { + if (this.PThread) { + return this.PThread.preloadWorkers(); + } + return Promise.resolve([]); + }; + /** + * It's ok to call this method to a WASI command module. + * + * in child thread, must call this method instead of {@link WASIThreads.start} even if it's a WASI command module + * + * @returns A proxied WebAssembly instance if in child thread, other wise the original instance + */ + WASIThreads.prototype.initialize = function (instance, module, memory) { + var exports$1 = instance.exports; + memory !== null && memory !== void 0 ? memory : (memory = exports$1.memory); + if (this.childThread) { + instance = createInstanceProxy(instance, memory); + } + this.setup(instance, module, memory); + var wasi = this.wasi; + if (('_start' in exports$1) && (typeof exports$1._start === 'function')) { + if (this.childThread) { + wasi.start(instance); + try { + var kStarted = getWasiSymbol(wasi, 'kStarted'); + wasi[kStarted] = false; + } + catch (_) { } + } + else { + setupInstance(wasi, instance); + } + } + else { + wasi.initialize(instance); + } + return instance; + }; + /** + * Equivalent to calling {@link WASIThreads.initialize} and then calling {@link WASIInstance.start} + * ```js + * this.initialize(instance, module, memory) + * this.wasi.start(instance) + * ``` + */ + WASIThreads.prototype.start = function (instance, module, memory) { + var exports$1 = instance.exports; + memory !== null && memory !== void 0 ? memory : (memory = exports$1.memory); + if (this.childThread) { + instance = createInstanceProxy(instance, memory); + } + this.setup(instance, module, memory); + var exitCode = this.wasi.start(instance); + return { exitCode: exitCode, instance: instance }; + }; + WASIThreads.prototype.terminateAllThreads = function () { + var _a; + if (!this.childThread) { + (_a = this.PThread) === null || _a === void 0 ? void 0 : _a.terminateAllThreads(); + } + else { + this.postMessage(createMessage('terminate-all-threads', {})); + } + }; + return WASIThreads; + }()); + function patchWasiInstance(wasiThreads, wasi) { + var patched = patchedWasiInstances.get(wasiThreads); + if (patched.has(wasi)) { + return; + } + var _this = wasiThreads; + var wasiImport = wasi.wasiImport; + if (wasiImport) { + var proc_exit_1 = wasiImport.proc_exit; + wasiImport.proc_exit = function (code) { + _this.terminateAllThreads(); + return proc_exit_1.call(this, code); + }; + } + if (!_this.childThread) { + var start_1 = wasi.start; + if (typeof start_1 === 'function') { + wasi.start = function (instance) { + try { + return start_1.call(this, instance); + } + catch (err) { + if (isTrapError(err)) { + _this.terminateAllThreads(); + } + throw err; + } + }; + } + } + patched.add(wasi); + } + function getWasiSymbol(wasi, description) { + var symbols = Object.getOwnPropertySymbols(wasi); + var selectDescription = function (description) { return function (s) { + if (s.description) { + return s.description === description; + } + return s.toString() === "Symbol(".concat(description, ")"); + }; }; + if (Array.isArray(description)) { + return description.map(function (d) { return symbols.filter(selectDescription(d))[0]; }); + } + return symbols.filter(selectDescription(description))[0]; + } + function setupInstance(wasi, instance) { + var _a = getWasiSymbol(wasi, ['kInstance', 'kSetMemory']), kInstance = _a[0], kSetMemory = _a[1]; + wasi[kInstance] = instance; + wasi[kSetMemory](instance.exports.memory); + } + + /** @public */ + var ThreadMessageHandler = /*#__PURE__*/ (function () { + function ThreadMessageHandler(options) { + var postMsg = getPostMessage(options); + if (typeof postMsg !== 'function') { + throw new TypeError('options.postMessage is not a function'); + } + this.postMessage = postMsg; + this.onLoad = options === null || options === void 0 ? void 0 : options.onLoad; + this.onError = typeof (options === null || options === void 0 ? void 0 : options.onError) === 'function' ? options.onError : function (_type, err) { throw err; }; + this.instance = undefined; + // this.module = undefined + this.messagesBeforeLoad = []; + } + /** @virtual */ + ThreadMessageHandler.prototype.instantiate = function (data) { + if (typeof this.onLoad === 'function') { + return this.onLoad(data); + } + throw new Error('ThreadMessageHandler.prototype.instantiate is not implemented'); + }; + /** @virtual */ + ThreadMessageHandler.prototype.handle = function (e) { + var _this = this; + var _a; + if ((_a = e === null || e === void 0 ? void 0 : e.data) === null || _a === void 0 ? void 0 : _a.__emnapi__) { + var type = e.data.__emnapi__.type; + var payload_1 = e.data.__emnapi__.payload; + try { + if (type === 'load') { + this._load(payload_1); + } + else if (type === 'start') { + this.handleAfterLoad(e, function () { + _this._start(payload_1); + }); + } + } + catch (err) { + this.onError(err, type); + } + } + }; + ThreadMessageHandler.prototype._load = function (payload) { + var _this = this; + if (this.instance !== undefined) + return; + var source; + try { + source = this.instantiate(payload); + } + catch (err) { + this._loaded(err, null, payload); + return; + } + var then = source && 'then' in source ? source.then : undefined; + if (typeof then === 'function') { + // eslint-disable-next-line @typescript-eslint/no-floating-promises + then.call(source, function (source) { _this._loaded(null, source, payload); }, function (err) { _this._loaded(err, null, payload); }); + } + else { + this._loaded(null, source, payload); + } + }; + ThreadMessageHandler.prototype._start = function (payload) { + var wasi_thread_start = this.instance.exports.wasi_thread_start; + if (typeof wasi_thread_start !== 'function') { + var err = new TypeError('wasi_thread_start is not exported'); + notifyPthreadCreateResult(payload.sab, 2, err); + throw err; + } + var postMessage = this.postMessage; + var tid = payload.tid; + var startArg = payload.arg; + notifyPthreadCreateResult(payload.sab, 1); + try { + wasi_thread_start(tid, startArg); + } + catch (err) { + if (err !== 'unwind') { + throw err; + } + else { + return; + } + } + postMessage(createMessage('cleanup-thread', { tid: tid })); + }; + ThreadMessageHandler.prototype._loaded = function (err, source, payload) { + if (err) { + notifyPthreadCreateResult(payload.sab, 2, err); + throw err; + } + if (source == null) { + var err_1 = new TypeError('onLoad should return an object'); + notifyPthreadCreateResult(payload.sab, 2, err_1); + throw err_1; + } + var instance = source.instance; + if (!instance) { + var err_2 = new TypeError('onLoad should return an object which includes "instance"'); + notifyPthreadCreateResult(payload.sab, 2, err_2); + throw err_2; + } + this.instance = instance; + var postMessage = this.postMessage; + postMessage(createMessage('loaded', {})); + var messages = this.messagesBeforeLoad; + this.messagesBeforeLoad = []; + for (var i = 0; i < messages.length; i++) { + var data = messages[i]; + this.handle({ data: data }); + } + }; + ThreadMessageHandler.prototype.handleAfterLoad = function (e, f) { + if (this.instance !== undefined) { + f.call(this, e); + } + else { + this.messagesBeforeLoad.push(e.data); + } + }; + return ThreadMessageHandler; + }()); + function notifyPthreadCreateResult(sab, result, error) { + if (sab) { + serizeErrorToBuffer(sab.buffer, result, error); + Atomics.notify(sab, 0); + } + } + + function createNapiModule(options) { + var napiModule = (function () { + var ENVIRONMENT_IS_NODE = typeof process === 'object' && process !== null && typeof process.versions === 'object' && process.versions !== null && typeof process.versions.node === 'string'; + var ENVIRONMENT_IS_PTHREAD = Boolean(options.childThread); + var waitThreadStart = typeof options.waitThreadStart === 'number' ? options.waitThreadStart : Boolean(options.waitThreadStart); + var wasmInstance; + var wasmMemory; + var wasmTable; + var _malloc; + var _free; + function abort(msg) { + if (typeof _WebAssembly$1.RuntimeError === 'function') { + throw new _WebAssembly$1.RuntimeError(msg); + } + throw Error(msg); + } + var napiModule = { + imports: { + env: {}, + napi: {}, + emnapi: {} + }, + exports: {}, + emnapi: {}, + loaded: false, + filename: '', + childThread: ENVIRONMENT_IS_PTHREAD, + initWorker: undefined, + waitThreadStart: waitThreadStart, + PThread: undefined, + init: function (options) { + if (napiModule.loaded) + return napiModule.exports; + if (!options) + throw new TypeError('Invalid napi init options'); + var instance = options.instance; + if (!(instance === null || instance === void 0 ? void 0 : instance.exports)) + throw new TypeError('Invalid wasm instance'); + wasmInstance = instance; + var exports$1 = instance.exports; + var module = options.module; + var memory = options.memory || exports$1.memory; + var table = options.table || exports$1.__indirect_function_table; + if (!(module instanceof _WebAssembly$1.Module)) + throw new TypeError('Invalid wasm module'); + if (!(memory instanceof _WebAssembly$1.Memory)) + throw new TypeError('Invalid wasm memory'); + if (!(table instanceof _WebAssembly$1.Table)) + throw new TypeError('Invalid wasm table'); + wasmMemory = memory; + wasmTable = table; + if (typeof exports$1.malloc !== 'function') + throw new TypeError('malloc is not exported'); + if (typeof exports$1.free !== 'function') + throw new TypeError('free is not exported'); + _malloc = exports$1.malloc; + _free = exports$1.free; + if (!napiModule.childThread) { + // main thread only + var moduleApiVersion = 8 /* Version.NODE_API_DEFAULT_MODULE_API_VERSION */; + var node_api_module_get_api_version_v1 = instance.exports.node_api_module_get_api_version_v1; + if (typeof node_api_module_get_api_version_v1 === 'function') { + moduleApiVersion = node_api_module_get_api_version_v1(); + } + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing + var envObject = napiModule.envObject || (napiModule.envObject = emnapiCtx.createEnv(napiModule.filename, moduleApiVersion, function (cb) { return (wasmTable.get(cb)); }, function (cb) { return (wasmTable.get(cb)); }, abort, emnapiNodeBinding)); + var scope_1 = emnapiCtx.openScope(envObject); + try { + envObject.callIntoModule(function (_envObject) { + var exports$1 = napiModule.exports; + var exportsHandle = scope_1.add(exports$1); + var napi_register_wasm_v1 = instance.exports.napi_register_wasm_v1; + var napiValue = napi_register_wasm_v1(_envObject.id, exportsHandle.id); + napiModule.exports = (!napiValue) ? exports$1 : emnapiCtx.handleStore.get(napiValue).value; + }); + } + catch (e) { + if (e !== 'unwind') { + throw e; + } + } + finally { + emnapiCtx.closeScope(envObject, scope_1); + } + napiModule.loaded = true; + delete napiModule.envObject; + return napiModule.exports; + } + } + }; + var emnapiCtx; + var emnapiNodeBinding; + var onCreateWorker = undefined; + var err; + if (!ENVIRONMENT_IS_PTHREAD) { + var context = options.context; + if (typeof context !== 'object' || context === null) { + throw new TypeError("Invalid `options.context`. Use `import { getDefaultContext } from '@emnapi/runtime'`"); + } + emnapiCtx = context; + } + else { + emnapiCtx = options === null || options === void 0 ? void 0 : options.context; + var postMsg = typeof options.postMessage === 'function' + ? options.postMessage + : typeof postMessage === 'function' + ? postMessage + : undefined; + if (typeof postMsg !== 'function') { + throw new TypeError('No postMessage found'); + } + napiModule.postMessage = postMsg; + } + if (typeof options.filename === 'string') { + napiModule.filename = options.filename; + } + if (typeof options.onCreateWorker === 'function') { + onCreateWorker = options.onCreateWorker; + } + if (typeof options.print === 'function') { + options.print; + } + else { + console.log.bind(console); + } + if (typeof options.printErr === 'function') { + err = options.printErr; + } + else { + err = console.warn.bind(console); + } + if ('nodeBinding' in options) { + var nodeBinding = options.nodeBinding; + if (typeof nodeBinding !== 'object' || nodeBinding === null) { + throw new TypeError('Invalid `options.nodeBinding`. Use @emnapi/node-binding package'); + } + emnapiNodeBinding = nodeBinding; + } + var emnapiAsyncWorkPoolSize = 0; + if ('asyncWorkPoolSize' in options) { + if (typeof options.asyncWorkPoolSize !== 'number') { + throw new TypeError('options.asyncWorkPoolSize must be a integer'); + } + emnapiAsyncWorkPoolSize = options.asyncWorkPoolSize >> 0; + if (emnapiAsyncWorkPoolSize > 1024) { + emnapiAsyncWorkPoolSize = 1024; + } + else if (emnapiAsyncWorkPoolSize < -1024) { + emnapiAsyncWorkPoolSize = -1024; + } + } + var singleThreadAsyncWork = ENVIRONMENT_IS_PTHREAD ? false : (emnapiAsyncWorkPoolSize <= 0); + function _emnapi_async_work_pool_size() { + return Math.abs(emnapiAsyncWorkPoolSize); + } + napiModule.imports.env._emnapi_async_work_pool_size = _emnapi_async_work_pool_size; + // ------------------------------ pthread ------------------------------- + function emnapiAddSendListener(worker) { + if (!worker) + return false; + if (worker._emnapiSendListener) + return true; + var handler = function (e) { + var data = ENVIRONMENT_IS_NODE ? e : e.data; + var __emnapi__ = data.__emnapi__; + if (__emnapi__ && __emnapi__.type === 'async-send') { + if (ENVIRONMENT_IS_PTHREAD) { + var postMessage_1 = napiModule.postMessage; + postMessage_1({ __emnapi__: __emnapi__ }); + } + else { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var callback = __emnapi__.payload.callback; + (wasmTable.get(callback))(__emnapi__.payload.data); + } + } + }; + var dispose = function () { + if (ENVIRONMENT_IS_NODE) { + worker.off('message', handler); + } + else { + worker.removeEventListener('message', handler, false); + } + delete worker._emnapiSendListener; + }; + worker._emnapiSendListener = { handler: handler, dispose: dispose }; + if (ENVIRONMENT_IS_NODE) { + worker.on('message', handler); + } + else { + worker.addEventListener('message', handler, false); + } + return true; + } + napiModule.emnapi.addSendListener = emnapiAddSendListener; + var PThread = new ThreadManager(ENVIRONMENT_IS_PTHREAD + ? { + printErr: err, + childThread: true + } + : { + printErr: err, + beforeLoad: function (worker) { + emnapiAddSendListener(worker); + }, + reuseWorker: options.reuseWorker, + onCreateWorker: onCreateWorker + }); + napiModule.PThread = PThread; + /** + * @__sig ipiip + */ + function napi_set_last_error(env, error_code, engine_error_code, engine_reserved) { + var envObject = emnapiCtx.envStore.get(env); + return envObject.setLastError(error_code, engine_error_code, engine_reserved); + } + /** + * @__sig ip + */ + function napi_clear_last_error(env) { + var envObject = emnapiCtx.envStore.get(env); + return envObject.clearLastError(); + } + /** + * @__sig vppp + */ + function _emnapi_get_node_version(major, minor, patch) { + major >>>= 0; + minor >>>= 0; + patch >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var versions = (typeof process === 'object' && process !== null && + typeof process.versions === 'object' && process.versions !== null && + typeof process.versions.node === 'string') + ? process.versions.node.split('.').map(function (n) { return Number(n); }) + : [0, 0, 0]; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(major, versions[0], true); + HEAP_DATA_VIEW.setUint32(minor, versions[1], true); + HEAP_DATA_VIEW.setUint32(patch, versions[2], true); + } + /** + * @__sig v + * @__deps $runtimeKeepalivePush + */ + function _emnapi_runtime_keepalive_push() { + } + /** + * @__sig v + * @__deps $runtimeKeepalivePop + */ + function _emnapi_runtime_keepalive_pop() { + } + /** + * @__sig vpp + */ + function _emnapi_set_immediate(callback, data) { + emnapiCtx.feature.setImmediate(function () { + (wasmTable.get(callback))(data); + }); + } + /** + * @__sig vpp + */ + function _emnapi_next_tick(callback, data) { + // eslint-disable-next-line @typescript-eslint/no-floating-promises + Promise.resolve().then(function () { + (wasmTable.get(callback))(data); + }); + } + /** + * @__sig vipppi + */ + function _emnapi_callback_into_module(forceUncaught, env, callback, data, close_scope_if_throw) { + var envObject = emnapiCtx.envStore.get(env); + var scope = emnapiCtx.openScope(envObject); + try { + envObject.callbackIntoModule(Boolean(forceUncaught), function () { + (wasmTable.get(callback))(env, data); + }); + } + catch (err) { + emnapiCtx.closeScope(envObject, scope); + if (close_scope_if_throw) { + emnapiCtx.closeScope(envObject); + } + throw err; + } + emnapiCtx.closeScope(envObject, scope); + } + /** + * @__sig vipppp + */ + function _emnapi_call_finalizer(forceUncaught, env, callback, data, hint) { + var envObject = emnapiCtx.envStore.get(env); + callback >>>= 0; + envObject.callFinalizerInternal(forceUncaught, callback, data, hint); + } + /** + * @__sig v + */ + function _emnapi_ctx_increase_waiting_request_counter() { + emnapiCtx.increaseWaitingRequestCounter(); + } + /** + * @__sig v + */ + function _emnapi_ctx_decrease_waiting_request_counter() { + emnapiCtx.decreaseWaitingRequestCounter(); + } + /** + * @__sig i + */ + function _emnapi_is_main_runtime_thread() { + return ENVIRONMENT_IS_PTHREAD ? 0 : 1; + } + /** + * @__sig i + */ + function _emnapi_is_main_browser_thread() { + return (typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE) ? 1 : 0; + } + /** + * @__sig v + */ + function _emnapi_unwind() { + // eslint-disable-next-line @typescript-eslint/no-throw-literal + throw 'unwind'; + } + /** + * @__sig d + */ + function _emnapi_get_now() { + return performance.timeOrigin + performance.now(); + } + function $emnapiSetValueI64(result, numberValue) { + var tempDouble; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var tempI64 = [ + numberValue >>> 0, + (tempDouble = numberValue, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) + ]; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt32(result, tempI64[0], true); + HEAP_DATA_VIEW.setInt32(result + 4, tempI64[1], true); + } + /** + * @__deps $emnapiCtx + * @__sig p + */ + function _emnapi_open_handle_scope() { + return emnapiCtx.openScope().id; + } + /** + * @__deps $emnapiCtx + * @__sig vp + */ + function _emnapi_close_handle_scope(_scope) { + return emnapiCtx.closeScope(); + } + var utilMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + $emnapiSetValueI64: $emnapiSetValueI64, + _emnapi_call_finalizer: _emnapi_call_finalizer, + _emnapi_callback_into_module: _emnapi_callback_into_module, + _emnapi_close_handle_scope: _emnapi_close_handle_scope, + _emnapi_ctx_decrease_waiting_request_counter: _emnapi_ctx_decrease_waiting_request_counter, + _emnapi_ctx_increase_waiting_request_counter: _emnapi_ctx_increase_waiting_request_counter, + _emnapi_get_node_version: _emnapi_get_node_version, + _emnapi_get_now: _emnapi_get_now, + _emnapi_is_main_browser_thread: _emnapi_is_main_browser_thread, + _emnapi_is_main_runtime_thread: _emnapi_is_main_runtime_thread, + _emnapi_next_tick: _emnapi_next_tick, + _emnapi_open_handle_scope: _emnapi_open_handle_scope, + _emnapi_runtime_keepalive_pop: _emnapi_runtime_keepalive_pop, + _emnapi_runtime_keepalive_push: _emnapi_runtime_keepalive_push, + _emnapi_set_immediate: _emnapi_set_immediate, + _emnapi_unwind: _emnapi_unwind, + napi_clear_last_error: napi_clear_last_error, + napi_set_last_error: napi_set_last_error + }); + function emnapiGetWorkerByPthreadPtr(pthreadPtr) { + var view = new DataView(wasmMemory.buffer); + /** + * wasi-sdk-20.0+threads + * + * struct pthread { + * struct pthread *self; // 0 + * struct pthread *prev, *next; // 4, 8 + * uintptr_t sysinfo; // 12 + * uintptr_t canary; // 16 + * int tid; // 20 + * // ... + * } + */ + var tidOffset = 20; + var tid = view.getInt32(pthreadPtr + tidOffset, true); + var worker = PThread.pthreads[tid]; + return worker; + } + /** @__sig vp */ + function _emnapi_worker_ref(pthreadPtr) { + if (ENVIRONMENT_IS_PTHREAD) + return; + pthreadPtr >>>= 0; + var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr); + if (worker && typeof worker.ref === 'function') { + worker.ref(); + } + } + /** @__sig vp */ + function _emnapi_worker_unref(pthreadPtr) { + if (ENVIRONMENT_IS_PTHREAD) + return; + pthreadPtr >>>= 0; + var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr); + if (worker && typeof worker.unref === 'function') { + worker.unref(); + } + } + /** @__sig vipp */ + function _emnapi_async_send_js(type, callback, data) { + if (ENVIRONMENT_IS_PTHREAD) { + var postMessage_1 = napiModule.postMessage; + postMessage_1({ + __emnapi__: { + type: 'async-send', + payload: { + callback: callback, + data: data + } + } + }); + } + else { + switch (type) { + case 0: + _emnapi_set_immediate(callback, data); + break; + case 1: + _emnapi_next_tick(callback, data); + break; + } + } + } + // function ptrToString (ptr: number): string { + // return '0x' + ('00000000' + ptr.toString(16)).slice(-8) + // } + var uvThreadpoolReadyResolve; + var uvThreadpoolReady = new Promise(function (resolve) { + uvThreadpoolReadyResolve = function () { + uvThreadpoolReady.ready = true; + resolve(); + }; + }); + uvThreadpoolReady.ready = false; + /** @__sig vppi */ + function _emnapi_after_uvthreadpool_ready(callback, q, type) { + if (uvThreadpoolReady.ready) { + (wasmTable.get(callback))(q, type); + } + else { + uvThreadpoolReady.then(function () { + (wasmTable.get(callback))(q, type); + }); + } + } + /** @__sig vpi */ + function _emnapi_tell_js_uvthreadpool(threads, size) { + var p = []; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + var _loop_1 = function (i) { + var pthreadPtr = HEAP_DATA_VIEW.getUint32(threads + i * 4, true); + var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr); + p.push(new Promise(function (resolve) { + var handler = function (e) { + var data = ENVIRONMENT_IS_NODE ? e : e.data; + var __emnapi__ = data.__emnapi__; + if (__emnapi__ && __emnapi__.type === 'async-thread-ready') { + resolve(); + if (worker && typeof worker.unref === 'function') { + worker.unref(); + } + if (ENVIRONMENT_IS_NODE) { + worker.off('message', handler); + } + else { + worker.removeEventListener('message', handler); + } + } + }; + if (ENVIRONMENT_IS_NODE) { + worker.on('message', handler); + } + else { + worker.addEventListener('message', handler); + } + })); + }; + for (var i = 0; i < size; i++) { + _loop_1(i); + } + Promise.all(p).then(uvThreadpoolReadyResolve); + } + /** @__sig v */ + function _emnapi_emit_async_thread_ready() { + if (!ENVIRONMENT_IS_PTHREAD) + return; + var postMessage = napiModule.postMessage; + postMessage({ + __emnapi__: { + type: 'async-thread-ready', + payload: {} + } + }); + } + var asyncMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + _emnapi_after_uvthreadpool_ready: _emnapi_after_uvthreadpool_ready, + _emnapi_async_send_js: _emnapi_async_send_js, + _emnapi_emit_async_thread_ready: _emnapi_emit_async_thread_ready, + _emnapi_tell_js_uvthreadpool: _emnapi_tell_js_uvthreadpool, + _emnapi_worker_ref: _emnapi_worker_ref, + _emnapi_worker_unref: _emnapi_worker_unref + }); + /** @__sig ipjp */ + function napi_adjust_external_memory(env, change_in_bytes, adjusted_value) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + var envObject = emnapiCtx.envStore.get(env); + if (!adjusted_value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + // eslint-disable-next-line prefer-const + var adjusted_memory = emnapiCtx.adjustAmountOfExternalAllocatedMemory(change_in_bytes); + adjusted_value >>>= 0; + if (emnapiCtx.feature.supportBigInt) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(adjusted_memory), true); + } + else { + $emnapiSetValueI64(adjusted_value, Number(adjusted_memory)); + } + return envObject.clearLastError(); + } + var memoryMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + napi_adjust_external_memory: napi_adjust_external_memory + }); + /** + * @__postset + * ``` + * emnapiAWST.init(); + * ``` + */ + var emnapiAWST = { + idGen: {}, + values: [undefined], + queued: new Set(), + pending: [], + init: function () { + var idGen = { + nextId: 1, + list: [], + generate: function () { + var id; + if (idGen.list.length) { + id = idGen.list.shift(); + } + else { + id = idGen.nextId; + idGen.nextId++; + } + return id; + }, + reuse: function (id) { + idGen.list.push(id); + } + }; + emnapiAWST.idGen = idGen; + emnapiAWST.values = [undefined]; + emnapiAWST.queued = new Set(); + emnapiAWST.pending = []; + }, + create: function (env, resource, resourceName, execute, complete, data) { + var asyncId = 0; + var triggerAsyncId = 0; + if (emnapiNodeBinding) { + var asyncContext = emnapiNodeBinding.node.emitAsyncInit(resource, resourceName, -1); + asyncId = asyncContext.asyncId; + triggerAsyncId = asyncContext.triggerAsyncId; + } + var id = emnapiAWST.idGen.generate(); + emnapiAWST.values[id] = { + env: env, + id: id, + resource: resource, + asyncId: asyncId, + triggerAsyncId: triggerAsyncId, + status: 0, + execute: execute, + complete: complete, + data: data + }; + return id; + }, + callComplete: function (work, status) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var complete = work.complete; + var env = work.env; + var data = work.data; + var callback = function () { + if (!complete) + return; + var envObject = emnapiCtx.envStore.get(env); + var scope = emnapiCtx.openScope(envObject); + try { + envObject.callbackIntoModule(true, function () { + (wasmTable.get(complete))(env, status, data); + }); + } + finally { + emnapiCtx.closeScope(envObject, scope); + } + }; + if (emnapiNodeBinding) { + emnapiNodeBinding.node.makeCallback(work.resource, callback, [], { + asyncId: work.asyncId, + triggerAsyncId: work.triggerAsyncId + }); + } + else { + callback(); + } + }, + queue: function (id) { + var work = emnapiAWST.values[id]; + if (!work) + return; + if (work.status === 0) { + work.status = 1; + if (emnapiAWST.queued.size >= (Math.abs(emnapiAsyncWorkPoolSize) || 4)) { + emnapiAWST.pending.push(id); + return; + } + emnapiAWST.queued.add(id); + var env_1 = work.env; + var data_1 = work.data; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var execute = work.execute; + work.status = 2; + emnapiCtx.feature.setImmediate(function () { + (wasmTable.get(execute))(env_1, data_1); + emnapiAWST.queued.delete(id); + work.status = 3; + emnapiCtx.feature.setImmediate(function () { + emnapiAWST.callComplete(work, 0 /* napi_status.napi_ok */); + }); + if (emnapiAWST.pending.length > 0) { + var nextWorkId = emnapiAWST.pending.shift(); + emnapiAWST.values[nextWorkId].status = 0; + emnapiAWST.queue(nextWorkId); + } + }); + } + }, + cancel: function (id) { + var index = emnapiAWST.pending.indexOf(id); + if (index !== -1) { + var work_1 = emnapiAWST.values[id]; + if (work_1 && (work_1.status === 1)) { + work_1.status = 4; + emnapiAWST.pending.splice(index, 1); + emnapiCtx.feature.setImmediate(function () { + emnapiAWST.callComplete(work_1, 11 /* napi_status.napi_cancelled */); + }); + return 0 /* napi_status.napi_ok */; + } + else { + return 9 /* napi_status.napi_generic_failure */; + } + } + return 9 /* napi_status.napi_generic_failure */; + }, + remove: function (id) { + var work = emnapiAWST.values[id]; + if (!work) + return; + if (emnapiNodeBinding) { + emnapiNodeBinding.node.emitAsyncDestroy({ + asyncId: work.asyncId, + triggerAsyncId: work.triggerAsyncId + }); + } + emnapiAWST.values[id] = undefined; + emnapiAWST.idGen.reuse(id); + } + }; + /** @__sig vppdp */ + function _emnapi_node_emit_async_init(async_resource, async_resource_name, trigger_async_id, result) { + if (!emnapiNodeBinding) + return; + var resource = emnapiCtx.handleStore.get(async_resource).value; + var resource_name = emnapiCtx.handleStore.get(async_resource_name).value; + var asyncContext = emnapiNodeBinding.node.emitAsyncInit(resource, resource_name, trigger_async_id); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var asyncId = asyncContext.asyncId; + var triggerAsyncId = asyncContext.triggerAsyncId; + if (result) { + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setFloat64(result, asyncId, true); + HEAP_DATA_VIEW.setFloat64(result + 8, triggerAsyncId, true); + } + } + /** @__sig vdd */ + function _emnapi_node_emit_async_destroy(async_id, trigger_async_id) { + if (!emnapiNodeBinding) + return; + emnapiNodeBinding.node.emitAsyncDestroy({ + asyncId: async_id, + triggerAsyncId: trigger_async_id + }); + } + /* vpddp export function _emnapi_node_open_callback_scope (async_resource: napi_value, async_id: double, trigger_async_id: double, result: Pointer): void { + if (!emnapiNodeBinding || !result) return + const resource = emnapiCtx.handleStore.get(async_resource)!.value + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const nativeCallbackScopePointer = emnapiNodeBinding.node.openCallbackScope(resource, { + asyncId: async_id, + triggerAsyncId: trigger_async_id + }) + + from64('result') + $_TODO_makeSetValue('result', 0, 'nativeCallbackScopePointer', 'i64') + } + + vp + export function _emnapi_node_close_callback_scope (scope: Pointer): void { + if (!emnapiNodeBinding || !scope) return + from64('scope') + const nativeCallbackScopePointer = $_TODO_makeGetValue('scope', 0, 'i64') + emnapiNodeBinding.node.closeCallbackScope(BigInt(nativeCallbackScopePointer)) + } */ + /** @__sig ipppppddp */ + function _emnapi_node_make_callback(env, async_resource, cb, argv, size, async_id, trigger_async_id, result) { + var i = 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v; + if (!emnapiNodeBinding) + return; + var resource = emnapiCtx.handleStore.get(async_resource).value; + var callback = emnapiCtx.handleStore.get(cb).value; + argv >>>= 0; + size >>>= 0; + size = size >>> 0; + var arr = Array(size); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + for (; i < size; i++) { + var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); + arr[i] = emnapiCtx.handleStore.get(argVal).value; + } + var ret = emnapiNodeBinding.node.makeCallback(resource, callback, arr, { + asyncId: async_id, + triggerAsyncId: trigger_async_id + }); + if (result) { + result >>>= 0; + var envObject = emnapiCtx.envStore.get(env); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + v = envObject.ensureHandleId(ret); + HEAP_DATA_VIEW.setUint32(result, v, true); + } + } + /** @__sig ippp */ + function _emnapi_async_init_js(async_resource, async_resource_name, result) { + if (!emnapiNodeBinding) { + return 9 /* napi_status.napi_generic_failure */; + } + var resource; + if (async_resource) { + resource = Object(emnapiCtx.handleStore.get(async_resource).value); + } + var name = emnapiCtx.handleStore.get(async_resource_name).value; + var ret = emnapiNodeBinding.napi.asyncInit(resource, name); + if (ret.status !== 0) + return ret.status; + var numberValue = ret.value; + if (!((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63))))) { + numberValue = numberValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); + if (numberValue >= (BigInt(1) << BigInt(63))) { + numberValue = numberValue - (BigInt(1) << BigInt(64)); + } + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var low = Number(numberValue & BigInt(0xffffffff)); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var high = Number(numberValue >> BigInt(32)); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt32(result, low, true); + HEAP_DATA_VIEW.setInt32(result + 4, high, true); + return 0 /* napi_status.napi_ok */; + } + /** @__sig ip */ + function _emnapi_async_destroy_js(async_context) { + if (!emnapiNodeBinding) { + return 9 /* napi_status.napi_generic_failure */; + } + async_context >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + var low = HEAP_DATA_VIEW.getInt32(async_context, true); + var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true); + var pointer = BigInt(low >>> 0) | (BigInt(high) << BigInt(32)); + var ret = emnapiNodeBinding.napi.asyncDestroy(pointer); + if (ret.status !== 0) + return ret.status; + return 0 /* napi_status.napi_ok */; + } + // https://github.com/nodejs/node-addon-api/pull/1283 + /** @__sig ipppp */ + function napi_open_callback_scope(env, ignored, async_context_handle, result) { + throw new Error('napi_open_callback_scope has not been implemented yet'); + } + /** @__sig ipp */ + function napi_close_callback_scope(env, scope) { + throw new Error('napi_close_callback_scope has not been implemented yet'); + } + /** @__sig ippppppp */ + function napi_make_callback(env, async_context, recv, func, argc, argv, result) { + var i = 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!emnapiNodeBinding) { + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + if (!recv) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (argc > 0) { + if (!argv) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var v8recv = Object(emnapiCtx.handleStore.get(recv).value); + var v8func = emnapiCtx.handleStore.get(func).value; + if (typeof v8func !== 'function') { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + async_context >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + var low = HEAP_DATA_VIEW.getInt32(async_context, true); + var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true); + var ctx = BigInt(low >>> 0) | (BigInt(high) << BigInt(32)); + argv >>>= 0; + argc >>>= 0; + argc = argc >>> 0; + var arr = Array(argc); + for (; i < argc; i++) { + var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); + arr[i] = emnapiCtx.handleStore.get(argVal).value; + } + var ret = emnapiNodeBinding.napi.makeCallback(ctx, v8recv, v8func, arr); + if (ret.error) { + throw ret.error; + } + if (ret.status !== 0 /* napi_status.napi_ok */) + return envObject.setLastError(ret.status); + if (result) { + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + v = envObject.ensureHandleId(ret.value); + HEAP_DATA_VIEW.setUint32(result, v, true); + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig vp */ + function _emnapi_env_check_gc_access(env) { + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + } + var nodeMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + _emnapi_async_destroy_js: _emnapi_async_destroy_js, + _emnapi_async_init_js: _emnapi_async_init_js, + _emnapi_env_check_gc_access: _emnapi_env_check_gc_access, + _emnapi_node_emit_async_destroy: _emnapi_node_emit_async_destroy, + _emnapi_node_emit_async_init: _emnapi_node_emit_async_init, + _emnapi_node_make_callback: _emnapi_node_make_callback, + napi_close_callback_scope: napi_close_callback_scope, + napi_make_callback: napi_make_callback, + napi_open_callback_scope: napi_open_callback_scope + }); + /** + * @__deps malloc + * @__deps free + * @__postset + * ``` + * emnapiTSFN.init(); + * ``` + */ + var emnapiTSFN = { + _liveSet: {}, + offset: { + __size__: 0, + /* napi_ref */ resource: 0, + /* double */ async_id: 0, + /* double */ trigger_async_id: 0, + /* size_t */ queue_size: 0, + /* bool */ is_some: 0, + /* void* */ queue: 0, + // Reuse uv_async_t storage as JS-side wakeup state: pending event + scheduled drain. + async_pending: 0, + async_u_fd: 0, + /* size_t */ thread_count: 0, + /* int32_t */ state: 0, + /* atomic_uchar */ dispatch_state: 0, + /* void* */ context: 0, + /* size_t */ max_queue_size: 0, + /* napi_ref */ ref: 0, + /* napi_env */ env: 0, + /* void* */ finalize_data: 0, + /* napi_finalize */ finalize_cb: 0, + /* napi_threadsafe_function_call_js */ call_js_cb: 0, + /* bool */ handles_closing: 0, + /* bool */ async_ref: 0, + /* int32_t */ mutex: 0, + /* int32_t */ cond: 0 + }, + init: function () { + emnapiTSFN._liveSet = new Set(); + emnapiTSFN.offset.__size__ = 184 /* NapiTSFNOffset32.__size__ */; + emnapiTSFN.offset.resource = 0 /* NapiTSFNOffset32.async_resource_resource */; + emnapiTSFN.offset.async_id = 8 /* NapiTSFNOffset32.async_resource_async_context_async_id */; + emnapiTSFN.offset.trigger_async_id = 16 /* NapiTSFNOffset32.async_resource_async_context_trigger_async_id */; + emnapiTSFN.offset.queue_size = 60 /* NapiTSFNOffset32.queue_size */; + emnapiTSFN.offset.is_some = 24 /* NapiTSFNOffset32.async_resource_is_some */; + emnapiTSFN.offset.queue = 64 /* NapiTSFNOffset32.queue */; + emnapiTSFN.offset.async_pending = 132 /* NapiTSFNOffset32.async_pending */; + emnapiTSFN.offset.async_u_fd = 96 /* NapiTSFNOffset32.async_u_fd */; + emnapiTSFN.offset.thread_count = 136 /* NapiTSFNOffset32.thread_count */; + emnapiTSFN.offset.state = 140 /* NapiTSFNOffset32.state */; + emnapiTSFN.offset.dispatch_state = 144 /* NapiTSFNOffset32.dispatch_state */; + emnapiTSFN.offset.context = 148 /* NapiTSFNOffset32.context */; + emnapiTSFN.offset.max_queue_size = 152 /* NapiTSFNOffset32.max_queue_size */; + emnapiTSFN.offset.ref = 156 /* NapiTSFNOffset32.ref */; + emnapiTSFN.offset.env = 160 /* NapiTSFNOffset32.env */; + emnapiTSFN.offset.finalize_data = 164 /* NapiTSFNOffset32.finalize_data */; + emnapiTSFN.offset.finalize_cb = 168 /* NapiTSFNOffset32.finalize_cb */; + emnapiTSFN.offset.call_js_cb = 172 /* NapiTSFNOffset32.call_js_cb */; + emnapiTSFN.offset.handles_closing = 176 /* NapiTSFNOffset32.handles_closing */; + emnapiTSFN.offset.async_ref = 180 /* NapiTSFNOffset32.async_ref */; + emnapiTSFN.offset.mutex = 32 /* NapiTSFNOffset32.mutex */; + emnapiTSFN.offset.cond = 56 /* NapiTSFNOffset32.cond */; + emnapiTSFN.offset.mutex = emnapiTSFN.offset.mutex + 4; + if (typeof PThread !== 'undefined') { + PThread.unusedWorkers.forEach(emnapiTSFN.addListener); + PThread.runningWorkers.forEach(emnapiTSFN.addListener); + var __original_getNewWorker_1 = PThread.getNewWorker; + PThread.getNewWorker = function () { + var r = __original_getNewWorker_1.apply(this, arguments); + emnapiTSFN.addListener(r); + return r; + }; + } + }, + addListener: function (worker) { + if (!worker) + return false; + if (worker._emnapiTSFNListener) + return true; + var handler = function (e) { + var data = ENVIRONMENT_IS_NODE ? e : e.data; + var __emnapi__ = data.__emnapi__; + if (__emnapi__) { + var type = __emnapi__.type; + var payload = __emnapi__.payload; + if (type === 'tsfn-send') { + var pendng = payload.tsfn + emnapiTSFN.offset.async_pending; + if (Atomics.load(new Int32Array(wasmMemory.buffer), pendng >>> 2) !== 0) { + emnapiTSFN.enqueue(payload.tsfn); + } + } + } + }; + var dispose = function () { + if (ENVIRONMENT_IS_NODE) { + worker.off('message', handler); + } + else { + worker.removeEventListener('message', handler, false); + } + delete worker._emnapiTSFNListener; + }; + worker._emnapiTSFNListener = { handler: handler, dispose: dispose }; + if (ENVIRONMENT_IS_NODE) { + worker.on('message', handler); + } + else { + worker.addEventListener('message', handler, false); + } + return true; + }, + initQueue: function (func) { + var size = 2 * 4; + var queue = _malloc(size); + if (!queue) + return false; + queue >>>= 0; + new Uint8Array(wasmMemory.buffer, queue, size).fill(0); + emnapiTSFN.storeSizeTypeValue(func + emnapiTSFN.offset.queue, queue, false); + return true; + }, + destroyQueue: function (func) { + var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false); + if (queue) { + var node = emnapiTSFN.loadSizeTypeValue(queue, false); + while (node !== 0) { + var next = emnapiTSFN.loadSizeTypeValue(node + 4, false); + _free(node); + node = next; + } + _free(queue); + } + }, + pushQueue: function (func, data) { + var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false); + var head = emnapiTSFN.loadSizeTypeValue(queue, false); + var tail = emnapiTSFN.loadSizeTypeValue(queue + 4, false); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var size = 2 * 4; + var node = _malloc(size); + if (!node) + throw new Error('OOM'); + node >>>= 0; + emnapiTSFN.storeSizeTypeValue(node, data, false); + emnapiTSFN.storeSizeTypeValue(node + 4, 0, false); + if (head === 0 && tail === 0) { + emnapiTSFN.storeSizeTypeValue(queue, node, false); + emnapiTSFN.storeSizeTypeValue(queue + 4, node, false); + } + else { + emnapiTSFN.storeSizeTypeValue(tail + 4, node, false); + emnapiTSFN.storeSizeTypeValue(queue + 4, node, false); + } + emnapiTSFN.addQueueSize(func); + }, + shiftQueue: function (func) { + var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false); + var head = emnapiTSFN.loadSizeTypeValue(queue, false); + if (head === 0) + return 0; + var node = head; + var next = emnapiTSFN.loadSizeTypeValue(head + 4, false); + emnapiTSFN.storeSizeTypeValue(queue, next, false); + if (next === 0) { + emnapiTSFN.storeSizeTypeValue(queue + 4, 0, false); + } + emnapiTSFN.storeSizeTypeValue(node + 4, 0, false); + var value = emnapiTSFN.loadSizeTypeValue(node, false); + _free(node); + emnapiTSFN.subQueueSize(func); + return value; + }, + push: function (func, data, mode) { + var mutex = emnapiTSFN.getMutex(func); + var cond = emnapiTSFN.getCond(func); + var waitCondition = function () { + var queueSize = emnapiTSFN.getQueueSize(func); + var maxSize = emnapiTSFN.getMaxQueueSize(func); + return queueSize >= maxSize && maxSize > 0 && emnapiTSFN.getState(func) === 0 /* State.kOpen */; + }; + var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE; + var shouldDelete = false; + var ret = mutex.execute(function () { + while (waitCondition()) { + if (mode === 0 /* napi_threadsafe_function_call_mode.napi_tsfn_nonblocking */) { + return 15 /* napi_status.napi_queue_full */; + } + /** + * Browser JS main thread can not use `Atomics.wait` + * + * Related: + * https://github.com/nodejs/node/pull/32689 + * https://github.com/nodejs/node/pull/33453 + */ + if (isBrowserMain) { + return 21 /* napi_status.napi_would_deadlock */; + } + cond.wait(); + } + if (emnapiTSFN.getState(func) === 0 /* State.kOpen */) { + emnapiTSFN.pushQueue(func, data); + emnapiTSFN.send(func); + return 0 /* napi_status.napi_ok */; + } + if (emnapiTSFN.getThreadCount(func) === 0) { + return 1 /* napi_status.napi_invalid_arg */; + } + emnapiTSFN.subThreadCount(func); + if (!(emnapiTSFN.getState(func) === 2 /* State.kClosed */ && emnapiTSFN.getThreadCount(func) === 0)) { + return 16 /* napi_status.napi_closing */; + } + shouldDelete = true; + return 16 /* napi_status.napi_closing */; + }); + if (shouldDelete) { + emnapiTSFN.destroy(func); + } + return ret; + }, + getMutex: function (func) { + var index = func + emnapiTSFN.offset.mutex; + var mutex = { + lock: function () { + var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE; + var i32a = new Int32Array(wasmMemory.buffer, index, 1); + if (isBrowserMain) { + while (true) { + var oldValue = Atomics.compareExchange(i32a, 0, 0, 10); + if (oldValue === 0) { + return; + } + } + } + else { + while (true) { + var oldValue = Atomics.compareExchange(i32a, 0, 0, 10); + if (oldValue === 0) { + return; + } + Atomics.wait(i32a, 0, 10); + } + } + }, + /* lockAsync () { + return new Promise(resolve => { + const again = (): void => { fn() } + const fn = (): void => { + const i32a = new Int32Array(wasmMemory.buffer, index, 1) + const oldValue = Atomics.compareExchange(i32a, 0, 0, 10) + if (oldValue === 0) { + resolve() + return + } + (Atomics as any).waitAsync(i32a, 0, 10).value.then(again) + } + fn() + }) + }, */ + unlock: function () { + var i32a = new Int32Array(wasmMemory.buffer, index, 1); + var oldValue = Atomics.compareExchange(i32a, 0, 10, 0); + if (oldValue !== 10) { + throw new Error('Tried to unlock while not holding the mutex'); + } + Atomics.notify(i32a, 0, 1); + }, + execute: function (fn) { + mutex.lock(); + try { + return fn(); + } + finally { + mutex.unlock(); + } + } /* , + executeAsync (fn: () => Promise): Promise { + return mutex.lockAsync().then(() => { + const r = fn() + mutex.unlock() + return r + }, (err) => { + mutex.unlock() + throw err + }) + } */ + }; + return mutex; + }, + getCond: function (func) { + var index = func + emnapiTSFN.offset.cond; + var mutex = emnapiTSFN.getMutex(func); + var cond = { + wait: function () { + var i32a = new Int32Array(wasmMemory.buffer, index, 1); + var value = Atomics.load(i32a, 0); + mutex.unlock(); + Atomics.wait(i32a, 0, value); + mutex.lock(); + }, + /* waitAsync () { + const i32a = new Int32Array(wasmMemory.buffer, index, 1) + const value = Atomics.load(i32a, 0) + mutex.unlock() + const lock = (): Promise => mutex.lockAsync() + try { + return (Atomics as any).waitAsync(i32a, 0, value).value.then(lock, lock) + } catch (err) { + return lock() + } + }, */ + signal: function () { + var i32a = new Int32Array(wasmMemory.buffer, index, 1); + Atomics.add(i32a, 0, 1); + Atomics.notify(i32a, 0, 1); + } + }; + return cond; + }, + getQueueSize: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue_size, true); + }, + addQueueSize: function (func) { + var offset = emnapiTSFN.offset.queue_size; + var arr, index; + arr = new Uint32Array(wasmMemory.buffer); + index = (func + offset) >>> 2; + Atomics.add(arr, index, 1); + }, + subQueueSize: function (func) { + var offset = emnapiTSFN.offset.queue_size; + var arr, index; + arr = new Uint32Array(wasmMemory.buffer); + index = (func + offset) >>> 2; + Atomics.sub(arr, index, 1); + }, + getThreadCount: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.thread_count, true); + }, + addThreadCount: function (func) { + var offset = emnapiTSFN.offset.thread_count; + var arr, index; + arr = new Uint32Array(wasmMemory.buffer); + index = (func + offset) >>> 2; + Atomics.add(arr, index, 1); + }, + subThreadCount: function (func) { + var offset = emnapiTSFN.offset.thread_count; + var arr, index; + arr = new Uint32Array(wasmMemory.buffer); + index = (func + offset) >>> 2; + Atomics.sub(arr, index, 1); + }, + getState: function (func) { + return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.state) >>> 2); + }, + setState: function (func, value) { + Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.state) >>> 2, value); + }, + getHandlesClosing: function (func) { + return Atomics.load(new Int8Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing)); + }, + setHandlesClosing: function (func, value) { + Atomics.store(new Int8Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing), value); + }, + getDispatchState: function (func) { + return Atomics.load(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >>> 2); + }, + getContext: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.context, false); + }, + getMaxQueueSize: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.max_queue_size, true); + }, + getEnv: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.env, false); + }, + getCallJSCb: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.call_js_cb, false); + }, + getRef: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.ref, false); + }, + getResource: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.resource, false); + }, + getFinalizeCb: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.finalize_cb, false); + }, + getFinalizeData: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.finalize_data, false); + }, + loadSizeTypeValue: function (offset, unsigned) { + var ret; + var arr; + if (unsigned) { + arr = new Uint32Array(wasmMemory.buffer); + ret = Atomics.load(arr, offset >>> 2); + return ret; + } + else { + arr = new Int32Array(wasmMemory.buffer); + ret = Atomics.load(arr, offset >>> 2); + return ret; + } + }, + storeSizeTypeValue: function (offset, value, unsigned) { + var arr; + if (unsigned) { + arr = new Uint32Array(wasmMemory.buffer); + Atomics.store(arr, offset >>> 2, value); + return undefined; + } + else { + arr = new Int32Array(wasmMemory.buffer); + Atomics.store(arr, offset >>> 2, value >>> 0); + return undefined; + } + }, + releaseResources: function (func) { + if (emnapiTSFN.getState(func) !== 2 /* State.kClosed */) { + emnapiTSFN.setState(func, 2 /* State.kClosed */); + var env = emnapiTSFN.getEnv(func); + var envObject = emnapiCtx.envStore.get(env); + var ref = emnapiTSFN.getRef(func); + if (ref) { + emnapiCtx.refStore.get(ref).dispose(); + } + var resource = emnapiTSFN.getResource(func); + emnapiCtx.refStore.get(resource).dispose(); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(func + emnapiTSFN.offset.is_some, 0, true); + emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func); + envObject.unref(); + var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >>> 2; + var arr = new Uint32Array(wasmMemory.buffer); + if (Atomics.load(arr, asyncRefOffset) > 0) { + Atomics.store(arr, asyncRefOffset, 0); + emnapiCtx.decreaseWaitingRequestCounter(); + } + if (emnapiNodeBinding) { + var view = new DataView(wasmMemory.buffer); + var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true); + var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true); + _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId); + } + } + }, + destroy: function (func) { + emnapiTSFN._liveSet.delete(func); + emnapiTSFN.destroyQueue(func); + emnapiTSFN.releaseResources(func); + _free(func); + }, + emptyQueue: function (func) { + var drainQueue = []; + emnapiTSFN.getMutex(func).execute(function () { + while (emnapiTSFN.getQueueSize(func) > 0) { + drainQueue.push(emnapiTSFN.shiftQueue(func)); + } + }); + var callJsCb = emnapiTSFN.getCallJSCb(func); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var context = emnapiTSFN.getContext(func); + var data; + for (var i = 0; i < drainQueue.length; i++) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + data = drainQueue[i]; + if (callJsCb) { + (wasmTable.get(callJsCb))(0, 0, context, data); + } + } + }, + maybeDelete: function (func) { + var shouldDelete = false; + emnapiTSFN.getMutex(func).execute(function () { + if (emnapiTSFN.getThreadCount(func) > 0) { + emnapiTSFN.releaseResources(func); + } + else { + shouldDelete = true; + } + }); + if (shouldDelete) { + emnapiTSFN.destroy(func); + } + }, + finalize: function (func) { + var env = emnapiTSFN.getEnv(func); + var envObject = emnapiCtx.envStore.get(env); + emnapiCtx.openScope(envObject); + var finalize = emnapiTSFN.getFinalizeCb(func); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var data = emnapiTSFN.getFinalizeData(func); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var context = emnapiTSFN.getContext(func); + var f = function () { + envObject.callFinalizerInternal(0, finalize, data, context); + }; + try { + emnapiTSFN.emptyQueue(func); + if (finalize) { + if (emnapiNodeBinding) { + var resource = emnapiTSFN.getResource(func); + var resource_value = emnapiCtx.refStore.get(resource).get(); + var resourceObject = emnapiCtx.handleStore.get(resource_value).value; + var view = new DataView(wasmMemory.buffer); + var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true); + var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true); + emnapiNodeBinding.node.makeCallback(resourceObject, f, [], { + asyncId: asyncId, + triggerAsyncId: triggerAsyncId + }); + } + else { + f(); + } + } + emnapiTSFN.maybeDelete(func); + } + finally { + emnapiCtx.closeScope(envObject); + } + }, + cleanup: function (func) { + emnapiTSFN.closeHandlesAndMaybeDelete(func, 1); + }, + closeHandlesAndMaybeDelete: function (func, set_closing) { + var env = emnapiTSFN.getEnv(func); + var envObject = emnapiCtx.envStore.get(env); + emnapiCtx.openScope(envObject); + try { + if (set_closing) { + emnapiTSFN.getMutex(func).execute(function () { + emnapiTSFN.setState(func, 1 /* State.kClosing */); + if (emnapiTSFN.getMaxQueueSize(func) > 0) { + emnapiTSFN.getCond(func).signal(); + } + }); + } + if (emnapiTSFN.getHandlesClosing(func)) { + return; + } + emnapiTSFN.setHandlesClosing(func, 1); + Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.async_pending) >>> 2, 1); + emnapiCtx.feature.setImmediate(function () { + emnapiTSFN.finalize(func); + }); + } + finally { + emnapiCtx.closeScope(envObject); + } + }, + dispatchOne: function (func) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var data = 0; + var popped_value = false; + var has_more = false; + var mutex = emnapiTSFN.getMutex(func); + var cond = emnapiTSFN.getCond(func); + mutex.execute(function () { + if (emnapiTSFN.getState(func) === 0 /* State.kOpen */) { + var size = emnapiTSFN.getQueueSize(func); + if (size > 0) { + data = emnapiTSFN.shiftQueue(func); + popped_value = true; + var maxQueueSize = emnapiTSFN.getMaxQueueSize(func); + if (size === maxQueueSize && maxQueueSize > 0) { + cond.signal(); + } + size--; + } + if (size === 0) { + if (emnapiTSFN.getThreadCount(func) === 0) { + emnapiTSFN.setState(func, 1 /* State.kClosing */); + if (emnapiTSFN.getMaxQueueSize(func) > 0) { + cond.signal(); + } + emnapiTSFN.closeHandlesAndMaybeDelete(func, 0); + } + } + else { + has_more = true; + } + } + else { + emnapiTSFN.closeHandlesAndMaybeDelete(func, 0); + } + }); + if (popped_value) { + var env = emnapiTSFN.getEnv(func); + var envObject_1 = emnapiCtx.envStore.get(env); + emnapiCtx.openScope(envObject_1); + var f = function () { + envObject_1.callbackIntoModule(false, function () { + var callJsCb = emnapiTSFN.getCallJSCb(func); + var ref = emnapiTSFN.getRef(func); + var js_callback = ref ? emnapiCtx.refStore.get(ref).get() : 0; + if (callJsCb) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var context = emnapiTSFN.getContext(func); + (wasmTable.get(callJsCb))(env, js_callback, context, data); + } + else { + var jsCallback = js_callback ? emnapiCtx.handleStore.get(js_callback).value : null; + if (typeof jsCallback === 'function') { + jsCallback(); + } + } + }); + }; + try { + if (emnapiNodeBinding) { + var resource = emnapiTSFN.getResource(func); + var resource_value = emnapiCtx.refStore.get(resource).get(); + var resourceObject = emnapiCtx.handleStore.get(resource_value).value; + var view = new DataView(wasmMemory.buffer); + emnapiNodeBinding.node.makeCallback(resourceObject, f, [], { + asyncId: view.getFloat64(func + emnapiTSFN.offset.async_id, true), + triggerAsyncId: view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true) + }); + } + else { + f(); + } + } + finally { + emnapiCtx.closeScope(envObject_1); + } + } + return has_more; + }, + dispatch: function (func) { + var has_more = true; + var iterations_left = 1000; + var ui32a = new Uint32Array(wasmMemory.buffer); + var index = (func + emnapiTSFN.offset.dispatch_state) >>> 2; + while (has_more && --iterations_left !== 0) { + Atomics.store(ui32a, index, 1); + has_more = emnapiTSFN.dispatchOne(func); + if (Atomics.exchange(ui32a, index, 0) !== 1) { + has_more = true; + } + } + if (has_more) { + emnapiTSFN.send(func); + } + }, + enqueue: function (func) { + // `pending` means a worker thread has requested a wakeup that has not + // been drained on the main thread yet. + var pending = func + emnapiTSFN.offset.async_pending; + // `scheduled` prevents queueing the same main-thread drain chain more than + // once while a previous wakeup is still in flight. + var scheduled = func + emnapiTSFN.offset.async_u_fd; + var i32a = new Int32Array(wasmMemory.buffer); + if (Atomics.exchange(i32a, scheduled >>> 2, 1) !== 0) { + return; + } + // Match uv_async_send-style coalescing in JS: the first turn represents + // the wakeup reaching the main thread, and the second turn performs the + // actual TSFN drain after nearby Send/Signal calls have had a chance to + // collapse into the shared AsyncProgressWorker state. + emnapiCtx.feature.setImmediate(function () { + if (!emnapiTSFN._liveSet.has(func)) { + return; + } + if (Atomics.load(i32a, pending >>> 2) === 0) { + Atomics.store(i32a, scheduled >>> 2, 0); + return; + } + emnapiCtx.feature.setImmediate(function () { + try { + // Consume the coalesced wakeup once, then let dispatch() observe any + // queue mutations through dispatch_state like the C implementation. + if (Atomics.exchange(i32a, pending >>> 2, 0) === 0) { + return; + } + // After destroy(), the func address is freed. Skip dispatch + // to avoid use-after-free (JS-side lifecycle check). + if (!emnapiTSFN._liveSet.has(func)) { + return; + } + emnapiTSFN.dispatch(func); + } + finally { + // Allow a later wakeup to schedule a new drain chain. If another + // worker-thread send raced with this drain, enqueue one more turn. + if (emnapiTSFN._liveSet.has(func)) { + Atomics.store(i32a, scheduled >>> 2, 0); + if (Atomics.load(i32a, pending >>> 2) !== 0) { + emnapiTSFN.enqueue(func); + } + } + } + }); + }); + }, + send: function (func) { + var current_state = Atomics.or(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >>> 2, 1 << 1); + if ((current_state & 1) === 1) { + return; + } + var pendng = func + emnapiTSFN.offset.async_pending; + // A wakeup is already pending, so this send only needs to leave the queued + // work in the TSFN queue and let the existing drain pick it up. + if (Atomics.load(new Int32Array(wasmMemory.buffer), pendng >>> 2) !== 0) { + return; + } + if (Atomics.exchange(new Int32Array(wasmMemory.buffer), pendng >>> 2, 1) === 0) { + if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) { + // Worker threads only post a wakeup token. Main-thread draining is + // serialized by enqueue() once the message is received. + postMessage({ + __emnapi__: { + type: 'tsfn-send', + payload: { + tsfn: func + } + } + }); + } + else { + // On the main thread we can skip the cross-thread hop and schedule the + // coalesced drain chain directly. + emnapiTSFN.enqueue(func); + } + } + } + }; + /** @__sig ippppppppppp */ + function napi_create_threadsafe_function(env, func, async_resource, async_resource_name, max_queue_size, initial_thread_count, thread_finalize_data, thread_finalize_cb, context, call_js_cb, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!async_resource_name) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + max_queue_size >>>= 0; + initial_thread_count >>>= 0; + env >>>= 0; + thread_finalize_data >>>= 0; + thread_finalize_cb >>>= 0; + context >>>= 0; + call_js_cb >>>= 0; + max_queue_size = max_queue_size >>> 0; + initial_thread_count = initial_thread_count >>> 0; + if (initial_thread_count === 0) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var ref = 0; + func >>>= 0; + if (!func) { + if (!call_js_cb) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + else { + var funcValue = emnapiCtx.handleStore.get(func).value; + if (typeof funcValue !== 'function') { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + ref = emnapiCtx.createReference(envObject, func, 1, 1 /* ReferenceOwnership.kUserland */).id; + } + var asyncResourceObject; + if (async_resource) { + asyncResourceObject = emnapiCtx.handleStore.get(async_resource).value; + if (asyncResourceObject == null) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + asyncResourceObject = Object(asyncResourceObject); + } + else { + asyncResourceObject = {}; + } + var resource = envObject.ensureHandleId(asyncResourceObject); + var asyncResourceName = emnapiCtx.handleStore.get(async_resource_name).value; + if (typeof asyncResourceName === 'symbol') { + return envObject.setLastError(3 /* napi_status.napi_string_expected */); + } + asyncResourceName = String(asyncResourceName); + var resource_name = envObject.ensureHandleId(asyncResourceName); + // tsfn create + var sizeofTSFN = emnapiTSFN.offset.__size__; + // eslint-disable-next-line prefer-const + var tsfn = _malloc(sizeofTSFN); + if (!tsfn) + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + tsfn >>>= 0; + new Uint8Array(wasmMemory.buffer).subarray(tsfn, tsfn + sizeofTSFN).fill(0); + var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1 /* ReferenceOwnership.kUserland */); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var resource_ = resourceRef.id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.resource, resource_, true); + if (!emnapiTSFN.initQueue(tsfn)) { + _free(tsfn); + resourceRef.dispose(); + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + _emnapi_node_emit_async_init(resource, resource_name, -1, tsfn + emnapiTSFN.offset.async_id); + HEAP_DATA_VIEW.setInt8(tsfn + emnapiTSFN.offset.is_some, 1, true); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.thread_count, initial_thread_count, true); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.context, context, true); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.max_queue_size, max_queue_size, true); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.ref, ref, true); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.env, env, true); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_data, thread_finalize_data, true); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_cb, thread_finalize_cb, true); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.call_js_cb, call_js_cb, true); + emnapiCtx.addCleanupHook(envObject, emnapiTSFN.cleanup, tsfn); + emnapiTSFN._liveSet.add(tsfn); + envObject.ref(); + emnapiCtx.increaseWaitingRequestCounter(); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.async_ref, 1, true); + result >>>= 0; + HEAP_DATA_VIEW.setUint32(result, tsfn, true); + return envObject.clearLastError(); + } + /** @__sig ipp */ + function napi_get_threadsafe_function_context(func, result) { + if (!func || !result) { + abort(); + return 1 /* napi_status.napi_invalid_arg */; + } + func >>>= 0; + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var context = emnapiTSFN.getContext(func); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, context, true); + return 0 /* napi_status.napi_ok */; + } + /** @__sig ippi */ + function napi_call_threadsafe_function(func, data, mode) { + if (!func) { + abort(); + return 1 /* napi_status.napi_invalid_arg */; + } + func >>>= 0; + data >>>= 0; + return emnapiTSFN.push(func, data, mode); + } + /** @__sig ip */ + function napi_acquire_threadsafe_function(func) { + if (!func) { + abort(); + return 1 /* napi_status.napi_invalid_arg */; + } + func >>>= 0; + var mutex = emnapiTSFN.getMutex(func); + return mutex.execute(function () { + if (emnapiTSFN.getState(func) === 0 /* State.kOpen */) { + emnapiTSFN.addThreadCount(func); + return 0 /* napi_status.napi_ok */; + } + return 16 /* napi_status.napi_closing */; + }); + } + /** @__sig ipi */ + function napi_release_threadsafe_function(func, mode) { + if (!func) { + abort(); + return 1 /* napi_status.napi_invalid_arg */; + } + func >>>= 0; + var mutex = emnapiTSFN.getMutex(func); + var cond = emnapiTSFN.getCond(func); + var shouldDelete = false; + var ret = mutex.execute(function () { + if (emnapiTSFN.getThreadCount(func) === 0) { + return 1 /* napi_status.napi_invalid_arg */; + } + emnapiTSFN.subThreadCount(func); + if (emnapiTSFN.getThreadCount(func) === 0 || mode === 1 /* napi_threadsafe_function_release_mode.napi_tsfn_abort */) { + if (emnapiTSFN.getState(func) === 0 /* State.kOpen */) { + if (mode === 1 /* napi_threadsafe_function_release_mode.napi_tsfn_abort */) { + emnapiTSFN.setState(func, 1 /* State.kClosing */); + } + if (emnapiTSFN.getState(func) === 1 /* State.kClosing */ && emnapiTSFN.getMaxQueueSize(func) > 0) { + cond.signal(); + } + emnapiTSFN.send(func); + } + } + if (!(emnapiTSFN.getState(func) === 2 /* State.kClosed */ && emnapiTSFN.getThreadCount(func) === 0)) { + return 0 /* napi_status.napi_ok */; + } + shouldDelete = true; + return 0 /* napi_status.napi_ok */; + }); + if (shouldDelete) { + emnapiTSFN.destroy(func); + } + return ret; + } + /** @__sig ipp */ + function napi_unref_threadsafe_function(env, func) { + if (!func) { + abort(); + return 1 /* napi_status.napi_invalid_arg */; + } + func >>>= 0; + var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >>> 2; + var arr = new Uint32Array(wasmMemory.buffer); + var currentValue = Atomics.load(arr, asyncRefOffset); + if (currentValue > 0) { + Atomics.store(arr, asyncRefOffset, currentValue - 1); + if (currentValue === 1) { + emnapiCtx.decreaseWaitingRequestCounter(); + } + } + return 0 /* napi_status.napi_ok */; + } + /** @__sig ipp */ + function napi_ref_threadsafe_function(env, func) { + if (!func) { + abort(); + return 1 /* napi_status.napi_invalid_arg */; + } + func >>>= 0; + var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >>> 2; + var arr = new Uint32Array(wasmMemory.buffer); + var currentValue = Atomics.load(arr, asyncRefOffset); + if (!currentValue) { + emnapiCtx.increaseWaitingRequestCounter(); + } + Atomics.store(arr, asyncRefOffset, currentValue + 1); + return 0 /* napi_status.napi_ok */; + } + var emnapiAWMT = { + pool: [], + workerReady: null, + globalAddress: 0, + globalOffset: { + idle_threads: 0, + q: 1 * 4, + next: 1 * 4, + prev: 2 * 4, + mutex: 3 * 4, + cond: 4 * 4, + exit_message: 5 * 4, + end: 7 * 4 + }, + offset: { + /* napi_ref */ resource: 0, + /* double */ async_id: 8, + /* double */ trigger_async_id: 16, + /* napi_env */ env: 24, + /* int32_t */ status: 1 * 4 + 24, // 0 for pending, 1 for cancelled, 2 for completed + queue: 2 * 4 + 24, + queue_next: 2 * 4 + 24, + queue_prev: 3 * 4 + 24, + /* void* */ data: 4 * 4 + 24, + /* napi_async_execute_callback */ execute: 5 * 4 + 24, + /* napi_async_complete_callback */ complete: 6 * 4 + 24, + end: 7 * 4 + 24 + }, + init: function () { + emnapiAWMT.pool = []; + emnapiAWMT.workerReady = null; + if (typeof PThread !== 'undefined') { + PThread.unusedWorkers.forEach(emnapiAWMT.addListener); + PThread.runningWorkers.forEach(emnapiAWMT.addListener); + var __original_getNewWorker_1 = PThread.getNewWorker; + PThread.getNewWorker = function () { + var r = __original_getNewWorker_1.apply(this, arguments); + emnapiAWMT.addListener(r); + return r; + }; + } + }, + addListener: function (worker) { + if (!worker) + return false; + if (worker._emnapiAWMTListener) + return true; + var handler = function (e) { + var data = ENVIRONMENT_IS_NODE ? e : e.data; + var __emnapi__ = data.__emnapi__; + if (__emnapi__) { + var type = __emnapi__.type; + var payload = __emnapi__.payload; + if (type === 'async-work-complete') { + emnapiAWMT.callComplete(payload.work, 0 /* napi_status.napi_ok */); + } + } + }; + var dispose = function () { + if (ENVIRONMENT_IS_NODE) { + worker.off('message', handler); + } + else { + worker.removeEventListener('message', handler, false); + } + delete worker._emnapiAWMTListener; + }; + worker._emnapiAWMTListener = { handler: handler, dispose: dispose }; + if (ENVIRONMENT_IS_NODE) { + worker.on('message', handler); + } + else { + worker.addEventListener('message', handler, false); + } + return true; + }, + initGlobal: function () { + if (!emnapiAWMT.globalAddress) { + emnapiAWMT.globalAddress = _malloc(emnapiAWMT.globalOffset.end); + emnapiAWMT.globalAddress >>>= 0; + var size = emnapiAWMT.globalOffset.end; + var addr = emnapiAWMT.globalAddress; + new Uint8Array(wasmMemory.buffer, addr, size).fill(0); + emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q); + emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.exit_message); + } + }, + terminateWorkers: function () { + emnapiAWMT.pool.forEach(function (w) { + var _a, _b; + (_a = w._emnapiAWMTListener) === null || _a === void 0 ? void 0 : _a.dispose(); + (_b = w._emnapiTSFNListener) === null || _b === void 0 ? void 0 : _b.dispose(); + w.terminate(); + }); + emnapiAWMT.pool.length = 0; + }, + initWorkers: function (n) { + if (ENVIRONMENT_IS_PTHREAD) { + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing + return emnapiAWMT.workerReady || (emnapiAWMT.workerReady = Promise.resolve()); + } + if (emnapiAWMT.workerReady) + return emnapiAWMT.workerReady; + if (!('emnapi_async_worker_create' in wasmInstance.exports)) { + throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags'); + } + var emnapi_async_worker_create = wasmInstance.exports.emnapi_async_worker_create; + var args = []; + emnapiAWMT.initGlobal(); + for (var i = 0; i < n; ++i) { + args.push(emnapi_async_worker_create(1, emnapiAWMT.globalAddress)); + } + var promises = args.map(function (index) { + if (index === 0) { + return Promise.reject(new Error('Failed to create async worker')); + } + var worker; + if (index < 0) { + worker = emnapiAWMT.pool[-index - 1]; + if (worker) + return worker.whenLoaded; + } + index >>>= 0; + var view = new DataView(wasmMemory.buffer); + var tidOffset = 20; + var tid = view.getInt32(index + tidOffset, true); + worker = PThread.pthreads[tid]; + return worker.whenLoaded; + }); + emnapiAWMT.workerReady = Promise.all(promises); + return emnapiAWMT.workerReady; + }, + getResource: function (work) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.resource, true); + }, + getExecute: function (work) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.execute, true); + }, + getComplete: function (work) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.complete, true); + }, + getEnv: function (work) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.env, true); + }, + getData: function (work) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.data, true); + }, + getMutex: function () { + var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.mutex; + var mutex = { + lock: function () { + var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE; + var i32a = new Int32Array(wasmMemory.buffer, index, 1); + if (isBrowserMain) { + while (true) { + var oldValue = Atomics.compareExchange(i32a, 0, 0, 10); + if (oldValue === 0) { + return; + } + } + } + else { + while (true) { + var oldValue = Atomics.compareExchange(i32a, 0, 0, 10); + if (oldValue === 0) { + return; + } + Atomics.wait(i32a, 0, 10); + } + } + }, + unlock: function () { + var i32a = new Int32Array(wasmMemory.buffer, index, 1); + var oldValue = Atomics.compareExchange(i32a, 0, 10, 0); + if (oldValue !== 10) { + throw new Error('Tried to unlock while not holding the mutex'); + } + Atomics.notify(i32a, 0, 1); + }, + execute: function (fn) { + mutex.lock(); + try { + return fn(); + } + finally { + mutex.unlock(); + } + } + }; + return mutex; + }, + getCond: function () { + var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.cond; + var mutex = emnapiAWMT.getMutex(); + var cond = { + wait: function () { + var i32a = new Int32Array(wasmMemory.buffer, index, 1); + var value = Atomics.load(i32a, 0); + mutex.unlock(); + Atomics.wait(i32a, 0, value); + mutex.lock(); + }, + signal: function () { + var i32a = new Int32Array(wasmMemory.buffer, index, 1); + Atomics.add(i32a, 0, 1); + Atomics.notify(i32a, 0, 1); + } + }; + return cond; + }, + queueInit: function (q) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(q, q, true); + HEAP_DATA_VIEW.setUint32(q + 4, q, true); + }, + queueInsertTail: function (h, q) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(q, h, true); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var tempValue = HEAP_DATA_VIEW.getUint32(h + 4, true); + HEAP_DATA_VIEW.setUint32(q + 4, tempValue, true); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true); + HEAP_DATA_VIEW.setUint32(qprev, q, true); + HEAP_DATA_VIEW.setUint32(h + 4, q, true); + }, + queueRemove: function (q) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var qnext = HEAP_DATA_VIEW.getUint32(q, true); + HEAP_DATA_VIEW.setUint32(qprev, qnext, true); + HEAP_DATA_VIEW.setUint32(qnext + 4, qprev, true); + }, + queueEmpty: function (q) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + // eslint-disable-next-line eqeqeq + return q == HEAP_DATA_VIEW.getUint32(q, true); + }, + scheduleWork: function (work) { + var _a; + if (!((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready)) { + emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () { + emnapiAWMT.workerReady.ready = true; + }).catch(function (err) { + emnapiAWMT.workerReady = null; + throw err; + }); + } + emnapiCtx.increaseWaitingRequestCounter(); + var statusBuffer = new Int32Array(wasmMemory.buffer, work + emnapiAWMT.offset.status, 1); + Atomics.store(statusBuffer, 0, 0 /* AsyncWorkStatus.Pending */); + var mutex = emnapiAWMT.getMutex(); + var cond = emnapiAWMT.getCond(); + mutex.lock(); + try { + emnapiAWMT.queueInsertTail(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q, work + emnapiAWMT.offset.queue); + } + catch (err) { + emnapiCtx.decreaseWaitingRequestCounter(); + mutex.unlock(); + throw err; + } + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (HEAP_DATA_VIEW.getUint32(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads, true) > 0) { + cond.signal(); + } + mutex.unlock(); + }, + cancelWork: function (work) { + var cancelled = false; + emnapiAWMT.getMutex().execute(function () { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + cancelled = !emnapiAWMT.queueEmpty(work + emnapiAWMT.offset.queue) && HEAP_DATA_VIEW.getInt32(work + emnapiAWMT.offset.status, true) !== 2 /* AsyncWorkStatus.Completed */; + if (cancelled) { + emnapiAWMT.queueRemove(work + emnapiAWMT.offset.queue); + } + }); + if (!cancelled) { + return 9 /* napi_status.napi_generic_failure */; + } + if (Atomics.compareExchange(new Int32Array(wasmMemory.buffer, work + emnapiAWMT.offset.status, 1), 0, 0 /* AsyncWorkStatus.Pending */, 1 /* AsyncWorkStatus.Cancelled */) !== 0 /* AsyncWorkStatus.Pending */) { + return 9 /* napi_status.napi_generic_failure */; + } + emnapiCtx.feature.setImmediate(function () { + emnapiAWMT.callComplete(work, 11 /* napi_status.napi_cancelled */); + }); + return 0 /* napi_status.napi_ok */; + }, + callComplete: function (work, status) { + emnapiCtx.decreaseWaitingRequestCounter(); + var complete = emnapiAWMT.getComplete(work); + var env = emnapiAWMT.getEnv(work); + var data = emnapiAWMT.getData(work); + var envObject = emnapiCtx.envStore.get(env); + var scope = emnapiCtx.openScope(envObject); + var callback = function () { + if (!complete) + return; + envObject.callbackIntoModule(true, function () { + (wasmTable.get(complete))(env, status, data); + }); + }; + try { + if (emnapiNodeBinding) { + var resource = emnapiAWMT.getResource(work); + var resource_value = emnapiCtx.refStore.get(resource).get(); + var resourceObject = emnapiCtx.handleStore.get(resource_value).value; + var view = new DataView(wasmMemory.buffer); + var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true); + var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true); + emnapiNodeBinding.node.makeCallback(resourceObject, callback, [], { + asyncId: asyncId, + triggerAsyncId: triggerAsyncId + }); + } + else { + callback(); + } + } + finally { + emnapiCtx.closeScope(envObject, scope); + } + } + }; + emnapiAWMT.init(); + /** @__sig ippppppp */ + var napi_create_async_work = singleThreadAsyncWork + ? function (env, resource, resource_name, execute, complete, data, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!execute) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var resourceObject; + if (resource) { + resourceObject = Object(emnapiCtx.handleStore.get(resource).value); + } + else { + resourceObject = {}; + } + if (!resource_name) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var resourceName = String(emnapiCtx.handleStore.get(resource_name).value); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var id = emnapiAWST.create(env, resourceObject, resourceName, execute, complete, data); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, id, true); + return envObject.clearLastError(); + } + : function (env, resource, resource_name, execute, complete, data, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!execute) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var resourceObject; + if (resource) { + resourceObject = Object(emnapiCtx.handleStore.get(resource).value); + } + else { + resourceObject = {}; + } + if (!resource_name) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var sizeofAW = emnapiAWMT.offset.end; + var aw = _malloc(sizeofAW); + if (!aw) + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + aw >>>= 0; + new Uint8Array(wasmMemory.buffer).subarray(aw, aw + sizeofAW).fill(0); + var s = envObject.ensureHandleId(resourceObject); + var resourceRef = emnapiCtx.createReference(envObject, s, 1, 1 /* ReferenceOwnership.kUserland */); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var resource_ = resourceRef.id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(aw, resource_, true); + _emnapi_node_emit_async_init(s, resource_name, -1, aw + emnapiAWMT.offset.async_id); + HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.env, env, true); + HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.execute, execute, true); + HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.complete, complete, true); + HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.data, data, true); + emnapiAWMT.queueInit(aw + emnapiAWMT.offset.queue); + result >>>= 0; + HEAP_DATA_VIEW.setUint32(result, aw, true); + return envObject.clearLastError(); + }; + /** @__sig ipp */ + var napi_delete_async_work = singleThreadAsyncWork + ? function (env, work) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!work) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + work >>>= 0; + emnapiAWST.remove(work); + return envObject.clearLastError(); + } + : function (env, work) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!work) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + work >>>= 0; + var resource = emnapiAWMT.getResource(work); + emnapiCtx.refStore.get(resource).dispose(); + if (emnapiNodeBinding) { + var view = new DataView(wasmMemory.buffer); + var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true); + var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true); + _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId); + } + _free(work); + return envObject.clearLastError(); + }; + /** @__sig ipp */ + var napi_queue_async_work = singleThreadAsyncWork + ? function (env, work) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + var envObject = emnapiCtx.envStore.get(env); + if (!work) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + work >>>= 0; + emnapiAWST.queue(work); + return envObject.clearLastError(); + } + : function (env, work) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + var envObject = emnapiCtx.envStore.get(env); + if (!work) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + work >>>= 0; + emnapiAWMT.scheduleWork(work); + return envObject.clearLastError(); + }; + /** @__sig ipp */ + var napi_cancel_async_work = singleThreadAsyncWork + ? function (env, work) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + var envObject = emnapiCtx.envStore.get(env); + if (!work) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + work >>>= 0; + var status = emnapiAWST.cancel(work); + if (status === 0 /* napi_status.napi_ok */) + return envObject.clearLastError(); + return envObject.setLastError(status); + } + : function (env, work) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + var envObject = emnapiCtx.envStore.get(env); + if (!work) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + work >>>= 0; + var status = emnapiAWMT.cancelWork(work); + if (status === 0 /* napi_status.napi_ok */) + return envObject.clearLastError(); + return envObject.setLastError(status); + }; + /** @__sig pp */ + function _emnapi_async_worker(globalAddress) { + globalAddress >>>= 0; + emnapiAWMT.globalAddress = globalAddress; + var mutex = emnapiAWMT.getMutex(); + var cond = emnapiAWMT.getCond(); + mutex.lock(); + var exitMessageAddr = globalAddress + emnapiAWMT.globalOffset.exit_message; + var idleThreadsAddr = globalAddress + emnapiAWMT.globalOffset.idle_threads; + var workerQueueAddr = globalAddress + emnapiAWMT.globalOffset.q; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + for (;;) { + while (emnapiAWMT.queueEmpty(workerQueueAddr)) { + Atomics.add(new Int32Array(wasmMemory.buffer, idleThreadsAddr, 1), 0, 1); + cond.wait(); + Atomics.sub(new Int32Array(wasmMemory.buffer, idleThreadsAddr, 1), 0, 1); + } + var q = HEAP_DATA_VIEW.getUint32(workerQueueAddr, true); + if (q === exitMessageAddr) { + cond.signal(); + mutex.unlock(); + break; + } + var work = q - emnapiAWMT.offset.queue; + emnapiAWMT.queueRemove(q); + emnapiAWMT.queueInit(q); + mutex.unlock(); + var statusBuffer = new Int32Array(wasmMemory.buffer, work + emnapiAWMT.offset.status, 1); + if (Atomics.load(statusBuffer, 0) === 1 /* AsyncWorkStatus.Cancelled */) { + abort('unreachable'); + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var execute = emnapiAWMT.getExecute(work); + var env = emnapiAWMT.getEnv(work); + var data = emnapiAWMT.getData(work); + (wasmTable.get(execute))(env, data); + Atomics.store(statusBuffer, 0, 2 /* AsyncWorkStatus.Completed */); + var postMessage_1 = napiModule.postMessage; + postMessage_1({ + __emnapi__: { + type: 'async-work-complete', + payload: { work: work } + } + }); + mutex.lock(); + } + return 0; + } + /** @__sig ipp */ + function _emnapi_spawn_worker(f, globalAddress) { + if (typeof onCreateWorker !== 'function') { + throw new TypeError('`options.onCreateWorker` is not a function'); + } + var promises = []; + var args = []; + if (!('emnapi_async_worker_create' in wasmInstance.exports)) { + throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags'); + } + args.push(wasmInstance.exports.emnapi_async_worker_create(0, 0)); + var handleError = function (e) { + if ('message' in e && (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1)) { + emnapiAWMT.terminateWorkers(); + } + }; + var ret; + try { + var worker_1 = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' }); + var p = PThread.loadWasmModuleToWorker(worker_1); + if (ENVIRONMENT_IS_NODE) { + worker_1.on('error', handleError); + } + else { + worker_1.addEventListener('error', handleError, false); + } + emnapiAWMT.addListener(worker_1); + emnapiTSFN.addListener(worker_1); + promises.push(p.then(function () { + if (typeof worker_1.unref === 'function') { + worker_1.unref(); + } + })); + ret = emnapiAWMT.pool.push(worker_1) - 1; + var arg = args[0]; + worker_1.threadBlockBase = arg; + worker_1.postMessage({ + __emnapi__: { + type: 'async-worker-init', + payload: { arg: arg, func: [f, globalAddress] } + } + }); + } + catch (err) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var arg = args[0]; + _free(arg); + throw err; + } + return ret; + } + function initWorker(startArg, func) { + if (napiModule.childThread) { + if (typeof wasmInstance.exports.emnapi_async_worker_init !== 'function') { + throw new TypeError('`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags'); + } + wasmInstance.exports.emnapi_async_worker_init(startArg); + (wasmTable.get(func[0]))(func[1]); + } + else { + throw new Error('startThread is only available in child threads'); + } + } + napiModule.initWorker = initWorker; + var asyncWorkMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + _emnapi_async_worker: _emnapi_async_worker, + _emnapi_spawn_worker: _emnapi_spawn_worker, + napi_cancel_async_work: napi_cancel_async_work, + napi_create_async_work: napi_create_async_work, + napi_delete_async_work: napi_delete_async_work, + napi_queue_async_work: napi_queue_async_work + }); + /** + * @__deps malloc + * @__deps free + * @__postset + * ``` + * emnapiExternalMemory.init(); + * ``` + */ + var emnapiExternalMemory = { + registry: typeof FinalizationRegistry === 'function' ? new FinalizationRegistry(function (_pointer) { _free(_pointer); }) : undefined, + table: new WeakMap(), + wasmMemoryViewTable: new WeakMap(), + init: function () { + emnapiExternalMemory.registry = typeof FinalizationRegistry === 'function' ? new FinalizationRegistry(function (_pointer) { _free(_pointer); }) : undefined; + emnapiExternalMemory.table = new WeakMap(); + emnapiExternalMemory.wasmMemoryViewTable = new WeakMap(); + }, + isSharedArrayBuffer: function (value) { + return ((typeof SharedArrayBuffer === 'function' && value instanceof SharedArrayBuffer) || + (Object.prototype.toString.call(value) === '[object SharedArrayBuffer]')); + }, + isDetachedArrayBuffer: function (arrayBuffer) { + if (arrayBuffer.byteLength === 0) { + try { + // eslint-disable-next-line no-new + new Uint8Array(arrayBuffer); + } + catch (_) { + return true; + } + } + return false; + }, + getArrayBufferPointer: function (arrayBuffer, shouldCopy) { + var _a; + var info = { + address: 0, + ownership: 0 /* ReferenceOwnership.kRuntime */, + runtimeAllocated: 0 + }; + if (arrayBuffer === wasmMemory.buffer) { + return info; + } + var isDetached = emnapiExternalMemory.isDetachedArrayBuffer(arrayBuffer); + if (emnapiExternalMemory.table.has(arrayBuffer)) { + var cachedInfo = emnapiExternalMemory.table.get(arrayBuffer); + if (isDetached) { + cachedInfo.address = 0; + return cachedInfo; + } + if (shouldCopy && cachedInfo.ownership === 0 /* ReferenceOwnership.kRuntime */ && cachedInfo.runtimeAllocated === 1) { + new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), cachedInfo.address); + } + return cachedInfo; + } + if (isDetached || (arrayBuffer.byteLength === 0)) { + return info; + } + if (!shouldCopy) { + return info; + } + var pointer = _malloc(arrayBuffer.byteLength); + if (!pointer) + throw new Error('Out of memory'); + pointer >>>= 0; + new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), pointer); + info.address = pointer; + info.ownership = emnapiExternalMemory.registry ? 0 /* ReferenceOwnership.kRuntime */ : 1 /* ReferenceOwnership.kUserland */; + info.runtimeAllocated = 1; + emnapiExternalMemory.table.set(arrayBuffer, info); + (_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(arrayBuffer, pointer); + return info; + }, + getOrUpdateMemoryView: function (view) { + if (view.buffer === wasmMemory.buffer) { + if (!emnapiExternalMemory.wasmMemoryViewTable.has(view)) { + emnapiExternalMemory.wasmMemoryViewTable.set(view, { + Ctor: view.constructor, + address: view.byteOffset, + length: view instanceof DataView ? view.byteLength : view.length, + ownership: 1 /* ReferenceOwnership.kUserland */, + runtimeAllocated: 0 + }); + } + return view; + } + var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) || emnapiExternalMemory.isSharedArrayBuffer(view.buffer); + if (maybeOldWasmMemory && emnapiExternalMemory.wasmMemoryViewTable.has(view)) { + var info = emnapiExternalMemory.wasmMemoryViewTable.get(view); + var Ctor = info.Ctor; + var newView = void 0; + var Buffer_1 = emnapiCtx.feature.Buffer; + if (typeof Buffer_1 === 'function' && Ctor === Buffer_1) { + newView = Buffer_1.from(wasmMemory.buffer, info.address, info.length); + } + else { + newView = new Ctor(wasmMemory.buffer, info.address, info.length); + } + emnapiExternalMemory.wasmMemoryViewTable.set(newView, info); + return newView; + } + return view; + }, + getViewPointer: function (view, shouldCopy) { + view = emnapiExternalMemory.getOrUpdateMemoryView(view); + if (view.buffer === wasmMemory.buffer) { + if (emnapiExternalMemory.wasmMemoryViewTable.has(view)) { + var _a = emnapiExternalMemory.wasmMemoryViewTable.get(view), address_1 = _a.address, ownership_1 = _a.ownership, runtimeAllocated_1 = _a.runtimeAllocated; + return { address: address_1, ownership: ownership_1, runtimeAllocated: runtimeAllocated_1, view: view }; + } + return { address: view.byteOffset, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0, view: view }; + } + var _b = emnapiExternalMemory.getArrayBufferPointer(view.buffer, shouldCopy), address = _b.address, ownership = _b.ownership, runtimeAllocated = _b.runtimeAllocated; + return { address: address === 0 ? 0 : (address + view.byteOffset), ownership: ownership, runtimeAllocated: runtimeAllocated, view: view }; + } + }; + /* eslint-disable @typescript-eslint/indent */ + /** + * @__postset + * ``` + * emnapiString.init(); + * ``` + */ + var emnapiString = { + utf8Decoder: undefined, + utf16Decoder: undefined, + init: function () { + var fallbackDecoder = { + decode: function (bytes) { + var inputIndex = 0; + var pendingSize = Math.min(0x1000, bytes.length + 1); + var pending = new Uint16Array(pendingSize); + var chunks = []; + var pendingIndex = 0; + for (;;) { + var more = inputIndex < bytes.length; + if (!more || (pendingIndex >= pendingSize - 1)) { + var subarray = pending.subarray(0, pendingIndex); + var arraylike = subarray; + chunks.push(String.fromCharCode.apply(null, arraylike)); + if (!more) { + return chunks.join(''); + } + bytes = bytes.subarray(inputIndex); + inputIndex = 0; + pendingIndex = 0; + } + var byte1 = bytes[inputIndex++]; + if ((byte1 & 0x80) === 0) { + pending[pendingIndex++] = byte1; + } + else if ((byte1 & 0xe0) === 0xc0) { + var byte2 = bytes[inputIndex++] & 0x3f; + pending[pendingIndex++] = ((byte1 & 0x1f) << 6) | byte2; + } + else if ((byte1 & 0xf0) === 0xe0) { + var byte2 = bytes[inputIndex++] & 0x3f; + var byte3 = bytes[inputIndex++] & 0x3f; + pending[pendingIndex++] = ((byte1 & 0x1f) << 12) | (byte2 << 6) | byte3; + } + else if ((byte1 & 0xf8) === 0xf0) { + var byte2 = bytes[inputIndex++] & 0x3f; + var byte3 = bytes[inputIndex++] & 0x3f; + var byte4 = bytes[inputIndex++] & 0x3f; + var codepoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0c) | (byte3 << 0x06) | byte4; + if (codepoint > 0xffff) { + codepoint -= 0x10000; + pending[pendingIndex++] = (codepoint >>> 10) & 0x3ff | 0xd800; + codepoint = 0xdc00 | codepoint & 0x3ff; + } + pending[pendingIndex++] = codepoint; + } + else ; + } + } + }; + var utf8Decoder; + utf8Decoder = typeof TextDecoder === 'function' ? new TextDecoder() : fallbackDecoder; + emnapiString.utf8Decoder = utf8Decoder; + var fallbackDecoder2 = { + decode: function (input) { + var bytes = new Uint16Array(input.buffer, input.byteOffset, input.byteLength / 2); + if (bytes.length <= 0x1000) { + return String.fromCharCode.apply(null, bytes); + } + var chunks = []; + var i = 0; + var len = 0; + for (; i < bytes.length; i += len) { + len = Math.min(0x1000, bytes.length - i); + chunks.push(String.fromCharCode.apply(null, bytes.subarray(i, i + len))); + } + return chunks.join(''); + } + }; + var utf16Decoder; + utf16Decoder = typeof TextDecoder === 'function' ? new TextDecoder('utf-16le') : fallbackDecoder2; + emnapiString.utf16Decoder = utf16Decoder; + }, + lengthBytesUTF8: function (str) { + var c; + var len = 0; + for (var i = 0; i < str.length; ++i) { + c = str.charCodeAt(i); + if (c <= 0x7F) { + len++; + } + else if (c <= 0x7FF) { + len += 2; + } + else if (c >= 0xD800 && c <= 0xDFFF) { + len += 4; + ++i; + } + else { + len += 3; + } + } + return len; + }, + UTF8ToString: function (ptr, length) { + if (!ptr || !length) + return ''; + ptr >>>= 0; + var HEAPU8 = new Uint8Array(wasmMemory.buffer); + var end = ptr; + if (length === -1 || length === 4294967295) { + for (; HEAPU8[end];) + ++end; + } + else { + end = ptr + (length >>> 0); + } + length = end - ptr; + if (length <= 16) { + var idx = ptr; + var str = ''; + while (idx < end) { + var u0 = HEAPU8[idx++]; + if (!(u0 & 0x80)) { + str += String.fromCharCode(u0); + continue; + } + var u1 = HEAPU8[idx++] & 63; + if ((u0 & 0xE0) === 0xC0) { + str += String.fromCharCode(((u0 & 31) << 6) | u1); + continue; + } + var u2 = HEAPU8[idx++] & 63; + if ((u0 & 0xF0) === 0xE0) { + u0 = ((u0 & 15) << 12) | (u1 << 6) | u2; + } + else { + u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (HEAPU8[idx++] & 63); + } + if (u0 < 0x10000) { + str += String.fromCharCode(u0); + } + else { + var ch = u0 - 0x10000; + str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); + } + } + return str; + } + return emnapiString.utf8Decoder.decode(((typeof SharedArrayBuffer === "function" && HEAPU8.buffer instanceof SharedArrayBuffer) || (Object.prototype.toString.call(HEAPU8.buffer) === "[object SharedArrayBuffer]")) ? HEAPU8.slice(ptr, end) : HEAPU8.subarray(ptr, end)); + }, + stringToUTF8: function (str, outPtr, maxBytesToWrite) { + var HEAPU8 = new Uint8Array(wasmMemory.buffer); + var outIdx = outPtr; + outIdx >>>= 0; + if (!(maxBytesToWrite > 0)) { + return 0; + } + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 0xD800 && u <= 0xDFFF) { + var u1 = str.charCodeAt(++i); + u = 0x10000 + ((u & 0x3FF) << 10) | (u1 & 0x3FF); + } + if (u <= 0x7F) { + if (outIdx >= endIdx) + break; + HEAPU8[outIdx++] = u; + } + else if (u <= 0x7FF) { + if (outIdx + 1 >= endIdx) + break; + HEAPU8[outIdx++] = 0xC0 | (u >> 6); + HEAPU8[outIdx++] = 0x80 | (u & 63); + } + else if (u <= 0xFFFF) { + if (outIdx + 2 >= endIdx) + break; + HEAPU8[outIdx++] = 0xE0 | (u >> 12); + HEAPU8[outIdx++] = 0x80 | ((u >> 6) & 63); + HEAPU8[outIdx++] = 0x80 | (u & 63); + } + else { + if (outIdx + 3 >= endIdx) + break; + HEAPU8[outIdx++] = 0xF0 | (u >> 18); + HEAPU8[outIdx++] = 0x80 | ((u >> 12) & 63); + HEAPU8[outIdx++] = 0x80 | ((u >> 6) & 63); + HEAPU8[outIdx++] = 0x80 | (u & 63); + } + } + HEAPU8[outIdx] = 0; + return outIdx - startIdx; + }, + UTF16ToString: function (ptr, length) { + if (!ptr || !length) + return ''; + ptr >>>= 0; + var end = ptr; + if (length === -1 || length === 4294967295) { + var idx = end >>> 1; + var HEAPU16 = new Uint16Array(wasmMemory.buffer); + while (HEAPU16[idx]) + ++idx; + end = (idx << 1) >>> 0; + } + else { + end = ptr + (length >>> 0) * 2; + } + length = end - ptr; + if (length <= 32) { + return String.fromCharCode.apply(null, new Uint16Array(wasmMemory.buffer, ptr, length / 2)); + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var HEAPU8 = new Uint8Array(wasmMemory.buffer); + return emnapiString.utf16Decoder.decode(((typeof SharedArrayBuffer === "function" && HEAPU8.buffer instanceof SharedArrayBuffer) || (Object.prototype.toString.call(HEAPU8.buffer) === "[object SharedArrayBuffer]")) ? HEAPU8.slice(ptr, end) : HEAPU8.subarray(ptr, end)); + }, + stringToUTF16: function (str, outPtr, maxBytesToWrite) { + if (maxBytesToWrite === undefined) { + maxBytesToWrite = 0x7FFFFFFF; + } + if (maxBytesToWrite < 2) + return 0; + maxBytesToWrite -= 2; + var startPtr = outPtr; + var numCharsToWrite = (maxBytesToWrite < str.length * 2) ? (maxBytesToWrite / 2) : str.length; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + for (var i = 0; i < numCharsToWrite; ++i) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var codeUnit = str.charCodeAt(i); + HEAP_DATA_VIEW.setInt16(outPtr, codeUnit, true); + outPtr += 2; + } + HEAP_DATA_VIEW.setInt16(outPtr, 0, true); + return outPtr - startPtr; + }, + newString: function (env, str, length, result, stringMaker) { + length >>>= 0; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + var autoLength = length === -1 || length === 4294967295; + var sizelength = length >>> 0; + if (length !== 0) { + if (!str) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!(autoLength || (sizelength <= 2147483647))) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + str >>>= 0; + var strValue = stringMaker(str, autoLength, sizelength); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = emnapiCtx.addToCurrentScope(strValue).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + }, + newExternalString: function (env, str, length, finalize_callback, finalize_hint, result, copied, createApi, stringMaker) { + length >>>= 0; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + var autoLength = length === -1 || length === 4294967295; + var sizelength = length >>> 0; + if (length !== 0) { + if (!str) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!(autoLength || (sizelength <= 2147483647))) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var status = createApi(env, str, length, result); + if (status === 0 /* napi_status.napi_ok */) { + if (copied) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(copied, 1, true); + } + if (finalize_callback) { + envObject.callFinalizer(finalize_callback, str, finalize_hint); + } + } + return status; + } + }; + /** + * @__sig ippp + */ + function napi_get_array_length(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + if (!handle.isArray()) { + return envObject.setLastError(8 /* napi_status.napi_array_expected */); + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v = handle.value.length >>> 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ipppp + */ + function napi_get_arraybuffer_info(env, arraybuffer, data, byte_length) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!arraybuffer) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(arraybuffer); + if (!handle.isArrayBuffer() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (data) { + data >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var p = emnapiExternalMemory.getArrayBufferPointer(handle.value, true).address; + HEAP_DATA_VIEW.setUint32(data, p, true); + } + if (byte_length) { + byte_length >>>= 0; + HEAP_DATA_VIEW.setUint32(byte_length, handle.value.byteLength, true); + } + return envObject.clearLastError(); + } + /** + * @__sig ippp + */ + function node_api_set_prototype(env, object, value) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var obj = emnapiCtx.handleStore.get(object).value; + if (obj == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var type = typeof obj; + var v = void 0; + try { + v = (type === 'object' && obj !== null) || type === 'function' ? obj : Object(obj); + } + catch (_) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + var val = emnapiCtx.handleStore.get(value).value; + Object.setPrototypeOf(v, val); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ippp + */ + function napi_get_prototype(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + if (handle.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var v = void 0; + try { + v = handle.isObject() || handle.isFunction() ? handle.value : Object(handle.value); + } + catch (_) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var p = envObject.ensureHandleId(Object.getPrototypeOf(v)); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, p, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ippppppp + */ + function napi_get_typedarray_info(env, typedarray, type, length, data, arraybuffer, byte_offset) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!typedarray) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(typedarray); + if (!handle.isTypedArray()) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var v = handle.value; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (type) { + type >>>= 0; + var t = void 0; + if (v instanceof Int8Array) { + t = 0 /* napi_typedarray_type.napi_int8_array */; + } + else if (v instanceof Uint8Array) { + t = 1 /* napi_typedarray_type.napi_uint8_array */; + } + else if (v instanceof Uint8ClampedArray) { + t = 2 /* napi_typedarray_type.napi_uint8_clamped_array */; + } + else if (v instanceof Int16Array) { + t = 3 /* napi_typedarray_type.napi_int16_array */; + } + else if (v instanceof Uint16Array) { + t = 4 /* napi_typedarray_type.napi_uint16_array */; + } + else if (v instanceof Int32Array) { + t = 5 /* napi_typedarray_type.napi_int32_array */; + } + else if (v instanceof Uint32Array) { + t = 6 /* napi_typedarray_type.napi_uint32_array */; + } + else if (typeof Float16Array === 'function' && v instanceof Float16Array) { + t = 11 /* napi_typedarray_type.napi_float16_array */; + } + else if (v instanceof Float32Array) { + t = 7 /* napi_typedarray_type.napi_float32_array */; + } + else if (v instanceof Float64Array) { + t = 8 /* napi_typedarray_type.napi_float64_array */; + } + else if (v instanceof BigInt64Array) { + t = 9 /* napi_typedarray_type.napi_bigint64_array */; + } + else if (v instanceof BigUint64Array) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + t = 10 /* napi_typedarray_type.napi_biguint64_array */; + } + else { + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + HEAP_DATA_VIEW.setInt32(type, t, true); + } + v = emnapiExternalMemory.getOrUpdateMemoryView(v); + if (length) { + length >>>= 0; + HEAP_DATA_VIEW.setUint32(length, v.length, true); + } + if (data || arraybuffer) { + if (data) { + data >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var p = emnapiExternalMemory.getViewPointer(v, true).address; + HEAP_DATA_VIEW.setUint32(data, p, true); + } + if (arraybuffer) { + arraybuffer >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var ab = envObject.ensureHandleId(v.buffer); + HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true); + } + } + if (byte_offset) { + byte_offset >>>= 0; + HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true); + } + return envObject.clearLastError(); + } + /** + * @__sig ipppp + */ + function napi_get_buffer_info(env, buffer, data, length) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!buffer) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(buffer); + if (!handle.isBuffer(emnapiCtx.feature.Buffer)) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (handle.isDataView()) { + return napi_get_dataview_info(env, buffer, length, data, 0, 0); + } + return napi_get_typedarray_info(env, buffer, 0, length, data, 0, 0); + } + /** + * @__sig ipppppp + */ + function napi_get_dataview_info(env, dataview, byte_length, data, arraybuffer, byte_offset) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!dataview) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(dataview); + if (!handle.isDataView()) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var v = emnapiExternalMemory.getOrUpdateMemoryView(handle.value); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (byte_length) { + byte_length >>>= 0; + HEAP_DATA_VIEW.setUint32(byte_length, v.byteLength, true); + } + if (data || arraybuffer) { + if (data) { + data >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var p = emnapiExternalMemory.getViewPointer(v, true).address; + HEAP_DATA_VIEW.setUint32(data, p, true); + } + if (arraybuffer) { + arraybuffer >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var ab = envObject.ensureHandleId(v.buffer); + HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true); + } + } + if (byte_offset) { + byte_offset >>>= 0; + HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true); + } + return envObject.clearLastError(); + } + /** + * @__sig ippp + */ + function napi_get_date_value(env, value, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + if (!handle.isDate()) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + result >>>= 0; + v = handle.value.valueOf(); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setFloat64(result, v, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ippp + */ + function napi_get_value_bool(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + if (typeof handle.value !== 'boolean') { + return envObject.setLastError(7 /* napi_status.napi_boolean_expected */); + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r = handle.value ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + /** + * @__sig ippp + */ + function napi_get_value_double(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + if (typeof handle.value !== 'number') { + return envObject.setLastError(6 /* napi_status.napi_number_expected */); + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r = handle.value; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setFloat64(result, r, true); + return envObject.clearLastError(); + } + /** + * @__sig ipppp + */ + function napi_get_value_bigint_int64(env, value, result, lossless) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!emnapiCtx.feature.supportBigInt) { + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!lossless) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + var numberValue = handle.value; + if (typeof numberValue !== 'bigint') { + return envObject.setLastError(6 /* napi_status.napi_number_expected */); + } + lossless >>>= 0; + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if ((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63)))) { + HEAP_DATA_VIEW.setInt8(lossless, 1, true); + } + else { + HEAP_DATA_VIEW.setInt8(lossless, 0, true); + numberValue = numberValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); + if (numberValue >= (BigInt(1) << BigInt(63))) { + numberValue = numberValue - (BigInt(1) << BigInt(64)); + } + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var low = Number(numberValue & BigInt(0xffffffff)); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var high = Number(numberValue >> BigInt(32)); + HEAP_DATA_VIEW.setInt32(result, low, true); + HEAP_DATA_VIEW.setInt32(result + 4, high, true); + return envObject.clearLastError(); + } + /** + * @__sig ipppp + */ + function napi_get_value_bigint_uint64(env, value, result, lossless) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!emnapiCtx.feature.supportBigInt) { + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!lossless) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + var numberValue = handle.value; + if (typeof numberValue !== 'bigint') { + return envObject.setLastError(6 /* napi_status.napi_number_expected */); + } + lossless >>>= 0; + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if ((numberValue >= BigInt(0)) && (numberValue < (BigInt(1) << BigInt(64)))) { + HEAP_DATA_VIEW.setInt8(lossless, 1, true); + } + else { + HEAP_DATA_VIEW.setInt8(lossless, 0, true); + numberValue = numberValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var low = Number(numberValue & BigInt(0xffffffff)); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var high = Number(numberValue >> BigInt(32)); + HEAP_DATA_VIEW.setUint32(result, low, true); + HEAP_DATA_VIEW.setUint32(result + 4, high, true); + return envObject.clearLastError(); + } + /** + * @__sig ippppp + */ + function napi_get_value_bigint_words(env, value, sign_bit, word_count, words) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!emnapiCtx.feature.supportBigInt) { + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!word_count) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + if (!handle.isBigInt()) { + return envObject.setLastError(17 /* napi_status.napi_bigint_expected */); + } + var isMinus = handle.value < BigInt(0); + sign_bit >>>= 0; + words >>>= 0; + word_count >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + var word_count_int = HEAP_DATA_VIEW.getUint32(word_count, true); + word_count_int >>>= 0; + var wordCount = 0; + var bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value; + while (bigintValue !== BigInt(0)) { + wordCount++; + bigintValue = bigintValue >> BigInt(64); + } + bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value; + if (!sign_bit && !words) { + word_count_int = wordCount; + HEAP_DATA_VIEW.setUint32(word_count, word_count_int, true); + } + else { + if (!sign_bit) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!words) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var wordsArr = []; + while (bigintValue !== BigInt(0)) { + var uint64 = bigintValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); + wordsArr.push(uint64); + bigintValue = bigintValue >> BigInt(64); + } + var len = Math.min(word_count_int, wordsArr.length); + for (var i = 0; i < len; i++) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var low = Number(wordsArr[i] & BigInt(0xffffffff)); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var high = Number(wordsArr[i] >> BigInt(32)); + HEAP_DATA_VIEW.setUint32(words + i * 8, low, true); + HEAP_DATA_VIEW.setUint32(words + (i * 8 + 4), high, true); + } + HEAP_DATA_VIEW.setInt32(sign_bit, isMinus ? 1 : 0, true); + HEAP_DATA_VIEW.setUint32(word_count, len, true); + } + return envObject.clearLastError(); + } + /** + * @__sig ippp + */ + function napi_get_value_external(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + if (!handle.isExternal()) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var p = handle.data(); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, p, true); + return envObject.clearLastError(); + } + /** + * @__sig ippp + */ + function napi_get_value_int32(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + if (typeof handle.value !== 'number') { + return envObject.setLastError(6 /* napi_status.napi_number_expected */); + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v = new Int32Array([handle.value])[0]; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt32(result, v, true); + return envObject.clearLastError(); + } + /** + * @__sig ippp + */ + function napi_get_value_int64(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + if (typeof handle.value !== 'number') { + return envObject.setLastError(6 /* napi_status.napi_number_expected */); + } + var numberValue = handle.value; + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (numberValue === Number.POSITIVE_INFINITY || numberValue === Number.NEGATIVE_INFINITY || isNaN(numberValue)) { + HEAP_DATA_VIEW.setInt32(result, 0, true); + HEAP_DATA_VIEW.setInt32(result + 4, 0, true); + } + else if (numberValue < /* INT64_RANGE_NEGATIVE */ -9223372036854776e3) { + HEAP_DATA_VIEW.setInt32(result, 0, true); + HEAP_DATA_VIEW.setInt32(result + 4, 2147483648, true); + } + else if (numberValue >= /* INT64_RANGE_POSITIVE */ 9223372036854776000) { + HEAP_DATA_VIEW.setUint32(result, 4294967295, true); + HEAP_DATA_VIEW.setUint32(result + 4, 2147483647, true); + } + else { + $emnapiSetValueI64(result, Math.trunc(numberValue)); + } + return envObject.clearLastError(); + } + /** + * @__sig ippppp + */ + function napi_get_value_string_latin1(env, value, buf, buf_size, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + buf >>>= 0; + buf_size >>>= 0; + buf_size = buf_size >>> 0; + var handle = emnapiCtx.handleStore.get(value); + if (typeof handle.value !== 'string') { + return envObject.setLastError(3 /* napi_status.napi_string_expected */); + } + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (!buf) { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + HEAP_DATA_VIEW.setUint32(result, handle.value.length, true); + } + else if (buf_size !== 0) { + var copied = 0; + var v = void 0; + for (var i = 0; i < buf_size - 1; ++i) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + v = handle.value.charCodeAt(i) & 0xff; + HEAP_DATA_VIEW.setUint8(buf + i, v, true); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + copied++; + } + HEAP_DATA_VIEW.setUint8(buf + copied, 0, true); + if (result) { + HEAP_DATA_VIEW.setUint32(result, copied, true); + } + } + else if (result) { + HEAP_DATA_VIEW.setUint32(result, 0, true); + } + return envObject.clearLastError(); + } + /** + * @__sig ippppp + */ + function napi_get_value_string_utf8(env, value, buf, buf_size, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + buf >>>= 0; + buf_size >>>= 0; + buf_size = buf_size >>> 0; + var handle = emnapiCtx.handleStore.get(value); + if (typeof handle.value !== 'string') { + return envObject.setLastError(3 /* napi_status.napi_string_expected */); + } + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (!buf) { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var strLength = emnapiString.lengthBytesUTF8(handle.value); + HEAP_DATA_VIEW.setUint32(result, strLength, true); + } + else if (buf_size !== 0) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var copied = emnapiString.stringToUTF8(handle.value, buf, buf_size); + if (result) { + HEAP_DATA_VIEW.setUint32(result, copied, true); + } + } + else if (result) { + HEAP_DATA_VIEW.setUint32(result, 0, true); + } + return envObject.clearLastError(); + } + /** + * @__sig ippppp + */ + function napi_get_value_string_utf16(env, value, buf, buf_size, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + buf >>>= 0; + buf_size >>>= 0; + buf_size = buf_size >>> 0; + var handle = emnapiCtx.handleStore.get(value); + if (typeof handle.value !== 'string') { + return envObject.setLastError(3 /* napi_status.napi_string_expected */); + } + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (!buf) { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + HEAP_DATA_VIEW.setUint32(result, handle.value.length, true); + } + else if (buf_size !== 0) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var copied = emnapiString.stringToUTF16(handle.value, buf, buf_size * 2); + if (result) { + HEAP_DATA_VIEW.setUint32(result, copied / 2, true); + } + } + else if (result) { + HEAP_DATA_VIEW.setUint32(result, 0, true); + } + return envObject.clearLastError(); + } + /** + * @__sig ippp + */ + function napi_get_value_uint32(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + if (typeof handle.value !== 'number') { + return envObject.setLastError(6 /* napi_status.napi_number_expected */); + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v = new Uint32Array([handle.value])[0]; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.clearLastError(); + } + var convert2cMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + napi_get_array_length: napi_get_array_length, + napi_get_arraybuffer_info: napi_get_arraybuffer_info, + napi_get_buffer_info: napi_get_buffer_info, + napi_get_dataview_info: napi_get_dataview_info, + napi_get_date_value: napi_get_date_value, + napi_get_prototype: napi_get_prototype, + napi_get_typedarray_info: napi_get_typedarray_info, + napi_get_value_bigint_int64: napi_get_value_bigint_int64, + napi_get_value_bigint_uint64: napi_get_value_bigint_uint64, + napi_get_value_bigint_words: napi_get_value_bigint_words, + napi_get_value_bool: napi_get_value_bool, + napi_get_value_double: napi_get_value_double, + napi_get_value_external: napi_get_value_external, + napi_get_value_int32: napi_get_value_int32, + napi_get_value_int64: napi_get_value_int64, + napi_get_value_string_latin1: napi_get_value_string_latin1, + napi_get_value_string_utf16: napi_get_value_string_utf16, + napi_get_value_string_utf8: napi_get_value_string_utf8, + napi_get_value_uint32: napi_get_value_uint32, + node_api_set_prototype: node_api_set_prototype + }); + /** + * @__sig ipip + */ + function napi_create_int32(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v = emnapiCtx.addToCurrentScope(value).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.clearLastError(); + } + /** + * @__sig ipip + */ + function napi_create_uint32(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v = emnapiCtx.addToCurrentScope(value >>> 0).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.clearLastError(); + } + /** + * @__sig ipjp + */ + function napi_create_int64(env, low, high, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + var value; + if (!high) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + value = Number(low); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v1 = emnapiCtx.addToCurrentScope(value).id; + high >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(high, v1, true); + return envObject.clearLastError(); + } + /** + * @__sig ipdp + */ + function napi_create_double(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v = emnapiCtx.addToCurrentScope(value).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.clearLastError(); + } + /** + * @__sig ipppp + */ + function napi_create_string_latin1(env, str, length, result) { + return emnapiString.newString(env, str, length, result, function (str, autoLength, sizeLength) { + var latin1String = ''; + var len = 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (autoLength) { + while (true) { + var ch = HEAP_DATA_VIEW.getUint8(str, true); + if (!ch) + break; + latin1String += String.fromCharCode(ch); + str++; + } + } + else { + while (len < sizeLength) { + var ch = HEAP_DATA_VIEW.getUint8(str, true); + if (!ch) + break; + latin1String += String.fromCharCode(ch); + len++; + str++; + } + } + return latin1String; + }); + } + /** + * @__sig ipppp + */ + function napi_create_string_utf16(env, str, length, result) { + return emnapiString.newString(env, str, length, result, function (str) { + return emnapiString.UTF16ToString(str, length); + }); + } + /** + * @__sig ipppp + */ + function napi_create_string_utf8(env, str, length, result) { + return emnapiString.newString(env, str, length, result, function (str) { + return emnapiString.UTF8ToString(str, length); + }); + } + /** + * @__sig ippppppp + */ + function node_api_create_external_string_latin1(env, str, length, finalize_callback, finalize_hint, result, copied) { + return emnapiString.newExternalString(env, str, length, finalize_callback, finalize_hint, result, copied, napi_create_string_latin1, undefined); + } + /** + * @__sig ippppppp + */ + function node_api_create_external_string_utf16(env, str, length, finalize_callback, finalize_hint, result, copied) { + return emnapiString.newExternalString(env, str, length, finalize_callback, finalize_hint, result, copied, napi_create_string_utf16, undefined); + } + /** + * @__sig ipppp + */ + function node_api_create_property_key_latin1(env, str, length, result) { + return napi_create_string_latin1(env, str, length, result); + } + /** + * @__sig ipppp + */ + function node_api_create_property_key_utf8(env, str, length, result) { + return napi_create_string_utf8(env, str, length, result); + } + /** + * @__sig ipppp + */ + function node_api_create_property_key_utf16(env, str, length, result) { + return napi_create_string_utf16(env, str, length, result); + } + /** + * @__sig ipjp + */ + function napi_create_bigint_int64(env, low, high, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!emnapiCtx.feature.supportBigInt) { + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + var value; + if (!high) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + value = low; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v1 = emnapiCtx.addToCurrentScope(value).id; + high >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(high, v1, true); + return envObject.clearLastError(); + } + /** + * @__sig ipjp + */ + function napi_create_bigint_uint64(env, low, high, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!emnapiCtx.feature.supportBigInt) { + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + var value; + if (!high) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + value = low & ((BigInt(1) << BigInt(64)) - BigInt(1)); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v1 = emnapiCtx.addToCurrentScope(value).id; + high >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(high, v1, true); + return envObject.clearLastError(); + } + /** + * @__sig ipippp + */ + function napi_create_bigint_words(env, sign_bit, word_count, words, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v, i; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!emnapiCtx.feature.supportBigInt) { + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + words >>>= 0; + word_count >>>= 0; + word_count = word_count >>> 0; + if (word_count > 2147483647) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + if (word_count > (1024 * 1024 / (4 * 8) / 2)) { + throw new RangeError('Maximum BigInt size exceeded'); + } + var value = BigInt(0); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + for (i = 0; i < word_count; i++) { + var low = HEAP_DATA_VIEW.getUint32(words + i * 8, true); + var high = HEAP_DATA_VIEW.getUint32(words + (i * 8 + 4), true); + var wordi = BigInt(low) | (BigInt(high) << BigInt(32)); + value += wordi << BigInt(64 * i); + } + value *= ((BigInt(sign_bit) % BigInt(2) === BigInt(0)) ? BigInt(1) : BigInt(-1)); + result >>>= 0; + v = emnapiCtx.addToCurrentScope(value).id; + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + var convert2napiMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + napi_create_bigint_int64: napi_create_bigint_int64, + napi_create_bigint_uint64: napi_create_bigint_uint64, + napi_create_bigint_words: napi_create_bigint_words, + napi_create_double: napi_create_double, + napi_create_int32: napi_create_int32, + napi_create_int64: napi_create_int64, + napi_create_string_latin1: napi_create_string_latin1, + napi_create_string_utf16: napi_create_string_utf16, + napi_create_string_utf8: napi_create_string_utf8, + napi_create_uint32: napi_create_uint32, + node_api_create_external_string_latin1: node_api_create_external_string_latin1, + node_api_create_external_string_utf16: node_api_create_external_string_utf16, + node_api_create_property_key_latin1: node_api_create_property_key_latin1, + node_api_create_property_key_utf16: node_api_create_property_key_utf16, + node_api_create_property_key_utf8: node_api_create_property_key_utf8 + }); + function emnapiCreateFunction(envObject, utf8name, length, cb, data) { + utf8name >>>= 0; + var functionName = (!utf8name || !length) ? '' : (emnapiString.UTF8ToString(utf8name, length)); + var f; + var napiCallback = (wasmTable.get(cb)); + var callback = function (envObject) { + return napiCallback(envObject.id, envObject.ctx.scopeStore.currentScope.id); + }; + var makeFunction = function (envObject, callback) { + return function () { + var scope = envObject.ctx.openScope(envObject); + var callbackInfo = scope.callbackInfo; + callbackInfo.data = data; + callbackInfo.args = arguments; + callbackInfo.thiz = this; + callbackInfo.fn = f; + try { + var napiValue = envObject.callIntoModule(callback); + return (!napiValue) ? undefined : envObject.ctx.handleStore.get(napiValue).value; + } + finally { + callbackInfo.data = 0; + callbackInfo.args = undefined; + callbackInfo.thiz = undefined; + callbackInfo.fn = undefined; + envObject.ctx.closeScope(envObject, scope); + } + }; + }; + if (functionName === '') { + f = makeFunction(envObject, callback); + return { status: 0 /* napi_status.napi_ok */, f: f }; + } + if (!(/^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(functionName))) { + return { status: 1 /* napi_status.napi_invalid_arg */, f: undefined }; + } + if (emnapiCtx.feature.supportNewFunction) { + var _ = makeFunction(envObject, callback); + try { + f = (new Function('_', 'return function ' + functionName + '(){' + + '"use strict";' + + 'return _.apply(this,arguments);' + + '};'))(_); + } + catch (_err) { + f = makeFunction(envObject, callback); + if (emnapiCtx.feature.canSetFunctionName) + Object.defineProperty(f, 'name', { value: functionName }); + } + } + else { + f = makeFunction(envObject, callback); + if (emnapiCtx.feature.canSetFunctionName) + Object.defineProperty(f, 'name', { value: functionName }); + } + return { status: 0 /* napi_status.napi_ok */, f: f }; + } + function emnapiDefineProperty(envObject, obj, propertyName, method, getter, setter, value, attributes, data) { + if (getter || setter) { + var localGetter = void 0; + var localSetter = void 0; + if (getter) { + localGetter = emnapiCreateFunction(envObject, 0, 0, getter, data).f; + } + if (setter) { + localSetter = emnapiCreateFunction(envObject, 0, 0, setter, data).f; + } + var desc = { + configurable: (attributes & 4 /* napi_property_attributes.napi_configurable */) !== 0, + enumerable: (attributes & 2 /* napi_property_attributes.napi_enumerable */) !== 0, + get: localGetter, + set: localSetter + }; + Object.defineProperty(obj, propertyName, desc); + } + else if (method) { + var localMethod = emnapiCreateFunction(envObject, 0, 0, method, data).f; + var desc = { + configurable: (attributes & 4 /* napi_property_attributes.napi_configurable */) !== 0, + enumerable: (attributes & 2 /* napi_property_attributes.napi_enumerable */) !== 0, + writable: (attributes & 1 /* napi_property_attributes.napi_writable */) !== 0, + value: localMethod + }; + Object.defineProperty(obj, propertyName, desc); + } + else { + var desc = { + configurable: (attributes & 4 /* napi_property_attributes.napi_configurable */) !== 0, + enumerable: (attributes & 2 /* napi_property_attributes.napi_enumerable */) !== 0, + writable: (attributes & 1 /* napi_property_attributes.napi_writable */) !== 0, + value: emnapiCtx.handleStore.get(value).value + }; + Object.defineProperty(obj, propertyName, desc); + } + } + function emnapiGetHandle(js_object) { + var handle = emnapiCtx.handleStore.get(js_object); + if (!(handle.isObject() || handle.isFunction())) { + return { status: 1 /* napi_status.napi_invalid_arg */ }; + } + if (typeof emnapiExternalMemory !== 'undefined' && ArrayBuffer.isView(handle.value)) { + if (emnapiExternalMemory.wasmMemoryViewTable.has(handle.value)) { + handle = emnapiCtx.addToCurrentScope(emnapiExternalMemory.wasmMemoryViewTable.get(handle.value)); + } + } + return { status: 0 /* napi_status.napi_ok */, handle: handle }; + } + function emnapiWrap(env, js_object, native_object, finalize_cb, finalize_hint, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var referenceId; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!emnapiCtx.feature.supportFinalizer) { + if (finalize_cb) { + throw emnapiCtx.createNotSupportWeakRefError('napi_wrap', 'Parameter "finalize_cb" must be 0(NULL)'); + } + if (result) { + throw emnapiCtx.createNotSupportWeakRefError('napi_wrap', 'Parameter "result" must be 0(NULL)'); + } + } + if (!js_object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handleResult = emnapiGetHandle(js_object); + if (handleResult.status !== 0 /* napi_status.napi_ok */) { + return envObject.setLastError(handleResult.status); + } + var handle = handleResult.handle; + if (envObject.getObjectBinding(handle.value).wrapped !== 0) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var reference = void 0; + if (result) { + if (!finalize_cb) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 1 /* ReferenceOwnership.kUserland */, finalize_cb, native_object, finalize_hint); + result >>>= 0; + referenceId = reference.id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, referenceId, true); + } + else { + if (finalize_cb) { + reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 0 /* ReferenceOwnership.kRuntime */, finalize_cb, native_object, finalize_hint); + } + else { + reference = emnapiCtx.createReferenceWithData(envObject, handle.id, 0, 0 /* ReferenceOwnership.kRuntime */, native_object); + } + } + envObject.getObjectBinding(handle.value).wrapped = reference.id; + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + function emnapiUnwrap(env, js_object, result, action) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var data; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!js_object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (action === 0 /* UnwrapAction.KeepWrap */) { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var value = emnapiCtx.handleStore.get(js_object); + if (!(value.isObject() || value.isFunction())) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var binding = envObject.getObjectBinding(value.value); + var referenceId = binding.wrapped; + var ref = emnapiCtx.refStore.get(referenceId); + if (!ref) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (result) { + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + data = ref.data(); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, data, true); + } + if (action === 1 /* UnwrapAction.RemoveWrap */) { + binding.wrapped = 0; + if (ref.ownership() === 1 /* ReferenceOwnership.kUserland */) { + // When the wrap is been removed, the finalizer should be reset. + ref.resetFinalizer(); + } + else { + ref.dispose(); + } + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ipppppppp + */ + function napi_define_class(env, utf8name, length, constructor, callback_data, property_count, properties, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var propPtr, valueHandleId, attributes; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!constructor) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + length >>>= 0; + properties >>>= 0; + property_count >>>= 0; + property_count = property_count >>> 0; + if (property_count > 0) { + if (!properties) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + if (!((length >= -1 && length <= 2147483647) || length === 4294967295) || (!utf8name)) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var fresult = emnapiCreateFunction(envObject, utf8name, length, constructor, callback_data); + if (fresult.status !== 0 /* napi_status.napi_ok */) + return envObject.setLastError(fresult.status); + var F = fresult.f; + var propertyName = void 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + for (var i = 0; i < property_count; i++) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + propPtr = properties + (i * (4 * 8)); + var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true); + var name_1 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true); + var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true); + var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true); + var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true); + var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true); + attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true); + attributes >>>= 0; + var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true); + if (utf8Name) { + propertyName = emnapiString.UTF8ToString(utf8Name, -1); + } + else { + if (!name_1) { + return envObject.setLastError(4 /* napi_status.napi_name_expected */); + } + propertyName = emnapiCtx.handleStore.get(name_1).value; + if (typeof propertyName !== 'string' && typeof propertyName !== 'symbol') { + return envObject.setLastError(4 /* napi_status.napi_name_expected */); + } + } + if ((attributes & 1024 /* napi_property_attributes.napi_static */) !== 0) { + emnapiDefineProperty(envObject, F, propertyName, method, getter, setter, value, attributes, data); + continue; + } + emnapiDefineProperty(envObject, F.prototype, propertyName, method, getter, setter, value, attributes, data); + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var valueHandle = emnapiCtx.addToCurrentScope(F); + valueHandleId = valueHandle.id; + result >>>= 0; + HEAP_DATA_VIEW.setUint32(result, valueHandleId, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ipppppp + */ + function napi_wrap(env, js_object, native_object, finalize_cb, finalize_hint, result) { + return emnapiWrap(env, js_object, native_object, finalize_cb, finalize_hint, result); + } + /** + * @__sig ippp + */ + function napi_unwrap(env, js_object, result) { + return emnapiUnwrap(env, js_object, result, 0 /* UnwrapAction.KeepWrap */); + } + /** + * @__sig ippp + */ + function napi_remove_wrap(env, js_object, result) { + return emnapiUnwrap(env, js_object, result, 1 /* UnwrapAction.RemoveWrap */); + } + /** + * @__sig ippp + */ + function napi_type_tag_object(env, object, type_tag) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!object) { + return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */); + } + var value = emnapiCtx.handleStore.get(object); + if (!(value.isObject() || value.isFunction())) { + return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 2 /* napi_status.napi_object_expected */); + } + type_tag >>>= 0; + if (!type_tag) { + return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */); + } + var binding = envObject.getObjectBinding(value.value); + if (binding.tag !== null) { + return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */); + } + var tag = new Uint8Array(16); + tag.set(new Uint8Array(wasmMemory.buffer, type_tag, 16)); + binding.tag = new Uint32Array(tag.buffer); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ipppp + */ + function napi_check_object_type_tag(env, object, type_tag, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars, one-var + var ret = true; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!object) { + return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */); + } + var value = emnapiCtx.handleStore.get(object); + if (!(value.isObject() || value.isFunction())) { + return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 2 /* napi_status.napi_object_expected */); + } + if (!type_tag) { + return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */); + } + if (!result) { + return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 /* napi_status.napi_pending_exception */ : 1 /* napi_status.napi_invalid_arg */); + } + var binding = envObject.getObjectBinding(value.value); + if (binding.tag !== null) { + type_tag >>>= 0; + var tag = binding.tag; + var typeTag = new Uint32Array(wasmMemory.buffer, type_tag, 4); + ret = (tag[0] === typeTag[0] && + tag[1] === typeTag[1] && + tag[2] === typeTag[2] && + tag[3] === typeTag[3]); + } + else { + ret = false; + } + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, ret ? 1 : 0, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ipppppp + */ + function napi_add_finalizer(env, js_object, finalize_data, finalize_cb, finalize_hint, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!emnapiCtx.feature.supportFinalizer) { + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + if (!js_object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!finalize_cb) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handleResult = emnapiGetHandle(js_object); + if (handleResult.status !== 0 /* napi_status.napi_ok */) { + return envObject.setLastError(handleResult.status); + } + var handle = handleResult.handle; + var ownership = !result ? 0 /* ReferenceOwnership.kRuntime */ : 1 /* ReferenceOwnership.kUserland */; + finalize_data >>>= 0; + finalize_cb >>>= 0; + finalize_hint >>>= 0; + var reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, ownership, finalize_cb, finalize_data, finalize_hint); + if (result) { + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var referenceId = reference.id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, referenceId, true); + } + return envObject.clearLastError(); + } + /** + * @__sig ipppp + */ + function node_api_post_finalizer(env, finalize_cb, finalize_data, finalize_hint) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + var envObject = emnapiCtx.envStore.get(env); + envObject.enqueueFinalizer(emnapiCtx.createTrackedFinalizer(envObject, finalize_cb, finalize_data, finalize_hint)); + return envObject.clearLastError(); + } + var wrapMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + napi_add_finalizer: napi_add_finalizer, + napi_check_object_type_tag: napi_check_object_type_tag, + napi_define_class: napi_define_class, + napi_remove_wrap: napi_remove_wrap, + napi_type_tag_object: napi_type_tag_object, + napi_unwrap: napi_unwrap, + napi_wrap: napi_wrap, + node_api_post_finalizer: node_api_post_finalizer + }); + /** + * @__sig ipippppp + */ + function emnapi_create_memory_view(env, typedarray_type, external_data, byte_length, finalize_cb, finalize_hint, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + byte_length >>>= 0; + external_data >>>= 0; + result >>>= 0; + byte_length = byte_length >>> 0; + if (!external_data) { + byte_length = 0; + } + if (byte_length > 2147483647) { + throw new RangeError('Cannot create a memory view larger than 2147483647 bytes'); + } + if ((external_data + byte_length) > wasmMemory.buffer.byteLength) { + throw new RangeError('Memory out of range'); + } + if (!emnapiCtx.feature.supportFinalizer && finalize_cb) { + throw emnapiCtx.createNotSupportWeakRefError('emnapi_create_memory_view', 'Parameter "finalize_cb" must be 0(NULL)'); + } + var viewDescriptor = void 0; + switch (typedarray_type) { + case 0 /* emnapi_memory_view_type.emnapi_int8_array */: + viewDescriptor = { Ctor: Int8Array, address: external_data, length: byte_length, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; + break; + case 1 /* emnapi_memory_view_type.emnapi_uint8_array */: + viewDescriptor = { Ctor: Uint8Array, address: external_data, length: byte_length, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; + break; + case 2 /* emnapi_memory_view_type.emnapi_uint8_clamped_array */: + viewDescriptor = { Ctor: Uint8ClampedArray, address: external_data, length: byte_length, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; + break; + case 3 /* emnapi_memory_view_type.emnapi_int16_array */: + viewDescriptor = { Ctor: Int16Array, address: external_data, length: byte_length >> 1, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; + break; + case 4 /* emnapi_memory_view_type.emnapi_uint16_array */: + viewDescriptor = { Ctor: Uint16Array, address: external_data, length: byte_length >> 1, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; + break; + case 5 /* emnapi_memory_view_type.emnapi_int32_array */: + viewDescriptor = { Ctor: Int32Array, address: external_data, length: byte_length >> 2, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; + break; + case 6 /* emnapi_memory_view_type.emnapi_uint32_array */: + viewDescriptor = { Ctor: Uint32Array, address: external_data, length: byte_length >> 2, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; + break; + case 7 /* emnapi_memory_view_type.emnapi_float32_array */: + viewDescriptor = { Ctor: Float32Array, address: external_data, length: byte_length >> 2, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; + break; + case 8 /* emnapi_memory_view_type.emnapi_float64_array */: + viewDescriptor = { Ctor: Float64Array, address: external_data, length: byte_length >> 3, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; + break; + case 9 /* emnapi_memory_view_type.emnapi_bigint64_array */: + viewDescriptor = { Ctor: BigInt64Array, address: external_data, length: byte_length >> 3, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; + break; + case 10 /* emnapi_memory_view_type.emnapi_biguint64_array */: + viewDescriptor = { Ctor: BigUint64Array, address: external_data, length: byte_length >> 3, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; + break; + case -1 /* emnapi_memory_view_type.emnapi_data_view */: + viewDescriptor = { Ctor: DataView, address: external_data, length: byte_length, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; + break; + case 11 /* emnapi_memory_view_type.emnapi_float16_array */: + if (typeof Float16Array !== 'function') { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + viewDescriptor = { Ctor: Float16Array, address: external_data, length: byte_length >> 1, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; + break; + case -2 /* emnapi_memory_view_type.emnapi_buffer */: { + if (!emnapiCtx.feature.Buffer) { + throw emnapiCtx.createNotSupportBufferError('emnapi_create_memory_view', ''); + } + viewDescriptor = { Ctor: emnapiCtx.feature.Buffer, address: external_data, length: byte_length, ownership: 1 /* ReferenceOwnership.kUserland */, runtimeAllocated: 0 }; + break; + } + default: return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var Ctor = viewDescriptor.Ctor; + var typedArray = typedarray_type === -2 /* emnapi_memory_view_type.emnapi_buffer */ + ? emnapiCtx.feature.Buffer.from(wasmMemory.buffer, viewDescriptor.address, viewDescriptor.length) + : new Ctor(wasmMemory.buffer, viewDescriptor.address, viewDescriptor.length); + var handle = emnapiCtx.addToCurrentScope(typedArray); + emnapiExternalMemory.wasmMemoryViewTable.set(typedArray, viewDescriptor); + if (finalize_cb) { + var status_1 = napi_add_finalizer(env, handle.id, external_data, finalize_cb, finalize_hint, /* NULL */ 0); + if (status_1 === 10 /* napi_status.napi_pending_exception */) { + var err = envObject.tryCatch.extractException(); + envObject.clearLastError(); + throw err; + } + else if (status_1 !== 0 /* napi_status.napi_ok */) { + return envObject.setLastError(status_1); + } + } + value = handle.id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig i + */ + function emnapi_is_support_weakref() { + return emnapiCtx.feature.supportFinalizer ? 1 : 0; + } + /** + * @__sig i + */ + function emnapi_is_support_bigint() { + return emnapiCtx.feature.supportBigInt ? 1 : 0; + } + /** + * @__sig i + */ + function emnapi_is_node_binding_available() { + return emnapiNodeBinding ? 1 : 0; + } + function $emnapiSyncMemory(js_to_wasm, arrayBufferOrView, offset, len) { + offset = offset !== null && offset !== void 0 ? offset : 0; + offset = offset >>> 0; + var view; + if (arrayBufferOrView instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) { + var pointer = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false).address; + if (!pointer) + throw new Error('Unknown ArrayBuffer address'); + if (typeof len !== 'number' || len === -1 || len === 4294967295) { + len = arrayBufferOrView.byteLength - offset; + } + len = len >>> 0; + if (len === 0) + return arrayBufferOrView; + view = new Uint8Array(arrayBufferOrView, offset, len); + var wasmMemoryU8 = new Uint8Array(wasmMemory.buffer); + if (!js_to_wasm) { + view.set(wasmMemoryU8.subarray(pointer, pointer + len)); + } + else { + wasmMemoryU8.set(view, pointer); + } + return arrayBufferOrView; + } + if (ArrayBuffer.isView(arrayBufferOrView)) { + var viewPointerInfo = emnapiExternalMemory.getViewPointer(arrayBufferOrView, false); + var latestView = viewPointerInfo.view; + var pointer = viewPointerInfo.address; + if (!pointer) + throw new Error('Unknown ArrayBuffer address'); + if (typeof len !== 'number' || len === -1 || len === 4294967295) { + len = latestView.byteLength - offset; + } + len = len >>> 0; + if (len === 0) + return latestView; + view = new Uint8Array(latestView.buffer, latestView.byteOffset + offset, len); + var wasmMemoryU8 = new Uint8Array(wasmMemory.buffer); + if (!js_to_wasm) { + view.set(wasmMemoryU8.subarray(pointer, pointer + len)); + } + else { + wasmMemoryU8.set(view, pointer); + } + return latestView; + } + throw new TypeError('emnapiSyncMemory expect ArrayBuffer or ArrayBufferView as first parameter'); + } + /** + * @__sig ipippp + */ + function emnapi_sync_memory(env, js_to_wasm, arraybuffer_or_view, offset, len) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!arraybuffer_or_view) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + arraybuffer_or_view >>>= 0; + offset >>>= 0; + len >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + var handleId = HEAP_DATA_VIEW.getUint32(arraybuffer_or_view, true); + var handle = envObject.ctx.handleStore.get(handleId); + if (!handle.isArrayBuffer() && !handle.isTypedArray() && !handle.isDataView() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var ret = $emnapiSyncMemory(Boolean(js_to_wasm), handle.value, offset, len); + if (handle.value !== ret) { + arraybuffer_or_view >>>= 0; + v = envObject.ensureHandleId(ret); + HEAP_DATA_VIEW.setUint32(arraybuffer_or_view, v, true); + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + function $emnapiGetMemoryAddress(arrayBufferOrView) { + var isArrayBuffer = arrayBufferOrView instanceof ArrayBuffer; + var isDataView = arrayBufferOrView instanceof DataView; + var isTypedArray = ArrayBuffer.isView(arrayBufferOrView) && !isDataView; + if (!isArrayBuffer && !isTypedArray && !isDataView && !emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) { + throw new TypeError('emnapiGetMemoryAddress expect ArrayBuffer or ArrayBufferView as first parameter'); + } + var info; + if (isArrayBuffer) { + info = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false); + } + else { + info = emnapiExternalMemory.getViewPointer(arrayBufferOrView, false); + } + return { + address: info.address, + ownership: info.ownership, + runtimeAllocated: info.runtimeAllocated + }; + } + /** + * @__sig ipppp + */ + function emnapi_get_memory_address(env, arraybuffer_or_view, address, ownership, runtime_allocated) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var p, runtimeAllocated, ownershipOut; + var info; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!arraybuffer_or_view) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!address && !ownership && !runtime_allocated) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var handle = envObject.ctx.handleStore.get(arraybuffer_or_view); + info = $emnapiGetMemoryAddress(handle.value); + p = info.address; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (address) { + address >>>= 0; + HEAP_DATA_VIEW.setUint32(address, p, true); + } + if (ownership) { + ownership >>>= 0; + ownershipOut = info.ownership; + HEAP_DATA_VIEW.setInt32(ownership, ownershipOut, true); + } + if (runtime_allocated) { + runtime_allocated >>>= 0; + runtimeAllocated = info.runtimeAllocated; + HEAP_DATA_VIEW.setInt8(runtime_allocated, runtimeAllocated, true); + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ipp + */ + function emnapi_get_runtime_version(env, version) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + var envObject = emnapiCtx.envStore.get(env); + if (!version) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var runtimeVersion; + try { + runtimeVersion = emnapiCtx.getRuntimeVersions().version; + } + catch (_) { + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var versions = runtimeVersion.split('.') + .map(function (n) { return Number(n); }); + version >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(version, versions[0], true); + HEAP_DATA_VIEW.setUint32(version + 4, versions[1], true); + HEAP_DATA_VIEW.setUint32(version + 8, versions[2], true); + return envObject.clearLastError(); + } + var emnapiMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + $emnapiGetMemoryAddress: $emnapiGetMemoryAddress, + $emnapiSyncMemory: $emnapiSyncMemory, + emnapi_create_memory_view: emnapi_create_memory_view, + emnapi_get_memory_address: emnapi_get_memory_address, + emnapi_get_runtime_version: emnapi_get_runtime_version, + emnapi_is_node_binding_available: emnapi_is_node_binding_available, + emnapi_is_support_bigint: emnapi_is_support_bigint, + emnapi_is_support_weakref: emnapi_is_support_weakref, + emnapi_sync_memory: emnapi_sync_memory + }); + /** + * @__sig ipp + */ + function napi_create_array(env, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = emnapiCtx.addToCurrentScope([]).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + /** + * @__sig ippp + */ + function napi_create_array_with_length(env, length, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + length >>>= 0; + result >>>= 0; + length = length >>> 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = emnapiCtx.addToCurrentScope(new Array(length)).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + function emnapiCreateArrayBuffer(byte_length, data, shared) { + byte_length >>>= 0; + byte_length = byte_length >>> 0; + var arrayBuffer = shared ? new SharedArrayBuffer(byte_length) : new ArrayBuffer(byte_length); + if (data) { + data >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var p = emnapiExternalMemory.getArrayBufferPointer(arrayBuffer, true).address; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(data, p, true); + } + return arrayBuffer; + } + /** + * @__sig ipppp + */ + function napi_create_arraybuffer(env, byte_length, data, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, false); + value = emnapiCtx.addToCurrentScope(arrayBuffer).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ipppp + */ + function node_api_create_sharedarraybuffer(env, byte_length, data, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, true); + value = emnapiCtx.addToCurrentScope(arrayBuffer).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ipdp + */ + function napi_create_date(env, time, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + value = emnapiCtx.addToCurrentScope(new Date(time)).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ippppp + */ + function napi_create_external(env, data, finalize_cb, finalize_hint, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!emnapiCtx.feature.supportFinalizer && finalize_cb) { + throw emnapiCtx.createNotSupportWeakRefError('napi_create_external', 'Parameter "finalize_cb" must be 0(NULL)'); + } + var externalHandle = emnapiCtx.getCurrentScope().addExternal(data); + if (finalize_cb) { + emnapiCtx.createReferenceWithFinalizer(envObject, externalHandle.id, 0, 0 /* ReferenceOwnership.kRuntime */, finalize_cb, data, finalize_hint); + } + result >>>= 0; + value = externalHandle.id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ipppppp + */ + function napi_create_external_arraybuffer(env, external_data, byte_length, finalize_cb, finalize_hint, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + byte_length >>>= 0; + external_data >>>= 0; + result >>>= 0; + byte_length = byte_length >>> 0; + if (!external_data) { + byte_length = 0; + } + if ((external_data + byte_length) > wasmMemory.buffer.byteLength) { + throw new RangeError('Memory out of range'); + } + if (!emnapiCtx.feature.supportFinalizer && finalize_cb) { + throw emnapiCtx.createNotSupportWeakRefError('napi_create_external_arraybuffer', 'Parameter "finalize_cb" must be 0(NULL)'); + } + var arrayBuffer = new ArrayBuffer(byte_length); + if (byte_length === 0) { + try { + var MessageChannel_1 = emnapiCtx.feature.MessageChannel; + var messageChannel = new MessageChannel_1(); + messageChannel.port1.postMessage(arrayBuffer, [arrayBuffer]); + } + catch (_) { } + } + else { + var u8arr = new Uint8Array(arrayBuffer); + u8arr.set(new Uint8Array(wasmMemory.buffer).subarray(external_data, external_data + byte_length)); + emnapiExternalMemory.table.set(arrayBuffer, { + address: external_data, + ownership: 1 /* ReferenceOwnership.kUserland */, + runtimeAllocated: 0 + }); + } + var handle = emnapiCtx.addToCurrentScope(arrayBuffer); + if (finalize_cb) { + var status_1 = napi_add_finalizer(env, handle.id, external_data, finalize_cb, finalize_hint, /* NULL */ 0); + if (status_1 === 10 /* napi_status.napi_pending_exception */) { + var err = envObject.tryCatch.extractException(); + envObject.clearLastError(); + throw err; + } + else if (status_1 !== 0 /* napi_status.napi_ok */) { + return envObject.setLastError(status_1); + } + } + value = handle.id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ipp + */ + function napi_create_object(env, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = emnapiCtx.addToCurrentScope({}).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + /** + * @__sig ipppppp + */ + function node_api_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + property_count >>>= 0; + property_count = property_count >>> 0; + if (property_count > 0) { + if (!property_names) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!property_values) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var v8_prototype_or_null = prototype_or_null + ? emnapiCtx.handleStore.get(prototype_or_null).value + : null; + var properties = {}; + property_names >>>= 0; + property_values >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + for (var i = 0; i < property_count; i++) { + var name_value = emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_names + i * 4, true)).value; + if (!(typeof name_value === "string" || typeof name_value === "symbol")) + return envObject.setLastError(4 /* napi_status.napi_name_expected */); + properties[name_value] = { + value: emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_values + i * 4, true)).value, + writable: true, + enumerable: true, + configurable: true + }; + } + var obj; + try { + obj = Object.defineProperties(Object.create(v8_prototype_or_null), properties); + } + catch (_) { + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = emnapiCtx.addToCurrentScope(obj).id; + result >>>= 0; + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + /** + * @__sig ippp + */ + function napi_create_symbol(env, description, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (!description) { + // eslint-disable-next-line symbol-description, @typescript-eslint/no-unused-vars + var value = emnapiCtx.addToCurrentScope(Symbol()).id; + HEAP_DATA_VIEW.setUint32(result, value, true); + } + else { + var handle = emnapiCtx.handleStore.get(description); + var desc = handle.value; + if (typeof desc !== 'string') { + return envObject.setLastError(3 /* napi_status.napi_string_expected */); + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v = emnapiCtx.addToCurrentScope(Symbol(desc)).id; + HEAP_DATA_VIEW.setUint32(result, v, true); + } + return envObject.clearLastError(); + } + /** + * @__sig ipipppp + */ + function napi_create_typedarray(env, type, length, arraybuffer, byte_offset, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!arraybuffer) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(arraybuffer); + if (!handle.isArrayBuffer()) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var buffer = handle.value; + byte_offset >>>= 0; + length >>>= 0; + var createTypedArray = function (envObject, Type, size_of_element, buffer, byte_offset, length) { + var _a; + byte_offset = byte_offset >>> 0; + length = length >>> 0; + if (size_of_element > 1) { + if ((byte_offset) % (size_of_element) !== 0) { + var err = new RangeError("start offset of ".concat((_a = Type.name) !== null && _a !== void 0 ? _a : '', " should be a multiple of ").concat(size_of_element)); + err.code = 'ERR_NAPI_INVALID_TYPEDARRAY_ALIGNMENT'; + envObject.tryCatch.setError(err); + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + } + if (((length * size_of_element) + byte_offset) > buffer.byteLength) { + var err = new RangeError('Invalid typed array length'); + err.code = 'ERR_NAPI_INVALID_TYPEDARRAY_LENGTH'; + envObject.tryCatch.setError(err); + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + var out = new Type(buffer, byte_offset, length); + if (buffer === wasmMemory.buffer) { + if (!emnapiExternalMemory.wasmMemoryViewTable.has(out)) { + emnapiExternalMemory.wasmMemoryViewTable.set(out, { + Ctor: Type, + address: byte_offset, + length: length, + ownership: 1 /* ReferenceOwnership.kUserland */, + runtimeAllocated: 0 + }); + } + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + value = emnapiCtx.addToCurrentScope(out).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + }; + switch (type) { + case 0 /* napi_typedarray_type.napi_int8_array */: + return createTypedArray(envObject, Int8Array, 1, buffer, byte_offset, length); + case 1 /* napi_typedarray_type.napi_uint8_array */: + return createTypedArray(envObject, Uint8Array, 1, buffer, byte_offset, length); + case 2 /* napi_typedarray_type.napi_uint8_clamped_array */: + return createTypedArray(envObject, Uint8ClampedArray, 1, buffer, byte_offset, length); + case 3 /* napi_typedarray_type.napi_int16_array */: + return createTypedArray(envObject, Int16Array, 2, buffer, byte_offset, length); + case 4 /* napi_typedarray_type.napi_uint16_array */: + return createTypedArray(envObject, Uint16Array, 2, buffer, byte_offset, length); + case 5 /* napi_typedarray_type.napi_int32_array */: + return createTypedArray(envObject, Int32Array, 4, buffer, byte_offset, length); + case 6 /* napi_typedarray_type.napi_uint32_array */: + return createTypedArray(envObject, Uint32Array, 4, buffer, byte_offset, length); + case 7 /* napi_typedarray_type.napi_float32_array */: + return createTypedArray(envObject, Float32Array, 4, buffer, byte_offset, length); + case 8 /* napi_typedarray_type.napi_float64_array */: + return createTypedArray(envObject, Float64Array, 8, buffer, byte_offset, length); + case 9 /* napi_typedarray_type.napi_bigint64_array */: + return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length); + case 10 /* napi_typedarray_type.napi_biguint64_array */: + return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length); + case 11 /* napi_typedarray_type.napi_float16_array */: + if (typeof Float16Array !== 'function') { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + return createTypedArray(envObject, Float16Array, 2, buffer, byte_offset, length); + default: + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__deps malloc + * @__sig ippp + */ + function napi_create_buffer(env, size, data, result) { + var _a; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value, pointer; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var Buffer = emnapiCtx.feature.Buffer; + if (!Buffer) { + throw emnapiCtx.createNotSupportBufferError('napi_create_buffer', ''); + } + result >>>= 0; + var buffer = void 0; + size >>>= 0; + size = size >>> 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (!data || (size === 0)) { + buffer = Buffer.alloc(size); + value = emnapiCtx.addToCurrentScope(buffer).id; + HEAP_DATA_VIEW.setUint32(result, value, true); + } + else { + pointer = _malloc(size); + if (!pointer) + throw new Error('Out of memory'); + pointer >>>= 0; + new Uint8Array(wasmMemory.buffer).subarray(pointer, pointer + size).fill(0); + var buffer_1 = Buffer.from(wasmMemory.buffer, pointer, size); + var viewDescriptor = { + Ctor: Buffer, + address: pointer, + length: size, + ownership: emnapiExternalMemory.registry ? 0 /* ReferenceOwnership.kRuntime */ : 1 /* ReferenceOwnership.kUserland */, + runtimeAllocated: 1 + }; + emnapiExternalMemory.wasmMemoryViewTable.set(buffer_1, viewDescriptor); + (_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(viewDescriptor, pointer); + value = emnapiCtx.addToCurrentScope(buffer_1).id; + HEAP_DATA_VIEW.setUint32(result, value, true); + data >>>= 0; + HEAP_DATA_VIEW.setUint32(data, pointer, true); + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ippppp + */ + function napi_create_buffer_copy(env, length, data, result_data, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var Buffer = emnapiCtx.feature.Buffer; + if (!Buffer) { + throw emnapiCtx.createNotSupportBufferError('napi_create_buffer_copy', ''); + } + var arrayBuffer = emnapiCreateArrayBuffer(length, result_data, false); + var buffer = Buffer.from(arrayBuffer); + data >>>= 0; + length >>>= 0; + buffer.set(new Uint8Array(wasmMemory.buffer).subarray(data, data + length)); + value = emnapiCtx.addToCurrentScope(buffer).id; + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ipppppp + */ + function napi_create_external_buffer(env, length, data, finalize_cb, finalize_hint, result) { + return emnapi_create_memory_view(env, -2 /* emnapi_memory_view_type.emnapi_buffer */, data, length, finalize_cb, finalize_hint, result); + } + /** + * @__sig ippppp + */ + function node_api_create_buffer_from_arraybuffer(env, arraybuffer, byte_offset, byte_length, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!arraybuffer) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + byte_offset >>>= 0; + byte_length >>>= 0; + byte_offset = byte_offset >>> 0; + byte_length = byte_length >>> 0; + var handle = emnapiCtx.handleStore.get(arraybuffer); + if (!handle.isArrayBuffer()) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var buffer = handle.value; + if ((byte_length + byte_offset) > buffer.byteLength) { + var err = new RangeError('The byte offset + length is out of range'); + err.code = 'ERR_OUT_OF_RANGE'; + throw err; + } + var Buffer = emnapiCtx.feature.Buffer; + if (!Buffer) { + throw emnapiCtx.createNotSupportBufferError('node_api_create_buffer_from_arraybuffer', ''); + } + var out = Buffer.from(buffer, byte_offset, byte_length); + if (buffer === wasmMemory.buffer) { + if (!emnapiExternalMemory.wasmMemoryViewTable.has(out)) { + emnapiExternalMemory.wasmMemoryViewTable.set(out, { + Ctor: Buffer, + address: byte_offset, + length: byte_length, + ownership: 1 /* ReferenceOwnership.kUserland */, + runtimeAllocated: 0 + }); + } + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + value = emnapiCtx.addToCurrentScope(out).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ippppp + */ + function napi_create_dataview(env, byte_length, arraybuffer, byte_offset, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!arraybuffer) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + byte_length >>>= 0; + byte_offset >>>= 0; + byte_length = byte_length >>> 0; + byte_offset = byte_offset >>> 0; + var value = emnapiCtx.handleStore.get(arraybuffer).value; + var createDataview = function (buffer) { + if ((byte_length + byte_offset) > buffer.byteLength) { + var err = new RangeError('byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in'); + err.code = 'ERR_NAPI_INVALID_DATAVIEW_ARGS'; + throw err; + } + var dataview = new DataView(buffer, byte_offset, byte_length); + if (buffer === wasmMemory.buffer) { + if (!emnapiExternalMemory.wasmMemoryViewTable.has(dataview)) { + emnapiExternalMemory.wasmMemoryViewTable.set(dataview, { + Ctor: DataView, + address: byte_offset, + length: byte_length, + ownership: 1 /* ReferenceOwnership.kUserland */, + runtimeAllocated: 0 + }); + } + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v = emnapiCtx.addToCurrentScope(dataview).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.getReturnStatus(); + }; + if (value instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(value)) { + return createDataview(value); + } + else { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** + * @__sig ipppp + */ + function node_api_symbol_for(env, utf8description, length, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + length >>>= 0; + utf8description >>>= 0; + result >>>= 0; + var autoLength = length === -1 || length === 4294967295; + var sizelength = length >>> 0; + if (length !== 0) { + if (!utf8description) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + if (!(autoLength || (sizelength <= 2147483647))) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var descriptionString = emnapiString.UTF8ToString(utf8description, length); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = emnapiCtx.addToCurrentScope(Symbol.for(descriptionString)).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + var createMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + napi_create_array: napi_create_array, + napi_create_array_with_length: napi_create_array_with_length, + napi_create_arraybuffer: napi_create_arraybuffer, + napi_create_buffer: napi_create_buffer, + napi_create_buffer_copy: napi_create_buffer_copy, + napi_create_dataview: napi_create_dataview, + napi_create_date: napi_create_date, + napi_create_external: napi_create_external, + napi_create_external_arraybuffer: napi_create_external_arraybuffer, + napi_create_external_buffer: napi_create_external_buffer, + napi_create_object: napi_create_object, + napi_create_symbol: napi_create_symbol, + napi_create_typedarray: napi_create_typedarray, + node_api_create_buffer_from_arraybuffer: node_api_create_buffer_from_arraybuffer, + node_api_create_object_with_properties: node_api_create_object_with_properties, + node_api_create_sharedarraybuffer: node_api_create_sharedarraybuffer, + node_api_symbol_for: node_api_symbol_for + }); + /** @__sig ipip */ + function napi_get_boolean(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v = value === 0 ? 3 /* GlobalHandle.FALSE */ : 4 /* GlobalHandle.TRUE */; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.clearLastError(); + } + /** @__sig ipp */ + function napi_get_global(env, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = 5 /* GlobalHandle.GLOBAL */; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + /** @__sig ipp */ + function napi_get_null(env, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = 2 /* GlobalHandle.NULL */; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + /** @__sig ipp */ + function napi_get_undefined(env, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = 1 /* GlobalHandle.UNDEFINED */; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + var globalMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + napi_get_boolean: napi_get_boolean, + napi_get_global: napi_get_global, + napi_get_null: napi_get_null, + napi_get_undefined: napi_get_undefined + }); + /** @__sig ipppp */ + function napi_set_instance_data(env, data, finalize_cb, finalize_hint) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + var envObject = emnapiCtx.envStore.get(env); + data >>>= 0; + finalize_cb >>>= 0; + finalize_hint >>>= 0; + envObject.setInstanceData(data, finalize_cb, finalize_hint); + return envObject.clearLastError(); + } + /** @__sig ipp */ + function napi_get_instance_data(env, data) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + var envObject = emnapiCtx.envStore.get(env); + if (!data) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + data >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = envObject.getInstanceData(); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(data, value, true); + return envObject.clearLastError(); + } + var envMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + napi_get_instance_data: napi_get_instance_data, + napi_set_instance_data: napi_set_instance_data + }); + /** @__sig vpppp */ + function _emnapi_get_last_error_info(env, error_code, engine_error_code, engine_reserved) { + error_code >>>= 0; + engine_error_code >>>= 0; + engine_reserved >>>= 0; + var envObject = emnapiCtx.envStore.get(env); + var lastError = envObject.lastError; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var errorCode = lastError.errorCode; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var engineErrorCode = lastError.engineErrorCode >>> 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var engineReserved = lastError.engineReserved; + engineReserved >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt32(error_code, errorCode, true); + HEAP_DATA_VIEW.setUint32(engine_error_code, engineErrorCode, true); + HEAP_DATA_VIEW.setUint32(engine_reserved, engineReserved, true); + } + /** @__sig ipp */ + function napi_throw(env, error) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!error) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + envObject.tryCatch.setError(emnapiCtx.handleStore.get(error).value); + return envObject.clearLastError(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippp */ + function napi_throw_error(env, code, msg) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!msg) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + code >>>= 0; + msg >>>= 0; + var error = new Error(emnapiString.UTF8ToString(msg, -1)); + if (code) + error.code = emnapiString.UTF8ToString(code, -1); + envObject.tryCatch.setError(error); + return envObject.clearLastError(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippp */ + function napi_throw_type_error(env, code, msg) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!msg) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + code >>>= 0; + msg >>>= 0; + var error = new TypeError(emnapiString.UTF8ToString(msg, -1)); + if (code) + error.code = emnapiString.UTF8ToString(code, -1); + envObject.tryCatch.setError(error); + return envObject.clearLastError(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippp */ + function napi_throw_range_error(env, code, msg) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!msg) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + code >>>= 0; + msg >>>= 0; + var error = new RangeError(emnapiString.UTF8ToString(msg, -1)); + if (code) + error.code = emnapiString.UTF8ToString(code, -1); + envObject.tryCatch.setError(error); + return envObject.clearLastError(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippp */ + function node_api_throw_syntax_error(env, code, msg) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!msg) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + code >>>= 0; + msg >>>= 0; + var error = new SyntaxError(emnapiString.UTF8ToString(msg, -1)); + if (code) + error.code = emnapiString.UTF8ToString(code, -1); + envObject.tryCatch.setError(error); + return envObject.clearLastError(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ipp */ + function napi_is_exception_pending(env, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r = envObject.tryCatch.hasCaught(); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); + return envObject.clearLastError(); + } + /** @__sig ipppp */ + function napi_create_error(env, code, msg, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!msg) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var msgValue = emnapiCtx.handleStore.get(msg).value; + if (typeof msgValue !== 'string') { + return envObject.setLastError(3 /* napi_status.napi_string_expected */); + } + var error = new Error(msgValue); + if (code) { + var codeValue = emnapiCtx.handleStore.get(code).value; + if (typeof codeValue !== 'string') { + return envObject.setLastError(3 /* napi_status.napi_string_expected */); + } + error.code = codeValue; + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = emnapiCtx.addToCurrentScope(error).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + /** @__sig ipppp */ + function napi_create_type_error(env, code, msg, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!msg) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var msgValue = emnapiCtx.handleStore.get(msg).value; + if (typeof msgValue !== 'string') { + return envObject.setLastError(3 /* napi_status.napi_string_expected */); + } + var error = new TypeError(msgValue); + if (code) { + var codeValue = emnapiCtx.handleStore.get(code).value; + if (typeof codeValue !== 'string') { + return envObject.setLastError(3 /* napi_status.napi_string_expected */); + } + error.code = codeValue; + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = emnapiCtx.addToCurrentScope(error).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + /** @__sig ipppp */ + function napi_create_range_error(env, code, msg, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!msg) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var msgValue = emnapiCtx.handleStore.get(msg).value; + if (typeof msgValue !== 'string') { + return envObject.setLastError(3 /* napi_status.napi_string_expected */); + } + var error = new RangeError(msgValue); + if (code) { + var codeValue = emnapiCtx.handleStore.get(code).value; + if (typeof codeValue !== 'string') { + return envObject.setLastError(3 /* napi_status.napi_string_expected */); + } + error.code = codeValue; + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = emnapiCtx.addToCurrentScope(error).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + /** @__sig ipppp */ + function node_api_create_syntax_error(env, code, msg, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!msg) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var msgValue = emnapiCtx.handleStore.get(msg).value; + if (typeof msgValue !== 'string') { + return envObject.setLastError(3 /* napi_status.napi_string_expected */); + } + var error = new SyntaxError(msgValue); + if (code) { + var codeValue = emnapiCtx.handleStore.get(code).value; + if (typeof codeValue !== 'string') { + return envObject.setLastError(3 /* napi_status.napi_string_expected */); + } + error.code = codeValue; + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = emnapiCtx.addToCurrentScope(error).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + /** @__sig ipp */ + function napi_get_and_clear_last_exception(env, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (!envObject.tryCatch.hasCaught()) { + HEAP_DATA_VIEW.setUint32(result, 1, true); // ID_UNDEFINED + return envObject.clearLastError(); + } + else { + var err = envObject.tryCatch.exception(); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = envObject.ensureHandleId(err); + HEAP_DATA_VIEW.setUint32(result, value, true); + envObject.tryCatch.reset(); + } + return envObject.clearLastError(); + } + /** @__sig vpppp */ + function napi_fatal_error(location, location_len, message, message_len) { + location >>>= 0; + location_len >>>= 0; + message >>>= 0; + message_len >>>= 0; + var locationStr = emnapiString.UTF8ToString(location, location_len); + var messageStr = emnapiString.UTF8ToString(message, message_len); + if (emnapiNodeBinding) { + emnapiNodeBinding.napi.fatalError(locationStr, messageStr); + } + else { + abort('FATAL ERROR: ' + locationStr + ' ' + messageStr); + } + } + /** @__sig ipp */ + function napi_fatal_exception(env, err) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!err) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var error = envObject.ctx.handleStore.get(err); + try { + envObject.triggerFatalException(error.value); + } + catch (_) { + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + return envObject.clearLastError(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + var errorMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + _emnapi_get_last_error_info: _emnapi_get_last_error_info, + napi_create_error: napi_create_error, + napi_create_range_error: napi_create_range_error, + napi_create_type_error: napi_create_type_error, + napi_fatal_error: napi_fatal_error, + napi_fatal_exception: napi_fatal_exception, + napi_get_and_clear_last_exception: napi_get_and_clear_last_exception, + napi_is_exception_pending: napi_is_exception_pending, + napi_throw: napi_throw, + napi_throw_error: napi_throw_error, + napi_throw_range_error: napi_throw_range_error, + napi_throw_type_error: napi_throw_type_error, + node_api_create_syntax_error: node_api_create_syntax_error, + node_api_throw_syntax_error: node_api_throw_syntax_error + }); + /** @__sig ipppppp */ + function _emnapi_create_function(env, utf8name, length, cb, data, result) { + length >>>= 0; + var envObject = emnapiCtx.envStore.get(env); + var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data); + if (fresult.status !== 0 /* napi_status.napi_ok */) + return envObject.setLastError(fresult.status); + var f = fresult.f; + var valueHandle = emnapiCtx.addToCurrentScope(f); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = valueHandle.id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + /** @__sig ipppppp */ + function napi_create_function(env, utf8name, length, cb, data, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!cb) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + return _emnapi_create_function(env, utf8name, length, cb, data, result); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ipppppp */ + function napi_get_cb_info(env, cbinfo, argc, argv, this_arg, data) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + var envObject = emnapiCtx.envStore.get(env); + if (!cbinfo) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo; + argc >>>= 0; + argv >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (argv) { + if (!argc) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var argcValue = HEAP_DATA_VIEW.getUint32(argc, true); + argcValue >>>= 0; + var len = cbinfoValue.args.length; + var arrlen = argcValue < len ? argcValue : len; + var i = 0; + for (; i < arrlen; i++) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var argVal = envObject.ensureHandleId(cbinfoValue.args[i]); + HEAP_DATA_VIEW.setUint32(argv + i * 4, argVal, true); + } + if (i < argcValue) { + for (; i < argcValue; i++) { + HEAP_DATA_VIEW.setUint32(argv + i * 4, 1, true); + } + } + } + if (argc) { + HEAP_DATA_VIEW.setUint32(argc, cbinfoValue.args.length, true); + } + if (this_arg) { + this_arg >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v = envObject.ensureHandleId(cbinfoValue.thiz); + HEAP_DATA_VIEW.setUint32(this_arg, v, true); + } + if (data) { + data >>>= 0; + HEAP_DATA_VIEW.setUint32(data, cbinfoValue.data, true); + } + return envObject.clearLastError(); + } + /** @__sig ipppppp */ + function napi_call_function(env, recv, func, argc, argv, result) { + var i = 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!recv) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + argc >>>= 0; + argv >>>= 0; + result >>>= 0; + argc = argc >>> 0; + if (argc > 0) { + if (!argv) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var v8recv = emnapiCtx.handleStore.get(recv).value; + if (!func) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var v8func = emnapiCtx.handleStore.get(func).value; + if (typeof v8func !== 'function') + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var args = []; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + for (; i < argc; i++) { + var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); + args.push(emnapiCtx.handleStore.get(argVal).value); + } + var ret = v8func.apply(v8recv, args); + if (result) { + v = envObject.ensureHandleId(ret); + HEAP_DATA_VIEW.setUint32(result, v, true); + } + return envObject.clearLastError(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippppp */ + function napi_new_instance(env, constructor, argc, argv, result) { + var i; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!constructor) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + argc >>>= 0; + argv >>>= 0; + result >>>= 0; + argc = argc >>> 0; + if (argc > 0) { + if (!argv) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var Ctor = emnapiCtx.handleStore.get(constructor).value; + if (typeof Ctor !== 'function') + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var ret = void 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (emnapiCtx.feature.supportReflect) { + var argList = Array(argc); + for (i = 0; i < argc; i++) { + var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); + argList[i] = emnapiCtx.handleStore.get(argVal).value; + } + ret = Reflect.construct(Ctor, argList, Ctor); + } + else { + var args = Array(argc + 1); + args[0] = undefined; + for (i = 0; i < argc; i++) { + var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); + args[i + 1] = emnapiCtx.handleStore.get(argVal).value; + } + var BoundCtor = Ctor.bind.apply(Ctor, args); + ret = new BoundCtor(); + } + if (result) { + v = envObject.ensureHandleId(ret); + HEAP_DATA_VIEW.setUint32(result, v, true); + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippp */ + function napi_get_new_target(env, cbinfo, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!cbinfo) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo; + var thiz = cbinfoValue.thiz, fn = cbinfoValue.fn; + // eslint-disable-next-line @typescript-eslint/prefer-optional-chain, @typescript-eslint/no-unused-vars + var value = thiz == null || thiz.constructor == null + ? 0 + : thiz instanceof fn + ? envObject.ensureHandleId(thiz.constructor) + : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + var functionMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + _emnapi_create_function: _emnapi_create_function, + napi_call_function: napi_call_function, + napi_create_function: napi_create_function, + napi_get_cb_info: napi_get_cb_info, + napi_get_new_target: napi_get_new_target, + napi_new_instance: napi_new_instance + }); + /** @__sig ipp */ + function napi_open_handle_scope(env, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var scope = emnapiCtx.openScope(envObject); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, scope.id, true); + return envObject.clearLastError(); + } + /** @__sig ipp */ + function napi_close_handle_scope(env, scope) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!scope) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if ((envObject.openHandleScopes === 0)) { + return 13 /* napi_status.napi_handle_scope_mismatch */; + } + emnapiCtx.closeScope(envObject); + return envObject.clearLastError(); + } + /** @__sig ipp */ + function napi_open_escapable_handle_scope(env, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var scope = emnapiCtx.openScope(envObject); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, scope.id, true); + return envObject.clearLastError(); + } + /** @__sig ipp */ + function napi_close_escapable_handle_scope(env, scope) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!scope) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if ((envObject.openHandleScopes === 0)) { + return 13 /* napi_status.napi_handle_scope_mismatch */; + } + emnapiCtx.closeScope(envObject); + return envObject.clearLastError(); + } + /** @__sig ipppp */ + function napi_escape_handle(env, scope, escapee, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!scope) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!escapee) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var scopeObject = emnapiCtx.scopeStore.get(scope); + if (!scopeObject.escapeCalled()) { + escapee >>>= 0; + result >>>= 0; + var newHandle = scopeObject.escape(escapee); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value = newHandle ? newHandle.id : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + return envObject.setLastError(12 /* napi_status.napi_escape_called_twice */); + } + /** @__sig ippip */ + function napi_create_reference(env, value, initial_refcount, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + if (envObject.moduleApiVersion < 10) { + if (!(handle.isObject() || handle.isFunction() || handle.isSymbol())) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var ref = emnapiCtx.createReference(envObject, handle.id, initial_refcount >>> 0, 1 /* ReferenceOwnership.kUserland */); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, ref.id, true); + return envObject.clearLastError(); + } + /** @__sig ipp */ + function napi_delete_reference(env, ref) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + var envObject = emnapiCtx.envStore.get(env); + if (!ref) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + emnapiCtx.refStore.get(ref).dispose(); + return envObject.clearLastError(); + } + /** @__sig ippp */ + function napi_reference_ref(env, ref, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!ref) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var count = emnapiCtx.refStore.get(ref).ref(); + if (result) { + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, count, true); + } + return envObject.clearLastError(); + } + /** @__sig ippp */ + function napi_reference_unref(env, ref, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!ref) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var reference = emnapiCtx.refStore.get(ref); + var refcount = reference.refcount(); + if (refcount === 0) { + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var count = reference.unref(); + if (result) { + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, count, true); + } + return envObject.clearLastError(); + } + /** @__sig ippp */ + function napi_get_reference_value(env, ref, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!ref) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var reference = emnapiCtx.refStore.get(ref); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var handleId = reference.get(envObject); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, handleId, true); + return envObject.clearLastError(); + } + /** @__sig ippp */ + function napi_add_env_cleanup_hook(env, fun, arg) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + var envObject = emnapiCtx.envStore.get(env); + if (!fun) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + fun >>>= 0; + arg >>>= 0; + emnapiCtx.addCleanupHook(envObject, fun, arg); + return 0 /* napi_status.napi_ok */; + } + /** @__sig ippp */ + function napi_remove_env_cleanup_hook(env, fun, arg) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + var envObject = emnapiCtx.envStore.get(env); + if (!fun) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + fun >>>= 0; + arg >>>= 0; + emnapiCtx.removeCleanupHook(envObject, fun, arg); + return 0 /* napi_status.napi_ok */; + } + /** @__sig vp */ + function _emnapi_env_ref(env) { + var envObject = emnapiCtx.envStore.get(env); + envObject.ref(); + } + /** @__sig vp */ + function _emnapi_env_unref(env) { + var envObject = emnapiCtx.envStore.get(env); + envObject.unref(); + } + var lifeMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + _emnapi_env_ref: _emnapi_env_ref, + _emnapi_env_unref: _emnapi_env_unref, + napi_add_env_cleanup_hook: napi_add_env_cleanup_hook, + napi_close_escapable_handle_scope: napi_close_escapable_handle_scope, + napi_close_handle_scope: napi_close_handle_scope, + napi_create_reference: napi_create_reference, + napi_delete_reference: napi_delete_reference, + napi_escape_handle: napi_escape_handle, + napi_get_reference_value: napi_get_reference_value, + napi_open_escapable_handle_scope: napi_open_escapable_handle_scope, + napi_open_handle_scope: napi_open_handle_scope, + napi_reference_ref: napi_reference_ref, + napi_reference_unref: napi_reference_unref, + napi_remove_env_cleanup_hook: napi_remove_env_cleanup_hook + }); + /** @__sig ippi */ + function _emnapi_get_filename(env, buf, len) { + var envObject = emnapiCtx.envStore.get(env); + var filename = envObject.filename; + if (!buf) { + return emnapiString.lengthBytesUTF8(filename); + } + return emnapiString.stringToUTF8(filename, buf, len); + } + var miscellaneousMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + _emnapi_get_filename: _emnapi_get_filename + }); + /** @__sig ippp */ + function napi_create_promise(env, deferred, promise) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var deferredObjectId, value; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!deferred) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!promise) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + var p = new Promise(function (resolve, reject) { + var deferredObject = emnapiCtx.createDeferred({ resolve: resolve, reject: reject }); + deferredObjectId = deferredObject.id; + deferred >>>= 0; + HEAP_DATA_VIEW.setUint32(deferred, deferredObjectId, true); + }); + promise >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + value = emnapiCtx.addToCurrentScope(p).id; + HEAP_DATA_VIEW.setUint32(promise, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippp */ + function napi_resolve_deferred(env, deferred, resolution) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!deferred) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!resolution) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var deferredObject = emnapiCtx.deferredStore.get(deferred); + deferredObject.resolve(emnapiCtx.handleStore.get(resolution).value); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippp */ + function napi_reject_deferred(env, deferred, resolution) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!deferred) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!resolution) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var deferredObject = emnapiCtx.deferredStore.get(deferred); + deferredObject.reject(emnapiCtx.handleStore.get(resolution).value); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippp */ + function napi_is_promise(env, value, is_promise) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!is_promise) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(value); + is_promise >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r = h.isPromise() ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(is_promise, r, true); + return envObject.clearLastError(); + } + var promiseMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + napi_create_promise: napi_create_promise, + napi_is_promise: napi_is_promise, + napi_reject_deferred: napi_reject_deferred, + napi_resolve_deferred: napi_resolve_deferred + }); + /** @__sig ippiiip */ + function napi_get_all_property_names(env, object, key_mode, key_filter, key_conversion, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(object); + if (h.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var obj = void 0; + try { + obj = h.isObject() || h.isFunction() ? h.value : Object(h.value); + } + catch (_) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + if (key_mode !== 0 /* napi_key_collection_mode.napi_key_include_prototypes */ && key_mode !== 1 /* napi_key_collection_mode.napi_key_own_only */) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + if (key_conversion !== 0 /* napi_key_conversion.napi_key_keep_numbers */ && key_conversion !== 1 /* napi_key_conversion.napi_key_numbers_to_strings */) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var props = []; + var names = void 0; + var symbols = void 0; + var i = void 0; + var own = true; + var integerIndiceRegex = /^(0|[1-9][0-9]*)$/; + do { + names = Object.getOwnPropertyNames(obj); + symbols = Object.getOwnPropertySymbols(obj); + for (i = 0; i < names.length; i++) { + props.push({ + name: integerIndiceRegex.test(names[i]) ? Number(names[i]) : names[i], + desc: Object.getOwnPropertyDescriptor(obj, names[i]), + own: own + }); + } + for (i = 0; i < symbols.length; i++) { + props.push({ + name: symbols[i], + desc: Object.getOwnPropertyDescriptor(obj, symbols[i]), + own: own + }); + } + if (key_mode === 1 /* napi_key_collection_mode.napi_key_own_only */) { + break; + } + obj = Object.getPrototypeOf(obj); + own = false; + } while (obj); + var ret = []; + var addName = function (ret, name, key_filter, conversion_mode) { + if (ret.indexOf(name) !== -1) + return; + if (conversion_mode === 0 /* napi_key_conversion.napi_key_keep_numbers */) { + ret.push(name); + } + else if (conversion_mode === 1 /* napi_key_conversion.napi_key_numbers_to_strings */) { + var realName = typeof name === 'number' ? String(name) : name; + if (typeof realName === 'string') { + if (!(key_filter & 8 /* napi_key_filter.napi_key_skip_strings */)) { + ret.push(realName); + } + } + else { + ret.push(realName); + } + } + }; + for (i = 0; i < props.length; i++) { + var prop = props[i]; + var name_1 = prop.name; + var desc = prop.desc; + if (key_filter === 0 /* napi_key_filter.napi_key_all_properties */) { + addName(ret, name_1, key_filter, key_conversion); + } + else { + if (key_filter & 8 /* napi_key_filter.napi_key_skip_strings */ && typeof name_1 === 'string') { + continue; + } + if (key_filter & 16 /* napi_key_filter.napi_key_skip_symbols */ && typeof name_1 === 'symbol') { + continue; + } + var shouldAdd = true; + switch (key_filter & 7) { + case 1 /* napi_key_filter.napi_key_writable */: { + shouldAdd = Boolean(desc.writable); + break; + } + case 2 /* napi_key_filter.napi_key_enumerable */: { + shouldAdd = Boolean(desc.enumerable); + break; + } + case (1 /* napi_key_filter.napi_key_writable */ | 2 /* napi_key_filter.napi_key_enumerable */): { + shouldAdd = Boolean(desc.writable && desc.enumerable); + break; + } + case 4 /* napi_key_filter.napi_key_configurable */: { + shouldAdd = Boolean(desc.configurable); + break; + } + case (4 /* napi_key_filter.napi_key_configurable */ | 1 /* napi_key_filter.napi_key_writable */): { + shouldAdd = Boolean(desc.configurable && desc.writable); + break; + } + case (4 /* napi_key_filter.napi_key_configurable */ | 2 /* napi_key_filter.napi_key_enumerable */): { + shouldAdd = Boolean(desc.configurable && desc.enumerable); + break; + } + case (4 /* napi_key_filter.napi_key_configurable */ | 2 /* napi_key_filter.napi_key_enumerable */ | 1 /* napi_key_filter.napi_key_writable */): { + shouldAdd = Boolean(desc.configurable && desc.enumerable && desc.writable); + break; + } + } + if (shouldAdd) { + addName(ret, name_1, key_filter, key_conversion); + } + } + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + value = emnapiCtx.addToCurrentScope(ret).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippp */ + function napi_get_property_names(env, object, result) { + return napi_get_all_property_names(env, object, 0 /* napi_key_collection_mode.napi_key_include_prototypes */, 2 /* napi_key_filter.napi_key_enumerable */ | 16 /* napi_key_filter.napi_key_skip_symbols */, 1 /* napi_key_conversion.napi_key_numbers_to_strings */, result); + } + /** @__sig ipppp */ + function napi_set_property(env, object, key, value) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!key) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(object); + if (!(h.isObject() || h.isFunction())) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + h.value[emnapiCtx.handleStore.get(key).value] = emnapiCtx.handleStore.get(value).value; + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ipppp */ + function napi_has_property(env, object, key, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!key) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(object); + if (h.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var v = void 0; + try { + v = h.isObject() || h.isFunction() ? h.value : Object(h.value); + } + catch (_) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + result >>>= 0; + r = (emnapiCtx.handleStore.get(key).value in v) ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ipppp */ + function napi_get_property(env, object, key, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!key) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(object); + if (h.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var v = void 0; + try { + v = h.isObject() || h.isFunction() ? h.value : Object(h.value); + } + catch (_) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + value = envObject.ensureHandleId(v[emnapiCtx.handleStore.get(key).value]); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ipppp */ + function napi_delete_property(env, object, key, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!key) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(object); + if (!(h.isObject() || h.isFunction())) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + var propertyKey = emnapiCtx.handleStore.get(key).value; + if (emnapiCtx.feature.supportReflect) { + r = Reflect.deleteProperty(h.value, propertyKey); + } + else { + try { + r = delete h.value[propertyKey]; + } + catch (_) { + r = false; + } + } + if (result) { + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ipppp */ + function napi_has_own_property(env, object, key, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!key) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(object); + if (h.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var v = void 0; + try { + v = h.isObject() || h.isFunction() ? h.value : Object(h.value); + } + catch (_) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + var prop = emnapiCtx.handleStore.get(key).value; + if (typeof prop !== 'string' && typeof prop !== 'symbol') { + return envObject.setLastError(4 /* napi_status.napi_name_expected */); + } + r = Object.prototype.hasOwnProperty.call(v, emnapiCtx.handleStore.get(key).value); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ipppp */ + function napi_set_named_property(env, object, cname, value) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(object); + if (!(h.isObject() || h.isFunction())) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + if (!cname) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + cname >>>= 0; + emnapiCtx.handleStore.get(object).value[emnapiString.UTF8ToString(cname, -1)] = emnapiCtx.handleStore.get(value).value; + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ipppp */ + function napi_has_named_property(env, object, utf8name, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!utf8name) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var h = emnapiCtx.handleStore.get(object); + if (h.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var v = void 0; + try { + v = h.isObject() || h.isFunction() ? h.value : Object(h.value); + } + catch (_) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + utf8name >>>= 0; + result >>>= 0; + r = emnapiString.UTF8ToString(utf8name, -1) in v; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ipppp */ + function napi_get_named_property(env, object, utf8name, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!utf8name) { + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var h = emnapiCtx.handleStore.get(object); + if (h.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var v = void 0; + try { + v = h.isObject() || h.isFunction() ? h.value : Object(h.value); + } + catch (_) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + utf8name >>>= 0; + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + value = envObject.ensureHandleId(v[emnapiString.UTF8ToString(utf8name, -1)]); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippip */ + function napi_set_element(env, object, index, value) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(object); + if (!(h.isObject() || h.isFunction())) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + h.value[index >>> 0] = emnapiCtx.handleStore.get(value).value; + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippip */ + function napi_has_element(env, object, index, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(object); + if (h.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var v = void 0; + try { + v = h.isObject() || h.isFunction() ? h.value : Object(h.value); + } + catch (_) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + result >>>= 0; + r = ((index >>> 0) in v) ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippip */ + function napi_get_element(env, object, index, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(object); + if (h.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var v = void 0; + try { + v = h.isObject() || h.isFunction() ? h.value : Object(h.value); + } + catch (_) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + value = envObject.ensureHandleId(v[index >>> 0]); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippip */ + function napi_delete_element(env, object, index, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(object); + if (!(h.isObject() || h.isFunction())) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + if (emnapiCtx.feature.supportReflect) { + r = Reflect.deleteProperty(h.value, index >>> 0); + } + else { + try { + r = delete h.value[index >>> 0]; + } + catch (_) { + r = false; + } + } + if (result) { + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ipppp */ + function napi_define_properties(env, object, property_count, properties) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var propPtr, attributes; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + properties >>>= 0; + property_count >>>= 0; + property_count = property_count >>> 0; + if (property_count > 0) { + if (!properties) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(object); + var maybeObject = h.value; + if (!(h.isObject() || h.isFunction())) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + var propertyName = void 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + for (var i = 0; i < property_count; i++) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + propPtr = properties + (i * (4 * 8)); + var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true); + var name_2 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true); + var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true); + var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true); + var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true); + var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true); + attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true); + attributes >>>= 0; + var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true); + if (utf8Name) { + propertyName = emnapiString.UTF8ToString(utf8Name, -1); + } + else { + if (!name_2) { + return envObject.setLastError(4 /* napi_status.napi_name_expected */); + } + propertyName = emnapiCtx.handleStore.get(name_2).value; + if (typeof propertyName !== 'string' && typeof propertyName !== 'symbol') { + return envObject.setLastError(4 /* napi_status.napi_name_expected */); + } + } + emnapiDefineProperty(envObject, maybeObject, propertyName, method, getter, setter, value, attributes, data); + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ipp */ + function napi_object_freeze(env, object) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(object); + var maybeObject = h.value; + if (!(h.isObject() || h.isFunction())) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + Object.freeze(maybeObject); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ipp */ + function napi_object_seal(env, object) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(object); + var maybeObject = h.value; + if (!(h.isObject() || h.isFunction())) { + return envObject.setLastError(2 /* napi_status.napi_object_expected */); + } + Object.seal(maybeObject); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + var propertyMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + napi_define_properties: napi_define_properties, + napi_delete_element: napi_delete_element, + napi_delete_property: napi_delete_property, + napi_get_all_property_names: napi_get_all_property_names, + napi_get_element: napi_get_element, + napi_get_named_property: napi_get_named_property, + napi_get_property: napi_get_property, + napi_get_property_names: napi_get_property_names, + napi_has_element: napi_has_element, + napi_has_named_property: napi_has_named_property, + napi_has_own_property: napi_has_own_property, + napi_has_property: napi_has_property, + napi_object_freeze: napi_object_freeze, + napi_object_seal: napi_object_seal, + napi_set_element: napi_set_element, + napi_set_named_property: napi_set_named_property, + napi_set_property: napi_set_property + }); + /** @__sig ippp */ + function napi_run_script(env, script, result) { + var status; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var value; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!script) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var v8Script = emnapiCtx.handleStore.get(script); + if (!v8Script.isString()) { + return envObject.setLastError(3 /* napi_status.napi_string_expected */); + } + var g = emnapiCtx.handleStore.get(5 /* GlobalHandle.GLOBAL */).value; + var ret = g.eval(v8Script.value); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + value = envObject.ensureHandleId(ret); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + status = envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + return status; + } + var scriptMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + napi_run_script: napi_run_script + }); + /** @__sig ippp */ + function napi_typeof(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var v = emnapiCtx.handleStore.get(value); + result >>>= 0; + var r; + if (v.isNumber()) { + r = 3 /* napi_valuetype.napi_number */; + } + else if (v.isBigInt()) { + r = 9 /* napi_valuetype.napi_bigint */; + } + else if (v.isString()) { + r = 4 /* napi_valuetype.napi_string */; + } + else if (v.isFunction()) { + // This test has to come before IsObject because IsFunction + // implies IsObject + r = 7 /* napi_valuetype.napi_function */; + } + else if (v.isExternal()) { + // This test has to come before IsObject because IsExternal + // implies IsObject + r = 8 /* napi_valuetype.napi_external */; + } + else if (v.isObject()) { + r = 6 /* napi_valuetype.napi_object */; + } + else if (v.isBoolean()) { + r = 2 /* napi_valuetype.napi_boolean */; + } + else if (v.isUndefined()) { + r = 0 /* napi_valuetype.napi_undefined */; + } + else if (v.isSymbol()) { + r = 5 /* napi_valuetype.napi_symbol */; + } + else if (v.isNull()) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + r = 1 /* napi_valuetype.napi_null */; + } + else { + // Should not get here unless V8 has added some new kind of value. + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + } + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt32(result, r, true); + return envObject.clearLastError(); + } + /** @__sig ippp */ + function napi_coerce_to_bool(env, value, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + result >>>= 0; + v = handle.value ? 4 /* GlobalHandle.TRUE */ : 3 /* GlobalHandle.FALSE */; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippp */ + function napi_coerce_to_number(env, value, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + if (handle.isBigInt()) { + throw new TypeError('Cannot convert a BigInt value to a number'); + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + v = emnapiCtx.addToCurrentScope(Number(handle.value)).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippp */ + function napi_coerce_to_object(env, value, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + if (handle.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + v = envObject.ensureHandleId(Object(handle.value)); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippp */ + function napi_coerce_to_string(env, value, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var v; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var handle = emnapiCtx.handleStore.get(value); + if (handle.isSymbol()) { + throw new TypeError('Cannot convert a Symbol value to a string'); + } + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + v = emnapiCtx.addToCurrentScope(String(handle.value)).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ipppp */ + function napi_instanceof(env, object, constructor, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!object) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!constructor) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, 0, true); + var ctor = emnapiCtx.handleStore.get(constructor); + if (!ctor.isFunction()) { + return envObject.setLastError(5 /* napi_status.napi_function_expected */); + } + var val = emnapiCtx.handleStore.get(object).value; + var ret = val instanceof ctor.value; + r = ret ? 1 : 0; + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ippp */ + function napi_is_array(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(value); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r = h.isArray() ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + /** @__sig ippp */ + function napi_is_arraybuffer(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(value); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r = h.isArrayBuffer() ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + /** @__sig ippp */ + function node_api_is_sharedarraybuffer(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(value); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r = ((typeof SharedArrayBuffer === 'function' && h.value instanceof SharedArrayBuffer) || + (Object.prototype.toString.call(h.value) === '[object SharedArrayBuffer]')) + ? 1 + : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + /** @__sig ippp */ + function napi_is_date(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(value); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r = h.isDate() ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + /** @__sig ippp */ + function napi_is_error(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var val = emnapiCtx.handleStore.get(value).value; + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r = (val instanceof Error) ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + /** @__sig ippp */ + function napi_is_typedarray(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(value); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r = h.isTypedArray() ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + /** @__sig ippp */ + function napi_is_buffer(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(value); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r = h.isBuffer(emnapiCtx.feature.Buffer) ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + /** @__sig ippp */ + function napi_is_dataview(env, value, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(value); + result >>>= 0; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r = h.isDataView() ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + /** @__sig ipppp */ + function napi_strict_equals(env, lhs, rhs, result) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var r; + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!lhs) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!rhs) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var lv = emnapiCtx.handleStore.get(lhs).value; + var rv = emnapiCtx.handleStore.get(rhs).value; + result >>>= 0; + r = (lv === rv) ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + /** @__sig ipp */ + function napi_detach_arraybuffer(env, arraybuffer) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!arraybuffer) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var value = emnapiCtx.handleStore.get(arraybuffer).value; + if (!(value instanceof ArrayBuffer)) { + if (typeof SharedArrayBuffer === 'function' && (value instanceof SharedArrayBuffer)) { + return envObject.setLastError(20 /* napi_status.napi_detachable_arraybuffer_expected */); + } + return envObject.setLastError(19 /* napi_status.napi_arraybuffer_expected */); + } + try { + var MessageChannel_1 = emnapiCtx.feature.MessageChannel; + var messageChannel = new MessageChannel_1(); + messageChannel.port1.postMessage(value, [value]); + } + catch (_) { + return envObject.setLastError(9 /* napi_status.napi_generic_failure */); + } + return envObject.clearLastError(); + } + /** @__sig ippp */ + function napi_is_detached_arraybuffer(env, arraybuffer, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + // @ts-expect-error + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */); + envObject.clearLastError(); + try { + if (!arraybuffer) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + var h = emnapiCtx.handleStore.get(arraybuffer); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (h.isArrayBuffer() && h.value.byteLength === 0) { + try { + // eslint-disable-next-line no-new + new Uint8Array(h.value); + } + catch (_) { + HEAP_DATA_VIEW.setInt8(result, 1, true); + return envObject.getReturnStatus(); + } + } + HEAP_DATA_VIEW.setInt8(result, 0, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10 /* napi_status.napi_pending_exception */); + } + } + var valueOperationMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + napi_coerce_to_bool: napi_coerce_to_bool, + napi_coerce_to_number: napi_coerce_to_number, + napi_coerce_to_object: napi_coerce_to_object, + napi_coerce_to_string: napi_coerce_to_string, + napi_detach_arraybuffer: napi_detach_arraybuffer, + napi_instanceof: napi_instanceof, + napi_is_array: napi_is_array, + napi_is_arraybuffer: napi_is_arraybuffer, + napi_is_buffer: napi_is_buffer, + napi_is_dataview: napi_is_dataview, + napi_is_date: napi_is_date, + napi_is_detached_arraybuffer: napi_is_detached_arraybuffer, + napi_is_error: napi_is_error, + napi_is_typedarray: napi_is_typedarray, + napi_strict_equals: napi_strict_equals, + napi_typeof: napi_typeof, + node_api_is_sharedarraybuffer: node_api_is_sharedarraybuffer + }); + /** @__sig ipp */ + function napi_get_version(env, result) { + if (!env) + return 1 /* napi_status.napi_invalid_arg */; + var envObject = emnapiCtx.envStore.get(env); + if (!result) + return envObject.setLastError(1 /* napi_status.napi_invalid_arg */); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + var NODE_API_SUPPORTED_VERSION_MAX = 10 /* Version.NODE_API_SUPPORTED_VERSION_MAX */; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, NODE_API_SUPPORTED_VERSION_MAX, true); + return envObject.clearLastError(); + } + var versionMod = /*#__PURE__*/ Object.freeze({ + __proto__: null, + napi_get_version: napi_get_version + }); + emnapiAWST.init(); + emnapiExternalMemory.init(); + emnapiString.init(); + emnapiTSFN.init(); + PThread.init(); + napiModule.emnapi.syncMemory = $emnapiSyncMemory; + napiModule.emnapi.getMemoryAddress = $emnapiGetMemoryAddress; + function addImports(mod) { + var keys = Object.keys(mod); + for (var i = 0; i < keys.length; ++i) { + var k = keys[i]; + if (k.indexOf('$') === 0) + continue; + if (k.indexOf('emnapi_') === 0) { + napiModule.imports.emnapi[k] = mod[k]; + } + else if (k.indexOf('_emnapi_') === 0 || k === 'napi_set_last_error' || k === 'napi_clear_last_error') { + napiModule.imports.env[k] = mod[k]; + } + else { + napiModule.imports.napi[k] = mod[k]; + } + } + } + addImports(asyncMod); + addImports(memoryMod); + addImports(asyncWorkMod); + addImports(utilMod); + addImports(convert2cMod); + addImports(convert2napiMod); + addImports(createMod); + addImports(globalMod); + addImports(wrapMod); + addImports(envMod); + addImports(emnapiMod); + addImports(errorMod); + addImports(functionMod); + addImports(lifeMod); + addImports(miscellaneousMod); + addImports(nodeMod); + addImports(promiseMod); + addImports(propertyMod); + addImports(scriptMod); + addImports(valueOperationMod); + addImports(versionMod); + napiModule.imports.napi.napi_create_threadsafe_function = napi_create_threadsafe_function; + napiModule.imports.napi.napi_get_threadsafe_function_context = napi_get_threadsafe_function_context; + napiModule.imports.napi.napi_call_threadsafe_function = napi_call_threadsafe_function; + napiModule.imports.napi.napi_acquire_threadsafe_function = napi_acquire_threadsafe_function; + napiModule.imports.napi.napi_release_threadsafe_function = napi_release_threadsafe_function; + napiModule.imports.napi.napi_unref_threadsafe_function = napi_unref_threadsafe_function; + napiModule.imports.napi.napi_ref_threadsafe_function = napi_ref_threadsafe_function; + return napiModule; + })(); + return napiModule; + } + + function loadNapiModuleImpl(loadFn, userNapiModule, wasmInput, options) { + // eslint-disable-next-line @typescript-eslint/consistent-type-assertions + options = options !== null && options !== void 0 ? options : {}; + var getMemory = options.getMemory; + var getTable = options.getTable; + var beforeInit = options.beforeInit; + if (getMemory != null && typeof getMemory !== 'function') { + throw new TypeError('options.getMemory is not a function'); + } + if (getTable != null && typeof getTable !== 'function') { + throw new TypeError('options.getTable is not a function'); + } + if (beforeInit != null && typeof beforeInit !== 'function') { + throw new TypeError('options.beforeInit is not a function'); + } + var napiModule; + var isLoad = typeof userNapiModule === 'object' && userNapiModule !== null; + if (isLoad) { + if (userNapiModule.loaded) { + throw new Error('napiModule has already loaded'); + } + napiModule = userNapiModule; + } + else { + napiModule = createNapiModule(options); + } + var wasi = options.wasi; + var wasiThreads; + var importObject = { + env: napiModule.imports.env, + napi: napiModule.imports.napi, + emnapi: napiModule.imports.emnapi + }; + if (wasi) { + wasiThreads = new WASIThreads(napiModule.childThread + ? { + wasi: wasi, + childThread: true, + postMessage: napiModule.postMessage + } + : { + wasi: wasi, + threadManager: napiModule.PThread, + waitThreadStart: napiModule.waitThreadStart + }); + Object.assign(importObject, typeof wasi.getImportObject === 'function' + ? wasi.getImportObject() + : { wasi_snapshot_preview1: wasi.wasiImport }); + Object.assign(importObject, wasiThreads.getImportObject()); + } + var overwriteImports = options.overwriteImports; + if (typeof overwriteImports === 'function') { + var newImportObject = overwriteImports(importObject); + if (typeof newImportObject === 'object' && newImportObject !== null) { + importObject = newImportObject; + } + } + return loadFn(wasmInput, importObject, function (err, source) { + if (err) { + throw err; + } + var originalInstance = source.instance; + var instance = originalInstance; + var originalExports = originalInstance.exports; + var exportMemory = 'memory' in originalExports; + var importMemory = 'memory' in importObject.env; + var memory = getMemory + ? getMemory(originalExports) + : exportMemory + ? originalExports.memory + : importMemory + ? importObject.env.memory + : undefined; + if (!memory) { + throw new Error('memory is neither exported nor imported'); + } + var table = getTable ? getTable(originalExports) : originalExports.__indirect_function_table; + if (wasi && !exportMemory) { + var exports_1 = Object.create(null); + Object.assign(exports_1, originalExports, { memory: memory }); + instance = { exports: exports_1 }; + } + var module = source.module; + if (wasi) { + instance = wasiThreads.initialize(instance, module, memory); + } + else { + napiModule.PThread.setup(module, memory); + } + var emnapiInit = function () { + if (beforeInit) { + beforeInit({ + instance: originalInstance, + module: module + }); + } + napiModule.init({ + instance: instance, + module: module, + memory: memory, + table: table + }); + var ret = { + instance: originalInstance, + module: module, + usedInstance: instance + }; + if (!isLoad) { + ret.napiModule = napiModule; + } + return ret; + }; + if (napiModule.PThread.shouldPreloadWorkers()) { + var poolReady = napiModule.PThread.loadWasmModuleToAllWorkers(); + if (loadFn === loadCallback) { + return poolReady.then(emnapiInit); + } + else { + throw new Error('Synchronous loading is not supported with worker pool (reuseWorker.size > 0)'); + } + } + return emnapiInit(); + }); + } + function loadCallback(wasmInput, importObject, callback) { + return load(wasmInput, importObject).then(function (source) { + return callback(null, source); + }, function (err) { + return callback(err); + }); + } + function loadSyncCallback(wasmInput, importObject, callback) { + var source; + try { + source = loadSync(wasmInput, importObject); + } + catch (err) { + return callback(err); + } + return callback(null, source); + } + /** @public */ + function loadNapiModule(napiModule, + /** Only support `BufferSource` or `WebAssembly.Module` on Node.js */ + wasmInput, options) { + if (typeof napiModule !== 'object' || napiModule === null) { + throw new TypeError('Invalid napiModule'); + } + return loadNapiModuleImpl(loadCallback, napiModule, wasmInput, options); + } + /** @public */ + function loadNapiModuleSync(napiModule, wasmInput, options) { + if (typeof napiModule !== 'object' || napiModule === null) { + throw new TypeError('Invalid napiModule'); + } + return loadNapiModuleImpl(loadSyncCallback, napiModule, wasmInput, options); + } + /** @public */ + function instantiateNapiModule( + /** Only support `BufferSource` or `WebAssembly.Module` on Node.js */ + wasmInput, options) { + return loadNapiModuleImpl(loadCallback, undefined, wasmInput, options); + } + /** @public */ + function instantiateNapiModuleSync(wasmInput, options) { + return loadNapiModuleImpl(loadSyncCallback, undefined, wasmInput, options); + } + + /****************************************************************************** + Copyright (c) Microsoft Corporation. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + ***************************************************************************** */ + /* global Reflect, Promise, SuppressedError, Symbol, Iterator */ + + var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + + function __extends(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + } + + var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + + typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { + var e = new Error(message); + return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; + }; + + /** @public */ + var MessageHandler = /*#__PURE__*/ (function (_super) { + __extends(MessageHandler, _super); + function MessageHandler(options) { + var _this = this; + if (typeof options.onLoad !== 'function') { + throw new TypeError('options.onLoad is not a function'); + } + var userOnError = options.onError; + _this = _super.call(this, __assign(__assign({}, options), { onError: function (err, type) { + var _a; + var emnapi_thread_crashed = (_a = _this.instance) === null || _a === void 0 ? void 0 : _a.exports.emnapi_thread_crashed; + if (typeof emnapi_thread_crashed === 'function') { + emnapi_thread_crashed(); + } /* else { + tryWakeUpPthreadJoin(this.instance!) + } */ + if (typeof userOnError === 'function') { + userOnError(err, type); + } + else { + throw err; + } + } })) || this; + _this.napiModule = undefined; + return _this; + } + MessageHandler.prototype.instantiate = function (data) { + var _this = this; + var source = this.onLoad(data); + var then = source.then; + if (typeof then === 'function') { + return source.then(function (result) { + _this.napiModule = result.napiModule; + return result; + }); + } + this.napiModule = source.napiModule; + return source; + }; + MessageHandler.prototype.handle = function (e) { + var _this = this; + var _a; + _super.prototype.handle.call(this, e); + if ((_a = e === null || e === void 0 ? void 0 : e.data) === null || _a === void 0 ? void 0 : _a.__emnapi__) { + var type = e.data.__emnapi__.type; + var payload_1 = e.data.__emnapi__.payload; + try { + if (type === 'async-worker-init') { + this.handleAfterLoad(e, function () { + _this.napiModule.initWorker(payload_1.arg, payload_1.func); + }); + } + } + catch (err) { + this.onError(err, type); + } + } + }; + return MessageHandler; + }(ThreadMessageHandler)); + // function tryWakeUpPthreadJoin (instance: WebAssembly.Instance): void { + // // https://github.com/WebAssembly/wasi-libc/blob/574b88da481569b65a237cb80daf9a2d5aeaf82d/libc-top-half/musl/src/thread/pthread_join.c#L18-L21 + // const pthread_self = instance.exports.pthread_self as () => number + // const memory = instance.exports.memory as WebAssembly.Memory + // if (typeof pthread_self === 'function') { + // const selfThread = pthread_self() + // if (selfThread && memory) { + // // https://github.com/WebAssembly/wasi-libc/blob/574b88da481569b65a237cb80daf9a2d5aeaf82d/libc-top-half/musl/src/internal/pthread_impl.h#L45 + // const detatchState = new Int32Array(memory.buffer, selfThread + 7 * 4 /** detach_state */, 1) + // Atomics.store(detatchState, 0, 0) + // Atomics.notify(detatchState, 0, Infinity) + // } + // } + // } + + var version = "1.10.0"; + + exports.MessageHandler = MessageHandler; + exports.ThreadManager = ThreadManager; + exports.ThreadMessageHandler = ThreadMessageHandler; + exports.WASIThreads = WASIThreads; + exports.createInstanceProxy = createInstanceProxy; + exports.createNapiModule = createNapiModule; + exports.instantiateNapiModule = instantiateNapiModule; + exports.instantiateNapiModuleSync = instantiateNapiModuleSync; + exports.isSharedArrayBuffer = isSharedArrayBuffer; + exports.isTrapError = isTrapError; + exports.loadNapiModule = loadNapiModule; + exports.loadNapiModuleSync = loadNapiModuleSync; + exports.version = version; + +})); diff --git a/node_modules/@emnapi/core/dist/emnapi-core.min.d.mts b/node_modules/@emnapi/core/dist/emnapi-core.min.d.mts new file mode 100644 index 00000000..0ec6eb84 --- /dev/null +++ b/node_modules/@emnapi/core/dist/emnapi-core.min.d.mts @@ -0,0 +1,420 @@ +/// + +import type { Context } from '@emnapi/runtime'; +import type { ReferenceOwnership } from '@emnapi/runtime'; +import type { Worker as Worker_2 } from 'worker_threads'; + +/** @public */ +export declare type BaseCreateOptions = { + filename?: string + nodeBinding?: NodeBinding + reuseWorker?: ThreadManagerOptionsMain['reuseWorker'] + asyncWorkPoolSize?: number + waitThreadStart?: MainThreadBaseOptions['waitThreadStart'] + onCreateWorker?: (info: CreateWorkerInfo) => any + print?: (str: string) => void + printErr?: (str: string) => void + postMessage?: (msg: any) => any +} + +/** @public */ +export declare interface BaseOptions { + wasi: WASIInstance; + version?: 'preview1'; + wasm64?: boolean; +} + +/** @public */ +export declare interface ChildThreadOptions extends BaseOptions { + childThread: true; + postMessage?: (data: any) => void; +} + +/** @public */ +export declare interface CleanupThreadPayload { + tid: number; +} + +/** @public */ +export declare interface CommandInfo { + type: T; + payload: CommandPayloadMap[T]; +} + +/** @public */ +export declare interface CommandPayloadMap { + load: LoadPayload; + loaded: LoadedPayload; + start: StartPayload; + 'cleanup-thread': CleanupThreadPayload; + 'terminate-all-threads': TerminateAllThreadsPayload; + 'spawn-thread': SpawnThreadPayload; +} + +/** @public */ +export declare type CommandType = keyof CommandPayloadMap; + +/** @public */ +export declare function createInstanceProxy(instance: WebAssembly.Instance, memory?: WebAssembly.Memory | (() => WebAssembly.Memory)): WebAssembly.Instance; + +/** @public */ +export declare function createNapiModule ( +options: CreateOptions +): NapiModule + +/** @public */ +export declare type CreateOptions = BaseCreateOptions & ({ + context: Context + childThread?: boolean +} | { + context?: Context + childThread: true +}) + +/** @public */ +export declare interface CreateWorkerInfo { + type: 'thread' | 'async-work' + name: string +} + +/** @public */ +export declare interface InitOptions { + instance: WebAssembly.Instance + module: WebAssembly.Module + memory?: WebAssembly.Memory + table?: WebAssembly.Table +} + +export declare type InputType = string | URL | Response | BufferSource | WebAssembly.Module; + +/** @public */ +export declare interface InstantiatedSource extends LoadedSource { + napiModule: NapiModule; +} + +/** @public */ +export declare function instantiateNapiModule( +/** Only support `BufferSource` or `WebAssembly.Module` on Node.js */ +wasmInput: InputType | Promise, options: InstantiateOptions): Promise; + +/** @public */ +export declare function instantiateNapiModuleSync(wasmInput: BufferSource | WebAssembly.Module, options: InstantiateOptions): InstantiatedSource; + +/** @public */ +export declare type InstantiateOptions = CreateOptions & LoadOptions; + +/** @public */ +export declare function isSharedArrayBuffer(value: any): value is SharedArrayBuffer; + +/** @public */ +export declare function isTrapError(e: Error): e is WebAssembly.RuntimeError; + +/** @public */ +export declare interface LoadedPayload { +} + +/** @public */ +export declare interface LoadedSource extends WebAssembly.WebAssemblyInstantiatedSource { + usedInstance: WebAssembly.Instance; +} + +/** @public */ +export declare function loadNapiModule(napiModule: NapiModule, +/** Only support `BufferSource` or `WebAssembly.Module` on Node.js */ +wasmInput: InputType | Promise, options?: LoadOptions): Promise; + +/** @public */ +export declare function loadNapiModuleSync(napiModule: NapiModule, wasmInput: BufferSource | WebAssembly.Module, options?: LoadOptions): LoadedSource; + +/** @public */ +export declare interface LoadOptions { + wasi?: WASIInstance; + overwriteImports?: (importObject: WebAssembly.Imports) => WebAssembly.Imports; + beforeInit?: (source: WebAssembly.WebAssemblyInstantiatedSource) => void; + getMemory?: (exports: WebAssembly.Exports) => WebAssembly.Memory; + getTable?: (exports: WebAssembly.Exports) => WebAssembly.Table; +} + +/** @public */ +export declare interface LoadPayload { + wasmModule: WebAssembly.Module; + wasmMemory: WebAssembly.Memory; + sab?: Int32Array; +} + +/** @public */ +export declare interface MainThreadBaseOptions extends BaseOptions { + waitThreadStart?: boolean | number; +} + +/** @public */ +export declare type MainThreadOptions = MainThreadOptionsWithThreadManager | MainThreadOptionsCreateThreadManager; + +/** @public */ +export declare interface MainThreadOptionsCreateThreadManager extends MainThreadBaseOptions, ThreadManagerOptionsMain { +} + +/** @public */ +export declare interface MainThreadOptionsWithThreadManager extends MainThreadBaseOptions { + threadManager?: ThreadManager | (() => ThreadManager); +} + +/** @public */ +export declare interface MessageEventData { + __emnapi__: CommandInfo; +} + +/** @public */ +export declare class MessageHandler extends ThreadMessageHandler { + napiModule: NapiModule | undefined; + constructor(options: MessageHandlerOptions); + instantiate(data: LoadPayload): InstantiatedSource | PromiseLike; + handle(e: WorkerMessageEvent): void; +} + +/** @public */ +export declare interface MessageHandlerOptions extends ThreadMessageHandlerOptions { + onLoad: (data: LoadPayload) => InstantiatedSource | PromiseLike; +} + +/** @public */ +export declare interface NapiModule { + imports: { + env: any + napi: any + emnapi: any + } + exports: any + loaded: boolean + filename: string + childThread: boolean + emnapi: { + syncMemory ( + js_to_wasm: boolean, + arrayBufferOrView: T, + offset?: number, + len?: number + ): T + getMemoryAddress (arrayBufferOrView: ArrayBuffer | ArrayBufferView): PointerInfo + addSendListener (worker: any): boolean + } + + init (options: InitOptions): any + initWorker (arg: number, func: [number, number]): void + postMessage?: (msg: any) => any + + waitThreadStart: boolean | number + /* Excluded from this release type: PThread */} + +/** @public */ +export declare interface NodeBinding { + node: { + emitAsyncInit: Function + emitAsyncDestroy: Function + makeCallback: Function + } + napi: { + asyncInit: Function + asyncDestroy: Function + makeCallback: Function + } +} + +/** @public */ +export declare interface PointerInfo { + address: number + ownership: ReferenceOwnership + runtimeAllocated: 0 | 1 +} + +/** @public */ +export declare interface ReuseWorkerOptions { + /** + * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size | PTHREAD_POOL_SIZE} + */ + size: number; + /** + * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size-strict | PTHREAD_POOL_SIZE_STRICT} + */ + strict?: boolean; +} + +/** @public */ +export declare interface SpawnThreadPayload { + startArg: number; + errorOrTid: number; +} + +/** @public */ +export declare interface StartPayload { + tid: number; + arg: number; + sab?: Int32Array; +} + +/** @public */ +export declare interface StartResult { + exitCode: number; + instance: WebAssembly.Instance; +} + +/** @public */ +export declare interface TerminateAllThreadsPayload { +} + +/** @public */ +export declare class ThreadManager { + unusedWorkers: WorkerLike[]; + runningWorkers: WorkerLike[]; + pthreads: Record; + get nextWorkerID(): number; + wasmModule: WebAssembly.Module | null; + wasmMemory: WebAssembly.Memory | null; + private readonly messageEvents; + private readonly _childThread; + private readonly _onCreateWorker; + private readonly _reuseWorker; + private readonly _beforeLoad?; + /* Excluded from this release type: printErr */ + threadSpawn?: ((startArg: number, errorOrTid?: number) => number); + constructor(options: ThreadManagerOptions); + init(): void; + initMainThread(): void; + private preparePool; + shouldPreloadWorkers(): boolean; + loadWasmModuleToAllWorkers(): Promise; + preloadWorkers(): Promise; + setup(wasmModule: WebAssembly.Module, wasmMemory: WebAssembly.Memory): void; + markId(worker: WorkerLike): number; + returnWorkerToPool(worker: WorkerLike): void; + loadWasmModuleToWorker(worker: WorkerLike, sab?: Int32Array): Promise; + allocateUnusedWorker(): WorkerLike; + getNewWorker(sab?: Int32Array): WorkerLike | undefined; + cleanThread(worker: WorkerLike, tid: number, force?: boolean): void; + terminateWorker(worker: WorkerLike): void; + terminateAllThreads(): void; + addMessageEventListener(worker: WorkerLike, onMessage: (e: WorkerMessageEvent) => void): () => void; + fireMessageEvent(worker: WorkerLike, e: WorkerMessageEvent): void; +} + +/** @public */ +export declare type ThreadManagerOptions = ThreadManagerOptionsMain | ThreadManagerOptionsChild; + +/** @public */ +export declare interface ThreadManagerOptionsBase { + printErr?: (message: string) => void; + threadSpawn?: (startArg: number, errorOrTid?: number) => number; +} + +/** @public */ +export declare interface ThreadManagerOptionsChild extends ThreadManagerOptionsBase { + childThread: true; +} + +/** @public */ +export declare interface ThreadManagerOptionsMain extends ThreadManagerOptionsBase { + beforeLoad?: (worker: WorkerLike) => any; + reuseWorker?: boolean | number | ReuseWorkerOptions; + onCreateWorker: WorkerFactory; + childThread?: false; +} + +/** @public */ +export declare class ThreadMessageHandler { + protected instance: WebAssembly.Instance | undefined; + private messagesBeforeLoad; + protected postMessage: (message: any) => void; + protected onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; + protected onError: (error: Error, type: WorkerMessageType) => void; + constructor(options?: ThreadMessageHandlerOptions); + /** @virtual */ + instantiate(data: LoadPayload): WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; + /** @virtual */ + handle(e: WorkerMessageEvent>): void; + private _load; + private _start; + protected _loaded(err: Error | null, source: WebAssembly.WebAssemblyInstantiatedSource | null, payload: LoadPayload): void; + protected handleAfterLoad(e: E, f: (e: E) => void): void; +} + +/** @public */ +export declare interface ThreadMessageHandlerOptions { + onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; + onError?: (error: Error, type: WorkerMessageType) => void; + postMessage?: (message: any) => void; +} + +export declare const version: string; + +/** @public */ +export declare interface WASIInstance { + readonly wasiImport?: Record; + initialize(instance: object): void; + start(instance: object): number; + getImportObject?(): any; +} + +/** @public */ +export declare class WASIThreads { + PThread: ThreadManager | undefined; + private wasmMemory; + private wasmInstance; + private readonly threadSpawn; + readonly childThread: boolean; + private readonly postMessage; + readonly wasi: WASIInstance; + constructor(options: WASIThreadsOptions); + getImportObject(): { + wasi: WASIThreadsImports; + }; + setup(wasmInstance: WebAssembly.Instance, wasmModule: WebAssembly.Module, wasmMemory?: WebAssembly.Memory): void; + preloadWorkers(): Promise; + /** + * It's ok to call this method to a WASI command module. + * + * in child thread, must call this method instead of {@link WASIThreads.start} even if it's a WASI command module + * + * @returns A proxied WebAssembly instance if in child thread, other wise the original instance + */ + initialize(instance: WebAssembly.Instance, module: WebAssembly.Module, memory?: WebAssembly.Memory): WebAssembly.Instance; + /** + * Equivalent to calling {@link WASIThreads.initialize} and then calling {@link WASIInstance.start} + * ```js + * this.initialize(instance, module, memory) + * this.wasi.start(instance) + * ``` + */ + start(instance: WebAssembly.Instance, module: WebAssembly.Module, memory?: WebAssembly.Memory): StartResult; + terminateAllThreads(): void; +} + +/** @public */ +export declare interface WASIThreadsImports { + 'thread-spawn': (startArg: number, errorOrTid?: number) => number; +} + +/** @public */ +export declare type WASIThreadsOptions = MainThreadOptions | ChildThreadOptions; + +/** @public */ +export declare type WorkerFactory = (ctx: { + type: string; + name: string; +}) => WorkerLike; + +/** @public */ +export declare type WorkerLike = (Worker | Worker_2) & { + whenLoaded?: Promise; + loaded?: boolean; + __emnapi_tid?: number; +}; + +/** @public */ +export declare interface WorkerMessageEvent { + data: T; +} + +/** @public */ +export declare type WorkerMessageType = 'load' | 'start'; + +export { } diff --git a/node_modules/@emnapi/core/dist/emnapi-core.min.js b/node_modules/@emnapi/core/dist/emnapi-core.min.js new file mode 100644 index 00000000..d04d97de --- /dev/null +++ b/node_modules/@emnapi/core/dist/emnapi-core.min.js @@ -0,0 +1 @@ +!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r((e="undefined"!=typeof globalThis?globalThis:e||self).emnapiCore={})}(this,function(e){var r="undefined"!=typeof WebAssembly?WebAssembly:"undefined"!=typeof WXWebAssembly?WXWebAssembly:void 0;function t(e){if(e&&"object"!=typeof e)throw new TypeError("imports must be an object or undefined");return!0}function n(e,a){if(!e)throw new TypeError("Invalid wasm source");t(a),a=null!=a?a:{};try{var o="object"==typeof e&&null!==e&&"then"in e?e.then:void 0;if("function"==typeof o)return o.call(e,function(e){return n(e,a)})}catch(e){}if(e instanceof ArrayBuffer||ArrayBuffer.isView(e))return r.instantiate(e,a);if(e instanceof r.Module)return r.instantiate(e,a).then(function(r){return{instance:r,module:e}});if("undefined"!=typeof Response&&e instanceof Response)return e.arrayBuffer().then(function(e){return r.instantiate(e,a)});var i="string"==typeof e;if(i||"undefined"!=typeof URL&&e instanceof URL){if(i&&"undefined"!=typeof wx&&"undefined"!=typeof __wxConfig)return r.instantiate(e,a);if("function"!=typeof fetch)throw new TypeError("wasm source can not be a string or URL in this environment");if("function"!=typeof r.instantiateStreaming)return n(fetch(e),a);try{return r.instantiateStreaming(fetch(e),a).catch(function(){return n(fetch(e),a)})}catch(r){return n(fetch(e),a)}}throw new TypeError("Invalid wasm source")}var a="undefined"!=typeof WebAssembly?WebAssembly:"undefined"!=typeof WXWebAssembly?WXWebAssembly:void 0,o="object"==typeof process&&null!==process&&"object"==typeof process.versions&&null!==process.versions&&"string"==typeof process.versions.node;function i(e){return"function"==typeof(null==e?void 0:e.postMessage)?e.postMessage:"function"==typeof postMessage?postMessage:void 0}function s(e){return"function"==typeof SharedArrayBuffer&&e instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(e)}function u(e){try{return e instanceof a.RuntimeError}catch(e){return!1}}function f(e,r){return{__emnapi__:{type:e,payload:r}}}function c(e){if(e){if(!s(e.buffer))throw new Error("Multithread features require shared wasm memory. Try to compile with `-matomics -mbulk-memory` and use `--import-memory --shared-memory` during linking, then create WebAssembly.Memory with `shared: true` option")}else if("undefined"==typeof SharedArrayBuffer)throw new Error("Current environment does not support SharedArrayBuffer, threads are not available!")}var l=0,d=function(){function e(e){var r;if(this.unusedWorkers=[],this.runningWorkers=[],this.pthreads=Object.create(null),this.wasmModule=null,this.wasmMemory=null,this.messageEvents=new WeakMap,!e)throw new TypeError("ThreadManager(): options is not provided");this._childThread="childThread"in e&&Boolean(e.childThread),this._childThread?(this._onCreateWorker=void 0,this._reuseWorker=!1,this._beforeLoad=void 0):(this._onCreateWorker=e.onCreateWorker,this._reuseWorker=function(e){var r;if("boolean"==typeof e)return!!e&&{size:0,strict:!1};if("number"==typeof e){if(!(e>=0))throw new RangeError("reuseWorker: size must be a non-negative integer");return{size:e,strict:!1}}if(!e)return!1;var t=null!==(r=Number(e.size))&&void 0!==r?r:0,n=Boolean(e.strict);if(!(t>0)&&n)throw new RangeError("reuseWorker: size must be set to positive integer if strict is set to true");return{size:t,strict:n}}(e.reuseWorker),this._beforeLoad=e.beforeLoad),this.printErr=null!==(r=e.printErr)&&void 0!==r?r:console.error.bind(console),this.threadSpawn=e.threadSpawn}return Object.defineProperty(e.prototype,"nextWorkerID",{get:function(){return l},enumerable:!1,configurable:!0}),e.prototype.init=function(){this._childThread||this.initMainThread()},e.prototype.initMainThread=function(){this.preparePool()},e.prototype.preparePool=function(){if(this._reuseWorker&&this._reuseWorker.size)for(var e=this._reuseWorker.size;e--;){var r=this.allocateUnusedWorker();o&&(r.once("message",function(){}),r.unref())}},e.prototype.shouldPreloadWorkers=function(){return!this._childThread&&this._reuseWorker&&this._reuseWorker.size>0},e.prototype.loadWasmModuleToAllWorkers=function(){for(var e=this,r=Array(this.unusedWorkers.length),t=function(e){var t=n.unusedWorkers[e];o&&t.ref(),r[e]=n.loadWasmModuleToWorker(t).then(function(e){return o&&t.unref(),e},function(e){throw o&&t.unref(),e})},n=this,a=0;a>>0))return-48}var v=r.wasmInstance.exports.free,h=l?function(e){v(BigInt(e))}:v,y=new Int32Array(r.wasmMemory.buffer,t,2);if(Atomics.store(y,0,0),Atomics.store(y,1,0),r.childThread){s(f("spawn-thread",{startArg:e,errorOrTid:t})),Atomics.wait(y,1,0);var g=Atomics.load(y,0),_=Atomics.load(y,1);return u?g:(h(t),g?-_:_)}var E,w,m,L=n||0===n;L&&(E=new Int32Array(new SharedArrayBuffer(8208)),Atomics.store(E,0,0));var b=r.PThread;try{if(!(w=b.getNewWorker(E)))throw new Error("failed to get new worker");if(m=b.markId(w),o&&w.unref(),w.postMessage(f("start",{tid:m,arg:e,sab:E})),L){if("number"==typeof n){if("timed-out"===Atomics.wait(E,0,0,n)){try{b.cleanThread(w,m,!0)}catch(e){}throw new Error("Spawning thread timed out. Please check if the worker is created successfully and if message is handled properly in the worker.")}}else Atomics.wait(E,0,0);if(Atomics.load(E,0)>1){try{b.cleanThread(w,m,!0)}catch(e){}throw function(e){var r,t,n=new Int32Array(e);if(Atomics.load(n,0)<=1)return null;var o=Atomics.load(n,1),i=Atomics.load(n,2),s=Atomics.load(n,3),u=new Uint8Array(e),f=u.slice(16,16+o),c=u.slice(16+o,16+o+i),l=u.slice(16+o+i,16+o+i+s),d=(new TextDecoder).decode(f),p=(new TextDecoder).decode(c),v=(new TextDecoder).decode(l),h=new(null!==(r=globalThis[d])&&void 0!==r?r:"RuntimeError"===d&&null!==(t=a.RuntimeError)&&void 0!==t?t:Error)(p);return Object.defineProperty(h,"stack",{value:v,writable:!0,enumerable:!1,configurable:!0}),h}(E.buffer)}}}catch(e){return Atomics.store(y,0,1),Atomics.store(y,1,6),Atomics.notify(y,1),null==b||b.printErr(e.stack),u?1:(h(t),-6)}return Atomics.store(y,0,0),Atomics.store(y,1,m),Atomics.notify(y,1),b.runningWorkers.push(w),L||w.whenLoaded.catch(function(e){throw delete w.whenLoaded,b.cleanThread(w,m,!0),e}),u?0:(h(t),m)};this.threadSpawn=p,this.PThread&&(this.PThread.threadSpawn=p)}return e.prototype.getImportObject=function(){return{wasi:{"thread-spawn":this.threadSpawn}}},e.prototype.setup=function(e,r,t){null!=t||(t=e.exports.memory),this.wasmInstance=e,this.wasmMemory=t,this.PThread&&this.PThread.setup(r,t)},e.prototype.preloadWorkers=function(){return this.PThread?this.PThread.preloadWorkers():Promise.resolve([])},e.prototype.initialize=function(e,r,t){var n=e.exports;null!=t||(t=n.memory),this.childThread&&(e=v(e,t)),this.setup(e,r,t);var a=this.wasi;if("_start"in n&&"function"==typeof n._start)if(this.childThread){a.start(e);try{a[g(a,"kStarted")]=!1}catch(e){}}else!function(e,r){var t=g(e,["kInstance","kSetMemory"]),n=t[0],a=t[1];e[n]=r,e[a](r.exports.memory)}(a,e);else a.initialize(e);return e},e.prototype.start=function(e,r,t){var n=e.exports;return null!=t||(t=n.memory),this.childThread&&(e=v(e,t)),this.setup(e,r,t),{exitCode:this.wasi.start(e),instance:e}},e.prototype.terminateAllThreads=function(){var e;this.childThread?this.postMessage(f("terminate-all-threads",{})):null===(e=this.PThread)||void 0===e||e.terminateAllThreads()},e}();function g(e,r){var t=Object.getOwnPropertySymbols(e),n=function(e){return function(r){return r.description?r.description===e:r.toString()==="Symbol(".concat(e,")")}};return Array.isArray(r)?r.map(function(e){return t.filter(n(e))[0]}):t.filter(n(r))[0]}var _=function(){function e(e){var r=i(e);if("function"!=typeof r)throw new TypeError("options.postMessage is not a function");this.postMessage=r,this.onLoad=null==e?void 0:e.onLoad,this.onError="function"==typeof(null==e?void 0:e.onError)?e.onError:function(e,r){throw r},this.instance=void 0,this.messagesBeforeLoad=[]}return e.prototype.instantiate=function(e){if("function"==typeof this.onLoad)return this.onLoad(e);throw new Error("ThreadMessageHandler.prototype.instantiate is not implemented")},e.prototype.handle=function(e){var r,t=this;if(null===(r=null==e?void 0:e.data)||void 0===r?void 0:r.__emnapi__){var n=e.data.__emnapi__.type,a=e.data.__emnapi__.payload;try{"load"===n?this._load(a):"start"===n&&this.handleAfterLoad(e,function(){t._start(a)})}catch(e){this.onError(e,n)}}},e.prototype._load=function(e){var r=this;if(void 0===this.instance){var t;try{t=this.instantiate(e)}catch(r){return void this._loaded(r,null,e)}var n=t&&"then"in t?t.then:void 0;"function"==typeof n?n.call(t,function(t){r._loaded(null,t,e)},function(t){r._loaded(t,null,e)}):this._loaded(null,t,e)}},e.prototype._start=function(e){var r=this.instance.exports.wasi_thread_start;if("function"!=typeof r){var t=new TypeError("wasi_thread_start is not exported");throw E(e.sab,2,t),t}var n=this.postMessage,a=e.tid,o=e.arg;E(e.sab,1);try{r(a,o)}catch(t){if("unwind"!==t)throw t;return}n(f("cleanup-thread",{tid:a}))},e.prototype._loaded=function(e,r,t){if(e)throw E(t.sab,2,e),e;if(null==r){var n=new TypeError("onLoad should return an object");throw E(t.sab,2,n),n}var a=r.instance;if(!a){var o=new TypeError('onLoad should return an object which includes "instance"');throw E(t.sab,2,o),o}this.instance=a,(0,this.postMessage)(f("loaded",{}));var i=this.messagesBeforeLoad;this.messagesBeforeLoad=[];for(var s=0;s1&&t){var a=t.name,o=t.message,i=t.stack,s=(new TextEncoder).encode(a),u=(new TextEncoder).encode(o),f=(new TextEncoder).encode(i);Atomics.store(n,1,s.length),Atomics.store(n,2,u.length),Atomics.store(n,3,f.length);var c=new Uint8Array(e);c.set(s,16),c.set(u,16+s.length),c.set(f,16+s.length+u.length)}}(e.buffer,r,t),Atomics.notify(e,0))}function w(e){var t=function(){var t,n,a,o,i,s="object"==typeof process&&null!==process&&"object"==typeof process.versions&&null!==process.versions&&"string"==typeof process.versions.node,u=Boolean(e.childThread),f="number"==typeof e.waitThreadStart?e.waitThreadStart:Boolean(e.waitThreadStart);function c(e){if("function"==typeof r.RuntimeError)throw new r.RuntimeError(e);throw Error(e)}var l,p,v,h={imports:{env:{},napi:{},emnapi:{}},exports:{},emnapi:{},loaded:!1,filename:"",childThread:u,initWorker:void 0,waitThreadStart:f,PThread:void 0,init:function(e){if(h.loaded)return h.exports;if(!e)throw new TypeError("Invalid napi init options");var s=e.instance;if(!(null==s?void 0:s.exports))throw new TypeError("Invalid wasm instance");t=s;var u=s.exports,f=e.module,d=e.memory||u.memory,v=e.table||u.__indirect_function_table;if(!(f instanceof r.Module))throw new TypeError("Invalid wasm module");if(!(d instanceof r.Memory))throw new TypeError("Invalid wasm memory");if(!(v instanceof r.Table))throw new TypeError("Invalid wasm table");if(n=d,a=v,"function"!=typeof u.malloc)throw new TypeError("malloc is not exported");if("function"!=typeof u.free)throw new TypeError("free is not exported");if(o=u.malloc,i=u.free,!h.childThread){var y=8,g=s.exports.node_api_module_get_api_version_v1;"function"==typeof g&&(y=g());var _=h.envObject||(h.envObject=l.createEnv(h.filename,y,function(e){return a.get(e)},function(e){return a.get(e)},c,p)),E=l.openScope(_);try{_.callIntoModule(function(e){var r=h.exports,t=E.add(r),n=(0,s.exports.napi_register_wasm_v1)(e.id,t.id);h.exports=n?l.handleStore.get(n).value:r})}catch(e){if("unwind"!==e)throw e}finally{l.closeScope(_,E)}return h.loaded=!0,delete h.envObject,h.exports}}},y=void 0;if(u){l=null==e?void 0:e.context;var g="function"==typeof e.postMessage?e.postMessage:"function"==typeof postMessage?postMessage:void 0;if("function"!=typeof g)throw new TypeError("No postMessage found");h.postMessage=g}else{var _=e.context;if("object"!=typeof _||null===_)throw new TypeError("Invalid `options.context`. Use `import { getDefaultContext } from '@emnapi/runtime'`");l=_}if("string"==typeof e.filename&&(h.filename=e.filename),"function"==typeof e.onCreateWorker&&(y=e.onCreateWorker),"function"==typeof e.print?e.print:console.log.bind(console),v="function"==typeof e.printErr?e.printErr:console.warn.bind(console),"nodeBinding"in e){var E=e.nodeBinding;if("object"!=typeof E||null===E)throw new TypeError("Invalid `options.nodeBinding`. Use @emnapi/node-binding package");p=E}var w=0;if("asyncWorkPoolSize"in e){if("number"!=typeof e.asyncWorkPoolSize)throw new TypeError("options.asyncWorkPoolSize must be a integer");(w=e.asyncWorkPoolSize|0)>1024?w=1024:w<-1024&&(w=-1024)}var m=!u&&w<=0;function L(){return Math.abs(w)}function b(e){if(!e)return!1;if(e._emnapiSendListener)return!0;var r=function(e){var r=(s?e:e.data).__emnapi__;if(r&&"async-send"===r.type)if(u){(0,h.postMessage)({__emnapi__:r})}else{var t=r.payload.callback;a.get(t)(r.payload.data)}};return e._emnapiSendListener={handler:r,dispose:function(){s?e.off("message",r):e.removeEventListener("message",r,!1),delete e._emnapiSendListener}},s?e.on("message",r):e.addEventListener("message",r,!1),!0}h.imports.env._emnapi_async_work_pool_size=L,h.emnapi.addSendListener=b;var S=new d(u?{printErr:v,childThread:!0}:{printErr:v,beforeLoad:function(e){b(e)},reuseWorker:e.reuseWorker,onCreateWorker:y});function A(e,r){l.feature.setImmediate(function(){a.get(e)(r)})}function C(e,r){Promise.resolve().then(function(){a.get(e)(r)})}function k(e,r){var t,a=[r>>>0,(t=r,+Math.abs(t)>=1?t>0?(0|Math.min(+Math.floor(t/4294967296),4294967295))>>>0:~~+Math.ceil((t-+(~~t>>>0))/4294967296)>>>0:0)],o=new DataView(n.buffer);o.setInt32(e,a[0],!0),o.setInt32(e+4,a[1],!0)}h.PThread=S;var I,T=Object.freeze({__proto__:null,$emnapiSetValueI64:k,_emnapi_call_finalizer:function(e,r,t,n,a){t>>>=0,l.envStore.get(r).callFinalizerInternal(e,t,n,a)},_emnapi_callback_into_module:function(e,r,t,n,o){var i=l.envStore.get(r),s=l.openScope(i);try{i.callbackIntoModule(Boolean(e),function(){a.get(t)(r,n)})}catch(e){throw l.closeScope(i,s),o&&l.closeScope(i),e}l.closeScope(i,s)},_emnapi_close_handle_scope:function(e){return l.closeScope()},_emnapi_ctx_decrease_waiting_request_counter:function(){l.decreaseWaitingRequestCounter()},_emnapi_ctx_increase_waiting_request_counter:function(){l.increaseWaitingRequestCounter()},_emnapi_get_node_version:function(e,r,t){e>>>=0,r>>>=0,t>>>=0;var a="object"==typeof process&&null!==process&&"object"==typeof process.versions&&null!==process.versions&&"string"==typeof process.versions.node?process.versions.node.split(".").map(function(e){return Number(e)}):[0,0,0],o=new DataView(n.buffer);o.setUint32(e,a[0],!0),o.setUint32(r,a[1],!0),o.setUint32(t,a[2],!0)},_emnapi_get_now:function(){return performance.timeOrigin+performance.now()},_emnapi_is_main_browser_thread:function(){return"undefined"==typeof window||"undefined"==typeof document||s?0:1},_emnapi_is_main_runtime_thread:function(){return u?0:1},_emnapi_next_tick:C,_emnapi_open_handle_scope:function(){return l.openScope().id},_emnapi_runtime_keepalive_pop:function(){},_emnapi_runtime_keepalive_push:function(){},_emnapi_set_immediate:A,_emnapi_unwind:function(){throw"unwind"},napi_clear_last_error:function(e){return l.envStore.get(e).clearLastError()},napi_set_last_error:function(e,r,t,n){return l.envStore.get(e).setLastError(r,t,n)}});function U(e){var r=new DataView(n.buffer).getInt32(e+20,!0);return S.pthreads[r]}var V=new Promise(function(e){I=function(){V.ready=!0,e()}});V.ready=!1;var x=Object.freeze({__proto__:null,_emnapi_after_uvthreadpool_ready:function(e,r,t){V.ready?a.get(e)(r,t):V.then(function(){a.get(e)(r,t)})},_emnapi_async_send_js:function(e,r,t){if(u)(0,h.postMessage)({__emnapi__:{type:"async-send",payload:{callback:r,data:t}}});else switch(e){case 0:A(r,t);break;case 1:C(r,t)}},_emnapi_emit_async_thread_ready:function(){u&&(0,h.postMessage)({__emnapi__:{type:"async-thread-ready",payload:{}}})},_emnapi_tell_js_uvthreadpool:function(e,r){for(var t=[],a=new DataView(n.buffer),o=function(r){var n=U(a.getUint32(e+4*r,!0));t.push(new Promise(function(e){var r=function(t){var a=(s?t:t.data).__emnapi__;a&&"async-thread-ready"===a.type&&(e(),n&&"function"==typeof n.unref&&n.unref(),s?n.off("message",r):n.removeEventListener("message",r))};s?n.on("message",r):n.addEventListener("message",r)}))},i=0;i>>=0);r&&"function"==typeof r.ref&&r.ref()}},_emnapi_worker_unref:function(e){if(!u){var r=U(e>>>=0);r&&"function"==typeof r.unref&&r.unref()}}});var B=Object.freeze({__proto__:null,napi_adjust_external_memory:function(e,r,t){if(!e)return 1;var a=l.envStore.get(e);if(!t)return a.setLastError(1);var o=l.adjustAmountOfExternalAllocatedMemory(r);return t>>>=0,l.feature.supportBigInt?new DataView(n.buffer).setBigInt64(t,BigInt(o),!0):k(t,Number(o)),a.clearLastError()}}),D={idGen:{},values:[void 0],queued:new Set,pending:[],init:function(){var e={nextId:1,list:[],generate:function(){var r;return e.list.length?r=e.list.shift():(r=e.nextId,e.nextId++),r},reuse:function(r){e.list.push(r)}};D.idGen=e,D.values=[void 0],D.queued=new Set,D.pending=[]},create:function(e,r,t,n,a,o){var i=0,s=0;if(p){var u=p.node.emitAsyncInit(r,t,-1);i=u.asyncId,s=u.triggerAsyncId}var f=D.idGen.generate();return D.values[f]={env:e,id:f,resource:r,asyncId:i,triggerAsyncId:s,status:0,execute:n,complete:a,data:o},f},callComplete:function(e,r){var t=e.complete,n=e.env,o=e.data,i=function(){if(t){var e=l.envStore.get(n),i=l.openScope(e);try{e.callbackIntoModule(!0,function(){a.get(t)(n,r,o)})}finally{l.closeScope(e,i)}}};p?p.node.makeCallback(e.resource,i,[],{asyncId:e.asyncId,triggerAsyncId:e.triggerAsyncId}):i()},queue:function(e){var r=D.values[e];if(r&&0===r.status){if(r.status=1,D.queued.size>=(Math.abs(w)||4))return void D.pending.push(e);D.queued.add(e);var t=r.env,n=r.data,o=r.execute;r.status=2,l.feature.setImmediate(function(){if(a.get(o)(t,n),D.queued.delete(e),r.status=3,l.feature.setImmediate(function(){D.callComplete(r,0)}),D.pending.length>0){var i=D.pending.shift();D.values[i].status=0,D.queue(i)}})}},cancel:function(e){var r=D.pending.indexOf(e);if(-1!==r){var t=D.values[e];return t&&1===t.status?(t.status=4,D.pending.splice(r,1),l.feature.setImmediate(function(){D.callComplete(t,11)}),0):9}return 9},remove:function(e){var r=D.values[e];r&&(p&&p.node.emitAsyncDestroy({asyncId:r.asyncId,triggerAsyncId:r.triggerAsyncId}),D.values[e]=void 0,D.idGen.reuse(e))}};function M(e,r,t,a){if(p){var o=l.handleStore.get(e).value,i=l.handleStore.get(r).value,s=p.node.emitAsyncInit(o,i,t),u=s.asyncId,f=s.triggerAsyncId;if(a){a>>>=0;var c=new DataView(n.buffer);c.setFloat64(a,u,!0),c.setFloat64(a+8,f,!0)}}}function O(e,r){p&&p.node.emitAsyncDestroy({asyncId:e,triggerAsyncId:r})}var j=Object.freeze({__proto__:null,_emnapi_async_destroy_js:function(e){if(!p)return 9;e>>>=0;var r=new DataView(n.buffer),t=r.getInt32(e,!0),a=r.getInt32(e+4,!0),o=BigInt(t>>>0)|BigInt(a)<=BigInt(-1)*(BigInt(1)<=BigInt(1)<>BigInt(32));t>>>=0;var c=new DataView(n.buffer);return c.setInt32(t,u,!0),c.setInt32(t+4,f,!0),0},_emnapi_env_check_gc_access:function(e){l.envStore.get(e).checkGCAccess()},_emnapi_node_emit_async_destroy:O,_emnapi_node_emit_async_init:M,_emnapi_node_make_callback:function(e,r,t,a,o,i,s,u){var f,c=0;if(p){var d=l.handleStore.get(r).value,v=l.handleStore.get(t).value;a>>>=0,o>>>=0,o>>>=0;for(var h=Array(o),y=new DataView(n.buffer);c>>=0,f=l.envStore.get(e).ensureHandleId(_),y.setUint32(u,f,!0)}},napi_close_callback_scope:function(e,r){throw new Error("napi_close_callback_scope has not been implemented yet")},napi_make_callback:function(e,r,t,a,o,i,s){var u,f=0;if(!e)return 1;var c=l.envStore.get(e);if(c.checkGCAccess(),!c.tryCatch.isEmpty())return c.setLastError(10);if(!c.canCallIntoJs())return c.setLastError(c.moduleApiVersion>=10?23:10);c.clearLastError();try{if(!p)return c.setLastError(9);if(!t)return c.setLastError(1);if(o>0&&!i)return c.setLastError(1);var d=Object(l.handleStore.get(t).value),v=l.handleStore.get(a).value;if("function"!=typeof v)return c.setLastError(1);r>>>=0;var h=new DataView(n.buffer),y=h.getInt32(r,!0),g=h.getInt32(r+4,!0),_=BigInt(y>>>0)|BigInt(g)<>>=0,o>>>=0,o>>>=0;for(var E=Array(o);f>>=0,u=c.ensureHandleId(m.value),h.setUint32(s,u,!0)),c.getReturnStatus())}catch(e){return c.tryCatch.setError(e),c.setLastError(10)}},napi_open_callback_scope:function(e,r,t,n){throw new Error("napi_open_callback_scope has not been implemented yet")}}),R={_liveSet:{},offset:{__size__:0,resource:0,async_id:0,trigger_async_id:0,queue_size:0,is_some:0,queue:0,async_pending:0,async_u_fd:0,thread_count:0,state:0,dispatch_state:0,context:0,max_queue_size:0,ref:0,env:0,finalize_data:0,finalize_cb:0,call_js_cb:0,handles_closing:0,async_ref:0,mutex:0,cond:0},init:function(){if(R._liveSet=new Set,R.offset.__size__=184,R.offset.resource=0,R.offset.async_id=8,R.offset.trigger_async_id=16,R.offset.queue_size=60,R.offset.is_some=24,R.offset.queue=64,R.offset.async_pending=132,R.offset.async_u_fd=96,R.offset.thread_count=136,R.offset.state=140,R.offset.dispatch_state=144,R.offset.context=148,R.offset.max_queue_size=152,R.offset.ref=156,R.offset.env=160,R.offset.finalize_data=164,R.offset.finalize_cb=168,R.offset.call_js_cb=172,R.offset.handles_closing=176,R.offset.async_ref=180,R.offset.mutex=32,R.offset.cond=56,R.offset.mutex=R.offset.mutex+4,void 0!==S){S.unusedWorkers.forEach(R.addListener),S.runningWorkers.forEach(R.addListener);var e=S.getNewWorker;S.getNewWorker=function(){var r=e.apply(this,arguments);return R.addListener(r),r}}},addListener:function(e){if(!e)return!1;if(e._emnapiTSFNListener)return!0;var r=function(e){var r=(s?e:e.data).__emnapi__;if(r){var t=r.type,a=r.payload;if("tsfn-send"===t){var o=a.tsfn+R.offset.async_pending;0!==Atomics.load(new Int32Array(n.buffer),o>>>2)&&R.enqueue(a.tsfn)}}};return e._emnapiTSFNListener={handler:r,dispose:function(){s?e.off("message",r):e.removeEventListener("message",r,!1),delete e._emnapiTSFNListener}},s?e.on("message",r):e.addEventListener("message",r,!1),!0},initQueue:function(e){var r=o(8);return!!r&&(r>>>=0,new Uint8Array(n.buffer,r,8).fill(0),R.storeSizeTypeValue(e+R.offset.queue,r,!1),!0)},destroyQueue:function(e){var r=R.loadSizeTypeValue(e+R.offset.queue,!1);if(r){for(var t=R.loadSizeTypeValue(r,!1);0!==t;){var n=R.loadSizeTypeValue(t+4,!1);i(t),t=n}i(r)}},pushQueue:function(e,r){var t=R.loadSizeTypeValue(e+R.offset.queue,!1),n=R.loadSizeTypeValue(t,!1),a=R.loadSizeTypeValue(t+4,!1),i=o(8);if(!i)throw new Error("OOM");i>>>=0,R.storeSizeTypeValue(i,r,!1),R.storeSizeTypeValue(i+4,0,!1),0===n&&0===a?(R.storeSizeTypeValue(t,i,!1),R.storeSizeTypeValue(t+4,i,!1)):(R.storeSizeTypeValue(a+4,i,!1),R.storeSizeTypeValue(t+4,i,!1)),R.addQueueSize(e)},shiftQueue:function(e){var r=R.loadSizeTypeValue(e+R.offset.queue,!1),t=R.loadSizeTypeValue(r,!1);if(0===t)return 0;var n=t,a=R.loadSizeTypeValue(t+4,!1);R.storeSizeTypeValue(r,a,!1),0===a&&R.storeSizeTypeValue(r+4,0,!1),R.storeSizeTypeValue(n+4,0,!1);var o=R.loadSizeTypeValue(n,!1);return i(n),R.subQueueSize(e),o},push:function(e,r,t){var n=R.getMutex(e),a=R.getCond(e),o=function(){var r=R.getQueueSize(e),t=R.getMaxQueueSize(e);return r>=t&&t>0&&0===R.getState(e)},i="undefined"!=typeof window&&"undefined"!=typeof document&&!s,u=!1,f=n.execute(function(){for(;o();){if(0===t)return 15;if(i)return 21;a.wait()}return 0===R.getState(e)?(R.pushQueue(e,r),R.send(e),0):0===R.getThreadCount(e)?1:(R.subThreadCount(e),2!==R.getState(e)||0!==R.getThreadCount(e)||(u=!0),16)});return u&&R.destroy(e),f},getMutex:function(e){var r=e+R.offset.mutex,t={lock:function(){var e="undefined"!=typeof window&&"undefined"!=typeof document&&!s,t=new Int32Array(n.buffer,r,1);if(e)for(;;){if(0===Atomics.compareExchange(t,0,0,10))return}else for(;;){if(0===Atomics.compareExchange(t,0,0,10))return;Atomics.wait(t,0,10)}},unlock:function(){var e=new Int32Array(n.buffer,r,1);if(10!==Atomics.compareExchange(e,0,10,0))throw new Error("Tried to unlock while not holding the mutex");Atomics.notify(e,0,1)},execute:function(e){t.lock();try{return e()}finally{t.unlock()}}};return t},getCond:function(e){var r=e+R.offset.cond,t=R.getMutex(e);return{wait:function(){var e=new Int32Array(n.buffer,r,1),a=Atomics.load(e,0);t.unlock(),Atomics.wait(e,0,a),t.lock()},signal:function(){var e=new Int32Array(n.buffer,r,1);Atomics.add(e,0,1),Atomics.notify(e,0,1)}}},getQueueSize:function(e){return R.loadSizeTypeValue(e+R.offset.queue_size,!0)},addQueueSize:function(e){var r,t,a=R.offset.queue_size;r=new Uint32Array(n.buffer),t=e+a>>>2,Atomics.add(r,t,1)},subQueueSize:function(e){var r,t,a=R.offset.queue_size;r=new Uint32Array(n.buffer),t=e+a>>>2,Atomics.sub(r,t,1)},getThreadCount:function(e){return R.loadSizeTypeValue(e+R.offset.thread_count,!0)},addThreadCount:function(e){var r,t,a=R.offset.thread_count;r=new Uint32Array(n.buffer),t=e+a>>>2,Atomics.add(r,t,1)},subThreadCount:function(e){var r,t,a=R.offset.thread_count;r=new Uint32Array(n.buffer),t=e+a>>>2,Atomics.sub(r,t,1)},getState:function(e){return Atomics.load(new Int32Array(n.buffer),e+R.offset.state>>>2)},setState:function(e,r){Atomics.store(new Int32Array(n.buffer),e+R.offset.state>>>2,r)},getHandlesClosing:function(e){return Atomics.load(new Int8Array(n.buffer),e+R.offset.handles_closing)},setHandlesClosing:function(e,r){Atomics.store(new Int8Array(n.buffer),e+R.offset.handles_closing,r)},getDispatchState:function(e){return Atomics.load(new Uint32Array(n.buffer),e+R.offset.dispatch_state>>>2)},getContext:function(e){return R.loadSizeTypeValue(e+R.offset.context,!1)},getMaxQueueSize:function(e){return R.loadSizeTypeValue(e+R.offset.max_queue_size,!0)},getEnv:function(e){return R.loadSizeTypeValue(e+R.offset.env,!1)},getCallJSCb:function(e){return R.loadSizeTypeValue(e+R.offset.call_js_cb,!1)},getRef:function(e){return R.loadSizeTypeValue(e+R.offset.ref,!1)},getResource:function(e){return R.loadSizeTypeValue(e+R.offset.resource,!1)},getFinalizeCb:function(e){return R.loadSizeTypeValue(e+R.offset.finalize_cb,!1)},getFinalizeData:function(e){return R.loadSizeTypeValue(e+R.offset.finalize_data,!1)},loadSizeTypeValue:function(e,r){var t;return r?(t=new Uint32Array(n.buffer),Atomics.load(t,e>>>2)):(t=new Int32Array(n.buffer),Atomics.load(t,e>>>2))},storeSizeTypeValue:function(e,r,t){var a;return t?(a=new Uint32Array(n.buffer),void Atomics.store(a,e>>>2,r)):(a=new Int32Array(n.buffer),void Atomics.store(a,e>>>2,r>>>0))},releaseResources:function(e){if(2!==R.getState(e)){R.setState(e,2);var r=R.getEnv(e),t=l.envStore.get(r),a=R.getRef(e);a&&l.refStore.get(a).dispose();var o=R.getResource(e);l.refStore.get(o).dispose(),new DataView(n.buffer).setInt8(e+R.offset.is_some,0,!0),l.removeCleanupHook(t,R.cleanup,e),t.unref();var i=e+R.offset.async_ref>>>2,s=new Uint32Array(n.buffer);if(Atomics.load(s,i)>0&&(Atomics.store(s,i,0),l.decreaseWaitingRequestCounter()),p){var u=new DataView(n.buffer);O(u.getFloat64(e+R.offset.async_id,!0),u.getFloat64(e+R.offset.trigger_async_id,!0))}}},destroy:function(e){R._liveSet.delete(e),R.destroyQueue(e),R.releaseResources(e),i(e)},emptyQueue:function(e){var r=[];R.getMutex(e).execute(function(){for(;R.getQueueSize(e)>0;)r.push(R.shiftQueue(e))});for(var t,n=R.getCallJSCb(e),o=R.getContext(e),i=0;i0?R.releaseResources(e):r=!0}),r&&R.destroy(e)},finalize:function(e){var r=R.getEnv(e),t=l.envStore.get(r);l.openScope(t);var a=R.getFinalizeCb(e),o=R.getFinalizeData(e),i=R.getContext(e),s=function(){t.callFinalizerInternal(0,a,o,i)};try{if(R.emptyQueue(e),a)if(p){var u=R.getResource(e),f=l.refStore.get(u).get(),c=l.handleStore.get(f).value,d=new DataView(n.buffer),v=d.getFloat64(e+R.offset.async_id,!0),h=d.getFloat64(e+R.offset.trigger_async_id,!0);p.node.makeCallback(c,s,[],{asyncId:v,triggerAsyncId:h})}else s();R.maybeDelete(e)}finally{l.closeScope(t)}},cleanup:function(e){R.closeHandlesAndMaybeDelete(e,1)},closeHandlesAndMaybeDelete:function(e,r){var t=R.getEnv(e),a=l.envStore.get(t);l.openScope(a);try{if(r&&R.getMutex(e).execute(function(){R.setState(e,1),R.getMaxQueueSize(e)>0&&R.getCond(e).signal()}),R.getHandlesClosing(e))return;R.setHandlesClosing(e,1),Atomics.store(new Int32Array(n.buffer),e+R.offset.async_pending>>>2,1),l.feature.setImmediate(function(){R.finalize(e)})}finally{l.closeScope(a)}},dispatchOne:function(e){var r=0,t=!1,o=!1,i=R.getMutex(e),s=R.getCond(e);if(i.execute(function(){if(0===R.getState(e)){var n=R.getQueueSize(e);if(n>0){r=R.shiftQueue(e),t=!0;var a=R.getMaxQueueSize(e);n===a&&a>0&&s.signal(),n--}0===n?0===R.getThreadCount(e)&&(R.setState(e,1),R.getMaxQueueSize(e)>0&&s.signal(),R.closeHandlesAndMaybeDelete(e,0)):o=!0}else R.closeHandlesAndMaybeDelete(e,0)}),t){var u=R.getEnv(e),f=l.envStore.get(u);l.openScope(f);var c=function(){f.callbackIntoModule(!1,function(){var t=R.getCallJSCb(e),n=R.getRef(e),o=n?l.refStore.get(n).get():0;if(t){var i=R.getContext(e);a.get(t)(u,o,i,r)}else{var s=o?l.handleStore.get(o).value:null;"function"==typeof s&&s()}})};try{if(p){var d=R.getResource(e),v=l.refStore.get(d).get(),h=l.handleStore.get(v).value,y=new DataView(n.buffer);p.node.makeCallback(h,c,[],{asyncId:y.getFloat64(e+R.offset.async_id,!0),triggerAsyncId:y.getFloat64(e+R.offset.trigger_async_id,!0)})}else c()}finally{l.closeScope(f)}}return o},dispatch:function(e){for(var r=!0,t=1e3,a=new Uint32Array(n.buffer),o=e+R.offset.dispatch_state>>>2;r&&0!==--t;)Atomics.store(a,o,1),r=R.dispatchOne(e),1!==Atomics.exchange(a,o,0)&&(r=!0);r&&R.send(e)},enqueue:function(e){var r=e+R.offset.async_pending,t=e+R.offset.async_u_fd,a=new Int32Array(n.buffer);0===Atomics.exchange(a,t>>>2,1)&&l.feature.setImmediate(function(){R._liveSet.has(e)&&(0!==Atomics.load(a,r>>>2)?l.feature.setImmediate(function(){try{if(0===Atomics.exchange(a,r>>>2,0))return;if(!R._liveSet.has(e))return;R.dispatch(e)}finally{R._liveSet.has(e)&&(Atomics.store(a,t>>>2,0),0!==Atomics.load(a,r>>>2)&&R.enqueue(e))}}):Atomics.store(a,t>>>2,0))})},send:function(e){if(1&~Atomics.or(new Uint32Array(n.buffer),e+R.offset.dispatch_state>>>2,2)){var r=e+R.offset.async_pending;0===Atomics.load(new Int32Array(n.buffer),r>>>2)&&0===Atomics.exchange(new Int32Array(n.buffer),r>>>2,1)&&(void 0!==u&&u?postMessage({__emnapi__:{type:"tsfn-send",payload:{tsfn:e}}}):R.enqueue(e))}}};var W={pool:[],workerReady:null,globalAddress:0,globalOffset:{idle_threads:0,q:4,next:4,prev:8,mutex:12,cond:16,exit_message:20,end:28},offset:{resource:0,async_id:8,trigger_async_id:16,env:24,status:28,queue:32,queue_next:32,queue_prev:36,data:40,execute:44,complete:48,end:52},init:function(){if(W.pool=[],W.workerReady=null,void 0!==S){S.unusedWorkers.forEach(W.addListener),S.runningWorkers.forEach(W.addListener);var e=S.getNewWorker;S.getNewWorker=function(){var r=e.apply(this,arguments);return W.addListener(r),r}}},addListener:function(e){if(!e)return!1;if(e._emnapiAWMTListener)return!0;var r=function(e){var r=(s?e:e.data).__emnapi__;if(r){var t=r.type,n=r.payload;"async-work-complete"===t&&W.callComplete(n.work,0)}};return e._emnapiAWMTListener={handler:r,dispose:function(){s?e.off("message",r):e.removeEventListener("message",r,!1),delete e._emnapiAWMTListener}},s?e.on("message",r):e.addEventListener("message",r,!1),!0},initGlobal:function(){if(!W.globalAddress){W.globalAddress=o(W.globalOffset.end),W.globalAddress>>>=0;var e=W.globalOffset.end,r=W.globalAddress;new Uint8Array(n.buffer,r,e).fill(0),W.queueInit(W.globalAddress+W.globalOffset.q),W.queueInit(W.globalAddress+W.globalOffset.exit_message)}},terminateWorkers:function(){W.pool.forEach(function(e){var r,t;null===(r=e._emnapiAWMTListener)||void 0===r||r.dispose(),null===(t=e._emnapiTSFNListener)||void 0===t||t.dispose(),e.terminate()}),W.pool.length=0},initWorkers:function(e){if(u)return W.workerReady||(W.workerReady=Promise.resolve());if(W.workerReady)return W.workerReady;if(!("emnapi_async_worker_create"in t.exports))throw new TypeError("`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags");var r=t.exports.emnapi_async_worker_create,a=[];W.initGlobal();for(var o=0;o>>=0;var t=new DataView(n.buffer).getInt32(e+20,!0);return(r=S.pthreads[t]).whenLoaded});return W.workerReady=Promise.all(i),W.workerReady},getResource:function(e){return new DataView(n.buffer).getUint32(e+W.offset.resource,!0)},getExecute:function(e){return new DataView(n.buffer).getUint32(e+W.offset.execute,!0)},getComplete:function(e){return new DataView(n.buffer).getUint32(e+W.offset.complete,!0)},getEnv:function(e){return new DataView(n.buffer).getUint32(e+W.offset.env,!0)},getData:function(e){return new DataView(n.buffer).getUint32(e+W.offset.data,!0)},getMutex:function(){var e=W.globalAddress+W.globalOffset.mutex,r={lock:function(){var r="undefined"!=typeof window&&"undefined"!=typeof document&&!s,t=new Int32Array(n.buffer,e,1);if(r)for(;;){if(0===Atomics.compareExchange(t,0,0,10))return}else for(;;){if(0===Atomics.compareExchange(t,0,0,10))return;Atomics.wait(t,0,10)}},unlock:function(){var r=new Int32Array(n.buffer,e,1);if(10!==Atomics.compareExchange(r,0,10,0))throw new Error("Tried to unlock while not holding the mutex");Atomics.notify(r,0,1)},execute:function(e){r.lock();try{return e()}finally{r.unlock()}}};return r},getCond:function(){var e=W.globalAddress+W.globalOffset.cond,r=W.getMutex();return{wait:function(){var t=new Int32Array(n.buffer,e,1),a=Atomics.load(t,0);r.unlock(),Atomics.wait(t,0,a),r.lock()},signal:function(){var r=new Int32Array(n.buffer,e,1);Atomics.add(r,0,1),Atomics.notify(r,0,1)}}},queueInit:function(e){var r=new DataView(n.buffer);r.setUint32(e,e,!0),r.setUint32(e+4,e,!0)},queueInsertTail:function(e,r){var t=new DataView(n.buffer);t.setUint32(r,e,!0);var a=t.getUint32(e+4,!0);t.setUint32(r+4,a,!0);var o=t.getUint32(r+4,!0);t.setUint32(o,r,!0),t.setUint32(e+4,r,!0)},queueRemove:function(e){var r=new DataView(n.buffer),t=r.getUint32(e+4,!0),a=r.getUint32(e,!0);r.setUint32(t,a,!0),r.setUint32(a+4,t,!0)},queueEmpty:function(e){return e==new DataView(n.buffer).getUint32(e,!0)},scheduleWork:function(e){var r;(null===(r=W.workerReady)||void 0===r?void 0:r.ready)||W.initWorkers(L()).then(function(){W.workerReady.ready=!0}).catch(function(e){throw W.workerReady=null,e}),l.increaseWaitingRequestCounter();var t=new Int32Array(n.buffer,e+W.offset.status,1);Atomics.store(t,0,0);var a=W.getMutex(),o=W.getCond();a.lock();try{W.queueInsertTail(W.globalAddress+W.globalOffset.q,e+W.offset.queue)}catch(e){throw l.decreaseWaitingRequestCounter(),a.unlock(),e}new DataView(n.buffer).getUint32(W.globalAddress+W.globalOffset.idle_threads,!0)>0&&o.signal(),a.unlock()},cancelWork:function(e){var r=!1;return W.getMutex().execute(function(){var t=new DataView(n.buffer);(r=!W.queueEmpty(e+W.offset.queue)&&2!==t.getInt32(e+W.offset.status,!0))&&W.queueRemove(e+W.offset.queue)}),r?0!==Atomics.compareExchange(new Int32Array(n.buffer,e+W.offset.status,1),0,0,1)?9:(l.feature.setImmediate(function(){W.callComplete(e,11)}),0):9},callComplete:function(e,r){l.decreaseWaitingRequestCounter();var t=W.getComplete(e),o=W.getEnv(e),i=W.getData(e),s=l.envStore.get(o),u=l.openScope(s),f=function(){t&&s.callbackIntoModule(!0,function(){a.get(t)(o,r,i)})};try{if(p){var c=W.getResource(e),d=l.refStore.get(c).get(),v=l.handleStore.get(d).value,h=new DataView(n.buffer),y=h.getFloat64(e+W.offset.async_id,!0),g=h.getFloat64(e+W.offset.trigger_async_id,!0);p.node.makeCallback(v,f,[],{asyncId:y,triggerAsyncId:g})}else f()}finally{l.closeScope(s,u)}}};W.init();var z=m?function(e,r,t,a,o,i,s){if(!e)return 1;var u,f=l.envStore.get(e);if(f.checkGCAccess(),!a)return f.setLastError(1);if(!s)return f.setLastError(1);if(u=r?Object(l.handleStore.get(r).value):{},!t)return f.setLastError(1);var c=String(l.handleStore.get(t).value),d=D.create(e,u,c,a,o,i);return s>>>=0,new DataView(n.buffer).setUint32(s,d,!0),f.clearLastError()}:function(e,r,t,a,i,s,u){if(!e)return 1;var f,c=l.envStore.get(e);if(c.checkGCAccess(),!a)return c.setLastError(1);if(!u)return c.setLastError(1);if(f=r?Object(l.handleStore.get(r).value):{},!t)return c.setLastError(1);var d=W.offset.end,p=o(d);if(!p)return c.setLastError(9);p>>>=0,new Uint8Array(n.buffer).subarray(p,p+d).fill(0);var v=c.ensureHandleId(f),h=l.createReference(c,v,1,1).id,y=new DataView(n.buffer);return y.setUint32(p,h,!0),M(v,t,-1,p+W.offset.async_id),y.setUint32(p+W.offset.env,e,!0),y.setUint32(p+W.offset.execute,a,!0),y.setUint32(p+W.offset.complete,i,!0),y.setUint32(p+W.offset.data,s,!0),W.queueInit(p+W.offset.queue),u>>>=0,y.setUint32(u,p,!0),c.clearLastError()},G=m?function(e,r){if(!e)return 1;var t=l.envStore.get(e);return t.checkGCAccess(),r?(r>>>=0,D.remove(r),t.clearLastError()):t.setLastError(1)}:function(e,r){if(!e)return 1;var t=l.envStore.get(e);if(t.checkGCAccess(),!r)return t.setLastError(1);r>>>=0;var a=W.getResource(r);if(l.refStore.get(a).dispose(),p){var o=new DataView(n.buffer);O(o.getFloat64(r+W.offset.async_id,!0),o.getFloat64(r+W.offset.trigger_async_id,!0))}return i(r),t.clearLastError()},F=m?function(e,r){if(!e)return 1;var t=l.envStore.get(e);return r?(r>>>=0,D.queue(r),t.clearLastError()):t.setLastError(1)}:function(e,r){if(!e)return 1;var t=l.envStore.get(e);return r?(r>>>=0,W.scheduleWork(r),t.clearLastError()):t.setLastError(1)},P=m?function(e,r){if(!e)return 1;var t=l.envStore.get(e);if(!r)return t.setLastError(1);r>>>=0;var n=D.cancel(r);return 0===n?t.clearLastError():t.setLastError(n)}:function(e,r){if(!e)return 1;var t=l.envStore.get(e);if(!r)return t.setLastError(1);r>>>=0;var n=W.cancelWork(r);return 0===n?t.clearLastError():t.setLastError(n)};h.initWorker=function(e,r){if(!h.childThread)throw new Error("startThread is only available in child threads");if("function"!=typeof t.exports.emnapi_async_worker_init)throw new TypeError("`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags");t.exports.emnapi_async_worker_init(e),a.get(r[0])(r[1])};var N=Object.freeze({__proto__:null,_emnapi_async_worker:function(e){e>>>=0,W.globalAddress=e;var r=W.getMutex(),t=W.getCond();r.lock();for(var o=e+W.globalOffset.exit_message,i=e+W.globalOffset.idle_threads,s=e+W.globalOffset.q,u=new DataView(n.buffer);;){for(;W.queueEmpty(s);)Atomics.add(new Int32Array(n.buffer,i,1),0,1),t.wait(),Atomics.sub(new Int32Array(n.buffer,i,1),0,1);var f=u.getUint32(s,!0);if(f===o){t.signal(),r.unlock();break}var l=f-W.offset.queue;W.queueRemove(f),W.queueInit(f),r.unlock();var d=new Int32Array(n.buffer,l+W.offset.status,1);1===Atomics.load(d,0)&&c("unreachable");var p=W.getExecute(l),v=W.getEnv(l),y=W.getData(l);a.get(p)(v,y),Atomics.store(d,0,2),(0,h.postMessage)({__emnapi__:{type:"async-work-complete",payload:{work:l}}}),r.lock()}return 0},_emnapi_spawn_worker:function(e,r){if("function"!=typeof y)throw new TypeError("`options.onCreateWorker` is not a function");var n=[];if(!("emnapi_async_worker_create"in t.exports))throw new TypeError("`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags");n.push(t.exports.emnapi_async_worker_create(0,0));var a,o=function(e){!("message"in e)||-1===e.message.indexOf("RuntimeError")&&-1===e.message.indexOf("unreachable")||W.terminateWorkers()};try{var u=y({type:"async-work",name:"emnapi-async-worker"}),f=S.loadWasmModuleToWorker(u);s?u.on("error",o):u.addEventListener("error",o,!1),W.addListener(u),R.addListener(u),[].push(f.then(function(){"function"==typeof u.unref&&u.unref()})),a=W.pool.push(u)-1;var c=n[0];u.threadBlockBase=c,u.postMessage({__emnapi__:{type:"async-worker-init",payload:{arg:c,func:[e,r]}}})}catch(e){c=n[0];throw i(c),e}return a},napi_cancel_async_work:P,napi_create_async_work:z,napi_delete_async_work:G,napi_queue_async_work:F}),q={registry:"function"==typeof FinalizationRegistry?new FinalizationRegistry(function(e){i(e)}):void 0,table:new WeakMap,wasmMemoryViewTable:new WeakMap,init:function(){q.registry="function"==typeof FinalizationRegistry?new FinalizationRegistry(function(e){i(e)}):void 0,q.table=new WeakMap,q.wasmMemoryViewTable=new WeakMap},isSharedArrayBuffer:function(e){return"function"==typeof SharedArrayBuffer&&e instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(e)},isDetachedArrayBuffer:function(e){if(0===e.byteLength)try{new Uint8Array(e)}catch(e){return!0}return!1},getArrayBufferPointer:function(e,r){var t,a={address:0,ownership:0,runtimeAllocated:0};if(e===n.buffer)return a;var i=q.isDetachedArrayBuffer(e);if(q.table.has(e)){var s=q.table.get(e);return i?(s.address=0,s):(r&&0===s.ownership&&1===s.runtimeAllocated&&new Uint8Array(n.buffer).set(new Uint8Array(e),s.address),s)}if(i||0===e.byteLength)return a;if(!r)return a;var u=o(e.byteLength);if(!u)throw new Error("Out of memory");return u>>>=0,new Uint8Array(n.buffer).set(new Uint8Array(e),u),a.address=u,a.ownership=q.registry?0:1,a.runtimeAllocated=1,q.table.set(e,a),null===(t=q.registry)||void 0===t||t.register(e,u),a},getOrUpdateMemoryView:function(e){if(e.buffer===n.buffer)return q.wasmMemoryViewTable.has(e)||q.wasmMemoryViewTable.set(e,{Ctor:e.constructor,address:e.byteOffset,length:e instanceof DataView?e.byteLength:e.length,ownership:1,runtimeAllocated:0}),e;if((q.isDetachedArrayBuffer(e.buffer)||q.isSharedArrayBuffer(e.buffer))&&q.wasmMemoryViewTable.has(e)){var r=q.wasmMemoryViewTable.get(e),t=r.Ctor,a=void 0,o=l.feature.Buffer;return a="function"==typeof o&&t===o?o.from(n.buffer,r.address,r.length):new t(n.buffer,r.address,r.length),q.wasmMemoryViewTable.set(a,r),a}return e},getViewPointer:function(e,r){if((e=q.getOrUpdateMemoryView(e)).buffer===n.buffer){if(q.wasmMemoryViewTable.has(e)){var t=q.wasmMemoryViewTable.get(e);return{address:t.address,ownership:t.ownership,runtimeAllocated:t.runtimeAllocated,view:e}}return{address:e.byteOffset,ownership:1,runtimeAllocated:0,view:e}}var a=q.getArrayBufferPointer(e.buffer,r),o=a.address,i=a.ownership,s=a.runtimeAllocated;return{address:0===o?0:o+e.byteOffset,ownership:i,runtimeAllocated:s,view:e}}},J={utf8Decoder:void 0,utf16Decoder:void 0,init:function(){var e,r={decode:function(e){for(var r=0,t=Math.min(4096,e.length+1),n=new Uint16Array(t),a=[],o=0;;){var i=r=t-1){var s=n.subarray(0,o);if(a.push(String.fromCharCode.apply(null,s)),!i)return a.join("");e=e.subarray(r),r=0,o=0}var u=e[r++];if(128&u){if(192==(224&u)){var f=63&e[r++];n[o++]=(31&u)<<6|f}else if(224==(240&u)){f=63&e[r++];var c=63&e[r++];n[o++]=(31&u)<<12|f<<6|c}else if(240==(248&u)){var l=(7&u)<<18|(f=63&e[r++])<<12|(c=63&e[r++])<<6|63&e[r++];l>65535&&(l-=65536,n[o++]=l>>>10&1023|55296,l=56320|1023&l),n[o++]=l}}else n[o++]=u}}};e="function"==typeof TextDecoder?new TextDecoder:r,J.utf8Decoder=e;var t,n={decode:function(e){var r=new Uint16Array(e.buffer,e.byteOffset,e.byteLength/2);if(r.length<=4096)return String.fromCharCode.apply(null,r);for(var t=[],n=0,a=0;n=55296&&r<=57343?(t+=4,++n):t+=3;return t},UTF8ToString:function(e,r){if(!e||!r)return"";e>>>=0;var t=new Uint8Array(n.buffer),a=e;if(-1===r||4294967295===r)for(;t[a];)++a;else a=e+(r>>>0);if((r=a-e)<=16){for(var o=e,i="";o>10,56320|1023&c)}}else i+=String.fromCharCode((31&s)<<6|u)}else i+=String.fromCharCode(s)}return i}return J.utf8Decoder.decode("function"==typeof SharedArrayBuffer&&t.buffer instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(t.buffer)?t.slice(e,a):t.subarray(e,a))},stringToUTF8:function(e,r,t){var a=new Uint8Array(n.buffer),o=r;if(!(t>0))return 0;for(var i=o>>>=0,s=o+t-1,u=0;u=55296&&f<=57343)f=65536+((1023&f)<<10)|1023&e.charCodeAt(++u);if(f<=127){if(o>=s)break;a[o++]=f}else if(f<=2047){if(o+1>=s)break;a[o++]=192|f>>6,a[o++]=128|63&f}else if(f<=65535){if(o+2>=s)break;a[o++]=224|f>>12,a[o++]=128|f>>6&63,a[o++]=128|63&f}else{if(o+3>=s)break;a[o++]=240|f>>18,a[o++]=128|f>>12&63,a[o++]=128|f>>6&63,a[o++]=128|63&f}}return a[o]=0,o-i},UTF16ToString:function(e,r){if(!e||!r)return"";var t=e>>>=0;if(-1===r||4294967295===r){for(var a=t>>>1,o=new Uint16Array(n.buffer);o[a];)++a;t=a<<1>>>0}else t=e+2*(r>>>0);if((r=t-e)<=32)return String.fromCharCode.apply(null,new Uint16Array(n.buffer,e,r/2));var i=new Uint8Array(n.buffer);return J.utf16Decoder.decode("function"==typeof SharedArrayBuffer&&i.buffer instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(i.buffer)?i.slice(e,t):i.subarray(e,t))},stringToUTF16:function(e,r,t){if(void 0===t&&(t=2147483647),t<2)return 0;for(var a=r,o=(t-=2)<2*e.length?t/2:e.length,i=new DataView(n.buffer),s=0;s>>=0,!e)return 1;var i=l.envStore.get(e);i.checkGCAccess();var s=-1===t||4294967295===t,u=t>>>0;if(0!==t&&!r)return i.setLastError(1);if(!a)return i.setLastError(1);if(!(s||u<=2147483647))return i.setLastError(1);var f=o(r>>>=0,s,u);a>>>=0;var c=l.addToCurrentScope(f).id;return new DataView(n.buffer).setUint32(a,c,!0),i.clearLastError()},newExternalString:function(e,r,t,a,o,i,s,u,f){if(t>>>=0,!e)return 1;var c=l.envStore.get(e);c.checkGCAccess();var d=-1===t||4294967295===t,p=t>>>0;if(0!==t&&!r)return c.setLastError(1);if(!i)return c.setLastError(1);if(!(d||p<=2147483647))return c.setLastError(1);var v=u(e,r,t,i);if(0===v){if(s)new DataView(n.buffer).setInt8(s,1,!0);a&&c.callFinalizer(a,r,o)}return v}};function H(e,r,t,a,o,i,s){if(!e)return 1;var u=l.envStore.get(e);if(u.checkGCAccess(),!r)return u.setLastError(1);var f=l.handleStore.get(r);if(!f.isTypedArray())return u.setLastError(1);var c=f.value,d=new DataView(n.buffer);if(t){t>>>=0;var p=void 0;if(c instanceof Int8Array)p=0;else if(c instanceof Uint8Array)p=1;else if(c instanceof Uint8ClampedArray)p=2;else if(c instanceof Int16Array)p=3;else if(c instanceof Uint16Array)p=4;else if(c instanceof Int32Array)p=5;else if(c instanceof Uint32Array)p=6;else if("function"==typeof Float16Array&&c instanceof Float16Array)p=11;else if(c instanceof Float32Array)p=7;else if(c instanceof Float64Array)p=8;else if(c instanceof BigInt64Array)p=9;else{if(!(c instanceof BigUint64Array))return u.setLastError(9);p=10}d.setInt32(t,p,!0)}if(c=q.getOrUpdateMemoryView(c),a&&(a>>>=0,d.setUint32(a,c.length,!0)),o||i){if(o){o>>>=0;var v=q.getViewPointer(c,!0).address;d.setUint32(o,v,!0)}if(i){i>>>=0;var h=u.ensureHandleId(c.buffer);d.setUint32(i,h,!0)}}return s&&(s>>>=0,d.setUint32(s,c.byteOffset,!0)),u.clearLastError()}function Q(e,r,t,a,o,i){if(!e)return 1;var s=l.envStore.get(e);if(s.checkGCAccess(),!r)return s.setLastError(1);var u=l.handleStore.get(r);if(!u.isDataView())return s.setLastError(1);var f=q.getOrUpdateMemoryView(u.value),c=new DataView(n.buffer);if(t&&(t>>>=0,c.setUint32(t,f.byteLength,!0)),a||o){if(a){a>>>=0;var d=q.getViewPointer(f,!0).address;c.setUint32(a,d,!0)}if(o){o>>>=0;var p=s.ensureHandleId(f.buffer);c.setUint32(o,p,!0)}}return i&&(i>>>=0,c.setUint32(i,f.byteOffset,!0)),s.clearLastError()}var $=Object.freeze({__proto__:null,napi_get_array_length:function(e,r,t){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!a.tryCatch.isEmpty())return a.setLastError(10);if(!a.canCallIntoJs())return a.setLastError(a.moduleApiVersion>=10?23:10);a.clearLastError();try{if(!r)return a.setLastError(1);if(!t)return a.setLastError(1);var o=l.handleStore.get(r);if(!o.isArray())return a.setLastError(8);t>>>=0;var i=o.value.length>>>0;return new DataView(n.buffer).setUint32(t,i,!0),a.getReturnStatus()}catch(e){return a.tryCatch.setError(e),a.setLastError(10)}},napi_get_arraybuffer_info:function(e,r,t,a){if(!e)return 1;var o=l.envStore.get(e);if(o.checkGCAccess(),!r)return o.setLastError(1);var i=l.handleStore.get(r);if(!i.isArrayBuffer()&&!q.isSharedArrayBuffer(i.value))return o.setLastError(1);var s=new DataView(n.buffer);if(t){t>>>=0;var u=q.getArrayBufferPointer(i.value,!0).address;s.setUint32(t,u,!0)}return a&&(a>>>=0,s.setUint32(a,i.value.byteLength,!0)),o.clearLastError()},napi_get_buffer_info:function(e,r,t,n){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!r)return a.setLastError(1);var o=l.handleStore.get(r);return o.isBuffer(l.feature.Buffer)?o.isDataView()?Q(e,r,n,t,0,0):H(e,r,0,n,t,0,0):a.setLastError(1)},napi_get_dataview_info:Q,napi_get_date_value:function(e,r,t){var a;if(!e)return 1;var o=l.envStore.get(e);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{if(!r)return o.setLastError(1);if(!t)return o.setLastError(1);var i=l.handleStore.get(r);return i.isDate()?(t>>>=0,a=i.value.valueOf(),new DataView(n.buffer).setFloat64(t,a,!0),o.getReturnStatus()):o.setLastError(1)}catch(e){return o.tryCatch.setError(e),o.setLastError(10)}},napi_get_prototype:function(e,r,t){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!a.tryCatch.isEmpty())return a.setLastError(10);if(!a.canCallIntoJs())return a.setLastError(a.moduleApiVersion>=10?23:10);a.clearLastError();try{if(!r)return a.setLastError(1);if(!t)return a.setLastError(1);var o=l.handleStore.get(r);if(null==o.value)throw new TypeError("Cannot convert undefined or null to object");var i=void 0;try{i=o.isObject()||o.isFunction()?o.value:Object(o.value)}catch(e){return a.setLastError(2)}t>>>=0;var s=a.ensureHandleId(Object.getPrototypeOf(i));return new DataView(n.buffer).setUint32(t,s,!0),a.getReturnStatus()}catch(e){return a.tryCatch.setError(e),a.setLastError(10)}},napi_get_typedarray_info:H,napi_get_value_bigint_int64:function(e,r,t,a){if(!e)return 1;var o=l.envStore.get(e);if(o.checkGCAccess(),!l.feature.supportBigInt)return o.setLastError(9);if(!r)return o.setLastError(1);if(!t)return o.setLastError(1);if(!a)return o.setLastError(1);var i=l.handleStore.get(r).value;if("bigint"!=typeof i)return o.setLastError(6);a>>>=0,t>>>=0;var s=new DataView(n.buffer);i>=BigInt(-1)*(BigInt(1)<=BigInt(1)<>BigInt(32));return s.setInt32(t,u,!0),s.setInt32(t+4,f,!0),o.clearLastError()},napi_get_value_bigint_uint64:function(e,r,t,a){if(!e)return 1;var o=l.envStore.get(e);if(o.checkGCAccess(),!l.feature.supportBigInt)return o.setLastError(9);if(!r)return o.setLastError(1);if(!t)return o.setLastError(1);if(!a)return o.setLastError(1);var i=l.handleStore.get(r).value;if("bigint"!=typeof i)return o.setLastError(6);a>>>=0,t>>>=0;var s=new DataView(n.buffer);i>=BigInt(0)&&i>BigInt(32));return s.setUint32(t,u,!0),s.setUint32(t+4,f,!0),o.clearLastError()},napi_get_value_bigint_words:function(e,r,t,a,o){if(!e)return 1;var i=l.envStore.get(e);if(i.checkGCAccess(),!l.feature.supportBigInt)return i.setLastError(9);if(!r)return i.setLastError(1);if(!a)return i.setLastError(1);var s=l.handleStore.get(r);if(!s.isBigInt())return i.setLastError(17);var u=s.value>>=0,o>>>=0,a>>>=0;var f=new DataView(n.buffer),c=f.getUint32(a,!0);c>>>=0;for(var d=0,p=u?s.value*BigInt(-1):s.value;p!==BigInt(0);)d++,p>>=BigInt(64);if(p=u?s.value*BigInt(-1):s.value,t||o){if(!t)return i.setLastError(1);if(!o)return i.setLastError(1);for(var v=[];p!==BigInt(0);){var h=p&(BigInt(1)<>=BigInt(64)}for(var y=Math.min(c,v.length),g=0;g>BigInt(32));f.setUint32(o+8*g,_,!0),f.setUint32(o+(8*g+4),E,!0)}f.setInt32(t,u?1:0,!0),f.setUint32(a,y,!0)}else c=d,f.setUint32(a,c,!0);return i.clearLastError()},napi_get_value_bool:function(e,r,t){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!r)return a.setLastError(1);if(!t)return a.setLastError(1);var o=l.handleStore.get(r);if("boolean"!=typeof o.value)return a.setLastError(7);t>>>=0;var i=o.value?1:0;return new DataView(n.buffer).setInt8(t,i,!0),a.clearLastError()},napi_get_value_double:function(e,r,t){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!r)return a.setLastError(1);if(!t)return a.setLastError(1);var o=l.handleStore.get(r);if("number"!=typeof o.value)return a.setLastError(6);t>>>=0;var i=o.value;return new DataView(n.buffer).setFloat64(t,i,!0),a.clearLastError()},napi_get_value_external:function(e,r,t){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!r)return a.setLastError(1);if(!t)return a.setLastError(1);var o=l.handleStore.get(r);if(!o.isExternal())return a.setLastError(1);t>>>=0;var i=o.data();return new DataView(n.buffer).setUint32(t,i,!0),a.clearLastError()},napi_get_value_int32:function(e,r,t){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!r)return a.setLastError(1);if(!t)return a.setLastError(1);var o=l.handleStore.get(r);if("number"!=typeof o.value)return a.setLastError(6);t>>>=0;var i=new Int32Array([o.value])[0];return new DataView(n.buffer).setInt32(t,i,!0),a.clearLastError()},napi_get_value_int64:function(e,r,t){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!r)return a.setLastError(1);if(!t)return a.setLastError(1);var o=l.handleStore.get(r);if("number"!=typeof o.value)return a.setLastError(6);var i=o.value;t>>>=0;var s=new DataView(n.buffer);return i===Number.POSITIVE_INFINITY||i===Number.NEGATIVE_INFINITY||isNaN(i)?(s.setInt32(t,0,!0),s.setInt32(t+4,0,!0)):i<-0x8000000000000000?(s.setInt32(t,0,!0),s.setInt32(t+4,2147483648,!0)):i>=0x8000000000000000?(s.setUint32(t,4294967295,!0),s.setUint32(t+4,2147483647,!0)):k(t,Math.trunc(i)),a.clearLastError()},napi_get_value_string_latin1:function(e,r,t,a,o){if(!e)return 1;var i=l.envStore.get(e);if(i.checkGCAccess(),!r)return i.setLastError(1);o>>>=0,t>>>=0,a>>>=0,a>>>=0;var s=l.handleStore.get(r);if("string"!=typeof s.value)return i.setLastError(3);var u=new DataView(n.buffer);if(t)if(0!==a){for(var f=0,c=void 0,d=0;d>>=0,t>>>=0,a>>>=0,a>>>=0;var s=l.handleStore.get(r);if("string"!=typeof s.value)return i.setLastError(3);var u=new DataView(n.buffer);if(t)if(0!==a){var f=J.stringToUTF16(s.value,t,2*a);o&&u.setUint32(o,f/2,!0)}else o&&u.setUint32(o,0,!0);else{if(!o)return i.setLastError(1);u.setUint32(o,s.value.length,!0)}return i.clearLastError()},napi_get_value_string_utf8:function(e,r,t,a,o){if(!e)return 1;var i=l.envStore.get(e);if(i.checkGCAccess(),!r)return i.setLastError(1);o>>>=0,t>>>=0,a>>>=0,a>>>=0;var s=l.handleStore.get(r);if("string"!=typeof s.value)return i.setLastError(3);var u=new DataView(n.buffer);if(t)if(0!==a){var f=J.stringToUTF8(s.value,t,a);o&&u.setUint32(o,f,!0)}else o&&u.setUint32(o,0,!0);else{if(!o)return i.setLastError(1);var c=J.lengthBytesUTF8(s.value);u.setUint32(o,c,!0)}return i.clearLastError()},napi_get_value_uint32:function(e,r,t){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!r)return a.setLastError(1);if(!t)return a.setLastError(1);var o=l.handleStore.get(r);if("number"!=typeof o.value)return a.setLastError(6);t>>>=0;var i=new Uint32Array([o.value])[0];return new DataView(n.buffer).setUint32(t,i,!0),a.clearLastError()},node_api_set_prototype:function(e,r,t){if(!e)return 1;var n=l.envStore.get(e);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!t)return n.setLastError(1);var a=l.handleStore.get(r).value;if(null==a)throw new TypeError("Cannot convert undefined or null to object");var o=typeof a,i=void 0;try{i="object"===o&&null!==a||"function"===o?a:Object(a)}catch(e){return n.setLastError(2)}var s=l.handleStore.get(t).value;return Object.setPrototypeOf(i,s),n.getReturnStatus()}catch(e){return n.tryCatch.setError(e),n.setLastError(10)}}});function Y(e,r,t,a){return J.newString(e,r,t,a,function(e,r,t){var a="",o=0,i=new DataView(n.buffer);if(r)for(;;){if(!(s=i.getUint8(e,!0)))break;a+=String.fromCharCode(s),e++}else for(;o>>=0,new DataView(n.buffer).setUint32(t,s,!0),i.clearLastError()},napi_create_bigint_uint64:function(e,r,t,a){if(!e)return 1;var o,i=l.envStore.get(e);if(i.checkGCAccess(),!l.feature.supportBigInt)return i.setLastError(9);if(!t)return i.setLastError(1);o=r&(BigInt(1)<>>=0,new DataView(n.buffer).setUint32(t,s,!0),i.clearLastError()},napi_create_bigint_words:function(e,r,t,a,o){var i,s;if(!e)return 1;var u=l.envStore.get(e);if(u.checkGCAccess(),!u.tryCatch.isEmpty())return u.setLastError(10);if(!u.canCallIntoJs())return u.setLastError(u.moduleApiVersion>=10?23:10);u.clearLastError();try{if(!l.feature.supportBigInt)return u.setLastError(9);if(!o)return u.setLastError(1);if(a>>>=0,t>>>=0,(t>>>=0)>2147483647)return u.setLastError(1);if(t>16384)throw new RangeError("Maximum BigInt size exceeded");var f=BigInt(0),c=new DataView(n.buffer);for(s=0;s>>=0,i=l.addToCurrentScope(f).id,c.setUint32(o,i,!0),u.getReturnStatus()}catch(e){return u.tryCatch.setError(e),u.setLastError(10)}},napi_create_double:function(e,r,t){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!t)return a.setLastError(1);t>>>=0;var o=l.addToCurrentScope(r).id;return new DataView(n.buffer).setUint32(t,o,!0),a.clearLastError()},napi_create_int32:function(e,r,t){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!t)return a.setLastError(1);t>>>=0;var o=l.addToCurrentScope(r).id;return new DataView(n.buffer).setUint32(t,o,!0),a.clearLastError()},napi_create_int64:function(e,r,t,a){if(!e)return 1;var o,i=l.envStore.get(e);if(i.checkGCAccess(),!t)return i.setLastError(1);o=Number(r);var s=l.addToCurrentScope(o).id;return t>>>=0,new DataView(n.buffer).setUint32(t,s,!0),i.clearLastError()},napi_create_string_latin1:Y,napi_create_string_utf16:X,napi_create_string_utf8:Z,napi_create_uint32:function(e,r,t){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!t)return a.setLastError(1);t>>>=0;var o=l.addToCurrentScope(r>>>0).id;return new DataView(n.buffer).setUint32(t,o,!0),a.clearLastError()},node_api_create_external_string_latin1:function(e,r,t,n,a,o,i){return J.newExternalString(e,r,t,n,a,o,i,Y,void 0)},node_api_create_external_string_utf16:function(e,r,t,n,a,o,i){return J.newExternalString(e,r,t,n,a,o,i,X,void 0)},node_api_create_property_key_latin1:function(e,r,t,n){return Y(e,r,t,n)},node_api_create_property_key_utf16:function(e,r,t,n){return X(e,r,t,n)},node_api_create_property_key_utf8:function(e,r,t,n){return Z(e,r,t,n)}});function ee(e,r,t,n,o){var i,s=(r>>>=0)&&t?J.UTF8ToString(r,t):"",u=a.get(n),f=function(e){return u(e.id,e.ctx.scopeStore.currentScope.id)},c=function(e,r){return function(){var t=e.ctx.openScope(e),n=t.callbackInfo;n.data=o,n.args=arguments,n.thiz=this,n.fn=i;try{var a=e.callIntoModule(r);return a?e.ctx.handleStore.get(a).value:void 0}finally{n.data=0,n.args=void 0,n.thiz=void 0,n.fn=void 0,e.ctx.closeScope(e,t)}}};if(""===s)return{status:0,f:i=c(e,f)};if(!/^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(s))return{status:1,f:void 0};if(l.feature.supportNewFunction){var d=c(e,f);try{i=new Function("_","return function "+s+'(){"use strict";return _.apply(this,arguments);};')(d)}catch(r){i=c(e,f),l.feature.canSetFunctionName&&Object.defineProperty(i,"name",{value:s})}}else i=c(e,f),l.feature.canSetFunctionName&&Object.defineProperty(i,"name",{value:s});return{status:0,f:i}}function re(e,r,t,n,a,o,i,s,u){if(a||o){var f=void 0,c=void 0;a&&(f=ee(e,0,0,a,u).f),o&&(c=ee(e,0,0,o,u).f);var d={configurable:!!(4&s),enumerable:!!(2&s),get:f,set:c};Object.defineProperty(r,t,d)}else if(n){d={configurable:!!(4&s),enumerable:!!(2&s),writable:!!(1&s),value:ee(e,0,0,n,u).f};Object.defineProperty(r,t,d)}else{d={configurable:!!(4&s),enumerable:!!(2&s),writable:!!(1&s),value:l.handleStore.get(i).value};Object.defineProperty(r,t,d)}}function te(e){var r=l.handleStore.get(e);return r.isObject()||r.isFunction()?(void 0!==q&&ArrayBuffer.isView(r.value)&&q.wasmMemoryViewTable.has(r.value)&&(r=l.addToCurrentScope(q.wasmMemoryViewTable.get(r.value))),{status:0,handle:r}):{status:1}}function ne(e,r,t,a){var o;if(!e)return 1;var i=l.envStore.get(e);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!r)return i.setLastError(1);if(0===a&&!t)return i.setLastError(1);var s=l.handleStore.get(r);if(!s.isObject()&&!s.isFunction())return i.setLastError(1);var u=i.getObjectBinding(s.value),f=u.wrapped,c=l.refStore.get(f);if(!c)return i.setLastError(1);if(t)t>>>=0,o=c.data(),new DataView(n.buffer).setUint32(t,o,!0);return 1===a&&(u.wrapped=0,1===c.ownership()?c.resetFinalizer():c.dispose()),i.getReturnStatus()}catch(e){return i.tryCatch.setError(e),i.setLastError(10)}}function ae(e,r,t,a,o,i){if(!e)return 1;var s=l.envStore.get(e);if(s.checkGCAccess(),!l.feature.supportFinalizer)return s.setLastError(9);if(!r)return s.setLastError(1);if(!a)return s.setLastError(1);var u=te(r);if(0!==u.status)return s.setLastError(u.status);var f=u.handle,c=i?1:0;t>>>=0,a>>>=0,o>>>=0;var d=l.createReferenceWithFinalizer(s,f.id,0,c,a,t,o);if(i){i>>>=0;var p=d.id;new DataView(n.buffer).setUint32(i,p,!0)}return s.clearLastError()}var oe=Object.freeze({__proto__:null,napi_add_finalizer:ae,napi_check_object_type_tag:function(e,r,t,a){var o=!0;if(!e)return 1;var i=l.envStore.get(e);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!r)return i.setLastError(i.tryCatch.hasCaught()?10:1);var s=l.handleStore.get(r);if(!s.isObject()&&!s.isFunction())return i.setLastError(i.tryCatch.hasCaught()?10:2);if(!t)return i.setLastError(i.tryCatch.hasCaught()?10:1);if(!a)return i.setLastError(i.tryCatch.hasCaught()?10:1);var u=i.getObjectBinding(s.value);if(null!==u.tag){t>>>=0;var f=u.tag,c=new Uint32Array(n.buffer,t,4);o=f[0]===c[0]&&f[1]===c[1]&&f[2]===c[2]&&f[3]===c[3]}else o=!1;return a>>>=0,new DataView(n.buffer).setInt8(a,o?1:0,!0),i.getReturnStatus()}catch(e){return i.tryCatch.setError(e),i.setLastError(10)}},napi_define_class:function(e,r,t,a,o,i,s,u){var f,c,d;if(!e)return 1;var p=l.envStore.get(e);if(p.checkGCAccess(),!p.tryCatch.isEmpty())return p.setLastError(10);if(!p.canCallIntoJs())return p.setLastError(p.moduleApiVersion>=10?23:10);p.clearLastError();try{if(!u)return p.setLastError(1);if(!a)return p.setLastError(1);if(t>>>=0,s>>>=0,i>>>=0,(i>>>=0)>0&&!s)return p.setLastError(1);if(!(t>=-1&&t<=2147483647||4294967295===t)||!r)return p.setLastError(1);var v=ee(p,r,t,a,o);if(0!==v.status)return p.setLastError(v.status);for(var h=v.f,y=void 0,g=new DataView(n.buffer),_=0;_>>=0;var A=g.getUint32(f+28,!0);if(E)y=J.UTF8ToString(E,-1);else{if(!w)return p.setLastError(4);if("string"!=typeof(y=l.handleStore.get(w).value)&&"symbol"!=typeof y)return p.setLastError(4)}1024&d?re(p,h,y,m,L,b,S,d,A):re(p,h.prototype,y,m,L,b,S,d,A)}return c=l.addToCurrentScope(h).id,u>>>=0,g.setUint32(u,c,!0),p.getReturnStatus()}catch(e){return p.tryCatch.setError(e),p.setLastError(10)}},napi_remove_wrap:function(e,r,t){return ne(e,r,t,1)},napi_type_tag_object:function(e,r,t){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!a.tryCatch.isEmpty())return a.setLastError(10);if(!a.canCallIntoJs())return a.setLastError(a.moduleApiVersion>=10?23:10);a.clearLastError();try{if(!r)return a.setLastError(a.tryCatch.hasCaught()?10:1);var o=l.handleStore.get(r);if(!o.isObject()&&!o.isFunction())return a.setLastError(a.tryCatch.hasCaught()?10:2);if(!(t>>>=0))return a.setLastError(a.tryCatch.hasCaught()?10:1);var i=a.getObjectBinding(o.value);if(null!==i.tag)return a.setLastError(a.tryCatch.hasCaught()?10:1);var s=new Uint8Array(16);return s.set(new Uint8Array(n.buffer,t,16)),i.tag=new Uint32Array(s.buffer),a.getReturnStatus()}catch(e){return a.tryCatch.setError(e),a.setLastError(10)}},napi_unwrap:function(e,r,t){return ne(e,r,t,0)},napi_wrap:function(e,r,t,a,o,i){return function(e,r,t,a,o,i){var s;if(!e)return 1;var u=l.envStore.get(e);if(u.checkGCAccess(),!u.tryCatch.isEmpty())return u.setLastError(10);if(!u.canCallIntoJs())return u.setLastError(u.moduleApiVersion>=10?23:10);u.clearLastError();try{if(!l.feature.supportFinalizer){if(a)throw l.createNotSupportWeakRefError("napi_wrap",'Parameter "finalize_cb" must be 0(NULL)');if(i)throw l.createNotSupportWeakRefError("napi_wrap",'Parameter "result" must be 0(NULL)')}if(!r)return u.setLastError(1);var f=te(r);if(0!==f.status)return u.setLastError(f.status);var c=f.handle;if(0!==u.getObjectBinding(c.value).wrapped)return u.setLastError(1);var d=void 0;if(i){if(!a)return u.setLastError(1);d=l.createReferenceWithFinalizer(u,c.id,0,1,a,t,o),i>>>=0,s=d.id,new DataView(n.buffer).setUint32(i,s,!0)}else d=a?l.createReferenceWithFinalizer(u,c.id,0,0,a,t,o):l.createReferenceWithData(u,c.id,0,0,t);return u.getObjectBinding(c.value).wrapped=d.id,u.getReturnStatus()}catch(e){return u.tryCatch.setError(e),u.setLastError(10)}}(e,r,t,a,o,i)},node_api_post_finalizer:function(e,r,t,n){if(!e)return 1;var a=l.envStore.get(e);return a.enqueueFinalizer(l.createTrackedFinalizer(a,r,t,n)),a.clearLastError()}});function ie(e,r,t,a,o,i,s){var u;if(!e)return 1;var f=l.envStore.get(e);if(f.checkGCAccess(),!f.tryCatch.isEmpty())return f.setLastError(10);if(!f.canCallIntoJs())return f.setLastError(f.moduleApiVersion>=10?23:10);f.clearLastError();try{if(!s)return f.setLastError(1);if(a>>>=0,s>>>=0,a>>>=0,(t>>>=0)||(a=0),a>2147483647)throw new RangeError("Cannot create a memory view larger than 2147483647 bytes");if(t+a>n.buffer.byteLength)throw new RangeError("Memory out of range");if(!l.feature.supportFinalizer&&o)throw l.createNotSupportWeakRefError("emnapi_create_memory_view",'Parameter "finalize_cb" must be 0(NULL)');var c=void 0;switch(r){case 0:c={Ctor:Int8Array,address:t,length:a,ownership:1,runtimeAllocated:0};break;case 1:c={Ctor:Uint8Array,address:t,length:a,ownership:1,runtimeAllocated:0};break;case 2:c={Ctor:Uint8ClampedArray,address:t,length:a,ownership:1,runtimeAllocated:0};break;case 3:c={Ctor:Int16Array,address:t,length:a>>1,ownership:1,runtimeAllocated:0};break;case 4:c={Ctor:Uint16Array,address:t,length:a>>1,ownership:1,runtimeAllocated:0};break;case 5:c={Ctor:Int32Array,address:t,length:a>>2,ownership:1,runtimeAllocated:0};break;case 6:c={Ctor:Uint32Array,address:t,length:a>>2,ownership:1,runtimeAllocated:0};break;case 7:c={Ctor:Float32Array,address:t,length:a>>2,ownership:1,runtimeAllocated:0};break;case 8:c={Ctor:Float64Array,address:t,length:a>>3,ownership:1,runtimeAllocated:0};break;case 9:c={Ctor:BigInt64Array,address:t,length:a>>3,ownership:1,runtimeAllocated:0};break;case 10:c={Ctor:BigUint64Array,address:t,length:a>>3,ownership:1,runtimeAllocated:0};break;case-1:c={Ctor:DataView,address:t,length:a,ownership:1,runtimeAllocated:0};break;case 11:if("function"!=typeof Float16Array)return f.setLastError(1);c={Ctor:Float16Array,address:t,length:a>>1,ownership:1,runtimeAllocated:0};break;case-2:if(!l.feature.Buffer)throw l.createNotSupportBufferError("emnapi_create_memory_view","");c={Ctor:l.feature.Buffer,address:t,length:a,ownership:1,runtimeAllocated:0};break;default:return f.setLastError(1)}var d=c.Ctor,p=-2===r?l.feature.Buffer.from(n.buffer,c.address,c.length):new d(n.buffer,c.address,c.length),v=l.addToCurrentScope(p);if(q.wasmMemoryViewTable.set(p,c),o){var h=ae(e,v.id,t,o,i,0);if(10===h){var y=f.tryCatch.extractException();throw f.clearLastError(),y}if(0!==h)return f.setLastError(h)}return u=v.id,new DataView(n.buffer).setUint32(s,u,!0),f.getReturnStatus()}catch(y){return f.tryCatch.setError(y),f.setLastError(10)}}function se(e,r,t,a){var o;if(t=null!=t?t:0,t>>>=0,r instanceof ArrayBuffer||q.isSharedArrayBuffer(r)){if(!(s=q.getArrayBufferPointer(r,!1).address))throw new Error("Unknown ArrayBuffer address");if("number"==typeof a&&-1!==a&&4294967295!==a||(a=r.byteLength-t),0===(a>>>=0))return r;o=new Uint8Array(r,t,a);var i=new Uint8Array(n.buffer);return e?i.set(o,s):o.set(i.subarray(s,s+a)),r}if(ArrayBuffer.isView(r)){var s,u=q.getViewPointer(r,!1),f=u.view;if(!(s=u.address))throw new Error("Unknown ArrayBuffer address");if("number"==typeof a&&-1!==a&&4294967295!==a||(a=f.byteLength-t),0===(a>>>=0))return f;o=new Uint8Array(f.buffer,f.byteOffset+t,a);i=new Uint8Array(n.buffer);return e?i.set(o,s):o.set(i.subarray(s,s+a)),f}throw new TypeError("emnapiSyncMemory expect ArrayBuffer or ArrayBufferView as first parameter")}function ue(e){var r,t=e instanceof ArrayBuffer,n=e instanceof DataView,a=ArrayBuffer.isView(e)&&!n;if(!(t||a||n||q.isSharedArrayBuffer(e)))throw new TypeError("emnapiGetMemoryAddress expect ArrayBuffer or ArrayBufferView as first parameter");return{address:(r=t?q.getArrayBufferPointer(e,!1):q.getViewPointer(e,!1)).address,ownership:r.ownership,runtimeAllocated:r.runtimeAllocated}}var fe=Object.freeze({__proto__:null,$emnapiGetMemoryAddress:ue,$emnapiSyncMemory:se,emnapi_create_memory_view:ie,emnapi_get_memory_address:function(e,r,t,a,o){var i,s,u,f;if(!e)return 1;var c=l.envStore.get(e);if(c.checkGCAccess(),!c.tryCatch.isEmpty())return c.setLastError(10);if(!c.canCallIntoJs())return c.setLastError(c.moduleApiVersion>=10?23:10);c.clearLastError();try{if(!r)return c.setLastError(1);if(!t&&!a&&!o)return c.setLastError(1);i=(f=ue(c.ctx.handleStore.get(r).value)).address;var d=new DataView(n.buffer);return t&&(t>>>=0,d.setUint32(t,i,!0)),a&&(a>>>=0,u=f.ownership,d.setInt32(a,u,!0)),o&&(o>>>=0,s=f.runtimeAllocated,d.setInt8(o,s,!0)),c.getReturnStatus()}catch(e){return c.tryCatch.setError(e),c.setLastError(10)}},emnapi_get_runtime_version:function(e,r){if(!e)return 1;var t,a=l.envStore.get(e);if(!r)return a.setLastError(1);try{t=l.getRuntimeVersions().version}catch(e){return a.setLastError(9)}var o=t.split(".").map(function(e){return Number(e)});r>>>=0;var i=new DataView(n.buffer);return i.setUint32(r,o[0],!0),i.setUint32(r+4,o[1],!0),i.setUint32(r+8,o[2],!0),a.clearLastError()},emnapi_is_node_binding_available:function(){return p?1:0},emnapi_is_support_bigint:function(){return l.feature.supportBigInt?1:0},emnapi_is_support_weakref:function(){return l.feature.supportFinalizer?1:0},emnapi_sync_memory:function(e,r,t,a,o){var i;if(!e)return 1;var s=l.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!t)return s.setLastError(1);t>>>=0,a>>>=0,o>>>=0;var u=new DataView(n.buffer),f=u.getUint32(t,!0),c=s.ctx.handleStore.get(f);if(!(c.isArrayBuffer()||c.isTypedArray()||c.isDataView()||q.isSharedArrayBuffer(c.value)))return s.setLastError(1);var d=se(Boolean(r),c.value,a,o);return c.value!==d&&(t>>>=0,i=s.ensureHandleId(d),u.setUint32(t,i,!0)),s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}}});function ce(e,r,t){e>>>=0,e>>>=0;var a=t?new SharedArrayBuffer(e):new ArrayBuffer(e);if(r){r>>>=0;var o=q.getArrayBufferPointer(a,!0).address;new DataView(n.buffer).setUint32(r,o,!0)}return a}var le=Object.freeze({__proto__:null,napi_create_array:function(e,r){if(!e)return 1;var t=l.envStore.get(e);if(t.checkGCAccess(),!r)return t.setLastError(1);r>>>=0;var a=l.addToCurrentScope([]).id;return new DataView(n.buffer).setUint32(r,a,!0),t.clearLastError()},napi_create_array_with_length:function(e,r,t){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!t)return a.setLastError(1);r>>>=0,t>>>=0,r>>>=0;var o=l.addToCurrentScope(new Array(r)).id;return new DataView(n.buffer).setUint32(t,o,!0),a.clearLastError()},napi_create_arraybuffer:function(e,r,t,a){var o;if(!e)return 1;var i=l.envStore.get(e);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!a)return i.setLastError(1);a>>>=0;var s=ce(r,t,!1);return o=l.addToCurrentScope(s).id,new DataView(n.buffer).setUint32(a,o,!0),i.getReturnStatus()}catch(e){return i.tryCatch.setError(e),i.setLastError(10)}},napi_create_buffer:function(e,r,t,a){var i,s,u;if(!e)return 1;var f=l.envStore.get(e);if(f.checkGCAccess(),!f.tryCatch.isEmpty())return f.setLastError(10);if(!f.canCallIntoJs())return f.setLastError(f.moduleApiVersion>=10?23:10);f.clearLastError();try{if(!a)return f.setLastError(1);var c=l.feature.Buffer;if(!c)throw l.createNotSupportBufferError("napi_create_buffer","");a>>>=0;var d=void 0;r>>>=0,r>>>=0;var p=new DataView(n.buffer);if(t&&0!==r){if(!(u=o(r)))throw new Error("Out of memory");u>>>=0,new Uint8Array(n.buffer).subarray(u,u+r).fill(0);var v=c.from(n.buffer,u,r),h={Ctor:c,address:u,length:r,ownership:q.registry?0:1,runtimeAllocated:1};q.wasmMemoryViewTable.set(v,h),null===(i=q.registry)||void 0===i||i.register(h,u),s=l.addToCurrentScope(v).id,p.setUint32(a,s,!0),t>>>=0,p.setUint32(t,u,!0)}else d=c.alloc(r),s=l.addToCurrentScope(d).id,p.setUint32(a,s,!0);return f.getReturnStatus()}catch(e){return f.tryCatch.setError(e),f.setLastError(10)}},napi_create_buffer_copy:function(e,r,t,a,o){var i;if(!e)return 1;var s=l.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!o)return s.setLastError(1);var u=l.feature.Buffer;if(!u)throw l.createNotSupportBufferError("napi_create_buffer_copy","");var f=ce(r,a,!1),c=u.from(f);return t>>>=0,r>>>=0,c.set(new Uint8Array(n.buffer).subarray(t,t+r)),i=l.addToCurrentScope(c).id,o>>>=0,new DataView(n.buffer).setUint32(o,i,!0),s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_create_dataview:function(e,r,t,a,o){if(!e)return 1;var i=l.envStore.get(e);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!t)return i.setLastError(1);if(!o)return i.setLastError(1);r>>>=0,a>>>=0,r>>>=0,a>>>=0;var s=l.handleStore.get(t).value;return s instanceof ArrayBuffer||q.isSharedArrayBuffer(s)?function(e){if(r+a>e.byteLength){var t=new RangeError("byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in");throw t.code="ERR_NAPI_INVALID_DATAVIEW_ARGS",t}var s=new DataView(e,a,r);e===n.buffer&&(q.wasmMemoryViewTable.has(s)||q.wasmMemoryViewTable.set(s,{Ctor:DataView,address:a,length:r,ownership:1,runtimeAllocated:0})),o>>>=0;var u=l.addToCurrentScope(s).id;return new DataView(n.buffer).setUint32(o,u,!0),i.getReturnStatus()}(s):i.setLastError(1)}catch(e){return i.tryCatch.setError(e),i.setLastError(10)}},napi_create_date:function(e,r,t){var a;if(!e)return 1;var o=l.envStore.get(e);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{return t?(t>>>=0,a=l.addToCurrentScope(new Date(r)).id,new DataView(n.buffer).setUint32(t,a,!0),o.getReturnStatus()):o.setLastError(1)}catch(e){return o.tryCatch.setError(e),o.setLastError(10)}},napi_create_external:function(e,r,t,a,o){var i;if(!e)return 1;var s=l.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!o)return s.setLastError(1);if(!l.feature.supportFinalizer&&t)throw l.createNotSupportWeakRefError("napi_create_external",'Parameter "finalize_cb" must be 0(NULL)');var u=l.getCurrentScope().addExternal(r);return t&&l.createReferenceWithFinalizer(s,u.id,0,0,t,r,a),o>>>=0,i=u.id,new DataView(n.buffer).setUint32(o,i,!0),s.clearLastError()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_create_external_arraybuffer:function(e,r,t,a,o,i){var s;if(!e)return 1;var u=l.envStore.get(e);if(u.checkGCAccess(),!u.tryCatch.isEmpty())return u.setLastError(10);if(!u.canCallIntoJs())return u.setLastError(u.moduleApiVersion>=10?23:10);u.clearLastError();try{if(!i)return u.setLastError(1);if(t>>>=0,i>>>=0,t>>>=0,(r>>>=0)||(t=0),r+t>n.buffer.byteLength)throw new RangeError("Memory out of range");if(!l.feature.supportFinalizer&&a)throw l.createNotSupportWeakRefError("napi_create_external_arraybuffer",'Parameter "finalize_cb" must be 0(NULL)');var f=new ArrayBuffer(t);if(0===t)try{(new(0,l.feature.MessageChannel)).port1.postMessage(f,[f])}catch(e){}else new Uint8Array(f).set(new Uint8Array(n.buffer).subarray(r,r+t)),q.table.set(f,{address:r,ownership:1,runtimeAllocated:0});var c=l.addToCurrentScope(f);if(a){var d=ae(e,c.id,r,a,o,0);if(10===d){var p=u.tryCatch.extractException();throw u.clearLastError(),p}if(0!==d)return u.setLastError(d)}return s=c.id,new DataView(n.buffer).setUint32(i,s,!0),u.getReturnStatus()}catch(p){return u.tryCatch.setError(p),u.setLastError(10)}},napi_create_external_buffer:function(e,r,t,n,a,o){return ie(e,-2,t,r,n,a,o)},napi_create_object:function(e,r){if(!e)return 1;var t=l.envStore.get(e);if(t.checkGCAccess(),!r)return t.setLastError(1);r>>>=0;var a=l.addToCurrentScope({}).id;return new DataView(n.buffer).setUint32(r,a,!0),t.clearLastError()},napi_create_symbol:function(e,r,t){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!t)return a.setLastError(1);t>>>=0;var o=new DataView(n.buffer);if(r){var i=l.handleStore.get(r).value;if("string"!=typeof i)return a.setLastError(3);var s=l.addToCurrentScope(Symbol(i)).id;o.setUint32(t,s,!0)}else{var u=l.addToCurrentScope(Symbol()).id;o.setUint32(t,u,!0)}return a.clearLastError()},napi_create_typedarray:function(e,r,t,a,o,i){var s;if(!e)return 1;var u=l.envStore.get(e);if(u.checkGCAccess(),!u.tryCatch.isEmpty())return u.setLastError(10);if(!u.canCallIntoJs())return u.setLastError(u.moduleApiVersion>=10?23:10);u.clearLastError();try{if(!a)return u.setLastError(1);if(!i)return u.setLastError(1);var f=l.handleStore.get(a);if(!f.isArrayBuffer())return u.setLastError(1);var c=f.value;o>>>=0,t>>>=0;var d=function(e,r,t,a,o,u){var f,c;if((o>>>=0,u>>>=0,t>1)&&o%t!==0)return(c=new RangeError("start offset of ".concat(null!==(f=r.name)&&void 0!==f?f:""," should be a multiple of ").concat(t))).code="ERR_NAPI_INVALID_TYPEDARRAY_ALIGNMENT",e.tryCatch.setError(c),e.setLastError(9);if(u*t+o>a.byteLength)return(c=new RangeError("Invalid typed array length")).code="ERR_NAPI_INVALID_TYPEDARRAY_LENGTH",e.tryCatch.setError(c),e.setLastError(9);var d=new r(a,o,u);return a===n.buffer&&(q.wasmMemoryViewTable.has(d)||q.wasmMemoryViewTable.set(d,{Ctor:r,address:o,length:u,ownership:1,runtimeAllocated:0})),i>>>=0,s=l.addToCurrentScope(d).id,new DataView(n.buffer).setUint32(i,s,!0),e.getReturnStatus()};switch(r){case 0:return d(u,Int8Array,1,c,o,t);case 1:return d(u,Uint8Array,1,c,o,t);case 2:return d(u,Uint8ClampedArray,1,c,o,t);case 3:return d(u,Int16Array,2,c,o,t);case 4:return d(u,Uint16Array,2,c,o,t);case 5:return d(u,Int32Array,4,c,o,t);case 6:return d(u,Uint32Array,4,c,o,t);case 7:return d(u,Float32Array,4,c,o,t);case 8:return d(u,Float64Array,8,c,o,t);case 9:return d(u,BigInt64Array,8,c,o,t);case 10:return d(u,BigUint64Array,8,c,o,t);case 11:return"function"!=typeof Float16Array?u.setLastError(1):d(u,Float16Array,2,c,o,t);default:return u.setLastError(1)}}catch(e){return u.tryCatch.setError(e),u.setLastError(10)}},node_api_create_buffer_from_arraybuffer:function(e,r,t,a,o){var i;if(!e)return 1;var s=l.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!r)return s.setLastError(1);if(!o)return s.setLastError(1);t>>>=0,a>>>=0,t>>>=0,a>>>=0;var u=l.handleStore.get(r);if(!u.isArrayBuffer())return s.setLastError(1);var f=u.value;if(a+t>f.byteLength){var c=new RangeError("The byte offset + length is out of range");throw c.code="ERR_OUT_OF_RANGE",c}var d=l.feature.Buffer;if(!d)throw l.createNotSupportBufferError("node_api_create_buffer_from_arraybuffer","");var p=d.from(f,t,a);return f===n.buffer&&(q.wasmMemoryViewTable.has(p)||q.wasmMemoryViewTable.set(p,{Ctor:d,address:t,length:a,ownership:1,runtimeAllocated:0})),o>>>=0,i=l.addToCurrentScope(p).id,new DataView(n.buffer).setUint32(o,i,!0),s.getReturnStatus()}catch(c){return s.tryCatch.setError(c),s.setLastError(10)}},node_api_create_object_with_properties:function(e,r,t,a,o,i){if(!e)return 1;var s=l.envStore.get(e);if(s.checkGCAccess(),!i)return s.setLastError(1);if(o>>>=0,(o>>>=0)>0){if(!t)return s.setLastError(1);if(!a)return s.setLastError(1)}var u=r?l.handleStore.get(r).value:null,f={};t>>>=0,a>>>=0;for(var c,d=new DataView(n.buffer),p=0;p>>=0,d.setUint32(i,h,!0),s.clearLastError()},node_api_create_sharedarraybuffer:function(e,r,t,a){var o;if(!e)return 1;var i=l.envStore.get(e);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!a)return i.setLastError(1);a>>>=0;var s=ce(r,t,!0);return o=l.addToCurrentScope(s).id,new DataView(n.buffer).setUint32(a,o,!0),i.getReturnStatus()}catch(e){return i.tryCatch.setError(e),i.setLastError(10)}},node_api_symbol_for:function(e,r,t,a){if(!e)return 1;var o=l.envStore.get(e);if(o.checkGCAccess(),!a)return o.setLastError(1);r>>>=0,a>>>=0;var i=-1===(t>>>=0)||4294967295===t,s=t>>>0;if(0!==t&&!r)return o.setLastError(1);if(!(i||s<=2147483647))return o.setLastError(1);var u=J.UTF8ToString(r,t),f=l.addToCurrentScope(Symbol.for(u)).id;return new DataView(n.buffer).setUint32(a,f,!0),o.clearLastError()}});var de=Object.freeze({__proto__:null,napi_get_boolean:function(e,r,t){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!t)return a.setLastError(1);t>>>=0;var o=0===r?3:4;return new DataView(n.buffer).setUint32(t,o,!0),a.clearLastError()},napi_get_global:function(e,r){if(!e)return 1;var t=l.envStore.get(e);return t.checkGCAccess(),r?(r>>>=0,new DataView(n.buffer).setUint32(r,5,!0),t.clearLastError()):t.setLastError(1)},napi_get_null:function(e,r){if(!e)return 1;var t=l.envStore.get(e);return t.checkGCAccess(),r?(r>>>=0,new DataView(n.buffer).setUint32(r,2,!0),t.clearLastError()):t.setLastError(1)},napi_get_undefined:function(e,r){if(!e)return 1;var t=l.envStore.get(e);return t.checkGCAccess(),r?(r>>>=0,new DataView(n.buffer).setUint32(r,1,!0),t.clearLastError()):t.setLastError(1)}});var pe=Object.freeze({__proto__:null,napi_get_instance_data:function(e,r){if(!e)return 1;var t=l.envStore.get(e);if(!r)return t.setLastError(1);r>>>=0;var a=t.getInstanceData();return new DataView(n.buffer).setUint32(r,a,!0),t.clearLastError()},napi_set_instance_data:function(e,r,t,n){if(!e)return 1;var a=l.envStore.get(e);return r>>>=0,t>>>=0,n>>>=0,a.setInstanceData(r,t,n),a.clearLastError()}});var ve=Object.freeze({__proto__:null,_emnapi_get_last_error_info:function(e,r,t,a){r>>>=0,t>>>=0,a>>>=0;var o=l.envStore.get(e).lastError,i=o.errorCode,s=o.engineErrorCode>>>0,u=o.engineReserved;u>>>=0;var f=new DataView(n.buffer);f.setInt32(r,i,!0),f.setUint32(t,s,!0),f.setUint32(a,u,!0)},napi_create_error:function(e,r,t,a){if(!e)return 1;var o=l.envStore.get(e);if(o.checkGCAccess(),!t)return o.setLastError(1);if(!a)return o.setLastError(1);var i=l.handleStore.get(t).value;if("string"!=typeof i)return o.setLastError(3);var s=new Error(i);if(r){var u=l.handleStore.get(r).value;if("string"!=typeof u)return o.setLastError(3);s.code=u}a>>>=0;var f=l.addToCurrentScope(s).id;return new DataView(n.buffer).setUint32(a,f,!0),o.clearLastError()},napi_create_range_error:function(e,r,t,a){if(!e)return 1;var o=l.envStore.get(e);if(o.checkGCAccess(),!t)return o.setLastError(1);if(!a)return o.setLastError(1);var i=l.handleStore.get(t).value;if("string"!=typeof i)return o.setLastError(3);var s=new RangeError(i);if(r){var u=l.handleStore.get(r).value;if("string"!=typeof u)return o.setLastError(3);s.code=u}a>>>=0;var f=l.addToCurrentScope(s).id;return new DataView(n.buffer).setUint32(a,f,!0),o.clearLastError()},napi_create_type_error:function(e,r,t,a){if(!e)return 1;var o=l.envStore.get(e);if(o.checkGCAccess(),!t)return o.setLastError(1);if(!a)return o.setLastError(1);var i=l.handleStore.get(t).value;if("string"!=typeof i)return o.setLastError(3);var s=new TypeError(i);if(r){var u=l.handleStore.get(r).value;if("string"!=typeof u)return o.setLastError(3);s.code=u}a>>>=0;var f=l.addToCurrentScope(s).id;return new DataView(n.buffer).setUint32(a,f,!0),o.clearLastError()},napi_fatal_error:function(e,r,t,n){e>>>=0,r>>>=0,t>>>=0,n>>>=0;var a=J.UTF8ToString(e,r),o=J.UTF8ToString(t,n);p?p.napi.fatalError(a,o):c("FATAL ERROR: "+a+" "+o)},napi_fatal_exception:function(e,r){if(!e)return 1;var t=l.envStore.get(e);if(t.checkGCAccess(),!t.tryCatch.isEmpty())return t.setLastError(10);if(!t.canCallIntoJs())return t.setLastError(t.moduleApiVersion>=10?23:10);t.clearLastError();try{if(!r)return t.setLastError(1);var n=t.ctx.handleStore.get(r);try{t.triggerFatalException(n.value)}catch(e){return t.setLastError(9)}return t.clearLastError()}catch(r){return t.tryCatch.setError(r),t.setLastError(10)}},napi_get_and_clear_last_exception:function(e,r){if(!e)return 1;var t=l.envStore.get(e);if(t.checkGCAccess(),!r)return t.setLastError(1);r>>>=0;var a=new DataView(n.buffer);if(!t.tryCatch.hasCaught())return a.setUint32(r,1,!0),t.clearLastError();var o=t.tryCatch.exception(),i=t.ensureHandleId(o);return a.setUint32(r,i,!0),t.tryCatch.reset(),t.clearLastError()},napi_is_exception_pending:function(e,r){if(!e)return 1;var t=l.envStore.get(e);if(t.checkGCAccess(),!r)return t.setLastError(1);var a=t.tryCatch.hasCaught();return r>>>=0,new DataView(n.buffer).setInt8(r,a?1:0,!0),t.clearLastError()},napi_throw:function(e,r){if(!e)return 1;var t=l.envStore.get(e);if(t.checkGCAccess(),!t.tryCatch.isEmpty())return t.setLastError(10);if(!t.canCallIntoJs())return t.setLastError(t.moduleApiVersion>=10?23:10);t.clearLastError();try{return r?(t.tryCatch.setError(l.handleStore.get(r).value),t.clearLastError()):t.setLastError(1)}catch(e){return t.tryCatch.setError(e),t.setLastError(10)}},napi_throw_error:function(e,r,t){if(!e)return 1;var n=l.envStore.get(e);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!t)return n.setLastError(1);r>>>=0,t>>>=0;var a=new Error(J.UTF8ToString(t,-1));return r&&(a.code=J.UTF8ToString(r,-1)),n.tryCatch.setError(a),n.clearLastError()}catch(e){return n.tryCatch.setError(e),n.setLastError(10)}},napi_throw_range_error:function(e,r,t){if(!e)return 1;var n=l.envStore.get(e);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!t)return n.setLastError(1);r>>>=0,t>>>=0;var a=new RangeError(J.UTF8ToString(t,-1));return r&&(a.code=J.UTF8ToString(r,-1)),n.tryCatch.setError(a),n.clearLastError()}catch(e){return n.tryCatch.setError(e),n.setLastError(10)}},napi_throw_type_error:function(e,r,t){if(!e)return 1;var n=l.envStore.get(e);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!t)return n.setLastError(1);r>>>=0,t>>>=0;var a=new TypeError(J.UTF8ToString(t,-1));return r&&(a.code=J.UTF8ToString(r,-1)),n.tryCatch.setError(a),n.clearLastError()}catch(e){return n.tryCatch.setError(e),n.setLastError(10)}},node_api_create_syntax_error:function(e,r,t,a){if(!e)return 1;var o=l.envStore.get(e);if(o.checkGCAccess(),!t)return o.setLastError(1);if(!a)return o.setLastError(1);var i=l.handleStore.get(t).value;if("string"!=typeof i)return o.setLastError(3);var s=new SyntaxError(i);if(r){var u=l.handleStore.get(r).value;if("string"!=typeof u)return o.setLastError(3);s.code=u}a>>>=0;var f=l.addToCurrentScope(s).id;return new DataView(n.buffer).setUint32(a,f,!0),o.clearLastError()},node_api_throw_syntax_error:function(e,r,t){if(!e)return 1;var n=l.envStore.get(e);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!t)return n.setLastError(1);r>>>=0,t>>>=0;var a=new SyntaxError(J.UTF8ToString(t,-1));return r&&(a.code=J.UTF8ToString(r,-1)),n.tryCatch.setError(a),n.clearLastError()}catch(e){return n.tryCatch.setError(e),n.setLastError(10)}}});function he(e,r,t,a,o,i){t>>>=0;var s=l.envStore.get(e),u=ee(s,r,t,a,o);if(0!==u.status)return s.setLastError(u.status);var f=u.f;i>>>=0;var c=l.addToCurrentScope(f).id;return new DataView(n.buffer).setUint32(i,c,!0),s.getReturnStatus()}var ye=Object.freeze({__proto__:null,_emnapi_create_function:he,napi_call_function:function(e,r,t,a,o,i){var s,u=0;if(!e)return 1;var f=l.envStore.get(e);if(f.checkGCAccess(),!f.tryCatch.isEmpty())return f.setLastError(10);if(!f.canCallIntoJs())return f.setLastError(f.moduleApiVersion>=10?23:10);f.clearLastError();try{if(!r)return f.setLastError(1);if(a>>>=0,o>>>=0,i>>>=0,(a>>>=0)>0&&!o)return f.setLastError(1);var c=l.handleStore.get(r).value;if(!t)return f.setLastError(1);var d=l.handleStore.get(t).value;if("function"!=typeof d)return f.setLastError(1);for(var p=[],v=new DataView(n.buffer);u=10?23:10);i.clearLastError();try{return o&&n?he(e,r,t,n,a,o):i.setLastError(1)}catch(e){return i.tryCatch.setError(e),i.setLastError(10)}},napi_get_cb_info:function(e,r,t,a,o,i){if(!e)return 1;var s=l.envStore.get(e);if(!r)return s.setLastError(1);var u=l.scopeStore.get(r).callbackInfo;t>>>=0,a>>>=0;var f=new DataView(n.buffer);if(a){if(!t)return s.setLastError(1);var c=f.getUint32(t,!0);c>>>=0;for(var d=u.args.length,p=c>>=0;var y=s.ensureHandleId(u.thiz);f.setUint32(o,y,!0)}return i&&(i>>>=0,f.setUint32(i,u.data,!0)),s.clearLastError()},napi_get_new_target:function(e,r,t){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!r)return a.setLastError(1);if(!t)return a.setLastError(1);t>>>=0;var o=l.scopeStore.get(r).callbackInfo,i=o.thiz,s=o.fn,u=null==i||null==i.constructor?0:i instanceof s?a.ensureHandleId(i.constructor):0;return new DataView(n.buffer).setUint32(t,u,!0),a.clearLastError()},napi_new_instance:function(e,r,t,a,o){var i,s;if(!e)return 1;var u=l.envStore.get(e);if(u.checkGCAccess(),!u.tryCatch.isEmpty())return u.setLastError(10);if(!u.canCallIntoJs())return u.setLastError(u.moduleApiVersion>=10?23:10);u.clearLastError();try{if(!r)return u.setLastError(1);if(t>>>=0,a>>>=0,o>>>=0,(t>>>=0)>0&&!a)return u.setLastError(1);if(!o)return u.setLastError(1);var f=l.handleStore.get(r).value;if("function"!=typeof f)return u.setLastError(1);var c=void 0,d=new DataView(n.buffer);if(l.feature.supportReflect){var p=Array(t);for(i=0;i>>=0,t>>>=0,l.addCleanupHook(n,r,t),0):n.setLastError(1)},napi_close_escapable_handle_scope:function(e,r){if(!e)return 1;var t=l.envStore.get(e);return t.checkGCAccess(),r?0===t.openHandleScopes?13:(l.closeScope(t),t.clearLastError()):t.setLastError(1)},napi_close_handle_scope:function(e,r){if(!e)return 1;var t=l.envStore.get(e);return t.checkGCAccess(),r?0===t.openHandleScopes?13:(l.closeScope(t),t.clearLastError()):t.setLastError(1)},napi_create_reference:function(e,r,t,a){if(!e)return 1;var o=l.envStore.get(e);if(o.checkGCAccess(),!r)return o.setLastError(1);if(!a)return o.setLastError(1);var i=l.handleStore.get(r);if(o.moduleApiVersion<10&&!(i.isObject()||i.isFunction()||i.isSymbol()))return o.setLastError(1);var s=l.createReference(o,i.id,t>>>0,1);return a>>>=0,new DataView(n.buffer).setUint32(a,s.id,!0),o.clearLastError()},napi_delete_reference:function(e,r){if(!e)return 1;var t=l.envStore.get(e);return r?(l.refStore.get(r).dispose(),t.clearLastError()):t.setLastError(1)},napi_escape_handle:function(e,r,t,a){if(!e)return 1;var o=l.envStore.get(e);if(o.checkGCAccess(),!r)return o.setLastError(1);if(!t)return o.setLastError(1);if(!a)return o.setLastError(1);var i=l.scopeStore.get(r);if(!i.escapeCalled()){t>>>=0,a>>>=0;var s=i.escape(t),u=s?s.id:0;return new DataView(n.buffer).setUint32(a,u,!0),o.clearLastError()}return o.setLastError(12)},napi_get_reference_value:function(e,r,t){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!r)return a.setLastError(1);if(!t)return a.setLastError(1);var o=l.refStore.get(r).get(a);return t>>>=0,new DataView(n.buffer).setUint32(t,o,!0),a.clearLastError()},napi_open_escapable_handle_scope:function(e,r){if(!e)return 1;var t=l.envStore.get(e);if(t.checkGCAccess(),!r)return t.setLastError(1);var a=l.openScope(t);return r>>>=0,new DataView(n.buffer).setUint32(r,a.id,!0),t.clearLastError()},napi_open_handle_scope:function(e,r){if(!e)return 1;var t=l.envStore.get(e);if(t.checkGCAccess(),!r)return t.setLastError(1);var a=l.openScope(t);return r>>>=0,new DataView(n.buffer).setUint32(r,a.id,!0),t.clearLastError()},napi_reference_ref:function(e,r,t){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!r)return a.setLastError(1);var o=l.refStore.get(r).ref();return t&&(t>>>=0,new DataView(n.buffer).setUint32(t,o,!0)),a.clearLastError()},napi_reference_unref:function(e,r,t){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!r)return a.setLastError(1);var o=l.refStore.get(r);if(0===o.refcount())return a.setLastError(9);var i=o.unref();return t&&(t>>>=0,new DataView(n.buffer).setUint32(t,i,!0)),a.clearLastError()},napi_remove_env_cleanup_hook:function(e,r,t){if(!e)return 1;var n=l.envStore.get(e);return r?(r>>>=0,t>>>=0,l.removeCleanupHook(n,r,t),0):n.setLastError(1)}});var _e=Object.freeze({__proto__:null,_emnapi_get_filename:function(e,r,t){var n=l.envStore.get(e).filename;return r?J.stringToUTF8(n,r,t):J.lengthBytesUTF8(n)}});var Ee=Object.freeze({__proto__:null,napi_create_promise:function(e,r,t){var a,o;if(!e)return 1;var i=l.envStore.get(e);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!r)return i.setLastError(1);if(!t)return i.setLastError(1);var s=new DataView(n.buffer),u=new Promise(function(e,t){var n=l.createDeferred({resolve:e,reject:t});a=n.id,r>>>=0,s.setUint32(r,a,!0)});return t>>>=0,o=l.addToCurrentScope(u).id,s.setUint32(t,o,!0),i.getReturnStatus()}catch(e){return i.tryCatch.setError(e),i.setLastError(10)}},napi_is_promise:function(e,r,t){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!r)return a.setLastError(1);if(!t)return a.setLastError(1);t>>>=0;var o=l.handleStore.get(r).isPromise()?1:0;return new DataView(n.buffer).setInt8(t,o,!0),a.clearLastError()},napi_reject_deferred:function(e,r,t){if(!e)return 1;var n=l.envStore.get(e);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{return r&&t?(l.deferredStore.get(r).reject(l.handleStore.get(t).value),n.getReturnStatus()):n.setLastError(1)}catch(e){return n.tryCatch.setError(e),n.setLastError(10)}},napi_resolve_deferred:function(e,r,t){if(!e)return 1;var n=l.envStore.get(e);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{return r&&t?(l.deferredStore.get(r).resolve(l.handleStore.get(t).value),n.getReturnStatus()):n.setLastError(1)}catch(e){return n.tryCatch.setError(e),n.setLastError(10)}}});function we(e,r,t,a,o,i){var s;if(!e)return 1;var u=l.envStore.get(e);if(u.checkGCAccess(),!u.tryCatch.isEmpty())return u.setLastError(10);if(!u.canCallIntoJs())return u.setLastError(u.moduleApiVersion>=10?23:10);u.clearLastError();try{if(!i)return u.setLastError(1);if(!r)return u.setLastError(1);var f=l.handleStore.get(r);if(null==f.value)throw new TypeError("Cannot convert undefined or null to object");var c=void 0;try{c=f.isObject()||f.isFunction()?f.value:Object(f.value)}catch(e){return u.setLastError(2)}if(0!==t&&1!==t)return u.setLastError(1);if(0!==o&&1!==o)return u.setLastError(1);var d=[],p=void 0,v=void 0,h=void 0,y=!0,g=/^(0|[1-9][0-9]*)$/;do{for(p=Object.getOwnPropertyNames(c),v=Object.getOwnPropertySymbols(c),h=0;h>>=0,s=l.addToCurrentScope(_).id,new DataView(n.buffer).setUint32(i,s,!0),u.getReturnStatus()}catch(e){return u.tryCatch.setError(e),u.setLastError(10)}}var me=Object.freeze({__proto__:null,napi_define_properties:function(e,r,t,a){var o,i;if(!e)return 1;var s=l.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(a>>>=0,t>>>=0,(t>>>=0)>0&&!a)return s.setLastError(1);if(!r)return s.setLastError(1);var u=l.handleStore.get(r),f=u.value;if(!u.isObject()&&!u.isFunction())return s.setLastError(2);for(var c=void 0,d=new DataView(n.buffer),p=0;p>>=0;var w=d.getUint32(o+28,!0);if(v)c=J.UTF8ToString(v,-1);else{if(!h)return s.setLastError(4);if("string"!=typeof(c=l.handleStore.get(h).value)&&"symbol"!=typeof c)return s.setLastError(4)}re(s,f,c,y,g,_,E,i,w)}return s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_delete_element:function(e,r,t,a){var o;if(!e)return 1;var i=l.envStore.get(e);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!r)return i.setLastError(1);var s=l.handleStore.get(r);if(!s.isObject()&&!s.isFunction())return i.setLastError(2);if(l.feature.supportReflect)o=Reflect.deleteProperty(s.value,t>>>0);else try{o=delete s.value[t>>>0]}catch(e){o=!1}if(a)a>>>=0,new DataView(n.buffer).setInt8(a,o?1:0,!0);return i.getReturnStatus()}catch(e){return i.tryCatch.setError(e),i.setLastError(10)}},napi_delete_property:function(e,r,t,a){var o;if(!e)return 1;var i=l.envStore.get(e);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!t)return i.setLastError(1);if(!r)return i.setLastError(1);var s=l.handleStore.get(r);if(!s.isObject()&&!s.isFunction())return i.setLastError(2);var u=l.handleStore.get(t).value;if(l.feature.supportReflect)o=Reflect.deleteProperty(s.value,u);else try{o=delete s.value[u]}catch(e){o=!1}if(a)a>>>=0,new DataView(n.buffer).setInt8(a,o?1:0,!0);return i.getReturnStatus()}catch(e){return i.tryCatch.setError(e),i.setLastError(10)}},napi_get_all_property_names:we,napi_get_element:function(e,r,t,a){var o;if(!e)return 1;var i=l.envStore.get(e);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!a)return i.setLastError(1);if(!r)return i.setLastError(1);var s=l.handleStore.get(r);if(null==s.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=s.isObject()||s.isFunction()?s.value:Object(s.value)}catch(e){return i.setLastError(2)}return a>>>=0,o=i.ensureHandleId(u[t>>>0]),new DataView(n.buffer).setUint32(a,o,!0),i.getReturnStatus()}catch(e){return i.tryCatch.setError(e),i.setLastError(10)}},napi_get_named_property:function(e,r,t,a){var o;if(!e)return 1;var i=l.envStore.get(e);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!a)return i.setLastError(1);if(!r)return i.setLastError(1);if(!t)return i.setLastError(1);var s=l.handleStore.get(r);if(null==s.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=s.isObject()||s.isFunction()?s.value:Object(s.value)}catch(e){return i.setLastError(2)}return t>>>=0,a>>>=0,o=i.ensureHandleId(u[J.UTF8ToString(t,-1)]),new DataView(n.buffer).setUint32(a,o,!0),i.getReturnStatus()}catch(e){return i.tryCatch.setError(e),i.setLastError(10)}},napi_get_property:function(e,r,t,a){var o;if(!e)return 1;var i=l.envStore.get(e);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!t)return i.setLastError(1);if(!a)return i.setLastError(1);if(!r)return i.setLastError(1);var s=l.handleStore.get(r);if(null==s.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=s.isObject()||s.isFunction()?s.value:Object(s.value)}catch(e){return i.setLastError(2)}return a>>>=0,o=i.ensureHandleId(u[l.handleStore.get(t).value]),new DataView(n.buffer).setUint32(a,o,!0),i.getReturnStatus()}catch(e){return i.tryCatch.setError(e),i.setLastError(10)}},napi_get_property_names:function(e,r,t){return we(e,r,0,18,1,t)},napi_has_element:function(e,r,t,a){var o;if(!e)return 1;var i=l.envStore.get(e);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!a)return i.setLastError(1);if(!r)return i.setLastError(1);var s=l.handleStore.get(r);if(null==s.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=s.isObject()||s.isFunction()?s.value:Object(s.value)}catch(e){return i.setLastError(2)}return a>>>=0,o=t>>>0 in u?1:0,new DataView(n.buffer).setInt8(a,o,!0),i.getReturnStatus()}catch(e){return i.tryCatch.setError(e),i.setLastError(10)}},napi_has_named_property:function(e,r,t,a){var o;if(!e)return 1;var i=l.envStore.get(e);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!a)return i.setLastError(1);if(!r)return i.setLastError(1);if(!t)return i.setLastError(1);var s=l.handleStore.get(r);if(null==s.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=s.isObject()||s.isFunction()?s.value:Object(s.value)}catch(e){return i.setLastError(2)}return t>>>=0,a>>>=0,o=J.UTF8ToString(t,-1)in u,new DataView(n.buffer).setInt8(a,o?1:0,!0),i.getReturnStatus()}catch(e){return i.tryCatch.setError(e),i.setLastError(10)}},napi_has_own_property:function(e,r,t,a){var o;if(!e)return 1;var i=l.envStore.get(e);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!t)return i.setLastError(1);if(!a)return i.setLastError(1);if(!r)return i.setLastError(1);var s=l.handleStore.get(r);if(null==s.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=s.isObject()||s.isFunction()?s.value:Object(s.value)}catch(e){return i.setLastError(2)}var f=l.handleStore.get(t).value;return"string"!=typeof f&&"symbol"!=typeof f?i.setLastError(4):(o=Object.prototype.hasOwnProperty.call(u,l.handleStore.get(t).value),a>>>=0,new DataView(n.buffer).setInt8(a,o?1:0,!0),i.getReturnStatus())}catch(e){return i.tryCatch.setError(e),i.setLastError(10)}},napi_has_property:function(e,r,t,a){var o;if(!e)return 1;var i=l.envStore.get(e);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!t)return i.setLastError(1);if(!a)return i.setLastError(1);if(!r)return i.setLastError(1);var s=l.handleStore.get(r);if(null==s.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=s.isObject()||s.isFunction()?s.value:Object(s.value)}catch(e){return i.setLastError(2)}return a>>>=0,o=l.handleStore.get(t).value in u?1:0,new DataView(n.buffer).setInt8(a,o,!0),i.getReturnStatus()}catch(e){return i.tryCatch.setError(e),i.setLastError(10)}},napi_object_freeze:function(e,r){if(!e)return 1;var t=l.envStore.get(e);if(t.checkGCAccess(),!t.tryCatch.isEmpty())return t.setLastError(10);if(!t.canCallIntoJs())return t.setLastError(t.moduleApiVersion>=10?23:10);t.clearLastError();try{if(!r)return t.setLastError(1);var n=l.handleStore.get(r),a=n.value;return n.isObject()||n.isFunction()?(Object.freeze(a),t.getReturnStatus()):t.setLastError(2)}catch(e){return t.tryCatch.setError(e),t.setLastError(10)}},napi_object_seal:function(e,r){if(!e)return 1;var t=l.envStore.get(e);if(t.checkGCAccess(),!t.tryCatch.isEmpty())return t.setLastError(10);if(!t.canCallIntoJs())return t.setLastError(t.moduleApiVersion>=10?23:10);t.clearLastError();try{if(!r)return t.setLastError(1);var n=l.handleStore.get(r),a=n.value;return n.isObject()||n.isFunction()?(Object.seal(a),t.getReturnStatus()):t.setLastError(2)}catch(e){return t.tryCatch.setError(e),t.setLastError(10)}},napi_set_element:function(e,r,t,n){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!a.tryCatch.isEmpty())return a.setLastError(10);if(!a.canCallIntoJs())return a.setLastError(a.moduleApiVersion>=10?23:10);a.clearLastError();try{if(!n)return a.setLastError(1);if(!r)return a.setLastError(1);var o=l.handleStore.get(r);return o.isObject()||o.isFunction()?(o.value[t>>>0]=l.handleStore.get(n).value,a.getReturnStatus()):a.setLastError(2)}catch(e){return a.tryCatch.setError(e),a.setLastError(10)}},napi_set_named_property:function(e,r,t,n){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!a.tryCatch.isEmpty())return a.setLastError(10);if(!a.canCallIntoJs())return a.setLastError(a.moduleApiVersion>=10?23:10);a.clearLastError();try{if(!n)return a.setLastError(1);if(!r)return a.setLastError(1);var o=l.handleStore.get(r);return o.isObject()||o.isFunction()?t?(t>>>=0,l.handleStore.get(r).value[J.UTF8ToString(t,-1)]=l.handleStore.get(n).value,a.getReturnStatus()):a.setLastError(1):a.setLastError(2)}catch(e){return a.tryCatch.setError(e),a.setLastError(10)}},napi_set_property:function(e,r,t,n){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!a.tryCatch.isEmpty())return a.setLastError(10);if(!a.canCallIntoJs())return a.setLastError(a.moduleApiVersion>=10?23:10);a.clearLastError();try{if(!t)return a.setLastError(1);if(!n)return a.setLastError(1);if(!r)return a.setLastError(1);var o=l.handleStore.get(r);return o.isObject()||o.isFunction()?(o.value[l.handleStore.get(t).value]=l.handleStore.get(n).value,a.getReturnStatus()):a.setLastError(2)}catch(e){return a.tryCatch.setError(e),a.setLastError(10)}}});var Le=Object.freeze({__proto__:null,napi_run_script:function(e,r,t){var a,o;if(!e)return 1;var i=l.envStore.get(e);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!r)return i.setLastError(1);if(!t)return i.setLastError(1);var s=l.handleStore.get(r);if(!s.isString())return i.setLastError(3);var u=l.handleStore.get(5).value.eval(s.value);t>>>=0,o=i.ensureHandleId(u),new DataView(n.buffer).setUint32(t,o,!0),a=i.getReturnStatus()}catch(e){return i.tryCatch.setError(e),i.setLastError(10)}return a}});var be=Object.freeze({__proto__:null,napi_coerce_to_bool:function(e,r,t){var a;if(!e)return 1;var o=l.envStore.get(e);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{if(!r)return o.setLastError(1);if(!t)return o.setLastError(1);var i=l.handleStore.get(r);return t>>>=0,a=i.value?4:3,new DataView(n.buffer).setUint32(t,a,!0),o.getReturnStatus()}catch(e){return o.tryCatch.setError(e),o.setLastError(10)}},napi_coerce_to_number:function(e,r,t){var a;if(!e)return 1;var o=l.envStore.get(e);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{if(!r)return o.setLastError(1);if(!t)return o.setLastError(1);var i=l.handleStore.get(r);if(i.isBigInt())throw new TypeError("Cannot convert a BigInt value to a number");return t>>>=0,a=l.addToCurrentScope(Number(i.value)).id,new DataView(n.buffer).setUint32(t,a,!0),o.getReturnStatus()}catch(e){return o.tryCatch.setError(e),o.setLastError(10)}},napi_coerce_to_object:function(e,r,t){var a;if(!e)return 1;var o=l.envStore.get(e);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{if(!r)return o.setLastError(1);if(!t)return o.setLastError(1);var i=l.handleStore.get(r);if(null==i.value)throw new TypeError("Cannot convert undefined or null to object");return t>>>=0,a=o.ensureHandleId(Object(i.value)),new DataView(n.buffer).setUint32(t,a,!0),o.getReturnStatus()}catch(e){return o.tryCatch.setError(e),o.setLastError(10)}},napi_coerce_to_string:function(e,r,t){var a;if(!e)return 1;var o=l.envStore.get(e);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{if(!r)return o.setLastError(1);if(!t)return o.setLastError(1);var i=l.handleStore.get(r);if(i.isSymbol())throw new TypeError("Cannot convert a Symbol value to a string");return t>>>=0,a=l.addToCurrentScope(String(i.value)).id,new DataView(n.buffer).setUint32(t,a,!0),o.getReturnStatus()}catch(e){return o.tryCatch.setError(e),o.setLastError(10)}},napi_detach_arraybuffer:function(e,r){if(!e)return 1;var t=l.envStore.get(e);if(t.checkGCAccess(),!r)return t.setLastError(1);var n=l.handleStore.get(r).value;if(!(n instanceof ArrayBuffer))return"function"==typeof SharedArrayBuffer&&n instanceof SharedArrayBuffer?t.setLastError(20):t.setLastError(19);try{(new(0,l.feature.MessageChannel)).port1.postMessage(n,[n])}catch(e){return t.setLastError(9)}return t.clearLastError()},napi_instanceof:function(e,r,t,a){var o;if(!e)return 1;var i=l.envStore.get(e);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!r)return i.setLastError(1);if(!a)return i.setLastError(1);if(!t)return i.setLastError(1);a>>>=0;var s=new DataView(n.buffer);s.setInt8(a,0,!0);var u=l.handleStore.get(t);return u.isFunction()?(o=l.handleStore.get(r).value instanceof u.value?1:0,s.setInt8(a,o,!0),i.getReturnStatus()):i.setLastError(5)}catch(e){return i.tryCatch.setError(e),i.setLastError(10)}},napi_is_array:function(e,r,t){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!r)return a.setLastError(1);if(!t)return a.setLastError(1);t>>>=0;var o=l.handleStore.get(r).isArray()?1:0;return new DataView(n.buffer).setInt8(t,o,!0),a.clearLastError()},napi_is_arraybuffer:function(e,r,t){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!r)return a.setLastError(1);if(!t)return a.setLastError(1);t>>>=0;var o=l.handleStore.get(r).isArrayBuffer()?1:0;return new DataView(n.buffer).setInt8(t,o,!0),a.clearLastError()},napi_is_buffer:function(e,r,t){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!r)return a.setLastError(1);if(!t)return a.setLastError(1);t>>>=0;var o=l.handleStore.get(r).isBuffer(l.feature.Buffer)?1:0;return new DataView(n.buffer).setInt8(t,o,!0),a.clearLastError()},napi_is_dataview:function(e,r,t){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!r)return a.setLastError(1);if(!t)return a.setLastError(1);t>>>=0;var o=l.handleStore.get(r).isDataView()?1:0;return new DataView(n.buffer).setInt8(t,o,!0),a.clearLastError()},napi_is_date:function(e,r,t){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!r)return a.setLastError(1);if(!t)return a.setLastError(1);t>>>=0;var o=l.handleStore.get(r).isDate()?1:0;return new DataView(n.buffer).setInt8(t,o,!0),a.clearLastError()},napi_is_detached_arraybuffer:function(e,r,t){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!a.tryCatch.isEmpty())return a.setLastError(10);if(!a.canCallIntoJs())return a.setLastError(a.moduleApiVersion>=10?23:10);a.clearLastError();try{if(!r)return a.setLastError(1);if(!t)return a.setLastError(1);var o=l.handleStore.get(r);t>>>=0;var i=new DataView(n.buffer);if(o.isArrayBuffer()&&0===o.value.byteLength)try{new Uint8Array(o.value)}catch(e){return i.setInt8(t,1,!0),a.getReturnStatus()}return i.setInt8(t,0,!0),a.getReturnStatus()}catch(e){return a.tryCatch.setError(e),a.setLastError(10)}},napi_is_error:function(e,r,t){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!r)return a.setLastError(1);if(!t)return a.setLastError(1);t>>>=0;var o=l.handleStore.get(r).value instanceof Error?1:0;return new DataView(n.buffer).setInt8(t,o,!0),a.clearLastError()},napi_is_typedarray:function(e,r,t){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!r)return a.setLastError(1);if(!t)return a.setLastError(1);t>>>=0;var o=l.handleStore.get(r).isTypedArray()?1:0;return new DataView(n.buffer).setInt8(t,o,!0),a.clearLastError()},napi_strict_equals:function(e,r,t,a){var o;if(!e)return 1;var i=l.envStore.get(e);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!r)return i.setLastError(1);if(!t)return i.setLastError(1);if(!a)return i.setLastError(1);var s=l.handleStore.get(r).value,u=l.handleStore.get(t).value;return a>>>=0,o=s===u?1:0,new DataView(n.buffer).setInt8(a,o,!0),i.getReturnStatus()}catch(e){return i.tryCatch.setError(e),i.setLastError(10)}},napi_typeof:function(e,r,t){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!r)return a.setLastError(1);if(!t)return a.setLastError(1);var o,i=l.handleStore.get(r);if(t>>>=0,i.isNumber())o=3;else if(i.isBigInt())o=9;else if(i.isString())o=4;else if(i.isFunction())o=7;else if(i.isExternal())o=8;else if(i.isObject())o=6;else if(i.isBoolean())o=2;else if(i.isUndefined())o=0;else if(i.isSymbol())o=5;else{if(!i.isNull())return a.setLastError(1);o=1}return new DataView(n.buffer).setInt32(t,o,!0),a.clearLastError()},node_api_is_sharedarraybuffer:function(e,r,t){if(!e)return 1;var a=l.envStore.get(e);if(a.checkGCAccess(),!r)return a.setLastError(1);if(!t)return a.setLastError(1);var o=l.handleStore.get(r);t>>>=0;var i="function"==typeof SharedArrayBuffer&&o.value instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(o.value)?1:0;return new DataView(n.buffer).setInt8(t,i,!0),a.clearLastError()}});var Se=Object.freeze({__proto__:null,napi_get_version:function(e,r){if(!e)return 1;var t=l.envStore.get(e);return r?(new DataView(n.buffer).setUint32(r,10,!0),t.clearLastError()):t.setLastError(1)}});function Ae(e){for(var r=Object.keys(e),t=0;t>>=0,u>>>=0,e>>>=0,f>>>=0,c>>>=0,d>>>=0,p>>>=0,s>>>=0,0===(u>>>=0))return h.setLastError(1);if(!v)return h.setLastError(1);var y,g=0;if(r>>>=0){if("function"!=typeof l.handleStore.get(r).value)return h.setLastError(1);g=l.createReference(h,r,1,1).id}else if(!p)return h.setLastError(1);if(t){if(null==(y=l.handleStore.get(t).value))return h.setLastError(2);y=Object(y)}else y={};var _=h.ensureHandleId(y),E=l.handleStore.get(a).value;if("symbol"==typeof E)return h.setLastError(3);E=String(E);var w=h.ensureHandleId(E),m=R.offset.__size__,L=o(m);if(!L)return h.setLastError(9);L>>>=0,new Uint8Array(n.buffer).subarray(L,L+m).fill(0);var b=l.createReference(h,_,1,1),S=b.id,A=new DataView(n.buffer);return A.setUint32(L+R.offset.resource,S,!0),R.initQueue(L)?(M(_,w,-1,L+R.offset.async_id),A.setInt8(L+R.offset.is_some,1,!0),A.setUint32(L+R.offset.thread_count,u,!0),A.setUint32(L+R.offset.context,d,!0),A.setUint32(L+R.offset.max_queue_size,s,!0),A.setUint32(L+R.offset.ref,g,!0),A.setUint32(L+R.offset.env,e,!0),A.setUint32(L+R.offset.finalize_data,f,!0),A.setUint32(L+R.offset.finalize_cb,c,!0),A.setUint32(L+R.offset.call_js_cb,p,!0),l.addCleanupHook(h,R.cleanup,L),R._liveSet.add(L),h.ref(),l.increaseWaitingRequestCounter(),A.setUint32(L+R.offset.async_ref,1,!0),v>>>=0,A.setUint32(v,L,!0),h.clearLastError()):(i(L),b.dispose(),h.setLastError(9))},h.imports.napi.napi_get_threadsafe_function_context=function(e,r){if(!e||!r)return c(),1;e>>>=0,r>>>=0;var t=R.getContext(e);return new DataView(n.buffer).setUint32(r,t,!0),0},h.imports.napi.napi_call_threadsafe_function=function(e,r,t){return e?(e>>>=0,r>>>=0,R.push(e,r,t)):(c(),1)},h.imports.napi.napi_acquire_threadsafe_function=function(e){return e?(e>>>=0,R.getMutex(e).execute(function(){return 0===R.getState(e)?(R.addThreadCount(e),0):16})):(c(),1)},h.imports.napi.napi_release_threadsafe_function=function(e,r){if(!e)return c(),1;e>>>=0;var t=R.getMutex(e),n=R.getCond(e),a=!1,o=t.execute(function(){return 0===R.getThreadCount(e)?1:(R.subThreadCount(e),0!==R.getThreadCount(e)&&1!==r||0===R.getState(e)&&(1===r&&R.setState(e,1),1===R.getState(e)&&R.getMaxQueueSize(e)>0&&n.signal(),R.send(e)),2!==R.getState(e)||0!==R.getThreadCount(e)||(a=!0),0)});return a&&R.destroy(e),o},h.imports.napi.napi_unref_threadsafe_function=function(e,r){if(!r)return c(),1;var t=(r>>>=0)+R.offset.async_ref>>>2,a=new Uint32Array(n.buffer),o=Atomics.load(a,t);return o>0&&(Atomics.store(a,t,o-1),1===o&&l.decreaseWaitingRequestCounter()),0},h.imports.napi.napi_ref_threadsafe_function=function(e,r){if(!r)return c(),1;var t=(r>>>=0)+R.offset.async_ref>>>2,a=new Uint32Array(n.buffer),o=Atomics.load(a,t);return o||l.increaseWaitingRequestCounter(),Atomics.store(a,t,o+1),0},h}();return t}function m(e,r,t,n){var a,o=(n=null!=n?n:{}).getMemory,i=n.getTable,s=n.beforeInit;if(null!=o&&"function"!=typeof o)throw new TypeError("options.getMemory is not a function");if(null!=i&&"function"!=typeof i)throw new TypeError("options.getTable is not a function");if(null!=s&&"function"!=typeof s)throw new TypeError("options.beforeInit is not a function");var u="object"==typeof r&&null!==r;if(u){if(r.loaded)throw new Error("napiModule has already loaded");a=r}else a=w(n);var f,c=n.wasi,l={env:a.imports.env,napi:a.imports.napi,emnapi:a.imports.emnapi};c&&(f=new y(a.childThread?{wasi:c,childThread:!0,postMessage:a.postMessage}:{wasi:c,threadManager:a.PThread,waitThreadStart:a.waitThreadStart}),Object.assign(l,"function"==typeof c.getImportObject?c.getImportObject():{wasi_snapshot_preview1:c.wasiImport}),Object.assign(l,f.getImportObject()));var d=n.overwriteImports;if("function"==typeof d){var p=d(l);"object"==typeof p&&null!==p&&(l=p)}return e(t,l,function(r,t){if(r)throw r;var n=t.instance,d=n,p=n.exports,v="memory"in p,h="memory"in l.env,y=o?o(p):v?p.memory:h?l.env.memory:void 0;if(!y)throw new Error("memory is neither exported nor imported");var g=i?i(p):p.__indirect_function_table;if(c&&!v){var _=Object.create(null);Object.assign(_,p,{memory:y}),d={exports:_}}var E=t.module;c?d=f.initialize(d,E,y):a.PThread.setup(E,y);var w=function(){s&&s({instance:n,module:E}),a.init({instance:d,module:E,memory:y,table:g});var e={instance:n,module:E,usedInstance:d};return u||(e.napiModule=a),e};if(a.PThread.shouldPreloadWorkers()){var m=a.PThread.loadWasmModuleToAllWorkers();if(e===L)return m.then(w);throw new Error("Synchronous loading is not supported with worker pool (reuseWorker.size > 0)")}return w()})}function L(e,r,t){return n(e,r).then(function(e){return t(null,e)},function(e){return t(e)})}function b(e,n,a){var o;try{o=function(e,n){if(!e)throw new TypeError("Invalid wasm source");var a;if(t(n),n=null!=n?n:{},e instanceof ArrayBuffer||ArrayBuffer.isView(e))a=new r.Module(e);else{if(!(e instanceof WebAssembly.Module))throw new TypeError("Invalid wasm source");a=e}return{instance:new r.Instance(a,n),module:a}}(e,n)}catch(e){return a(e)}return a(null,o)}var S=function(e,r){return S=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,r){e.__proto__=r}||function(e,r){for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t])},S(e,r)};var A=function(){return A=Object.assign||function(e){for(var r,t=1,n=arguments.length;to(e,r))}catch(e){}if(e instanceof ArrayBuffer||ArrayBuffer.isView(e))return n.instantiate(e,r);if(e instanceof n.Module)return n.instantiate(e,r).then(r=>({instance:r,module:e}));if("undefined"!=typeof Response&&e instanceof Response)return e.arrayBuffer().then(e=>n.instantiate(e,r));const t="string"==typeof e;if(t||"undefined"!=typeof URL&&e instanceof URL){if(t&&"undefined"!=typeof wx&&"undefined"!=typeof __wxConfig)return n.instantiate(e,r);if("function"!=typeof fetch)throw new TypeError("wasm source can not be a string or URL in this environment");if("function"!=typeof n.instantiateStreaming)return o(fetch(e),r);try{return n.instantiateStreaming(fetch(e),r).catch(()=>o(fetch(e),r))}catch(t){return o(fetch(e),r)}}throw new TypeError("Invalid wasm source")}function s(r){var t=function(){var t,a,o,s,i,u="object"==typeof process&&null!==process&&"object"==typeof process.versions&&null!==process.versions&&"string"==typeof process.versions.node,f=Boolean(r.childThread),c="number"==typeof r.waitThreadStart?r.waitThreadStart:Boolean(r.waitThreadStart);function l(e){if("function"==typeof n.RuntimeError)throw new n.RuntimeError(e);throw Error(e)}var d,v,p,g={imports:{env:{},napi:{},emnapi:{}},exports:{},emnapi:{},loaded:!1,filename:"",childThread:f,initWorker:void 0,waitThreadStart:c,PThread:void 0,init:function(e){if(g.loaded)return g.exports;if(!e)throw new TypeError("Invalid napi init options");var r=e.instance;if(!(null==r?void 0:r.exports))throw new TypeError("Invalid wasm instance");t=r;var u=r.exports,f=e.module,c=e.memory||u.memory,p=e.table||u.__indirect_function_table;if(!(f instanceof n.Module))throw new TypeError("Invalid wasm module");if(!(c instanceof n.Memory))throw new TypeError("Invalid wasm memory");if(!(p instanceof n.Table))throw new TypeError("Invalid wasm table");if(a=c,o=p,"function"!=typeof u.malloc)throw new TypeError("malloc is not exported");if("function"!=typeof u.free)throw new TypeError("free is not exported");if(s=u.malloc,i=u.free,!g.childThread){var y=8,h=r.exports.node_api_module_get_api_version_v1;"function"==typeof h&&(y=h());var _=g.envObject||(g.envObject=d.createEnv(g.filename,y,function(e){return o.get(e)},function(e){return o.get(e)},l,v)),E=d.openScope(_);try{_.callIntoModule(function(e){var t=g.exports,n=E.add(t),a=(0,r.exports.napi_register_wasm_v1)(e.id,n.id);g.exports=a?d.handleStore.get(a).value:t})}catch(e){if("unwind"!==e)throw e}finally{d.closeScope(_,E)}return g.loaded=!0,delete g.envObject,g.exports}}},y=void 0;if(f){d=null==r?void 0:r.context;var h="function"==typeof r.postMessage?r.postMessage:"function"==typeof postMessage?postMessage:void 0;if("function"!=typeof h)throw new TypeError("No postMessage found");g.postMessage=h}else{var _=r.context;if("object"!=typeof _||null===_)throw new TypeError("Invalid `options.context`. Use `import { getDefaultContext } from '@emnapi/runtime'`");d=_}if("string"==typeof r.filename&&(g.filename=r.filename),"function"==typeof r.onCreateWorker&&(y=r.onCreateWorker),"function"==typeof r.print?r.print:console.log.bind(console),p="function"==typeof r.printErr?r.printErr:console.warn.bind(console),"nodeBinding"in r){var E=r.nodeBinding;if("object"!=typeof E||null===E)throw new TypeError("Invalid `options.nodeBinding`. Use @emnapi/node-binding package");v=E}var w=0;if("asyncWorkPoolSize"in r){if("number"!=typeof r.asyncWorkPoolSize)throw new TypeError("options.asyncWorkPoolSize must be a integer");(w=r.asyncWorkPoolSize|0)>1024?w=1024:w<-1024&&(w=-1024)}var L=!f&&w<=0;function m(){return Math.abs(w)}function b(e){if(!e)return!1;if(e._emnapiSendListener)return!0;var r=function(e){var r=(u?e:e.data).__emnapi__;if(r&&"async-send"===r.type)if(f){(0,g.postMessage)({__emnapi__:r})}else{var t=r.payload.callback;o.get(t)(r.payload.data)}};return e._emnapiSendListener={handler:r,dispose:function(){u?e.off("message",r):e.removeEventListener("message",r,!1),delete e._emnapiSendListener}},u?e.on("message",r):e.addEventListener("message",r,!1),!0}g.imports.env._emnapi_async_work_pool_size=m,g.emnapi.addSendListener=b;var S=new e(f?{printErr:p,childThread:!0}:{printErr:p,beforeLoad:function(e){b(e)},reuseWorker:r.reuseWorker,onCreateWorker:y});function A(e,r){d.feature.setImmediate(function(){o.get(e)(r)})}function C(e,r){Promise.resolve().then(function(){o.get(e)(r)})}function I(e,r){var t,n=[r>>>0,(t=r,+Math.abs(t)>=1?t>0?(0|Math.min(+Math.floor(t/4294967296),4294967295))>>>0:~~+Math.ceil((t-+(~~t>>>0))/4294967296)>>>0:0)],o=new DataView(a.buffer);o.setInt32(e,n[0],!0),o.setInt32(e+4,n[1],!0)}g.PThread=S;var k,U=Object.freeze({__proto__:null,$emnapiSetValueI64:I,_emnapi_call_finalizer:function(e,r,t,n,a){t>>>=0,d.envStore.get(r).callFinalizerInternal(e,t,n,a)},_emnapi_callback_into_module:function(e,r,t,n,a){var s=d.envStore.get(r),i=d.openScope(s);try{s.callbackIntoModule(Boolean(e),function(){o.get(t)(r,n)})}catch(e){throw d.closeScope(s,i),a&&d.closeScope(s),e}d.closeScope(s,i)},_emnapi_close_handle_scope:function(e){return d.closeScope()},_emnapi_ctx_decrease_waiting_request_counter:function(){d.decreaseWaitingRequestCounter()},_emnapi_ctx_increase_waiting_request_counter:function(){d.increaseWaitingRequestCounter()},_emnapi_get_node_version:function(e,r,t){e>>>=0,r>>>=0,t>>>=0;var n="object"==typeof process&&null!==process&&"object"==typeof process.versions&&null!==process.versions&&"string"==typeof process.versions.node?process.versions.node.split(".").map(function(e){return Number(e)}):[0,0,0],o=new DataView(a.buffer);o.setUint32(e,n[0],!0),o.setUint32(r,n[1],!0),o.setUint32(t,n[2],!0)},_emnapi_get_now:function(){return performance.timeOrigin+performance.now()},_emnapi_is_main_browser_thread:function(){return"undefined"==typeof window||"undefined"==typeof document||u?0:1},_emnapi_is_main_runtime_thread:function(){return f?0:1},_emnapi_next_tick:C,_emnapi_open_handle_scope:function(){return d.openScope().id},_emnapi_runtime_keepalive_pop:function(){},_emnapi_runtime_keepalive_push:function(){},_emnapi_set_immediate:A,_emnapi_unwind:function(){throw"unwind"},napi_clear_last_error:function(e){return d.envStore.get(e).clearLastError()},napi_set_last_error:function(e,r,t,n){return d.envStore.get(e).setLastError(r,t,n)}});function V(e){var r=new DataView(a.buffer).getInt32(e+20,!0);return S.pthreads[r]}var T=new Promise(function(e){k=function(){T.ready=!0,e()}});T.ready=!1;var D=Object.freeze({__proto__:null,_emnapi_after_uvthreadpool_ready:function(e,r,t){T.ready?o.get(e)(r,t):T.then(function(){o.get(e)(r,t)})},_emnapi_async_send_js:function(e,r,t){if(f)(0,g.postMessage)({__emnapi__:{type:"async-send",payload:{callback:r,data:t}}});else switch(e){case 0:A(r,t);break;case 1:C(r,t)}},_emnapi_emit_async_thread_ready:function(){f&&(0,g.postMessage)({__emnapi__:{type:"async-thread-ready",payload:{}}})},_emnapi_tell_js_uvthreadpool:function(e,r){for(var t=[],n=new DataView(a.buffer),o=function(r){var a=V(n.getUint32(e+4*r,!0));t.push(new Promise(function(e){var r=function(t){var n=(u?t:t.data).__emnapi__;n&&"async-thread-ready"===n.type&&(e(),a&&"function"==typeof a.unref&&a.unref(),u?a.off("message",r):a.removeEventListener("message",r))};u?a.on("message",r):a.addEventListener("message",r)}))},s=0;s>>=0);r&&"function"==typeof r.ref&&r.ref()}},_emnapi_worker_unref:function(e){if(!f){var r=V(e>>>=0);r&&"function"==typeof r.unref&&r.unref()}}});var B=Object.freeze({__proto__:null,napi_adjust_external_memory:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(!t)return n.setLastError(1);var o=d.adjustAmountOfExternalAllocatedMemory(r);return t>>>=0,d.feature.supportBigInt?new DataView(a.buffer).setBigInt64(t,BigInt(o),!0):I(t,Number(o)),n.clearLastError()}}),x={idGen:{},values:[void 0],queued:new Set,pending:[],init:function(){var e={nextId:1,list:[],generate:function(){var r;return e.list.length?r=e.list.shift():(r=e.nextId,e.nextId++),r},reuse:function(r){e.list.push(r)}};x.idGen=e,x.values=[void 0],x.queued=new Set,x.pending=[]},create:function(e,r,t,n,a,o){var s=0,i=0;if(v){var u=v.node.emitAsyncInit(r,t,-1);s=u.asyncId,i=u.triggerAsyncId}var f=x.idGen.generate();return x.values[f]={env:e,id:f,resource:r,asyncId:s,triggerAsyncId:i,status:0,execute:n,complete:a,data:o},f},callComplete:function(e,r){var t=e.complete,n=e.env,a=e.data,s=function(){if(t){var e=d.envStore.get(n),s=d.openScope(e);try{e.callbackIntoModule(!0,function(){o.get(t)(n,r,a)})}finally{d.closeScope(e,s)}}};v?v.node.makeCallback(e.resource,s,[],{asyncId:e.asyncId,triggerAsyncId:e.triggerAsyncId}):s()},queue:function(e){var r=x.values[e];if(r&&0===r.status){if(r.status=1,x.queued.size>=(Math.abs(w)||4))return void x.pending.push(e);x.queued.add(e);var t=r.env,n=r.data,a=r.execute;r.status=2,d.feature.setImmediate(function(){if(o.get(a)(t,n),x.queued.delete(e),r.status=3,d.feature.setImmediate(function(){x.callComplete(r,0)}),x.pending.length>0){var s=x.pending.shift();x.values[s].status=0,x.queue(s)}})}},cancel:function(e){var r=x.pending.indexOf(e);if(-1!==r){var t=x.values[e];return t&&1===t.status?(t.status=4,x.pending.splice(r,1),d.feature.setImmediate(function(){x.callComplete(t,11)}),0):9}return 9},remove:function(e){var r=x.values[e];r&&(v&&v.node.emitAsyncDestroy({asyncId:r.asyncId,triggerAsyncId:r.triggerAsyncId}),x.values[e]=void 0,x.idGen.reuse(e))}};function R(e,r,t,n){if(v){var o=d.handleStore.get(e).value,s=d.handleStore.get(r).value,i=v.node.emitAsyncInit(o,s,t),u=i.asyncId,f=i.triggerAsyncId;if(n){n>>>=0;var c=new DataView(a.buffer);c.setFloat64(n,u,!0),c.setFloat64(n+8,f,!0)}}}function j(e,r){v&&v.node.emitAsyncDestroy({asyncId:e,triggerAsyncId:r})}var O=Object.freeze({__proto__:null,_emnapi_async_destroy_js:function(e){if(!v)return 9;e>>>=0;var r=new DataView(a.buffer),t=r.getInt32(e,!0),n=r.getInt32(e+4,!0),o=BigInt(t>>>0)|BigInt(n)<=BigInt(-1)*(BigInt(1)<=BigInt(1)<>BigInt(32));t>>>=0;var c=new DataView(a.buffer);return c.setInt32(t,u,!0),c.setInt32(t+4,f,!0),0},_emnapi_env_check_gc_access:function(e){d.envStore.get(e).checkGCAccess()},_emnapi_node_emit_async_destroy:j,_emnapi_node_emit_async_init:R,_emnapi_node_make_callback:function(e,r,t,n,o,s,i,u){var f,c=0;if(v){var l=d.handleStore.get(r).value,p=d.handleStore.get(t).value;n>>>=0,o>>>=0,o>>>=0;for(var g=Array(o),y=new DataView(a.buffer);c>>=0,f=d.envStore.get(e).ensureHandleId(_),y.setUint32(u,f,!0)}},napi_close_callback_scope:function(e,r){throw new Error("napi_close_callback_scope has not been implemented yet")},napi_make_callback:function(e,r,t,n,o,s,i){var u,f=0;if(!e)return 1;var c=d.envStore.get(e);if(c.checkGCAccess(),!c.tryCatch.isEmpty())return c.setLastError(10);if(!c.canCallIntoJs())return c.setLastError(c.moduleApiVersion>=10?23:10);c.clearLastError();try{if(!v)return c.setLastError(9);if(!t)return c.setLastError(1);if(o>0&&!s)return c.setLastError(1);var l=Object(d.handleStore.get(t).value),p=d.handleStore.get(n).value;if("function"!=typeof p)return c.setLastError(1);r>>>=0;var g=new DataView(a.buffer),y=g.getInt32(r,!0),h=g.getInt32(r+4,!0),_=BigInt(y>>>0)|BigInt(h)<>>=0,o>>>=0,o>>>=0;for(var E=Array(o);f>>=0,u=c.ensureHandleId(L.value),g.setUint32(i,u,!0)),c.getReturnStatus())}catch(e){return c.tryCatch.setError(e),c.setLastError(10)}},napi_open_callback_scope:function(e,r,t,n){throw new Error("napi_open_callback_scope has not been implemented yet")}}),G={_liveSet:{},offset:{__size__:0,resource:0,async_id:0,trigger_async_id:0,queue_size:0,is_some:0,queue:0,async_pending:0,async_u_fd:0,thread_count:0,state:0,dispatch_state:0,context:0,max_queue_size:0,ref:0,env:0,finalize_data:0,finalize_cb:0,call_js_cb:0,handles_closing:0,async_ref:0,mutex:0,cond:0},init:function(){if(G._liveSet=new Set,G.offset.__size__=184,G.offset.resource=0,G.offset.async_id=8,G.offset.trigger_async_id=16,G.offset.queue_size=60,G.offset.is_some=24,G.offset.queue=64,G.offset.async_pending=132,G.offset.async_u_fd=96,G.offset.thread_count=136,G.offset.state=140,G.offset.dispatch_state=144,G.offset.context=148,G.offset.max_queue_size=152,G.offset.ref=156,G.offset.env=160,G.offset.finalize_data=164,G.offset.finalize_cb=168,G.offset.call_js_cb=172,G.offset.handles_closing=176,G.offset.async_ref=180,G.offset.mutex=32,G.offset.cond=56,G.offset.mutex=G.offset.mutex+4,void 0!==S){S.unusedWorkers.forEach(G.addListener),S.runningWorkers.forEach(G.addListener);var e=S.getNewWorker;S.getNewWorker=function(){var r=e.apply(this,arguments);return G.addListener(r),r}}},addListener:function(e){if(!e)return!1;if(e._emnapiTSFNListener)return!0;var r=function(e){var r=(u?e:e.data).__emnapi__;if(r){var t=r.type,n=r.payload;if("tsfn-send"===t){var o=n.tsfn+G.offset.async_pending;0!==Atomics.load(new Int32Array(a.buffer),o>>>2)&&G.enqueue(n.tsfn)}}};return e._emnapiTSFNListener={handler:r,dispose:function(){u?e.off("message",r):e.removeEventListener("message",r,!1),delete e._emnapiTSFNListener}},u?e.on("message",r):e.addEventListener("message",r,!1),!0},initQueue:function(e){var r=s(8);return!!r&&(r>>>=0,new Uint8Array(a.buffer,r,8).fill(0),G.storeSizeTypeValue(e+G.offset.queue,r,!1),!0)},destroyQueue:function(e){var r=G.loadSizeTypeValue(e+G.offset.queue,!1);if(r){for(var t=G.loadSizeTypeValue(r,!1);0!==t;){var n=G.loadSizeTypeValue(t+4,!1);i(t),t=n}i(r)}},pushQueue:function(e,r){var t=G.loadSizeTypeValue(e+G.offset.queue,!1),n=G.loadSizeTypeValue(t,!1),a=G.loadSizeTypeValue(t+4,!1),o=s(8);if(!o)throw new Error("OOM");o>>>=0,G.storeSizeTypeValue(o,r,!1),G.storeSizeTypeValue(o+4,0,!1),0===n&&0===a?(G.storeSizeTypeValue(t,o,!1),G.storeSizeTypeValue(t+4,o,!1)):(G.storeSizeTypeValue(a+4,o,!1),G.storeSizeTypeValue(t+4,o,!1)),G.addQueueSize(e)},shiftQueue:function(e){var r=G.loadSizeTypeValue(e+G.offset.queue,!1),t=G.loadSizeTypeValue(r,!1);if(0===t)return 0;var n=t,a=G.loadSizeTypeValue(t+4,!1);G.storeSizeTypeValue(r,a,!1),0===a&&G.storeSizeTypeValue(r+4,0,!1),G.storeSizeTypeValue(n+4,0,!1);var o=G.loadSizeTypeValue(n,!1);return i(n),G.subQueueSize(e),o},push:function(e,r,t){var n=G.getMutex(e),a=G.getCond(e),o=function(){var r=G.getQueueSize(e),t=G.getMaxQueueSize(e);return r>=t&&t>0&&0===G.getState(e)},s="undefined"!=typeof window&&"undefined"!=typeof document&&!u,i=!1,f=n.execute(function(){for(;o();){if(0===t)return 15;if(s)return 21;a.wait()}return 0===G.getState(e)?(G.pushQueue(e,r),G.send(e),0):0===G.getThreadCount(e)?1:(G.subThreadCount(e),2!==G.getState(e)||0!==G.getThreadCount(e)||(i=!0),16)});return i&&G.destroy(e),f},getMutex:function(e){var r=e+G.offset.mutex,t={lock:function(){var e="undefined"!=typeof window&&"undefined"!=typeof document&&!u,t=new Int32Array(a.buffer,r,1);if(e)for(;;){if(0===Atomics.compareExchange(t,0,0,10))return}else for(;;){if(0===Atomics.compareExchange(t,0,0,10))return;Atomics.wait(t,0,10)}},unlock:function(){var e=new Int32Array(a.buffer,r,1);if(10!==Atomics.compareExchange(e,0,10,0))throw new Error("Tried to unlock while not holding the mutex");Atomics.notify(e,0,1)},execute:function(e){t.lock();try{return e()}finally{t.unlock()}}};return t},getCond:function(e){var r=e+G.offset.cond,t=G.getMutex(e);return{wait:function(){var e=new Int32Array(a.buffer,r,1),n=Atomics.load(e,0);t.unlock(),Atomics.wait(e,0,n),t.lock()},signal:function(){var e=new Int32Array(a.buffer,r,1);Atomics.add(e,0,1),Atomics.notify(e,0,1)}}},getQueueSize:function(e){return G.loadSizeTypeValue(e+G.offset.queue_size,!0)},addQueueSize:function(e){var r,t,n=G.offset.queue_size;r=new Uint32Array(a.buffer),t=e+n>>>2,Atomics.add(r,t,1)},subQueueSize:function(e){var r,t,n=G.offset.queue_size;r=new Uint32Array(a.buffer),t=e+n>>>2,Atomics.sub(r,t,1)},getThreadCount:function(e){return G.loadSizeTypeValue(e+G.offset.thread_count,!0)},addThreadCount:function(e){var r,t,n=G.offset.thread_count;r=new Uint32Array(a.buffer),t=e+n>>>2,Atomics.add(r,t,1)},subThreadCount:function(e){var r,t,n=G.offset.thread_count;r=new Uint32Array(a.buffer),t=e+n>>>2,Atomics.sub(r,t,1)},getState:function(e){return Atomics.load(new Int32Array(a.buffer),e+G.offset.state>>>2)},setState:function(e,r){Atomics.store(new Int32Array(a.buffer),e+G.offset.state>>>2,r)},getHandlesClosing:function(e){return Atomics.load(new Int8Array(a.buffer),e+G.offset.handles_closing)},setHandlesClosing:function(e,r){Atomics.store(new Int8Array(a.buffer),e+G.offset.handles_closing,r)},getDispatchState:function(e){return Atomics.load(new Uint32Array(a.buffer),e+G.offset.dispatch_state>>>2)},getContext:function(e){return G.loadSizeTypeValue(e+G.offset.context,!1)},getMaxQueueSize:function(e){return G.loadSizeTypeValue(e+G.offset.max_queue_size,!0)},getEnv:function(e){return G.loadSizeTypeValue(e+G.offset.env,!1)},getCallJSCb:function(e){return G.loadSizeTypeValue(e+G.offset.call_js_cb,!1)},getRef:function(e){return G.loadSizeTypeValue(e+G.offset.ref,!1)},getResource:function(e){return G.loadSizeTypeValue(e+G.offset.resource,!1)},getFinalizeCb:function(e){return G.loadSizeTypeValue(e+G.offset.finalize_cb,!1)},getFinalizeData:function(e){return G.loadSizeTypeValue(e+G.offset.finalize_data,!1)},loadSizeTypeValue:function(e,r){var t;return r?(t=new Uint32Array(a.buffer),Atomics.load(t,e>>>2)):(t=new Int32Array(a.buffer),Atomics.load(t,e>>>2))},storeSizeTypeValue:function(e,r,t){var n;return t?(n=new Uint32Array(a.buffer),void Atomics.store(n,e>>>2,r)):(n=new Int32Array(a.buffer),void Atomics.store(n,e>>>2,r>>>0))},releaseResources:function(e){if(2!==G.getState(e)){G.setState(e,2);var r=G.getEnv(e),t=d.envStore.get(r),n=G.getRef(e);n&&d.refStore.get(n).dispose();var o=G.getResource(e);d.refStore.get(o).dispose(),new DataView(a.buffer).setInt8(e+G.offset.is_some,0,!0),d.removeCleanupHook(t,G.cleanup,e),t.unref();var s=e+G.offset.async_ref>>>2,i=new Uint32Array(a.buffer);if(Atomics.load(i,s)>0&&(Atomics.store(i,s,0),d.decreaseWaitingRequestCounter()),v){var u=new DataView(a.buffer);j(u.getFloat64(e+G.offset.async_id,!0),u.getFloat64(e+G.offset.trigger_async_id,!0))}}},destroy:function(e){G._liveSet.delete(e),G.destroyQueue(e),G.releaseResources(e),i(e)},emptyQueue:function(e){var r=[];G.getMutex(e).execute(function(){for(;G.getQueueSize(e)>0;)r.push(G.shiftQueue(e))});for(var t,n=G.getCallJSCb(e),a=G.getContext(e),s=0;s0?G.releaseResources(e):r=!0}),r&&G.destroy(e)},finalize:function(e){var r=G.getEnv(e),t=d.envStore.get(r);d.openScope(t);var n=G.getFinalizeCb(e),o=G.getFinalizeData(e),s=G.getContext(e),i=function(){t.callFinalizerInternal(0,n,o,s)};try{if(G.emptyQueue(e),n)if(v){var u=G.getResource(e),f=d.refStore.get(u).get(),c=d.handleStore.get(f).value,l=new DataView(a.buffer),p=l.getFloat64(e+G.offset.async_id,!0),g=l.getFloat64(e+G.offset.trigger_async_id,!0);v.node.makeCallback(c,i,[],{asyncId:p,triggerAsyncId:g})}else i();G.maybeDelete(e)}finally{d.closeScope(t)}},cleanup:function(e){G.closeHandlesAndMaybeDelete(e,1)},closeHandlesAndMaybeDelete:function(e,r){var t=G.getEnv(e),n=d.envStore.get(t);d.openScope(n);try{if(r&&G.getMutex(e).execute(function(){G.setState(e,1),G.getMaxQueueSize(e)>0&&G.getCond(e).signal()}),G.getHandlesClosing(e))return;G.setHandlesClosing(e,1),Atomics.store(new Int32Array(a.buffer),e+G.offset.async_pending>>>2,1),d.feature.setImmediate(function(){G.finalize(e)})}finally{d.closeScope(n)}},dispatchOne:function(e){var r=0,t=!1,n=!1,s=G.getMutex(e),i=G.getCond(e);if(s.execute(function(){if(0===G.getState(e)){var a=G.getQueueSize(e);if(a>0){r=G.shiftQueue(e),t=!0;var o=G.getMaxQueueSize(e);a===o&&o>0&&i.signal(),a--}0===a?0===G.getThreadCount(e)&&(G.setState(e,1),G.getMaxQueueSize(e)>0&&i.signal(),G.closeHandlesAndMaybeDelete(e,0)):n=!0}else G.closeHandlesAndMaybeDelete(e,0)}),t){var u=G.getEnv(e),f=d.envStore.get(u);d.openScope(f);var c=function(){f.callbackIntoModule(!1,function(){var t=G.getCallJSCb(e),n=G.getRef(e),a=n?d.refStore.get(n).get():0;if(t){var s=G.getContext(e);o.get(t)(u,a,s,r)}else{var i=a?d.handleStore.get(a).value:null;"function"==typeof i&&i()}})};try{if(v){var l=G.getResource(e),p=d.refStore.get(l).get(),g=d.handleStore.get(p).value,y=new DataView(a.buffer);v.node.makeCallback(g,c,[],{asyncId:y.getFloat64(e+G.offset.async_id,!0),triggerAsyncId:y.getFloat64(e+G.offset.trigger_async_id,!0)})}else c()}finally{d.closeScope(f)}}return n},dispatch:function(e){for(var r=!0,t=1e3,n=new Uint32Array(a.buffer),o=e+G.offset.dispatch_state>>>2;r&&0!==--t;)Atomics.store(n,o,1),r=G.dispatchOne(e),1!==Atomics.exchange(n,o,0)&&(r=!0);r&&G.send(e)},enqueue:function(e){var r=e+G.offset.async_pending,t=e+G.offset.async_u_fd,n=new Int32Array(a.buffer);0===Atomics.exchange(n,t>>>2,1)&&d.feature.setImmediate(function(){G._liveSet.has(e)&&(0!==Atomics.load(n,r>>>2)?d.feature.setImmediate(function(){try{if(0===Atomics.exchange(n,r>>>2,0))return;if(!G._liveSet.has(e))return;G.dispatch(e)}finally{G._liveSet.has(e)&&(Atomics.store(n,t>>>2,0),0!==Atomics.load(n,r>>>2)&&G.enqueue(e))}}):Atomics.store(n,t>>>2,0))})},send:function(e){if(1&~Atomics.or(new Uint32Array(a.buffer),e+G.offset.dispatch_state>>>2,2)){var r=e+G.offset.async_pending;0===Atomics.load(new Int32Array(a.buffer),r>>>2)&&0===Atomics.exchange(new Int32Array(a.buffer),r>>>2,1)&&(void 0!==f&&f?postMessage({__emnapi__:{type:"tsfn-send",payload:{tsfn:e}}}):G.enqueue(e))}}};var z={pool:[],workerReady:null,globalAddress:0,globalOffset:{idle_threads:0,q:4,next:4,prev:8,mutex:12,cond:16,exit_message:20,end:28},offset:{resource:0,async_id:8,trigger_async_id:16,env:24,status:28,queue:32,queue_next:32,queue_prev:36,data:40,execute:44,complete:48,end:52},init:function(){if(z.pool=[],z.workerReady=null,void 0!==S){S.unusedWorkers.forEach(z.addListener),S.runningWorkers.forEach(z.addListener);var e=S.getNewWorker;S.getNewWorker=function(){var r=e.apply(this,arguments);return z.addListener(r),r}}},addListener:function(e){if(!e)return!1;if(e._emnapiAWMTListener)return!0;var r=function(e){var r=(u?e:e.data).__emnapi__;if(r){var t=r.type,n=r.payload;"async-work-complete"===t&&z.callComplete(n.work,0)}};return e._emnapiAWMTListener={handler:r,dispose:function(){u?e.off("message",r):e.removeEventListener("message",r,!1),delete e._emnapiAWMTListener}},u?e.on("message",r):e.addEventListener("message",r,!1),!0},initGlobal:function(){if(!z.globalAddress){z.globalAddress=s(z.globalOffset.end),z.globalAddress>>>=0;var e=z.globalOffset.end,r=z.globalAddress;new Uint8Array(a.buffer,r,e).fill(0),z.queueInit(z.globalAddress+z.globalOffset.q),z.queueInit(z.globalAddress+z.globalOffset.exit_message)}},terminateWorkers:function(){z.pool.forEach(function(e){var r,t;null===(r=e._emnapiAWMTListener)||void 0===r||r.dispose(),null===(t=e._emnapiTSFNListener)||void 0===t||t.dispose(),e.terminate()}),z.pool.length=0},initWorkers:function(e){if(f)return z.workerReady||(z.workerReady=Promise.resolve());if(z.workerReady)return z.workerReady;if(!("emnapi_async_worker_create"in t.exports))throw new TypeError("`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags");var r=t.exports.emnapi_async_worker_create,n=[];z.initGlobal();for(var o=0;o>>=0;var t=new DataView(a.buffer).getInt32(e+20,!0);return(r=S.pthreads[t]).whenLoaded});return z.workerReady=Promise.all(s),z.workerReady},getResource:function(e){return new DataView(a.buffer).getUint32(e+z.offset.resource,!0)},getExecute:function(e){return new DataView(a.buffer).getUint32(e+z.offset.execute,!0)},getComplete:function(e){return new DataView(a.buffer).getUint32(e+z.offset.complete,!0)},getEnv:function(e){return new DataView(a.buffer).getUint32(e+z.offset.env,!0)},getData:function(e){return new DataView(a.buffer).getUint32(e+z.offset.data,!0)},getMutex:function(){var e=z.globalAddress+z.globalOffset.mutex,r={lock:function(){var r="undefined"!=typeof window&&"undefined"!=typeof document&&!u,t=new Int32Array(a.buffer,e,1);if(r)for(;;){if(0===Atomics.compareExchange(t,0,0,10))return}else for(;;){if(0===Atomics.compareExchange(t,0,0,10))return;Atomics.wait(t,0,10)}},unlock:function(){var r=new Int32Array(a.buffer,e,1);if(10!==Atomics.compareExchange(r,0,10,0))throw new Error("Tried to unlock while not holding the mutex");Atomics.notify(r,0,1)},execute:function(e){r.lock();try{return e()}finally{r.unlock()}}};return r},getCond:function(){var e=z.globalAddress+z.globalOffset.cond,r=z.getMutex();return{wait:function(){var t=new Int32Array(a.buffer,e,1),n=Atomics.load(t,0);r.unlock(),Atomics.wait(t,0,n),r.lock()},signal:function(){var r=new Int32Array(a.buffer,e,1);Atomics.add(r,0,1),Atomics.notify(r,0,1)}}},queueInit:function(e){var r=new DataView(a.buffer);r.setUint32(e,e,!0),r.setUint32(e+4,e,!0)},queueInsertTail:function(e,r){var t=new DataView(a.buffer);t.setUint32(r,e,!0);var n=t.getUint32(e+4,!0);t.setUint32(r+4,n,!0);var o=t.getUint32(r+4,!0);t.setUint32(o,r,!0),t.setUint32(e+4,r,!0)},queueRemove:function(e){var r=new DataView(a.buffer),t=r.getUint32(e+4,!0),n=r.getUint32(e,!0);r.setUint32(t,n,!0),r.setUint32(n+4,t,!0)},queueEmpty:function(e){return e==new DataView(a.buffer).getUint32(e,!0)},scheduleWork:function(e){var r;(null===(r=z.workerReady)||void 0===r?void 0:r.ready)||z.initWorkers(m()).then(function(){z.workerReady.ready=!0}).catch(function(e){throw z.workerReady=null,e}),d.increaseWaitingRequestCounter();var t=new Int32Array(a.buffer,e+z.offset.status,1);Atomics.store(t,0,0);var n=z.getMutex(),o=z.getCond();n.lock();try{z.queueInsertTail(z.globalAddress+z.globalOffset.q,e+z.offset.queue)}catch(e){throw d.decreaseWaitingRequestCounter(),n.unlock(),e}new DataView(a.buffer).getUint32(z.globalAddress+z.globalOffset.idle_threads,!0)>0&&o.signal(),n.unlock()},cancelWork:function(e){var r=!1;return z.getMutex().execute(function(){var t=new DataView(a.buffer);(r=!z.queueEmpty(e+z.offset.queue)&&2!==t.getInt32(e+z.offset.status,!0))&&z.queueRemove(e+z.offset.queue)}),r?0!==Atomics.compareExchange(new Int32Array(a.buffer,e+z.offset.status,1),0,0,1)?9:(d.feature.setImmediate(function(){z.callComplete(e,11)}),0):9},callComplete:function(e,r){d.decreaseWaitingRequestCounter();var t=z.getComplete(e),n=z.getEnv(e),s=z.getData(e),i=d.envStore.get(n),u=d.openScope(i),f=function(){t&&i.callbackIntoModule(!0,function(){o.get(t)(n,r,s)})};try{if(v){var c=z.getResource(e),l=d.refStore.get(c).get(),p=d.handleStore.get(l).value,g=new DataView(a.buffer),y=g.getFloat64(e+z.offset.async_id,!0),h=g.getFloat64(e+z.offset.trigger_async_id,!0);v.node.makeCallback(p,f,[],{asyncId:y,triggerAsyncId:h})}else f()}finally{d.closeScope(i,u)}}};z.init();var M=L?function(e,r,t,n,o,s,i){if(!e)return 1;var u,f=d.envStore.get(e);if(f.checkGCAccess(),!n)return f.setLastError(1);if(!i)return f.setLastError(1);if(u=r?Object(d.handleStore.get(r).value):{},!t)return f.setLastError(1);var c=String(d.handleStore.get(t).value),l=x.create(e,u,c,n,o,s);return i>>>=0,new DataView(a.buffer).setUint32(i,l,!0),f.clearLastError()}:function(e,r,t,n,o,i,u){if(!e)return 1;var f,c=d.envStore.get(e);if(c.checkGCAccess(),!n)return c.setLastError(1);if(!u)return c.setLastError(1);if(f=r?Object(d.handleStore.get(r).value):{},!t)return c.setLastError(1);var l=z.offset.end,v=s(l);if(!v)return c.setLastError(9);v>>>=0,new Uint8Array(a.buffer).subarray(v,v+l).fill(0);var p=c.ensureHandleId(f),g=d.createReference(c,p,1,1).id,y=new DataView(a.buffer);return y.setUint32(v,g,!0),R(p,t,-1,v+z.offset.async_id),y.setUint32(v+z.offset.env,e,!0),y.setUint32(v+z.offset.execute,n,!0),y.setUint32(v+z.offset.complete,o,!0),y.setUint32(v+z.offset.data,i,!0),z.queueInit(v+z.offset.queue),u>>>=0,y.setUint32(u,v,!0),c.clearLastError()},F=L?function(e,r){if(!e)return 1;var t=d.envStore.get(e);return t.checkGCAccess(),r?(r>>>=0,x.remove(r),t.clearLastError()):t.setLastError(1)}:function(e,r){if(!e)return 1;var t=d.envStore.get(e);if(t.checkGCAccess(),!r)return t.setLastError(1);r>>>=0;var n=z.getResource(r);if(d.refStore.get(n).dispose(),v){var o=new DataView(a.buffer);j(o.getFloat64(r+z.offset.async_id,!0),o.getFloat64(r+z.offset.trigger_async_id,!0))}return i(r),t.clearLastError()},W=L?function(e,r){if(!e)return 1;var t=d.envStore.get(e);return r?(r>>>=0,x.queue(r),t.clearLastError()):t.setLastError(1)}:function(e,r){if(!e)return 1;var t=d.envStore.get(e);return r?(r>>>=0,z.scheduleWork(r),t.clearLastError()):t.setLastError(1)},q=L?function(e,r){if(!e)return 1;var t=d.envStore.get(e);if(!r)return t.setLastError(1);r>>>=0;var n=x.cancel(r);return 0===n?t.clearLastError():t.setLastError(n)}:function(e,r){if(!e)return 1;var t=d.envStore.get(e);if(!r)return t.setLastError(1);r>>>=0;var n=z.cancelWork(r);return 0===n?t.clearLastError():t.setLastError(n)};g.initWorker=function(e,r){if(!g.childThread)throw new Error("startThread is only available in child threads");if("function"!=typeof t.exports.emnapi_async_worker_init)throw new TypeError("`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags");t.exports.emnapi_async_worker_init(e),o.get(r[0])(r[1])};var J=Object.freeze({__proto__:null,_emnapi_async_worker:function(e){e>>>=0,z.globalAddress=e;var r=z.getMutex(),t=z.getCond();r.lock();for(var n=e+z.globalOffset.exit_message,s=e+z.globalOffset.idle_threads,i=e+z.globalOffset.q,u=new DataView(a.buffer);;){for(;z.queueEmpty(i);)Atomics.add(new Int32Array(a.buffer,s,1),0,1),t.wait(),Atomics.sub(new Int32Array(a.buffer,s,1),0,1);var f=u.getUint32(i,!0);if(f===n){t.signal(),r.unlock();break}var c=f-z.offset.queue;z.queueRemove(f),z.queueInit(f),r.unlock();var d=new Int32Array(a.buffer,c+z.offset.status,1);1===Atomics.load(d,0)&&l("unreachable");var v=z.getExecute(c),p=z.getEnv(c),y=z.getData(c);o.get(v)(p,y),Atomics.store(d,0,2),(0,g.postMessage)({__emnapi__:{type:"async-work-complete",payload:{work:c}}}),r.lock()}return 0},_emnapi_spawn_worker:function(e,r){if("function"!=typeof y)throw new TypeError("`options.onCreateWorker` is not a function");var n=[];if(!("emnapi_async_worker_create"in t.exports))throw new TypeError("`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags");n.push(t.exports.emnapi_async_worker_create(0,0));var a,o=function(e){!("message"in e)||-1===e.message.indexOf("RuntimeError")&&-1===e.message.indexOf("unreachable")||z.terminateWorkers()};try{var s=y({type:"async-work",name:"emnapi-async-worker"}),f=S.loadWasmModuleToWorker(s);u?s.on("error",o):s.addEventListener("error",o,!1),z.addListener(s),G.addListener(s),[].push(f.then(function(){"function"==typeof s.unref&&s.unref()})),a=z.pool.push(s)-1;var c=n[0];s.threadBlockBase=c,s.postMessage({__emnapi__:{type:"async-worker-init",payload:{arg:c,func:[e,r]}}})}catch(e){c=n[0];throw i(c),e}return a},napi_cancel_async_work:q,napi_create_async_work:M,napi_delete_async_work:F,napi_queue_async_work:W}),N={registry:"function"==typeof FinalizationRegistry?new FinalizationRegistry(function(e){i(e)}):void 0,table:new WeakMap,wasmMemoryViewTable:new WeakMap,init:function(){N.registry="function"==typeof FinalizationRegistry?new FinalizationRegistry(function(e){i(e)}):void 0,N.table=new WeakMap,N.wasmMemoryViewTable=new WeakMap},isSharedArrayBuffer:function(e){return"function"==typeof SharedArrayBuffer&&e instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(e)},isDetachedArrayBuffer:function(e){if(0===e.byteLength)try{new Uint8Array(e)}catch(e){return!0}return!1},getArrayBufferPointer:function(e,r){var t,n={address:0,ownership:0,runtimeAllocated:0};if(e===a.buffer)return n;var o=N.isDetachedArrayBuffer(e);if(N.table.has(e)){var i=N.table.get(e);return o?(i.address=0,i):(r&&0===i.ownership&&1===i.runtimeAllocated&&new Uint8Array(a.buffer).set(new Uint8Array(e),i.address),i)}if(o||0===e.byteLength)return n;if(!r)return n;var u=s(e.byteLength);if(!u)throw new Error("Out of memory");return u>>>=0,new Uint8Array(a.buffer).set(new Uint8Array(e),u),n.address=u,n.ownership=N.registry?0:1,n.runtimeAllocated=1,N.table.set(e,n),null===(t=N.registry)||void 0===t||t.register(e,u),n},getOrUpdateMemoryView:function(e){if(e.buffer===a.buffer)return N.wasmMemoryViewTable.has(e)||N.wasmMemoryViewTable.set(e,{Ctor:e.constructor,address:e.byteOffset,length:e instanceof DataView?e.byteLength:e.length,ownership:1,runtimeAllocated:0}),e;if((N.isDetachedArrayBuffer(e.buffer)||N.isSharedArrayBuffer(e.buffer))&&N.wasmMemoryViewTable.has(e)){var r=N.wasmMemoryViewTable.get(e),t=r.Ctor,n=void 0,o=d.feature.Buffer;return n="function"==typeof o&&t===o?o.from(a.buffer,r.address,r.length):new t(a.buffer,r.address,r.length),N.wasmMemoryViewTable.set(n,r),n}return e},getViewPointer:function(e,r){if((e=N.getOrUpdateMemoryView(e)).buffer===a.buffer){if(N.wasmMemoryViewTable.has(e)){var t=N.wasmMemoryViewTable.get(e);return{address:t.address,ownership:t.ownership,runtimeAllocated:t.runtimeAllocated,view:e}}return{address:e.byteOffset,ownership:1,runtimeAllocated:0,view:e}}var n=N.getArrayBufferPointer(e.buffer,r),o=n.address,s=n.ownership,i=n.runtimeAllocated;return{address:0===o?0:o+e.byteOffset,ownership:s,runtimeAllocated:i,view:e}}},P={utf8Decoder:void 0,utf16Decoder:void 0,init:function(){var e,r={decode:function(e){for(var r=0,t=Math.min(4096,e.length+1),n=new Uint16Array(t),a=[],o=0;;){var s=r=t-1){var i=n.subarray(0,o);if(a.push(String.fromCharCode.apply(null,i)),!s)return a.join("");e=e.subarray(r),r=0,o=0}var u=e[r++];if(128&u){if(192==(224&u)){var f=63&e[r++];n[o++]=(31&u)<<6|f}else if(224==(240&u)){f=63&e[r++];var c=63&e[r++];n[o++]=(31&u)<<12|f<<6|c}else if(240==(248&u)){var l=(7&u)<<18|(f=63&e[r++])<<12|(c=63&e[r++])<<6|63&e[r++];l>65535&&(l-=65536,n[o++]=l>>>10&1023|55296,l=56320|1023&l),n[o++]=l}}else n[o++]=u}}};e="function"==typeof TextDecoder?new TextDecoder:r,P.utf8Decoder=e;var t,n={decode:function(e){var r=new Uint16Array(e.buffer,e.byteOffset,e.byteLength/2);if(r.length<=4096)return String.fromCharCode.apply(null,r);for(var t=[],n=0,a=0;n=55296&&r<=57343?(t+=4,++n):t+=3;return t},UTF8ToString:function(e,r){if(!e||!r)return"";e>>>=0;var t=new Uint8Array(a.buffer),n=e;if(-1===r||4294967295===r)for(;t[n];)++n;else n=e+(r>>>0);if((r=n-e)<=16){for(var o=e,s="";o>10,56320|1023&c)}}else s+=String.fromCharCode((31&i)<<6|u)}else s+=String.fromCharCode(i)}return s}return P.utf8Decoder.decode("function"==typeof SharedArrayBuffer&&t.buffer instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(t.buffer)?t.slice(e,n):t.subarray(e,n))},stringToUTF8:function(e,r,t){var n=new Uint8Array(a.buffer),o=r;if(!(t>0))return 0;for(var s=o>>>=0,i=o+t-1,u=0;u=55296&&f<=57343)f=65536+((1023&f)<<10)|1023&e.charCodeAt(++u);if(f<=127){if(o>=i)break;n[o++]=f}else if(f<=2047){if(o+1>=i)break;n[o++]=192|f>>6,n[o++]=128|63&f}else if(f<=65535){if(o+2>=i)break;n[o++]=224|f>>12,n[o++]=128|f>>6&63,n[o++]=128|63&f}else{if(o+3>=i)break;n[o++]=240|f>>18,n[o++]=128|f>>12&63,n[o++]=128|f>>6&63,n[o++]=128|63&f}}return n[o]=0,o-s},UTF16ToString:function(e,r){if(!e||!r)return"";var t=e>>>=0;if(-1===r||4294967295===r){for(var n=t>>>1,o=new Uint16Array(a.buffer);o[n];)++n;t=n<<1>>>0}else t=e+2*(r>>>0);if((r=t-e)<=32)return String.fromCharCode.apply(null,new Uint16Array(a.buffer,e,r/2));var s=new Uint8Array(a.buffer);return P.utf16Decoder.decode("function"==typeof SharedArrayBuffer&&s.buffer instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(s.buffer)?s.slice(e,t):s.subarray(e,t))},stringToUTF16:function(e,r,t){if(void 0===t&&(t=2147483647),t<2)return 0;for(var n=r,o=(t-=2)<2*e.length?t/2:e.length,s=new DataView(a.buffer),i=0;i>>=0,!e)return 1;var s=d.envStore.get(e);s.checkGCAccess();var i=-1===t||4294967295===t,u=t>>>0;if(0!==t&&!r)return s.setLastError(1);if(!n)return s.setLastError(1);if(!(i||u<=2147483647))return s.setLastError(1);var f=o(r>>>=0,i,u);n>>>=0;var c=d.addToCurrentScope(f).id;return new DataView(a.buffer).setUint32(n,c,!0),s.clearLastError()},newExternalString:function(e,r,t,n,o,s,i,u,f){if(t>>>=0,!e)return 1;var c=d.envStore.get(e);c.checkGCAccess();var l=-1===t||4294967295===t,v=t>>>0;if(0!==t&&!r)return c.setLastError(1);if(!s)return c.setLastError(1);if(!(l||v<=2147483647))return c.setLastError(1);var p=u(e,r,t,s);if(0===p){if(i)new DataView(a.buffer).setInt8(i,1,!0);n&&c.callFinalizer(n,r,o)}return p}};function H(e,r,t,n,o,s,i){if(!e)return 1;var u=d.envStore.get(e);if(u.checkGCAccess(),!r)return u.setLastError(1);var f=d.handleStore.get(r);if(!f.isTypedArray())return u.setLastError(1);var c=f.value,l=new DataView(a.buffer);if(t){t>>>=0;var v=void 0;if(c instanceof Int8Array)v=0;else if(c instanceof Uint8Array)v=1;else if(c instanceof Uint8ClampedArray)v=2;else if(c instanceof Int16Array)v=3;else if(c instanceof Uint16Array)v=4;else if(c instanceof Int32Array)v=5;else if(c instanceof Uint32Array)v=6;else if("function"==typeof Float16Array&&c instanceof Float16Array)v=11;else if(c instanceof Float32Array)v=7;else if(c instanceof Float64Array)v=8;else if(c instanceof BigInt64Array)v=9;else{if(!(c instanceof BigUint64Array))return u.setLastError(9);v=10}l.setInt32(t,v,!0)}if(c=N.getOrUpdateMemoryView(c),n&&(n>>>=0,l.setUint32(n,c.length,!0)),o||s){if(o){o>>>=0;var p=N.getViewPointer(c,!0).address;l.setUint32(o,p,!0)}if(s){s>>>=0;var g=u.ensureHandleId(c.buffer);l.setUint32(s,g,!0)}}return i&&(i>>>=0,l.setUint32(i,c.byteOffset,!0)),u.clearLastError()}function Q(e,r,t,n,o,s){if(!e)return 1;var i=d.envStore.get(e);if(i.checkGCAccess(),!r)return i.setLastError(1);var u=d.handleStore.get(r);if(!u.isDataView())return i.setLastError(1);var f=N.getOrUpdateMemoryView(u.value),c=new DataView(a.buffer);if(t&&(t>>>=0,c.setUint32(t,f.byteLength,!0)),n||o){if(n){n>>>=0;var l=N.getViewPointer(f,!0).address;c.setUint32(n,l,!0)}if(o){o>>>=0;var v=i.ensureHandleId(f.buffer);c.setUint32(o,v,!0)}}return s&&(s>>>=0,c.setUint32(s,f.byteOffset,!0)),i.clearLastError()}var $=Object.freeze({__proto__:null,napi_get_array_length:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!r)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(r);if(!o.isArray())return n.setLastError(8);t>>>=0;var s=o.value.length>>>0;return new DataView(a.buffer).setUint32(t,s,!0),n.getReturnStatus()}catch(e){return n.tryCatch.setError(e),n.setLastError(10)}},napi_get_arraybuffer_info:function(e,r,t,n){if(!e)return 1;var o=d.envStore.get(e);if(o.checkGCAccess(),!r)return o.setLastError(1);var s=d.handleStore.get(r);if(!s.isArrayBuffer()&&!N.isSharedArrayBuffer(s.value))return o.setLastError(1);var i=new DataView(a.buffer);if(t){t>>>=0;var u=N.getArrayBufferPointer(s.value,!0).address;i.setUint32(t,u,!0)}return n&&(n>>>=0,i.setUint32(n,s.value.byteLength,!0)),o.clearLastError()},napi_get_buffer_info:function(e,r,t,n){if(!e)return 1;var a=d.envStore.get(e);if(a.checkGCAccess(),!r)return a.setLastError(1);var o=d.handleStore.get(r);return o.isBuffer(d.feature.Buffer)?o.isDataView()?Q(e,r,n,t,0,0):H(e,r,0,n,t,0,0):a.setLastError(1)},napi_get_dataview_info:Q,napi_get_date_value:function(e,r,t){var n;if(!e)return 1;var o=d.envStore.get(e);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{if(!r)return o.setLastError(1);if(!t)return o.setLastError(1);var s=d.handleStore.get(r);return s.isDate()?(t>>>=0,n=s.value.valueOf(),new DataView(a.buffer).setFloat64(t,n,!0),o.getReturnStatus()):o.setLastError(1)}catch(e){return o.tryCatch.setError(e),o.setLastError(10)}},napi_get_prototype:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!r)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(r);if(null==o.value)throw new TypeError("Cannot convert undefined or null to object");var s=void 0;try{s=o.isObject()||o.isFunction()?o.value:Object(o.value)}catch(e){return n.setLastError(2)}t>>>=0;var i=n.ensureHandleId(Object.getPrototypeOf(s));return new DataView(a.buffer).setUint32(t,i,!0),n.getReturnStatus()}catch(e){return n.tryCatch.setError(e),n.setLastError(10)}},napi_get_typedarray_info:H,napi_get_value_bigint_int64:function(e,r,t,n){if(!e)return 1;var o=d.envStore.get(e);if(o.checkGCAccess(),!d.feature.supportBigInt)return o.setLastError(9);if(!r)return o.setLastError(1);if(!t)return o.setLastError(1);if(!n)return o.setLastError(1);var s=d.handleStore.get(r).value;if("bigint"!=typeof s)return o.setLastError(6);n>>>=0,t>>>=0;var i=new DataView(a.buffer);s>=BigInt(-1)*(BigInt(1)<=BigInt(1)<>BigInt(32));return i.setInt32(t,u,!0),i.setInt32(t+4,f,!0),o.clearLastError()},napi_get_value_bigint_uint64:function(e,r,t,n){if(!e)return 1;var o=d.envStore.get(e);if(o.checkGCAccess(),!d.feature.supportBigInt)return o.setLastError(9);if(!r)return o.setLastError(1);if(!t)return o.setLastError(1);if(!n)return o.setLastError(1);var s=d.handleStore.get(r).value;if("bigint"!=typeof s)return o.setLastError(6);n>>>=0,t>>>=0;var i=new DataView(a.buffer);s>=BigInt(0)&&s>BigInt(32));return i.setUint32(t,u,!0),i.setUint32(t+4,f,!0),o.clearLastError()},napi_get_value_bigint_words:function(e,r,t,n,o){if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!d.feature.supportBigInt)return s.setLastError(9);if(!r)return s.setLastError(1);if(!n)return s.setLastError(1);var i=d.handleStore.get(r);if(!i.isBigInt())return s.setLastError(17);var u=i.value>>=0,o>>>=0,n>>>=0;var f=new DataView(a.buffer),c=f.getUint32(n,!0);c>>>=0;for(var l=0,v=u?i.value*BigInt(-1):i.value;v!==BigInt(0);)l++,v>>=BigInt(64);if(v=u?i.value*BigInt(-1):i.value,t||o){if(!t)return s.setLastError(1);if(!o)return s.setLastError(1);for(var p=[];v!==BigInt(0);){var g=v&(BigInt(1)<>=BigInt(64)}for(var y=Math.min(c,p.length),h=0;h>BigInt(32));f.setUint32(o+8*h,_,!0),f.setUint32(o+(8*h+4),E,!0)}f.setInt32(t,u?1:0,!0),f.setUint32(n,y,!0)}else c=l,f.setUint32(n,c,!0);return s.clearLastError()},napi_get_value_bool:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(r);if("boolean"!=typeof o.value)return n.setLastError(7);t>>>=0;var s=o.value?1:0;return new DataView(a.buffer).setInt8(t,s,!0),n.clearLastError()},napi_get_value_double:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(r);if("number"!=typeof o.value)return n.setLastError(6);t>>>=0;var s=o.value;return new DataView(a.buffer).setFloat64(t,s,!0),n.clearLastError()},napi_get_value_external:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(r);if(!o.isExternal())return n.setLastError(1);t>>>=0;var s=o.data();return new DataView(a.buffer).setUint32(t,s,!0),n.clearLastError()},napi_get_value_int32:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(r);if("number"!=typeof o.value)return n.setLastError(6);t>>>=0;var s=new Int32Array([o.value])[0];return new DataView(a.buffer).setInt32(t,s,!0),n.clearLastError()},napi_get_value_int64:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(r);if("number"!=typeof o.value)return n.setLastError(6);var s=o.value;t>>>=0;var i=new DataView(a.buffer);return s===Number.POSITIVE_INFINITY||s===Number.NEGATIVE_INFINITY||isNaN(s)?(i.setInt32(t,0,!0),i.setInt32(t+4,0,!0)):s<-0x8000000000000000?(i.setInt32(t,0,!0),i.setInt32(t+4,2147483648,!0)):s>=0x8000000000000000?(i.setUint32(t,4294967295,!0),i.setUint32(t+4,2147483647,!0)):I(t,Math.trunc(s)),n.clearLastError()},napi_get_value_string_latin1:function(e,r,t,n,o){if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!r)return s.setLastError(1);o>>>=0,t>>>=0,n>>>=0,n>>>=0;var i=d.handleStore.get(r);if("string"!=typeof i.value)return s.setLastError(3);var u=new DataView(a.buffer);if(t)if(0!==n){for(var f=0,c=void 0,l=0;l>>=0,t>>>=0,n>>>=0,n>>>=0;var i=d.handleStore.get(r);if("string"!=typeof i.value)return s.setLastError(3);var u=new DataView(a.buffer);if(t)if(0!==n){var f=P.stringToUTF16(i.value,t,2*n);o&&u.setUint32(o,f/2,!0)}else o&&u.setUint32(o,0,!0);else{if(!o)return s.setLastError(1);u.setUint32(o,i.value.length,!0)}return s.clearLastError()},napi_get_value_string_utf8:function(e,r,t,n,o){if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!r)return s.setLastError(1);o>>>=0,t>>>=0,n>>>=0,n>>>=0;var i=d.handleStore.get(r);if("string"!=typeof i.value)return s.setLastError(3);var u=new DataView(a.buffer);if(t)if(0!==n){var f=P.stringToUTF8(i.value,t,n);o&&u.setUint32(o,f,!0)}else o&&u.setUint32(o,0,!0);else{if(!o)return s.setLastError(1);var c=P.lengthBytesUTF8(i.value);u.setUint32(o,c,!0)}return s.clearLastError()},napi_get_value_uint32:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(r);if("number"!=typeof o.value)return n.setLastError(6);t>>>=0;var s=new Uint32Array([o.value])[0];return new DataView(a.buffer).setUint32(t,s,!0),n.clearLastError()},node_api_set_prototype:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!t)return n.setLastError(1);var a=d.handleStore.get(r).value;if(null==a)throw new TypeError("Cannot convert undefined or null to object");var o=typeof a,s=void 0;try{s="object"===o&&null!==a||"function"===o?a:Object(a)}catch(e){return n.setLastError(2)}var i=d.handleStore.get(t).value;return Object.setPrototypeOf(s,i),n.getReturnStatus()}catch(e){return n.tryCatch.setError(e),n.setLastError(10)}}});function Y(e,r,t,n){return P.newString(e,r,t,n,function(e,r,t){var n="",o=0,s=new DataView(a.buffer);if(r)for(;;){if(!(i=s.getUint8(e,!0)))break;n+=String.fromCharCode(i),e++}else for(;o>>=0,new DataView(a.buffer).setUint32(t,i,!0),s.clearLastError()},napi_create_bigint_uint64:function(e,r,t,n){if(!e)return 1;var o,s=d.envStore.get(e);if(s.checkGCAccess(),!d.feature.supportBigInt)return s.setLastError(9);if(!t)return s.setLastError(1);o=r&(BigInt(1)<>>=0,new DataView(a.buffer).setUint32(t,i,!0),s.clearLastError()},napi_create_bigint_words:function(e,r,t,n,o){var s,i;if(!e)return 1;var u=d.envStore.get(e);if(u.checkGCAccess(),!u.tryCatch.isEmpty())return u.setLastError(10);if(!u.canCallIntoJs())return u.setLastError(u.moduleApiVersion>=10?23:10);u.clearLastError();try{if(!d.feature.supportBigInt)return u.setLastError(9);if(!o)return u.setLastError(1);if(n>>>=0,t>>>=0,(t>>>=0)>2147483647)return u.setLastError(1);if(t>16384)throw new RangeError("Maximum BigInt size exceeded");var f=BigInt(0),c=new DataView(a.buffer);for(i=0;i>>=0,s=d.addToCurrentScope(f).id,c.setUint32(o,s,!0),u.getReturnStatus()}catch(e){return u.tryCatch.setError(e),u.setLastError(10)}},napi_create_double:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!t)return n.setLastError(1);t>>>=0;var o=d.addToCurrentScope(r).id;return new DataView(a.buffer).setUint32(t,o,!0),n.clearLastError()},napi_create_int32:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!t)return n.setLastError(1);t>>>=0;var o=d.addToCurrentScope(r).id;return new DataView(a.buffer).setUint32(t,o,!0),n.clearLastError()},napi_create_int64:function(e,r,t,n){if(!e)return 1;var o,s=d.envStore.get(e);if(s.checkGCAccess(),!t)return s.setLastError(1);o=Number(r);var i=d.addToCurrentScope(o).id;return t>>>=0,new DataView(a.buffer).setUint32(t,i,!0),s.clearLastError()},napi_create_string_latin1:Y,napi_create_string_utf16:X,napi_create_string_utf8:Z,napi_create_uint32:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!t)return n.setLastError(1);t>>>=0;var o=d.addToCurrentScope(r>>>0).id;return new DataView(a.buffer).setUint32(t,o,!0),n.clearLastError()},node_api_create_external_string_latin1:function(e,r,t,n,a,o,s){return P.newExternalString(e,r,t,n,a,o,s,Y,void 0)},node_api_create_external_string_utf16:function(e,r,t,n,a,o,s){return P.newExternalString(e,r,t,n,a,o,s,X,void 0)},node_api_create_property_key_latin1:function(e,r,t,n){return Y(e,r,t,n)},node_api_create_property_key_utf16:function(e,r,t,n){return X(e,r,t,n)},node_api_create_property_key_utf8:function(e,r,t,n){return Z(e,r,t,n)}});function ee(e,r,t,n,a){var s,i=(r>>>=0)&&t?P.UTF8ToString(r,t):"",u=o.get(n),f=function(e){return u(e.id,e.ctx.scopeStore.currentScope.id)},c=function(e,r){return function(){var t=e.ctx.openScope(e),n=t.callbackInfo;n.data=a,n.args=arguments,n.thiz=this,n.fn=s;try{var o=e.callIntoModule(r);return o?e.ctx.handleStore.get(o).value:void 0}finally{n.data=0,n.args=void 0,n.thiz=void 0,n.fn=void 0,e.ctx.closeScope(e,t)}}};if(""===i)return{status:0,f:s=c(e,f)};if(!/^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(i))return{status:1,f:void 0};if(d.feature.supportNewFunction){var l=c(e,f);try{s=new Function("_","return function "+i+'(){"use strict";return _.apply(this,arguments);};')(l)}catch(r){s=c(e,f),d.feature.canSetFunctionName&&Object.defineProperty(s,"name",{value:i})}}else s=c(e,f),d.feature.canSetFunctionName&&Object.defineProperty(s,"name",{value:i});return{status:0,f:s}}function re(e,r,t,n,a,o,s,i,u){if(a||o){var f=void 0,c=void 0;a&&(f=ee(e,0,0,a,u).f),o&&(c=ee(e,0,0,o,u).f);var l={configurable:!!(4&i),enumerable:!!(2&i),get:f,set:c};Object.defineProperty(r,t,l)}else if(n){l={configurable:!!(4&i),enumerable:!!(2&i),writable:!!(1&i),value:ee(e,0,0,n,u).f};Object.defineProperty(r,t,l)}else{l={configurable:!!(4&i),enumerable:!!(2&i),writable:!!(1&i),value:d.handleStore.get(s).value};Object.defineProperty(r,t,l)}}function te(e){var r=d.handleStore.get(e);return r.isObject()||r.isFunction()?(void 0!==N&&ArrayBuffer.isView(r.value)&&N.wasmMemoryViewTable.has(r.value)&&(r=d.addToCurrentScope(N.wasmMemoryViewTable.get(r.value))),{status:0,handle:r}):{status:1}}function ne(e,r,t,n){var o;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!r)return s.setLastError(1);if(0===n&&!t)return s.setLastError(1);var i=d.handleStore.get(r);if(!i.isObject()&&!i.isFunction())return s.setLastError(1);var u=s.getObjectBinding(i.value),f=u.wrapped,c=d.refStore.get(f);if(!c)return s.setLastError(1);if(t)t>>>=0,o=c.data(),new DataView(a.buffer).setUint32(t,o,!0);return 1===n&&(u.wrapped=0,1===c.ownership()?c.resetFinalizer():c.dispose()),s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}}function ae(e,r,t,n,o,s){if(!e)return 1;var i=d.envStore.get(e);if(i.checkGCAccess(),!d.feature.supportFinalizer)return i.setLastError(9);if(!r)return i.setLastError(1);if(!n)return i.setLastError(1);var u=te(r);if(0!==u.status)return i.setLastError(u.status);var f=u.handle,c=s?1:0;t>>>=0,n>>>=0,o>>>=0;var l=d.createReferenceWithFinalizer(i,f.id,0,c,n,t,o);if(s){s>>>=0;var v=l.id;new DataView(a.buffer).setUint32(s,v,!0)}return i.clearLastError()}var oe=Object.freeze({__proto__:null,napi_add_finalizer:ae,napi_check_object_type_tag:function(e,r,t,n){var o=!0;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!r)return s.setLastError(s.tryCatch.hasCaught()?10:1);var i=d.handleStore.get(r);if(!i.isObject()&&!i.isFunction())return s.setLastError(s.tryCatch.hasCaught()?10:2);if(!t)return s.setLastError(s.tryCatch.hasCaught()?10:1);if(!n)return s.setLastError(s.tryCatch.hasCaught()?10:1);var u=s.getObjectBinding(i.value);if(null!==u.tag){t>>>=0;var f=u.tag,c=new Uint32Array(a.buffer,t,4);o=f[0]===c[0]&&f[1]===c[1]&&f[2]===c[2]&&f[3]===c[3]}else o=!1;return n>>>=0,new DataView(a.buffer).setInt8(n,o?1:0,!0),s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_define_class:function(e,r,t,n,o,s,i,u){var f,c,l;if(!e)return 1;var v=d.envStore.get(e);if(v.checkGCAccess(),!v.tryCatch.isEmpty())return v.setLastError(10);if(!v.canCallIntoJs())return v.setLastError(v.moduleApiVersion>=10?23:10);v.clearLastError();try{if(!u)return v.setLastError(1);if(!n)return v.setLastError(1);if(t>>>=0,i>>>=0,s>>>=0,(s>>>=0)>0&&!i)return v.setLastError(1);if(!(t>=-1&&t<=2147483647||4294967295===t)||!r)return v.setLastError(1);var p=ee(v,r,t,n,o);if(0!==p.status)return v.setLastError(p.status);for(var g=p.f,y=void 0,h=new DataView(a.buffer),_=0;_>>=0;var A=h.getUint32(f+28,!0);if(E)y=P.UTF8ToString(E,-1);else{if(!w)return v.setLastError(4);if("string"!=typeof(y=d.handleStore.get(w).value)&&"symbol"!=typeof y)return v.setLastError(4)}1024&l?re(v,g,y,L,m,b,S,l,A):re(v,g.prototype,y,L,m,b,S,l,A)}return c=d.addToCurrentScope(g).id,u>>>=0,h.setUint32(u,c,!0),v.getReturnStatus()}catch(e){return v.tryCatch.setError(e),v.setLastError(10)}},napi_remove_wrap:function(e,r,t){return ne(e,r,t,1)},napi_type_tag_object:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!r)return n.setLastError(n.tryCatch.hasCaught()?10:1);var o=d.handleStore.get(r);if(!o.isObject()&&!o.isFunction())return n.setLastError(n.tryCatch.hasCaught()?10:2);if(!(t>>>=0))return n.setLastError(n.tryCatch.hasCaught()?10:1);var s=n.getObjectBinding(o.value);if(null!==s.tag)return n.setLastError(n.tryCatch.hasCaught()?10:1);var i=new Uint8Array(16);return i.set(new Uint8Array(a.buffer,t,16)),s.tag=new Uint32Array(i.buffer),n.getReturnStatus()}catch(e){return n.tryCatch.setError(e),n.setLastError(10)}},napi_unwrap:function(e,r,t){return ne(e,r,t,0)},napi_wrap:function(e,r,t,n,o,s){return function(e,r,t,n,o,s){var i;if(!e)return 1;var u=d.envStore.get(e);if(u.checkGCAccess(),!u.tryCatch.isEmpty())return u.setLastError(10);if(!u.canCallIntoJs())return u.setLastError(u.moduleApiVersion>=10?23:10);u.clearLastError();try{if(!d.feature.supportFinalizer){if(n)throw d.createNotSupportWeakRefError("napi_wrap",'Parameter "finalize_cb" must be 0(NULL)');if(s)throw d.createNotSupportWeakRefError("napi_wrap",'Parameter "result" must be 0(NULL)')}if(!r)return u.setLastError(1);var f=te(r);if(0!==f.status)return u.setLastError(f.status);var c=f.handle;if(0!==u.getObjectBinding(c.value).wrapped)return u.setLastError(1);var l=void 0;if(s){if(!n)return u.setLastError(1);l=d.createReferenceWithFinalizer(u,c.id,0,1,n,t,o),s>>>=0,i=l.id,new DataView(a.buffer).setUint32(s,i,!0)}else l=n?d.createReferenceWithFinalizer(u,c.id,0,0,n,t,o):d.createReferenceWithData(u,c.id,0,0,t);return u.getObjectBinding(c.value).wrapped=l.id,u.getReturnStatus()}catch(e){return u.tryCatch.setError(e),u.setLastError(10)}}(e,r,t,n,o,s)},node_api_post_finalizer:function(e,r,t,n){if(!e)return 1;var a=d.envStore.get(e);return a.enqueueFinalizer(d.createTrackedFinalizer(a,r,t,n)),a.clearLastError()}});function se(e,r,t,n,o,s,i){var u;if(!e)return 1;var f=d.envStore.get(e);if(f.checkGCAccess(),!f.tryCatch.isEmpty())return f.setLastError(10);if(!f.canCallIntoJs())return f.setLastError(f.moduleApiVersion>=10?23:10);f.clearLastError();try{if(!i)return f.setLastError(1);if(n>>>=0,i>>>=0,n>>>=0,(t>>>=0)||(n=0),n>2147483647)throw new RangeError("Cannot create a memory view larger than 2147483647 bytes");if(t+n>a.buffer.byteLength)throw new RangeError("Memory out of range");if(!d.feature.supportFinalizer&&o)throw d.createNotSupportWeakRefError("emnapi_create_memory_view",'Parameter "finalize_cb" must be 0(NULL)');var c=void 0;switch(r){case 0:c={Ctor:Int8Array,address:t,length:n,ownership:1,runtimeAllocated:0};break;case 1:c={Ctor:Uint8Array,address:t,length:n,ownership:1,runtimeAllocated:0};break;case 2:c={Ctor:Uint8ClampedArray,address:t,length:n,ownership:1,runtimeAllocated:0};break;case 3:c={Ctor:Int16Array,address:t,length:n>>1,ownership:1,runtimeAllocated:0};break;case 4:c={Ctor:Uint16Array,address:t,length:n>>1,ownership:1,runtimeAllocated:0};break;case 5:c={Ctor:Int32Array,address:t,length:n>>2,ownership:1,runtimeAllocated:0};break;case 6:c={Ctor:Uint32Array,address:t,length:n>>2,ownership:1,runtimeAllocated:0};break;case 7:c={Ctor:Float32Array,address:t,length:n>>2,ownership:1,runtimeAllocated:0};break;case 8:c={Ctor:Float64Array,address:t,length:n>>3,ownership:1,runtimeAllocated:0};break;case 9:c={Ctor:BigInt64Array,address:t,length:n>>3,ownership:1,runtimeAllocated:0};break;case 10:c={Ctor:BigUint64Array,address:t,length:n>>3,ownership:1,runtimeAllocated:0};break;case-1:c={Ctor:DataView,address:t,length:n,ownership:1,runtimeAllocated:0};break;case 11:if("function"!=typeof Float16Array)return f.setLastError(1);c={Ctor:Float16Array,address:t,length:n>>1,ownership:1,runtimeAllocated:0};break;case-2:if(!d.feature.Buffer)throw d.createNotSupportBufferError("emnapi_create_memory_view","");c={Ctor:d.feature.Buffer,address:t,length:n,ownership:1,runtimeAllocated:0};break;default:return f.setLastError(1)}var l=c.Ctor,v=-2===r?d.feature.Buffer.from(a.buffer,c.address,c.length):new l(a.buffer,c.address,c.length),p=d.addToCurrentScope(v);if(N.wasmMemoryViewTable.set(v,c),o){var g=ae(e,p.id,t,o,s,0);if(10===g){var y=f.tryCatch.extractException();throw f.clearLastError(),y}if(0!==g)return f.setLastError(g)}return u=p.id,new DataView(a.buffer).setUint32(i,u,!0),f.getReturnStatus()}catch(y){return f.tryCatch.setError(y),f.setLastError(10)}}function ie(e,r,t,n){var o;if(t=null!=t?t:0,t>>>=0,r instanceof ArrayBuffer||N.isSharedArrayBuffer(r)){if(!(i=N.getArrayBufferPointer(r,!1).address))throw new Error("Unknown ArrayBuffer address");if("number"==typeof n&&-1!==n&&4294967295!==n||(n=r.byteLength-t),0===(n>>>=0))return r;o=new Uint8Array(r,t,n);var s=new Uint8Array(a.buffer);return e?s.set(o,i):o.set(s.subarray(i,i+n)),r}if(ArrayBuffer.isView(r)){var i,u=N.getViewPointer(r,!1),f=u.view;if(!(i=u.address))throw new Error("Unknown ArrayBuffer address");if("number"==typeof n&&-1!==n&&4294967295!==n||(n=f.byteLength-t),0===(n>>>=0))return f;o=new Uint8Array(f.buffer,f.byteOffset+t,n);s=new Uint8Array(a.buffer);return e?s.set(o,i):o.set(s.subarray(i,i+n)),f}throw new TypeError("emnapiSyncMemory expect ArrayBuffer or ArrayBufferView as first parameter")}function ue(e){var r,t=e instanceof ArrayBuffer,n=e instanceof DataView,a=ArrayBuffer.isView(e)&&!n;if(!(t||a||n||N.isSharedArrayBuffer(e)))throw new TypeError("emnapiGetMemoryAddress expect ArrayBuffer or ArrayBufferView as first parameter");return{address:(r=t?N.getArrayBufferPointer(e,!1):N.getViewPointer(e,!1)).address,ownership:r.ownership,runtimeAllocated:r.runtimeAllocated}}var fe=Object.freeze({__proto__:null,$emnapiGetMemoryAddress:ue,$emnapiSyncMemory:ie,emnapi_create_memory_view:se,emnapi_get_memory_address:function(e,r,t,n,o){var s,i,u,f;if(!e)return 1;var c=d.envStore.get(e);if(c.checkGCAccess(),!c.tryCatch.isEmpty())return c.setLastError(10);if(!c.canCallIntoJs())return c.setLastError(c.moduleApiVersion>=10?23:10);c.clearLastError();try{if(!r)return c.setLastError(1);if(!t&&!n&&!o)return c.setLastError(1);s=(f=ue(c.ctx.handleStore.get(r).value)).address;var l=new DataView(a.buffer);return t&&(t>>>=0,l.setUint32(t,s,!0)),n&&(n>>>=0,u=f.ownership,l.setInt32(n,u,!0)),o&&(o>>>=0,i=f.runtimeAllocated,l.setInt8(o,i,!0)),c.getReturnStatus()}catch(e){return c.tryCatch.setError(e),c.setLastError(10)}},emnapi_get_runtime_version:function(e,r){if(!e)return 1;var t,n=d.envStore.get(e);if(!r)return n.setLastError(1);try{t=d.getRuntimeVersions().version}catch(e){return n.setLastError(9)}var o=t.split(".").map(function(e){return Number(e)});r>>>=0;var s=new DataView(a.buffer);return s.setUint32(r,o[0],!0),s.setUint32(r+4,o[1],!0),s.setUint32(r+8,o[2],!0),n.clearLastError()},emnapi_is_node_binding_available:function(){return v?1:0},emnapi_is_support_bigint:function(){return d.feature.supportBigInt?1:0},emnapi_is_support_weakref:function(){return d.feature.supportFinalizer?1:0},emnapi_sync_memory:function(e,r,t,n,o){var s;if(!e)return 1;var i=d.envStore.get(e);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!t)return i.setLastError(1);t>>>=0,n>>>=0,o>>>=0;var u=new DataView(a.buffer),f=u.getUint32(t,!0),c=i.ctx.handleStore.get(f);if(!(c.isArrayBuffer()||c.isTypedArray()||c.isDataView()||N.isSharedArrayBuffer(c.value)))return i.setLastError(1);var l=ie(Boolean(r),c.value,n,o);return c.value!==l&&(t>>>=0,s=i.ensureHandleId(l),u.setUint32(t,s,!0)),i.getReturnStatus()}catch(e){return i.tryCatch.setError(e),i.setLastError(10)}}});function ce(e,r,t){e>>>=0,e>>>=0;var n=t?new SharedArrayBuffer(e):new ArrayBuffer(e);if(r){r>>>=0;var o=N.getArrayBufferPointer(n,!0).address;new DataView(a.buffer).setUint32(r,o,!0)}return n}var le=Object.freeze({__proto__:null,napi_create_array:function(e,r){if(!e)return 1;var t=d.envStore.get(e);if(t.checkGCAccess(),!r)return t.setLastError(1);r>>>=0;var n=d.addToCurrentScope([]).id;return new DataView(a.buffer).setUint32(r,n,!0),t.clearLastError()},napi_create_array_with_length:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!t)return n.setLastError(1);r>>>=0,t>>>=0,r>>>=0;var o=d.addToCurrentScope(new Array(r)).id;return new DataView(a.buffer).setUint32(t,o,!0),n.clearLastError()},napi_create_arraybuffer:function(e,r,t,n){var o;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!n)return s.setLastError(1);n>>>=0;var i=ce(r,t,!1);return o=d.addToCurrentScope(i).id,new DataView(a.buffer).setUint32(n,o,!0),s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_create_buffer:function(e,r,t,n){var o,i,u;if(!e)return 1;var f=d.envStore.get(e);if(f.checkGCAccess(),!f.tryCatch.isEmpty())return f.setLastError(10);if(!f.canCallIntoJs())return f.setLastError(f.moduleApiVersion>=10?23:10);f.clearLastError();try{if(!n)return f.setLastError(1);var c=d.feature.Buffer;if(!c)throw d.createNotSupportBufferError("napi_create_buffer","");n>>>=0;var l=void 0;r>>>=0,r>>>=0;var v=new DataView(a.buffer);if(t&&0!==r){if(!(u=s(r)))throw new Error("Out of memory");u>>>=0,new Uint8Array(a.buffer).subarray(u,u+r).fill(0);var p=c.from(a.buffer,u,r),g={Ctor:c,address:u,length:r,ownership:N.registry?0:1,runtimeAllocated:1};N.wasmMemoryViewTable.set(p,g),null===(o=N.registry)||void 0===o||o.register(g,u),i=d.addToCurrentScope(p).id,v.setUint32(n,i,!0),t>>>=0,v.setUint32(t,u,!0)}else l=c.alloc(r),i=d.addToCurrentScope(l).id,v.setUint32(n,i,!0);return f.getReturnStatus()}catch(e){return f.tryCatch.setError(e),f.setLastError(10)}},napi_create_buffer_copy:function(e,r,t,n,o){var s;if(!e)return 1;var i=d.envStore.get(e);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!o)return i.setLastError(1);var u=d.feature.Buffer;if(!u)throw d.createNotSupportBufferError("napi_create_buffer_copy","");var f=ce(r,n,!1),c=u.from(f);return t>>>=0,r>>>=0,c.set(new Uint8Array(a.buffer).subarray(t,t+r)),s=d.addToCurrentScope(c).id,o>>>=0,new DataView(a.buffer).setUint32(o,s,!0),i.getReturnStatus()}catch(e){return i.tryCatch.setError(e),i.setLastError(10)}},napi_create_dataview:function(e,r,t,n,o){if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!t)return s.setLastError(1);if(!o)return s.setLastError(1);r>>>=0,n>>>=0,r>>>=0,n>>>=0;var i=d.handleStore.get(t).value;return i instanceof ArrayBuffer||N.isSharedArrayBuffer(i)?function(e){if(r+n>e.byteLength){var t=new RangeError("byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in");throw t.code="ERR_NAPI_INVALID_DATAVIEW_ARGS",t}var i=new DataView(e,n,r);e===a.buffer&&(N.wasmMemoryViewTable.has(i)||N.wasmMemoryViewTable.set(i,{Ctor:DataView,address:n,length:r,ownership:1,runtimeAllocated:0})),o>>>=0;var u=d.addToCurrentScope(i).id;return new DataView(a.buffer).setUint32(o,u,!0),s.getReturnStatus()}(i):s.setLastError(1)}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_create_date:function(e,r,t){var n;if(!e)return 1;var o=d.envStore.get(e);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{return t?(t>>>=0,n=d.addToCurrentScope(new Date(r)).id,new DataView(a.buffer).setUint32(t,n,!0),o.getReturnStatus()):o.setLastError(1)}catch(e){return o.tryCatch.setError(e),o.setLastError(10)}},napi_create_external:function(e,r,t,n,o){var s;if(!e)return 1;var i=d.envStore.get(e);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!o)return i.setLastError(1);if(!d.feature.supportFinalizer&&t)throw d.createNotSupportWeakRefError("napi_create_external",'Parameter "finalize_cb" must be 0(NULL)');var u=d.getCurrentScope().addExternal(r);return t&&d.createReferenceWithFinalizer(i,u.id,0,0,t,r,n),o>>>=0,s=u.id,new DataView(a.buffer).setUint32(o,s,!0),i.clearLastError()}catch(e){return i.tryCatch.setError(e),i.setLastError(10)}},napi_create_external_arraybuffer:function(e,r,t,n,o,s){var i;if(!e)return 1;var u=d.envStore.get(e);if(u.checkGCAccess(),!u.tryCatch.isEmpty())return u.setLastError(10);if(!u.canCallIntoJs())return u.setLastError(u.moduleApiVersion>=10?23:10);u.clearLastError();try{if(!s)return u.setLastError(1);if(t>>>=0,s>>>=0,t>>>=0,(r>>>=0)||(t=0),r+t>a.buffer.byteLength)throw new RangeError("Memory out of range");if(!d.feature.supportFinalizer&&n)throw d.createNotSupportWeakRefError("napi_create_external_arraybuffer",'Parameter "finalize_cb" must be 0(NULL)');var f=new ArrayBuffer(t);if(0===t)try{(new(0,d.feature.MessageChannel)).port1.postMessage(f,[f])}catch(e){}else new Uint8Array(f).set(new Uint8Array(a.buffer).subarray(r,r+t)),N.table.set(f,{address:r,ownership:1,runtimeAllocated:0});var c=d.addToCurrentScope(f);if(n){var l=ae(e,c.id,r,n,o,0);if(10===l){var v=u.tryCatch.extractException();throw u.clearLastError(),v}if(0!==l)return u.setLastError(l)}return i=c.id,new DataView(a.buffer).setUint32(s,i,!0),u.getReturnStatus()}catch(v){return u.tryCatch.setError(v),u.setLastError(10)}},napi_create_external_buffer:function(e,r,t,n,a,o){return se(e,-2,t,r,n,a,o)},napi_create_object:function(e,r){if(!e)return 1;var t=d.envStore.get(e);if(t.checkGCAccess(),!r)return t.setLastError(1);r>>>=0;var n=d.addToCurrentScope({}).id;return new DataView(a.buffer).setUint32(r,n,!0),t.clearLastError()},napi_create_symbol:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!t)return n.setLastError(1);t>>>=0;var o=new DataView(a.buffer);if(r){var s=d.handleStore.get(r).value;if("string"!=typeof s)return n.setLastError(3);var i=d.addToCurrentScope(Symbol(s)).id;o.setUint32(t,i,!0)}else{var u=d.addToCurrentScope(Symbol()).id;o.setUint32(t,u,!0)}return n.clearLastError()},napi_create_typedarray:function(e,r,t,n,o,s){var i;if(!e)return 1;var u=d.envStore.get(e);if(u.checkGCAccess(),!u.tryCatch.isEmpty())return u.setLastError(10);if(!u.canCallIntoJs())return u.setLastError(u.moduleApiVersion>=10?23:10);u.clearLastError();try{if(!n)return u.setLastError(1);if(!s)return u.setLastError(1);var f=d.handleStore.get(n);if(!f.isArrayBuffer())return u.setLastError(1);var c=f.value;o>>>=0,t>>>=0;var l=function(e,r,t,n,o,u){var f,c;if((o>>>=0,u>>>=0,t>1)&&o%t!==0)return(c=new RangeError("start offset of ".concat(null!==(f=r.name)&&void 0!==f?f:""," should be a multiple of ").concat(t))).code="ERR_NAPI_INVALID_TYPEDARRAY_ALIGNMENT",e.tryCatch.setError(c),e.setLastError(9);if(u*t+o>n.byteLength)return(c=new RangeError("Invalid typed array length")).code="ERR_NAPI_INVALID_TYPEDARRAY_LENGTH",e.tryCatch.setError(c),e.setLastError(9);var l=new r(n,o,u);return n===a.buffer&&(N.wasmMemoryViewTable.has(l)||N.wasmMemoryViewTable.set(l,{Ctor:r,address:o,length:u,ownership:1,runtimeAllocated:0})),s>>>=0,i=d.addToCurrentScope(l).id,new DataView(a.buffer).setUint32(s,i,!0),e.getReturnStatus()};switch(r){case 0:return l(u,Int8Array,1,c,o,t);case 1:return l(u,Uint8Array,1,c,o,t);case 2:return l(u,Uint8ClampedArray,1,c,o,t);case 3:return l(u,Int16Array,2,c,o,t);case 4:return l(u,Uint16Array,2,c,o,t);case 5:return l(u,Int32Array,4,c,o,t);case 6:return l(u,Uint32Array,4,c,o,t);case 7:return l(u,Float32Array,4,c,o,t);case 8:return l(u,Float64Array,8,c,o,t);case 9:return l(u,BigInt64Array,8,c,o,t);case 10:return l(u,BigUint64Array,8,c,o,t);case 11:return"function"!=typeof Float16Array?u.setLastError(1):l(u,Float16Array,2,c,o,t);default:return u.setLastError(1)}}catch(e){return u.tryCatch.setError(e),u.setLastError(10)}},node_api_create_buffer_from_arraybuffer:function(e,r,t,n,o){var s;if(!e)return 1;var i=d.envStore.get(e);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(!r)return i.setLastError(1);if(!o)return i.setLastError(1);t>>>=0,n>>>=0,t>>>=0,n>>>=0;var u=d.handleStore.get(r);if(!u.isArrayBuffer())return i.setLastError(1);var f=u.value;if(n+t>f.byteLength){var c=new RangeError("The byte offset + length is out of range");throw c.code="ERR_OUT_OF_RANGE",c}var l=d.feature.Buffer;if(!l)throw d.createNotSupportBufferError("node_api_create_buffer_from_arraybuffer","");var v=l.from(f,t,n);return f===a.buffer&&(N.wasmMemoryViewTable.has(v)||N.wasmMemoryViewTable.set(v,{Ctor:l,address:t,length:n,ownership:1,runtimeAllocated:0})),o>>>=0,s=d.addToCurrentScope(v).id,new DataView(a.buffer).setUint32(o,s,!0),i.getReturnStatus()}catch(c){return i.tryCatch.setError(c),i.setLastError(10)}},node_api_create_object_with_properties:function(e,r,t,n,o,s){if(!e)return 1;var i=d.envStore.get(e);if(i.checkGCAccess(),!s)return i.setLastError(1);if(o>>>=0,(o>>>=0)>0){if(!t)return i.setLastError(1);if(!n)return i.setLastError(1)}var u=r?d.handleStore.get(r).value:null,f={};t>>>=0,n>>>=0;for(var c,l=new DataView(a.buffer),v=0;v>>=0,l.setUint32(s,g,!0),i.clearLastError()},node_api_create_sharedarraybuffer:function(e,r,t,n){var o;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!n)return s.setLastError(1);n>>>=0;var i=ce(r,t,!0);return o=d.addToCurrentScope(i).id,new DataView(a.buffer).setUint32(n,o,!0),s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},node_api_symbol_for:function(e,r,t,n){if(!e)return 1;var o=d.envStore.get(e);if(o.checkGCAccess(),!n)return o.setLastError(1);r>>>=0,n>>>=0;var s=-1===(t>>>=0)||4294967295===t,i=t>>>0;if(0!==t&&!r)return o.setLastError(1);if(!(s||i<=2147483647))return o.setLastError(1);var u=P.UTF8ToString(r,t),f=d.addToCurrentScope(Symbol.for(u)).id;return new DataView(a.buffer).setUint32(n,f,!0),o.clearLastError()}});var de=Object.freeze({__proto__:null,napi_get_boolean:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!t)return n.setLastError(1);t>>>=0;var o=0===r?3:4;return new DataView(a.buffer).setUint32(t,o,!0),n.clearLastError()},napi_get_global:function(e,r){if(!e)return 1;var t=d.envStore.get(e);return t.checkGCAccess(),r?(r>>>=0,new DataView(a.buffer).setUint32(r,5,!0),t.clearLastError()):t.setLastError(1)},napi_get_null:function(e,r){if(!e)return 1;var t=d.envStore.get(e);return t.checkGCAccess(),r?(r>>>=0,new DataView(a.buffer).setUint32(r,2,!0),t.clearLastError()):t.setLastError(1)},napi_get_undefined:function(e,r){if(!e)return 1;var t=d.envStore.get(e);return t.checkGCAccess(),r?(r>>>=0,new DataView(a.buffer).setUint32(r,1,!0),t.clearLastError()):t.setLastError(1)}});var ve=Object.freeze({__proto__:null,napi_get_instance_data:function(e,r){if(!e)return 1;var t=d.envStore.get(e);if(!r)return t.setLastError(1);r>>>=0;var n=t.getInstanceData();return new DataView(a.buffer).setUint32(r,n,!0),t.clearLastError()},napi_set_instance_data:function(e,r,t,n){if(!e)return 1;var a=d.envStore.get(e);return r>>>=0,t>>>=0,n>>>=0,a.setInstanceData(r,t,n),a.clearLastError()}});var pe=Object.freeze({__proto__:null,_emnapi_get_last_error_info:function(e,r,t,n){r>>>=0,t>>>=0,n>>>=0;var o=d.envStore.get(e).lastError,s=o.errorCode,i=o.engineErrorCode>>>0,u=o.engineReserved;u>>>=0;var f=new DataView(a.buffer);f.setInt32(r,s,!0),f.setUint32(t,i,!0),f.setUint32(n,u,!0)},napi_create_error:function(e,r,t,n){if(!e)return 1;var o=d.envStore.get(e);if(o.checkGCAccess(),!t)return o.setLastError(1);if(!n)return o.setLastError(1);var s=d.handleStore.get(t).value;if("string"!=typeof s)return o.setLastError(3);var i=new Error(s);if(r){var u=d.handleStore.get(r).value;if("string"!=typeof u)return o.setLastError(3);i.code=u}n>>>=0;var f=d.addToCurrentScope(i).id;return new DataView(a.buffer).setUint32(n,f,!0),o.clearLastError()},napi_create_range_error:function(e,r,t,n){if(!e)return 1;var o=d.envStore.get(e);if(o.checkGCAccess(),!t)return o.setLastError(1);if(!n)return o.setLastError(1);var s=d.handleStore.get(t).value;if("string"!=typeof s)return o.setLastError(3);var i=new RangeError(s);if(r){var u=d.handleStore.get(r).value;if("string"!=typeof u)return o.setLastError(3);i.code=u}n>>>=0;var f=d.addToCurrentScope(i).id;return new DataView(a.buffer).setUint32(n,f,!0),o.clearLastError()},napi_create_type_error:function(e,r,t,n){if(!e)return 1;var o=d.envStore.get(e);if(o.checkGCAccess(),!t)return o.setLastError(1);if(!n)return o.setLastError(1);var s=d.handleStore.get(t).value;if("string"!=typeof s)return o.setLastError(3);var i=new TypeError(s);if(r){var u=d.handleStore.get(r).value;if("string"!=typeof u)return o.setLastError(3);i.code=u}n>>>=0;var f=d.addToCurrentScope(i).id;return new DataView(a.buffer).setUint32(n,f,!0),o.clearLastError()},napi_fatal_error:function(e,r,t,n){e>>>=0,r>>>=0,t>>>=0,n>>>=0;var a=P.UTF8ToString(e,r),o=P.UTF8ToString(t,n);v?v.napi.fatalError(a,o):l("FATAL ERROR: "+a+" "+o)},napi_fatal_exception:function(e,r){if(!e)return 1;var t=d.envStore.get(e);if(t.checkGCAccess(),!t.tryCatch.isEmpty())return t.setLastError(10);if(!t.canCallIntoJs())return t.setLastError(t.moduleApiVersion>=10?23:10);t.clearLastError();try{if(!r)return t.setLastError(1);var n=t.ctx.handleStore.get(r);try{t.triggerFatalException(n.value)}catch(e){return t.setLastError(9)}return t.clearLastError()}catch(r){return t.tryCatch.setError(r),t.setLastError(10)}},napi_get_and_clear_last_exception:function(e,r){if(!e)return 1;var t=d.envStore.get(e);if(t.checkGCAccess(),!r)return t.setLastError(1);r>>>=0;var n=new DataView(a.buffer);if(!t.tryCatch.hasCaught())return n.setUint32(r,1,!0),t.clearLastError();var o=t.tryCatch.exception(),s=t.ensureHandleId(o);return n.setUint32(r,s,!0),t.tryCatch.reset(),t.clearLastError()},napi_is_exception_pending:function(e,r){if(!e)return 1;var t=d.envStore.get(e);if(t.checkGCAccess(),!r)return t.setLastError(1);var n=t.tryCatch.hasCaught();return r>>>=0,new DataView(a.buffer).setInt8(r,n?1:0,!0),t.clearLastError()},napi_throw:function(e,r){if(!e)return 1;var t=d.envStore.get(e);if(t.checkGCAccess(),!t.tryCatch.isEmpty())return t.setLastError(10);if(!t.canCallIntoJs())return t.setLastError(t.moduleApiVersion>=10?23:10);t.clearLastError();try{return r?(t.tryCatch.setError(d.handleStore.get(r).value),t.clearLastError()):t.setLastError(1)}catch(e){return t.tryCatch.setError(e),t.setLastError(10)}},napi_throw_error:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!t)return n.setLastError(1);r>>>=0,t>>>=0;var a=new Error(P.UTF8ToString(t,-1));return r&&(a.code=P.UTF8ToString(r,-1)),n.tryCatch.setError(a),n.clearLastError()}catch(e){return n.tryCatch.setError(e),n.setLastError(10)}},napi_throw_range_error:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!t)return n.setLastError(1);r>>>=0,t>>>=0;var a=new RangeError(P.UTF8ToString(t,-1));return r&&(a.code=P.UTF8ToString(r,-1)),n.tryCatch.setError(a),n.clearLastError()}catch(e){return n.tryCatch.setError(e),n.setLastError(10)}},napi_throw_type_error:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!t)return n.setLastError(1);r>>>=0,t>>>=0;var a=new TypeError(P.UTF8ToString(t,-1));return r&&(a.code=P.UTF8ToString(r,-1)),n.tryCatch.setError(a),n.clearLastError()}catch(e){return n.tryCatch.setError(e),n.setLastError(10)}},node_api_create_syntax_error:function(e,r,t,n){if(!e)return 1;var o=d.envStore.get(e);if(o.checkGCAccess(),!t)return o.setLastError(1);if(!n)return o.setLastError(1);var s=d.handleStore.get(t).value;if("string"!=typeof s)return o.setLastError(3);var i=new SyntaxError(s);if(r){var u=d.handleStore.get(r).value;if("string"!=typeof u)return o.setLastError(3);i.code=u}n>>>=0;var f=d.addToCurrentScope(i).id;return new DataView(a.buffer).setUint32(n,f,!0),o.clearLastError()},node_api_throw_syntax_error:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!t)return n.setLastError(1);r>>>=0,t>>>=0;var a=new SyntaxError(P.UTF8ToString(t,-1));return r&&(a.code=P.UTF8ToString(r,-1)),n.tryCatch.setError(a),n.clearLastError()}catch(e){return n.tryCatch.setError(e),n.setLastError(10)}}});function ge(e,r,t,n,o,s){t>>>=0;var i=d.envStore.get(e),u=ee(i,r,t,n,o);if(0!==u.status)return i.setLastError(u.status);var f=u.f;s>>>=0;var c=d.addToCurrentScope(f).id;return new DataView(a.buffer).setUint32(s,c,!0),i.getReturnStatus()}var ye=Object.freeze({__proto__:null,_emnapi_create_function:ge,napi_call_function:function(e,r,t,n,o,s){var i,u=0;if(!e)return 1;var f=d.envStore.get(e);if(f.checkGCAccess(),!f.tryCatch.isEmpty())return f.setLastError(10);if(!f.canCallIntoJs())return f.setLastError(f.moduleApiVersion>=10?23:10);f.clearLastError();try{if(!r)return f.setLastError(1);if(n>>>=0,o>>>=0,s>>>=0,(n>>>=0)>0&&!o)return f.setLastError(1);var c=d.handleStore.get(r).value;if(!t)return f.setLastError(1);var l=d.handleStore.get(t).value;if("function"!=typeof l)return f.setLastError(1);for(var v=[],p=new DataView(a.buffer);u=10?23:10);s.clearLastError();try{return o&&n?ge(e,r,t,n,a,o):s.setLastError(1)}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_get_cb_info:function(e,r,t,n,o,s){if(!e)return 1;var i=d.envStore.get(e);if(!r)return i.setLastError(1);var u=d.scopeStore.get(r).callbackInfo;t>>>=0,n>>>=0;var f=new DataView(a.buffer);if(n){if(!t)return i.setLastError(1);var c=f.getUint32(t,!0);c>>>=0;for(var l=u.args.length,v=c>>=0;var y=i.ensureHandleId(u.thiz);f.setUint32(o,y,!0)}return s&&(s>>>=0,f.setUint32(s,u.data,!0)),i.clearLastError()},napi_get_new_target:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);t>>>=0;var o=d.scopeStore.get(r).callbackInfo,s=o.thiz,i=o.fn,u=null==s||null==s.constructor?0:s instanceof i?n.ensureHandleId(s.constructor):0;return new DataView(a.buffer).setUint32(t,u,!0),n.clearLastError()},napi_new_instance:function(e,r,t,n,o){var s,i;if(!e)return 1;var u=d.envStore.get(e);if(u.checkGCAccess(),!u.tryCatch.isEmpty())return u.setLastError(10);if(!u.canCallIntoJs())return u.setLastError(u.moduleApiVersion>=10?23:10);u.clearLastError();try{if(!r)return u.setLastError(1);if(t>>>=0,n>>>=0,o>>>=0,(t>>>=0)>0&&!n)return u.setLastError(1);if(!o)return u.setLastError(1);var f=d.handleStore.get(r).value;if("function"!=typeof f)return u.setLastError(1);var c=void 0,l=new DataView(a.buffer);if(d.feature.supportReflect){var v=Array(t);for(s=0;s>>=0,t>>>=0,d.addCleanupHook(n,r,t),0):n.setLastError(1)},napi_close_escapable_handle_scope:function(e,r){if(!e)return 1;var t=d.envStore.get(e);return t.checkGCAccess(),r?0===t.openHandleScopes?13:(d.closeScope(t),t.clearLastError()):t.setLastError(1)},napi_close_handle_scope:function(e,r){if(!e)return 1;var t=d.envStore.get(e);return t.checkGCAccess(),r?0===t.openHandleScopes?13:(d.closeScope(t),t.clearLastError()):t.setLastError(1)},napi_create_reference:function(e,r,t,n){if(!e)return 1;var o=d.envStore.get(e);if(o.checkGCAccess(),!r)return o.setLastError(1);if(!n)return o.setLastError(1);var s=d.handleStore.get(r);if(o.moduleApiVersion<10&&!(s.isObject()||s.isFunction()||s.isSymbol()))return o.setLastError(1);var i=d.createReference(o,s.id,t>>>0,1);return n>>>=0,new DataView(a.buffer).setUint32(n,i.id,!0),o.clearLastError()},napi_delete_reference:function(e,r){if(!e)return 1;var t=d.envStore.get(e);return r?(d.refStore.get(r).dispose(),t.clearLastError()):t.setLastError(1)},napi_escape_handle:function(e,r,t,n){if(!e)return 1;var o=d.envStore.get(e);if(o.checkGCAccess(),!r)return o.setLastError(1);if(!t)return o.setLastError(1);if(!n)return o.setLastError(1);var s=d.scopeStore.get(r);if(!s.escapeCalled()){t>>>=0,n>>>=0;var i=s.escape(t),u=i?i.id:0;return new DataView(a.buffer).setUint32(n,u,!0),o.clearLastError()}return o.setLastError(12)},napi_get_reference_value:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.refStore.get(r).get(n);return t>>>=0,new DataView(a.buffer).setUint32(t,o,!0),n.clearLastError()},napi_open_escapable_handle_scope:function(e,r){if(!e)return 1;var t=d.envStore.get(e);if(t.checkGCAccess(),!r)return t.setLastError(1);var n=d.openScope(t);return r>>>=0,new DataView(a.buffer).setUint32(r,n.id,!0),t.clearLastError()},napi_open_handle_scope:function(e,r){if(!e)return 1;var t=d.envStore.get(e);if(t.checkGCAccess(),!r)return t.setLastError(1);var n=d.openScope(t);return r>>>=0,new DataView(a.buffer).setUint32(r,n.id,!0),t.clearLastError()},napi_reference_ref:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);var o=d.refStore.get(r).ref();return t&&(t>>>=0,new DataView(a.buffer).setUint32(t,o,!0)),n.clearLastError()},napi_reference_unref:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);var o=d.refStore.get(r);if(0===o.refcount())return n.setLastError(9);var s=o.unref();return t&&(t>>>=0,new DataView(a.buffer).setUint32(t,s,!0)),n.clearLastError()},napi_remove_env_cleanup_hook:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);return r?(r>>>=0,t>>>=0,d.removeCleanupHook(n,r,t),0):n.setLastError(1)}});var _e=Object.freeze({__proto__:null,_emnapi_get_filename:function(e,r,t){var n=d.envStore.get(e).filename;return r?P.stringToUTF8(n,r,t):P.lengthBytesUTF8(n)}});var Ee=Object.freeze({__proto__:null,napi_create_promise:function(e,r,t){var n,o;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!r)return s.setLastError(1);if(!t)return s.setLastError(1);var i=new DataView(a.buffer),u=new Promise(function(e,t){var a=d.createDeferred({resolve:e,reject:t});n=a.id,r>>>=0,i.setUint32(r,n,!0)});return t>>>=0,o=d.addToCurrentScope(u).id,i.setUint32(t,o,!0),s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_is_promise:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);t>>>=0;var o=d.handleStore.get(r).isPromise()?1:0;return new DataView(a.buffer).setInt8(t,o,!0),n.clearLastError()},napi_reject_deferred:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{return r&&t?(d.deferredStore.get(r).reject(d.handleStore.get(t).value),n.getReturnStatus()):n.setLastError(1)}catch(e){return n.tryCatch.setError(e),n.setLastError(10)}},napi_resolve_deferred:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{return r&&t?(d.deferredStore.get(r).resolve(d.handleStore.get(t).value),n.getReturnStatus()):n.setLastError(1)}catch(e){return n.tryCatch.setError(e),n.setLastError(10)}}});function we(e,r,t,n,o,s){var i;if(!e)return 1;var u=d.envStore.get(e);if(u.checkGCAccess(),!u.tryCatch.isEmpty())return u.setLastError(10);if(!u.canCallIntoJs())return u.setLastError(u.moduleApiVersion>=10?23:10);u.clearLastError();try{if(!s)return u.setLastError(1);if(!r)return u.setLastError(1);var f=d.handleStore.get(r);if(null==f.value)throw new TypeError("Cannot convert undefined or null to object");var c=void 0;try{c=f.isObject()||f.isFunction()?f.value:Object(f.value)}catch(e){return u.setLastError(2)}if(0!==t&&1!==t)return u.setLastError(1);if(0!==o&&1!==o)return u.setLastError(1);var l=[],v=void 0,p=void 0,g=void 0,y=!0,h=/^(0|[1-9][0-9]*)$/;do{for(v=Object.getOwnPropertyNames(c),p=Object.getOwnPropertySymbols(c),g=0;g>>=0,i=d.addToCurrentScope(_).id,new DataView(a.buffer).setUint32(s,i,!0),u.getReturnStatus()}catch(e){return u.tryCatch.setError(e),u.setLastError(10)}}var Le=Object.freeze({__proto__:null,napi_define_properties:function(e,r,t,n){var o,s;if(!e)return 1;var i=d.envStore.get(e);if(i.checkGCAccess(),!i.tryCatch.isEmpty())return i.setLastError(10);if(!i.canCallIntoJs())return i.setLastError(i.moduleApiVersion>=10?23:10);i.clearLastError();try{if(n>>>=0,t>>>=0,(t>>>=0)>0&&!n)return i.setLastError(1);if(!r)return i.setLastError(1);var u=d.handleStore.get(r),f=u.value;if(!u.isObject()&&!u.isFunction())return i.setLastError(2);for(var c=void 0,l=new DataView(a.buffer),v=0;v>>=0;var w=l.getUint32(o+28,!0);if(p)c=P.UTF8ToString(p,-1);else{if(!g)return i.setLastError(4);if("string"!=typeof(c=d.handleStore.get(g).value)&&"symbol"!=typeof c)return i.setLastError(4)}re(i,f,c,y,h,_,E,s,w)}return i.getReturnStatus()}catch(e){return i.tryCatch.setError(e),i.setLastError(10)}},napi_delete_element:function(e,r,t,n){var o;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!r)return s.setLastError(1);var i=d.handleStore.get(r);if(!i.isObject()&&!i.isFunction())return s.setLastError(2);if(d.feature.supportReflect)o=Reflect.deleteProperty(i.value,t>>>0);else try{o=delete i.value[t>>>0]}catch(e){o=!1}if(n)n>>>=0,new DataView(a.buffer).setInt8(n,o?1:0,!0);return s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_delete_property:function(e,r,t,n){var o;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!t)return s.setLastError(1);if(!r)return s.setLastError(1);var i=d.handleStore.get(r);if(!i.isObject()&&!i.isFunction())return s.setLastError(2);var u=d.handleStore.get(t).value;if(d.feature.supportReflect)o=Reflect.deleteProperty(i.value,u);else try{o=delete i.value[u]}catch(e){o=!1}if(n)n>>>=0,new DataView(a.buffer).setInt8(n,o?1:0,!0);return s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_get_all_property_names:we,napi_get_element:function(e,r,t,n){var o;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!n)return s.setLastError(1);if(!r)return s.setLastError(1);var i=d.handleStore.get(r);if(null==i.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=i.isObject()||i.isFunction()?i.value:Object(i.value)}catch(e){return s.setLastError(2)}return n>>>=0,o=s.ensureHandleId(u[t>>>0]),new DataView(a.buffer).setUint32(n,o,!0),s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_get_named_property:function(e,r,t,n){var o;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!n)return s.setLastError(1);if(!r)return s.setLastError(1);if(!t)return s.setLastError(1);var i=d.handleStore.get(r);if(null==i.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=i.isObject()||i.isFunction()?i.value:Object(i.value)}catch(e){return s.setLastError(2)}return t>>>=0,n>>>=0,o=s.ensureHandleId(u[P.UTF8ToString(t,-1)]),new DataView(a.buffer).setUint32(n,o,!0),s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_get_property:function(e,r,t,n){var o;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!t)return s.setLastError(1);if(!n)return s.setLastError(1);if(!r)return s.setLastError(1);var i=d.handleStore.get(r);if(null==i.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=i.isObject()||i.isFunction()?i.value:Object(i.value)}catch(e){return s.setLastError(2)}return n>>>=0,o=s.ensureHandleId(u[d.handleStore.get(t).value]),new DataView(a.buffer).setUint32(n,o,!0),s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_get_property_names:function(e,r,t){return we(e,r,0,18,1,t)},napi_has_element:function(e,r,t,n){var o;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!n)return s.setLastError(1);if(!r)return s.setLastError(1);var i=d.handleStore.get(r);if(null==i.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=i.isObject()||i.isFunction()?i.value:Object(i.value)}catch(e){return s.setLastError(2)}return n>>>=0,o=t>>>0 in u?1:0,new DataView(a.buffer).setInt8(n,o,!0),s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_has_named_property:function(e,r,t,n){var o;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!n)return s.setLastError(1);if(!r)return s.setLastError(1);if(!t)return s.setLastError(1);var i=d.handleStore.get(r);if(null==i.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=i.isObject()||i.isFunction()?i.value:Object(i.value)}catch(e){return s.setLastError(2)}return t>>>=0,n>>>=0,o=P.UTF8ToString(t,-1)in u,new DataView(a.buffer).setInt8(n,o?1:0,!0),s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_has_own_property:function(e,r,t,n){var o;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!t)return s.setLastError(1);if(!n)return s.setLastError(1);if(!r)return s.setLastError(1);var i=d.handleStore.get(r);if(null==i.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=i.isObject()||i.isFunction()?i.value:Object(i.value)}catch(e){return s.setLastError(2)}var f=d.handleStore.get(t).value;return"string"!=typeof f&&"symbol"!=typeof f?s.setLastError(4):(o=Object.prototype.hasOwnProperty.call(u,d.handleStore.get(t).value),n>>>=0,new DataView(a.buffer).setInt8(n,o?1:0,!0),s.getReturnStatus())}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_has_property:function(e,r,t,n){var o;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!t)return s.setLastError(1);if(!n)return s.setLastError(1);if(!r)return s.setLastError(1);var i=d.handleStore.get(r);if(null==i.value)throw new TypeError("Cannot convert undefined or null to object");var u=void 0;try{u=i.isObject()||i.isFunction()?i.value:Object(i.value)}catch(e){return s.setLastError(2)}return n>>>=0,o=d.handleStore.get(t).value in u?1:0,new DataView(a.buffer).setInt8(n,o,!0),s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_object_freeze:function(e,r){if(!e)return 1;var t=d.envStore.get(e);if(t.checkGCAccess(),!t.tryCatch.isEmpty())return t.setLastError(10);if(!t.canCallIntoJs())return t.setLastError(t.moduleApiVersion>=10?23:10);t.clearLastError();try{if(!r)return t.setLastError(1);var n=d.handleStore.get(r),a=n.value;return n.isObject()||n.isFunction()?(Object.freeze(a),t.getReturnStatus()):t.setLastError(2)}catch(e){return t.tryCatch.setError(e),t.setLastError(10)}},napi_object_seal:function(e,r){if(!e)return 1;var t=d.envStore.get(e);if(t.checkGCAccess(),!t.tryCatch.isEmpty())return t.setLastError(10);if(!t.canCallIntoJs())return t.setLastError(t.moduleApiVersion>=10?23:10);t.clearLastError();try{if(!r)return t.setLastError(1);var n=d.handleStore.get(r),a=n.value;return n.isObject()||n.isFunction()?(Object.seal(a),t.getReturnStatus()):t.setLastError(2)}catch(e){return t.tryCatch.setError(e),t.setLastError(10)}},napi_set_element:function(e,r,t,n){if(!e)return 1;var a=d.envStore.get(e);if(a.checkGCAccess(),!a.tryCatch.isEmpty())return a.setLastError(10);if(!a.canCallIntoJs())return a.setLastError(a.moduleApiVersion>=10?23:10);a.clearLastError();try{if(!n)return a.setLastError(1);if(!r)return a.setLastError(1);var o=d.handleStore.get(r);return o.isObject()||o.isFunction()?(o.value[t>>>0]=d.handleStore.get(n).value,a.getReturnStatus()):a.setLastError(2)}catch(e){return a.tryCatch.setError(e),a.setLastError(10)}},napi_set_named_property:function(e,r,t,n){if(!e)return 1;var a=d.envStore.get(e);if(a.checkGCAccess(),!a.tryCatch.isEmpty())return a.setLastError(10);if(!a.canCallIntoJs())return a.setLastError(a.moduleApiVersion>=10?23:10);a.clearLastError();try{if(!n)return a.setLastError(1);if(!r)return a.setLastError(1);var o=d.handleStore.get(r);return o.isObject()||o.isFunction()?t?(t>>>=0,d.handleStore.get(r).value[P.UTF8ToString(t,-1)]=d.handleStore.get(n).value,a.getReturnStatus()):a.setLastError(1):a.setLastError(2)}catch(e){return a.tryCatch.setError(e),a.setLastError(10)}},napi_set_property:function(e,r,t,n){if(!e)return 1;var a=d.envStore.get(e);if(a.checkGCAccess(),!a.tryCatch.isEmpty())return a.setLastError(10);if(!a.canCallIntoJs())return a.setLastError(a.moduleApiVersion>=10?23:10);a.clearLastError();try{if(!t)return a.setLastError(1);if(!n)return a.setLastError(1);if(!r)return a.setLastError(1);var o=d.handleStore.get(r);return o.isObject()||o.isFunction()?(o.value[d.handleStore.get(t).value]=d.handleStore.get(n).value,a.getReturnStatus()):a.setLastError(2)}catch(e){return a.tryCatch.setError(e),a.setLastError(10)}}});var me=Object.freeze({__proto__:null,napi_run_script:function(e,r,t){var n,o;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!r)return s.setLastError(1);if(!t)return s.setLastError(1);var i=d.handleStore.get(r);if(!i.isString())return s.setLastError(3);var u=d.handleStore.get(5).value.eval(i.value);t>>>=0,o=s.ensureHandleId(u),new DataView(a.buffer).setUint32(t,o,!0),n=s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}return n}});var be=Object.freeze({__proto__:null,napi_coerce_to_bool:function(e,r,t){var n;if(!e)return 1;var o=d.envStore.get(e);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{if(!r)return o.setLastError(1);if(!t)return o.setLastError(1);var s=d.handleStore.get(r);return t>>>=0,n=s.value?4:3,new DataView(a.buffer).setUint32(t,n,!0),o.getReturnStatus()}catch(e){return o.tryCatch.setError(e),o.setLastError(10)}},napi_coerce_to_number:function(e,r,t){var n;if(!e)return 1;var o=d.envStore.get(e);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{if(!r)return o.setLastError(1);if(!t)return o.setLastError(1);var s=d.handleStore.get(r);if(s.isBigInt())throw new TypeError("Cannot convert a BigInt value to a number");return t>>>=0,n=d.addToCurrentScope(Number(s.value)).id,new DataView(a.buffer).setUint32(t,n,!0),o.getReturnStatus()}catch(e){return o.tryCatch.setError(e),o.setLastError(10)}},napi_coerce_to_object:function(e,r,t){var n;if(!e)return 1;var o=d.envStore.get(e);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{if(!r)return o.setLastError(1);if(!t)return o.setLastError(1);var s=d.handleStore.get(r);if(null==s.value)throw new TypeError("Cannot convert undefined or null to object");return t>>>=0,n=o.ensureHandleId(Object(s.value)),new DataView(a.buffer).setUint32(t,n,!0),o.getReturnStatus()}catch(e){return o.tryCatch.setError(e),o.setLastError(10)}},napi_coerce_to_string:function(e,r,t){var n;if(!e)return 1;var o=d.envStore.get(e);if(o.checkGCAccess(),!o.tryCatch.isEmpty())return o.setLastError(10);if(!o.canCallIntoJs())return o.setLastError(o.moduleApiVersion>=10?23:10);o.clearLastError();try{if(!r)return o.setLastError(1);if(!t)return o.setLastError(1);var s=d.handleStore.get(r);if(s.isSymbol())throw new TypeError("Cannot convert a Symbol value to a string");return t>>>=0,n=d.addToCurrentScope(String(s.value)).id,new DataView(a.buffer).setUint32(t,n,!0),o.getReturnStatus()}catch(e){return o.tryCatch.setError(e),o.setLastError(10)}},napi_detach_arraybuffer:function(e,r){if(!e)return 1;var t=d.envStore.get(e);if(t.checkGCAccess(),!r)return t.setLastError(1);var n=d.handleStore.get(r).value;if(!(n instanceof ArrayBuffer))return"function"==typeof SharedArrayBuffer&&n instanceof SharedArrayBuffer?t.setLastError(20):t.setLastError(19);try{(new(0,d.feature.MessageChannel)).port1.postMessage(n,[n])}catch(e){return t.setLastError(9)}return t.clearLastError()},napi_instanceof:function(e,r,t,n){var o;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!r)return s.setLastError(1);if(!n)return s.setLastError(1);if(!t)return s.setLastError(1);n>>>=0;var i=new DataView(a.buffer);i.setInt8(n,0,!0);var u=d.handleStore.get(t);return u.isFunction()?(o=d.handleStore.get(r).value instanceof u.value?1:0,i.setInt8(n,o,!0),s.getReturnStatus()):s.setLastError(5)}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_is_array:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);t>>>=0;var o=d.handleStore.get(r).isArray()?1:0;return new DataView(a.buffer).setInt8(t,o,!0),n.clearLastError()},napi_is_arraybuffer:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);t>>>=0;var o=d.handleStore.get(r).isArrayBuffer()?1:0;return new DataView(a.buffer).setInt8(t,o,!0),n.clearLastError()},napi_is_buffer:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);t>>>=0;var o=d.handleStore.get(r).isBuffer(d.feature.Buffer)?1:0;return new DataView(a.buffer).setInt8(t,o,!0),n.clearLastError()},napi_is_dataview:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);t>>>=0;var o=d.handleStore.get(r).isDataView()?1:0;return new DataView(a.buffer).setInt8(t,o,!0),n.clearLastError()},napi_is_date:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);t>>>=0;var o=d.handleStore.get(r).isDate()?1:0;return new DataView(a.buffer).setInt8(t,o,!0),n.clearLastError()},napi_is_detached_arraybuffer:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!n.tryCatch.isEmpty())return n.setLastError(10);if(!n.canCallIntoJs())return n.setLastError(n.moduleApiVersion>=10?23:10);n.clearLastError();try{if(!r)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(r);t>>>=0;var s=new DataView(a.buffer);if(o.isArrayBuffer()&&0===o.value.byteLength)try{new Uint8Array(o.value)}catch(e){return s.setInt8(t,1,!0),n.getReturnStatus()}return s.setInt8(t,0,!0),n.getReturnStatus()}catch(e){return n.tryCatch.setError(e),n.setLastError(10)}},napi_is_error:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);t>>>=0;var o=d.handleStore.get(r).value instanceof Error?1:0;return new DataView(a.buffer).setInt8(t,o,!0),n.clearLastError()},napi_is_typedarray:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);t>>>=0;var o=d.handleStore.get(r).isTypedArray()?1:0;return new DataView(a.buffer).setInt8(t,o,!0),n.clearLastError()},napi_strict_equals:function(e,r,t,n){var o;if(!e)return 1;var s=d.envStore.get(e);if(s.checkGCAccess(),!s.tryCatch.isEmpty())return s.setLastError(10);if(!s.canCallIntoJs())return s.setLastError(s.moduleApiVersion>=10?23:10);s.clearLastError();try{if(!r)return s.setLastError(1);if(!t)return s.setLastError(1);if(!n)return s.setLastError(1);var i=d.handleStore.get(r).value,u=d.handleStore.get(t).value;return n>>>=0,o=i===u?1:0,new DataView(a.buffer).setInt8(n,o,!0),s.getReturnStatus()}catch(e){return s.tryCatch.setError(e),s.setLastError(10)}},napi_typeof:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);var o,s=d.handleStore.get(r);if(t>>>=0,s.isNumber())o=3;else if(s.isBigInt())o=9;else if(s.isString())o=4;else if(s.isFunction())o=7;else if(s.isExternal())o=8;else if(s.isObject())o=6;else if(s.isBoolean())o=2;else if(s.isUndefined())o=0;else if(s.isSymbol())o=5;else{if(!s.isNull())return n.setLastError(1);o=1}return new DataView(a.buffer).setInt32(t,o,!0),n.clearLastError()},node_api_is_sharedarraybuffer:function(e,r,t){if(!e)return 1;var n=d.envStore.get(e);if(n.checkGCAccess(),!r)return n.setLastError(1);if(!t)return n.setLastError(1);var o=d.handleStore.get(r);t>>>=0;var s="function"==typeof SharedArrayBuffer&&o.value instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(o.value)?1:0;return new DataView(a.buffer).setInt8(t,s,!0),n.clearLastError()}});var Se=Object.freeze({__proto__:null,napi_get_version:function(e,r){if(!e)return 1;var t=d.envStore.get(e);return r?(new DataView(a.buffer).setUint32(r,10,!0),t.clearLastError()):t.setLastError(1)}});function Ae(e){for(var r=Object.keys(e),t=0;t>>=0,u>>>=0,e>>>=0,f>>>=0,c>>>=0,l>>>=0,v>>>=0,o>>>=0,0===(u>>>=0))return g.setLastError(1);if(!p)return g.setLastError(1);var y,h=0;if(r>>>=0){if("function"!=typeof d.handleStore.get(r).value)return g.setLastError(1);h=d.createReference(g,r,1,1).id}else if(!v)return g.setLastError(1);if(t){if(null==(y=d.handleStore.get(t).value))return g.setLastError(2);y=Object(y)}else y={};var _=g.ensureHandleId(y),E=d.handleStore.get(n).value;if("symbol"==typeof E)return g.setLastError(3);E=String(E);var w=g.ensureHandleId(E),L=G.offset.__size__,m=s(L);if(!m)return g.setLastError(9);m>>>=0,new Uint8Array(a.buffer).subarray(m,m+L).fill(0);var b=d.createReference(g,_,1,1),S=b.id,A=new DataView(a.buffer);return A.setUint32(m+G.offset.resource,S,!0),G.initQueue(m)?(R(_,w,-1,m+G.offset.async_id),A.setInt8(m+G.offset.is_some,1,!0),A.setUint32(m+G.offset.thread_count,u,!0),A.setUint32(m+G.offset.context,l,!0),A.setUint32(m+G.offset.max_queue_size,o,!0),A.setUint32(m+G.offset.ref,h,!0),A.setUint32(m+G.offset.env,e,!0),A.setUint32(m+G.offset.finalize_data,f,!0),A.setUint32(m+G.offset.finalize_cb,c,!0),A.setUint32(m+G.offset.call_js_cb,v,!0),d.addCleanupHook(g,G.cleanup,m),G._liveSet.add(m),g.ref(),d.increaseWaitingRequestCounter(),A.setUint32(m+G.offset.async_ref,1,!0),p>>>=0,A.setUint32(p,m,!0),g.clearLastError()):(i(m),b.dispose(),g.setLastError(9))},g.imports.napi.napi_get_threadsafe_function_context=function(e,r){if(!e||!r)return l(),1;e>>>=0,r>>>=0;var t=G.getContext(e);return new DataView(a.buffer).setUint32(r,t,!0),0},g.imports.napi.napi_call_threadsafe_function=function(e,r,t){return e?(e>>>=0,r>>>=0,G.push(e,r,t)):(l(),1)},g.imports.napi.napi_acquire_threadsafe_function=function(e){return e?(e>>>=0,G.getMutex(e).execute(function(){return 0===G.getState(e)?(G.addThreadCount(e),0):16})):(l(),1)},g.imports.napi.napi_release_threadsafe_function=function(e,r){if(!e)return l(),1;e>>>=0;var t=G.getMutex(e),n=G.getCond(e),a=!1,o=t.execute(function(){return 0===G.getThreadCount(e)?1:(G.subThreadCount(e),0!==G.getThreadCount(e)&&1!==r||0===G.getState(e)&&(1===r&&G.setState(e,1),1===G.getState(e)&&G.getMaxQueueSize(e)>0&&n.signal(),G.send(e)),2!==G.getState(e)||0!==G.getThreadCount(e)||(a=!0),0)});return a&&G.destroy(e),o},g.imports.napi.napi_unref_threadsafe_function=function(e,r){if(!r)return l(),1;var t=(r>>>=0)+G.offset.async_ref>>>2,n=new Uint32Array(a.buffer),o=Atomics.load(n,t);return o>0&&(Atomics.store(n,t,o-1),1===o&&d.decreaseWaitingRequestCounter()),0},g.imports.napi.napi_ref_threadsafe_function=function(e,r){if(!r)return l(),1;var t=(r>>>=0)+G.offset.async_ref>>>2,n=new Uint32Array(a.buffer),o=Atomics.load(n,t);return o||d.increaseWaitingRequestCounter(),Atomics.store(n,t,o+1),0},g}();return t}function i(e,t,n,a){const o=(a=null!=a?a:{}).getMemory,i=a.getTable,f=a.beforeInit;if(null!=o&&"function"!=typeof o)throw new TypeError("options.getMemory is not a function");if(null!=i&&"function"!=typeof i)throw new TypeError("options.getTable is not a function");if(null!=f&&"function"!=typeof f)throw new TypeError("options.beforeInit is not a function");let c;const l="object"==typeof t&&null!==t;if(l){if(t.loaded)throw new Error("napiModule has already loaded");c=t}else c=s(a);const d=a.wasi;let v,p={env:c.imports.env,napi:c.imports.napi,emnapi:c.imports.emnapi};d&&(v=new r(c.childThread?{wasi:d,childThread:!0,postMessage:c.postMessage}:{wasi:d,threadManager:c.PThread,waitThreadStart:c.waitThreadStart}),Object.assign(p,"function"==typeof d.getImportObject?d.getImportObject():{wasi_snapshot_preview1:d.wasiImport}),Object.assign(p,v.getImportObject()));const g=a.overwriteImports;if("function"==typeof g){const e=g(p);"object"==typeof e&&null!==e&&(p=e)}return e(n,p,(r,t)=>{if(r)throw r;const n=t.instance;let a=n;const s=n.exports,g="memory"in s,y="memory"in p.env,h=o?o(s):g?s.memory:y?p.env.memory:void 0;if(!h)throw new Error("memory is neither exported nor imported");const _=i?i(s):s.__indirect_function_table;if(d&&!g){const e=Object.create(null);Object.assign(e,s,{memory:h}),a={exports:e}}const E=t.module;d?a=v.initialize(a,E,h):c.PThread.setup(E,h);const w=()=>{f&&f({instance:n,module:E}),c.init({instance:a,module:E,memory:h,table:_});const e={instance:n,module:E,usedInstance:a};return l||(e.napiModule=c),e};if(c.PThread.shouldPreloadWorkers()){const r=c.PThread.loadWasmModuleToAllWorkers();if(e===u)return r.then(w);throw new Error("Synchronous loading is not supported with worker pool (reuseWorker.size > 0)")}return w()})}function u(e,r,t){return o(e,r).then(e=>t(null,e),e=>t(e))}function f(e,r,t){let o;try{o=function(e,r){if(!e)throw new TypeError("Invalid wasm source");let t;if(a(r),r=null!=r?r:{},e instanceof ArrayBuffer||ArrayBuffer.isView(e))t=new n.Module(e);else{if(!(e instanceof WebAssembly.Module))throw new TypeError("Invalid wasm source");t=e}return{instance:new n.Instance(t,r),module:t}}(e,r)}catch(e){return t(e)}return t(null,o)}function c(e,r,t){if("object"!=typeof e||null===e)throw new TypeError("Invalid napiModule");return i(u,e,r,t)}function l(e,r,t){if("object"!=typeof e||null===e)throw new TypeError("Invalid napiModule");return i(f,e,r,t)}function d(e,r){return i(u,void 0,e,r)}function v(e,r){return i(f,void 0,e,r)}class p extends t{constructor(e){if("function"!=typeof e.onLoad)throw new TypeError("options.onLoad is not a function");const r=e.onError;super({...e,onError:(e,t)=>{var n;const a=null===(n=this.instance)||void 0===n?void 0:n.exports.emnapi_thread_crashed;if("function"==typeof a&&a(),"function"!=typeof r)throw e;r(e,t)}}),this.napiModule=void 0}instantiate(e){const r=this.onLoad(e);return"function"==typeof r.then?r.then(e=>(this.napiModule=e.napiModule,e)):(this.napiModule=r.napiModule,r)}handle(e){var r;if(super.handle(e),null===(r=null==e?void 0:e.data)||void 0===r?void 0:r.__emnapi__){const r=e.data.__emnapi__.type,t=e.data.__emnapi__.payload;try{"async-worker-init"===r&&this.handleAfterLoad(e,()=>{this.napiModule.initWorker(t.arg,t.func)})}catch(e){this.onError(e,r)}}}}const g="1.10.0";export{p as MessageHandler,s as createNapiModule,d as instantiateNapiModule,v as instantiateNapiModuleSync,c as loadNapiModule,l as loadNapiModuleSync,g as version}; diff --git a/node_modules/@emnapi/core/dist/emnapi-core.mjs b/node_modules/@emnapi/core/dist/emnapi-core.mjs new file mode 100644 index 00000000..b750c26c --- /dev/null +++ b/node_modules/@emnapi/core/dist/emnapi-core.mjs @@ -0,0 +1,7386 @@ +import { ThreadManager, WASIThreads, ThreadMessageHandler } from '@emnapi/wasi-threads'; +export * from '@emnapi/wasi-threads'; + +const _WebAssembly = typeof WebAssembly !== 'undefined' + ? WebAssembly + : typeof WXWebAssembly !== 'undefined' + ? WXWebAssembly + : undefined; +function validateImports(imports) { + if (imports && typeof imports !== 'object') { + throw new TypeError('imports must be an object or undefined'); + } + return true; +} +function load(wasmInput, imports) { + if (!wasmInput) + throw new TypeError('Invalid wasm source'); + validateImports(imports); + imports = imports !== null && imports !== void 0 ? imports : {}; + try { + const then = typeof wasmInput === 'object' && wasmInput !== null && 'then' in wasmInput ? wasmInput.then : undefined; + if (typeof then === 'function') { + return then.call(wasmInput, (input) => load(input, imports)); + } + } + catch (_) { } + if (wasmInput instanceof ArrayBuffer || ArrayBuffer.isView(wasmInput)) { + return _WebAssembly.instantiate(wasmInput, imports); + } + if (wasmInput instanceof _WebAssembly.Module) { + return _WebAssembly.instantiate(wasmInput, imports).then((instance) => { + return { instance, module: wasmInput }; + }); + } + if (typeof Response !== 'undefined' && wasmInput instanceof Response) { + return wasmInput.arrayBuffer().then(buffer => { + return _WebAssembly.instantiate(buffer, imports); + }); + } + const inputIsString = typeof wasmInput === 'string'; + if (inputIsString || (typeof URL !== 'undefined' && wasmInput instanceof URL)) { + if (inputIsString && typeof wx !== 'undefined' && typeof __wxConfig !== 'undefined') { + return _WebAssembly.instantiate(wasmInput, imports); + } + if (typeof fetch !== 'function') { + throw new TypeError('wasm source can not be a string or URL in this environment'); + } + if (typeof _WebAssembly.instantiateStreaming === 'function') { + try { + return _WebAssembly.instantiateStreaming(fetch(wasmInput), imports).catch(() => { + return load(fetch(wasmInput), imports); + }); + } + catch (_) { + return load(fetch(wasmInput), imports); + } + } + else { + return load(fetch(wasmInput), imports); + } + } + throw new TypeError('Invalid wasm source'); +} +function loadSync(wasmInput, imports) { + if (!wasmInput) + throw new TypeError('Invalid wasm source'); + validateImports(imports); + imports = imports !== null && imports !== void 0 ? imports : {}; + let module; + if ((wasmInput instanceof ArrayBuffer) || ArrayBuffer.isView(wasmInput)) { + module = new _WebAssembly.Module(wasmInput); + } + else if (wasmInput instanceof WebAssembly.Module) { + module = wasmInput; + } + else { + throw new TypeError('Invalid wasm source'); + } + const instance = new _WebAssembly.Instance(module, imports); + const source = { instance, module }; + return source; +} + +function createNapiModule(options) { + var napiModule = (function () { + var ENVIRONMENT_IS_NODE = typeof process === 'object' && process !== null && typeof process.versions === 'object' && process.versions !== null && typeof process.versions.node === 'string'; + var ENVIRONMENT_IS_PTHREAD = Boolean(options.childThread); + var waitThreadStart = typeof options.waitThreadStart === 'number' ? options.waitThreadStart : Boolean(options.waitThreadStart); + var wasmInstance; + var wasmMemory; + var wasmTable; + var _malloc; + var _free; + function abort(msg) { + if (typeof _WebAssembly.RuntimeError === 'function') { + throw new _WebAssembly.RuntimeError(msg); + } + throw Error(msg); + } + var napiModule = { + imports: { + env: {}, + napi: {}, + emnapi: {} + }, + exports: {}, + emnapi: {}, + loaded: false, + filename: '', + childThread: ENVIRONMENT_IS_PTHREAD, + initWorker: undefined, + waitThreadStart: waitThreadStart, + PThread: undefined, + init: function (options) { + if (napiModule.loaded) + return napiModule.exports; + if (!options) + throw new TypeError('Invalid napi init options'); + var instance = options.instance; + if (!(instance === null || instance === void 0 ? void 0 : instance.exports)) + throw new TypeError('Invalid wasm instance'); + wasmInstance = instance; + var exports$1 = instance.exports; + var module = options.module; + var memory = options.memory || exports$1.memory; + var table = options.table || exports$1.__indirect_function_table; + if (!(module instanceof _WebAssembly.Module)) + throw new TypeError('Invalid wasm module'); + if (!(memory instanceof _WebAssembly.Memory)) + throw new TypeError('Invalid wasm memory'); + if (!(table instanceof _WebAssembly.Table)) + throw new TypeError('Invalid wasm table'); + wasmMemory = memory; + wasmTable = table; + if (typeof exports$1.malloc !== 'function') + throw new TypeError('malloc is not exported'); + if (typeof exports$1.free !== 'function') + throw new TypeError('free is not exported'); + _malloc = exports$1.malloc; + _free = exports$1.free; + if (!napiModule.childThread) { + var moduleApiVersion = 8; + var node_api_module_get_api_version_v1 = instance.exports.node_api_module_get_api_version_v1; + if (typeof node_api_module_get_api_version_v1 === 'function') { + moduleApiVersion = node_api_module_get_api_version_v1(); + } + var envObject = napiModule.envObject || (napiModule.envObject = emnapiCtx.createEnv(napiModule.filename, moduleApiVersion, function (cb) { return (wasmTable.get(cb)); }, function (cb) { return (wasmTable.get(cb)); }, abort, emnapiNodeBinding)); + var scope_1 = emnapiCtx.openScope(envObject); + try { + envObject.callIntoModule(function (_envObject) { + var exports$1 = napiModule.exports; + var exportsHandle = scope_1.add(exports$1); + var napi_register_wasm_v1 = instance.exports.napi_register_wasm_v1; + var napiValue = napi_register_wasm_v1(_envObject.id, exportsHandle.id); + napiModule.exports = (!napiValue) ? exports$1 : emnapiCtx.handleStore.get(napiValue).value; + }); + } + catch (e) { + if (e !== 'unwind') { + throw e; + } + } + finally { + emnapiCtx.closeScope(envObject, scope_1); + } + napiModule.loaded = true; + delete napiModule.envObject; + return napiModule.exports; + } + } + }; + var emnapiCtx; + var emnapiNodeBinding; + var onCreateWorker = undefined; + var err; + if (!ENVIRONMENT_IS_PTHREAD) { + var context = options.context; + if (typeof context !== 'object' || context === null) { + throw new TypeError("Invalid `options.context`. Use `import { getDefaultContext } from '@emnapi/runtime'`"); + } + emnapiCtx = context; + } + else { + emnapiCtx = options === null || options === void 0 ? void 0 : options.context; + var postMsg = typeof options.postMessage === 'function' + ? options.postMessage + : typeof postMessage === 'function' + ? postMessage + : undefined; + if (typeof postMsg !== 'function') { + throw new TypeError('No postMessage found'); + } + napiModule.postMessage = postMsg; + } + if (typeof options.filename === 'string') { + napiModule.filename = options.filename; + } + if (typeof options.onCreateWorker === 'function') { + onCreateWorker = options.onCreateWorker; + } + if (typeof options.print === 'function') { + options.print; + } + else { + console.log.bind(console); + } + if (typeof options.printErr === 'function') { + err = options.printErr; + } + else { + err = console.warn.bind(console); + } + if ('nodeBinding' in options) { + var nodeBinding = options.nodeBinding; + if (typeof nodeBinding !== 'object' || nodeBinding === null) { + throw new TypeError('Invalid `options.nodeBinding`. Use @emnapi/node-binding package'); + } + emnapiNodeBinding = nodeBinding; + } + var emnapiAsyncWorkPoolSize = 0; + if ('asyncWorkPoolSize' in options) { + if (typeof options.asyncWorkPoolSize !== 'number') { + throw new TypeError('options.asyncWorkPoolSize must be a integer'); + } + emnapiAsyncWorkPoolSize = options.asyncWorkPoolSize >> 0; + if (emnapiAsyncWorkPoolSize > 1024) { + emnapiAsyncWorkPoolSize = 1024; + } + else if (emnapiAsyncWorkPoolSize < -1024) { + emnapiAsyncWorkPoolSize = -1024; + } + } + var singleThreadAsyncWork = ENVIRONMENT_IS_PTHREAD ? false : (emnapiAsyncWorkPoolSize <= 0); + function _emnapi_async_work_pool_size() { + return Math.abs(emnapiAsyncWorkPoolSize); + } + napiModule.imports.env._emnapi_async_work_pool_size = _emnapi_async_work_pool_size; + function emnapiAddSendListener(worker) { + if (!worker) + return false; + if (worker._emnapiSendListener) + return true; + var handler = function (e) { + var data = ENVIRONMENT_IS_NODE ? e : e.data; + var __emnapi__ = data.__emnapi__; + if (__emnapi__ && __emnapi__.type === 'async-send') { + if (ENVIRONMENT_IS_PTHREAD) { + var postMessage_1 = napiModule.postMessage; + postMessage_1({ __emnapi__: __emnapi__ }); + } + else { + var callback = __emnapi__.payload.callback; + (wasmTable.get(callback))(__emnapi__.payload.data); + } + } + }; + var dispose = function () { + if (ENVIRONMENT_IS_NODE) { + worker.off('message', handler); + } + else { + worker.removeEventListener('message', handler, false); + } + delete worker._emnapiSendListener; + }; + worker._emnapiSendListener = { handler: handler, dispose: dispose }; + if (ENVIRONMENT_IS_NODE) { + worker.on('message', handler); + } + else { + worker.addEventListener('message', handler, false); + } + return true; + } + napiModule.emnapi.addSendListener = emnapiAddSendListener; + var PThread = new ThreadManager(ENVIRONMENT_IS_PTHREAD + ? { + printErr: err, + childThread: true + } + : { + printErr: err, + beforeLoad: function (worker) { + emnapiAddSendListener(worker); + }, + reuseWorker: options.reuseWorker, + onCreateWorker: onCreateWorker + }); + napiModule.PThread = PThread; + function napi_set_last_error(env, error_code, engine_error_code, engine_reserved) { + var envObject = emnapiCtx.envStore.get(env); + return envObject.setLastError(error_code, engine_error_code, engine_reserved); + } + function napi_clear_last_error(env) { + var envObject = emnapiCtx.envStore.get(env); + return envObject.clearLastError(); + } + function _emnapi_get_node_version(major, minor, patch) { + major >>>= 0; + minor >>>= 0; + patch >>>= 0; + var versions = (typeof process === 'object' && process !== null && + typeof process.versions === 'object' && process.versions !== null && + typeof process.versions.node === 'string') + ? process.versions.node.split('.').map(function (n) { return Number(n); }) + : [0, 0, 0]; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(major, versions[0], true); + HEAP_DATA_VIEW.setUint32(minor, versions[1], true); + HEAP_DATA_VIEW.setUint32(patch, versions[2], true); + } + function _emnapi_runtime_keepalive_push() { + } + function _emnapi_runtime_keepalive_pop() { + } + function _emnapi_set_immediate(callback, data) { + emnapiCtx.feature.setImmediate(function () { + (wasmTable.get(callback))(data); + }); + } + function _emnapi_next_tick(callback, data) { + Promise.resolve().then(function () { + (wasmTable.get(callback))(data); + }); + } + function _emnapi_callback_into_module(forceUncaught, env, callback, data, close_scope_if_throw) { + var envObject = emnapiCtx.envStore.get(env); + var scope = emnapiCtx.openScope(envObject); + try { + envObject.callbackIntoModule(Boolean(forceUncaught), function () { + (wasmTable.get(callback))(env, data); + }); + } + catch (err) { + emnapiCtx.closeScope(envObject, scope); + if (close_scope_if_throw) { + emnapiCtx.closeScope(envObject); + } + throw err; + } + emnapiCtx.closeScope(envObject, scope); + } + function _emnapi_call_finalizer(forceUncaught, env, callback, data, hint) { + var envObject = emnapiCtx.envStore.get(env); + callback >>>= 0; + envObject.callFinalizerInternal(forceUncaught, callback, data, hint); + } + function _emnapi_ctx_increase_waiting_request_counter() { + emnapiCtx.increaseWaitingRequestCounter(); + } + function _emnapi_ctx_decrease_waiting_request_counter() { + emnapiCtx.decreaseWaitingRequestCounter(); + } + function _emnapi_is_main_runtime_thread() { + return ENVIRONMENT_IS_PTHREAD ? 0 : 1; + } + function _emnapi_is_main_browser_thread() { + return (typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE) ? 1 : 0; + } + function _emnapi_unwind() { + throw 'unwind'; + } + function _emnapi_get_now() { + return performance.timeOrigin + performance.now(); + } + function $emnapiSetValueI64(result, numberValue) { + var tempDouble; + var tempI64 = [ + numberValue >>> 0, + (tempDouble = numberValue, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) + ]; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt32(result, tempI64[0], true); + HEAP_DATA_VIEW.setInt32(result + 4, tempI64[1], true); + } + function _emnapi_open_handle_scope() { + return emnapiCtx.openScope().id; + } + function _emnapi_close_handle_scope(_scope) { + return emnapiCtx.closeScope(); + } + var utilMod = Object.freeze({ + __proto__: null, + $emnapiSetValueI64: $emnapiSetValueI64, + _emnapi_call_finalizer: _emnapi_call_finalizer, + _emnapi_callback_into_module: _emnapi_callback_into_module, + _emnapi_close_handle_scope: _emnapi_close_handle_scope, + _emnapi_ctx_decrease_waiting_request_counter: _emnapi_ctx_decrease_waiting_request_counter, + _emnapi_ctx_increase_waiting_request_counter: _emnapi_ctx_increase_waiting_request_counter, + _emnapi_get_node_version: _emnapi_get_node_version, + _emnapi_get_now: _emnapi_get_now, + _emnapi_is_main_browser_thread: _emnapi_is_main_browser_thread, + _emnapi_is_main_runtime_thread: _emnapi_is_main_runtime_thread, + _emnapi_next_tick: _emnapi_next_tick, + _emnapi_open_handle_scope: _emnapi_open_handle_scope, + _emnapi_runtime_keepalive_pop: _emnapi_runtime_keepalive_pop, + _emnapi_runtime_keepalive_push: _emnapi_runtime_keepalive_push, + _emnapi_set_immediate: _emnapi_set_immediate, + _emnapi_unwind: _emnapi_unwind, + napi_clear_last_error: napi_clear_last_error, + napi_set_last_error: napi_set_last_error + }); + function emnapiGetWorkerByPthreadPtr(pthreadPtr) { + var view = new DataView(wasmMemory.buffer); + var tidOffset = 20; + var tid = view.getInt32(pthreadPtr + tidOffset, true); + var worker = PThread.pthreads[tid]; + return worker; + } + function _emnapi_worker_ref(pthreadPtr) { + if (ENVIRONMENT_IS_PTHREAD) + return; + pthreadPtr >>>= 0; + var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr); + if (worker && typeof worker.ref === 'function') { + worker.ref(); + } + } + function _emnapi_worker_unref(pthreadPtr) { + if (ENVIRONMENT_IS_PTHREAD) + return; + pthreadPtr >>>= 0; + var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr); + if (worker && typeof worker.unref === 'function') { + worker.unref(); + } + } + function _emnapi_async_send_js(type, callback, data) { + if (ENVIRONMENT_IS_PTHREAD) { + var postMessage_1 = napiModule.postMessage; + postMessage_1({ + __emnapi__: { + type: 'async-send', + payload: { + callback: callback, + data: data + } + } + }); + } + else { + switch (type) { + case 0: + _emnapi_set_immediate(callback, data); + break; + case 1: + _emnapi_next_tick(callback, data); + break; + } + } + } + var uvThreadpoolReadyResolve; + var uvThreadpoolReady = new Promise(function (resolve) { + uvThreadpoolReadyResolve = function () { + uvThreadpoolReady.ready = true; + resolve(); + }; + }); + uvThreadpoolReady.ready = false; + function _emnapi_after_uvthreadpool_ready(callback, q, type) { + if (uvThreadpoolReady.ready) { + (wasmTable.get(callback))(q, type); + } + else { + uvThreadpoolReady.then(function () { + (wasmTable.get(callback))(q, type); + }); + } + } + function _emnapi_tell_js_uvthreadpool(threads, size) { + var p = []; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + var _loop_1 = function (i) { + var pthreadPtr = HEAP_DATA_VIEW.getUint32(threads + i * 4, true); + var worker = emnapiGetWorkerByPthreadPtr(pthreadPtr); + p.push(new Promise(function (resolve) { + var handler = function (e) { + var data = ENVIRONMENT_IS_NODE ? e : e.data; + var __emnapi__ = data.__emnapi__; + if (__emnapi__ && __emnapi__.type === 'async-thread-ready') { + resolve(); + if (worker && typeof worker.unref === 'function') { + worker.unref(); + } + if (ENVIRONMENT_IS_NODE) { + worker.off('message', handler); + } + else { + worker.removeEventListener('message', handler); + } + } + }; + if (ENVIRONMENT_IS_NODE) { + worker.on('message', handler); + } + else { + worker.addEventListener('message', handler); + } + })); + }; + for (var i = 0; i < size; i++) { + _loop_1(i); + } + Promise.all(p).then(uvThreadpoolReadyResolve); + } + function _emnapi_emit_async_thread_ready() { + if (!ENVIRONMENT_IS_PTHREAD) + return; + var postMessage = napiModule.postMessage; + postMessage({ + __emnapi__: { + type: 'async-thread-ready', + payload: {} + } + }); + } + var asyncMod = Object.freeze({ + __proto__: null, + _emnapi_after_uvthreadpool_ready: _emnapi_after_uvthreadpool_ready, + _emnapi_async_send_js: _emnapi_async_send_js, + _emnapi_emit_async_thread_ready: _emnapi_emit_async_thread_ready, + _emnapi_tell_js_uvthreadpool: _emnapi_tell_js_uvthreadpool, + _emnapi_worker_ref: _emnapi_worker_ref, + _emnapi_worker_unref: _emnapi_worker_unref + }); + function napi_adjust_external_memory(env, change_in_bytes, adjusted_value) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + if (!adjusted_value) + return envObject.setLastError(1); + var adjusted_memory = emnapiCtx.adjustAmountOfExternalAllocatedMemory(change_in_bytes); + adjusted_value >>>= 0; + if (emnapiCtx.feature.supportBigInt) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setBigInt64(adjusted_value, BigInt(adjusted_memory), true); + } + else { + $emnapiSetValueI64(adjusted_value, Number(adjusted_memory)); + } + return envObject.clearLastError(); + } + var memoryMod = Object.freeze({ + __proto__: null, + napi_adjust_external_memory: napi_adjust_external_memory + }); + var emnapiAWST = { + idGen: {}, + values: [undefined], + queued: new Set(), + pending: [], + init: function () { + var idGen = { + nextId: 1, + list: [], + generate: function () { + var id; + if (idGen.list.length) { + id = idGen.list.shift(); + } + else { + id = idGen.nextId; + idGen.nextId++; + } + return id; + }, + reuse: function (id) { + idGen.list.push(id); + } + }; + emnapiAWST.idGen = idGen; + emnapiAWST.values = [undefined]; + emnapiAWST.queued = new Set(); + emnapiAWST.pending = []; + }, + create: function (env, resource, resourceName, execute, complete, data) { + var asyncId = 0; + var triggerAsyncId = 0; + if (emnapiNodeBinding) { + var asyncContext = emnapiNodeBinding.node.emitAsyncInit(resource, resourceName, -1); + asyncId = asyncContext.asyncId; + triggerAsyncId = asyncContext.triggerAsyncId; + } + var id = emnapiAWST.idGen.generate(); + emnapiAWST.values[id] = { + env: env, + id: id, + resource: resource, + asyncId: asyncId, + triggerAsyncId: triggerAsyncId, + status: 0, + execute: execute, + complete: complete, + data: data + }; + return id; + }, + callComplete: function (work, status) { + var complete = work.complete; + var env = work.env; + var data = work.data; + var callback = function () { + if (!complete) + return; + var envObject = emnapiCtx.envStore.get(env); + var scope = emnapiCtx.openScope(envObject); + try { + envObject.callbackIntoModule(true, function () { + (wasmTable.get(complete))(env, status, data); + }); + } + finally { + emnapiCtx.closeScope(envObject, scope); + } + }; + if (emnapiNodeBinding) { + emnapiNodeBinding.node.makeCallback(work.resource, callback, [], { + asyncId: work.asyncId, + triggerAsyncId: work.triggerAsyncId + }); + } + else { + callback(); + } + }, + queue: function (id) { + var work = emnapiAWST.values[id]; + if (!work) + return; + if (work.status === 0) { + work.status = 1; + if (emnapiAWST.queued.size >= (Math.abs(emnapiAsyncWorkPoolSize) || 4)) { + emnapiAWST.pending.push(id); + return; + } + emnapiAWST.queued.add(id); + var env_1 = work.env; + var data_1 = work.data; + var execute = work.execute; + work.status = 2; + emnapiCtx.feature.setImmediate(function () { + (wasmTable.get(execute))(env_1, data_1); + emnapiAWST.queued.delete(id); + work.status = 3; + emnapiCtx.feature.setImmediate(function () { + emnapiAWST.callComplete(work, 0); + }); + if (emnapiAWST.pending.length > 0) { + var nextWorkId = emnapiAWST.pending.shift(); + emnapiAWST.values[nextWorkId].status = 0; + emnapiAWST.queue(nextWorkId); + } + }); + } + }, + cancel: function (id) { + var index = emnapiAWST.pending.indexOf(id); + if (index !== -1) { + var work_1 = emnapiAWST.values[id]; + if (work_1 && (work_1.status === 1)) { + work_1.status = 4; + emnapiAWST.pending.splice(index, 1); + emnapiCtx.feature.setImmediate(function () { + emnapiAWST.callComplete(work_1, 11); + }); + return 0; + } + else { + return 9; + } + } + return 9; + }, + remove: function (id) { + var work = emnapiAWST.values[id]; + if (!work) + return; + if (emnapiNodeBinding) { + emnapiNodeBinding.node.emitAsyncDestroy({ + asyncId: work.asyncId, + triggerAsyncId: work.triggerAsyncId + }); + } + emnapiAWST.values[id] = undefined; + emnapiAWST.idGen.reuse(id); + } + }; + function _emnapi_node_emit_async_init(async_resource, async_resource_name, trigger_async_id, result) { + if (!emnapiNodeBinding) + return; + var resource = emnapiCtx.handleStore.get(async_resource).value; + var resource_name = emnapiCtx.handleStore.get(async_resource_name).value; + var asyncContext = emnapiNodeBinding.node.emitAsyncInit(resource, resource_name, trigger_async_id); + var asyncId = asyncContext.asyncId; + var triggerAsyncId = asyncContext.triggerAsyncId; + if (result) { + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setFloat64(result, asyncId, true); + HEAP_DATA_VIEW.setFloat64(result + 8, triggerAsyncId, true); + } + } + function _emnapi_node_emit_async_destroy(async_id, trigger_async_id) { + if (!emnapiNodeBinding) + return; + emnapiNodeBinding.node.emitAsyncDestroy({ + asyncId: async_id, + triggerAsyncId: trigger_async_id + }); + } + function _emnapi_node_make_callback(env, async_resource, cb, argv, size, async_id, trigger_async_id, result) { + var i = 0; + var v; + if (!emnapiNodeBinding) + return; + var resource = emnapiCtx.handleStore.get(async_resource).value; + var callback = emnapiCtx.handleStore.get(cb).value; + argv >>>= 0; + size >>>= 0; + size = size >>> 0; + var arr = Array(size); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + for (; i < size; i++) { + var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); + arr[i] = emnapiCtx.handleStore.get(argVal).value; + } + var ret = emnapiNodeBinding.node.makeCallback(resource, callback, arr, { + asyncId: async_id, + triggerAsyncId: trigger_async_id + }); + if (result) { + result >>>= 0; + var envObject = emnapiCtx.envStore.get(env); + v = envObject.ensureHandleId(ret); + HEAP_DATA_VIEW.setUint32(result, v, true); + } + } + function _emnapi_async_init_js(async_resource, async_resource_name, result) { + if (!emnapiNodeBinding) { + return 9; + } + var resource; + if (async_resource) { + resource = Object(emnapiCtx.handleStore.get(async_resource).value); + } + var name = emnapiCtx.handleStore.get(async_resource_name).value; + var ret = emnapiNodeBinding.napi.asyncInit(resource, name); + if (ret.status !== 0) + return ret.status; + var numberValue = ret.value; + if (!((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63))))) { + numberValue = numberValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); + if (numberValue >= (BigInt(1) << BigInt(63))) { + numberValue = numberValue - (BigInt(1) << BigInt(64)); + } + } + var low = Number(numberValue & BigInt(0xffffffff)); + var high = Number(numberValue >> BigInt(32)); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt32(result, low, true); + HEAP_DATA_VIEW.setInt32(result + 4, high, true); + return 0; + } + function _emnapi_async_destroy_js(async_context) { + if (!emnapiNodeBinding) { + return 9; + } + async_context >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + var low = HEAP_DATA_VIEW.getInt32(async_context, true); + var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true); + var pointer = BigInt(low >>> 0) | (BigInt(high) << BigInt(32)); + var ret = emnapiNodeBinding.napi.asyncDestroy(pointer); + if (ret.status !== 0) + return ret.status; + return 0; + } + function napi_open_callback_scope(env, ignored, async_context_handle, result) { + throw new Error('napi_open_callback_scope has not been implemented yet'); + } + function napi_close_callback_scope(env, scope) { + throw new Error('napi_close_callback_scope has not been implemented yet'); + } + function napi_make_callback(env, async_context, recv, func, argc, argv, result) { + var i = 0; + var v; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!emnapiNodeBinding) { + return envObject.setLastError(9); + } + if (!recv) + return envObject.setLastError(1); + if (argc > 0) { + if (!argv) + return envObject.setLastError(1); + } + var v8recv = Object(emnapiCtx.handleStore.get(recv).value); + var v8func = emnapiCtx.handleStore.get(func).value; + if (typeof v8func !== 'function') { + return envObject.setLastError(1); + } + async_context >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + var low = HEAP_DATA_VIEW.getInt32(async_context, true); + var high = HEAP_DATA_VIEW.getInt32(async_context + 4, true); + var ctx = BigInt(low >>> 0) | (BigInt(high) << BigInt(32)); + argv >>>= 0; + argc >>>= 0; + argc = argc >>> 0; + var arr = Array(argc); + for (; i < argc; i++) { + var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); + arr[i] = emnapiCtx.handleStore.get(argVal).value; + } + var ret = emnapiNodeBinding.napi.makeCallback(ctx, v8recv, v8func, arr); + if (ret.error) { + throw ret.error; + } + if (ret.status !== 0) + return envObject.setLastError(ret.status); + if (result) { + result >>>= 0; + v = envObject.ensureHandleId(ret.value); + HEAP_DATA_VIEW.setUint32(result, v, true); + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function _emnapi_env_check_gc_access(env) { + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + } + var nodeMod = Object.freeze({ + __proto__: null, + _emnapi_async_destroy_js: _emnapi_async_destroy_js, + _emnapi_async_init_js: _emnapi_async_init_js, + _emnapi_env_check_gc_access: _emnapi_env_check_gc_access, + _emnapi_node_emit_async_destroy: _emnapi_node_emit_async_destroy, + _emnapi_node_emit_async_init: _emnapi_node_emit_async_init, + _emnapi_node_make_callback: _emnapi_node_make_callback, + napi_close_callback_scope: napi_close_callback_scope, + napi_make_callback: napi_make_callback, + napi_open_callback_scope: napi_open_callback_scope + }); + var emnapiTSFN = { + _liveSet: {}, + offset: { + __size__: 0, + resource: 0, + async_id: 0, + trigger_async_id: 0, + queue_size: 0, + is_some: 0, + queue: 0, + async_pending: 0, + async_u_fd: 0, + thread_count: 0, + state: 0, + dispatch_state: 0, + context: 0, + max_queue_size: 0, + ref: 0, + env: 0, + finalize_data: 0, + finalize_cb: 0, + call_js_cb: 0, + handles_closing: 0, + async_ref: 0, + mutex: 0, + cond: 0 + }, + init: function () { + emnapiTSFN._liveSet = new Set(); + emnapiTSFN.offset.__size__ = 184; + emnapiTSFN.offset.resource = 0; + emnapiTSFN.offset.async_id = 8; + emnapiTSFN.offset.trigger_async_id = 16; + emnapiTSFN.offset.queue_size = 60; + emnapiTSFN.offset.is_some = 24; + emnapiTSFN.offset.queue = 64; + emnapiTSFN.offset.async_pending = 132; + emnapiTSFN.offset.async_u_fd = 96; + emnapiTSFN.offset.thread_count = 136; + emnapiTSFN.offset.state = 140; + emnapiTSFN.offset.dispatch_state = 144; + emnapiTSFN.offset.context = 148; + emnapiTSFN.offset.max_queue_size = 152; + emnapiTSFN.offset.ref = 156; + emnapiTSFN.offset.env = 160; + emnapiTSFN.offset.finalize_data = 164; + emnapiTSFN.offset.finalize_cb = 168; + emnapiTSFN.offset.call_js_cb = 172; + emnapiTSFN.offset.handles_closing = 176; + emnapiTSFN.offset.async_ref = 180; + emnapiTSFN.offset.mutex = 32; + emnapiTSFN.offset.cond = 56; + emnapiTSFN.offset.mutex = emnapiTSFN.offset.mutex + 4; + if (typeof PThread !== 'undefined') { + PThread.unusedWorkers.forEach(emnapiTSFN.addListener); + PThread.runningWorkers.forEach(emnapiTSFN.addListener); + var __original_getNewWorker_1 = PThread.getNewWorker; + PThread.getNewWorker = function () { + var r = __original_getNewWorker_1.apply(this, arguments); + emnapiTSFN.addListener(r); + return r; + }; + } + }, + addListener: function (worker) { + if (!worker) + return false; + if (worker._emnapiTSFNListener) + return true; + var handler = function (e) { + var data = ENVIRONMENT_IS_NODE ? e : e.data; + var __emnapi__ = data.__emnapi__; + if (__emnapi__) { + var type = __emnapi__.type; + var payload = __emnapi__.payload; + if (type === 'tsfn-send') { + var pendng = payload.tsfn + emnapiTSFN.offset.async_pending; + if (Atomics.load(new Int32Array(wasmMemory.buffer), pendng >>> 2) !== 0) { + emnapiTSFN.enqueue(payload.tsfn); + } + } + } + }; + var dispose = function () { + if (ENVIRONMENT_IS_NODE) { + worker.off('message', handler); + } + else { + worker.removeEventListener('message', handler, false); + } + delete worker._emnapiTSFNListener; + }; + worker._emnapiTSFNListener = { handler: handler, dispose: dispose }; + if (ENVIRONMENT_IS_NODE) { + worker.on('message', handler); + } + else { + worker.addEventListener('message', handler, false); + } + return true; + }, + initQueue: function (func) { + var size = 2 * 4; + var queue = _malloc(size); + if (!queue) + return false; + queue >>>= 0; + new Uint8Array(wasmMemory.buffer, queue, size).fill(0); + emnapiTSFN.storeSizeTypeValue(func + emnapiTSFN.offset.queue, queue, false); + return true; + }, + destroyQueue: function (func) { + var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false); + if (queue) { + var node = emnapiTSFN.loadSizeTypeValue(queue, false); + while (node !== 0) { + var next = emnapiTSFN.loadSizeTypeValue(node + 4, false); + _free(node); + node = next; + } + _free(queue); + } + }, + pushQueue: function (func, data) { + var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false); + var head = emnapiTSFN.loadSizeTypeValue(queue, false); + var tail = emnapiTSFN.loadSizeTypeValue(queue + 4, false); + var size = 2 * 4; + var node = _malloc(size); + if (!node) + throw new Error('OOM'); + node >>>= 0; + emnapiTSFN.storeSizeTypeValue(node, data, false); + emnapiTSFN.storeSizeTypeValue(node + 4, 0, false); + if (head === 0 && tail === 0) { + emnapiTSFN.storeSizeTypeValue(queue, node, false); + emnapiTSFN.storeSizeTypeValue(queue + 4, node, false); + } + else { + emnapiTSFN.storeSizeTypeValue(tail + 4, node, false); + emnapiTSFN.storeSizeTypeValue(queue + 4, node, false); + } + emnapiTSFN.addQueueSize(func); + }, + shiftQueue: function (func) { + var queue = emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue, false); + var head = emnapiTSFN.loadSizeTypeValue(queue, false); + if (head === 0) + return 0; + var node = head; + var next = emnapiTSFN.loadSizeTypeValue(head + 4, false); + emnapiTSFN.storeSizeTypeValue(queue, next, false); + if (next === 0) { + emnapiTSFN.storeSizeTypeValue(queue + 4, 0, false); + } + emnapiTSFN.storeSizeTypeValue(node + 4, 0, false); + var value = emnapiTSFN.loadSizeTypeValue(node, false); + _free(node); + emnapiTSFN.subQueueSize(func); + return value; + }, + push: function (func, data, mode) { + var mutex = emnapiTSFN.getMutex(func); + var cond = emnapiTSFN.getCond(func); + var waitCondition = function () { + var queueSize = emnapiTSFN.getQueueSize(func); + var maxSize = emnapiTSFN.getMaxQueueSize(func); + return queueSize >= maxSize && maxSize > 0 && emnapiTSFN.getState(func) === 0; + }; + var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE; + var shouldDelete = false; + var ret = mutex.execute(function () { + while (waitCondition()) { + if (mode === 0) { + return 15; + } + if (isBrowserMain) { + return 21; + } + cond.wait(); + } + if (emnapiTSFN.getState(func) === 0) { + emnapiTSFN.pushQueue(func, data); + emnapiTSFN.send(func); + return 0; + } + if (emnapiTSFN.getThreadCount(func) === 0) { + return 1; + } + emnapiTSFN.subThreadCount(func); + if (!(emnapiTSFN.getState(func) === 2 && emnapiTSFN.getThreadCount(func) === 0)) { + return 16; + } + shouldDelete = true; + return 16; + }); + if (shouldDelete) { + emnapiTSFN.destroy(func); + } + return ret; + }, + getMutex: function (func) { + var index = func + emnapiTSFN.offset.mutex; + var mutex = { + lock: function () { + var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE; + var i32a = new Int32Array(wasmMemory.buffer, index, 1); + if (isBrowserMain) { + while (true) { + var oldValue = Atomics.compareExchange(i32a, 0, 0, 10); + if (oldValue === 0) { + return; + } + } + } + else { + while (true) { + var oldValue = Atomics.compareExchange(i32a, 0, 0, 10); + if (oldValue === 0) { + return; + } + Atomics.wait(i32a, 0, 10); + } + } + }, + unlock: function () { + var i32a = new Int32Array(wasmMemory.buffer, index, 1); + var oldValue = Atomics.compareExchange(i32a, 0, 10, 0); + if (oldValue !== 10) { + throw new Error('Tried to unlock while not holding the mutex'); + } + Atomics.notify(i32a, 0, 1); + }, + execute: function (fn) { + mutex.lock(); + try { + return fn(); + } + finally { + mutex.unlock(); + } + } + }; + return mutex; + }, + getCond: function (func) { + var index = func + emnapiTSFN.offset.cond; + var mutex = emnapiTSFN.getMutex(func); + var cond = { + wait: function () { + var i32a = new Int32Array(wasmMemory.buffer, index, 1); + var value = Atomics.load(i32a, 0); + mutex.unlock(); + Atomics.wait(i32a, 0, value); + mutex.lock(); + }, + signal: function () { + var i32a = new Int32Array(wasmMemory.buffer, index, 1); + Atomics.add(i32a, 0, 1); + Atomics.notify(i32a, 0, 1); + } + }; + return cond; + }, + getQueueSize: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.queue_size, true); + }, + addQueueSize: function (func) { + var offset = emnapiTSFN.offset.queue_size; + var arr, index; + arr = new Uint32Array(wasmMemory.buffer); + index = (func + offset) >>> 2; + Atomics.add(arr, index, 1); + }, + subQueueSize: function (func) { + var offset = emnapiTSFN.offset.queue_size; + var arr, index; + arr = new Uint32Array(wasmMemory.buffer); + index = (func + offset) >>> 2; + Atomics.sub(arr, index, 1); + }, + getThreadCount: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.thread_count, true); + }, + addThreadCount: function (func) { + var offset = emnapiTSFN.offset.thread_count; + var arr, index; + arr = new Uint32Array(wasmMemory.buffer); + index = (func + offset) >>> 2; + Atomics.add(arr, index, 1); + }, + subThreadCount: function (func) { + var offset = emnapiTSFN.offset.thread_count; + var arr, index; + arr = new Uint32Array(wasmMemory.buffer); + index = (func + offset) >>> 2; + Atomics.sub(arr, index, 1); + }, + getState: function (func) { + return Atomics.load(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.state) >>> 2); + }, + setState: function (func, value) { + Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.state) >>> 2, value); + }, + getHandlesClosing: function (func) { + return Atomics.load(new Int8Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing)); + }, + setHandlesClosing: function (func, value) { + Atomics.store(new Int8Array(wasmMemory.buffer), (func + emnapiTSFN.offset.handles_closing), value); + }, + getDispatchState: function (func) { + return Atomics.load(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >>> 2); + }, + getContext: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.context, false); + }, + getMaxQueueSize: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.max_queue_size, true); + }, + getEnv: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.env, false); + }, + getCallJSCb: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.call_js_cb, false); + }, + getRef: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.ref, false); + }, + getResource: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.resource, false); + }, + getFinalizeCb: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.finalize_cb, false); + }, + getFinalizeData: function (func) { + return emnapiTSFN.loadSizeTypeValue(func + emnapiTSFN.offset.finalize_data, false); + }, + loadSizeTypeValue: function (offset, unsigned) { + var ret; + var arr; + if (unsigned) { + arr = new Uint32Array(wasmMemory.buffer); + ret = Atomics.load(arr, offset >>> 2); + return ret; + } + else { + arr = new Int32Array(wasmMemory.buffer); + ret = Atomics.load(arr, offset >>> 2); + return ret; + } + }, + storeSizeTypeValue: function (offset, value, unsigned) { + var arr; + if (unsigned) { + arr = new Uint32Array(wasmMemory.buffer); + Atomics.store(arr, offset >>> 2, value); + return undefined; + } + else { + arr = new Int32Array(wasmMemory.buffer); + Atomics.store(arr, offset >>> 2, value >>> 0); + return undefined; + } + }, + releaseResources: function (func) { + if (emnapiTSFN.getState(func) !== 2) { + emnapiTSFN.setState(func, 2); + var env = emnapiTSFN.getEnv(func); + var envObject = emnapiCtx.envStore.get(env); + var ref = emnapiTSFN.getRef(func); + if (ref) { + emnapiCtx.refStore.get(ref).dispose(); + } + var resource = emnapiTSFN.getResource(func); + emnapiCtx.refStore.get(resource).dispose(); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(func + emnapiTSFN.offset.is_some, 0, true); + emnapiCtx.removeCleanupHook(envObject, emnapiTSFN.cleanup, func); + envObject.unref(); + var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >>> 2; + var arr = new Uint32Array(wasmMemory.buffer); + if (Atomics.load(arr, asyncRefOffset) > 0) { + Atomics.store(arr, asyncRefOffset, 0); + emnapiCtx.decreaseWaitingRequestCounter(); + } + if (emnapiNodeBinding) { + var view = new DataView(wasmMemory.buffer); + var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true); + var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true); + _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId); + } + } + }, + destroy: function (func) { + emnapiTSFN._liveSet.delete(func); + emnapiTSFN.destroyQueue(func); + emnapiTSFN.releaseResources(func); + _free(func); + }, + emptyQueue: function (func) { + var drainQueue = []; + emnapiTSFN.getMutex(func).execute(function () { + while (emnapiTSFN.getQueueSize(func) > 0) { + drainQueue.push(emnapiTSFN.shiftQueue(func)); + } + }); + var callJsCb = emnapiTSFN.getCallJSCb(func); + var context = emnapiTSFN.getContext(func); + var data; + for (var i = 0; i < drainQueue.length; i++) { + data = drainQueue[i]; + if (callJsCb) { + (wasmTable.get(callJsCb))(0, 0, context, data); + } + } + }, + maybeDelete: function (func) { + var shouldDelete = false; + emnapiTSFN.getMutex(func).execute(function () { + if (emnapiTSFN.getThreadCount(func) > 0) { + emnapiTSFN.releaseResources(func); + } + else { + shouldDelete = true; + } + }); + if (shouldDelete) { + emnapiTSFN.destroy(func); + } + }, + finalize: function (func) { + var env = emnapiTSFN.getEnv(func); + var envObject = emnapiCtx.envStore.get(env); + emnapiCtx.openScope(envObject); + var finalize = emnapiTSFN.getFinalizeCb(func); + var data = emnapiTSFN.getFinalizeData(func); + var context = emnapiTSFN.getContext(func); + var f = function () { + envObject.callFinalizerInternal(0, finalize, data, context); + }; + try { + emnapiTSFN.emptyQueue(func); + if (finalize) { + if (emnapiNodeBinding) { + var resource = emnapiTSFN.getResource(func); + var resource_value = emnapiCtx.refStore.get(resource).get(); + var resourceObject = emnapiCtx.handleStore.get(resource_value).value; + var view = new DataView(wasmMemory.buffer); + var asyncId = view.getFloat64(func + emnapiTSFN.offset.async_id, true); + var triggerAsyncId = view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true); + emnapiNodeBinding.node.makeCallback(resourceObject, f, [], { + asyncId: asyncId, + triggerAsyncId: triggerAsyncId + }); + } + else { + f(); + } + } + emnapiTSFN.maybeDelete(func); + } + finally { + emnapiCtx.closeScope(envObject); + } + }, + cleanup: function (func) { + emnapiTSFN.closeHandlesAndMaybeDelete(func, 1); + }, + closeHandlesAndMaybeDelete: function (func, set_closing) { + var env = emnapiTSFN.getEnv(func); + var envObject = emnapiCtx.envStore.get(env); + emnapiCtx.openScope(envObject); + try { + if (set_closing) { + emnapiTSFN.getMutex(func).execute(function () { + emnapiTSFN.setState(func, 1); + if (emnapiTSFN.getMaxQueueSize(func) > 0) { + emnapiTSFN.getCond(func).signal(); + } + }); + } + if (emnapiTSFN.getHandlesClosing(func)) { + return; + } + emnapiTSFN.setHandlesClosing(func, 1); + Atomics.store(new Int32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.async_pending) >>> 2, 1); + emnapiCtx.feature.setImmediate(function () { + emnapiTSFN.finalize(func); + }); + } + finally { + emnapiCtx.closeScope(envObject); + } + }, + dispatchOne: function (func) { + var data = 0; + var popped_value = false; + var has_more = false; + var mutex = emnapiTSFN.getMutex(func); + var cond = emnapiTSFN.getCond(func); + mutex.execute(function () { + if (emnapiTSFN.getState(func) === 0) { + var size = emnapiTSFN.getQueueSize(func); + if (size > 0) { + data = emnapiTSFN.shiftQueue(func); + popped_value = true; + var maxQueueSize = emnapiTSFN.getMaxQueueSize(func); + if (size === maxQueueSize && maxQueueSize > 0) { + cond.signal(); + } + size--; + } + if (size === 0) { + if (emnapiTSFN.getThreadCount(func) === 0) { + emnapiTSFN.setState(func, 1); + if (emnapiTSFN.getMaxQueueSize(func) > 0) { + cond.signal(); + } + emnapiTSFN.closeHandlesAndMaybeDelete(func, 0); + } + } + else { + has_more = true; + } + } + else { + emnapiTSFN.closeHandlesAndMaybeDelete(func, 0); + } + }); + if (popped_value) { + var env = emnapiTSFN.getEnv(func); + var envObject_1 = emnapiCtx.envStore.get(env); + emnapiCtx.openScope(envObject_1); + var f = function () { + envObject_1.callbackIntoModule(false, function () { + var callJsCb = emnapiTSFN.getCallJSCb(func); + var ref = emnapiTSFN.getRef(func); + var js_callback = ref ? emnapiCtx.refStore.get(ref).get() : 0; + if (callJsCb) { + var context = emnapiTSFN.getContext(func); + (wasmTable.get(callJsCb))(env, js_callback, context, data); + } + else { + var jsCallback = js_callback ? emnapiCtx.handleStore.get(js_callback).value : null; + if (typeof jsCallback === 'function') { + jsCallback(); + } + } + }); + }; + try { + if (emnapiNodeBinding) { + var resource = emnapiTSFN.getResource(func); + var resource_value = emnapiCtx.refStore.get(resource).get(); + var resourceObject = emnapiCtx.handleStore.get(resource_value).value; + var view = new DataView(wasmMemory.buffer); + emnapiNodeBinding.node.makeCallback(resourceObject, f, [], { + asyncId: view.getFloat64(func + emnapiTSFN.offset.async_id, true), + triggerAsyncId: view.getFloat64(func + emnapiTSFN.offset.trigger_async_id, true) + }); + } + else { + f(); + } + } + finally { + emnapiCtx.closeScope(envObject_1); + } + } + return has_more; + }, + dispatch: function (func) { + var has_more = true; + var iterations_left = 1000; + var ui32a = new Uint32Array(wasmMemory.buffer); + var index = (func + emnapiTSFN.offset.dispatch_state) >>> 2; + while (has_more && --iterations_left !== 0) { + Atomics.store(ui32a, index, 1); + has_more = emnapiTSFN.dispatchOne(func); + if (Atomics.exchange(ui32a, index, 0) !== 1) { + has_more = true; + } + } + if (has_more) { + emnapiTSFN.send(func); + } + }, + enqueue: function (func) { + var pending = func + emnapiTSFN.offset.async_pending; + var scheduled = func + emnapiTSFN.offset.async_u_fd; + var i32a = new Int32Array(wasmMemory.buffer); + if (Atomics.exchange(i32a, scheduled >>> 2, 1) !== 0) { + return; + } + emnapiCtx.feature.setImmediate(function () { + if (!emnapiTSFN._liveSet.has(func)) { + return; + } + if (Atomics.load(i32a, pending >>> 2) === 0) { + Atomics.store(i32a, scheduled >>> 2, 0); + return; + } + emnapiCtx.feature.setImmediate(function () { + try { + if (Atomics.exchange(i32a, pending >>> 2, 0) === 0) { + return; + } + if (!emnapiTSFN._liveSet.has(func)) { + return; + } + emnapiTSFN.dispatch(func); + } + finally { + if (emnapiTSFN._liveSet.has(func)) { + Atomics.store(i32a, scheduled >>> 2, 0); + if (Atomics.load(i32a, pending >>> 2) !== 0) { + emnapiTSFN.enqueue(func); + } + } + } + }); + }); + }, + send: function (func) { + var current_state = Atomics.or(new Uint32Array(wasmMemory.buffer), (func + emnapiTSFN.offset.dispatch_state) >>> 2, 1 << 1); + if ((current_state & 1) === 1) { + return; + } + var pendng = func + emnapiTSFN.offset.async_pending; + if (Atomics.load(new Int32Array(wasmMemory.buffer), pendng >>> 2) !== 0) { + return; + } + if (Atomics.exchange(new Int32Array(wasmMemory.buffer), pendng >>> 2, 1) === 0) { + if ((typeof ENVIRONMENT_IS_PTHREAD !== 'undefined') && ENVIRONMENT_IS_PTHREAD) { + postMessage({ + __emnapi__: { + type: 'tsfn-send', + payload: { + tsfn: func + } + } + }); + } + else { + emnapiTSFN.enqueue(func); + } + } + } + }; + function napi_create_threadsafe_function(env, func, async_resource, async_resource_name, max_queue_size, initial_thread_count, thread_finalize_data, thread_finalize_cb, context, call_js_cb, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!async_resource_name) + return envObject.setLastError(1); + max_queue_size >>>= 0; + initial_thread_count >>>= 0; + env >>>= 0; + thread_finalize_data >>>= 0; + thread_finalize_cb >>>= 0; + context >>>= 0; + call_js_cb >>>= 0; + max_queue_size = max_queue_size >>> 0; + initial_thread_count = initial_thread_count >>> 0; + if (initial_thread_count === 0) { + return envObject.setLastError(1); + } + if (!result) + return envObject.setLastError(1); + var ref = 0; + func >>>= 0; + if (!func) { + if (!call_js_cb) + return envObject.setLastError(1); + } + else { + var funcValue = emnapiCtx.handleStore.get(func).value; + if (typeof funcValue !== 'function') { + return envObject.setLastError(1); + } + ref = emnapiCtx.createReference(envObject, func, 1, 1).id; + } + var asyncResourceObject; + if (async_resource) { + asyncResourceObject = emnapiCtx.handleStore.get(async_resource).value; + if (asyncResourceObject == null) { + return envObject.setLastError(2); + } + asyncResourceObject = Object(asyncResourceObject); + } + else { + asyncResourceObject = {}; + } + var resource = envObject.ensureHandleId(asyncResourceObject); + var asyncResourceName = emnapiCtx.handleStore.get(async_resource_name).value; + if (typeof asyncResourceName === 'symbol') { + return envObject.setLastError(3); + } + asyncResourceName = String(asyncResourceName); + var resource_name = envObject.ensureHandleId(asyncResourceName); + var sizeofTSFN = emnapiTSFN.offset.__size__; + var tsfn = _malloc(sizeofTSFN); + if (!tsfn) + return envObject.setLastError(9); + tsfn >>>= 0; + new Uint8Array(wasmMemory.buffer).subarray(tsfn, tsfn + sizeofTSFN).fill(0); + var resourceRef = emnapiCtx.createReference(envObject, resource, 1, 1); + var resource_ = resourceRef.id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.resource, resource_, true); + if (!emnapiTSFN.initQueue(tsfn)) { + _free(tsfn); + resourceRef.dispose(); + return envObject.setLastError(9); + } + _emnapi_node_emit_async_init(resource, resource_name, -1, tsfn + emnapiTSFN.offset.async_id); + HEAP_DATA_VIEW.setInt8(tsfn + emnapiTSFN.offset.is_some, 1, true); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.thread_count, initial_thread_count, true); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.context, context, true); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.max_queue_size, max_queue_size, true); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.ref, ref, true); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.env, env, true); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_data, thread_finalize_data, true); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.finalize_cb, thread_finalize_cb, true); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.call_js_cb, call_js_cb, true); + emnapiCtx.addCleanupHook(envObject, emnapiTSFN.cleanup, tsfn); + emnapiTSFN._liveSet.add(tsfn); + envObject.ref(); + emnapiCtx.increaseWaitingRequestCounter(); + HEAP_DATA_VIEW.setUint32(tsfn + emnapiTSFN.offset.async_ref, 1, true); + result >>>= 0; + HEAP_DATA_VIEW.setUint32(result, tsfn, true); + return envObject.clearLastError(); + } + function napi_get_threadsafe_function_context(func, result) { + if (!func || !result) { + abort(); + return 1; + } + func >>>= 0; + result >>>= 0; + var context = emnapiTSFN.getContext(func); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, context, true); + return 0; + } + function napi_call_threadsafe_function(func, data, mode) { + if (!func) { + abort(); + return 1; + } + func >>>= 0; + data >>>= 0; + return emnapiTSFN.push(func, data, mode); + } + function napi_acquire_threadsafe_function(func) { + if (!func) { + abort(); + return 1; + } + func >>>= 0; + var mutex = emnapiTSFN.getMutex(func); + return mutex.execute(function () { + if (emnapiTSFN.getState(func) === 0) { + emnapiTSFN.addThreadCount(func); + return 0; + } + return 16; + }); + } + function napi_release_threadsafe_function(func, mode) { + if (!func) { + abort(); + return 1; + } + func >>>= 0; + var mutex = emnapiTSFN.getMutex(func); + var cond = emnapiTSFN.getCond(func); + var shouldDelete = false; + var ret = mutex.execute(function () { + if (emnapiTSFN.getThreadCount(func) === 0) { + return 1; + } + emnapiTSFN.subThreadCount(func); + if (emnapiTSFN.getThreadCount(func) === 0 || mode === 1) { + if (emnapiTSFN.getState(func) === 0) { + if (mode === 1) { + emnapiTSFN.setState(func, 1); + } + if (emnapiTSFN.getState(func) === 1 && emnapiTSFN.getMaxQueueSize(func) > 0) { + cond.signal(); + } + emnapiTSFN.send(func); + } + } + if (!(emnapiTSFN.getState(func) === 2 && emnapiTSFN.getThreadCount(func) === 0)) { + return 0; + } + shouldDelete = true; + return 0; + }); + if (shouldDelete) { + emnapiTSFN.destroy(func); + } + return ret; + } + function napi_unref_threadsafe_function(env, func) { + if (!func) { + abort(); + return 1; + } + func >>>= 0; + var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >>> 2; + var arr = new Uint32Array(wasmMemory.buffer); + var currentValue = Atomics.load(arr, asyncRefOffset); + if (currentValue > 0) { + Atomics.store(arr, asyncRefOffset, currentValue - 1); + if (currentValue === 1) { + emnapiCtx.decreaseWaitingRequestCounter(); + } + } + return 0; + } + function napi_ref_threadsafe_function(env, func) { + if (!func) { + abort(); + return 1; + } + func >>>= 0; + var asyncRefOffset = (func + emnapiTSFN.offset.async_ref) >>> 2; + var arr = new Uint32Array(wasmMemory.buffer); + var currentValue = Atomics.load(arr, asyncRefOffset); + if (!currentValue) { + emnapiCtx.increaseWaitingRequestCounter(); + } + Atomics.store(arr, asyncRefOffset, currentValue + 1); + return 0; + } + var emnapiAWMT = { + pool: [], + workerReady: null, + globalAddress: 0, + globalOffset: { + idle_threads: 0, + q: 1 * 4, + next: 1 * 4, + prev: 2 * 4, + mutex: 3 * 4, + cond: 4 * 4, + exit_message: 5 * 4, + end: 7 * 4 + }, + offset: { + resource: 0, + async_id: 8, + trigger_async_id: 16, + env: 24, + status: 1 * 4 + 24, + queue: 2 * 4 + 24, + queue_next: 2 * 4 + 24, + queue_prev: 3 * 4 + 24, + data: 4 * 4 + 24, + execute: 5 * 4 + 24, + complete: 6 * 4 + 24, + end: 7 * 4 + 24 + }, + init: function () { + emnapiAWMT.pool = []; + emnapiAWMT.workerReady = null; + if (typeof PThread !== 'undefined') { + PThread.unusedWorkers.forEach(emnapiAWMT.addListener); + PThread.runningWorkers.forEach(emnapiAWMT.addListener); + var __original_getNewWorker_1 = PThread.getNewWorker; + PThread.getNewWorker = function () { + var r = __original_getNewWorker_1.apply(this, arguments); + emnapiAWMT.addListener(r); + return r; + }; + } + }, + addListener: function (worker) { + if (!worker) + return false; + if (worker._emnapiAWMTListener) + return true; + var handler = function (e) { + var data = ENVIRONMENT_IS_NODE ? e : e.data; + var __emnapi__ = data.__emnapi__; + if (__emnapi__) { + var type = __emnapi__.type; + var payload = __emnapi__.payload; + if (type === 'async-work-complete') { + emnapiAWMT.callComplete(payload.work, 0); + } + } + }; + var dispose = function () { + if (ENVIRONMENT_IS_NODE) { + worker.off('message', handler); + } + else { + worker.removeEventListener('message', handler, false); + } + delete worker._emnapiAWMTListener; + }; + worker._emnapiAWMTListener = { handler: handler, dispose: dispose }; + if (ENVIRONMENT_IS_NODE) { + worker.on('message', handler); + } + else { + worker.addEventListener('message', handler, false); + } + return true; + }, + initGlobal: function () { + if (!emnapiAWMT.globalAddress) { + emnapiAWMT.globalAddress = _malloc(emnapiAWMT.globalOffset.end); + emnapiAWMT.globalAddress >>>= 0; + var size = emnapiAWMT.globalOffset.end; + var addr = emnapiAWMT.globalAddress; + new Uint8Array(wasmMemory.buffer, addr, size).fill(0); + emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q); + emnapiAWMT.queueInit(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.exit_message); + } + }, + terminateWorkers: function () { + emnapiAWMT.pool.forEach(function (w) { + var _a, _b; + (_a = w._emnapiAWMTListener) === null || _a === void 0 ? void 0 : _a.dispose(); + (_b = w._emnapiTSFNListener) === null || _b === void 0 ? void 0 : _b.dispose(); + w.terminate(); + }); + emnapiAWMT.pool.length = 0; + }, + initWorkers: function (n) { + if (ENVIRONMENT_IS_PTHREAD) { + return emnapiAWMT.workerReady || (emnapiAWMT.workerReady = Promise.resolve()); + } + if (emnapiAWMT.workerReady) + return emnapiAWMT.workerReady; + if (!('emnapi_async_worker_create' in wasmInstance.exports)) { + throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags'); + } + var emnapi_async_worker_create = wasmInstance.exports.emnapi_async_worker_create; + var args = []; + emnapiAWMT.initGlobal(); + for (var i = 0; i < n; ++i) { + args.push(emnapi_async_worker_create(1, emnapiAWMT.globalAddress)); + } + var promises = args.map(function (index) { + if (index === 0) { + return Promise.reject(new Error('Failed to create async worker')); + } + var worker; + if (index < 0) { + worker = emnapiAWMT.pool[-index - 1]; + if (worker) + return worker.whenLoaded; + } + index >>>= 0; + var view = new DataView(wasmMemory.buffer); + var tidOffset = 20; + var tid = view.getInt32(index + tidOffset, true); + worker = PThread.pthreads[tid]; + return worker.whenLoaded; + }); + emnapiAWMT.workerReady = Promise.all(promises); + return emnapiAWMT.workerReady; + }, + getResource: function (work) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.resource, true); + }, + getExecute: function (work) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.execute, true); + }, + getComplete: function (work) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.complete, true); + }, + getEnv: function (work) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.env, true); + }, + getData: function (work) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + return HEAP_DATA_VIEW.getUint32(work + emnapiAWMT.offset.data, true); + }, + getMutex: function () { + var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.mutex; + var mutex = { + lock: function () { + var isBrowserMain = typeof window !== 'undefined' && typeof document !== 'undefined' && !ENVIRONMENT_IS_NODE; + var i32a = new Int32Array(wasmMemory.buffer, index, 1); + if (isBrowserMain) { + while (true) { + var oldValue = Atomics.compareExchange(i32a, 0, 0, 10); + if (oldValue === 0) { + return; + } + } + } + else { + while (true) { + var oldValue = Atomics.compareExchange(i32a, 0, 0, 10); + if (oldValue === 0) { + return; + } + Atomics.wait(i32a, 0, 10); + } + } + }, + unlock: function () { + var i32a = new Int32Array(wasmMemory.buffer, index, 1); + var oldValue = Atomics.compareExchange(i32a, 0, 10, 0); + if (oldValue !== 10) { + throw new Error('Tried to unlock while not holding the mutex'); + } + Atomics.notify(i32a, 0, 1); + }, + execute: function (fn) { + mutex.lock(); + try { + return fn(); + } + finally { + mutex.unlock(); + } + } + }; + return mutex; + }, + getCond: function () { + var index = emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.cond; + var mutex = emnapiAWMT.getMutex(); + var cond = { + wait: function () { + var i32a = new Int32Array(wasmMemory.buffer, index, 1); + var value = Atomics.load(i32a, 0); + mutex.unlock(); + Atomics.wait(i32a, 0, value); + mutex.lock(); + }, + signal: function () { + var i32a = new Int32Array(wasmMemory.buffer, index, 1); + Atomics.add(i32a, 0, 1); + Atomics.notify(i32a, 0, 1); + } + }; + return cond; + }, + queueInit: function (q) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(q, q, true); + HEAP_DATA_VIEW.setUint32(q + 4, q, true); + }, + queueInsertTail: function (h, q) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(q, h, true); + var tempValue = HEAP_DATA_VIEW.getUint32(h + 4, true); + HEAP_DATA_VIEW.setUint32(q + 4, tempValue, true); + var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true); + HEAP_DATA_VIEW.setUint32(qprev, q, true); + HEAP_DATA_VIEW.setUint32(h + 4, q, true); + }, + queueRemove: function (q) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + var qprev = HEAP_DATA_VIEW.getUint32(q + 4, true); + var qnext = HEAP_DATA_VIEW.getUint32(q, true); + HEAP_DATA_VIEW.setUint32(qprev, qnext, true); + HEAP_DATA_VIEW.setUint32(qnext + 4, qprev, true); + }, + queueEmpty: function (q) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + return q == HEAP_DATA_VIEW.getUint32(q, true); + }, + scheduleWork: function (work) { + var _a; + if (!((_a = emnapiAWMT.workerReady) === null || _a === void 0 ? void 0 : _a.ready)) { + emnapiAWMT.initWorkers(_emnapi_async_work_pool_size()).then(function () { + emnapiAWMT.workerReady.ready = true; + }).catch(function (err) { + emnapiAWMT.workerReady = null; + throw err; + }); + } + emnapiCtx.increaseWaitingRequestCounter(); + var statusBuffer = new Int32Array(wasmMemory.buffer, work + emnapiAWMT.offset.status, 1); + Atomics.store(statusBuffer, 0, 0); + var mutex = emnapiAWMT.getMutex(); + var cond = emnapiAWMT.getCond(); + mutex.lock(); + try { + emnapiAWMT.queueInsertTail(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.q, work + emnapiAWMT.offset.queue); + } + catch (err) { + emnapiCtx.decreaseWaitingRequestCounter(); + mutex.unlock(); + throw err; + } + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (HEAP_DATA_VIEW.getUint32(emnapiAWMT.globalAddress + emnapiAWMT.globalOffset.idle_threads, true) > 0) { + cond.signal(); + } + mutex.unlock(); + }, + cancelWork: function (work) { + var cancelled = false; + emnapiAWMT.getMutex().execute(function () { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + cancelled = !emnapiAWMT.queueEmpty(work + emnapiAWMT.offset.queue) && HEAP_DATA_VIEW.getInt32(work + emnapiAWMT.offset.status, true) !== 2; + if (cancelled) { + emnapiAWMT.queueRemove(work + emnapiAWMT.offset.queue); + } + }); + if (!cancelled) { + return 9; + } + if (Atomics.compareExchange(new Int32Array(wasmMemory.buffer, work + emnapiAWMT.offset.status, 1), 0, 0, 1) !== 0) { + return 9; + } + emnapiCtx.feature.setImmediate(function () { + emnapiAWMT.callComplete(work, 11); + }); + return 0; + }, + callComplete: function (work, status) { + emnapiCtx.decreaseWaitingRequestCounter(); + var complete = emnapiAWMT.getComplete(work); + var env = emnapiAWMT.getEnv(work); + var data = emnapiAWMT.getData(work); + var envObject = emnapiCtx.envStore.get(env); + var scope = emnapiCtx.openScope(envObject); + var callback = function () { + if (!complete) + return; + envObject.callbackIntoModule(true, function () { + (wasmTable.get(complete))(env, status, data); + }); + }; + try { + if (emnapiNodeBinding) { + var resource = emnapiAWMT.getResource(work); + var resource_value = emnapiCtx.refStore.get(resource).get(); + var resourceObject = emnapiCtx.handleStore.get(resource_value).value; + var view = new DataView(wasmMemory.buffer); + var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true); + var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true); + emnapiNodeBinding.node.makeCallback(resourceObject, callback, [], { + asyncId: asyncId, + triggerAsyncId: triggerAsyncId + }); + } + else { + callback(); + } + } + finally { + emnapiCtx.closeScope(envObject, scope); + } + } + }; + emnapiAWMT.init(); + var napi_create_async_work = singleThreadAsyncWork + ? function (env, resource, resource_name, execute, complete, data, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!execute) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var resourceObject; + if (resource) { + resourceObject = Object(emnapiCtx.handleStore.get(resource).value); + } + else { + resourceObject = {}; + } + if (!resource_name) + return envObject.setLastError(1); + var resourceName = String(emnapiCtx.handleStore.get(resource_name).value); + var id = emnapiAWST.create(env, resourceObject, resourceName, execute, complete, data); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, id, true); + return envObject.clearLastError(); + } + : function (env, resource, resource_name, execute, complete, data, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!execute) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var resourceObject; + if (resource) { + resourceObject = Object(emnapiCtx.handleStore.get(resource).value); + } + else { + resourceObject = {}; + } + if (!resource_name) + return envObject.setLastError(1); + var sizeofAW = emnapiAWMT.offset.end; + var aw = _malloc(sizeofAW); + if (!aw) + return envObject.setLastError(9); + aw >>>= 0; + new Uint8Array(wasmMemory.buffer).subarray(aw, aw + sizeofAW).fill(0); + var s = envObject.ensureHandleId(resourceObject); + var resourceRef = emnapiCtx.createReference(envObject, s, 1, 1); + var resource_ = resourceRef.id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(aw, resource_, true); + _emnapi_node_emit_async_init(s, resource_name, -1, aw + emnapiAWMT.offset.async_id); + HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.env, env, true); + HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.execute, execute, true); + HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.complete, complete, true); + HEAP_DATA_VIEW.setUint32(aw + emnapiAWMT.offset.data, data, true); + emnapiAWMT.queueInit(aw + emnapiAWMT.offset.queue); + result >>>= 0; + HEAP_DATA_VIEW.setUint32(result, aw, true); + return envObject.clearLastError(); + }; + var napi_delete_async_work = singleThreadAsyncWork + ? function (env, work) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!work) + return envObject.setLastError(1); + work >>>= 0; + emnapiAWST.remove(work); + return envObject.clearLastError(); + } + : function (env, work) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!work) + return envObject.setLastError(1); + work >>>= 0; + var resource = emnapiAWMT.getResource(work); + emnapiCtx.refStore.get(resource).dispose(); + if (emnapiNodeBinding) { + var view = new DataView(wasmMemory.buffer); + var asyncId = view.getFloat64(work + emnapiAWMT.offset.async_id, true); + var triggerAsyncId = view.getFloat64(work + emnapiAWMT.offset.trigger_async_id, true); + _emnapi_node_emit_async_destroy(asyncId, triggerAsyncId); + } + _free(work); + return envObject.clearLastError(); + }; + var napi_queue_async_work = singleThreadAsyncWork + ? function (env, work) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + if (!work) + return envObject.setLastError(1); + work >>>= 0; + emnapiAWST.queue(work); + return envObject.clearLastError(); + } + : function (env, work) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + if (!work) + return envObject.setLastError(1); + work >>>= 0; + emnapiAWMT.scheduleWork(work); + return envObject.clearLastError(); + }; + var napi_cancel_async_work = singleThreadAsyncWork + ? function (env, work) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + if (!work) + return envObject.setLastError(1); + work >>>= 0; + var status = emnapiAWST.cancel(work); + if (status === 0) + return envObject.clearLastError(); + return envObject.setLastError(status); + } + : function (env, work) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + if (!work) + return envObject.setLastError(1); + work >>>= 0; + var status = emnapiAWMT.cancelWork(work); + if (status === 0) + return envObject.clearLastError(); + return envObject.setLastError(status); + }; + function _emnapi_async_worker(globalAddress) { + globalAddress >>>= 0; + emnapiAWMT.globalAddress = globalAddress; + var mutex = emnapiAWMT.getMutex(); + var cond = emnapiAWMT.getCond(); + mutex.lock(); + var exitMessageAddr = globalAddress + emnapiAWMT.globalOffset.exit_message; + var idleThreadsAddr = globalAddress + emnapiAWMT.globalOffset.idle_threads; + var workerQueueAddr = globalAddress + emnapiAWMT.globalOffset.q; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + for (;;) { + while (emnapiAWMT.queueEmpty(workerQueueAddr)) { + Atomics.add(new Int32Array(wasmMemory.buffer, idleThreadsAddr, 1), 0, 1); + cond.wait(); + Atomics.sub(new Int32Array(wasmMemory.buffer, idleThreadsAddr, 1), 0, 1); + } + var q = HEAP_DATA_VIEW.getUint32(workerQueueAddr, true); + if (q === exitMessageAddr) { + cond.signal(); + mutex.unlock(); + break; + } + var work = q - emnapiAWMT.offset.queue; + emnapiAWMT.queueRemove(q); + emnapiAWMT.queueInit(q); + mutex.unlock(); + var statusBuffer = new Int32Array(wasmMemory.buffer, work + emnapiAWMT.offset.status, 1); + if (Atomics.load(statusBuffer, 0) === 1) { + abort('unreachable'); + } + var execute = emnapiAWMT.getExecute(work); + var env = emnapiAWMT.getEnv(work); + var data = emnapiAWMT.getData(work); + (wasmTable.get(execute))(env, data); + Atomics.store(statusBuffer, 0, 2); + var postMessage_1 = napiModule.postMessage; + postMessage_1({ + __emnapi__: { + type: 'async-work-complete', + payload: { work: work } + } + }); + mutex.lock(); + } + return 0; + } + function _emnapi_spawn_worker(f, globalAddress) { + if (typeof onCreateWorker !== 'function') { + throw new TypeError('`options.onCreateWorker` is not a function'); + } + var promises = []; + var args = []; + if (!('emnapi_async_worker_create' in wasmInstance.exports)) { + throw new TypeError('`emnapi_async_worker_create` is not exported, please try to add `--export=emnapi_async_worker_create` to linker flags'); + } + args.push(wasmInstance.exports.emnapi_async_worker_create(0, 0)); + var handleError = function (e) { + if ('message' in e && (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1)) { + emnapiAWMT.terminateWorkers(); + } + }; + var ret; + try { + var worker_1 = onCreateWorker({ type: 'async-work', name: 'emnapi-async-worker' }); + var p = PThread.loadWasmModuleToWorker(worker_1); + if (ENVIRONMENT_IS_NODE) { + worker_1.on('error', handleError); + } + else { + worker_1.addEventListener('error', handleError, false); + } + emnapiAWMT.addListener(worker_1); + emnapiTSFN.addListener(worker_1); + promises.push(p.then(function () { + if (typeof worker_1.unref === 'function') { + worker_1.unref(); + } + })); + ret = emnapiAWMT.pool.push(worker_1) - 1; + var arg = args[0]; + worker_1.threadBlockBase = arg; + worker_1.postMessage({ + __emnapi__: { + type: 'async-worker-init', + payload: { arg: arg, func: [f, globalAddress] } + } + }); + } + catch (err) { + var arg = args[0]; + _free(arg); + throw err; + } + return ret; + } + function initWorker(startArg, func) { + if (napiModule.childThread) { + if (typeof wasmInstance.exports.emnapi_async_worker_init !== 'function') { + throw new TypeError('`emnapi_async_worker_init` is not exported, please try to add `--export=emnapi_async_worker_init` to linker flags'); + } + wasmInstance.exports.emnapi_async_worker_init(startArg); + (wasmTable.get(func[0]))(func[1]); + } + else { + throw new Error('startThread is only available in child threads'); + } + } + napiModule.initWorker = initWorker; + var asyncWorkMod = Object.freeze({ + __proto__: null, + _emnapi_async_worker: _emnapi_async_worker, + _emnapi_spawn_worker: _emnapi_spawn_worker, + napi_cancel_async_work: napi_cancel_async_work, + napi_create_async_work: napi_create_async_work, + napi_delete_async_work: napi_delete_async_work, + napi_queue_async_work: napi_queue_async_work + }); + var emnapiExternalMemory = { + registry: typeof FinalizationRegistry === 'function' ? new FinalizationRegistry(function (_pointer) { _free(_pointer); }) : undefined, + table: new WeakMap(), + wasmMemoryViewTable: new WeakMap(), + init: function () { + emnapiExternalMemory.registry = typeof FinalizationRegistry === 'function' ? new FinalizationRegistry(function (_pointer) { _free(_pointer); }) : undefined; + emnapiExternalMemory.table = new WeakMap(); + emnapiExternalMemory.wasmMemoryViewTable = new WeakMap(); + }, + isSharedArrayBuffer: function (value) { + return ((typeof SharedArrayBuffer === 'function' && value instanceof SharedArrayBuffer) || + (Object.prototype.toString.call(value) === '[object SharedArrayBuffer]')); + }, + isDetachedArrayBuffer: function (arrayBuffer) { + if (arrayBuffer.byteLength === 0) { + try { + new Uint8Array(arrayBuffer); + } + catch (_) { + return true; + } + } + return false; + }, + getArrayBufferPointer: function (arrayBuffer, shouldCopy) { + var _a; + var info = { + address: 0, + ownership: 0, + runtimeAllocated: 0 + }; + if (arrayBuffer === wasmMemory.buffer) { + return info; + } + var isDetached = emnapiExternalMemory.isDetachedArrayBuffer(arrayBuffer); + if (emnapiExternalMemory.table.has(arrayBuffer)) { + var cachedInfo = emnapiExternalMemory.table.get(arrayBuffer); + if (isDetached) { + cachedInfo.address = 0; + return cachedInfo; + } + if (shouldCopy && cachedInfo.ownership === 0 && cachedInfo.runtimeAllocated === 1) { + new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), cachedInfo.address); + } + return cachedInfo; + } + if (isDetached || (arrayBuffer.byteLength === 0)) { + return info; + } + if (!shouldCopy) { + return info; + } + var pointer = _malloc(arrayBuffer.byteLength); + if (!pointer) + throw new Error('Out of memory'); + pointer >>>= 0; + new Uint8Array(wasmMemory.buffer).set(new Uint8Array(arrayBuffer), pointer); + info.address = pointer; + info.ownership = emnapiExternalMemory.registry ? 0 : 1; + info.runtimeAllocated = 1; + emnapiExternalMemory.table.set(arrayBuffer, info); + (_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(arrayBuffer, pointer); + return info; + }, + getOrUpdateMemoryView: function (view) { + if (view.buffer === wasmMemory.buffer) { + if (!emnapiExternalMemory.wasmMemoryViewTable.has(view)) { + emnapiExternalMemory.wasmMemoryViewTable.set(view, { + Ctor: view.constructor, + address: view.byteOffset, + length: view instanceof DataView ? view.byteLength : view.length, + ownership: 1, + runtimeAllocated: 0 + }); + } + return view; + } + var maybeOldWasmMemory = emnapiExternalMemory.isDetachedArrayBuffer(view.buffer) || emnapiExternalMemory.isSharedArrayBuffer(view.buffer); + if (maybeOldWasmMemory && emnapiExternalMemory.wasmMemoryViewTable.has(view)) { + var info = emnapiExternalMemory.wasmMemoryViewTable.get(view); + var Ctor = info.Ctor; + var newView = void 0; + var Buffer_1 = emnapiCtx.feature.Buffer; + if (typeof Buffer_1 === 'function' && Ctor === Buffer_1) { + newView = Buffer_1.from(wasmMemory.buffer, info.address, info.length); + } + else { + newView = new Ctor(wasmMemory.buffer, info.address, info.length); + } + emnapiExternalMemory.wasmMemoryViewTable.set(newView, info); + return newView; + } + return view; + }, + getViewPointer: function (view, shouldCopy) { + view = emnapiExternalMemory.getOrUpdateMemoryView(view); + if (view.buffer === wasmMemory.buffer) { + if (emnapiExternalMemory.wasmMemoryViewTable.has(view)) { + var _a = emnapiExternalMemory.wasmMemoryViewTable.get(view), address_1 = _a.address, ownership_1 = _a.ownership, runtimeAllocated_1 = _a.runtimeAllocated; + return { address: address_1, ownership: ownership_1, runtimeAllocated: runtimeAllocated_1, view: view }; + } + return { address: view.byteOffset, ownership: 1, runtimeAllocated: 0, view: view }; + } + var _b = emnapiExternalMemory.getArrayBufferPointer(view.buffer, shouldCopy), address = _b.address, ownership = _b.ownership, runtimeAllocated = _b.runtimeAllocated; + return { address: address === 0 ? 0 : (address + view.byteOffset), ownership: ownership, runtimeAllocated: runtimeAllocated, view: view }; + } + }; + var emnapiString = { + utf8Decoder: undefined, + utf16Decoder: undefined, + init: function () { + var fallbackDecoder = { + decode: function (bytes) { + var inputIndex = 0; + var pendingSize = Math.min(0x1000, bytes.length + 1); + var pending = new Uint16Array(pendingSize); + var chunks = []; + var pendingIndex = 0; + for (;;) { + var more = inputIndex < bytes.length; + if (!more || (pendingIndex >= pendingSize - 1)) { + var subarray = pending.subarray(0, pendingIndex); + var arraylike = subarray; + chunks.push(String.fromCharCode.apply(null, arraylike)); + if (!more) { + return chunks.join(''); + } + bytes = bytes.subarray(inputIndex); + inputIndex = 0; + pendingIndex = 0; + } + var byte1 = bytes[inputIndex++]; + if ((byte1 & 0x80) === 0) { + pending[pendingIndex++] = byte1; + } + else if ((byte1 & 0xe0) === 0xc0) { + var byte2 = bytes[inputIndex++] & 0x3f; + pending[pendingIndex++] = ((byte1 & 0x1f) << 6) | byte2; + } + else if ((byte1 & 0xf0) === 0xe0) { + var byte2 = bytes[inputIndex++] & 0x3f; + var byte3 = bytes[inputIndex++] & 0x3f; + pending[pendingIndex++] = ((byte1 & 0x1f) << 12) | (byte2 << 6) | byte3; + } + else if ((byte1 & 0xf8) === 0xf0) { + var byte2 = bytes[inputIndex++] & 0x3f; + var byte3 = bytes[inputIndex++] & 0x3f; + var byte4 = bytes[inputIndex++] & 0x3f; + var codepoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0c) | (byte3 << 0x06) | byte4; + if (codepoint > 0xffff) { + codepoint -= 0x10000; + pending[pendingIndex++] = (codepoint >>> 10) & 0x3ff | 0xd800; + codepoint = 0xdc00 | codepoint & 0x3ff; + } + pending[pendingIndex++] = codepoint; + } + else ; + } + } + }; + var utf8Decoder; + utf8Decoder = typeof TextDecoder === 'function' ? new TextDecoder() : fallbackDecoder; + emnapiString.utf8Decoder = utf8Decoder; + var fallbackDecoder2 = { + decode: function (input) { + var bytes = new Uint16Array(input.buffer, input.byteOffset, input.byteLength / 2); + if (bytes.length <= 0x1000) { + return String.fromCharCode.apply(null, bytes); + } + var chunks = []; + var i = 0; + var len = 0; + for (; i < bytes.length; i += len) { + len = Math.min(0x1000, bytes.length - i); + chunks.push(String.fromCharCode.apply(null, bytes.subarray(i, i + len))); + } + return chunks.join(''); + } + }; + var utf16Decoder; + utf16Decoder = typeof TextDecoder === 'function' ? new TextDecoder('utf-16le') : fallbackDecoder2; + emnapiString.utf16Decoder = utf16Decoder; + }, + lengthBytesUTF8: function (str) { + var c; + var len = 0; + for (var i = 0; i < str.length; ++i) { + c = str.charCodeAt(i); + if (c <= 0x7F) { + len++; + } + else if (c <= 0x7FF) { + len += 2; + } + else if (c >= 0xD800 && c <= 0xDFFF) { + len += 4; + ++i; + } + else { + len += 3; + } + } + return len; + }, + UTF8ToString: function (ptr, length) { + if (!ptr || !length) + return ''; + ptr >>>= 0; + var HEAPU8 = new Uint8Array(wasmMemory.buffer); + var end = ptr; + if (length === -1 || length === 4294967295) { + for (; HEAPU8[end];) + ++end; + } + else { + end = ptr + (length >>> 0); + } + length = end - ptr; + if (length <= 16) { + var idx = ptr; + var str = ''; + while (idx < end) { + var u0 = HEAPU8[idx++]; + if (!(u0 & 0x80)) { + str += String.fromCharCode(u0); + continue; + } + var u1 = HEAPU8[idx++] & 63; + if ((u0 & 0xE0) === 0xC0) { + str += String.fromCharCode(((u0 & 31) << 6) | u1); + continue; + } + var u2 = HEAPU8[idx++] & 63; + if ((u0 & 0xF0) === 0xE0) { + u0 = ((u0 & 15) << 12) | (u1 << 6) | u2; + } + else { + u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (HEAPU8[idx++] & 63); + } + if (u0 < 0x10000) { + str += String.fromCharCode(u0); + } + else { + var ch = u0 - 0x10000; + str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); + } + } + return str; + } + return emnapiString.utf8Decoder.decode(((typeof SharedArrayBuffer === "function" && HEAPU8.buffer instanceof SharedArrayBuffer) || (Object.prototype.toString.call(HEAPU8.buffer) === "[object SharedArrayBuffer]")) ? HEAPU8.slice(ptr, end) : HEAPU8.subarray(ptr, end)); + }, + stringToUTF8: function (str, outPtr, maxBytesToWrite) { + var HEAPU8 = new Uint8Array(wasmMemory.buffer); + var outIdx = outPtr; + outIdx >>>= 0; + if (!(maxBytesToWrite > 0)) { + return 0; + } + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 0xD800 && u <= 0xDFFF) { + var u1 = str.charCodeAt(++i); + u = 0x10000 + ((u & 0x3FF) << 10) | (u1 & 0x3FF); + } + if (u <= 0x7F) { + if (outIdx >= endIdx) + break; + HEAPU8[outIdx++] = u; + } + else if (u <= 0x7FF) { + if (outIdx + 1 >= endIdx) + break; + HEAPU8[outIdx++] = 0xC0 | (u >> 6); + HEAPU8[outIdx++] = 0x80 | (u & 63); + } + else if (u <= 0xFFFF) { + if (outIdx + 2 >= endIdx) + break; + HEAPU8[outIdx++] = 0xE0 | (u >> 12); + HEAPU8[outIdx++] = 0x80 | ((u >> 6) & 63); + HEAPU8[outIdx++] = 0x80 | (u & 63); + } + else { + if (outIdx + 3 >= endIdx) + break; + HEAPU8[outIdx++] = 0xF0 | (u >> 18); + HEAPU8[outIdx++] = 0x80 | ((u >> 12) & 63); + HEAPU8[outIdx++] = 0x80 | ((u >> 6) & 63); + HEAPU8[outIdx++] = 0x80 | (u & 63); + } + } + HEAPU8[outIdx] = 0; + return outIdx - startIdx; + }, + UTF16ToString: function (ptr, length) { + if (!ptr || !length) + return ''; + ptr >>>= 0; + var end = ptr; + if (length === -1 || length === 4294967295) { + var idx = end >>> 1; + var HEAPU16 = new Uint16Array(wasmMemory.buffer); + while (HEAPU16[idx]) + ++idx; + end = (idx << 1) >>> 0; + } + else { + end = ptr + (length >>> 0) * 2; + } + length = end - ptr; + if (length <= 32) { + return String.fromCharCode.apply(null, new Uint16Array(wasmMemory.buffer, ptr, length / 2)); + } + var HEAPU8 = new Uint8Array(wasmMemory.buffer); + return emnapiString.utf16Decoder.decode(((typeof SharedArrayBuffer === "function" && HEAPU8.buffer instanceof SharedArrayBuffer) || (Object.prototype.toString.call(HEAPU8.buffer) === "[object SharedArrayBuffer]")) ? HEAPU8.slice(ptr, end) : HEAPU8.subarray(ptr, end)); + }, + stringToUTF16: function (str, outPtr, maxBytesToWrite) { + if (maxBytesToWrite === undefined) { + maxBytesToWrite = 0x7FFFFFFF; + } + if (maxBytesToWrite < 2) + return 0; + maxBytesToWrite -= 2; + var startPtr = outPtr; + var numCharsToWrite = (maxBytesToWrite < str.length * 2) ? (maxBytesToWrite / 2) : str.length; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + for (var i = 0; i < numCharsToWrite; ++i) { + var codeUnit = str.charCodeAt(i); + HEAP_DATA_VIEW.setInt16(outPtr, codeUnit, true); + outPtr += 2; + } + HEAP_DATA_VIEW.setInt16(outPtr, 0, true); + return outPtr - startPtr; + }, + newString: function (env, str, length, result, stringMaker) { + length >>>= 0; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + var autoLength = length === -1 || length === 4294967295; + var sizelength = length >>> 0; + if (length !== 0) { + if (!str) + return envObject.setLastError(1); + } + if (!result) + return envObject.setLastError(1); + if (!(autoLength || (sizelength <= 2147483647))) + return envObject.setLastError(1); + str >>>= 0; + var strValue = stringMaker(str, autoLength, sizelength); + result >>>= 0; + var value = emnapiCtx.addToCurrentScope(strValue).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + }, + newExternalString: function (env, str, length, finalize_callback, finalize_hint, result, copied, createApi, stringMaker) { + length >>>= 0; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + var autoLength = length === -1 || length === 4294967295; + var sizelength = length >>> 0; + if (length !== 0) { + if (!str) + return envObject.setLastError(1); + } + if (!result) + return envObject.setLastError(1); + if (!(autoLength || (sizelength <= 2147483647))) + return envObject.setLastError(1); + var status = createApi(env, str, length, result); + if (status === 0) { + if (copied) { + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(copied, 1, true); + } + if (finalize_callback) { + envObject.callFinalizer(finalize_callback, str, finalize_hint); + } + } + return status; + } + }; + function napi_get_array_length(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + if (!handle.isArray()) { + return envObject.setLastError(8); + } + result >>>= 0; + var v = handle.value.length >>> 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_get_arraybuffer_info(env, arraybuffer, data, byte_length) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!arraybuffer) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(arraybuffer); + if (!handle.isArrayBuffer() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) { + return envObject.setLastError(1); + } + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (data) { + data >>>= 0; + var p = emnapiExternalMemory.getArrayBufferPointer(handle.value, true).address; + HEAP_DATA_VIEW.setUint32(data, p, true); + } + if (byte_length) { + byte_length >>>= 0; + HEAP_DATA_VIEW.setUint32(byte_length, handle.value.byteLength, true); + } + return envObject.clearLastError(); + } + function node_api_set_prototype(env, object, value) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1); + var obj = emnapiCtx.handleStore.get(object).value; + if (obj == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var type = typeof obj; + var v = void 0; + try { + v = (type === 'object' && obj !== null) || type === 'function' ? obj : Object(obj); + } + catch (_) { + return envObject.setLastError(2); + } + var val = emnapiCtx.handleStore.get(value).value; + Object.setPrototypeOf(v, val); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_get_prototype(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + if (handle.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var v = void 0; + try { + v = handle.isObject() || handle.isFunction() ? handle.value : Object(handle.value); + } + catch (_) { + return envObject.setLastError(2); + } + result >>>= 0; + var p = envObject.ensureHandleId(Object.getPrototypeOf(v)); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, p, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_get_typedarray_info(env, typedarray, type, length, data, arraybuffer, byte_offset) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!typedarray) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(typedarray); + if (!handle.isTypedArray()) { + return envObject.setLastError(1); + } + var v = handle.value; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (type) { + type >>>= 0; + var t = void 0; + if (v instanceof Int8Array) { + t = 0; + } + else if (v instanceof Uint8Array) { + t = 1; + } + else if (v instanceof Uint8ClampedArray) { + t = 2; + } + else if (v instanceof Int16Array) { + t = 3; + } + else if (v instanceof Uint16Array) { + t = 4; + } + else if (v instanceof Int32Array) { + t = 5; + } + else if (v instanceof Uint32Array) { + t = 6; + } + else if (typeof Float16Array === 'function' && v instanceof Float16Array) { + t = 11; + } + else if (v instanceof Float32Array) { + t = 7; + } + else if (v instanceof Float64Array) { + t = 8; + } + else if (v instanceof BigInt64Array) { + t = 9; + } + else if (v instanceof BigUint64Array) { + t = 10; + } + else { + return envObject.setLastError(9); + } + HEAP_DATA_VIEW.setInt32(type, t, true); + } + v = emnapiExternalMemory.getOrUpdateMemoryView(v); + if (length) { + length >>>= 0; + HEAP_DATA_VIEW.setUint32(length, v.length, true); + } + if (data || arraybuffer) { + if (data) { + data >>>= 0; + var p = emnapiExternalMemory.getViewPointer(v, true).address; + HEAP_DATA_VIEW.setUint32(data, p, true); + } + if (arraybuffer) { + arraybuffer >>>= 0; + var ab = envObject.ensureHandleId(v.buffer); + HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true); + } + } + if (byte_offset) { + byte_offset >>>= 0; + HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true); + } + return envObject.clearLastError(); + } + function napi_get_buffer_info(env, buffer, data, length) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!buffer) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(buffer); + if (!handle.isBuffer(emnapiCtx.feature.Buffer)) + return envObject.setLastError(1); + if (handle.isDataView()) { + return napi_get_dataview_info(env, buffer, length, data, 0, 0); + } + return napi_get_typedarray_info(env, buffer, 0, length, data, 0, 0); + } + function napi_get_dataview_info(env, dataview, byte_length, data, arraybuffer, byte_offset) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!dataview) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(dataview); + if (!handle.isDataView()) { + return envObject.setLastError(1); + } + var v = emnapiExternalMemory.getOrUpdateMemoryView(handle.value); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (byte_length) { + byte_length >>>= 0; + HEAP_DATA_VIEW.setUint32(byte_length, v.byteLength, true); + } + if (data || arraybuffer) { + if (data) { + data >>>= 0; + var p = emnapiExternalMemory.getViewPointer(v, true).address; + HEAP_DATA_VIEW.setUint32(data, p, true); + } + if (arraybuffer) { + arraybuffer >>>= 0; + var ab = envObject.ensureHandleId(v.buffer); + HEAP_DATA_VIEW.setUint32(arraybuffer, ab, true); + } + } + if (byte_offset) { + byte_offset >>>= 0; + HEAP_DATA_VIEW.setUint32(byte_offset, v.byteOffset, true); + } + return envObject.clearLastError(); + } + function napi_get_date_value(env, value, result) { + var v; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + if (!handle.isDate()) { + return envObject.setLastError(1); + } + result >>>= 0; + v = handle.value.valueOf(); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setFloat64(result, v, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_get_value_bool(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + if (typeof handle.value !== 'boolean') { + return envObject.setLastError(7); + } + result >>>= 0; + var r = handle.value ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + function napi_get_value_double(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + if (typeof handle.value !== 'number') { + return envObject.setLastError(6); + } + result >>>= 0; + var r = handle.value; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setFloat64(result, r, true); + return envObject.clearLastError(); + } + function napi_get_value_bigint_int64(env, value, result, lossless) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!emnapiCtx.feature.supportBigInt) { + return envObject.setLastError(9); + } + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + if (!lossless) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + var numberValue = handle.value; + if (typeof numberValue !== 'bigint') { + return envObject.setLastError(6); + } + lossless >>>= 0; + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if ((numberValue >= (BigInt(-1) * (BigInt(1) << BigInt(63)))) && (numberValue < (BigInt(1) << BigInt(63)))) { + HEAP_DATA_VIEW.setInt8(lossless, 1, true); + } + else { + HEAP_DATA_VIEW.setInt8(lossless, 0, true); + numberValue = numberValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); + if (numberValue >= (BigInt(1) << BigInt(63))) { + numberValue = numberValue - (BigInt(1) << BigInt(64)); + } + } + var low = Number(numberValue & BigInt(0xffffffff)); + var high = Number(numberValue >> BigInt(32)); + HEAP_DATA_VIEW.setInt32(result, low, true); + HEAP_DATA_VIEW.setInt32(result + 4, high, true); + return envObject.clearLastError(); + } + function napi_get_value_bigint_uint64(env, value, result, lossless) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!emnapiCtx.feature.supportBigInt) { + return envObject.setLastError(9); + } + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + if (!lossless) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + var numberValue = handle.value; + if (typeof numberValue !== 'bigint') { + return envObject.setLastError(6); + } + lossless >>>= 0; + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if ((numberValue >= BigInt(0)) && (numberValue < (BigInt(1) << BigInt(64)))) { + HEAP_DATA_VIEW.setInt8(lossless, 1, true); + } + else { + HEAP_DATA_VIEW.setInt8(lossless, 0, true); + numberValue = numberValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); + } + var low = Number(numberValue & BigInt(0xffffffff)); + var high = Number(numberValue >> BigInt(32)); + HEAP_DATA_VIEW.setUint32(result, low, true); + HEAP_DATA_VIEW.setUint32(result + 4, high, true); + return envObject.clearLastError(); + } + function napi_get_value_bigint_words(env, value, sign_bit, word_count, words) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!emnapiCtx.feature.supportBigInt) { + return envObject.setLastError(9); + } + if (!value) + return envObject.setLastError(1); + if (!word_count) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + if (!handle.isBigInt()) { + return envObject.setLastError(17); + } + var isMinus = handle.value < BigInt(0); + sign_bit >>>= 0; + words >>>= 0; + word_count >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + var word_count_int = HEAP_DATA_VIEW.getUint32(word_count, true); + word_count_int >>>= 0; + var wordCount = 0; + var bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value; + while (bigintValue !== BigInt(0)) { + wordCount++; + bigintValue = bigintValue >> BigInt(64); + } + bigintValue = isMinus ? (handle.value * BigInt(-1)) : handle.value; + if (!sign_bit && !words) { + word_count_int = wordCount; + HEAP_DATA_VIEW.setUint32(word_count, word_count_int, true); + } + else { + if (!sign_bit) + return envObject.setLastError(1); + if (!words) + return envObject.setLastError(1); + var wordsArr = []; + while (bigintValue !== BigInt(0)) { + var uint64 = bigintValue & ((BigInt(1) << BigInt(64)) - BigInt(1)); + wordsArr.push(uint64); + bigintValue = bigintValue >> BigInt(64); + } + var len = Math.min(word_count_int, wordsArr.length); + for (var i = 0; i < len; i++) { + var low = Number(wordsArr[i] & BigInt(0xffffffff)); + var high = Number(wordsArr[i] >> BigInt(32)); + HEAP_DATA_VIEW.setUint32(words + i * 8, low, true); + HEAP_DATA_VIEW.setUint32(words + (i * 8 + 4), high, true); + } + HEAP_DATA_VIEW.setInt32(sign_bit, isMinus ? 1 : 0, true); + HEAP_DATA_VIEW.setUint32(word_count, len, true); + } + return envObject.clearLastError(); + } + function napi_get_value_external(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + if (!handle.isExternal()) { + return envObject.setLastError(1); + } + result >>>= 0; + var p = handle.data(); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, p, true); + return envObject.clearLastError(); + } + function napi_get_value_int32(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + if (typeof handle.value !== 'number') { + return envObject.setLastError(6); + } + result >>>= 0; + var v = new Int32Array([handle.value])[0]; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt32(result, v, true); + return envObject.clearLastError(); + } + function napi_get_value_int64(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + if (typeof handle.value !== 'number') { + return envObject.setLastError(6); + } + var numberValue = handle.value; + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (numberValue === Number.POSITIVE_INFINITY || numberValue === Number.NEGATIVE_INFINITY || isNaN(numberValue)) { + HEAP_DATA_VIEW.setInt32(result, 0, true); + HEAP_DATA_VIEW.setInt32(result + 4, 0, true); + } + else if (numberValue < -9223372036854776e3) { + HEAP_DATA_VIEW.setInt32(result, 0, true); + HEAP_DATA_VIEW.setInt32(result + 4, 2147483648, true); + } + else if (numberValue >= 9223372036854776000) { + HEAP_DATA_VIEW.setUint32(result, 4294967295, true); + HEAP_DATA_VIEW.setUint32(result + 4, 2147483647, true); + } + else { + $emnapiSetValueI64(result, Math.trunc(numberValue)); + } + return envObject.clearLastError(); + } + function napi_get_value_string_latin1(env, value, buf, buf_size, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + result >>>= 0; + buf >>>= 0; + buf_size >>>= 0; + buf_size = buf_size >>> 0; + var handle = emnapiCtx.handleStore.get(value); + if (typeof handle.value !== 'string') { + return envObject.setLastError(3); + } + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (!buf) { + if (!result) + return envObject.setLastError(1); + HEAP_DATA_VIEW.setUint32(result, handle.value.length, true); + } + else if (buf_size !== 0) { + var copied = 0; + var v = void 0; + for (var i = 0; i < buf_size - 1; ++i) { + v = handle.value.charCodeAt(i) & 0xff; + HEAP_DATA_VIEW.setUint8(buf + i, v, true); + copied++; + } + HEAP_DATA_VIEW.setUint8(buf + copied, 0, true); + if (result) { + HEAP_DATA_VIEW.setUint32(result, copied, true); + } + } + else if (result) { + HEAP_DATA_VIEW.setUint32(result, 0, true); + } + return envObject.clearLastError(); + } + function napi_get_value_string_utf8(env, value, buf, buf_size, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + result >>>= 0; + buf >>>= 0; + buf_size >>>= 0; + buf_size = buf_size >>> 0; + var handle = emnapiCtx.handleStore.get(value); + if (typeof handle.value !== 'string') { + return envObject.setLastError(3); + } + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (!buf) { + if (!result) + return envObject.setLastError(1); + var strLength = emnapiString.lengthBytesUTF8(handle.value); + HEAP_DATA_VIEW.setUint32(result, strLength, true); + } + else if (buf_size !== 0) { + var copied = emnapiString.stringToUTF8(handle.value, buf, buf_size); + if (result) { + HEAP_DATA_VIEW.setUint32(result, copied, true); + } + } + else if (result) { + HEAP_DATA_VIEW.setUint32(result, 0, true); + } + return envObject.clearLastError(); + } + function napi_get_value_string_utf16(env, value, buf, buf_size, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + result >>>= 0; + buf >>>= 0; + buf_size >>>= 0; + buf_size = buf_size >>> 0; + var handle = emnapiCtx.handleStore.get(value); + if (typeof handle.value !== 'string') { + return envObject.setLastError(3); + } + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (!buf) { + if (!result) + return envObject.setLastError(1); + HEAP_DATA_VIEW.setUint32(result, handle.value.length, true); + } + else if (buf_size !== 0) { + var copied = emnapiString.stringToUTF16(handle.value, buf, buf_size * 2); + if (result) { + HEAP_DATA_VIEW.setUint32(result, copied / 2, true); + } + } + else if (result) { + HEAP_DATA_VIEW.setUint32(result, 0, true); + } + return envObject.clearLastError(); + } + function napi_get_value_uint32(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + if (typeof handle.value !== 'number') { + return envObject.setLastError(6); + } + result >>>= 0; + var v = new Uint32Array([handle.value])[0]; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.clearLastError(); + } + var convert2cMod = Object.freeze({ + __proto__: null, + napi_get_array_length: napi_get_array_length, + napi_get_arraybuffer_info: napi_get_arraybuffer_info, + napi_get_buffer_info: napi_get_buffer_info, + napi_get_dataview_info: napi_get_dataview_info, + napi_get_date_value: napi_get_date_value, + napi_get_prototype: napi_get_prototype, + napi_get_typedarray_info: napi_get_typedarray_info, + napi_get_value_bigint_int64: napi_get_value_bigint_int64, + napi_get_value_bigint_uint64: napi_get_value_bigint_uint64, + napi_get_value_bigint_words: napi_get_value_bigint_words, + napi_get_value_bool: napi_get_value_bool, + napi_get_value_double: napi_get_value_double, + napi_get_value_external: napi_get_value_external, + napi_get_value_int32: napi_get_value_int32, + napi_get_value_int64: napi_get_value_int64, + napi_get_value_string_latin1: napi_get_value_string_latin1, + napi_get_value_string_utf16: napi_get_value_string_utf16, + napi_get_value_string_utf8: napi_get_value_string_utf8, + napi_get_value_uint32: napi_get_value_uint32, + node_api_set_prototype: node_api_set_prototype + }); + function napi_create_int32(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + result >>>= 0; + var v = emnapiCtx.addToCurrentScope(value).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.clearLastError(); + } + function napi_create_uint32(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + result >>>= 0; + var v = emnapiCtx.addToCurrentScope(value >>> 0).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.clearLastError(); + } + function napi_create_int64(env, low, high, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + var value; + if (!high) + return envObject.setLastError(1); + value = Number(low); + var v1 = emnapiCtx.addToCurrentScope(value).id; + high >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(high, v1, true); + return envObject.clearLastError(); + } + function napi_create_double(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + result >>>= 0; + var v = emnapiCtx.addToCurrentScope(value).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.clearLastError(); + } + function napi_create_string_latin1(env, str, length, result) { + return emnapiString.newString(env, str, length, result, function (str, autoLength, sizeLength) { + var latin1String = ''; + var len = 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (autoLength) { + while (true) { + var ch = HEAP_DATA_VIEW.getUint8(str, true); + if (!ch) + break; + latin1String += String.fromCharCode(ch); + str++; + } + } + else { + while (len < sizeLength) { + var ch = HEAP_DATA_VIEW.getUint8(str, true); + if (!ch) + break; + latin1String += String.fromCharCode(ch); + len++; + str++; + } + } + return latin1String; + }); + } + function napi_create_string_utf16(env, str, length, result) { + return emnapiString.newString(env, str, length, result, function (str) { + return emnapiString.UTF16ToString(str, length); + }); + } + function napi_create_string_utf8(env, str, length, result) { + return emnapiString.newString(env, str, length, result, function (str) { + return emnapiString.UTF8ToString(str, length); + }); + } + function node_api_create_external_string_latin1(env, str, length, finalize_callback, finalize_hint, result, copied) { + return emnapiString.newExternalString(env, str, length, finalize_callback, finalize_hint, result, copied, napi_create_string_latin1, undefined); + } + function node_api_create_external_string_utf16(env, str, length, finalize_callback, finalize_hint, result, copied) { + return emnapiString.newExternalString(env, str, length, finalize_callback, finalize_hint, result, copied, napi_create_string_utf16, undefined); + } + function node_api_create_property_key_latin1(env, str, length, result) { + return napi_create_string_latin1(env, str, length, result); + } + function node_api_create_property_key_utf8(env, str, length, result) { + return napi_create_string_utf8(env, str, length, result); + } + function node_api_create_property_key_utf16(env, str, length, result) { + return napi_create_string_utf16(env, str, length, result); + } + function napi_create_bigint_int64(env, low, high, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!emnapiCtx.feature.supportBigInt) { + return envObject.setLastError(9); + } + var value; + if (!high) + return envObject.setLastError(1); + value = low; + var v1 = emnapiCtx.addToCurrentScope(value).id; + high >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(high, v1, true); + return envObject.clearLastError(); + } + function napi_create_bigint_uint64(env, low, high, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!emnapiCtx.feature.supportBigInt) { + return envObject.setLastError(9); + } + var value; + if (!high) + return envObject.setLastError(1); + value = low & ((BigInt(1) << BigInt(64)) - BigInt(1)); + var v1 = emnapiCtx.addToCurrentScope(value).id; + high >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(high, v1, true); + return envObject.clearLastError(); + } + function napi_create_bigint_words(env, sign_bit, word_count, words, result) { + var v, i; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!emnapiCtx.feature.supportBigInt) { + return envObject.setLastError(9); + } + if (!result) + return envObject.setLastError(1); + words >>>= 0; + word_count >>>= 0; + word_count = word_count >>> 0; + if (word_count > 2147483647) { + return envObject.setLastError(1); + } + if (word_count > (1024 * 1024 / (4 * 8) / 2)) { + throw new RangeError('Maximum BigInt size exceeded'); + } + var value = BigInt(0); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + for (i = 0; i < word_count; i++) { + var low = HEAP_DATA_VIEW.getUint32(words + i * 8, true); + var high = HEAP_DATA_VIEW.getUint32(words + (i * 8 + 4), true); + var wordi = BigInt(low) | (BigInt(high) << BigInt(32)); + value += wordi << BigInt(64 * i); + } + value *= ((BigInt(sign_bit) % BigInt(2) === BigInt(0)) ? BigInt(1) : BigInt(-1)); + result >>>= 0; + v = emnapiCtx.addToCurrentScope(value).id; + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + var convert2napiMod = Object.freeze({ + __proto__: null, + napi_create_bigint_int64: napi_create_bigint_int64, + napi_create_bigint_uint64: napi_create_bigint_uint64, + napi_create_bigint_words: napi_create_bigint_words, + napi_create_double: napi_create_double, + napi_create_int32: napi_create_int32, + napi_create_int64: napi_create_int64, + napi_create_string_latin1: napi_create_string_latin1, + napi_create_string_utf16: napi_create_string_utf16, + napi_create_string_utf8: napi_create_string_utf8, + napi_create_uint32: napi_create_uint32, + node_api_create_external_string_latin1: node_api_create_external_string_latin1, + node_api_create_external_string_utf16: node_api_create_external_string_utf16, + node_api_create_property_key_latin1: node_api_create_property_key_latin1, + node_api_create_property_key_utf16: node_api_create_property_key_utf16, + node_api_create_property_key_utf8: node_api_create_property_key_utf8 + }); + function emnapiCreateFunction(envObject, utf8name, length, cb, data) { + utf8name >>>= 0; + var functionName = (!utf8name || !length) ? '' : (emnapiString.UTF8ToString(utf8name, length)); + var f; + var napiCallback = (wasmTable.get(cb)); + var callback = function (envObject) { + return napiCallback(envObject.id, envObject.ctx.scopeStore.currentScope.id); + }; + var makeFunction = function (envObject, callback) { + return function () { + var scope = envObject.ctx.openScope(envObject); + var callbackInfo = scope.callbackInfo; + callbackInfo.data = data; + callbackInfo.args = arguments; + callbackInfo.thiz = this; + callbackInfo.fn = f; + try { + var napiValue = envObject.callIntoModule(callback); + return (!napiValue) ? undefined : envObject.ctx.handleStore.get(napiValue).value; + } + finally { + callbackInfo.data = 0; + callbackInfo.args = undefined; + callbackInfo.thiz = undefined; + callbackInfo.fn = undefined; + envObject.ctx.closeScope(envObject, scope); + } + }; + }; + if (functionName === '') { + f = makeFunction(envObject, callback); + return { status: 0, f: f }; + } + if (!(/^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(functionName))) { + return { status: 1, f: undefined }; + } + if (emnapiCtx.feature.supportNewFunction) { + var _ = makeFunction(envObject, callback); + try { + f = (new Function('_', 'return function ' + functionName + '(){' + + '"use strict";' + + 'return _.apply(this,arguments);' + + '};'))(_); + } + catch (_err) { + f = makeFunction(envObject, callback); + if (emnapiCtx.feature.canSetFunctionName) + Object.defineProperty(f, 'name', { value: functionName }); + } + } + else { + f = makeFunction(envObject, callback); + if (emnapiCtx.feature.canSetFunctionName) + Object.defineProperty(f, 'name', { value: functionName }); + } + return { status: 0, f: f }; + } + function emnapiDefineProperty(envObject, obj, propertyName, method, getter, setter, value, attributes, data) { + if (getter || setter) { + var localGetter = void 0; + var localSetter = void 0; + if (getter) { + localGetter = emnapiCreateFunction(envObject, 0, 0, getter, data).f; + } + if (setter) { + localSetter = emnapiCreateFunction(envObject, 0, 0, setter, data).f; + } + var desc = { + configurable: (attributes & 4) !== 0, + enumerable: (attributes & 2) !== 0, + get: localGetter, + set: localSetter + }; + Object.defineProperty(obj, propertyName, desc); + } + else if (method) { + var localMethod = emnapiCreateFunction(envObject, 0, 0, method, data).f; + var desc = { + configurable: (attributes & 4) !== 0, + enumerable: (attributes & 2) !== 0, + writable: (attributes & 1) !== 0, + value: localMethod + }; + Object.defineProperty(obj, propertyName, desc); + } + else { + var desc = { + configurable: (attributes & 4) !== 0, + enumerable: (attributes & 2) !== 0, + writable: (attributes & 1) !== 0, + value: emnapiCtx.handleStore.get(value).value + }; + Object.defineProperty(obj, propertyName, desc); + } + } + function emnapiGetHandle(js_object) { + var handle = emnapiCtx.handleStore.get(js_object); + if (!(handle.isObject() || handle.isFunction())) { + return { status: 1 }; + } + if (typeof emnapiExternalMemory !== 'undefined' && ArrayBuffer.isView(handle.value)) { + if (emnapiExternalMemory.wasmMemoryViewTable.has(handle.value)) { + handle = emnapiCtx.addToCurrentScope(emnapiExternalMemory.wasmMemoryViewTable.get(handle.value)); + } + } + return { status: 0, handle: handle }; + } + function emnapiWrap(env, js_object, native_object, finalize_cb, finalize_hint, result) { + var referenceId; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!emnapiCtx.feature.supportFinalizer) { + if (finalize_cb) { + throw emnapiCtx.createNotSupportWeakRefError('napi_wrap', 'Parameter "finalize_cb" must be 0(NULL)'); + } + if (result) { + throw emnapiCtx.createNotSupportWeakRefError('napi_wrap', 'Parameter "result" must be 0(NULL)'); + } + } + if (!js_object) + return envObject.setLastError(1); + var handleResult = emnapiGetHandle(js_object); + if (handleResult.status !== 0) { + return envObject.setLastError(handleResult.status); + } + var handle = handleResult.handle; + if (envObject.getObjectBinding(handle.value).wrapped !== 0) { + return envObject.setLastError(1); + } + var reference = void 0; + if (result) { + if (!finalize_cb) + return envObject.setLastError(1); + reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 1, finalize_cb, native_object, finalize_hint); + result >>>= 0; + referenceId = reference.id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, referenceId, true); + } + else { + if (finalize_cb) { + reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, 0, finalize_cb, native_object, finalize_hint); + } + else { + reference = emnapiCtx.createReferenceWithData(envObject, handle.id, 0, 0, native_object); + } + } + envObject.getObjectBinding(handle.value).wrapped = reference.id; + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function emnapiUnwrap(env, js_object, result, action) { + var data; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!js_object) + return envObject.setLastError(1); + if (action === 0) { + if (!result) + return envObject.setLastError(1); + } + var value = emnapiCtx.handleStore.get(js_object); + if (!(value.isObject() || value.isFunction())) { + return envObject.setLastError(1); + } + var binding = envObject.getObjectBinding(value.value); + var referenceId = binding.wrapped; + var ref = emnapiCtx.refStore.get(referenceId); + if (!ref) + return envObject.setLastError(1); + if (result) { + result >>>= 0; + data = ref.data(); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, data, true); + } + if (action === 1) { + binding.wrapped = 0; + if (ref.ownership() === 1) { + ref.resetFinalizer(); + } + else { + ref.dispose(); + } + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_define_class(env, utf8name, length, constructor, callback_data, property_count, properties, result) { + var propPtr, valueHandleId, attributes; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1); + if (!constructor) + return envObject.setLastError(1); + length >>>= 0; + properties >>>= 0; + property_count >>>= 0; + property_count = property_count >>> 0; + if (property_count > 0) { + if (!properties) + return envObject.setLastError(1); + } + if (!((length >= -1 && length <= 2147483647) || length === 4294967295) || (!utf8name)) { + return envObject.setLastError(1); + } + var fresult = emnapiCreateFunction(envObject, utf8name, length, constructor, callback_data); + if (fresult.status !== 0) + return envObject.setLastError(fresult.status); + var F = fresult.f; + var propertyName = void 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + for (var i = 0; i < property_count; i++) { + propPtr = properties + (i * (4 * 8)); + var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true); + var name_1 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true); + var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true); + var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true); + var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true); + var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true); + attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true); + attributes >>>= 0; + var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true); + if (utf8Name) { + propertyName = emnapiString.UTF8ToString(utf8Name, -1); + } + else { + if (!name_1) { + return envObject.setLastError(4); + } + propertyName = emnapiCtx.handleStore.get(name_1).value; + if (typeof propertyName !== 'string' && typeof propertyName !== 'symbol') { + return envObject.setLastError(4); + } + } + if ((attributes & 1024) !== 0) { + emnapiDefineProperty(envObject, F, propertyName, method, getter, setter, value, attributes, data); + continue; + } + emnapiDefineProperty(envObject, F.prototype, propertyName, method, getter, setter, value, attributes, data); + } + var valueHandle = emnapiCtx.addToCurrentScope(F); + valueHandleId = valueHandle.id; + result >>>= 0; + HEAP_DATA_VIEW.setUint32(result, valueHandleId, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_wrap(env, js_object, native_object, finalize_cb, finalize_hint, result) { + return emnapiWrap(env, js_object, native_object, finalize_cb, finalize_hint, result); + } + function napi_unwrap(env, js_object, result) { + return emnapiUnwrap(env, js_object, result, 0); + } + function napi_remove_wrap(env, js_object, result) { + return emnapiUnwrap(env, js_object, result, 1); + } + function napi_type_tag_object(env, object, type_tag) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!object) { + return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1); + } + var value = emnapiCtx.handleStore.get(object); + if (!(value.isObject() || value.isFunction())) { + return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 2); + } + type_tag >>>= 0; + if (!type_tag) { + return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1); + } + var binding = envObject.getObjectBinding(value.value); + if (binding.tag !== null) { + return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1); + } + var tag = new Uint8Array(16); + tag.set(new Uint8Array(wasmMemory.buffer, type_tag, 16)); + binding.tag = new Uint32Array(tag.buffer); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_check_object_type_tag(env, object, type_tag, result) { + var ret = true; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!object) { + return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1); + } + var value = emnapiCtx.handleStore.get(object); + if (!(value.isObject() || value.isFunction())) { + return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 2); + } + if (!type_tag) { + return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1); + } + if (!result) { + return envObject.setLastError(envObject.tryCatch.hasCaught() ? 10 : 1); + } + var binding = envObject.getObjectBinding(value.value); + if (binding.tag !== null) { + type_tag >>>= 0; + var tag = binding.tag; + var typeTag = new Uint32Array(wasmMemory.buffer, type_tag, 4); + ret = (tag[0] === typeTag[0] && + tag[1] === typeTag[1] && + tag[2] === typeTag[2] && + tag[3] === typeTag[3]); + } + else { + ret = false; + } + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, ret ? 1 : 0, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_add_finalizer(env, js_object, finalize_data, finalize_cb, finalize_hint, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!emnapiCtx.feature.supportFinalizer) { + return envObject.setLastError(9); + } + if (!js_object) + return envObject.setLastError(1); + if (!finalize_cb) + return envObject.setLastError(1); + var handleResult = emnapiGetHandle(js_object); + if (handleResult.status !== 0) { + return envObject.setLastError(handleResult.status); + } + var handle = handleResult.handle; + var ownership = !result ? 0 : 1; + finalize_data >>>= 0; + finalize_cb >>>= 0; + finalize_hint >>>= 0; + var reference = emnapiCtx.createReferenceWithFinalizer(envObject, handle.id, 0, ownership, finalize_cb, finalize_data, finalize_hint); + if (result) { + result >>>= 0; + var referenceId = reference.id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, referenceId, true); + } + return envObject.clearLastError(); + } + function node_api_post_finalizer(env, finalize_cb, finalize_data, finalize_hint) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.enqueueFinalizer(emnapiCtx.createTrackedFinalizer(envObject, finalize_cb, finalize_data, finalize_hint)); + return envObject.clearLastError(); + } + var wrapMod = Object.freeze({ + __proto__: null, + napi_add_finalizer: napi_add_finalizer, + napi_check_object_type_tag: napi_check_object_type_tag, + napi_define_class: napi_define_class, + napi_remove_wrap: napi_remove_wrap, + napi_type_tag_object: napi_type_tag_object, + napi_unwrap: napi_unwrap, + napi_wrap: napi_wrap, + node_api_post_finalizer: node_api_post_finalizer + }); + function emnapi_create_memory_view(env, typedarray_type, external_data, byte_length, finalize_cb, finalize_hint, result) { + var value; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1); + byte_length >>>= 0; + external_data >>>= 0; + result >>>= 0; + byte_length = byte_length >>> 0; + if (!external_data) { + byte_length = 0; + } + if (byte_length > 2147483647) { + throw new RangeError('Cannot create a memory view larger than 2147483647 bytes'); + } + if ((external_data + byte_length) > wasmMemory.buffer.byteLength) { + throw new RangeError('Memory out of range'); + } + if (!emnapiCtx.feature.supportFinalizer && finalize_cb) { + throw emnapiCtx.createNotSupportWeakRefError('emnapi_create_memory_view', 'Parameter "finalize_cb" must be 0(NULL)'); + } + var viewDescriptor = void 0; + switch (typedarray_type) { + case 0: + viewDescriptor = { Ctor: Int8Array, address: external_data, length: byte_length, ownership: 1, runtimeAllocated: 0 }; + break; + case 1: + viewDescriptor = { Ctor: Uint8Array, address: external_data, length: byte_length, ownership: 1, runtimeAllocated: 0 }; + break; + case 2: + viewDescriptor = { Ctor: Uint8ClampedArray, address: external_data, length: byte_length, ownership: 1, runtimeAllocated: 0 }; + break; + case 3: + viewDescriptor = { Ctor: Int16Array, address: external_data, length: byte_length >> 1, ownership: 1, runtimeAllocated: 0 }; + break; + case 4: + viewDescriptor = { Ctor: Uint16Array, address: external_data, length: byte_length >> 1, ownership: 1, runtimeAllocated: 0 }; + break; + case 5: + viewDescriptor = { Ctor: Int32Array, address: external_data, length: byte_length >> 2, ownership: 1, runtimeAllocated: 0 }; + break; + case 6: + viewDescriptor = { Ctor: Uint32Array, address: external_data, length: byte_length >> 2, ownership: 1, runtimeAllocated: 0 }; + break; + case 7: + viewDescriptor = { Ctor: Float32Array, address: external_data, length: byte_length >> 2, ownership: 1, runtimeAllocated: 0 }; + break; + case 8: + viewDescriptor = { Ctor: Float64Array, address: external_data, length: byte_length >> 3, ownership: 1, runtimeAllocated: 0 }; + break; + case 9: + viewDescriptor = { Ctor: BigInt64Array, address: external_data, length: byte_length >> 3, ownership: 1, runtimeAllocated: 0 }; + break; + case 10: + viewDescriptor = { Ctor: BigUint64Array, address: external_data, length: byte_length >> 3, ownership: 1, runtimeAllocated: 0 }; + break; + case -1: + viewDescriptor = { Ctor: DataView, address: external_data, length: byte_length, ownership: 1, runtimeAllocated: 0 }; + break; + case 11: + if (typeof Float16Array !== 'function') { + return envObject.setLastError(1); + } + viewDescriptor = { Ctor: Float16Array, address: external_data, length: byte_length >> 1, ownership: 1, runtimeAllocated: 0 }; + break; + case -2: { + if (!emnapiCtx.feature.Buffer) { + throw emnapiCtx.createNotSupportBufferError('emnapi_create_memory_view', ''); + } + viewDescriptor = { Ctor: emnapiCtx.feature.Buffer, address: external_data, length: byte_length, ownership: 1, runtimeAllocated: 0 }; + break; + } + default: return envObject.setLastError(1); + } + var Ctor = viewDescriptor.Ctor; + var typedArray = typedarray_type === -2 + ? emnapiCtx.feature.Buffer.from(wasmMemory.buffer, viewDescriptor.address, viewDescriptor.length) + : new Ctor(wasmMemory.buffer, viewDescriptor.address, viewDescriptor.length); + var handle = emnapiCtx.addToCurrentScope(typedArray); + emnapiExternalMemory.wasmMemoryViewTable.set(typedArray, viewDescriptor); + if (finalize_cb) { + var status_1 = napi_add_finalizer(env, handle.id, external_data, finalize_cb, finalize_hint, 0); + if (status_1 === 10) { + var err = envObject.tryCatch.extractException(); + envObject.clearLastError(); + throw err; + } + else if (status_1 !== 0) { + return envObject.setLastError(status_1); + } + } + value = handle.id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function emnapi_is_support_weakref() { + return emnapiCtx.feature.supportFinalizer ? 1 : 0; + } + function emnapi_is_support_bigint() { + return emnapiCtx.feature.supportBigInt ? 1 : 0; + } + function emnapi_is_node_binding_available() { + return emnapiNodeBinding ? 1 : 0; + } + function $emnapiSyncMemory(js_to_wasm, arrayBufferOrView, offset, len) { + offset = offset !== null && offset !== void 0 ? offset : 0; + offset = offset >>> 0; + var view; + if (arrayBufferOrView instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) { + var pointer = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false).address; + if (!pointer) + throw new Error('Unknown ArrayBuffer address'); + if (typeof len !== 'number' || len === -1 || len === 4294967295) { + len = arrayBufferOrView.byteLength - offset; + } + len = len >>> 0; + if (len === 0) + return arrayBufferOrView; + view = new Uint8Array(arrayBufferOrView, offset, len); + var wasmMemoryU8 = new Uint8Array(wasmMemory.buffer); + if (!js_to_wasm) { + view.set(wasmMemoryU8.subarray(pointer, pointer + len)); + } + else { + wasmMemoryU8.set(view, pointer); + } + return arrayBufferOrView; + } + if (ArrayBuffer.isView(arrayBufferOrView)) { + var viewPointerInfo = emnapiExternalMemory.getViewPointer(arrayBufferOrView, false); + var latestView = viewPointerInfo.view; + var pointer = viewPointerInfo.address; + if (!pointer) + throw new Error('Unknown ArrayBuffer address'); + if (typeof len !== 'number' || len === -1 || len === 4294967295) { + len = latestView.byteLength - offset; + } + len = len >>> 0; + if (len === 0) + return latestView; + view = new Uint8Array(latestView.buffer, latestView.byteOffset + offset, len); + var wasmMemoryU8 = new Uint8Array(wasmMemory.buffer); + if (!js_to_wasm) { + view.set(wasmMemoryU8.subarray(pointer, pointer + len)); + } + else { + wasmMemoryU8.set(view, pointer); + } + return latestView; + } + throw new TypeError('emnapiSyncMemory expect ArrayBuffer or ArrayBufferView as first parameter'); + } + function emnapi_sync_memory(env, js_to_wasm, arraybuffer_or_view, offset, len) { + var v; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!arraybuffer_or_view) + return envObject.setLastError(1); + arraybuffer_or_view >>>= 0; + offset >>>= 0; + len >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + var handleId = HEAP_DATA_VIEW.getUint32(arraybuffer_or_view, true); + var handle = envObject.ctx.handleStore.get(handleId); + if (!handle.isArrayBuffer() && !handle.isTypedArray() && !handle.isDataView() && !emnapiExternalMemory.isSharedArrayBuffer(handle.value)) { + return envObject.setLastError(1); + } + var ret = $emnapiSyncMemory(Boolean(js_to_wasm), handle.value, offset, len); + if (handle.value !== ret) { + arraybuffer_or_view >>>= 0; + v = envObject.ensureHandleId(ret); + HEAP_DATA_VIEW.setUint32(arraybuffer_or_view, v, true); + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function $emnapiGetMemoryAddress(arrayBufferOrView) { + var isArrayBuffer = arrayBufferOrView instanceof ArrayBuffer; + var isDataView = arrayBufferOrView instanceof DataView; + var isTypedArray = ArrayBuffer.isView(arrayBufferOrView) && !isDataView; + if (!isArrayBuffer && !isTypedArray && !isDataView && !emnapiExternalMemory.isSharedArrayBuffer(arrayBufferOrView)) { + throw new TypeError('emnapiGetMemoryAddress expect ArrayBuffer or ArrayBufferView as first parameter'); + } + var info; + if (isArrayBuffer) { + info = emnapiExternalMemory.getArrayBufferPointer(arrayBufferOrView, false); + } + else { + info = emnapiExternalMemory.getViewPointer(arrayBufferOrView, false); + } + return { + address: info.address, + ownership: info.ownership, + runtimeAllocated: info.runtimeAllocated + }; + } + function emnapi_get_memory_address(env, arraybuffer_or_view, address, ownership, runtime_allocated) { + var p, runtimeAllocated, ownershipOut; + var info; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!arraybuffer_or_view) + return envObject.setLastError(1); + if (!address && !ownership && !runtime_allocated) { + return envObject.setLastError(1); + } + var handle = envObject.ctx.handleStore.get(arraybuffer_or_view); + info = $emnapiGetMemoryAddress(handle.value); + p = info.address; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (address) { + address >>>= 0; + HEAP_DATA_VIEW.setUint32(address, p, true); + } + if (ownership) { + ownership >>>= 0; + ownershipOut = info.ownership; + HEAP_DATA_VIEW.setInt32(ownership, ownershipOut, true); + } + if (runtime_allocated) { + runtime_allocated >>>= 0; + runtimeAllocated = info.runtimeAllocated; + HEAP_DATA_VIEW.setInt8(runtime_allocated, runtimeAllocated, true); + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function emnapi_get_runtime_version(env, version) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + if (!version) + return envObject.setLastError(1); + var runtimeVersion; + try { + runtimeVersion = emnapiCtx.getRuntimeVersions().version; + } + catch (_) { + return envObject.setLastError(9); + } + var versions = runtimeVersion.split('.') + .map(function (n) { return Number(n); }); + version >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(version, versions[0], true); + HEAP_DATA_VIEW.setUint32(version + 4, versions[1], true); + HEAP_DATA_VIEW.setUint32(version + 8, versions[2], true); + return envObject.clearLastError(); + } + var emnapiMod = Object.freeze({ + __proto__: null, + $emnapiGetMemoryAddress: $emnapiGetMemoryAddress, + $emnapiSyncMemory: $emnapiSyncMemory, + emnapi_create_memory_view: emnapi_create_memory_view, + emnapi_get_memory_address: emnapi_get_memory_address, + emnapi_get_runtime_version: emnapi_get_runtime_version, + emnapi_is_node_binding_available: emnapi_is_node_binding_available, + emnapi_is_support_bigint: emnapi_is_support_bigint, + emnapi_is_support_weakref: emnapi_is_support_weakref, + emnapi_sync_memory: emnapi_sync_memory + }); + function napi_create_array(env, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + result >>>= 0; + var value = emnapiCtx.addToCurrentScope([]).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + function napi_create_array_with_length(env, length, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + length >>>= 0; + result >>>= 0; + length = length >>> 0; + var value = emnapiCtx.addToCurrentScope(new Array(length)).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + function emnapiCreateArrayBuffer(byte_length, data, shared) { + byte_length >>>= 0; + byte_length = byte_length >>> 0; + var arrayBuffer = shared ? new SharedArrayBuffer(byte_length) : new ArrayBuffer(byte_length); + if (data) { + data >>>= 0; + var p = emnapiExternalMemory.getArrayBufferPointer(arrayBuffer, true).address; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(data, p, true); + } + return arrayBuffer; + } + function napi_create_arraybuffer(env, byte_length, data, result) { + var value; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1); + result >>>= 0; + var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, false); + value = emnapiCtx.addToCurrentScope(arrayBuffer).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function node_api_create_sharedarraybuffer(env, byte_length, data, result) { + var value; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1); + result >>>= 0; + var arrayBuffer = emnapiCreateArrayBuffer(byte_length, data, true); + value = emnapiCtx.addToCurrentScope(arrayBuffer).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_create_date(env, time, result) { + var value; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1); + result >>>= 0; + value = emnapiCtx.addToCurrentScope(new Date(time)).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_create_external(env, data, finalize_cb, finalize_hint, result) { + var value; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1); + if (!emnapiCtx.feature.supportFinalizer && finalize_cb) { + throw emnapiCtx.createNotSupportWeakRefError('napi_create_external', 'Parameter "finalize_cb" must be 0(NULL)'); + } + var externalHandle = emnapiCtx.getCurrentScope().addExternal(data); + if (finalize_cb) { + emnapiCtx.createReferenceWithFinalizer(envObject, externalHandle.id, 0, 0, finalize_cb, data, finalize_hint); + } + result >>>= 0; + value = externalHandle.id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_create_external_arraybuffer(env, external_data, byte_length, finalize_cb, finalize_hint, result) { + var value; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1); + byte_length >>>= 0; + external_data >>>= 0; + result >>>= 0; + byte_length = byte_length >>> 0; + if (!external_data) { + byte_length = 0; + } + if ((external_data + byte_length) > wasmMemory.buffer.byteLength) { + throw new RangeError('Memory out of range'); + } + if (!emnapiCtx.feature.supportFinalizer && finalize_cb) { + throw emnapiCtx.createNotSupportWeakRefError('napi_create_external_arraybuffer', 'Parameter "finalize_cb" must be 0(NULL)'); + } + var arrayBuffer = new ArrayBuffer(byte_length); + if (byte_length === 0) { + try { + var MessageChannel_1 = emnapiCtx.feature.MessageChannel; + var messageChannel = new MessageChannel_1(); + messageChannel.port1.postMessage(arrayBuffer, [arrayBuffer]); + } + catch (_) { } + } + else { + var u8arr = new Uint8Array(arrayBuffer); + u8arr.set(new Uint8Array(wasmMemory.buffer).subarray(external_data, external_data + byte_length)); + emnapiExternalMemory.table.set(arrayBuffer, { + address: external_data, + ownership: 1, + runtimeAllocated: 0 + }); + } + var handle = emnapiCtx.addToCurrentScope(arrayBuffer); + if (finalize_cb) { + var status_1 = napi_add_finalizer(env, handle.id, external_data, finalize_cb, finalize_hint, 0); + if (status_1 === 10) { + var err = envObject.tryCatch.extractException(); + envObject.clearLastError(); + throw err; + } + else if (status_1 !== 0) { + return envObject.setLastError(status_1); + } + } + value = handle.id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_create_object(env, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + result >>>= 0; + var value = emnapiCtx.addToCurrentScope({}).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + function node_api_create_object_with_properties(env, prototype_or_null, property_names, property_values, property_count, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + property_count >>>= 0; + property_count = property_count >>> 0; + if (property_count > 0) { + if (!property_names) + return envObject.setLastError(1); + if (!property_values) + return envObject.setLastError(1); + } + var v8_prototype_or_null = prototype_or_null + ? emnapiCtx.handleStore.get(prototype_or_null).value + : null; + var properties = {}; + property_names >>>= 0; + property_values >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + for (var i = 0; i < property_count; i++) { + var name_value = emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_names + i * 4, true)).value; + if (!(typeof name_value === "string" || typeof name_value === "symbol")) + return envObject.setLastError(4); + properties[name_value] = { + value: emnapiCtx.handleStore.get(HEAP_DATA_VIEW.getUint32(property_values + i * 4, true)).value, + writable: true, + enumerable: true, + configurable: true + }; + } + var obj; + try { + obj = Object.defineProperties(Object.create(v8_prototype_or_null), properties); + } + catch (_) { + return envObject.setLastError(9); + } + var value = emnapiCtx.addToCurrentScope(obj).id; + result >>>= 0; + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + function napi_create_symbol(env, description, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (!description) { + var value = emnapiCtx.addToCurrentScope(Symbol()).id; + HEAP_DATA_VIEW.setUint32(result, value, true); + } + else { + var handle = emnapiCtx.handleStore.get(description); + var desc = handle.value; + if (typeof desc !== 'string') { + return envObject.setLastError(3); + } + var v = emnapiCtx.addToCurrentScope(Symbol(desc)).id; + HEAP_DATA_VIEW.setUint32(result, v, true); + } + return envObject.clearLastError(); + } + function napi_create_typedarray(env, type, length, arraybuffer, byte_offset, result) { + var value; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!arraybuffer) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(arraybuffer); + if (!handle.isArrayBuffer()) { + return envObject.setLastError(1); + } + var buffer = handle.value; + byte_offset >>>= 0; + length >>>= 0; + var createTypedArray = function (envObject, Type, size_of_element, buffer, byte_offset, length) { + var _a; + byte_offset = byte_offset >>> 0; + length = length >>> 0; + if (size_of_element > 1) { + if ((byte_offset) % (size_of_element) !== 0) { + var err = new RangeError("start offset of ".concat((_a = Type.name) !== null && _a !== void 0 ? _a : '', " should be a multiple of ").concat(size_of_element)); + err.code = 'ERR_NAPI_INVALID_TYPEDARRAY_ALIGNMENT'; + envObject.tryCatch.setError(err); + return envObject.setLastError(9); + } + } + if (((length * size_of_element) + byte_offset) > buffer.byteLength) { + var err = new RangeError('Invalid typed array length'); + err.code = 'ERR_NAPI_INVALID_TYPEDARRAY_LENGTH'; + envObject.tryCatch.setError(err); + return envObject.setLastError(9); + } + var out = new Type(buffer, byte_offset, length); + if (buffer === wasmMemory.buffer) { + if (!emnapiExternalMemory.wasmMemoryViewTable.has(out)) { + emnapiExternalMemory.wasmMemoryViewTable.set(out, { + Ctor: Type, + address: byte_offset, + length: length, + ownership: 1, + runtimeAllocated: 0 + }); + } + } + result >>>= 0; + value = emnapiCtx.addToCurrentScope(out).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + }; + switch (type) { + case 0: + return createTypedArray(envObject, Int8Array, 1, buffer, byte_offset, length); + case 1: + return createTypedArray(envObject, Uint8Array, 1, buffer, byte_offset, length); + case 2: + return createTypedArray(envObject, Uint8ClampedArray, 1, buffer, byte_offset, length); + case 3: + return createTypedArray(envObject, Int16Array, 2, buffer, byte_offset, length); + case 4: + return createTypedArray(envObject, Uint16Array, 2, buffer, byte_offset, length); + case 5: + return createTypedArray(envObject, Int32Array, 4, buffer, byte_offset, length); + case 6: + return createTypedArray(envObject, Uint32Array, 4, buffer, byte_offset, length); + case 7: + return createTypedArray(envObject, Float32Array, 4, buffer, byte_offset, length); + case 8: + return createTypedArray(envObject, Float64Array, 8, buffer, byte_offset, length); + case 9: + return createTypedArray(envObject, BigInt64Array, 8, buffer, byte_offset, length); + case 10: + return createTypedArray(envObject, BigUint64Array, 8, buffer, byte_offset, length); + case 11: + if (typeof Float16Array !== 'function') { + return envObject.setLastError(1); + } + return createTypedArray(envObject, Float16Array, 2, buffer, byte_offset, length); + default: + return envObject.setLastError(1); + } + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_create_buffer(env, size, data, result) { + var _a; + var value, pointer; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1); + var Buffer = emnapiCtx.feature.Buffer; + if (!Buffer) { + throw emnapiCtx.createNotSupportBufferError('napi_create_buffer', ''); + } + result >>>= 0; + var buffer = void 0; + size >>>= 0; + size = size >>> 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (!data || (size === 0)) { + buffer = Buffer.alloc(size); + value = emnapiCtx.addToCurrentScope(buffer).id; + HEAP_DATA_VIEW.setUint32(result, value, true); + } + else { + pointer = _malloc(size); + if (!pointer) + throw new Error('Out of memory'); + pointer >>>= 0; + new Uint8Array(wasmMemory.buffer).subarray(pointer, pointer + size).fill(0); + var buffer_1 = Buffer.from(wasmMemory.buffer, pointer, size); + var viewDescriptor = { + Ctor: Buffer, + address: pointer, + length: size, + ownership: emnapiExternalMemory.registry ? 0 : 1, + runtimeAllocated: 1 + }; + emnapiExternalMemory.wasmMemoryViewTable.set(buffer_1, viewDescriptor); + (_a = emnapiExternalMemory.registry) === null || _a === void 0 ? void 0 : _a.register(viewDescriptor, pointer); + value = emnapiCtx.addToCurrentScope(buffer_1).id; + HEAP_DATA_VIEW.setUint32(result, value, true); + data >>>= 0; + HEAP_DATA_VIEW.setUint32(data, pointer, true); + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_create_buffer_copy(env, length, data, result_data, result) { + var value; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1); + var Buffer = emnapiCtx.feature.Buffer; + if (!Buffer) { + throw emnapiCtx.createNotSupportBufferError('napi_create_buffer_copy', ''); + } + var arrayBuffer = emnapiCreateArrayBuffer(length, result_data, false); + var buffer = Buffer.from(arrayBuffer); + data >>>= 0; + length >>>= 0; + buffer.set(new Uint8Array(wasmMemory.buffer).subarray(data, data + length)); + value = emnapiCtx.addToCurrentScope(buffer).id; + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_create_external_buffer(env, length, data, finalize_cb, finalize_hint, result) { + return emnapi_create_memory_view(env, -2, data, length, finalize_cb, finalize_hint, result); + } + function node_api_create_buffer_from_arraybuffer(env, arraybuffer, byte_offset, byte_length, result) { + var value; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!arraybuffer) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + byte_offset >>>= 0; + byte_length >>>= 0; + byte_offset = byte_offset >>> 0; + byte_length = byte_length >>> 0; + var handle = emnapiCtx.handleStore.get(arraybuffer); + if (!handle.isArrayBuffer()) { + return envObject.setLastError(1); + } + var buffer = handle.value; + if ((byte_length + byte_offset) > buffer.byteLength) { + var err = new RangeError('The byte offset + length is out of range'); + err.code = 'ERR_OUT_OF_RANGE'; + throw err; + } + var Buffer = emnapiCtx.feature.Buffer; + if (!Buffer) { + throw emnapiCtx.createNotSupportBufferError('node_api_create_buffer_from_arraybuffer', ''); + } + var out = Buffer.from(buffer, byte_offset, byte_length); + if (buffer === wasmMemory.buffer) { + if (!emnapiExternalMemory.wasmMemoryViewTable.has(out)) { + emnapiExternalMemory.wasmMemoryViewTable.set(out, { + Ctor: Buffer, + address: byte_offset, + length: byte_length, + ownership: 1, + runtimeAllocated: 0 + }); + } + } + result >>>= 0; + value = emnapiCtx.addToCurrentScope(out).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_create_dataview(env, byte_length, arraybuffer, byte_offset, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!arraybuffer) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + byte_length >>>= 0; + byte_offset >>>= 0; + byte_length = byte_length >>> 0; + byte_offset = byte_offset >>> 0; + var value = emnapiCtx.handleStore.get(arraybuffer).value; + var createDataview = function (buffer) { + if ((byte_length + byte_offset) > buffer.byteLength) { + var err = new RangeError('byte_offset + byte_length should be less than or equal to the size in bytes of the array passed in'); + err.code = 'ERR_NAPI_INVALID_DATAVIEW_ARGS'; + throw err; + } + var dataview = new DataView(buffer, byte_offset, byte_length); + if (buffer === wasmMemory.buffer) { + if (!emnapiExternalMemory.wasmMemoryViewTable.has(dataview)) { + emnapiExternalMemory.wasmMemoryViewTable.set(dataview, { + Ctor: DataView, + address: byte_offset, + length: byte_length, + ownership: 1, + runtimeAllocated: 0 + }); + } + } + result >>>= 0; + var v = emnapiCtx.addToCurrentScope(dataview).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.getReturnStatus(); + }; + if (value instanceof ArrayBuffer || emnapiExternalMemory.isSharedArrayBuffer(value)) { + return createDataview(value); + } + else { + return envObject.setLastError(1); + } + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function node_api_symbol_for(env, utf8description, length, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + length >>>= 0; + utf8description >>>= 0; + result >>>= 0; + var autoLength = length === -1 || length === 4294967295; + var sizelength = length >>> 0; + if (length !== 0) { + if (!utf8description) + return envObject.setLastError(1); + } + if (!(autoLength || (sizelength <= 2147483647))) { + return envObject.setLastError(1); + } + var descriptionString = emnapiString.UTF8ToString(utf8description, length); + var value = emnapiCtx.addToCurrentScope(Symbol.for(descriptionString)).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + var createMod = Object.freeze({ + __proto__: null, + napi_create_array: napi_create_array, + napi_create_array_with_length: napi_create_array_with_length, + napi_create_arraybuffer: napi_create_arraybuffer, + napi_create_buffer: napi_create_buffer, + napi_create_buffer_copy: napi_create_buffer_copy, + napi_create_dataview: napi_create_dataview, + napi_create_date: napi_create_date, + napi_create_external: napi_create_external, + napi_create_external_arraybuffer: napi_create_external_arraybuffer, + napi_create_external_buffer: napi_create_external_buffer, + napi_create_object: napi_create_object, + napi_create_symbol: napi_create_symbol, + napi_create_typedarray: napi_create_typedarray, + node_api_create_buffer_from_arraybuffer: node_api_create_buffer_from_arraybuffer, + node_api_create_object_with_properties: node_api_create_object_with_properties, + node_api_create_sharedarraybuffer: node_api_create_sharedarraybuffer, + node_api_symbol_for: node_api_symbol_for + }); + function napi_get_boolean(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + result >>>= 0; + var v = value === 0 ? 3 : 4; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.clearLastError(); + } + function napi_get_global(env, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + result >>>= 0; + var value = 5; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + function napi_get_null(env, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + result >>>= 0; + var value = 2; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + function napi_get_undefined(env, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + result >>>= 0; + var value = 1; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + var globalMod = Object.freeze({ + __proto__: null, + napi_get_boolean: napi_get_boolean, + napi_get_global: napi_get_global, + napi_get_null: napi_get_null, + napi_get_undefined: napi_get_undefined + }); + function napi_set_instance_data(env, data, finalize_cb, finalize_hint) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + data >>>= 0; + finalize_cb >>>= 0; + finalize_hint >>>= 0; + envObject.setInstanceData(data, finalize_cb, finalize_hint); + return envObject.clearLastError(); + } + function napi_get_instance_data(env, data) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + if (!data) + return envObject.setLastError(1); + data >>>= 0; + var value = envObject.getInstanceData(); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(data, value, true); + return envObject.clearLastError(); + } + var envMod = Object.freeze({ + __proto__: null, + napi_get_instance_data: napi_get_instance_data, + napi_set_instance_data: napi_set_instance_data + }); + function _emnapi_get_last_error_info(env, error_code, engine_error_code, engine_reserved) { + error_code >>>= 0; + engine_error_code >>>= 0; + engine_reserved >>>= 0; + var envObject = emnapiCtx.envStore.get(env); + var lastError = envObject.lastError; + var errorCode = lastError.errorCode; + var engineErrorCode = lastError.engineErrorCode >>> 0; + var engineReserved = lastError.engineReserved; + engineReserved >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt32(error_code, errorCode, true); + HEAP_DATA_VIEW.setUint32(engine_error_code, engineErrorCode, true); + HEAP_DATA_VIEW.setUint32(engine_reserved, engineReserved, true); + } + function napi_throw(env, error) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!error) + return envObject.setLastError(1); + envObject.tryCatch.setError(emnapiCtx.handleStore.get(error).value); + return envObject.clearLastError(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_throw_error(env, code, msg) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!msg) + return envObject.setLastError(1); + code >>>= 0; + msg >>>= 0; + var error = new Error(emnapiString.UTF8ToString(msg, -1)); + if (code) + error.code = emnapiString.UTF8ToString(code, -1); + envObject.tryCatch.setError(error); + return envObject.clearLastError(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_throw_type_error(env, code, msg) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!msg) + return envObject.setLastError(1); + code >>>= 0; + msg >>>= 0; + var error = new TypeError(emnapiString.UTF8ToString(msg, -1)); + if (code) + error.code = emnapiString.UTF8ToString(code, -1); + envObject.tryCatch.setError(error); + return envObject.clearLastError(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_throw_range_error(env, code, msg) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!msg) + return envObject.setLastError(1); + code >>>= 0; + msg >>>= 0; + var error = new RangeError(emnapiString.UTF8ToString(msg, -1)); + if (code) + error.code = emnapiString.UTF8ToString(code, -1); + envObject.tryCatch.setError(error); + return envObject.clearLastError(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function node_api_throw_syntax_error(env, code, msg) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!msg) + return envObject.setLastError(1); + code >>>= 0; + msg >>>= 0; + var error = new SyntaxError(emnapiString.UTF8ToString(msg, -1)); + if (code) + error.code = emnapiString.UTF8ToString(code, -1); + envObject.tryCatch.setError(error); + return envObject.clearLastError(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_is_exception_pending(env, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + var r = envObject.tryCatch.hasCaught(); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); + return envObject.clearLastError(); + } + function napi_create_error(env, code, msg, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!msg) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var msgValue = emnapiCtx.handleStore.get(msg).value; + if (typeof msgValue !== 'string') { + return envObject.setLastError(3); + } + var error = new Error(msgValue); + if (code) { + var codeValue = emnapiCtx.handleStore.get(code).value; + if (typeof codeValue !== 'string') { + return envObject.setLastError(3); + } + error.code = codeValue; + } + result >>>= 0; + var value = emnapiCtx.addToCurrentScope(error).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + function napi_create_type_error(env, code, msg, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!msg) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var msgValue = emnapiCtx.handleStore.get(msg).value; + if (typeof msgValue !== 'string') { + return envObject.setLastError(3); + } + var error = new TypeError(msgValue); + if (code) { + var codeValue = emnapiCtx.handleStore.get(code).value; + if (typeof codeValue !== 'string') { + return envObject.setLastError(3); + } + error.code = codeValue; + } + result >>>= 0; + var value = emnapiCtx.addToCurrentScope(error).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + function napi_create_range_error(env, code, msg, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!msg) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var msgValue = emnapiCtx.handleStore.get(msg).value; + if (typeof msgValue !== 'string') { + return envObject.setLastError(3); + } + var error = new RangeError(msgValue); + if (code) { + var codeValue = emnapiCtx.handleStore.get(code).value; + if (typeof codeValue !== 'string') { + return envObject.setLastError(3); + } + error.code = codeValue; + } + result >>>= 0; + var value = emnapiCtx.addToCurrentScope(error).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + function node_api_create_syntax_error(env, code, msg, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!msg) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var msgValue = emnapiCtx.handleStore.get(msg).value; + if (typeof msgValue !== 'string') { + return envObject.setLastError(3); + } + var error = new SyntaxError(msgValue); + if (code) { + var codeValue = emnapiCtx.handleStore.get(code).value; + if (typeof codeValue !== 'string') { + return envObject.setLastError(3); + } + error.code = codeValue; + } + result >>>= 0; + var value = emnapiCtx.addToCurrentScope(error).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + function napi_get_and_clear_last_exception(env, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (!envObject.tryCatch.hasCaught()) { + HEAP_DATA_VIEW.setUint32(result, 1, true); + return envObject.clearLastError(); + } + else { + var err = envObject.tryCatch.exception(); + var value = envObject.ensureHandleId(err); + HEAP_DATA_VIEW.setUint32(result, value, true); + envObject.tryCatch.reset(); + } + return envObject.clearLastError(); + } + function napi_fatal_error(location, location_len, message, message_len) { + location >>>= 0; + location_len >>>= 0; + message >>>= 0; + message_len >>>= 0; + var locationStr = emnapiString.UTF8ToString(location, location_len); + var messageStr = emnapiString.UTF8ToString(message, message_len); + if (emnapiNodeBinding) { + emnapiNodeBinding.napi.fatalError(locationStr, messageStr); + } + else { + abort('FATAL ERROR: ' + locationStr + ' ' + messageStr); + } + } + function napi_fatal_exception(env, err) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!err) + return envObject.setLastError(1); + var error = envObject.ctx.handleStore.get(err); + try { + envObject.triggerFatalException(error.value); + } + catch (_) { + return envObject.setLastError(9); + } + return envObject.clearLastError(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + var errorMod = Object.freeze({ + __proto__: null, + _emnapi_get_last_error_info: _emnapi_get_last_error_info, + napi_create_error: napi_create_error, + napi_create_range_error: napi_create_range_error, + napi_create_type_error: napi_create_type_error, + napi_fatal_error: napi_fatal_error, + napi_fatal_exception: napi_fatal_exception, + napi_get_and_clear_last_exception: napi_get_and_clear_last_exception, + napi_is_exception_pending: napi_is_exception_pending, + napi_throw: napi_throw, + napi_throw_error: napi_throw_error, + napi_throw_range_error: napi_throw_range_error, + napi_throw_type_error: napi_throw_type_error, + node_api_create_syntax_error: node_api_create_syntax_error, + node_api_throw_syntax_error: node_api_throw_syntax_error + }); + function _emnapi_create_function(env, utf8name, length, cb, data, result) { + length >>>= 0; + var envObject = emnapiCtx.envStore.get(env); + var fresult = emnapiCreateFunction(envObject, utf8name, length, cb, data); + if (fresult.status !== 0) + return envObject.setLastError(fresult.status); + var f = fresult.f; + var valueHandle = emnapiCtx.addToCurrentScope(f); + result >>>= 0; + var value = valueHandle.id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + function napi_create_function(env, utf8name, length, cb, data, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1); + if (!cb) + return envObject.setLastError(1); + return _emnapi_create_function(env, utf8name, length, cb, data, result); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_get_cb_info(env, cbinfo, argc, argv, this_arg, data) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + if (!cbinfo) + return envObject.setLastError(1); + var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo; + argc >>>= 0; + argv >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (argv) { + if (!argc) + return envObject.setLastError(1); + var argcValue = HEAP_DATA_VIEW.getUint32(argc, true); + argcValue >>>= 0; + var len = cbinfoValue.args.length; + var arrlen = argcValue < len ? argcValue : len; + var i = 0; + for (; i < arrlen; i++) { + var argVal = envObject.ensureHandleId(cbinfoValue.args[i]); + HEAP_DATA_VIEW.setUint32(argv + i * 4, argVal, true); + } + if (i < argcValue) { + for (; i < argcValue; i++) { + HEAP_DATA_VIEW.setUint32(argv + i * 4, 1, true); + } + } + } + if (argc) { + HEAP_DATA_VIEW.setUint32(argc, cbinfoValue.args.length, true); + } + if (this_arg) { + this_arg >>>= 0; + var v = envObject.ensureHandleId(cbinfoValue.thiz); + HEAP_DATA_VIEW.setUint32(this_arg, v, true); + } + if (data) { + data >>>= 0; + HEAP_DATA_VIEW.setUint32(data, cbinfoValue.data, true); + } + return envObject.clearLastError(); + } + function napi_call_function(env, recv, func, argc, argv, result) { + var i = 0; + var v; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!recv) + return envObject.setLastError(1); + argc >>>= 0; + argv >>>= 0; + result >>>= 0; + argc = argc >>> 0; + if (argc > 0) { + if (!argv) + return envObject.setLastError(1); + } + var v8recv = emnapiCtx.handleStore.get(recv).value; + if (!func) + return envObject.setLastError(1); + var v8func = emnapiCtx.handleStore.get(func).value; + if (typeof v8func !== 'function') + return envObject.setLastError(1); + var args = []; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + for (; i < argc; i++) { + var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); + args.push(emnapiCtx.handleStore.get(argVal).value); + } + var ret = v8func.apply(v8recv, args); + if (result) { + v = envObject.ensureHandleId(ret); + HEAP_DATA_VIEW.setUint32(result, v, true); + } + return envObject.clearLastError(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_new_instance(env, constructor, argc, argv, result) { + var i; + var v; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!constructor) + return envObject.setLastError(1); + argc >>>= 0; + argv >>>= 0; + result >>>= 0; + argc = argc >>> 0; + if (argc > 0) { + if (!argv) + return envObject.setLastError(1); + } + if (!result) + return envObject.setLastError(1); + var Ctor = emnapiCtx.handleStore.get(constructor).value; + if (typeof Ctor !== 'function') + return envObject.setLastError(1); + var ret = void 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (emnapiCtx.feature.supportReflect) { + var argList = Array(argc); + for (i = 0; i < argc; i++) { + var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); + argList[i] = emnapiCtx.handleStore.get(argVal).value; + } + ret = Reflect.construct(Ctor, argList, Ctor); + } + else { + var args = Array(argc + 1); + args[0] = undefined; + for (i = 0; i < argc; i++) { + var argVal = HEAP_DATA_VIEW.getUint32(argv + i * 4, true); + args[i + 1] = emnapiCtx.handleStore.get(argVal).value; + } + var BoundCtor = Ctor.bind.apply(Ctor, args); + ret = new BoundCtor(); + } + if (result) { + v = envObject.ensureHandleId(ret); + HEAP_DATA_VIEW.setUint32(result, v, true); + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_get_new_target(env, cbinfo, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!cbinfo) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + result >>>= 0; + var cbinfoValue = emnapiCtx.scopeStore.get(cbinfo).callbackInfo; + var thiz = cbinfoValue.thiz, fn = cbinfoValue.fn; + var value = thiz == null || thiz.constructor == null + ? 0 + : thiz instanceof fn + ? envObject.ensureHandleId(thiz.constructor) + : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + var functionMod = Object.freeze({ + __proto__: null, + _emnapi_create_function: _emnapi_create_function, + napi_call_function: napi_call_function, + napi_create_function: napi_create_function, + napi_get_cb_info: napi_get_cb_info, + napi_get_new_target: napi_get_new_target, + napi_new_instance: napi_new_instance + }); + function napi_open_handle_scope(env, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + var scope = emnapiCtx.openScope(envObject); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, scope.id, true); + return envObject.clearLastError(); + } + function napi_close_handle_scope(env, scope) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!scope) + return envObject.setLastError(1); + if ((envObject.openHandleScopes === 0)) { + return 13; + } + emnapiCtx.closeScope(envObject); + return envObject.clearLastError(); + } + function napi_open_escapable_handle_scope(env, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!result) + return envObject.setLastError(1); + var scope = emnapiCtx.openScope(envObject); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, scope.id, true); + return envObject.clearLastError(); + } + function napi_close_escapable_handle_scope(env, scope) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!scope) + return envObject.setLastError(1); + if ((envObject.openHandleScopes === 0)) { + return 13; + } + emnapiCtx.closeScope(envObject); + return envObject.clearLastError(); + } + function napi_escape_handle(env, scope, escapee, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!scope) + return envObject.setLastError(1); + if (!escapee) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var scopeObject = emnapiCtx.scopeStore.get(scope); + if (!scopeObject.escapeCalled()) { + escapee >>>= 0; + result >>>= 0; + var newHandle = scopeObject.escape(escapee); + var value = newHandle ? newHandle.id : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.clearLastError(); + } + return envObject.setLastError(12); + } + function napi_create_reference(env, value, initial_refcount, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + if (envObject.moduleApiVersion < 10) { + if (!(handle.isObject() || handle.isFunction() || handle.isSymbol())) { + return envObject.setLastError(1); + } + } + var ref = emnapiCtx.createReference(envObject, handle.id, initial_refcount >>> 0, 1); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, ref.id, true); + return envObject.clearLastError(); + } + function napi_delete_reference(env, ref) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + if (!ref) + return envObject.setLastError(1); + emnapiCtx.refStore.get(ref).dispose(); + return envObject.clearLastError(); + } + function napi_reference_ref(env, ref, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!ref) + return envObject.setLastError(1); + var count = emnapiCtx.refStore.get(ref).ref(); + if (result) { + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, count, true); + } + return envObject.clearLastError(); + } + function napi_reference_unref(env, ref, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!ref) + return envObject.setLastError(1); + var reference = emnapiCtx.refStore.get(ref); + var refcount = reference.refcount(); + if (refcount === 0) { + return envObject.setLastError(9); + } + var count = reference.unref(); + if (result) { + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, count, true); + } + return envObject.clearLastError(); + } + function napi_get_reference_value(env, ref, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!ref) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var reference = emnapiCtx.refStore.get(ref); + var handleId = reference.get(envObject); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, handleId, true); + return envObject.clearLastError(); + } + function napi_add_env_cleanup_hook(env, fun, arg) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + if (!fun) + return envObject.setLastError(1); + fun >>>= 0; + arg >>>= 0; + emnapiCtx.addCleanupHook(envObject, fun, arg); + return 0; + } + function napi_remove_env_cleanup_hook(env, fun, arg) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + if (!fun) + return envObject.setLastError(1); + fun >>>= 0; + arg >>>= 0; + emnapiCtx.removeCleanupHook(envObject, fun, arg); + return 0; + } + function _emnapi_env_ref(env) { + var envObject = emnapiCtx.envStore.get(env); + envObject.ref(); + } + function _emnapi_env_unref(env) { + var envObject = emnapiCtx.envStore.get(env); + envObject.unref(); + } + var lifeMod = Object.freeze({ + __proto__: null, + _emnapi_env_ref: _emnapi_env_ref, + _emnapi_env_unref: _emnapi_env_unref, + napi_add_env_cleanup_hook: napi_add_env_cleanup_hook, + napi_close_escapable_handle_scope: napi_close_escapable_handle_scope, + napi_close_handle_scope: napi_close_handle_scope, + napi_create_reference: napi_create_reference, + napi_delete_reference: napi_delete_reference, + napi_escape_handle: napi_escape_handle, + napi_get_reference_value: napi_get_reference_value, + napi_open_escapable_handle_scope: napi_open_escapable_handle_scope, + napi_open_handle_scope: napi_open_handle_scope, + napi_reference_ref: napi_reference_ref, + napi_reference_unref: napi_reference_unref, + napi_remove_env_cleanup_hook: napi_remove_env_cleanup_hook + }); + function _emnapi_get_filename(env, buf, len) { + var envObject = emnapiCtx.envStore.get(env); + var filename = envObject.filename; + if (!buf) { + return emnapiString.lengthBytesUTF8(filename); + } + return emnapiString.stringToUTF8(filename, buf, len); + } + var miscellaneousMod = Object.freeze({ + __proto__: null, + _emnapi_get_filename: _emnapi_get_filename + }); + function napi_create_promise(env, deferred, promise) { + var deferredObjectId, value; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!deferred) + return envObject.setLastError(1); + if (!promise) + return envObject.setLastError(1); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + var p = new Promise(function (resolve, reject) { + var deferredObject = emnapiCtx.createDeferred({ resolve: resolve, reject: reject }); + deferredObjectId = deferredObject.id; + deferred >>>= 0; + HEAP_DATA_VIEW.setUint32(deferred, deferredObjectId, true); + }); + promise >>>= 0; + value = emnapiCtx.addToCurrentScope(p).id; + HEAP_DATA_VIEW.setUint32(promise, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_resolve_deferred(env, deferred, resolution) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!deferred) + return envObject.setLastError(1); + if (!resolution) + return envObject.setLastError(1); + var deferredObject = emnapiCtx.deferredStore.get(deferred); + deferredObject.resolve(emnapiCtx.handleStore.get(resolution).value); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_reject_deferred(env, deferred, resolution) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!deferred) + return envObject.setLastError(1); + if (!resolution) + return envObject.setLastError(1); + var deferredObject = emnapiCtx.deferredStore.get(deferred); + deferredObject.reject(emnapiCtx.handleStore.get(resolution).value); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_is_promise(env, value, is_promise) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!is_promise) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(value); + is_promise >>>= 0; + var r = h.isPromise() ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(is_promise, r, true); + return envObject.clearLastError(); + } + var promiseMod = Object.freeze({ + __proto__: null, + napi_create_promise: napi_create_promise, + napi_is_promise: napi_is_promise, + napi_reject_deferred: napi_reject_deferred, + napi_resolve_deferred: napi_resolve_deferred + }); + function napi_get_all_property_names(env, object, key_mode, key_filter, key_conversion, result) { + var value; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1); + if (!object) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(object); + if (h.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var obj = void 0; + try { + obj = h.isObject() || h.isFunction() ? h.value : Object(h.value); + } + catch (_) { + return envObject.setLastError(2); + } + if (key_mode !== 0 && key_mode !== 1) { + return envObject.setLastError(1); + } + if (key_conversion !== 0 && key_conversion !== 1) { + return envObject.setLastError(1); + } + var props = []; + var names = void 0; + var symbols = void 0; + var i = void 0; + var own = true; + var integerIndiceRegex = /^(0|[1-9][0-9]*)$/; + do { + names = Object.getOwnPropertyNames(obj); + symbols = Object.getOwnPropertySymbols(obj); + for (i = 0; i < names.length; i++) { + props.push({ + name: integerIndiceRegex.test(names[i]) ? Number(names[i]) : names[i], + desc: Object.getOwnPropertyDescriptor(obj, names[i]), + own: own + }); + } + for (i = 0; i < symbols.length; i++) { + props.push({ + name: symbols[i], + desc: Object.getOwnPropertyDescriptor(obj, symbols[i]), + own: own + }); + } + if (key_mode === 1) { + break; + } + obj = Object.getPrototypeOf(obj); + own = false; + } while (obj); + var ret = []; + var addName = function (ret, name, key_filter, conversion_mode) { + if (ret.indexOf(name) !== -1) + return; + if (conversion_mode === 0) { + ret.push(name); + } + else if (conversion_mode === 1) { + var realName = typeof name === 'number' ? String(name) : name; + if (typeof realName === 'string') { + if (!(key_filter & 8)) { + ret.push(realName); + } + } + else { + ret.push(realName); + } + } + }; + for (i = 0; i < props.length; i++) { + var prop = props[i]; + var name_1 = prop.name; + var desc = prop.desc; + if (key_filter === 0) { + addName(ret, name_1, key_filter, key_conversion); + } + else { + if (key_filter & 8 && typeof name_1 === 'string') { + continue; + } + if (key_filter & 16 && typeof name_1 === 'symbol') { + continue; + } + var shouldAdd = true; + switch (key_filter & 7) { + case 1: { + shouldAdd = Boolean(desc.writable); + break; + } + case 2: { + shouldAdd = Boolean(desc.enumerable); + break; + } + case (1 | 2): { + shouldAdd = Boolean(desc.writable && desc.enumerable); + break; + } + case 4: { + shouldAdd = Boolean(desc.configurable); + break; + } + case (4 | 1): { + shouldAdd = Boolean(desc.configurable && desc.writable); + break; + } + case (4 | 2): { + shouldAdd = Boolean(desc.configurable && desc.enumerable); + break; + } + case (4 | 2 | 1): { + shouldAdd = Boolean(desc.configurable && desc.enumerable && desc.writable); + break; + } + } + if (shouldAdd) { + addName(ret, name_1, key_filter, key_conversion); + } + } + } + result >>>= 0; + value = emnapiCtx.addToCurrentScope(ret).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_get_property_names(env, object, result) { + return napi_get_all_property_names(env, object, 0, 2 | 16, 1, result); + } + function napi_set_property(env, object, key, value) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!key) + return envObject.setLastError(1); + if (!value) + return envObject.setLastError(1); + if (!object) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(object); + if (!(h.isObject() || h.isFunction())) { + return envObject.setLastError(2); + } + h.value[emnapiCtx.handleStore.get(key).value] = emnapiCtx.handleStore.get(value).value; + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_has_property(env, object, key, result) { + var r; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!key) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + if (!object) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(object); + if (h.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var v = void 0; + try { + v = h.isObject() || h.isFunction() ? h.value : Object(h.value); + } + catch (_) { + return envObject.setLastError(2); + } + result >>>= 0; + r = (emnapiCtx.handleStore.get(key).value in v) ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_get_property(env, object, key, result) { + var value; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!key) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + if (!object) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(object); + if (h.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var v = void 0; + try { + v = h.isObject() || h.isFunction() ? h.value : Object(h.value); + } + catch (_) { + return envObject.setLastError(2); + } + result >>>= 0; + value = envObject.ensureHandleId(v[emnapiCtx.handleStore.get(key).value]); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_delete_property(env, object, key, result) { + var r; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!key) + return envObject.setLastError(1); + if (!object) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(object); + if (!(h.isObject() || h.isFunction())) { + return envObject.setLastError(2); + } + var propertyKey = emnapiCtx.handleStore.get(key).value; + if (emnapiCtx.feature.supportReflect) { + r = Reflect.deleteProperty(h.value, propertyKey); + } + else { + try { + r = delete h.value[propertyKey]; + } + catch (_) { + r = false; + } + } + if (result) { + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_has_own_property(env, object, key, result) { + var r; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!key) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + if (!object) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(object); + if (h.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var v = void 0; + try { + v = h.isObject() || h.isFunction() ? h.value : Object(h.value); + } + catch (_) { + return envObject.setLastError(2); + } + var prop = emnapiCtx.handleStore.get(key).value; + if (typeof prop !== 'string' && typeof prop !== 'symbol') { + return envObject.setLastError(4); + } + r = Object.prototype.hasOwnProperty.call(v, emnapiCtx.handleStore.get(key).value); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_set_named_property(env, object, cname, value) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1); + if (!object) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(object); + if (!(h.isObject() || h.isFunction())) { + return envObject.setLastError(2); + } + if (!cname) { + return envObject.setLastError(1); + } + cname >>>= 0; + emnapiCtx.handleStore.get(object).value[emnapiString.UTF8ToString(cname, -1)] = emnapiCtx.handleStore.get(value).value; + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_has_named_property(env, object, utf8name, result) { + var r; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1); + if (!object) + return envObject.setLastError(1); + if (!utf8name) { + return envObject.setLastError(1); + } + var h = emnapiCtx.handleStore.get(object); + if (h.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var v = void 0; + try { + v = h.isObject() || h.isFunction() ? h.value : Object(h.value); + } + catch (_) { + return envObject.setLastError(2); + } + utf8name >>>= 0; + result >>>= 0; + r = emnapiString.UTF8ToString(utf8name, -1) in v; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_get_named_property(env, object, utf8name, result) { + var value; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1); + if (!object) + return envObject.setLastError(1); + if (!utf8name) { + return envObject.setLastError(1); + } + var h = emnapiCtx.handleStore.get(object); + if (h.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var v = void 0; + try { + v = h.isObject() || h.isFunction() ? h.value : Object(h.value); + } + catch (_) { + return envObject.setLastError(2); + } + utf8name >>>= 0; + result >>>= 0; + value = envObject.ensureHandleId(v[emnapiString.UTF8ToString(utf8name, -1)]); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_set_element(env, object, index, value) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1); + if (!object) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(object); + if (!(h.isObject() || h.isFunction())) { + return envObject.setLastError(2); + } + h.value[index >>> 0] = emnapiCtx.handleStore.get(value).value; + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_has_element(env, object, index, result) { + var r; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1); + if (!object) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(object); + if (h.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var v = void 0; + try { + v = h.isObject() || h.isFunction() ? h.value : Object(h.value); + } + catch (_) { + return envObject.setLastError(2); + } + result >>>= 0; + r = ((index >>> 0) in v) ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_get_element(env, object, index, result) { + var value; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!result) + return envObject.setLastError(1); + if (!object) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(object); + if (h.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var v = void 0; + try { + v = h.isObject() || h.isFunction() ? h.value : Object(h.value); + } + catch (_) { + return envObject.setLastError(2); + } + result >>>= 0; + value = envObject.ensureHandleId(v[index >>> 0]); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_delete_element(env, object, index, result) { + var r; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!object) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(object); + if (!(h.isObject() || h.isFunction())) { + return envObject.setLastError(2); + } + if (emnapiCtx.feature.supportReflect) { + r = Reflect.deleteProperty(h.value, index >>> 0); + } + else { + try { + r = delete h.value[index >>> 0]; + } + catch (_) { + r = false; + } + } + if (result) { + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r ? 1 : 0, true); + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_define_properties(env, object, property_count, properties) { + var propPtr, attributes; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + properties >>>= 0; + property_count >>>= 0; + property_count = property_count >>> 0; + if (property_count > 0) { + if (!properties) + return envObject.setLastError(1); + } + if (!object) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(object); + var maybeObject = h.value; + if (!(h.isObject() || h.isFunction())) { + return envObject.setLastError(2); + } + var propertyName = void 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + for (var i = 0; i < property_count; i++) { + propPtr = properties + (i * (4 * 8)); + var utf8Name = HEAP_DATA_VIEW.getUint32(propPtr, true); + var name_2 = HEAP_DATA_VIEW.getUint32(propPtr + 4, true); + var method = HEAP_DATA_VIEW.getUint32(propPtr + 8, true); + var getter = HEAP_DATA_VIEW.getUint32(propPtr + 12, true); + var setter = HEAP_DATA_VIEW.getUint32(propPtr + 16, true); + var value = HEAP_DATA_VIEW.getUint32(propPtr + 20, true); + attributes = HEAP_DATA_VIEW.getInt32(propPtr + 24, true); + attributes >>>= 0; + var data = HEAP_DATA_VIEW.getUint32(propPtr + 28, true); + if (utf8Name) { + propertyName = emnapiString.UTF8ToString(utf8Name, -1); + } + else { + if (!name_2) { + return envObject.setLastError(4); + } + propertyName = emnapiCtx.handleStore.get(name_2).value; + if (typeof propertyName !== 'string' && typeof propertyName !== 'symbol') { + return envObject.setLastError(4); + } + } + emnapiDefineProperty(envObject, maybeObject, propertyName, method, getter, setter, value, attributes, data); + } + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_object_freeze(env, object) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!object) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(object); + var maybeObject = h.value; + if (!(h.isObject() || h.isFunction())) { + return envObject.setLastError(2); + } + Object.freeze(maybeObject); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_object_seal(env, object) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!object) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(object); + var maybeObject = h.value; + if (!(h.isObject() || h.isFunction())) { + return envObject.setLastError(2); + } + Object.seal(maybeObject); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + var propertyMod = Object.freeze({ + __proto__: null, + napi_define_properties: napi_define_properties, + napi_delete_element: napi_delete_element, + napi_delete_property: napi_delete_property, + napi_get_all_property_names: napi_get_all_property_names, + napi_get_element: napi_get_element, + napi_get_named_property: napi_get_named_property, + napi_get_property: napi_get_property, + napi_get_property_names: napi_get_property_names, + napi_has_element: napi_has_element, + napi_has_named_property: napi_has_named_property, + napi_has_own_property: napi_has_own_property, + napi_has_property: napi_has_property, + napi_object_freeze: napi_object_freeze, + napi_object_seal: napi_object_seal, + napi_set_element: napi_set_element, + napi_set_named_property: napi_set_named_property, + napi_set_property: napi_set_property + }); + function napi_run_script(env, script, result) { + var status; + var value; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!script) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var v8Script = emnapiCtx.handleStore.get(script); + if (!v8Script.isString()) { + return envObject.setLastError(3); + } + var g = emnapiCtx.handleStore.get(5).value; + var ret = g.eval(v8Script.value); + result >>>= 0; + value = envObject.ensureHandleId(ret); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, value, true); + status = envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + return status; + } + var scriptMod = Object.freeze({ + __proto__: null, + napi_run_script: napi_run_script + }); + function napi_typeof(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var v = emnapiCtx.handleStore.get(value); + result >>>= 0; + var r; + if (v.isNumber()) { + r = 3; + } + else if (v.isBigInt()) { + r = 9; + } + else if (v.isString()) { + r = 4; + } + else if (v.isFunction()) { + r = 7; + } + else if (v.isExternal()) { + r = 8; + } + else if (v.isObject()) { + r = 6; + } + else if (v.isBoolean()) { + r = 2; + } + else if (v.isUndefined()) { + r = 0; + } + else if (v.isSymbol()) { + r = 5; + } + else if (v.isNull()) { + r = 1; + } + else { + return envObject.setLastError(1); + } + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt32(result, r, true); + return envObject.clearLastError(); + } + function napi_coerce_to_bool(env, value, result) { + var v; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + result >>>= 0; + v = handle.value ? 4 : 3; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_coerce_to_number(env, value, result) { + var v; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + if (handle.isBigInt()) { + throw new TypeError('Cannot convert a BigInt value to a number'); + } + result >>>= 0; + v = emnapiCtx.addToCurrentScope(Number(handle.value)).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_coerce_to_object(env, value, result) { + var v; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + if (handle.value == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + result >>>= 0; + v = envObject.ensureHandleId(Object(handle.value)); + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_coerce_to_string(env, value, result) { + var v; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var handle = emnapiCtx.handleStore.get(value); + if (handle.isSymbol()) { + throw new TypeError('Cannot convert a Symbol value to a string'); + } + result >>>= 0; + v = emnapiCtx.addToCurrentScope(String(handle.value)).id; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, v, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_instanceof(env, object, constructor, result) { + var r; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!object) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + if (!constructor) + return envObject.setLastError(1); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, 0, true); + var ctor = emnapiCtx.handleStore.get(constructor); + if (!ctor.isFunction()) { + return envObject.setLastError(5); + } + var val = emnapiCtx.handleStore.get(object).value; + var ret = val instanceof ctor.value; + r = ret ? 1 : 0; + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_is_array(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(value); + result >>>= 0; + var r = h.isArray() ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + function napi_is_arraybuffer(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(value); + result >>>= 0; + var r = h.isArrayBuffer() ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + function node_api_is_sharedarraybuffer(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(value); + result >>>= 0; + var r = ((typeof SharedArrayBuffer === 'function' && h.value instanceof SharedArrayBuffer) || + (Object.prototype.toString.call(h.value) === '[object SharedArrayBuffer]')) + ? 1 + : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + function napi_is_date(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(value); + result >>>= 0; + var r = h.isDate() ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + function napi_is_error(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var val = emnapiCtx.handleStore.get(value).value; + result >>>= 0; + var r = (val instanceof Error) ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + function napi_is_typedarray(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(value); + result >>>= 0; + var r = h.isTypedArray() ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + function napi_is_buffer(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(value); + result >>>= 0; + var r = h.isBuffer(emnapiCtx.feature.Buffer) ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + function napi_is_dataview(env, value, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!value) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(value); + result >>>= 0; + var r = h.isDataView() ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.clearLastError(); + } + function napi_strict_equals(env, lhs, rhs, result) { + var r; + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!lhs) + return envObject.setLastError(1); + if (!rhs) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var lv = emnapiCtx.handleStore.get(lhs).value; + var rv = emnapiCtx.handleStore.get(rhs).value; + result >>>= 0; + r = (lv === rv) ? 1 : 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setInt8(result, r, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + function napi_detach_arraybuffer(env, arraybuffer) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!arraybuffer) + return envObject.setLastError(1); + var value = emnapiCtx.handleStore.get(arraybuffer).value; + if (!(value instanceof ArrayBuffer)) { + if (typeof SharedArrayBuffer === 'function' && (value instanceof SharedArrayBuffer)) { + return envObject.setLastError(20); + } + return envObject.setLastError(19); + } + try { + var MessageChannel_1 = emnapiCtx.feature.MessageChannel; + var messageChannel = new MessageChannel_1(); + messageChannel.port1.postMessage(value, [value]); + } + catch (_) { + return envObject.setLastError(9); + } + return envObject.clearLastError(); + } + function napi_is_detached_arraybuffer(env, arraybuffer, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + envObject.checkGCAccess(); + if (!envObject.tryCatch.isEmpty()) + return envObject.setLastError(10); + if (!envObject.canCallIntoJs()) + return envObject.setLastError(envObject.moduleApiVersion >= 10 ? 23 : 10); + envObject.clearLastError(); + try { + if (!arraybuffer) + return envObject.setLastError(1); + if (!result) + return envObject.setLastError(1); + var h = emnapiCtx.handleStore.get(arraybuffer); + result >>>= 0; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + if (h.isArrayBuffer() && h.value.byteLength === 0) { + try { + new Uint8Array(h.value); + } + catch (_) { + HEAP_DATA_VIEW.setInt8(result, 1, true); + return envObject.getReturnStatus(); + } + } + HEAP_DATA_VIEW.setInt8(result, 0, true); + return envObject.getReturnStatus(); + } + catch (err) { + envObject.tryCatch.setError(err); + return envObject.setLastError(10); + } + } + var valueOperationMod = Object.freeze({ + __proto__: null, + napi_coerce_to_bool: napi_coerce_to_bool, + napi_coerce_to_number: napi_coerce_to_number, + napi_coerce_to_object: napi_coerce_to_object, + napi_coerce_to_string: napi_coerce_to_string, + napi_detach_arraybuffer: napi_detach_arraybuffer, + napi_instanceof: napi_instanceof, + napi_is_array: napi_is_array, + napi_is_arraybuffer: napi_is_arraybuffer, + napi_is_buffer: napi_is_buffer, + napi_is_dataview: napi_is_dataview, + napi_is_date: napi_is_date, + napi_is_detached_arraybuffer: napi_is_detached_arraybuffer, + napi_is_error: napi_is_error, + napi_is_typedarray: napi_is_typedarray, + napi_strict_equals: napi_strict_equals, + napi_typeof: napi_typeof, + node_api_is_sharedarraybuffer: node_api_is_sharedarraybuffer + }); + function napi_get_version(env, result) { + if (!env) + return 1; + var envObject = emnapiCtx.envStore.get(env); + if (!result) + return envObject.setLastError(1); + var NODE_API_SUPPORTED_VERSION_MAX = 10; + var HEAP_DATA_VIEW = new DataView(wasmMemory.buffer); + HEAP_DATA_VIEW.setUint32(result, NODE_API_SUPPORTED_VERSION_MAX, true); + return envObject.clearLastError(); + } + var versionMod = Object.freeze({ + __proto__: null, + napi_get_version: napi_get_version + }); + emnapiAWST.init(); + emnapiExternalMemory.init(); + emnapiString.init(); + emnapiTSFN.init(); + PThread.init(); + napiModule.emnapi.syncMemory = $emnapiSyncMemory; + napiModule.emnapi.getMemoryAddress = $emnapiGetMemoryAddress; + function addImports(mod) { + var keys = Object.keys(mod); + for (var i = 0; i < keys.length; ++i) { + var k = keys[i]; + if (k.indexOf('$') === 0) + continue; + if (k.indexOf('emnapi_') === 0) { + napiModule.imports.emnapi[k] = mod[k]; + } + else if (k.indexOf('_emnapi_') === 0 || k === 'napi_set_last_error' || k === 'napi_clear_last_error') { + napiModule.imports.env[k] = mod[k]; + } + else { + napiModule.imports.napi[k] = mod[k]; + } + } + } + addImports(asyncMod); + addImports(memoryMod); + addImports(asyncWorkMod); + addImports(utilMod); + addImports(convert2cMod); + addImports(convert2napiMod); + addImports(createMod); + addImports(globalMod); + addImports(wrapMod); + addImports(envMod); + addImports(emnapiMod); + addImports(errorMod); + addImports(functionMod); + addImports(lifeMod); + addImports(miscellaneousMod); + addImports(nodeMod); + addImports(promiseMod); + addImports(propertyMod); + addImports(scriptMod); + addImports(valueOperationMod); + addImports(versionMod); + napiModule.imports.napi.napi_create_threadsafe_function = napi_create_threadsafe_function; + napiModule.imports.napi.napi_get_threadsafe_function_context = napi_get_threadsafe_function_context; + napiModule.imports.napi.napi_call_threadsafe_function = napi_call_threadsafe_function; + napiModule.imports.napi.napi_acquire_threadsafe_function = napi_acquire_threadsafe_function; + napiModule.imports.napi.napi_release_threadsafe_function = napi_release_threadsafe_function; + napiModule.imports.napi.napi_unref_threadsafe_function = napi_unref_threadsafe_function; + napiModule.imports.napi.napi_ref_threadsafe_function = napi_ref_threadsafe_function; + return napiModule; + })(); + return napiModule; +} + +function loadNapiModuleImpl(loadFn, userNapiModule, wasmInput, options) { + options = options !== null && options !== void 0 ? options : {}; + const getMemory = options.getMemory; + const getTable = options.getTable; + const beforeInit = options.beforeInit; + if (getMemory != null && typeof getMemory !== 'function') { + throw new TypeError('options.getMemory is not a function'); + } + if (getTable != null && typeof getTable !== 'function') { + throw new TypeError('options.getTable is not a function'); + } + if (beforeInit != null && typeof beforeInit !== 'function') { + throw new TypeError('options.beforeInit is not a function'); + } + let napiModule; + const isLoad = typeof userNapiModule === 'object' && userNapiModule !== null; + if (isLoad) { + if (userNapiModule.loaded) { + throw new Error('napiModule has already loaded'); + } + napiModule = userNapiModule; + } + else { + napiModule = createNapiModule(options); + } + const wasi = options.wasi; + let wasiThreads; + let importObject = { + env: napiModule.imports.env, + napi: napiModule.imports.napi, + emnapi: napiModule.imports.emnapi + }; + if (wasi) { + wasiThreads = new WASIThreads(napiModule.childThread + ? { + wasi, + childThread: true, + postMessage: napiModule.postMessage + } + : { + wasi, + threadManager: napiModule.PThread, + waitThreadStart: napiModule.waitThreadStart + }); + Object.assign(importObject, typeof wasi.getImportObject === 'function' + ? wasi.getImportObject() + : { wasi_snapshot_preview1: wasi.wasiImport }); + Object.assign(importObject, wasiThreads.getImportObject()); + } + const overwriteImports = options.overwriteImports; + if (typeof overwriteImports === 'function') { + const newImportObject = overwriteImports(importObject); + if (typeof newImportObject === 'object' && newImportObject !== null) { + importObject = newImportObject; + } + } + return loadFn(wasmInput, importObject, (err, source) => { + if (err) { + throw err; + } + const originalInstance = source.instance; + let instance = originalInstance; + const originalExports = originalInstance.exports; + const exportMemory = 'memory' in originalExports; + const importMemory = 'memory' in importObject.env; + const memory = getMemory + ? getMemory(originalExports) + : exportMemory + ? originalExports.memory + : importMemory + ? importObject.env.memory + : undefined; + if (!memory) { + throw new Error('memory is neither exported nor imported'); + } + const table = getTable ? getTable(originalExports) : originalExports.__indirect_function_table; + if (wasi && !exportMemory) { + const exports$1 = Object.create(null); + Object.assign(exports$1, originalExports, { memory }); + instance = { exports: exports$1 }; + } + const module = source.module; + if (wasi) { + instance = wasiThreads.initialize(instance, module, memory); + } + else { + napiModule.PThread.setup(module, memory); + } + const emnapiInit = () => { + if (beforeInit) { + beforeInit({ + instance: originalInstance, + module + }); + } + napiModule.init({ + instance, + module, + memory, + table + }); + const ret = { + instance: originalInstance, + module, + usedInstance: instance + }; + if (!isLoad) { + ret.napiModule = napiModule; + } + return ret; + }; + if (napiModule.PThread.shouldPreloadWorkers()) { + const poolReady = napiModule.PThread.loadWasmModuleToAllWorkers(); + if (loadFn === loadCallback) { + return poolReady.then(emnapiInit); + } + else { + throw new Error('Synchronous loading is not supported with worker pool (reuseWorker.size > 0)'); + } + } + return emnapiInit(); + }); +} +function loadCallback(wasmInput, importObject, callback) { + return load(wasmInput, importObject).then((source) => { + return callback(null, source); + }, err => { + return callback(err); + }); +} +function loadSyncCallback(wasmInput, importObject, callback) { + let source; + try { + source = loadSync(wasmInput, importObject); + } + catch (err) { + return callback(err); + } + return callback(null, source); +} +function loadNapiModule(napiModule, wasmInput, options) { + if (typeof napiModule !== 'object' || napiModule === null) { + throw new TypeError('Invalid napiModule'); + } + return loadNapiModuleImpl(loadCallback, napiModule, wasmInput, options); +} +function loadNapiModuleSync(napiModule, wasmInput, options) { + if (typeof napiModule !== 'object' || napiModule === null) { + throw new TypeError('Invalid napiModule'); + } + return loadNapiModuleImpl(loadSyncCallback, napiModule, wasmInput, options); +} +function instantiateNapiModule(wasmInput, options) { + return loadNapiModuleImpl(loadCallback, undefined, wasmInput, options); +} +function instantiateNapiModuleSync(wasmInput, options) { + return loadNapiModuleImpl(loadSyncCallback, undefined, wasmInput, options); +} + +class MessageHandler extends ThreadMessageHandler { + constructor(options) { + if (typeof options.onLoad !== 'function') { + throw new TypeError('options.onLoad is not a function'); + } + const userOnError = options.onError; + super({ + ...options, + onError: (err, type) => { + var _a; + const emnapi_thread_crashed = (_a = this.instance) === null || _a === void 0 ? void 0 : _a.exports.emnapi_thread_crashed; + if (typeof emnapi_thread_crashed === 'function') { + emnapi_thread_crashed(); + } + if (typeof userOnError === 'function') { + userOnError(err, type); + } + else { + throw err; + } + } + }); + this.napiModule = undefined; + } + instantiate(data) { + const source = this.onLoad(data); + const then = source.then; + if (typeof then === 'function') { + return source.then((result) => { + this.napiModule = result.napiModule; + return result; + }); + } + this.napiModule = source.napiModule; + return source; + } + handle(e) { + var _a; + super.handle(e); + if ((_a = e === null || e === void 0 ? void 0 : e.data) === null || _a === void 0 ? void 0 : _a.__emnapi__) { + const type = e.data.__emnapi__.type; + const payload = e.data.__emnapi__.payload; + try { + if (type === 'async-worker-init') { + this.handleAfterLoad(e, () => { + this.napiModule.initWorker(payload.arg, payload.func); + }); + } + } + catch (err) { + this.onError(err, type); + } + } + } +} + +const version = "1.10.0"; + +export { MessageHandler, createNapiModule, instantiateNapiModule, instantiateNapiModuleSync, loadNapiModule, loadNapiModuleSync, version }; diff --git a/node_modules/@emnapi/core/index.js b/node_modules/@emnapi/core/index.js new file mode 100644 index 00000000..11764ede --- /dev/null +++ b/node_modules/@emnapi/core/index.js @@ -0,0 +1,5 @@ +if (typeof process !== 'undefined' && process.env.NODE_ENV === 'production') { + module.exports = require('./dist/emnapi-core.cjs.min.js') +} else { + module.exports = require('./dist/emnapi-core.cjs.js') +} diff --git a/node_modules/@emnapi/core/package.json b/node_modules/@emnapi/core/package.json new file mode 100644 index 00000000..d61c08c9 --- /dev/null +++ b/node_modules/@emnapi/core/package.json @@ -0,0 +1,49 @@ +{ + "name": "@emnapi/core", + "version": "1.10.0", + "description": "emnapi core", + "main": "index.js", + "module": "./dist/emnapi-core.esm-bundler.js", + "types": "./dist/emnapi-core.d.ts", + "sideEffects": false, + "exports": { + ".": { + "types": { + "module": "./dist/emnapi-core.d.ts", + "import": "./dist/emnapi-core.d.mts", + "default": "./dist/emnapi-core.d.ts" + }, + "module": "./dist/emnapi-core.esm-bundler.js", + "import": "./dist/emnapi-core.mjs", + "default": "./index.js" + }, + "./dist/emnapi-core.cjs.min": { + "types": "./dist/emnapi-core.d.ts", + "default": "./dist/emnapi-core.cjs.min.js" + }, + "./dist/emnapi-core.min.mjs": { + "types": "./dist/emnapi-core.d.mts", + "default": "./dist/emnapi-core.min.mjs" + } + }, + "dependencies": { + "@emnapi/wasi-threads": "1.2.1", + "tslib": "^2.4.0" + }, + "scripts": { + "build": "node ./script/build.js" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/toyobayashi/emnapi.git" + }, + "author": "toyobayashi", + "license": "MIT", + "bugs": { + "url": "https://github.com/toyobayashi/emnapi/issues" + }, + "homepage": "https://github.com/toyobayashi/emnapi#readme", + "publishConfig": { + "access": "public" + } +} diff --git a/node_modules/@emnapi/runtime/LICENSE b/node_modules/@emnapi/runtime/LICENSE new file mode 100644 index 00000000..05a59441 --- /dev/null +++ b/node_modules/@emnapi/runtime/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021-present Toyobayashi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/@emnapi/runtime/README.md b/node_modules/@emnapi/runtime/README.md new file mode 100644 index 00000000..c98dddca --- /dev/null +++ b/node_modules/@emnapi/runtime/README.md @@ -0,0 +1 @@ +See [https://github.com/toyobayashi/emnapi](https://github.com/toyobayashi/emnapi) diff --git a/node_modules/@emnapi/runtime/dist/emnapi.cjs.js b/node_modules/@emnapi/runtime/dist/emnapi.cjs.js new file mode 100644 index 00000000..562d3155 --- /dev/null +++ b/node_modules/@emnapi/runtime/dist/emnapi.cjs.js @@ -0,0 +1,1381 @@ +const externalValue = new WeakMap(); +function isExternal(object) { + return externalValue.has(object); +} +const External = (() => { + function External(value) { + Object.setPrototypeOf(this, null); + externalValue.set(this, value); + } + External.prototype = null; + return External; +})(); +function getExternalValue(external) { + if (!isExternal(external)) { + throw new TypeError('not external'); + } + return externalValue.get(external); +} + +const supportNewFunction = (function () { + let f; + try { + f = new Function(); + } + catch (_) { + return false; + } + return typeof f === 'function'; +})(); +const _global = (function () { + if (typeof globalThis !== 'undefined') + return globalThis; + let g = (function () { return this; })(); + if (!g && supportNewFunction) { + try { + g = new Function('return this')(); + } + catch (_) { } + } + if (!g) { + if (typeof __webpack_public_path__ === 'undefined') { + if (typeof global !== 'undefined') + return global; + } + if (typeof window !== 'undefined') + return window; + if (typeof self !== 'undefined') + return self; + } + return g; +})(); +class TryCatch { + constructor() { + this._exception = undefined; + this._caught = false; + } + isEmpty() { + return !this._caught; + } + hasCaught() { + return this._caught; + } + exception() { + return this._exception; + } + setError(err) { + this._caught = true; + this._exception = err; + } + reset() { + this._caught = false; + this._exception = undefined; + } + extractException() { + const e = this._exception; + this.reset(); + return e; + } +} +const canSetFunctionName = (function () { + var _a; + try { + return Boolean((_a = Object.getOwnPropertyDescriptor(Function.prototype, 'name')) === null || _a === void 0 ? void 0 : _a.configurable); + } + catch (_) { + return false; + } +})(); +const supportReflect = typeof Reflect === 'object'; +const supportFinalizer = (typeof FinalizationRegistry !== 'undefined') && (typeof WeakRef !== 'undefined'); +const supportWeakSymbol = (function () { + try { + const sym = Symbol(); + new WeakRef(sym); + new WeakMap().set(sym, undefined); + } + catch (_) { + return false; + } + return true; +})(); +const supportBigInt = typeof BigInt !== 'undefined'; +function isReferenceType(v) { + return (typeof v === 'object' && v !== null) || typeof v === 'function'; +} +const _require = (function () { + let nativeRequire; + if (typeof __webpack_public_path__ !== 'undefined') { + nativeRequire = (function () { + return typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : undefined; + })(); + } + else { + nativeRequire = (function () { + return typeof __webpack_public_path__ !== 'undefined' ? (typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : undefined) : (typeof require !== 'undefined' ? require : undefined); + })(); + } + return nativeRequire; +})(); +const _MessageChannel = typeof MessageChannel === 'function' + ? MessageChannel + : (function () { + try { + return _require('worker_threads').MessageChannel; + } + catch (_) { } + return undefined; + })(); +const _setImmediate = typeof setImmediate === 'function' + ? setImmediate + : function (callback) { + if (typeof callback !== 'function') { + throw new TypeError('The "callback" argument must be of type function'); + } + if (_MessageChannel) { + let channel = new _MessageChannel(); + channel.port1.onmessage = function () { + channel.port1.onmessage = null; + channel = undefined; + callback(); + }; + channel.port2.postMessage(null); + } + else { + setTimeout(callback, 0); + } + }; +const _Buffer = typeof Buffer === 'function' + ? Buffer + : (function () { + try { + return _require('buffer').Buffer; + } + catch (_) { } + return undefined; + })(); +const version = "1.10.0"; +const NODE_API_SUPPORTED_VERSION_MIN = 1; +const NODE_API_SUPPORTED_VERSION_MAX = 10; +const NAPI_VERSION_EXPERIMENTAL = 2147483647; +const NODE_API_DEFAULT_MODULE_API_VERSION = 8; + +class Handle { + constructor(id, value) { + this.id = id; + this.value = value; + } + data() { + return getExternalValue(this.value); + } + isNumber() { + return typeof this.value === 'number'; + } + isBigInt() { + return typeof this.value === 'bigint'; + } + isString() { + return typeof this.value === 'string'; + } + isFunction() { + return typeof this.value === 'function'; + } + isExternal() { + return isExternal(this.value); + } + isObject() { + return typeof this.value === 'object' && this.value !== null; + } + isArray() { + return Array.isArray(this.value); + } + isArrayBuffer() { + return (this.value instanceof ArrayBuffer); + } + isTypedArray() { + return (ArrayBuffer.isView(this.value)) && !(this.value instanceof DataView); + } + isBuffer(BufferConstructor) { + if (ArrayBuffer.isView(this.value)) + return true; + BufferConstructor !== null && BufferConstructor !== void 0 ? BufferConstructor : (BufferConstructor = _Buffer); + return typeof BufferConstructor === 'function' && BufferConstructor.isBuffer(this.value); + } + isDataView() { + return (this.value instanceof DataView); + } + isDate() { + return (this.value instanceof Date); + } + isPromise() { + return (this.value instanceof Promise); + } + isBoolean() { + return typeof this.value === 'boolean'; + } + isUndefined() { + return this.value === undefined; + } + isSymbol() { + return typeof this.value === 'symbol'; + } + isNull() { + return this.value === null; + } + dispose() { + this.value = undefined; + } +} +class ConstHandle extends Handle { + constructor(id, value) { + super(id, value); + } + dispose() { } +} +class HandleStore { + constructor() { + this._values = [ + undefined, + HandleStore.UNDEFINED, + HandleStore.NULL, + HandleStore.FALSE, + HandleStore.TRUE, + HandleStore.GLOBAL + ]; + this._next = HandleStore.MIN_ID; + } + push(value) { + let h; + const next = this._next; + const values = this._values; + if (next < values.length) { + h = values[next]; + h.value = value; + } + else { + h = new Handle(next, value); + values[next] = h; + } + this._next++; + return h; + } + erase(start, end) { + this._next = start; + const values = this._values; + for (let i = start; i < end; ++i) { + values[i].dispose(); + } + } + get(id) { + return this._values[id]; + } + swap(a, b) { + const values = this._values; + const h = values[a]; + values[a] = values[b]; + values[a].id = Number(a); + values[b] = h; + h.id = Number(b); + } + dispose() { + this._values.length = HandleStore.MIN_ID; + this._next = HandleStore.MIN_ID; + } +} +HandleStore.UNDEFINED = new ConstHandle(1, undefined); +HandleStore.NULL = new ConstHandle(2, null); +HandleStore.FALSE = new ConstHandle(3, false); +HandleStore.TRUE = new ConstHandle(4, true); +HandleStore.GLOBAL = new ConstHandle(5, _global); +HandleStore.MIN_ID = 6; + +class HandleScope { + constructor(handleStore, id, parentScope, start, end = start) { + this.handleStore = handleStore; + this.id = id; + this.parent = parentScope; + this.child = null; + if (parentScope !== null) + parentScope.child = this; + this.start = start; + this.end = end; + this._escapeCalled = false; + this.callbackInfo = { + thiz: undefined, + data: 0, + args: undefined, + fn: undefined + }; + } + add(value) { + const h = this.handleStore.push(value); + this.end++; + return h; + } + addExternal(data) { + return this.add(new External(data)); + } + dispose() { + if (this._escapeCalled) + this._escapeCalled = false; + if (this.start === this.end) + return; + this.handleStore.erase(this.start, this.end); + } + escape(handle) { + if (this._escapeCalled) + return null; + this._escapeCalled = true; + if (handle < this.start || handle >= this.end) { + return null; + } + this.handleStore.swap(handle, this.start); + const h = this.handleStore.get(this.start); + this.start++; + this.parent.end++; + return h; + } + escapeCalled() { + return this._escapeCalled; + } +} + +class ScopeStore { + constructor() { + this._rootScope = new HandleScope(null, 0, null, 1, HandleStore.MIN_ID); + this.currentScope = this._rootScope; + this._values = [undefined]; + } + get(id) { + return this._values[id]; + } + openScope(handleStore) { + const currentScope = this.currentScope; + let scope = currentScope.child; + if (scope !== null) { + scope.start = scope.end = currentScope.end; + } + else { + const id = currentScope.id + 1; + scope = new HandleScope(handleStore, id, currentScope, currentScope.end); + this._values[id] = scope; + } + this.currentScope = scope; + return scope; + } + closeScope() { + const scope = this.currentScope; + this.currentScope = scope.parent; + scope.dispose(); + } + dispose() { + this.currentScope = this._rootScope; + this._values.length = 1; + } +} + +class RefTracker { + constructor() { + this._next = null; + this._prev = null; + } + dispose() { } + finalize() { } + link(list) { + this._prev = list; + this._next = list._next; + if (this._next !== null) { + this._next._prev = this; + } + list._next = this; + } + unlink() { + if (this._prev !== null) { + this._prev._next = this._next; + } + if (this._next !== null) { + this._next._prev = this._prev; + } + this._prev = null; + this._next = null; + } + static finalizeAll(list) { + while (list._next !== null) { + list._next.finalize(); + } + } +} + +class Finalizer { + constructor(envObject, _finalizeCallback = 0, _finalizeData = 0, _finalizeHint = 0) { + this.envObject = envObject; + this._finalizeCallback = _finalizeCallback; + this._finalizeData = _finalizeData; + this._finalizeHint = _finalizeHint; + this._makeDynCall_vppp = envObject.makeDynCall_vppp; + } + callback() { return this._finalizeCallback; } + data() { return this._finalizeData; } + hint() { return this._finalizeHint; } + resetEnv() { + this.envObject = undefined; + } + resetFinalizer() { + this._finalizeCallback = 0; + this._finalizeData = 0; + this._finalizeHint = 0; + } + callFinalizer() { + const finalize_callback = this._finalizeCallback; + const finalize_data = this._finalizeData; + const finalize_hint = this._finalizeHint; + this.resetFinalizer(); + if (!finalize_callback) + return; + const fini = Number(finalize_callback); + if (!this.envObject) { + this._makeDynCall_vppp(fini)(0, finalize_data, finalize_hint); + } + else { + this.envObject.callFinalizer(fini, finalize_data, finalize_hint); + } + } + dispose() { + this.envObject = undefined; + this._makeDynCall_vppp = undefined; + } +} + +class TrackedFinalizer extends RefTracker { + static create(envObject, finalize_callback, finalize_data, finalize_hint) { + const finalizer = new TrackedFinalizer(envObject, finalize_callback, finalize_data, finalize_hint); + finalizer.link(envObject.finalizing_reflist); + return finalizer; + } + constructor(envObject, finalize_callback, finalize_data, finalize_hint) { + super(); + this._finalizer = new Finalizer(envObject, finalize_callback, finalize_data, finalize_hint); + } + data() { + return this._finalizer.data(); + } + dispose() { + if (!this._finalizer) + return; + this.unlink(); + this._finalizer.envObject.dequeueFinalizer(this); + this._finalizer.dispose(); + this._finalizer = undefined; + super.dispose(); + } + finalize() { + this.unlink(); + let error; + let caught = false; + try { + this._finalizer.callFinalizer(); + } + catch (err) { + caught = true; + error = err; + } + this.dispose(); + if (caught) { + throw error; + } + } +} + +function throwNodeApiVersionError(moduleName, moduleApiVersion) { + const errorMessage = `${moduleName} requires Node-API version ${moduleApiVersion}, but this version of Node.js only supports version ${NODE_API_SUPPORTED_VERSION_MAX} add-ons.`; + throw new Error(errorMessage); +} +function handleThrow(envObject, value) { + if (envObject.terminatedOrTerminating()) { + return; + } + throw value; +} +class Env { + constructor(ctx, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort) { + this.ctx = ctx; + this.moduleApiVersion = moduleApiVersion; + this.makeDynCall_vppp = makeDynCall_vppp; + this.makeDynCall_vp = makeDynCall_vp; + this.abort = abort; + this.openHandleScopes = 0; + this.instanceData = null; + this.tryCatch = new TryCatch(); + this.refs = 1; + this.reflist = new RefTracker(); + this.finalizing_reflist = new RefTracker(); + this.pendingFinalizers = []; + this.lastError = { + errorCode: 0, + engineErrorCode: 0, + engineReserved: 0 + }; + this.inGcFinalizer = false; + this._bindingMap = new WeakMap(); + this.id = 0; + } + canCallIntoJs() { + return true; + } + terminatedOrTerminating() { + return !this.canCallIntoJs(); + } + ref() { + this.refs++; + } + unref() { + this.refs--; + if (this.refs === 0) { + this.dispose(); + } + } + ensureHandle(value) { + return this.ctx.ensureHandle(value); + } + ensureHandleId(value) { + return this.ensureHandle(value).id; + } + clearLastError() { + const lastError = this.lastError; + if (lastError.errorCode !== 0) + lastError.errorCode = 0; + if (lastError.engineErrorCode !== 0) + lastError.engineErrorCode = 0; + if (lastError.engineReserved !== 0) + lastError.engineReserved = 0; + return 0; + } + setLastError(error_code, engine_error_code = 0, engine_reserved = 0) { + const lastError = this.lastError; + if (lastError.errorCode !== error_code) + lastError.errorCode = error_code; + if (lastError.engineErrorCode !== engine_error_code) + lastError.engineErrorCode = engine_error_code; + if (lastError.engineReserved !== engine_reserved) + lastError.engineReserved = engine_reserved; + return error_code; + } + getReturnStatus() { + return !this.tryCatch.hasCaught() ? 0 : this.setLastError(10); + } + callIntoModule(fn, handleException = handleThrow) { + const openHandleScopesBefore = this.openHandleScopes; + this.clearLastError(); + const r = fn(this); + if (openHandleScopesBefore !== this.openHandleScopes) { + this.abort('open_handle_scopes != open_handle_scopes_before'); + } + if (this.tryCatch.hasCaught()) { + const err = this.tryCatch.extractException(); + handleException(this, err); + } + return r; + } + invokeFinalizerFromGC(finalizer) { + if (this.moduleApiVersion !== NAPI_VERSION_EXPERIMENTAL) { + this.enqueueFinalizer(finalizer); + } + else { + const saved = this.inGcFinalizer; + this.inGcFinalizer = true; + try { + finalizer.finalize(); + } + finally { + this.inGcFinalizer = saved; + } + } + } + checkGCAccess() { + if (this.moduleApiVersion === NAPI_VERSION_EXPERIMENTAL && this.inGcFinalizer) { + this.abort('Finalizer is calling a function that may affect GC state.\n' + + 'The finalizers are run directly from GC and must not affect GC ' + + 'state.\n' + + 'Use `node_api_post_finalizer` from inside of the finalizer to work ' + + 'around this issue.\n' + + 'It schedules the call as a new task in the event loop.'); + } + } + enqueueFinalizer(finalizer) { + if (this.pendingFinalizers.indexOf(finalizer) === -1) { + this.pendingFinalizers.push(finalizer); + } + } + dequeueFinalizer(finalizer) { + const index = this.pendingFinalizers.indexOf(finalizer); + if (index !== -1) { + this.pendingFinalizers.splice(index, 1); + } + } + deleteMe() { + RefTracker.finalizeAll(this.finalizing_reflist); + RefTracker.finalizeAll(this.reflist); + this.tryCatch.extractException(); + this.ctx.envStore.remove(this.id); + } + dispose() { + if (this.id === 0) + return; + this.deleteMe(); + this.finalizing_reflist.dispose(); + this.reflist.dispose(); + this.id = 0; + } + initObjectBinding(value) { + const binding = { + wrapped: 0, + tag: null + }; + this._bindingMap.set(value, binding); + return binding; + } + getObjectBinding(value) { + if (this._bindingMap.has(value)) { + return this._bindingMap.get(value); + } + return this.initObjectBinding(value); + } + setInstanceData(data, finalize_cb, finalize_hint) { + if (this.instanceData) { + this.instanceData.dispose(); + } + this.instanceData = TrackedFinalizer.create(this, finalize_cb, data, finalize_hint); + } + getInstanceData() { + return this.instanceData ? this.instanceData.data() : 0; + } +} +class NodeEnv extends Env { + constructor(ctx, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding) { + super(ctx, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort); + this.filename = filename; + this.nodeBinding = nodeBinding; + this.destructing = false; + this.finalizationScheduled = false; + } + deleteMe() { + this.destructing = true; + this.drainFinalizerQueue(); + super.deleteMe(); + } + canCallIntoJs() { + return super.canCallIntoJs() && this.ctx.canCallIntoJs(); + } + triggerFatalException(err) { + if (this.nodeBinding) { + this.nodeBinding.napi.fatalException(err); + } + else { + if (typeof process === 'object' && process !== null && typeof process._fatalException === 'function') { + const handled = process._fatalException(err); + if (!handled) { + console.error(err); + process.exit(1); + } + } + else { + throw err; + } + } + } + callbackIntoModule(enforceUncaughtExceptionPolicy, fn) { + return this.callIntoModule(fn, (envObject, err) => { + if (envObject.terminatedOrTerminating()) { + return; + } + const hasProcess = typeof process === 'object' && process !== null; + const hasForceFlag = hasProcess ? Boolean(process.execArgv && (process.execArgv.indexOf('--force-node-api-uncaught-exceptions-policy') !== -1)) : false; + if (envObject.moduleApiVersion < 10 && !hasForceFlag && !enforceUncaughtExceptionPolicy) { + const warn = hasProcess && typeof process.emitWarning === 'function' + ? process.emitWarning + : function (warning, type, code) { + if (warning instanceof Error) { + console.warn(warning.toString()); + } + else { + const prefix = code ? `[${code}] ` : ''; + console.warn(`${prefix}${type || 'Warning'}: ${warning}`); + } + }; + warn('Uncaught Node-API callback exception detected, please run node with option --force-node-api-uncaught-exceptions-policy=true to handle those exceptions properly.', 'DeprecationWarning', 'DEP0168'); + return; + } + envObject.triggerFatalException(err); + }); + } + callFinalizer(cb, data, hint) { + this.callFinalizerInternal(1, cb, data, hint); + } + callFinalizerInternal(forceUncaught, cb, data, hint) { + const f = this.makeDynCall_vppp(cb); + const env = this.id; + const scope = this.ctx.openScope(this); + try { + this.callbackIntoModule(Boolean(forceUncaught), () => { f(env, data, hint); }); + } + finally { + this.ctx.closeScope(this, scope); + } + } + enqueueFinalizer(finalizer) { + super.enqueueFinalizer(finalizer); + if (!this.finalizationScheduled && !this.destructing) { + this.finalizationScheduled = true; + this.ref(); + _setImmediate(() => { + this.finalizationScheduled = false; + this.unref(); + this.drainFinalizerQueue(); + }); + } + } + drainFinalizerQueue() { + while (this.pendingFinalizers.length > 0) { + const refTracker = this.pendingFinalizers.shift(); + refTracker.finalize(); + } + } +} +function newEnv(ctx, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding) { + moduleApiVersion = typeof moduleApiVersion !== 'number' ? NODE_API_DEFAULT_MODULE_API_VERSION : moduleApiVersion; + if (moduleApiVersion < NODE_API_DEFAULT_MODULE_API_VERSION) { + moduleApiVersion = NODE_API_DEFAULT_MODULE_API_VERSION; + } + else if (moduleApiVersion > NODE_API_SUPPORTED_VERSION_MAX && moduleApiVersion !== NAPI_VERSION_EXPERIMENTAL) { + throwNodeApiVersionError(filename, moduleApiVersion); + } + const env = new NodeEnv(ctx, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding); + ctx.envStore.add(env); + ctx.addCleanupHook(env, () => { env.unref(); }, 0); + return env; +} + +class EmnapiError extends Error { + constructor(message) { + super(message); + const ErrorConstructor = new.target; + const proto = ErrorConstructor.prototype; + if (!(this instanceof EmnapiError)) { + const setPrototypeOf = Object.setPrototypeOf; + if (typeof setPrototypeOf === 'function') { + setPrototypeOf.call(Object, this, proto); + } + else { + this.__proto__ = proto; + } + if (typeof Error.captureStackTrace === 'function') { + Error.captureStackTrace(this, ErrorConstructor); + } + } + } +} +Object.defineProperty(EmnapiError.prototype, 'name', { + configurable: true, + writable: true, + value: 'EmnapiError' +}); +class NotSupportWeakRefError extends EmnapiError { + constructor(api, message) { + super(`${api}: The current runtime does not support "FinalizationRegistry" and "WeakRef".${message ? ` ${message}` : ''}`); + } +} +Object.defineProperty(NotSupportWeakRefError.prototype, 'name', { + configurable: true, + writable: true, + value: 'NotSupportWeakRefError' +}); +class NotSupportBufferError extends EmnapiError { + constructor(api, message) { + super(`${api}: The current runtime does not support "Buffer". Consider using buffer polyfill to make sure \`globalThis.Buffer\` is defined.${message ? ` ${message}` : ''}`); + } +} +Object.defineProperty(NotSupportBufferError.prototype, 'name', { + configurable: true, + writable: true, + value: 'NotSupportBufferError' +}); + +class StrongRef { + constructor(value) { + this._value = value; + } + deref() { + return this._value; + } + dispose() { + this._value = undefined; + } +} +class Persistent { + constructor(value) { + this._ref = new StrongRef(value); + } + setWeak(param, callback) { + if (!supportFinalizer || this._ref === undefined || this._ref instanceof WeakRef) + return; + const value = this._ref.deref(); + try { + Persistent._registry.register(value, this, this); + const weakRef = new WeakRef(value); + this._ref.dispose(); + this._ref = weakRef; + this._param = param; + this._callback = callback; + } + catch (err) { + if (typeof value === 'symbol') ; + else { + throw err; + } + } + } + clearWeak() { + if (!supportFinalizer || this._ref === undefined) + return; + if (this._ref instanceof WeakRef) { + try { + Persistent._registry.unregister(this); + } + catch (_) { } + this._param = undefined; + this._callback = undefined; + const value = this._ref.deref(); + if (value === undefined) { + this._ref = value; + } + else { + this._ref = new StrongRef(value); + } + } + } + reset() { + if (supportFinalizer) { + try { + Persistent._registry.unregister(this); + } + catch (_) { } + } + this._param = undefined; + this._callback = undefined; + if (this._ref instanceof StrongRef) { + this._ref.dispose(); + } + this._ref = undefined; + } + isEmpty() { + return this._ref === undefined; + } + deref() { + if (this._ref === undefined) + return undefined; + return this._ref.deref(); + } +} +Persistent._registry = supportFinalizer + ? new FinalizationRegistry((value) => { + value._ref = undefined; + const callback = value._callback; + const param = value._param; + value._callback = undefined; + value._param = undefined; + if (typeof callback === 'function') { + callback(param); + } + }) + : undefined; + +exports.ReferenceOwnership = void 0; +(function (ReferenceOwnership) { + ReferenceOwnership[ReferenceOwnership["kRuntime"] = 0] = "kRuntime"; + ReferenceOwnership[ReferenceOwnership["kUserland"] = 1] = "kUserland"; +})(exports.ReferenceOwnership || (exports.ReferenceOwnership = {})); +function canBeHeldWeakly(value) { + return value.isObject() || value.isFunction() || value.isSymbol(); +} +class Reference extends RefTracker { + static weakCallback(ref) { + ref.persistent.reset(); + ref.invokeFinalizerFromGC(); + } + static create(envObject, handle_id, initialRefcount, ownership, _unused1, _unused2, _unused3) { + const ref = new Reference(envObject, handle_id, initialRefcount, ownership); + envObject.ctx.refStore.add(ref); + ref.link(envObject.reflist); + return ref; + } + constructor(envObject, handle_id, initialRefcount, ownership) { + super(); + this.envObject = envObject; + this._refcount = initialRefcount; + this._ownership = ownership; + const handle = envObject.ctx.handleStore.get(handle_id); + this.canBeWeak = canBeHeldWeakly(handle); + this.persistent = new Persistent(handle.value); + this.id = 0; + if (initialRefcount === 0) { + this._setWeak(); + } + } + ref() { + if (this.persistent.isEmpty()) { + return 0; + } + if (++this._refcount === 1 && this.canBeWeak) { + this.persistent.clearWeak(); + } + return this._refcount; + } + unref() { + if (this.persistent.isEmpty() || this._refcount === 0) { + return 0; + } + if (--this._refcount === 0) { + this._setWeak(); + } + return this._refcount; + } + get(envObject = this.envObject) { + if (this.persistent.isEmpty()) { + return 0; + } + const obj = this.persistent.deref(); + const handle = envObject.ensureHandle(obj); + return handle.id; + } + resetFinalizer() { } + data() { return 0; } + refcount() { return this._refcount; } + ownership() { return this._ownership; } + callUserFinalizer() { } + invokeFinalizerFromGC() { + this.finalize(); + } + _setWeak() { + if (this.canBeWeak) { + this.persistent.setWeak(this, Reference.weakCallback); + } + else { + this.persistent.reset(); + } + } + finalize() { + this.persistent.reset(); + const deleteMe = this._ownership === exports.ReferenceOwnership.kRuntime; + this.unlink(); + this.callUserFinalizer(); + if (deleteMe) { + this.dispose(); + } + } + dispose() { + if (this.id === 0) + return; + this.unlink(); + this.persistent.reset(); + this.envObject.ctx.refStore.remove(this.id); + super.dispose(); + this.envObject = undefined; + this.id = 0; + } +} +class ReferenceWithData extends Reference { + static create(envObject, value, initialRefcount, ownership, data) { + const reference = new ReferenceWithData(envObject, value, initialRefcount, ownership, data); + envObject.ctx.refStore.add(reference); + reference.link(envObject.reflist); + return reference; + } + constructor(envObject, value, initialRefcount, ownership, _data) { + super(envObject, value, initialRefcount, ownership); + this._data = _data; + } + data() { + return this._data; + } +} +class ReferenceWithFinalizer extends Reference { + static create(envObject, value, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint) { + const reference = new ReferenceWithFinalizer(envObject, value, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint); + envObject.ctx.refStore.add(reference); + reference.link(envObject.finalizing_reflist); + return reference; + } + constructor(envObject, value, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint) { + super(envObject, value, initialRefcount, ownership); + this._finalizer = new Finalizer(envObject, finalize_callback, finalize_data, finalize_hint); + } + resetFinalizer() { + this._finalizer.resetFinalizer(); + } + data() { + return this._finalizer.data(); + } + callUserFinalizer() { + this._finalizer.callFinalizer(); + } + invokeFinalizerFromGC() { + this._finalizer.envObject.invokeFinalizerFromGC(this); + } + dispose() { + if (!this._finalizer) + return; + this._finalizer.envObject.dequeueFinalizer(this); + this._finalizer.dispose(); + super.dispose(); + this._finalizer = undefined; + } +} + +class Deferred { + static create(ctx, value) { + const deferred = new Deferred(ctx, value); + ctx.deferredStore.add(deferred); + return deferred; + } + constructor(ctx, value) { + this.id = 0; + this.ctx = ctx; + this.value = value; + } + resolve(value) { + this.value.resolve(value); + this.dispose(); + } + reject(reason) { + this.value.reject(reason); + this.dispose(); + } + dispose() { + this.ctx.deferredStore.remove(this.id); + this.id = 0; + this.value = null; + this.ctx = null; + } +} + +class Store { + constructor() { + this._values = [undefined]; + this._values.length = 4; + this._size = 1; + this._freeList = []; + } + add(value) { + let id; + if (this._freeList.length) { + id = this._freeList.shift(); + } + else { + id = this._size; + this._size++; + const capacity = this._values.length; + if (id >= capacity) { + this._values.length = capacity + (capacity >> 1) + 16; + } + } + value.id = id; + this._values[id] = value; + } + get(id) { + return this._values[id]; + } + has(id) { + return this._values[id] !== undefined; + } + remove(id) { + const value = this._values[id]; + if (value) { + value.id = 0; + this._values[id] = undefined; + this._freeList.push(Number(id)); + } + } + dispose() { + for (let i = 1; i < this._size; ++i) { + const value = this._values[i]; + value === null || value === void 0 ? void 0 : value.dispose(); + } + this._values = [undefined]; + this._size = 1; + this._freeList = []; + } +} + +const kMaxReasonableBytes = BigInt(1) << BigInt(60); +const kMinReasonableBytes = -kMaxReasonableBytes; +class ExternalMemory { + constructor(onChange) { + this.total = BigInt(0); + this.onChange = onChange !== null && onChange !== void 0 ? onChange : null; + } + adjust(changeInBytes) { + changeInBytes = BigInt(changeInBytes); + if (!(kMinReasonableBytes <= changeInBytes && changeInBytes < kMaxReasonableBytes)) { + throw new RangeError(`changeInBytes ${changeInBytes} is out of reasonable range`); + } + const old = this.total; + this.total += changeInBytes; + const amount = this.total; + const onChange = this.onChange; + if (changeInBytes) { + onChange === null || onChange === void 0 ? void 0 : onChange(amount, old, changeInBytes); + } + return amount; + } +} + +class CleanupHookCallback { + constructor(envObject, fn, arg, order) { + this.envObject = envObject; + this.fn = fn; + this.arg = arg; + this.order = order; + } +} +class CleanupQueue { + constructor() { + this._cleanupHooks = []; + this._cleanupHookCounter = 0; + } + empty() { + return this._cleanupHooks.length === 0; + } + add(envObject, fn, arg) { + if (this._cleanupHooks.filter((hook) => (hook.envObject === envObject && hook.fn === fn && hook.arg === arg)).length > 0) { + throw new Error('Can not add same fn and arg twice'); + } + this._cleanupHooks.push(new CleanupHookCallback(envObject, fn, arg, this._cleanupHookCounter++)); + } + remove(envObject, fn, arg) { + for (let i = 0; i < this._cleanupHooks.length; ++i) { + const hook = this._cleanupHooks[i]; + if (hook.envObject === envObject && hook.fn === fn && hook.arg === arg) { + this._cleanupHooks.splice(i, 1); + return; + } + } + } + drain() { + const hooks = this._cleanupHooks.slice(); + hooks.sort((a, b) => (b.order - a.order)); + for (let i = 0; i < hooks.length; ++i) { + const cb = hooks[i]; + if (typeof cb.fn === 'number') { + cb.envObject.makeDynCall_vp(cb.fn)(cb.arg); + } + else { + cb.fn(cb.arg); + } + this._cleanupHooks.splice(this._cleanupHooks.indexOf(cb), 1); + } + } + dispose() { + this._cleanupHooks.length = 0; + this._cleanupHookCounter = 0; + } +} +class NodejsWaitingRequestCounter { + constructor() { + this.refHandle = new _MessageChannel().port1; + this.count = 0; + } + increase() { + if (this.count === 0) { + if (this.refHandle.ref) { + this.refHandle.ref(); + } + } + this.count++; + } + decrease() { + if (this.count === 0) + return; + if (this.count === 1) { + if (this.refHandle.unref) { + this.refHandle.unref(); + } + } + this.count--; + } +} +class Context { + constructor(options) { + this._isStopping = false; + this._canCallIntoJs = true; + this._suppressDestroy = false; + this.envStore = new Store(); + this.scopeStore = new ScopeStore(); + this.refStore = new Store(); + this.deferredStore = new Store(); + this.handleStore = new HandleStore(); + this.feature = { + supportReflect, + supportFinalizer, + supportWeakSymbol, + supportBigInt, + supportNewFunction, + canSetFunctionName, + setImmediate: _setImmediate, + Buffer: _Buffer, + MessageChannel: _MessageChannel + }; + this.cleanupQueue = new CleanupQueue(); + this._externalMemory = new ExternalMemory(options === null || options === void 0 ? void 0 : options.onExternalMemoryChange); + if (typeof process === 'object' && process !== null && typeof process.once === 'function') { + this.refCounter = new NodejsWaitingRequestCounter(); + process.once('beforeExit', () => { + if (!this._suppressDestroy) { + this.destroy(); + } + }); + } + } + suppressDestroy() { + this._suppressDestroy = true; + } + getRuntimeVersions() { + return { + version, + NODE_API_SUPPORTED_VERSION_MAX, + NAPI_VERSION_EXPERIMENTAL, + NODE_API_DEFAULT_MODULE_API_VERSION + }; + } + createNotSupportWeakRefError(api, message) { + return new NotSupportWeakRefError(api, message); + } + createNotSupportBufferError(api, message) { + return new NotSupportBufferError(api, message); + } + createReference(envObject, handle_id, initialRefcount, ownership) { + return Reference.create(envObject, handle_id, initialRefcount, ownership); + } + createReferenceWithData(envObject, handle_id, initialRefcount, ownership, data) { + return ReferenceWithData.create(envObject, handle_id, initialRefcount, ownership, data); + } + createReferenceWithFinalizer(envObject, handle_id, initialRefcount, ownership, finalize_callback = 0, finalize_data = 0, finalize_hint = 0) { + return ReferenceWithFinalizer.create(envObject, handle_id, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint); + } + createDeferred(value) { + return Deferred.create(this, value); + } + adjustAmountOfExternalAllocatedMemory(changeInBytes) { + return this._externalMemory.adjust(changeInBytes); + } + createEnv(filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding) { + return newEnv(this, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding); + } + createTrackedFinalizer(envObject, finalize_callback, finalize_data, finalize_hint) { + return TrackedFinalizer.create(envObject, finalize_callback, finalize_data, finalize_hint); + } + getCurrentScope() { + return this.scopeStore.currentScope; + } + addToCurrentScope(value) { + return this.scopeStore.currentScope.add(value); + } + openScope(envObject) { + const scope = this.scopeStore.openScope(this.handleStore); + if (envObject) + envObject.openHandleScopes++; + return scope; + } + closeScope(envObject, _scope) { + if (envObject && envObject.openHandleScopes === 0) + return; + this.scopeStore.closeScope(); + if (envObject) + envObject.openHandleScopes--; + } + ensureHandle(value) { + switch (value) { + case undefined: return HandleStore.UNDEFINED; + case null: return HandleStore.NULL; + case true: return HandleStore.TRUE; + case false: return HandleStore.FALSE; + case _global: return HandleStore.GLOBAL; + } + return this.addToCurrentScope(value); + } + addCleanupHook(envObject, fn, arg) { + this.cleanupQueue.add(envObject, fn, arg); + } + removeCleanupHook(envObject, fn, arg) { + this.cleanupQueue.remove(envObject, fn, arg); + } + runCleanup() { + while (!this.cleanupQueue.empty()) { + this.cleanupQueue.drain(); + } + } + increaseWaitingRequestCounter() { + var _a; + (_a = this.refCounter) === null || _a === void 0 ? void 0 : _a.increase(); + } + decreaseWaitingRequestCounter() { + var _a; + (_a = this.refCounter) === null || _a === void 0 ? void 0 : _a.decrease(); + } + setCanCallIntoJs(value) { + this._canCallIntoJs = value; + } + setStopping(value) { + this._isStopping = value; + } + canCallIntoJs() { + return this._canCallIntoJs && !this._isStopping; + } + destroy() { + this.setStopping(true); + this.setCanCallIntoJs(false); + this.runCleanup(); + } +} +let defaultContext; +function createContext(options) { + return new Context(options); +} +function getDefaultContext() { + if (!defaultContext) { + defaultContext = createContext(); + } + return defaultContext; +} + +exports.ConstHandle = ConstHandle; +exports.Context = Context; +exports.Deferred = Deferred; +exports.EmnapiError = EmnapiError; +exports.Env = Env; +exports.External = External; +exports.Finalizer = Finalizer; +exports.Handle = Handle; +exports.HandleScope = HandleScope; +exports.HandleStore = HandleStore; +exports.NAPI_VERSION_EXPERIMENTAL = NAPI_VERSION_EXPERIMENTAL; +exports.NODE_API_DEFAULT_MODULE_API_VERSION = NODE_API_DEFAULT_MODULE_API_VERSION; +exports.NODE_API_SUPPORTED_VERSION_MAX = NODE_API_SUPPORTED_VERSION_MAX; +exports.NODE_API_SUPPORTED_VERSION_MIN = NODE_API_SUPPORTED_VERSION_MIN; +exports.NodeEnv = NodeEnv; +exports.NotSupportBufferError = NotSupportBufferError; +exports.NotSupportWeakRefError = NotSupportWeakRefError; +exports.Persistent = Persistent; +exports.RefTracker = RefTracker; +exports.Reference = Reference; +exports.ReferenceWithData = ReferenceWithData; +exports.ReferenceWithFinalizer = ReferenceWithFinalizer; +exports.ScopeStore = ScopeStore; +exports.Store = Store; +exports.TrackedFinalizer = TrackedFinalizer; +exports.TryCatch = TryCatch; +exports.createContext = createContext; +exports.getDefaultContext = getDefaultContext; +exports.getExternalValue = getExternalValue; +exports.isExternal = isExternal; +exports.isReferenceType = isReferenceType; +exports.version = version; diff --git a/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.d.ts b/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.d.ts new file mode 100644 index 00000000..c2404e36 --- /dev/null +++ b/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.d.ts @@ -0,0 +1,671 @@ +export declare type Ptr = number | bigint + +export declare interface IBuffer extends Uint8Array {} +export declare interface BufferCtor { + readonly prototype: IBuffer + /** @deprecated */ + new (...args: any[]): IBuffer + from: { + (buffer: ArrayBufferLike): IBuffer + (buffer: ArrayBufferLike, byteOffset: number, length: number): IBuffer + } + alloc: (size: number) => IBuffer + isBuffer: (obj: unknown) => obj is IBuffer +} + +export declare const enum GlobalHandle { + UNDEFINED = 1, + NULL, + FALSE, + TRUE, + GLOBAL +} + +export declare const enum Version { + NODE_API_SUPPORTED_VERSION_MIN = 1, + NODE_API_DEFAULT_MODULE_API_VERSION = 8, + NODE_API_SUPPORTED_VERSION_MAX = 10, + NAPI_VERSION_EXPERIMENTAL = 2147483647 // INT_MAX +} +// eslint-disable-next-line @typescript-eslint/no-unused-vars +export declare type Pointer = number +// eslint-disable-next-line @typescript-eslint/no-unused-vars +export declare type PointerPointer = number +export declare type FunctionPointer any> = Pointer +export declare type Const = T + +export declare type void_p = Pointer +export declare type void_pp = Pointer +export declare type bool = number +export declare type char = number +export declare type char_p = Pointer +export declare type unsigned_char = number +export declare type const_char = Const +export declare type const_char_p = Pointer +export declare type char16_t_p = number +export declare type const_char16_t_p = number + +export declare type short = number +export declare type unsigned_short = number +export declare type int = number +export declare type unsigned_int = number +export declare type long = number +export declare type unsigned_long = number +export declare type long_long = bigint +export declare type unsigned_long_long = bigint +export declare type float = number +export declare type double = number +export declare type long_double = number +export declare type size_t = number + +export declare type int8_t = number +export declare type uint8_t = number +export declare type int16_t = number +export declare type uint16_t = number +export declare type int32_t = number +export declare type uint32_t = number +export declare type int64_t = bigint +export declare type uint64_t = bigint +export declare type napi_env = Pointer + +export declare type napi_value = Pointer +export declare type napi_ref = Pointer +export declare type napi_deferred = Pointer +export declare type napi_handle_scope = Pointer +export declare type napi_escapable_handle_scope = Pointer + +export declare type napi_addon_register_func = FunctionPointer<(env: napi_env, exports: napi_value) => napi_value> + +export declare type napi_callback_info = Pointer +export declare type napi_callback = FunctionPointer<(env: napi_env, info: napi_callback_info) => napi_value> + +export declare interface napi_extended_error_info { + error_message: const_char_p + engine_reserved: void_p + engine_error_code: uint32_t + error_code: napi_status +} + +export declare interface napi_property_descriptor { + // One of utf8name or name should be NULL. + utf8name: const_char_p + name: napi_value + + method: napi_callback + getter: napi_callback + setter: napi_callback + value: napi_value + /* napi_property_attributes */ + attributes: number + data: void_p +} + +export declare type napi_finalize = FunctionPointer<( + env: napi_env, + finalize_data: void_p, + finalize_hint: void_p +) => void> + +export declare interface node_module { + nm_version: int32_t + nm_flags: uint32_t + nm_filename: Pointer + nm_register_func: napi_addon_register_func + nm_modname: Pointer + nm_priv: Pointer + reserved: PointerPointer +} + +export declare interface napi_node_version { + major: uint32_t + minor: uint32_t + patch: uint32_t + release: const_char_p +} + +export declare interface emnapi_emscripten_version { + major: uint32_t + minor: uint32_t + patch: uint32_t +} + +export declare const enum napi_status { + napi_ok, + napi_invalid_arg, + napi_object_expected, + napi_string_expected, + napi_name_expected, + napi_function_expected, + napi_number_expected, + napi_boolean_expected, + napi_array_expected, + napi_generic_failure, + napi_pending_exception, + napi_cancelled, + napi_escape_called_twice, + napi_handle_scope_mismatch, + napi_callback_scope_mismatch, + napi_queue_full, + napi_closing, + napi_bigint_expected, + napi_date_expected, + napi_arraybuffer_expected, + napi_detachable_arraybuffer_expected, + napi_would_deadlock, // unused + napi_no_external_buffers_allowed, + napi_cannot_run_js +} + +export declare const enum napi_property_attributes { + napi_default = 0, + napi_writable = 1 << 0, + napi_enumerable = 1 << 1, + napi_configurable = 1 << 2, + + // Used with napi_define_class to distinguish static properties + // from instance properties. Ignored by napi_define_properties. + napi_static = 1 << 10, + + /// #ifdef NAPI_EXPERIMENTAL + // Default for class methods. + napi_default_method = napi_writable | napi_configurable, + + // Default for object properties, like in JS obj[prop]. + napi_default_jsproperty = napi_writable | napi_enumerable | napi_configurable + /// #endif // NAPI_EXPERIMENTAL +} + +export declare const enum napi_valuetype { + napi_undefined, + napi_null, + napi_boolean, + napi_number, + napi_string, + napi_symbol, + napi_object, + napi_function, + napi_external, + napi_bigint +} + +export declare const enum napi_typedarray_type { + napi_int8_array, + napi_uint8_array, + napi_uint8_clamped_array, + napi_int16_array, + napi_uint16_array, + napi_int32_array, + napi_uint32_array, + napi_float32_array, + napi_float64_array, + napi_bigint64_array, + napi_biguint64_array, + napi_float16_array, +} + +export declare const enum napi_key_collection_mode { + napi_key_include_prototypes, + napi_key_own_only +} + +export declare const enum napi_key_filter { + napi_key_all_properties = 0, + napi_key_writable = 1, + napi_key_enumerable = 1 << 1, + napi_key_configurable = 1 << 2, + napi_key_skip_strings = 1 << 3, + napi_key_skip_symbols = 1 << 4 +} + +export declare const enum napi_key_conversion { + napi_key_keep_numbers, + napi_key_numbers_to_strings +} + +export declare const enum emnapi_memory_view_type { + emnapi_int8_array, + emnapi_uint8_array, + emnapi_uint8_clamped_array, + emnapi_int16_array, + emnapi_uint16_array, + emnapi_int32_array, + emnapi_uint32_array, + emnapi_float32_array, + emnapi_float64_array, + emnapi_bigint64_array, + emnapi_biguint64_array, + emnapi_float16_array, + emnapi_data_view = -1, + emnapi_buffer = -2 +} + +export declare const enum napi_threadsafe_function_call_mode { + napi_tsfn_nonblocking, + napi_tsfn_blocking +} + +export declare const enum napi_threadsafe_function_release_mode { + napi_tsfn_release, + napi_tsfn_abort +} +export declare type CleanupHookCallbackFunction = number | ((arg: number) => void); + +export declare class ConstHandle extends Handle { + constructor(id: number, value: S); + dispose(): void; +} + +export declare class Context { + private _isStopping; + private _canCallIntoJs; + private _suppressDestroy; + envStore: Store; + scopeStore: ScopeStore; + refStore: Store; + deferredStore: Store>; + handleStore: HandleStore; + private readonly refCounter?; + private readonly cleanupQueue; + private readonly _externalMemory; + feature: { + supportReflect: boolean; + supportFinalizer: boolean; + supportWeakSymbol: boolean; + supportBigInt: boolean; + supportNewFunction: boolean; + canSetFunctionName: boolean; + setImmediate: (callback: () => void) => void; + Buffer: BufferCtor | undefined; + MessageChannel: { + new (): MessageChannel; + prototype: MessageChannel; + } | undefined; + }; + constructor(options?: ContextOptions); + /** + * Suppress the destroy on `beforeExit` event in Node.js. + * Call this method if you want to keep the context and + * all associated {@link Env | Env} alive, + * this also means that cleanup hooks will not be called. + * After call this method, you should call + * {@link Context.destroy | `Context.prototype.destroy`} method manually. + */ + suppressDestroy(): void; + getRuntimeVersions(): { + version: string; + NODE_API_SUPPORTED_VERSION_MAX: Version; + NAPI_VERSION_EXPERIMENTAL: Version; + NODE_API_DEFAULT_MODULE_API_VERSION: Version; + }; + createNotSupportWeakRefError(api: string, message: string): NotSupportWeakRefError; + createNotSupportBufferError(api: string, message: string): NotSupportBufferError; + createReference(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership): Reference; + createReferenceWithData(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, data: void_p): Reference; + createReferenceWithFinalizer(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, finalize_callback?: napi_finalize, finalize_data?: void_p, finalize_hint?: void_p): Reference; + createDeferred(value: IDeferrdValue): Deferred; + adjustAmountOfExternalAllocatedMemory(changeInBytes: number | bigint): bigint; + createEnv(filename: string, moduleApiVersion: number, makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void, makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void, abort: (msg?: string) => never, nodeBinding?: any): Env; + createTrackedFinalizer(envObject: Env, finalize_callback: napi_finalize, finalize_data: void_p, finalize_hint: void_p): TrackedFinalizer; + getCurrentScope(): HandleScope | null; + addToCurrentScope(value: V): Handle; + openScope(envObject?: Env): HandleScope; + closeScope(envObject?: Env, _scope?: HandleScope): void; + ensureHandle(value: S): Handle; + addCleanupHook(envObject: Env, fn: CleanupHookCallbackFunction, arg: number): void; + removeCleanupHook(envObject: Env, fn: CleanupHookCallbackFunction, arg: number): void; + runCleanup(): void; + increaseWaitingRequestCounter(): void; + decreaseWaitingRequestCounter(): void; + setCanCallIntoJs(value: boolean): void; + setStopping(value: boolean): void; + canCallIntoJs(): boolean; + /** + * Destroy the context and call cleanup hooks. + * Associated {@link Env | Env} will be destroyed. + */ + destroy(): void; +} + +export declare interface ContextOptions { + onExternalMemoryChange?: (current: bigint, old: bigint, delta: bigint) => any; +} + +export declare function createContext(options?: ContextOptions): Context; + +export declare class Deferred implements IStoreValue { + static create(ctx: Context, value: IDeferrdValue): Deferred; + id: number; + ctx: Context; + value: IDeferrdValue; + constructor(ctx: Context, value: IDeferrdValue); + resolve(value: T): void; + reject(reason?: any): void; + dispose(): void; +} + +export declare class EmnapiError extends Error { + constructor(message?: string); +} + +export declare abstract class Env implements IStoreValue { + readonly ctx: Context; + moduleApiVersion: number; + makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void; + makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void; + abort: (msg?: string) => never; + id: number; + openHandleScopes: number; + instanceData: TrackedFinalizer | null; + tryCatch: TryCatch; + refs: number; + reflist: RefTracker; + finalizing_reflist: RefTracker; + pendingFinalizers: RefTracker[]; + lastError: { + errorCode: napi_status; + engineErrorCode: number; + engineReserved: Ptr; + }; + inGcFinalizer: boolean; + constructor(ctx: Context, moduleApiVersion: number, makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void, makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void, abort: (msg?: string) => never); + /** @virtual */ + canCallIntoJs(): boolean; + terminatedOrTerminating(): boolean; + ref(): void; + unref(): void; + ensureHandle(value: S): Handle; + ensureHandleId(value: any): napi_value; + clearLastError(): napi_status; + setLastError(error_code: napi_status, engine_error_code?: uint32_t, engine_reserved?: void_p): napi_status; + getReturnStatus(): napi_status; + callIntoModule(fn: (env: Env) => T, handleException?: (envObject: Env, value: any) => void): T; + /** @virtual */ + abstract callFinalizer(cb: napi_finalize, data: void_p, hint: void_p): void; + invokeFinalizerFromGC(finalizer: RefTracker): void; + checkGCAccess(): void; + /** @virtual */ + enqueueFinalizer(finalizer: RefTracker): void; + /** @virtual */ + dequeueFinalizer(finalizer: RefTracker): void; + /** @virtual */ + deleteMe(): void; + dispose(): void; + private readonly _bindingMap; + initObjectBinding(value: S): IReferenceBinding; + getObjectBinding(value: S): IReferenceBinding; + setInstanceData(data: number, finalize_cb: number, finalize_hint: number): void; + getInstanceData(): number; +} + +/** @public */ +declare interface External_2 extends Record { +} + +/** @public */ +declare const External_2: { + new (value: number | bigint): External_2; + prototype: null; +}; +export { External_2 as External } + +export declare class Finalizer { + envObject: Env; + private _finalizeCallback; + private _finalizeData; + private _finalizeHint; + private _makeDynCall_vppp; + constructor(envObject: Env, _finalizeCallback?: napi_finalize, _finalizeData?: void_p, _finalizeHint?: void_p); + callback(): napi_finalize; + data(): void_p; + hint(): void_p; + resetEnv(): void; + resetFinalizer(): void; + callFinalizer(): void; + dispose(): void; +} + +export declare function getDefaultContext(): Context; + +/** @public */ +export declare function getExternalValue(external: External_2): number | bigint; + +export declare class Handle { + id: number; + value: S; + constructor(id: number, value: S); + data(): void_p; + isNumber(): boolean; + isBigInt(): boolean; + isString(): boolean; + isFunction(): boolean; + isExternal(): boolean; + isObject(): boolean; + isArray(): boolean; + isArrayBuffer(): boolean; + isTypedArray(): boolean; + isBuffer(BufferConstructor?: BufferCtor): boolean; + isDataView(): boolean; + isDate(): boolean; + isPromise(): boolean; + isBoolean(): boolean; + isUndefined(): boolean; + isSymbol(): boolean; + isNull(): boolean; + dispose(): void; +} + +export declare class HandleScope { + handleStore: HandleStore; + id: number; + parent: HandleScope | null; + child: HandleScope | null; + start: number; + end: number; + private _escapeCalled; + callbackInfo: ICallbackInfo; + constructor(handleStore: HandleStore, id: number, parentScope: HandleScope | null, start: number, end?: number); + add(value: V): Handle; + addExternal(data: void_p): Handle; + dispose(): void; + escape(handle: number): Handle | null; + escapeCalled(): boolean; +} + +export declare class HandleStore { + static UNDEFINED: ConstHandle; + static NULL: ConstHandle; + static FALSE: ConstHandle; + static TRUE: ConstHandle; + static GLOBAL: ConstHandle; + static MIN_ID: 6; + private readonly _values; + private _next; + push(value: S): Handle; + erase(start: number, end: number): void; + get(id: Ptr): Handle | undefined; + swap(a: number, b: number): void; + dispose(): void; +} + +export declare interface ICallbackInfo { + thiz: any; + data: void_p; + args: ArrayLike; + fn: Function; +} + +export declare interface IDeferrdValue { + resolve: (value: T) => void; + reject: (reason?: any) => void; +} + +export declare interface IReferenceBinding { + wrapped: number; + tag: Uint32Array | null; +} + +/** @public */ +export declare function isExternal(object: unknown): object is External_2; + +export declare function isReferenceType(v: any): v is object; + +export declare interface IStoreValue { + id: number; + dispose(): void; + [x: string]: any; +} + +export declare const NAPI_VERSION_EXPERIMENTAL = Version.NAPI_VERSION_EXPERIMENTAL; + +export declare const NODE_API_DEFAULT_MODULE_API_VERSION = Version.NODE_API_DEFAULT_MODULE_API_VERSION; + +export declare const NODE_API_SUPPORTED_VERSION_MAX = Version.NODE_API_SUPPORTED_VERSION_MAX; + +export declare const NODE_API_SUPPORTED_VERSION_MIN = Version.NODE_API_SUPPORTED_VERSION_MIN; + +export declare class NodeEnv extends Env { + filename: string; + private readonly nodeBinding?; + destructing: boolean; + finalizationScheduled: boolean; + constructor(ctx: Context, filename: string, moduleApiVersion: number, makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void, makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void, abort: (msg?: string) => never, nodeBinding?: any); + deleteMe(): void; + canCallIntoJs(): boolean; + triggerFatalException(err: any): void; + callbackIntoModule(enforceUncaughtExceptionPolicy: boolean, fn: (env: Env) => T): T; + callFinalizer(cb: napi_finalize, data: void_p, hint: void_p): void; + callFinalizerInternal(forceUncaught: int, cb: napi_finalize, data: void_p, hint: void_p): void; + enqueueFinalizer(finalizer: RefTracker): void; + drainFinalizerQueue(): void; +} + +export declare class NotSupportBufferError extends EmnapiError { + constructor(api: string, message: string); +} + +export declare class NotSupportWeakRefError extends EmnapiError { + constructor(api: string, message: string); +} + +export declare class Persistent { + private _ref; + private _param; + private _callback; + private static readonly _registry; + constructor(value: T); + setWeak

(param: P, callback: (param: P) => void): void; + clearWeak(): void; + reset(): void; + isEmpty(): boolean; + deref(): T | undefined; +} + +export declare class Reference extends RefTracker implements IStoreValue { + private static weakCallback; + id: number; + envObject: Env; + private readonly canBeWeak; + private _refcount; + private readonly _ownership; + persistent: Persistent; + static create(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, _unused1?: void_p, _unused2?: void_p, _unused3?: void_p): Reference; + protected constructor(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership); + ref(): number; + unref(): number; + get(envObject?: Env): napi_value; + /** @virtual */ + resetFinalizer(): void; + /** @virtual */ + data(): void_p; + refcount(): number; + ownership(): ReferenceOwnership; + /** @virtual */ + protected callUserFinalizer(): void; + /** @virtual */ + protected invokeFinalizerFromGC(): void; + private _setWeak; + finalize(): void; + dispose(): void; +} + +export declare enum ReferenceOwnership { + kRuntime = 0, + kUserland = 1 +} + +export declare class ReferenceWithData extends Reference { + private readonly _data; + static create(envObject: Env, value: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, data: void_p): ReferenceWithData; + private constructor(); + data(): void_p; +} + +export declare class ReferenceWithFinalizer extends Reference { + private _finalizer; + static create(envObject: Env, value: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, finalize_callback: napi_finalize, finalize_data: void_p, finalize_hint: void_p): ReferenceWithFinalizer; + private constructor(); + resetFinalizer(): void; + data(): void_p; + protected callUserFinalizer(): void; + protected invokeFinalizerFromGC(): void; + dispose(): void; +} + +export declare class RefTracker { + /** @virtual */ + dispose(): void; + /** @virtual */ + finalize(): void; + private _next; + private _prev; + link(list: RefTracker): void; + unlink(): void; + static finalizeAll(list: RefTracker): void; +} + +export declare class ScopeStore { + private readonly _rootScope; + currentScope: HandleScope; + private readonly _values; + constructor(); + get(id: number): HandleScope | undefined; + openScope(handleStore: HandleStore): HandleScope; + closeScope(): void; + dispose(): void; +} + +export declare class Store { + protected _values: Array; + private _freeList; + private _size; + constructor(); + add(value: V): void; + get(id: Ptr): V | undefined; + has(id: Ptr): boolean; + remove(id: Ptr): void; + dispose(): void; +} + +export declare class TrackedFinalizer extends RefTracker { + private _finalizer; + static create(envObject: Env, finalize_callback: napi_finalize, finalize_data: void_p, finalize_hint: void_p): TrackedFinalizer; + private constructor(); + data(): void_p; + dispose(): void; + finalize(): void; +} + +export declare class TryCatch { + private _exception; + private _caught; + isEmpty(): boolean; + hasCaught(): boolean; + exception(): any; + setError(err: any): void; + reset(): void; + extractException(): any; +} + +export declare const version: string; + +export { } diff --git a/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.js b/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.js new file mode 100644 index 00000000..bcdb5b0e --- /dev/null +++ b/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.js @@ -0,0 +1 @@ +const e=new WeakMap;function t(t){return e.has(t)}const i=(()=>{function t(t){Object.setPrototypeOf(this,null),e.set(this,t)}return t.prototype=null,t})();function s(i){if(!t(i))throw new TypeError("not external");return e.get(i)}const n=function(){let e;try{e=new Function}catch(e){return!1}return"function"==typeof e}(),r=function(){if("undefined"!=typeof globalThis)return globalThis;let e=function(){return this}();if(!e&&n)try{e=new Function("return this")()}catch(e){}if(!e){if("undefined"==typeof __webpack_public_path__&&"undefined"!=typeof global)return global;if("undefined"!=typeof window)return window;if("undefined"!=typeof self)return self}return e}();class o{constructor(){this._exception=void 0,this._caught=!1}isEmpty(){return!this._caught}hasCaught(){return this._caught}exception(){return this._exception}setError(e){this._caught=!0,this._exception=e}reset(){this._caught=!1,this._exception=void 0}extractException(){const e=this._exception;return this.reset(),e}}const a=function(){var e;try{return Boolean(null===(e=Object.getOwnPropertyDescriptor(Function.prototype,"name"))||void 0===e?void 0:e.configurable)}catch(e){return!1}}(),l="object"==typeof Reflect,c="undefined"!=typeof FinalizationRegistry&&"undefined"!=typeof WeakRef,h=function(){try{const e=Symbol();new WeakRef(e),(new WeakMap).set(e,void 0)}catch(e){return!1}return!0}(),u="undefined"!=typeof BigInt;const p=function(){let e;return e="undefined"!=typeof __webpack_public_path__||"undefined"!=typeof __webpack_public_path__?"undefined"!=typeof __non_webpack_require__?__non_webpack_require__:void 0:"undefined"!=typeof require?require:void 0,e}(),f="function"==typeof MessageChannel?MessageChannel:function(){try{return p("worker_threads").MessageChannel}catch(e){}}(),d="function"==typeof setImmediate?setImmediate:function(e){if("function"!=typeof e)throw new TypeError('The "callback" argument must be of type function');if(f){let t=new f;t.port1.onmessage=function(){t.port1.onmessage=null,t=void 0,e()},t.port2.postMessage(null)}else setTimeout(e,0)},_="function"==typeof Buffer?Buffer:function(){try{return p("buffer").Buffer}catch(e){}}(),v="1.10.0",g=2147483647;class y{constructor(e,t){this.id=e,this.value=t}data(){return s(this.value)}isNumber(){return"number"==typeof this.value}isBigInt(){return"bigint"==typeof this.value}isString(){return"string"==typeof this.value}isFunction(){return"function"==typeof this.value}isExternal(){return t(this.value)}isObject(){return"object"==typeof this.value&&null!==this.value}isArray(){return Array.isArray(this.value)}isArrayBuffer(){return this.value instanceof ArrayBuffer}isTypedArray(){return ArrayBuffer.isView(this.value)&&!(this.value instanceof DataView)}isBuffer(e){return!!ArrayBuffer.isView(this.value)||(null!=e||(e=_),"function"==typeof e&&e.isBuffer(this.value))}isDataView(){return this.value instanceof DataView}isDate(){return this.value instanceof Date}isPromise(){return this.value instanceof Promise}isBoolean(){return"boolean"==typeof this.value}isUndefined(){return void 0===this.value}isSymbol(){return"symbol"==typeof this.value}isNull(){return null===this.value}dispose(){this.value=void 0}}class x extends y{constructor(e,t){super(e,t)}dispose(){}}class z{constructor(){this._values=[void 0,z.UNDEFINED,z.NULL,z.FALSE,z.TRUE,z.GLOBAL],this._next=z.MIN_ID}push(e){let t;const i=this._next,s=this._values;return i=this.end)return null;this.handleStore.swap(e,this.start);const t=this.handleStore.get(this.start);return this.start++,this.parent.end++,t}escapeCalled(){return this._escapeCalled}}class b{constructor(){this._rootScope=new k(null,0,null,1,z.MIN_ID),this.currentScope=this._rootScope,this._values=[void 0]}get(e){return this._values[e]}openScope(e){const t=this.currentScope;let i=t.child;if(null!==i)i.start=i.end=t.end;else{const s=t.id+1;i=new k(e,s,t,t.end),this._values[s]=i}return this.currentScope=i,i}closeScope(){const e=this.currentScope;this.currentScope=e.parent,e.dispose()}dispose(){this.currentScope=this._rootScope,this._values.length=1}}class w{constructor(){this._next=null,this._prev=null}dispose(){}finalize(){}link(e){this._prev=e,this._next=e._next,null!==this._next&&(this._next._prev=this),e._next=this}unlink(){null!==this._prev&&(this._prev._next=this._next),null!==this._next&&(this._next._prev=this._prev),this._prev=null,this._next=null}static finalizeAll(e){for(;null!==e._next;)e._next.finalize()}}class m{constructor(e,t=0,i=0,s=0){this.envObject=e,this._finalizeCallback=t,this._finalizeData=i,this._finalizeHint=s,this._makeDynCall_vppp=e.makeDynCall_vppp}callback(){return this._finalizeCallback}data(){return this._finalizeData}hint(){return this._finalizeHint}resetEnv(){this.envObject=void 0}resetFinalizer(){this._finalizeCallback=0,this._finalizeData=0,this._finalizeHint=0}callFinalizer(){const e=this._finalizeCallback,t=this._finalizeData,i=this._finalizeHint;if(this.resetFinalizer(),!e)return;const s=Number(e);this.envObject?this.envObject.callFinalizer(s,t,i):this._makeDynCall_vppp(s)(0,t,i)}dispose(){this.envObject=void 0,this._makeDynCall_vppp=void 0}}class E extends w{static create(e,t,i,s){const n=new E(e,t,i,s);return n.link(e.finalizing_reflist),n}constructor(e,t,i,s){super(),this._finalizer=new m(e,t,i,s)}data(){return this._finalizer.data()}dispose(){this._finalizer&&(this.unlink(),this._finalizer.envObject.dequeueFinalizer(this),this._finalizer.dispose(),this._finalizer=void 0,super.dispose())}finalize(){let e;this.unlink();let t=!1;try{this._finalizer.callFinalizer()}catch(i){t=!0,e=i}if(this.dispose(),t)throw e}}function S(e,t){if(!e.terminatedOrTerminating())throw t}class C{constructor(e,t,i,s,n){this.ctx=e,this.moduleApiVersion=t,this.makeDynCall_vppp=i,this.makeDynCall_vp=s,this.abort=n,this.openHandleScopes=0,this.instanceData=null,this.tryCatch=new o,this.refs=1,this.reflist=new w,this.finalizing_reflist=new w,this.pendingFinalizers=[],this.lastError={errorCode:0,engineErrorCode:0,engineReserved:0},this.inGcFinalizer=!1,this._bindingMap=new WeakMap,this.id=0}canCallIntoJs(){return!0}terminatedOrTerminating(){return!this.canCallIntoJs()}ref(){this.refs++}unref(){this.refs--,0===this.refs&&this.dispose()}ensureHandle(e){return this.ctx.ensureHandle(e)}ensureHandleId(e){return this.ensureHandle(e).id}clearLastError(){const e=this.lastError;return 0!==e.errorCode&&(e.errorCode=0),0!==e.engineErrorCode&&(e.engineErrorCode=0),0!==e.engineReserved&&(e.engineReserved=0),0}setLastError(e,t=0,i=0){const s=this.lastError;return s.errorCode!==e&&(s.errorCode=e),s.engineErrorCode!==t&&(s.engineErrorCode=t),s.engineReserved!==i&&(s.engineReserved=i),e}getReturnStatus(){return this.tryCatch.hasCaught()?this.setLastError(10):0}callIntoModule(e,t=S){const i=this.openHandleScopes;this.clearLastError();const s=e(this);if(i!==this.openHandleScopes&&this.abort("open_handle_scopes != open_handle_scopes_before"),this.tryCatch.hasCaught()){t(this,this.tryCatch.extractException())}return s}invokeFinalizerFromGC(e){if(this.moduleApiVersion!==g)this.enqueueFinalizer(e);else{const t=this.inGcFinalizer;this.inGcFinalizer=!0;try{e.finalize()}finally{this.inGcFinalizer=t}}}checkGCAccess(){this.moduleApiVersion===g&&this.inGcFinalizer&&this.abort("Finalizer is calling a function that may affect GC state.\nThe finalizers are run directly from GC and must not affect GC state.\nUse `node_api_post_finalizer` from inside of the finalizer to work around this issue.\nIt schedules the call as a new task in the event loop.")}enqueueFinalizer(e){-1===this.pendingFinalizers.indexOf(e)&&this.pendingFinalizers.push(e)}dequeueFinalizer(e){const t=this.pendingFinalizers.indexOf(e);-1!==t&&this.pendingFinalizers.splice(t,1)}deleteMe(){w.finalizeAll(this.finalizing_reflist),w.finalizeAll(this.reflist),this.tryCatch.extractException(),this.ctx.envStore.remove(this.id)}dispose(){0!==this.id&&(this.deleteMe(),this.finalizing_reflist.dispose(),this.reflist.dispose(),this.id=0)}initObjectBinding(e){const t={wrapped:0,tag:null};return this._bindingMap.set(e,t),t}getObjectBinding(e){return this._bindingMap.has(e)?this._bindingMap.get(e):this.initObjectBinding(e)}setInstanceData(e,t,i){this.instanceData&&this.instanceData.dispose(),this.instanceData=E.create(this,t,e,i)}getInstanceData(){return this.instanceData?this.instanceData.data():0}}class F extends C{constructor(e,t,i,s,n,r,o){super(e,i,s,n,r),this.filename=t,this.nodeBinding=o,this.destructing=!1,this.finalizationScheduled=!1}deleteMe(){this.destructing=!0,this.drainFinalizerQueue(),super.deleteMe()}canCallIntoJs(){return super.canCallIntoJs()&&this.ctx.canCallIntoJs()}triggerFatalException(e){if(this.nodeBinding)this.nodeBinding.napi.fatalException(e);else{if("object"!=typeof process||null===process||"function"!=typeof process._fatalException)throw e;process._fatalException(e)||(console.error(e),process.exit(1))}}callbackIntoModule(e,t){return this.callIntoModule(t,(t,i)=>{if(t.terminatedOrTerminating())return;const s="object"==typeof process&&null!==process,n=!!s&&Boolean(process.execArgv&&-1!==process.execArgv.indexOf("--force-node-api-uncaught-exceptions-policy"));if(t.moduleApiVersion<10&&!n&&!e){return void(s&&"function"==typeof process.emitWarning?process.emitWarning:function(e,t,i){if(e instanceof Error)console.warn(e.toString());else{const s=i?`[${i}] `:"";console.warn(`${s}${t||"Warning"}: ${e}`)}})("Uncaught Node-API callback exception detected, please run node with option --force-node-api-uncaught-exceptions-policy=true to handle those exceptions properly.","DeprecationWarning","DEP0168")}t.triggerFatalException(i)})}callFinalizer(e,t,i){this.callFinalizerInternal(1,e,t,i)}callFinalizerInternal(e,t,i,s){const n=this.makeDynCall_vppp(t),r=this.id,o=this.ctx.openScope(this);try{this.callbackIntoModule(Boolean(e),()=>{n(r,i,s)})}finally{this.ctx.closeScope(this,o)}}enqueueFinalizer(e){super.enqueueFinalizer(e),this.finalizationScheduled||this.destructing||(this.finalizationScheduled=!0,this.ref(),d(()=>{this.finalizationScheduled=!1,this.unref(),this.drainFinalizerQueue()}))}drainFinalizerQueue(){for(;this.pendingFinalizers.length>0;){this.pendingFinalizers.shift().finalize()}}}function I(e,t,i,s,n,r,o){(i="number"!=typeof i?8:i)<8?i=8:i>10&&i!==g&&function(e,t){throw new Error(`${e} requires Node-API version ${t}, but this version of Node.js only supports version 10 add-ons.`)}(t,i);const a=new F(e,t,i,s,n,r,o);return e.envStore.add(a),e.addCleanupHook(a,()=>{a.unref()},0),a}class O extends Error{constructor(e){super(e);const t=new.target,i=t.prototype;if(!(this instanceof O)){const e=Object.setPrototypeOf;"function"==typeof e?e.call(Object,this,i):this.__proto__=i,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,t)}}}Object.defineProperty(O.prototype,"name",{configurable:!0,writable:!0,value:"EmnapiError"});class D extends O{constructor(e,t){super(`${e}: The current runtime does not support "FinalizationRegistry" and "WeakRef".${t?` ${t}`:""}`)}}Object.defineProperty(D.prototype,"name",{configurable:!0,writable:!0,value:"NotSupportWeakRefError"});class R extends O{constructor(e,t){super(`${e}: The current runtime does not support "Buffer". Consider using buffer polyfill to make sure \`globalThis.Buffer\` is defined.${t?` ${t}`:""}`)}}Object.defineProperty(R.prototype,"name",{configurable:!0,writable:!0,value:"NotSupportBufferError"});class N{constructor(e){this._value=e}deref(){return this._value}dispose(){this._value=void 0}}class A{constructor(e){this._ref=new N(e)}setWeak(e,t){if(!c||void 0===this._ref||this._ref instanceof WeakRef)return;const i=this._ref.deref();try{A._registry.register(i,this,this);const s=new WeakRef(i);this._ref.dispose(),this._ref=s,this._param=e,this._callback=t}catch(e){if("symbol"!=typeof i)throw e}}clearWeak(){if(c&&void 0!==this._ref&&this._ref instanceof WeakRef){try{A._registry.unregister(this)}catch(e){}this._param=void 0,this._callback=void 0;const e=this._ref.deref();this._ref=void 0===e?e:new N(e)}}reset(){if(c)try{A._registry.unregister(this)}catch(e){}this._param=void 0,this._callback=void 0,this._ref instanceof N&&this._ref.dispose(),this._ref=void 0}isEmpty(){return void 0===this._ref}deref(){if(void 0!==this._ref)return this._ref.deref()}}var H;A._registry=c?new FinalizationRegistry(e=>{e._ref=void 0;const t=e._callback,i=e._param;e._callback=void 0,e._param=void 0,"function"==typeof t&&t(i)}):void 0,exports.ReferenceOwnership=void 0,(H=exports.ReferenceOwnership||(exports.ReferenceOwnership={}))[H.kRuntime=0]="kRuntime",H[H.kUserland=1]="kUserland";class j extends w{static weakCallback(e){e.persistent.reset(),e.invokeFinalizerFromGC()}static create(e,t,i,s,n,r,o){const a=new j(e,t,i,s);return e.ctx.refStore.add(a),a.link(e.reflist),a}constructor(e,t,i,s){super(),this.envObject=e,this._refcount=i,this._ownership=s;const n=e.ctx.handleStore.get(t);var r;this.canBeWeak=(r=n).isObject()||r.isFunction()||r.isSymbol(),this.persistent=new A(n.value),this.id=0,0===i&&this._setWeak()}ref(){return this.persistent.isEmpty()?0:(1===++this._refcount&&this.canBeWeak&&this.persistent.clearWeak(),this._refcount)}unref(){return this.persistent.isEmpty()||0===this._refcount?0:(0===--this._refcount&&this._setWeak(),this._refcount)}get(e=this.envObject){if(this.persistent.isEmpty())return 0;const t=this.persistent.deref();return e.ensureHandle(t).id}resetFinalizer(){}data(){return 0}refcount(){return this._refcount}ownership(){return this._ownership}callUserFinalizer(){}invokeFinalizerFromGC(){this.finalize()}_setWeak(){this.canBeWeak?this.persistent.setWeak(this,j.weakCallback):this.persistent.reset()}finalize(){this.persistent.reset();const e=this._ownership===exports.ReferenceOwnership.kRuntime;this.unlink(),this.callUserFinalizer(),e&&this.dispose()}dispose(){0!==this.id&&(this.unlink(),this.persistent.reset(),this.envObject.ctx.refStore.remove(this.id),super.dispose(),this.envObject=void 0,this.id=0)}}class B extends j{static create(e,t,i,s,n){const r=new B(e,t,i,s,n);return e.ctx.refStore.add(r),r.link(e.reflist),r}constructor(e,t,i,s,n){super(e,t,i,s),this._data=n}data(){return this._data}}class M extends j{static create(e,t,i,s,n,r,o){const a=new M(e,t,i,s,n,r,o);return e.ctx.refStore.add(a),a.link(e.finalizing_reflist),a}constructor(e,t,i,s,n,r,o){super(e,t,i,s),this._finalizer=new m(e,n,r,o)}resetFinalizer(){this._finalizer.resetFinalizer()}data(){return this._finalizer.data()}callUserFinalizer(){this._finalizer.callFinalizer()}invokeFinalizerFromGC(){this._finalizer.envObject.invokeFinalizerFromGC(this)}dispose(){this._finalizer&&(this._finalizer.envObject.dequeueFinalizer(this),this._finalizer.dispose(),super.dispose(),this._finalizer=void 0)}}class T{static create(e,t){const i=new T(e,t);return e.deferredStore.add(i),i}constructor(e,t){this.id=0,this.ctx=e,this.value=t}resolve(e){this.value.resolve(e),this.dispose()}reject(e){this.value.reject(e),this.dispose()}dispose(){this.ctx.deferredStore.remove(this.id),this.id=0,this.value=null,this.ctx=null}}class W{constructor(){this._values=[void 0],this._values.length=4,this._size=1,this._freeList=[]}add(e){let t;if(this._freeList.length)t=this._freeList.shift();else{t=this._size,this._size++;const e=this._values.length;t>=e&&(this._values.length=e+(e>>1)+16)}e.id=t,this._values[t]=e}get(e){return this._values[e]}has(e){return void 0!==this._values[e]}remove(e){const t=this._values[e];t&&(t.id=0,this._values[e]=void 0,this._freeList.push(Number(e)))}dispose(){for(let e=1;es.envObject===e&&s.fn===t&&s.arg===i).length>0)throw new Error("Can not add same fn and arg twice");this._cleanupHooks.push(new V(e,t,i,this._cleanupHookCounter++))}remove(e,t,i){for(let s=0;st.order-e.order);for(let t=0;t{this._suppressDestroy||this.destroy()}))}suppressDestroy(){this._suppressDestroy=!0}getRuntimeVersions(){return{version:v,NODE_API_SUPPORTED_VERSION_MAX:10,NAPI_VERSION_EXPERIMENTAL:g,NODE_API_DEFAULT_MODULE_API_VERSION:8}}createNotSupportWeakRefError(e,t){return new D(e,t)}createNotSupportBufferError(e,t){return new R(e,t)}createReference(e,t,i,s){return j.create(e,t,i,s)}createReferenceWithData(e,t,i,s,n){return B.create(e,t,i,s,n)}createReferenceWithFinalizer(e,t,i,s,n=0,r=0,o=0){return M.create(e,t,i,s,n,r,o)}createDeferred(e){return T.create(this,e)}adjustAmountOfExternalAllocatedMemory(e){return this._externalMemory.adjust(e)}createEnv(e,t,i,s,n,r){return I(this,e,t,i,s,n,r)}createTrackedFinalizer(e,t,i,s){return E.create(e,t,i,s)}getCurrentScope(){return this.scopeStore.currentScope}addToCurrentScope(e){return this.scopeStore.currentScope.add(e)}openScope(e){const t=this.scopeStore.openScope(this.handleStore);return e&&e.openHandleScopes++,t}closeScope(e,t){e&&0===e.openHandleScopes||(this.scopeStore.closeScope(),e&&e.openHandleScopes--)}ensureHandle(e){switch(e){case void 0:return z.UNDEFINED;case null:return z.NULL;case!0:return z.TRUE;case!1:return z.FALSE;case r:return z.GLOBAL}return this.addToCurrentScope(e)}addCleanupHook(e,t,i){this.cleanupQueue.add(e,t,i)}removeCleanupHook(e,t,i){this.cleanupQueue.remove(e,t,i)}runCleanup(){for(;!this.cleanupQueue.empty();)this.cleanupQueue.drain()}increaseWaitingRequestCounter(){var e;null===(e=this.refCounter)||void 0===e||e.increase()}decreaseWaitingRequestCounter(){var e;null===(e=this.refCounter)||void 0===e||e.decrease()}setCanCallIntoJs(e){this._canCallIntoJs=e}setStopping(e){this._isStopping=e}canCallIntoJs(){return this._canCallIntoJs&&!this._isStopping}destroy(){this.setStopping(!0),this.setCanCallIntoJs(!1),this.runCleanup()}}let J;function Q(e){return new $(e)}exports.ConstHandle=x,exports.Context=$,exports.Deferred=T,exports.EmnapiError=O,exports.Env=C,exports.External=i,exports.Finalizer=m,exports.Handle=y,exports.HandleScope=k,exports.HandleStore=z,exports.NAPI_VERSION_EXPERIMENTAL=g,exports.NODE_API_DEFAULT_MODULE_API_VERSION=8,exports.NODE_API_SUPPORTED_VERSION_MAX=10,exports.NODE_API_SUPPORTED_VERSION_MIN=1,exports.NodeEnv=F,exports.NotSupportBufferError=R,exports.NotSupportWeakRefError=D,exports.Persistent=A,exports.RefTracker=w,exports.Reference=j,exports.ReferenceWithData=B,exports.ReferenceWithFinalizer=M,exports.ScopeStore=b,exports.Store=W,exports.TrackedFinalizer=E,exports.TryCatch=o,exports.createContext=Q,exports.getDefaultContext=function(){return J||(J=Q()),J},exports.getExternalValue=s,exports.isExternal=t,exports.isReferenceType=function(e){return"object"==typeof e&&null!==e||"function"==typeof e},exports.version=v; diff --git a/node_modules/@emnapi/runtime/dist/emnapi.d.mts b/node_modules/@emnapi/runtime/dist/emnapi.d.mts new file mode 100644 index 00000000..c2404e36 --- /dev/null +++ b/node_modules/@emnapi/runtime/dist/emnapi.d.mts @@ -0,0 +1,671 @@ +export declare type Ptr = number | bigint + +export declare interface IBuffer extends Uint8Array {} +export declare interface BufferCtor { + readonly prototype: IBuffer + /** @deprecated */ + new (...args: any[]): IBuffer + from: { + (buffer: ArrayBufferLike): IBuffer + (buffer: ArrayBufferLike, byteOffset: number, length: number): IBuffer + } + alloc: (size: number) => IBuffer + isBuffer: (obj: unknown) => obj is IBuffer +} + +export declare const enum GlobalHandle { + UNDEFINED = 1, + NULL, + FALSE, + TRUE, + GLOBAL +} + +export declare const enum Version { + NODE_API_SUPPORTED_VERSION_MIN = 1, + NODE_API_DEFAULT_MODULE_API_VERSION = 8, + NODE_API_SUPPORTED_VERSION_MAX = 10, + NAPI_VERSION_EXPERIMENTAL = 2147483647 // INT_MAX +} +// eslint-disable-next-line @typescript-eslint/no-unused-vars +export declare type Pointer = number +// eslint-disable-next-line @typescript-eslint/no-unused-vars +export declare type PointerPointer = number +export declare type FunctionPointer any> = Pointer +export declare type Const = T + +export declare type void_p = Pointer +export declare type void_pp = Pointer +export declare type bool = number +export declare type char = number +export declare type char_p = Pointer +export declare type unsigned_char = number +export declare type const_char = Const +export declare type const_char_p = Pointer +export declare type char16_t_p = number +export declare type const_char16_t_p = number + +export declare type short = number +export declare type unsigned_short = number +export declare type int = number +export declare type unsigned_int = number +export declare type long = number +export declare type unsigned_long = number +export declare type long_long = bigint +export declare type unsigned_long_long = bigint +export declare type float = number +export declare type double = number +export declare type long_double = number +export declare type size_t = number + +export declare type int8_t = number +export declare type uint8_t = number +export declare type int16_t = number +export declare type uint16_t = number +export declare type int32_t = number +export declare type uint32_t = number +export declare type int64_t = bigint +export declare type uint64_t = bigint +export declare type napi_env = Pointer + +export declare type napi_value = Pointer +export declare type napi_ref = Pointer +export declare type napi_deferred = Pointer +export declare type napi_handle_scope = Pointer +export declare type napi_escapable_handle_scope = Pointer + +export declare type napi_addon_register_func = FunctionPointer<(env: napi_env, exports: napi_value) => napi_value> + +export declare type napi_callback_info = Pointer +export declare type napi_callback = FunctionPointer<(env: napi_env, info: napi_callback_info) => napi_value> + +export declare interface napi_extended_error_info { + error_message: const_char_p + engine_reserved: void_p + engine_error_code: uint32_t + error_code: napi_status +} + +export declare interface napi_property_descriptor { + // One of utf8name or name should be NULL. + utf8name: const_char_p + name: napi_value + + method: napi_callback + getter: napi_callback + setter: napi_callback + value: napi_value + /* napi_property_attributes */ + attributes: number + data: void_p +} + +export declare type napi_finalize = FunctionPointer<( + env: napi_env, + finalize_data: void_p, + finalize_hint: void_p +) => void> + +export declare interface node_module { + nm_version: int32_t + nm_flags: uint32_t + nm_filename: Pointer + nm_register_func: napi_addon_register_func + nm_modname: Pointer + nm_priv: Pointer + reserved: PointerPointer +} + +export declare interface napi_node_version { + major: uint32_t + minor: uint32_t + patch: uint32_t + release: const_char_p +} + +export declare interface emnapi_emscripten_version { + major: uint32_t + minor: uint32_t + patch: uint32_t +} + +export declare const enum napi_status { + napi_ok, + napi_invalid_arg, + napi_object_expected, + napi_string_expected, + napi_name_expected, + napi_function_expected, + napi_number_expected, + napi_boolean_expected, + napi_array_expected, + napi_generic_failure, + napi_pending_exception, + napi_cancelled, + napi_escape_called_twice, + napi_handle_scope_mismatch, + napi_callback_scope_mismatch, + napi_queue_full, + napi_closing, + napi_bigint_expected, + napi_date_expected, + napi_arraybuffer_expected, + napi_detachable_arraybuffer_expected, + napi_would_deadlock, // unused + napi_no_external_buffers_allowed, + napi_cannot_run_js +} + +export declare const enum napi_property_attributes { + napi_default = 0, + napi_writable = 1 << 0, + napi_enumerable = 1 << 1, + napi_configurable = 1 << 2, + + // Used with napi_define_class to distinguish static properties + // from instance properties. Ignored by napi_define_properties. + napi_static = 1 << 10, + + /// #ifdef NAPI_EXPERIMENTAL + // Default for class methods. + napi_default_method = napi_writable | napi_configurable, + + // Default for object properties, like in JS obj[prop]. + napi_default_jsproperty = napi_writable | napi_enumerable | napi_configurable + /// #endif // NAPI_EXPERIMENTAL +} + +export declare const enum napi_valuetype { + napi_undefined, + napi_null, + napi_boolean, + napi_number, + napi_string, + napi_symbol, + napi_object, + napi_function, + napi_external, + napi_bigint +} + +export declare const enum napi_typedarray_type { + napi_int8_array, + napi_uint8_array, + napi_uint8_clamped_array, + napi_int16_array, + napi_uint16_array, + napi_int32_array, + napi_uint32_array, + napi_float32_array, + napi_float64_array, + napi_bigint64_array, + napi_biguint64_array, + napi_float16_array, +} + +export declare const enum napi_key_collection_mode { + napi_key_include_prototypes, + napi_key_own_only +} + +export declare const enum napi_key_filter { + napi_key_all_properties = 0, + napi_key_writable = 1, + napi_key_enumerable = 1 << 1, + napi_key_configurable = 1 << 2, + napi_key_skip_strings = 1 << 3, + napi_key_skip_symbols = 1 << 4 +} + +export declare const enum napi_key_conversion { + napi_key_keep_numbers, + napi_key_numbers_to_strings +} + +export declare const enum emnapi_memory_view_type { + emnapi_int8_array, + emnapi_uint8_array, + emnapi_uint8_clamped_array, + emnapi_int16_array, + emnapi_uint16_array, + emnapi_int32_array, + emnapi_uint32_array, + emnapi_float32_array, + emnapi_float64_array, + emnapi_bigint64_array, + emnapi_biguint64_array, + emnapi_float16_array, + emnapi_data_view = -1, + emnapi_buffer = -2 +} + +export declare const enum napi_threadsafe_function_call_mode { + napi_tsfn_nonblocking, + napi_tsfn_blocking +} + +export declare const enum napi_threadsafe_function_release_mode { + napi_tsfn_release, + napi_tsfn_abort +} +export declare type CleanupHookCallbackFunction = number | ((arg: number) => void); + +export declare class ConstHandle extends Handle { + constructor(id: number, value: S); + dispose(): void; +} + +export declare class Context { + private _isStopping; + private _canCallIntoJs; + private _suppressDestroy; + envStore: Store; + scopeStore: ScopeStore; + refStore: Store; + deferredStore: Store>; + handleStore: HandleStore; + private readonly refCounter?; + private readonly cleanupQueue; + private readonly _externalMemory; + feature: { + supportReflect: boolean; + supportFinalizer: boolean; + supportWeakSymbol: boolean; + supportBigInt: boolean; + supportNewFunction: boolean; + canSetFunctionName: boolean; + setImmediate: (callback: () => void) => void; + Buffer: BufferCtor | undefined; + MessageChannel: { + new (): MessageChannel; + prototype: MessageChannel; + } | undefined; + }; + constructor(options?: ContextOptions); + /** + * Suppress the destroy on `beforeExit` event in Node.js. + * Call this method if you want to keep the context and + * all associated {@link Env | Env} alive, + * this also means that cleanup hooks will not be called. + * After call this method, you should call + * {@link Context.destroy | `Context.prototype.destroy`} method manually. + */ + suppressDestroy(): void; + getRuntimeVersions(): { + version: string; + NODE_API_SUPPORTED_VERSION_MAX: Version; + NAPI_VERSION_EXPERIMENTAL: Version; + NODE_API_DEFAULT_MODULE_API_VERSION: Version; + }; + createNotSupportWeakRefError(api: string, message: string): NotSupportWeakRefError; + createNotSupportBufferError(api: string, message: string): NotSupportBufferError; + createReference(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership): Reference; + createReferenceWithData(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, data: void_p): Reference; + createReferenceWithFinalizer(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, finalize_callback?: napi_finalize, finalize_data?: void_p, finalize_hint?: void_p): Reference; + createDeferred(value: IDeferrdValue): Deferred; + adjustAmountOfExternalAllocatedMemory(changeInBytes: number | bigint): bigint; + createEnv(filename: string, moduleApiVersion: number, makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void, makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void, abort: (msg?: string) => never, nodeBinding?: any): Env; + createTrackedFinalizer(envObject: Env, finalize_callback: napi_finalize, finalize_data: void_p, finalize_hint: void_p): TrackedFinalizer; + getCurrentScope(): HandleScope | null; + addToCurrentScope(value: V): Handle; + openScope(envObject?: Env): HandleScope; + closeScope(envObject?: Env, _scope?: HandleScope): void; + ensureHandle(value: S): Handle; + addCleanupHook(envObject: Env, fn: CleanupHookCallbackFunction, arg: number): void; + removeCleanupHook(envObject: Env, fn: CleanupHookCallbackFunction, arg: number): void; + runCleanup(): void; + increaseWaitingRequestCounter(): void; + decreaseWaitingRequestCounter(): void; + setCanCallIntoJs(value: boolean): void; + setStopping(value: boolean): void; + canCallIntoJs(): boolean; + /** + * Destroy the context and call cleanup hooks. + * Associated {@link Env | Env} will be destroyed. + */ + destroy(): void; +} + +export declare interface ContextOptions { + onExternalMemoryChange?: (current: bigint, old: bigint, delta: bigint) => any; +} + +export declare function createContext(options?: ContextOptions): Context; + +export declare class Deferred implements IStoreValue { + static create(ctx: Context, value: IDeferrdValue): Deferred; + id: number; + ctx: Context; + value: IDeferrdValue; + constructor(ctx: Context, value: IDeferrdValue); + resolve(value: T): void; + reject(reason?: any): void; + dispose(): void; +} + +export declare class EmnapiError extends Error { + constructor(message?: string); +} + +export declare abstract class Env implements IStoreValue { + readonly ctx: Context; + moduleApiVersion: number; + makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void; + makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void; + abort: (msg?: string) => never; + id: number; + openHandleScopes: number; + instanceData: TrackedFinalizer | null; + tryCatch: TryCatch; + refs: number; + reflist: RefTracker; + finalizing_reflist: RefTracker; + pendingFinalizers: RefTracker[]; + lastError: { + errorCode: napi_status; + engineErrorCode: number; + engineReserved: Ptr; + }; + inGcFinalizer: boolean; + constructor(ctx: Context, moduleApiVersion: number, makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void, makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void, abort: (msg?: string) => never); + /** @virtual */ + canCallIntoJs(): boolean; + terminatedOrTerminating(): boolean; + ref(): void; + unref(): void; + ensureHandle(value: S): Handle; + ensureHandleId(value: any): napi_value; + clearLastError(): napi_status; + setLastError(error_code: napi_status, engine_error_code?: uint32_t, engine_reserved?: void_p): napi_status; + getReturnStatus(): napi_status; + callIntoModule(fn: (env: Env) => T, handleException?: (envObject: Env, value: any) => void): T; + /** @virtual */ + abstract callFinalizer(cb: napi_finalize, data: void_p, hint: void_p): void; + invokeFinalizerFromGC(finalizer: RefTracker): void; + checkGCAccess(): void; + /** @virtual */ + enqueueFinalizer(finalizer: RefTracker): void; + /** @virtual */ + dequeueFinalizer(finalizer: RefTracker): void; + /** @virtual */ + deleteMe(): void; + dispose(): void; + private readonly _bindingMap; + initObjectBinding(value: S): IReferenceBinding; + getObjectBinding(value: S): IReferenceBinding; + setInstanceData(data: number, finalize_cb: number, finalize_hint: number): void; + getInstanceData(): number; +} + +/** @public */ +declare interface External_2 extends Record { +} + +/** @public */ +declare const External_2: { + new (value: number | bigint): External_2; + prototype: null; +}; +export { External_2 as External } + +export declare class Finalizer { + envObject: Env; + private _finalizeCallback; + private _finalizeData; + private _finalizeHint; + private _makeDynCall_vppp; + constructor(envObject: Env, _finalizeCallback?: napi_finalize, _finalizeData?: void_p, _finalizeHint?: void_p); + callback(): napi_finalize; + data(): void_p; + hint(): void_p; + resetEnv(): void; + resetFinalizer(): void; + callFinalizer(): void; + dispose(): void; +} + +export declare function getDefaultContext(): Context; + +/** @public */ +export declare function getExternalValue(external: External_2): number | bigint; + +export declare class Handle { + id: number; + value: S; + constructor(id: number, value: S); + data(): void_p; + isNumber(): boolean; + isBigInt(): boolean; + isString(): boolean; + isFunction(): boolean; + isExternal(): boolean; + isObject(): boolean; + isArray(): boolean; + isArrayBuffer(): boolean; + isTypedArray(): boolean; + isBuffer(BufferConstructor?: BufferCtor): boolean; + isDataView(): boolean; + isDate(): boolean; + isPromise(): boolean; + isBoolean(): boolean; + isUndefined(): boolean; + isSymbol(): boolean; + isNull(): boolean; + dispose(): void; +} + +export declare class HandleScope { + handleStore: HandleStore; + id: number; + parent: HandleScope | null; + child: HandleScope | null; + start: number; + end: number; + private _escapeCalled; + callbackInfo: ICallbackInfo; + constructor(handleStore: HandleStore, id: number, parentScope: HandleScope | null, start: number, end?: number); + add(value: V): Handle; + addExternal(data: void_p): Handle; + dispose(): void; + escape(handle: number): Handle | null; + escapeCalled(): boolean; +} + +export declare class HandleStore { + static UNDEFINED: ConstHandle; + static NULL: ConstHandle; + static FALSE: ConstHandle; + static TRUE: ConstHandle; + static GLOBAL: ConstHandle; + static MIN_ID: 6; + private readonly _values; + private _next; + push(value: S): Handle; + erase(start: number, end: number): void; + get(id: Ptr): Handle | undefined; + swap(a: number, b: number): void; + dispose(): void; +} + +export declare interface ICallbackInfo { + thiz: any; + data: void_p; + args: ArrayLike; + fn: Function; +} + +export declare interface IDeferrdValue { + resolve: (value: T) => void; + reject: (reason?: any) => void; +} + +export declare interface IReferenceBinding { + wrapped: number; + tag: Uint32Array | null; +} + +/** @public */ +export declare function isExternal(object: unknown): object is External_2; + +export declare function isReferenceType(v: any): v is object; + +export declare interface IStoreValue { + id: number; + dispose(): void; + [x: string]: any; +} + +export declare const NAPI_VERSION_EXPERIMENTAL = Version.NAPI_VERSION_EXPERIMENTAL; + +export declare const NODE_API_DEFAULT_MODULE_API_VERSION = Version.NODE_API_DEFAULT_MODULE_API_VERSION; + +export declare const NODE_API_SUPPORTED_VERSION_MAX = Version.NODE_API_SUPPORTED_VERSION_MAX; + +export declare const NODE_API_SUPPORTED_VERSION_MIN = Version.NODE_API_SUPPORTED_VERSION_MIN; + +export declare class NodeEnv extends Env { + filename: string; + private readonly nodeBinding?; + destructing: boolean; + finalizationScheduled: boolean; + constructor(ctx: Context, filename: string, moduleApiVersion: number, makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void, makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void, abort: (msg?: string) => never, nodeBinding?: any); + deleteMe(): void; + canCallIntoJs(): boolean; + triggerFatalException(err: any): void; + callbackIntoModule(enforceUncaughtExceptionPolicy: boolean, fn: (env: Env) => T): T; + callFinalizer(cb: napi_finalize, data: void_p, hint: void_p): void; + callFinalizerInternal(forceUncaught: int, cb: napi_finalize, data: void_p, hint: void_p): void; + enqueueFinalizer(finalizer: RefTracker): void; + drainFinalizerQueue(): void; +} + +export declare class NotSupportBufferError extends EmnapiError { + constructor(api: string, message: string); +} + +export declare class NotSupportWeakRefError extends EmnapiError { + constructor(api: string, message: string); +} + +export declare class Persistent { + private _ref; + private _param; + private _callback; + private static readonly _registry; + constructor(value: T); + setWeak

(param: P, callback: (param: P) => void): void; + clearWeak(): void; + reset(): void; + isEmpty(): boolean; + deref(): T | undefined; +} + +export declare class Reference extends RefTracker implements IStoreValue { + private static weakCallback; + id: number; + envObject: Env; + private readonly canBeWeak; + private _refcount; + private readonly _ownership; + persistent: Persistent; + static create(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, _unused1?: void_p, _unused2?: void_p, _unused3?: void_p): Reference; + protected constructor(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership); + ref(): number; + unref(): number; + get(envObject?: Env): napi_value; + /** @virtual */ + resetFinalizer(): void; + /** @virtual */ + data(): void_p; + refcount(): number; + ownership(): ReferenceOwnership; + /** @virtual */ + protected callUserFinalizer(): void; + /** @virtual */ + protected invokeFinalizerFromGC(): void; + private _setWeak; + finalize(): void; + dispose(): void; +} + +export declare enum ReferenceOwnership { + kRuntime = 0, + kUserland = 1 +} + +export declare class ReferenceWithData extends Reference { + private readonly _data; + static create(envObject: Env, value: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, data: void_p): ReferenceWithData; + private constructor(); + data(): void_p; +} + +export declare class ReferenceWithFinalizer extends Reference { + private _finalizer; + static create(envObject: Env, value: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, finalize_callback: napi_finalize, finalize_data: void_p, finalize_hint: void_p): ReferenceWithFinalizer; + private constructor(); + resetFinalizer(): void; + data(): void_p; + protected callUserFinalizer(): void; + protected invokeFinalizerFromGC(): void; + dispose(): void; +} + +export declare class RefTracker { + /** @virtual */ + dispose(): void; + /** @virtual */ + finalize(): void; + private _next; + private _prev; + link(list: RefTracker): void; + unlink(): void; + static finalizeAll(list: RefTracker): void; +} + +export declare class ScopeStore { + private readonly _rootScope; + currentScope: HandleScope; + private readonly _values; + constructor(); + get(id: number): HandleScope | undefined; + openScope(handleStore: HandleStore): HandleScope; + closeScope(): void; + dispose(): void; +} + +export declare class Store { + protected _values: Array; + private _freeList; + private _size; + constructor(); + add(value: V): void; + get(id: Ptr): V | undefined; + has(id: Ptr): boolean; + remove(id: Ptr): void; + dispose(): void; +} + +export declare class TrackedFinalizer extends RefTracker { + private _finalizer; + static create(envObject: Env, finalize_callback: napi_finalize, finalize_data: void_p, finalize_hint: void_p): TrackedFinalizer; + private constructor(); + data(): void_p; + dispose(): void; + finalize(): void; +} + +export declare class TryCatch { + private _exception; + private _caught; + isEmpty(): boolean; + hasCaught(): boolean; + exception(): any; + setError(err: any): void; + reset(): void; + extractException(): any; +} + +export declare const version: string; + +export { } diff --git a/node_modules/@emnapi/runtime/dist/emnapi.d.ts b/node_modules/@emnapi/runtime/dist/emnapi.d.ts new file mode 100644 index 00000000..cf4653b2 --- /dev/null +++ b/node_modules/@emnapi/runtime/dist/emnapi.d.ts @@ -0,0 +1,673 @@ +export declare type Ptr = number | bigint + +export declare interface IBuffer extends Uint8Array {} +export declare interface BufferCtor { + readonly prototype: IBuffer + /** @deprecated */ + new (...args: any[]): IBuffer + from: { + (buffer: ArrayBufferLike): IBuffer + (buffer: ArrayBufferLike, byteOffset: number, length: number): IBuffer + } + alloc: (size: number) => IBuffer + isBuffer: (obj: unknown) => obj is IBuffer +} + +export declare const enum GlobalHandle { + UNDEFINED = 1, + NULL, + FALSE, + TRUE, + GLOBAL +} + +export declare const enum Version { + NODE_API_SUPPORTED_VERSION_MIN = 1, + NODE_API_DEFAULT_MODULE_API_VERSION = 8, + NODE_API_SUPPORTED_VERSION_MAX = 10, + NAPI_VERSION_EXPERIMENTAL = 2147483647 // INT_MAX +} +// eslint-disable-next-line @typescript-eslint/no-unused-vars +export declare type Pointer = number +// eslint-disable-next-line @typescript-eslint/no-unused-vars +export declare type PointerPointer = number +export declare type FunctionPointer any> = Pointer +export declare type Const = T + +export declare type void_p = Pointer +export declare type void_pp = Pointer +export declare type bool = number +export declare type char = number +export declare type char_p = Pointer +export declare type unsigned_char = number +export declare type const_char = Const +export declare type const_char_p = Pointer +export declare type char16_t_p = number +export declare type const_char16_t_p = number + +export declare type short = number +export declare type unsigned_short = number +export declare type int = number +export declare type unsigned_int = number +export declare type long = number +export declare type unsigned_long = number +export declare type long_long = bigint +export declare type unsigned_long_long = bigint +export declare type float = number +export declare type double = number +export declare type long_double = number +export declare type size_t = number + +export declare type int8_t = number +export declare type uint8_t = number +export declare type int16_t = number +export declare type uint16_t = number +export declare type int32_t = number +export declare type uint32_t = number +export declare type int64_t = bigint +export declare type uint64_t = bigint +export declare type napi_env = Pointer + +export declare type napi_value = Pointer +export declare type napi_ref = Pointer +export declare type napi_deferred = Pointer +export declare type napi_handle_scope = Pointer +export declare type napi_escapable_handle_scope = Pointer + +export declare type napi_addon_register_func = FunctionPointer<(env: napi_env, exports: napi_value) => napi_value> + +export declare type napi_callback_info = Pointer +export declare type napi_callback = FunctionPointer<(env: napi_env, info: napi_callback_info) => napi_value> + +export declare interface napi_extended_error_info { + error_message: const_char_p + engine_reserved: void_p + engine_error_code: uint32_t + error_code: napi_status +} + +export declare interface napi_property_descriptor { + // One of utf8name or name should be NULL. + utf8name: const_char_p + name: napi_value + + method: napi_callback + getter: napi_callback + setter: napi_callback + value: napi_value + /* napi_property_attributes */ + attributes: number + data: void_p +} + +export declare type napi_finalize = FunctionPointer<( + env: napi_env, + finalize_data: void_p, + finalize_hint: void_p +) => void> + +export declare interface node_module { + nm_version: int32_t + nm_flags: uint32_t + nm_filename: Pointer + nm_register_func: napi_addon_register_func + nm_modname: Pointer + nm_priv: Pointer + reserved: PointerPointer +} + +export declare interface napi_node_version { + major: uint32_t + minor: uint32_t + patch: uint32_t + release: const_char_p +} + +export declare interface emnapi_emscripten_version { + major: uint32_t + minor: uint32_t + patch: uint32_t +} + +export declare const enum napi_status { + napi_ok, + napi_invalid_arg, + napi_object_expected, + napi_string_expected, + napi_name_expected, + napi_function_expected, + napi_number_expected, + napi_boolean_expected, + napi_array_expected, + napi_generic_failure, + napi_pending_exception, + napi_cancelled, + napi_escape_called_twice, + napi_handle_scope_mismatch, + napi_callback_scope_mismatch, + napi_queue_full, + napi_closing, + napi_bigint_expected, + napi_date_expected, + napi_arraybuffer_expected, + napi_detachable_arraybuffer_expected, + napi_would_deadlock, // unused + napi_no_external_buffers_allowed, + napi_cannot_run_js +} + +export declare const enum napi_property_attributes { + napi_default = 0, + napi_writable = 1 << 0, + napi_enumerable = 1 << 1, + napi_configurable = 1 << 2, + + // Used with napi_define_class to distinguish static properties + // from instance properties. Ignored by napi_define_properties. + napi_static = 1 << 10, + + /// #ifdef NAPI_EXPERIMENTAL + // Default for class methods. + napi_default_method = napi_writable | napi_configurable, + + // Default for object properties, like in JS obj[prop]. + napi_default_jsproperty = napi_writable | napi_enumerable | napi_configurable + /// #endif // NAPI_EXPERIMENTAL +} + +export declare const enum napi_valuetype { + napi_undefined, + napi_null, + napi_boolean, + napi_number, + napi_string, + napi_symbol, + napi_object, + napi_function, + napi_external, + napi_bigint +} + +export declare const enum napi_typedarray_type { + napi_int8_array, + napi_uint8_array, + napi_uint8_clamped_array, + napi_int16_array, + napi_uint16_array, + napi_int32_array, + napi_uint32_array, + napi_float32_array, + napi_float64_array, + napi_bigint64_array, + napi_biguint64_array, + napi_float16_array, +} + +export declare const enum napi_key_collection_mode { + napi_key_include_prototypes, + napi_key_own_only +} + +export declare const enum napi_key_filter { + napi_key_all_properties = 0, + napi_key_writable = 1, + napi_key_enumerable = 1 << 1, + napi_key_configurable = 1 << 2, + napi_key_skip_strings = 1 << 3, + napi_key_skip_symbols = 1 << 4 +} + +export declare const enum napi_key_conversion { + napi_key_keep_numbers, + napi_key_numbers_to_strings +} + +export declare const enum emnapi_memory_view_type { + emnapi_int8_array, + emnapi_uint8_array, + emnapi_uint8_clamped_array, + emnapi_int16_array, + emnapi_uint16_array, + emnapi_int32_array, + emnapi_uint32_array, + emnapi_float32_array, + emnapi_float64_array, + emnapi_bigint64_array, + emnapi_biguint64_array, + emnapi_float16_array, + emnapi_data_view = -1, + emnapi_buffer = -2 +} + +export declare const enum napi_threadsafe_function_call_mode { + napi_tsfn_nonblocking, + napi_tsfn_blocking +} + +export declare const enum napi_threadsafe_function_release_mode { + napi_tsfn_release, + napi_tsfn_abort +} +export declare type CleanupHookCallbackFunction = number | ((arg: number) => void); + +export declare class ConstHandle extends Handle { + constructor(id: number, value: S); + dispose(): void; +} + +export declare class Context { + private _isStopping; + private _canCallIntoJs; + private _suppressDestroy; + envStore: Store; + scopeStore: ScopeStore; + refStore: Store; + deferredStore: Store>; + handleStore: HandleStore; + private readonly refCounter?; + private readonly cleanupQueue; + private readonly _externalMemory; + feature: { + supportReflect: boolean; + supportFinalizer: boolean; + supportWeakSymbol: boolean; + supportBigInt: boolean; + supportNewFunction: boolean; + canSetFunctionName: boolean; + setImmediate: (callback: () => void) => void; + Buffer: BufferCtor | undefined; + MessageChannel: { + new (): MessageChannel; + prototype: MessageChannel; + } | undefined; + }; + constructor(options?: ContextOptions); + /** + * Suppress the destroy on `beforeExit` event in Node.js. + * Call this method if you want to keep the context and + * all associated {@link Env | Env} alive, + * this also means that cleanup hooks will not be called. + * After call this method, you should call + * {@link Context.destroy | `Context.prototype.destroy`} method manually. + */ + suppressDestroy(): void; + getRuntimeVersions(): { + version: string; + NODE_API_SUPPORTED_VERSION_MAX: Version; + NAPI_VERSION_EXPERIMENTAL: Version; + NODE_API_DEFAULT_MODULE_API_VERSION: Version; + }; + createNotSupportWeakRefError(api: string, message: string): NotSupportWeakRefError; + createNotSupportBufferError(api: string, message: string): NotSupportBufferError; + createReference(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership): Reference; + createReferenceWithData(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, data: void_p): Reference; + createReferenceWithFinalizer(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, finalize_callback?: napi_finalize, finalize_data?: void_p, finalize_hint?: void_p): Reference; + createDeferred(value: IDeferrdValue): Deferred; + adjustAmountOfExternalAllocatedMemory(changeInBytes: number | bigint): bigint; + createEnv(filename: string, moduleApiVersion: number, makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void, makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void, abort: (msg?: string) => never, nodeBinding?: any): Env; + createTrackedFinalizer(envObject: Env, finalize_callback: napi_finalize, finalize_data: void_p, finalize_hint: void_p): TrackedFinalizer; + getCurrentScope(): HandleScope | null; + addToCurrentScope(value: V): Handle; + openScope(envObject?: Env): HandleScope; + closeScope(envObject?: Env, _scope?: HandleScope): void; + ensureHandle(value: S): Handle; + addCleanupHook(envObject: Env, fn: CleanupHookCallbackFunction, arg: number): void; + removeCleanupHook(envObject: Env, fn: CleanupHookCallbackFunction, arg: number): void; + runCleanup(): void; + increaseWaitingRequestCounter(): void; + decreaseWaitingRequestCounter(): void; + setCanCallIntoJs(value: boolean): void; + setStopping(value: boolean): void; + canCallIntoJs(): boolean; + /** + * Destroy the context and call cleanup hooks. + * Associated {@link Env | Env} will be destroyed. + */ + destroy(): void; +} + +export declare interface ContextOptions { + onExternalMemoryChange?: (current: bigint, old: bigint, delta: bigint) => any; +} + +export declare function createContext(options?: ContextOptions): Context; + +export declare class Deferred implements IStoreValue { + static create(ctx: Context, value: IDeferrdValue): Deferred; + id: number; + ctx: Context; + value: IDeferrdValue; + constructor(ctx: Context, value: IDeferrdValue); + resolve(value: T): void; + reject(reason?: any): void; + dispose(): void; +} + +export declare class EmnapiError extends Error { + constructor(message?: string); +} + +export declare abstract class Env implements IStoreValue { + readonly ctx: Context; + moduleApiVersion: number; + makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void; + makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void; + abort: (msg?: string) => never; + id: number; + openHandleScopes: number; + instanceData: TrackedFinalizer | null; + tryCatch: TryCatch; + refs: number; + reflist: RefTracker; + finalizing_reflist: RefTracker; + pendingFinalizers: RefTracker[]; + lastError: { + errorCode: napi_status; + engineErrorCode: number; + engineReserved: Ptr; + }; + inGcFinalizer: boolean; + constructor(ctx: Context, moduleApiVersion: number, makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void, makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void, abort: (msg?: string) => never); + /** @virtual */ + canCallIntoJs(): boolean; + terminatedOrTerminating(): boolean; + ref(): void; + unref(): void; + ensureHandle(value: S): Handle; + ensureHandleId(value: any): napi_value; + clearLastError(): napi_status; + setLastError(error_code: napi_status, engine_error_code?: uint32_t, engine_reserved?: void_p): napi_status; + getReturnStatus(): napi_status; + callIntoModule(fn: (env: Env) => T, handleException?: (envObject: Env, value: any) => void): T; + /** @virtual */ + abstract callFinalizer(cb: napi_finalize, data: void_p, hint: void_p): void; + invokeFinalizerFromGC(finalizer: RefTracker): void; + checkGCAccess(): void; + /** @virtual */ + enqueueFinalizer(finalizer: RefTracker): void; + /** @virtual */ + dequeueFinalizer(finalizer: RefTracker): void; + /** @virtual */ + deleteMe(): void; + dispose(): void; + private readonly _bindingMap; + initObjectBinding(value: S): IReferenceBinding; + getObjectBinding(value: S): IReferenceBinding; + setInstanceData(data: number, finalize_cb: number, finalize_hint: number): void; + getInstanceData(): number; +} + +/** @public */ +declare interface External_2 extends Record { +} + +/** @public */ +declare const External_2: { + new (value: number | bigint): External_2; + prototype: null; +}; +export { External_2 as External } + +export declare class Finalizer { + envObject: Env; + private _finalizeCallback; + private _finalizeData; + private _finalizeHint; + private _makeDynCall_vppp; + constructor(envObject: Env, _finalizeCallback?: napi_finalize, _finalizeData?: void_p, _finalizeHint?: void_p); + callback(): napi_finalize; + data(): void_p; + hint(): void_p; + resetEnv(): void; + resetFinalizer(): void; + callFinalizer(): void; + dispose(): void; +} + +export declare function getDefaultContext(): Context; + +/** @public */ +export declare function getExternalValue(external: External_2): number | bigint; + +export declare class Handle { + id: number; + value: S; + constructor(id: number, value: S); + data(): void_p; + isNumber(): boolean; + isBigInt(): boolean; + isString(): boolean; + isFunction(): boolean; + isExternal(): boolean; + isObject(): boolean; + isArray(): boolean; + isArrayBuffer(): boolean; + isTypedArray(): boolean; + isBuffer(BufferConstructor?: BufferCtor): boolean; + isDataView(): boolean; + isDate(): boolean; + isPromise(): boolean; + isBoolean(): boolean; + isUndefined(): boolean; + isSymbol(): boolean; + isNull(): boolean; + dispose(): void; +} + +export declare class HandleScope { + handleStore: HandleStore; + id: number; + parent: HandleScope | null; + child: HandleScope | null; + start: number; + end: number; + private _escapeCalled; + callbackInfo: ICallbackInfo; + constructor(handleStore: HandleStore, id: number, parentScope: HandleScope | null, start: number, end?: number); + add(value: V): Handle; + addExternal(data: void_p): Handle; + dispose(): void; + escape(handle: number): Handle | null; + escapeCalled(): boolean; +} + +export declare class HandleStore { + static UNDEFINED: ConstHandle; + static NULL: ConstHandle; + static FALSE: ConstHandle; + static TRUE: ConstHandle; + static GLOBAL: ConstHandle; + static MIN_ID: 6; + private readonly _values; + private _next; + push(value: S): Handle; + erase(start: number, end: number): void; + get(id: Ptr): Handle | undefined; + swap(a: number, b: number): void; + dispose(): void; +} + +export declare interface ICallbackInfo { + thiz: any; + data: void_p; + args: ArrayLike; + fn: Function; +} + +export declare interface IDeferrdValue { + resolve: (value: T) => void; + reject: (reason?: any) => void; +} + +export declare interface IReferenceBinding { + wrapped: number; + tag: Uint32Array | null; +} + +/** @public */ +export declare function isExternal(object: unknown): object is External_2; + +export declare function isReferenceType(v: any): v is object; + +export declare interface IStoreValue { + id: number; + dispose(): void; + [x: string]: any; +} + +export declare const NAPI_VERSION_EXPERIMENTAL = Version.NAPI_VERSION_EXPERIMENTAL; + +export declare const NODE_API_DEFAULT_MODULE_API_VERSION = Version.NODE_API_DEFAULT_MODULE_API_VERSION; + +export declare const NODE_API_SUPPORTED_VERSION_MAX = Version.NODE_API_SUPPORTED_VERSION_MAX; + +export declare const NODE_API_SUPPORTED_VERSION_MIN = Version.NODE_API_SUPPORTED_VERSION_MIN; + +export declare class NodeEnv extends Env { + filename: string; + private readonly nodeBinding?; + destructing: boolean; + finalizationScheduled: boolean; + constructor(ctx: Context, filename: string, moduleApiVersion: number, makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void, makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void, abort: (msg?: string) => never, nodeBinding?: any); + deleteMe(): void; + canCallIntoJs(): boolean; + triggerFatalException(err: any): void; + callbackIntoModule(enforceUncaughtExceptionPolicy: boolean, fn: (env: Env) => T): T; + callFinalizer(cb: napi_finalize, data: void_p, hint: void_p): void; + callFinalizerInternal(forceUncaught: int, cb: napi_finalize, data: void_p, hint: void_p): void; + enqueueFinalizer(finalizer: RefTracker): void; + drainFinalizerQueue(): void; +} + +export declare class NotSupportBufferError extends EmnapiError { + constructor(api: string, message: string); +} + +export declare class NotSupportWeakRefError extends EmnapiError { + constructor(api: string, message: string); +} + +export declare class Persistent { + private _ref; + private _param; + private _callback; + private static readonly _registry; + constructor(value: T); + setWeak

(param: P, callback: (param: P) => void): void; + clearWeak(): void; + reset(): void; + isEmpty(): boolean; + deref(): T | undefined; +} + +export declare class Reference extends RefTracker implements IStoreValue { + private static weakCallback; + id: number; + envObject: Env; + private readonly canBeWeak; + private _refcount; + private readonly _ownership; + persistent: Persistent; + static create(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, _unused1?: void_p, _unused2?: void_p, _unused3?: void_p): Reference; + protected constructor(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership); + ref(): number; + unref(): number; + get(envObject?: Env): napi_value; + /** @virtual */ + resetFinalizer(): void; + /** @virtual */ + data(): void_p; + refcount(): number; + ownership(): ReferenceOwnership; + /** @virtual */ + protected callUserFinalizer(): void; + /** @virtual */ + protected invokeFinalizerFromGC(): void; + private _setWeak; + finalize(): void; + dispose(): void; +} + +export declare enum ReferenceOwnership { + kRuntime = 0, + kUserland = 1 +} + +export declare class ReferenceWithData extends Reference { + private readonly _data; + static create(envObject: Env, value: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, data: void_p): ReferenceWithData; + private constructor(); + data(): void_p; +} + +export declare class ReferenceWithFinalizer extends Reference { + private _finalizer; + static create(envObject: Env, value: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, finalize_callback: napi_finalize, finalize_data: void_p, finalize_hint: void_p): ReferenceWithFinalizer; + private constructor(); + resetFinalizer(): void; + data(): void_p; + protected callUserFinalizer(): void; + protected invokeFinalizerFromGC(): void; + dispose(): void; +} + +export declare class RefTracker { + /** @virtual */ + dispose(): void; + /** @virtual */ + finalize(): void; + private _next; + private _prev; + link(list: RefTracker): void; + unlink(): void; + static finalizeAll(list: RefTracker): void; +} + +export declare class ScopeStore { + private readonly _rootScope; + currentScope: HandleScope; + private readonly _values; + constructor(); + get(id: number): HandleScope | undefined; + openScope(handleStore: HandleStore): HandleScope; + closeScope(): void; + dispose(): void; +} + +export declare class Store { + protected _values: Array; + private _freeList; + private _size; + constructor(); + add(value: V): void; + get(id: Ptr): V | undefined; + has(id: Ptr): boolean; + remove(id: Ptr): void; + dispose(): void; +} + +export declare class TrackedFinalizer extends RefTracker { + private _finalizer; + static create(envObject: Env, finalize_callback: napi_finalize, finalize_data: void_p, finalize_hint: void_p): TrackedFinalizer; + private constructor(); + data(): void_p; + dispose(): void; + finalize(): void; +} + +export declare class TryCatch { + private _exception; + private _caught; + isEmpty(): boolean; + hasCaught(): boolean; + exception(): any; + setError(err: any): void; + reset(): void; + extractException(): any; +} + +export declare const version: string; + +export { } + +export as namespace emnapi; diff --git a/node_modules/@emnapi/runtime/dist/emnapi.esm-bundler.js b/node_modules/@emnapi/runtime/dist/emnapi.esm-bundler.js new file mode 100644 index 00000000..f9c7b4b7 --- /dev/null +++ b/node_modules/@emnapi/runtime/dist/emnapi.esm-bundler.js @@ -0,0 +1,1438 @@ +import { __extends } from 'tslib'; + +var externalValue = new WeakMap(); +/** @public */ +function isExternal(object) { + return externalValue.has(object); +} +/** @public */ // eslint-disable-next-line @typescript-eslint/no-redeclare +var External = (function () { + function External(value) { + Object.setPrototypeOf(this, null); + externalValue.set(this, value); + } + External.prototype = null; + return External; +})(); +/** @public */ +function getExternalValue(external) { + if (!isExternal(external)) { + throw new TypeError('not external'); + } + return externalValue.get(external); +} + +var supportNewFunction = /*#__PURE__*/ (function () { + var f; + try { + f = new Function(); + } + catch (_) { + return false; + } + return typeof f === 'function'; +})(); +var _global = /*#__PURE__*/ (function () { + if (typeof globalThis !== 'undefined') + return globalThis; + var g = (function () { return this; })(); + if (!g && supportNewFunction) { + try { + g = new Function('return this')(); + } + catch (_) { } + } + if (!g) { + if (typeof __webpack_public_path__ === 'undefined') { + if (typeof global !== 'undefined') + return global; + } + if (typeof window !== 'undefined') + return window; + if (typeof self !== 'undefined') + return self; + } + return g; +})(); +var TryCatch = /*#__PURE__*/ (function () { + function TryCatch() { + this._exception = undefined; + this._caught = false; + } + TryCatch.prototype.isEmpty = function () { + return !this._caught; + }; + TryCatch.prototype.hasCaught = function () { + return this._caught; + }; + TryCatch.prototype.exception = function () { + return this._exception; + }; + TryCatch.prototype.setError = function (err) { + this._caught = true; + this._exception = err; + }; + TryCatch.prototype.reset = function () { + this._caught = false; + this._exception = undefined; + }; + TryCatch.prototype.extractException = function () { + var e = this._exception; + this.reset(); + return e; + }; + return TryCatch; +}()); +var canSetFunctionName = /*#__PURE__*/ (function () { + var _a; + try { + return Boolean((_a = Object.getOwnPropertyDescriptor(Function.prototype, 'name')) === null || _a === void 0 ? void 0 : _a.configurable); + } + catch (_) { + return false; + } +})(); +var supportReflect = typeof Reflect === 'object'; +var supportFinalizer = (typeof FinalizationRegistry !== 'undefined') && (typeof WeakRef !== 'undefined'); +var supportWeakSymbol = /*#__PURE__*/ (function () { + try { + // eslint-disable-next-line symbol-description + var sym = Symbol(); + // eslint-disable-next-line no-new + new WeakRef(sym); + new WeakMap().set(sym, undefined); + } + catch (_) { + return false; + } + return true; +})(); +var supportBigInt = typeof BigInt !== 'undefined'; +function isReferenceType(v) { + return (typeof v === 'object' && v !== null) || typeof v === 'function'; +} +var _require = /*#__PURE__*/ (function () { + var nativeRequire; + if (typeof __webpack_public_path__ !== 'undefined') { + nativeRequire = (function () { + return typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : undefined; + })(); + } + else { + nativeRequire = (function () { + return typeof __webpack_public_path__ !== 'undefined' ? (typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : undefined) : (typeof require !== 'undefined' ? require : undefined); + })(); + } + return nativeRequire; +})(); +var _MessageChannel = typeof MessageChannel === 'function' + ? MessageChannel + : /*#__PURE__*/ (function () { + try { + return _require('worker_threads').MessageChannel; + } + catch (_) { } + return undefined; + })(); +var _setImmediate = typeof setImmediate === 'function' + ? setImmediate + : function (callback) { + if (typeof callback !== 'function') { + throw new TypeError('The "callback" argument must be of type function'); + } + if (_MessageChannel) { + var channel_1 = new _MessageChannel(); + channel_1.port1.onmessage = function () { + channel_1.port1.onmessage = null; + channel_1 = undefined; + callback(); + }; + channel_1.port2.postMessage(null); + } + else { + setTimeout(callback, 0); + } + }; +var _Buffer = typeof Buffer === 'function' + ? Buffer + : /*#__PURE__*/ (function () { + try { + return _require('buffer').Buffer; + } + catch (_) { } + return undefined; + })(); +var version = "1.10.0"; +var NODE_API_SUPPORTED_VERSION_MIN = 1 /* Version.NODE_API_SUPPORTED_VERSION_MIN */; +var NODE_API_SUPPORTED_VERSION_MAX = 10 /* Version.NODE_API_SUPPORTED_VERSION_MAX */; +var NAPI_VERSION_EXPERIMENTAL = 2147483647 /* Version.NAPI_VERSION_EXPERIMENTAL */; +var NODE_API_DEFAULT_MODULE_API_VERSION = 8 /* Version.NODE_API_DEFAULT_MODULE_API_VERSION */; + +var Handle = /*#__PURE__*/ (function () { + function Handle(id, value) { + this.id = id; + this.value = value; + } + Handle.prototype.data = function () { + return getExternalValue(this.value); + }; + Handle.prototype.isNumber = function () { + return typeof this.value === 'number'; + }; + Handle.prototype.isBigInt = function () { + return typeof this.value === 'bigint'; + }; + Handle.prototype.isString = function () { + return typeof this.value === 'string'; + }; + Handle.prototype.isFunction = function () { + return typeof this.value === 'function'; + }; + Handle.prototype.isExternal = function () { + return isExternal(this.value); + }; + Handle.prototype.isObject = function () { + return typeof this.value === 'object' && this.value !== null; + }; + Handle.prototype.isArray = function () { + return Array.isArray(this.value); + }; + Handle.prototype.isArrayBuffer = function () { + return (this.value instanceof ArrayBuffer); + }; + Handle.prototype.isTypedArray = function () { + return (ArrayBuffer.isView(this.value)) && !(this.value instanceof DataView); + }; + Handle.prototype.isBuffer = function (BufferConstructor) { + if (ArrayBuffer.isView(this.value)) + return true; + BufferConstructor !== null && BufferConstructor !== void 0 ? BufferConstructor : (BufferConstructor = _Buffer); + return typeof BufferConstructor === 'function' && BufferConstructor.isBuffer(this.value); + }; + Handle.prototype.isDataView = function () { + return (this.value instanceof DataView); + }; + Handle.prototype.isDate = function () { + return (this.value instanceof Date); + }; + Handle.prototype.isPromise = function () { + return (this.value instanceof Promise); + }; + Handle.prototype.isBoolean = function () { + return typeof this.value === 'boolean'; + }; + Handle.prototype.isUndefined = function () { + return this.value === undefined; + }; + Handle.prototype.isSymbol = function () { + return typeof this.value === 'symbol'; + }; + Handle.prototype.isNull = function () { + return this.value === null; + }; + Handle.prototype.dispose = function () { + this.value = undefined; + }; + return Handle; +}()); +var ConstHandle = /*#__PURE__*/ (function (_super) { + __extends(ConstHandle, _super); + function ConstHandle(id, value) { + return _super.call(this, id, value) || this; + } + ConstHandle.prototype.dispose = function () { }; + return ConstHandle; +}(Handle)); +var HandleStore = /*#__PURE__*/ (function () { + function HandleStore() { + this._values = [ + undefined, + HandleStore.UNDEFINED, + HandleStore.NULL, + HandleStore.FALSE, + HandleStore.TRUE, + HandleStore.GLOBAL + ]; + this._next = HandleStore.MIN_ID; + } + HandleStore.prototype.push = function (value) { + var h; + var next = this._next; + var values = this._values; + if (next < values.length) { + h = values[next]; + h.value = value; + } + else { + h = new Handle(next, value); + values[next] = h; + } + this._next++; + return h; + }; + HandleStore.prototype.erase = function (start, end) { + this._next = start; + var values = this._values; + for (var i = start; i < end; ++i) { + values[i].dispose(); + } + }; + HandleStore.prototype.get = function (id) { + return this._values[id]; + }; + HandleStore.prototype.swap = function (a, b) { + var values = this._values; + var h = values[a]; + values[a] = values[b]; + values[a].id = Number(a); + values[b] = h; + h.id = Number(b); + }; + HandleStore.prototype.dispose = function () { + this._values.length = HandleStore.MIN_ID; + this._next = HandleStore.MIN_ID; + }; + HandleStore.UNDEFINED = new ConstHandle(1 /* GlobalHandle.UNDEFINED */, undefined); + HandleStore.NULL = new ConstHandle(2 /* GlobalHandle.NULL */, null); + HandleStore.FALSE = new ConstHandle(3 /* GlobalHandle.FALSE */, false); + HandleStore.TRUE = new ConstHandle(4 /* GlobalHandle.TRUE */, true); + HandleStore.GLOBAL = new ConstHandle(5 /* GlobalHandle.GLOBAL */, _global); + HandleStore.MIN_ID = 6; + return HandleStore; +}()); + +var HandleScope = /*#__PURE__*/ (function () { + function HandleScope(handleStore, id, parentScope, start, end) { + if (end === void 0) { end = start; } + this.handleStore = handleStore; + this.id = id; + this.parent = parentScope; + this.child = null; + if (parentScope !== null) + parentScope.child = this; + this.start = start; + this.end = end; + this._escapeCalled = false; + this.callbackInfo = { + thiz: undefined, + data: 0, + args: undefined, + fn: undefined + }; + } + HandleScope.prototype.add = function (value) { + var h = this.handleStore.push(value); + this.end++; + return h; + }; + HandleScope.prototype.addExternal = function (data) { + return this.add(new External(data)); + }; + HandleScope.prototype.dispose = function () { + if (this._escapeCalled) + this._escapeCalled = false; + if (this.start === this.end) + return; + this.handleStore.erase(this.start, this.end); + }; + HandleScope.prototype.escape = function (handle) { + if (this._escapeCalled) + return null; + this._escapeCalled = true; + if (handle < this.start || handle >= this.end) { + return null; + } + this.handleStore.swap(handle, this.start); + var h = this.handleStore.get(this.start); + this.start++; + this.parent.end++; + return h; + }; + HandleScope.prototype.escapeCalled = function () { + return this._escapeCalled; + }; + return HandleScope; +}()); + +var ScopeStore = /*#__PURE__*/ (function () { + function ScopeStore() { + this._rootScope = new HandleScope(null, 0, null, 1, HandleStore.MIN_ID); + this.currentScope = this._rootScope; + this._values = [undefined]; + } + ScopeStore.prototype.get = function (id) { + return this._values[id]; + }; + ScopeStore.prototype.openScope = function (handleStore) { + var currentScope = this.currentScope; + var scope = currentScope.child; + if (scope !== null) { + scope.start = scope.end = currentScope.end; + } + else { + var id = currentScope.id + 1; + scope = new HandleScope(handleStore, id, currentScope, currentScope.end); + this._values[id] = scope; + } + this.currentScope = scope; + return scope; + }; + ScopeStore.prototype.closeScope = function () { + var scope = this.currentScope; + this.currentScope = scope.parent; + scope.dispose(); + }; + ScopeStore.prototype.dispose = function () { + this.currentScope = this._rootScope; + this._values.length = 1; + }; + return ScopeStore; +}()); + +var RefTracker = /*#__PURE__*/ (function () { + function RefTracker() { + this._next = null; + this._prev = null; + } + /** @virtual */ + RefTracker.prototype.dispose = function () { }; + /** @virtual */ + RefTracker.prototype.finalize = function () { }; + RefTracker.prototype.link = function (list) { + this._prev = list; + this._next = list._next; + if (this._next !== null) { + this._next._prev = this; + } + list._next = this; + }; + RefTracker.prototype.unlink = function () { + if (this._prev !== null) { + this._prev._next = this._next; + } + if (this._next !== null) { + this._next._prev = this._prev; + } + this._prev = null; + this._next = null; + }; + RefTracker.finalizeAll = function (list) { + while (list._next !== null) { + list._next.finalize(); + } + }; + return RefTracker; +}()); + +var Finalizer = /*#__PURE__*/ (function () { + function Finalizer(envObject, _finalizeCallback, _finalizeData, _finalizeHint) { + if (_finalizeCallback === void 0) { _finalizeCallback = 0; } + if (_finalizeData === void 0) { _finalizeData = 0; } + if (_finalizeHint === void 0) { _finalizeHint = 0; } + this.envObject = envObject; + this._finalizeCallback = _finalizeCallback; + this._finalizeData = _finalizeData; + this._finalizeHint = _finalizeHint; + this._makeDynCall_vppp = envObject.makeDynCall_vppp; + } + Finalizer.prototype.callback = function () { return this._finalizeCallback; }; + Finalizer.prototype.data = function () { return this._finalizeData; }; + Finalizer.prototype.hint = function () { return this._finalizeHint; }; + Finalizer.prototype.resetEnv = function () { + this.envObject = undefined; + }; + Finalizer.prototype.resetFinalizer = function () { + this._finalizeCallback = 0; + this._finalizeData = 0; + this._finalizeHint = 0; + }; + Finalizer.prototype.callFinalizer = function () { + var finalize_callback = this._finalizeCallback; + var finalize_data = this._finalizeData; + var finalize_hint = this._finalizeHint; + this.resetFinalizer(); + if (!finalize_callback) + return; + var fini = Number(finalize_callback); + if (!this.envObject) { + this._makeDynCall_vppp(fini)(0, finalize_data, finalize_hint); + } + else { + this.envObject.callFinalizer(fini, finalize_data, finalize_hint); + } + }; + Finalizer.prototype.dispose = function () { + this.envObject = undefined; + this._makeDynCall_vppp = undefined; + }; + return Finalizer; +}()); + +var TrackedFinalizer = /*#__PURE__*/ (function (_super) { + __extends(TrackedFinalizer, _super); + function TrackedFinalizer(envObject, finalize_callback, finalize_data, finalize_hint) { + var _this = _super.call(this) || this; + _this._finalizer = new Finalizer(envObject, finalize_callback, finalize_data, finalize_hint); + return _this; + } + TrackedFinalizer.create = function (envObject, finalize_callback, finalize_data, finalize_hint) { + var finalizer = new TrackedFinalizer(envObject, finalize_callback, finalize_data, finalize_hint); + finalizer.link(envObject.finalizing_reflist); + return finalizer; + }; + TrackedFinalizer.prototype.data = function () { + return this._finalizer.data(); + }; + TrackedFinalizer.prototype.dispose = function () { + if (!this._finalizer) + return; + this.unlink(); + this._finalizer.envObject.dequeueFinalizer(this); + this._finalizer.dispose(); + this._finalizer = undefined; + _super.prototype.dispose.call(this); + }; + TrackedFinalizer.prototype.finalize = function () { + this.unlink(); + var error; + var caught = false; + try { + this._finalizer.callFinalizer(); + } + catch (err) { + caught = true; + error = err; + } + this.dispose(); + if (caught) { + throw error; + } + }; + return TrackedFinalizer; +}(RefTracker)); + +function throwNodeApiVersionError(moduleName, moduleApiVersion) { + var errorMessage = "".concat(moduleName, " requires Node-API version ").concat(moduleApiVersion, ", but this version of Node.js only supports version ").concat(NODE_API_SUPPORTED_VERSION_MAX, " add-ons."); + throw new Error(errorMessage); +} +function handleThrow(envObject, value) { + if (envObject.terminatedOrTerminating()) { + return; + } + throw value; +} +var Env = /*#__PURE__*/ (function () { + function Env(ctx, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort) { + this.ctx = ctx; + this.moduleApiVersion = moduleApiVersion; + this.makeDynCall_vppp = makeDynCall_vppp; + this.makeDynCall_vp = makeDynCall_vp; + this.abort = abort; + this.openHandleScopes = 0; + this.instanceData = null; + this.tryCatch = new TryCatch(); + this.refs = 1; + this.reflist = new RefTracker(); + this.finalizing_reflist = new RefTracker(); + this.pendingFinalizers = []; + this.lastError = { + errorCode: 0 /* napi_status.napi_ok */, + engineErrorCode: 0, + engineReserved: 0 + }; + this.inGcFinalizer = false; + this._bindingMap = new WeakMap(); + this.id = 0; + } + /** @virtual */ + Env.prototype.canCallIntoJs = function () { + return true; + }; + Env.prototype.terminatedOrTerminating = function () { + return !this.canCallIntoJs(); + }; + Env.prototype.ref = function () { + this.refs++; + }; + Env.prototype.unref = function () { + this.refs--; + if (this.refs === 0) { + this.dispose(); + } + }; + Env.prototype.ensureHandle = function (value) { + return this.ctx.ensureHandle(value); + }; + Env.prototype.ensureHandleId = function (value) { + return this.ensureHandle(value).id; + }; + Env.prototype.clearLastError = function () { + var lastError = this.lastError; + if (lastError.errorCode !== 0 /* napi_status.napi_ok */) + lastError.errorCode = 0 /* napi_status.napi_ok */; + if (lastError.engineErrorCode !== 0) + lastError.engineErrorCode = 0; + if (lastError.engineReserved !== 0) + lastError.engineReserved = 0; + return 0 /* napi_status.napi_ok */; + }; + Env.prototype.setLastError = function (error_code, engine_error_code, engine_reserved) { + if (engine_error_code === void 0) { engine_error_code = 0; } + if (engine_reserved === void 0) { engine_reserved = 0; } + var lastError = this.lastError; + if (lastError.errorCode !== error_code) + lastError.errorCode = error_code; + if (lastError.engineErrorCode !== engine_error_code) + lastError.engineErrorCode = engine_error_code; + if (lastError.engineReserved !== engine_reserved) + lastError.engineReserved = engine_reserved; + return error_code; + }; + Env.prototype.getReturnStatus = function () { + return !this.tryCatch.hasCaught() ? 0 /* napi_status.napi_ok */ : this.setLastError(10 /* napi_status.napi_pending_exception */); + }; + Env.prototype.callIntoModule = function (fn, handleException) { + if (handleException === void 0) { handleException = handleThrow; } + var openHandleScopesBefore = this.openHandleScopes; + this.clearLastError(); + var r = fn(this); + if (openHandleScopesBefore !== this.openHandleScopes) { + this.abort('open_handle_scopes != open_handle_scopes_before'); + } + if (this.tryCatch.hasCaught()) { + var err = this.tryCatch.extractException(); + handleException(this, err); + } + return r; + }; + Env.prototype.invokeFinalizerFromGC = function (finalizer) { + if (this.moduleApiVersion !== NAPI_VERSION_EXPERIMENTAL) { + this.enqueueFinalizer(finalizer); + } + else { + var saved = this.inGcFinalizer; + this.inGcFinalizer = true; + try { + finalizer.finalize(); + } + finally { + this.inGcFinalizer = saved; + } + } + }; + Env.prototype.checkGCAccess = function () { + if (this.moduleApiVersion === NAPI_VERSION_EXPERIMENTAL && this.inGcFinalizer) { + this.abort('Finalizer is calling a function that may affect GC state.\n' + + 'The finalizers are run directly from GC and must not affect GC ' + + 'state.\n' + + 'Use `node_api_post_finalizer` from inside of the finalizer to work ' + + 'around this issue.\n' + + 'It schedules the call as a new task in the event loop.'); + } + }; + /** @virtual */ + Env.prototype.enqueueFinalizer = function (finalizer) { + if (this.pendingFinalizers.indexOf(finalizer) === -1) { + this.pendingFinalizers.push(finalizer); + } + }; + /** @virtual */ + Env.prototype.dequeueFinalizer = function (finalizer) { + var index = this.pendingFinalizers.indexOf(finalizer); + if (index !== -1) { + this.pendingFinalizers.splice(index, 1); + } + }; + /** @virtual */ + Env.prototype.deleteMe = function () { + RefTracker.finalizeAll(this.finalizing_reflist); + RefTracker.finalizeAll(this.reflist); + this.tryCatch.extractException(); + this.ctx.envStore.remove(this.id); + }; + Env.prototype.dispose = function () { + if (this.id === 0) + return; + this.deleteMe(); + this.finalizing_reflist.dispose(); + this.reflist.dispose(); + this.id = 0; + }; + Env.prototype.initObjectBinding = function (value) { + var binding = { + wrapped: 0, + tag: null + }; + this._bindingMap.set(value, binding); + return binding; + }; + Env.prototype.getObjectBinding = function (value) { + if (this._bindingMap.has(value)) { + return this._bindingMap.get(value); + } + return this.initObjectBinding(value); + }; + Env.prototype.setInstanceData = function (data, finalize_cb, finalize_hint) { + if (this.instanceData) { + this.instanceData.dispose(); + } + this.instanceData = TrackedFinalizer.create(this, finalize_cb, data, finalize_hint); + }; + Env.prototype.getInstanceData = function () { + return this.instanceData ? this.instanceData.data() : 0; + }; + return Env; +}()); +var NodeEnv = /*#__PURE__*/ (function (_super) { + __extends(NodeEnv, _super); + function NodeEnv(ctx, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding) { + var _this = _super.call(this, ctx, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort) || this; + _this.filename = filename; + _this.nodeBinding = nodeBinding; + _this.destructing = false; + _this.finalizationScheduled = false; + return _this; + } + NodeEnv.prototype.deleteMe = function () { + this.destructing = true; + this.drainFinalizerQueue(); + _super.prototype.deleteMe.call(this); + }; + NodeEnv.prototype.canCallIntoJs = function () { + return _super.prototype.canCallIntoJs.call(this) && this.ctx.canCallIntoJs(); + }; + NodeEnv.prototype.triggerFatalException = function (err) { + if (this.nodeBinding) { + this.nodeBinding.napi.fatalException(err); + } + else { + if (typeof process === 'object' && process !== null && typeof process._fatalException === 'function') { + var handled = process._fatalException(err); + if (!handled) { + console.error(err); + process.exit(1); + } + } + else { + throw err; + } + } + }; + NodeEnv.prototype.callbackIntoModule = function (enforceUncaughtExceptionPolicy, fn) { + return this.callIntoModule(fn, function (envObject, err) { + if (envObject.terminatedOrTerminating()) { + return; + } + var hasProcess = typeof process === 'object' && process !== null; + var hasForceFlag = hasProcess ? Boolean(process.execArgv && (process.execArgv.indexOf('--force-node-api-uncaught-exceptions-policy') !== -1)) : false; + if (envObject.moduleApiVersion < 10 && !hasForceFlag && !enforceUncaughtExceptionPolicy) { + var warn = hasProcess && typeof process.emitWarning === 'function' + ? process.emitWarning + : function (warning, type, code) { + if (warning instanceof Error) { + console.warn(warning.toString()); + } + else { + var prefix = code ? "[".concat(code, "] ") : ''; + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing + console.warn("".concat(prefix).concat(type || 'Warning', ": ").concat(warning)); + } + }; + warn('Uncaught Node-API callback exception detected, please run node with option --force-node-api-uncaught-exceptions-policy=true to handle those exceptions properly.', 'DeprecationWarning', 'DEP0168'); + return; + } + envObject.triggerFatalException(err); + }); + }; + NodeEnv.prototype.callFinalizer = function (cb, data, hint) { + this.callFinalizerInternal(1, cb, data, hint); + }; + NodeEnv.prototype.callFinalizerInternal = function (forceUncaught, cb, data, hint) { + var f = this.makeDynCall_vppp(cb); + var env = this.id; + var scope = this.ctx.openScope(this); + try { + this.callbackIntoModule(Boolean(forceUncaught), function () { f(env, data, hint); }); + } + finally { + this.ctx.closeScope(this, scope); + } + }; + NodeEnv.prototype.enqueueFinalizer = function (finalizer) { + var _this = this; + _super.prototype.enqueueFinalizer.call(this, finalizer); + if (!this.finalizationScheduled && !this.destructing) { + this.finalizationScheduled = true; + this.ref(); + _setImmediate(function () { + _this.finalizationScheduled = false; + _this.unref(); + _this.drainFinalizerQueue(); + }); + } + }; + NodeEnv.prototype.drainFinalizerQueue = function () { + while (this.pendingFinalizers.length > 0) { + var refTracker = this.pendingFinalizers.shift(); + refTracker.finalize(); + } + }; + return NodeEnv; +}(Env)); +function newEnv(ctx, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding) { + moduleApiVersion = typeof moduleApiVersion !== 'number' ? NODE_API_DEFAULT_MODULE_API_VERSION : moduleApiVersion; + // Validate module_api_version. + if (moduleApiVersion < NODE_API_DEFAULT_MODULE_API_VERSION) { + moduleApiVersion = NODE_API_DEFAULT_MODULE_API_VERSION; + } + else if (moduleApiVersion > NODE_API_SUPPORTED_VERSION_MAX && moduleApiVersion !== NAPI_VERSION_EXPERIMENTAL) { + throwNodeApiVersionError(filename, moduleApiVersion); + } + var env = new NodeEnv(ctx, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding); + ctx.envStore.add(env); + ctx.addCleanupHook(env, function () { env.unref(); }, 0); + return env; +} + +var EmnapiError = /*#__PURE__*/ (function (_super) { + __extends(EmnapiError, _super); + function EmnapiError(message) { + var _newTarget = this.constructor; + var _this = _super.call(this, message) || this; + var ErrorConstructor = _newTarget; + var proto = ErrorConstructor.prototype; + if (!(_this instanceof EmnapiError)) { + var setPrototypeOf = Object.setPrototypeOf; + if (typeof setPrototypeOf === 'function') { + setPrototypeOf.call(Object, _this, proto); + } + else { + // eslint-disable-next-line no-proto + _this.__proto__ = proto; + } + if (typeof Error.captureStackTrace === 'function') { + Error.captureStackTrace(_this, ErrorConstructor); + } + } + return _this; + } + return EmnapiError; +}(Error)); +Object.defineProperty(EmnapiError.prototype, 'name', { + configurable: true, + writable: true, + value: 'EmnapiError' +}); +var NotSupportWeakRefError = /*#__PURE__*/ (function (_super) { + __extends(NotSupportWeakRefError, _super); + function NotSupportWeakRefError(api, message) { + return _super.call(this, "".concat(api, ": The current runtime does not support \"FinalizationRegistry\" and \"WeakRef\".").concat(message ? " ".concat(message) : '')) || this; + } + return NotSupportWeakRefError; +}(EmnapiError)); +Object.defineProperty(NotSupportWeakRefError.prototype, 'name', { + configurable: true, + writable: true, + value: 'NotSupportWeakRefError' +}); +var NotSupportBufferError = /*#__PURE__*/ (function (_super) { + __extends(NotSupportBufferError, _super); + function NotSupportBufferError(api, message) { + return _super.call(this, "".concat(api, ": The current runtime does not support \"Buffer\". Consider using buffer polyfill to make sure `globalThis.Buffer` is defined.").concat(message ? " ".concat(message) : '')) || this; + } + return NotSupportBufferError; +}(EmnapiError)); +Object.defineProperty(NotSupportBufferError.prototype, 'name', { + configurable: true, + writable: true, + value: 'NotSupportBufferError' +}); + +var StrongRef = /*#__PURE__*/ (function () { + function StrongRef(value) { + this._value = value; + } + StrongRef.prototype.deref = function () { + return this._value; + }; + StrongRef.prototype.dispose = function () { + this._value = undefined; + }; + return StrongRef; +}()); +var Persistent = /*#__PURE__*/ (function () { + function Persistent(value) { + this._ref = new StrongRef(value); + } + Persistent.prototype.setWeak = function (param, callback) { + if (!supportFinalizer || this._ref === undefined || this._ref instanceof WeakRef) + return; + var value = this._ref.deref(); + try { + Persistent._registry.register(value, this, this); + var weakRef = new WeakRef(value); + this._ref.dispose(); + this._ref = weakRef; + this._param = param; + this._callback = callback; + } + catch (err) { + if (typeof value === 'symbol') ; + else { + throw err; + } + } + }; + Persistent.prototype.clearWeak = function () { + if (!supportFinalizer || this._ref === undefined) + return; + if (this._ref instanceof WeakRef) { + try { + Persistent._registry.unregister(this); + } + catch (_) { } + this._param = undefined; + this._callback = undefined; + var value = this._ref.deref(); + if (value === undefined) { + this._ref = value; + } + else { + this._ref = new StrongRef(value); + } + } + }; + Persistent.prototype.reset = function () { + if (supportFinalizer) { + try { + Persistent._registry.unregister(this); + } + catch (_) { } + } + this._param = undefined; + this._callback = undefined; + if (this._ref instanceof StrongRef) { + this._ref.dispose(); + } + this._ref = undefined; + }; + Persistent.prototype.isEmpty = function () { + return this._ref === undefined; + }; + Persistent.prototype.deref = function () { + if (this._ref === undefined) + return undefined; + return this._ref.deref(); + }; + Persistent._registry = supportFinalizer + ? new FinalizationRegistry(function (value) { + value._ref = undefined; + var callback = value._callback; + var param = value._param; + value._callback = undefined; + value._param = undefined; + if (typeof callback === 'function') { + callback(param); + } + }) + : undefined; + return Persistent; +}()); + +var ReferenceOwnership; +(function (ReferenceOwnership) { + ReferenceOwnership[ReferenceOwnership["kRuntime"] = 0] = "kRuntime"; + ReferenceOwnership[ReferenceOwnership["kUserland"] = 1] = "kUserland"; +})(ReferenceOwnership || (ReferenceOwnership = {})); +function canBeHeldWeakly(value) { + return value.isObject() || value.isFunction() || value.isSymbol(); +} +var Reference = /*#__PURE__*/ (function (_super) { + __extends(Reference, _super); + function Reference(envObject, handle_id, initialRefcount, ownership) { + var _this = _super.call(this) || this; + _this.envObject = envObject; + _this._refcount = initialRefcount; + _this._ownership = ownership; + var handle = envObject.ctx.handleStore.get(handle_id); + _this.canBeWeak = canBeHeldWeakly(handle); + _this.persistent = new Persistent(handle.value); + _this.id = 0; + if (initialRefcount === 0) { + _this._setWeak(); + } + return _this; + } + Reference.weakCallback = function (ref) { + ref.persistent.reset(); + ref.invokeFinalizerFromGC(); + }; + Reference.create = function (envObject, handle_id, initialRefcount, ownership, _unused1, _unused2, _unused3) { + var ref = new Reference(envObject, handle_id, initialRefcount, ownership); + envObject.ctx.refStore.add(ref); + ref.link(envObject.reflist); + return ref; + }; + Reference.prototype.ref = function () { + if (this.persistent.isEmpty()) { + return 0; + } + if (++this._refcount === 1 && this.canBeWeak) { + this.persistent.clearWeak(); + } + return this._refcount; + }; + Reference.prototype.unref = function () { + if (this.persistent.isEmpty() || this._refcount === 0) { + return 0; + } + if (--this._refcount === 0) { + this._setWeak(); + } + return this._refcount; + }; + Reference.prototype.get = function (envObject) { + if (envObject === void 0) { envObject = this.envObject; } + if (this.persistent.isEmpty()) { + return 0; + } + var obj = this.persistent.deref(); + var handle = envObject.ensureHandle(obj); + return handle.id; + }; + /** @virtual */ + Reference.prototype.resetFinalizer = function () { }; + /** @virtual */ + Reference.prototype.data = function () { return 0; }; + Reference.prototype.refcount = function () { return this._refcount; }; + Reference.prototype.ownership = function () { return this._ownership; }; + /** @virtual */ + Reference.prototype.callUserFinalizer = function () { }; + /** @virtual */ + Reference.prototype.invokeFinalizerFromGC = function () { + this.finalize(); + }; + Reference.prototype._setWeak = function () { + if (this.canBeWeak) { + this.persistent.setWeak(this, Reference.weakCallback); + } + else { + this.persistent.reset(); + } + }; + Reference.prototype.finalize = function () { + this.persistent.reset(); + var deleteMe = this._ownership === ReferenceOwnership.kRuntime; + this.unlink(); + this.callUserFinalizer(); + if (deleteMe) { + this.dispose(); + } + }; + Reference.prototype.dispose = function () { + if (this.id === 0) + return; + this.unlink(); + this.persistent.reset(); + this.envObject.ctx.refStore.remove(this.id); + _super.prototype.dispose.call(this); + this.envObject = undefined; + this.id = 0; + }; + return Reference; +}(RefTracker)); +var ReferenceWithData = /*#__PURE__*/ (function (_super) { + __extends(ReferenceWithData, _super); + function ReferenceWithData(envObject, value, initialRefcount, ownership, _data) { + var _this = _super.call(this, envObject, value, initialRefcount, ownership) || this; + _this._data = _data; + return _this; + } + ReferenceWithData.create = function (envObject, value, initialRefcount, ownership, data) { + var reference = new ReferenceWithData(envObject, value, initialRefcount, ownership, data); + envObject.ctx.refStore.add(reference); + reference.link(envObject.reflist); + return reference; + }; + ReferenceWithData.prototype.data = function () { + return this._data; + }; + return ReferenceWithData; +}(Reference)); +var ReferenceWithFinalizer = /*#__PURE__*/ (function (_super) { + __extends(ReferenceWithFinalizer, _super); + function ReferenceWithFinalizer(envObject, value, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint) { + var _this = _super.call(this, envObject, value, initialRefcount, ownership) || this; + _this._finalizer = new Finalizer(envObject, finalize_callback, finalize_data, finalize_hint); + return _this; + } + ReferenceWithFinalizer.create = function (envObject, value, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint) { + var reference = new ReferenceWithFinalizer(envObject, value, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint); + envObject.ctx.refStore.add(reference); + reference.link(envObject.finalizing_reflist); + return reference; + }; + ReferenceWithFinalizer.prototype.resetFinalizer = function () { + this._finalizer.resetFinalizer(); + }; + ReferenceWithFinalizer.prototype.data = function () { + return this._finalizer.data(); + }; + ReferenceWithFinalizer.prototype.callUserFinalizer = function () { + this._finalizer.callFinalizer(); + }; + ReferenceWithFinalizer.prototype.invokeFinalizerFromGC = function () { + this._finalizer.envObject.invokeFinalizerFromGC(this); + }; + ReferenceWithFinalizer.prototype.dispose = function () { + if (!this._finalizer) + return; + this._finalizer.envObject.dequeueFinalizer(this); + this._finalizer.dispose(); + _super.prototype.dispose.call(this); + this._finalizer = undefined; + }; + return ReferenceWithFinalizer; +}(Reference)); + +var Deferred = /*#__PURE__*/ (function () { + function Deferred(ctx, value) { + this.id = 0; + this.ctx = ctx; + this.value = value; + } + Deferred.create = function (ctx, value) { + var deferred = new Deferred(ctx, value); + ctx.deferredStore.add(deferred); + return deferred; + }; + Deferred.prototype.resolve = function (value) { + this.value.resolve(value); + this.dispose(); + }; + Deferred.prototype.reject = function (reason) { + this.value.reject(reason); + this.dispose(); + }; + Deferred.prototype.dispose = function () { + this.ctx.deferredStore.remove(this.id); + this.id = 0; + this.value = null; + this.ctx = null; + }; + return Deferred; +}()); + +var Store = /*#__PURE__*/ (function () { + function Store() { + this._values = [undefined]; + this._values.length = 4; + this._size = 1; + this._freeList = []; + } + Store.prototype.add = function (value) { + var id; + if (this._freeList.length) { + id = this._freeList.shift(); + } + else { + id = this._size; + this._size++; + var capacity = this._values.length; + if (id >= capacity) { + this._values.length = capacity + (capacity >> 1) + 16; + } + } + value.id = id; + this._values[id] = value; + }; + Store.prototype.get = function (id) { + return this._values[id]; + }; + Store.prototype.has = function (id) { + return this._values[id] !== undefined; + }; + Store.prototype.remove = function (id) { + var value = this._values[id]; + if (value) { + value.id = 0; + this._values[id] = undefined; + this._freeList.push(Number(id)); + } + }; + Store.prototype.dispose = function () { + for (var i = 1; i < this._size; ++i) { + var value = this._values[i]; + value === null || value === void 0 ? void 0 : value.dispose(); + } + this._values = [undefined]; + this._size = 1; + this._freeList = []; + }; + return Store; +}()); + +var kMaxReasonableBytes = BigInt(1) << BigInt(60); +var kMinReasonableBytes = -kMaxReasonableBytes; +var ExternalMemory = /*#__PURE__*/ (function () { + function ExternalMemory(onChange) { + this.total = BigInt(0); + this.onChange = onChange !== null && onChange !== void 0 ? onChange : null; + } + ExternalMemory.prototype.adjust = function (changeInBytes) { + changeInBytes = BigInt(changeInBytes); + if (!(kMinReasonableBytes <= changeInBytes && changeInBytes < kMaxReasonableBytes)) { + throw new RangeError("changeInBytes ".concat(changeInBytes, " is out of reasonable range")); + } + var old = this.total; + this.total += changeInBytes; + var amount = this.total; + var onChange = this.onChange; + if (changeInBytes) { + onChange === null || onChange === void 0 ? void 0 : onChange(amount, old, changeInBytes); + } + return amount; + }; + return ExternalMemory; +}()); + +var CleanupHookCallback = /*#__PURE__*/ (function () { + function CleanupHookCallback(envObject, fn, arg, order) { + this.envObject = envObject; + this.fn = fn; + this.arg = arg; + this.order = order; + } + return CleanupHookCallback; +}()); +var CleanupQueue = /*#__PURE__*/ (function () { + function CleanupQueue() { + this._cleanupHooks = []; + this._cleanupHookCounter = 0; + } + CleanupQueue.prototype.empty = function () { + return this._cleanupHooks.length === 0; + }; + CleanupQueue.prototype.add = function (envObject, fn, arg) { + if (this._cleanupHooks.filter(function (hook) { return (hook.envObject === envObject && hook.fn === fn && hook.arg === arg); }).length > 0) { + throw new Error('Can not add same fn and arg twice'); + } + this._cleanupHooks.push(new CleanupHookCallback(envObject, fn, arg, this._cleanupHookCounter++)); + }; + CleanupQueue.prototype.remove = function (envObject, fn, arg) { + for (var i = 0; i < this._cleanupHooks.length; ++i) { + var hook = this._cleanupHooks[i]; + if (hook.envObject === envObject && hook.fn === fn && hook.arg === arg) { + this._cleanupHooks.splice(i, 1); + return; + } + } + }; + CleanupQueue.prototype.drain = function () { + var hooks = this._cleanupHooks.slice(); + hooks.sort(function (a, b) { return (b.order - a.order); }); + for (var i = 0; i < hooks.length; ++i) { + var cb = hooks[i]; + if (typeof cb.fn === 'number') { + cb.envObject.makeDynCall_vp(cb.fn)(cb.arg); + } + else { + cb.fn(cb.arg); + } + this._cleanupHooks.splice(this._cleanupHooks.indexOf(cb), 1); + } + }; + CleanupQueue.prototype.dispose = function () { + this._cleanupHooks.length = 0; + this._cleanupHookCounter = 0; + }; + return CleanupQueue; +}()); +var NodejsWaitingRequestCounter = /*#__PURE__*/ (function () { + function NodejsWaitingRequestCounter() { + this.refHandle = new _MessageChannel().port1; + this.count = 0; + } + NodejsWaitingRequestCounter.prototype.increase = function () { + if (this.count === 0) { + if (this.refHandle.ref) { + this.refHandle.ref(); + } + } + this.count++; + }; + NodejsWaitingRequestCounter.prototype.decrease = function () { + if (this.count === 0) + return; + if (this.count === 1) { + if (this.refHandle.unref) { + this.refHandle.unref(); + } + } + this.count--; + }; + return NodejsWaitingRequestCounter; +}()); +var Context = /*#__PURE__*/ (function () { + function Context(options) { + var _this = this; + this._isStopping = false; + this._canCallIntoJs = true; + this._suppressDestroy = false; + this.envStore = new Store(); + this.scopeStore = new ScopeStore(); + this.refStore = new Store(); + this.deferredStore = new Store(); + this.handleStore = new HandleStore(); + this.feature = { + supportReflect: supportReflect, + supportFinalizer: supportFinalizer, + supportWeakSymbol: supportWeakSymbol, + supportBigInt: supportBigInt, + supportNewFunction: supportNewFunction, + canSetFunctionName: canSetFunctionName, + setImmediate: _setImmediate, + Buffer: _Buffer, + MessageChannel: _MessageChannel + }; + this.cleanupQueue = new CleanupQueue(); + this._externalMemory = new ExternalMemory(options === null || options === void 0 ? void 0 : options.onExternalMemoryChange); + if (typeof process === 'object' && process !== null && typeof process.once === 'function') { + this.refCounter = new NodejsWaitingRequestCounter(); + process.once('beforeExit', function () { + if (!_this._suppressDestroy) { + _this.destroy(); + } + }); + } + } + /** + * Suppress the destroy on `beforeExit` event in Node.js. + * Call this method if you want to keep the context and + * all associated {@link Env | Env} alive, + * this also means that cleanup hooks will not be called. + * After call this method, you should call + * {@link Context.destroy | `Context.prototype.destroy`} method manually. + */ + Context.prototype.suppressDestroy = function () { + this._suppressDestroy = true; + }; + // eslint-disable-next-line @typescript-eslint/explicit-function-return-type + Context.prototype.getRuntimeVersions = function () { + return { + version: version, + NODE_API_SUPPORTED_VERSION_MAX: NODE_API_SUPPORTED_VERSION_MAX, + NAPI_VERSION_EXPERIMENTAL: NAPI_VERSION_EXPERIMENTAL, + NODE_API_DEFAULT_MODULE_API_VERSION: NODE_API_DEFAULT_MODULE_API_VERSION + }; + }; + Context.prototype.createNotSupportWeakRefError = function (api, message) { + return new NotSupportWeakRefError(api, message); + }; + Context.prototype.createNotSupportBufferError = function (api, message) { + return new NotSupportBufferError(api, message); + }; + Context.prototype.createReference = function (envObject, handle_id, initialRefcount, ownership) { + return Reference.create(envObject, handle_id, initialRefcount, ownership); + }; + Context.prototype.createReferenceWithData = function (envObject, handle_id, initialRefcount, ownership, data) { + return ReferenceWithData.create(envObject, handle_id, initialRefcount, ownership, data); + }; + Context.prototype.createReferenceWithFinalizer = function (envObject, handle_id, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint) { + if (finalize_callback === void 0) { finalize_callback = 0; } + if (finalize_data === void 0) { finalize_data = 0; } + if (finalize_hint === void 0) { finalize_hint = 0; } + return ReferenceWithFinalizer.create(envObject, handle_id, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint); + }; + Context.prototype.createDeferred = function (value) { + return Deferred.create(this, value); + }; + Context.prototype.adjustAmountOfExternalAllocatedMemory = function (changeInBytes) { + return this._externalMemory.adjust(changeInBytes); + }; + Context.prototype.createEnv = function (filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding) { + return newEnv(this, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding); + }; + Context.prototype.createTrackedFinalizer = function (envObject, finalize_callback, finalize_data, finalize_hint) { + return TrackedFinalizer.create(envObject, finalize_callback, finalize_data, finalize_hint); + }; + Context.prototype.getCurrentScope = function () { + return this.scopeStore.currentScope; + }; + Context.prototype.addToCurrentScope = function (value) { + return this.scopeStore.currentScope.add(value); + }; + Context.prototype.openScope = function (envObject) { + var scope = this.scopeStore.openScope(this.handleStore); + if (envObject) + envObject.openHandleScopes++; + return scope; + }; + Context.prototype.closeScope = function (envObject, _scope) { + if (envObject && envObject.openHandleScopes === 0) + return; + this.scopeStore.closeScope(); + if (envObject) + envObject.openHandleScopes--; + }; + Context.prototype.ensureHandle = function (value) { + switch (value) { + case undefined: return HandleStore.UNDEFINED; + case null: return HandleStore.NULL; + case true: return HandleStore.TRUE; + case false: return HandleStore.FALSE; + case _global: return HandleStore.GLOBAL; + } + return this.addToCurrentScope(value); + }; + Context.prototype.addCleanupHook = function (envObject, fn, arg) { + this.cleanupQueue.add(envObject, fn, arg); + }; + Context.prototype.removeCleanupHook = function (envObject, fn, arg) { + this.cleanupQueue.remove(envObject, fn, arg); + }; + Context.prototype.runCleanup = function () { + while (!this.cleanupQueue.empty()) { + this.cleanupQueue.drain(); + } + }; + Context.prototype.increaseWaitingRequestCounter = function () { + var _a; + (_a = this.refCounter) === null || _a === void 0 ? void 0 : _a.increase(); + }; + Context.prototype.decreaseWaitingRequestCounter = function () { + var _a; + (_a = this.refCounter) === null || _a === void 0 ? void 0 : _a.decrease(); + }; + Context.prototype.setCanCallIntoJs = function (value) { + this._canCallIntoJs = value; + }; + Context.prototype.setStopping = function (value) { + this._isStopping = value; + }; + Context.prototype.canCallIntoJs = function () { + return this._canCallIntoJs && !this._isStopping; + }; + /** + * Destroy the context and call cleanup hooks. + * Associated {@link Env | Env} will be destroyed. + */ + Context.prototype.destroy = function () { + this.setStopping(true); + this.setCanCallIntoJs(false); + this.runCleanup(); + }; + return Context; +}()); +var defaultContext; +function createContext(options) { + return new Context(options); +} +function getDefaultContext() { + if (!defaultContext) { + defaultContext = createContext(); + } + return defaultContext; +} + +export { ConstHandle, Context, Deferred, EmnapiError, Env, External, Finalizer, Handle, HandleScope, HandleStore, NAPI_VERSION_EXPERIMENTAL, NODE_API_DEFAULT_MODULE_API_VERSION, NODE_API_SUPPORTED_VERSION_MAX, NODE_API_SUPPORTED_VERSION_MIN, NodeEnv, NotSupportBufferError, NotSupportWeakRefError, Persistent, RefTracker, Reference, ReferenceOwnership, ReferenceWithData, ReferenceWithFinalizer, ScopeStore, Store, TrackedFinalizer, TryCatch, createContext, getDefaultContext, getExternalValue, isExternal, isReferenceType, version }; diff --git a/node_modules/@emnapi/runtime/dist/emnapi.iife.d.ts b/node_modules/@emnapi/runtime/dist/emnapi.iife.d.ts new file mode 100644 index 00000000..72d26f2d --- /dev/null +++ b/node_modules/@emnapi/runtime/dist/emnapi.iife.d.ts @@ -0,0 +1,426 @@ +declare namespace emnapi { + +export type CleanupHookCallbackFunction = number | ((arg: number) => void); + +export class ConstHandle extends Handle { + constructor(id: number, value: S); + dispose(): void; +} + +export class Context { + private _isStopping; + private _canCallIntoJs; + private _suppressDestroy; + envStore: Store; + scopeStore: ScopeStore; + refStore: Store; + deferredStore: Store>; + handleStore: HandleStore; + private readonly refCounter?; + private readonly cleanupQueue; + private readonly _externalMemory; + feature: { + supportReflect: boolean; + supportFinalizer: boolean; + supportWeakSymbol: boolean; + supportBigInt: boolean; + supportNewFunction: boolean; + canSetFunctionName: boolean; + setImmediate: (callback: () => void) => void; + Buffer: BufferCtor | undefined; + MessageChannel: { + new (): MessageChannel; + prototype: MessageChannel; + } | undefined; + }; + constructor(options?: ContextOptions); + /** + * Suppress the destroy on `beforeExit` event in Node.js. + * Call this method if you want to keep the context and + * all associated {@link Env | Env} alive, + * this also means that cleanup hooks will not be called. + * After call this method, you should call + * {@link Context.destroy | `Context.prototype.destroy`} method manually. + */ + suppressDestroy(): void; + getRuntimeVersions(): { + version: string; + NODE_API_SUPPORTED_VERSION_MAX: Version; + NAPI_VERSION_EXPERIMENTAL: Version; + NODE_API_DEFAULT_MODULE_API_VERSION: Version; + }; + createNotSupportWeakRefError(api: string, message: string): NotSupportWeakRefError; + createNotSupportBufferError(api: string, message: string): NotSupportBufferError; + createReference(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership): Reference; + createReferenceWithData(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, data: void_p): Reference; + createReferenceWithFinalizer(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, finalize_callback?: napi_finalize, finalize_data?: void_p, finalize_hint?: void_p): Reference; + createDeferred(value: IDeferrdValue): Deferred; + adjustAmountOfExternalAllocatedMemory(changeInBytes: number | bigint): bigint; + createEnv(filename: string, moduleApiVersion: number, makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void, makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void, abort: (msg?: string) => never, nodeBinding?: any): Env; + createTrackedFinalizer(envObject: Env, finalize_callback: napi_finalize, finalize_data: void_p, finalize_hint: void_p): TrackedFinalizer; + getCurrentScope(): HandleScope | null; + addToCurrentScope(value: V): Handle; + openScope(envObject?: Env): HandleScope; + closeScope(envObject?: Env, _scope?: HandleScope): void; + ensureHandle(value: S): Handle; + addCleanupHook(envObject: Env, fn: CleanupHookCallbackFunction, arg: number): void; + removeCleanupHook(envObject: Env, fn: CleanupHookCallbackFunction, arg: number): void; + runCleanup(): void; + increaseWaitingRequestCounter(): void; + decreaseWaitingRequestCounter(): void; + setCanCallIntoJs(value: boolean): void; + setStopping(value: boolean): void; + canCallIntoJs(): boolean; + /** + * Destroy the context and call cleanup hooks. + * Associated {@link Env | Env} will be destroyed. + */ + destroy(): void; +} + +export interface ContextOptions { + onExternalMemoryChange?: (current: bigint, old: bigint, delta: bigint) => any; +} + +export function createContext(options?: ContextOptions): Context; + +export class Deferred implements IStoreValue { + static create(ctx: Context, value: IDeferrdValue): Deferred; + id: number; + ctx: Context; + value: IDeferrdValue; + constructor(ctx: Context, value: IDeferrdValue); + resolve(value: T): void; + reject(reason?: any): void; + dispose(): void; +} + +export class EmnapiError extends Error { + constructor(message?: string); +} + +export abstract class Env implements IStoreValue { + readonly ctx: Context; + moduleApiVersion: number; + makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void; + makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void; + abort: (msg?: string) => never; + id: number; + openHandleScopes: number; + instanceData: TrackedFinalizer | null; + tryCatch: TryCatch; + refs: number; + reflist: RefTracker; + finalizing_reflist: RefTracker; + pendingFinalizers: RefTracker[]; + lastError: { + errorCode: napi_status; + engineErrorCode: number; + engineReserved: Ptr; + }; + inGcFinalizer: boolean; + constructor(ctx: Context, moduleApiVersion: number, makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void, makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void, abort: (msg?: string) => never); + /** @virtual */ + canCallIntoJs(): boolean; + terminatedOrTerminating(): boolean; + ref(): void; + unref(): void; + ensureHandle(value: S): Handle; + ensureHandleId(value: any): napi_value; + clearLastError(): napi_status; + setLastError(error_code: napi_status, engine_error_code?: uint32_t, engine_reserved?: void_p): napi_status; + getReturnStatus(): napi_status; + callIntoModule(fn: (env: Env) => T, handleException?: (envObject: Env, value: any) => void): T; + /** @virtual */ + abstract callFinalizer(cb: napi_finalize, data: void_p, hint: void_p): void; + invokeFinalizerFromGC(finalizer: RefTracker): void; + checkGCAccess(): void; + /** @virtual */ + enqueueFinalizer(finalizer: RefTracker): void; + /** @virtual */ + dequeueFinalizer(finalizer: RefTracker): void; + /** @virtual */ + deleteMe(): void; + dispose(): void; + private readonly _bindingMap; + initObjectBinding(value: S): IReferenceBinding; + getObjectBinding(value: S): IReferenceBinding; + setInstanceData(data: number, finalize_cb: number, finalize_hint: number): void; + getInstanceData(): number; +} + +/** @public */ +interface External_2 extends Record { +} + +/** @public */ +const External_2: { + new (value: number | bigint): External_2; + prototype: null; +}; +export { External_2 as External } + +export class Finalizer { + envObject: Env; + private _finalizeCallback; + private _finalizeData; + private _finalizeHint; + private _makeDynCall_vppp; + constructor(envObject: Env, _finalizeCallback?: napi_finalize, _finalizeData?: void_p, _finalizeHint?: void_p); + callback(): napi_finalize; + data(): void_p; + hint(): void_p; + resetEnv(): void; + resetFinalizer(): void; + callFinalizer(): void; + dispose(): void; +} + +export function getDefaultContext(): Context; + +/** @public */ +export function getExternalValue(external: External_2): number | bigint; + +export class Handle { + id: number; + value: S; + constructor(id: number, value: S); + data(): void_p; + isNumber(): boolean; + isBigInt(): boolean; + isString(): boolean; + isFunction(): boolean; + isExternal(): boolean; + isObject(): boolean; + isArray(): boolean; + isArrayBuffer(): boolean; + isTypedArray(): boolean; + isBuffer(BufferConstructor?: BufferCtor): boolean; + isDataView(): boolean; + isDate(): boolean; + isPromise(): boolean; + isBoolean(): boolean; + isUndefined(): boolean; + isSymbol(): boolean; + isNull(): boolean; + dispose(): void; +} + +export class HandleScope { + handleStore: HandleStore; + id: number; + parent: HandleScope | null; + child: HandleScope | null; + start: number; + end: number; + private _escapeCalled; + callbackInfo: ICallbackInfo; + constructor(handleStore: HandleStore, id: number, parentScope: HandleScope | null, start: number, end?: number); + add(value: V): Handle; + addExternal(data: void_p): Handle; + dispose(): void; + escape(handle: number): Handle | null; + escapeCalled(): boolean; +} + +export class HandleStore { + static UNDEFINED: ConstHandle; + static NULL: ConstHandle; + static FALSE: ConstHandle; + static TRUE: ConstHandle; + static GLOBAL: ConstHandle; + static MIN_ID: 6; + private readonly _values; + private _next; + push(value: S): Handle; + erase(start: number, end: number): void; + get(id: Ptr): Handle | undefined; + swap(a: number, b: number): void; + dispose(): void; +} + +export interface ICallbackInfo { + thiz: any; + data: void_p; + args: ArrayLike; + fn: Function; +} + +export interface IDeferrdValue { + resolve: (value: T) => void; + reject: (reason?: any) => void; +} + +export interface IReferenceBinding { + wrapped: number; + tag: Uint32Array | null; +} + +/** @public */ +export function isExternal(object: unknown): object is External_2; + +export function isReferenceType(v: any): v is object; + +export interface IStoreValue { + id: number; + dispose(): void; + [x: string]: any; +} + +export const NAPI_VERSION_EXPERIMENTAL = Version.NAPI_VERSION_EXPERIMENTAL; + +export const NODE_API_DEFAULT_MODULE_API_VERSION = Version.NODE_API_DEFAULT_MODULE_API_VERSION; + +export const NODE_API_SUPPORTED_VERSION_MAX = Version.NODE_API_SUPPORTED_VERSION_MAX; + +export const NODE_API_SUPPORTED_VERSION_MIN = Version.NODE_API_SUPPORTED_VERSION_MIN; + +export class NodeEnv extends Env { + filename: string; + private readonly nodeBinding?; + destructing: boolean; + finalizationScheduled: boolean; + constructor(ctx: Context, filename: string, moduleApiVersion: number, makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void, makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void, abort: (msg?: string) => never, nodeBinding?: any); + deleteMe(): void; + canCallIntoJs(): boolean; + triggerFatalException(err: any): void; + callbackIntoModule(enforceUncaughtExceptionPolicy: boolean, fn: (env: Env) => T): T; + callFinalizer(cb: napi_finalize, data: void_p, hint: void_p): void; + callFinalizerInternal(forceUncaught: int, cb: napi_finalize, data: void_p, hint: void_p): void; + enqueueFinalizer(finalizer: RefTracker): void; + drainFinalizerQueue(): void; +} + +export class NotSupportBufferError extends EmnapiError { + constructor(api: string, message: string); +} + +export class NotSupportWeakRefError extends EmnapiError { + constructor(api: string, message: string); +} + +export class Persistent { + private _ref; + private _param; + private _callback; + private static readonly _registry; + constructor(value: T); + setWeak

(param: P, callback: (param: P) => void): void; + clearWeak(): void; + reset(): void; + isEmpty(): boolean; + deref(): T | undefined; +} + +export class Reference extends RefTracker implements IStoreValue { + private static weakCallback; + id: number; + envObject: Env; + private readonly canBeWeak; + private _refcount; + private readonly _ownership; + persistent: Persistent; + static create(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, _unused1?: void_p, _unused2?: void_p, _unused3?: void_p): Reference; + protected constructor(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership); + ref(): number; + unref(): number; + get(envObject?: Env): napi_value; + /** @virtual */ + resetFinalizer(): void; + /** @virtual */ + data(): void_p; + refcount(): number; + ownership(): ReferenceOwnership; + /** @virtual */ + protected callUserFinalizer(): void; + /** @virtual */ + protected invokeFinalizerFromGC(): void; + private _setWeak; + finalize(): void; + dispose(): void; +} + +export enum ReferenceOwnership { + kRuntime = 0, + kUserland = 1 +} + +export class ReferenceWithData extends Reference { + private readonly _data; + static create(envObject: Env, value: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, data: void_p): ReferenceWithData; + private constructor(); + data(): void_p; +} + +export class ReferenceWithFinalizer extends Reference { + private _finalizer; + static create(envObject: Env, value: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, finalize_callback: napi_finalize, finalize_data: void_p, finalize_hint: void_p): ReferenceWithFinalizer; + private constructor(); + resetFinalizer(): void; + data(): void_p; + protected callUserFinalizer(): void; + protected invokeFinalizerFromGC(): void; + dispose(): void; +} + +export class RefTracker { + /** @virtual */ + dispose(): void; + /** @virtual */ + finalize(): void; + private _next; + private _prev; + link(list: RefTracker): void; + unlink(): void; + static finalizeAll(list: RefTracker): void; +} + +export class ScopeStore { + private readonly _rootScope; + currentScope: HandleScope; + private readonly _values; + constructor(); + get(id: number): HandleScope | undefined; + openScope(handleStore: HandleStore): HandleScope; + closeScope(): void; + dispose(): void; +} + +export class Store { + protected _values: Array; + private _freeList; + private _size; + constructor(); + add(value: V): void; + get(id: Ptr): V | undefined; + has(id: Ptr): boolean; + remove(id: Ptr): void; + dispose(): void; +} + +export class TrackedFinalizer extends RefTracker { + private _finalizer; + static create(envObject: Env, finalize_callback: napi_finalize, finalize_data: void_p, finalize_hint: void_p): TrackedFinalizer; + private constructor(); + data(): void_p; + dispose(): void; + finalize(): void; +} + +export class TryCatch { + private _exception; + private _caught; + isEmpty(): boolean; + hasCaught(): boolean; + exception(): any; + setError(err: any): void; + reset(): void; + extractException(): any; +} + +export const version: string; + + + + +} \ No newline at end of file diff --git a/node_modules/@emnapi/runtime/dist/emnapi.iife.js b/node_modules/@emnapi/runtime/dist/emnapi.iife.js new file mode 100644 index 00000000..52403032 --- /dev/null +++ b/node_modules/@emnapi/runtime/dist/emnapi.iife.js @@ -0,0 +1,1509 @@ +var emnapi = (function (exports) { + + /****************************************************************************** + Copyright (c) Microsoft Corporation. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + ***************************************************************************** */ + /* global Reflect, Promise, SuppressedError, Symbol, Iterator */ + + var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + + function __extends(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + } + + typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { + var e = new Error(message); + return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; + }; + + var externalValue = new WeakMap(); + /** @public */ + function isExternal(object) { + return externalValue.has(object); + } + /** @public */ // eslint-disable-next-line @typescript-eslint/no-redeclare + var External = (function () { + function External(value) { + Object.setPrototypeOf(this, null); + externalValue.set(this, value); + } + External.prototype = null; + return External; + })(); + /** @public */ + function getExternalValue(external) { + if (!isExternal(external)) { + throw new TypeError('not external'); + } + return externalValue.get(external); + } + + var supportNewFunction = /*#__PURE__*/ (function () { + var f; + try { + f = new Function(); + } + catch (_) { + return false; + } + return typeof f === 'function'; + })(); + var _global = /*#__PURE__*/ (function () { + if (typeof globalThis !== 'undefined') + return globalThis; + var g = (function () { return this; })(); + if (!g && supportNewFunction) { + try { + g = new Function('return this')(); + } + catch (_) { } + } + if (!g) { + if (typeof __webpack_public_path__ === 'undefined') { + if (typeof global !== 'undefined') + return global; + } + if (typeof window !== 'undefined') + return window; + if (typeof self !== 'undefined') + return self; + } + return g; + })(); + var TryCatch = /*#__PURE__*/ (function () { + function TryCatch() { + this._exception = undefined; + this._caught = false; + } + TryCatch.prototype.isEmpty = function () { + return !this._caught; + }; + TryCatch.prototype.hasCaught = function () { + return this._caught; + }; + TryCatch.prototype.exception = function () { + return this._exception; + }; + TryCatch.prototype.setError = function (err) { + this._caught = true; + this._exception = err; + }; + TryCatch.prototype.reset = function () { + this._caught = false; + this._exception = undefined; + }; + TryCatch.prototype.extractException = function () { + var e = this._exception; + this.reset(); + return e; + }; + return TryCatch; + }()); + var canSetFunctionName = /*#__PURE__*/ (function () { + var _a; + try { + return Boolean((_a = Object.getOwnPropertyDescriptor(Function.prototype, 'name')) === null || _a === void 0 ? void 0 : _a.configurable); + } + catch (_) { + return false; + } + })(); + var supportReflect = typeof Reflect === 'object'; + var supportFinalizer = (typeof FinalizationRegistry !== 'undefined') && (typeof WeakRef !== 'undefined'); + var supportWeakSymbol = /*#__PURE__*/ (function () { + try { + // eslint-disable-next-line symbol-description + var sym = Symbol(); + // eslint-disable-next-line no-new + new WeakRef(sym); + new WeakMap().set(sym, undefined); + } + catch (_) { + return false; + } + return true; + })(); + var supportBigInt = typeof BigInt !== 'undefined'; + function isReferenceType(v) { + return (typeof v === 'object' && v !== null) || typeof v === 'function'; + } + var _require = /*#__PURE__*/ (function () { + var nativeRequire; + if (typeof __webpack_public_path__ !== 'undefined') { + nativeRequire = (function () { + return typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : undefined; + })(); + } + else { + nativeRequire = (function () { + return typeof __webpack_public_path__ !== 'undefined' ? (typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : undefined) : (typeof require !== 'undefined' ? require : undefined); + })(); + } + return nativeRequire; + })(); + var _MessageChannel = typeof MessageChannel === 'function' + ? MessageChannel + : /*#__PURE__*/ (function () { + try { + return _require('worker_threads').MessageChannel; + } + catch (_) { } + return undefined; + })(); + var _setImmediate = typeof setImmediate === 'function' + ? setImmediate + : function (callback) { + if (typeof callback !== 'function') { + throw new TypeError('The "callback" argument must be of type function'); + } + if (_MessageChannel) { + var channel_1 = new _MessageChannel(); + channel_1.port1.onmessage = function () { + channel_1.port1.onmessage = null; + channel_1 = undefined; + callback(); + }; + channel_1.port2.postMessage(null); + } + else { + setTimeout(callback, 0); + } + }; + var _Buffer = typeof Buffer === 'function' + ? Buffer + : /*#__PURE__*/ (function () { + try { + return _require('buffer').Buffer; + } + catch (_) { } + return undefined; + })(); + var version = "1.10.0"; + var NODE_API_SUPPORTED_VERSION_MIN = 1 /* Version.NODE_API_SUPPORTED_VERSION_MIN */; + var NODE_API_SUPPORTED_VERSION_MAX = 10 /* Version.NODE_API_SUPPORTED_VERSION_MAX */; + var NAPI_VERSION_EXPERIMENTAL = 2147483647 /* Version.NAPI_VERSION_EXPERIMENTAL */; + var NODE_API_DEFAULT_MODULE_API_VERSION = 8 /* Version.NODE_API_DEFAULT_MODULE_API_VERSION */; + + var Handle = /*#__PURE__*/ (function () { + function Handle(id, value) { + this.id = id; + this.value = value; + } + Handle.prototype.data = function () { + return getExternalValue(this.value); + }; + Handle.prototype.isNumber = function () { + return typeof this.value === 'number'; + }; + Handle.prototype.isBigInt = function () { + return typeof this.value === 'bigint'; + }; + Handle.prototype.isString = function () { + return typeof this.value === 'string'; + }; + Handle.prototype.isFunction = function () { + return typeof this.value === 'function'; + }; + Handle.prototype.isExternal = function () { + return isExternal(this.value); + }; + Handle.prototype.isObject = function () { + return typeof this.value === 'object' && this.value !== null; + }; + Handle.prototype.isArray = function () { + return Array.isArray(this.value); + }; + Handle.prototype.isArrayBuffer = function () { + return (this.value instanceof ArrayBuffer); + }; + Handle.prototype.isTypedArray = function () { + return (ArrayBuffer.isView(this.value)) && !(this.value instanceof DataView); + }; + Handle.prototype.isBuffer = function (BufferConstructor) { + if (ArrayBuffer.isView(this.value)) + return true; + BufferConstructor !== null && BufferConstructor !== void 0 ? BufferConstructor : (BufferConstructor = _Buffer); + return typeof BufferConstructor === 'function' && BufferConstructor.isBuffer(this.value); + }; + Handle.prototype.isDataView = function () { + return (this.value instanceof DataView); + }; + Handle.prototype.isDate = function () { + return (this.value instanceof Date); + }; + Handle.prototype.isPromise = function () { + return (this.value instanceof Promise); + }; + Handle.prototype.isBoolean = function () { + return typeof this.value === 'boolean'; + }; + Handle.prototype.isUndefined = function () { + return this.value === undefined; + }; + Handle.prototype.isSymbol = function () { + return typeof this.value === 'symbol'; + }; + Handle.prototype.isNull = function () { + return this.value === null; + }; + Handle.prototype.dispose = function () { + this.value = undefined; + }; + return Handle; + }()); + var ConstHandle = /*#__PURE__*/ (function (_super) { + __extends(ConstHandle, _super); + function ConstHandle(id, value) { + return _super.call(this, id, value) || this; + } + ConstHandle.prototype.dispose = function () { }; + return ConstHandle; + }(Handle)); + var HandleStore = /*#__PURE__*/ (function () { + function HandleStore() { + this._values = [ + undefined, + HandleStore.UNDEFINED, + HandleStore.NULL, + HandleStore.FALSE, + HandleStore.TRUE, + HandleStore.GLOBAL + ]; + this._next = HandleStore.MIN_ID; + } + HandleStore.prototype.push = function (value) { + var h; + var next = this._next; + var values = this._values; + if (next < values.length) { + h = values[next]; + h.value = value; + } + else { + h = new Handle(next, value); + values[next] = h; + } + this._next++; + return h; + }; + HandleStore.prototype.erase = function (start, end) { + this._next = start; + var values = this._values; + for (var i = start; i < end; ++i) { + values[i].dispose(); + } + }; + HandleStore.prototype.get = function (id) { + return this._values[id]; + }; + HandleStore.prototype.swap = function (a, b) { + var values = this._values; + var h = values[a]; + values[a] = values[b]; + values[a].id = Number(a); + values[b] = h; + h.id = Number(b); + }; + HandleStore.prototype.dispose = function () { + this._values.length = HandleStore.MIN_ID; + this._next = HandleStore.MIN_ID; + }; + HandleStore.UNDEFINED = new ConstHandle(1 /* GlobalHandle.UNDEFINED */, undefined); + HandleStore.NULL = new ConstHandle(2 /* GlobalHandle.NULL */, null); + HandleStore.FALSE = new ConstHandle(3 /* GlobalHandle.FALSE */, false); + HandleStore.TRUE = new ConstHandle(4 /* GlobalHandle.TRUE */, true); + HandleStore.GLOBAL = new ConstHandle(5 /* GlobalHandle.GLOBAL */, _global); + HandleStore.MIN_ID = 6; + return HandleStore; + }()); + + var HandleScope = /*#__PURE__*/ (function () { + function HandleScope(handleStore, id, parentScope, start, end) { + if (end === void 0) { end = start; } + this.handleStore = handleStore; + this.id = id; + this.parent = parentScope; + this.child = null; + if (parentScope !== null) + parentScope.child = this; + this.start = start; + this.end = end; + this._escapeCalled = false; + this.callbackInfo = { + thiz: undefined, + data: 0, + args: undefined, + fn: undefined + }; + } + HandleScope.prototype.add = function (value) { + var h = this.handleStore.push(value); + this.end++; + return h; + }; + HandleScope.prototype.addExternal = function (data) { + return this.add(new External(data)); + }; + HandleScope.prototype.dispose = function () { + if (this._escapeCalled) + this._escapeCalled = false; + if (this.start === this.end) + return; + this.handleStore.erase(this.start, this.end); + }; + HandleScope.prototype.escape = function (handle) { + if (this._escapeCalled) + return null; + this._escapeCalled = true; + if (handle < this.start || handle >= this.end) { + return null; + } + this.handleStore.swap(handle, this.start); + var h = this.handleStore.get(this.start); + this.start++; + this.parent.end++; + return h; + }; + HandleScope.prototype.escapeCalled = function () { + return this._escapeCalled; + }; + return HandleScope; + }()); + + var ScopeStore = /*#__PURE__*/ (function () { + function ScopeStore() { + this._rootScope = new HandleScope(null, 0, null, 1, HandleStore.MIN_ID); + this.currentScope = this._rootScope; + this._values = [undefined]; + } + ScopeStore.prototype.get = function (id) { + return this._values[id]; + }; + ScopeStore.prototype.openScope = function (handleStore) { + var currentScope = this.currentScope; + var scope = currentScope.child; + if (scope !== null) { + scope.start = scope.end = currentScope.end; + } + else { + var id = currentScope.id + 1; + scope = new HandleScope(handleStore, id, currentScope, currentScope.end); + this._values[id] = scope; + } + this.currentScope = scope; + return scope; + }; + ScopeStore.prototype.closeScope = function () { + var scope = this.currentScope; + this.currentScope = scope.parent; + scope.dispose(); + }; + ScopeStore.prototype.dispose = function () { + this.currentScope = this._rootScope; + this._values.length = 1; + }; + return ScopeStore; + }()); + + var RefTracker = /*#__PURE__*/ (function () { + function RefTracker() { + this._next = null; + this._prev = null; + } + /** @virtual */ + RefTracker.prototype.dispose = function () { }; + /** @virtual */ + RefTracker.prototype.finalize = function () { }; + RefTracker.prototype.link = function (list) { + this._prev = list; + this._next = list._next; + if (this._next !== null) { + this._next._prev = this; + } + list._next = this; + }; + RefTracker.prototype.unlink = function () { + if (this._prev !== null) { + this._prev._next = this._next; + } + if (this._next !== null) { + this._next._prev = this._prev; + } + this._prev = null; + this._next = null; + }; + RefTracker.finalizeAll = function (list) { + while (list._next !== null) { + list._next.finalize(); + } + }; + return RefTracker; + }()); + + var Finalizer = /*#__PURE__*/ (function () { + function Finalizer(envObject, _finalizeCallback, _finalizeData, _finalizeHint) { + if (_finalizeCallback === void 0) { _finalizeCallback = 0; } + if (_finalizeData === void 0) { _finalizeData = 0; } + if (_finalizeHint === void 0) { _finalizeHint = 0; } + this.envObject = envObject; + this._finalizeCallback = _finalizeCallback; + this._finalizeData = _finalizeData; + this._finalizeHint = _finalizeHint; + this._makeDynCall_vppp = envObject.makeDynCall_vppp; + } + Finalizer.prototype.callback = function () { return this._finalizeCallback; }; + Finalizer.prototype.data = function () { return this._finalizeData; }; + Finalizer.prototype.hint = function () { return this._finalizeHint; }; + Finalizer.prototype.resetEnv = function () { + this.envObject = undefined; + }; + Finalizer.prototype.resetFinalizer = function () { + this._finalizeCallback = 0; + this._finalizeData = 0; + this._finalizeHint = 0; + }; + Finalizer.prototype.callFinalizer = function () { + var finalize_callback = this._finalizeCallback; + var finalize_data = this._finalizeData; + var finalize_hint = this._finalizeHint; + this.resetFinalizer(); + if (!finalize_callback) + return; + var fini = Number(finalize_callback); + if (!this.envObject) { + this._makeDynCall_vppp(fini)(0, finalize_data, finalize_hint); + } + else { + this.envObject.callFinalizer(fini, finalize_data, finalize_hint); + } + }; + Finalizer.prototype.dispose = function () { + this.envObject = undefined; + this._makeDynCall_vppp = undefined; + }; + return Finalizer; + }()); + + var TrackedFinalizer = /*#__PURE__*/ (function (_super) { + __extends(TrackedFinalizer, _super); + function TrackedFinalizer(envObject, finalize_callback, finalize_data, finalize_hint) { + var _this = _super.call(this) || this; + _this._finalizer = new Finalizer(envObject, finalize_callback, finalize_data, finalize_hint); + return _this; + } + TrackedFinalizer.create = function (envObject, finalize_callback, finalize_data, finalize_hint) { + var finalizer = new TrackedFinalizer(envObject, finalize_callback, finalize_data, finalize_hint); + finalizer.link(envObject.finalizing_reflist); + return finalizer; + }; + TrackedFinalizer.prototype.data = function () { + return this._finalizer.data(); + }; + TrackedFinalizer.prototype.dispose = function () { + if (!this._finalizer) + return; + this.unlink(); + this._finalizer.envObject.dequeueFinalizer(this); + this._finalizer.dispose(); + this._finalizer = undefined; + _super.prototype.dispose.call(this); + }; + TrackedFinalizer.prototype.finalize = function () { + this.unlink(); + var error; + var caught = false; + try { + this._finalizer.callFinalizer(); + } + catch (err) { + caught = true; + error = err; + } + this.dispose(); + if (caught) { + throw error; + } + }; + return TrackedFinalizer; + }(RefTracker)); + + function throwNodeApiVersionError(moduleName, moduleApiVersion) { + var errorMessage = "".concat(moduleName, " requires Node-API version ").concat(moduleApiVersion, ", but this version of Node.js only supports version ").concat(NODE_API_SUPPORTED_VERSION_MAX, " add-ons."); + throw new Error(errorMessage); + } + function handleThrow(envObject, value) { + if (envObject.terminatedOrTerminating()) { + return; + } + throw value; + } + var Env = /*#__PURE__*/ (function () { + function Env(ctx, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort) { + this.ctx = ctx; + this.moduleApiVersion = moduleApiVersion; + this.makeDynCall_vppp = makeDynCall_vppp; + this.makeDynCall_vp = makeDynCall_vp; + this.abort = abort; + this.openHandleScopes = 0; + this.instanceData = null; + this.tryCatch = new TryCatch(); + this.refs = 1; + this.reflist = new RefTracker(); + this.finalizing_reflist = new RefTracker(); + this.pendingFinalizers = []; + this.lastError = { + errorCode: 0 /* napi_status.napi_ok */, + engineErrorCode: 0, + engineReserved: 0 + }; + this.inGcFinalizer = false; + this._bindingMap = new WeakMap(); + this.id = 0; + } + /** @virtual */ + Env.prototype.canCallIntoJs = function () { + return true; + }; + Env.prototype.terminatedOrTerminating = function () { + return !this.canCallIntoJs(); + }; + Env.prototype.ref = function () { + this.refs++; + }; + Env.prototype.unref = function () { + this.refs--; + if (this.refs === 0) { + this.dispose(); + } + }; + Env.prototype.ensureHandle = function (value) { + return this.ctx.ensureHandle(value); + }; + Env.prototype.ensureHandleId = function (value) { + return this.ensureHandle(value).id; + }; + Env.prototype.clearLastError = function () { + var lastError = this.lastError; + if (lastError.errorCode !== 0 /* napi_status.napi_ok */) + lastError.errorCode = 0 /* napi_status.napi_ok */; + if (lastError.engineErrorCode !== 0) + lastError.engineErrorCode = 0; + if (lastError.engineReserved !== 0) + lastError.engineReserved = 0; + return 0 /* napi_status.napi_ok */; + }; + Env.prototype.setLastError = function (error_code, engine_error_code, engine_reserved) { + if (engine_error_code === void 0) { engine_error_code = 0; } + if (engine_reserved === void 0) { engine_reserved = 0; } + var lastError = this.lastError; + if (lastError.errorCode !== error_code) + lastError.errorCode = error_code; + if (lastError.engineErrorCode !== engine_error_code) + lastError.engineErrorCode = engine_error_code; + if (lastError.engineReserved !== engine_reserved) + lastError.engineReserved = engine_reserved; + return error_code; + }; + Env.prototype.getReturnStatus = function () { + return !this.tryCatch.hasCaught() ? 0 /* napi_status.napi_ok */ : this.setLastError(10 /* napi_status.napi_pending_exception */); + }; + Env.prototype.callIntoModule = function (fn, handleException) { + if (handleException === void 0) { handleException = handleThrow; } + var openHandleScopesBefore = this.openHandleScopes; + this.clearLastError(); + var r = fn(this); + if (openHandleScopesBefore !== this.openHandleScopes) { + this.abort('open_handle_scopes != open_handle_scopes_before'); + } + if (this.tryCatch.hasCaught()) { + var err = this.tryCatch.extractException(); + handleException(this, err); + } + return r; + }; + Env.prototype.invokeFinalizerFromGC = function (finalizer) { + if (this.moduleApiVersion !== NAPI_VERSION_EXPERIMENTAL) { + this.enqueueFinalizer(finalizer); + } + else { + var saved = this.inGcFinalizer; + this.inGcFinalizer = true; + try { + finalizer.finalize(); + } + finally { + this.inGcFinalizer = saved; + } + } + }; + Env.prototype.checkGCAccess = function () { + if (this.moduleApiVersion === NAPI_VERSION_EXPERIMENTAL && this.inGcFinalizer) { + this.abort('Finalizer is calling a function that may affect GC state.\n' + + 'The finalizers are run directly from GC and must not affect GC ' + + 'state.\n' + + 'Use `node_api_post_finalizer` from inside of the finalizer to work ' + + 'around this issue.\n' + + 'It schedules the call as a new task in the event loop.'); + } + }; + /** @virtual */ + Env.prototype.enqueueFinalizer = function (finalizer) { + if (this.pendingFinalizers.indexOf(finalizer) === -1) { + this.pendingFinalizers.push(finalizer); + } + }; + /** @virtual */ + Env.prototype.dequeueFinalizer = function (finalizer) { + var index = this.pendingFinalizers.indexOf(finalizer); + if (index !== -1) { + this.pendingFinalizers.splice(index, 1); + } + }; + /** @virtual */ + Env.prototype.deleteMe = function () { + RefTracker.finalizeAll(this.finalizing_reflist); + RefTracker.finalizeAll(this.reflist); + this.tryCatch.extractException(); + this.ctx.envStore.remove(this.id); + }; + Env.prototype.dispose = function () { + if (this.id === 0) + return; + this.deleteMe(); + this.finalizing_reflist.dispose(); + this.reflist.dispose(); + this.id = 0; + }; + Env.prototype.initObjectBinding = function (value) { + var binding = { + wrapped: 0, + tag: null + }; + this._bindingMap.set(value, binding); + return binding; + }; + Env.prototype.getObjectBinding = function (value) { + if (this._bindingMap.has(value)) { + return this._bindingMap.get(value); + } + return this.initObjectBinding(value); + }; + Env.prototype.setInstanceData = function (data, finalize_cb, finalize_hint) { + if (this.instanceData) { + this.instanceData.dispose(); + } + this.instanceData = TrackedFinalizer.create(this, finalize_cb, data, finalize_hint); + }; + Env.prototype.getInstanceData = function () { + return this.instanceData ? this.instanceData.data() : 0; + }; + return Env; + }()); + var NodeEnv = /*#__PURE__*/ (function (_super) { + __extends(NodeEnv, _super); + function NodeEnv(ctx, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding) { + var _this = _super.call(this, ctx, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort) || this; + _this.filename = filename; + _this.nodeBinding = nodeBinding; + _this.destructing = false; + _this.finalizationScheduled = false; + return _this; + } + NodeEnv.prototype.deleteMe = function () { + this.destructing = true; + this.drainFinalizerQueue(); + _super.prototype.deleteMe.call(this); + }; + NodeEnv.prototype.canCallIntoJs = function () { + return _super.prototype.canCallIntoJs.call(this) && this.ctx.canCallIntoJs(); + }; + NodeEnv.prototype.triggerFatalException = function (err) { + if (this.nodeBinding) { + this.nodeBinding.napi.fatalException(err); + } + else { + if (typeof process === 'object' && process !== null && typeof process._fatalException === 'function') { + var handled = process._fatalException(err); + if (!handled) { + console.error(err); + process.exit(1); + } + } + else { + throw err; + } + } + }; + NodeEnv.prototype.callbackIntoModule = function (enforceUncaughtExceptionPolicy, fn) { + return this.callIntoModule(fn, function (envObject, err) { + if (envObject.terminatedOrTerminating()) { + return; + } + var hasProcess = typeof process === 'object' && process !== null; + var hasForceFlag = hasProcess ? Boolean(process.execArgv && (process.execArgv.indexOf('--force-node-api-uncaught-exceptions-policy') !== -1)) : false; + if (envObject.moduleApiVersion < 10 && !hasForceFlag && !enforceUncaughtExceptionPolicy) { + var warn = hasProcess && typeof process.emitWarning === 'function' + ? process.emitWarning + : function (warning, type, code) { + if (warning instanceof Error) { + console.warn(warning.toString()); + } + else { + var prefix = code ? "[".concat(code, "] ") : ''; + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing + console.warn("".concat(prefix).concat(type || 'Warning', ": ").concat(warning)); + } + }; + warn('Uncaught Node-API callback exception detected, please run node with option --force-node-api-uncaught-exceptions-policy=true to handle those exceptions properly.', 'DeprecationWarning', 'DEP0168'); + return; + } + envObject.triggerFatalException(err); + }); + }; + NodeEnv.prototype.callFinalizer = function (cb, data, hint) { + this.callFinalizerInternal(1, cb, data, hint); + }; + NodeEnv.prototype.callFinalizerInternal = function (forceUncaught, cb, data, hint) { + var f = this.makeDynCall_vppp(cb); + var env = this.id; + var scope = this.ctx.openScope(this); + try { + this.callbackIntoModule(Boolean(forceUncaught), function () { f(env, data, hint); }); + } + finally { + this.ctx.closeScope(this, scope); + } + }; + NodeEnv.prototype.enqueueFinalizer = function (finalizer) { + var _this = this; + _super.prototype.enqueueFinalizer.call(this, finalizer); + if (!this.finalizationScheduled && !this.destructing) { + this.finalizationScheduled = true; + this.ref(); + _setImmediate(function () { + _this.finalizationScheduled = false; + _this.unref(); + _this.drainFinalizerQueue(); + }); + } + }; + NodeEnv.prototype.drainFinalizerQueue = function () { + while (this.pendingFinalizers.length > 0) { + var refTracker = this.pendingFinalizers.shift(); + refTracker.finalize(); + } + }; + return NodeEnv; + }(Env)); + function newEnv(ctx, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding) { + moduleApiVersion = typeof moduleApiVersion !== 'number' ? NODE_API_DEFAULT_MODULE_API_VERSION : moduleApiVersion; + // Validate module_api_version. + if (moduleApiVersion < NODE_API_DEFAULT_MODULE_API_VERSION) { + moduleApiVersion = NODE_API_DEFAULT_MODULE_API_VERSION; + } + else if (moduleApiVersion > NODE_API_SUPPORTED_VERSION_MAX && moduleApiVersion !== NAPI_VERSION_EXPERIMENTAL) { + throwNodeApiVersionError(filename, moduleApiVersion); + } + var env = new NodeEnv(ctx, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding); + ctx.envStore.add(env); + ctx.addCleanupHook(env, function () { env.unref(); }, 0); + return env; + } + + var EmnapiError = /*#__PURE__*/ (function (_super) { + __extends(EmnapiError, _super); + function EmnapiError(message) { + var _newTarget = this.constructor; + var _this = _super.call(this, message) || this; + var ErrorConstructor = _newTarget; + var proto = ErrorConstructor.prototype; + if (!(_this instanceof EmnapiError)) { + var setPrototypeOf = Object.setPrototypeOf; + if (typeof setPrototypeOf === 'function') { + setPrototypeOf.call(Object, _this, proto); + } + else { + // eslint-disable-next-line no-proto + _this.__proto__ = proto; + } + if (typeof Error.captureStackTrace === 'function') { + Error.captureStackTrace(_this, ErrorConstructor); + } + } + return _this; + } + return EmnapiError; + }(Error)); + Object.defineProperty(EmnapiError.prototype, 'name', { + configurable: true, + writable: true, + value: 'EmnapiError' + }); + var NotSupportWeakRefError = /*#__PURE__*/ (function (_super) { + __extends(NotSupportWeakRefError, _super); + function NotSupportWeakRefError(api, message) { + return _super.call(this, "".concat(api, ": The current runtime does not support \"FinalizationRegistry\" and \"WeakRef\".").concat(message ? " ".concat(message) : '')) || this; + } + return NotSupportWeakRefError; + }(EmnapiError)); + Object.defineProperty(NotSupportWeakRefError.prototype, 'name', { + configurable: true, + writable: true, + value: 'NotSupportWeakRefError' + }); + var NotSupportBufferError = /*#__PURE__*/ (function (_super) { + __extends(NotSupportBufferError, _super); + function NotSupportBufferError(api, message) { + return _super.call(this, "".concat(api, ": The current runtime does not support \"Buffer\". Consider using buffer polyfill to make sure `globalThis.Buffer` is defined.").concat(message ? " ".concat(message) : '')) || this; + } + return NotSupportBufferError; + }(EmnapiError)); + Object.defineProperty(NotSupportBufferError.prototype, 'name', { + configurable: true, + writable: true, + value: 'NotSupportBufferError' + }); + + var StrongRef = /*#__PURE__*/ (function () { + function StrongRef(value) { + this._value = value; + } + StrongRef.prototype.deref = function () { + return this._value; + }; + StrongRef.prototype.dispose = function () { + this._value = undefined; + }; + return StrongRef; + }()); + var Persistent = /*#__PURE__*/ (function () { + function Persistent(value) { + this._ref = new StrongRef(value); + } + Persistent.prototype.setWeak = function (param, callback) { + if (!supportFinalizer || this._ref === undefined || this._ref instanceof WeakRef) + return; + var value = this._ref.deref(); + try { + Persistent._registry.register(value, this, this); + var weakRef = new WeakRef(value); + this._ref.dispose(); + this._ref = weakRef; + this._param = param; + this._callback = callback; + } + catch (err) { + if (typeof value === 'symbol') ; + else { + throw err; + } + } + }; + Persistent.prototype.clearWeak = function () { + if (!supportFinalizer || this._ref === undefined) + return; + if (this._ref instanceof WeakRef) { + try { + Persistent._registry.unregister(this); + } + catch (_) { } + this._param = undefined; + this._callback = undefined; + var value = this._ref.deref(); + if (value === undefined) { + this._ref = value; + } + else { + this._ref = new StrongRef(value); + } + } + }; + Persistent.prototype.reset = function () { + if (supportFinalizer) { + try { + Persistent._registry.unregister(this); + } + catch (_) { } + } + this._param = undefined; + this._callback = undefined; + if (this._ref instanceof StrongRef) { + this._ref.dispose(); + } + this._ref = undefined; + }; + Persistent.prototype.isEmpty = function () { + return this._ref === undefined; + }; + Persistent.prototype.deref = function () { + if (this._ref === undefined) + return undefined; + return this._ref.deref(); + }; + Persistent._registry = supportFinalizer + ? new FinalizationRegistry(function (value) { + value._ref = undefined; + var callback = value._callback; + var param = value._param; + value._callback = undefined; + value._param = undefined; + if (typeof callback === 'function') { + callback(param); + } + }) + : undefined; + return Persistent; + }()); + + exports.ReferenceOwnership = void 0; + (function (ReferenceOwnership) { + ReferenceOwnership[ReferenceOwnership["kRuntime"] = 0] = "kRuntime"; + ReferenceOwnership[ReferenceOwnership["kUserland"] = 1] = "kUserland"; + })(exports.ReferenceOwnership || (exports.ReferenceOwnership = {})); + function canBeHeldWeakly(value) { + return value.isObject() || value.isFunction() || value.isSymbol(); + } + var Reference = /*#__PURE__*/ (function (_super) { + __extends(Reference, _super); + function Reference(envObject, handle_id, initialRefcount, ownership) { + var _this = _super.call(this) || this; + _this.envObject = envObject; + _this._refcount = initialRefcount; + _this._ownership = ownership; + var handle = envObject.ctx.handleStore.get(handle_id); + _this.canBeWeak = canBeHeldWeakly(handle); + _this.persistent = new Persistent(handle.value); + _this.id = 0; + if (initialRefcount === 0) { + _this._setWeak(); + } + return _this; + } + Reference.weakCallback = function (ref) { + ref.persistent.reset(); + ref.invokeFinalizerFromGC(); + }; + Reference.create = function (envObject, handle_id, initialRefcount, ownership, _unused1, _unused2, _unused3) { + var ref = new Reference(envObject, handle_id, initialRefcount, ownership); + envObject.ctx.refStore.add(ref); + ref.link(envObject.reflist); + return ref; + }; + Reference.prototype.ref = function () { + if (this.persistent.isEmpty()) { + return 0; + } + if (++this._refcount === 1 && this.canBeWeak) { + this.persistent.clearWeak(); + } + return this._refcount; + }; + Reference.prototype.unref = function () { + if (this.persistent.isEmpty() || this._refcount === 0) { + return 0; + } + if (--this._refcount === 0) { + this._setWeak(); + } + return this._refcount; + }; + Reference.prototype.get = function (envObject) { + if (envObject === void 0) { envObject = this.envObject; } + if (this.persistent.isEmpty()) { + return 0; + } + var obj = this.persistent.deref(); + var handle = envObject.ensureHandle(obj); + return handle.id; + }; + /** @virtual */ + Reference.prototype.resetFinalizer = function () { }; + /** @virtual */ + Reference.prototype.data = function () { return 0; }; + Reference.prototype.refcount = function () { return this._refcount; }; + Reference.prototype.ownership = function () { return this._ownership; }; + /** @virtual */ + Reference.prototype.callUserFinalizer = function () { }; + /** @virtual */ + Reference.prototype.invokeFinalizerFromGC = function () { + this.finalize(); + }; + Reference.prototype._setWeak = function () { + if (this.canBeWeak) { + this.persistent.setWeak(this, Reference.weakCallback); + } + else { + this.persistent.reset(); + } + }; + Reference.prototype.finalize = function () { + this.persistent.reset(); + var deleteMe = this._ownership === exports.ReferenceOwnership.kRuntime; + this.unlink(); + this.callUserFinalizer(); + if (deleteMe) { + this.dispose(); + } + }; + Reference.prototype.dispose = function () { + if (this.id === 0) + return; + this.unlink(); + this.persistent.reset(); + this.envObject.ctx.refStore.remove(this.id); + _super.prototype.dispose.call(this); + this.envObject = undefined; + this.id = 0; + }; + return Reference; + }(RefTracker)); + var ReferenceWithData = /*#__PURE__*/ (function (_super) { + __extends(ReferenceWithData, _super); + function ReferenceWithData(envObject, value, initialRefcount, ownership, _data) { + var _this = _super.call(this, envObject, value, initialRefcount, ownership) || this; + _this._data = _data; + return _this; + } + ReferenceWithData.create = function (envObject, value, initialRefcount, ownership, data) { + var reference = new ReferenceWithData(envObject, value, initialRefcount, ownership, data); + envObject.ctx.refStore.add(reference); + reference.link(envObject.reflist); + return reference; + }; + ReferenceWithData.prototype.data = function () { + return this._data; + }; + return ReferenceWithData; + }(Reference)); + var ReferenceWithFinalizer = /*#__PURE__*/ (function (_super) { + __extends(ReferenceWithFinalizer, _super); + function ReferenceWithFinalizer(envObject, value, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint) { + var _this = _super.call(this, envObject, value, initialRefcount, ownership) || this; + _this._finalizer = new Finalizer(envObject, finalize_callback, finalize_data, finalize_hint); + return _this; + } + ReferenceWithFinalizer.create = function (envObject, value, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint) { + var reference = new ReferenceWithFinalizer(envObject, value, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint); + envObject.ctx.refStore.add(reference); + reference.link(envObject.finalizing_reflist); + return reference; + }; + ReferenceWithFinalizer.prototype.resetFinalizer = function () { + this._finalizer.resetFinalizer(); + }; + ReferenceWithFinalizer.prototype.data = function () { + return this._finalizer.data(); + }; + ReferenceWithFinalizer.prototype.callUserFinalizer = function () { + this._finalizer.callFinalizer(); + }; + ReferenceWithFinalizer.prototype.invokeFinalizerFromGC = function () { + this._finalizer.envObject.invokeFinalizerFromGC(this); + }; + ReferenceWithFinalizer.prototype.dispose = function () { + if (!this._finalizer) + return; + this._finalizer.envObject.dequeueFinalizer(this); + this._finalizer.dispose(); + _super.prototype.dispose.call(this); + this._finalizer = undefined; + }; + return ReferenceWithFinalizer; + }(Reference)); + + var Deferred = /*#__PURE__*/ (function () { + function Deferred(ctx, value) { + this.id = 0; + this.ctx = ctx; + this.value = value; + } + Deferred.create = function (ctx, value) { + var deferred = new Deferred(ctx, value); + ctx.deferredStore.add(deferred); + return deferred; + }; + Deferred.prototype.resolve = function (value) { + this.value.resolve(value); + this.dispose(); + }; + Deferred.prototype.reject = function (reason) { + this.value.reject(reason); + this.dispose(); + }; + Deferred.prototype.dispose = function () { + this.ctx.deferredStore.remove(this.id); + this.id = 0; + this.value = null; + this.ctx = null; + }; + return Deferred; + }()); + + var Store = /*#__PURE__*/ (function () { + function Store() { + this._values = [undefined]; + this._values.length = 4; + this._size = 1; + this._freeList = []; + } + Store.prototype.add = function (value) { + var id; + if (this._freeList.length) { + id = this._freeList.shift(); + } + else { + id = this._size; + this._size++; + var capacity = this._values.length; + if (id >= capacity) { + this._values.length = capacity + (capacity >> 1) + 16; + } + } + value.id = id; + this._values[id] = value; + }; + Store.prototype.get = function (id) { + return this._values[id]; + }; + Store.prototype.has = function (id) { + return this._values[id] !== undefined; + }; + Store.prototype.remove = function (id) { + var value = this._values[id]; + if (value) { + value.id = 0; + this._values[id] = undefined; + this._freeList.push(Number(id)); + } + }; + Store.prototype.dispose = function () { + for (var i = 1; i < this._size; ++i) { + var value = this._values[i]; + value === null || value === void 0 ? void 0 : value.dispose(); + } + this._values = [undefined]; + this._size = 1; + this._freeList = []; + }; + return Store; + }()); + + var kMaxReasonableBytes = BigInt(1) << BigInt(60); + var kMinReasonableBytes = -kMaxReasonableBytes; + var ExternalMemory = /*#__PURE__*/ (function () { + function ExternalMemory(onChange) { + this.total = BigInt(0); + this.onChange = onChange !== null && onChange !== void 0 ? onChange : null; + } + ExternalMemory.prototype.adjust = function (changeInBytes) { + changeInBytes = BigInt(changeInBytes); + if (!(kMinReasonableBytes <= changeInBytes && changeInBytes < kMaxReasonableBytes)) { + throw new RangeError("changeInBytes ".concat(changeInBytes, " is out of reasonable range")); + } + var old = this.total; + this.total += changeInBytes; + var amount = this.total; + var onChange = this.onChange; + if (changeInBytes) { + onChange === null || onChange === void 0 ? void 0 : onChange(amount, old, changeInBytes); + } + return amount; + }; + return ExternalMemory; + }()); + + var CleanupHookCallback = /*#__PURE__*/ (function () { + function CleanupHookCallback(envObject, fn, arg, order) { + this.envObject = envObject; + this.fn = fn; + this.arg = arg; + this.order = order; + } + return CleanupHookCallback; + }()); + var CleanupQueue = /*#__PURE__*/ (function () { + function CleanupQueue() { + this._cleanupHooks = []; + this._cleanupHookCounter = 0; + } + CleanupQueue.prototype.empty = function () { + return this._cleanupHooks.length === 0; + }; + CleanupQueue.prototype.add = function (envObject, fn, arg) { + if (this._cleanupHooks.filter(function (hook) { return (hook.envObject === envObject && hook.fn === fn && hook.arg === arg); }).length > 0) { + throw new Error('Can not add same fn and arg twice'); + } + this._cleanupHooks.push(new CleanupHookCallback(envObject, fn, arg, this._cleanupHookCounter++)); + }; + CleanupQueue.prototype.remove = function (envObject, fn, arg) { + for (var i = 0; i < this._cleanupHooks.length; ++i) { + var hook = this._cleanupHooks[i]; + if (hook.envObject === envObject && hook.fn === fn && hook.arg === arg) { + this._cleanupHooks.splice(i, 1); + return; + } + } + }; + CleanupQueue.prototype.drain = function () { + var hooks = this._cleanupHooks.slice(); + hooks.sort(function (a, b) { return (b.order - a.order); }); + for (var i = 0; i < hooks.length; ++i) { + var cb = hooks[i]; + if (typeof cb.fn === 'number') { + cb.envObject.makeDynCall_vp(cb.fn)(cb.arg); + } + else { + cb.fn(cb.arg); + } + this._cleanupHooks.splice(this._cleanupHooks.indexOf(cb), 1); + } + }; + CleanupQueue.prototype.dispose = function () { + this._cleanupHooks.length = 0; + this._cleanupHookCounter = 0; + }; + return CleanupQueue; + }()); + var NodejsWaitingRequestCounter = /*#__PURE__*/ (function () { + function NodejsWaitingRequestCounter() { + this.refHandle = new _MessageChannel().port1; + this.count = 0; + } + NodejsWaitingRequestCounter.prototype.increase = function () { + if (this.count === 0) { + if (this.refHandle.ref) { + this.refHandle.ref(); + } + } + this.count++; + }; + NodejsWaitingRequestCounter.prototype.decrease = function () { + if (this.count === 0) + return; + if (this.count === 1) { + if (this.refHandle.unref) { + this.refHandle.unref(); + } + } + this.count--; + }; + return NodejsWaitingRequestCounter; + }()); + var Context = /*#__PURE__*/ (function () { + function Context(options) { + var _this = this; + this._isStopping = false; + this._canCallIntoJs = true; + this._suppressDestroy = false; + this.envStore = new Store(); + this.scopeStore = new ScopeStore(); + this.refStore = new Store(); + this.deferredStore = new Store(); + this.handleStore = new HandleStore(); + this.feature = { + supportReflect: supportReflect, + supportFinalizer: supportFinalizer, + supportWeakSymbol: supportWeakSymbol, + supportBigInt: supportBigInt, + supportNewFunction: supportNewFunction, + canSetFunctionName: canSetFunctionName, + setImmediate: _setImmediate, + Buffer: _Buffer, + MessageChannel: _MessageChannel + }; + this.cleanupQueue = new CleanupQueue(); + this._externalMemory = new ExternalMemory(options === null || options === void 0 ? void 0 : options.onExternalMemoryChange); + if (typeof process === 'object' && process !== null && typeof process.once === 'function') { + this.refCounter = new NodejsWaitingRequestCounter(); + process.once('beforeExit', function () { + if (!_this._suppressDestroy) { + _this.destroy(); + } + }); + } + } + /** + * Suppress the destroy on `beforeExit` event in Node.js. + * Call this method if you want to keep the context and + * all associated {@link Env | Env} alive, + * this also means that cleanup hooks will not be called. + * After call this method, you should call + * {@link Context.destroy | `Context.prototype.destroy`} method manually. + */ + Context.prototype.suppressDestroy = function () { + this._suppressDestroy = true; + }; + // eslint-disable-next-line @typescript-eslint/explicit-function-return-type + Context.prototype.getRuntimeVersions = function () { + return { + version: version, + NODE_API_SUPPORTED_VERSION_MAX: NODE_API_SUPPORTED_VERSION_MAX, + NAPI_VERSION_EXPERIMENTAL: NAPI_VERSION_EXPERIMENTAL, + NODE_API_DEFAULT_MODULE_API_VERSION: NODE_API_DEFAULT_MODULE_API_VERSION + }; + }; + Context.prototype.createNotSupportWeakRefError = function (api, message) { + return new NotSupportWeakRefError(api, message); + }; + Context.prototype.createNotSupportBufferError = function (api, message) { + return new NotSupportBufferError(api, message); + }; + Context.prototype.createReference = function (envObject, handle_id, initialRefcount, ownership) { + return Reference.create(envObject, handle_id, initialRefcount, ownership); + }; + Context.prototype.createReferenceWithData = function (envObject, handle_id, initialRefcount, ownership, data) { + return ReferenceWithData.create(envObject, handle_id, initialRefcount, ownership, data); + }; + Context.prototype.createReferenceWithFinalizer = function (envObject, handle_id, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint) { + if (finalize_callback === void 0) { finalize_callback = 0; } + if (finalize_data === void 0) { finalize_data = 0; } + if (finalize_hint === void 0) { finalize_hint = 0; } + return ReferenceWithFinalizer.create(envObject, handle_id, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint); + }; + Context.prototype.createDeferred = function (value) { + return Deferred.create(this, value); + }; + Context.prototype.adjustAmountOfExternalAllocatedMemory = function (changeInBytes) { + return this._externalMemory.adjust(changeInBytes); + }; + Context.prototype.createEnv = function (filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding) { + return newEnv(this, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding); + }; + Context.prototype.createTrackedFinalizer = function (envObject, finalize_callback, finalize_data, finalize_hint) { + return TrackedFinalizer.create(envObject, finalize_callback, finalize_data, finalize_hint); + }; + Context.prototype.getCurrentScope = function () { + return this.scopeStore.currentScope; + }; + Context.prototype.addToCurrentScope = function (value) { + return this.scopeStore.currentScope.add(value); + }; + Context.prototype.openScope = function (envObject) { + var scope = this.scopeStore.openScope(this.handleStore); + if (envObject) + envObject.openHandleScopes++; + return scope; + }; + Context.prototype.closeScope = function (envObject, _scope) { + if (envObject && envObject.openHandleScopes === 0) + return; + this.scopeStore.closeScope(); + if (envObject) + envObject.openHandleScopes--; + }; + Context.prototype.ensureHandle = function (value) { + switch (value) { + case undefined: return HandleStore.UNDEFINED; + case null: return HandleStore.NULL; + case true: return HandleStore.TRUE; + case false: return HandleStore.FALSE; + case _global: return HandleStore.GLOBAL; + } + return this.addToCurrentScope(value); + }; + Context.prototype.addCleanupHook = function (envObject, fn, arg) { + this.cleanupQueue.add(envObject, fn, arg); + }; + Context.prototype.removeCleanupHook = function (envObject, fn, arg) { + this.cleanupQueue.remove(envObject, fn, arg); + }; + Context.prototype.runCleanup = function () { + while (!this.cleanupQueue.empty()) { + this.cleanupQueue.drain(); + } + }; + Context.prototype.increaseWaitingRequestCounter = function () { + var _a; + (_a = this.refCounter) === null || _a === void 0 ? void 0 : _a.increase(); + }; + Context.prototype.decreaseWaitingRequestCounter = function () { + var _a; + (_a = this.refCounter) === null || _a === void 0 ? void 0 : _a.decrease(); + }; + Context.prototype.setCanCallIntoJs = function (value) { + this._canCallIntoJs = value; + }; + Context.prototype.setStopping = function (value) { + this._isStopping = value; + }; + Context.prototype.canCallIntoJs = function () { + return this._canCallIntoJs && !this._isStopping; + }; + /** + * Destroy the context and call cleanup hooks. + * Associated {@link Env | Env} will be destroyed. + */ + Context.prototype.destroy = function () { + this.setStopping(true); + this.setCanCallIntoJs(false); + this.runCleanup(); + }; + return Context; + }()); + var defaultContext; + function createContext(options) { + return new Context(options); + } + function getDefaultContext() { + if (!defaultContext) { + defaultContext = createContext(); + } + return defaultContext; + } + + exports.ConstHandle = ConstHandle; + exports.Context = Context; + exports.Deferred = Deferred; + exports.EmnapiError = EmnapiError; + exports.Env = Env; + exports.External = External; + exports.Finalizer = Finalizer; + exports.Handle = Handle; + exports.HandleScope = HandleScope; + exports.HandleStore = HandleStore; + exports.NAPI_VERSION_EXPERIMENTAL = NAPI_VERSION_EXPERIMENTAL; + exports.NODE_API_DEFAULT_MODULE_API_VERSION = NODE_API_DEFAULT_MODULE_API_VERSION; + exports.NODE_API_SUPPORTED_VERSION_MAX = NODE_API_SUPPORTED_VERSION_MAX; + exports.NODE_API_SUPPORTED_VERSION_MIN = NODE_API_SUPPORTED_VERSION_MIN; + exports.NodeEnv = NodeEnv; + exports.NotSupportBufferError = NotSupportBufferError; + exports.NotSupportWeakRefError = NotSupportWeakRefError; + exports.Persistent = Persistent; + exports.RefTracker = RefTracker; + exports.Reference = Reference; + exports.ReferenceWithData = ReferenceWithData; + exports.ReferenceWithFinalizer = ReferenceWithFinalizer; + exports.ScopeStore = ScopeStore; + exports.Store = Store; + exports.TrackedFinalizer = TrackedFinalizer; + exports.TryCatch = TryCatch; + exports.createContext = createContext; + exports.getDefaultContext = getDefaultContext; + exports.getExternalValue = getExternalValue; + exports.isExternal = isExternal; + exports.isReferenceType = isReferenceType; + exports.version = version; + + return exports; + +})({}); diff --git a/node_modules/@emnapi/runtime/dist/emnapi.js b/node_modules/@emnapi/runtime/dist/emnapi.js new file mode 100644 index 00000000..3d68b9ad --- /dev/null +++ b/node_modules/@emnapi/runtime/dist/emnapi.js @@ -0,0 +1,1510 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.emnapi = {})); +})(this, (function (exports) { + /****************************************************************************** + Copyright (c) Microsoft Corporation. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + ***************************************************************************** */ + /* global Reflect, Promise, SuppressedError, Symbol, Iterator */ + + var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + + function __extends(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + } + + typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { + var e = new Error(message); + return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; + }; + + var externalValue = new WeakMap(); + /** @public */ + function isExternal(object) { + return externalValue.has(object); + } + /** @public */ // eslint-disable-next-line @typescript-eslint/no-redeclare + var External = (function () { + function External(value) { + Object.setPrototypeOf(this, null); + externalValue.set(this, value); + } + External.prototype = null; + return External; + })(); + /** @public */ + function getExternalValue(external) { + if (!isExternal(external)) { + throw new TypeError('not external'); + } + return externalValue.get(external); + } + + var supportNewFunction = /*#__PURE__*/ (function () { + var f; + try { + f = new Function(); + } + catch (_) { + return false; + } + return typeof f === 'function'; + })(); + var _global = /*#__PURE__*/ (function () { + if (typeof globalThis !== 'undefined') + return globalThis; + var g = (function () { return this; })(); + if (!g && supportNewFunction) { + try { + g = new Function('return this')(); + } + catch (_) { } + } + if (!g) { + if (typeof __webpack_public_path__ === 'undefined') { + if (typeof global !== 'undefined') + return global; + } + if (typeof window !== 'undefined') + return window; + if (typeof self !== 'undefined') + return self; + } + return g; + })(); + var TryCatch = /*#__PURE__*/ (function () { + function TryCatch() { + this._exception = undefined; + this._caught = false; + } + TryCatch.prototype.isEmpty = function () { + return !this._caught; + }; + TryCatch.prototype.hasCaught = function () { + return this._caught; + }; + TryCatch.prototype.exception = function () { + return this._exception; + }; + TryCatch.prototype.setError = function (err) { + this._caught = true; + this._exception = err; + }; + TryCatch.prototype.reset = function () { + this._caught = false; + this._exception = undefined; + }; + TryCatch.prototype.extractException = function () { + var e = this._exception; + this.reset(); + return e; + }; + return TryCatch; + }()); + var canSetFunctionName = /*#__PURE__*/ (function () { + var _a; + try { + return Boolean((_a = Object.getOwnPropertyDescriptor(Function.prototype, 'name')) === null || _a === void 0 ? void 0 : _a.configurable); + } + catch (_) { + return false; + } + })(); + var supportReflect = typeof Reflect === 'object'; + var supportFinalizer = (typeof FinalizationRegistry !== 'undefined') && (typeof WeakRef !== 'undefined'); + var supportWeakSymbol = /*#__PURE__*/ (function () { + try { + // eslint-disable-next-line symbol-description + var sym = Symbol(); + // eslint-disable-next-line no-new + new WeakRef(sym); + new WeakMap().set(sym, undefined); + } + catch (_) { + return false; + } + return true; + })(); + var supportBigInt = typeof BigInt !== 'undefined'; + function isReferenceType(v) { + return (typeof v === 'object' && v !== null) || typeof v === 'function'; + } + var _require = /*#__PURE__*/ (function () { + var nativeRequire; + if (typeof __webpack_public_path__ !== 'undefined') { + nativeRequire = (function () { + return typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : undefined; + })(); + } + else { + nativeRequire = (function () { + return typeof __webpack_public_path__ !== 'undefined' ? (typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : undefined) : (typeof require !== 'undefined' ? require : undefined); + })(); + } + return nativeRequire; + })(); + var _MessageChannel = typeof MessageChannel === 'function' + ? MessageChannel + : /*#__PURE__*/ (function () { + try { + return _require('worker_threads').MessageChannel; + } + catch (_) { } + return undefined; + })(); + var _setImmediate = typeof setImmediate === 'function' + ? setImmediate + : function (callback) { + if (typeof callback !== 'function') { + throw new TypeError('The "callback" argument must be of type function'); + } + if (_MessageChannel) { + var channel_1 = new _MessageChannel(); + channel_1.port1.onmessage = function () { + channel_1.port1.onmessage = null; + channel_1 = undefined; + callback(); + }; + channel_1.port2.postMessage(null); + } + else { + setTimeout(callback, 0); + } + }; + var _Buffer = typeof Buffer === 'function' + ? Buffer + : /*#__PURE__*/ (function () { + try { + return _require('buffer').Buffer; + } + catch (_) { } + return undefined; + })(); + var version = "1.10.0"; + var NODE_API_SUPPORTED_VERSION_MIN = 1 /* Version.NODE_API_SUPPORTED_VERSION_MIN */; + var NODE_API_SUPPORTED_VERSION_MAX = 10 /* Version.NODE_API_SUPPORTED_VERSION_MAX */; + var NAPI_VERSION_EXPERIMENTAL = 2147483647 /* Version.NAPI_VERSION_EXPERIMENTAL */; + var NODE_API_DEFAULT_MODULE_API_VERSION = 8 /* Version.NODE_API_DEFAULT_MODULE_API_VERSION */; + + var Handle = /*#__PURE__*/ (function () { + function Handle(id, value) { + this.id = id; + this.value = value; + } + Handle.prototype.data = function () { + return getExternalValue(this.value); + }; + Handle.prototype.isNumber = function () { + return typeof this.value === 'number'; + }; + Handle.prototype.isBigInt = function () { + return typeof this.value === 'bigint'; + }; + Handle.prototype.isString = function () { + return typeof this.value === 'string'; + }; + Handle.prototype.isFunction = function () { + return typeof this.value === 'function'; + }; + Handle.prototype.isExternal = function () { + return isExternal(this.value); + }; + Handle.prototype.isObject = function () { + return typeof this.value === 'object' && this.value !== null; + }; + Handle.prototype.isArray = function () { + return Array.isArray(this.value); + }; + Handle.prototype.isArrayBuffer = function () { + return (this.value instanceof ArrayBuffer); + }; + Handle.prototype.isTypedArray = function () { + return (ArrayBuffer.isView(this.value)) && !(this.value instanceof DataView); + }; + Handle.prototype.isBuffer = function (BufferConstructor) { + if (ArrayBuffer.isView(this.value)) + return true; + BufferConstructor !== null && BufferConstructor !== void 0 ? BufferConstructor : (BufferConstructor = _Buffer); + return typeof BufferConstructor === 'function' && BufferConstructor.isBuffer(this.value); + }; + Handle.prototype.isDataView = function () { + return (this.value instanceof DataView); + }; + Handle.prototype.isDate = function () { + return (this.value instanceof Date); + }; + Handle.prototype.isPromise = function () { + return (this.value instanceof Promise); + }; + Handle.prototype.isBoolean = function () { + return typeof this.value === 'boolean'; + }; + Handle.prototype.isUndefined = function () { + return this.value === undefined; + }; + Handle.prototype.isSymbol = function () { + return typeof this.value === 'symbol'; + }; + Handle.prototype.isNull = function () { + return this.value === null; + }; + Handle.prototype.dispose = function () { + this.value = undefined; + }; + return Handle; + }()); + var ConstHandle = /*#__PURE__*/ (function (_super) { + __extends(ConstHandle, _super); + function ConstHandle(id, value) { + return _super.call(this, id, value) || this; + } + ConstHandle.prototype.dispose = function () { }; + return ConstHandle; + }(Handle)); + var HandleStore = /*#__PURE__*/ (function () { + function HandleStore() { + this._values = [ + undefined, + HandleStore.UNDEFINED, + HandleStore.NULL, + HandleStore.FALSE, + HandleStore.TRUE, + HandleStore.GLOBAL + ]; + this._next = HandleStore.MIN_ID; + } + HandleStore.prototype.push = function (value) { + var h; + var next = this._next; + var values = this._values; + if (next < values.length) { + h = values[next]; + h.value = value; + } + else { + h = new Handle(next, value); + values[next] = h; + } + this._next++; + return h; + }; + HandleStore.prototype.erase = function (start, end) { + this._next = start; + var values = this._values; + for (var i = start; i < end; ++i) { + values[i].dispose(); + } + }; + HandleStore.prototype.get = function (id) { + return this._values[id]; + }; + HandleStore.prototype.swap = function (a, b) { + var values = this._values; + var h = values[a]; + values[a] = values[b]; + values[a].id = Number(a); + values[b] = h; + h.id = Number(b); + }; + HandleStore.prototype.dispose = function () { + this._values.length = HandleStore.MIN_ID; + this._next = HandleStore.MIN_ID; + }; + HandleStore.UNDEFINED = new ConstHandle(1 /* GlobalHandle.UNDEFINED */, undefined); + HandleStore.NULL = new ConstHandle(2 /* GlobalHandle.NULL */, null); + HandleStore.FALSE = new ConstHandle(3 /* GlobalHandle.FALSE */, false); + HandleStore.TRUE = new ConstHandle(4 /* GlobalHandle.TRUE */, true); + HandleStore.GLOBAL = new ConstHandle(5 /* GlobalHandle.GLOBAL */, _global); + HandleStore.MIN_ID = 6; + return HandleStore; + }()); + + var HandleScope = /*#__PURE__*/ (function () { + function HandleScope(handleStore, id, parentScope, start, end) { + if (end === void 0) { end = start; } + this.handleStore = handleStore; + this.id = id; + this.parent = parentScope; + this.child = null; + if (parentScope !== null) + parentScope.child = this; + this.start = start; + this.end = end; + this._escapeCalled = false; + this.callbackInfo = { + thiz: undefined, + data: 0, + args: undefined, + fn: undefined + }; + } + HandleScope.prototype.add = function (value) { + var h = this.handleStore.push(value); + this.end++; + return h; + }; + HandleScope.prototype.addExternal = function (data) { + return this.add(new External(data)); + }; + HandleScope.prototype.dispose = function () { + if (this._escapeCalled) + this._escapeCalled = false; + if (this.start === this.end) + return; + this.handleStore.erase(this.start, this.end); + }; + HandleScope.prototype.escape = function (handle) { + if (this._escapeCalled) + return null; + this._escapeCalled = true; + if (handle < this.start || handle >= this.end) { + return null; + } + this.handleStore.swap(handle, this.start); + var h = this.handleStore.get(this.start); + this.start++; + this.parent.end++; + return h; + }; + HandleScope.prototype.escapeCalled = function () { + return this._escapeCalled; + }; + return HandleScope; + }()); + + var ScopeStore = /*#__PURE__*/ (function () { + function ScopeStore() { + this._rootScope = new HandleScope(null, 0, null, 1, HandleStore.MIN_ID); + this.currentScope = this._rootScope; + this._values = [undefined]; + } + ScopeStore.prototype.get = function (id) { + return this._values[id]; + }; + ScopeStore.prototype.openScope = function (handleStore) { + var currentScope = this.currentScope; + var scope = currentScope.child; + if (scope !== null) { + scope.start = scope.end = currentScope.end; + } + else { + var id = currentScope.id + 1; + scope = new HandleScope(handleStore, id, currentScope, currentScope.end); + this._values[id] = scope; + } + this.currentScope = scope; + return scope; + }; + ScopeStore.prototype.closeScope = function () { + var scope = this.currentScope; + this.currentScope = scope.parent; + scope.dispose(); + }; + ScopeStore.prototype.dispose = function () { + this.currentScope = this._rootScope; + this._values.length = 1; + }; + return ScopeStore; + }()); + + var RefTracker = /*#__PURE__*/ (function () { + function RefTracker() { + this._next = null; + this._prev = null; + } + /** @virtual */ + RefTracker.prototype.dispose = function () { }; + /** @virtual */ + RefTracker.prototype.finalize = function () { }; + RefTracker.prototype.link = function (list) { + this._prev = list; + this._next = list._next; + if (this._next !== null) { + this._next._prev = this; + } + list._next = this; + }; + RefTracker.prototype.unlink = function () { + if (this._prev !== null) { + this._prev._next = this._next; + } + if (this._next !== null) { + this._next._prev = this._prev; + } + this._prev = null; + this._next = null; + }; + RefTracker.finalizeAll = function (list) { + while (list._next !== null) { + list._next.finalize(); + } + }; + return RefTracker; + }()); + + var Finalizer = /*#__PURE__*/ (function () { + function Finalizer(envObject, _finalizeCallback, _finalizeData, _finalizeHint) { + if (_finalizeCallback === void 0) { _finalizeCallback = 0; } + if (_finalizeData === void 0) { _finalizeData = 0; } + if (_finalizeHint === void 0) { _finalizeHint = 0; } + this.envObject = envObject; + this._finalizeCallback = _finalizeCallback; + this._finalizeData = _finalizeData; + this._finalizeHint = _finalizeHint; + this._makeDynCall_vppp = envObject.makeDynCall_vppp; + } + Finalizer.prototype.callback = function () { return this._finalizeCallback; }; + Finalizer.prototype.data = function () { return this._finalizeData; }; + Finalizer.prototype.hint = function () { return this._finalizeHint; }; + Finalizer.prototype.resetEnv = function () { + this.envObject = undefined; + }; + Finalizer.prototype.resetFinalizer = function () { + this._finalizeCallback = 0; + this._finalizeData = 0; + this._finalizeHint = 0; + }; + Finalizer.prototype.callFinalizer = function () { + var finalize_callback = this._finalizeCallback; + var finalize_data = this._finalizeData; + var finalize_hint = this._finalizeHint; + this.resetFinalizer(); + if (!finalize_callback) + return; + var fini = Number(finalize_callback); + if (!this.envObject) { + this._makeDynCall_vppp(fini)(0, finalize_data, finalize_hint); + } + else { + this.envObject.callFinalizer(fini, finalize_data, finalize_hint); + } + }; + Finalizer.prototype.dispose = function () { + this.envObject = undefined; + this._makeDynCall_vppp = undefined; + }; + return Finalizer; + }()); + + var TrackedFinalizer = /*#__PURE__*/ (function (_super) { + __extends(TrackedFinalizer, _super); + function TrackedFinalizer(envObject, finalize_callback, finalize_data, finalize_hint) { + var _this = _super.call(this) || this; + _this._finalizer = new Finalizer(envObject, finalize_callback, finalize_data, finalize_hint); + return _this; + } + TrackedFinalizer.create = function (envObject, finalize_callback, finalize_data, finalize_hint) { + var finalizer = new TrackedFinalizer(envObject, finalize_callback, finalize_data, finalize_hint); + finalizer.link(envObject.finalizing_reflist); + return finalizer; + }; + TrackedFinalizer.prototype.data = function () { + return this._finalizer.data(); + }; + TrackedFinalizer.prototype.dispose = function () { + if (!this._finalizer) + return; + this.unlink(); + this._finalizer.envObject.dequeueFinalizer(this); + this._finalizer.dispose(); + this._finalizer = undefined; + _super.prototype.dispose.call(this); + }; + TrackedFinalizer.prototype.finalize = function () { + this.unlink(); + var error; + var caught = false; + try { + this._finalizer.callFinalizer(); + } + catch (err) { + caught = true; + error = err; + } + this.dispose(); + if (caught) { + throw error; + } + }; + return TrackedFinalizer; + }(RefTracker)); + + function throwNodeApiVersionError(moduleName, moduleApiVersion) { + var errorMessage = "".concat(moduleName, " requires Node-API version ").concat(moduleApiVersion, ", but this version of Node.js only supports version ").concat(NODE_API_SUPPORTED_VERSION_MAX, " add-ons."); + throw new Error(errorMessage); + } + function handleThrow(envObject, value) { + if (envObject.terminatedOrTerminating()) { + return; + } + throw value; + } + var Env = /*#__PURE__*/ (function () { + function Env(ctx, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort) { + this.ctx = ctx; + this.moduleApiVersion = moduleApiVersion; + this.makeDynCall_vppp = makeDynCall_vppp; + this.makeDynCall_vp = makeDynCall_vp; + this.abort = abort; + this.openHandleScopes = 0; + this.instanceData = null; + this.tryCatch = new TryCatch(); + this.refs = 1; + this.reflist = new RefTracker(); + this.finalizing_reflist = new RefTracker(); + this.pendingFinalizers = []; + this.lastError = { + errorCode: 0 /* napi_status.napi_ok */, + engineErrorCode: 0, + engineReserved: 0 + }; + this.inGcFinalizer = false; + this._bindingMap = new WeakMap(); + this.id = 0; + } + /** @virtual */ + Env.prototype.canCallIntoJs = function () { + return true; + }; + Env.prototype.terminatedOrTerminating = function () { + return !this.canCallIntoJs(); + }; + Env.prototype.ref = function () { + this.refs++; + }; + Env.prototype.unref = function () { + this.refs--; + if (this.refs === 0) { + this.dispose(); + } + }; + Env.prototype.ensureHandle = function (value) { + return this.ctx.ensureHandle(value); + }; + Env.prototype.ensureHandleId = function (value) { + return this.ensureHandle(value).id; + }; + Env.prototype.clearLastError = function () { + var lastError = this.lastError; + if (lastError.errorCode !== 0 /* napi_status.napi_ok */) + lastError.errorCode = 0 /* napi_status.napi_ok */; + if (lastError.engineErrorCode !== 0) + lastError.engineErrorCode = 0; + if (lastError.engineReserved !== 0) + lastError.engineReserved = 0; + return 0 /* napi_status.napi_ok */; + }; + Env.prototype.setLastError = function (error_code, engine_error_code, engine_reserved) { + if (engine_error_code === void 0) { engine_error_code = 0; } + if (engine_reserved === void 0) { engine_reserved = 0; } + var lastError = this.lastError; + if (lastError.errorCode !== error_code) + lastError.errorCode = error_code; + if (lastError.engineErrorCode !== engine_error_code) + lastError.engineErrorCode = engine_error_code; + if (lastError.engineReserved !== engine_reserved) + lastError.engineReserved = engine_reserved; + return error_code; + }; + Env.prototype.getReturnStatus = function () { + return !this.tryCatch.hasCaught() ? 0 /* napi_status.napi_ok */ : this.setLastError(10 /* napi_status.napi_pending_exception */); + }; + Env.prototype.callIntoModule = function (fn, handleException) { + if (handleException === void 0) { handleException = handleThrow; } + var openHandleScopesBefore = this.openHandleScopes; + this.clearLastError(); + var r = fn(this); + if (openHandleScopesBefore !== this.openHandleScopes) { + this.abort('open_handle_scopes != open_handle_scopes_before'); + } + if (this.tryCatch.hasCaught()) { + var err = this.tryCatch.extractException(); + handleException(this, err); + } + return r; + }; + Env.prototype.invokeFinalizerFromGC = function (finalizer) { + if (this.moduleApiVersion !== NAPI_VERSION_EXPERIMENTAL) { + this.enqueueFinalizer(finalizer); + } + else { + var saved = this.inGcFinalizer; + this.inGcFinalizer = true; + try { + finalizer.finalize(); + } + finally { + this.inGcFinalizer = saved; + } + } + }; + Env.prototype.checkGCAccess = function () { + if (this.moduleApiVersion === NAPI_VERSION_EXPERIMENTAL && this.inGcFinalizer) { + this.abort('Finalizer is calling a function that may affect GC state.\n' + + 'The finalizers are run directly from GC and must not affect GC ' + + 'state.\n' + + 'Use `node_api_post_finalizer` from inside of the finalizer to work ' + + 'around this issue.\n' + + 'It schedules the call as a new task in the event loop.'); + } + }; + /** @virtual */ + Env.prototype.enqueueFinalizer = function (finalizer) { + if (this.pendingFinalizers.indexOf(finalizer) === -1) { + this.pendingFinalizers.push(finalizer); + } + }; + /** @virtual */ + Env.prototype.dequeueFinalizer = function (finalizer) { + var index = this.pendingFinalizers.indexOf(finalizer); + if (index !== -1) { + this.pendingFinalizers.splice(index, 1); + } + }; + /** @virtual */ + Env.prototype.deleteMe = function () { + RefTracker.finalizeAll(this.finalizing_reflist); + RefTracker.finalizeAll(this.reflist); + this.tryCatch.extractException(); + this.ctx.envStore.remove(this.id); + }; + Env.prototype.dispose = function () { + if (this.id === 0) + return; + this.deleteMe(); + this.finalizing_reflist.dispose(); + this.reflist.dispose(); + this.id = 0; + }; + Env.prototype.initObjectBinding = function (value) { + var binding = { + wrapped: 0, + tag: null + }; + this._bindingMap.set(value, binding); + return binding; + }; + Env.prototype.getObjectBinding = function (value) { + if (this._bindingMap.has(value)) { + return this._bindingMap.get(value); + } + return this.initObjectBinding(value); + }; + Env.prototype.setInstanceData = function (data, finalize_cb, finalize_hint) { + if (this.instanceData) { + this.instanceData.dispose(); + } + this.instanceData = TrackedFinalizer.create(this, finalize_cb, data, finalize_hint); + }; + Env.prototype.getInstanceData = function () { + return this.instanceData ? this.instanceData.data() : 0; + }; + return Env; + }()); + var NodeEnv = /*#__PURE__*/ (function (_super) { + __extends(NodeEnv, _super); + function NodeEnv(ctx, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding) { + var _this = _super.call(this, ctx, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort) || this; + _this.filename = filename; + _this.nodeBinding = nodeBinding; + _this.destructing = false; + _this.finalizationScheduled = false; + return _this; + } + NodeEnv.prototype.deleteMe = function () { + this.destructing = true; + this.drainFinalizerQueue(); + _super.prototype.deleteMe.call(this); + }; + NodeEnv.prototype.canCallIntoJs = function () { + return _super.prototype.canCallIntoJs.call(this) && this.ctx.canCallIntoJs(); + }; + NodeEnv.prototype.triggerFatalException = function (err) { + if (this.nodeBinding) { + this.nodeBinding.napi.fatalException(err); + } + else { + if (typeof process === 'object' && process !== null && typeof process._fatalException === 'function') { + var handled = process._fatalException(err); + if (!handled) { + console.error(err); + process.exit(1); + } + } + else { + throw err; + } + } + }; + NodeEnv.prototype.callbackIntoModule = function (enforceUncaughtExceptionPolicy, fn) { + return this.callIntoModule(fn, function (envObject, err) { + if (envObject.terminatedOrTerminating()) { + return; + } + var hasProcess = typeof process === 'object' && process !== null; + var hasForceFlag = hasProcess ? Boolean(process.execArgv && (process.execArgv.indexOf('--force-node-api-uncaught-exceptions-policy') !== -1)) : false; + if (envObject.moduleApiVersion < 10 && !hasForceFlag && !enforceUncaughtExceptionPolicy) { + var warn = hasProcess && typeof process.emitWarning === 'function' + ? process.emitWarning + : function (warning, type, code) { + if (warning instanceof Error) { + console.warn(warning.toString()); + } + else { + var prefix = code ? "[".concat(code, "] ") : ''; + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing + console.warn("".concat(prefix).concat(type || 'Warning', ": ").concat(warning)); + } + }; + warn('Uncaught Node-API callback exception detected, please run node with option --force-node-api-uncaught-exceptions-policy=true to handle those exceptions properly.', 'DeprecationWarning', 'DEP0168'); + return; + } + envObject.triggerFatalException(err); + }); + }; + NodeEnv.prototype.callFinalizer = function (cb, data, hint) { + this.callFinalizerInternal(1, cb, data, hint); + }; + NodeEnv.prototype.callFinalizerInternal = function (forceUncaught, cb, data, hint) { + var f = this.makeDynCall_vppp(cb); + var env = this.id; + var scope = this.ctx.openScope(this); + try { + this.callbackIntoModule(Boolean(forceUncaught), function () { f(env, data, hint); }); + } + finally { + this.ctx.closeScope(this, scope); + } + }; + NodeEnv.prototype.enqueueFinalizer = function (finalizer) { + var _this = this; + _super.prototype.enqueueFinalizer.call(this, finalizer); + if (!this.finalizationScheduled && !this.destructing) { + this.finalizationScheduled = true; + this.ref(); + _setImmediate(function () { + _this.finalizationScheduled = false; + _this.unref(); + _this.drainFinalizerQueue(); + }); + } + }; + NodeEnv.prototype.drainFinalizerQueue = function () { + while (this.pendingFinalizers.length > 0) { + var refTracker = this.pendingFinalizers.shift(); + refTracker.finalize(); + } + }; + return NodeEnv; + }(Env)); + function newEnv(ctx, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding) { + moduleApiVersion = typeof moduleApiVersion !== 'number' ? NODE_API_DEFAULT_MODULE_API_VERSION : moduleApiVersion; + // Validate module_api_version. + if (moduleApiVersion < NODE_API_DEFAULT_MODULE_API_VERSION) { + moduleApiVersion = NODE_API_DEFAULT_MODULE_API_VERSION; + } + else if (moduleApiVersion > NODE_API_SUPPORTED_VERSION_MAX && moduleApiVersion !== NAPI_VERSION_EXPERIMENTAL) { + throwNodeApiVersionError(filename, moduleApiVersion); + } + var env = new NodeEnv(ctx, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding); + ctx.envStore.add(env); + ctx.addCleanupHook(env, function () { env.unref(); }, 0); + return env; + } + + var EmnapiError = /*#__PURE__*/ (function (_super) { + __extends(EmnapiError, _super); + function EmnapiError(message) { + var _newTarget = this.constructor; + var _this = _super.call(this, message) || this; + var ErrorConstructor = _newTarget; + var proto = ErrorConstructor.prototype; + if (!(_this instanceof EmnapiError)) { + var setPrototypeOf = Object.setPrototypeOf; + if (typeof setPrototypeOf === 'function') { + setPrototypeOf.call(Object, _this, proto); + } + else { + // eslint-disable-next-line no-proto + _this.__proto__ = proto; + } + if (typeof Error.captureStackTrace === 'function') { + Error.captureStackTrace(_this, ErrorConstructor); + } + } + return _this; + } + return EmnapiError; + }(Error)); + Object.defineProperty(EmnapiError.prototype, 'name', { + configurable: true, + writable: true, + value: 'EmnapiError' + }); + var NotSupportWeakRefError = /*#__PURE__*/ (function (_super) { + __extends(NotSupportWeakRefError, _super); + function NotSupportWeakRefError(api, message) { + return _super.call(this, "".concat(api, ": The current runtime does not support \"FinalizationRegistry\" and \"WeakRef\".").concat(message ? " ".concat(message) : '')) || this; + } + return NotSupportWeakRefError; + }(EmnapiError)); + Object.defineProperty(NotSupportWeakRefError.prototype, 'name', { + configurable: true, + writable: true, + value: 'NotSupportWeakRefError' + }); + var NotSupportBufferError = /*#__PURE__*/ (function (_super) { + __extends(NotSupportBufferError, _super); + function NotSupportBufferError(api, message) { + return _super.call(this, "".concat(api, ": The current runtime does not support \"Buffer\". Consider using buffer polyfill to make sure `globalThis.Buffer` is defined.").concat(message ? " ".concat(message) : '')) || this; + } + return NotSupportBufferError; + }(EmnapiError)); + Object.defineProperty(NotSupportBufferError.prototype, 'name', { + configurable: true, + writable: true, + value: 'NotSupportBufferError' + }); + + var StrongRef = /*#__PURE__*/ (function () { + function StrongRef(value) { + this._value = value; + } + StrongRef.prototype.deref = function () { + return this._value; + }; + StrongRef.prototype.dispose = function () { + this._value = undefined; + }; + return StrongRef; + }()); + var Persistent = /*#__PURE__*/ (function () { + function Persistent(value) { + this._ref = new StrongRef(value); + } + Persistent.prototype.setWeak = function (param, callback) { + if (!supportFinalizer || this._ref === undefined || this._ref instanceof WeakRef) + return; + var value = this._ref.deref(); + try { + Persistent._registry.register(value, this, this); + var weakRef = new WeakRef(value); + this._ref.dispose(); + this._ref = weakRef; + this._param = param; + this._callback = callback; + } + catch (err) { + if (typeof value === 'symbol') ; + else { + throw err; + } + } + }; + Persistent.prototype.clearWeak = function () { + if (!supportFinalizer || this._ref === undefined) + return; + if (this._ref instanceof WeakRef) { + try { + Persistent._registry.unregister(this); + } + catch (_) { } + this._param = undefined; + this._callback = undefined; + var value = this._ref.deref(); + if (value === undefined) { + this._ref = value; + } + else { + this._ref = new StrongRef(value); + } + } + }; + Persistent.prototype.reset = function () { + if (supportFinalizer) { + try { + Persistent._registry.unregister(this); + } + catch (_) { } + } + this._param = undefined; + this._callback = undefined; + if (this._ref instanceof StrongRef) { + this._ref.dispose(); + } + this._ref = undefined; + }; + Persistent.prototype.isEmpty = function () { + return this._ref === undefined; + }; + Persistent.prototype.deref = function () { + if (this._ref === undefined) + return undefined; + return this._ref.deref(); + }; + Persistent._registry = supportFinalizer + ? new FinalizationRegistry(function (value) { + value._ref = undefined; + var callback = value._callback; + var param = value._param; + value._callback = undefined; + value._param = undefined; + if (typeof callback === 'function') { + callback(param); + } + }) + : undefined; + return Persistent; + }()); + + exports.ReferenceOwnership = void 0; + (function (ReferenceOwnership) { + ReferenceOwnership[ReferenceOwnership["kRuntime"] = 0] = "kRuntime"; + ReferenceOwnership[ReferenceOwnership["kUserland"] = 1] = "kUserland"; + })(exports.ReferenceOwnership || (exports.ReferenceOwnership = {})); + function canBeHeldWeakly(value) { + return value.isObject() || value.isFunction() || value.isSymbol(); + } + var Reference = /*#__PURE__*/ (function (_super) { + __extends(Reference, _super); + function Reference(envObject, handle_id, initialRefcount, ownership) { + var _this = _super.call(this) || this; + _this.envObject = envObject; + _this._refcount = initialRefcount; + _this._ownership = ownership; + var handle = envObject.ctx.handleStore.get(handle_id); + _this.canBeWeak = canBeHeldWeakly(handle); + _this.persistent = new Persistent(handle.value); + _this.id = 0; + if (initialRefcount === 0) { + _this._setWeak(); + } + return _this; + } + Reference.weakCallback = function (ref) { + ref.persistent.reset(); + ref.invokeFinalizerFromGC(); + }; + Reference.create = function (envObject, handle_id, initialRefcount, ownership, _unused1, _unused2, _unused3) { + var ref = new Reference(envObject, handle_id, initialRefcount, ownership); + envObject.ctx.refStore.add(ref); + ref.link(envObject.reflist); + return ref; + }; + Reference.prototype.ref = function () { + if (this.persistent.isEmpty()) { + return 0; + } + if (++this._refcount === 1 && this.canBeWeak) { + this.persistent.clearWeak(); + } + return this._refcount; + }; + Reference.prototype.unref = function () { + if (this.persistent.isEmpty() || this._refcount === 0) { + return 0; + } + if (--this._refcount === 0) { + this._setWeak(); + } + return this._refcount; + }; + Reference.prototype.get = function (envObject) { + if (envObject === void 0) { envObject = this.envObject; } + if (this.persistent.isEmpty()) { + return 0; + } + var obj = this.persistent.deref(); + var handle = envObject.ensureHandle(obj); + return handle.id; + }; + /** @virtual */ + Reference.prototype.resetFinalizer = function () { }; + /** @virtual */ + Reference.prototype.data = function () { return 0; }; + Reference.prototype.refcount = function () { return this._refcount; }; + Reference.prototype.ownership = function () { return this._ownership; }; + /** @virtual */ + Reference.prototype.callUserFinalizer = function () { }; + /** @virtual */ + Reference.prototype.invokeFinalizerFromGC = function () { + this.finalize(); + }; + Reference.prototype._setWeak = function () { + if (this.canBeWeak) { + this.persistent.setWeak(this, Reference.weakCallback); + } + else { + this.persistent.reset(); + } + }; + Reference.prototype.finalize = function () { + this.persistent.reset(); + var deleteMe = this._ownership === exports.ReferenceOwnership.kRuntime; + this.unlink(); + this.callUserFinalizer(); + if (deleteMe) { + this.dispose(); + } + }; + Reference.prototype.dispose = function () { + if (this.id === 0) + return; + this.unlink(); + this.persistent.reset(); + this.envObject.ctx.refStore.remove(this.id); + _super.prototype.dispose.call(this); + this.envObject = undefined; + this.id = 0; + }; + return Reference; + }(RefTracker)); + var ReferenceWithData = /*#__PURE__*/ (function (_super) { + __extends(ReferenceWithData, _super); + function ReferenceWithData(envObject, value, initialRefcount, ownership, _data) { + var _this = _super.call(this, envObject, value, initialRefcount, ownership) || this; + _this._data = _data; + return _this; + } + ReferenceWithData.create = function (envObject, value, initialRefcount, ownership, data) { + var reference = new ReferenceWithData(envObject, value, initialRefcount, ownership, data); + envObject.ctx.refStore.add(reference); + reference.link(envObject.reflist); + return reference; + }; + ReferenceWithData.prototype.data = function () { + return this._data; + }; + return ReferenceWithData; + }(Reference)); + var ReferenceWithFinalizer = /*#__PURE__*/ (function (_super) { + __extends(ReferenceWithFinalizer, _super); + function ReferenceWithFinalizer(envObject, value, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint) { + var _this = _super.call(this, envObject, value, initialRefcount, ownership) || this; + _this._finalizer = new Finalizer(envObject, finalize_callback, finalize_data, finalize_hint); + return _this; + } + ReferenceWithFinalizer.create = function (envObject, value, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint) { + var reference = new ReferenceWithFinalizer(envObject, value, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint); + envObject.ctx.refStore.add(reference); + reference.link(envObject.finalizing_reflist); + return reference; + }; + ReferenceWithFinalizer.prototype.resetFinalizer = function () { + this._finalizer.resetFinalizer(); + }; + ReferenceWithFinalizer.prototype.data = function () { + return this._finalizer.data(); + }; + ReferenceWithFinalizer.prototype.callUserFinalizer = function () { + this._finalizer.callFinalizer(); + }; + ReferenceWithFinalizer.prototype.invokeFinalizerFromGC = function () { + this._finalizer.envObject.invokeFinalizerFromGC(this); + }; + ReferenceWithFinalizer.prototype.dispose = function () { + if (!this._finalizer) + return; + this._finalizer.envObject.dequeueFinalizer(this); + this._finalizer.dispose(); + _super.prototype.dispose.call(this); + this._finalizer = undefined; + }; + return ReferenceWithFinalizer; + }(Reference)); + + var Deferred = /*#__PURE__*/ (function () { + function Deferred(ctx, value) { + this.id = 0; + this.ctx = ctx; + this.value = value; + } + Deferred.create = function (ctx, value) { + var deferred = new Deferred(ctx, value); + ctx.deferredStore.add(deferred); + return deferred; + }; + Deferred.prototype.resolve = function (value) { + this.value.resolve(value); + this.dispose(); + }; + Deferred.prototype.reject = function (reason) { + this.value.reject(reason); + this.dispose(); + }; + Deferred.prototype.dispose = function () { + this.ctx.deferredStore.remove(this.id); + this.id = 0; + this.value = null; + this.ctx = null; + }; + return Deferred; + }()); + + var Store = /*#__PURE__*/ (function () { + function Store() { + this._values = [undefined]; + this._values.length = 4; + this._size = 1; + this._freeList = []; + } + Store.prototype.add = function (value) { + var id; + if (this._freeList.length) { + id = this._freeList.shift(); + } + else { + id = this._size; + this._size++; + var capacity = this._values.length; + if (id >= capacity) { + this._values.length = capacity + (capacity >> 1) + 16; + } + } + value.id = id; + this._values[id] = value; + }; + Store.prototype.get = function (id) { + return this._values[id]; + }; + Store.prototype.has = function (id) { + return this._values[id] !== undefined; + }; + Store.prototype.remove = function (id) { + var value = this._values[id]; + if (value) { + value.id = 0; + this._values[id] = undefined; + this._freeList.push(Number(id)); + } + }; + Store.prototype.dispose = function () { + for (var i = 1; i < this._size; ++i) { + var value = this._values[i]; + value === null || value === void 0 ? void 0 : value.dispose(); + } + this._values = [undefined]; + this._size = 1; + this._freeList = []; + }; + return Store; + }()); + + var kMaxReasonableBytes = BigInt(1) << BigInt(60); + var kMinReasonableBytes = -kMaxReasonableBytes; + var ExternalMemory = /*#__PURE__*/ (function () { + function ExternalMemory(onChange) { + this.total = BigInt(0); + this.onChange = onChange !== null && onChange !== void 0 ? onChange : null; + } + ExternalMemory.prototype.adjust = function (changeInBytes) { + changeInBytes = BigInt(changeInBytes); + if (!(kMinReasonableBytes <= changeInBytes && changeInBytes < kMaxReasonableBytes)) { + throw new RangeError("changeInBytes ".concat(changeInBytes, " is out of reasonable range")); + } + var old = this.total; + this.total += changeInBytes; + var amount = this.total; + var onChange = this.onChange; + if (changeInBytes) { + onChange === null || onChange === void 0 ? void 0 : onChange(amount, old, changeInBytes); + } + return amount; + }; + return ExternalMemory; + }()); + + var CleanupHookCallback = /*#__PURE__*/ (function () { + function CleanupHookCallback(envObject, fn, arg, order) { + this.envObject = envObject; + this.fn = fn; + this.arg = arg; + this.order = order; + } + return CleanupHookCallback; + }()); + var CleanupQueue = /*#__PURE__*/ (function () { + function CleanupQueue() { + this._cleanupHooks = []; + this._cleanupHookCounter = 0; + } + CleanupQueue.prototype.empty = function () { + return this._cleanupHooks.length === 0; + }; + CleanupQueue.prototype.add = function (envObject, fn, arg) { + if (this._cleanupHooks.filter(function (hook) { return (hook.envObject === envObject && hook.fn === fn && hook.arg === arg); }).length > 0) { + throw new Error('Can not add same fn and arg twice'); + } + this._cleanupHooks.push(new CleanupHookCallback(envObject, fn, arg, this._cleanupHookCounter++)); + }; + CleanupQueue.prototype.remove = function (envObject, fn, arg) { + for (var i = 0; i < this._cleanupHooks.length; ++i) { + var hook = this._cleanupHooks[i]; + if (hook.envObject === envObject && hook.fn === fn && hook.arg === arg) { + this._cleanupHooks.splice(i, 1); + return; + } + } + }; + CleanupQueue.prototype.drain = function () { + var hooks = this._cleanupHooks.slice(); + hooks.sort(function (a, b) { return (b.order - a.order); }); + for (var i = 0; i < hooks.length; ++i) { + var cb = hooks[i]; + if (typeof cb.fn === 'number') { + cb.envObject.makeDynCall_vp(cb.fn)(cb.arg); + } + else { + cb.fn(cb.arg); + } + this._cleanupHooks.splice(this._cleanupHooks.indexOf(cb), 1); + } + }; + CleanupQueue.prototype.dispose = function () { + this._cleanupHooks.length = 0; + this._cleanupHookCounter = 0; + }; + return CleanupQueue; + }()); + var NodejsWaitingRequestCounter = /*#__PURE__*/ (function () { + function NodejsWaitingRequestCounter() { + this.refHandle = new _MessageChannel().port1; + this.count = 0; + } + NodejsWaitingRequestCounter.prototype.increase = function () { + if (this.count === 0) { + if (this.refHandle.ref) { + this.refHandle.ref(); + } + } + this.count++; + }; + NodejsWaitingRequestCounter.prototype.decrease = function () { + if (this.count === 0) + return; + if (this.count === 1) { + if (this.refHandle.unref) { + this.refHandle.unref(); + } + } + this.count--; + }; + return NodejsWaitingRequestCounter; + }()); + var Context = /*#__PURE__*/ (function () { + function Context(options) { + var _this = this; + this._isStopping = false; + this._canCallIntoJs = true; + this._suppressDestroy = false; + this.envStore = new Store(); + this.scopeStore = new ScopeStore(); + this.refStore = new Store(); + this.deferredStore = new Store(); + this.handleStore = new HandleStore(); + this.feature = { + supportReflect: supportReflect, + supportFinalizer: supportFinalizer, + supportWeakSymbol: supportWeakSymbol, + supportBigInt: supportBigInt, + supportNewFunction: supportNewFunction, + canSetFunctionName: canSetFunctionName, + setImmediate: _setImmediate, + Buffer: _Buffer, + MessageChannel: _MessageChannel + }; + this.cleanupQueue = new CleanupQueue(); + this._externalMemory = new ExternalMemory(options === null || options === void 0 ? void 0 : options.onExternalMemoryChange); + if (typeof process === 'object' && process !== null && typeof process.once === 'function') { + this.refCounter = new NodejsWaitingRequestCounter(); + process.once('beforeExit', function () { + if (!_this._suppressDestroy) { + _this.destroy(); + } + }); + } + } + /** + * Suppress the destroy on `beforeExit` event in Node.js. + * Call this method if you want to keep the context and + * all associated {@link Env | Env} alive, + * this also means that cleanup hooks will not be called. + * After call this method, you should call + * {@link Context.destroy | `Context.prototype.destroy`} method manually. + */ + Context.prototype.suppressDestroy = function () { + this._suppressDestroy = true; + }; + // eslint-disable-next-line @typescript-eslint/explicit-function-return-type + Context.prototype.getRuntimeVersions = function () { + return { + version: version, + NODE_API_SUPPORTED_VERSION_MAX: NODE_API_SUPPORTED_VERSION_MAX, + NAPI_VERSION_EXPERIMENTAL: NAPI_VERSION_EXPERIMENTAL, + NODE_API_DEFAULT_MODULE_API_VERSION: NODE_API_DEFAULT_MODULE_API_VERSION + }; + }; + Context.prototype.createNotSupportWeakRefError = function (api, message) { + return new NotSupportWeakRefError(api, message); + }; + Context.prototype.createNotSupportBufferError = function (api, message) { + return new NotSupportBufferError(api, message); + }; + Context.prototype.createReference = function (envObject, handle_id, initialRefcount, ownership) { + return Reference.create(envObject, handle_id, initialRefcount, ownership); + }; + Context.prototype.createReferenceWithData = function (envObject, handle_id, initialRefcount, ownership, data) { + return ReferenceWithData.create(envObject, handle_id, initialRefcount, ownership, data); + }; + Context.prototype.createReferenceWithFinalizer = function (envObject, handle_id, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint) { + if (finalize_callback === void 0) { finalize_callback = 0; } + if (finalize_data === void 0) { finalize_data = 0; } + if (finalize_hint === void 0) { finalize_hint = 0; } + return ReferenceWithFinalizer.create(envObject, handle_id, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint); + }; + Context.prototype.createDeferred = function (value) { + return Deferred.create(this, value); + }; + Context.prototype.adjustAmountOfExternalAllocatedMemory = function (changeInBytes) { + return this._externalMemory.adjust(changeInBytes); + }; + Context.prototype.createEnv = function (filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding) { + return newEnv(this, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding); + }; + Context.prototype.createTrackedFinalizer = function (envObject, finalize_callback, finalize_data, finalize_hint) { + return TrackedFinalizer.create(envObject, finalize_callback, finalize_data, finalize_hint); + }; + Context.prototype.getCurrentScope = function () { + return this.scopeStore.currentScope; + }; + Context.prototype.addToCurrentScope = function (value) { + return this.scopeStore.currentScope.add(value); + }; + Context.prototype.openScope = function (envObject) { + var scope = this.scopeStore.openScope(this.handleStore); + if (envObject) + envObject.openHandleScopes++; + return scope; + }; + Context.prototype.closeScope = function (envObject, _scope) { + if (envObject && envObject.openHandleScopes === 0) + return; + this.scopeStore.closeScope(); + if (envObject) + envObject.openHandleScopes--; + }; + Context.prototype.ensureHandle = function (value) { + switch (value) { + case undefined: return HandleStore.UNDEFINED; + case null: return HandleStore.NULL; + case true: return HandleStore.TRUE; + case false: return HandleStore.FALSE; + case _global: return HandleStore.GLOBAL; + } + return this.addToCurrentScope(value); + }; + Context.prototype.addCleanupHook = function (envObject, fn, arg) { + this.cleanupQueue.add(envObject, fn, arg); + }; + Context.prototype.removeCleanupHook = function (envObject, fn, arg) { + this.cleanupQueue.remove(envObject, fn, arg); + }; + Context.prototype.runCleanup = function () { + while (!this.cleanupQueue.empty()) { + this.cleanupQueue.drain(); + } + }; + Context.prototype.increaseWaitingRequestCounter = function () { + var _a; + (_a = this.refCounter) === null || _a === void 0 ? void 0 : _a.increase(); + }; + Context.prototype.decreaseWaitingRequestCounter = function () { + var _a; + (_a = this.refCounter) === null || _a === void 0 ? void 0 : _a.decrease(); + }; + Context.prototype.setCanCallIntoJs = function (value) { + this._canCallIntoJs = value; + }; + Context.prototype.setStopping = function (value) { + this._isStopping = value; + }; + Context.prototype.canCallIntoJs = function () { + return this._canCallIntoJs && !this._isStopping; + }; + /** + * Destroy the context and call cleanup hooks. + * Associated {@link Env | Env} will be destroyed. + */ + Context.prototype.destroy = function () { + this.setStopping(true); + this.setCanCallIntoJs(false); + this.runCleanup(); + }; + return Context; + }()); + var defaultContext; + function createContext(options) { + return new Context(options); + } + function getDefaultContext() { + if (!defaultContext) { + defaultContext = createContext(); + } + return defaultContext; + } + + exports.ConstHandle = ConstHandle; + exports.Context = Context; + exports.Deferred = Deferred; + exports.EmnapiError = EmnapiError; + exports.Env = Env; + exports.External = External; + exports.Finalizer = Finalizer; + exports.Handle = Handle; + exports.HandleScope = HandleScope; + exports.HandleStore = HandleStore; + exports.NAPI_VERSION_EXPERIMENTAL = NAPI_VERSION_EXPERIMENTAL; + exports.NODE_API_DEFAULT_MODULE_API_VERSION = NODE_API_DEFAULT_MODULE_API_VERSION; + exports.NODE_API_SUPPORTED_VERSION_MAX = NODE_API_SUPPORTED_VERSION_MAX; + exports.NODE_API_SUPPORTED_VERSION_MIN = NODE_API_SUPPORTED_VERSION_MIN; + exports.NodeEnv = NodeEnv; + exports.NotSupportBufferError = NotSupportBufferError; + exports.NotSupportWeakRefError = NotSupportWeakRefError; + exports.Persistent = Persistent; + exports.RefTracker = RefTracker; + exports.Reference = Reference; + exports.ReferenceWithData = ReferenceWithData; + exports.ReferenceWithFinalizer = ReferenceWithFinalizer; + exports.ScopeStore = ScopeStore; + exports.Store = Store; + exports.TrackedFinalizer = TrackedFinalizer; + exports.TryCatch = TryCatch; + exports.createContext = createContext; + exports.getDefaultContext = getDefaultContext; + exports.getExternalValue = getExternalValue; + exports.isExternal = isExternal; + exports.isReferenceType = isReferenceType; + exports.version = version; + +})); diff --git a/node_modules/@emnapi/runtime/dist/emnapi.min.d.mts b/node_modules/@emnapi/runtime/dist/emnapi.min.d.mts new file mode 100644 index 00000000..c2404e36 --- /dev/null +++ b/node_modules/@emnapi/runtime/dist/emnapi.min.d.mts @@ -0,0 +1,671 @@ +export declare type Ptr = number | bigint + +export declare interface IBuffer extends Uint8Array {} +export declare interface BufferCtor { + readonly prototype: IBuffer + /** @deprecated */ + new (...args: any[]): IBuffer + from: { + (buffer: ArrayBufferLike): IBuffer + (buffer: ArrayBufferLike, byteOffset: number, length: number): IBuffer + } + alloc: (size: number) => IBuffer + isBuffer: (obj: unknown) => obj is IBuffer +} + +export declare const enum GlobalHandle { + UNDEFINED = 1, + NULL, + FALSE, + TRUE, + GLOBAL +} + +export declare const enum Version { + NODE_API_SUPPORTED_VERSION_MIN = 1, + NODE_API_DEFAULT_MODULE_API_VERSION = 8, + NODE_API_SUPPORTED_VERSION_MAX = 10, + NAPI_VERSION_EXPERIMENTAL = 2147483647 // INT_MAX +} +// eslint-disable-next-line @typescript-eslint/no-unused-vars +export declare type Pointer = number +// eslint-disable-next-line @typescript-eslint/no-unused-vars +export declare type PointerPointer = number +export declare type FunctionPointer any> = Pointer +export declare type Const = T + +export declare type void_p = Pointer +export declare type void_pp = Pointer +export declare type bool = number +export declare type char = number +export declare type char_p = Pointer +export declare type unsigned_char = number +export declare type const_char = Const +export declare type const_char_p = Pointer +export declare type char16_t_p = number +export declare type const_char16_t_p = number + +export declare type short = number +export declare type unsigned_short = number +export declare type int = number +export declare type unsigned_int = number +export declare type long = number +export declare type unsigned_long = number +export declare type long_long = bigint +export declare type unsigned_long_long = bigint +export declare type float = number +export declare type double = number +export declare type long_double = number +export declare type size_t = number + +export declare type int8_t = number +export declare type uint8_t = number +export declare type int16_t = number +export declare type uint16_t = number +export declare type int32_t = number +export declare type uint32_t = number +export declare type int64_t = bigint +export declare type uint64_t = bigint +export declare type napi_env = Pointer + +export declare type napi_value = Pointer +export declare type napi_ref = Pointer +export declare type napi_deferred = Pointer +export declare type napi_handle_scope = Pointer +export declare type napi_escapable_handle_scope = Pointer + +export declare type napi_addon_register_func = FunctionPointer<(env: napi_env, exports: napi_value) => napi_value> + +export declare type napi_callback_info = Pointer +export declare type napi_callback = FunctionPointer<(env: napi_env, info: napi_callback_info) => napi_value> + +export declare interface napi_extended_error_info { + error_message: const_char_p + engine_reserved: void_p + engine_error_code: uint32_t + error_code: napi_status +} + +export declare interface napi_property_descriptor { + // One of utf8name or name should be NULL. + utf8name: const_char_p + name: napi_value + + method: napi_callback + getter: napi_callback + setter: napi_callback + value: napi_value + /* napi_property_attributes */ + attributes: number + data: void_p +} + +export declare type napi_finalize = FunctionPointer<( + env: napi_env, + finalize_data: void_p, + finalize_hint: void_p +) => void> + +export declare interface node_module { + nm_version: int32_t + nm_flags: uint32_t + nm_filename: Pointer + nm_register_func: napi_addon_register_func + nm_modname: Pointer + nm_priv: Pointer + reserved: PointerPointer +} + +export declare interface napi_node_version { + major: uint32_t + minor: uint32_t + patch: uint32_t + release: const_char_p +} + +export declare interface emnapi_emscripten_version { + major: uint32_t + minor: uint32_t + patch: uint32_t +} + +export declare const enum napi_status { + napi_ok, + napi_invalid_arg, + napi_object_expected, + napi_string_expected, + napi_name_expected, + napi_function_expected, + napi_number_expected, + napi_boolean_expected, + napi_array_expected, + napi_generic_failure, + napi_pending_exception, + napi_cancelled, + napi_escape_called_twice, + napi_handle_scope_mismatch, + napi_callback_scope_mismatch, + napi_queue_full, + napi_closing, + napi_bigint_expected, + napi_date_expected, + napi_arraybuffer_expected, + napi_detachable_arraybuffer_expected, + napi_would_deadlock, // unused + napi_no_external_buffers_allowed, + napi_cannot_run_js +} + +export declare const enum napi_property_attributes { + napi_default = 0, + napi_writable = 1 << 0, + napi_enumerable = 1 << 1, + napi_configurable = 1 << 2, + + // Used with napi_define_class to distinguish static properties + // from instance properties. Ignored by napi_define_properties. + napi_static = 1 << 10, + + /// #ifdef NAPI_EXPERIMENTAL + // Default for class methods. + napi_default_method = napi_writable | napi_configurable, + + // Default for object properties, like in JS obj[prop]. + napi_default_jsproperty = napi_writable | napi_enumerable | napi_configurable + /// #endif // NAPI_EXPERIMENTAL +} + +export declare const enum napi_valuetype { + napi_undefined, + napi_null, + napi_boolean, + napi_number, + napi_string, + napi_symbol, + napi_object, + napi_function, + napi_external, + napi_bigint +} + +export declare const enum napi_typedarray_type { + napi_int8_array, + napi_uint8_array, + napi_uint8_clamped_array, + napi_int16_array, + napi_uint16_array, + napi_int32_array, + napi_uint32_array, + napi_float32_array, + napi_float64_array, + napi_bigint64_array, + napi_biguint64_array, + napi_float16_array, +} + +export declare const enum napi_key_collection_mode { + napi_key_include_prototypes, + napi_key_own_only +} + +export declare const enum napi_key_filter { + napi_key_all_properties = 0, + napi_key_writable = 1, + napi_key_enumerable = 1 << 1, + napi_key_configurable = 1 << 2, + napi_key_skip_strings = 1 << 3, + napi_key_skip_symbols = 1 << 4 +} + +export declare const enum napi_key_conversion { + napi_key_keep_numbers, + napi_key_numbers_to_strings +} + +export declare const enum emnapi_memory_view_type { + emnapi_int8_array, + emnapi_uint8_array, + emnapi_uint8_clamped_array, + emnapi_int16_array, + emnapi_uint16_array, + emnapi_int32_array, + emnapi_uint32_array, + emnapi_float32_array, + emnapi_float64_array, + emnapi_bigint64_array, + emnapi_biguint64_array, + emnapi_float16_array, + emnapi_data_view = -1, + emnapi_buffer = -2 +} + +export declare const enum napi_threadsafe_function_call_mode { + napi_tsfn_nonblocking, + napi_tsfn_blocking +} + +export declare const enum napi_threadsafe_function_release_mode { + napi_tsfn_release, + napi_tsfn_abort +} +export declare type CleanupHookCallbackFunction = number | ((arg: number) => void); + +export declare class ConstHandle extends Handle { + constructor(id: number, value: S); + dispose(): void; +} + +export declare class Context { + private _isStopping; + private _canCallIntoJs; + private _suppressDestroy; + envStore: Store; + scopeStore: ScopeStore; + refStore: Store; + deferredStore: Store>; + handleStore: HandleStore; + private readonly refCounter?; + private readonly cleanupQueue; + private readonly _externalMemory; + feature: { + supportReflect: boolean; + supportFinalizer: boolean; + supportWeakSymbol: boolean; + supportBigInt: boolean; + supportNewFunction: boolean; + canSetFunctionName: boolean; + setImmediate: (callback: () => void) => void; + Buffer: BufferCtor | undefined; + MessageChannel: { + new (): MessageChannel; + prototype: MessageChannel; + } | undefined; + }; + constructor(options?: ContextOptions); + /** + * Suppress the destroy on `beforeExit` event in Node.js. + * Call this method if you want to keep the context and + * all associated {@link Env | Env} alive, + * this also means that cleanup hooks will not be called. + * After call this method, you should call + * {@link Context.destroy | `Context.prototype.destroy`} method manually. + */ + suppressDestroy(): void; + getRuntimeVersions(): { + version: string; + NODE_API_SUPPORTED_VERSION_MAX: Version; + NAPI_VERSION_EXPERIMENTAL: Version; + NODE_API_DEFAULT_MODULE_API_VERSION: Version; + }; + createNotSupportWeakRefError(api: string, message: string): NotSupportWeakRefError; + createNotSupportBufferError(api: string, message: string): NotSupportBufferError; + createReference(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership): Reference; + createReferenceWithData(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, data: void_p): Reference; + createReferenceWithFinalizer(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, finalize_callback?: napi_finalize, finalize_data?: void_p, finalize_hint?: void_p): Reference; + createDeferred(value: IDeferrdValue): Deferred; + adjustAmountOfExternalAllocatedMemory(changeInBytes: number | bigint): bigint; + createEnv(filename: string, moduleApiVersion: number, makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void, makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void, abort: (msg?: string) => never, nodeBinding?: any): Env; + createTrackedFinalizer(envObject: Env, finalize_callback: napi_finalize, finalize_data: void_p, finalize_hint: void_p): TrackedFinalizer; + getCurrentScope(): HandleScope | null; + addToCurrentScope(value: V): Handle; + openScope(envObject?: Env): HandleScope; + closeScope(envObject?: Env, _scope?: HandleScope): void; + ensureHandle(value: S): Handle; + addCleanupHook(envObject: Env, fn: CleanupHookCallbackFunction, arg: number): void; + removeCleanupHook(envObject: Env, fn: CleanupHookCallbackFunction, arg: number): void; + runCleanup(): void; + increaseWaitingRequestCounter(): void; + decreaseWaitingRequestCounter(): void; + setCanCallIntoJs(value: boolean): void; + setStopping(value: boolean): void; + canCallIntoJs(): boolean; + /** + * Destroy the context and call cleanup hooks. + * Associated {@link Env | Env} will be destroyed. + */ + destroy(): void; +} + +export declare interface ContextOptions { + onExternalMemoryChange?: (current: bigint, old: bigint, delta: bigint) => any; +} + +export declare function createContext(options?: ContextOptions): Context; + +export declare class Deferred implements IStoreValue { + static create(ctx: Context, value: IDeferrdValue): Deferred; + id: number; + ctx: Context; + value: IDeferrdValue; + constructor(ctx: Context, value: IDeferrdValue); + resolve(value: T): void; + reject(reason?: any): void; + dispose(): void; +} + +export declare class EmnapiError extends Error { + constructor(message?: string); +} + +export declare abstract class Env implements IStoreValue { + readonly ctx: Context; + moduleApiVersion: number; + makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void; + makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void; + abort: (msg?: string) => never; + id: number; + openHandleScopes: number; + instanceData: TrackedFinalizer | null; + tryCatch: TryCatch; + refs: number; + reflist: RefTracker; + finalizing_reflist: RefTracker; + pendingFinalizers: RefTracker[]; + lastError: { + errorCode: napi_status; + engineErrorCode: number; + engineReserved: Ptr; + }; + inGcFinalizer: boolean; + constructor(ctx: Context, moduleApiVersion: number, makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void, makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void, abort: (msg?: string) => never); + /** @virtual */ + canCallIntoJs(): boolean; + terminatedOrTerminating(): boolean; + ref(): void; + unref(): void; + ensureHandle(value: S): Handle; + ensureHandleId(value: any): napi_value; + clearLastError(): napi_status; + setLastError(error_code: napi_status, engine_error_code?: uint32_t, engine_reserved?: void_p): napi_status; + getReturnStatus(): napi_status; + callIntoModule(fn: (env: Env) => T, handleException?: (envObject: Env, value: any) => void): T; + /** @virtual */ + abstract callFinalizer(cb: napi_finalize, data: void_p, hint: void_p): void; + invokeFinalizerFromGC(finalizer: RefTracker): void; + checkGCAccess(): void; + /** @virtual */ + enqueueFinalizer(finalizer: RefTracker): void; + /** @virtual */ + dequeueFinalizer(finalizer: RefTracker): void; + /** @virtual */ + deleteMe(): void; + dispose(): void; + private readonly _bindingMap; + initObjectBinding(value: S): IReferenceBinding; + getObjectBinding(value: S): IReferenceBinding; + setInstanceData(data: number, finalize_cb: number, finalize_hint: number): void; + getInstanceData(): number; +} + +/** @public */ +declare interface External_2 extends Record { +} + +/** @public */ +declare const External_2: { + new (value: number | bigint): External_2; + prototype: null; +}; +export { External_2 as External } + +export declare class Finalizer { + envObject: Env; + private _finalizeCallback; + private _finalizeData; + private _finalizeHint; + private _makeDynCall_vppp; + constructor(envObject: Env, _finalizeCallback?: napi_finalize, _finalizeData?: void_p, _finalizeHint?: void_p); + callback(): napi_finalize; + data(): void_p; + hint(): void_p; + resetEnv(): void; + resetFinalizer(): void; + callFinalizer(): void; + dispose(): void; +} + +export declare function getDefaultContext(): Context; + +/** @public */ +export declare function getExternalValue(external: External_2): number | bigint; + +export declare class Handle { + id: number; + value: S; + constructor(id: number, value: S); + data(): void_p; + isNumber(): boolean; + isBigInt(): boolean; + isString(): boolean; + isFunction(): boolean; + isExternal(): boolean; + isObject(): boolean; + isArray(): boolean; + isArrayBuffer(): boolean; + isTypedArray(): boolean; + isBuffer(BufferConstructor?: BufferCtor): boolean; + isDataView(): boolean; + isDate(): boolean; + isPromise(): boolean; + isBoolean(): boolean; + isUndefined(): boolean; + isSymbol(): boolean; + isNull(): boolean; + dispose(): void; +} + +export declare class HandleScope { + handleStore: HandleStore; + id: number; + parent: HandleScope | null; + child: HandleScope | null; + start: number; + end: number; + private _escapeCalled; + callbackInfo: ICallbackInfo; + constructor(handleStore: HandleStore, id: number, parentScope: HandleScope | null, start: number, end?: number); + add(value: V): Handle; + addExternal(data: void_p): Handle; + dispose(): void; + escape(handle: number): Handle | null; + escapeCalled(): boolean; +} + +export declare class HandleStore { + static UNDEFINED: ConstHandle; + static NULL: ConstHandle; + static FALSE: ConstHandle; + static TRUE: ConstHandle; + static GLOBAL: ConstHandle; + static MIN_ID: 6; + private readonly _values; + private _next; + push(value: S): Handle; + erase(start: number, end: number): void; + get(id: Ptr): Handle | undefined; + swap(a: number, b: number): void; + dispose(): void; +} + +export declare interface ICallbackInfo { + thiz: any; + data: void_p; + args: ArrayLike; + fn: Function; +} + +export declare interface IDeferrdValue { + resolve: (value: T) => void; + reject: (reason?: any) => void; +} + +export declare interface IReferenceBinding { + wrapped: number; + tag: Uint32Array | null; +} + +/** @public */ +export declare function isExternal(object: unknown): object is External_2; + +export declare function isReferenceType(v: any): v is object; + +export declare interface IStoreValue { + id: number; + dispose(): void; + [x: string]: any; +} + +export declare const NAPI_VERSION_EXPERIMENTAL = Version.NAPI_VERSION_EXPERIMENTAL; + +export declare const NODE_API_DEFAULT_MODULE_API_VERSION = Version.NODE_API_DEFAULT_MODULE_API_VERSION; + +export declare const NODE_API_SUPPORTED_VERSION_MAX = Version.NODE_API_SUPPORTED_VERSION_MAX; + +export declare const NODE_API_SUPPORTED_VERSION_MIN = Version.NODE_API_SUPPORTED_VERSION_MIN; + +export declare class NodeEnv extends Env { + filename: string; + private readonly nodeBinding?; + destructing: boolean; + finalizationScheduled: boolean; + constructor(ctx: Context, filename: string, moduleApiVersion: number, makeDynCall_vppp: (cb: Ptr) => (a: Ptr, b: Ptr, c: Ptr) => void, makeDynCall_vp: (cb: Ptr) => (a: Ptr) => void, abort: (msg?: string) => never, nodeBinding?: any); + deleteMe(): void; + canCallIntoJs(): boolean; + triggerFatalException(err: any): void; + callbackIntoModule(enforceUncaughtExceptionPolicy: boolean, fn: (env: Env) => T): T; + callFinalizer(cb: napi_finalize, data: void_p, hint: void_p): void; + callFinalizerInternal(forceUncaught: int, cb: napi_finalize, data: void_p, hint: void_p): void; + enqueueFinalizer(finalizer: RefTracker): void; + drainFinalizerQueue(): void; +} + +export declare class NotSupportBufferError extends EmnapiError { + constructor(api: string, message: string); +} + +export declare class NotSupportWeakRefError extends EmnapiError { + constructor(api: string, message: string); +} + +export declare class Persistent { + private _ref; + private _param; + private _callback; + private static readonly _registry; + constructor(value: T); + setWeak

(param: P, callback: (param: P) => void): void; + clearWeak(): void; + reset(): void; + isEmpty(): boolean; + deref(): T | undefined; +} + +export declare class Reference extends RefTracker implements IStoreValue { + private static weakCallback; + id: number; + envObject: Env; + private readonly canBeWeak; + private _refcount; + private readonly _ownership; + persistent: Persistent; + static create(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, _unused1?: void_p, _unused2?: void_p, _unused3?: void_p): Reference; + protected constructor(envObject: Env, handle_id: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership); + ref(): number; + unref(): number; + get(envObject?: Env): napi_value; + /** @virtual */ + resetFinalizer(): void; + /** @virtual */ + data(): void_p; + refcount(): number; + ownership(): ReferenceOwnership; + /** @virtual */ + protected callUserFinalizer(): void; + /** @virtual */ + protected invokeFinalizerFromGC(): void; + private _setWeak; + finalize(): void; + dispose(): void; +} + +export declare enum ReferenceOwnership { + kRuntime = 0, + kUserland = 1 +} + +export declare class ReferenceWithData extends Reference { + private readonly _data; + static create(envObject: Env, value: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, data: void_p): ReferenceWithData; + private constructor(); + data(): void_p; +} + +export declare class ReferenceWithFinalizer extends Reference { + private _finalizer; + static create(envObject: Env, value: napi_value, initialRefcount: uint32_t, ownership: ReferenceOwnership, finalize_callback: napi_finalize, finalize_data: void_p, finalize_hint: void_p): ReferenceWithFinalizer; + private constructor(); + resetFinalizer(): void; + data(): void_p; + protected callUserFinalizer(): void; + protected invokeFinalizerFromGC(): void; + dispose(): void; +} + +export declare class RefTracker { + /** @virtual */ + dispose(): void; + /** @virtual */ + finalize(): void; + private _next; + private _prev; + link(list: RefTracker): void; + unlink(): void; + static finalizeAll(list: RefTracker): void; +} + +export declare class ScopeStore { + private readonly _rootScope; + currentScope: HandleScope; + private readonly _values; + constructor(); + get(id: number): HandleScope | undefined; + openScope(handleStore: HandleStore): HandleScope; + closeScope(): void; + dispose(): void; +} + +export declare class Store { + protected _values: Array; + private _freeList; + private _size; + constructor(); + add(value: V): void; + get(id: Ptr): V | undefined; + has(id: Ptr): boolean; + remove(id: Ptr): void; + dispose(): void; +} + +export declare class TrackedFinalizer extends RefTracker { + private _finalizer; + static create(envObject: Env, finalize_callback: napi_finalize, finalize_data: void_p, finalize_hint: void_p): TrackedFinalizer; + private constructor(); + data(): void_p; + dispose(): void; + finalize(): void; +} + +export declare class TryCatch { + private _exception; + private _caught; + isEmpty(): boolean; + hasCaught(): boolean; + exception(): any; + setError(err: any): void; + reset(): void; + extractException(): any; +} + +export declare const version: string; + +export { } diff --git a/node_modules/@emnapi/runtime/dist/emnapi.min.js b/node_modules/@emnapi/runtime/dist/emnapi.min.js new file mode 100644 index 00000000..531ea854 --- /dev/null +++ b/node_modules/@emnapi/runtime/dist/emnapi.min.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).emnapi={})}(this,function(t){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},e(t,n)};function n(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}"function"==typeof SuppressedError&&SuppressedError;var i=new WeakMap;function r(t){return i.has(t)}var o=function(){function t(t){Object.setPrototypeOf(this,null),i.set(this,t)}return t.prototype=null,t}();function s(t){if(!r(t))throw new TypeError("not external");return i.get(t)}var a=function(){var t;try{t=new Function}catch(t){return!1}return"function"==typeof t}(),u=function(){if("undefined"!=typeof globalThis)return globalThis;var t=function(){return this}();if(!t&&a)try{t=new Function("return this")()}catch(t){}if(!t){if("undefined"==typeof __webpack_public_path__&&"undefined"!=typeof global)return global;if("undefined"!=typeof window)return window;if("undefined"!=typeof self)return self}return t}(),c=function(){function t(){this._exception=void 0,this._caught=!1}return t.prototype.isEmpty=function(){return!this._caught},t.prototype.hasCaught=function(){return this._caught},t.prototype.exception=function(){return this._exception},t.prototype.setError=function(t){this._caught=!0,this._exception=t},t.prototype.reset=function(){this._caught=!1,this._exception=void 0},t.prototype.extractException=function(){var t=this._exception;return this.reset(),t},t}(),p=function(){var t;try{return Boolean(null===(t=Object.getOwnPropertyDescriptor(Function.prototype,"name"))||void 0===t?void 0:t.configurable)}catch(t){return!1}}(),l="object"==typeof Reflect,f="undefined"!=typeof FinalizationRegistry&&"undefined"!=typeof WeakRef,h=function(){try{var t=Symbol();new WeakRef(t),(new WeakMap).set(t,void 0)}catch(t){return!1}return!0}(),d="undefined"!=typeof BigInt;var y=function(){return"undefined"!=typeof __webpack_public_path__||"undefined"!=typeof __webpack_public_path__?"undefined"!=typeof __non_webpack_require__?__non_webpack_require__:void 0:"undefined"!=typeof require?require:void 0}(),_="function"==typeof MessageChannel?MessageChannel:function(){try{return y("worker_threads").MessageChannel}catch(t){}}(),v="function"==typeof setImmediate?setImmediate:function(t){if("function"!=typeof t)throw new TypeError('The "callback" argument must be of type function');if(_){var e=new _;e.port1.onmessage=function(){e.port1.onmessage=null,e=void 0,t()},e.port2.postMessage(null)}else setTimeout(t,0)},g="function"==typeof Buffer?Buffer:function(){try{return y("buffer").Buffer}catch(t){}}(),z="1.10.0",b=2147483647,w=function(){function t(t,e){this.id=t,this.value=e}return t.prototype.data=function(){return s(this.value)},t.prototype.isNumber=function(){return"number"==typeof this.value},t.prototype.isBigInt=function(){return"bigint"==typeof this.value},t.prototype.isString=function(){return"string"==typeof this.value},t.prototype.isFunction=function(){return"function"==typeof this.value},t.prototype.isExternal=function(){return r(this.value)},t.prototype.isObject=function(){return"object"==typeof this.value&&null!==this.value},t.prototype.isArray=function(){return Array.isArray(this.value)},t.prototype.isArrayBuffer=function(){return this.value instanceof ArrayBuffer},t.prototype.isTypedArray=function(){return ArrayBuffer.isView(this.value)&&!(this.value instanceof DataView)},t.prototype.isBuffer=function(t){return!!ArrayBuffer.isView(this.value)||(null!=t||(t=g),"function"==typeof t&&t.isBuffer(this.value))},t.prototype.isDataView=function(){return this.value instanceof DataView},t.prototype.isDate=function(){return this.value instanceof Date},t.prototype.isPromise=function(){return this.value instanceof Promise},t.prototype.isBoolean=function(){return"boolean"==typeof this.value},t.prototype.isUndefined=function(){return void 0===this.value},t.prototype.isSymbol=function(){return"symbol"==typeof this.value},t.prototype.isNull=function(){return null===this.value},t.prototype.dispose=function(){this.value=void 0},t}(),k=function(t){function e(e,n){return t.call(this,e,n)||this}return n(e,t),e.prototype.dispose=function(){},e}(w),m=function(){function t(){this._values=[void 0,t.UNDEFINED,t.NULL,t.FALSE,t.TRUE,t.GLOBAL],this._next=t.MIN_ID}return t.prototype.push=function(t){var e,n=this._next,i=this._values;return n=this.end)return null;this.handleStore.swap(t,this.start);var e=this.handleStore.get(this.start);return this.start++,this.parent.end++,e},t.prototype.escapeCalled=function(){return this._escapeCalled},t}(),S=function(){function t(){this._rootScope=new E(null,0,null,1,m.MIN_ID),this.currentScope=this._rootScope,this._values=[void 0]}return t.prototype.get=function(t){return this._values[t]},t.prototype.openScope=function(t){var e=this.currentScope,n=e.child;if(null!==n)n.start=n.end=e.end;else{var i=e.id+1;n=new E(t,i,e,e.end),this._values[i]=n}return this.currentScope=n,n},t.prototype.closeScope=function(){var t=this.currentScope;this.currentScope=t.parent,t.dispose()},t.prototype.dispose=function(){this.currentScope=this._rootScope,this._values.length=1},t}(),C=function(){function t(){this._next=null,this._prev=null}return t.prototype.dispose=function(){},t.prototype.finalize=function(){},t.prototype.link=function(t){this._prev=t,this._next=t._next,null!==this._next&&(this._next._prev=this),t._next=this},t.prototype.unlink=function(){null!==this._prev&&(this._prev._next=this._next),null!==this._next&&(this._next._prev=this._prev),this._prev=null,this._next=null},t.finalizeAll=function(t){for(;null!==t._next;)t._next.finalize()},t}(),x=function(){function t(t,e,n,i){void 0===e&&(e=0),void 0===n&&(n=0),void 0===i&&(i=0),this.envObject=t,this._finalizeCallback=e,this._finalizeData=n,this._finalizeHint=i,this._makeDynCall_vppp=t.makeDynCall_vppp}return t.prototype.callback=function(){return this._finalizeCallback},t.prototype.data=function(){return this._finalizeData},t.prototype.hint=function(){return this._finalizeHint},t.prototype.resetEnv=function(){this.envObject=void 0},t.prototype.resetFinalizer=function(){this._finalizeCallback=0,this._finalizeData=0,this._finalizeHint=0},t.prototype.callFinalizer=function(){var t=this._finalizeCallback,e=this._finalizeData,n=this._finalizeHint;if(this.resetFinalizer(),t){var i=Number(t);this.envObject?this.envObject.callFinalizer(i,e,n):this._makeDynCall_vppp(i)(0,e,n)}},t.prototype.dispose=function(){this.envObject=void 0,this._makeDynCall_vppp=void 0},t}(),F=function(t){function e(e,n,i,r){var o=t.call(this)||this;return o._finalizer=new x(e,n,i,r),o}return n(e,t),e.create=function(t,n,i,r){var o=new e(t,n,i,r);return o.link(t.finalizing_reflist),o},e.prototype.data=function(){return this._finalizer.data()},e.prototype.dispose=function(){this._finalizer&&(this.unlink(),this._finalizer.envObject.dequeueFinalizer(this),this._finalizer.dispose(),this._finalizer=void 0,t.prototype.dispose.call(this))},e.prototype.finalize=function(){var t;this.unlink();var e=!1;try{this._finalizer.callFinalizer()}catch(n){e=!0,t=n}if(this.dispose(),e)throw t},e}(C);function O(t,e){if(!t.terminatedOrTerminating())throw e}var I=function(){function t(t,e,n,i,r){this.ctx=t,this.moduleApiVersion=e,this.makeDynCall_vppp=n,this.makeDynCall_vp=i,this.abort=r,this.openHandleScopes=0,this.instanceData=null,this.tryCatch=new c,this.refs=1,this.reflist=new C,this.finalizing_reflist=new C,this.pendingFinalizers=[],this.lastError={errorCode:0,engineErrorCode:0,engineReserved:0},this.inGcFinalizer=!1,this._bindingMap=new WeakMap,this.id=0}return t.prototype.canCallIntoJs=function(){return!0},t.prototype.terminatedOrTerminating=function(){return!this.canCallIntoJs()},t.prototype.ref=function(){this.refs++},t.prototype.unref=function(){this.refs--,0===this.refs&&this.dispose()},t.prototype.ensureHandle=function(t){return this.ctx.ensureHandle(t)},t.prototype.ensureHandleId=function(t){return this.ensureHandle(t).id},t.prototype.clearLastError=function(){var t=this.lastError;return 0!==t.errorCode&&(t.errorCode=0),0!==t.engineErrorCode&&(t.engineErrorCode=0),0!==t.engineReserved&&(t.engineReserved=0),0},t.prototype.setLastError=function(t,e,n){void 0===e&&(e=0),void 0===n&&(n=0);var i=this.lastError;return i.errorCode!==t&&(i.errorCode=t),i.engineErrorCode!==e&&(i.engineErrorCode=e),i.engineReserved!==n&&(i.engineReserved=n),t},t.prototype.getReturnStatus=function(){return this.tryCatch.hasCaught()?this.setLastError(10):0},t.prototype.callIntoModule=function(t,e){void 0===e&&(e=O);var n=this.openHandleScopes;this.clearLastError();var i=t(this);(n!==this.openHandleScopes&&this.abort("open_handle_scopes != open_handle_scopes_before"),this.tryCatch.hasCaught())&&e(this,this.tryCatch.extractException());return i},t.prototype.invokeFinalizerFromGC=function(t){if(this.moduleApiVersion!==b)this.enqueueFinalizer(t);else{var e=this.inGcFinalizer;this.inGcFinalizer=!0;try{t.finalize()}finally{this.inGcFinalizer=e}}},t.prototype.checkGCAccess=function(){this.moduleApiVersion===b&&this.inGcFinalizer&&this.abort("Finalizer is calling a function that may affect GC state.\nThe finalizers are run directly from GC and must not affect GC state.\nUse `node_api_post_finalizer` from inside of the finalizer to work around this issue.\nIt schedules the call as a new task in the event loop.")},t.prototype.enqueueFinalizer=function(t){-1===this.pendingFinalizers.indexOf(t)&&this.pendingFinalizers.push(t)},t.prototype.dequeueFinalizer=function(t){var e=this.pendingFinalizers.indexOf(t);-1!==e&&this.pendingFinalizers.splice(e,1)},t.prototype.deleteMe=function(){C.finalizeAll(this.finalizing_reflist),C.finalizeAll(this.reflist),this.tryCatch.extractException(),this.ctx.envStore.remove(this.id)},t.prototype.dispose=function(){0!==this.id&&(this.deleteMe(),this.finalizing_reflist.dispose(),this.reflist.dispose(),this.id=0)},t.prototype.initObjectBinding=function(t){var e={wrapped:0,tag:null};return this._bindingMap.set(t,e),e},t.prototype.getObjectBinding=function(t){return this._bindingMap.has(t)?this._bindingMap.get(t):this.initObjectBinding(t)},t.prototype.setInstanceData=function(t,e,n){this.instanceData&&this.instanceData.dispose(),this.instanceData=F.create(this,e,t,n)},t.prototype.getInstanceData=function(){return this.instanceData?this.instanceData.data():0},t}(),D=function(t){function e(e,n,i,r,o,s,a){var u=t.call(this,e,i,r,o,s)||this;return u.filename=n,u.nodeBinding=a,u.destructing=!1,u.finalizationScheduled=!1,u}return n(e,t),e.prototype.deleteMe=function(){this.destructing=!0,this.drainFinalizerQueue(),t.prototype.deleteMe.call(this)},e.prototype.canCallIntoJs=function(){return t.prototype.canCallIntoJs.call(this)&&this.ctx.canCallIntoJs()},e.prototype.triggerFatalException=function(t){if(this.nodeBinding)this.nodeBinding.napi.fatalException(t);else{if("object"!=typeof process||null===process||"function"!=typeof process._fatalException)throw t;process._fatalException(t)||(console.error(t),process.exit(1))}},e.prototype.callbackIntoModule=function(t,e){return this.callIntoModule(e,function(e,n){if(!e.terminatedOrTerminating()){var i="object"==typeof process&&null!==process,r=!!i&&Boolean(process.execArgv&&-1!==process.execArgv.indexOf("--force-node-api-uncaught-exceptions-policy"));if(e.moduleApiVersion<10&&!r&&!t)(i&&"function"==typeof process.emitWarning?process.emitWarning:function(t,e,n){if(t instanceof Error)console.warn(t.toString());else{var i=n?"[".concat(n,"] "):"";console.warn("".concat(i).concat(e||"Warning",": ").concat(t))}})("Uncaught Node-API callback exception detected, please run node with option --force-node-api-uncaught-exceptions-policy=true to handle those exceptions properly.","DeprecationWarning","DEP0168");else e.triggerFatalException(n)}})},e.prototype.callFinalizer=function(t,e,n){this.callFinalizerInternal(1,t,e,n)},e.prototype.callFinalizerInternal=function(t,e,n,i){var r=this.makeDynCall_vppp(e),o=this.id,s=this.ctx.openScope(this);try{this.callbackIntoModule(Boolean(t),function(){r(o,n,i)})}finally{this.ctx.closeScope(this,s)}},e.prototype.enqueueFinalizer=function(e){var n=this;t.prototype.enqueueFinalizer.call(this,e),this.finalizationScheduled||this.destructing||(this.finalizationScheduled=!0,this.ref(),v(function(){n.finalizationScheduled=!1,n.unref(),n.drainFinalizerQueue()}))},e.prototype.drainFinalizerQueue=function(){for(;this.pendingFinalizers.length>0;){this.pendingFinalizers.shift().finalize()}},e}(I);function R(t,e,n,i,r,o,s){(n="number"!=typeof n?8:n)<8?n=8:n>10&&n!==b&&function(t,e){var n="".concat(t," requires Node-API version ").concat(e,", but this version of Node.js only supports version ").concat(10," add-ons.");throw new Error(n)}(e,n);var a=new D(t,e,n,i,r,o,s);return t.envStore.add(a),t.addCleanupHook(a,function(){a.unref()},0),a}var N=function(t){function e(n){var i=this.constructor,r=t.call(this,n)||this,o=i,s=o.prototype;if(!(r instanceof e)){var a=Object.setPrototypeOf;"function"==typeof a?a.call(Object,r,s):r.__proto__=s,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(r,o)}return r}return n(e,t),e}(Error);Object.defineProperty(N.prototype,"name",{configurable:!0,writable:!0,value:"EmnapiError"});var j=function(t){function e(e,n){return t.call(this,"".concat(e,': The current runtime does not support "FinalizationRegistry" and "WeakRef".').concat(n?" ".concat(n):""))||this}return n(e,t),e}(N);Object.defineProperty(j.prototype,"name",{configurable:!0,writable:!0,value:"NotSupportWeakRefError"});var A=function(t){function e(e,n){return t.call(this,"".concat(e,': The current runtime does not support "Buffer". Consider using buffer polyfill to make sure `globalThis.Buffer` is defined.').concat(n?" ".concat(n):""))||this}return n(e,t),e}(N);Object.defineProperty(A.prototype,"name",{configurable:!0,writable:!0,value:"NotSupportBufferError"});var H,B=function(){function t(t){this._value=t}return t.prototype.deref=function(){return this._value},t.prototype.dispose=function(){this._value=void 0},t}(),M=function(){function t(t){this._ref=new B(t)}return t.prototype.setWeak=function(e,n){if(f&&void 0!==this._ref&&!(this._ref instanceof WeakRef)){var i=this._ref.deref();try{t._registry.register(i,this,this);var r=new WeakRef(i);this._ref.dispose(),this._ref=r,this._param=e,this._callback=n}catch(t){if("symbol"!=typeof i)throw t}}},t.prototype.clearWeak=function(){if(f&&void 0!==this._ref&&this._ref instanceof WeakRef){try{t._registry.unregister(this)}catch(t){}this._param=void 0,this._callback=void 0;var e=this._ref.deref();this._ref=void 0===e?e:new B(e)}},t.prototype.reset=function(){if(f)try{t._registry.unregister(this)}catch(t){}this._param=void 0,this._callback=void 0,this._ref instanceof B&&this._ref.dispose(),this._ref=void 0},t.prototype.isEmpty=function(){return void 0===this._ref},t.prototype.deref=function(){if(void 0!==this._ref)return this._ref.deref()},t._registry=f?new FinalizationRegistry(function(t){t._ref=void 0;var e=t._callback,n=t._param;t._callback=void 0,t._param=void 0,"function"==typeof e&&e(n)}):void 0,t}();t.ReferenceOwnership=void 0,(H=t.ReferenceOwnership||(t.ReferenceOwnership={}))[H.kRuntime=0]="kRuntime",H[H.kUserland=1]="kUserland";var T,W=function(e){function i(t,n,i,r){var o=e.call(this)||this;o.envObject=t,o._refcount=i,o._ownership=r;var s,a=t.ctx.handleStore.get(n);return o.canBeWeak=(s=a).isObject()||s.isFunction()||s.isSymbol(),o.persistent=new M(a.value),o.id=0,0===i&&o._setWeak(),o}return n(i,e),i.weakCallback=function(t){t.persistent.reset(),t.invokeFinalizerFromGC()},i.create=function(t,e,n,r,o,s,a){var u=new i(t,e,n,r);return t.ctx.refStore.add(u),u.link(t.reflist),u},i.prototype.ref=function(){return this.persistent.isEmpty()?0:(1===++this._refcount&&this.canBeWeak&&this.persistent.clearWeak(),this._refcount)},i.prototype.unref=function(){return this.persistent.isEmpty()||0===this._refcount?0:(0===--this._refcount&&this._setWeak(),this._refcount)},i.prototype.get=function(t){if(void 0===t&&(t=this.envObject),this.persistent.isEmpty())return 0;var e=this.persistent.deref();return t.ensureHandle(e).id},i.prototype.resetFinalizer=function(){},i.prototype.data=function(){return 0},i.prototype.refcount=function(){return this._refcount},i.prototype.ownership=function(){return this._ownership},i.prototype.callUserFinalizer=function(){},i.prototype.invokeFinalizerFromGC=function(){this.finalize()},i.prototype._setWeak=function(){this.canBeWeak?this.persistent.setWeak(this,i.weakCallback):this.persistent.reset()},i.prototype.finalize=function(){this.persistent.reset();var e=this._ownership===t.ReferenceOwnership.kRuntime;this.unlink(),this.callUserFinalizer(),e&&this.dispose()},i.prototype.dispose=function(){0!==this.id&&(this.unlink(),this.persistent.reset(),this.envObject.ctx.refStore.remove(this.id),e.prototype.dispose.call(this),this.envObject=void 0,this.id=0)},i}(C),P=function(t){function e(e,n,i,r,o){var s=t.call(this,e,n,i,r)||this;return s._data=o,s}return n(e,t),e.create=function(t,n,i,r,o){var s=new e(t,n,i,r,o);return t.ctx.refStore.add(s),s.link(t.reflist),s},e.prototype.data=function(){return this._data},e}(W),L=function(t){function e(e,n,i,r,o,s,a){var u=t.call(this,e,n,i,r)||this;return u._finalizer=new x(e,o,s,a),u}return n(e,t),e.create=function(t,n,i,r,o,s,a){var u=new e(t,n,i,r,o,s,a);return t.ctx.refStore.add(u),u.link(t.finalizing_reflist),u},e.prototype.resetFinalizer=function(){this._finalizer.resetFinalizer()},e.prototype.data=function(){return this._finalizer.data()},e.prototype.callUserFinalizer=function(){this._finalizer.callFinalizer()},e.prototype.invokeFinalizerFromGC=function(){this._finalizer.envObject.invokeFinalizerFromGC(this)},e.prototype.dispose=function(){this._finalizer&&(this._finalizer.envObject.dequeueFinalizer(this),this._finalizer.dispose(),t.prototype.dispose.call(this),this._finalizer=void 0)},e}(W),U=function(){function t(t,e){this.id=0,this.ctx=t,this.value=e}return t.create=function(e,n){var i=new t(e,n);return e.deferredStore.add(i),i},t.prototype.resolve=function(t){this.value.resolve(t),this.dispose()},t.prototype.reject=function(t){this.value.reject(t),this.dispose()},t.prototype.dispose=function(){this.ctx.deferredStore.remove(this.id),this.id=0,this.value=null,this.ctx=null},t}(),V=function(){function t(){this._values=[void 0],this._values.length=4,this._size=1,this._freeList=[]}return t.prototype.add=function(t){var e;if(this._freeList.length)e=this._freeList.shift();else{e=this._size,this._size++;var n=this._values.length;e>=n&&(this._values.length=n+(n>>1)+16)}t.id=e,this._values[e]=t},t.prototype.get=function(t){return this._values[t]},t.prototype.has=function(t){return void 0!==this._values[t]},t.prototype.remove=function(t){var e=this._values[t];e&&(e.id=0,this._values[t]=void 0,this._freeList.push(Number(t)))},t.prototype.dispose=function(){for(var t=1;t0)throw new Error("Can not add same fn and arg twice");this._cleanupHooks.push(new Q(t,e,n,this._cleanupHookCounter++))},t.prototype.remove=function(t,e,n){for(var i=0;i{function t(t){Object.setPrototypeOf(this,null),e.set(this,t)}return t.prototype=null,t})();function s(i){if(!t(i))throw new TypeError("not external");return e.get(i)}const n=function(){let e;try{e=new Function}catch(e){return!1}return"function"==typeof e}(),r=function(){if("undefined"!=typeof globalThis)return globalThis;let e=function(){return this}();if(!e&&n)try{e=new Function("return this")()}catch(e){}if(!e){if("undefined"==typeof __webpack_public_path__&&"undefined"!=typeof global)return global;if("undefined"!=typeof window)return window;if("undefined"!=typeof self)return self}return e}();class o{constructor(){this._exception=void 0,this._caught=!1}isEmpty(){return!this._caught}hasCaught(){return this._caught}exception(){return this._exception}setError(e){this._caught=!0,this._exception=e}reset(){this._caught=!1,this._exception=void 0}extractException(){const e=this._exception;return this.reset(),e}}const a=function(){var e;try{return Boolean(null===(e=Object.getOwnPropertyDescriptor(Function.prototype,"name"))||void 0===e?void 0:e.configurable)}catch(e){return!1}}(),l="object"==typeof Reflect,c="undefined"!=typeof FinalizationRegistry&&"undefined"!=typeof WeakRef,h=function(){try{const e=Symbol();new WeakRef(e),(new WeakMap).set(e,void 0)}catch(e){return!1}return!0}(),u="undefined"!=typeof BigInt;function p(e){return"object"==typeof e&&null!==e||"function"==typeof e}const d=function(){let e;return e="undefined"!=typeof __webpack_public_path__||"undefined"!=typeof __webpack_public_path__?"undefined"!=typeof __non_webpack_require__?__non_webpack_require__:void 0:"undefined"!=typeof require?require:void 0,e}(),f="function"==typeof MessageChannel?MessageChannel:function(){try{return d("worker_threads").MessageChannel}catch(e){}}(),_="function"==typeof setImmediate?setImmediate:function(e){if("function"!=typeof e)throw new TypeError('The "callback" argument must be of type function');if(f){let t=new f;t.port1.onmessage=function(){t.port1.onmessage=null,t=void 0,e()},t.port2.postMessage(null)}else setTimeout(e,0)},v="function"==typeof Buffer?Buffer:function(){try{return d("buffer").Buffer}catch(e){}}(),g="1.10.0",y=1,z=10,b=2147483647,k=8;class w{constructor(e,t){this.id=e,this.value=t}data(){return s(this.value)}isNumber(){return"number"==typeof this.value}isBigInt(){return"bigint"==typeof this.value}isString(){return"string"==typeof this.value}isFunction(){return"function"==typeof this.value}isExternal(){return t(this.value)}isObject(){return"object"==typeof this.value&&null!==this.value}isArray(){return Array.isArray(this.value)}isArrayBuffer(){return this.value instanceof ArrayBuffer}isTypedArray(){return ArrayBuffer.isView(this.value)&&!(this.value instanceof DataView)}isBuffer(e){return!!ArrayBuffer.isView(this.value)||(null!=e||(e=v),"function"==typeof e&&e.isBuffer(this.value))}isDataView(){return this.value instanceof DataView}isDate(){return this.value instanceof Date}isPromise(){return this.value instanceof Promise}isBoolean(){return"boolean"==typeof this.value}isUndefined(){return void 0===this.value}isSymbol(){return"symbol"==typeof this.value}isNull(){return null===this.value}dispose(){this.value=void 0}}class m extends w{constructor(e,t){super(e,t)}dispose(){}}class C{constructor(){this._values=[void 0,C.UNDEFINED,C.NULL,C.FALSE,C.TRUE,C.GLOBAL],this._next=C.MIN_ID}push(e){let t;const i=this._next,s=this._values;return i=this.end)return null;this.handleStore.swap(e,this.start);const t=this.handleStore.get(this.start);return this.start++,this.parent.end++,t}escapeCalled(){return this._escapeCalled}}class x{constructor(){this._rootScope=new S(null,0,null,1,C.MIN_ID),this.currentScope=this._rootScope,this._values=[void 0]}get(e){return this._values[e]}openScope(e){const t=this.currentScope;let i=t.child;if(null!==i)i.start=i.end=t.end;else{const s=t.id+1;i=new S(e,s,t,t.end),this._values[s]=i}return this.currentScope=i,i}closeScope(){const e=this.currentScope;this.currentScope=e.parent,e.dispose()}dispose(){this.currentScope=this._rootScope,this._values.length=1}}class E{constructor(){this._next=null,this._prev=null}dispose(){}finalize(){}link(e){this._prev=e,this._next=e._next,null!==this._next&&(this._next._prev=this),e._next=this}unlink(){null!==this._prev&&(this._prev._next=this._next),null!==this._next&&(this._next._prev=this._prev),this._prev=null,this._next=null}static finalizeAll(e){for(;null!==e._next;)e._next.finalize()}}class F{constructor(e,t=0,i=0,s=0){this.envObject=e,this._finalizeCallback=t,this._finalizeData=i,this._finalizeHint=s,this._makeDynCall_vppp=e.makeDynCall_vppp}callback(){return this._finalizeCallback}data(){return this._finalizeData}hint(){return this._finalizeHint}resetEnv(){this.envObject=void 0}resetFinalizer(){this._finalizeCallback=0,this._finalizeData=0,this._finalizeHint=0}callFinalizer(){const e=this._finalizeCallback,t=this._finalizeData,i=this._finalizeHint;if(this.resetFinalizer(),!e)return;const s=Number(e);this.envObject?this.envObject.callFinalizer(s,t,i):this._makeDynCall_vppp(s)(0,t,i)}dispose(){this.envObject=void 0,this._makeDynCall_vppp=void 0}}class I extends E{static create(e,t,i,s){const n=new I(e,t,i,s);return n.link(e.finalizing_reflist),n}constructor(e,t,i,s){super(),this._finalizer=new F(e,t,i,s)}data(){return this._finalizer.data()}dispose(){this._finalizer&&(this.unlink(),this._finalizer.envObject.dequeueFinalizer(this),this._finalizer.dispose(),this._finalizer=void 0,super.dispose())}finalize(){let e;this.unlink();let t=!1;try{this._finalizer.callFinalizer()}catch(i){t=!0,e=i}if(this.dispose(),t)throw e}}function D(e,t){if(!e.terminatedOrTerminating())throw t}class O{constructor(e,t,i,s,n){this.ctx=e,this.moduleApiVersion=t,this.makeDynCall_vppp=i,this.makeDynCall_vp=s,this.abort=n,this.openHandleScopes=0,this.instanceData=null,this.tryCatch=new o,this.refs=1,this.reflist=new E,this.finalizing_reflist=new E,this.pendingFinalizers=[],this.lastError={errorCode:0,engineErrorCode:0,engineReserved:0},this.inGcFinalizer=!1,this._bindingMap=new WeakMap,this.id=0}canCallIntoJs(){return!0}terminatedOrTerminating(){return!this.canCallIntoJs()}ref(){this.refs++}unref(){this.refs--,0===this.refs&&this.dispose()}ensureHandle(e){return this.ctx.ensureHandle(e)}ensureHandleId(e){return this.ensureHandle(e).id}clearLastError(){const e=this.lastError;return 0!==e.errorCode&&(e.errorCode=0),0!==e.engineErrorCode&&(e.engineErrorCode=0),0!==e.engineReserved&&(e.engineReserved=0),0}setLastError(e,t=0,i=0){const s=this.lastError;return s.errorCode!==e&&(s.errorCode=e),s.engineErrorCode!==t&&(s.engineErrorCode=t),s.engineReserved!==i&&(s.engineReserved=i),e}getReturnStatus(){return this.tryCatch.hasCaught()?this.setLastError(10):0}callIntoModule(e,t=D){const i=this.openHandleScopes;this.clearLastError();const s=e(this);if(i!==this.openHandleScopes&&this.abort("open_handle_scopes != open_handle_scopes_before"),this.tryCatch.hasCaught()){t(this,this.tryCatch.extractException())}return s}invokeFinalizerFromGC(e){if(this.moduleApiVersion!==b)this.enqueueFinalizer(e);else{const t=this.inGcFinalizer;this.inGcFinalizer=!0;try{e.finalize()}finally{this.inGcFinalizer=t}}}checkGCAccess(){this.moduleApiVersion===b&&this.inGcFinalizer&&this.abort("Finalizer is calling a function that may affect GC state.\nThe finalizers are run directly from GC and must not affect GC state.\nUse `node_api_post_finalizer` from inside of the finalizer to work around this issue.\nIt schedules the call as a new task in the event loop.")}enqueueFinalizer(e){-1===this.pendingFinalizers.indexOf(e)&&this.pendingFinalizers.push(e)}dequeueFinalizer(e){const t=this.pendingFinalizers.indexOf(e);-1!==t&&this.pendingFinalizers.splice(t,1)}deleteMe(){E.finalizeAll(this.finalizing_reflist),E.finalizeAll(this.reflist),this.tryCatch.extractException(),this.ctx.envStore.remove(this.id)}dispose(){0!==this.id&&(this.deleteMe(),this.finalizing_reflist.dispose(),this.reflist.dispose(),this.id=0)}initObjectBinding(e){const t={wrapped:0,tag:null};return this._bindingMap.set(e,t),t}getObjectBinding(e){return this._bindingMap.has(e)?this._bindingMap.get(e):this.initObjectBinding(e)}setInstanceData(e,t,i){this.instanceData&&this.instanceData.dispose(),this.instanceData=I.create(this,t,e,i)}getInstanceData(){return this.instanceData?this.instanceData.data():0}}class j extends O{constructor(e,t,i,s,n,r,o){super(e,i,s,n,r),this.filename=t,this.nodeBinding=o,this.destructing=!1,this.finalizationScheduled=!1}deleteMe(){this.destructing=!0,this.drainFinalizerQueue(),super.deleteMe()}canCallIntoJs(){return super.canCallIntoJs()&&this.ctx.canCallIntoJs()}triggerFatalException(e){if(this.nodeBinding)this.nodeBinding.napi.fatalException(e);else{if("object"!=typeof process||null===process||"function"!=typeof process._fatalException)throw e;process._fatalException(e)||(console.error(e),process.exit(1))}}callbackIntoModule(e,t){return this.callIntoModule(t,(t,i)=>{if(t.terminatedOrTerminating())return;const s="object"==typeof process&&null!==process,n=!!s&&Boolean(process.execArgv&&-1!==process.execArgv.indexOf("--force-node-api-uncaught-exceptions-policy"));if(t.moduleApiVersion<10&&!n&&!e){return void(s&&"function"==typeof process.emitWarning?process.emitWarning:function(e,t,i){if(e instanceof Error)console.warn(e.toString());else{const s=i?`[${i}] `:"";console.warn(`${s}${t||"Warning"}: ${e}`)}})("Uncaught Node-API callback exception detected, please run node with option --force-node-api-uncaught-exceptions-policy=true to handle those exceptions properly.","DeprecationWarning","DEP0168")}t.triggerFatalException(i)})}callFinalizer(e,t,i){this.callFinalizerInternal(1,e,t,i)}callFinalizerInternal(e,t,i,s){const n=this.makeDynCall_vppp(t),r=this.id,o=this.ctx.openScope(this);try{this.callbackIntoModule(Boolean(e),()=>{n(r,i,s)})}finally{this.ctx.closeScope(this,o)}}enqueueFinalizer(e){super.enqueueFinalizer(e),this.finalizationScheduled||this.destructing||(this.finalizationScheduled=!0,this.ref(),_(()=>{this.finalizationScheduled=!1,this.unref(),this.drainFinalizerQueue()}))}drainFinalizerQueue(){for(;this.pendingFinalizers.length>0;){this.pendingFinalizers.shift().finalize()}}}function B(e,t,i,s,n,r,o){(i="number"!=typeof i?8:i)<8?i=8:i>10&&i!==b&&function(e,t){throw new Error(`${e} requires Node-API version ${t}, but this version of Node.js only supports version 10 add-ons.`)}(t,i);const a=new j(e,t,i,s,n,r,o);return e.envStore.add(a),e.addCleanupHook(a,()=>{a.unref()},0),a}class H extends Error{constructor(e){super(e);const t=new.target,i=t.prototype;if(!(this instanceof H)){const e=Object.setPrototypeOf;"function"==typeof e?e.call(Object,this,i):this.__proto__=i,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,t)}}}Object.defineProperty(H.prototype,"name",{configurable:!0,writable:!0,value:"EmnapiError"});class R extends H{constructor(e,t){super(`${e}: The current runtime does not support "FinalizationRegistry" and "WeakRef".${t?` ${t}`:""}`)}}Object.defineProperty(R.prototype,"name",{configurable:!0,writable:!0,value:"NotSupportWeakRefError"});class N extends H{constructor(e,t){super(`${e}: The current runtime does not support "Buffer". Consider using buffer polyfill to make sure \`globalThis.Buffer\` is defined.${t?` ${t}`:""}`)}}Object.defineProperty(N.prototype,"name",{configurable:!0,writable:!0,value:"NotSupportBufferError"});class A{constructor(e){this._value=e}deref(){return this._value}dispose(){this._value=void 0}}class M{constructor(e){this._ref=new A(e)}setWeak(e,t){if(!c||void 0===this._ref||this._ref instanceof WeakRef)return;const i=this._ref.deref();try{M._registry.register(i,this,this);const s=new WeakRef(i);this._ref.dispose(),this._ref=s,this._param=e,this._callback=t}catch(e){if("symbol"!=typeof i)throw e}}clearWeak(){if(c&&void 0!==this._ref&&this._ref instanceof WeakRef){try{M._registry.unregister(this)}catch(e){}this._param=void 0,this._callback=void 0;const e=this._ref.deref();this._ref=void 0===e?e:new A(e)}}reset(){if(c)try{M._registry.unregister(this)}catch(e){}this._param=void 0,this._callback=void 0,this._ref instanceof A&&this._ref.dispose(),this._ref=void 0}isEmpty(){return void 0===this._ref}deref(){if(void 0!==this._ref)return this._ref.deref()}}var W;M._registry=c?new FinalizationRegistry(e=>{e._ref=void 0;const t=e._callback,i=e._param;e._callback=void 0,e._param=void 0,"function"==typeof t&&t(i)}):void 0,function(e){e[e.kRuntime=0]="kRuntime",e[e.kUserland=1]="kUserland"}(W||(W={}));class L extends E{static weakCallback(e){e.persistent.reset(),e.invokeFinalizerFromGC()}static create(e,t,i,s,n,r,o){const a=new L(e,t,i,s);return e.ctx.refStore.add(a),a.link(e.reflist),a}constructor(e,t,i,s){super(),this.envObject=e,this._refcount=i,this._ownership=s;const n=e.ctx.handleStore.get(t);var r;this.canBeWeak=(r=n).isObject()||r.isFunction()||r.isSymbol(),this.persistent=new M(n.value),this.id=0,0===i&&this._setWeak()}ref(){return this.persistent.isEmpty()?0:(1===++this._refcount&&this.canBeWeak&&this.persistent.clearWeak(),this._refcount)}unref(){return this.persistent.isEmpty()||0===this._refcount?0:(0===--this._refcount&&this._setWeak(),this._refcount)}get(e=this.envObject){if(this.persistent.isEmpty())return 0;const t=this.persistent.deref();return e.ensureHandle(t).id}resetFinalizer(){}data(){return 0}refcount(){return this._refcount}ownership(){return this._ownership}callUserFinalizer(){}invokeFinalizerFromGC(){this.finalize()}_setWeak(){this.canBeWeak?this.persistent.setWeak(this,L.weakCallback):this.persistent.reset()}finalize(){this.persistent.reset();const e=this._ownership===W.kRuntime;this.unlink(),this.callUserFinalizer(),e&&this.dispose()}dispose(){0!==this.id&&(this.unlink(),this.persistent.reset(),this.envObject.ctx.refStore.remove(this.id),super.dispose(),this.envObject=void 0,this.id=0)}}class T extends L{static create(e,t,i,s,n){const r=new T(e,t,i,s,n);return e.ctx.refStore.add(r),r.link(e.reflist),r}constructor(e,t,i,s,n){super(e,t,i,s),this._data=n}data(){return this._data}}class U extends L{static create(e,t,i,s,n,r,o){const a=new U(e,t,i,s,n,r,o);return e.ctx.refStore.add(a),a.link(e.finalizing_reflist),a}constructor(e,t,i,s,n,r,o){super(e,t,i,s),this._finalizer=new F(e,n,r,o)}resetFinalizer(){this._finalizer.resetFinalizer()}data(){return this._finalizer.data()}callUserFinalizer(){this._finalizer.callFinalizer()}invokeFinalizerFromGC(){this._finalizer.envObject.invokeFinalizerFromGC(this)}dispose(){this._finalizer&&(this._finalizer.envObject.dequeueFinalizer(this),this._finalizer.dispose(),super.dispose(),this._finalizer=void 0)}}class P{static create(e,t){const i=new P(e,t);return e.deferredStore.add(i),i}constructor(e,t){this.id=0,this.ctx=e,this.value=t}resolve(e){this.value.resolve(e),this.dispose()}reject(e){this.value.reject(e),this.dispose()}dispose(){this.ctx.deferredStore.remove(this.id),this.id=0,this.value=null,this.ctx=null}}class G{constructor(){this._values=[void 0],this._values.length=4,this._size=1,this._freeList=[]}add(e){let t;if(this._freeList.length)t=this._freeList.shift();else{t=this._size,this._size++;const e=this._values.length;t>=e&&(this._values.length=e+(e>>1)+16)}e.id=t,this._values[t]=e}get(e){return this._values[e]}has(e){return void 0!==this._values[e]}remove(e){const t=this._values[e];t&&(t.id=0,this._values[e]=void 0,this._freeList.push(Number(e)))}dispose(){for(let e=1;es.envObject===e&&s.fn===t&&s.arg===i).length>0)throw new Error("Can not add same fn and arg twice");this._cleanupHooks.push(new J(e,t,i,this._cleanupHookCounter++))}remove(e,t,i){for(let s=0;st.order-e.order);for(let t=0;t{this._suppressDestroy||this.destroy()}))}suppressDestroy(){this._suppressDestroy=!0}getRuntimeVersions(){return{version:g,NODE_API_SUPPORTED_VERSION_MAX:10,NAPI_VERSION_EXPERIMENTAL:b,NODE_API_DEFAULT_MODULE_API_VERSION:8}}createNotSupportWeakRefError(e,t){return new R(e,t)}createNotSupportBufferError(e,t){return new N(e,t)}createReference(e,t,i,s){return L.create(e,t,i,s)}createReferenceWithData(e,t,i,s,n){return T.create(e,t,i,s,n)}createReferenceWithFinalizer(e,t,i,s,n=0,r=0,o=0){return U.create(e,t,i,s,n,r,o)}createDeferred(e){return P.create(this,e)}adjustAmountOfExternalAllocatedMemory(e){return this._externalMemory.adjust(e)}createEnv(e,t,i,s,n,r){return B(this,e,t,i,s,n,r)}createTrackedFinalizer(e,t,i,s){return I.create(e,t,i,s)}getCurrentScope(){return this.scopeStore.currentScope}addToCurrentScope(e){return this.scopeStore.currentScope.add(e)}openScope(e){const t=this.scopeStore.openScope(this.handleStore);return e&&e.openHandleScopes++,t}closeScope(e,t){e&&0===e.openHandleScopes||(this.scopeStore.closeScope(),e&&e.openHandleScopes--)}ensureHandle(e){switch(e){case void 0:return C.UNDEFINED;case null:return C.NULL;case!0:return C.TRUE;case!1:return C.FALSE;case r:return C.GLOBAL}return this.addToCurrentScope(e)}addCleanupHook(e,t,i){this.cleanupQueue.add(e,t,i)}removeCleanupHook(e,t,i){this.cleanupQueue.remove(e,t,i)}runCleanup(){for(;!this.cleanupQueue.empty();)this.cleanupQueue.drain()}increaseWaitingRequestCounter(){var e;null===(e=this.refCounter)||void 0===e||e.increase()}decreaseWaitingRequestCounter(){var e;null===(e=this.refCounter)||void 0===e||e.decrease()}setCanCallIntoJs(e){this._canCallIntoJs=e}setStopping(e){this._isStopping=e}canCallIntoJs(){return this._canCallIntoJs&&!this._isStopping}destroy(){this.setStopping(!0),this.setCanCallIntoJs(!1),this.runCleanup()}}let Y;function Z(e){return new K(e)}function ee(){return Y||(Y=Z()),Y}export{m as ConstHandle,K as Context,P as Deferred,H as EmnapiError,O as Env,i as External,F as Finalizer,w as Handle,S as HandleScope,C as HandleStore,b as NAPI_VERSION_EXPERIMENTAL,k as NODE_API_DEFAULT_MODULE_API_VERSION,z as NODE_API_SUPPORTED_VERSION_MAX,y as NODE_API_SUPPORTED_VERSION_MIN,j as NodeEnv,N as NotSupportBufferError,R as NotSupportWeakRefError,M as Persistent,E as RefTracker,L as Reference,W as ReferenceOwnership,T as ReferenceWithData,U as ReferenceWithFinalizer,x as ScopeStore,G as Store,I as TrackedFinalizer,o as TryCatch,Z as createContext,ee as getDefaultContext,s as getExternalValue,t as isExternal,p as isReferenceType,g as version}; diff --git a/node_modules/@emnapi/runtime/dist/emnapi.mjs b/node_modules/@emnapi/runtime/dist/emnapi.mjs new file mode 100644 index 00000000..5a2774cd --- /dev/null +++ b/node_modules/@emnapi/runtime/dist/emnapi.mjs @@ -0,0 +1,1350 @@ +const externalValue = new WeakMap(); +function isExternal(object) { + return externalValue.has(object); +} +const External = (() => { + function External(value) { + Object.setPrototypeOf(this, null); + externalValue.set(this, value); + } + External.prototype = null; + return External; +})(); +function getExternalValue(external) { + if (!isExternal(external)) { + throw new TypeError('not external'); + } + return externalValue.get(external); +} + +const supportNewFunction = (function () { + let f; + try { + f = new Function(); + } + catch (_) { + return false; + } + return typeof f === 'function'; +})(); +const _global = (function () { + if (typeof globalThis !== 'undefined') + return globalThis; + let g = (function () { return this; })(); + if (!g && supportNewFunction) { + try { + g = new Function('return this')(); + } + catch (_) { } + } + if (!g) { + if (typeof __webpack_public_path__ === 'undefined') { + if (typeof global !== 'undefined') + return global; + } + if (typeof window !== 'undefined') + return window; + if (typeof self !== 'undefined') + return self; + } + return g; +})(); +class TryCatch { + constructor() { + this._exception = undefined; + this._caught = false; + } + isEmpty() { + return !this._caught; + } + hasCaught() { + return this._caught; + } + exception() { + return this._exception; + } + setError(err) { + this._caught = true; + this._exception = err; + } + reset() { + this._caught = false; + this._exception = undefined; + } + extractException() { + const e = this._exception; + this.reset(); + return e; + } +} +const canSetFunctionName = (function () { + var _a; + try { + return Boolean((_a = Object.getOwnPropertyDescriptor(Function.prototype, 'name')) === null || _a === void 0 ? void 0 : _a.configurable); + } + catch (_) { + return false; + } +})(); +const supportReflect = typeof Reflect === 'object'; +const supportFinalizer = (typeof FinalizationRegistry !== 'undefined') && (typeof WeakRef !== 'undefined'); +const supportWeakSymbol = (function () { + try { + const sym = Symbol(); + new WeakRef(sym); + new WeakMap().set(sym, undefined); + } + catch (_) { + return false; + } + return true; +})(); +const supportBigInt = typeof BigInt !== 'undefined'; +function isReferenceType(v) { + return (typeof v === 'object' && v !== null) || typeof v === 'function'; +} +const _require = (function () { + let nativeRequire; + if (typeof __webpack_public_path__ !== 'undefined') { + nativeRequire = (function () { + return typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : undefined; + })(); + } + else { + nativeRequire = (function () { + return typeof __webpack_public_path__ !== 'undefined' ? (typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : undefined) : (typeof require !== 'undefined' ? require : undefined); + })(); + } + return nativeRequire; +})(); +const _MessageChannel = typeof MessageChannel === 'function' + ? MessageChannel + : (function () { + try { + return _require('worker_threads').MessageChannel; + } + catch (_) { } + return undefined; + })(); +const _setImmediate = typeof setImmediate === 'function' + ? setImmediate + : function (callback) { + if (typeof callback !== 'function') { + throw new TypeError('The "callback" argument must be of type function'); + } + if (_MessageChannel) { + let channel = new _MessageChannel(); + channel.port1.onmessage = function () { + channel.port1.onmessage = null; + channel = undefined; + callback(); + }; + channel.port2.postMessage(null); + } + else { + setTimeout(callback, 0); + } + }; +const _Buffer = typeof Buffer === 'function' + ? Buffer + : (function () { + try { + return _require('buffer').Buffer; + } + catch (_) { } + return undefined; + })(); +const version = "1.10.0"; +const NODE_API_SUPPORTED_VERSION_MIN = 1; +const NODE_API_SUPPORTED_VERSION_MAX = 10; +const NAPI_VERSION_EXPERIMENTAL = 2147483647; +const NODE_API_DEFAULT_MODULE_API_VERSION = 8; + +class Handle { + constructor(id, value) { + this.id = id; + this.value = value; + } + data() { + return getExternalValue(this.value); + } + isNumber() { + return typeof this.value === 'number'; + } + isBigInt() { + return typeof this.value === 'bigint'; + } + isString() { + return typeof this.value === 'string'; + } + isFunction() { + return typeof this.value === 'function'; + } + isExternal() { + return isExternal(this.value); + } + isObject() { + return typeof this.value === 'object' && this.value !== null; + } + isArray() { + return Array.isArray(this.value); + } + isArrayBuffer() { + return (this.value instanceof ArrayBuffer); + } + isTypedArray() { + return (ArrayBuffer.isView(this.value)) && !(this.value instanceof DataView); + } + isBuffer(BufferConstructor) { + if (ArrayBuffer.isView(this.value)) + return true; + BufferConstructor !== null && BufferConstructor !== void 0 ? BufferConstructor : (BufferConstructor = _Buffer); + return typeof BufferConstructor === 'function' && BufferConstructor.isBuffer(this.value); + } + isDataView() { + return (this.value instanceof DataView); + } + isDate() { + return (this.value instanceof Date); + } + isPromise() { + return (this.value instanceof Promise); + } + isBoolean() { + return typeof this.value === 'boolean'; + } + isUndefined() { + return this.value === undefined; + } + isSymbol() { + return typeof this.value === 'symbol'; + } + isNull() { + return this.value === null; + } + dispose() { + this.value = undefined; + } +} +class ConstHandle extends Handle { + constructor(id, value) { + super(id, value); + } + dispose() { } +} +class HandleStore { + constructor() { + this._values = [ + undefined, + HandleStore.UNDEFINED, + HandleStore.NULL, + HandleStore.FALSE, + HandleStore.TRUE, + HandleStore.GLOBAL + ]; + this._next = HandleStore.MIN_ID; + } + push(value) { + let h; + const next = this._next; + const values = this._values; + if (next < values.length) { + h = values[next]; + h.value = value; + } + else { + h = new Handle(next, value); + values[next] = h; + } + this._next++; + return h; + } + erase(start, end) { + this._next = start; + const values = this._values; + for (let i = start; i < end; ++i) { + values[i].dispose(); + } + } + get(id) { + return this._values[id]; + } + swap(a, b) { + const values = this._values; + const h = values[a]; + values[a] = values[b]; + values[a].id = Number(a); + values[b] = h; + h.id = Number(b); + } + dispose() { + this._values.length = HandleStore.MIN_ID; + this._next = HandleStore.MIN_ID; + } +} +HandleStore.UNDEFINED = new ConstHandle(1, undefined); +HandleStore.NULL = new ConstHandle(2, null); +HandleStore.FALSE = new ConstHandle(3, false); +HandleStore.TRUE = new ConstHandle(4, true); +HandleStore.GLOBAL = new ConstHandle(5, _global); +HandleStore.MIN_ID = 6; + +class HandleScope { + constructor(handleStore, id, parentScope, start, end = start) { + this.handleStore = handleStore; + this.id = id; + this.parent = parentScope; + this.child = null; + if (parentScope !== null) + parentScope.child = this; + this.start = start; + this.end = end; + this._escapeCalled = false; + this.callbackInfo = { + thiz: undefined, + data: 0, + args: undefined, + fn: undefined + }; + } + add(value) { + const h = this.handleStore.push(value); + this.end++; + return h; + } + addExternal(data) { + return this.add(new External(data)); + } + dispose() { + if (this._escapeCalled) + this._escapeCalled = false; + if (this.start === this.end) + return; + this.handleStore.erase(this.start, this.end); + } + escape(handle) { + if (this._escapeCalled) + return null; + this._escapeCalled = true; + if (handle < this.start || handle >= this.end) { + return null; + } + this.handleStore.swap(handle, this.start); + const h = this.handleStore.get(this.start); + this.start++; + this.parent.end++; + return h; + } + escapeCalled() { + return this._escapeCalled; + } +} + +class ScopeStore { + constructor() { + this._rootScope = new HandleScope(null, 0, null, 1, HandleStore.MIN_ID); + this.currentScope = this._rootScope; + this._values = [undefined]; + } + get(id) { + return this._values[id]; + } + openScope(handleStore) { + const currentScope = this.currentScope; + let scope = currentScope.child; + if (scope !== null) { + scope.start = scope.end = currentScope.end; + } + else { + const id = currentScope.id + 1; + scope = new HandleScope(handleStore, id, currentScope, currentScope.end); + this._values[id] = scope; + } + this.currentScope = scope; + return scope; + } + closeScope() { + const scope = this.currentScope; + this.currentScope = scope.parent; + scope.dispose(); + } + dispose() { + this.currentScope = this._rootScope; + this._values.length = 1; + } +} + +class RefTracker { + constructor() { + this._next = null; + this._prev = null; + } + dispose() { } + finalize() { } + link(list) { + this._prev = list; + this._next = list._next; + if (this._next !== null) { + this._next._prev = this; + } + list._next = this; + } + unlink() { + if (this._prev !== null) { + this._prev._next = this._next; + } + if (this._next !== null) { + this._next._prev = this._prev; + } + this._prev = null; + this._next = null; + } + static finalizeAll(list) { + while (list._next !== null) { + list._next.finalize(); + } + } +} + +class Finalizer { + constructor(envObject, _finalizeCallback = 0, _finalizeData = 0, _finalizeHint = 0) { + this.envObject = envObject; + this._finalizeCallback = _finalizeCallback; + this._finalizeData = _finalizeData; + this._finalizeHint = _finalizeHint; + this._makeDynCall_vppp = envObject.makeDynCall_vppp; + } + callback() { return this._finalizeCallback; } + data() { return this._finalizeData; } + hint() { return this._finalizeHint; } + resetEnv() { + this.envObject = undefined; + } + resetFinalizer() { + this._finalizeCallback = 0; + this._finalizeData = 0; + this._finalizeHint = 0; + } + callFinalizer() { + const finalize_callback = this._finalizeCallback; + const finalize_data = this._finalizeData; + const finalize_hint = this._finalizeHint; + this.resetFinalizer(); + if (!finalize_callback) + return; + const fini = Number(finalize_callback); + if (!this.envObject) { + this._makeDynCall_vppp(fini)(0, finalize_data, finalize_hint); + } + else { + this.envObject.callFinalizer(fini, finalize_data, finalize_hint); + } + } + dispose() { + this.envObject = undefined; + this._makeDynCall_vppp = undefined; + } +} + +class TrackedFinalizer extends RefTracker { + static create(envObject, finalize_callback, finalize_data, finalize_hint) { + const finalizer = new TrackedFinalizer(envObject, finalize_callback, finalize_data, finalize_hint); + finalizer.link(envObject.finalizing_reflist); + return finalizer; + } + constructor(envObject, finalize_callback, finalize_data, finalize_hint) { + super(); + this._finalizer = new Finalizer(envObject, finalize_callback, finalize_data, finalize_hint); + } + data() { + return this._finalizer.data(); + } + dispose() { + if (!this._finalizer) + return; + this.unlink(); + this._finalizer.envObject.dequeueFinalizer(this); + this._finalizer.dispose(); + this._finalizer = undefined; + super.dispose(); + } + finalize() { + this.unlink(); + let error; + let caught = false; + try { + this._finalizer.callFinalizer(); + } + catch (err) { + caught = true; + error = err; + } + this.dispose(); + if (caught) { + throw error; + } + } +} + +function throwNodeApiVersionError(moduleName, moduleApiVersion) { + const errorMessage = `${moduleName} requires Node-API version ${moduleApiVersion}, but this version of Node.js only supports version ${NODE_API_SUPPORTED_VERSION_MAX} add-ons.`; + throw new Error(errorMessage); +} +function handleThrow(envObject, value) { + if (envObject.terminatedOrTerminating()) { + return; + } + throw value; +} +class Env { + constructor(ctx, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort) { + this.ctx = ctx; + this.moduleApiVersion = moduleApiVersion; + this.makeDynCall_vppp = makeDynCall_vppp; + this.makeDynCall_vp = makeDynCall_vp; + this.abort = abort; + this.openHandleScopes = 0; + this.instanceData = null; + this.tryCatch = new TryCatch(); + this.refs = 1; + this.reflist = new RefTracker(); + this.finalizing_reflist = new RefTracker(); + this.pendingFinalizers = []; + this.lastError = { + errorCode: 0, + engineErrorCode: 0, + engineReserved: 0 + }; + this.inGcFinalizer = false; + this._bindingMap = new WeakMap(); + this.id = 0; + } + canCallIntoJs() { + return true; + } + terminatedOrTerminating() { + return !this.canCallIntoJs(); + } + ref() { + this.refs++; + } + unref() { + this.refs--; + if (this.refs === 0) { + this.dispose(); + } + } + ensureHandle(value) { + return this.ctx.ensureHandle(value); + } + ensureHandleId(value) { + return this.ensureHandle(value).id; + } + clearLastError() { + const lastError = this.lastError; + if (lastError.errorCode !== 0) + lastError.errorCode = 0; + if (lastError.engineErrorCode !== 0) + lastError.engineErrorCode = 0; + if (lastError.engineReserved !== 0) + lastError.engineReserved = 0; + return 0; + } + setLastError(error_code, engine_error_code = 0, engine_reserved = 0) { + const lastError = this.lastError; + if (lastError.errorCode !== error_code) + lastError.errorCode = error_code; + if (lastError.engineErrorCode !== engine_error_code) + lastError.engineErrorCode = engine_error_code; + if (lastError.engineReserved !== engine_reserved) + lastError.engineReserved = engine_reserved; + return error_code; + } + getReturnStatus() { + return !this.tryCatch.hasCaught() ? 0 : this.setLastError(10); + } + callIntoModule(fn, handleException = handleThrow) { + const openHandleScopesBefore = this.openHandleScopes; + this.clearLastError(); + const r = fn(this); + if (openHandleScopesBefore !== this.openHandleScopes) { + this.abort('open_handle_scopes != open_handle_scopes_before'); + } + if (this.tryCatch.hasCaught()) { + const err = this.tryCatch.extractException(); + handleException(this, err); + } + return r; + } + invokeFinalizerFromGC(finalizer) { + if (this.moduleApiVersion !== NAPI_VERSION_EXPERIMENTAL) { + this.enqueueFinalizer(finalizer); + } + else { + const saved = this.inGcFinalizer; + this.inGcFinalizer = true; + try { + finalizer.finalize(); + } + finally { + this.inGcFinalizer = saved; + } + } + } + checkGCAccess() { + if (this.moduleApiVersion === NAPI_VERSION_EXPERIMENTAL && this.inGcFinalizer) { + this.abort('Finalizer is calling a function that may affect GC state.\n' + + 'The finalizers are run directly from GC and must not affect GC ' + + 'state.\n' + + 'Use `node_api_post_finalizer` from inside of the finalizer to work ' + + 'around this issue.\n' + + 'It schedules the call as a new task in the event loop.'); + } + } + enqueueFinalizer(finalizer) { + if (this.pendingFinalizers.indexOf(finalizer) === -1) { + this.pendingFinalizers.push(finalizer); + } + } + dequeueFinalizer(finalizer) { + const index = this.pendingFinalizers.indexOf(finalizer); + if (index !== -1) { + this.pendingFinalizers.splice(index, 1); + } + } + deleteMe() { + RefTracker.finalizeAll(this.finalizing_reflist); + RefTracker.finalizeAll(this.reflist); + this.tryCatch.extractException(); + this.ctx.envStore.remove(this.id); + } + dispose() { + if (this.id === 0) + return; + this.deleteMe(); + this.finalizing_reflist.dispose(); + this.reflist.dispose(); + this.id = 0; + } + initObjectBinding(value) { + const binding = { + wrapped: 0, + tag: null + }; + this._bindingMap.set(value, binding); + return binding; + } + getObjectBinding(value) { + if (this._bindingMap.has(value)) { + return this._bindingMap.get(value); + } + return this.initObjectBinding(value); + } + setInstanceData(data, finalize_cb, finalize_hint) { + if (this.instanceData) { + this.instanceData.dispose(); + } + this.instanceData = TrackedFinalizer.create(this, finalize_cb, data, finalize_hint); + } + getInstanceData() { + return this.instanceData ? this.instanceData.data() : 0; + } +} +class NodeEnv extends Env { + constructor(ctx, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding) { + super(ctx, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort); + this.filename = filename; + this.nodeBinding = nodeBinding; + this.destructing = false; + this.finalizationScheduled = false; + } + deleteMe() { + this.destructing = true; + this.drainFinalizerQueue(); + super.deleteMe(); + } + canCallIntoJs() { + return super.canCallIntoJs() && this.ctx.canCallIntoJs(); + } + triggerFatalException(err) { + if (this.nodeBinding) { + this.nodeBinding.napi.fatalException(err); + } + else { + if (typeof process === 'object' && process !== null && typeof process._fatalException === 'function') { + const handled = process._fatalException(err); + if (!handled) { + console.error(err); + process.exit(1); + } + } + else { + throw err; + } + } + } + callbackIntoModule(enforceUncaughtExceptionPolicy, fn) { + return this.callIntoModule(fn, (envObject, err) => { + if (envObject.terminatedOrTerminating()) { + return; + } + const hasProcess = typeof process === 'object' && process !== null; + const hasForceFlag = hasProcess ? Boolean(process.execArgv && (process.execArgv.indexOf('--force-node-api-uncaught-exceptions-policy') !== -1)) : false; + if (envObject.moduleApiVersion < 10 && !hasForceFlag && !enforceUncaughtExceptionPolicy) { + const warn = hasProcess && typeof process.emitWarning === 'function' + ? process.emitWarning + : function (warning, type, code) { + if (warning instanceof Error) { + console.warn(warning.toString()); + } + else { + const prefix = code ? `[${code}] ` : ''; + console.warn(`${prefix}${type || 'Warning'}: ${warning}`); + } + }; + warn('Uncaught Node-API callback exception detected, please run node with option --force-node-api-uncaught-exceptions-policy=true to handle those exceptions properly.', 'DeprecationWarning', 'DEP0168'); + return; + } + envObject.triggerFatalException(err); + }); + } + callFinalizer(cb, data, hint) { + this.callFinalizerInternal(1, cb, data, hint); + } + callFinalizerInternal(forceUncaught, cb, data, hint) { + const f = this.makeDynCall_vppp(cb); + const env = this.id; + const scope = this.ctx.openScope(this); + try { + this.callbackIntoModule(Boolean(forceUncaught), () => { f(env, data, hint); }); + } + finally { + this.ctx.closeScope(this, scope); + } + } + enqueueFinalizer(finalizer) { + super.enqueueFinalizer(finalizer); + if (!this.finalizationScheduled && !this.destructing) { + this.finalizationScheduled = true; + this.ref(); + _setImmediate(() => { + this.finalizationScheduled = false; + this.unref(); + this.drainFinalizerQueue(); + }); + } + } + drainFinalizerQueue() { + while (this.pendingFinalizers.length > 0) { + const refTracker = this.pendingFinalizers.shift(); + refTracker.finalize(); + } + } +} +function newEnv(ctx, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding) { + moduleApiVersion = typeof moduleApiVersion !== 'number' ? NODE_API_DEFAULT_MODULE_API_VERSION : moduleApiVersion; + if (moduleApiVersion < NODE_API_DEFAULT_MODULE_API_VERSION) { + moduleApiVersion = NODE_API_DEFAULT_MODULE_API_VERSION; + } + else if (moduleApiVersion > NODE_API_SUPPORTED_VERSION_MAX && moduleApiVersion !== NAPI_VERSION_EXPERIMENTAL) { + throwNodeApiVersionError(filename, moduleApiVersion); + } + const env = new NodeEnv(ctx, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding); + ctx.envStore.add(env); + ctx.addCleanupHook(env, () => { env.unref(); }, 0); + return env; +} + +class EmnapiError extends Error { + constructor(message) { + super(message); + const ErrorConstructor = new.target; + const proto = ErrorConstructor.prototype; + if (!(this instanceof EmnapiError)) { + const setPrototypeOf = Object.setPrototypeOf; + if (typeof setPrototypeOf === 'function') { + setPrototypeOf.call(Object, this, proto); + } + else { + this.__proto__ = proto; + } + if (typeof Error.captureStackTrace === 'function') { + Error.captureStackTrace(this, ErrorConstructor); + } + } + } +} +Object.defineProperty(EmnapiError.prototype, 'name', { + configurable: true, + writable: true, + value: 'EmnapiError' +}); +class NotSupportWeakRefError extends EmnapiError { + constructor(api, message) { + super(`${api}: The current runtime does not support "FinalizationRegistry" and "WeakRef".${message ? ` ${message}` : ''}`); + } +} +Object.defineProperty(NotSupportWeakRefError.prototype, 'name', { + configurable: true, + writable: true, + value: 'NotSupportWeakRefError' +}); +class NotSupportBufferError extends EmnapiError { + constructor(api, message) { + super(`${api}: The current runtime does not support "Buffer". Consider using buffer polyfill to make sure \`globalThis.Buffer\` is defined.${message ? ` ${message}` : ''}`); + } +} +Object.defineProperty(NotSupportBufferError.prototype, 'name', { + configurable: true, + writable: true, + value: 'NotSupportBufferError' +}); + +class StrongRef { + constructor(value) { + this._value = value; + } + deref() { + return this._value; + } + dispose() { + this._value = undefined; + } +} +class Persistent { + constructor(value) { + this._ref = new StrongRef(value); + } + setWeak(param, callback) { + if (!supportFinalizer || this._ref === undefined || this._ref instanceof WeakRef) + return; + const value = this._ref.deref(); + try { + Persistent._registry.register(value, this, this); + const weakRef = new WeakRef(value); + this._ref.dispose(); + this._ref = weakRef; + this._param = param; + this._callback = callback; + } + catch (err) { + if (typeof value === 'symbol') ; + else { + throw err; + } + } + } + clearWeak() { + if (!supportFinalizer || this._ref === undefined) + return; + if (this._ref instanceof WeakRef) { + try { + Persistent._registry.unregister(this); + } + catch (_) { } + this._param = undefined; + this._callback = undefined; + const value = this._ref.deref(); + if (value === undefined) { + this._ref = value; + } + else { + this._ref = new StrongRef(value); + } + } + } + reset() { + if (supportFinalizer) { + try { + Persistent._registry.unregister(this); + } + catch (_) { } + } + this._param = undefined; + this._callback = undefined; + if (this._ref instanceof StrongRef) { + this._ref.dispose(); + } + this._ref = undefined; + } + isEmpty() { + return this._ref === undefined; + } + deref() { + if (this._ref === undefined) + return undefined; + return this._ref.deref(); + } +} +Persistent._registry = supportFinalizer + ? new FinalizationRegistry((value) => { + value._ref = undefined; + const callback = value._callback; + const param = value._param; + value._callback = undefined; + value._param = undefined; + if (typeof callback === 'function') { + callback(param); + } + }) + : undefined; + +var ReferenceOwnership; +(function (ReferenceOwnership) { + ReferenceOwnership[ReferenceOwnership["kRuntime"] = 0] = "kRuntime"; + ReferenceOwnership[ReferenceOwnership["kUserland"] = 1] = "kUserland"; +})(ReferenceOwnership || (ReferenceOwnership = {})); +function canBeHeldWeakly(value) { + return value.isObject() || value.isFunction() || value.isSymbol(); +} +class Reference extends RefTracker { + static weakCallback(ref) { + ref.persistent.reset(); + ref.invokeFinalizerFromGC(); + } + static create(envObject, handle_id, initialRefcount, ownership, _unused1, _unused2, _unused3) { + const ref = new Reference(envObject, handle_id, initialRefcount, ownership); + envObject.ctx.refStore.add(ref); + ref.link(envObject.reflist); + return ref; + } + constructor(envObject, handle_id, initialRefcount, ownership) { + super(); + this.envObject = envObject; + this._refcount = initialRefcount; + this._ownership = ownership; + const handle = envObject.ctx.handleStore.get(handle_id); + this.canBeWeak = canBeHeldWeakly(handle); + this.persistent = new Persistent(handle.value); + this.id = 0; + if (initialRefcount === 0) { + this._setWeak(); + } + } + ref() { + if (this.persistent.isEmpty()) { + return 0; + } + if (++this._refcount === 1 && this.canBeWeak) { + this.persistent.clearWeak(); + } + return this._refcount; + } + unref() { + if (this.persistent.isEmpty() || this._refcount === 0) { + return 0; + } + if (--this._refcount === 0) { + this._setWeak(); + } + return this._refcount; + } + get(envObject = this.envObject) { + if (this.persistent.isEmpty()) { + return 0; + } + const obj = this.persistent.deref(); + const handle = envObject.ensureHandle(obj); + return handle.id; + } + resetFinalizer() { } + data() { return 0; } + refcount() { return this._refcount; } + ownership() { return this._ownership; } + callUserFinalizer() { } + invokeFinalizerFromGC() { + this.finalize(); + } + _setWeak() { + if (this.canBeWeak) { + this.persistent.setWeak(this, Reference.weakCallback); + } + else { + this.persistent.reset(); + } + } + finalize() { + this.persistent.reset(); + const deleteMe = this._ownership === ReferenceOwnership.kRuntime; + this.unlink(); + this.callUserFinalizer(); + if (deleteMe) { + this.dispose(); + } + } + dispose() { + if (this.id === 0) + return; + this.unlink(); + this.persistent.reset(); + this.envObject.ctx.refStore.remove(this.id); + super.dispose(); + this.envObject = undefined; + this.id = 0; + } +} +class ReferenceWithData extends Reference { + static create(envObject, value, initialRefcount, ownership, data) { + const reference = new ReferenceWithData(envObject, value, initialRefcount, ownership, data); + envObject.ctx.refStore.add(reference); + reference.link(envObject.reflist); + return reference; + } + constructor(envObject, value, initialRefcount, ownership, _data) { + super(envObject, value, initialRefcount, ownership); + this._data = _data; + } + data() { + return this._data; + } +} +class ReferenceWithFinalizer extends Reference { + static create(envObject, value, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint) { + const reference = new ReferenceWithFinalizer(envObject, value, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint); + envObject.ctx.refStore.add(reference); + reference.link(envObject.finalizing_reflist); + return reference; + } + constructor(envObject, value, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint) { + super(envObject, value, initialRefcount, ownership); + this._finalizer = new Finalizer(envObject, finalize_callback, finalize_data, finalize_hint); + } + resetFinalizer() { + this._finalizer.resetFinalizer(); + } + data() { + return this._finalizer.data(); + } + callUserFinalizer() { + this._finalizer.callFinalizer(); + } + invokeFinalizerFromGC() { + this._finalizer.envObject.invokeFinalizerFromGC(this); + } + dispose() { + if (!this._finalizer) + return; + this._finalizer.envObject.dequeueFinalizer(this); + this._finalizer.dispose(); + super.dispose(); + this._finalizer = undefined; + } +} + +class Deferred { + static create(ctx, value) { + const deferred = new Deferred(ctx, value); + ctx.deferredStore.add(deferred); + return deferred; + } + constructor(ctx, value) { + this.id = 0; + this.ctx = ctx; + this.value = value; + } + resolve(value) { + this.value.resolve(value); + this.dispose(); + } + reject(reason) { + this.value.reject(reason); + this.dispose(); + } + dispose() { + this.ctx.deferredStore.remove(this.id); + this.id = 0; + this.value = null; + this.ctx = null; + } +} + +class Store { + constructor() { + this._values = [undefined]; + this._values.length = 4; + this._size = 1; + this._freeList = []; + } + add(value) { + let id; + if (this._freeList.length) { + id = this._freeList.shift(); + } + else { + id = this._size; + this._size++; + const capacity = this._values.length; + if (id >= capacity) { + this._values.length = capacity + (capacity >> 1) + 16; + } + } + value.id = id; + this._values[id] = value; + } + get(id) { + return this._values[id]; + } + has(id) { + return this._values[id] !== undefined; + } + remove(id) { + const value = this._values[id]; + if (value) { + value.id = 0; + this._values[id] = undefined; + this._freeList.push(Number(id)); + } + } + dispose() { + for (let i = 1; i < this._size; ++i) { + const value = this._values[i]; + value === null || value === void 0 ? void 0 : value.dispose(); + } + this._values = [undefined]; + this._size = 1; + this._freeList = []; + } +} + +const kMaxReasonableBytes = BigInt(1) << BigInt(60); +const kMinReasonableBytes = -kMaxReasonableBytes; +class ExternalMemory { + constructor(onChange) { + this.total = BigInt(0); + this.onChange = onChange !== null && onChange !== void 0 ? onChange : null; + } + adjust(changeInBytes) { + changeInBytes = BigInt(changeInBytes); + if (!(kMinReasonableBytes <= changeInBytes && changeInBytes < kMaxReasonableBytes)) { + throw new RangeError(`changeInBytes ${changeInBytes} is out of reasonable range`); + } + const old = this.total; + this.total += changeInBytes; + const amount = this.total; + const onChange = this.onChange; + if (changeInBytes) { + onChange === null || onChange === void 0 ? void 0 : onChange(amount, old, changeInBytes); + } + return amount; + } +} + +class CleanupHookCallback { + constructor(envObject, fn, arg, order) { + this.envObject = envObject; + this.fn = fn; + this.arg = arg; + this.order = order; + } +} +class CleanupQueue { + constructor() { + this._cleanupHooks = []; + this._cleanupHookCounter = 0; + } + empty() { + return this._cleanupHooks.length === 0; + } + add(envObject, fn, arg) { + if (this._cleanupHooks.filter((hook) => (hook.envObject === envObject && hook.fn === fn && hook.arg === arg)).length > 0) { + throw new Error('Can not add same fn and arg twice'); + } + this._cleanupHooks.push(new CleanupHookCallback(envObject, fn, arg, this._cleanupHookCounter++)); + } + remove(envObject, fn, arg) { + for (let i = 0; i < this._cleanupHooks.length; ++i) { + const hook = this._cleanupHooks[i]; + if (hook.envObject === envObject && hook.fn === fn && hook.arg === arg) { + this._cleanupHooks.splice(i, 1); + return; + } + } + } + drain() { + const hooks = this._cleanupHooks.slice(); + hooks.sort((a, b) => (b.order - a.order)); + for (let i = 0; i < hooks.length; ++i) { + const cb = hooks[i]; + if (typeof cb.fn === 'number') { + cb.envObject.makeDynCall_vp(cb.fn)(cb.arg); + } + else { + cb.fn(cb.arg); + } + this._cleanupHooks.splice(this._cleanupHooks.indexOf(cb), 1); + } + } + dispose() { + this._cleanupHooks.length = 0; + this._cleanupHookCounter = 0; + } +} +class NodejsWaitingRequestCounter { + constructor() { + this.refHandle = new _MessageChannel().port1; + this.count = 0; + } + increase() { + if (this.count === 0) { + if (this.refHandle.ref) { + this.refHandle.ref(); + } + } + this.count++; + } + decrease() { + if (this.count === 0) + return; + if (this.count === 1) { + if (this.refHandle.unref) { + this.refHandle.unref(); + } + } + this.count--; + } +} +class Context { + constructor(options) { + this._isStopping = false; + this._canCallIntoJs = true; + this._suppressDestroy = false; + this.envStore = new Store(); + this.scopeStore = new ScopeStore(); + this.refStore = new Store(); + this.deferredStore = new Store(); + this.handleStore = new HandleStore(); + this.feature = { + supportReflect, + supportFinalizer, + supportWeakSymbol, + supportBigInt, + supportNewFunction, + canSetFunctionName, + setImmediate: _setImmediate, + Buffer: _Buffer, + MessageChannel: _MessageChannel + }; + this.cleanupQueue = new CleanupQueue(); + this._externalMemory = new ExternalMemory(options === null || options === void 0 ? void 0 : options.onExternalMemoryChange); + if (typeof process === 'object' && process !== null && typeof process.once === 'function') { + this.refCounter = new NodejsWaitingRequestCounter(); + process.once('beforeExit', () => { + if (!this._suppressDestroy) { + this.destroy(); + } + }); + } + } + suppressDestroy() { + this._suppressDestroy = true; + } + getRuntimeVersions() { + return { + version, + NODE_API_SUPPORTED_VERSION_MAX, + NAPI_VERSION_EXPERIMENTAL, + NODE_API_DEFAULT_MODULE_API_VERSION + }; + } + createNotSupportWeakRefError(api, message) { + return new NotSupportWeakRefError(api, message); + } + createNotSupportBufferError(api, message) { + return new NotSupportBufferError(api, message); + } + createReference(envObject, handle_id, initialRefcount, ownership) { + return Reference.create(envObject, handle_id, initialRefcount, ownership); + } + createReferenceWithData(envObject, handle_id, initialRefcount, ownership, data) { + return ReferenceWithData.create(envObject, handle_id, initialRefcount, ownership, data); + } + createReferenceWithFinalizer(envObject, handle_id, initialRefcount, ownership, finalize_callback = 0, finalize_data = 0, finalize_hint = 0) { + return ReferenceWithFinalizer.create(envObject, handle_id, initialRefcount, ownership, finalize_callback, finalize_data, finalize_hint); + } + createDeferred(value) { + return Deferred.create(this, value); + } + adjustAmountOfExternalAllocatedMemory(changeInBytes) { + return this._externalMemory.adjust(changeInBytes); + } + createEnv(filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding) { + return newEnv(this, filename, moduleApiVersion, makeDynCall_vppp, makeDynCall_vp, abort, nodeBinding); + } + createTrackedFinalizer(envObject, finalize_callback, finalize_data, finalize_hint) { + return TrackedFinalizer.create(envObject, finalize_callback, finalize_data, finalize_hint); + } + getCurrentScope() { + return this.scopeStore.currentScope; + } + addToCurrentScope(value) { + return this.scopeStore.currentScope.add(value); + } + openScope(envObject) { + const scope = this.scopeStore.openScope(this.handleStore); + if (envObject) + envObject.openHandleScopes++; + return scope; + } + closeScope(envObject, _scope) { + if (envObject && envObject.openHandleScopes === 0) + return; + this.scopeStore.closeScope(); + if (envObject) + envObject.openHandleScopes--; + } + ensureHandle(value) { + switch (value) { + case undefined: return HandleStore.UNDEFINED; + case null: return HandleStore.NULL; + case true: return HandleStore.TRUE; + case false: return HandleStore.FALSE; + case _global: return HandleStore.GLOBAL; + } + return this.addToCurrentScope(value); + } + addCleanupHook(envObject, fn, arg) { + this.cleanupQueue.add(envObject, fn, arg); + } + removeCleanupHook(envObject, fn, arg) { + this.cleanupQueue.remove(envObject, fn, arg); + } + runCleanup() { + while (!this.cleanupQueue.empty()) { + this.cleanupQueue.drain(); + } + } + increaseWaitingRequestCounter() { + var _a; + (_a = this.refCounter) === null || _a === void 0 ? void 0 : _a.increase(); + } + decreaseWaitingRequestCounter() { + var _a; + (_a = this.refCounter) === null || _a === void 0 ? void 0 : _a.decrease(); + } + setCanCallIntoJs(value) { + this._canCallIntoJs = value; + } + setStopping(value) { + this._isStopping = value; + } + canCallIntoJs() { + return this._canCallIntoJs && !this._isStopping; + } + destroy() { + this.setStopping(true); + this.setCanCallIntoJs(false); + this.runCleanup(); + } +} +let defaultContext; +function createContext(options) { + return new Context(options); +} +function getDefaultContext() { + if (!defaultContext) { + defaultContext = createContext(); + } + return defaultContext; +} + +export { ConstHandle, Context, Deferred, EmnapiError, Env, External, Finalizer, Handle, HandleScope, HandleStore, NAPI_VERSION_EXPERIMENTAL, NODE_API_DEFAULT_MODULE_API_VERSION, NODE_API_SUPPORTED_VERSION_MAX, NODE_API_SUPPORTED_VERSION_MIN, NodeEnv, NotSupportBufferError, NotSupportWeakRefError, Persistent, RefTracker, Reference, ReferenceOwnership, ReferenceWithData, ReferenceWithFinalizer, ScopeStore, Store, TrackedFinalizer, TryCatch, createContext, getDefaultContext, getExternalValue, isExternal, isReferenceType, version }; diff --git a/node_modules/@emnapi/runtime/index.js b/node_modules/@emnapi/runtime/index.js new file mode 100644 index 00000000..efd0f2fe --- /dev/null +++ b/node_modules/@emnapi/runtime/index.js @@ -0,0 +1,5 @@ +if (typeof process !== 'undefined' && process.env.NODE_ENV === 'production') { + module.exports = require('./dist/emnapi.cjs.min.js') +} else { + module.exports = require('./dist/emnapi.cjs.js') +} diff --git a/node_modules/@emnapi/runtime/package.json b/node_modules/@emnapi/runtime/package.json new file mode 100644 index 00000000..335bb8c4 --- /dev/null +++ b/node_modules/@emnapi/runtime/package.json @@ -0,0 +1,48 @@ +{ + "name": "@emnapi/runtime", + "version": "1.10.0", + "description": "emnapi runtime", + "main": "index.js", + "module": "./dist/emnapi.esm-bundler.js", + "types": "./dist/emnapi.d.ts", + "sideEffects": false, + "exports": { + ".": { + "types": { + "module": "./dist/emnapi.d.ts", + "import": "./dist/emnapi.d.mts", + "default": "./dist/emnapi.d.ts" + }, + "module": "./dist/emnapi.esm-bundler.js", + "import": "./dist/emnapi.mjs", + "default": "./index.js" + }, + "./dist/emnapi.cjs.min": { + "types": "./dist/emnapi.d.ts", + "default": "./dist/emnapi.cjs.min.js" + }, + "./dist/emnapi.min.mjs": { + "types": "./dist/emnapi.d.mts", + "default": "./dist/emnapi.min.mjs" + } + }, + "dependencies": { + "tslib": "^2.4.0" + }, + "scripts": { + "build": "node ./script/build.js" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/toyobayashi/emnapi.git" + }, + "author": "toyobayashi", + "license": "MIT", + "bugs": { + "url": "https://github.com/toyobayashi/emnapi/issues" + }, + "homepage": "https://github.com/toyobayashi/emnapi#readme", + "publishConfig": { + "access": "public" + } +} diff --git a/node_modules/@emnapi/wasi-threads/LICENSE b/node_modules/@emnapi/wasi-threads/LICENSE new file mode 100644 index 00000000..05a59441 --- /dev/null +++ b/node_modules/@emnapi/wasi-threads/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021-present Toyobayashi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/@emnapi/wasi-threads/README.md b/node_modules/@emnapi/wasi-threads/README.md new file mode 100644 index 00000000..d7ab9356 --- /dev/null +++ b/node_modules/@emnapi/wasi-threads/README.md @@ -0,0 +1,203 @@ +# @emnapi/wasi-threads + +This package makes [wasi-threads proposal](https://github.com/WebAssembly/wasi-threads) based WASI modules work in Node.js and browser. + +## Quick Start + +`index.html` + +```html + + + +``` + +If your application will block browser main thread (for example `pthread_join`), please run it in worker instead. + +```html + +``` + +`index.js` + +```js +const ENVIRONMENT_IS_NODE = + typeof process === 'object' && process !== null && + typeof process.versions === 'object' && process.versions !== null && + typeof process.versions.node === 'string'; + +(function (main) { + if (ENVIRONMENT_IS_NODE) { + main(require) + } else { + if (typeof importScripts === 'function') { + importScripts('./node_modules/@tybys/wasm-util/dist/wasm-util.js') + importScripts('./node_modules/@emnapi/wasi-threads/dist/wasi-threads.js') + } + const nodeWasi = { WASI: globalThis.wasmUtil.WASI } + const nodeWorkerThreads = { + Worker: globalThis.Worker + } + const _require = function (request) { + if (request === 'node:wasi' || request === 'wasi') return nodeWasi + if (request === 'node:worker_threads' || request === 'worker_threads') return nodeWorkerThreads + if (request === '@emnapi/wasi-threads') return globalThis.wasiThreads + throw new Error('Can not find module: ' + request) + } + main(_require) + } +})(async function (require) { + const { WASI } = require('wasi') + const { Worker } = require('worker_threads') + const { WASIThreads } = require('@emnapi/wasi-threads') + + const wasi = new WASI({ + version: 'preview1' + }) + const wasiThreads = new WASIThreads({ + wasi, + + /** + * avoid Atomics.wait() deadlock during thread creation in browser + * see https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size + */ + reuseWorker: ENVIRONMENT_IS_NODE + ? false + : { + size: 4 /** greater than actual needs (2) */, + strict: true + }, + + /** + * Synchronous thread creation + * pthread_create will not return until thread worker actually starts + */ + waitThreadStart: typeof window === 'undefined' ? 1000 : false, + + onCreateWorker: () => { + return new Worker('./worker.js', { + execArgv: ['--experimental-wasi-unstable-preview1'] + }) + } + }) + const memory = new WebAssembly.Memory({ + initial: 16777216 / 65536, + maximum: 2147483648 / 65536, + shared: true + }) + let input + const file = 'path/to/your/wasi-module.wasm' + try { + input = require('fs').readFileSync(require('path').join(__dirname, file)) + } catch (err) { + const response = await fetch(file) + input = await response.arrayBuffer() + } + let { module, instance } = await WebAssembly.instantiate(input, { + env: { memory }, + wasi_snapshot_preview1: wasi.wasiImport, + ...wasiThreads.getImportObject() + }) + + wasiThreads.setup(instance, module, memory) + await wasiThreads.preloadWorkers() + + if (typeof instance.exports._start === 'function') { + return wasi.start(instance) + } else { + wasi.initialize(instance) + // instance.exports.exported_wasm_function() + } +}) +``` + +`worker.js` + +```js +(function (main) { + const ENVIRONMENT_IS_NODE = + typeof process === 'object' && process !== null && + typeof process.versions === 'object' && process.versions !== null && + typeof process.versions.node === 'string' + + if (ENVIRONMENT_IS_NODE) { + const _require = function (request) { + return require(request) + } + + const _init = function () { + const nodeWorkerThreads = require('worker_threads') + const parentPort = nodeWorkerThreads.parentPort + + parentPort.on('message', (data) => { + globalThis.onmessage({ data }) + }) + + Object.assign(globalThis, { + self: globalThis, + require, + Worker: nodeWorkerThreads.Worker, + importScripts: function (f) { + (0, eval)(require('fs').readFileSync(f, 'utf8') + '//# sourceURL=' + f) + }, + postMessage: function (msg) { + parentPort.postMessage(msg) + } + }) + } + + main(_require, _init) + } else { + importScripts('./node_modules/@tybys/wasm-util/dist/wasm-util.js') + importScripts('./node_modules/@emnapi/wasi-threads/dist/wasi-threads.js') + + const nodeWasi = { WASI: globalThis.wasmUtil.WASI } + const _require = function (request) { + if (request === '@emnapi/wasi-threads') return globalThis.wasiThreads + if (request === 'node:wasi' || request === 'wasi') return nodeWasi + throw new Error('Can not find module: ' + request) + } + const _init = function () {} + main(_require, _init) + } +})(function main (require, init) { + init() + + const { WASI } = require('wasi') + const { ThreadMessageHandler, WASIThreads } = require('@emnapi/wasi-threads') + + const handler = new ThreadMessageHandler({ + async onLoad ({ wasmModule, wasmMemory }) { + const wasi = new WASI({ + version: 'preview1' + }) + + const wasiThreads = new WASIThreads({ + wasi, + childThread: true + }) + + const originalInstance = await WebAssembly.instantiate(wasmModule, { + env: { + memory: wasmMemory, + }, + wasi_snapshot_preview1: wasi.wasiImport, + ...wasiThreads.getImportObject() + }) + + // must call `initialize` instead of `start` in child thread + const instance = wasiThreads.initialize(originalInstance, wasmModule, wasmMemory) + + return { module: wasmModule, instance } + } + }) + + globalThis.onmessage = function (e) { + handler.handle(e) + // handle other messages + } +}) +``` diff --git a/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.js b/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.js new file mode 100644 index 00000000..fee2c5d7 --- /dev/null +++ b/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.js @@ -0,0 +1,894 @@ +const _WebAssembly = typeof WebAssembly !== 'undefined' + ? WebAssembly + : typeof WXWebAssembly !== 'undefined' + ? WXWebAssembly + : undefined; +const ENVIRONMENT_IS_NODE = typeof process === 'object' && process !== null && + typeof process.versions === 'object' && process.versions !== null && + typeof process.versions.node === 'string'; +function getPostMessage(options) { + return typeof (options === null || options === void 0 ? void 0 : options.postMessage) === 'function' + ? options.postMessage + : typeof postMessage === 'function' + ? postMessage + : undefined; +} +function serizeErrorToBuffer(sab, code, error) { + const i32array = new Int32Array(sab); + Atomics.store(i32array, 0, code); + if (code > 1 && error) { + const name = error.name; + const message = error.message; + const stack = error.stack; + const nameBuffer = new TextEncoder().encode(name); + const messageBuffer = new TextEncoder().encode(message); + const stackBuffer = new TextEncoder().encode(stack); + Atomics.store(i32array, 1, nameBuffer.length); + Atomics.store(i32array, 2, messageBuffer.length); + Atomics.store(i32array, 3, stackBuffer.length); + const buffer = new Uint8Array(sab); + buffer.set(nameBuffer, 16); + buffer.set(messageBuffer, 16 + nameBuffer.length); + buffer.set(stackBuffer, 16 + nameBuffer.length + messageBuffer.length); + } +} +function deserizeErrorFromBuffer(sab) { + var _a, _b; + const i32array = new Int32Array(sab); + const status = Atomics.load(i32array, 0); + if (status <= 1) { + return null; + } + const nameLength = Atomics.load(i32array, 1); + const messageLength = Atomics.load(i32array, 2); + const stackLength = Atomics.load(i32array, 3); + const buffer = new Uint8Array(sab); + const nameBuffer = buffer.slice(16, 16 + nameLength); + const messageBuffer = buffer.slice(16 + nameLength, 16 + nameLength + messageLength); + const stackBuffer = buffer.slice(16 + nameLength + messageLength, 16 + nameLength + messageLength + stackLength); + const name = new TextDecoder().decode(nameBuffer); + const message = new TextDecoder().decode(messageBuffer); + const stack = new TextDecoder().decode(stackBuffer); + const ErrorConstructor = (_a = globalThis[name]) !== null && _a !== void 0 ? _a : (name === 'RuntimeError' ? ((_b = _WebAssembly.RuntimeError) !== null && _b !== void 0 ? _b : Error) : Error); + const error = new ErrorConstructor(message); + Object.defineProperty(error, 'stack', { + value: stack, + writable: true, + enumerable: false, + configurable: true + }); + return error; +} +function isSharedArrayBuffer(value) { + return ((typeof SharedArrayBuffer === 'function' && value instanceof SharedArrayBuffer) || + (Object.prototype.toString.call(value) === '[object SharedArrayBuffer]')); +} +function isTrapError(e) { + try { + return e instanceof _WebAssembly.RuntimeError; + } + catch (_) { + return false; + } +} + +function createMessage(type, payload) { + return { + __emnapi__: { + type, + payload + } + }; +} + +const WASI_THREADS_MAX_TID = 0x1FFFFFFF; +function checkSharedWasmMemory(wasmMemory) { + if (wasmMemory) { + if (!isSharedArrayBuffer(wasmMemory.buffer)) { + throw new Error('Multithread features require shared wasm memory. ' + + 'Try to compile with `-matomics -mbulk-memory` and use `--import-memory --shared-memory` during linking, ' + + 'then create WebAssembly.Memory with `shared: true` option'); + } + } + else { + if (typeof SharedArrayBuffer === 'undefined') { + throw new Error('Current environment does not support SharedArrayBuffer, threads are not available!'); + } + } +} +function getReuseWorker(value) { + var _a; + if (typeof value === 'boolean') { + return value ? { size: 0, strict: false } : false; + } + if (typeof value === 'number') { + if (!(value >= 0)) { + throw new RangeError('reuseWorker: size must be a non-negative integer'); + } + return { size: value, strict: false }; + } + if (!value) { + return false; + } + const size = (_a = Number(value.size)) !== null && _a !== void 0 ? _a : 0; + const strict = Boolean(value.strict); + if (!(size > 0) && strict) { + throw new RangeError('reuseWorker: size must be set to positive integer if strict is set to true'); + } + return { size, strict }; +} +let nextWorkerID = 0; +class ThreadManager { + get nextWorkerID() { return nextWorkerID; } + constructor(options) { + var _a; + this.unusedWorkers = []; + this.runningWorkers = []; + this.pthreads = Object.create(null); + this.wasmModule = null; + this.wasmMemory = null; + this.messageEvents = new WeakMap(); + if (!options) { + throw new TypeError('ThreadManager(): options is not provided'); + } + if ('childThread' in options) { + this._childThread = Boolean(options.childThread); + } + else { + this._childThread = false; + } + if (this._childThread) { + this._onCreateWorker = undefined; + this._reuseWorker = false; + this._beforeLoad = undefined; + } + else { + this._onCreateWorker = options.onCreateWorker; + this._reuseWorker = getReuseWorker(options.reuseWorker); + this._beforeLoad = options.beforeLoad; + } + this.printErr = (_a = options.printErr) !== null && _a !== void 0 ? _a : console.error.bind(console); + this.threadSpawn = options.threadSpawn; + } + init() { + if (!this._childThread) { + this.initMainThread(); + } + } + initMainThread() { + this.preparePool(); + } + preparePool() { + if (this._reuseWorker) { + if (this._reuseWorker.size) { + let pthreadPoolSize = this._reuseWorker.size; + while (pthreadPoolSize--) { + const worker = this.allocateUnusedWorker(); + if (ENVIRONMENT_IS_NODE) { + worker.once('message', () => { }); + worker.unref(); + } + } + } + } + } + shouldPreloadWorkers() { + return !this._childThread && this._reuseWorker && this._reuseWorker.size > 0; + } + loadWasmModuleToAllWorkers() { + const promises = Array(this.unusedWorkers.length); + for (let i = 0; i < this.unusedWorkers.length; ++i) { + const worker = this.unusedWorkers[i]; + if (ENVIRONMENT_IS_NODE) + worker.ref(); + promises[i] = this.loadWasmModuleToWorker(worker).then((w) => { + if (ENVIRONMENT_IS_NODE) + worker.unref(); + return w; + }, (e) => { + if (ENVIRONMENT_IS_NODE) + worker.unref(); + throw e; + }); + } + return Promise.all(promises).catch((err) => { + this.terminateAllThreads(); + throw err; + }); + } + preloadWorkers() { + if (this.shouldPreloadWorkers()) { + return this.loadWasmModuleToAllWorkers(); + } + return Promise.resolve([]); + } + setup(wasmModule, wasmMemory) { + this.wasmModule = wasmModule; + this.wasmMemory = wasmMemory; + } + markId(worker) { + if (worker.__emnapi_tid) + return worker.__emnapi_tid; + const tid = nextWorkerID + 43; + nextWorkerID = (nextWorkerID + 1) % (WASI_THREADS_MAX_TID - 42); + this.pthreads[tid] = worker; + worker.__emnapi_tid = tid; + return tid; + } + returnWorkerToPool(worker) { + var tid = worker.__emnapi_tid; + if (tid !== undefined) { + delete this.pthreads[tid]; + } + this.unusedWorkers.push(worker); + this.runningWorkers.splice(this.runningWorkers.indexOf(worker), 1); + delete worker.__emnapi_tid; + if (ENVIRONMENT_IS_NODE) { + worker.unref(); + } + } + loadWasmModuleToWorker(worker, sab) { + if (worker.whenLoaded) + return worker.whenLoaded; + const err = this.printErr; + const beforeLoad = this._beforeLoad; + const _this = this; + worker.whenLoaded = new Promise((resolve, reject) => { + const handleError = function (e) { + let message = 'worker sent an error!'; + if (worker.__emnapi_tid !== undefined) { + message = 'worker (tid = ' + worker.__emnapi_tid + ') sent an error!'; + } + if ('message' in e) { + err(message + ' ' + e.message); + if (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1) { + try { + _this.terminateAllThreads(); + } + catch (_) { } + } + } + else { + err(message); + } + reject(e); + throw e; + }; + const handleMessage = (data) => { + if (data.__emnapi__) { + const type = data.__emnapi__.type; + const payload = data.__emnapi__.payload; + if (type === 'loaded') { + worker.loaded = true; + if (ENVIRONMENT_IS_NODE && !worker.__emnapi_tid) { + worker.unref(); + } + resolve(worker); + } + else if (type === 'cleanup-thread') { + if (payload.tid in this.pthreads) { + this.cleanThread(worker, payload.tid); + } + } + else if (type === 'spawn-thread') { + this.threadSpawn(payload.startArg, payload.errorOrTid); + } + else if (type === 'terminate-all-threads') { + this.terminateAllThreads(); + } + } + }; + worker.onmessage = (e) => { + handleMessage(e.data); + this.fireMessageEvent(worker, e); + }; + worker.onerror = handleError; + if (ENVIRONMENT_IS_NODE) { + worker.on('message', function (data) { + var _a, _b; + (_b = (_a = worker).onmessage) === null || _b === void 0 ? void 0 : _b.call(_a, { + data + }); + }); + worker.on('error', function (e) { + var _a, _b; + (_b = (_a = worker).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, e); + }); + worker.on('detachedExit', function () { }); + } + if (typeof beforeLoad === 'function') { + beforeLoad(worker); + } + try { + worker.postMessage(createMessage('load', { + wasmModule: this.wasmModule, + wasmMemory: this.wasmMemory, + sab + })); + } + catch (err) { + checkSharedWasmMemory(this.wasmMemory); + throw err; + } + }); + return worker.whenLoaded; + } + allocateUnusedWorker() { + const _onCreateWorker = this._onCreateWorker; + if (typeof _onCreateWorker !== 'function') { + throw new TypeError('`options.onCreateWorker` is not provided'); + } + const worker = _onCreateWorker({ type: 'thread', name: 'emnapi-pthread' }); + this.unusedWorkers.push(worker); + return worker; + } + getNewWorker(sab) { + if (this._reuseWorker) { + if (this.unusedWorkers.length === 0) { + if (this._reuseWorker.strict) { + if (!ENVIRONMENT_IS_NODE) { + const err = this.printErr; + err('Tried to spawn a new thread, but the thread pool is exhausted.\n' + + 'This might result in a deadlock unless some threads eventually exit or the code explicitly breaks out to the event loop.'); + return; + } + } + const worker = this.allocateUnusedWorker(); + this.loadWasmModuleToWorker(worker, sab); + } + return this.unusedWorkers.pop(); + } + const worker = this.allocateUnusedWorker(); + this.loadWasmModuleToWorker(worker, sab); + return this.unusedWorkers.pop(); + } + cleanThread(worker, tid, force) { + if (!force && this._reuseWorker) { + this.returnWorkerToPool(worker); + } + else { + delete this.pthreads[tid]; + const index = this.runningWorkers.indexOf(worker); + if (index !== -1) { + this.runningWorkers.splice(index, 1); + } + this.terminateWorker(worker); + delete worker.__emnapi_tid; + } + } + terminateWorker(worker) { + var _a; + const tid = worker.__emnapi_tid; + worker.terminate(); + (_a = this.messageEvents.get(worker)) === null || _a === void 0 ? void 0 : _a.clear(); + this.messageEvents.delete(worker); + worker.onmessage = (e) => { + if (e.data.__emnapi__) { + const err = this.printErr; + err('received "' + e.data.__emnapi__.type + '" command from terminated worker: ' + tid); + } + }; + } + terminateAllThreads() { + for (let i = 0; i < this.runningWorkers.length; ++i) { + this.terminateWorker(this.runningWorkers[i]); + } + for (let i = 0; i < this.unusedWorkers.length; ++i) { + this.terminateWorker(this.unusedWorkers[i]); + } + this.unusedWorkers = []; + this.runningWorkers = []; + this.pthreads = Object.create(null); + this.preparePool(); + } + addMessageEventListener(worker, onMessage) { + let listeners = this.messageEvents.get(worker); + if (!listeners) { + listeners = new Set(); + this.messageEvents.set(worker, listeners); + } + listeners.add(onMessage); + return () => { + listeners === null || listeners === void 0 ? void 0 : listeners.delete(onMessage); + }; + } + fireMessageEvent(worker, e) { + const listeners = this.messageEvents.get(worker); + if (!listeners) + return; + const err = this.printErr; + listeners.forEach((listener) => { + try { + listener(e); + } + catch (e) { + err(e.stack); + } + }); + } +} + +const kIsProxy = Symbol('kIsProxy'); +function createInstanceProxy(instance, memory) { + if (instance[kIsProxy]) + return instance; + const originalExports = instance.exports; + const createHandler = function (target) { + const handlers = [ + 'apply', + 'construct', + 'defineProperty', + 'deleteProperty', + 'get', + 'getOwnPropertyDescriptor', + 'getPrototypeOf', + 'has', + 'isExtensible', + 'ownKeys', + 'preventExtensions', + 'set', + 'setPrototypeOf' + ]; + const handler = {}; + for (let i = 0; i < handlers.length; i++) { + const name = handlers[i]; + handler[name] = function () { + const args = Array.prototype.slice.call(arguments, 1); + args.unshift(target); + return Reflect[name].apply(Reflect, args); + }; + } + return handler; + }; + const handler = createHandler(originalExports); + const _initialize = () => { }; + const _start = () => 0; + handler.get = function (_target, p, receiver) { + var _a; + if (p === 'memory') { + return (_a = (typeof memory === 'function' ? memory() : memory)) !== null && _a !== void 0 ? _a : Reflect.get(originalExports, p, receiver); + } + if (p === '_initialize') { + return p in originalExports ? _initialize : undefined; + } + if (p === '_start') { + return p in originalExports ? _start : undefined; + } + return Reflect.get(originalExports, p, receiver); + }; + handler.has = function (_target, p) { + if (p === 'memory') + return true; + return Reflect.has(originalExports, p); + }; + const exportsProxy = new Proxy(Object.create(null), handler); + return new Proxy(instance, { + get(target, p, receiver) { + if (p === 'exports') { + return exportsProxy; + } + if (p === kIsProxy) { + return true; + } + return Reflect.get(target, p, receiver); + } + }); +} + +const patchedWasiInstances = new WeakMap(); +class WASIThreads { + constructor(options) { + if (!options) { + throw new TypeError('WASIThreads(): options is not provided'); + } + if (!options.wasi) { + throw new TypeError('WASIThreads(): options.wasi is not provided'); + } + patchedWasiInstances.set(this, new WeakSet()); + const wasi = options.wasi; + patchWasiInstance(this, wasi); + this.wasi = wasi; + if ('childThread' in options) { + this.childThread = Boolean(options.childThread); + } + else { + this.childThread = false; + } + this.PThread = undefined; + if ('threadManager' in options) { + if (typeof options.threadManager === 'function') { + this.PThread = options.threadManager(); + } + else { + this.PThread = options.threadManager; + } + } + else { + if (!this.childThread) { + this.PThread = new ThreadManager(options); + this.PThread.init(); + } + } + let waitThreadStart = false; + if ('waitThreadStart' in options) { + waitThreadStart = typeof options.waitThreadStart === 'number' ? options.waitThreadStart : Boolean(options.waitThreadStart); + } + const postMessage = getPostMessage(options); + if (this.childThread && typeof postMessage !== 'function') { + throw new TypeError('options.postMessage is not a function'); + } + this.postMessage = postMessage; + const wasm64 = Boolean(options.wasm64); + const threadSpawn = (startArg, errorOrTid) => { + var _a; + const EAGAIN = 6; + const isNewABI = errorOrTid !== undefined; + try { + checkSharedWasmMemory(this.wasmMemory); + } + catch (err) { + (_a = this.PThread) === null || _a === void 0 ? void 0 : _a.printErr(err.stack); + if (isNewABI) { + const struct = new Int32Array(this.wasmMemory.buffer, errorOrTid, 2); + Atomics.store(struct, 0, 1); + Atomics.store(struct, 1, EAGAIN); + Atomics.notify(struct, 1); + return 1; + } + else { + return -EAGAIN; + } + } + if (!isNewABI) { + const malloc = this.wasmInstance.exports.malloc; + errorOrTid = wasm64 ? Number(malloc(BigInt(8))) : (malloc(8) >>> 0); + if (!errorOrTid) { + return -48; + } + } + const _free = this.wasmInstance.exports.free; + const free = wasm64 ? (ptr) => { _free(BigInt(ptr)); } : _free; + const struct = new Int32Array(this.wasmMemory.buffer, errorOrTid, 2); + Atomics.store(struct, 0, 0); + Atomics.store(struct, 1, 0); + if (this.childThread) { + postMessage(createMessage('spawn-thread', { + startArg, + errorOrTid: errorOrTid + })); + Atomics.wait(struct, 1, 0); + const isError = Atomics.load(struct, 0); + const result = Atomics.load(struct, 1); + if (isNewABI) { + return isError; + } + free(errorOrTid); + return isError ? -result : result; + } + const shouldWait = waitThreadStart || (waitThreadStart === 0); + let sab; + if (shouldWait) { + sab = new Int32Array(new SharedArrayBuffer(16 + 8192)); + Atomics.store(sab, 0, 0); + } + let worker; + let tid; + const PThread = this.PThread; + try { + worker = PThread.getNewWorker(sab); + if (!worker) { + throw new Error('failed to get new worker'); + } + tid = PThread.markId(worker); + if (ENVIRONMENT_IS_NODE) { + worker.unref(); + } + worker.postMessage(createMessage('start', { + tid, + arg: startArg, + sab + })); + if (shouldWait) { + if (typeof waitThreadStart === 'number') { + const waitResult = Atomics.wait(sab, 0, 0, waitThreadStart); + if (waitResult === 'timed-out') { + try { + PThread.cleanThread(worker, tid, true); + } + catch (_) { } + throw new Error('Spawning thread timed out. Please check if the worker is created successfully and if message is handled properly in the worker.'); + } + } + else { + Atomics.wait(sab, 0, 0); + } + const r = Atomics.load(sab, 0); + if (r > 1) { + try { + PThread.cleanThread(worker, tid, true); + } + catch (_) { } + throw deserizeErrorFromBuffer(sab.buffer); + } + } + } + catch (e) { + Atomics.store(struct, 0, 1); + Atomics.store(struct, 1, EAGAIN); + Atomics.notify(struct, 1); + PThread === null || PThread === void 0 ? void 0 : PThread.printErr(e.stack); + if (isNewABI) { + return 1; + } + free(errorOrTid); + return -EAGAIN; + } + Atomics.store(struct, 0, 0); + Atomics.store(struct, 1, tid); + Atomics.notify(struct, 1); + PThread.runningWorkers.push(worker); + if (!shouldWait) { + worker.whenLoaded.catch((err) => { + delete worker.whenLoaded; + PThread.cleanThread(worker, tid, true); + throw err; + }); + } + if (isNewABI) { + return 0; + } + free(errorOrTid); + return tid; + }; + this.threadSpawn = threadSpawn; + if (this.PThread) { + this.PThread.threadSpawn = threadSpawn; + } + } + getImportObject() { + return { + wasi: { + 'thread-spawn': this.threadSpawn + } + }; + } + setup(wasmInstance, wasmModule, wasmMemory) { + wasmMemory !== null && wasmMemory !== void 0 ? wasmMemory : (wasmMemory = wasmInstance.exports.memory); + this.wasmInstance = wasmInstance; + this.wasmMemory = wasmMemory; + if (this.PThread) { + this.PThread.setup(wasmModule, wasmMemory); + } + } + preloadWorkers() { + if (this.PThread) { + return this.PThread.preloadWorkers(); + } + return Promise.resolve([]); + } + initialize(instance, module, memory) { + const exports$1 = instance.exports; + memory !== null && memory !== void 0 ? memory : (memory = exports$1.memory); + if (this.childThread) { + instance = createInstanceProxy(instance, memory); + } + this.setup(instance, module, memory); + const wasi = this.wasi; + if (('_start' in exports$1) && (typeof exports$1._start === 'function')) { + if (this.childThread) { + wasi.start(instance); + try { + const kStarted = getWasiSymbol(wasi, 'kStarted'); + wasi[kStarted] = false; + } + catch (_) { } + } + else { + setupInstance(wasi, instance); + } + } + else { + wasi.initialize(instance); + } + return instance; + } + start(instance, module, memory) { + const exports$1 = instance.exports; + memory !== null && memory !== void 0 ? memory : (memory = exports$1.memory); + if (this.childThread) { + instance = createInstanceProxy(instance, memory); + } + this.setup(instance, module, memory); + const exitCode = this.wasi.start(instance); + return { exitCode, instance }; + } + terminateAllThreads() { + var _a; + if (!this.childThread) { + (_a = this.PThread) === null || _a === void 0 ? void 0 : _a.terminateAllThreads(); + } + else { + this.postMessage(createMessage('terminate-all-threads', {})); + } + } +} +function patchWasiInstance(wasiThreads, wasi) { + const patched = patchedWasiInstances.get(wasiThreads); + if (patched.has(wasi)) { + return; + } + const _this = wasiThreads; + const wasiImport = wasi.wasiImport; + if (wasiImport) { + const proc_exit = wasiImport.proc_exit; + wasiImport.proc_exit = function (code) { + _this.terminateAllThreads(); + return proc_exit.call(this, code); + }; + } + if (!_this.childThread) { + const start = wasi.start; + if (typeof start === 'function') { + wasi.start = function (instance) { + try { + return start.call(this, instance); + } + catch (err) { + if (isTrapError(err)) { + _this.terminateAllThreads(); + } + throw err; + } + }; + } + } + patched.add(wasi); +} +function getWasiSymbol(wasi, description) { + const symbols = Object.getOwnPropertySymbols(wasi); + const selectDescription = (description) => (s) => { + if (s.description) { + return s.description === description; + } + return s.toString() === `Symbol(${description})`; + }; + if (Array.isArray(description)) { + return description.map(d => symbols.filter(selectDescription(d))[0]); + } + return symbols.filter(selectDescription(description))[0]; +} +function setupInstance(wasi, instance) { + const [kInstance, kSetMemory] = getWasiSymbol(wasi, ['kInstance', 'kSetMemory']); + wasi[kInstance] = instance; + wasi[kSetMemory](instance.exports.memory); +} + +class ThreadMessageHandler { + constructor(options) { + const postMsg = getPostMessage(options); + if (typeof postMsg !== 'function') { + throw new TypeError('options.postMessage is not a function'); + } + this.postMessage = postMsg; + this.onLoad = options === null || options === void 0 ? void 0 : options.onLoad; + this.onError = typeof (options === null || options === void 0 ? void 0 : options.onError) === 'function' ? options.onError : (_type, err) => { throw err; }; + this.instance = undefined; + this.messagesBeforeLoad = []; + } + instantiate(data) { + if (typeof this.onLoad === 'function') { + return this.onLoad(data); + } + throw new Error('ThreadMessageHandler.prototype.instantiate is not implemented'); + } + handle(e) { + var _a; + if ((_a = e === null || e === void 0 ? void 0 : e.data) === null || _a === void 0 ? void 0 : _a.__emnapi__) { + const type = e.data.__emnapi__.type; + const payload = e.data.__emnapi__.payload; + try { + if (type === 'load') { + this._load(payload); + } + else if (type === 'start') { + this.handleAfterLoad(e, () => { + this._start(payload); + }); + } + } + catch (err) { + this.onError(err, type); + } + } + } + _load(payload) { + if (this.instance !== undefined) + return; + let source; + try { + source = this.instantiate(payload); + } + catch (err) { + this._loaded(err, null, payload); + return; + } + const then = source && 'then' in source ? source.then : undefined; + if (typeof then === 'function') { + then.call(source, (source) => { this._loaded(null, source, payload); }, (err) => { this._loaded(err, null, payload); }); + } + else { + this._loaded(null, source, payload); + } + } + _start(payload) { + const wasi_thread_start = this.instance.exports.wasi_thread_start; + if (typeof wasi_thread_start !== 'function') { + const err = new TypeError('wasi_thread_start is not exported'); + notifyPthreadCreateResult(payload.sab, 2, err); + throw err; + } + const postMessage = this.postMessage; + const tid = payload.tid; + const startArg = payload.arg; + notifyPthreadCreateResult(payload.sab, 1); + try { + wasi_thread_start(tid, startArg); + } + catch (err) { + if (err !== 'unwind') { + throw err; + } + else { + return; + } + } + postMessage(createMessage('cleanup-thread', { tid })); + } + _loaded(err, source, payload) { + if (err) { + notifyPthreadCreateResult(payload.sab, 2, err); + throw err; + } + if (source == null) { + const err = new TypeError('onLoad should return an object'); + notifyPthreadCreateResult(payload.sab, 2, err); + throw err; + } + const instance = source.instance; + if (!instance) { + const err = new TypeError('onLoad should return an object which includes "instance"'); + notifyPthreadCreateResult(payload.sab, 2, err); + throw err; + } + this.instance = instance; + const postMessage = this.postMessage; + postMessage(createMessage('loaded', {})); + const messages = this.messagesBeforeLoad; + this.messagesBeforeLoad = []; + for (let i = 0; i < messages.length; i++) { + const data = messages[i]; + this.handle({ data }); + } + } + handleAfterLoad(e, f) { + if (this.instance !== undefined) { + f.call(this, e); + } + else { + this.messagesBeforeLoad.push(e.data); + } + } +} +function notifyPthreadCreateResult(sab, result, error) { + if (sab) { + serizeErrorToBuffer(sab.buffer, result, error); + Atomics.notify(sab, 0); + } +} + +exports.ThreadManager = ThreadManager; +exports.ThreadMessageHandler = ThreadMessageHandler; +exports.WASIThreads = WASIThreads; +exports.createInstanceProxy = createInstanceProxy; +exports.isSharedArrayBuffer = isSharedArrayBuffer; +exports.isTrapError = isTrapError; diff --git a/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.d.ts b/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.d.ts new file mode 100644 index 00000000..aca989a4 --- /dev/null +++ b/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.d.ts @@ -0,0 +1,272 @@ +/// + +import type { Worker as Worker_2 } from 'worker_threads'; + +/** @public */ +export declare interface BaseOptions { + wasi: WASIInstance; + version?: 'preview1'; + wasm64?: boolean; +} + +/** @public */ +export declare interface ChildThreadOptions extends BaseOptions { + childThread: true; + postMessage?: (data: any) => void; +} + +/** @public */ +export declare interface CleanupThreadPayload { + tid: number; +} + +/** @public */ +export declare interface CommandInfo { + type: T; + payload: CommandPayloadMap[T]; +} + +/** @public */ +export declare interface CommandPayloadMap { + load: LoadPayload; + loaded: LoadedPayload; + start: StartPayload; + 'cleanup-thread': CleanupThreadPayload; + 'terminate-all-threads': TerminateAllThreadsPayload; + 'spawn-thread': SpawnThreadPayload; +} + +/** @public */ +export declare type CommandType = keyof CommandPayloadMap; + +/** @public */ +export declare function createInstanceProxy(instance: WebAssembly.Instance, memory?: WebAssembly.Memory | (() => WebAssembly.Memory)): WebAssembly.Instance; + +/** @public */ +export declare function isSharedArrayBuffer(value: any): value is SharedArrayBuffer; + +/** @public */ +export declare function isTrapError(e: Error): e is WebAssembly.RuntimeError; + +/** @public */ +export declare interface LoadedPayload { +} + +/** @public */ +export declare interface LoadPayload { + wasmModule: WebAssembly.Module; + wasmMemory: WebAssembly.Memory; + sab?: Int32Array; +} + +/** @public */ +export declare interface MainThreadBaseOptions extends BaseOptions { + waitThreadStart?: boolean | number; +} + +/** @public */ +export declare type MainThreadOptions = MainThreadOptionsWithThreadManager | MainThreadOptionsCreateThreadManager; + +/** @public */ +export declare interface MainThreadOptionsCreateThreadManager extends MainThreadBaseOptions, ThreadManagerOptionsMain { +} + +/** @public */ +export declare interface MainThreadOptionsWithThreadManager extends MainThreadBaseOptions { + threadManager?: ThreadManager | (() => ThreadManager); +} + +/** @public */ +export declare interface MessageEventData { + __emnapi__: CommandInfo; +} + +/** @public */ +export declare interface ReuseWorkerOptions { + /** + * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size | PTHREAD_POOL_SIZE} + */ + size: number; + /** + * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size-strict | PTHREAD_POOL_SIZE_STRICT} + */ + strict?: boolean; +} + +/** @public */ +export declare interface SpawnThreadPayload { + startArg: number; + errorOrTid: number; +} + +/** @public */ +export declare interface StartPayload { + tid: number; + arg: number; + sab?: Int32Array; +} + +/** @public */ +export declare interface StartResult { + exitCode: number; + instance: WebAssembly.Instance; +} + +/** @public */ +export declare interface TerminateAllThreadsPayload { +} + +/** @public */ +export declare class ThreadManager { + unusedWorkers: WorkerLike[]; + runningWorkers: WorkerLike[]; + pthreads: Record; + get nextWorkerID(): number; + wasmModule: WebAssembly.Module | null; + wasmMemory: WebAssembly.Memory | null; + private readonly messageEvents; + private readonly _childThread; + private readonly _onCreateWorker; + private readonly _reuseWorker; + private readonly _beforeLoad?; + /* Excluded from this release type: printErr */ + threadSpawn?: ((startArg: number, errorOrTid?: number) => number); + constructor(options: ThreadManagerOptions); + init(): void; + initMainThread(): void; + private preparePool; + shouldPreloadWorkers(): boolean; + loadWasmModuleToAllWorkers(): Promise; + preloadWorkers(): Promise; + setup(wasmModule: WebAssembly.Module, wasmMemory: WebAssembly.Memory): void; + markId(worker: WorkerLike): number; + returnWorkerToPool(worker: WorkerLike): void; + loadWasmModuleToWorker(worker: WorkerLike, sab?: Int32Array): Promise; + allocateUnusedWorker(): WorkerLike; + getNewWorker(sab?: Int32Array): WorkerLike | undefined; + cleanThread(worker: WorkerLike, tid: number, force?: boolean): void; + terminateWorker(worker: WorkerLike): void; + terminateAllThreads(): void; + addMessageEventListener(worker: WorkerLike, onMessage: (e: WorkerMessageEvent) => void): () => void; + fireMessageEvent(worker: WorkerLike, e: WorkerMessageEvent): void; +} + +/** @public */ +export declare type ThreadManagerOptions = ThreadManagerOptionsMain | ThreadManagerOptionsChild; + +/** @public */ +export declare interface ThreadManagerOptionsBase { + printErr?: (message: string) => void; + threadSpawn?: (startArg: number, errorOrTid?: number) => number; +} + +/** @public */ +export declare interface ThreadManagerOptionsChild extends ThreadManagerOptionsBase { + childThread: true; +} + +/** @public */ +export declare interface ThreadManagerOptionsMain extends ThreadManagerOptionsBase { + beforeLoad?: (worker: WorkerLike) => any; + reuseWorker?: boolean | number | ReuseWorkerOptions; + onCreateWorker: WorkerFactory; + childThread?: false; +} + +/** @public */ +export declare class ThreadMessageHandler { + protected instance: WebAssembly.Instance | undefined; + private messagesBeforeLoad; + protected postMessage: (message: any) => void; + protected onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; + protected onError: (error: Error, type: WorkerMessageType) => void; + constructor(options?: ThreadMessageHandlerOptions); + /** @virtual */ + instantiate(data: LoadPayload): WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; + /** @virtual */ + handle(e: WorkerMessageEvent>): void; + private _load; + private _start; + protected _loaded(err: Error | null, source: WebAssembly.WebAssemblyInstantiatedSource | null, payload: LoadPayload): void; + protected handleAfterLoad(e: E, f: (e: E) => void): void; +} + +/** @public */ +export declare interface ThreadMessageHandlerOptions { + onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; + onError?: (error: Error, type: WorkerMessageType) => void; + postMessage?: (message: any) => void; +} + +/** @public */ +export declare interface WASIInstance { + readonly wasiImport?: Record; + initialize(instance: object): void; + start(instance: object): number; + getImportObject?(): any; +} + +/** @public */ +export declare class WASIThreads { + PThread: ThreadManager | undefined; + private wasmMemory; + private wasmInstance; + private readonly threadSpawn; + readonly childThread: boolean; + private readonly postMessage; + readonly wasi: WASIInstance; + constructor(options: WASIThreadsOptions); + getImportObject(): { + wasi: WASIThreadsImports; + }; + setup(wasmInstance: WebAssembly.Instance, wasmModule: WebAssembly.Module, wasmMemory?: WebAssembly.Memory): void; + preloadWorkers(): Promise; + /** + * It's ok to call this method to a WASI command module. + * + * in child thread, must call this method instead of {@link WASIThreads.start} even if it's a WASI command module + * + * @returns A proxied WebAssembly instance if in child thread, other wise the original instance + */ + initialize(instance: WebAssembly.Instance, module: WebAssembly.Module, memory?: WebAssembly.Memory): WebAssembly.Instance; + /** + * Equivalent to calling {@link WASIThreads.initialize} and then calling {@link WASIInstance.start} + * ```js + * this.initialize(instance, module, memory) + * this.wasi.start(instance) + * ``` + */ + start(instance: WebAssembly.Instance, module: WebAssembly.Module, memory?: WebAssembly.Memory): StartResult; + terminateAllThreads(): void; +} + +/** @public */ +export declare interface WASIThreadsImports { + 'thread-spawn': (startArg: number, errorOrTid?: number) => number; +} + +/** @public */ +export declare type WASIThreadsOptions = MainThreadOptions | ChildThreadOptions; + +/** @public */ +export declare type WorkerFactory = (ctx: { + type: string; + name: string; +}) => WorkerLike; + +/** @public */ +export declare type WorkerLike = (Worker | Worker_2) & { + whenLoaded?: Promise; + loaded?: boolean; + __emnapi_tid?: number; +}; + +/** @public */ +export declare interface WorkerMessageEvent { + data: T; +} + +/** @public */ +export declare type WorkerMessageType = 'load' | 'start'; + +export { } diff --git a/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.js b/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.js new file mode 100644 index 00000000..b6e07908 --- /dev/null +++ b/node_modules/@emnapi/wasi-threads/dist/wasi-threads.cjs.min.js @@ -0,0 +1 @@ +const e="undefined"!=typeof WebAssembly?WebAssembly:"undefined"!=typeof WXWebAssembly?WXWebAssembly:void 0,t="object"==typeof process&&null!==process&&"object"==typeof process.versions&&null!==process.versions&&"string"==typeof process.versions.node;function r(e){return"function"==typeof(null==e?void 0:e.postMessage)?e.postMessage:"function"==typeof postMessage?postMessage:void 0}function s(e){return"function"==typeof SharedArrayBuffer&&e instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(e)}function o(t){try{return t instanceof e.RuntimeError}catch(e){return!1}}function n(e,t){return{__emnapi__:{type:e,payload:t}}}function i(e){if(e){if(!s(e.buffer))throw new Error("Multithread features require shared wasm memory. Try to compile with `-matomics -mbulk-memory` and use `--import-memory --shared-memory` during linking, then create WebAssembly.Memory with `shared: true` option")}else if("undefined"==typeof SharedArrayBuffer)throw new Error("Current environment does not support SharedArrayBuffer, threads are not available!")}let a=0;class h{get nextWorkerID(){return a}constructor(e){var t;if(this.unusedWorkers=[],this.runningWorkers=[],this.pthreads=Object.create(null),this.wasmModule=null,this.wasmMemory=null,this.messageEvents=new WeakMap,!e)throw new TypeError("ThreadManager(): options is not provided");this._childThread="childThread"in e&&Boolean(e.childThread),this._childThread?(this._onCreateWorker=void 0,this._reuseWorker=!1,this._beforeLoad=void 0):(this._onCreateWorker=e.onCreateWorker,this._reuseWorker=function(e){var t;if("boolean"==typeof e)return!!e&&{size:0,strict:!1};if("number"==typeof e){if(!(e>=0))throw new RangeError("reuseWorker: size must be a non-negative integer");return{size:e,strict:!1}}if(!e)return!1;const r=null!==(t=Number(e.size))&&void 0!==t?t:0,s=Boolean(e.strict);if(!(r>0)&&s)throw new RangeError("reuseWorker: size must be set to positive integer if strict is set to true");return{size:r,strict:s}}(e.reuseWorker),this._beforeLoad=e.beforeLoad),this.printErr=null!==(t=e.printErr)&&void 0!==t?t:console.error.bind(console),this.threadSpawn=e.threadSpawn}init(){this._childThread||this.initMainThread()}initMainThread(){this.preparePool()}preparePool(){if(this._reuseWorker&&this._reuseWorker.size){let e=this._reuseWorker.size;for(;e--;){const e=this.allocateUnusedWorker();t&&(e.once("message",()=>{}),e.unref())}}}shouldPreloadWorkers(){return!this._childThread&&this._reuseWorker&&this._reuseWorker.size>0}loadWasmModuleToAllWorkers(){const e=Array(this.unusedWorkers.length);for(let r=0;r(t&&s.unref(),e),e=>{throw t&&s.unref(),e})}return Promise.all(e).catch(e=>{throw this.terminateAllThreads(),e})}preloadWorkers(){return this.shouldPreloadWorkers()?this.loadWasmModuleToAllWorkers():Promise.resolve([])}setup(e,t){this.wasmModule=e,this.wasmMemory=t}markId(e){if(e.__emnapi_tid)return e.__emnapi_tid;const t=a+43;return a=(a+1)%536870869,this.pthreads[t]=e,e.__emnapi_tid=t,t}returnWorkerToPool(e){var r=e.__emnapi_tid;void 0!==r&&delete this.pthreads[r],this.unusedWorkers.push(e),this.runningWorkers.splice(this.runningWorkers.indexOf(e),1),delete e.__emnapi_tid,t&&e.unref()}loadWasmModuleToWorker(e,r){if(e.whenLoaded)return e.whenLoaded;const s=this.printErr,o=this._beforeLoad,a=this;return e.whenLoaded=new Promise((h,d)=>{const l=r=>{if(r.__emnapi__){const s=r.__emnapi__.type,o=r.__emnapi__.payload;"loaded"===s?(e.loaded=!0,t&&!e.__emnapi_tid&&e.unref(),h(e)):"cleanup-thread"===s?o.tid in this.pthreads&&this.cleanThread(e,o.tid):"spawn-thread"===s?this.threadSpawn(o.startArg,o.errorOrTid):"terminate-all-threads"===s&&this.terminateAllThreads()}};e.onmessage=t=>{l(t.data),this.fireMessageEvent(e,t)},e.onerror=function(t){let r="worker sent an error!";if(void 0!==e.__emnapi_tid&&(r="worker (tid = "+e.__emnapi_tid+") sent an error!"),"message"in t){if(s(r+" "+t.message),-1!==t.message.indexOf("RuntimeError")||-1!==t.message.indexOf("unreachable"))try{a.terminateAllThreads()}catch(e){}}else s(r);throw d(t),t},t&&(e.on("message",function(t){var r,s;null===(s=(r=e).onmessage)||void 0===s||s.call(r,{data:t})}),e.on("error",function(t){var r,s;null===(s=(r=e).onerror)||void 0===s||s.call(r,t)}),e.on("detachedExit",function(){})),"function"==typeof o&&o(e);try{e.postMessage(n("load",{wasmModule:this.wasmModule,wasmMemory:this.wasmMemory,sab:r}))}catch(e){throw i(this.wasmMemory),e}}),e.whenLoaded}allocateUnusedWorker(){const e=this._onCreateWorker;if("function"!=typeof e)throw new TypeError("`options.onCreateWorker` is not provided");const t=e({type:"thread",name:"emnapi-pthread"});return this.unusedWorkers.push(t),t}getNewWorker(e){if(this._reuseWorker){if(0===this.unusedWorkers.length){if(this._reuseWorker.strict&&!t){return void(0,this.printErr)("Tried to spawn a new thread, but the thread pool is exhausted.\nThis might result in a deadlock unless some threads eventually exit or the code explicitly breaks out to the event loop.")}const r=this.allocateUnusedWorker();this.loadWasmModuleToWorker(r,e)}return this.unusedWorkers.pop()}const r=this.allocateUnusedWorker();return this.loadWasmModuleToWorker(r,e),this.unusedWorkers.pop()}cleanThread(e,t,r){if(!r&&this._reuseWorker)this.returnWorkerToPool(e);else{delete this.pthreads[t];const r=this.runningWorkers.indexOf(e);-1!==r&&this.runningWorkers.splice(r,1),this.terminateWorker(e),delete e.__emnapi_tid}}terminateWorker(e){var t;const r=e.__emnapi_tid;e.terminate(),null===(t=this.messageEvents.get(e))||void 0===t||t.clear(),this.messageEvents.delete(e),e.onmessage=e=>{if(e.data.__emnapi__){(0,this.printErr)('received "'+e.data.__emnapi__.type+'" command from terminated worker: '+r)}}}terminateAllThreads(){for(let e=0;e{null==r||r.delete(t)}}fireMessageEvent(e,t){const r=this.messageEvents.get(e);if(!r)return;const s=this.printErr;r.forEach(e=>{try{e(t)}catch(e){s(e.stack)}})}}const d=Symbol("kIsProxy");function l(e,t){if(e[d])return e;const r=e.exports,s=function(e){const t=["apply","construct","defineProperty","deleteProperty","get","getOwnPropertyDescriptor","getPrototypeOf","has","isExtensible","ownKeys","preventExtensions","set","setPrototypeOf"],r={};for(let s=0;s{},n=()=>0;s.get=function(e,s,i){var a;return"memory"===s?null!==(a="function"==typeof t?t():t)&&void 0!==a?a:Reflect.get(r,s,i):"_initialize"===s?s in r?o:void 0:"_start"===s?s in r?n:void 0:Reflect.get(r,s,i)},s.has=function(e,t){return"memory"===t||Reflect.has(r,t)};const i=new Proxy(Object.create(null),s);return new Proxy(e,{get:(e,t,r)=>"exports"===t?i:t===d||Reflect.get(e,t,r)})}const c=new WeakMap;function u(e,t){const r=Object.getOwnPropertySymbols(e),s=e=>t=>t.description?t.description===e:t.toString()===`Symbol(${e})`;return Array.isArray(t)?t.map(e=>r.filter(s(e))[0]):r.filter(s(t))[0]}function f(e,t,r){e&&(!function(e,t,r){const s=new Int32Array(e);if(Atomics.store(s,0,t),t>1&&r){const t=r.name,o=r.message,n=r.stack,i=(new TextEncoder).encode(t),a=(new TextEncoder).encode(o),h=(new TextEncoder).encode(n);Atomics.store(s,1,i.length),Atomics.store(s,2,a.length),Atomics.store(s,3,h.length);const d=new Uint8Array(e);d.set(i,16),d.set(a,16+i.length),d.set(h,16+i.length+a.length)}}(e.buffer,t,r),Atomics.notify(e,0))}exports.ThreadManager=h,exports.ThreadMessageHandler=class{constructor(e){const t=r(e);if("function"!=typeof t)throw new TypeError("options.postMessage is not a function");this.postMessage=t,this.onLoad=null==e?void 0:e.onLoad,this.onError="function"==typeof(null==e?void 0:e.onError)?e.onError:(e,t)=>{throw t},this.instance=void 0,this.messagesBeforeLoad=[]}instantiate(e){if("function"==typeof this.onLoad)return this.onLoad(e);throw new Error("ThreadMessageHandler.prototype.instantiate is not implemented")}handle(e){var t;if(null===(t=null==e?void 0:e.data)||void 0===t?void 0:t.__emnapi__){const t=e.data.__emnapi__.type,r=e.data.__emnapi__.payload;try{"load"===t?this._load(r):"start"===t&&this.handleAfterLoad(e,()=>{this._start(r)})}catch(e){this.onError(e,t)}}}_load(e){if(void 0!==this.instance)return;let t;try{t=this.instantiate(e)}catch(t){return void this._loaded(t,null,e)}const r=t&&"then"in t?t.then:void 0;"function"==typeof r?r.call(t,t=>{this._loaded(null,t,e)},t=>{this._loaded(t,null,e)}):this._loaded(null,t,e)}_start(e){const t=this.instance.exports.wasi_thread_start;if("function"!=typeof t){const t=new TypeError("wasi_thread_start is not exported");throw f(e.sab,2,t),t}const r=this.postMessage,s=e.tid,o=e.arg;f(e.sab,1);try{t(s,o)}catch(e){if("unwind"!==e)throw e;return}r(n("cleanup-thread",{tid:s}))}_loaded(e,t,r){if(e)throw f(r.sab,2,e),e;if(null==t){const e=new TypeError("onLoad should return an object");throw f(r.sab,2,e),e}const s=t.instance;if(!s){const e=new TypeError('onLoad should return an object which includes "instance"');throw f(r.sab,2,e),e}this.instance=s;(0,this.postMessage)(n("loaded",{}));const o=this.messagesBeforeLoad;this.messagesBeforeLoad=[];for(let e=0;e{var o;const a=void 0!==s;try{i(this.wasmMemory)}catch(e){if(null===(o=this.PThread)||void 0===o||o.printErr(e.stack),a){const e=new Int32Array(this.wasmMemory.buffer,s,2);return Atomics.store(e,0,1),Atomics.store(e,1,6),Atomics.notify(e,1),1}return-6}if(!a){const e=this.wasmInstance.exports.malloc;if(!(s=u?Number(e(BigInt(8))):e(8)>>>0))return-48}const h=this.wasmInstance.exports.free,c=u?e=>{h(BigInt(e))}:h,f=new Int32Array(this.wasmMemory.buffer,s,2);if(Atomics.store(f,0,0),Atomics.store(f,1,0),this.childThread){l(n("spawn-thread",{startArg:r,errorOrTid:s})),Atomics.wait(f,1,0);const e=Atomics.load(f,0),t=Atomics.load(f,1);return a?e:(c(s),e?-t:t)}const p=d||0===d;let m,w,y;p&&(m=new Int32Array(new SharedArrayBuffer(8208)),Atomics.store(m,0,0));const g=this.PThread;try{if(w=g.getNewWorker(m),!w)throw new Error("failed to get new worker");if(y=g.markId(w),t&&w.unref(),w.postMessage(n("start",{tid:y,arg:r,sab:m})),p){if("number"==typeof d){if("timed-out"===Atomics.wait(m,0,0,d)){try{g.cleanThread(w,y,!0)}catch(e){}throw new Error("Spawning thread timed out. Please check if the worker is created successfully and if message is handled properly in the worker.")}}else Atomics.wait(m,0,0);if(Atomics.load(m,0)>1){try{g.cleanThread(w,y,!0)}catch(e){}throw function(t){var r,s;const o=new Int32Array(t);if(Atomics.load(o,0)<=1)return null;const n=Atomics.load(o,1),i=Atomics.load(o,2),a=Atomics.load(o,3),h=new Uint8Array(t),d=h.slice(16,16+n),l=h.slice(16+n,16+n+i),c=h.slice(16+n+i,16+n+i+a),u=(new TextDecoder).decode(d),f=(new TextDecoder).decode(l),p=(new TextDecoder).decode(c),m=new(null!==(r=globalThis[u])&&void 0!==r?r:"RuntimeError"===u&&null!==(s=e.RuntimeError)&&void 0!==s?s:Error)(f);return Object.defineProperty(m,"stack",{value:p,writable:!0,enumerable:!1,configurable:!0}),m}(m.buffer)}}}catch(e){return Atomics.store(f,0,1),Atomics.store(f,1,6),Atomics.notify(f,1),null==g||g.printErr(e.stack),a?1:(c(s),-6)}return Atomics.store(f,0,0),Atomics.store(f,1,y),Atomics.notify(f,1),g.runningWorkers.push(w),p||w.whenLoaded.catch(e=>{throw delete w.whenLoaded,g.cleanThread(w,y,!0),e}),a?0:(c(s),y)};this.threadSpawn=f,this.PThread&&(this.PThread.threadSpawn=f)}getImportObject(){return{wasi:{"thread-spawn":this.threadSpawn}}}setup(e,t,r){null!=r||(r=e.exports.memory),this.wasmInstance=e,this.wasmMemory=r,this.PThread&&this.PThread.setup(t,r)}preloadWorkers(){return this.PThread?this.PThread.preloadWorkers():Promise.resolve([])}initialize(e,t,r){const s=e.exports;null!=r||(r=s.memory),this.childThread&&(e=l(e,r)),this.setup(e,t,r);const o=this.wasi;if("_start"in s&&"function"==typeof s._start)if(this.childThread){o.start(e);try{o[u(o,"kStarted")]=!1}catch(e){}}else!function(e,t){const[r,s]=u(e,["kInstance","kSetMemory"]);e[r]=t,e[s](t.exports.memory)}(o,e);else o.initialize(e);return e}start(e,t,r){const s=e.exports;null!=r||(r=s.memory),this.childThread&&(e=l(e,r)),this.setup(e,t,r);return{exitCode:this.wasi.start(e),instance:e}}terminateAllThreads(){var e;this.childThread?this.postMessage(n("terminate-all-threads",{})):null===(e=this.PThread)||void 0===e||e.terminateAllThreads()}},exports.createInstanceProxy=l,exports.isSharedArrayBuffer=s,exports.isTrapError=o; diff --git a/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.mts b/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.mts new file mode 100644 index 00000000..aca989a4 --- /dev/null +++ b/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.mts @@ -0,0 +1,272 @@ +/// + +import type { Worker as Worker_2 } from 'worker_threads'; + +/** @public */ +export declare interface BaseOptions { + wasi: WASIInstance; + version?: 'preview1'; + wasm64?: boolean; +} + +/** @public */ +export declare interface ChildThreadOptions extends BaseOptions { + childThread: true; + postMessage?: (data: any) => void; +} + +/** @public */ +export declare interface CleanupThreadPayload { + tid: number; +} + +/** @public */ +export declare interface CommandInfo { + type: T; + payload: CommandPayloadMap[T]; +} + +/** @public */ +export declare interface CommandPayloadMap { + load: LoadPayload; + loaded: LoadedPayload; + start: StartPayload; + 'cleanup-thread': CleanupThreadPayload; + 'terminate-all-threads': TerminateAllThreadsPayload; + 'spawn-thread': SpawnThreadPayload; +} + +/** @public */ +export declare type CommandType = keyof CommandPayloadMap; + +/** @public */ +export declare function createInstanceProxy(instance: WebAssembly.Instance, memory?: WebAssembly.Memory | (() => WebAssembly.Memory)): WebAssembly.Instance; + +/** @public */ +export declare function isSharedArrayBuffer(value: any): value is SharedArrayBuffer; + +/** @public */ +export declare function isTrapError(e: Error): e is WebAssembly.RuntimeError; + +/** @public */ +export declare interface LoadedPayload { +} + +/** @public */ +export declare interface LoadPayload { + wasmModule: WebAssembly.Module; + wasmMemory: WebAssembly.Memory; + sab?: Int32Array; +} + +/** @public */ +export declare interface MainThreadBaseOptions extends BaseOptions { + waitThreadStart?: boolean | number; +} + +/** @public */ +export declare type MainThreadOptions = MainThreadOptionsWithThreadManager | MainThreadOptionsCreateThreadManager; + +/** @public */ +export declare interface MainThreadOptionsCreateThreadManager extends MainThreadBaseOptions, ThreadManagerOptionsMain { +} + +/** @public */ +export declare interface MainThreadOptionsWithThreadManager extends MainThreadBaseOptions { + threadManager?: ThreadManager | (() => ThreadManager); +} + +/** @public */ +export declare interface MessageEventData { + __emnapi__: CommandInfo; +} + +/** @public */ +export declare interface ReuseWorkerOptions { + /** + * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size | PTHREAD_POOL_SIZE} + */ + size: number; + /** + * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size-strict | PTHREAD_POOL_SIZE_STRICT} + */ + strict?: boolean; +} + +/** @public */ +export declare interface SpawnThreadPayload { + startArg: number; + errorOrTid: number; +} + +/** @public */ +export declare interface StartPayload { + tid: number; + arg: number; + sab?: Int32Array; +} + +/** @public */ +export declare interface StartResult { + exitCode: number; + instance: WebAssembly.Instance; +} + +/** @public */ +export declare interface TerminateAllThreadsPayload { +} + +/** @public */ +export declare class ThreadManager { + unusedWorkers: WorkerLike[]; + runningWorkers: WorkerLike[]; + pthreads: Record; + get nextWorkerID(): number; + wasmModule: WebAssembly.Module | null; + wasmMemory: WebAssembly.Memory | null; + private readonly messageEvents; + private readonly _childThread; + private readonly _onCreateWorker; + private readonly _reuseWorker; + private readonly _beforeLoad?; + /* Excluded from this release type: printErr */ + threadSpawn?: ((startArg: number, errorOrTid?: number) => number); + constructor(options: ThreadManagerOptions); + init(): void; + initMainThread(): void; + private preparePool; + shouldPreloadWorkers(): boolean; + loadWasmModuleToAllWorkers(): Promise; + preloadWorkers(): Promise; + setup(wasmModule: WebAssembly.Module, wasmMemory: WebAssembly.Memory): void; + markId(worker: WorkerLike): number; + returnWorkerToPool(worker: WorkerLike): void; + loadWasmModuleToWorker(worker: WorkerLike, sab?: Int32Array): Promise; + allocateUnusedWorker(): WorkerLike; + getNewWorker(sab?: Int32Array): WorkerLike | undefined; + cleanThread(worker: WorkerLike, tid: number, force?: boolean): void; + terminateWorker(worker: WorkerLike): void; + terminateAllThreads(): void; + addMessageEventListener(worker: WorkerLike, onMessage: (e: WorkerMessageEvent) => void): () => void; + fireMessageEvent(worker: WorkerLike, e: WorkerMessageEvent): void; +} + +/** @public */ +export declare type ThreadManagerOptions = ThreadManagerOptionsMain | ThreadManagerOptionsChild; + +/** @public */ +export declare interface ThreadManagerOptionsBase { + printErr?: (message: string) => void; + threadSpawn?: (startArg: number, errorOrTid?: number) => number; +} + +/** @public */ +export declare interface ThreadManagerOptionsChild extends ThreadManagerOptionsBase { + childThread: true; +} + +/** @public */ +export declare interface ThreadManagerOptionsMain extends ThreadManagerOptionsBase { + beforeLoad?: (worker: WorkerLike) => any; + reuseWorker?: boolean | number | ReuseWorkerOptions; + onCreateWorker: WorkerFactory; + childThread?: false; +} + +/** @public */ +export declare class ThreadMessageHandler { + protected instance: WebAssembly.Instance | undefined; + private messagesBeforeLoad; + protected postMessage: (message: any) => void; + protected onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; + protected onError: (error: Error, type: WorkerMessageType) => void; + constructor(options?: ThreadMessageHandlerOptions); + /** @virtual */ + instantiate(data: LoadPayload): WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; + /** @virtual */ + handle(e: WorkerMessageEvent>): void; + private _load; + private _start; + protected _loaded(err: Error | null, source: WebAssembly.WebAssemblyInstantiatedSource | null, payload: LoadPayload): void; + protected handleAfterLoad(e: E, f: (e: E) => void): void; +} + +/** @public */ +export declare interface ThreadMessageHandlerOptions { + onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; + onError?: (error: Error, type: WorkerMessageType) => void; + postMessage?: (message: any) => void; +} + +/** @public */ +export declare interface WASIInstance { + readonly wasiImport?: Record; + initialize(instance: object): void; + start(instance: object): number; + getImportObject?(): any; +} + +/** @public */ +export declare class WASIThreads { + PThread: ThreadManager | undefined; + private wasmMemory; + private wasmInstance; + private readonly threadSpawn; + readonly childThread: boolean; + private readonly postMessage; + readonly wasi: WASIInstance; + constructor(options: WASIThreadsOptions); + getImportObject(): { + wasi: WASIThreadsImports; + }; + setup(wasmInstance: WebAssembly.Instance, wasmModule: WebAssembly.Module, wasmMemory?: WebAssembly.Memory): void; + preloadWorkers(): Promise; + /** + * It's ok to call this method to a WASI command module. + * + * in child thread, must call this method instead of {@link WASIThreads.start} even if it's a WASI command module + * + * @returns A proxied WebAssembly instance if in child thread, other wise the original instance + */ + initialize(instance: WebAssembly.Instance, module: WebAssembly.Module, memory?: WebAssembly.Memory): WebAssembly.Instance; + /** + * Equivalent to calling {@link WASIThreads.initialize} and then calling {@link WASIInstance.start} + * ```js + * this.initialize(instance, module, memory) + * this.wasi.start(instance) + * ``` + */ + start(instance: WebAssembly.Instance, module: WebAssembly.Module, memory?: WebAssembly.Memory): StartResult; + terminateAllThreads(): void; +} + +/** @public */ +export declare interface WASIThreadsImports { + 'thread-spawn': (startArg: number, errorOrTid?: number) => number; +} + +/** @public */ +export declare type WASIThreadsOptions = MainThreadOptions | ChildThreadOptions; + +/** @public */ +export declare type WorkerFactory = (ctx: { + type: string; + name: string; +}) => WorkerLike; + +/** @public */ +export declare type WorkerLike = (Worker | Worker_2) & { + whenLoaded?: Promise; + loaded?: boolean; + __emnapi_tid?: number; +}; + +/** @public */ +export declare interface WorkerMessageEvent { + data: T; +} + +/** @public */ +export declare type WorkerMessageType = 'load' | 'start'; + +export { } diff --git a/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.ts b/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.ts new file mode 100644 index 00000000..5043099b --- /dev/null +++ b/node_modules/@emnapi/wasi-threads/dist/wasi-threads.d.ts @@ -0,0 +1,274 @@ +/// + +import type { Worker as Worker_2 } from 'worker_threads'; + +/** @public */ +export declare interface BaseOptions { + wasi: WASIInstance; + version?: 'preview1'; + wasm64?: boolean; +} + +/** @public */ +export declare interface ChildThreadOptions extends BaseOptions { + childThread: true; + postMessage?: (data: any) => void; +} + +/** @public */ +export declare interface CleanupThreadPayload { + tid: number; +} + +/** @public */ +export declare interface CommandInfo { + type: T; + payload: CommandPayloadMap[T]; +} + +/** @public */ +export declare interface CommandPayloadMap { + load: LoadPayload; + loaded: LoadedPayload; + start: StartPayload; + 'cleanup-thread': CleanupThreadPayload; + 'terminate-all-threads': TerminateAllThreadsPayload; + 'spawn-thread': SpawnThreadPayload; +} + +/** @public */ +export declare type CommandType = keyof CommandPayloadMap; + +/** @public */ +export declare function createInstanceProxy(instance: WebAssembly.Instance, memory?: WebAssembly.Memory | (() => WebAssembly.Memory)): WebAssembly.Instance; + +/** @public */ +export declare function isSharedArrayBuffer(value: any): value is SharedArrayBuffer; + +/** @public */ +export declare function isTrapError(e: Error): e is WebAssembly.RuntimeError; + +/** @public */ +export declare interface LoadedPayload { +} + +/** @public */ +export declare interface LoadPayload { + wasmModule: WebAssembly.Module; + wasmMemory: WebAssembly.Memory; + sab?: Int32Array; +} + +/** @public */ +export declare interface MainThreadBaseOptions extends BaseOptions { + waitThreadStart?: boolean | number; +} + +/** @public */ +export declare type MainThreadOptions = MainThreadOptionsWithThreadManager | MainThreadOptionsCreateThreadManager; + +/** @public */ +export declare interface MainThreadOptionsCreateThreadManager extends MainThreadBaseOptions, ThreadManagerOptionsMain { +} + +/** @public */ +export declare interface MainThreadOptionsWithThreadManager extends MainThreadBaseOptions { + threadManager?: ThreadManager | (() => ThreadManager); +} + +/** @public */ +export declare interface MessageEventData { + __emnapi__: CommandInfo; +} + +/** @public */ +export declare interface ReuseWorkerOptions { + /** + * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size | PTHREAD_POOL_SIZE} + */ + size: number; + /** + * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size-strict | PTHREAD_POOL_SIZE_STRICT} + */ + strict?: boolean; +} + +/** @public */ +export declare interface SpawnThreadPayload { + startArg: number; + errorOrTid: number; +} + +/** @public */ +export declare interface StartPayload { + tid: number; + arg: number; + sab?: Int32Array; +} + +/** @public */ +export declare interface StartResult { + exitCode: number; + instance: WebAssembly.Instance; +} + +/** @public */ +export declare interface TerminateAllThreadsPayload { +} + +/** @public */ +export declare class ThreadManager { + unusedWorkers: WorkerLike[]; + runningWorkers: WorkerLike[]; + pthreads: Record; + get nextWorkerID(): number; + wasmModule: WebAssembly.Module | null; + wasmMemory: WebAssembly.Memory | null; + private readonly messageEvents; + private readonly _childThread; + private readonly _onCreateWorker; + private readonly _reuseWorker; + private readonly _beforeLoad?; + /* Excluded from this release type: printErr */ + threadSpawn?: ((startArg: number, errorOrTid?: number) => number); + constructor(options: ThreadManagerOptions); + init(): void; + initMainThread(): void; + private preparePool; + shouldPreloadWorkers(): boolean; + loadWasmModuleToAllWorkers(): Promise; + preloadWorkers(): Promise; + setup(wasmModule: WebAssembly.Module, wasmMemory: WebAssembly.Memory): void; + markId(worker: WorkerLike): number; + returnWorkerToPool(worker: WorkerLike): void; + loadWasmModuleToWorker(worker: WorkerLike, sab?: Int32Array): Promise; + allocateUnusedWorker(): WorkerLike; + getNewWorker(sab?: Int32Array): WorkerLike | undefined; + cleanThread(worker: WorkerLike, tid: number, force?: boolean): void; + terminateWorker(worker: WorkerLike): void; + terminateAllThreads(): void; + addMessageEventListener(worker: WorkerLike, onMessage: (e: WorkerMessageEvent) => void): () => void; + fireMessageEvent(worker: WorkerLike, e: WorkerMessageEvent): void; +} + +/** @public */ +export declare type ThreadManagerOptions = ThreadManagerOptionsMain | ThreadManagerOptionsChild; + +/** @public */ +export declare interface ThreadManagerOptionsBase { + printErr?: (message: string) => void; + threadSpawn?: (startArg: number, errorOrTid?: number) => number; +} + +/** @public */ +export declare interface ThreadManagerOptionsChild extends ThreadManagerOptionsBase { + childThread: true; +} + +/** @public */ +export declare interface ThreadManagerOptionsMain extends ThreadManagerOptionsBase { + beforeLoad?: (worker: WorkerLike) => any; + reuseWorker?: boolean | number | ReuseWorkerOptions; + onCreateWorker: WorkerFactory; + childThread?: false; +} + +/** @public */ +export declare class ThreadMessageHandler { + protected instance: WebAssembly.Instance | undefined; + private messagesBeforeLoad; + protected postMessage: (message: any) => void; + protected onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; + protected onError: (error: Error, type: WorkerMessageType) => void; + constructor(options?: ThreadMessageHandlerOptions); + /** @virtual */ + instantiate(data: LoadPayload): WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; + /** @virtual */ + handle(e: WorkerMessageEvent>): void; + private _load; + private _start; + protected _loaded(err: Error | null, source: WebAssembly.WebAssemblyInstantiatedSource | null, payload: LoadPayload): void; + protected handleAfterLoad(e: E, f: (e: E) => void): void; +} + +/** @public */ +export declare interface ThreadMessageHandlerOptions { + onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; + onError?: (error: Error, type: WorkerMessageType) => void; + postMessage?: (message: any) => void; +} + +/** @public */ +export declare interface WASIInstance { + readonly wasiImport?: Record; + initialize(instance: object): void; + start(instance: object): number; + getImportObject?(): any; +} + +/** @public */ +export declare class WASIThreads { + PThread: ThreadManager | undefined; + private wasmMemory; + private wasmInstance; + private readonly threadSpawn; + readonly childThread: boolean; + private readonly postMessage; + readonly wasi: WASIInstance; + constructor(options: WASIThreadsOptions); + getImportObject(): { + wasi: WASIThreadsImports; + }; + setup(wasmInstance: WebAssembly.Instance, wasmModule: WebAssembly.Module, wasmMemory?: WebAssembly.Memory): void; + preloadWorkers(): Promise; + /** + * It's ok to call this method to a WASI command module. + * + * in child thread, must call this method instead of {@link WASIThreads.start} even if it's a WASI command module + * + * @returns A proxied WebAssembly instance if in child thread, other wise the original instance + */ + initialize(instance: WebAssembly.Instance, module: WebAssembly.Module, memory?: WebAssembly.Memory): WebAssembly.Instance; + /** + * Equivalent to calling {@link WASIThreads.initialize} and then calling {@link WASIInstance.start} + * ```js + * this.initialize(instance, module, memory) + * this.wasi.start(instance) + * ``` + */ + start(instance: WebAssembly.Instance, module: WebAssembly.Module, memory?: WebAssembly.Memory): StartResult; + terminateAllThreads(): void; +} + +/** @public */ +export declare interface WASIThreadsImports { + 'thread-spawn': (startArg: number, errorOrTid?: number) => number; +} + +/** @public */ +export declare type WASIThreadsOptions = MainThreadOptions | ChildThreadOptions; + +/** @public */ +export declare type WorkerFactory = (ctx: { + type: string; + name: string; +}) => WorkerLike; + +/** @public */ +export declare type WorkerLike = (Worker | Worker_2) & { + whenLoaded?: Promise; + loaded?: boolean; + __emnapi_tid?: number; +}; + +/** @public */ +export declare interface WorkerMessageEvent { + data: T; +} + +/** @public */ +export declare type WorkerMessageType = 'load' | 'start'; + +export { } + +export as namespace wasiThreads; diff --git a/node_modules/@emnapi/wasi-threads/dist/wasi-threads.esm-bundler.js b/node_modules/@emnapi/wasi-threads/dist/wasi-threads.esm-bundler.js new file mode 100644 index 00000000..10fa7e1d --- /dev/null +++ b/node_modules/@emnapi/wasi-threads/dist/wasi-threads.esm-bundler.js @@ -0,0 +1,942 @@ +var _WebAssembly = typeof WebAssembly !== 'undefined' + ? WebAssembly + : typeof WXWebAssembly !== 'undefined' + ? WXWebAssembly + : undefined; +var ENVIRONMENT_IS_NODE = typeof process === 'object' && process !== null && + typeof process.versions === 'object' && process.versions !== null && + typeof process.versions.node === 'string'; +function getPostMessage(options) { + return typeof (options === null || options === void 0 ? void 0 : options.postMessage) === 'function' + ? options.postMessage + : typeof postMessage === 'function' + ? postMessage + : undefined; +} +function serizeErrorToBuffer(sab, code, error) { + var i32array = new Int32Array(sab); + Atomics.store(i32array, 0, code); + if (code > 1 && error) { + var name_1 = error.name; + var message = error.message; + var stack = error.stack; + var nameBuffer = new TextEncoder().encode(name_1); + var messageBuffer = new TextEncoder().encode(message); + var stackBuffer = new TextEncoder().encode(stack); + Atomics.store(i32array, 1, nameBuffer.length); + Atomics.store(i32array, 2, messageBuffer.length); + Atomics.store(i32array, 3, stackBuffer.length); + var buffer = new Uint8Array(sab); + buffer.set(nameBuffer, 16); + buffer.set(messageBuffer, 16 + nameBuffer.length); + buffer.set(stackBuffer, 16 + nameBuffer.length + messageBuffer.length); + } +} +function deserizeErrorFromBuffer(sab) { + var _a, _b; + var i32array = new Int32Array(sab); + var status = Atomics.load(i32array, 0); + if (status <= 1) { + return null; + } + var nameLength = Atomics.load(i32array, 1); + var messageLength = Atomics.load(i32array, 2); + var stackLength = Atomics.load(i32array, 3); + var buffer = new Uint8Array(sab); + var nameBuffer = buffer.slice(16, 16 + nameLength); + var messageBuffer = buffer.slice(16 + nameLength, 16 + nameLength + messageLength); + var stackBuffer = buffer.slice(16 + nameLength + messageLength, 16 + nameLength + messageLength + stackLength); + var name = new TextDecoder().decode(nameBuffer); + var message = new TextDecoder().decode(messageBuffer); + var stack = new TextDecoder().decode(stackBuffer); + var ErrorConstructor = (_a = globalThis[name]) !== null && _a !== void 0 ? _a : (name === 'RuntimeError' ? ((_b = _WebAssembly.RuntimeError) !== null && _b !== void 0 ? _b : Error) : Error); + var error = new ErrorConstructor(message); + Object.defineProperty(error, 'stack', { + value: stack, + writable: true, + enumerable: false, + configurable: true + }); + return error; +} +/** @public */ +function isSharedArrayBuffer(value) { + return ((typeof SharedArrayBuffer === 'function' && value instanceof SharedArrayBuffer) || + (Object.prototype.toString.call(value) === '[object SharedArrayBuffer]')); +} +/** @public */ +function isTrapError(e) { + try { + return e instanceof _WebAssembly.RuntimeError; + } + catch (_) { + return false; + } +} + +function createMessage(type, payload) { + return { + __emnapi__: { + type: type, + payload: payload + } + }; +} + +var WASI_THREADS_MAX_TID = 0x1FFFFFFF; +function checkSharedWasmMemory(wasmMemory) { + if (wasmMemory) { + if (!isSharedArrayBuffer(wasmMemory.buffer)) { + throw new Error('Multithread features require shared wasm memory. ' + + 'Try to compile with `-matomics -mbulk-memory` and use `--import-memory --shared-memory` during linking, ' + + 'then create WebAssembly.Memory with `shared: true` option'); + } + } + else { + if (typeof SharedArrayBuffer === 'undefined') { + throw new Error('Current environment does not support SharedArrayBuffer, threads are not available!'); + } + } +} +function getReuseWorker(value) { + var _a; + if (typeof value === 'boolean') { + return value ? { size: 0, strict: false } : false; + } + if (typeof value === 'number') { + if (!(value >= 0)) { + throw new RangeError('reuseWorker: size must be a non-negative integer'); + } + return { size: value, strict: false }; + } + if (!value) { + return false; + } + var size = (_a = Number(value.size)) !== null && _a !== void 0 ? _a : 0; + var strict = Boolean(value.strict); + if (!(size > 0) && strict) { + throw new RangeError('reuseWorker: size must be set to positive integer if strict is set to true'); + } + return { size: size, strict: strict }; +} +var nextWorkerID = 0; +/** @public */ +var ThreadManager = /*#__PURE__*/ (function () { + function ThreadManager(options) { + var _a; + this.unusedWorkers = []; + this.runningWorkers = []; + this.pthreads = Object.create(null); + this.wasmModule = null; + this.wasmMemory = null; + this.messageEvents = new WeakMap(); + if (!options) { + throw new TypeError('ThreadManager(): options is not provided'); + } + if ('childThread' in options) { + this._childThread = Boolean(options.childThread); + } + else { + this._childThread = false; + } + if (this._childThread) { + this._onCreateWorker = undefined; + this._reuseWorker = false; + this._beforeLoad = undefined; + } + else { + this._onCreateWorker = options.onCreateWorker; + this._reuseWorker = getReuseWorker(options.reuseWorker); + this._beforeLoad = options.beforeLoad; + } + this.printErr = (_a = options.printErr) !== null && _a !== void 0 ? _a : console.error.bind(console); + this.threadSpawn = options.threadSpawn; + } + Object.defineProperty(ThreadManager.prototype, "nextWorkerID", { + get: function () { return nextWorkerID; }, + enumerable: false, + configurable: true + }); + ThreadManager.prototype.init = function () { + if (!this._childThread) { + this.initMainThread(); + } + }; + ThreadManager.prototype.initMainThread = function () { + this.preparePool(); + }; + ThreadManager.prototype.preparePool = function () { + if (this._reuseWorker) { + if (this._reuseWorker.size) { + var pthreadPoolSize = this._reuseWorker.size; + while (pthreadPoolSize--) { + var worker = this.allocateUnusedWorker(); + if (ENVIRONMENT_IS_NODE) { + // https://github.com/nodejs/node/issues/53036 + worker.once('message', function () { }); + worker.unref(); + } + } + } + } + }; + ThreadManager.prototype.shouldPreloadWorkers = function () { + return !this._childThread && this._reuseWorker && this._reuseWorker.size > 0; + }; + ThreadManager.prototype.loadWasmModuleToAllWorkers = function () { + var _this_1 = this; + var promises = Array(this.unusedWorkers.length); + var _loop_1 = function (i) { + var worker = this_1.unusedWorkers[i]; + if (ENVIRONMENT_IS_NODE) + worker.ref(); + promises[i] = this_1.loadWasmModuleToWorker(worker).then(function (w) { + if (ENVIRONMENT_IS_NODE) + worker.unref(); + return w; + }, function (e) { + if (ENVIRONMENT_IS_NODE) + worker.unref(); + throw e; + }); + }; + var this_1 = this; + for (var i = 0; i < this.unusedWorkers.length; ++i) { + _loop_1(i); + } + return Promise.all(promises).catch(function (err) { + _this_1.terminateAllThreads(); + throw err; + }); + }; + ThreadManager.prototype.preloadWorkers = function () { + if (this.shouldPreloadWorkers()) { + return this.loadWasmModuleToAllWorkers(); + } + return Promise.resolve([]); + }; + ThreadManager.prototype.setup = function (wasmModule, wasmMemory) { + this.wasmModule = wasmModule; + this.wasmMemory = wasmMemory; + }; + ThreadManager.prototype.markId = function (worker) { + if (worker.__emnapi_tid) + return worker.__emnapi_tid; + var tid = nextWorkerID + 43; + nextWorkerID = (nextWorkerID + 1) % (WASI_THREADS_MAX_TID - 42); + this.pthreads[tid] = worker; + worker.__emnapi_tid = tid; + return tid; + }; + ThreadManager.prototype.returnWorkerToPool = function (worker) { + var tid = worker.__emnapi_tid; + if (tid !== undefined) { + delete this.pthreads[tid]; + } + this.unusedWorkers.push(worker); + this.runningWorkers.splice(this.runningWorkers.indexOf(worker), 1); + delete worker.__emnapi_tid; + if (ENVIRONMENT_IS_NODE) { + worker.unref(); + } + }; + ThreadManager.prototype.loadWasmModuleToWorker = function (worker, sab) { + var _this_1 = this; + if (worker.whenLoaded) + return worker.whenLoaded; + var err = this.printErr; + var beforeLoad = this._beforeLoad; + // eslint-disable-next-line @typescript-eslint/no-this-alias + var _this = this; + worker.whenLoaded = new Promise(function (resolve, reject) { + var handleError = function (e) { + var message = 'worker sent an error!'; + if (worker.__emnapi_tid !== undefined) { + message = 'worker (tid = ' + worker.__emnapi_tid + ') sent an error!'; + } + if ('message' in e) { + err(message + ' ' + e.message); + if (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1) { + try { + _this.terminateAllThreads(); + } + catch (_) { } + } + } + else { + err(message); + } + reject(e); + throw e; + }; + var handleMessage = function (data) { + if (data.__emnapi__) { + var type = data.__emnapi__.type; + var payload = data.__emnapi__.payload; + if (type === 'loaded') { + worker.loaded = true; + if (ENVIRONMENT_IS_NODE && !worker.__emnapi_tid) { + worker.unref(); + } + resolve(worker); + // if (payload.err) { + // err('failed to load in child thread: ' + (payload.err.message || payload.err)) + // } + } + else if (type === 'cleanup-thread') { + if (payload.tid in _this_1.pthreads) { + _this_1.cleanThread(worker, payload.tid); + } + } + else if (type === 'spawn-thread') { + _this_1.threadSpawn(payload.startArg, payload.errorOrTid); + } + else if (type === 'terminate-all-threads') { + _this_1.terminateAllThreads(); + } + } + }; + worker.onmessage = function (e) { + handleMessage(e.data); + _this_1.fireMessageEvent(worker, e); + }; + worker.onerror = handleError; + if (ENVIRONMENT_IS_NODE) { + worker.on('message', function (data) { + var _a, _b; + (_b = (_a = worker).onmessage) === null || _b === void 0 ? void 0 : _b.call(_a, { + data: data + }); + }); + worker.on('error', function (e) { + var _a, _b; + (_b = (_a = worker).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, e); + }); + worker.on('detachedExit', function () { }); + } + if (typeof beforeLoad === 'function') { + beforeLoad(worker); + } + try { + worker.postMessage(createMessage('load', { + wasmModule: _this_1.wasmModule, + wasmMemory: _this_1.wasmMemory, + sab: sab + })); + } + catch (err) { + checkSharedWasmMemory(_this_1.wasmMemory); + throw err; + } + }); + return worker.whenLoaded; + }; + ThreadManager.prototype.allocateUnusedWorker = function () { + var _onCreateWorker = this._onCreateWorker; + if (typeof _onCreateWorker !== 'function') { + throw new TypeError('`options.onCreateWorker` is not provided'); + } + var worker = _onCreateWorker({ type: 'thread', name: 'emnapi-pthread' }); + this.unusedWorkers.push(worker); + return worker; + }; + ThreadManager.prototype.getNewWorker = function (sab) { + if (this._reuseWorker) { + if (this.unusedWorkers.length === 0) { + if (this._reuseWorker.strict) { + if (!ENVIRONMENT_IS_NODE) { + var err = this.printErr; + err('Tried to spawn a new thread, but the thread pool is exhausted.\n' + + 'This might result in a deadlock unless some threads eventually exit or the code explicitly breaks out to the event loop.'); + return; + } + } + var worker_1 = this.allocateUnusedWorker(); + // eslint-disable-next-line @typescript-eslint/no-floating-promises + this.loadWasmModuleToWorker(worker_1, sab); + } + return this.unusedWorkers.pop(); + } + var worker = this.allocateUnusedWorker(); + // eslint-disable-next-line @typescript-eslint/no-floating-promises + this.loadWasmModuleToWorker(worker, sab); + return this.unusedWorkers.pop(); + }; + ThreadManager.prototype.cleanThread = function (worker, tid, force) { + if (!force && this._reuseWorker) { + this.returnWorkerToPool(worker); + } + else { + delete this.pthreads[tid]; + var index = this.runningWorkers.indexOf(worker); + if (index !== -1) { + this.runningWorkers.splice(index, 1); + } + this.terminateWorker(worker); + delete worker.__emnapi_tid; + } + }; + ThreadManager.prototype.terminateWorker = function (worker) { + var _this_1 = this; + var _a; + var tid = worker.__emnapi_tid; + // eslint-disable-next-line @typescript-eslint/no-floating-promises + worker.terminate(); + (_a = this.messageEvents.get(worker)) === null || _a === void 0 ? void 0 : _a.clear(); + this.messageEvents.delete(worker); + worker.onmessage = function (e) { + if (e.data.__emnapi__) { + var err = _this_1.printErr; + err('received "' + e.data.__emnapi__.type + '" command from terminated worker: ' + tid); + } + }; + }; + ThreadManager.prototype.terminateAllThreads = function () { + for (var i = 0; i < this.runningWorkers.length; ++i) { + this.terminateWorker(this.runningWorkers[i]); + } + for (var i = 0; i < this.unusedWorkers.length; ++i) { + this.terminateWorker(this.unusedWorkers[i]); + } + this.unusedWorkers = []; + this.runningWorkers = []; + this.pthreads = Object.create(null); + this.preparePool(); + }; + ThreadManager.prototype.addMessageEventListener = function (worker, onMessage) { + var listeners = this.messageEvents.get(worker); + if (!listeners) { + listeners = new Set(); + this.messageEvents.set(worker, listeners); + } + listeners.add(onMessage); + return function () { + listeners === null || listeners === void 0 ? void 0 : listeners.delete(onMessage); + }; + }; + ThreadManager.prototype.fireMessageEvent = function (worker, e) { + var listeners = this.messageEvents.get(worker); + if (!listeners) + return; + var err = this.printErr; + listeners.forEach(function (listener) { + try { + listener(e); + } + catch (e) { + err(e.stack); + } + }); + }; + return ThreadManager; +}()); + +var kIsProxy = Symbol('kIsProxy'); +/** @public */ +function createInstanceProxy(instance, memory) { + if (instance[kIsProxy]) + return instance; + // https://github.com/nodejs/help/issues/4102 + var originalExports = instance.exports; + var createHandler = function (target) { + var handlers = [ + 'apply', + 'construct', + 'defineProperty', + 'deleteProperty', + 'get', + 'getOwnPropertyDescriptor', + 'getPrototypeOf', + 'has', + 'isExtensible', + 'ownKeys', + 'preventExtensions', + 'set', + 'setPrototypeOf' + ]; + var handler = {}; + var _loop_1 = function (i) { + var name_1 = handlers[i]; + handler[name_1] = function () { + var args = Array.prototype.slice.call(arguments, 1); + args.unshift(target); + return Reflect[name_1].apply(Reflect, args); + }; + }; + for (var i = 0; i < handlers.length; i++) { + _loop_1(i); + } + return handler; + }; + var handler = createHandler(originalExports); + var _initialize = function () { }; + var _start = function () { return 0; }; + handler.get = function (_target, p, receiver) { + var _a; + if (p === 'memory') { + return (_a = (typeof memory === 'function' ? memory() : memory)) !== null && _a !== void 0 ? _a : Reflect.get(originalExports, p, receiver); + } + if (p === '_initialize') { + return p in originalExports ? _initialize : undefined; + } + if (p === '_start') { + return p in originalExports ? _start : undefined; + } + return Reflect.get(originalExports, p, receiver); + }; + handler.has = function (_target, p) { + if (p === 'memory') + return true; + return Reflect.has(originalExports, p); + }; + var exportsProxy = new Proxy(Object.create(null), handler); + return new Proxy(instance, { + get: function (target, p, receiver) { + if (p === 'exports') { + return exportsProxy; + } + if (p === kIsProxy) { + return true; + } + return Reflect.get(target, p, receiver); + } + }); +} + +var patchedWasiInstances = new WeakMap(); +/** @public */ +var WASIThreads = /*#__PURE__*/ (function () { + function WASIThreads(options) { + var _this_1 = this; + if (!options) { + throw new TypeError('WASIThreads(): options is not provided'); + } + if (!options.wasi) { + throw new TypeError('WASIThreads(): options.wasi is not provided'); + } + patchedWasiInstances.set(this, new WeakSet()); + var wasi = options.wasi; + patchWasiInstance(this, wasi); + this.wasi = wasi; + if ('childThread' in options) { + this.childThread = Boolean(options.childThread); + } + else { + this.childThread = false; + } + this.PThread = undefined; + if ('threadManager' in options) { + if (typeof options.threadManager === 'function') { + this.PThread = options.threadManager(); + } + else { + this.PThread = options.threadManager; + } + } + else { + if (!this.childThread) { + this.PThread = new ThreadManager(options); + this.PThread.init(); + } + } + var waitThreadStart = false; + if ('waitThreadStart' in options) { + waitThreadStart = typeof options.waitThreadStart === 'number' ? options.waitThreadStart : Boolean(options.waitThreadStart); + } + var postMessage = getPostMessage(options); + if (this.childThread && typeof postMessage !== 'function') { + throw new TypeError('options.postMessage is not a function'); + } + this.postMessage = postMessage; + var wasm64 = Boolean(options.wasm64); + var threadSpawn = function (startArg, errorOrTid) { + var _a; + var EAGAIN = 6; + var isNewABI = errorOrTid !== undefined; + try { + checkSharedWasmMemory(_this_1.wasmMemory); + } + catch (err) { + (_a = _this_1.PThread) === null || _a === void 0 ? void 0 : _a.printErr(err.stack); + if (isNewABI) { + var struct_1 = new Int32Array(_this_1.wasmMemory.buffer, errorOrTid, 2); + Atomics.store(struct_1, 0, 1); + Atomics.store(struct_1, 1, EAGAIN); + Atomics.notify(struct_1, 1); + return 1; + } + else { + return -EAGAIN; + } + } + if (!isNewABI) { + var malloc = _this_1.wasmInstance.exports.malloc; + errorOrTid = wasm64 ? Number(malloc(BigInt(8))) : (malloc(8) >>> 0); + if (!errorOrTid) { + return -48; /* ENOMEM */ + } + } + var _free = _this_1.wasmInstance.exports.free; + var free = wasm64 ? function (ptr) { _free(BigInt(ptr)); } : _free; + var struct = new Int32Array(_this_1.wasmMemory.buffer, errorOrTid, 2); + Atomics.store(struct, 0, 0); + Atomics.store(struct, 1, 0); + if (_this_1.childThread) { + postMessage(createMessage('spawn-thread', { + startArg: startArg, + errorOrTid: errorOrTid + })); + Atomics.wait(struct, 1, 0); + var isError = Atomics.load(struct, 0); + var result = Atomics.load(struct, 1); + if (isNewABI) { + return isError; + } + free(errorOrTid); + return isError ? -result : result; + } + var shouldWait = waitThreadStart || (waitThreadStart === 0); + var sab; + if (shouldWait) { + sab = new Int32Array(new SharedArrayBuffer(16 + 8192)); + Atomics.store(sab, 0, 0); + } + var worker; + var tid; + var PThread = _this_1.PThread; + try { + worker = PThread.getNewWorker(sab); + if (!worker) { + throw new Error('failed to get new worker'); + } + tid = PThread.markId(worker); + if (ENVIRONMENT_IS_NODE) { + worker.unref(); + } + worker.postMessage(createMessage('start', { + tid: tid, + arg: startArg, + sab: sab + })); + if (shouldWait) { + if (typeof waitThreadStart === 'number') { + var waitResult = Atomics.wait(sab, 0, 0, waitThreadStart); + if (waitResult === 'timed-out') { + try { + PThread.cleanThread(worker, tid, true); + } + catch (_) { } + throw new Error('Spawning thread timed out. Please check if the worker is created successfully and if message is handled properly in the worker.'); + } + } + else { + Atomics.wait(sab, 0, 0); + } + var r = Atomics.load(sab, 0); + if (r > 1) { + try { + PThread.cleanThread(worker, tid, true); + } + catch (_) { } + throw deserizeErrorFromBuffer(sab.buffer); + } + } + } + catch (e) { + Atomics.store(struct, 0, 1); + Atomics.store(struct, 1, EAGAIN); + Atomics.notify(struct, 1); + PThread === null || PThread === void 0 ? void 0 : PThread.printErr(e.stack); + if (isNewABI) { + return 1; + } + free(errorOrTid); + return -EAGAIN; + } + Atomics.store(struct, 0, 0); + Atomics.store(struct, 1, tid); + Atomics.notify(struct, 1); + PThread.runningWorkers.push(worker); + if (!shouldWait) { + worker.whenLoaded.catch(function (err) { + delete worker.whenLoaded; + PThread.cleanThread(worker, tid, true); + throw err; + }); + } + if (isNewABI) { + return 0; + } + free(errorOrTid); + return tid; + }; + this.threadSpawn = threadSpawn; + if (this.PThread) { + this.PThread.threadSpawn = threadSpawn; + } + } + WASIThreads.prototype.getImportObject = function () { + return { + wasi: { + 'thread-spawn': this.threadSpawn + } + }; + }; + WASIThreads.prototype.setup = function (wasmInstance, wasmModule, wasmMemory) { + wasmMemory !== null && wasmMemory !== void 0 ? wasmMemory : (wasmMemory = wasmInstance.exports.memory); + this.wasmInstance = wasmInstance; + this.wasmMemory = wasmMemory; + if (this.PThread) { + this.PThread.setup(wasmModule, wasmMemory); + } + }; + WASIThreads.prototype.preloadWorkers = function () { + if (this.PThread) { + return this.PThread.preloadWorkers(); + } + return Promise.resolve([]); + }; + /** + * It's ok to call this method to a WASI command module. + * + * in child thread, must call this method instead of {@link WASIThreads.start} even if it's a WASI command module + * + * @returns A proxied WebAssembly instance if in child thread, other wise the original instance + */ + WASIThreads.prototype.initialize = function (instance, module, memory) { + var exports$1 = instance.exports; + memory !== null && memory !== void 0 ? memory : (memory = exports$1.memory); + if (this.childThread) { + instance = createInstanceProxy(instance, memory); + } + this.setup(instance, module, memory); + var wasi = this.wasi; + if (('_start' in exports$1) && (typeof exports$1._start === 'function')) { + if (this.childThread) { + wasi.start(instance); + try { + var kStarted = getWasiSymbol(wasi, 'kStarted'); + wasi[kStarted] = false; + } + catch (_) { } + } + else { + setupInstance(wasi, instance); + } + } + else { + wasi.initialize(instance); + } + return instance; + }; + /** + * Equivalent to calling {@link WASIThreads.initialize} and then calling {@link WASIInstance.start} + * ```js + * this.initialize(instance, module, memory) + * this.wasi.start(instance) + * ``` + */ + WASIThreads.prototype.start = function (instance, module, memory) { + var exports$1 = instance.exports; + memory !== null && memory !== void 0 ? memory : (memory = exports$1.memory); + if (this.childThread) { + instance = createInstanceProxy(instance, memory); + } + this.setup(instance, module, memory); + var exitCode = this.wasi.start(instance); + return { exitCode: exitCode, instance: instance }; + }; + WASIThreads.prototype.terminateAllThreads = function () { + var _a; + if (!this.childThread) { + (_a = this.PThread) === null || _a === void 0 ? void 0 : _a.terminateAllThreads(); + } + else { + this.postMessage(createMessage('terminate-all-threads', {})); + } + }; + return WASIThreads; +}()); +function patchWasiInstance(wasiThreads, wasi) { + var patched = patchedWasiInstances.get(wasiThreads); + if (patched.has(wasi)) { + return; + } + var _this = wasiThreads; + var wasiImport = wasi.wasiImport; + if (wasiImport) { + var proc_exit_1 = wasiImport.proc_exit; + wasiImport.proc_exit = function (code) { + _this.terminateAllThreads(); + return proc_exit_1.call(this, code); + }; + } + if (!_this.childThread) { + var start_1 = wasi.start; + if (typeof start_1 === 'function') { + wasi.start = function (instance) { + try { + return start_1.call(this, instance); + } + catch (err) { + if (isTrapError(err)) { + _this.terminateAllThreads(); + } + throw err; + } + }; + } + } + patched.add(wasi); +} +function getWasiSymbol(wasi, description) { + var symbols = Object.getOwnPropertySymbols(wasi); + var selectDescription = function (description) { return function (s) { + if (s.description) { + return s.description === description; + } + return s.toString() === "Symbol(".concat(description, ")"); + }; }; + if (Array.isArray(description)) { + return description.map(function (d) { return symbols.filter(selectDescription(d))[0]; }); + } + return symbols.filter(selectDescription(description))[0]; +} +function setupInstance(wasi, instance) { + var _a = getWasiSymbol(wasi, ['kInstance', 'kSetMemory']), kInstance = _a[0], kSetMemory = _a[1]; + wasi[kInstance] = instance; + wasi[kSetMemory](instance.exports.memory); +} + +/** @public */ +var ThreadMessageHandler = /*#__PURE__*/ (function () { + function ThreadMessageHandler(options) { + var postMsg = getPostMessage(options); + if (typeof postMsg !== 'function') { + throw new TypeError('options.postMessage is not a function'); + } + this.postMessage = postMsg; + this.onLoad = options === null || options === void 0 ? void 0 : options.onLoad; + this.onError = typeof (options === null || options === void 0 ? void 0 : options.onError) === 'function' ? options.onError : function (_type, err) { throw err; }; + this.instance = undefined; + // this.module = undefined + this.messagesBeforeLoad = []; + } + /** @virtual */ + ThreadMessageHandler.prototype.instantiate = function (data) { + if (typeof this.onLoad === 'function') { + return this.onLoad(data); + } + throw new Error('ThreadMessageHandler.prototype.instantiate is not implemented'); + }; + /** @virtual */ + ThreadMessageHandler.prototype.handle = function (e) { + var _this = this; + var _a; + if ((_a = e === null || e === void 0 ? void 0 : e.data) === null || _a === void 0 ? void 0 : _a.__emnapi__) { + var type = e.data.__emnapi__.type; + var payload_1 = e.data.__emnapi__.payload; + try { + if (type === 'load') { + this._load(payload_1); + } + else if (type === 'start') { + this.handleAfterLoad(e, function () { + _this._start(payload_1); + }); + } + } + catch (err) { + this.onError(err, type); + } + } + }; + ThreadMessageHandler.prototype._load = function (payload) { + var _this = this; + if (this.instance !== undefined) + return; + var source; + try { + source = this.instantiate(payload); + } + catch (err) { + this._loaded(err, null, payload); + return; + } + var then = source && 'then' in source ? source.then : undefined; + if (typeof then === 'function') { + // eslint-disable-next-line @typescript-eslint/no-floating-promises + then.call(source, function (source) { _this._loaded(null, source, payload); }, function (err) { _this._loaded(err, null, payload); }); + } + else { + this._loaded(null, source, payload); + } + }; + ThreadMessageHandler.prototype._start = function (payload) { + var wasi_thread_start = this.instance.exports.wasi_thread_start; + if (typeof wasi_thread_start !== 'function') { + var err = new TypeError('wasi_thread_start is not exported'); + notifyPthreadCreateResult(payload.sab, 2, err); + throw err; + } + var postMessage = this.postMessage; + var tid = payload.tid; + var startArg = payload.arg; + notifyPthreadCreateResult(payload.sab, 1); + try { + wasi_thread_start(tid, startArg); + } + catch (err) { + if (err !== 'unwind') { + throw err; + } + else { + return; + } + } + postMessage(createMessage('cleanup-thread', { tid: tid })); + }; + ThreadMessageHandler.prototype._loaded = function (err, source, payload) { + if (err) { + notifyPthreadCreateResult(payload.sab, 2, err); + throw err; + } + if (source == null) { + var err_1 = new TypeError('onLoad should return an object'); + notifyPthreadCreateResult(payload.sab, 2, err_1); + throw err_1; + } + var instance = source.instance; + if (!instance) { + var err_2 = new TypeError('onLoad should return an object which includes "instance"'); + notifyPthreadCreateResult(payload.sab, 2, err_2); + throw err_2; + } + this.instance = instance; + var postMessage = this.postMessage; + postMessage(createMessage('loaded', {})); + var messages = this.messagesBeforeLoad; + this.messagesBeforeLoad = []; + for (var i = 0; i < messages.length; i++) { + var data = messages[i]; + this.handle({ data: data }); + } + }; + ThreadMessageHandler.prototype.handleAfterLoad = function (e, f) { + if (this.instance !== undefined) { + f.call(this, e); + } + else { + this.messagesBeforeLoad.push(e.data); + } + }; + return ThreadMessageHandler; +}()); +function notifyPthreadCreateResult(sab, result, error) { + if (sab) { + serizeErrorToBuffer(sab.buffer, result, error); + Atomics.notify(sab, 0); + } +} + +export { ThreadManager, ThreadMessageHandler, WASIThreads, createInstanceProxy, isSharedArrayBuffer, isTrapError }; diff --git a/node_modules/@emnapi/wasi-threads/dist/wasi-threads.js b/node_modules/@emnapi/wasi-threads/dist/wasi-threads.js new file mode 100644 index 00000000..998c8dea --- /dev/null +++ b/node_modules/@emnapi/wasi-threads/dist/wasi-threads.js @@ -0,0 +1,954 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.wasiThreads = {})); +})(this, (function (exports) { + var _WebAssembly = typeof WebAssembly !== 'undefined' + ? WebAssembly + : typeof WXWebAssembly !== 'undefined' + ? WXWebAssembly + : undefined; + var ENVIRONMENT_IS_NODE = typeof process === 'object' && process !== null && + typeof process.versions === 'object' && process.versions !== null && + typeof process.versions.node === 'string'; + function getPostMessage(options) { + return typeof (options === null || options === void 0 ? void 0 : options.postMessage) === 'function' + ? options.postMessage + : typeof postMessage === 'function' + ? postMessage + : undefined; + } + function serizeErrorToBuffer(sab, code, error) { + var i32array = new Int32Array(sab); + Atomics.store(i32array, 0, code); + if (code > 1 && error) { + var name_1 = error.name; + var message = error.message; + var stack = error.stack; + var nameBuffer = new TextEncoder().encode(name_1); + var messageBuffer = new TextEncoder().encode(message); + var stackBuffer = new TextEncoder().encode(stack); + Atomics.store(i32array, 1, nameBuffer.length); + Atomics.store(i32array, 2, messageBuffer.length); + Atomics.store(i32array, 3, stackBuffer.length); + var buffer = new Uint8Array(sab); + buffer.set(nameBuffer, 16); + buffer.set(messageBuffer, 16 + nameBuffer.length); + buffer.set(stackBuffer, 16 + nameBuffer.length + messageBuffer.length); + } + } + function deserizeErrorFromBuffer(sab) { + var _a, _b; + var i32array = new Int32Array(sab); + var status = Atomics.load(i32array, 0); + if (status <= 1) { + return null; + } + var nameLength = Atomics.load(i32array, 1); + var messageLength = Atomics.load(i32array, 2); + var stackLength = Atomics.load(i32array, 3); + var buffer = new Uint8Array(sab); + var nameBuffer = buffer.slice(16, 16 + nameLength); + var messageBuffer = buffer.slice(16 + nameLength, 16 + nameLength + messageLength); + var stackBuffer = buffer.slice(16 + nameLength + messageLength, 16 + nameLength + messageLength + stackLength); + var name = new TextDecoder().decode(nameBuffer); + var message = new TextDecoder().decode(messageBuffer); + var stack = new TextDecoder().decode(stackBuffer); + var ErrorConstructor = (_a = globalThis[name]) !== null && _a !== void 0 ? _a : (name === 'RuntimeError' ? ((_b = _WebAssembly.RuntimeError) !== null && _b !== void 0 ? _b : Error) : Error); + var error = new ErrorConstructor(message); + Object.defineProperty(error, 'stack', { + value: stack, + writable: true, + enumerable: false, + configurable: true + }); + return error; + } + /** @public */ + function isSharedArrayBuffer(value) { + return ((typeof SharedArrayBuffer === 'function' && value instanceof SharedArrayBuffer) || + (Object.prototype.toString.call(value) === '[object SharedArrayBuffer]')); + } + /** @public */ + function isTrapError(e) { + try { + return e instanceof _WebAssembly.RuntimeError; + } + catch (_) { + return false; + } + } + + function createMessage(type, payload) { + return { + __emnapi__: { + type: type, + payload: payload + } + }; + } + + var WASI_THREADS_MAX_TID = 0x1FFFFFFF; + function checkSharedWasmMemory(wasmMemory) { + if (wasmMemory) { + if (!isSharedArrayBuffer(wasmMemory.buffer)) { + throw new Error('Multithread features require shared wasm memory. ' + + 'Try to compile with `-matomics -mbulk-memory` and use `--import-memory --shared-memory` during linking, ' + + 'then create WebAssembly.Memory with `shared: true` option'); + } + } + else { + if (typeof SharedArrayBuffer === 'undefined') { + throw new Error('Current environment does not support SharedArrayBuffer, threads are not available!'); + } + } + } + function getReuseWorker(value) { + var _a; + if (typeof value === 'boolean') { + return value ? { size: 0, strict: false } : false; + } + if (typeof value === 'number') { + if (!(value >= 0)) { + throw new RangeError('reuseWorker: size must be a non-negative integer'); + } + return { size: value, strict: false }; + } + if (!value) { + return false; + } + var size = (_a = Number(value.size)) !== null && _a !== void 0 ? _a : 0; + var strict = Boolean(value.strict); + if (!(size > 0) && strict) { + throw new RangeError('reuseWorker: size must be set to positive integer if strict is set to true'); + } + return { size: size, strict: strict }; + } + var nextWorkerID = 0; + /** @public */ + var ThreadManager = /*#__PURE__*/ (function () { + function ThreadManager(options) { + var _a; + this.unusedWorkers = []; + this.runningWorkers = []; + this.pthreads = Object.create(null); + this.wasmModule = null; + this.wasmMemory = null; + this.messageEvents = new WeakMap(); + if (!options) { + throw new TypeError('ThreadManager(): options is not provided'); + } + if ('childThread' in options) { + this._childThread = Boolean(options.childThread); + } + else { + this._childThread = false; + } + if (this._childThread) { + this._onCreateWorker = undefined; + this._reuseWorker = false; + this._beforeLoad = undefined; + } + else { + this._onCreateWorker = options.onCreateWorker; + this._reuseWorker = getReuseWorker(options.reuseWorker); + this._beforeLoad = options.beforeLoad; + } + this.printErr = (_a = options.printErr) !== null && _a !== void 0 ? _a : console.error.bind(console); + this.threadSpawn = options.threadSpawn; + } + Object.defineProperty(ThreadManager.prototype, "nextWorkerID", { + get: function () { return nextWorkerID; }, + enumerable: false, + configurable: true + }); + ThreadManager.prototype.init = function () { + if (!this._childThread) { + this.initMainThread(); + } + }; + ThreadManager.prototype.initMainThread = function () { + this.preparePool(); + }; + ThreadManager.prototype.preparePool = function () { + if (this._reuseWorker) { + if (this._reuseWorker.size) { + var pthreadPoolSize = this._reuseWorker.size; + while (pthreadPoolSize--) { + var worker = this.allocateUnusedWorker(); + if (ENVIRONMENT_IS_NODE) { + // https://github.com/nodejs/node/issues/53036 + worker.once('message', function () { }); + worker.unref(); + } + } + } + } + }; + ThreadManager.prototype.shouldPreloadWorkers = function () { + return !this._childThread && this._reuseWorker && this._reuseWorker.size > 0; + }; + ThreadManager.prototype.loadWasmModuleToAllWorkers = function () { + var _this_1 = this; + var promises = Array(this.unusedWorkers.length); + var _loop_1 = function (i) { + var worker = this_1.unusedWorkers[i]; + if (ENVIRONMENT_IS_NODE) + worker.ref(); + promises[i] = this_1.loadWasmModuleToWorker(worker).then(function (w) { + if (ENVIRONMENT_IS_NODE) + worker.unref(); + return w; + }, function (e) { + if (ENVIRONMENT_IS_NODE) + worker.unref(); + throw e; + }); + }; + var this_1 = this; + for (var i = 0; i < this.unusedWorkers.length; ++i) { + _loop_1(i); + } + return Promise.all(promises).catch(function (err) { + _this_1.terminateAllThreads(); + throw err; + }); + }; + ThreadManager.prototype.preloadWorkers = function () { + if (this.shouldPreloadWorkers()) { + return this.loadWasmModuleToAllWorkers(); + } + return Promise.resolve([]); + }; + ThreadManager.prototype.setup = function (wasmModule, wasmMemory) { + this.wasmModule = wasmModule; + this.wasmMemory = wasmMemory; + }; + ThreadManager.prototype.markId = function (worker) { + if (worker.__emnapi_tid) + return worker.__emnapi_tid; + var tid = nextWorkerID + 43; + nextWorkerID = (nextWorkerID + 1) % (WASI_THREADS_MAX_TID - 42); + this.pthreads[tid] = worker; + worker.__emnapi_tid = tid; + return tid; + }; + ThreadManager.prototype.returnWorkerToPool = function (worker) { + var tid = worker.__emnapi_tid; + if (tid !== undefined) { + delete this.pthreads[tid]; + } + this.unusedWorkers.push(worker); + this.runningWorkers.splice(this.runningWorkers.indexOf(worker), 1); + delete worker.__emnapi_tid; + if (ENVIRONMENT_IS_NODE) { + worker.unref(); + } + }; + ThreadManager.prototype.loadWasmModuleToWorker = function (worker, sab) { + var _this_1 = this; + if (worker.whenLoaded) + return worker.whenLoaded; + var err = this.printErr; + var beforeLoad = this._beforeLoad; + // eslint-disable-next-line @typescript-eslint/no-this-alias + var _this = this; + worker.whenLoaded = new Promise(function (resolve, reject) { + var handleError = function (e) { + var message = 'worker sent an error!'; + if (worker.__emnapi_tid !== undefined) { + message = 'worker (tid = ' + worker.__emnapi_tid + ') sent an error!'; + } + if ('message' in e) { + err(message + ' ' + e.message); + if (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1) { + try { + _this.terminateAllThreads(); + } + catch (_) { } + } + } + else { + err(message); + } + reject(e); + throw e; + }; + var handleMessage = function (data) { + if (data.__emnapi__) { + var type = data.__emnapi__.type; + var payload = data.__emnapi__.payload; + if (type === 'loaded') { + worker.loaded = true; + if (ENVIRONMENT_IS_NODE && !worker.__emnapi_tid) { + worker.unref(); + } + resolve(worker); + // if (payload.err) { + // err('failed to load in child thread: ' + (payload.err.message || payload.err)) + // } + } + else if (type === 'cleanup-thread') { + if (payload.tid in _this_1.pthreads) { + _this_1.cleanThread(worker, payload.tid); + } + } + else if (type === 'spawn-thread') { + _this_1.threadSpawn(payload.startArg, payload.errorOrTid); + } + else if (type === 'terminate-all-threads') { + _this_1.terminateAllThreads(); + } + } + }; + worker.onmessage = function (e) { + handleMessage(e.data); + _this_1.fireMessageEvent(worker, e); + }; + worker.onerror = handleError; + if (ENVIRONMENT_IS_NODE) { + worker.on('message', function (data) { + var _a, _b; + (_b = (_a = worker).onmessage) === null || _b === void 0 ? void 0 : _b.call(_a, { + data: data + }); + }); + worker.on('error', function (e) { + var _a, _b; + (_b = (_a = worker).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, e); + }); + worker.on('detachedExit', function () { }); + } + if (typeof beforeLoad === 'function') { + beforeLoad(worker); + } + try { + worker.postMessage(createMessage('load', { + wasmModule: _this_1.wasmModule, + wasmMemory: _this_1.wasmMemory, + sab: sab + })); + } + catch (err) { + checkSharedWasmMemory(_this_1.wasmMemory); + throw err; + } + }); + return worker.whenLoaded; + }; + ThreadManager.prototype.allocateUnusedWorker = function () { + var _onCreateWorker = this._onCreateWorker; + if (typeof _onCreateWorker !== 'function') { + throw new TypeError('`options.onCreateWorker` is not provided'); + } + var worker = _onCreateWorker({ type: 'thread', name: 'emnapi-pthread' }); + this.unusedWorkers.push(worker); + return worker; + }; + ThreadManager.prototype.getNewWorker = function (sab) { + if (this._reuseWorker) { + if (this.unusedWorkers.length === 0) { + if (this._reuseWorker.strict) { + if (!ENVIRONMENT_IS_NODE) { + var err = this.printErr; + err('Tried to spawn a new thread, but the thread pool is exhausted.\n' + + 'This might result in a deadlock unless some threads eventually exit or the code explicitly breaks out to the event loop.'); + return; + } + } + var worker_1 = this.allocateUnusedWorker(); + // eslint-disable-next-line @typescript-eslint/no-floating-promises + this.loadWasmModuleToWorker(worker_1, sab); + } + return this.unusedWorkers.pop(); + } + var worker = this.allocateUnusedWorker(); + // eslint-disable-next-line @typescript-eslint/no-floating-promises + this.loadWasmModuleToWorker(worker, sab); + return this.unusedWorkers.pop(); + }; + ThreadManager.prototype.cleanThread = function (worker, tid, force) { + if (!force && this._reuseWorker) { + this.returnWorkerToPool(worker); + } + else { + delete this.pthreads[tid]; + var index = this.runningWorkers.indexOf(worker); + if (index !== -1) { + this.runningWorkers.splice(index, 1); + } + this.terminateWorker(worker); + delete worker.__emnapi_tid; + } + }; + ThreadManager.prototype.terminateWorker = function (worker) { + var _this_1 = this; + var _a; + var tid = worker.__emnapi_tid; + // eslint-disable-next-line @typescript-eslint/no-floating-promises + worker.terminate(); + (_a = this.messageEvents.get(worker)) === null || _a === void 0 ? void 0 : _a.clear(); + this.messageEvents.delete(worker); + worker.onmessage = function (e) { + if (e.data.__emnapi__) { + var err = _this_1.printErr; + err('received "' + e.data.__emnapi__.type + '" command from terminated worker: ' + tid); + } + }; + }; + ThreadManager.prototype.terminateAllThreads = function () { + for (var i = 0; i < this.runningWorkers.length; ++i) { + this.terminateWorker(this.runningWorkers[i]); + } + for (var i = 0; i < this.unusedWorkers.length; ++i) { + this.terminateWorker(this.unusedWorkers[i]); + } + this.unusedWorkers = []; + this.runningWorkers = []; + this.pthreads = Object.create(null); + this.preparePool(); + }; + ThreadManager.prototype.addMessageEventListener = function (worker, onMessage) { + var listeners = this.messageEvents.get(worker); + if (!listeners) { + listeners = new Set(); + this.messageEvents.set(worker, listeners); + } + listeners.add(onMessage); + return function () { + listeners === null || listeners === void 0 ? void 0 : listeners.delete(onMessage); + }; + }; + ThreadManager.prototype.fireMessageEvent = function (worker, e) { + var listeners = this.messageEvents.get(worker); + if (!listeners) + return; + var err = this.printErr; + listeners.forEach(function (listener) { + try { + listener(e); + } + catch (e) { + err(e.stack); + } + }); + }; + return ThreadManager; + }()); + + var kIsProxy = Symbol('kIsProxy'); + /** @public */ + function createInstanceProxy(instance, memory) { + if (instance[kIsProxy]) + return instance; + // https://github.com/nodejs/help/issues/4102 + var originalExports = instance.exports; + var createHandler = function (target) { + var handlers = [ + 'apply', + 'construct', + 'defineProperty', + 'deleteProperty', + 'get', + 'getOwnPropertyDescriptor', + 'getPrototypeOf', + 'has', + 'isExtensible', + 'ownKeys', + 'preventExtensions', + 'set', + 'setPrototypeOf' + ]; + var handler = {}; + var _loop_1 = function (i) { + var name_1 = handlers[i]; + handler[name_1] = function () { + var args = Array.prototype.slice.call(arguments, 1); + args.unshift(target); + return Reflect[name_1].apply(Reflect, args); + }; + }; + for (var i = 0; i < handlers.length; i++) { + _loop_1(i); + } + return handler; + }; + var handler = createHandler(originalExports); + var _initialize = function () { }; + var _start = function () { return 0; }; + handler.get = function (_target, p, receiver) { + var _a; + if (p === 'memory') { + return (_a = (typeof memory === 'function' ? memory() : memory)) !== null && _a !== void 0 ? _a : Reflect.get(originalExports, p, receiver); + } + if (p === '_initialize') { + return p in originalExports ? _initialize : undefined; + } + if (p === '_start') { + return p in originalExports ? _start : undefined; + } + return Reflect.get(originalExports, p, receiver); + }; + handler.has = function (_target, p) { + if (p === 'memory') + return true; + return Reflect.has(originalExports, p); + }; + var exportsProxy = new Proxy(Object.create(null), handler); + return new Proxy(instance, { + get: function (target, p, receiver) { + if (p === 'exports') { + return exportsProxy; + } + if (p === kIsProxy) { + return true; + } + return Reflect.get(target, p, receiver); + } + }); + } + + var patchedWasiInstances = new WeakMap(); + /** @public */ + var WASIThreads = /*#__PURE__*/ (function () { + function WASIThreads(options) { + var _this_1 = this; + if (!options) { + throw new TypeError('WASIThreads(): options is not provided'); + } + if (!options.wasi) { + throw new TypeError('WASIThreads(): options.wasi is not provided'); + } + patchedWasiInstances.set(this, new WeakSet()); + var wasi = options.wasi; + patchWasiInstance(this, wasi); + this.wasi = wasi; + if ('childThread' in options) { + this.childThread = Boolean(options.childThread); + } + else { + this.childThread = false; + } + this.PThread = undefined; + if ('threadManager' in options) { + if (typeof options.threadManager === 'function') { + this.PThread = options.threadManager(); + } + else { + this.PThread = options.threadManager; + } + } + else { + if (!this.childThread) { + this.PThread = new ThreadManager(options); + this.PThread.init(); + } + } + var waitThreadStart = false; + if ('waitThreadStart' in options) { + waitThreadStart = typeof options.waitThreadStart === 'number' ? options.waitThreadStart : Boolean(options.waitThreadStart); + } + var postMessage = getPostMessage(options); + if (this.childThread && typeof postMessage !== 'function') { + throw new TypeError('options.postMessage is not a function'); + } + this.postMessage = postMessage; + var wasm64 = Boolean(options.wasm64); + var threadSpawn = function (startArg, errorOrTid) { + var _a; + var EAGAIN = 6; + var isNewABI = errorOrTid !== undefined; + try { + checkSharedWasmMemory(_this_1.wasmMemory); + } + catch (err) { + (_a = _this_1.PThread) === null || _a === void 0 ? void 0 : _a.printErr(err.stack); + if (isNewABI) { + var struct_1 = new Int32Array(_this_1.wasmMemory.buffer, errorOrTid, 2); + Atomics.store(struct_1, 0, 1); + Atomics.store(struct_1, 1, EAGAIN); + Atomics.notify(struct_1, 1); + return 1; + } + else { + return -EAGAIN; + } + } + if (!isNewABI) { + var malloc = _this_1.wasmInstance.exports.malloc; + errorOrTid = wasm64 ? Number(malloc(BigInt(8))) : (malloc(8) >>> 0); + if (!errorOrTid) { + return -48; /* ENOMEM */ + } + } + var _free = _this_1.wasmInstance.exports.free; + var free = wasm64 ? function (ptr) { _free(BigInt(ptr)); } : _free; + var struct = new Int32Array(_this_1.wasmMemory.buffer, errorOrTid, 2); + Atomics.store(struct, 0, 0); + Atomics.store(struct, 1, 0); + if (_this_1.childThread) { + postMessage(createMessage('spawn-thread', { + startArg: startArg, + errorOrTid: errorOrTid + })); + Atomics.wait(struct, 1, 0); + var isError = Atomics.load(struct, 0); + var result = Atomics.load(struct, 1); + if (isNewABI) { + return isError; + } + free(errorOrTid); + return isError ? -result : result; + } + var shouldWait = waitThreadStart || (waitThreadStart === 0); + var sab; + if (shouldWait) { + sab = new Int32Array(new SharedArrayBuffer(16 + 8192)); + Atomics.store(sab, 0, 0); + } + var worker; + var tid; + var PThread = _this_1.PThread; + try { + worker = PThread.getNewWorker(sab); + if (!worker) { + throw new Error('failed to get new worker'); + } + tid = PThread.markId(worker); + if (ENVIRONMENT_IS_NODE) { + worker.unref(); + } + worker.postMessage(createMessage('start', { + tid: tid, + arg: startArg, + sab: sab + })); + if (shouldWait) { + if (typeof waitThreadStart === 'number') { + var waitResult = Atomics.wait(sab, 0, 0, waitThreadStart); + if (waitResult === 'timed-out') { + try { + PThread.cleanThread(worker, tid, true); + } + catch (_) { } + throw new Error('Spawning thread timed out. Please check if the worker is created successfully and if message is handled properly in the worker.'); + } + } + else { + Atomics.wait(sab, 0, 0); + } + var r = Atomics.load(sab, 0); + if (r > 1) { + try { + PThread.cleanThread(worker, tid, true); + } + catch (_) { } + throw deserizeErrorFromBuffer(sab.buffer); + } + } + } + catch (e) { + Atomics.store(struct, 0, 1); + Atomics.store(struct, 1, EAGAIN); + Atomics.notify(struct, 1); + PThread === null || PThread === void 0 ? void 0 : PThread.printErr(e.stack); + if (isNewABI) { + return 1; + } + free(errorOrTid); + return -EAGAIN; + } + Atomics.store(struct, 0, 0); + Atomics.store(struct, 1, tid); + Atomics.notify(struct, 1); + PThread.runningWorkers.push(worker); + if (!shouldWait) { + worker.whenLoaded.catch(function (err) { + delete worker.whenLoaded; + PThread.cleanThread(worker, tid, true); + throw err; + }); + } + if (isNewABI) { + return 0; + } + free(errorOrTid); + return tid; + }; + this.threadSpawn = threadSpawn; + if (this.PThread) { + this.PThread.threadSpawn = threadSpawn; + } + } + WASIThreads.prototype.getImportObject = function () { + return { + wasi: { + 'thread-spawn': this.threadSpawn + } + }; + }; + WASIThreads.prototype.setup = function (wasmInstance, wasmModule, wasmMemory) { + wasmMemory !== null && wasmMemory !== void 0 ? wasmMemory : (wasmMemory = wasmInstance.exports.memory); + this.wasmInstance = wasmInstance; + this.wasmMemory = wasmMemory; + if (this.PThread) { + this.PThread.setup(wasmModule, wasmMemory); + } + }; + WASIThreads.prototype.preloadWorkers = function () { + if (this.PThread) { + return this.PThread.preloadWorkers(); + } + return Promise.resolve([]); + }; + /** + * It's ok to call this method to a WASI command module. + * + * in child thread, must call this method instead of {@link WASIThreads.start} even if it's a WASI command module + * + * @returns A proxied WebAssembly instance if in child thread, other wise the original instance + */ + WASIThreads.prototype.initialize = function (instance, module, memory) { + var exports$1 = instance.exports; + memory !== null && memory !== void 0 ? memory : (memory = exports$1.memory); + if (this.childThread) { + instance = createInstanceProxy(instance, memory); + } + this.setup(instance, module, memory); + var wasi = this.wasi; + if (('_start' in exports$1) && (typeof exports$1._start === 'function')) { + if (this.childThread) { + wasi.start(instance); + try { + var kStarted = getWasiSymbol(wasi, 'kStarted'); + wasi[kStarted] = false; + } + catch (_) { } + } + else { + setupInstance(wasi, instance); + } + } + else { + wasi.initialize(instance); + } + return instance; + }; + /** + * Equivalent to calling {@link WASIThreads.initialize} and then calling {@link WASIInstance.start} + * ```js + * this.initialize(instance, module, memory) + * this.wasi.start(instance) + * ``` + */ + WASIThreads.prototype.start = function (instance, module, memory) { + var exports$1 = instance.exports; + memory !== null && memory !== void 0 ? memory : (memory = exports$1.memory); + if (this.childThread) { + instance = createInstanceProxy(instance, memory); + } + this.setup(instance, module, memory); + var exitCode = this.wasi.start(instance); + return { exitCode: exitCode, instance: instance }; + }; + WASIThreads.prototype.terminateAllThreads = function () { + var _a; + if (!this.childThread) { + (_a = this.PThread) === null || _a === void 0 ? void 0 : _a.terminateAllThreads(); + } + else { + this.postMessage(createMessage('terminate-all-threads', {})); + } + }; + return WASIThreads; + }()); + function patchWasiInstance(wasiThreads, wasi) { + var patched = patchedWasiInstances.get(wasiThreads); + if (patched.has(wasi)) { + return; + } + var _this = wasiThreads; + var wasiImport = wasi.wasiImport; + if (wasiImport) { + var proc_exit_1 = wasiImport.proc_exit; + wasiImport.proc_exit = function (code) { + _this.terminateAllThreads(); + return proc_exit_1.call(this, code); + }; + } + if (!_this.childThread) { + var start_1 = wasi.start; + if (typeof start_1 === 'function') { + wasi.start = function (instance) { + try { + return start_1.call(this, instance); + } + catch (err) { + if (isTrapError(err)) { + _this.terminateAllThreads(); + } + throw err; + } + }; + } + } + patched.add(wasi); + } + function getWasiSymbol(wasi, description) { + var symbols = Object.getOwnPropertySymbols(wasi); + var selectDescription = function (description) { return function (s) { + if (s.description) { + return s.description === description; + } + return s.toString() === "Symbol(".concat(description, ")"); + }; }; + if (Array.isArray(description)) { + return description.map(function (d) { return symbols.filter(selectDescription(d))[0]; }); + } + return symbols.filter(selectDescription(description))[0]; + } + function setupInstance(wasi, instance) { + var _a = getWasiSymbol(wasi, ['kInstance', 'kSetMemory']), kInstance = _a[0], kSetMemory = _a[1]; + wasi[kInstance] = instance; + wasi[kSetMemory](instance.exports.memory); + } + + /** @public */ + var ThreadMessageHandler = /*#__PURE__*/ (function () { + function ThreadMessageHandler(options) { + var postMsg = getPostMessage(options); + if (typeof postMsg !== 'function') { + throw new TypeError('options.postMessage is not a function'); + } + this.postMessage = postMsg; + this.onLoad = options === null || options === void 0 ? void 0 : options.onLoad; + this.onError = typeof (options === null || options === void 0 ? void 0 : options.onError) === 'function' ? options.onError : function (_type, err) { throw err; }; + this.instance = undefined; + // this.module = undefined + this.messagesBeforeLoad = []; + } + /** @virtual */ + ThreadMessageHandler.prototype.instantiate = function (data) { + if (typeof this.onLoad === 'function') { + return this.onLoad(data); + } + throw new Error('ThreadMessageHandler.prototype.instantiate is not implemented'); + }; + /** @virtual */ + ThreadMessageHandler.prototype.handle = function (e) { + var _this = this; + var _a; + if ((_a = e === null || e === void 0 ? void 0 : e.data) === null || _a === void 0 ? void 0 : _a.__emnapi__) { + var type = e.data.__emnapi__.type; + var payload_1 = e.data.__emnapi__.payload; + try { + if (type === 'load') { + this._load(payload_1); + } + else if (type === 'start') { + this.handleAfterLoad(e, function () { + _this._start(payload_1); + }); + } + } + catch (err) { + this.onError(err, type); + } + } + }; + ThreadMessageHandler.prototype._load = function (payload) { + var _this = this; + if (this.instance !== undefined) + return; + var source; + try { + source = this.instantiate(payload); + } + catch (err) { + this._loaded(err, null, payload); + return; + } + var then = source && 'then' in source ? source.then : undefined; + if (typeof then === 'function') { + // eslint-disable-next-line @typescript-eslint/no-floating-promises + then.call(source, function (source) { _this._loaded(null, source, payload); }, function (err) { _this._loaded(err, null, payload); }); + } + else { + this._loaded(null, source, payload); + } + }; + ThreadMessageHandler.prototype._start = function (payload) { + var wasi_thread_start = this.instance.exports.wasi_thread_start; + if (typeof wasi_thread_start !== 'function') { + var err = new TypeError('wasi_thread_start is not exported'); + notifyPthreadCreateResult(payload.sab, 2, err); + throw err; + } + var postMessage = this.postMessage; + var tid = payload.tid; + var startArg = payload.arg; + notifyPthreadCreateResult(payload.sab, 1); + try { + wasi_thread_start(tid, startArg); + } + catch (err) { + if (err !== 'unwind') { + throw err; + } + else { + return; + } + } + postMessage(createMessage('cleanup-thread', { tid: tid })); + }; + ThreadMessageHandler.prototype._loaded = function (err, source, payload) { + if (err) { + notifyPthreadCreateResult(payload.sab, 2, err); + throw err; + } + if (source == null) { + var err_1 = new TypeError('onLoad should return an object'); + notifyPthreadCreateResult(payload.sab, 2, err_1); + throw err_1; + } + var instance = source.instance; + if (!instance) { + var err_2 = new TypeError('onLoad should return an object which includes "instance"'); + notifyPthreadCreateResult(payload.sab, 2, err_2); + throw err_2; + } + this.instance = instance; + var postMessage = this.postMessage; + postMessage(createMessage('loaded', {})); + var messages = this.messagesBeforeLoad; + this.messagesBeforeLoad = []; + for (var i = 0; i < messages.length; i++) { + var data = messages[i]; + this.handle({ data: data }); + } + }; + ThreadMessageHandler.prototype.handleAfterLoad = function (e, f) { + if (this.instance !== undefined) { + f.call(this, e); + } + else { + this.messagesBeforeLoad.push(e.data); + } + }; + return ThreadMessageHandler; + }()); + function notifyPthreadCreateResult(sab, result, error) { + if (sab) { + serizeErrorToBuffer(sab.buffer, result, error); + Atomics.notify(sab, 0); + } + } + + exports.ThreadManager = ThreadManager; + exports.ThreadMessageHandler = ThreadMessageHandler; + exports.WASIThreads = WASIThreads; + exports.createInstanceProxy = createInstanceProxy; + exports.isSharedArrayBuffer = isSharedArrayBuffer; + exports.isTrapError = isTrapError; + +})); diff --git a/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.d.mts b/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.d.mts new file mode 100644 index 00000000..aca989a4 --- /dev/null +++ b/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.d.mts @@ -0,0 +1,272 @@ +/// + +import type { Worker as Worker_2 } from 'worker_threads'; + +/** @public */ +export declare interface BaseOptions { + wasi: WASIInstance; + version?: 'preview1'; + wasm64?: boolean; +} + +/** @public */ +export declare interface ChildThreadOptions extends BaseOptions { + childThread: true; + postMessage?: (data: any) => void; +} + +/** @public */ +export declare interface CleanupThreadPayload { + tid: number; +} + +/** @public */ +export declare interface CommandInfo { + type: T; + payload: CommandPayloadMap[T]; +} + +/** @public */ +export declare interface CommandPayloadMap { + load: LoadPayload; + loaded: LoadedPayload; + start: StartPayload; + 'cleanup-thread': CleanupThreadPayload; + 'terminate-all-threads': TerminateAllThreadsPayload; + 'spawn-thread': SpawnThreadPayload; +} + +/** @public */ +export declare type CommandType = keyof CommandPayloadMap; + +/** @public */ +export declare function createInstanceProxy(instance: WebAssembly.Instance, memory?: WebAssembly.Memory | (() => WebAssembly.Memory)): WebAssembly.Instance; + +/** @public */ +export declare function isSharedArrayBuffer(value: any): value is SharedArrayBuffer; + +/** @public */ +export declare function isTrapError(e: Error): e is WebAssembly.RuntimeError; + +/** @public */ +export declare interface LoadedPayload { +} + +/** @public */ +export declare interface LoadPayload { + wasmModule: WebAssembly.Module; + wasmMemory: WebAssembly.Memory; + sab?: Int32Array; +} + +/** @public */ +export declare interface MainThreadBaseOptions extends BaseOptions { + waitThreadStart?: boolean | number; +} + +/** @public */ +export declare type MainThreadOptions = MainThreadOptionsWithThreadManager | MainThreadOptionsCreateThreadManager; + +/** @public */ +export declare interface MainThreadOptionsCreateThreadManager extends MainThreadBaseOptions, ThreadManagerOptionsMain { +} + +/** @public */ +export declare interface MainThreadOptionsWithThreadManager extends MainThreadBaseOptions { + threadManager?: ThreadManager | (() => ThreadManager); +} + +/** @public */ +export declare interface MessageEventData { + __emnapi__: CommandInfo; +} + +/** @public */ +export declare interface ReuseWorkerOptions { + /** + * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size | PTHREAD_POOL_SIZE} + */ + size: number; + /** + * @see {@link https://emscripten.org/docs/tools_reference/settings_reference.html#pthread-pool-size-strict | PTHREAD_POOL_SIZE_STRICT} + */ + strict?: boolean; +} + +/** @public */ +export declare interface SpawnThreadPayload { + startArg: number; + errorOrTid: number; +} + +/** @public */ +export declare interface StartPayload { + tid: number; + arg: number; + sab?: Int32Array; +} + +/** @public */ +export declare interface StartResult { + exitCode: number; + instance: WebAssembly.Instance; +} + +/** @public */ +export declare interface TerminateAllThreadsPayload { +} + +/** @public */ +export declare class ThreadManager { + unusedWorkers: WorkerLike[]; + runningWorkers: WorkerLike[]; + pthreads: Record; + get nextWorkerID(): number; + wasmModule: WebAssembly.Module | null; + wasmMemory: WebAssembly.Memory | null; + private readonly messageEvents; + private readonly _childThread; + private readonly _onCreateWorker; + private readonly _reuseWorker; + private readonly _beforeLoad?; + /* Excluded from this release type: printErr */ + threadSpawn?: ((startArg: number, errorOrTid?: number) => number); + constructor(options: ThreadManagerOptions); + init(): void; + initMainThread(): void; + private preparePool; + shouldPreloadWorkers(): boolean; + loadWasmModuleToAllWorkers(): Promise; + preloadWorkers(): Promise; + setup(wasmModule: WebAssembly.Module, wasmMemory: WebAssembly.Memory): void; + markId(worker: WorkerLike): number; + returnWorkerToPool(worker: WorkerLike): void; + loadWasmModuleToWorker(worker: WorkerLike, sab?: Int32Array): Promise; + allocateUnusedWorker(): WorkerLike; + getNewWorker(sab?: Int32Array): WorkerLike | undefined; + cleanThread(worker: WorkerLike, tid: number, force?: boolean): void; + terminateWorker(worker: WorkerLike): void; + terminateAllThreads(): void; + addMessageEventListener(worker: WorkerLike, onMessage: (e: WorkerMessageEvent) => void): () => void; + fireMessageEvent(worker: WorkerLike, e: WorkerMessageEvent): void; +} + +/** @public */ +export declare type ThreadManagerOptions = ThreadManagerOptionsMain | ThreadManagerOptionsChild; + +/** @public */ +export declare interface ThreadManagerOptionsBase { + printErr?: (message: string) => void; + threadSpawn?: (startArg: number, errorOrTid?: number) => number; +} + +/** @public */ +export declare interface ThreadManagerOptionsChild extends ThreadManagerOptionsBase { + childThread: true; +} + +/** @public */ +export declare interface ThreadManagerOptionsMain extends ThreadManagerOptionsBase { + beforeLoad?: (worker: WorkerLike) => any; + reuseWorker?: boolean | number | ReuseWorkerOptions; + onCreateWorker: WorkerFactory; + childThread?: false; +} + +/** @public */ +export declare class ThreadMessageHandler { + protected instance: WebAssembly.Instance | undefined; + private messagesBeforeLoad; + protected postMessage: (message: any) => void; + protected onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; + protected onError: (error: Error, type: WorkerMessageType) => void; + constructor(options?: ThreadMessageHandlerOptions); + /** @virtual */ + instantiate(data: LoadPayload): WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; + /** @virtual */ + handle(e: WorkerMessageEvent>): void; + private _load; + private _start; + protected _loaded(err: Error | null, source: WebAssembly.WebAssemblyInstantiatedSource | null, payload: LoadPayload): void; + protected handleAfterLoad(e: E, f: (e: E) => void): void; +} + +/** @public */ +export declare interface ThreadMessageHandlerOptions { + onLoad?: (data: LoadPayload) => WebAssembly.WebAssemblyInstantiatedSource | PromiseLike; + onError?: (error: Error, type: WorkerMessageType) => void; + postMessage?: (message: any) => void; +} + +/** @public */ +export declare interface WASIInstance { + readonly wasiImport?: Record; + initialize(instance: object): void; + start(instance: object): number; + getImportObject?(): any; +} + +/** @public */ +export declare class WASIThreads { + PThread: ThreadManager | undefined; + private wasmMemory; + private wasmInstance; + private readonly threadSpawn; + readonly childThread: boolean; + private readonly postMessage; + readonly wasi: WASIInstance; + constructor(options: WASIThreadsOptions); + getImportObject(): { + wasi: WASIThreadsImports; + }; + setup(wasmInstance: WebAssembly.Instance, wasmModule: WebAssembly.Module, wasmMemory?: WebAssembly.Memory): void; + preloadWorkers(): Promise; + /** + * It's ok to call this method to a WASI command module. + * + * in child thread, must call this method instead of {@link WASIThreads.start} even if it's a WASI command module + * + * @returns A proxied WebAssembly instance if in child thread, other wise the original instance + */ + initialize(instance: WebAssembly.Instance, module: WebAssembly.Module, memory?: WebAssembly.Memory): WebAssembly.Instance; + /** + * Equivalent to calling {@link WASIThreads.initialize} and then calling {@link WASIInstance.start} + * ```js + * this.initialize(instance, module, memory) + * this.wasi.start(instance) + * ``` + */ + start(instance: WebAssembly.Instance, module: WebAssembly.Module, memory?: WebAssembly.Memory): StartResult; + terminateAllThreads(): void; +} + +/** @public */ +export declare interface WASIThreadsImports { + 'thread-spawn': (startArg: number, errorOrTid?: number) => number; +} + +/** @public */ +export declare type WASIThreadsOptions = MainThreadOptions | ChildThreadOptions; + +/** @public */ +export declare type WorkerFactory = (ctx: { + type: string; + name: string; +}) => WorkerLike; + +/** @public */ +export declare type WorkerLike = (Worker | Worker_2) & { + whenLoaded?: Promise; + loaded?: boolean; + __emnapi_tid?: number; +}; + +/** @public */ +export declare interface WorkerMessageEvent { + data: T; +} + +/** @public */ +export declare type WorkerMessageType = 'load' | 'start'; + +export { } diff --git a/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.js b/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.js new file mode 100644 index 00000000..e4b87ae9 --- /dev/null +++ b/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.js @@ -0,0 +1 @@ +!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r((e="undefined"!=typeof globalThis?globalThis:e||self).wasiThreads={})}(this,function(e){var r="undefined"!=typeof WebAssembly?WebAssembly:"undefined"!=typeof WXWebAssembly?WXWebAssembly:void 0,t="object"==typeof process&&null!==process&&"object"==typeof process.versions&&null!==process.versions&&"string"==typeof process.versions.node;function o(e){return"function"==typeof(null==e?void 0:e.postMessage)?e.postMessage:"function"==typeof postMessage?postMessage:void 0}function n(e){return"function"==typeof SharedArrayBuffer&&e instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(e)}function i(e){try{return e instanceof r.RuntimeError}catch(e){return!1}}function s(e,r){return{__emnapi__:{type:e,payload:r}}}function a(e){if(e){if(!n(e.buffer))throw new Error("Multithread features require shared wasm memory. Try to compile with `-matomics -mbulk-memory` and use `--import-memory --shared-memory` during linking, then create WebAssembly.Memory with `shared: true` option")}else if("undefined"==typeof SharedArrayBuffer)throw new Error("Current environment does not support SharedArrayBuffer, threads are not available!")}var d=0,h=function(){function e(e){var r;if(this.unusedWorkers=[],this.runningWorkers=[],this.pthreads=Object.create(null),this.wasmModule=null,this.wasmMemory=null,this.messageEvents=new WeakMap,!e)throw new TypeError("ThreadManager(): options is not provided");this._childThread="childThread"in e&&Boolean(e.childThread),this._childThread?(this._onCreateWorker=void 0,this._reuseWorker=!1,this._beforeLoad=void 0):(this._onCreateWorker=e.onCreateWorker,this._reuseWorker=function(e){var r;if("boolean"==typeof e)return!!e&&{size:0,strict:!1};if("number"==typeof e){if(!(e>=0))throw new RangeError("reuseWorker: size must be a non-negative integer");return{size:e,strict:!1}}if(!e)return!1;var t=null!==(r=Number(e.size))&&void 0!==r?r:0,o=Boolean(e.strict);if(!(t>0)&&o)throw new RangeError("reuseWorker: size must be set to positive integer if strict is set to true");return{size:t,strict:o}}(e.reuseWorker),this._beforeLoad=e.beforeLoad),this.printErr=null!==(r=e.printErr)&&void 0!==r?r:console.error.bind(console),this.threadSpawn=e.threadSpawn}return Object.defineProperty(e.prototype,"nextWorkerID",{get:function(){return d},enumerable:!1,configurable:!0}),e.prototype.init=function(){this._childThread||this.initMainThread()},e.prototype.initMainThread=function(){this.preparePool()},e.prototype.preparePool=function(){if(this._reuseWorker&&this._reuseWorker.size)for(var e=this._reuseWorker.size;e--;){var r=this.allocateUnusedWorker();t&&(r.once("message",function(){}),r.unref())}},e.prototype.shouldPreloadWorkers=function(){return!this._childThread&&this._reuseWorker&&this._reuseWorker.size>0},e.prototype.loadWasmModuleToAllWorkers=function(){for(var e=this,r=Array(this.unusedWorkers.length),o=function(e){var o=n.unusedWorkers[e];t&&o.ref(),r[e]=n.loadWasmModuleToWorker(o).then(function(e){return t&&o.unref(),e},function(e){throw t&&o.unref(),e})},n=this,i=0;i>>0))return-48}var p=n.wasmInstance.exports.free,m=f?function(e){p(BigInt(e))}:p,y=new Int32Array(n.wasmMemory.buffer,o,2);if(Atomics.store(y,0,0),Atomics.store(y,1,0),n.childThread){c(s("spawn-thread",{startArg:e,errorOrTid:o})),Atomics.wait(y,1,0);var v=Atomics.load(y,0),w=Atomics.load(y,1);return d?v:(m(o),v?-w:w)}var g,_,T,k=u||0===u;k&&(g=new Int32Array(new SharedArrayBuffer(8208)),Atomics.store(g,0,0));var W=n.PThread;try{if(!(_=W.getNewWorker(g)))throw new Error("failed to get new worker");if(T=W.markId(_),t&&_.unref(),_.postMessage(s("start",{tid:T,arg:e,sab:g})),k){if("number"==typeof u){if("timed-out"===Atomics.wait(g,0,0,u)){try{W.cleanThread(_,T,!0)}catch(e){}throw new Error("Spawning thread timed out. Please check if the worker is created successfully and if message is handled properly in the worker.")}}else Atomics.wait(g,0,0);if(Atomics.load(g,0)>1){try{W.cleanThread(_,T,!0)}catch(e){}throw function(e){var t,o,n=new Int32Array(e);if(Atomics.load(n,0)<=1)return null;var i=Atomics.load(n,1),s=Atomics.load(n,2),a=Atomics.load(n,3),d=new Uint8Array(e),h=d.slice(16,16+i),u=d.slice(16+i,16+i+s),c=d.slice(16+i+s,16+i+s+a),l=(new TextDecoder).decode(h),f=(new TextDecoder).decode(u),p=(new TextDecoder).decode(c),m=new(null!==(t=globalThis[l])&&void 0!==t?t:"RuntimeError"===l&&null!==(o=r.RuntimeError)&&void 0!==o?o:Error)(f);return Object.defineProperty(m,"stack",{value:p,writable:!0,enumerable:!1,configurable:!0}),m}(g.buffer)}}}catch(e){return Atomics.store(y,0,1),Atomics.store(y,1,6),Atomics.notify(y,1),null==W||W.printErr(e.stack),d?1:(m(o),-6)}return Atomics.store(y,0,0),Atomics.store(y,1,T),Atomics.notify(y,1),W.runningWorkers.push(_),k||_.whenLoaded.catch(function(e){throw delete _.whenLoaded,W.cleanThread(_,T,!0),e}),d?0:(m(o),T)};this.threadSpawn=p,this.PThread&&(this.PThread.threadSpawn=p)}return e.prototype.getImportObject=function(){return{wasi:{"thread-spawn":this.threadSpawn}}},e.prototype.setup=function(e,r,t){null!=t||(t=e.exports.memory),this.wasmInstance=e,this.wasmMemory=t,this.PThread&&this.PThread.setup(r,t)},e.prototype.preloadWorkers=function(){return this.PThread?this.PThread.preloadWorkers():Promise.resolve([])},e.prototype.initialize=function(e,r,t){var o=e.exports;null!=t||(t=o.memory),this.childThread&&(e=c(e,t)),this.setup(e,r,t);var n=this.wasi;if("_start"in o&&"function"==typeof o._start)if(this.childThread){n.start(e);try{n[p(n,"kStarted")]=!1}catch(e){}}else!function(e,r){var t=p(e,["kInstance","kSetMemory"]),o=t[0],n=t[1];e[o]=r,e[n](r.exports.memory)}(n,e);else n.initialize(e);return e},e.prototype.start=function(e,r,t){var o=e.exports;return null!=t||(t=o.memory),this.childThread&&(e=c(e,t)),this.setup(e,r,t),{exitCode:this.wasi.start(e),instance:e}},e.prototype.terminateAllThreads=function(){var e;this.childThread?this.postMessage(s("terminate-all-threads",{})):null===(e=this.PThread)||void 0===e||e.terminateAllThreads()},e}();function p(e,r){var t=Object.getOwnPropertySymbols(e),o=function(e){return function(r){return r.description?r.description===e:r.toString()==="Symbol(".concat(e,")")}};return Array.isArray(r)?r.map(function(e){return t.filter(o(e))[0]}):t.filter(o(r))[0]}var m=function(){function e(e){var r=o(e);if("function"!=typeof r)throw new TypeError("options.postMessage is not a function");this.postMessage=r,this.onLoad=null==e?void 0:e.onLoad,this.onError="function"==typeof(null==e?void 0:e.onError)?e.onError:function(e,r){throw r},this.instance=void 0,this.messagesBeforeLoad=[]}return e.prototype.instantiate=function(e){if("function"==typeof this.onLoad)return this.onLoad(e);throw new Error("ThreadMessageHandler.prototype.instantiate is not implemented")},e.prototype.handle=function(e){var r,t=this;if(null===(r=null==e?void 0:e.data)||void 0===r?void 0:r.__emnapi__){var o=e.data.__emnapi__.type,n=e.data.__emnapi__.payload;try{"load"===o?this._load(n):"start"===o&&this.handleAfterLoad(e,function(){t._start(n)})}catch(e){this.onError(e,o)}}},e.prototype._load=function(e){var r=this;if(void 0===this.instance){var t;try{t=this.instantiate(e)}catch(r){return void this._loaded(r,null,e)}var o=t&&"then"in t?t.then:void 0;"function"==typeof o?o.call(t,function(t){r._loaded(null,t,e)},function(t){r._loaded(t,null,e)}):this._loaded(null,t,e)}},e.prototype._start=function(e){var r=this.instance.exports.wasi_thread_start;if("function"!=typeof r){var t=new TypeError("wasi_thread_start is not exported");throw y(e.sab,2,t),t}var o=this.postMessage,n=e.tid,i=e.arg;y(e.sab,1);try{r(n,i)}catch(t){if("unwind"!==t)throw t;return}o(s("cleanup-thread",{tid:n}))},e.prototype._loaded=function(e,r,t){if(e)throw y(t.sab,2,e),e;if(null==r){var o=new TypeError("onLoad should return an object");throw y(t.sab,2,o),o}var n=r.instance;if(!n){var i=new TypeError('onLoad should return an object which includes "instance"');throw y(t.sab,2,i),i}this.instance=n,(0,this.postMessage)(s("loaded",{}));var a=this.messagesBeforeLoad;this.messagesBeforeLoad=[];for(var d=0;d1&&t){var n=t.name,i=t.message,s=t.stack,a=(new TextEncoder).encode(n),d=(new TextEncoder).encode(i),h=(new TextEncoder).encode(s);Atomics.store(o,1,a.length),Atomics.store(o,2,d.length),Atomics.store(o,3,h.length);var u=new Uint8Array(e);u.set(a,16),u.set(d,16+a.length),u.set(h,16+a.length+d.length)}}(e.buffer,r,t),Atomics.notify(e,0))}e.ThreadManager=h,e.ThreadMessageHandler=m,e.WASIThreads=f,e.createInstanceProxy=c,e.isSharedArrayBuffer=n,e.isTrapError=i}); diff --git a/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.mjs b/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.mjs new file mode 100644 index 00000000..ac5b9126 --- /dev/null +++ b/node_modules/@emnapi/wasi-threads/dist/wasi-threads.min.mjs @@ -0,0 +1 @@ +const e="undefined"!=typeof WebAssembly?WebAssembly:"undefined"!=typeof WXWebAssembly?WXWebAssembly:void 0,t="object"==typeof process&&null!==process&&"object"==typeof process.versions&&null!==process.versions&&"string"==typeof process.versions.node;function r(e){return"function"==typeof(null==e?void 0:e.postMessage)?e.postMessage:"function"==typeof postMessage?postMessage:void 0}function s(e){return"function"==typeof SharedArrayBuffer&&e instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(e)}function o(t){try{return t instanceof e.RuntimeError}catch(e){return!1}}function n(e,t){return{__emnapi__:{type:e,payload:t}}}function i(e){if(e){if(!s(e.buffer))throw new Error("Multithread features require shared wasm memory. Try to compile with `-matomics -mbulk-memory` and use `--import-memory --shared-memory` during linking, then create WebAssembly.Memory with `shared: true` option")}else if("undefined"==typeof SharedArrayBuffer)throw new Error("Current environment does not support SharedArrayBuffer, threads are not available!")}let a=0;class h{get nextWorkerID(){return a}constructor(e){var t;if(this.unusedWorkers=[],this.runningWorkers=[],this.pthreads=Object.create(null),this.wasmModule=null,this.wasmMemory=null,this.messageEvents=new WeakMap,!e)throw new TypeError("ThreadManager(): options is not provided");this._childThread="childThread"in e&&Boolean(e.childThread),this._childThread?(this._onCreateWorker=void 0,this._reuseWorker=!1,this._beforeLoad=void 0):(this._onCreateWorker=e.onCreateWorker,this._reuseWorker=function(e){var t;if("boolean"==typeof e)return!!e&&{size:0,strict:!1};if("number"==typeof e){if(!(e>=0))throw new RangeError("reuseWorker: size must be a non-negative integer");return{size:e,strict:!1}}if(!e)return!1;const r=null!==(t=Number(e.size))&&void 0!==t?t:0,s=Boolean(e.strict);if(!(r>0)&&s)throw new RangeError("reuseWorker: size must be set to positive integer if strict is set to true");return{size:r,strict:s}}(e.reuseWorker),this._beforeLoad=e.beforeLoad),this.printErr=null!==(t=e.printErr)&&void 0!==t?t:console.error.bind(console),this.threadSpawn=e.threadSpawn}init(){this._childThread||this.initMainThread()}initMainThread(){this.preparePool()}preparePool(){if(this._reuseWorker&&this._reuseWorker.size){let e=this._reuseWorker.size;for(;e--;){const e=this.allocateUnusedWorker();t&&(e.once("message",()=>{}),e.unref())}}}shouldPreloadWorkers(){return!this._childThread&&this._reuseWorker&&this._reuseWorker.size>0}loadWasmModuleToAllWorkers(){const e=Array(this.unusedWorkers.length);for(let r=0;r(t&&s.unref(),e),e=>{throw t&&s.unref(),e})}return Promise.all(e).catch(e=>{throw this.terminateAllThreads(),e})}preloadWorkers(){return this.shouldPreloadWorkers()?this.loadWasmModuleToAllWorkers():Promise.resolve([])}setup(e,t){this.wasmModule=e,this.wasmMemory=t}markId(e){if(e.__emnapi_tid)return e.__emnapi_tid;const t=a+43;return a=(a+1)%536870869,this.pthreads[t]=e,e.__emnapi_tid=t,t}returnWorkerToPool(e){var r=e.__emnapi_tid;void 0!==r&&delete this.pthreads[r],this.unusedWorkers.push(e),this.runningWorkers.splice(this.runningWorkers.indexOf(e),1),delete e.__emnapi_tid,t&&e.unref()}loadWasmModuleToWorker(e,r){if(e.whenLoaded)return e.whenLoaded;const s=this.printErr,o=this._beforeLoad,a=this;return e.whenLoaded=new Promise((h,d)=>{const l=r=>{if(r.__emnapi__){const s=r.__emnapi__.type,o=r.__emnapi__.payload;"loaded"===s?(e.loaded=!0,t&&!e.__emnapi_tid&&e.unref(),h(e)):"cleanup-thread"===s?o.tid in this.pthreads&&this.cleanThread(e,o.tid):"spawn-thread"===s?this.threadSpawn(o.startArg,o.errorOrTid):"terminate-all-threads"===s&&this.terminateAllThreads()}};e.onmessage=t=>{l(t.data),this.fireMessageEvent(e,t)},e.onerror=function(t){let r="worker sent an error!";if(void 0!==e.__emnapi_tid&&(r="worker (tid = "+e.__emnapi_tid+") sent an error!"),"message"in t){if(s(r+" "+t.message),-1!==t.message.indexOf("RuntimeError")||-1!==t.message.indexOf("unreachable"))try{a.terminateAllThreads()}catch(e){}}else s(r);throw d(t),t},t&&(e.on("message",function(t){var r,s;null===(s=(r=e).onmessage)||void 0===s||s.call(r,{data:t})}),e.on("error",function(t){var r,s;null===(s=(r=e).onerror)||void 0===s||s.call(r,t)}),e.on("detachedExit",function(){})),"function"==typeof o&&o(e);try{e.postMessage(n("load",{wasmModule:this.wasmModule,wasmMemory:this.wasmMemory,sab:r}))}catch(e){throw i(this.wasmMemory),e}}),e.whenLoaded}allocateUnusedWorker(){const e=this._onCreateWorker;if("function"!=typeof e)throw new TypeError("`options.onCreateWorker` is not provided");const t=e({type:"thread",name:"emnapi-pthread"});return this.unusedWorkers.push(t),t}getNewWorker(e){if(this._reuseWorker){if(0===this.unusedWorkers.length){if(this._reuseWorker.strict&&!t){return void(0,this.printErr)("Tried to spawn a new thread, but the thread pool is exhausted.\nThis might result in a deadlock unless some threads eventually exit or the code explicitly breaks out to the event loop.")}const r=this.allocateUnusedWorker();this.loadWasmModuleToWorker(r,e)}return this.unusedWorkers.pop()}const r=this.allocateUnusedWorker();return this.loadWasmModuleToWorker(r,e),this.unusedWorkers.pop()}cleanThread(e,t,r){if(!r&&this._reuseWorker)this.returnWorkerToPool(e);else{delete this.pthreads[t];const r=this.runningWorkers.indexOf(e);-1!==r&&this.runningWorkers.splice(r,1),this.terminateWorker(e),delete e.__emnapi_tid}}terminateWorker(e){var t;const r=e.__emnapi_tid;e.terminate(),null===(t=this.messageEvents.get(e))||void 0===t||t.clear(),this.messageEvents.delete(e),e.onmessage=e=>{if(e.data.__emnapi__){(0,this.printErr)('received "'+e.data.__emnapi__.type+'" command from terminated worker: '+r)}}}terminateAllThreads(){for(let e=0;e{null==r||r.delete(t)}}fireMessageEvent(e,t){const r=this.messageEvents.get(e);if(!r)return;const s=this.printErr;r.forEach(e=>{try{e(t)}catch(e){s(e.stack)}})}}const d=Symbol("kIsProxy");function l(e,t){if(e[d])return e;const r=e.exports,s=function(e){const t=["apply","construct","defineProperty","deleteProperty","get","getOwnPropertyDescriptor","getPrototypeOf","has","isExtensible","ownKeys","preventExtensions","set","setPrototypeOf"],r={};for(let s=0;s{},n=()=>0;s.get=function(e,s,i){var a;return"memory"===s?null!==(a="function"==typeof t?t():t)&&void 0!==a?a:Reflect.get(r,s,i):"_initialize"===s?s in r?o:void 0:"_start"===s?s in r?n:void 0:Reflect.get(r,s,i)},s.has=function(e,t){return"memory"===t||Reflect.has(r,t)};const i=new Proxy(Object.create(null),s);return new Proxy(e,{get:(e,t,r)=>"exports"===t?i:t===d||Reflect.get(e,t,r)})}const c=new WeakMap;class u{constructor(s){if(!s)throw new TypeError("WASIThreads(): options is not provided");if(!s.wasi)throw new TypeError("WASIThreads(): options.wasi is not provided");c.set(this,new WeakSet);const a=s.wasi;!function(e,t){const r=c.get(e);if(r.has(t))return;const s=e,n=t.wasiImport;if(n){const e=n.proc_exit;n.proc_exit=function(t){return s.terminateAllThreads(),e.call(this,t)}}if(!s.childThread){const e=t.start;"function"==typeof e&&(t.start=function(t){try{return e.call(this,t)}catch(e){throw o(e)&&s.terminateAllThreads(),e}})}r.add(t)}(this,a),this.wasi=a,this.childThread="childThread"in s&&Boolean(s.childThread),this.PThread=void 0,"threadManager"in s?"function"==typeof s.threadManager?this.PThread=s.threadManager():this.PThread=s.threadManager:this.childThread||(this.PThread=new h(s),this.PThread.init());let d=!1;"waitThreadStart"in s&&(d="number"==typeof s.waitThreadStart?s.waitThreadStart:Boolean(s.waitThreadStart));const l=r(s);if(this.childThread&&"function"!=typeof l)throw new TypeError("options.postMessage is not a function");this.postMessage=l;const u=Boolean(s.wasm64),f=(r,s)=>{var o;const a=void 0!==s;try{i(this.wasmMemory)}catch(e){if(null===(o=this.PThread)||void 0===o||o.printErr(e.stack),a){const e=new Int32Array(this.wasmMemory.buffer,s,2);return Atomics.store(e,0,1),Atomics.store(e,1,6),Atomics.notify(e,1),1}return-6}if(!a){const e=this.wasmInstance.exports.malloc;if(!(s=u?Number(e(BigInt(8))):e(8)>>>0))return-48}const h=this.wasmInstance.exports.free,c=u?e=>{h(BigInt(e))}:h,f=new Int32Array(this.wasmMemory.buffer,s,2);if(Atomics.store(f,0,0),Atomics.store(f,1,0),this.childThread){l(n("spawn-thread",{startArg:r,errorOrTid:s})),Atomics.wait(f,1,0);const e=Atomics.load(f,0),t=Atomics.load(f,1);return a?e:(c(s),e?-t:t)}const p=d||0===d;let m,w,y;p&&(m=new Int32Array(new SharedArrayBuffer(8208)),Atomics.store(m,0,0));const _=this.PThread;try{if(w=_.getNewWorker(m),!w)throw new Error("failed to get new worker");if(y=_.markId(w),t&&w.unref(),w.postMessage(n("start",{tid:y,arg:r,sab:m})),p){if("number"==typeof d){if("timed-out"===Atomics.wait(m,0,0,d)){try{_.cleanThread(w,y,!0)}catch(e){}throw new Error("Spawning thread timed out. Please check if the worker is created successfully and if message is handled properly in the worker.")}}else Atomics.wait(m,0,0);if(Atomics.load(m,0)>1){try{_.cleanThread(w,y,!0)}catch(e){}throw function(t){var r,s;const o=new Int32Array(t);if(Atomics.load(o,0)<=1)return null;const n=Atomics.load(o,1),i=Atomics.load(o,2),a=Atomics.load(o,3),h=new Uint8Array(t),d=h.slice(16,16+n),l=h.slice(16+n,16+n+i),c=h.slice(16+n+i,16+n+i+a),u=(new TextDecoder).decode(d),f=(new TextDecoder).decode(l),p=(new TextDecoder).decode(c),m=new(null!==(r=globalThis[u])&&void 0!==r?r:"RuntimeError"===u&&null!==(s=e.RuntimeError)&&void 0!==s?s:Error)(f);return Object.defineProperty(m,"stack",{value:p,writable:!0,enumerable:!1,configurable:!0}),m}(m.buffer)}}}catch(e){return Atomics.store(f,0,1),Atomics.store(f,1,6),Atomics.notify(f,1),null==_||_.printErr(e.stack),a?1:(c(s),-6)}return Atomics.store(f,0,0),Atomics.store(f,1,y),Atomics.notify(f,1),_.runningWorkers.push(w),p||w.whenLoaded.catch(e=>{throw delete w.whenLoaded,_.cleanThread(w,y,!0),e}),a?0:(c(s),y)};this.threadSpawn=f,this.PThread&&(this.PThread.threadSpawn=f)}getImportObject(){return{wasi:{"thread-spawn":this.threadSpawn}}}setup(e,t,r){null!=r||(r=e.exports.memory),this.wasmInstance=e,this.wasmMemory=r,this.PThread&&this.PThread.setup(t,r)}preloadWorkers(){return this.PThread?this.PThread.preloadWorkers():Promise.resolve([])}initialize(e,t,r){const s=e.exports;null!=r||(r=s.memory),this.childThread&&(e=l(e,r)),this.setup(e,t,r);const o=this.wasi;if("_start"in s&&"function"==typeof s._start)if(this.childThread){o.start(e);try{o[f(o,"kStarted")]=!1}catch(e){}}else!function(e,t){const[r,s]=f(e,["kInstance","kSetMemory"]);e[r]=t,e[s](t.exports.memory)}(o,e);else o.initialize(e);return e}start(e,t,r){const s=e.exports;null!=r||(r=s.memory),this.childThread&&(e=l(e,r)),this.setup(e,t,r);return{exitCode:this.wasi.start(e),instance:e}}terminateAllThreads(){var e;this.childThread?this.postMessage(n("terminate-all-threads",{})):null===(e=this.PThread)||void 0===e||e.terminateAllThreads()}}function f(e,t){const r=Object.getOwnPropertySymbols(e),s=e=>t=>t.description?t.description===e:t.toString()===`Symbol(${e})`;return Array.isArray(t)?t.map(e=>r.filter(s(e))[0]):r.filter(s(t))[0]}class p{constructor(e){const t=r(e);if("function"!=typeof t)throw new TypeError("options.postMessage is not a function");this.postMessage=t,this.onLoad=null==e?void 0:e.onLoad,this.onError="function"==typeof(null==e?void 0:e.onError)?e.onError:(e,t)=>{throw t},this.instance=void 0,this.messagesBeforeLoad=[]}instantiate(e){if("function"==typeof this.onLoad)return this.onLoad(e);throw new Error("ThreadMessageHandler.prototype.instantiate is not implemented")}handle(e){var t;if(null===(t=null==e?void 0:e.data)||void 0===t?void 0:t.__emnapi__){const t=e.data.__emnapi__.type,r=e.data.__emnapi__.payload;try{"load"===t?this._load(r):"start"===t&&this.handleAfterLoad(e,()=>{this._start(r)})}catch(e){this.onError(e,t)}}}_load(e){if(void 0!==this.instance)return;let t;try{t=this.instantiate(e)}catch(t){return void this._loaded(t,null,e)}const r=t&&"then"in t?t.then:void 0;"function"==typeof r?r.call(t,t=>{this._loaded(null,t,e)},t=>{this._loaded(t,null,e)}):this._loaded(null,t,e)}_start(e){const t=this.instance.exports.wasi_thread_start;if("function"!=typeof t){const t=new TypeError("wasi_thread_start is not exported");throw m(e.sab,2,t),t}const r=this.postMessage,s=e.tid,o=e.arg;m(e.sab,1);try{t(s,o)}catch(e){if("unwind"!==e)throw e;return}r(n("cleanup-thread",{tid:s}))}_loaded(e,t,r){if(e)throw m(r.sab,2,e),e;if(null==t){const e=new TypeError("onLoad should return an object");throw m(r.sab,2,e),e}const s=t.instance;if(!s){const e=new TypeError('onLoad should return an object which includes "instance"');throw m(r.sab,2,e),e}this.instance=s;(0,this.postMessage)(n("loaded",{}));const o=this.messagesBeforeLoad;this.messagesBeforeLoad=[];for(let e=0;e1&&r){const t=r.name,o=r.message,n=r.stack,i=(new TextEncoder).encode(t),a=(new TextEncoder).encode(o),h=(new TextEncoder).encode(n);Atomics.store(s,1,i.length),Atomics.store(s,2,a.length),Atomics.store(s,3,h.length);const d=new Uint8Array(e);d.set(i,16),d.set(a,16+i.length),d.set(h,16+i.length+a.length)}}(e.buffer,t,r),Atomics.notify(e,0))}export{h as ThreadManager,p as ThreadMessageHandler,u as WASIThreads,l as createInstanceProxy,s as isSharedArrayBuffer,o as isTrapError}; diff --git a/node_modules/@emnapi/wasi-threads/dist/wasi-threads.mjs b/node_modules/@emnapi/wasi-threads/dist/wasi-threads.mjs new file mode 100644 index 00000000..27bc8db6 --- /dev/null +++ b/node_modules/@emnapi/wasi-threads/dist/wasi-threads.mjs @@ -0,0 +1,889 @@ +const _WebAssembly = typeof WebAssembly !== 'undefined' + ? WebAssembly + : typeof WXWebAssembly !== 'undefined' + ? WXWebAssembly + : undefined; +const ENVIRONMENT_IS_NODE = typeof process === 'object' && process !== null && + typeof process.versions === 'object' && process.versions !== null && + typeof process.versions.node === 'string'; +function getPostMessage(options) { + return typeof (options === null || options === void 0 ? void 0 : options.postMessage) === 'function' + ? options.postMessage + : typeof postMessage === 'function' + ? postMessage + : undefined; +} +function serizeErrorToBuffer(sab, code, error) { + const i32array = new Int32Array(sab); + Atomics.store(i32array, 0, code); + if (code > 1 && error) { + const name = error.name; + const message = error.message; + const stack = error.stack; + const nameBuffer = new TextEncoder().encode(name); + const messageBuffer = new TextEncoder().encode(message); + const stackBuffer = new TextEncoder().encode(stack); + Atomics.store(i32array, 1, nameBuffer.length); + Atomics.store(i32array, 2, messageBuffer.length); + Atomics.store(i32array, 3, stackBuffer.length); + const buffer = new Uint8Array(sab); + buffer.set(nameBuffer, 16); + buffer.set(messageBuffer, 16 + nameBuffer.length); + buffer.set(stackBuffer, 16 + nameBuffer.length + messageBuffer.length); + } +} +function deserizeErrorFromBuffer(sab) { + var _a, _b; + const i32array = new Int32Array(sab); + const status = Atomics.load(i32array, 0); + if (status <= 1) { + return null; + } + const nameLength = Atomics.load(i32array, 1); + const messageLength = Atomics.load(i32array, 2); + const stackLength = Atomics.load(i32array, 3); + const buffer = new Uint8Array(sab); + const nameBuffer = buffer.slice(16, 16 + nameLength); + const messageBuffer = buffer.slice(16 + nameLength, 16 + nameLength + messageLength); + const stackBuffer = buffer.slice(16 + nameLength + messageLength, 16 + nameLength + messageLength + stackLength); + const name = new TextDecoder().decode(nameBuffer); + const message = new TextDecoder().decode(messageBuffer); + const stack = new TextDecoder().decode(stackBuffer); + const ErrorConstructor = (_a = globalThis[name]) !== null && _a !== void 0 ? _a : (name === 'RuntimeError' ? ((_b = _WebAssembly.RuntimeError) !== null && _b !== void 0 ? _b : Error) : Error); + const error = new ErrorConstructor(message); + Object.defineProperty(error, 'stack', { + value: stack, + writable: true, + enumerable: false, + configurable: true + }); + return error; +} +function isSharedArrayBuffer(value) { + return ((typeof SharedArrayBuffer === 'function' && value instanceof SharedArrayBuffer) || + (Object.prototype.toString.call(value) === '[object SharedArrayBuffer]')); +} +function isTrapError(e) { + try { + return e instanceof _WebAssembly.RuntimeError; + } + catch (_) { + return false; + } +} + +function createMessage(type, payload) { + return { + __emnapi__: { + type, + payload + } + }; +} + +const WASI_THREADS_MAX_TID = 0x1FFFFFFF; +function checkSharedWasmMemory(wasmMemory) { + if (wasmMemory) { + if (!isSharedArrayBuffer(wasmMemory.buffer)) { + throw new Error('Multithread features require shared wasm memory. ' + + 'Try to compile with `-matomics -mbulk-memory` and use `--import-memory --shared-memory` during linking, ' + + 'then create WebAssembly.Memory with `shared: true` option'); + } + } + else { + if (typeof SharedArrayBuffer === 'undefined') { + throw new Error('Current environment does not support SharedArrayBuffer, threads are not available!'); + } + } +} +function getReuseWorker(value) { + var _a; + if (typeof value === 'boolean') { + return value ? { size: 0, strict: false } : false; + } + if (typeof value === 'number') { + if (!(value >= 0)) { + throw new RangeError('reuseWorker: size must be a non-negative integer'); + } + return { size: value, strict: false }; + } + if (!value) { + return false; + } + const size = (_a = Number(value.size)) !== null && _a !== void 0 ? _a : 0; + const strict = Boolean(value.strict); + if (!(size > 0) && strict) { + throw new RangeError('reuseWorker: size must be set to positive integer if strict is set to true'); + } + return { size, strict }; +} +let nextWorkerID = 0; +class ThreadManager { + get nextWorkerID() { return nextWorkerID; } + constructor(options) { + var _a; + this.unusedWorkers = []; + this.runningWorkers = []; + this.pthreads = Object.create(null); + this.wasmModule = null; + this.wasmMemory = null; + this.messageEvents = new WeakMap(); + if (!options) { + throw new TypeError('ThreadManager(): options is not provided'); + } + if ('childThread' in options) { + this._childThread = Boolean(options.childThread); + } + else { + this._childThread = false; + } + if (this._childThread) { + this._onCreateWorker = undefined; + this._reuseWorker = false; + this._beforeLoad = undefined; + } + else { + this._onCreateWorker = options.onCreateWorker; + this._reuseWorker = getReuseWorker(options.reuseWorker); + this._beforeLoad = options.beforeLoad; + } + this.printErr = (_a = options.printErr) !== null && _a !== void 0 ? _a : console.error.bind(console); + this.threadSpawn = options.threadSpawn; + } + init() { + if (!this._childThread) { + this.initMainThread(); + } + } + initMainThread() { + this.preparePool(); + } + preparePool() { + if (this._reuseWorker) { + if (this._reuseWorker.size) { + let pthreadPoolSize = this._reuseWorker.size; + while (pthreadPoolSize--) { + const worker = this.allocateUnusedWorker(); + if (ENVIRONMENT_IS_NODE) { + worker.once('message', () => { }); + worker.unref(); + } + } + } + } + } + shouldPreloadWorkers() { + return !this._childThread && this._reuseWorker && this._reuseWorker.size > 0; + } + loadWasmModuleToAllWorkers() { + const promises = Array(this.unusedWorkers.length); + for (let i = 0; i < this.unusedWorkers.length; ++i) { + const worker = this.unusedWorkers[i]; + if (ENVIRONMENT_IS_NODE) + worker.ref(); + promises[i] = this.loadWasmModuleToWorker(worker).then((w) => { + if (ENVIRONMENT_IS_NODE) + worker.unref(); + return w; + }, (e) => { + if (ENVIRONMENT_IS_NODE) + worker.unref(); + throw e; + }); + } + return Promise.all(promises).catch((err) => { + this.terminateAllThreads(); + throw err; + }); + } + preloadWorkers() { + if (this.shouldPreloadWorkers()) { + return this.loadWasmModuleToAllWorkers(); + } + return Promise.resolve([]); + } + setup(wasmModule, wasmMemory) { + this.wasmModule = wasmModule; + this.wasmMemory = wasmMemory; + } + markId(worker) { + if (worker.__emnapi_tid) + return worker.__emnapi_tid; + const tid = nextWorkerID + 43; + nextWorkerID = (nextWorkerID + 1) % (WASI_THREADS_MAX_TID - 42); + this.pthreads[tid] = worker; + worker.__emnapi_tid = tid; + return tid; + } + returnWorkerToPool(worker) { + var tid = worker.__emnapi_tid; + if (tid !== undefined) { + delete this.pthreads[tid]; + } + this.unusedWorkers.push(worker); + this.runningWorkers.splice(this.runningWorkers.indexOf(worker), 1); + delete worker.__emnapi_tid; + if (ENVIRONMENT_IS_NODE) { + worker.unref(); + } + } + loadWasmModuleToWorker(worker, sab) { + if (worker.whenLoaded) + return worker.whenLoaded; + const err = this.printErr; + const beforeLoad = this._beforeLoad; + const _this = this; + worker.whenLoaded = new Promise((resolve, reject) => { + const handleError = function (e) { + let message = 'worker sent an error!'; + if (worker.__emnapi_tid !== undefined) { + message = 'worker (tid = ' + worker.__emnapi_tid + ') sent an error!'; + } + if ('message' in e) { + err(message + ' ' + e.message); + if (e.message.indexOf('RuntimeError') !== -1 || e.message.indexOf('unreachable') !== -1) { + try { + _this.terminateAllThreads(); + } + catch (_) { } + } + } + else { + err(message); + } + reject(e); + throw e; + }; + const handleMessage = (data) => { + if (data.__emnapi__) { + const type = data.__emnapi__.type; + const payload = data.__emnapi__.payload; + if (type === 'loaded') { + worker.loaded = true; + if (ENVIRONMENT_IS_NODE && !worker.__emnapi_tid) { + worker.unref(); + } + resolve(worker); + } + else if (type === 'cleanup-thread') { + if (payload.tid in this.pthreads) { + this.cleanThread(worker, payload.tid); + } + } + else if (type === 'spawn-thread') { + this.threadSpawn(payload.startArg, payload.errorOrTid); + } + else if (type === 'terminate-all-threads') { + this.terminateAllThreads(); + } + } + }; + worker.onmessage = (e) => { + handleMessage(e.data); + this.fireMessageEvent(worker, e); + }; + worker.onerror = handleError; + if (ENVIRONMENT_IS_NODE) { + worker.on('message', function (data) { + var _a, _b; + (_b = (_a = worker).onmessage) === null || _b === void 0 ? void 0 : _b.call(_a, { + data + }); + }); + worker.on('error', function (e) { + var _a, _b; + (_b = (_a = worker).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, e); + }); + worker.on('detachedExit', function () { }); + } + if (typeof beforeLoad === 'function') { + beforeLoad(worker); + } + try { + worker.postMessage(createMessage('load', { + wasmModule: this.wasmModule, + wasmMemory: this.wasmMemory, + sab + })); + } + catch (err) { + checkSharedWasmMemory(this.wasmMemory); + throw err; + } + }); + return worker.whenLoaded; + } + allocateUnusedWorker() { + const _onCreateWorker = this._onCreateWorker; + if (typeof _onCreateWorker !== 'function') { + throw new TypeError('`options.onCreateWorker` is not provided'); + } + const worker = _onCreateWorker({ type: 'thread', name: 'emnapi-pthread' }); + this.unusedWorkers.push(worker); + return worker; + } + getNewWorker(sab) { + if (this._reuseWorker) { + if (this.unusedWorkers.length === 0) { + if (this._reuseWorker.strict) { + if (!ENVIRONMENT_IS_NODE) { + const err = this.printErr; + err('Tried to spawn a new thread, but the thread pool is exhausted.\n' + + 'This might result in a deadlock unless some threads eventually exit or the code explicitly breaks out to the event loop.'); + return; + } + } + const worker = this.allocateUnusedWorker(); + this.loadWasmModuleToWorker(worker, sab); + } + return this.unusedWorkers.pop(); + } + const worker = this.allocateUnusedWorker(); + this.loadWasmModuleToWorker(worker, sab); + return this.unusedWorkers.pop(); + } + cleanThread(worker, tid, force) { + if (!force && this._reuseWorker) { + this.returnWorkerToPool(worker); + } + else { + delete this.pthreads[tid]; + const index = this.runningWorkers.indexOf(worker); + if (index !== -1) { + this.runningWorkers.splice(index, 1); + } + this.terminateWorker(worker); + delete worker.__emnapi_tid; + } + } + terminateWorker(worker) { + var _a; + const tid = worker.__emnapi_tid; + worker.terminate(); + (_a = this.messageEvents.get(worker)) === null || _a === void 0 ? void 0 : _a.clear(); + this.messageEvents.delete(worker); + worker.onmessage = (e) => { + if (e.data.__emnapi__) { + const err = this.printErr; + err('received "' + e.data.__emnapi__.type + '" command from terminated worker: ' + tid); + } + }; + } + terminateAllThreads() { + for (let i = 0; i < this.runningWorkers.length; ++i) { + this.terminateWorker(this.runningWorkers[i]); + } + for (let i = 0; i < this.unusedWorkers.length; ++i) { + this.terminateWorker(this.unusedWorkers[i]); + } + this.unusedWorkers = []; + this.runningWorkers = []; + this.pthreads = Object.create(null); + this.preparePool(); + } + addMessageEventListener(worker, onMessage) { + let listeners = this.messageEvents.get(worker); + if (!listeners) { + listeners = new Set(); + this.messageEvents.set(worker, listeners); + } + listeners.add(onMessage); + return () => { + listeners === null || listeners === void 0 ? void 0 : listeners.delete(onMessage); + }; + } + fireMessageEvent(worker, e) { + const listeners = this.messageEvents.get(worker); + if (!listeners) + return; + const err = this.printErr; + listeners.forEach((listener) => { + try { + listener(e); + } + catch (e) { + err(e.stack); + } + }); + } +} + +const kIsProxy = Symbol('kIsProxy'); +function createInstanceProxy(instance, memory) { + if (instance[kIsProxy]) + return instance; + const originalExports = instance.exports; + const createHandler = function (target) { + const handlers = [ + 'apply', + 'construct', + 'defineProperty', + 'deleteProperty', + 'get', + 'getOwnPropertyDescriptor', + 'getPrototypeOf', + 'has', + 'isExtensible', + 'ownKeys', + 'preventExtensions', + 'set', + 'setPrototypeOf' + ]; + const handler = {}; + for (let i = 0; i < handlers.length; i++) { + const name = handlers[i]; + handler[name] = function () { + const args = Array.prototype.slice.call(arguments, 1); + args.unshift(target); + return Reflect[name].apply(Reflect, args); + }; + } + return handler; + }; + const handler = createHandler(originalExports); + const _initialize = () => { }; + const _start = () => 0; + handler.get = function (_target, p, receiver) { + var _a; + if (p === 'memory') { + return (_a = (typeof memory === 'function' ? memory() : memory)) !== null && _a !== void 0 ? _a : Reflect.get(originalExports, p, receiver); + } + if (p === '_initialize') { + return p in originalExports ? _initialize : undefined; + } + if (p === '_start') { + return p in originalExports ? _start : undefined; + } + return Reflect.get(originalExports, p, receiver); + }; + handler.has = function (_target, p) { + if (p === 'memory') + return true; + return Reflect.has(originalExports, p); + }; + const exportsProxy = new Proxy(Object.create(null), handler); + return new Proxy(instance, { + get(target, p, receiver) { + if (p === 'exports') { + return exportsProxy; + } + if (p === kIsProxy) { + return true; + } + return Reflect.get(target, p, receiver); + } + }); +} + +const patchedWasiInstances = new WeakMap(); +class WASIThreads { + constructor(options) { + if (!options) { + throw new TypeError('WASIThreads(): options is not provided'); + } + if (!options.wasi) { + throw new TypeError('WASIThreads(): options.wasi is not provided'); + } + patchedWasiInstances.set(this, new WeakSet()); + const wasi = options.wasi; + patchWasiInstance(this, wasi); + this.wasi = wasi; + if ('childThread' in options) { + this.childThread = Boolean(options.childThread); + } + else { + this.childThread = false; + } + this.PThread = undefined; + if ('threadManager' in options) { + if (typeof options.threadManager === 'function') { + this.PThread = options.threadManager(); + } + else { + this.PThread = options.threadManager; + } + } + else { + if (!this.childThread) { + this.PThread = new ThreadManager(options); + this.PThread.init(); + } + } + let waitThreadStart = false; + if ('waitThreadStart' in options) { + waitThreadStart = typeof options.waitThreadStart === 'number' ? options.waitThreadStart : Boolean(options.waitThreadStart); + } + const postMessage = getPostMessage(options); + if (this.childThread && typeof postMessage !== 'function') { + throw new TypeError('options.postMessage is not a function'); + } + this.postMessage = postMessage; + const wasm64 = Boolean(options.wasm64); + const threadSpawn = (startArg, errorOrTid) => { + var _a; + const EAGAIN = 6; + const isNewABI = errorOrTid !== undefined; + try { + checkSharedWasmMemory(this.wasmMemory); + } + catch (err) { + (_a = this.PThread) === null || _a === void 0 ? void 0 : _a.printErr(err.stack); + if (isNewABI) { + const struct = new Int32Array(this.wasmMemory.buffer, errorOrTid, 2); + Atomics.store(struct, 0, 1); + Atomics.store(struct, 1, EAGAIN); + Atomics.notify(struct, 1); + return 1; + } + else { + return -EAGAIN; + } + } + if (!isNewABI) { + const malloc = this.wasmInstance.exports.malloc; + errorOrTid = wasm64 ? Number(malloc(BigInt(8))) : (malloc(8) >>> 0); + if (!errorOrTid) { + return -48; + } + } + const _free = this.wasmInstance.exports.free; + const free = wasm64 ? (ptr) => { _free(BigInt(ptr)); } : _free; + const struct = new Int32Array(this.wasmMemory.buffer, errorOrTid, 2); + Atomics.store(struct, 0, 0); + Atomics.store(struct, 1, 0); + if (this.childThread) { + postMessage(createMessage('spawn-thread', { + startArg, + errorOrTid: errorOrTid + })); + Atomics.wait(struct, 1, 0); + const isError = Atomics.load(struct, 0); + const result = Atomics.load(struct, 1); + if (isNewABI) { + return isError; + } + free(errorOrTid); + return isError ? -result : result; + } + const shouldWait = waitThreadStart || (waitThreadStart === 0); + let sab; + if (shouldWait) { + sab = new Int32Array(new SharedArrayBuffer(16 + 8192)); + Atomics.store(sab, 0, 0); + } + let worker; + let tid; + const PThread = this.PThread; + try { + worker = PThread.getNewWorker(sab); + if (!worker) { + throw new Error('failed to get new worker'); + } + tid = PThread.markId(worker); + if (ENVIRONMENT_IS_NODE) { + worker.unref(); + } + worker.postMessage(createMessage('start', { + tid, + arg: startArg, + sab + })); + if (shouldWait) { + if (typeof waitThreadStart === 'number') { + const waitResult = Atomics.wait(sab, 0, 0, waitThreadStart); + if (waitResult === 'timed-out') { + try { + PThread.cleanThread(worker, tid, true); + } + catch (_) { } + throw new Error('Spawning thread timed out. Please check if the worker is created successfully and if message is handled properly in the worker.'); + } + } + else { + Atomics.wait(sab, 0, 0); + } + const r = Atomics.load(sab, 0); + if (r > 1) { + try { + PThread.cleanThread(worker, tid, true); + } + catch (_) { } + throw deserizeErrorFromBuffer(sab.buffer); + } + } + } + catch (e) { + Atomics.store(struct, 0, 1); + Atomics.store(struct, 1, EAGAIN); + Atomics.notify(struct, 1); + PThread === null || PThread === void 0 ? void 0 : PThread.printErr(e.stack); + if (isNewABI) { + return 1; + } + free(errorOrTid); + return -EAGAIN; + } + Atomics.store(struct, 0, 0); + Atomics.store(struct, 1, tid); + Atomics.notify(struct, 1); + PThread.runningWorkers.push(worker); + if (!shouldWait) { + worker.whenLoaded.catch((err) => { + delete worker.whenLoaded; + PThread.cleanThread(worker, tid, true); + throw err; + }); + } + if (isNewABI) { + return 0; + } + free(errorOrTid); + return tid; + }; + this.threadSpawn = threadSpawn; + if (this.PThread) { + this.PThread.threadSpawn = threadSpawn; + } + } + getImportObject() { + return { + wasi: { + 'thread-spawn': this.threadSpawn + } + }; + } + setup(wasmInstance, wasmModule, wasmMemory) { + wasmMemory !== null && wasmMemory !== void 0 ? wasmMemory : (wasmMemory = wasmInstance.exports.memory); + this.wasmInstance = wasmInstance; + this.wasmMemory = wasmMemory; + if (this.PThread) { + this.PThread.setup(wasmModule, wasmMemory); + } + } + preloadWorkers() { + if (this.PThread) { + return this.PThread.preloadWorkers(); + } + return Promise.resolve([]); + } + initialize(instance, module, memory) { + const exports$1 = instance.exports; + memory !== null && memory !== void 0 ? memory : (memory = exports$1.memory); + if (this.childThread) { + instance = createInstanceProxy(instance, memory); + } + this.setup(instance, module, memory); + const wasi = this.wasi; + if (('_start' in exports$1) && (typeof exports$1._start === 'function')) { + if (this.childThread) { + wasi.start(instance); + try { + const kStarted = getWasiSymbol(wasi, 'kStarted'); + wasi[kStarted] = false; + } + catch (_) { } + } + else { + setupInstance(wasi, instance); + } + } + else { + wasi.initialize(instance); + } + return instance; + } + start(instance, module, memory) { + const exports$1 = instance.exports; + memory !== null && memory !== void 0 ? memory : (memory = exports$1.memory); + if (this.childThread) { + instance = createInstanceProxy(instance, memory); + } + this.setup(instance, module, memory); + const exitCode = this.wasi.start(instance); + return { exitCode, instance }; + } + terminateAllThreads() { + var _a; + if (!this.childThread) { + (_a = this.PThread) === null || _a === void 0 ? void 0 : _a.terminateAllThreads(); + } + else { + this.postMessage(createMessage('terminate-all-threads', {})); + } + } +} +function patchWasiInstance(wasiThreads, wasi) { + const patched = patchedWasiInstances.get(wasiThreads); + if (patched.has(wasi)) { + return; + } + const _this = wasiThreads; + const wasiImport = wasi.wasiImport; + if (wasiImport) { + const proc_exit = wasiImport.proc_exit; + wasiImport.proc_exit = function (code) { + _this.terminateAllThreads(); + return proc_exit.call(this, code); + }; + } + if (!_this.childThread) { + const start = wasi.start; + if (typeof start === 'function') { + wasi.start = function (instance) { + try { + return start.call(this, instance); + } + catch (err) { + if (isTrapError(err)) { + _this.terminateAllThreads(); + } + throw err; + } + }; + } + } + patched.add(wasi); +} +function getWasiSymbol(wasi, description) { + const symbols = Object.getOwnPropertySymbols(wasi); + const selectDescription = (description) => (s) => { + if (s.description) { + return s.description === description; + } + return s.toString() === `Symbol(${description})`; + }; + if (Array.isArray(description)) { + return description.map(d => symbols.filter(selectDescription(d))[0]); + } + return symbols.filter(selectDescription(description))[0]; +} +function setupInstance(wasi, instance) { + const [kInstance, kSetMemory] = getWasiSymbol(wasi, ['kInstance', 'kSetMemory']); + wasi[kInstance] = instance; + wasi[kSetMemory](instance.exports.memory); +} + +class ThreadMessageHandler { + constructor(options) { + const postMsg = getPostMessage(options); + if (typeof postMsg !== 'function') { + throw new TypeError('options.postMessage is not a function'); + } + this.postMessage = postMsg; + this.onLoad = options === null || options === void 0 ? void 0 : options.onLoad; + this.onError = typeof (options === null || options === void 0 ? void 0 : options.onError) === 'function' ? options.onError : (_type, err) => { throw err; }; + this.instance = undefined; + this.messagesBeforeLoad = []; + } + instantiate(data) { + if (typeof this.onLoad === 'function') { + return this.onLoad(data); + } + throw new Error('ThreadMessageHandler.prototype.instantiate is not implemented'); + } + handle(e) { + var _a; + if ((_a = e === null || e === void 0 ? void 0 : e.data) === null || _a === void 0 ? void 0 : _a.__emnapi__) { + const type = e.data.__emnapi__.type; + const payload = e.data.__emnapi__.payload; + try { + if (type === 'load') { + this._load(payload); + } + else if (type === 'start') { + this.handleAfterLoad(e, () => { + this._start(payload); + }); + } + } + catch (err) { + this.onError(err, type); + } + } + } + _load(payload) { + if (this.instance !== undefined) + return; + let source; + try { + source = this.instantiate(payload); + } + catch (err) { + this._loaded(err, null, payload); + return; + } + const then = source && 'then' in source ? source.then : undefined; + if (typeof then === 'function') { + then.call(source, (source) => { this._loaded(null, source, payload); }, (err) => { this._loaded(err, null, payload); }); + } + else { + this._loaded(null, source, payload); + } + } + _start(payload) { + const wasi_thread_start = this.instance.exports.wasi_thread_start; + if (typeof wasi_thread_start !== 'function') { + const err = new TypeError('wasi_thread_start is not exported'); + notifyPthreadCreateResult(payload.sab, 2, err); + throw err; + } + const postMessage = this.postMessage; + const tid = payload.tid; + const startArg = payload.arg; + notifyPthreadCreateResult(payload.sab, 1); + try { + wasi_thread_start(tid, startArg); + } + catch (err) { + if (err !== 'unwind') { + throw err; + } + else { + return; + } + } + postMessage(createMessage('cleanup-thread', { tid })); + } + _loaded(err, source, payload) { + if (err) { + notifyPthreadCreateResult(payload.sab, 2, err); + throw err; + } + if (source == null) { + const err = new TypeError('onLoad should return an object'); + notifyPthreadCreateResult(payload.sab, 2, err); + throw err; + } + const instance = source.instance; + if (!instance) { + const err = new TypeError('onLoad should return an object which includes "instance"'); + notifyPthreadCreateResult(payload.sab, 2, err); + throw err; + } + this.instance = instance; + const postMessage = this.postMessage; + postMessage(createMessage('loaded', {})); + const messages = this.messagesBeforeLoad; + this.messagesBeforeLoad = []; + for (let i = 0; i < messages.length; i++) { + const data = messages[i]; + this.handle({ data }); + } + } + handleAfterLoad(e, f) { + if (this.instance !== undefined) { + f.call(this, e); + } + else { + this.messagesBeforeLoad.push(e.data); + } + } +} +function notifyPthreadCreateResult(sab, result, error) { + if (sab) { + serizeErrorToBuffer(sab.buffer, result, error); + Atomics.notify(sab, 0); + } +} + +export { ThreadManager, ThreadMessageHandler, WASIThreads, createInstanceProxy, isSharedArrayBuffer, isTrapError }; diff --git a/node_modules/@emnapi/wasi-threads/index.js b/node_modules/@emnapi/wasi-threads/index.js new file mode 100644 index 00000000..7e6eabd6 --- /dev/null +++ b/node_modules/@emnapi/wasi-threads/index.js @@ -0,0 +1,5 @@ +if (typeof process !== 'undefined' && process.env.NODE_ENV === 'production') { + module.exports = require('./dist/wasi-threads.cjs.min.js') +} else { + module.exports = require('./dist/wasi-threads.cjs.js') +} diff --git a/node_modules/@emnapi/wasi-threads/package.json b/node_modules/@emnapi/wasi-threads/package.json new file mode 100644 index 00000000..2f69de6c --- /dev/null +++ b/node_modules/@emnapi/wasi-threads/package.json @@ -0,0 +1,50 @@ +{ + "name": "@emnapi/wasi-threads", + "version": "1.2.1", + "description": "WASI threads proposal implementation in JavaScript", + "main": "index.js", + "module": "./dist/wasi-threads.esm-bundler.js", + "types": "./dist/wasi-threads.d.ts", + "sideEffects": false, + "exports": { + ".": { + "types": { + "module": "./dist/wasi-threads.d.ts", + "import": "./dist/wasi-threads.d.mts", + "default": "./dist/wasi-threads.d.ts" + }, + "module": "./dist/wasi-threads.esm-bundler.js", + "import": "./dist/wasi-threads.mjs", + "default": "./index.js" + }, + "./dist/wasi-threads.cjs.min": { + "types": "./dist/wasi-threads.d.ts", + "default": "./dist/wasi-threads.cjs.min.js" + }, + "./dist/wasi-threads.min.mjs": { + "types": "./dist/wasi-threads.d.mts", + "default": "./dist/wasi-threads.min.mjs" + } + }, + "dependencies": { + "tslib": "^2.4.0" + }, + "scripts": { + "build": "node ./script/build.js", + "build:test": "node ./test/build.js", + "test": "node ./test/index.js" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/toyobayashi/emnapi.git" + }, + "author": "toyobayashi", + "license": "MIT", + "bugs": { + "url": "https://github.com/toyobayashi/emnapi/issues" + }, + "homepage": "https://github.com/toyobayashi/emnapi#readme", + "publishConfig": { + "access": "public" + } +} diff --git a/node_modules/@jridgewell/gen-mapping/LICENSE b/node_modules/@jridgewell/gen-mapping/LICENSE new file mode 100644 index 00000000..1f6ce94c --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/LICENSE @@ -0,0 +1,19 @@ +Copyright 2024 Justin Ridgewell + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/@jridgewell/gen-mapping/README.md b/node_modules/@jridgewell/gen-mapping/README.md new file mode 100644 index 00000000..93692b10 --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/README.md @@ -0,0 +1,227 @@ +# @jridgewell/gen-mapping + +> Generate source maps + +`gen-mapping` allows you to generate a source map during transpilation or minification. +With a source map, you're able to trace the original location in the source file, either in Chrome's +DevTools or using a library like [`@jridgewell/trace-mapping`][trace-mapping]. + +You may already be familiar with the [`source-map`][source-map] package's `SourceMapGenerator`. This +provides the same `addMapping` and `setSourceContent` API. + +## Installation + +```sh +npm install @jridgewell/gen-mapping +``` + +## Usage + +```typescript +import { GenMapping, addMapping, setSourceContent, toEncodedMap, toDecodedMap } from '@jridgewell/gen-mapping'; + +const map = new GenMapping({ + file: 'output.js', + sourceRoot: 'https://example.com/', +}); + +setSourceContent(map, 'input.js', `function foo() {}`); + +addMapping(map, { + // Lines start at line 1, columns at column 0. + generated: { line: 1, column: 0 }, + source: 'input.js', + original: { line: 1, column: 0 }, +}); + +addMapping(map, { + generated: { line: 1, column: 9 }, + source: 'input.js', + original: { line: 1, column: 9 }, + name: 'foo', +}); + +assert.deepEqual(toDecodedMap(map), { + version: 3, + file: 'output.js', + names: ['foo'], + sourceRoot: 'https://example.com/', + sources: ['input.js'], + sourcesContent: ['function foo() {}'], + mappings: [ + [ [0, 0, 0, 0], [9, 0, 0, 9, 0] ] + ], +}); + +assert.deepEqual(toEncodedMap(map), { + version: 3, + file: 'output.js', + names: ['foo'], + sourceRoot: 'https://example.com/', + sources: ['input.js'], + sourcesContent: ['function foo() {}'], + mappings: 'AAAA,SAASA', +}); +``` + +### Smaller Sourcemaps + +Not everything needs to be added to a sourcemap, and needless markings can cause signficantly +larger file sizes. `gen-mapping` exposes `maybeAddSegment`/`maybeAddMapping` APIs that will +intelligently determine if this marking adds useful information. If not, the marking will be +skipped. + +```typescript +import { maybeAddMapping } from '@jridgewell/gen-mapping'; + +const map = new GenMapping(); + +// Adding a sourceless marking at the beginning of a line isn't useful. +maybeAddMapping(map, { + generated: { line: 1, column: 0 }, +}); + +// Adding a new source marking is useful. +maybeAddMapping(map, { + generated: { line: 1, column: 0 }, + source: 'input.js', + original: { line: 1, column: 0 }, +}); + +// But adding another marking pointing to the exact same original location isn't, even if the +// generated column changed. +maybeAddMapping(map, { + generated: { line: 1, column: 9 }, + source: 'input.js', + original: { line: 1, column: 0 }, +}); + +assert.deepEqual(toEncodedMap(map), { + version: 3, + names: [], + sources: ['input.js'], + sourcesContent: [null], + mappings: 'AAAA', +}); +``` + +## Benchmarks + +``` +node v18.0.0 + +amp.js.map +Memory Usage: +gen-mapping: addSegment 5852872 bytes +gen-mapping: addMapping 7716042 bytes +source-map-js 6143250 bytes +source-map-0.6.1 6124102 bytes +source-map-0.8.0 6121173 bytes +Smallest memory usage is gen-mapping: addSegment + +Adding speed: +gen-mapping: addSegment x 441 ops/sec ±2.07% (90 runs sampled) +gen-mapping: addMapping x 350 ops/sec ±2.40% (86 runs sampled) +source-map-js: addMapping x 169 ops/sec ±2.42% (80 runs sampled) +source-map-0.6.1: addMapping x 167 ops/sec ±2.56% (80 runs sampled) +source-map-0.8.0: addMapping x 168 ops/sec ±2.52% (80 runs sampled) +Fastest is gen-mapping: addSegment + +Generate speed: +gen-mapping: decoded output x 150,824,370 ops/sec ±0.07% (102 runs sampled) +gen-mapping: encoded output x 663 ops/sec ±0.22% (98 runs sampled) +source-map-js: encoded output x 197 ops/sec ±0.45% (84 runs sampled) +source-map-0.6.1: encoded output x 198 ops/sec ±0.33% (85 runs sampled) +source-map-0.8.0: encoded output x 197 ops/sec ±0.06% (93 runs sampled) +Fastest is gen-mapping: decoded output + + +*** + + +babel.min.js.map +Memory Usage: +gen-mapping: addSegment 37578063 bytes +gen-mapping: addMapping 37212897 bytes +source-map-js 47638527 bytes +source-map-0.6.1 47690503 bytes +source-map-0.8.0 47470188 bytes +Smallest memory usage is gen-mapping: addMapping + +Adding speed: +gen-mapping: addSegment x 31.05 ops/sec ±8.31% (43 runs sampled) +gen-mapping: addMapping x 29.83 ops/sec ±7.36% (51 runs sampled) +source-map-js: addMapping x 20.73 ops/sec ±6.22% (38 runs sampled) +source-map-0.6.1: addMapping x 20.03 ops/sec ±10.51% (38 runs sampled) +source-map-0.8.0: addMapping x 19.30 ops/sec ±8.27% (37 runs sampled) +Fastest is gen-mapping: addSegment + +Generate speed: +gen-mapping: decoded output x 381,379,234 ops/sec ±0.29% (96 runs sampled) +gen-mapping: encoded output x 95.15 ops/sec ±2.98% (72 runs sampled) +source-map-js: encoded output x 15.20 ops/sec ±7.41% (33 runs sampled) +source-map-0.6.1: encoded output x 16.36 ops/sec ±10.46% (31 runs sampled) +source-map-0.8.0: encoded output x 16.06 ops/sec ±6.45% (31 runs sampled) +Fastest is gen-mapping: decoded output + + +*** + + +preact.js.map +Memory Usage: +gen-mapping: addSegment 416247 bytes +gen-mapping: addMapping 419824 bytes +source-map-js 1024619 bytes +source-map-0.6.1 1146004 bytes +source-map-0.8.0 1113250 bytes +Smallest memory usage is gen-mapping: addSegment + +Adding speed: +gen-mapping: addSegment x 13,755 ops/sec ±0.15% (98 runs sampled) +gen-mapping: addMapping x 13,013 ops/sec ±0.11% (101 runs sampled) +source-map-js: addMapping x 4,564 ops/sec ±0.21% (98 runs sampled) +source-map-0.6.1: addMapping x 4,562 ops/sec ±0.11% (99 runs sampled) +source-map-0.8.0: addMapping x 4,593 ops/sec ±0.11% (100 runs sampled) +Fastest is gen-mapping: addSegment + +Generate speed: +gen-mapping: decoded output x 379,864,020 ops/sec ±0.23% (93 runs sampled) +gen-mapping: encoded output x 14,368 ops/sec ±4.07% (82 runs sampled) +source-map-js: encoded output x 5,261 ops/sec ±0.21% (99 runs sampled) +source-map-0.6.1: encoded output x 5,124 ops/sec ±0.58% (99 runs sampled) +source-map-0.8.0: encoded output x 5,434 ops/sec ±0.33% (96 runs sampled) +Fastest is gen-mapping: decoded output + + +*** + + +react.js.map +Memory Usage: +gen-mapping: addSegment 975096 bytes +gen-mapping: addMapping 1102981 bytes +source-map-js 2918836 bytes +source-map-0.6.1 2885435 bytes +source-map-0.8.0 2874336 bytes +Smallest memory usage is gen-mapping: addSegment + +Adding speed: +gen-mapping: addSegment x 4,772 ops/sec ±0.15% (100 runs sampled) +gen-mapping: addMapping x 4,456 ops/sec ±0.13% (97 runs sampled) +source-map-js: addMapping x 1,618 ops/sec ±0.24% (97 runs sampled) +source-map-0.6.1: addMapping x 1,622 ops/sec ±0.12% (99 runs sampled) +source-map-0.8.0: addMapping x 1,631 ops/sec ±0.12% (100 runs sampled) +Fastest is gen-mapping: addSegment + +Generate speed: +gen-mapping: decoded output x 379,107,695 ops/sec ±0.07% (99 runs sampled) +gen-mapping: encoded output x 5,421 ops/sec ±1.60% (89 runs sampled) +source-map-js: encoded output x 2,113 ops/sec ±1.81% (98 runs sampled) +source-map-0.6.1: encoded output x 2,126 ops/sec ±0.10% (100 runs sampled) +source-map-0.8.0: encoded output x 2,176 ops/sec ±0.39% (98 runs sampled) +Fastest is gen-mapping: decoded output +``` + +[source-map]: https://www.npmjs.com/package/source-map +[trace-mapping]: https://github.com/jridgewell/sourcemaps/tree/main/packages/trace-mapping diff --git a/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.mjs b/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.mjs new file mode 100644 index 00000000..bbb0cacc --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.mjs @@ -0,0 +1,292 @@ +// src/set-array.ts +var SetArray = class { + constructor() { + this._indexes = { __proto__: null }; + this.array = []; + } +}; +function cast(set) { + return set; +} +function get(setarr, key) { + return cast(setarr)._indexes[key]; +} +function put(setarr, key) { + const index = get(setarr, key); + if (index !== void 0) return index; + const { array, _indexes: indexes } = cast(setarr); + const length = array.push(key); + return indexes[key] = length - 1; +} +function remove(setarr, key) { + const index = get(setarr, key); + if (index === void 0) return; + const { array, _indexes: indexes } = cast(setarr); + for (let i = index + 1; i < array.length; i++) { + const k = array[i]; + array[i - 1] = k; + indexes[k]--; + } + indexes[key] = void 0; + array.pop(); +} + +// src/gen-mapping.ts +import { + encode +} from "@jridgewell/sourcemap-codec"; +import { TraceMap, decodedMappings } from "@jridgewell/trace-mapping"; + +// src/sourcemap-segment.ts +var COLUMN = 0; +var SOURCES_INDEX = 1; +var SOURCE_LINE = 2; +var SOURCE_COLUMN = 3; +var NAMES_INDEX = 4; + +// src/gen-mapping.ts +var NO_NAME = -1; +var GenMapping = class { + constructor({ file, sourceRoot } = {}) { + this._names = new SetArray(); + this._sources = new SetArray(); + this._sourcesContent = []; + this._mappings = []; + this.file = file; + this.sourceRoot = sourceRoot; + this._ignoreList = new SetArray(); + } +}; +function cast2(map) { + return map; +} +function addSegment(map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) { + return addSegmentInternal( + false, + map, + genLine, + genColumn, + source, + sourceLine, + sourceColumn, + name, + content + ); +} +function addMapping(map, mapping) { + return addMappingInternal(false, map, mapping); +} +var maybeAddSegment = (map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) => { + return addSegmentInternal( + true, + map, + genLine, + genColumn, + source, + sourceLine, + sourceColumn, + name, + content + ); +}; +var maybeAddMapping = (map, mapping) => { + return addMappingInternal(true, map, mapping); +}; +function setSourceContent(map, source, content) { + const { + _sources: sources, + _sourcesContent: sourcesContent + // _originalScopes: originalScopes, + } = cast2(map); + const index = put(sources, source); + sourcesContent[index] = content; +} +function setIgnore(map, source, ignore = true) { + const { + _sources: sources, + _sourcesContent: sourcesContent, + _ignoreList: ignoreList + // _originalScopes: originalScopes, + } = cast2(map); + const index = put(sources, source); + if (index === sourcesContent.length) sourcesContent[index] = null; + if (ignore) put(ignoreList, index); + else remove(ignoreList, index); +} +function toDecodedMap(map) { + const { + _mappings: mappings, + _sources: sources, + _sourcesContent: sourcesContent, + _names: names, + _ignoreList: ignoreList + // _originalScopes: originalScopes, + // _generatedRanges: generatedRanges, + } = cast2(map); + removeEmptyFinalLines(mappings); + return { + version: 3, + file: map.file || void 0, + names: names.array, + sourceRoot: map.sourceRoot || void 0, + sources: sources.array, + sourcesContent, + mappings, + // originalScopes, + // generatedRanges, + ignoreList: ignoreList.array + }; +} +function toEncodedMap(map) { + const decoded = toDecodedMap(map); + return Object.assign({}, decoded, { + // originalScopes: decoded.originalScopes.map((os) => encodeOriginalScopes(os)), + // generatedRanges: encodeGeneratedRanges(decoded.generatedRanges as GeneratedRange[]), + mappings: encode(decoded.mappings) + }); +} +function fromMap(input) { + const map = new TraceMap(input); + const gen = new GenMapping({ file: map.file, sourceRoot: map.sourceRoot }); + putAll(cast2(gen)._names, map.names); + putAll(cast2(gen)._sources, map.sources); + cast2(gen)._sourcesContent = map.sourcesContent || map.sources.map(() => null); + cast2(gen)._mappings = decodedMappings(map); + if (map.ignoreList) putAll(cast2(gen)._ignoreList, map.ignoreList); + return gen; +} +function allMappings(map) { + const out = []; + const { _mappings: mappings, _sources: sources, _names: names } = cast2(map); + for (let i = 0; i < mappings.length; i++) { + const line = mappings[i]; + for (let j = 0; j < line.length; j++) { + const seg = line[j]; + const generated = { line: i + 1, column: seg[COLUMN] }; + let source = void 0; + let original = void 0; + let name = void 0; + if (seg.length !== 1) { + source = sources.array[seg[SOURCES_INDEX]]; + original = { line: seg[SOURCE_LINE] + 1, column: seg[SOURCE_COLUMN] }; + if (seg.length === 5) name = names.array[seg[NAMES_INDEX]]; + } + out.push({ generated, source, original, name }); + } + } + return out; +} +function addSegmentInternal(skipable, map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) { + const { + _mappings: mappings, + _sources: sources, + _sourcesContent: sourcesContent, + _names: names + // _originalScopes: originalScopes, + } = cast2(map); + const line = getIndex(mappings, genLine); + const index = getColumnIndex(line, genColumn); + if (!source) { + if (skipable && skipSourceless(line, index)) return; + return insert(line, index, [genColumn]); + } + assert(sourceLine); + assert(sourceColumn); + const sourcesIndex = put(sources, source); + const namesIndex = name ? put(names, name) : NO_NAME; + if (sourcesIndex === sourcesContent.length) sourcesContent[sourcesIndex] = content != null ? content : null; + if (skipable && skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex)) { + return; + } + return insert( + line, + index, + name ? [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex] : [genColumn, sourcesIndex, sourceLine, sourceColumn] + ); +} +function assert(_val) { +} +function getIndex(arr, index) { + for (let i = arr.length; i <= index; i++) { + arr[i] = []; + } + return arr[index]; +} +function getColumnIndex(line, genColumn) { + let index = line.length; + for (let i = index - 1; i >= 0; index = i--) { + const current = line[i]; + if (genColumn >= current[COLUMN]) break; + } + return index; +} +function insert(array, index, value) { + for (let i = array.length; i > index; i--) { + array[i] = array[i - 1]; + } + array[index] = value; +} +function removeEmptyFinalLines(mappings) { + const { length } = mappings; + let len = length; + for (let i = len - 1; i >= 0; len = i, i--) { + if (mappings[i].length > 0) break; + } + if (len < length) mappings.length = len; +} +function putAll(setarr, array) { + for (let i = 0; i < array.length; i++) put(setarr, array[i]); +} +function skipSourceless(line, index) { + if (index === 0) return true; + const prev = line[index - 1]; + return prev.length === 1; +} +function skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex) { + if (index === 0) return false; + const prev = line[index - 1]; + if (prev.length === 1) return false; + return sourcesIndex === prev[SOURCES_INDEX] && sourceLine === prev[SOURCE_LINE] && sourceColumn === prev[SOURCE_COLUMN] && namesIndex === (prev.length === 5 ? prev[NAMES_INDEX] : NO_NAME); +} +function addMappingInternal(skipable, map, mapping) { + const { generated, source, original, name, content } = mapping; + if (!source) { + return addSegmentInternal( + skipable, + map, + generated.line - 1, + generated.column, + null, + null, + null, + null, + null + ); + } + assert(original); + return addSegmentInternal( + skipable, + map, + generated.line - 1, + generated.column, + source, + original.line - 1, + original.column, + name, + content + ); +} +export { + GenMapping, + addMapping, + addSegment, + allMappings, + fromMap, + maybeAddMapping, + maybeAddSegment, + setIgnore, + setSourceContent, + toDecodedMap, + toEncodedMap +}; +//# sourceMappingURL=gen-mapping.mjs.map diff --git a/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.mjs.map b/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.mjs.map new file mode 100644 index 00000000..4e37e457 --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.mjs.map @@ -0,0 +1,6 @@ +{ + "version": 3, + "sources": ["../src/set-array.ts", "../src/gen-mapping.ts", "../src/sourcemap-segment.ts"], + "mappings": ";AAUO,IAAM,WAAN,MAAoC;AAAA,EAIzC,cAAc;AACZ,SAAK,WAAW,EAAE,WAAW,KAAK;AAClC,SAAK,QAAQ,CAAC;AAAA,EAChB;AACF;AAWA,SAAS,KAAoB,KAAgC;AAC3D,SAAO;AACT;AAKO,SAAS,IAAmB,QAAqB,KAA4B;AAClF,SAAO,KAAK,MAAM,EAAE,SAAS,GAAG;AAClC;AAMO,SAAS,IAAmB,QAAqB,KAAgB;AAEtE,QAAM,QAAQ,IAAI,QAAQ,GAAG;AAC7B,MAAI,UAAU,OAAW,QAAO;AAEhC,QAAM,EAAE,OAAO,UAAU,QAAQ,IAAI,KAAK,MAAM;AAEhD,QAAM,SAAS,MAAM,KAAK,GAAG;AAC7B,SAAQ,QAAQ,GAAG,IAAI,SAAS;AAClC;AAgBO,SAAS,OAAsB,QAAqB,KAAc;AACvE,QAAM,QAAQ,IAAI,QAAQ,GAAG;AAC7B,MAAI,UAAU,OAAW;AAEzB,QAAM,EAAE,OAAO,UAAU,QAAQ,IAAI,KAAK,MAAM;AAChD,WAAS,IAAI,QAAQ,GAAG,IAAI,MAAM,QAAQ,KAAK;AAC7C,UAAM,IAAI,MAAM,CAAC;AACjB,UAAM,IAAI,CAAC,IAAI;AACf,YAAQ,CAAC;AAAA,EACX;AACA,UAAQ,GAAG,IAAI;AACf,QAAM,IAAI;AACZ;;;AChFA;AAAA,EACE;AAAA,OAGK;AACP,SAAS,UAAU,uBAAuB;;;ACKnC,IAAM,SAAS;AACf,IAAM,gBAAgB;AACtB,IAAM,cAAc;AACpB,IAAM,gBAAgB;AACtB,IAAM,cAAc;;;ADsB3B,IAAM,UAAU;AAKT,IAAM,aAAN,MAAiB;AAAA,EAWtB,YAAY,EAAE,MAAM,WAAW,IAAa,CAAC,GAAG;AAC9C,SAAK,SAAS,IAAI,SAAS;AAC3B,SAAK,WAAW,IAAI,SAAS;AAC7B,SAAK,kBAAkB,CAAC;AACxB,SAAK,YAAY,CAAC;AAGlB,SAAK,OAAO;AACZ,SAAK,aAAa;AAClB,SAAK,cAAc,IAAI,SAAS;AAAA,EAClC;AACF;AAgBA,SAASA,MAAK,KAAyB;AACrC,SAAO;AACT;AAoCO,SAAS,WACd,KACA,SACA,WACA,QACA,YACA,cACA,MACA,SACM;AACN,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAoCO,SAAS,WACd,KACA,SAOM;AACN,SAAO,mBAAmB,OAAO,KAAK,OAAmD;AAC3F;AAOO,IAAM,kBAAqC,CAChD,KACA,SACA,WACA,QACA,YACA,cACA,MACA,YACG;AACH,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAOO,IAAM,kBAAqC,CAAC,KAAK,YAAY;AAClE,SAAO,mBAAmB,MAAM,KAAK,OAAmD;AAC1F;AAKO,SAAS,iBAAiB,KAAiB,QAAgB,SAA8B;AAC9F,QAAM;AAAA,IACJ,UAAU;AAAA,IACV,iBAAiB;AAAA;AAAA,EAEnB,IAAIA,MAAK,GAAG;AACZ,QAAM,QAAQ,IAAI,SAAS,MAAM;AACjC,iBAAe,KAAK,IAAI;AAE1B;AAEO,SAAS,UAAU,KAAiB,QAAgB,SAAS,MAAM;AACxE,QAAM;AAAA,IACJ,UAAU;AAAA,IACV,iBAAiB;AAAA,IACjB,aAAa;AAAA;AAAA,EAEf,IAAIA,MAAK,GAAG;AACZ,QAAM,QAAQ,IAAI,SAAS,MAAM;AACjC,MAAI,UAAU,eAAe,OAAQ,gBAAe,KAAK,IAAI;AAE7D,MAAI,OAAQ,KAAI,YAAY,KAAK;AAAA,MAC5B,QAAO,YAAY,KAAK;AAC/B;AAMO,SAAS,aAAa,KAAmC;AAC9D,QAAM;AAAA,IACJ,WAAW;AAAA,IACX,UAAU;AAAA,IACV,iBAAiB;AAAA,IACjB,QAAQ;AAAA,IACR,aAAa;AAAA;AAAA;AAAA,EAGf,IAAIA,MAAK,GAAG;AACZ,wBAAsB,QAAQ;AAE9B,SAAO;AAAA,IACL,SAAS;AAAA,IACT,MAAM,IAAI,QAAQ;AAAA,IAClB,OAAO,MAAM;AAAA,IACb,YAAY,IAAI,cAAc;AAAA,IAC9B,SAAS,QAAQ;AAAA,IACjB;AAAA,IACA;AAAA;AAAA;AAAA,IAGA,YAAY,WAAW;AAAA,EACzB;AACF;AAMO,SAAS,aAAa,KAAmC;AAC9D,QAAM,UAAU,aAAa,GAAG;AAChC,SAAO,OAAO,OAAO,CAAC,GAAG,SAAS;AAAA;AAAA;AAAA,IAGhC,UAAU,OAAO,QAAQ,QAAgC;AAAA,EAC3D,CAAC;AACH;AAKO,SAAS,QAAQ,OAAmC;AACzD,QAAM,MAAM,IAAI,SAAS,KAAK;AAC9B,QAAM,MAAM,IAAI,WAAW,EAAE,MAAM,IAAI,MAAM,YAAY,IAAI,WAAW,CAAC;AAEzE,SAAOA,MAAK,GAAG,EAAE,QAAQ,IAAI,KAAK;AAClC,SAAOA,MAAK,GAAG,EAAE,UAAU,IAAI,OAAmB;AAClD,EAAAA,MAAK,GAAG,EAAE,kBAAkB,IAAI,kBAAkB,IAAI,QAAQ,IAAI,MAAM,IAAI;AAC5E,EAAAA,MAAK,GAAG,EAAE,YAAY,gBAAgB,GAAG;AAEzC,MAAI,IAAI,WAAY,QAAOA,MAAK,GAAG,EAAE,aAAa,IAAI,UAAU;AAEhE,SAAO;AACT;AAMO,SAAS,YAAY,KAA4B;AACtD,QAAM,MAAiB,CAAC;AACxB,QAAM,EAAE,WAAW,UAAU,UAAU,SAAS,QAAQ,MAAM,IAAIA,MAAK,GAAG;AAE1E,WAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,UAAM,OAAO,SAAS,CAAC;AACvB,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,YAAM,MAAM,KAAK,CAAC;AAElB,YAAM,YAAY,EAAE,MAAM,IAAI,GAAG,QAAQ,IAAI,MAAM,EAAE;AACrD,UAAI,SAA6B;AACjC,UAAI,WAA4B;AAChC,UAAI,OAA2B;AAE/B,UAAI,IAAI,WAAW,GAAG;AACpB,iBAAS,QAAQ,MAAM,IAAI,aAAa,CAAC;AACzC,mBAAW,EAAE,MAAM,IAAI,WAAW,IAAI,GAAG,QAAQ,IAAI,aAAa,EAAE;AAEpE,YAAI,IAAI,WAAW,EAAG,QAAO,MAAM,MAAM,IAAI,WAAW,CAAC;AAAA,MAC3D;AAEA,UAAI,KAAK,EAAE,WAAW,QAAQ,UAAU,KAAK,CAAY;AAAA,IAC3D;AAAA,EACF;AAEA,SAAO;AACT;AAGA,SAAS,mBACP,UACA,KACA,SACA,WACA,QACA,YACA,cACA,MACA,SACM;AACN,QAAM;AAAA,IACJ,WAAW;AAAA,IACX,UAAU;AAAA,IACV,iBAAiB;AAAA,IACjB,QAAQ;AAAA;AAAA,EAEV,IAAIA,MAAK,GAAG;AACZ,QAAM,OAAO,SAAS,UAAU,OAAO;AACvC,QAAM,QAAQ,eAAe,MAAM,SAAS;AAE5C,MAAI,CAAC,QAAQ;AACX,QAAI,YAAY,eAAe,MAAM,KAAK,EAAG;AAC7C,WAAO,OAAO,MAAM,OAAO,CAAC,SAAS,CAAC;AAAA,EACxC;AAIA,SAAe,UAAU;AACzB,SAAe,YAAY;AAE3B,QAAM,eAAe,IAAI,SAAS,MAAM;AACxC,QAAM,aAAa,OAAO,IAAI,OAAO,IAAI,IAAI;AAC7C,MAAI,iBAAiB,eAAe,OAAQ,gBAAe,YAAY,IAAI,4BAAW;AAGtF,MAAI,YAAY,WAAW,MAAM,OAAO,cAAc,YAAY,cAAc,UAAU,GAAG;AAC3F;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,OACI,CAAC,WAAW,cAAc,YAAY,cAAc,UAAU,IAC9D,CAAC,WAAW,cAAc,YAAY,YAAY;AAAA,EACxD;AACF;AAEA,SAAS,OAAU,MAAkC;AAErD;AAEA,SAAS,SAAY,KAAY,OAAoB;AACnD,WAAS,IAAI,IAAI,QAAQ,KAAK,OAAO,KAAK;AACxC,QAAI,CAAC,IAAI,CAAC;AAAA,EACZ;AACA,SAAO,IAAI,KAAK;AAClB;AAEA,SAAS,eAAe,MAA0B,WAA2B;AAC3E,MAAI,QAAQ,KAAK;AACjB,WAAS,IAAI,QAAQ,GAAG,KAAK,GAAG,QAAQ,KAAK;AAC3C,UAAM,UAAU,KAAK,CAAC;AACtB,QAAI,aAAa,QAAQ,MAAM,EAAG;AAAA,EACpC;AACA,SAAO;AACT;AAEA,SAAS,OAAU,OAAY,OAAe,OAAU;AACtD,WAAS,IAAI,MAAM,QAAQ,IAAI,OAAO,KAAK;AACzC,UAAM,CAAC,IAAI,MAAM,IAAI,CAAC;AAAA,EACxB;AACA,QAAM,KAAK,IAAI;AACjB;AAEA,SAAS,sBAAsB,UAAgC;AAC7D,QAAM,EAAE,OAAO,IAAI;AACnB,MAAI,MAAM;AACV,WAAS,IAAI,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK;AAC1C,QAAI,SAAS,CAAC,EAAE,SAAS,EAAG;AAAA,EAC9B;AACA,MAAI,MAAM,OAAQ,UAAS,SAAS;AACtC;AAEA,SAAS,OAAkC,QAAqB,OAAY;AAC1E,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,IAAK,KAAI,QAAQ,MAAM,CAAC,CAAC;AAC7D;AAEA,SAAS,eAAe,MAA0B,OAAwB;AAGxE,MAAI,UAAU,EAAG,QAAO;AAExB,QAAM,OAAO,KAAK,QAAQ,CAAC;AAI3B,SAAO,KAAK,WAAW;AACzB;AAEA,SAAS,WACP,MACA,OACA,cACA,YACA,cACA,YACS;AAET,MAAI,UAAU,EAAG,QAAO;AAExB,QAAM,OAAO,KAAK,QAAQ,CAAC;AAG3B,MAAI,KAAK,WAAW,EAAG,QAAO;AAI9B,SACE,iBAAiB,KAAK,aAAa,KACnC,eAAe,KAAK,WAAW,KAC/B,iBAAiB,KAAK,aAAa,KACnC,gBAAgB,KAAK,WAAW,IAAI,KAAK,WAAW,IAAI;AAE5D;AAEA,SAAS,mBACP,UACA,KACA,SAOA;AACA,QAAM,EAAE,WAAW,QAAQ,UAAU,MAAM,QAAQ,IAAI;AACvD,MAAI,CAAC,QAAQ;AACX,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,UAAU,OAAO;AAAA,MACjB,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACA,SAAY,QAAQ;AACpB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,UAAU,OAAO;AAAA,IACjB,UAAU;AAAA,IACV;AAAA,IACA,SAAS,OAAO;AAAA,IAChB,SAAS;AAAA,IACT;AAAA,IACA;AAAA,EACF;AACF;", + "names": ["cast"] +} diff --git a/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.umd.js b/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.umd.js new file mode 100644 index 00000000..cb84af55 --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.umd.js @@ -0,0 +1,358 @@ +(function (global, factory) { + if (typeof exports === 'object' && typeof module !== 'undefined') { + factory(module, require('@jridgewell/sourcemap-codec'), require('@jridgewell/trace-mapping')); + module.exports = def(module); + } else if (typeof define === 'function' && define.amd) { + define(['module', '@jridgewell/sourcemap-codec', '@jridgewell/trace-mapping'], function(mod) { + factory.apply(this, arguments); + mod.exports = def(mod); + }); + } else { + const mod = { exports: {} }; + factory(mod, global.sourcemapCodec, global.traceMapping); + global = typeof globalThis !== 'undefined' ? globalThis : global || self; + global.genMapping = def(mod); + } + function def(m) { return 'default' in m.exports ? m.exports.default : m.exports; } +})(this, (function (module, require_sourcemapCodec, require_traceMapping) { +"use strict"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// umd:@jridgewell/sourcemap-codec +var require_sourcemap_codec = __commonJS({ + "umd:@jridgewell/sourcemap-codec"(exports, module2) { + module2.exports = require_sourcemapCodec; + } +}); + +// umd:@jridgewell/trace-mapping +var require_trace_mapping = __commonJS({ + "umd:@jridgewell/trace-mapping"(exports, module2) { + module2.exports = require_traceMapping; + } +}); + +// src/gen-mapping.ts +var gen_mapping_exports = {}; +__export(gen_mapping_exports, { + GenMapping: () => GenMapping, + addMapping: () => addMapping, + addSegment: () => addSegment, + allMappings: () => allMappings, + fromMap: () => fromMap, + maybeAddMapping: () => maybeAddMapping, + maybeAddSegment: () => maybeAddSegment, + setIgnore: () => setIgnore, + setSourceContent: () => setSourceContent, + toDecodedMap: () => toDecodedMap, + toEncodedMap: () => toEncodedMap +}); +module.exports = __toCommonJS(gen_mapping_exports); + +// src/set-array.ts +var SetArray = class { + constructor() { + this._indexes = { __proto__: null }; + this.array = []; + } +}; +function cast(set) { + return set; +} +function get(setarr, key) { + return cast(setarr)._indexes[key]; +} +function put(setarr, key) { + const index = get(setarr, key); + if (index !== void 0) return index; + const { array, _indexes: indexes } = cast(setarr); + const length = array.push(key); + return indexes[key] = length - 1; +} +function remove(setarr, key) { + const index = get(setarr, key); + if (index === void 0) return; + const { array, _indexes: indexes } = cast(setarr); + for (let i = index + 1; i < array.length; i++) { + const k = array[i]; + array[i - 1] = k; + indexes[k]--; + } + indexes[key] = void 0; + array.pop(); +} + +// src/gen-mapping.ts +var import_sourcemap_codec = __toESM(require_sourcemap_codec()); +var import_trace_mapping = __toESM(require_trace_mapping()); + +// src/sourcemap-segment.ts +var COLUMN = 0; +var SOURCES_INDEX = 1; +var SOURCE_LINE = 2; +var SOURCE_COLUMN = 3; +var NAMES_INDEX = 4; + +// src/gen-mapping.ts +var NO_NAME = -1; +var GenMapping = class { + constructor({ file, sourceRoot } = {}) { + this._names = new SetArray(); + this._sources = new SetArray(); + this._sourcesContent = []; + this._mappings = []; + this.file = file; + this.sourceRoot = sourceRoot; + this._ignoreList = new SetArray(); + } +}; +function cast2(map) { + return map; +} +function addSegment(map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) { + return addSegmentInternal( + false, + map, + genLine, + genColumn, + source, + sourceLine, + sourceColumn, + name, + content + ); +} +function addMapping(map, mapping) { + return addMappingInternal(false, map, mapping); +} +var maybeAddSegment = (map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) => { + return addSegmentInternal( + true, + map, + genLine, + genColumn, + source, + sourceLine, + sourceColumn, + name, + content + ); +}; +var maybeAddMapping = (map, mapping) => { + return addMappingInternal(true, map, mapping); +}; +function setSourceContent(map, source, content) { + const { + _sources: sources, + _sourcesContent: sourcesContent + // _originalScopes: originalScopes, + } = cast2(map); + const index = put(sources, source); + sourcesContent[index] = content; +} +function setIgnore(map, source, ignore = true) { + const { + _sources: sources, + _sourcesContent: sourcesContent, + _ignoreList: ignoreList + // _originalScopes: originalScopes, + } = cast2(map); + const index = put(sources, source); + if (index === sourcesContent.length) sourcesContent[index] = null; + if (ignore) put(ignoreList, index); + else remove(ignoreList, index); +} +function toDecodedMap(map) { + const { + _mappings: mappings, + _sources: sources, + _sourcesContent: sourcesContent, + _names: names, + _ignoreList: ignoreList + // _originalScopes: originalScopes, + // _generatedRanges: generatedRanges, + } = cast2(map); + removeEmptyFinalLines(mappings); + return { + version: 3, + file: map.file || void 0, + names: names.array, + sourceRoot: map.sourceRoot || void 0, + sources: sources.array, + sourcesContent, + mappings, + // originalScopes, + // generatedRanges, + ignoreList: ignoreList.array + }; +} +function toEncodedMap(map) { + const decoded = toDecodedMap(map); + return Object.assign({}, decoded, { + // originalScopes: decoded.originalScopes.map((os) => encodeOriginalScopes(os)), + // generatedRanges: encodeGeneratedRanges(decoded.generatedRanges as GeneratedRange[]), + mappings: (0, import_sourcemap_codec.encode)(decoded.mappings) + }); +} +function fromMap(input) { + const map = new import_trace_mapping.TraceMap(input); + const gen = new GenMapping({ file: map.file, sourceRoot: map.sourceRoot }); + putAll(cast2(gen)._names, map.names); + putAll(cast2(gen)._sources, map.sources); + cast2(gen)._sourcesContent = map.sourcesContent || map.sources.map(() => null); + cast2(gen)._mappings = (0, import_trace_mapping.decodedMappings)(map); + if (map.ignoreList) putAll(cast2(gen)._ignoreList, map.ignoreList); + return gen; +} +function allMappings(map) { + const out = []; + const { _mappings: mappings, _sources: sources, _names: names } = cast2(map); + for (let i = 0; i < mappings.length; i++) { + const line = mappings[i]; + for (let j = 0; j < line.length; j++) { + const seg = line[j]; + const generated = { line: i + 1, column: seg[COLUMN] }; + let source = void 0; + let original = void 0; + let name = void 0; + if (seg.length !== 1) { + source = sources.array[seg[SOURCES_INDEX]]; + original = { line: seg[SOURCE_LINE] + 1, column: seg[SOURCE_COLUMN] }; + if (seg.length === 5) name = names.array[seg[NAMES_INDEX]]; + } + out.push({ generated, source, original, name }); + } + } + return out; +} +function addSegmentInternal(skipable, map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) { + const { + _mappings: mappings, + _sources: sources, + _sourcesContent: sourcesContent, + _names: names + // _originalScopes: originalScopes, + } = cast2(map); + const line = getIndex(mappings, genLine); + const index = getColumnIndex(line, genColumn); + if (!source) { + if (skipable && skipSourceless(line, index)) return; + return insert(line, index, [genColumn]); + } + assert(sourceLine); + assert(sourceColumn); + const sourcesIndex = put(sources, source); + const namesIndex = name ? put(names, name) : NO_NAME; + if (sourcesIndex === sourcesContent.length) sourcesContent[sourcesIndex] = content != null ? content : null; + if (skipable && skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex)) { + return; + } + return insert( + line, + index, + name ? [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex] : [genColumn, sourcesIndex, sourceLine, sourceColumn] + ); +} +function assert(_val) { +} +function getIndex(arr, index) { + for (let i = arr.length; i <= index; i++) { + arr[i] = []; + } + return arr[index]; +} +function getColumnIndex(line, genColumn) { + let index = line.length; + for (let i = index - 1; i >= 0; index = i--) { + const current = line[i]; + if (genColumn >= current[COLUMN]) break; + } + return index; +} +function insert(array, index, value) { + for (let i = array.length; i > index; i--) { + array[i] = array[i - 1]; + } + array[index] = value; +} +function removeEmptyFinalLines(mappings) { + const { length } = mappings; + let len = length; + for (let i = len - 1; i >= 0; len = i, i--) { + if (mappings[i].length > 0) break; + } + if (len < length) mappings.length = len; +} +function putAll(setarr, array) { + for (let i = 0; i < array.length; i++) put(setarr, array[i]); +} +function skipSourceless(line, index) { + if (index === 0) return true; + const prev = line[index - 1]; + return prev.length === 1; +} +function skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex) { + if (index === 0) return false; + const prev = line[index - 1]; + if (prev.length === 1) return false; + return sourcesIndex === prev[SOURCES_INDEX] && sourceLine === prev[SOURCE_LINE] && sourceColumn === prev[SOURCE_COLUMN] && namesIndex === (prev.length === 5 ? prev[NAMES_INDEX] : NO_NAME); +} +function addMappingInternal(skipable, map, mapping) { + const { generated, source, original, name, content } = mapping; + if (!source) { + return addSegmentInternal( + skipable, + map, + generated.line - 1, + generated.column, + null, + null, + null, + null, + null + ); + } + assert(original); + return addSegmentInternal( + skipable, + map, + generated.line - 1, + generated.column, + source, + original.line - 1, + original.column, + name, + content + ); +} +})); +//# sourceMappingURL=gen-mapping.umd.js.map diff --git a/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.umd.js.map b/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.umd.js.map new file mode 100644 index 00000000..b13750bf --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.umd.js.map @@ -0,0 +1,6 @@ +{ + "version": 3, + "sources": ["umd:@jridgewell/sourcemap-codec", "umd:@jridgewell/trace-mapping", "../src/gen-mapping.ts", "../src/set-array.ts", "../src/sourcemap-segment.ts"], + "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,6CAAAA,SAAA;AAAA,IAAAA,QAAO,UAAU;AAAA;AAAA;;;ACAjB;AAAA,2CAAAC,SAAA;AAAA,IAAAA,QAAO,UAAU;AAAA;AAAA;;;ACAjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACUO,IAAM,WAAN,MAAoC;AAAA,EAIzC,cAAc;AACZ,SAAK,WAAW,EAAE,WAAW,KAAK;AAClC,SAAK,QAAQ,CAAC;AAAA,EAChB;AACF;AAWA,SAAS,KAAoB,KAAgC;AAC3D,SAAO;AACT;AAKO,SAAS,IAAmB,QAAqB,KAA4B;AAClF,SAAO,KAAK,MAAM,EAAE,SAAS,GAAG;AAClC;AAMO,SAAS,IAAmB,QAAqB,KAAgB;AAEtE,QAAM,QAAQ,IAAI,QAAQ,GAAG;AAC7B,MAAI,UAAU,OAAW,QAAO;AAEhC,QAAM,EAAE,OAAO,UAAU,QAAQ,IAAI,KAAK,MAAM;AAEhD,QAAM,SAAS,MAAM,KAAK,GAAG;AAC7B,SAAQ,QAAQ,GAAG,IAAI,SAAS;AAClC;AAgBO,SAAS,OAAsB,QAAqB,KAAc;AACvE,QAAM,QAAQ,IAAI,QAAQ,GAAG;AAC7B,MAAI,UAAU,OAAW;AAEzB,QAAM,EAAE,OAAO,UAAU,QAAQ,IAAI,KAAK,MAAM;AAChD,WAAS,IAAI,QAAQ,GAAG,IAAI,MAAM,QAAQ,KAAK;AAC7C,UAAM,IAAI,MAAM,CAAC;AACjB,UAAM,IAAI,CAAC,IAAI;AACf,YAAQ,CAAC;AAAA,EACX;AACA,UAAQ,GAAG,IAAI;AACf,QAAM,IAAI;AACZ;;;ADhFA,6BAIO;AACP,2BAA0C;;;AEKnC,IAAM,SAAS;AACf,IAAM,gBAAgB;AACtB,IAAM,cAAc;AACpB,IAAM,gBAAgB;AACtB,IAAM,cAAc;;;AFsB3B,IAAM,UAAU;AAKT,IAAM,aAAN,MAAiB;AAAA,EAWtB,YAAY,EAAE,MAAM,WAAW,IAAa,CAAC,GAAG;AAC9C,SAAK,SAAS,IAAI,SAAS;AAC3B,SAAK,WAAW,IAAI,SAAS;AAC7B,SAAK,kBAAkB,CAAC;AACxB,SAAK,YAAY,CAAC;AAGlB,SAAK,OAAO;AACZ,SAAK,aAAa;AAClB,SAAK,cAAc,IAAI,SAAS;AAAA,EAClC;AACF;AAgBA,SAASC,MAAK,KAAyB;AACrC,SAAO;AACT;AAoCO,SAAS,WACd,KACA,SACA,WACA,QACA,YACA,cACA,MACA,SACM;AACN,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAoCO,SAAS,WACd,KACA,SAOM;AACN,SAAO,mBAAmB,OAAO,KAAK,OAAmD;AAC3F;AAOO,IAAM,kBAAqC,CAChD,KACA,SACA,WACA,QACA,YACA,cACA,MACA,YACG;AACH,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAOO,IAAM,kBAAqC,CAAC,KAAK,YAAY;AAClE,SAAO,mBAAmB,MAAM,KAAK,OAAmD;AAC1F;AAKO,SAAS,iBAAiB,KAAiB,QAAgB,SAA8B;AAC9F,QAAM;AAAA,IACJ,UAAU;AAAA,IACV,iBAAiB;AAAA;AAAA,EAEnB,IAAIA,MAAK,GAAG;AACZ,QAAM,QAAQ,IAAI,SAAS,MAAM;AACjC,iBAAe,KAAK,IAAI;AAE1B;AAEO,SAAS,UAAU,KAAiB,QAAgB,SAAS,MAAM;AACxE,QAAM;AAAA,IACJ,UAAU;AAAA,IACV,iBAAiB;AAAA,IACjB,aAAa;AAAA;AAAA,EAEf,IAAIA,MAAK,GAAG;AACZ,QAAM,QAAQ,IAAI,SAAS,MAAM;AACjC,MAAI,UAAU,eAAe,OAAQ,gBAAe,KAAK,IAAI;AAE7D,MAAI,OAAQ,KAAI,YAAY,KAAK;AAAA,MAC5B,QAAO,YAAY,KAAK;AAC/B;AAMO,SAAS,aAAa,KAAmC;AAC9D,QAAM;AAAA,IACJ,WAAW;AAAA,IACX,UAAU;AAAA,IACV,iBAAiB;AAAA,IACjB,QAAQ;AAAA,IACR,aAAa;AAAA;AAAA;AAAA,EAGf,IAAIA,MAAK,GAAG;AACZ,wBAAsB,QAAQ;AAE9B,SAAO;AAAA,IACL,SAAS;AAAA,IACT,MAAM,IAAI,QAAQ;AAAA,IAClB,OAAO,MAAM;AAAA,IACb,YAAY,IAAI,cAAc;AAAA,IAC9B,SAAS,QAAQ;AAAA,IACjB;AAAA,IACA;AAAA;AAAA;AAAA,IAGA,YAAY,WAAW;AAAA,EACzB;AACF;AAMO,SAAS,aAAa,KAAmC;AAC9D,QAAM,UAAU,aAAa,GAAG;AAChC,SAAO,OAAO,OAAO,CAAC,GAAG,SAAS;AAAA;AAAA;AAAA,IAGhC,cAAU,+BAAO,QAAQ,QAAgC;AAAA,EAC3D,CAAC;AACH;AAKO,SAAS,QAAQ,OAAmC;AACzD,QAAM,MAAM,IAAI,8BAAS,KAAK;AAC9B,QAAM,MAAM,IAAI,WAAW,EAAE,MAAM,IAAI,MAAM,YAAY,IAAI,WAAW,CAAC;AAEzE,SAAOA,MAAK,GAAG,EAAE,QAAQ,IAAI,KAAK;AAClC,SAAOA,MAAK,GAAG,EAAE,UAAU,IAAI,OAAmB;AAClD,EAAAA,MAAK,GAAG,EAAE,kBAAkB,IAAI,kBAAkB,IAAI,QAAQ,IAAI,MAAM,IAAI;AAC5E,EAAAA,MAAK,GAAG,EAAE,gBAAY,sCAAgB,GAAG;AAEzC,MAAI,IAAI,WAAY,QAAOA,MAAK,GAAG,EAAE,aAAa,IAAI,UAAU;AAEhE,SAAO;AACT;AAMO,SAAS,YAAY,KAA4B;AACtD,QAAM,MAAiB,CAAC;AACxB,QAAM,EAAE,WAAW,UAAU,UAAU,SAAS,QAAQ,MAAM,IAAIA,MAAK,GAAG;AAE1E,WAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,UAAM,OAAO,SAAS,CAAC;AACvB,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,YAAM,MAAM,KAAK,CAAC;AAElB,YAAM,YAAY,EAAE,MAAM,IAAI,GAAG,QAAQ,IAAI,MAAM,EAAE;AACrD,UAAI,SAA6B;AACjC,UAAI,WAA4B;AAChC,UAAI,OAA2B;AAE/B,UAAI,IAAI,WAAW,GAAG;AACpB,iBAAS,QAAQ,MAAM,IAAI,aAAa,CAAC;AACzC,mBAAW,EAAE,MAAM,IAAI,WAAW,IAAI,GAAG,QAAQ,IAAI,aAAa,EAAE;AAEpE,YAAI,IAAI,WAAW,EAAG,QAAO,MAAM,MAAM,IAAI,WAAW,CAAC;AAAA,MAC3D;AAEA,UAAI,KAAK,EAAE,WAAW,QAAQ,UAAU,KAAK,CAAY;AAAA,IAC3D;AAAA,EACF;AAEA,SAAO;AACT;AAGA,SAAS,mBACP,UACA,KACA,SACA,WACA,QACA,YACA,cACA,MACA,SACM;AACN,QAAM;AAAA,IACJ,WAAW;AAAA,IACX,UAAU;AAAA,IACV,iBAAiB;AAAA,IACjB,QAAQ;AAAA;AAAA,EAEV,IAAIA,MAAK,GAAG;AACZ,QAAM,OAAO,SAAS,UAAU,OAAO;AACvC,QAAM,QAAQ,eAAe,MAAM,SAAS;AAE5C,MAAI,CAAC,QAAQ;AACX,QAAI,YAAY,eAAe,MAAM,KAAK,EAAG;AAC7C,WAAO,OAAO,MAAM,OAAO,CAAC,SAAS,CAAC;AAAA,EACxC;AAIA,SAAe,UAAU;AACzB,SAAe,YAAY;AAE3B,QAAM,eAAe,IAAI,SAAS,MAAM;AACxC,QAAM,aAAa,OAAO,IAAI,OAAO,IAAI,IAAI;AAC7C,MAAI,iBAAiB,eAAe,OAAQ,gBAAe,YAAY,IAAI,4BAAW;AAGtF,MAAI,YAAY,WAAW,MAAM,OAAO,cAAc,YAAY,cAAc,UAAU,GAAG;AAC3F;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,OACI,CAAC,WAAW,cAAc,YAAY,cAAc,UAAU,IAC9D,CAAC,WAAW,cAAc,YAAY,YAAY;AAAA,EACxD;AACF;AAEA,SAAS,OAAU,MAAkC;AAErD;AAEA,SAAS,SAAY,KAAY,OAAoB;AACnD,WAAS,IAAI,IAAI,QAAQ,KAAK,OAAO,KAAK;AACxC,QAAI,CAAC,IAAI,CAAC;AAAA,EACZ;AACA,SAAO,IAAI,KAAK;AAClB;AAEA,SAAS,eAAe,MAA0B,WAA2B;AAC3E,MAAI,QAAQ,KAAK;AACjB,WAAS,IAAI,QAAQ,GAAG,KAAK,GAAG,QAAQ,KAAK;AAC3C,UAAM,UAAU,KAAK,CAAC;AACtB,QAAI,aAAa,QAAQ,MAAM,EAAG;AAAA,EACpC;AACA,SAAO;AACT;AAEA,SAAS,OAAU,OAAY,OAAe,OAAU;AACtD,WAAS,IAAI,MAAM,QAAQ,IAAI,OAAO,KAAK;AACzC,UAAM,CAAC,IAAI,MAAM,IAAI,CAAC;AAAA,EACxB;AACA,QAAM,KAAK,IAAI;AACjB;AAEA,SAAS,sBAAsB,UAAgC;AAC7D,QAAM,EAAE,OAAO,IAAI;AACnB,MAAI,MAAM;AACV,WAAS,IAAI,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK;AAC1C,QAAI,SAAS,CAAC,EAAE,SAAS,EAAG;AAAA,EAC9B;AACA,MAAI,MAAM,OAAQ,UAAS,SAAS;AACtC;AAEA,SAAS,OAAkC,QAAqB,OAAY;AAC1E,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,IAAK,KAAI,QAAQ,MAAM,CAAC,CAAC;AAC7D;AAEA,SAAS,eAAe,MAA0B,OAAwB;AAGxE,MAAI,UAAU,EAAG,QAAO;AAExB,QAAM,OAAO,KAAK,QAAQ,CAAC;AAI3B,SAAO,KAAK,WAAW;AACzB;AAEA,SAAS,WACP,MACA,OACA,cACA,YACA,cACA,YACS;AAET,MAAI,UAAU,EAAG,QAAO;AAExB,QAAM,OAAO,KAAK,QAAQ,CAAC;AAG3B,MAAI,KAAK,WAAW,EAAG,QAAO;AAI9B,SACE,iBAAiB,KAAK,aAAa,KACnC,eAAe,KAAK,WAAW,KAC/B,iBAAiB,KAAK,aAAa,KACnC,gBAAgB,KAAK,WAAW,IAAI,KAAK,WAAW,IAAI;AAE5D;AAEA,SAAS,mBACP,UACA,KACA,SAOA;AACA,QAAM,EAAE,WAAW,QAAQ,UAAU,MAAM,QAAQ,IAAI;AACvD,MAAI,CAAC,QAAQ;AACX,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,UAAU,OAAO;AAAA,MACjB,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACA,SAAY,QAAQ;AACpB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,UAAU,OAAO;AAAA,IACjB,UAAU;AAAA,IACV;AAAA,IACA,SAAS,OAAO;AAAA,IAChB,SAAS;AAAA,IACT;AAAA,IACA;AAAA,EACF;AACF;", + "names": ["module", "module", "cast"] +} diff --git a/node_modules/@jridgewell/gen-mapping/dist/types/gen-mapping.d.ts b/node_modules/@jridgewell/gen-mapping/dist/types/gen-mapping.d.ts new file mode 100644 index 00000000..9ba936e8 --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/dist/types/gen-mapping.d.ts @@ -0,0 +1,88 @@ +import type { SourceMapInput } from '@jridgewell/trace-mapping'; +import type { DecodedSourceMap, EncodedSourceMap, Pos, Mapping } from './types'; +export type { DecodedSourceMap, EncodedSourceMap, Mapping }; +export type Options = { + file?: string | null; + sourceRoot?: string | null; +}; +/** + * Provides the state to generate a sourcemap. + */ +export declare class GenMapping { + private _names; + private _sources; + private _sourcesContent; + private _mappings; + private _ignoreList; + file: string | null | undefined; + sourceRoot: string | null | undefined; + constructor({ file, sourceRoot }?: Options); +} +/** + * A low-level API to associate a generated position with an original source position. Line and + * column here are 0-based, unlike `addMapping`. + */ +export declare function addSegment(map: GenMapping, genLine: number, genColumn: number, source?: null, sourceLine?: null, sourceColumn?: null, name?: null, content?: null): void; +export declare function addSegment(map: GenMapping, genLine: number, genColumn: number, source: string, sourceLine: number, sourceColumn: number, name?: null, content?: string | null): void; +export declare function addSegment(map: GenMapping, genLine: number, genColumn: number, source: string, sourceLine: number, sourceColumn: number, name: string, content?: string | null): void; +/** + * A high-level API to associate a generated position with an original source position. Line is + * 1-based, but column is 0-based, due to legacy behavior in `source-map` library. + */ +export declare function addMapping(map: GenMapping, mapping: { + generated: Pos; + source?: null; + original?: null; + name?: null; + content?: null; +}): void; +export declare function addMapping(map: GenMapping, mapping: { + generated: Pos; + source: string; + original: Pos; + name?: null; + content?: string | null; +}): void; +export declare function addMapping(map: GenMapping, mapping: { + generated: Pos; + source: string; + original: Pos; + name: string; + content?: string | null; +}): void; +/** + * Same as `addSegment`, but will only add the segment if it generates useful information in the + * resulting map. This only works correctly if segments are added **in order**, meaning you should + * not add a segment with a lower generated line/column than one that came before. + */ +export declare const maybeAddSegment: typeof addSegment; +/** + * Same as `addMapping`, but will only add the mapping if it generates useful information in the + * resulting map. This only works correctly if mappings are added **in order**, meaning you should + * not add a mapping with a lower generated line/column than one that came before. + */ +export declare const maybeAddMapping: typeof addMapping; +/** + * Adds/removes the content of the source file to the source map. + */ +export declare function setSourceContent(map: GenMapping, source: string, content: string | null): void; +export declare function setIgnore(map: GenMapping, source: string, ignore?: boolean): void; +/** + * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects + * a sourcemap, or to JSON.stringify. + */ +export declare function toDecodedMap(map: GenMapping): DecodedSourceMap; +/** + * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects + * a sourcemap, or to JSON.stringify. + */ +export declare function toEncodedMap(map: GenMapping): EncodedSourceMap; +/** + * Constructs a new GenMapping, using the already present mappings of the input. + */ +export declare function fromMap(input: SourceMapInput): GenMapping; +/** + * Returns an array of high-level mapping objects for every recorded segment, which could then be + * passed to the `source-map` library. + */ +export declare function allMappings(map: GenMapping): Mapping[]; diff --git a/node_modules/@jridgewell/gen-mapping/dist/types/set-array.d.ts b/node_modules/@jridgewell/gen-mapping/dist/types/set-array.d.ts new file mode 100644 index 00000000..6ed43543 --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/dist/types/set-array.d.ts @@ -0,0 +1,32 @@ +type Key = string | number | symbol; +/** + * SetArray acts like a `Set` (allowing only one occurrence of a string `key`), but provides the + * index of the `key` in the backing array. + * + * This is designed to allow synchronizing a second array with the contents of the backing array, + * like how in a sourcemap `sourcesContent[i]` is the source content associated with `source[i]`, + * and there are never duplicates. + */ +export declare class SetArray { + private _indexes; + array: readonly T[]; + constructor(); +} +/** + * Gets the index associated with `key` in the backing array, if it is already present. + */ +export declare function get(setarr: SetArray, key: T): number | undefined; +/** + * Puts `key` into the backing array, if it is not already present. Returns + * the index of the `key` in the backing array. + */ +export declare function put(setarr: SetArray, key: T): number; +/** + * Pops the last added item out of the SetArray. + */ +export declare function pop(setarr: SetArray): void; +/** + * Removes the key, if it exists in the set. + */ +export declare function remove(setarr: SetArray, key: T): void; +export {}; diff --git a/node_modules/@jridgewell/gen-mapping/dist/types/sourcemap-segment.d.ts b/node_modules/@jridgewell/gen-mapping/dist/types/sourcemap-segment.d.ts new file mode 100644 index 00000000..aa19fb5e --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/dist/types/sourcemap-segment.d.ts @@ -0,0 +1,12 @@ +type GeneratedColumn = number; +type SourcesIndex = number; +type SourceLine = number; +type SourceColumn = number; +type NamesIndex = number; +export type SourceMapSegment = [GeneratedColumn] | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn] | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn, NamesIndex]; +export declare const COLUMN = 0; +export declare const SOURCES_INDEX = 1; +export declare const SOURCE_LINE = 2; +export declare const SOURCE_COLUMN = 3; +export declare const NAMES_INDEX = 4; +export {}; diff --git a/node_modules/@jridgewell/gen-mapping/dist/types/types.d.ts b/node_modules/@jridgewell/gen-mapping/dist/types/types.d.ts new file mode 100644 index 00000000..8eb90fb4 --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/dist/types/types.d.ts @@ -0,0 +1,43 @@ +import type { SourceMapSegment } from './sourcemap-segment'; +export interface SourceMapV3 { + file?: string | null; + names: readonly string[]; + sourceRoot?: string; + sources: readonly (string | null)[]; + sourcesContent?: readonly (string | null)[]; + version: 3; + ignoreList?: readonly number[]; +} +export interface EncodedSourceMap extends SourceMapV3 { + mappings: string; +} +export interface DecodedSourceMap extends SourceMapV3 { + mappings: readonly SourceMapSegment[][]; +} +export interface Pos { + line: number; + column: number; +} +export interface OriginalPos extends Pos { + source: string; +} +export interface BindingExpressionRange { + start: Pos; + expression: string; +} +export type Mapping = { + generated: Pos; + source: undefined; + original: undefined; + name: undefined; +} | { + generated: Pos; + source: string; + original: Pos; + name: string; +} | { + generated: Pos; + source: string; + original: Pos; + name: undefined; +}; diff --git a/node_modules/@jridgewell/gen-mapping/package.json b/node_modules/@jridgewell/gen-mapping/package.json new file mode 100644 index 00000000..036f9b79 --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/package.json @@ -0,0 +1,67 @@ +{ + "name": "@jridgewell/gen-mapping", + "version": "0.3.13", + "description": "Generate source maps", + "keywords": [ + "source", + "map" + ], + "main": "dist/gen-mapping.umd.js", + "module": "dist/gen-mapping.mjs", + "types": "types/gen-mapping.d.cts", + "files": [ + "dist", + "src", + "types" + ], + "exports": { + ".": [ + { + "import": { + "types": "./types/gen-mapping.d.mts", + "default": "./dist/gen-mapping.mjs" + }, + "default": { + "types": "./types/gen-mapping.d.cts", + "default": "./dist/gen-mapping.umd.js" + } + }, + "./dist/gen-mapping.umd.js" + ], + "./package.json": "./package.json" + }, + "scripts": { + "benchmark": "run-s build:code benchmark:*", + "benchmark:install": "cd benchmark && npm install", + "benchmark:only": "node --expose-gc benchmark/index.js", + "build": "run-s -n build:code build:types", + "build:code": "node ../../esbuild.mjs gen-mapping.ts", + "build:types": "run-s build:types:force build:types:emit build:types:mts", + "build:types:force": "rimraf tsconfig.build.tsbuildinfo", + "build:types:emit": "tsc --project tsconfig.build.json", + "build:types:mts": "node ../../mts-types.mjs", + "clean": "run-s -n clean:code clean:types", + "clean:code": "tsc --build --clean tsconfig.build.json", + "clean:types": "rimraf dist types", + "test": "run-s -n test:types test:only test:format", + "test:format": "prettier --check '{src,test}/**/*.ts'", + "test:only": "mocha", + "test:types": "eslint '{src,test}/**/*.ts'", + "lint": "run-s -n lint:types lint:format", + "lint:format": "npm run test:format -- --write", + "lint:types": "npm run test:types -- --fix", + "prepublishOnly": "npm run-s -n build test" + }, + "homepage": "https://github.com/jridgewell/sourcemaps/tree/main/packages/gen-mapping", + "repository": { + "type": "git", + "url": "git+https://github.com/jridgewell/sourcemaps.git", + "directory": "packages/gen-mapping" + }, + "author": "Justin Ridgewell ", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } +} diff --git a/node_modules/@jridgewell/gen-mapping/src/gen-mapping.ts b/node_modules/@jridgewell/gen-mapping/src/gen-mapping.ts new file mode 100644 index 00000000..ecc878c5 --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/src/gen-mapping.ts @@ -0,0 +1,614 @@ +import { SetArray, put, remove } from './set-array'; +import { + encode, + // encodeGeneratedRanges, + // encodeOriginalScopes +} from '@jridgewell/sourcemap-codec'; +import { TraceMap, decodedMappings } from '@jridgewell/trace-mapping'; + +import { + COLUMN, + SOURCES_INDEX, + SOURCE_LINE, + SOURCE_COLUMN, + NAMES_INDEX, +} from './sourcemap-segment'; + +import type { SourceMapInput } from '@jridgewell/trace-mapping'; +// import type { OriginalScope, GeneratedRange } from '@jridgewell/sourcemap-codec'; +import type { SourceMapSegment } from './sourcemap-segment'; +import type { + DecodedSourceMap, + EncodedSourceMap, + Pos, + Mapping, + // BindingExpressionRange, + // OriginalPos, + // OriginalScopeInfo, + // GeneratedRangeInfo, +} from './types'; + +export type { DecodedSourceMap, EncodedSourceMap, Mapping }; + +export type Options = { + file?: string | null; + sourceRoot?: string | null; +}; + +const NO_NAME = -1; + +/** + * Provides the state to generate a sourcemap. + */ +export class GenMapping { + declare private _names: SetArray; + declare private _sources: SetArray; + declare private _sourcesContent: (string | null)[]; + declare private _mappings: SourceMapSegment[][]; + // private declare _originalScopes: OriginalScope[][]; + // private declare _generatedRanges: GeneratedRange[]; + declare private _ignoreList: SetArray; + declare file: string | null | undefined; + declare sourceRoot: string | null | undefined; + + constructor({ file, sourceRoot }: Options = {}) { + this._names = new SetArray(); + this._sources = new SetArray(); + this._sourcesContent = []; + this._mappings = []; + // this._originalScopes = []; + // this._generatedRanges = []; + this.file = file; + this.sourceRoot = sourceRoot; + this._ignoreList = new SetArray(); + } +} + +interface PublicMap { + _names: GenMapping['_names']; + _sources: GenMapping['_sources']; + _sourcesContent: GenMapping['_sourcesContent']; + _mappings: GenMapping['_mappings']; + // _originalScopes: GenMapping['_originalScopes']; + // _generatedRanges: GenMapping['_generatedRanges']; + _ignoreList: GenMapping['_ignoreList']; +} + +/** + * Typescript doesn't allow friend access to private fields, so this just casts the map into a type + * with public access modifiers. + */ +function cast(map: unknown): PublicMap { + return map as any; +} + +/** + * A low-level API to associate a generated position with an original source position. Line and + * column here are 0-based, unlike `addMapping`. + */ +export function addSegment( + map: GenMapping, + genLine: number, + genColumn: number, + source?: null, + sourceLine?: null, + sourceColumn?: null, + name?: null, + content?: null, +): void; +export function addSegment( + map: GenMapping, + genLine: number, + genColumn: number, + source: string, + sourceLine: number, + sourceColumn: number, + name?: null, + content?: string | null, +): void; +export function addSegment( + map: GenMapping, + genLine: number, + genColumn: number, + source: string, + sourceLine: number, + sourceColumn: number, + name: string, + content?: string | null, +): void; +export function addSegment( + map: GenMapping, + genLine: number, + genColumn: number, + source?: string | null, + sourceLine?: number | null, + sourceColumn?: number | null, + name?: string | null, + content?: string | null, +): void { + return addSegmentInternal( + false, + map, + genLine, + genColumn, + source, + sourceLine, + sourceColumn, + name, + content, + ); +} + +/** + * A high-level API to associate a generated position with an original source position. Line is + * 1-based, but column is 0-based, due to legacy behavior in `source-map` library. + */ +export function addMapping( + map: GenMapping, + mapping: { + generated: Pos; + source?: null; + original?: null; + name?: null; + content?: null; + }, +): void; +export function addMapping( + map: GenMapping, + mapping: { + generated: Pos; + source: string; + original: Pos; + name?: null; + content?: string | null; + }, +): void; +export function addMapping( + map: GenMapping, + mapping: { + generated: Pos; + source: string; + original: Pos; + name: string; + content?: string | null; + }, +): void; +export function addMapping( + map: GenMapping, + mapping: { + generated: Pos; + source?: string | null; + original?: Pos | null; + name?: string | null; + content?: string | null; + }, +): void { + return addMappingInternal(false, map, mapping as Parameters[2]); +} + +/** + * Same as `addSegment`, but will only add the segment if it generates useful information in the + * resulting map. This only works correctly if segments are added **in order**, meaning you should + * not add a segment with a lower generated line/column than one that came before. + */ +export const maybeAddSegment: typeof addSegment = ( + map, + genLine, + genColumn, + source, + sourceLine, + sourceColumn, + name, + content, +) => { + return addSegmentInternal( + true, + map, + genLine, + genColumn, + source, + sourceLine, + sourceColumn, + name, + content, + ); +}; + +/** + * Same as `addMapping`, but will only add the mapping if it generates useful information in the + * resulting map. This only works correctly if mappings are added **in order**, meaning you should + * not add a mapping with a lower generated line/column than one that came before. + */ +export const maybeAddMapping: typeof addMapping = (map, mapping) => { + return addMappingInternal(true, map, mapping as Parameters[2]); +}; + +/** + * Adds/removes the content of the source file to the source map. + */ +export function setSourceContent(map: GenMapping, source: string, content: string | null): void { + const { + _sources: sources, + _sourcesContent: sourcesContent, + // _originalScopes: originalScopes, + } = cast(map); + const index = put(sources, source); + sourcesContent[index] = content; + // if (index === originalScopes.length) originalScopes[index] = []; +} + +export function setIgnore(map: GenMapping, source: string, ignore = true) { + const { + _sources: sources, + _sourcesContent: sourcesContent, + _ignoreList: ignoreList, + // _originalScopes: originalScopes, + } = cast(map); + const index = put(sources, source); + if (index === sourcesContent.length) sourcesContent[index] = null; + // if (index === originalScopes.length) originalScopes[index] = []; + if (ignore) put(ignoreList, index); + else remove(ignoreList, index); +} + +/** + * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects + * a sourcemap, or to JSON.stringify. + */ +export function toDecodedMap(map: GenMapping): DecodedSourceMap { + const { + _mappings: mappings, + _sources: sources, + _sourcesContent: sourcesContent, + _names: names, + _ignoreList: ignoreList, + // _originalScopes: originalScopes, + // _generatedRanges: generatedRanges, + } = cast(map); + removeEmptyFinalLines(mappings); + + return { + version: 3, + file: map.file || undefined, + names: names.array, + sourceRoot: map.sourceRoot || undefined, + sources: sources.array, + sourcesContent, + mappings, + // originalScopes, + // generatedRanges, + ignoreList: ignoreList.array, + }; +} + +/** + * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects + * a sourcemap, or to JSON.stringify. + */ +export function toEncodedMap(map: GenMapping): EncodedSourceMap { + const decoded = toDecodedMap(map); + return Object.assign({}, decoded, { + // originalScopes: decoded.originalScopes.map((os) => encodeOriginalScopes(os)), + // generatedRanges: encodeGeneratedRanges(decoded.generatedRanges as GeneratedRange[]), + mappings: encode(decoded.mappings as SourceMapSegment[][]), + }); +} + +/** + * Constructs a new GenMapping, using the already present mappings of the input. + */ +export function fromMap(input: SourceMapInput): GenMapping { + const map = new TraceMap(input); + const gen = new GenMapping({ file: map.file, sourceRoot: map.sourceRoot }); + + putAll(cast(gen)._names, map.names); + putAll(cast(gen)._sources, map.sources as string[]); + cast(gen)._sourcesContent = map.sourcesContent || map.sources.map(() => null); + cast(gen)._mappings = decodedMappings(map) as GenMapping['_mappings']; + // TODO: implement originalScopes/generatedRanges + if (map.ignoreList) putAll(cast(gen)._ignoreList, map.ignoreList); + + return gen; +} + +/** + * Returns an array of high-level mapping objects for every recorded segment, which could then be + * passed to the `source-map` library. + */ +export function allMappings(map: GenMapping): Mapping[] { + const out: Mapping[] = []; + const { _mappings: mappings, _sources: sources, _names: names } = cast(map); + + for (let i = 0; i < mappings.length; i++) { + const line = mappings[i]; + for (let j = 0; j < line.length; j++) { + const seg = line[j]; + + const generated = { line: i + 1, column: seg[COLUMN] }; + let source: string | undefined = undefined; + let original: Pos | undefined = undefined; + let name: string | undefined = undefined; + + if (seg.length !== 1) { + source = sources.array[seg[SOURCES_INDEX]]; + original = { line: seg[SOURCE_LINE] + 1, column: seg[SOURCE_COLUMN] }; + + if (seg.length === 5) name = names.array[seg[NAMES_INDEX]]; + } + + out.push({ generated, source, original, name } as Mapping); + } + } + + return out; +} + +// This split declaration is only so that terser can elminiate the static initialization block. +function addSegmentInternal( + skipable: boolean, + map: GenMapping, + genLine: number, + genColumn: number, + source: S, + sourceLine: S extends string ? number : null | undefined, + sourceColumn: S extends string ? number : null | undefined, + name: S extends string ? string | null | undefined : null | undefined, + content: S extends string ? string | null | undefined : null | undefined, +): void { + const { + _mappings: mappings, + _sources: sources, + _sourcesContent: sourcesContent, + _names: names, + // _originalScopes: originalScopes, + } = cast(map); + const line = getIndex(mappings, genLine); + const index = getColumnIndex(line, genColumn); + + if (!source) { + if (skipable && skipSourceless(line, index)) return; + return insert(line, index, [genColumn]); + } + + // Sigh, TypeScript can't figure out sourceLine and sourceColumn aren't nullish if source + // isn't nullish. + assert(sourceLine); + assert(sourceColumn); + + const sourcesIndex = put(sources, source); + const namesIndex = name ? put(names, name) : NO_NAME; + if (sourcesIndex === sourcesContent.length) sourcesContent[sourcesIndex] = content ?? null; + // if (sourcesIndex === originalScopes.length) originalScopes[sourcesIndex] = []; + + if (skipable && skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex)) { + return; + } + + return insert( + line, + index, + name + ? [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex] + : [genColumn, sourcesIndex, sourceLine, sourceColumn], + ); +} + +function assert(_val: unknown): asserts _val is T { + // noop. +} + +function getIndex(arr: T[][], index: number): T[] { + for (let i = arr.length; i <= index; i++) { + arr[i] = []; + } + return arr[index]; +} + +function getColumnIndex(line: SourceMapSegment[], genColumn: number): number { + let index = line.length; + for (let i = index - 1; i >= 0; index = i--) { + const current = line[i]; + if (genColumn >= current[COLUMN]) break; + } + return index; +} + +function insert(array: T[], index: number, value: T) { + for (let i = array.length; i > index; i--) { + array[i] = array[i - 1]; + } + array[index] = value; +} + +function removeEmptyFinalLines(mappings: SourceMapSegment[][]) { + const { length } = mappings; + let len = length; + for (let i = len - 1; i >= 0; len = i, i--) { + if (mappings[i].length > 0) break; + } + if (len < length) mappings.length = len; +} + +function putAll(setarr: SetArray, array: T[]) { + for (let i = 0; i < array.length; i++) put(setarr, array[i]); +} + +function skipSourceless(line: SourceMapSegment[], index: number): boolean { + // The start of a line is already sourceless, so adding a sourceless segment to the beginning + // doesn't generate any useful information. + if (index === 0) return true; + + const prev = line[index - 1]; + // If the previous segment is also sourceless, then adding another sourceless segment doesn't + // genrate any new information. Else, this segment will end the source/named segment and point to + // a sourceless position, which is useful. + return prev.length === 1; +} + +function skipSource( + line: SourceMapSegment[], + index: number, + sourcesIndex: number, + sourceLine: number, + sourceColumn: number, + namesIndex: number, +): boolean { + // A source/named segment at the start of a line gives position at that genColumn + if (index === 0) return false; + + const prev = line[index - 1]; + + // If the previous segment is sourceless, then we're transitioning to a source. + if (prev.length === 1) return false; + + // If the previous segment maps to the exact same source position, then this segment doesn't + // provide any new position information. + return ( + sourcesIndex === prev[SOURCES_INDEX] && + sourceLine === prev[SOURCE_LINE] && + sourceColumn === prev[SOURCE_COLUMN] && + namesIndex === (prev.length === 5 ? prev[NAMES_INDEX] : NO_NAME) + ); +} + +function addMappingInternal( + skipable: boolean, + map: GenMapping, + mapping: { + generated: Pos; + source: S; + original: S extends string ? Pos : null | undefined; + name: S extends string ? string | null | undefined : null | undefined; + content: S extends string ? string | null | undefined : null | undefined; + }, +) { + const { generated, source, original, name, content } = mapping; + if (!source) { + return addSegmentInternal( + skipable, + map, + generated.line - 1, + generated.column, + null, + null, + null, + null, + null, + ); + } + assert(original); + return addSegmentInternal( + skipable, + map, + generated.line - 1, + generated.column, + source as string, + original.line - 1, + original.column, + name, + content, + ); +} + +/* +export function addOriginalScope( + map: GenMapping, + data: { + start: Pos; + end: Pos; + source: string; + kind: string; + name?: string; + variables?: string[]; + }, +): OriginalScopeInfo { + const { start, end, source, kind, name, variables } = data; + const { + _sources: sources, + _sourcesContent: sourcesContent, + _originalScopes: originalScopes, + _names: names, + } = cast(map); + const index = put(sources, source); + if (index === sourcesContent.length) sourcesContent[index] = null; + if (index === originalScopes.length) originalScopes[index] = []; + + const kindIndex = put(names, kind); + const scope: OriginalScope = name + ? [start.line - 1, start.column, end.line - 1, end.column, kindIndex, put(names, name)] + : [start.line - 1, start.column, end.line - 1, end.column, kindIndex]; + if (variables) { + scope.vars = variables.map((v) => put(names, v)); + } + const len = originalScopes[index].push(scope); + return [index, len - 1, variables]; +} +*/ + +// Generated Ranges +/* +export function addGeneratedRange( + map: GenMapping, + data: { + start: Pos; + isScope: boolean; + originalScope?: OriginalScopeInfo; + callsite?: OriginalPos; + }, +): GeneratedRangeInfo { + const { start, isScope, originalScope, callsite } = data; + const { + _originalScopes: originalScopes, + _sources: sources, + _sourcesContent: sourcesContent, + _generatedRanges: generatedRanges, + } = cast(map); + + const range: GeneratedRange = [ + start.line - 1, + start.column, + 0, + 0, + originalScope ? originalScope[0] : -1, + originalScope ? originalScope[1] : -1, + ]; + if (originalScope?.[2]) { + range.bindings = originalScope[2].map(() => [[-1]]); + } + if (callsite) { + const index = put(sources, callsite.source); + if (index === sourcesContent.length) sourcesContent[index] = null; + if (index === originalScopes.length) originalScopes[index] = []; + range.callsite = [index, callsite.line - 1, callsite.column]; + } + if (isScope) range.isScope = true; + generatedRanges.push(range); + + return [range, originalScope?.[2]]; +} + +export function setEndPosition(range: GeneratedRangeInfo, pos: Pos) { + range[0][2] = pos.line - 1; + range[0][3] = pos.column; +} + +export function addBinding( + map: GenMapping, + range: GeneratedRangeInfo, + variable: string, + expression: string | BindingExpressionRange, +) { + const { _names: names } = cast(map); + const bindings = (range[0].bindings ||= []); + const vars = range[1]; + + const index = vars!.indexOf(variable); + const binding = getIndex(bindings, index); + + if (typeof expression === 'string') binding[0] = [put(names, expression)]; + else { + const { start } = expression; + binding.push([put(names, expression.expression), start.line - 1, start.column]); + } +} +*/ diff --git a/node_modules/@jridgewell/gen-mapping/src/set-array.ts b/node_modules/@jridgewell/gen-mapping/src/set-array.ts new file mode 100644 index 00000000..a2a73a52 --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/src/set-array.ts @@ -0,0 +1,82 @@ +type Key = string | number | symbol; + +/** + * SetArray acts like a `Set` (allowing only one occurrence of a string `key`), but provides the + * index of the `key` in the backing array. + * + * This is designed to allow synchronizing a second array with the contents of the backing array, + * like how in a sourcemap `sourcesContent[i]` is the source content associated with `source[i]`, + * and there are never duplicates. + */ +export class SetArray { + declare private _indexes: Record; + declare array: readonly T[]; + + constructor() { + this._indexes = { __proto__: null } as any; + this.array = []; + } +} + +interface PublicSet { + array: T[]; + _indexes: SetArray['_indexes']; +} + +/** + * Typescript doesn't allow friend access to private fields, so this just casts the set into a type + * with public access modifiers. + */ +function cast(set: SetArray): PublicSet { + return set as any; +} + +/** + * Gets the index associated with `key` in the backing array, if it is already present. + */ +export function get(setarr: SetArray, key: T): number | undefined { + return cast(setarr)._indexes[key]; +} + +/** + * Puts `key` into the backing array, if it is not already present. Returns + * the index of the `key` in the backing array. + */ +export function put(setarr: SetArray, key: T): number { + // The key may or may not be present. If it is present, it's a number. + const index = get(setarr, key); + if (index !== undefined) return index; + + const { array, _indexes: indexes } = cast(setarr); + + const length = array.push(key); + return (indexes[key] = length - 1); +} + +/** + * Pops the last added item out of the SetArray. + */ +export function pop(setarr: SetArray): void { + const { array, _indexes: indexes } = cast(setarr); + if (array.length === 0) return; + + const last = array.pop()!; + indexes[last] = undefined; +} + +/** + * Removes the key, if it exists in the set. + */ +export function remove(setarr: SetArray, key: T): void { + const index = get(setarr, key); + if (index === undefined) return; + + const { array, _indexes: indexes } = cast(setarr); + for (let i = index + 1; i < array.length; i++) { + const k = array[i]; + array[i - 1] = k; + indexes[k]!--; + } + indexes[key] = undefined; + array.pop(); +} diff --git a/node_modules/@jridgewell/gen-mapping/src/sourcemap-segment.ts b/node_modules/@jridgewell/gen-mapping/src/sourcemap-segment.ts new file mode 100644 index 00000000..fb296dd3 --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/src/sourcemap-segment.ts @@ -0,0 +1,16 @@ +type GeneratedColumn = number; +type SourcesIndex = number; +type SourceLine = number; +type SourceColumn = number; +type NamesIndex = number; + +export type SourceMapSegment = + | [GeneratedColumn] + | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn] + | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn, NamesIndex]; + +export const COLUMN = 0; +export const SOURCES_INDEX = 1; +export const SOURCE_LINE = 2; +export const SOURCE_COLUMN = 3; +export const NAMES_INDEX = 4; diff --git a/node_modules/@jridgewell/gen-mapping/src/types.ts b/node_modules/@jridgewell/gen-mapping/src/types.ts new file mode 100644 index 00000000..b087f706 --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/src/types.ts @@ -0,0 +1,61 @@ +// import type { GeneratedRange, OriginalScope } from '@jridgewell/sourcemap-codec'; +import type { SourceMapSegment } from './sourcemap-segment'; + +export interface SourceMapV3 { + file?: string | null; + names: readonly string[]; + sourceRoot?: string; + sources: readonly (string | null)[]; + sourcesContent?: readonly (string | null)[]; + version: 3; + ignoreList?: readonly number[]; +} + +export interface EncodedSourceMap extends SourceMapV3 { + mappings: string; + // originalScopes: string[]; + // generatedRanges: string; +} + +export interface DecodedSourceMap extends SourceMapV3 { + mappings: readonly SourceMapSegment[][]; + // originalScopes: readonly OriginalScope[][]; + // generatedRanges: readonly GeneratedRange[]; +} + +export interface Pos { + line: number; // 1-based + column: number; // 0-based +} + +export interface OriginalPos extends Pos { + source: string; +} + +export interface BindingExpressionRange { + start: Pos; + expression: string; +} + +// export type OriginalScopeInfo = [number, number, string[] | undefined]; +// export type GeneratedRangeInfo = [GeneratedRange, string[] | undefined]; + +export type Mapping = + | { + generated: Pos; + source: undefined; + original: undefined; + name: undefined; + } + | { + generated: Pos; + source: string; + original: Pos; + name: string; + } + | { + generated: Pos; + source: string; + original: Pos; + name: undefined; + }; diff --git a/node_modules/@jridgewell/gen-mapping/types/gen-mapping.d.cts b/node_modules/@jridgewell/gen-mapping/types/gen-mapping.d.cts new file mode 100644 index 00000000..7618d857 --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/types/gen-mapping.d.cts @@ -0,0 +1,89 @@ +import type { SourceMapInput } from '@jridgewell/trace-mapping'; +import type { DecodedSourceMap, EncodedSourceMap, Pos, Mapping } from './types.cts'; +export type { DecodedSourceMap, EncodedSourceMap, Mapping }; +export type Options = { + file?: string | null; + sourceRoot?: string | null; +}; +/** + * Provides the state to generate a sourcemap. + */ +export declare class GenMapping { + private _names; + private _sources; + private _sourcesContent; + private _mappings; + private _ignoreList; + file: string | null | undefined; + sourceRoot: string | null | undefined; + constructor({ file, sourceRoot }?: Options); +} +/** + * A low-level API to associate a generated position with an original source position. Line and + * column here are 0-based, unlike `addMapping`. + */ +export declare function addSegment(map: GenMapping, genLine: number, genColumn: number, source?: null, sourceLine?: null, sourceColumn?: null, name?: null, content?: null): void; +export declare function addSegment(map: GenMapping, genLine: number, genColumn: number, source: string, sourceLine: number, sourceColumn: number, name?: null, content?: string | null): void; +export declare function addSegment(map: GenMapping, genLine: number, genColumn: number, source: string, sourceLine: number, sourceColumn: number, name: string, content?: string | null): void; +/** + * A high-level API to associate a generated position with an original source position. Line is + * 1-based, but column is 0-based, due to legacy behavior in `source-map` library. + */ +export declare function addMapping(map: GenMapping, mapping: { + generated: Pos; + source?: null; + original?: null; + name?: null; + content?: null; +}): void; +export declare function addMapping(map: GenMapping, mapping: { + generated: Pos; + source: string; + original: Pos; + name?: null; + content?: string | null; +}): void; +export declare function addMapping(map: GenMapping, mapping: { + generated: Pos; + source: string; + original: Pos; + name: string; + content?: string | null; +}): void; +/** + * Same as `addSegment`, but will only add the segment if it generates useful information in the + * resulting map. This only works correctly if segments are added **in order**, meaning you should + * not add a segment with a lower generated line/column than one that came before. + */ +export declare const maybeAddSegment: typeof addSegment; +/** + * Same as `addMapping`, but will only add the mapping if it generates useful information in the + * resulting map. This only works correctly if mappings are added **in order**, meaning you should + * not add a mapping with a lower generated line/column than one that came before. + */ +export declare const maybeAddMapping: typeof addMapping; +/** + * Adds/removes the content of the source file to the source map. + */ +export declare function setSourceContent(map: GenMapping, source: string, content: string | null): void; +export declare function setIgnore(map: GenMapping, source: string, ignore?: boolean): void; +/** + * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects + * a sourcemap, or to JSON.stringify. + */ +export declare function toDecodedMap(map: GenMapping): DecodedSourceMap; +/** + * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects + * a sourcemap, or to JSON.stringify. + */ +export declare function toEncodedMap(map: GenMapping): EncodedSourceMap; +/** + * Constructs a new GenMapping, using the already present mappings of the input. + */ +export declare function fromMap(input: SourceMapInput): GenMapping; +/** + * Returns an array of high-level mapping objects for every recorded segment, which could then be + * passed to the `source-map` library. + */ +export declare function allMappings(map: GenMapping): Mapping[]; +//# sourceMappingURL=gen-mapping.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/gen-mapping/types/gen-mapping.d.cts.map b/node_modules/@jridgewell/gen-mapping/types/gen-mapping.d.cts.map new file mode 100644 index 00000000..8a2b1835 --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/types/gen-mapping.d.cts.map @@ -0,0 +1 @@ +{"version":3,"file":"gen-mapping.d.ts","sourceRoot":"","sources":["../src/gen-mapping.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGhE,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,GAAG,EACH,OAAO,EAKR,MAAM,SAAS,CAAC;AAEjB,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC;AAE5D,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC;AAIF;;GAEG;AACH,qBAAa,UAAU;IACrB,QAAgB,MAAM,CAAmB;IACzC,QAAgB,QAAQ,CAAmB;IAC3C,QAAgB,eAAe,CAAoB;IACnD,QAAgB,SAAS,CAAuB;IAGhD,QAAgB,WAAW,CAAmB;IACtC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAChC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;gBAElC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAE,OAAY;CAW/C;AAoBD;;;GAGG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,UAAU,EACf,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,IAAI,EACb,UAAU,CAAC,EAAE,IAAI,EACjB,YAAY,CAAC,EAAE,IAAI,EACnB,IAAI,CAAC,EAAE,IAAI,EACX,OAAO,CAAC,EAAE,IAAI,GACb,IAAI,CAAC;AACR,wBAAgB,UAAU,CACxB,GAAG,EAAE,UAAU,EACf,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,IAAI,CAAC,EAAE,IAAI,EACX,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GACtB,IAAI,CAAC;AACR,wBAAgB,UAAU,CACxB,GAAG,EAAE,UAAU,EACf,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GACtB,IAAI,CAAC;AAwBR;;;GAGG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,UAAU,EACf,OAAO,EAAE;IACP,SAAS,EAAE,GAAG,CAAC;IACf,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB,GACA,IAAI,CAAC;AACR,wBAAgB,UAAU,CACxB,GAAG,EAAE,UAAU,EACf,OAAO,EAAE;IACP,SAAS,EAAE,GAAG,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,GAAG,CAAC;IACd,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,GACA,IAAI,CAAC;AACR,wBAAgB,UAAU,CACxB,GAAG,EAAE,UAAU,EACf,OAAO,EAAE;IACP,SAAS,EAAE,GAAG,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,GAAG,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,GACA,IAAI,CAAC;AAcR;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,OAAO,UAqBpC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,OAAO,UAEpC,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAS9F;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAAO,QAYvE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,gBAAgB,CAwB9D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,gBAAgB,CAO9D;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,cAAc,GAAG,UAAU,CAYzD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,EAAE,CA0BtD"} \ No newline at end of file diff --git a/node_modules/@jridgewell/gen-mapping/types/gen-mapping.d.mts b/node_modules/@jridgewell/gen-mapping/types/gen-mapping.d.mts new file mode 100644 index 00000000..bbc0d89c --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/types/gen-mapping.d.mts @@ -0,0 +1,89 @@ +import type { SourceMapInput } from '@jridgewell/trace-mapping'; +import type { DecodedSourceMap, EncodedSourceMap, Pos, Mapping } from './types.mts'; +export type { DecodedSourceMap, EncodedSourceMap, Mapping }; +export type Options = { + file?: string | null; + sourceRoot?: string | null; +}; +/** + * Provides the state to generate a sourcemap. + */ +export declare class GenMapping { + private _names; + private _sources; + private _sourcesContent; + private _mappings; + private _ignoreList; + file: string | null | undefined; + sourceRoot: string | null | undefined; + constructor({ file, sourceRoot }?: Options); +} +/** + * A low-level API to associate a generated position with an original source position. Line and + * column here are 0-based, unlike `addMapping`. + */ +export declare function addSegment(map: GenMapping, genLine: number, genColumn: number, source?: null, sourceLine?: null, sourceColumn?: null, name?: null, content?: null): void; +export declare function addSegment(map: GenMapping, genLine: number, genColumn: number, source: string, sourceLine: number, sourceColumn: number, name?: null, content?: string | null): void; +export declare function addSegment(map: GenMapping, genLine: number, genColumn: number, source: string, sourceLine: number, sourceColumn: number, name: string, content?: string | null): void; +/** + * A high-level API to associate a generated position with an original source position. Line is + * 1-based, but column is 0-based, due to legacy behavior in `source-map` library. + */ +export declare function addMapping(map: GenMapping, mapping: { + generated: Pos; + source?: null; + original?: null; + name?: null; + content?: null; +}): void; +export declare function addMapping(map: GenMapping, mapping: { + generated: Pos; + source: string; + original: Pos; + name?: null; + content?: string | null; +}): void; +export declare function addMapping(map: GenMapping, mapping: { + generated: Pos; + source: string; + original: Pos; + name: string; + content?: string | null; +}): void; +/** + * Same as `addSegment`, but will only add the segment if it generates useful information in the + * resulting map. This only works correctly if segments are added **in order**, meaning you should + * not add a segment with a lower generated line/column than one that came before. + */ +export declare const maybeAddSegment: typeof addSegment; +/** + * Same as `addMapping`, but will only add the mapping if it generates useful information in the + * resulting map. This only works correctly if mappings are added **in order**, meaning you should + * not add a mapping with a lower generated line/column than one that came before. + */ +export declare const maybeAddMapping: typeof addMapping; +/** + * Adds/removes the content of the source file to the source map. + */ +export declare function setSourceContent(map: GenMapping, source: string, content: string | null): void; +export declare function setIgnore(map: GenMapping, source: string, ignore?: boolean): void; +/** + * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects + * a sourcemap, or to JSON.stringify. + */ +export declare function toDecodedMap(map: GenMapping): DecodedSourceMap; +/** + * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects + * a sourcemap, or to JSON.stringify. + */ +export declare function toEncodedMap(map: GenMapping): EncodedSourceMap; +/** + * Constructs a new GenMapping, using the already present mappings of the input. + */ +export declare function fromMap(input: SourceMapInput): GenMapping; +/** + * Returns an array of high-level mapping objects for every recorded segment, which could then be + * passed to the `source-map` library. + */ +export declare function allMappings(map: GenMapping): Mapping[]; +//# sourceMappingURL=gen-mapping.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/gen-mapping/types/gen-mapping.d.mts.map b/node_modules/@jridgewell/gen-mapping/types/gen-mapping.d.mts.map new file mode 100644 index 00000000..8a2b1835 --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/types/gen-mapping.d.mts.map @@ -0,0 +1 @@ +{"version":3,"file":"gen-mapping.d.ts","sourceRoot":"","sources":["../src/gen-mapping.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGhE,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,GAAG,EACH,OAAO,EAKR,MAAM,SAAS,CAAC;AAEjB,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC;AAE5D,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC;AAIF;;GAEG;AACH,qBAAa,UAAU;IACrB,QAAgB,MAAM,CAAmB;IACzC,QAAgB,QAAQ,CAAmB;IAC3C,QAAgB,eAAe,CAAoB;IACnD,QAAgB,SAAS,CAAuB;IAGhD,QAAgB,WAAW,CAAmB;IACtC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAChC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;gBAElC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAE,OAAY;CAW/C;AAoBD;;;GAGG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,UAAU,EACf,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,IAAI,EACb,UAAU,CAAC,EAAE,IAAI,EACjB,YAAY,CAAC,EAAE,IAAI,EACnB,IAAI,CAAC,EAAE,IAAI,EACX,OAAO,CAAC,EAAE,IAAI,GACb,IAAI,CAAC;AACR,wBAAgB,UAAU,CACxB,GAAG,EAAE,UAAU,EACf,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,IAAI,CAAC,EAAE,IAAI,EACX,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GACtB,IAAI,CAAC;AACR,wBAAgB,UAAU,CACxB,GAAG,EAAE,UAAU,EACf,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GACtB,IAAI,CAAC;AAwBR;;;GAGG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,UAAU,EACf,OAAO,EAAE;IACP,SAAS,EAAE,GAAG,CAAC;IACf,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB,GACA,IAAI,CAAC;AACR,wBAAgB,UAAU,CACxB,GAAG,EAAE,UAAU,EACf,OAAO,EAAE;IACP,SAAS,EAAE,GAAG,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,GAAG,CAAC;IACd,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,GACA,IAAI,CAAC;AACR,wBAAgB,UAAU,CACxB,GAAG,EAAE,UAAU,EACf,OAAO,EAAE;IACP,SAAS,EAAE,GAAG,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,GAAG,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,GACA,IAAI,CAAC;AAcR;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,OAAO,UAqBpC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,OAAO,UAEpC,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAS9F;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAAO,QAYvE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,gBAAgB,CAwB9D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,gBAAgB,CAO9D;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,cAAc,GAAG,UAAU,CAYzD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,EAAE,CA0BtD"} \ No newline at end of file diff --git a/node_modules/@jridgewell/gen-mapping/types/set-array.d.cts b/node_modules/@jridgewell/gen-mapping/types/set-array.d.cts new file mode 100644 index 00000000..5d8cda35 --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/types/set-array.d.cts @@ -0,0 +1,33 @@ +type Key = string | number | symbol; +/** + * SetArray acts like a `Set` (allowing only one occurrence of a string `key`), but provides the + * index of the `key` in the backing array. + * + * This is designed to allow synchronizing a second array with the contents of the backing array, + * like how in a sourcemap `sourcesContent[i]` is the source content associated with `source[i]`, + * and there are never duplicates. + */ +export declare class SetArray { + private _indexes; + array: readonly T[]; + constructor(); +} +/** + * Gets the index associated with `key` in the backing array, if it is already present. + */ +export declare function get(setarr: SetArray, key: T): number | undefined; +/** + * Puts `key` into the backing array, if it is not already present. Returns + * the index of the `key` in the backing array. + */ +export declare function put(setarr: SetArray, key: T): number; +/** + * Pops the last added item out of the SetArray. + */ +export declare function pop(setarr: SetArray): void; +/** + * Removes the key, if it exists in the set. + */ +export declare function remove(setarr: SetArray, key: T): void; +export {}; +//# sourceMappingURL=set-array.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/gen-mapping/types/set-array.d.cts.map b/node_modules/@jridgewell/gen-mapping/types/set-array.d.cts.map new file mode 100644 index 00000000..c52b8bce --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/types/set-array.d.cts.map @@ -0,0 +1 @@ +{"version":3,"file":"set-array.d.ts","sourceRoot":"","sources":["../src/set-array.ts"],"names":[],"mappings":"AAAA,KAAK,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpC;;;;;;;GAOG;AACH,qBAAa,QAAQ,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG;IACvC,QAAgB,QAAQ,CAAgC;IAChD,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;;CAM7B;AAeD;;GAEG;AACH,wBAAgB,GAAG,CAAC,CAAC,SAAS,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,GAAG,SAAS,CAElF;AAED;;;GAGG;AACH,wBAAgB,GAAG,CAAC,CAAC,SAAS,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,CAStE;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,CAAC,SAAS,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAM5D;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,CAYvE"} \ No newline at end of file diff --git a/node_modules/@jridgewell/gen-mapping/types/set-array.d.mts b/node_modules/@jridgewell/gen-mapping/types/set-array.d.mts new file mode 100644 index 00000000..5d8cda35 --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/types/set-array.d.mts @@ -0,0 +1,33 @@ +type Key = string | number | symbol; +/** + * SetArray acts like a `Set` (allowing only one occurrence of a string `key`), but provides the + * index of the `key` in the backing array. + * + * This is designed to allow synchronizing a second array with the contents of the backing array, + * like how in a sourcemap `sourcesContent[i]` is the source content associated with `source[i]`, + * and there are never duplicates. + */ +export declare class SetArray { + private _indexes; + array: readonly T[]; + constructor(); +} +/** + * Gets the index associated with `key` in the backing array, if it is already present. + */ +export declare function get(setarr: SetArray, key: T): number | undefined; +/** + * Puts `key` into the backing array, if it is not already present. Returns + * the index of the `key` in the backing array. + */ +export declare function put(setarr: SetArray, key: T): number; +/** + * Pops the last added item out of the SetArray. + */ +export declare function pop(setarr: SetArray): void; +/** + * Removes the key, if it exists in the set. + */ +export declare function remove(setarr: SetArray, key: T): void; +export {}; +//# sourceMappingURL=set-array.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/gen-mapping/types/set-array.d.mts.map b/node_modules/@jridgewell/gen-mapping/types/set-array.d.mts.map new file mode 100644 index 00000000..c52b8bce --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/types/set-array.d.mts.map @@ -0,0 +1 @@ +{"version":3,"file":"set-array.d.ts","sourceRoot":"","sources":["../src/set-array.ts"],"names":[],"mappings":"AAAA,KAAK,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpC;;;;;;;GAOG;AACH,qBAAa,QAAQ,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG;IACvC,QAAgB,QAAQ,CAAgC;IAChD,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;;CAM7B;AAeD;;GAEG;AACH,wBAAgB,GAAG,CAAC,CAAC,SAAS,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,GAAG,SAAS,CAElF;AAED;;;GAGG;AACH,wBAAgB,GAAG,CAAC,CAAC,SAAS,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,CAStE;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,CAAC,SAAS,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAM5D;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,CAYvE"} \ No newline at end of file diff --git a/node_modules/@jridgewell/gen-mapping/types/sourcemap-segment.d.cts b/node_modules/@jridgewell/gen-mapping/types/sourcemap-segment.d.cts new file mode 100644 index 00000000..68862952 --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/types/sourcemap-segment.d.cts @@ -0,0 +1,13 @@ +type GeneratedColumn = number; +type SourcesIndex = number; +type SourceLine = number; +type SourceColumn = number; +type NamesIndex = number; +export type SourceMapSegment = [GeneratedColumn] | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn] | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn, NamesIndex]; +export declare const COLUMN = 0; +export declare const SOURCES_INDEX = 1; +export declare const SOURCE_LINE = 2; +export declare const SOURCE_COLUMN = 3; +export declare const NAMES_INDEX = 4; +export {}; +//# sourceMappingURL=sourcemap-segment.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/gen-mapping/types/sourcemap-segment.d.cts.map b/node_modules/@jridgewell/gen-mapping/types/sourcemap-segment.d.cts.map new file mode 100644 index 00000000..23cdc452 --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/types/sourcemap-segment.d.cts.map @@ -0,0 +1 @@ +{"version":3,"file":"sourcemap-segment.d.ts","sourceRoot":"","sources":["../src/sourcemap-segment.ts"],"names":[],"mappings":"AAAA,KAAK,eAAe,GAAG,MAAM,CAAC;AAC9B,KAAK,YAAY,GAAG,MAAM,CAAC;AAC3B,KAAK,UAAU,GAAG,MAAM,CAAC;AACzB,KAAK,YAAY,GAAG,MAAM,CAAC;AAC3B,KAAK,UAAU,GAAG,MAAM,CAAC;AAEzB,MAAM,MAAM,gBAAgB,GACxB,CAAC,eAAe,CAAC,GACjB,CAAC,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,CAAC,GACzD,CAAC,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;AAE1E,eAAO,MAAM,MAAM,IAAI,CAAC;AACxB,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,eAAO,MAAM,WAAW,IAAI,CAAC"} \ No newline at end of file diff --git a/node_modules/@jridgewell/gen-mapping/types/sourcemap-segment.d.mts b/node_modules/@jridgewell/gen-mapping/types/sourcemap-segment.d.mts new file mode 100644 index 00000000..68862952 --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/types/sourcemap-segment.d.mts @@ -0,0 +1,13 @@ +type GeneratedColumn = number; +type SourcesIndex = number; +type SourceLine = number; +type SourceColumn = number; +type NamesIndex = number; +export type SourceMapSegment = [GeneratedColumn] | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn] | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn, NamesIndex]; +export declare const COLUMN = 0; +export declare const SOURCES_INDEX = 1; +export declare const SOURCE_LINE = 2; +export declare const SOURCE_COLUMN = 3; +export declare const NAMES_INDEX = 4; +export {}; +//# sourceMappingURL=sourcemap-segment.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/gen-mapping/types/sourcemap-segment.d.mts.map b/node_modules/@jridgewell/gen-mapping/types/sourcemap-segment.d.mts.map new file mode 100644 index 00000000..23cdc452 --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/types/sourcemap-segment.d.mts.map @@ -0,0 +1 @@ +{"version":3,"file":"sourcemap-segment.d.ts","sourceRoot":"","sources":["../src/sourcemap-segment.ts"],"names":[],"mappings":"AAAA,KAAK,eAAe,GAAG,MAAM,CAAC;AAC9B,KAAK,YAAY,GAAG,MAAM,CAAC;AAC3B,KAAK,UAAU,GAAG,MAAM,CAAC;AACzB,KAAK,YAAY,GAAG,MAAM,CAAC;AAC3B,KAAK,UAAU,GAAG,MAAM,CAAC;AAEzB,MAAM,MAAM,gBAAgB,GACxB,CAAC,eAAe,CAAC,GACjB,CAAC,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,CAAC,GACzD,CAAC,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;AAE1E,eAAO,MAAM,MAAM,IAAI,CAAC;AACxB,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,eAAO,MAAM,WAAW,IAAI,CAAC"} \ No newline at end of file diff --git a/node_modules/@jridgewell/gen-mapping/types/types.d.cts b/node_modules/@jridgewell/gen-mapping/types/types.d.cts new file mode 100644 index 00000000..58da00a9 --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/types/types.d.cts @@ -0,0 +1,44 @@ +import type { SourceMapSegment } from './sourcemap-segment.cts'; +export interface SourceMapV3 { + file?: string | null; + names: readonly string[]; + sourceRoot?: string; + sources: readonly (string | null)[]; + sourcesContent?: readonly (string | null)[]; + version: 3; + ignoreList?: readonly number[]; +} +export interface EncodedSourceMap extends SourceMapV3 { + mappings: string; +} +export interface DecodedSourceMap extends SourceMapV3 { + mappings: readonly SourceMapSegment[][]; +} +export interface Pos { + line: number; + column: number; +} +export interface OriginalPos extends Pos { + source: string; +} +export interface BindingExpressionRange { + start: Pos; + expression: string; +} +export type Mapping = { + generated: Pos; + source: undefined; + original: undefined; + name: undefined; +} | { + generated: Pos; + source: string; + original: Pos; + name: string; +} | { + generated: Pos; + source: string; + original: Pos; + name: undefined; +}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/gen-mapping/types/types.d.cts.map b/node_modules/@jridgewell/gen-mapping/types/types.d.cts.map new file mode 100644 index 00000000..159e734d --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/types/types.d.cts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IACpC,cAAc,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC;IACX,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,QAAQ,EAAE,MAAM,CAAC;CAGlB;AAED,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,QAAQ,EAAE,SAAS,gBAAgB,EAAE,EAAE,CAAC;CAGzC;AAED,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAY,SAAQ,GAAG;IACtC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,GAAG,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;CACpB;AAKD,MAAM,MAAM,OAAO,GACf;IACE,SAAS,EAAE,GAAG,CAAC;IACf,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,SAAS,CAAC;IACpB,IAAI,EAAE,SAAS,CAAC;CACjB,GACD;IACE,SAAS,EAAE,GAAG,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,GAAG,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,GACD;IACE,SAAS,EAAE,GAAG,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,GAAG,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;CACjB,CAAC"} \ No newline at end of file diff --git a/node_modules/@jridgewell/gen-mapping/types/types.d.mts b/node_modules/@jridgewell/gen-mapping/types/types.d.mts new file mode 100644 index 00000000..e9837ebe --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/types/types.d.mts @@ -0,0 +1,44 @@ +import type { SourceMapSegment } from './sourcemap-segment.mts'; +export interface SourceMapV3 { + file?: string | null; + names: readonly string[]; + sourceRoot?: string; + sources: readonly (string | null)[]; + sourcesContent?: readonly (string | null)[]; + version: 3; + ignoreList?: readonly number[]; +} +export interface EncodedSourceMap extends SourceMapV3 { + mappings: string; +} +export interface DecodedSourceMap extends SourceMapV3 { + mappings: readonly SourceMapSegment[][]; +} +export interface Pos { + line: number; + column: number; +} +export interface OriginalPos extends Pos { + source: string; +} +export interface BindingExpressionRange { + start: Pos; + expression: string; +} +export type Mapping = { + generated: Pos; + source: undefined; + original: undefined; + name: undefined; +} | { + generated: Pos; + source: string; + original: Pos; + name: string; +} | { + generated: Pos; + source: string; + original: Pos; + name: undefined; +}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/gen-mapping/types/types.d.mts.map b/node_modules/@jridgewell/gen-mapping/types/types.d.mts.map new file mode 100644 index 00000000..159e734d --- /dev/null +++ b/node_modules/@jridgewell/gen-mapping/types/types.d.mts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IACpC,cAAc,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC;IACX,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,QAAQ,EAAE,MAAM,CAAC;CAGlB;AAED,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,QAAQ,EAAE,SAAS,gBAAgB,EAAE,EAAE,CAAC;CAGzC;AAED,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAY,SAAQ,GAAG;IACtC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,GAAG,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;CACpB;AAKD,MAAM,MAAM,OAAO,GACf;IACE,SAAS,EAAE,GAAG,CAAC;IACf,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,SAAS,CAAC;IACpB,IAAI,EAAE,SAAS,CAAC;CACjB,GACD;IACE,SAAS,EAAE,GAAG,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,GAAG,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,GACD;IACE,SAAS,EAAE,GAAG,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,GAAG,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;CACjB,CAAC"} \ No newline at end of file diff --git a/node_modules/@jridgewell/remapping/LICENSE b/node_modules/@jridgewell/remapping/LICENSE new file mode 100644 index 00000000..1f6ce94c --- /dev/null +++ b/node_modules/@jridgewell/remapping/LICENSE @@ -0,0 +1,19 @@ +Copyright 2024 Justin Ridgewell + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/@jridgewell/remapping/README.md b/node_modules/@jridgewell/remapping/README.md new file mode 100644 index 00000000..6d092d7e --- /dev/null +++ b/node_modules/@jridgewell/remapping/README.md @@ -0,0 +1,218 @@ +# @jridgewell/remapping + +> Remap sequential sourcemaps through transformations to point at the original source code + +Remapping allows you to take the sourcemaps generated through transforming your code and "remap" +them to the original source locations. Think "my minified code, transformed with babel and bundled +with webpack", all pointing to the correct location in your original source code. + +With remapping, none of your source code transformations need to be aware of the input's sourcemap, +they only need to generate an output sourcemap. This greatly simplifies building custom +transformations (think a find-and-replace). + +## Installation + +```sh +npm install @jridgewell/remapping +``` + +## Usage + +```typescript +function remapping( + map: SourceMap | SourceMap[], + loader: (file: string, ctx: LoaderContext) => (SourceMap | null | undefined), + options?: { excludeContent: boolean, decodedMappings: boolean } +): SourceMap; + +// LoaderContext gives the loader the importing sourcemap, tree depth, the ability to override the +// "source" location (where child sources are resolved relative to, or the location of original +// source), and the ability to override the "content" of an original source for inclusion in the +// output sourcemap. +type LoaderContext = { + readonly importer: string; + readonly depth: number; + source: string; + content: string | null | undefined; +} +``` + +`remapping` takes the final output sourcemap, and a `loader` function. For every source file pointer +in the sourcemap, the `loader` will be called with the resolved path. If the path itself represents +a transformed file (it has a sourcmap associated with it), then the `loader` should return that +sourcemap. If not, the path will be treated as an original, untransformed source code. + +```js +// Babel transformed "helloworld.js" into "transformed.js" +const transformedMap = JSON.stringify({ + file: 'transformed.js', + // 1st column of 2nd line of output file translates into the 1st source + // file, line 3, column 2 + mappings: ';CAEE', + sources: ['helloworld.js'], + version: 3, +}); + +// Uglify minified "transformed.js" into "transformed.min.js" +const minifiedTransformedMap = JSON.stringify({ + file: 'transformed.min.js', + // 0th column of 1st line of output file translates into the 1st source + // file, line 2, column 1. + mappings: 'AACC', + names: [], + sources: ['transformed.js'], + version: 3, +}); + +const remapped = remapping( + minifiedTransformedMap, + (file, ctx) => { + + // The "transformed.js" file is an transformed file. + if (file === 'transformed.js') { + // The root importer is empty. + console.assert(ctx.importer === ''); + // The depth in the sourcemap tree we're currently loading. + // The root `minifiedTransformedMap` is depth 0, and its source children are depth 1, etc. + console.assert(ctx.depth === 1); + + return transformedMap; + } + + // Loader will be called to load transformedMap's source file pointers as well. + console.assert(file === 'helloworld.js'); + // `transformed.js`'s sourcemap points into `helloworld.js`. + console.assert(ctx.importer === 'transformed.js'); + // This is a source child of `transformed`, which is a source child of `minifiedTransformedMap`. + console.assert(ctx.depth === 2); + return null; + } +); + +console.log(remapped); +// { +// file: 'transpiled.min.js', +// mappings: 'AAEE', +// sources: ['helloworld.js'], +// version: 3, +// }; +``` + +In this example, `loader` will be called twice: + +1. `"transformed.js"`, the first source file pointer in the `minifiedTransformedMap`. We return the + associated sourcemap for it (its a transformed file, after all) so that sourcemap locations can + be traced through it into the source files it represents. +2. `"helloworld.js"`, our original, unmodified source code. This file does not have a sourcemap, so + we return `null`. + +The `remapped` sourcemap now points from `transformed.min.js` into locations in `helloworld.js`. If +you were to read the `mappings`, it says "0th column of the first line output line points to the 1st +column of the 2nd line of the file `helloworld.js`". + +### Multiple transformations of a file + +As a convenience, if you have multiple single-source transformations of a file, you may pass an +array of sourcemap files in the order of most-recent transformation sourcemap first. Note that this +changes the `importer` and `depth` of each call to our loader. So our above example could have been +written as: + +```js +const remapped = remapping( + [minifiedTransformedMap, transformedMap], + () => null +); + +console.log(remapped); +// { +// file: 'transpiled.min.js', +// mappings: 'AAEE', +// sources: ['helloworld.js'], +// version: 3, +// }; +``` + +### Advanced control of the loading graph + +#### `source` + +The `source` property can overridden to any value to change the location of the current load. Eg, +for an original source file, it allows us to change the location to the original source regardless +of what the sourcemap source entry says. And for transformed files, it allows us to change the +relative resolving location for child sources of the loaded sourcemap. + +```js +const remapped = remapping( + minifiedTransformedMap, + (file, ctx) => { + + if (file === 'transformed.js') { + // We pretend the transformed.js file actually exists in the 'src/' directory. When the nested + // source files are loaded, they will now be relative to `src/`. + ctx.source = 'src/transformed.js'; + return transformedMap; + } + + console.assert(file === 'src/helloworld.js'); + // We could futher change the source of this original file, eg, to be inside a nested directory + // itself. This will be reflected in the remapped sourcemap. + ctx.source = 'src/nested/transformed.js'; + return null; + } +); + +console.log(remapped); +// { +// …, +// sources: ['src/nested/helloworld.js'], +// }; +``` + + +#### `content` + +The `content` property can be overridden when we encounter an original source file. Eg, this allows +you to manually provide the source content of the original file regardless of whether the +`sourcesContent` field is present in the parent sourcemap. It can also be set to `null` to remove +the source content. + +```js +const remapped = remapping( + minifiedTransformedMap, + (file, ctx) => { + + if (file === 'transformed.js') { + // transformedMap does not include a `sourcesContent` field, so usually the remapped sourcemap + // would not include any `sourcesContent` values. + return transformedMap; + } + + console.assert(file === 'helloworld.js'); + // We can read the file to provide the source content. + ctx.content = fs.readFileSync(file, 'utf8'); + return null; + } +); + +console.log(remapped); +// { +// …, +// sourcesContent: [ +// 'console.log("Hello world!")', +// ], +// }; +``` + +### Options + +#### excludeContent + +By default, `excludeContent` is `false`. Passing `{ excludeContent: true }` will exclude the +`sourcesContent` field from the returned sourcemap. This is mainly useful when you want to reduce +the size out the sourcemap. + +#### decodedMappings + +By default, `decodedMappings` is `false`. Passing `{ decodedMappings: true }` will leave the +`mappings` field in a [decoded state](https://github.com/rich-harris/sourcemap-codec) instead of +encoding into a VLQ string. diff --git a/node_modules/@jridgewell/remapping/dist/remapping.mjs b/node_modules/@jridgewell/remapping/dist/remapping.mjs new file mode 100644 index 00000000..8b7009c0 --- /dev/null +++ b/node_modules/@jridgewell/remapping/dist/remapping.mjs @@ -0,0 +1,144 @@ +// src/build-source-map-tree.ts +import { TraceMap } from "@jridgewell/trace-mapping"; + +// src/source-map-tree.ts +import { GenMapping, maybeAddSegment, setIgnore, setSourceContent } from "@jridgewell/gen-mapping"; +import { traceSegment, decodedMappings } from "@jridgewell/trace-mapping"; +var SOURCELESS_MAPPING = /* @__PURE__ */ SegmentObject("", -1, -1, "", null, false); +var EMPTY_SOURCES = []; +function SegmentObject(source, line, column, name, content, ignore) { + return { source, line, column, name, content, ignore }; +} +function Source(map, sources, source, content, ignore) { + return { + map, + sources, + source, + content, + ignore + }; +} +function MapSource(map, sources) { + return Source(map, sources, "", null, false); +} +function OriginalSource(source, content, ignore) { + return Source(null, EMPTY_SOURCES, source, content, ignore); +} +function traceMappings(tree) { + const gen = new GenMapping({ file: tree.map.file }); + const { sources: rootSources, map } = tree; + const rootNames = map.names; + const rootMappings = decodedMappings(map); + for (let i = 0; i < rootMappings.length; i++) { + const segments = rootMappings[i]; + for (let j = 0; j < segments.length; j++) { + const segment = segments[j]; + const genCol = segment[0]; + let traced = SOURCELESS_MAPPING; + if (segment.length !== 1) { + const source2 = rootSources[segment[1]]; + traced = originalPositionFor( + source2, + segment[2], + segment[3], + segment.length === 5 ? rootNames[segment[4]] : "" + ); + if (traced == null) continue; + } + const { column, line, name, content, source, ignore } = traced; + maybeAddSegment(gen, i, genCol, source, line, column, name); + if (source && content != null) setSourceContent(gen, source, content); + if (ignore) setIgnore(gen, source, true); + } + } + return gen; +} +function originalPositionFor(source, line, column, name) { + if (!source.map) { + return SegmentObject(source.source, line, column, name, source.content, source.ignore); + } + const segment = traceSegment(source.map, line, column); + if (segment == null) return null; + if (segment.length === 1) return SOURCELESS_MAPPING; + return originalPositionFor( + source.sources[segment[1]], + segment[2], + segment[3], + segment.length === 5 ? source.map.names[segment[4]] : name + ); +} + +// src/build-source-map-tree.ts +function asArray(value) { + if (Array.isArray(value)) return value; + return [value]; +} +function buildSourceMapTree(input, loader) { + const maps = asArray(input).map((m) => new TraceMap(m, "")); + const map = maps.pop(); + for (let i = 0; i < maps.length; i++) { + if (maps[i].sources.length > 1) { + throw new Error( + `Transformation map ${i} must have exactly one source file. +Did you specify these with the most recent transformation maps first?` + ); + } + } + let tree = build(map, loader, "", 0); + for (let i = maps.length - 1; i >= 0; i--) { + tree = MapSource(maps[i], [tree]); + } + return tree; +} +function build(map, loader, importer, importerDepth) { + const { resolvedSources, sourcesContent, ignoreList } = map; + const depth = importerDepth + 1; + const children = resolvedSources.map((sourceFile, i) => { + const ctx = { + importer, + depth, + source: sourceFile || "", + content: void 0, + ignore: void 0 + }; + const sourceMap = loader(ctx.source, ctx); + const { source, content, ignore } = ctx; + if (sourceMap) return build(new TraceMap(sourceMap, source), loader, source, depth); + const sourceContent = content !== void 0 ? content : sourcesContent ? sourcesContent[i] : null; + const ignored = ignore !== void 0 ? ignore : ignoreList ? ignoreList.includes(i) : false; + return OriginalSource(source, sourceContent, ignored); + }); + return MapSource(map, children); +} + +// src/source-map.ts +import { toDecodedMap, toEncodedMap } from "@jridgewell/gen-mapping"; +var SourceMap = class { + constructor(map, options) { + const out = options.decodedMappings ? toDecodedMap(map) : toEncodedMap(map); + this.version = out.version; + this.file = out.file; + this.mappings = out.mappings; + this.names = out.names; + this.ignoreList = out.ignoreList; + this.sourceRoot = out.sourceRoot; + this.sources = out.sources; + if (!options.excludeContent) { + this.sourcesContent = out.sourcesContent; + } + } + toString() { + return JSON.stringify(this); + } +}; + +// src/remapping.ts +function remapping(input, loader, options) { + const opts = typeof options === "object" ? options : { excludeContent: !!options, decodedMappings: false }; + const tree = buildSourceMapTree(input, loader); + return new SourceMap(traceMappings(tree), opts); +} +export { + remapping as default +}; +//# sourceMappingURL=remapping.mjs.map diff --git a/node_modules/@jridgewell/remapping/dist/remapping.mjs.map b/node_modules/@jridgewell/remapping/dist/remapping.mjs.map new file mode 100644 index 00000000..66801e6d --- /dev/null +++ b/node_modules/@jridgewell/remapping/dist/remapping.mjs.map @@ -0,0 +1,6 @@ +{ + "version": 3, + "sources": ["../src/build-source-map-tree.ts", "../src/source-map-tree.ts", "../src/source-map.ts", "../src/remapping.ts"], + "mappings": ";AAAA,SAAS,gBAAgB;;;ACAzB,SAAS,YAAY,iBAAiB,WAAW,wBAAwB;AACzE,SAAS,cAAc,uBAAuB;AA+B9C,IAAM,qBAAqC,8BAAc,IAAI,IAAI,IAAI,IAAI,MAAM,KAAK;AACpF,IAAM,gBAA2B,CAAC;AAElC,SAAS,cACP,QACA,MACA,QACA,MACA,SACA,QACwB;AACxB,SAAO,EAAE,QAAQ,MAAM,QAAQ,MAAM,SAAS,OAAO;AACvD;AAgBA,SAAS,OACP,KACA,SACA,QACA,SACA,QACS;AACT,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAMO,SAAS,UAAU,KAAe,SAA+B;AACtE,SAAO,OAAO,KAAK,SAAS,IAAI,MAAM,KAAK;AAC7C;AAMO,SAAS,eACd,QACA,SACA,QACgB;AAChB,SAAO,OAAO,MAAM,eAAe,QAAQ,SAAS,MAAM;AAC5D;AAMO,SAAS,cAAc,MAA6B;AAGzD,QAAM,MAAM,IAAI,WAAW,EAAE,MAAM,KAAK,IAAI,KAAK,CAAC;AAClD,QAAM,EAAE,SAAS,aAAa,IAAI,IAAI;AACtC,QAAM,YAAY,IAAI;AACtB,QAAM,eAAe,gBAAgB,GAAG;AAExC,WAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK;AAC5C,UAAM,WAAW,aAAa,CAAC;AAE/B,aAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,YAAM,UAAU,SAAS,CAAC;AAC1B,YAAM,SAAS,QAAQ,CAAC;AACxB,UAAI,SAAwC;AAI5C,UAAI,QAAQ,WAAW,GAAG;AACxB,cAAMA,UAAS,YAAY,QAAQ,CAAC,CAAC;AACrC,iBAAS;AAAA,UACPA;AAAA,UACA,QAAQ,CAAC;AAAA,UACT,QAAQ,CAAC;AAAA,UACT,QAAQ,WAAW,IAAI,UAAU,QAAQ,CAAC,CAAC,IAAI;AAAA,QACjD;AAIA,YAAI,UAAU,KAAM;AAAA,MACtB;AAEA,YAAM,EAAE,QAAQ,MAAM,MAAM,SAAS,QAAQ,OAAO,IAAI;AAExD,sBAAgB,KAAK,GAAG,QAAQ,QAAQ,MAAM,QAAQ,IAAI;AAC1D,UAAI,UAAU,WAAW,KAAM,kBAAiB,KAAK,QAAQ,OAAO;AACpE,UAAI,OAAQ,WAAU,KAAK,QAAQ,IAAI;AAAA,IACzC;AAAA,EACF;AAEA,SAAO;AACT;AAMO,SAAS,oBACd,QACA,MACA,QACA,MAC+B;AAC/B,MAAI,CAAC,OAAO,KAAK;AACf,WAAO,cAAc,OAAO,QAAQ,MAAM,QAAQ,MAAM,OAAO,SAAS,OAAO,MAAM;AAAA,EACvF;AAEA,QAAM,UAAU,aAAa,OAAO,KAAK,MAAM,MAAM;AAGrD,MAAI,WAAW,KAAM,QAAO;AAG5B,MAAI,QAAQ,WAAW,EAAG,QAAO;AAEjC,SAAO;AAAA,IACL,OAAO,QAAQ,QAAQ,CAAC,CAAC;AAAA,IACzB,QAAQ,CAAC;AAAA,IACT,QAAQ,CAAC;AAAA,IACT,QAAQ,WAAW,IAAI,OAAO,IAAI,MAAM,QAAQ,CAAC,CAAC,IAAI;AAAA,EACxD;AACF;;;ADpKA,SAAS,QAAW,OAAqB;AACvC,MAAI,MAAM,QAAQ,KAAK,EAAG,QAAO;AACjC,SAAO,CAAC,KAAK;AACf;AAae,SAAR,mBACL,OACA,QACe;AACf,QAAM,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,MAAM,IAAI,SAAS,GAAG,EAAE,CAAC;AAC1D,QAAM,MAAM,KAAK,IAAI;AAErB,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,QAAI,KAAK,CAAC,EAAE,QAAQ,SAAS,GAAG;AAC9B,YAAM,IAAI;AAAA,QACR,sBAAsB,CAAC;AAAA;AAAA,MAEzB;AAAA,IACF;AAAA,EACF;AAEA,MAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC;AACnC,WAAS,IAAI,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK;AACzC,WAAO,UAAU,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AAAA,EAClC;AACA,SAAO;AACT;AAEA,SAAS,MACP,KACA,QACA,UACA,eACe;AACf,QAAM,EAAE,iBAAiB,gBAAgB,WAAW,IAAI;AAExD,QAAM,QAAQ,gBAAgB;AAC9B,QAAM,WAAW,gBAAgB,IAAI,CAAC,YAA2B,MAAuB;AAKtF,UAAM,MAAqB;AAAA,MACzB;AAAA,MACA;AAAA,MACA,QAAQ,cAAc;AAAA,MACtB,SAAS;AAAA,MACT,QAAQ;AAAA,IACV;AAIA,UAAM,YAAY,OAAO,IAAI,QAAQ,GAAG;AAExC,UAAM,EAAE,QAAQ,SAAS,OAAO,IAAI;AAGpC,QAAI,UAAW,QAAO,MAAM,IAAI,SAAS,WAAW,MAAM,GAAG,QAAQ,QAAQ,KAAK;AAMlF,UAAM,gBACJ,YAAY,SAAY,UAAU,iBAAiB,eAAe,CAAC,IAAI;AACzE,UAAM,UAAU,WAAW,SAAY,SAAS,aAAa,WAAW,SAAS,CAAC,IAAI;AACtF,WAAO,eAAe,QAAQ,eAAe,OAAO;AAAA,EACtD,CAAC;AAED,SAAO,UAAU,KAAK,QAAQ;AAChC;;;AExFA,SAAS,cAAc,oBAAoB;AAS3C,IAAqB,YAArB,MAA+B;AAAA,EAU7B,YAAY,KAAiB,SAAkB;AAC7C,UAAM,MAAM,QAAQ,kBAAkB,aAAa,GAAG,IAAI,aAAa,GAAG;AAC1E,SAAK,UAAU,IAAI;AACnB,SAAK,OAAO,IAAI;AAChB,SAAK,WAAW,IAAI;AACpB,SAAK,QAAQ,IAAI;AACjB,SAAK,aAAa,IAAI;AACtB,SAAK,aAAa,IAAI;AAEtB,SAAK,UAAU,IAAI;AACnB,QAAI,CAAC,QAAQ,gBAAgB;AAC3B,WAAK,iBAAiB,IAAI;AAAA,IAC5B;AAAA,EACF;AAAA,EAEA,WAAmB;AACjB,WAAO,KAAK,UAAU,IAAI;AAAA,EAC5B;AACF;;;ACLe,SAAR,UACL,OACA,QACA,SACW;AACX,QAAM,OACJ,OAAO,YAAY,WAAW,UAAU,EAAE,gBAAgB,CAAC,CAAC,SAAS,iBAAiB,MAAM;AAC9F,QAAM,OAAO,mBAAmB,OAAO,MAAM;AAC7C,SAAO,IAAI,UAAU,cAAc,IAAI,GAAG,IAAI;AAChD;", + "names": ["source"] +} diff --git a/node_modules/@jridgewell/remapping/dist/remapping.umd.js b/node_modules/@jridgewell/remapping/dist/remapping.umd.js new file mode 100644 index 00000000..077eb4d5 --- /dev/null +++ b/node_modules/@jridgewell/remapping/dist/remapping.umd.js @@ -0,0 +1,212 @@ +(function (global, factory) { + if (typeof exports === 'object' && typeof module !== 'undefined') { + factory(module, require('@jridgewell/gen-mapping'), require('@jridgewell/trace-mapping')); + module.exports = def(module); + } else if (typeof define === 'function' && define.amd) { + define(['module', '@jridgewell/gen-mapping', '@jridgewell/trace-mapping'], function(mod) { + factory.apply(this, arguments); + mod.exports = def(mod); + }); + } else { + const mod = { exports: {} }; + factory(mod, global.genMapping, global.traceMapping); + global = typeof globalThis !== 'undefined' ? globalThis : global || self; + global.remapping = def(mod); + } + function def(m) { return 'default' in m.exports ? m.exports.default : m.exports; } +})(this, (function (module, require_genMapping, require_traceMapping) { +"use strict"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// umd:@jridgewell/trace-mapping +var require_trace_mapping = __commonJS({ + "umd:@jridgewell/trace-mapping"(exports, module2) { + module2.exports = require_traceMapping; + } +}); + +// umd:@jridgewell/gen-mapping +var require_gen_mapping = __commonJS({ + "umd:@jridgewell/gen-mapping"(exports, module2) { + module2.exports = require_genMapping; + } +}); + +// src/remapping.ts +var remapping_exports = {}; +__export(remapping_exports, { + default: () => remapping +}); +module.exports = __toCommonJS(remapping_exports); + +// src/build-source-map-tree.ts +var import_trace_mapping2 = __toESM(require_trace_mapping()); + +// src/source-map-tree.ts +var import_gen_mapping = __toESM(require_gen_mapping()); +var import_trace_mapping = __toESM(require_trace_mapping()); +var SOURCELESS_MAPPING = /* @__PURE__ */ SegmentObject("", -1, -1, "", null, false); +var EMPTY_SOURCES = []; +function SegmentObject(source, line, column, name, content, ignore) { + return { source, line, column, name, content, ignore }; +} +function Source(map, sources, source, content, ignore) { + return { + map, + sources, + source, + content, + ignore + }; +} +function MapSource(map, sources) { + return Source(map, sources, "", null, false); +} +function OriginalSource(source, content, ignore) { + return Source(null, EMPTY_SOURCES, source, content, ignore); +} +function traceMappings(tree) { + const gen = new import_gen_mapping.GenMapping({ file: tree.map.file }); + const { sources: rootSources, map } = tree; + const rootNames = map.names; + const rootMappings = (0, import_trace_mapping.decodedMappings)(map); + for (let i = 0; i < rootMappings.length; i++) { + const segments = rootMappings[i]; + for (let j = 0; j < segments.length; j++) { + const segment = segments[j]; + const genCol = segment[0]; + let traced = SOURCELESS_MAPPING; + if (segment.length !== 1) { + const source2 = rootSources[segment[1]]; + traced = originalPositionFor( + source2, + segment[2], + segment[3], + segment.length === 5 ? rootNames[segment[4]] : "" + ); + if (traced == null) continue; + } + const { column, line, name, content, source, ignore } = traced; + (0, import_gen_mapping.maybeAddSegment)(gen, i, genCol, source, line, column, name); + if (source && content != null) (0, import_gen_mapping.setSourceContent)(gen, source, content); + if (ignore) (0, import_gen_mapping.setIgnore)(gen, source, true); + } + } + return gen; +} +function originalPositionFor(source, line, column, name) { + if (!source.map) { + return SegmentObject(source.source, line, column, name, source.content, source.ignore); + } + const segment = (0, import_trace_mapping.traceSegment)(source.map, line, column); + if (segment == null) return null; + if (segment.length === 1) return SOURCELESS_MAPPING; + return originalPositionFor( + source.sources[segment[1]], + segment[2], + segment[3], + segment.length === 5 ? source.map.names[segment[4]] : name + ); +} + +// src/build-source-map-tree.ts +function asArray(value) { + if (Array.isArray(value)) return value; + return [value]; +} +function buildSourceMapTree(input, loader) { + const maps = asArray(input).map((m) => new import_trace_mapping2.TraceMap(m, "")); + const map = maps.pop(); + for (let i = 0; i < maps.length; i++) { + if (maps[i].sources.length > 1) { + throw new Error( + `Transformation map ${i} must have exactly one source file. +Did you specify these with the most recent transformation maps first?` + ); + } + } + let tree = build(map, loader, "", 0); + for (let i = maps.length - 1; i >= 0; i--) { + tree = MapSource(maps[i], [tree]); + } + return tree; +} +function build(map, loader, importer, importerDepth) { + const { resolvedSources, sourcesContent, ignoreList } = map; + const depth = importerDepth + 1; + const children = resolvedSources.map((sourceFile, i) => { + const ctx = { + importer, + depth, + source: sourceFile || "", + content: void 0, + ignore: void 0 + }; + const sourceMap = loader(ctx.source, ctx); + const { source, content, ignore } = ctx; + if (sourceMap) return build(new import_trace_mapping2.TraceMap(sourceMap, source), loader, source, depth); + const sourceContent = content !== void 0 ? content : sourcesContent ? sourcesContent[i] : null; + const ignored = ignore !== void 0 ? ignore : ignoreList ? ignoreList.includes(i) : false; + return OriginalSource(source, sourceContent, ignored); + }); + return MapSource(map, children); +} + +// src/source-map.ts +var import_gen_mapping2 = __toESM(require_gen_mapping()); +var SourceMap = class { + constructor(map, options) { + const out = options.decodedMappings ? (0, import_gen_mapping2.toDecodedMap)(map) : (0, import_gen_mapping2.toEncodedMap)(map); + this.version = out.version; + this.file = out.file; + this.mappings = out.mappings; + this.names = out.names; + this.ignoreList = out.ignoreList; + this.sourceRoot = out.sourceRoot; + this.sources = out.sources; + if (!options.excludeContent) { + this.sourcesContent = out.sourcesContent; + } + } + toString() { + return JSON.stringify(this); + } +}; + +// src/remapping.ts +function remapping(input, loader, options) { + const opts = typeof options === "object" ? options : { excludeContent: !!options, decodedMappings: false }; + const tree = buildSourceMapTree(input, loader); + return new SourceMap(traceMappings(tree), opts); +} +})); +//# sourceMappingURL=remapping.umd.js.map diff --git a/node_modules/@jridgewell/remapping/dist/remapping.umd.js.map b/node_modules/@jridgewell/remapping/dist/remapping.umd.js.map new file mode 100644 index 00000000..d5e07864 --- /dev/null +++ b/node_modules/@jridgewell/remapping/dist/remapping.umd.js.map @@ -0,0 +1,6 @@ +{ + "version": 3, + "sources": ["umd:@jridgewell/trace-mapping", "umd:@jridgewell/gen-mapping", "../src/remapping.ts", "../src/build-source-map-tree.ts", "../src/source-map-tree.ts", "../src/source-map.ts"], + "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,2CAAAA,SAAA;AAAA,IAAAA,QAAO,UAAU;AAAA;AAAA;;;ACAjB;AAAA,yCAAAC,SAAA;AAAA,IAAAA,QAAO,UAAU;AAAA;AAAA;;;ACAjB;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAAC,wBAAyB;;;ACAzB,yBAAyE;AACzE,2BAA8C;AA+B9C,IAAM,qBAAqC,8BAAc,IAAI,IAAI,IAAI,IAAI,MAAM,KAAK;AACpF,IAAM,gBAA2B,CAAC;AAElC,SAAS,cACP,QACA,MACA,QACA,MACA,SACA,QACwB;AACxB,SAAO,EAAE,QAAQ,MAAM,QAAQ,MAAM,SAAS,OAAO;AACvD;AAgBA,SAAS,OACP,KACA,SACA,QACA,SACA,QACS;AACT,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAMO,SAAS,UAAU,KAAe,SAA+B;AACtE,SAAO,OAAO,KAAK,SAAS,IAAI,MAAM,KAAK;AAC7C;AAMO,SAAS,eACd,QACA,SACA,QACgB;AAChB,SAAO,OAAO,MAAM,eAAe,QAAQ,SAAS,MAAM;AAC5D;AAMO,SAAS,cAAc,MAA6B;AAGzD,QAAM,MAAM,IAAI,8BAAW,EAAE,MAAM,KAAK,IAAI,KAAK,CAAC;AAClD,QAAM,EAAE,SAAS,aAAa,IAAI,IAAI;AACtC,QAAM,YAAY,IAAI;AACtB,QAAM,mBAAe,sCAAgB,GAAG;AAExC,WAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK;AAC5C,UAAM,WAAW,aAAa,CAAC;AAE/B,aAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,YAAM,UAAU,SAAS,CAAC;AAC1B,YAAM,SAAS,QAAQ,CAAC;AACxB,UAAI,SAAwC;AAI5C,UAAI,QAAQ,WAAW,GAAG;AACxB,cAAMC,UAAS,YAAY,QAAQ,CAAC,CAAC;AACrC,iBAAS;AAAA,UACPA;AAAA,UACA,QAAQ,CAAC;AAAA,UACT,QAAQ,CAAC;AAAA,UACT,QAAQ,WAAW,IAAI,UAAU,QAAQ,CAAC,CAAC,IAAI;AAAA,QACjD;AAIA,YAAI,UAAU,KAAM;AAAA,MACtB;AAEA,YAAM,EAAE,QAAQ,MAAM,MAAM,SAAS,QAAQ,OAAO,IAAI;AAExD,8CAAgB,KAAK,GAAG,QAAQ,QAAQ,MAAM,QAAQ,IAAI;AAC1D,UAAI,UAAU,WAAW,KAAM,0CAAiB,KAAK,QAAQ,OAAO;AACpE,UAAI,OAAQ,mCAAU,KAAK,QAAQ,IAAI;AAAA,IACzC;AAAA,EACF;AAEA,SAAO;AACT;AAMO,SAAS,oBACd,QACA,MACA,QACA,MAC+B;AAC/B,MAAI,CAAC,OAAO,KAAK;AACf,WAAO,cAAc,OAAO,QAAQ,MAAM,QAAQ,MAAM,OAAO,SAAS,OAAO,MAAM;AAAA,EACvF;AAEA,QAAM,cAAU,mCAAa,OAAO,KAAK,MAAM,MAAM;AAGrD,MAAI,WAAW,KAAM,QAAO;AAG5B,MAAI,QAAQ,WAAW,EAAG,QAAO;AAEjC,SAAO;AAAA,IACL,OAAO,QAAQ,QAAQ,CAAC,CAAC;AAAA,IACzB,QAAQ,CAAC;AAAA,IACT,QAAQ,CAAC;AAAA,IACT,QAAQ,WAAW,IAAI,OAAO,IAAI,MAAM,QAAQ,CAAC,CAAC,IAAI;AAAA,EACxD;AACF;;;ADpKA,SAAS,QAAW,OAAqB;AACvC,MAAI,MAAM,QAAQ,KAAK,EAAG,QAAO;AACjC,SAAO,CAAC,KAAK;AACf;AAae,SAAR,mBACL,OACA,QACe;AACf,QAAM,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,MAAM,IAAI,+BAAS,GAAG,EAAE,CAAC;AAC1D,QAAM,MAAM,KAAK,IAAI;AAErB,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,QAAI,KAAK,CAAC,EAAE,QAAQ,SAAS,GAAG;AAC9B,YAAM,IAAI;AAAA,QACR,sBAAsB,CAAC;AAAA;AAAA,MAEzB;AAAA,IACF;AAAA,EACF;AAEA,MAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC;AACnC,WAAS,IAAI,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK;AACzC,WAAO,UAAU,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AAAA,EAClC;AACA,SAAO;AACT;AAEA,SAAS,MACP,KACA,QACA,UACA,eACe;AACf,QAAM,EAAE,iBAAiB,gBAAgB,WAAW,IAAI;AAExD,QAAM,QAAQ,gBAAgB;AAC9B,QAAM,WAAW,gBAAgB,IAAI,CAAC,YAA2B,MAAuB;AAKtF,UAAM,MAAqB;AAAA,MACzB;AAAA,MACA;AAAA,MACA,QAAQ,cAAc;AAAA,MACtB,SAAS;AAAA,MACT,QAAQ;AAAA,IACV;AAIA,UAAM,YAAY,OAAO,IAAI,QAAQ,GAAG;AAExC,UAAM,EAAE,QAAQ,SAAS,OAAO,IAAI;AAGpC,QAAI,UAAW,QAAO,MAAM,IAAI,+BAAS,WAAW,MAAM,GAAG,QAAQ,QAAQ,KAAK;AAMlF,UAAM,gBACJ,YAAY,SAAY,UAAU,iBAAiB,eAAe,CAAC,IAAI;AACzE,UAAM,UAAU,WAAW,SAAY,SAAS,aAAa,WAAW,SAAS,CAAC,IAAI;AACtF,WAAO,eAAe,QAAQ,eAAe,OAAO;AAAA,EACtD,CAAC;AAED,SAAO,UAAU,KAAK,QAAQ;AAChC;;;AExFA,IAAAC,sBAA2C;AAS3C,IAAqB,YAArB,MAA+B;AAAA,EAU7B,YAAY,KAAiB,SAAkB;AAC7C,UAAM,MAAM,QAAQ,sBAAkB,kCAAa,GAAG,QAAI,kCAAa,GAAG;AAC1E,SAAK,UAAU,IAAI;AACnB,SAAK,OAAO,IAAI;AAChB,SAAK,WAAW,IAAI;AACpB,SAAK,QAAQ,IAAI;AACjB,SAAK,aAAa,IAAI;AACtB,SAAK,aAAa,IAAI;AAEtB,SAAK,UAAU,IAAI;AACnB,QAAI,CAAC,QAAQ,gBAAgB;AAC3B,WAAK,iBAAiB,IAAI;AAAA,IAC5B;AAAA,EACF;AAAA,EAEA,WAAmB;AACjB,WAAO,KAAK,UAAU,IAAI;AAAA,EAC5B;AACF;;;AHLe,SAAR,UACL,OACA,QACA,SACW;AACX,QAAM,OACJ,OAAO,YAAY,WAAW,UAAU,EAAE,gBAAgB,CAAC,CAAC,SAAS,iBAAiB,MAAM;AAC9F,QAAM,OAAO,mBAAmB,OAAO,MAAM;AAC7C,SAAO,IAAI,UAAU,cAAc,IAAI,GAAG,IAAI;AAChD;", + "names": ["module", "module", "import_trace_mapping", "source", "import_gen_mapping"] +} diff --git a/node_modules/@jridgewell/remapping/package.json b/node_modules/@jridgewell/remapping/package.json new file mode 100644 index 00000000..ed00441e --- /dev/null +++ b/node_modules/@jridgewell/remapping/package.json @@ -0,0 +1,71 @@ +{ + "name": "@jridgewell/remapping", + "version": "2.3.5", + "description": "Remap sequential sourcemaps through transformations to point at the original source code", + "keywords": [ + "source", + "map", + "remap" + ], + "main": "dist/remapping.umd.js", + "module": "dist/remapping.mjs", + "types": "types/remapping.d.cts", + "files": [ + "dist", + "src", + "types" + ], + "exports": { + ".": [ + { + "import": { + "types": "./types/remapping.d.mts", + "default": "./dist/remapping.mjs" + }, + "default": { + "types": "./types/remapping.d.cts", + "default": "./dist/remapping.umd.js" + } + }, + "./dist/remapping.umd.js" + ], + "./package.json": "./package.json" + }, + "scripts": { + "benchmark": "run-s build:code benchmark:*", + "benchmark:install": "cd benchmark && npm install", + "benchmark:only": "node --expose-gc benchmark/index.js", + "build": "run-s -n build:code build:types", + "build:code": "node ../../esbuild.mjs remapping.ts", + "build:types": "run-s build:types:force build:types:emit build:types:mts", + "build:types:force": "rimraf tsconfig.build.tsbuildinfo", + "build:types:emit": "tsc --project tsconfig.build.json", + "build:types:mts": "node ../../mts-types.mjs", + "clean": "run-s -n clean:code clean:types", + "clean:code": "tsc --build --clean tsconfig.build.json", + "clean:types": "rimraf dist types", + "test": "run-s -n test:types test:only test:format", + "test:format": "prettier --check '{src,test}/**/*.ts'", + "test:only": "mocha", + "test:types": "eslint '{src,test}/**/*.ts'", + "lint": "run-s -n lint:types lint:format", + "lint:format": "npm run test:format -- --write", + "lint:types": "npm run test:types -- --fix", + "prepublishOnly": "npm run-s -n build test" + }, + "homepage": "https://github.com/jridgewell/sourcemaps/tree/main/packages/remapping", + "repository": { + "type": "git", + "url": "git+https://github.com/jridgewell/sourcemaps.git", + "directory": "packages/remapping" + }, + "author": "Justin Ridgewell ", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "devDependencies": { + "source-map": "0.6.1" + } +} diff --git a/node_modules/@jridgewell/remapping/src/build-source-map-tree.ts b/node_modules/@jridgewell/remapping/src/build-source-map-tree.ts new file mode 100644 index 00000000..3e0262bd --- /dev/null +++ b/node_modules/@jridgewell/remapping/src/build-source-map-tree.ts @@ -0,0 +1,89 @@ +import { TraceMap } from '@jridgewell/trace-mapping'; + +import { OriginalSource, MapSource } from './source-map-tree'; + +import type { Sources, MapSource as MapSourceType } from './source-map-tree'; +import type { SourceMapInput, SourceMapLoader, LoaderContext } from './types'; + +function asArray(value: T | T[]): T[] { + if (Array.isArray(value)) return value; + return [value]; +} + +/** + * Recursively builds a tree structure out of sourcemap files, with each node + * being either an `OriginalSource` "leaf" or a `SourceMapTree` composed of + * `OriginalSource`s and `SourceMapTree`s. + * + * Every sourcemap is composed of a collection of source files and mappings + * into locations of those source files. When we generate a `SourceMapTree` for + * the sourcemap, we attempt to load each source file's own sourcemap. If it + * does not have an associated sourcemap, it is considered an original, + * unmodified source file. + */ +export default function buildSourceMapTree( + input: SourceMapInput | SourceMapInput[], + loader: SourceMapLoader, +): MapSourceType { + const maps = asArray(input).map((m) => new TraceMap(m, '')); + const map = maps.pop()!; + + for (let i = 0; i < maps.length; i++) { + if (maps[i].sources.length > 1) { + throw new Error( + `Transformation map ${i} must have exactly one source file.\n` + + 'Did you specify these with the most recent transformation maps first?', + ); + } + } + + let tree = build(map, loader, '', 0); + for (let i = maps.length - 1; i >= 0; i--) { + tree = MapSource(maps[i], [tree]); + } + return tree; +} + +function build( + map: TraceMap, + loader: SourceMapLoader, + importer: string, + importerDepth: number, +): MapSourceType { + const { resolvedSources, sourcesContent, ignoreList } = map; + + const depth = importerDepth + 1; + const children = resolvedSources.map((sourceFile: string | null, i: number): Sources => { + // The loading context gives the loader more information about why this file is being loaded + // (eg, from which importer). It also allows the loader to override the location of the loaded + // sourcemap/original source, or to override the content in the sourcesContent field if it's + // an unmodified source file. + const ctx: LoaderContext = { + importer, + depth, + source: sourceFile || '', + content: undefined, + ignore: undefined, + }; + + // Use the provided loader callback to retrieve the file's sourcemap. + // TODO: We should eventually support async loading of sourcemap files. + const sourceMap = loader(ctx.source, ctx); + + const { source, content, ignore } = ctx; + + // If there is a sourcemap, then we need to recurse into it to load its source files. + if (sourceMap) return build(new TraceMap(sourceMap, source), loader, source, depth); + + // Else, it's an unmodified source file. + // The contents of this unmodified source file can be overridden via the loader context, + // allowing it to be explicitly null or a string. If it remains undefined, we fall back to + // the importing sourcemap's `sourcesContent` field. + const sourceContent = + content !== undefined ? content : sourcesContent ? sourcesContent[i] : null; + const ignored = ignore !== undefined ? ignore : ignoreList ? ignoreList.includes(i) : false; + return OriginalSource(source, sourceContent, ignored); + }); + + return MapSource(map, children); +} diff --git a/node_modules/@jridgewell/remapping/src/remapping.ts b/node_modules/@jridgewell/remapping/src/remapping.ts new file mode 100644 index 00000000..c0f8b0de --- /dev/null +++ b/node_modules/@jridgewell/remapping/src/remapping.ts @@ -0,0 +1,42 @@ +import buildSourceMapTree from './build-source-map-tree'; +import { traceMappings } from './source-map-tree'; +import SourceMap from './source-map'; + +import type { SourceMapInput, SourceMapLoader, Options } from './types'; +export type { + SourceMapSegment, + EncodedSourceMap, + EncodedSourceMap as RawSourceMap, + DecodedSourceMap, + SourceMapInput, + SourceMapLoader, + LoaderContext, + Options, +} from './types'; +export type { SourceMap }; + +/** + * Traces through all the mappings in the root sourcemap, through the sources + * (and their sourcemaps), all the way back to the original source location. + * + * `loader` will be called every time we encounter a source file. If it returns + * a sourcemap, we will recurse into that sourcemap to continue the trace. If + * it returns a falsey value, that source file is treated as an original, + * unmodified source file. + * + * Pass `excludeContent` to exclude any self-containing source file content + * from the output sourcemap. + * + * Pass `decodedMappings` to receive a SourceMap with decoded (instead of + * VLQ encoded) mappings. + */ +export default function remapping( + input: SourceMapInput | SourceMapInput[], + loader: SourceMapLoader, + options?: boolean | Options, +): SourceMap { + const opts = + typeof options === 'object' ? options : { excludeContent: !!options, decodedMappings: false }; + const tree = buildSourceMapTree(input, loader); + return new SourceMap(traceMappings(tree), opts); +} diff --git a/node_modules/@jridgewell/remapping/src/source-map-tree.ts b/node_modules/@jridgewell/remapping/src/source-map-tree.ts new file mode 100644 index 00000000..935240f9 --- /dev/null +++ b/node_modules/@jridgewell/remapping/src/source-map-tree.ts @@ -0,0 +1,172 @@ +import { GenMapping, maybeAddSegment, setIgnore, setSourceContent } from '@jridgewell/gen-mapping'; +import { traceSegment, decodedMappings } from '@jridgewell/trace-mapping'; + +import type { TraceMap } from '@jridgewell/trace-mapping'; + +export type SourceMapSegmentObject = { + column: number; + line: number; + name: string; + source: string; + content: string | null; + ignore: boolean; +}; + +export type OriginalSource = { + map: null; + sources: Sources[]; + source: string; + content: string | null; + ignore: boolean; +}; + +export type MapSource = { + map: TraceMap; + sources: Sources[]; + source: string; + content: null; + ignore: false; +}; + +export type Sources = OriginalSource | MapSource; + +const SOURCELESS_MAPPING = /* #__PURE__ */ SegmentObject('', -1, -1, '', null, false); +const EMPTY_SOURCES: Sources[] = []; + +function SegmentObject( + source: string, + line: number, + column: number, + name: string, + content: string | null, + ignore: boolean, +): SourceMapSegmentObject { + return { source, line, column, name, content, ignore }; +} + +function Source( + map: TraceMap, + sources: Sources[], + source: '', + content: null, + ignore: false, +): MapSource; +function Source( + map: null, + sources: Sources[], + source: string, + content: string | null, + ignore: boolean, +): OriginalSource; +function Source( + map: TraceMap | null, + sources: Sources[], + source: string | '', + content: string | null, + ignore: boolean, +): Sources { + return { + map, + sources, + source, + content, + ignore, + } as any; +} + +/** + * MapSource represents a single sourcemap, with the ability to trace mappings into its child nodes + * (which may themselves be SourceMapTrees). + */ +export function MapSource(map: TraceMap, sources: Sources[]): MapSource { + return Source(map, sources, '', null, false); +} + +/** + * A "leaf" node in the sourcemap tree, representing an original, unmodified source file. Recursive + * segment tracing ends at the `OriginalSource`. + */ +export function OriginalSource( + source: string, + content: string | null, + ignore: boolean, +): OriginalSource { + return Source(null, EMPTY_SOURCES, source, content, ignore); +} + +/** + * traceMappings is only called on the root level SourceMapTree, and begins the process of + * resolving each mapping in terms of the original source files. + */ +export function traceMappings(tree: MapSource): GenMapping { + // TODO: Eventually support sourceRoot, which has to be removed because the sources are already + // fully resolved. We'll need to make sources relative to the sourceRoot before adding them. + const gen = new GenMapping({ file: tree.map.file }); + const { sources: rootSources, map } = tree; + const rootNames = map.names; + const rootMappings = decodedMappings(map); + + for (let i = 0; i < rootMappings.length; i++) { + const segments = rootMappings[i]; + + for (let j = 0; j < segments.length; j++) { + const segment = segments[j]; + const genCol = segment[0]; + let traced: SourceMapSegmentObject | null = SOURCELESS_MAPPING; + + // 1-length segments only move the current generated column, there's no source information + // to gather from it. + if (segment.length !== 1) { + const source = rootSources[segment[1]]; + traced = originalPositionFor( + source, + segment[2], + segment[3], + segment.length === 5 ? rootNames[segment[4]] : '', + ); + + // If the trace is invalid, then the trace ran into a sourcemap that doesn't contain a + // respective segment into an original source. + if (traced == null) continue; + } + + const { column, line, name, content, source, ignore } = traced; + + maybeAddSegment(gen, i, genCol, source, line, column, name); + if (source && content != null) setSourceContent(gen, source, content); + if (ignore) setIgnore(gen, source, true); + } + } + + return gen; +} + +/** + * originalPositionFor is only called on children SourceMapTrees. It recurses down into its own + * child SourceMapTrees, until we find the original source map. + */ +export function originalPositionFor( + source: Sources, + line: number, + column: number, + name: string, +): SourceMapSegmentObject | null { + if (!source.map) { + return SegmentObject(source.source, line, column, name, source.content, source.ignore); + } + + const segment = traceSegment(source.map, line, column); + + // If we couldn't find a segment, then this doesn't exist in the sourcemap. + if (segment == null) return null; + // 1-length segments only move the current generated column, there's no source information + // to gather from it. + if (segment.length === 1) return SOURCELESS_MAPPING; + + return originalPositionFor( + source.sources[segment[1]], + segment[2], + segment[3], + segment.length === 5 ? source.map.names[segment[4]] : name, + ); +} diff --git a/node_modules/@jridgewell/remapping/src/source-map.ts b/node_modules/@jridgewell/remapping/src/source-map.ts new file mode 100644 index 00000000..5156086f --- /dev/null +++ b/node_modules/@jridgewell/remapping/src/source-map.ts @@ -0,0 +1,38 @@ +import { toDecodedMap, toEncodedMap } from '@jridgewell/gen-mapping'; + +import type { GenMapping } from '@jridgewell/gen-mapping'; +import type { DecodedSourceMap, EncodedSourceMap, Options } from './types'; + +/** + * A SourceMap v3 compatible sourcemap, which only includes fields that were + * provided to it. + */ +export default class SourceMap { + declare file?: string | null; + declare mappings: EncodedSourceMap['mappings'] | DecodedSourceMap['mappings']; + declare sourceRoot?: string; + declare names: string[]; + declare sources: (string | null)[]; + declare sourcesContent?: (string | null)[]; + declare version: 3; + declare ignoreList: number[] | undefined; + + constructor(map: GenMapping, options: Options) { + const out = options.decodedMappings ? toDecodedMap(map) : toEncodedMap(map); + this.version = out.version; // SourceMap spec says this should be first. + this.file = out.file; + this.mappings = out.mappings as SourceMap['mappings']; + this.names = out.names as SourceMap['names']; + this.ignoreList = out.ignoreList as SourceMap['ignoreList']; + this.sourceRoot = out.sourceRoot; + + this.sources = out.sources as SourceMap['sources']; + if (!options.excludeContent) { + this.sourcesContent = out.sourcesContent as SourceMap['sourcesContent']; + } + } + + toString(): string { + return JSON.stringify(this); + } +} diff --git a/node_modules/@jridgewell/remapping/src/types.ts b/node_modules/@jridgewell/remapping/src/types.ts new file mode 100644 index 00000000..384961d2 --- /dev/null +++ b/node_modules/@jridgewell/remapping/src/types.ts @@ -0,0 +1,27 @@ +import type { SourceMapInput } from '@jridgewell/trace-mapping'; + +export type { + SourceMapSegment, + DecodedSourceMap, + EncodedSourceMap, +} from '@jridgewell/trace-mapping'; + +export type { SourceMapInput }; + +export type LoaderContext = { + readonly importer: string; + readonly depth: number; + source: string; + content: string | null | undefined; + ignore: boolean | undefined; +}; + +export type SourceMapLoader = ( + file: string, + ctx: LoaderContext, +) => SourceMapInput | null | undefined | void; + +export type Options = { + excludeContent?: boolean; + decodedMappings?: boolean; +}; diff --git a/node_modules/@jridgewell/remapping/types/build-source-map-tree.d.cts b/node_modules/@jridgewell/remapping/types/build-source-map-tree.d.cts new file mode 100644 index 00000000..e089aeaa --- /dev/null +++ b/node_modules/@jridgewell/remapping/types/build-source-map-tree.d.cts @@ -0,0 +1,15 @@ +import type { MapSource as MapSourceType } from './source-map-tree.cts'; +import type { SourceMapInput, SourceMapLoader } from './types.cts'; +/** + * Recursively builds a tree structure out of sourcemap files, with each node + * being either an `OriginalSource` "leaf" or a `SourceMapTree` composed of + * `OriginalSource`s and `SourceMapTree`s. + * + * Every sourcemap is composed of a collection of source files and mappings + * into locations of those source files. When we generate a `SourceMapTree` for + * the sourcemap, we attempt to load each source file's own sourcemap. If it + * does not have an associated sourcemap, it is considered an original, + * unmodified source file. + */ +export = function buildSourceMapTree(input: SourceMapInput | SourceMapInput[], loader: SourceMapLoader): MapSourceType; +//# sourceMappingURL=build-source-map-tree.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/remapping/types/build-source-map-tree.d.cts.map b/node_modules/@jridgewell/remapping/types/build-source-map-tree.d.cts.map new file mode 100644 index 00000000..38e4290d --- /dev/null +++ b/node_modules/@jridgewell/remapping/types/build-source-map-tree.d.cts.map @@ -0,0 +1 @@ +{"version":3,"file":"build-source-map-tree.d.ts","sourceRoot":"","sources":["../src/build-source-map-tree.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAW,SAAS,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAiB,MAAM,SAAS,CAAC;AAO9E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,OAAO,UAAU,kBAAkB,CACxC,KAAK,EAAE,cAAc,GAAG,cAAc,EAAE,EACxC,MAAM,EAAE,eAAe,GACtB,aAAa,CAkBf"} \ No newline at end of file diff --git a/node_modules/@jridgewell/remapping/types/build-source-map-tree.d.mts b/node_modules/@jridgewell/remapping/types/build-source-map-tree.d.mts new file mode 100644 index 00000000..746ac5f7 --- /dev/null +++ b/node_modules/@jridgewell/remapping/types/build-source-map-tree.d.mts @@ -0,0 +1,15 @@ +import type { MapSource as MapSourceType } from './source-map-tree.mts'; +import type { SourceMapInput, SourceMapLoader } from './types.mts'; +/** + * Recursively builds a tree structure out of sourcemap files, with each node + * being either an `OriginalSource` "leaf" or a `SourceMapTree` composed of + * `OriginalSource`s and `SourceMapTree`s. + * + * Every sourcemap is composed of a collection of source files and mappings + * into locations of those source files. When we generate a `SourceMapTree` for + * the sourcemap, we attempt to load each source file's own sourcemap. If it + * does not have an associated sourcemap, it is considered an original, + * unmodified source file. + */ +export default function buildSourceMapTree(input: SourceMapInput | SourceMapInput[], loader: SourceMapLoader): MapSourceType; +//# sourceMappingURL=build-source-map-tree.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/remapping/types/build-source-map-tree.d.mts.map b/node_modules/@jridgewell/remapping/types/build-source-map-tree.d.mts.map new file mode 100644 index 00000000..38e4290d --- /dev/null +++ b/node_modules/@jridgewell/remapping/types/build-source-map-tree.d.mts.map @@ -0,0 +1 @@ +{"version":3,"file":"build-source-map-tree.d.ts","sourceRoot":"","sources":["../src/build-source-map-tree.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAW,SAAS,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAiB,MAAM,SAAS,CAAC;AAO9E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,OAAO,UAAU,kBAAkB,CACxC,KAAK,EAAE,cAAc,GAAG,cAAc,EAAE,EACxC,MAAM,EAAE,eAAe,GACtB,aAAa,CAkBf"} \ No newline at end of file diff --git a/node_modules/@jridgewell/remapping/types/remapping.d.cts b/node_modules/@jridgewell/remapping/types/remapping.d.cts new file mode 100644 index 00000000..20227847 --- /dev/null +++ b/node_modules/@jridgewell/remapping/types/remapping.d.cts @@ -0,0 +1,21 @@ +import SourceMap from './source-map.cts'; +import type { SourceMapInput, SourceMapLoader, Options } from './types.cts'; +export type { SourceMapSegment, EncodedSourceMap, EncodedSourceMap as RawSourceMap, DecodedSourceMap, SourceMapInput, SourceMapLoader, LoaderContext, Options, } from './types.cts'; +export type { SourceMap }; +/** + * Traces through all the mappings in the root sourcemap, through the sources + * (and their sourcemaps), all the way back to the original source location. + * + * `loader` will be called every time we encounter a source file. If it returns + * a sourcemap, we will recurse into that sourcemap to continue the trace. If + * it returns a falsey value, that source file is treated as an original, + * unmodified source file. + * + * Pass `excludeContent` to exclude any self-containing source file content + * from the output sourcemap. + * + * Pass `decodedMappings` to receive a SourceMap with decoded (instead of + * VLQ encoded) mappings. + */ +export = function remapping(input: SourceMapInput | SourceMapInput[], loader: SourceMapLoader, options?: boolean | Options): SourceMap; +//# sourceMappingURL=remapping.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/remapping/types/remapping.d.cts.map b/node_modules/@jridgewell/remapping/types/remapping.d.cts.map new file mode 100644 index 00000000..9f2fd0ef --- /dev/null +++ b/node_modules/@jridgewell/remapping/types/remapping.d.cts.map @@ -0,0 +1 @@ +{"version":3,"file":"remapping.d.ts","sourceRoot":"","sources":["../src/remapping.ts"],"names":[],"mappings":"AAEA,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACxE,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,IAAI,YAAY,EAChC,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,aAAa,EACb,OAAO,GACR,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,SAAS,EAAE,CAAC;AAE1B;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAC/B,KAAK,EAAE,cAAc,GAAG,cAAc,EAAE,EACxC,MAAM,EAAE,eAAe,EACvB,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,GAC1B,SAAS,CAKX"} \ No newline at end of file diff --git a/node_modules/@jridgewell/remapping/types/remapping.d.mts b/node_modules/@jridgewell/remapping/types/remapping.d.mts new file mode 100644 index 00000000..95c40669 --- /dev/null +++ b/node_modules/@jridgewell/remapping/types/remapping.d.mts @@ -0,0 +1,21 @@ +import SourceMap from './source-map.mts'; +import type { SourceMapInput, SourceMapLoader, Options } from './types.mts'; +export type { SourceMapSegment, EncodedSourceMap, EncodedSourceMap as RawSourceMap, DecodedSourceMap, SourceMapInput, SourceMapLoader, LoaderContext, Options, } from './types.mts'; +export type { SourceMap }; +/** + * Traces through all the mappings in the root sourcemap, through the sources + * (and their sourcemaps), all the way back to the original source location. + * + * `loader` will be called every time we encounter a source file. If it returns + * a sourcemap, we will recurse into that sourcemap to continue the trace. If + * it returns a falsey value, that source file is treated as an original, + * unmodified source file. + * + * Pass `excludeContent` to exclude any self-containing source file content + * from the output sourcemap. + * + * Pass `decodedMappings` to receive a SourceMap with decoded (instead of + * VLQ encoded) mappings. + */ +export default function remapping(input: SourceMapInput | SourceMapInput[], loader: SourceMapLoader, options?: boolean | Options): SourceMap; +//# sourceMappingURL=remapping.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/remapping/types/remapping.d.mts.map b/node_modules/@jridgewell/remapping/types/remapping.d.mts.map new file mode 100644 index 00000000..9f2fd0ef --- /dev/null +++ b/node_modules/@jridgewell/remapping/types/remapping.d.mts.map @@ -0,0 +1 @@ +{"version":3,"file":"remapping.d.ts","sourceRoot":"","sources":["../src/remapping.ts"],"names":[],"mappings":"AAEA,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACxE,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,IAAI,YAAY,EAChC,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,aAAa,EACb,OAAO,GACR,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,SAAS,EAAE,CAAC;AAE1B;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAC/B,KAAK,EAAE,cAAc,GAAG,cAAc,EAAE,EACxC,MAAM,EAAE,eAAe,EACvB,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,GAC1B,SAAS,CAKX"} \ No newline at end of file diff --git a/node_modules/@jridgewell/remapping/types/source-map-tree.d.cts b/node_modules/@jridgewell/remapping/types/source-map-tree.d.cts new file mode 100644 index 00000000..440f65b8 --- /dev/null +++ b/node_modules/@jridgewell/remapping/types/source-map-tree.d.cts @@ -0,0 +1,46 @@ +import { GenMapping } from '@jridgewell/gen-mapping'; +import type { TraceMap } from '@jridgewell/trace-mapping'; +export type SourceMapSegmentObject = { + column: number; + line: number; + name: string; + source: string; + content: string | null; + ignore: boolean; +}; +export type OriginalSource = { + map: null; + sources: Sources[]; + source: string; + content: string | null; + ignore: boolean; +}; +export type MapSource = { + map: TraceMap; + sources: Sources[]; + source: string; + content: null; + ignore: false; +}; +export type Sources = OriginalSource | MapSource; +/** + * MapSource represents a single sourcemap, with the ability to trace mappings into its child nodes + * (which may themselves be SourceMapTrees). + */ +export declare function MapSource(map: TraceMap, sources: Sources[]): MapSource; +/** + * A "leaf" node in the sourcemap tree, representing an original, unmodified source file. Recursive + * segment tracing ends at the `OriginalSource`. + */ +export declare function OriginalSource(source: string, content: string | null, ignore: boolean): OriginalSource; +/** + * traceMappings is only called on the root level SourceMapTree, and begins the process of + * resolving each mapping in terms of the original source files. + */ +export declare function traceMappings(tree: MapSource): GenMapping; +/** + * originalPositionFor is only called on children SourceMapTrees. It recurses down into its own + * child SourceMapTrees, until we find the original source map. + */ +export declare function originalPositionFor(source: Sources, line: number, column: number, name: string): SourceMapSegmentObject | null; +//# sourceMappingURL=source-map-tree.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/remapping/types/source-map-tree.d.cts.map b/node_modules/@jridgewell/remapping/types/source-map-tree.d.cts.map new file mode 100644 index 00000000..e7cbfb95 --- /dev/null +++ b/node_modules/@jridgewell/remapping/types/source-map-tree.d.cts.map @@ -0,0 +1 @@ +{"version":3,"file":"source-map-tree.d.ts","sourceRoot":"","sources":["../src/source-map-tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAgD,MAAM,yBAAyB,CAAC;AAGnG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE1D,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,EAAE,IAAI,CAAC;IACV,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,GAAG,EAAE,QAAQ,CAAC;IACd,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE,KAAK,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG,cAAc,GAAG,SAAS,CAAC;AA8CjD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,SAAS,CAEtE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,MAAM,EAAE,OAAO,GACd,cAAc,CAEhB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU,CAyCzD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,sBAAsB,GAAG,IAAI,CAmB/B"} \ No newline at end of file diff --git a/node_modules/@jridgewell/remapping/types/source-map-tree.d.mts b/node_modules/@jridgewell/remapping/types/source-map-tree.d.mts new file mode 100644 index 00000000..440f65b8 --- /dev/null +++ b/node_modules/@jridgewell/remapping/types/source-map-tree.d.mts @@ -0,0 +1,46 @@ +import { GenMapping } from '@jridgewell/gen-mapping'; +import type { TraceMap } from '@jridgewell/trace-mapping'; +export type SourceMapSegmentObject = { + column: number; + line: number; + name: string; + source: string; + content: string | null; + ignore: boolean; +}; +export type OriginalSource = { + map: null; + sources: Sources[]; + source: string; + content: string | null; + ignore: boolean; +}; +export type MapSource = { + map: TraceMap; + sources: Sources[]; + source: string; + content: null; + ignore: false; +}; +export type Sources = OriginalSource | MapSource; +/** + * MapSource represents a single sourcemap, with the ability to trace mappings into its child nodes + * (which may themselves be SourceMapTrees). + */ +export declare function MapSource(map: TraceMap, sources: Sources[]): MapSource; +/** + * A "leaf" node in the sourcemap tree, representing an original, unmodified source file. Recursive + * segment tracing ends at the `OriginalSource`. + */ +export declare function OriginalSource(source: string, content: string | null, ignore: boolean): OriginalSource; +/** + * traceMappings is only called on the root level SourceMapTree, and begins the process of + * resolving each mapping in terms of the original source files. + */ +export declare function traceMappings(tree: MapSource): GenMapping; +/** + * originalPositionFor is only called on children SourceMapTrees. It recurses down into its own + * child SourceMapTrees, until we find the original source map. + */ +export declare function originalPositionFor(source: Sources, line: number, column: number, name: string): SourceMapSegmentObject | null; +//# sourceMappingURL=source-map-tree.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/remapping/types/source-map-tree.d.mts.map b/node_modules/@jridgewell/remapping/types/source-map-tree.d.mts.map new file mode 100644 index 00000000..e7cbfb95 --- /dev/null +++ b/node_modules/@jridgewell/remapping/types/source-map-tree.d.mts.map @@ -0,0 +1 @@ +{"version":3,"file":"source-map-tree.d.ts","sourceRoot":"","sources":["../src/source-map-tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAgD,MAAM,yBAAyB,CAAC;AAGnG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE1D,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,EAAE,IAAI,CAAC;IACV,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,GAAG,EAAE,QAAQ,CAAC;IACd,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE,KAAK,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG,cAAc,GAAG,SAAS,CAAC;AA8CjD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,SAAS,CAEtE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,MAAM,EAAE,OAAO,GACd,cAAc,CAEhB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU,CAyCzD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,sBAAsB,GAAG,IAAI,CAmB/B"} \ No newline at end of file diff --git a/node_modules/@jridgewell/remapping/types/source-map.d.cts b/node_modules/@jridgewell/remapping/types/source-map.d.cts new file mode 100644 index 00000000..fdb7eede --- /dev/null +++ b/node_modules/@jridgewell/remapping/types/source-map.d.cts @@ -0,0 +1,19 @@ +import type { GenMapping } from '@jridgewell/gen-mapping'; +import type { DecodedSourceMap, EncodedSourceMap, Options } from './types.cts'; +/** + * A SourceMap v3 compatible sourcemap, which only includes fields that were + * provided to it. + */ +export = class SourceMap { + file?: string | null; + mappings: EncodedSourceMap['mappings'] | DecodedSourceMap['mappings']; + sourceRoot?: string; + names: string[]; + sources: (string | null)[]; + sourcesContent?: (string | null)[]; + version: 3; + ignoreList: number[] | undefined; + constructor(map: GenMapping, options: Options); + toString(): string; +} +//# sourceMappingURL=source-map.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/remapping/types/source-map.d.cts.map b/node_modules/@jridgewell/remapping/types/source-map.d.cts.map new file mode 100644 index 00000000..593daf8e --- /dev/null +++ b/node_modules/@jridgewell/remapping/types/source-map.d.cts.map @@ -0,0 +1 @@ +{"version":3,"file":"source-map.d.ts","sourceRoot":"","sources":["../src/source-map.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAE3E;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,SAAS;IACpB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IAC3B,cAAc,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IACnC,OAAO,EAAE,CAAC,CAAC;IACX,UAAU,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;gBAE7B,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO;IAe7C,QAAQ,IAAI,MAAM;CAGnB"} \ No newline at end of file diff --git a/node_modules/@jridgewell/remapping/types/source-map.d.mts b/node_modules/@jridgewell/remapping/types/source-map.d.mts new file mode 100644 index 00000000..52ebba2f --- /dev/null +++ b/node_modules/@jridgewell/remapping/types/source-map.d.mts @@ -0,0 +1,19 @@ +import type { GenMapping } from '@jridgewell/gen-mapping'; +import type { DecodedSourceMap, EncodedSourceMap, Options } from './types.mts'; +/** + * A SourceMap v3 compatible sourcemap, which only includes fields that were + * provided to it. + */ +export default class SourceMap { + file?: string | null; + mappings: EncodedSourceMap['mappings'] | DecodedSourceMap['mappings']; + sourceRoot?: string; + names: string[]; + sources: (string | null)[]; + sourcesContent?: (string | null)[]; + version: 3; + ignoreList: number[] | undefined; + constructor(map: GenMapping, options: Options); + toString(): string; +} +//# sourceMappingURL=source-map.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/remapping/types/source-map.d.mts.map b/node_modules/@jridgewell/remapping/types/source-map.d.mts.map new file mode 100644 index 00000000..593daf8e --- /dev/null +++ b/node_modules/@jridgewell/remapping/types/source-map.d.mts.map @@ -0,0 +1 @@ +{"version":3,"file":"source-map.d.ts","sourceRoot":"","sources":["../src/source-map.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAE3E;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,SAAS;IACpB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IAC3B,cAAc,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IACnC,OAAO,EAAE,CAAC,CAAC;IACX,UAAU,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;gBAE7B,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO;IAe7C,QAAQ,IAAI,MAAM;CAGnB"} \ No newline at end of file diff --git a/node_modules/@jridgewell/remapping/types/types.d.cts b/node_modules/@jridgewell/remapping/types/types.d.cts new file mode 100644 index 00000000..eeb320f8 --- /dev/null +++ b/node_modules/@jridgewell/remapping/types/types.d.cts @@ -0,0 +1,16 @@ +import type { SourceMapInput } from '@jridgewell/trace-mapping'; +export type { SourceMapSegment, DecodedSourceMap, EncodedSourceMap, } from '@jridgewell/trace-mapping'; +export type { SourceMapInput }; +export type LoaderContext = { + readonly importer: string; + readonly depth: number; + source: string; + content: string | null | undefined; + ignore: boolean | undefined; +}; +export type SourceMapLoader = (file: string, ctx: LoaderContext) => SourceMapInput | null | undefined | void; +export type Options = { + excludeContent?: boolean; + decodedMappings?: boolean; +}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/remapping/types/types.d.cts.map b/node_modules/@jridgewell/remapping/types/types.d.cts.map new file mode 100644 index 00000000..4f8647e4 --- /dev/null +++ b/node_modules/@jridgewell/remapping/types/types.d.cts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACnC,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,CAC5B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,aAAa,KACf,cAAc,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;AAE9C,MAAM,MAAM,OAAO,GAAG;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC"} \ No newline at end of file diff --git a/node_modules/@jridgewell/remapping/types/types.d.mts b/node_modules/@jridgewell/remapping/types/types.d.mts new file mode 100644 index 00000000..eeb320f8 --- /dev/null +++ b/node_modules/@jridgewell/remapping/types/types.d.mts @@ -0,0 +1,16 @@ +import type { SourceMapInput } from '@jridgewell/trace-mapping'; +export type { SourceMapSegment, DecodedSourceMap, EncodedSourceMap, } from '@jridgewell/trace-mapping'; +export type { SourceMapInput }; +export type LoaderContext = { + readonly importer: string; + readonly depth: number; + source: string; + content: string | null | undefined; + ignore: boolean | undefined; +}; +export type SourceMapLoader = (file: string, ctx: LoaderContext) => SourceMapInput | null | undefined | void; +export type Options = { + excludeContent?: boolean; + decodedMappings?: boolean; +}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/remapping/types/types.d.mts.map b/node_modules/@jridgewell/remapping/types/types.d.mts.map new file mode 100644 index 00000000..4f8647e4 --- /dev/null +++ b/node_modules/@jridgewell/remapping/types/types.d.mts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACnC,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,CAC5B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,aAAa,KACf,cAAc,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;AAE9C,MAAM,MAAM,OAAO,GAAG;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC"} \ No newline at end of file diff --git a/node_modules/@jridgewell/resolve-uri/LICENSE b/node_modules/@jridgewell/resolve-uri/LICENSE new file mode 100644 index 00000000..0a81b2ad --- /dev/null +++ b/node_modules/@jridgewell/resolve-uri/LICENSE @@ -0,0 +1,19 @@ +Copyright 2019 Justin Ridgewell + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/node_modules/@jridgewell/resolve-uri/README.md b/node_modules/@jridgewell/resolve-uri/README.md new file mode 100644 index 00000000..2fe70df7 --- /dev/null +++ b/node_modules/@jridgewell/resolve-uri/README.md @@ -0,0 +1,40 @@ +# @jridgewell/resolve-uri + +> Resolve a URI relative to an optional base URI + +Resolve any combination of absolute URIs, protocol-realtive URIs, absolute paths, or relative paths. + +## Installation + +```sh +npm install @jridgewell/resolve-uri +``` + +## Usage + +```typescript +function resolve(input: string, base?: string): string; +``` + +```js +import resolve from '@jridgewell/resolve-uri'; + +resolve('foo', 'https://example.com'); // => 'https://example.com/foo' +``` + +| Input | Base | Resolution | Explanation | +|-----------------------|-------------------------|--------------------------------|--------------------------------------------------------------| +| `https://example.com` | _any_ | `https://example.com/` | Input is normalized only | +| `//example.com` | `https://base.com/` | `https://example.com/` | Input inherits the base's protocol | +| `//example.com` | _rest_ | `//example.com/` | Input is normalized only | +| `/example` | `https://base.com/` | `https://base.com/example` | Input inherits the base's origin | +| `/example` | `//base.com/` | `//base.com/example` | Input inherits the base's host and remains protocol relative | +| `/example` | _rest_ | `/example` | Input is normalized only | +| `example` | `https://base.com/dir/` | `https://base.com/dir/example` | Input is joined with the base | +| `example` | `https://base.com/file` | `https://base.com/example` | Input is joined with the base without its file | +| `example` | `//base.com/dir/` | `//base.com/dir/example` | Input is joined with the base's last directory | +| `example` | `//base.com/file` | `//base.com/example` | Input is joined with the base without its file | +| `example` | `/base/dir/` | `/base/dir/example` | Input is joined with the base's last directory | +| `example` | `/base/file` | `/base/example` | Input is joined with the base without its file | +| `example` | `base/dir/` | `base/dir/example` | Input is joined with the base's last directory | +| `example` | `base/file` | `base/example` | Input is joined with the base without its file | diff --git a/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs b/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs new file mode 100644 index 00000000..e958e881 --- /dev/null +++ b/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs @@ -0,0 +1,232 @@ +// Matches the scheme of a URL, eg "http://" +const schemeRegex = /^[\w+.-]+:\/\//; +/** + * Matches the parts of a URL: + * 1. Scheme, including ":", guaranteed. + * 2. User/password, including "@", optional. + * 3. Host, guaranteed. + * 4. Port, including ":", optional. + * 5. Path, including "/", optional. + * 6. Query, including "?", optional. + * 7. Hash, including "#", optional. + */ +const urlRegex = /^([\w+.-]+:)\/\/([^@/#?]*@)?([^:/#?]*)(:\d+)?(\/[^#?]*)?(\?[^#]*)?(#.*)?/; +/** + * File URLs are weird. They dont' need the regular `//` in the scheme, they may or may not start + * with a leading `/`, they can have a domain (but only if they don't start with a Windows drive). + * + * 1. Host, optional. + * 2. Path, which may include "/", guaranteed. + * 3. Query, including "?", optional. + * 4. Hash, including "#", optional. + */ +const fileRegex = /^file:(?:\/\/((?![a-z]:)[^/#?]*)?)?(\/?[^#?]*)(\?[^#]*)?(#.*)?/i; +function isAbsoluteUrl(input) { + return schemeRegex.test(input); +} +function isSchemeRelativeUrl(input) { + return input.startsWith('//'); +} +function isAbsolutePath(input) { + return input.startsWith('/'); +} +function isFileUrl(input) { + return input.startsWith('file:'); +} +function isRelative(input) { + return /^[.?#]/.test(input); +} +function parseAbsoluteUrl(input) { + const match = urlRegex.exec(input); + return makeUrl(match[1], match[2] || '', match[3], match[4] || '', match[5] || '/', match[6] || '', match[7] || ''); +} +function parseFileUrl(input) { + const match = fileRegex.exec(input); + const path = match[2]; + return makeUrl('file:', '', match[1] || '', '', isAbsolutePath(path) ? path : '/' + path, match[3] || '', match[4] || ''); +} +function makeUrl(scheme, user, host, port, path, query, hash) { + return { + scheme, + user, + host, + port, + path, + query, + hash, + type: 7 /* Absolute */, + }; +} +function parseUrl(input) { + if (isSchemeRelativeUrl(input)) { + const url = parseAbsoluteUrl('http:' + input); + url.scheme = ''; + url.type = 6 /* SchemeRelative */; + return url; + } + if (isAbsolutePath(input)) { + const url = parseAbsoluteUrl('http://foo.com' + input); + url.scheme = ''; + url.host = ''; + url.type = 5 /* AbsolutePath */; + return url; + } + if (isFileUrl(input)) + return parseFileUrl(input); + if (isAbsoluteUrl(input)) + return parseAbsoluteUrl(input); + const url = parseAbsoluteUrl('http://foo.com/' + input); + url.scheme = ''; + url.host = ''; + url.type = input + ? input.startsWith('?') + ? 3 /* Query */ + : input.startsWith('#') + ? 2 /* Hash */ + : 4 /* RelativePath */ + : 1 /* Empty */; + return url; +} +function stripPathFilename(path) { + // If a path ends with a parent directory "..", then it's a relative path with excess parent + // paths. It's not a file, so we can't strip it. + if (path.endsWith('/..')) + return path; + const index = path.lastIndexOf('/'); + return path.slice(0, index + 1); +} +function mergePaths(url, base) { + normalizePath(base, base.type); + // If the path is just a "/", then it was an empty path to begin with (remember, we're a relative + // path). + if (url.path === '/') { + url.path = base.path; + } + else { + // Resolution happens relative to the base path's directory, not the file. + url.path = stripPathFilename(base.path) + url.path; + } +} +/** + * The path can have empty directories "//", unneeded parents "foo/..", or current directory + * "foo/.". We need to normalize to a standard representation. + */ +function normalizePath(url, type) { + const rel = type <= 4 /* RelativePath */; + const pieces = url.path.split('/'); + // We need to preserve the first piece always, so that we output a leading slash. The item at + // pieces[0] is an empty string. + let pointer = 1; + // Positive is the number of real directories we've output, used for popping a parent directory. + // Eg, "foo/bar/.." will have a positive 2, and we can decrement to be left with just "foo". + let positive = 0; + // We need to keep a trailing slash if we encounter an empty directory (eg, splitting "foo/" will + // generate `["foo", ""]` pieces). And, if we pop a parent directory. But once we encounter a + // real directory, we won't need to append, unless the other conditions happen again. + let addTrailingSlash = false; + for (let i = 1; i < pieces.length; i++) { + const piece = pieces[i]; + // An empty directory, could be a trailing slash, or just a double "//" in the path. + if (!piece) { + addTrailingSlash = true; + continue; + } + // If we encounter a real directory, then we don't need to append anymore. + addTrailingSlash = false; + // A current directory, which we can always drop. + if (piece === '.') + continue; + // A parent directory, we need to see if there are any real directories we can pop. Else, we + // have an excess of parents, and we'll need to keep the "..". + if (piece === '..') { + if (positive) { + addTrailingSlash = true; + positive--; + pointer--; + } + else if (rel) { + // If we're in a relativePath, then we need to keep the excess parents. Else, in an absolute + // URL, protocol relative URL, or an absolute path, we don't need to keep excess. + pieces[pointer++] = piece; + } + continue; + } + // We've encountered a real directory. Move it to the next insertion pointer, which accounts for + // any popped or dropped directories. + pieces[pointer++] = piece; + positive++; + } + let path = ''; + for (let i = 1; i < pointer; i++) { + path += '/' + pieces[i]; + } + if (!path || (addTrailingSlash && !path.endsWith('/..'))) { + path += '/'; + } + url.path = path; +} +/** + * Attempts to resolve `input` URL/path relative to `base`. + */ +function resolve(input, base) { + if (!input && !base) + return ''; + const url = parseUrl(input); + let inputType = url.type; + if (base && inputType !== 7 /* Absolute */) { + const baseUrl = parseUrl(base); + const baseType = baseUrl.type; + switch (inputType) { + case 1 /* Empty */: + url.hash = baseUrl.hash; + // fall through + case 2 /* Hash */: + url.query = baseUrl.query; + // fall through + case 3 /* Query */: + case 4 /* RelativePath */: + mergePaths(url, baseUrl); + // fall through + case 5 /* AbsolutePath */: + // The host, user, and port are joined, you can't copy one without the others. + url.user = baseUrl.user; + url.host = baseUrl.host; + url.port = baseUrl.port; + // fall through + case 6 /* SchemeRelative */: + // The input doesn't have a schema at least, so we need to copy at least that over. + url.scheme = baseUrl.scheme; + } + if (baseType > inputType) + inputType = baseType; + } + normalizePath(url, inputType); + const queryHash = url.query + url.hash; + switch (inputType) { + // This is impossible, because of the empty checks at the start of the function. + // case UrlType.Empty: + case 2 /* Hash */: + case 3 /* Query */: + return queryHash; + case 4 /* RelativePath */: { + // The first char is always a "/", and we need it to be relative. + const path = url.path.slice(1); + if (!path) + return queryHash || '.'; + if (isRelative(base || input) && !isRelative(path)) { + // If base started with a leading ".", or there is no base and input started with a ".", + // then we need to ensure that the relative path starts with a ".". We don't know if + // relative starts with a "..", though, so check before prepending. + return './' + path + queryHash; + } + return path + queryHash; + } + case 5 /* AbsolutePath */: + return url.path + queryHash; + default: + return url.scheme + '//' + url.user + url.host + url.port + url.path + queryHash; + } +} + +export { resolve as default }; +//# sourceMappingURL=resolve-uri.mjs.map diff --git a/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs.map b/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs.map new file mode 100644 index 00000000..1de97d01 --- /dev/null +++ b/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"resolve-uri.mjs","sources":["../src/resolve-uri.ts"],"sourcesContent":["// Matches the scheme of a URL, eg \"http://\"\nconst schemeRegex = /^[\\w+.-]+:\\/\\//;\n\n/**\n * Matches the parts of a URL:\n * 1. Scheme, including \":\", guaranteed.\n * 2. User/password, including \"@\", optional.\n * 3. Host, guaranteed.\n * 4. Port, including \":\", optional.\n * 5. Path, including \"/\", optional.\n * 6. Query, including \"?\", optional.\n * 7. Hash, including \"#\", optional.\n */\nconst urlRegex = /^([\\w+.-]+:)\\/\\/([^@/#?]*@)?([^:/#?]*)(:\\d+)?(\\/[^#?]*)?(\\?[^#]*)?(#.*)?/;\n\n/**\n * File URLs are weird. They dont' need the regular `//` in the scheme, they may or may not start\n * with a leading `/`, they can have a domain (but only if they don't start with a Windows drive).\n *\n * 1. Host, optional.\n * 2. Path, which may include \"/\", guaranteed.\n * 3. Query, including \"?\", optional.\n * 4. Hash, including \"#\", optional.\n */\nconst fileRegex = /^file:(?:\\/\\/((?![a-z]:)[^/#?]*)?)?(\\/?[^#?]*)(\\?[^#]*)?(#.*)?/i;\n\ntype Url = {\n scheme: string;\n user: string;\n host: string;\n port: string;\n path: string;\n query: string;\n hash: string;\n type: UrlType;\n};\n\nconst enum UrlType {\n Empty = 1,\n Hash = 2,\n Query = 3,\n RelativePath = 4,\n AbsolutePath = 5,\n SchemeRelative = 6,\n Absolute = 7,\n}\n\nfunction isAbsoluteUrl(input: string): boolean {\n return schemeRegex.test(input);\n}\n\nfunction isSchemeRelativeUrl(input: string): boolean {\n return input.startsWith('//');\n}\n\nfunction isAbsolutePath(input: string): boolean {\n return input.startsWith('/');\n}\n\nfunction isFileUrl(input: string): boolean {\n return input.startsWith('file:');\n}\n\nfunction isRelative(input: string): boolean {\n return /^[.?#]/.test(input);\n}\n\nfunction parseAbsoluteUrl(input: string): Url {\n const match = urlRegex.exec(input)!;\n return makeUrl(\n match[1],\n match[2] || '',\n match[3],\n match[4] || '',\n match[5] || '/',\n match[6] || '',\n match[7] || '',\n );\n}\n\nfunction parseFileUrl(input: string): Url {\n const match = fileRegex.exec(input)!;\n const path = match[2];\n return makeUrl(\n 'file:',\n '',\n match[1] || '',\n '',\n isAbsolutePath(path) ? path : '/' + path,\n match[3] || '',\n match[4] || '',\n );\n}\n\nfunction makeUrl(\n scheme: string,\n user: string,\n host: string,\n port: string,\n path: string,\n query: string,\n hash: string,\n): Url {\n return {\n scheme,\n user,\n host,\n port,\n path,\n query,\n hash,\n type: UrlType.Absolute,\n };\n}\n\nfunction parseUrl(input: string): Url {\n if (isSchemeRelativeUrl(input)) {\n const url = parseAbsoluteUrl('http:' + input);\n url.scheme = '';\n url.type = UrlType.SchemeRelative;\n return url;\n }\n\n if (isAbsolutePath(input)) {\n const url = parseAbsoluteUrl('http://foo.com' + input);\n url.scheme = '';\n url.host = '';\n url.type = UrlType.AbsolutePath;\n return url;\n }\n\n if (isFileUrl(input)) return parseFileUrl(input);\n\n if (isAbsoluteUrl(input)) return parseAbsoluteUrl(input);\n\n const url = parseAbsoluteUrl('http://foo.com/' + input);\n url.scheme = '';\n url.host = '';\n url.type = input\n ? input.startsWith('?')\n ? UrlType.Query\n : input.startsWith('#')\n ? UrlType.Hash\n : UrlType.RelativePath\n : UrlType.Empty;\n return url;\n}\n\nfunction stripPathFilename(path: string): string {\n // If a path ends with a parent directory \"..\", then it's a relative path with excess parent\n // paths. It's not a file, so we can't strip it.\n if (path.endsWith('/..')) return path;\n const index = path.lastIndexOf('/');\n return path.slice(0, index + 1);\n}\n\nfunction mergePaths(url: Url, base: Url) {\n normalizePath(base, base.type);\n\n // If the path is just a \"/\", then it was an empty path to begin with (remember, we're a relative\n // path).\n if (url.path === '/') {\n url.path = base.path;\n } else {\n // Resolution happens relative to the base path's directory, not the file.\n url.path = stripPathFilename(base.path) + url.path;\n }\n}\n\n/**\n * The path can have empty directories \"//\", unneeded parents \"foo/..\", or current directory\n * \"foo/.\". We need to normalize to a standard representation.\n */\nfunction normalizePath(url: Url, type: UrlType) {\n const rel = type <= UrlType.RelativePath;\n const pieces = url.path.split('/');\n\n // We need to preserve the first piece always, so that we output a leading slash. The item at\n // pieces[0] is an empty string.\n let pointer = 1;\n\n // Positive is the number of real directories we've output, used for popping a parent directory.\n // Eg, \"foo/bar/..\" will have a positive 2, and we can decrement to be left with just \"foo\".\n let positive = 0;\n\n // We need to keep a trailing slash if we encounter an empty directory (eg, splitting \"foo/\" will\n // generate `[\"foo\", \"\"]` pieces). And, if we pop a parent directory. But once we encounter a\n // real directory, we won't need to append, unless the other conditions happen again.\n let addTrailingSlash = false;\n\n for (let i = 1; i < pieces.length; i++) {\n const piece = pieces[i];\n\n // An empty directory, could be a trailing slash, or just a double \"//\" in the path.\n if (!piece) {\n addTrailingSlash = true;\n continue;\n }\n\n // If we encounter a real directory, then we don't need to append anymore.\n addTrailingSlash = false;\n\n // A current directory, which we can always drop.\n if (piece === '.') continue;\n\n // A parent directory, we need to see if there are any real directories we can pop. Else, we\n // have an excess of parents, and we'll need to keep the \"..\".\n if (piece === '..') {\n if (positive) {\n addTrailingSlash = true;\n positive--;\n pointer--;\n } else if (rel) {\n // If we're in a relativePath, then we need to keep the excess parents. Else, in an absolute\n // URL, protocol relative URL, or an absolute path, we don't need to keep excess.\n pieces[pointer++] = piece;\n }\n continue;\n }\n\n // We've encountered a real directory. Move it to the next insertion pointer, which accounts for\n // any popped or dropped directories.\n pieces[pointer++] = piece;\n positive++;\n }\n\n let path = '';\n for (let i = 1; i < pointer; i++) {\n path += '/' + pieces[i];\n }\n if (!path || (addTrailingSlash && !path.endsWith('/..'))) {\n path += '/';\n }\n url.path = path;\n}\n\n/**\n * Attempts to resolve `input` URL/path relative to `base`.\n */\nexport default function resolve(input: string, base: string | undefined): string {\n if (!input && !base) return '';\n\n const url = parseUrl(input);\n let inputType = url.type;\n\n if (base && inputType !== UrlType.Absolute) {\n const baseUrl = parseUrl(base);\n const baseType = baseUrl.type;\n\n switch (inputType) {\n case UrlType.Empty:\n url.hash = baseUrl.hash;\n // fall through\n\n case UrlType.Hash:\n url.query = baseUrl.query;\n // fall through\n\n case UrlType.Query:\n case UrlType.RelativePath:\n mergePaths(url, baseUrl);\n // fall through\n\n case UrlType.AbsolutePath:\n // The host, user, and port are joined, you can't copy one without the others.\n url.user = baseUrl.user;\n url.host = baseUrl.host;\n url.port = baseUrl.port;\n // fall through\n\n case UrlType.SchemeRelative:\n // The input doesn't have a schema at least, so we need to copy at least that over.\n url.scheme = baseUrl.scheme;\n }\n if (baseType > inputType) inputType = baseType;\n }\n\n normalizePath(url, inputType);\n\n const queryHash = url.query + url.hash;\n switch (inputType) {\n // This is impossible, because of the empty checks at the start of the function.\n // case UrlType.Empty:\n\n case UrlType.Hash:\n case UrlType.Query:\n return queryHash;\n\n case UrlType.RelativePath: {\n // The first char is always a \"/\", and we need it to be relative.\n const path = url.path.slice(1);\n\n if (!path) return queryHash || '.';\n\n if (isRelative(base || input) && !isRelative(path)) {\n // If base started with a leading \".\", or there is no base and input started with a \".\",\n // then we need to ensure that the relative path starts with a \".\". We don't know if\n // relative starts with a \"..\", though, so check before prepending.\n return './' + path + queryHash;\n }\n\n return path + queryHash;\n }\n\n case UrlType.AbsolutePath:\n return url.path + queryHash;\n\n default:\n return url.scheme + '//' + url.user + url.host + url.port + url.path + queryHash;\n }\n}\n"],"names":[],"mappings":"AAAA;AACA,MAAM,WAAW,GAAG,gBAAgB,CAAC;AAErC;;;;;;;;;;AAUA,MAAM,QAAQ,GAAG,0EAA0E,CAAC;AAE5F;;;;;;;;;AASA,MAAM,SAAS,GAAG,iEAAiE,CAAC;AAuBpF,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa;IACxC,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAE,CAAC;IACpC,OAAO,OAAO,CACZ,KAAK,CAAC,CAAC,CAAC,EACR,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EACd,KAAK,CAAC,CAAC,CAAC,EACR,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EACd,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,EACf,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EACd,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CACf,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAE,CAAC;IACrC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACtB,OAAO,OAAO,CACZ,OAAO,EACP,EAAE,EACF,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EACd,EAAE,EACF,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,EACxC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EACd,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CACf,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CACd,MAAc,EACd,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,KAAa,EACb,IAAY;IAEZ,OAAO;QACL,MAAM;QACN,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,KAAK;QACL,IAAI;QACJ,IAAI;KACL,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC7B,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE;QAC9B,MAAM,GAAG,GAAG,gBAAgB,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;QAC9C,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC;QAChB,GAAG,CAAC,IAAI,0BAA0B;QAClC,OAAO,GAAG,CAAC;KACZ;IAED,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE;QACzB,MAAM,GAAG,GAAG,gBAAgB,CAAC,gBAAgB,GAAG,KAAK,CAAC,CAAC;QACvD,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC;QAChB,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;QACd,GAAG,CAAC,IAAI,wBAAwB;QAChC,OAAO,GAAG,CAAC;KACZ;IAED,IAAI,SAAS,CAAC,KAAK,CAAC;QAAE,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;IAEjD,IAAI,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAEzD,MAAM,GAAG,GAAG,gBAAgB,CAAC,iBAAiB,GAAG,KAAK,CAAC,CAAC;IACxD,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC;IAChB,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;IACd,GAAG,CAAC,IAAI,GAAG,KAAK;UACZ,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;;cAEnB,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;;;wBAGT;IAClB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;;;IAGrC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACpC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,UAAU,CAAC,GAAQ,EAAE,IAAS;IACrC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;;;IAI/B,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;QACpB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;KACtB;SAAM;;QAEL,GAAG,CAAC,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;KACpD;AACH,CAAC;AAED;;;;AAIA,SAAS,aAAa,CAAC,GAAQ,EAAE,IAAa;IAC5C,MAAM,GAAG,GAAG,IAAI,yBAAyB;IACzC,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;;IAInC,IAAI,OAAO,GAAG,CAAC,CAAC;;;IAIhB,IAAI,QAAQ,GAAG,CAAC,CAAC;;;;IAKjB,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;;QAGxB,IAAI,CAAC,KAAK,EAAE;YACV,gBAAgB,GAAG,IAAI,CAAC;YACxB,SAAS;SACV;;QAGD,gBAAgB,GAAG,KAAK,CAAC;;QAGzB,IAAI,KAAK,KAAK,GAAG;YAAE,SAAS;;;QAI5B,IAAI,KAAK,KAAK,IAAI,EAAE;YAClB,IAAI,QAAQ,EAAE;gBACZ,gBAAgB,GAAG,IAAI,CAAC;gBACxB,QAAQ,EAAE,CAAC;gBACX,OAAO,EAAE,CAAC;aACX;iBAAM,IAAI,GAAG,EAAE;;;gBAGd,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC;aAC3B;YACD,SAAS;SACV;;;QAID,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC;QAC1B,QAAQ,EAAE,CAAC;KACZ;IAED,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE;QAChC,IAAI,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;KACzB;IACD,IAAI,CAAC,IAAI,KAAK,gBAAgB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;QACxD,IAAI,IAAI,GAAG,CAAC;KACb;IACD,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;AAClB,CAAC;AAED;;;SAGwB,OAAO,CAAC,KAAa,EAAE,IAAwB;IACrE,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAE/B,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC;IAEzB,IAAI,IAAI,IAAI,SAAS,uBAAuB;QAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;QAE9B,QAAQ,SAAS;YACf;gBACE,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;;YAG1B;gBACE,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;;YAG5B,mBAAmB;YACnB;gBACE,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;;YAG3B;;gBAEE,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;gBACxB,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;gBACxB,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;;YAG1B;;gBAEE,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;SAC/B;QACD,IAAI,QAAQ,GAAG,SAAS;YAAE,SAAS,GAAG,QAAQ,CAAC;KAChD;IAED,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAE9B,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC;IACvC,QAAQ,SAAS;;;QAIf,kBAAkB;QAClB;YACE,OAAO,SAAS,CAAC;QAEnB,2BAA2B;;YAEzB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAE/B,IAAI,CAAC,IAAI;gBAAE,OAAO,SAAS,IAAI,GAAG,CAAC;YAEnC,IAAI,UAAU,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;;;;gBAIlD,OAAO,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;aAChC;YAED,OAAO,IAAI,GAAG,SAAS,CAAC;SACzB;QAED;YACE,OAAO,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC;QAE9B;YACE,OAAO,GAAG,CAAC,MAAM,GAAG,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC;KACpF;AACH;;;;"} \ No newline at end of file diff --git a/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js b/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js new file mode 100644 index 00000000..a783049b --- /dev/null +++ b/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js @@ -0,0 +1,240 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.resolveURI = factory()); +})(this, (function () { 'use strict'; + + // Matches the scheme of a URL, eg "http://" + const schemeRegex = /^[\w+.-]+:\/\//; + /** + * Matches the parts of a URL: + * 1. Scheme, including ":", guaranteed. + * 2. User/password, including "@", optional. + * 3. Host, guaranteed. + * 4. Port, including ":", optional. + * 5. Path, including "/", optional. + * 6. Query, including "?", optional. + * 7. Hash, including "#", optional. + */ + const urlRegex = /^([\w+.-]+:)\/\/([^@/#?]*@)?([^:/#?]*)(:\d+)?(\/[^#?]*)?(\?[^#]*)?(#.*)?/; + /** + * File URLs are weird. They dont' need the regular `//` in the scheme, they may or may not start + * with a leading `/`, they can have a domain (but only if they don't start with a Windows drive). + * + * 1. Host, optional. + * 2. Path, which may include "/", guaranteed. + * 3. Query, including "?", optional. + * 4. Hash, including "#", optional. + */ + const fileRegex = /^file:(?:\/\/((?![a-z]:)[^/#?]*)?)?(\/?[^#?]*)(\?[^#]*)?(#.*)?/i; + function isAbsoluteUrl(input) { + return schemeRegex.test(input); + } + function isSchemeRelativeUrl(input) { + return input.startsWith('//'); + } + function isAbsolutePath(input) { + return input.startsWith('/'); + } + function isFileUrl(input) { + return input.startsWith('file:'); + } + function isRelative(input) { + return /^[.?#]/.test(input); + } + function parseAbsoluteUrl(input) { + const match = urlRegex.exec(input); + return makeUrl(match[1], match[2] || '', match[3], match[4] || '', match[5] || '/', match[6] || '', match[7] || ''); + } + function parseFileUrl(input) { + const match = fileRegex.exec(input); + const path = match[2]; + return makeUrl('file:', '', match[1] || '', '', isAbsolutePath(path) ? path : '/' + path, match[3] || '', match[4] || ''); + } + function makeUrl(scheme, user, host, port, path, query, hash) { + return { + scheme, + user, + host, + port, + path, + query, + hash, + type: 7 /* Absolute */, + }; + } + function parseUrl(input) { + if (isSchemeRelativeUrl(input)) { + const url = parseAbsoluteUrl('http:' + input); + url.scheme = ''; + url.type = 6 /* SchemeRelative */; + return url; + } + if (isAbsolutePath(input)) { + const url = parseAbsoluteUrl('http://foo.com' + input); + url.scheme = ''; + url.host = ''; + url.type = 5 /* AbsolutePath */; + return url; + } + if (isFileUrl(input)) + return parseFileUrl(input); + if (isAbsoluteUrl(input)) + return parseAbsoluteUrl(input); + const url = parseAbsoluteUrl('http://foo.com/' + input); + url.scheme = ''; + url.host = ''; + url.type = input + ? input.startsWith('?') + ? 3 /* Query */ + : input.startsWith('#') + ? 2 /* Hash */ + : 4 /* RelativePath */ + : 1 /* Empty */; + return url; + } + function stripPathFilename(path) { + // If a path ends with a parent directory "..", then it's a relative path with excess parent + // paths. It's not a file, so we can't strip it. + if (path.endsWith('/..')) + return path; + const index = path.lastIndexOf('/'); + return path.slice(0, index + 1); + } + function mergePaths(url, base) { + normalizePath(base, base.type); + // If the path is just a "/", then it was an empty path to begin with (remember, we're a relative + // path). + if (url.path === '/') { + url.path = base.path; + } + else { + // Resolution happens relative to the base path's directory, not the file. + url.path = stripPathFilename(base.path) + url.path; + } + } + /** + * The path can have empty directories "//", unneeded parents "foo/..", or current directory + * "foo/.". We need to normalize to a standard representation. + */ + function normalizePath(url, type) { + const rel = type <= 4 /* RelativePath */; + const pieces = url.path.split('/'); + // We need to preserve the first piece always, so that we output a leading slash. The item at + // pieces[0] is an empty string. + let pointer = 1; + // Positive is the number of real directories we've output, used for popping a parent directory. + // Eg, "foo/bar/.." will have a positive 2, and we can decrement to be left with just "foo". + let positive = 0; + // We need to keep a trailing slash if we encounter an empty directory (eg, splitting "foo/" will + // generate `["foo", ""]` pieces). And, if we pop a parent directory. But once we encounter a + // real directory, we won't need to append, unless the other conditions happen again. + let addTrailingSlash = false; + for (let i = 1; i < pieces.length; i++) { + const piece = pieces[i]; + // An empty directory, could be a trailing slash, or just a double "//" in the path. + if (!piece) { + addTrailingSlash = true; + continue; + } + // If we encounter a real directory, then we don't need to append anymore. + addTrailingSlash = false; + // A current directory, which we can always drop. + if (piece === '.') + continue; + // A parent directory, we need to see if there are any real directories we can pop. Else, we + // have an excess of parents, and we'll need to keep the "..". + if (piece === '..') { + if (positive) { + addTrailingSlash = true; + positive--; + pointer--; + } + else if (rel) { + // If we're in a relativePath, then we need to keep the excess parents. Else, in an absolute + // URL, protocol relative URL, or an absolute path, we don't need to keep excess. + pieces[pointer++] = piece; + } + continue; + } + // We've encountered a real directory. Move it to the next insertion pointer, which accounts for + // any popped or dropped directories. + pieces[pointer++] = piece; + positive++; + } + let path = ''; + for (let i = 1; i < pointer; i++) { + path += '/' + pieces[i]; + } + if (!path || (addTrailingSlash && !path.endsWith('/..'))) { + path += '/'; + } + url.path = path; + } + /** + * Attempts to resolve `input` URL/path relative to `base`. + */ + function resolve(input, base) { + if (!input && !base) + return ''; + const url = parseUrl(input); + let inputType = url.type; + if (base && inputType !== 7 /* Absolute */) { + const baseUrl = parseUrl(base); + const baseType = baseUrl.type; + switch (inputType) { + case 1 /* Empty */: + url.hash = baseUrl.hash; + // fall through + case 2 /* Hash */: + url.query = baseUrl.query; + // fall through + case 3 /* Query */: + case 4 /* RelativePath */: + mergePaths(url, baseUrl); + // fall through + case 5 /* AbsolutePath */: + // The host, user, and port are joined, you can't copy one without the others. + url.user = baseUrl.user; + url.host = baseUrl.host; + url.port = baseUrl.port; + // fall through + case 6 /* SchemeRelative */: + // The input doesn't have a schema at least, so we need to copy at least that over. + url.scheme = baseUrl.scheme; + } + if (baseType > inputType) + inputType = baseType; + } + normalizePath(url, inputType); + const queryHash = url.query + url.hash; + switch (inputType) { + // This is impossible, because of the empty checks at the start of the function. + // case UrlType.Empty: + case 2 /* Hash */: + case 3 /* Query */: + return queryHash; + case 4 /* RelativePath */: { + // The first char is always a "/", and we need it to be relative. + const path = url.path.slice(1); + if (!path) + return queryHash || '.'; + if (isRelative(base || input) && !isRelative(path)) { + // If base started with a leading ".", or there is no base and input started with a ".", + // then we need to ensure that the relative path starts with a ".". We don't know if + // relative starts with a "..", though, so check before prepending. + return './' + path + queryHash; + } + return path + queryHash; + } + case 5 /* AbsolutePath */: + return url.path + queryHash; + default: + return url.scheme + '//' + url.user + url.host + url.port + url.path + queryHash; + } + } + + return resolve; + +})); +//# sourceMappingURL=resolve-uri.umd.js.map diff --git a/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js.map b/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js.map new file mode 100644 index 00000000..70a37f21 --- /dev/null +++ b/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"resolve-uri.umd.js","sources":["../src/resolve-uri.ts"],"sourcesContent":["// Matches the scheme of a URL, eg \"http://\"\nconst schemeRegex = /^[\\w+.-]+:\\/\\//;\n\n/**\n * Matches the parts of a URL:\n * 1. Scheme, including \":\", guaranteed.\n * 2. User/password, including \"@\", optional.\n * 3. Host, guaranteed.\n * 4. Port, including \":\", optional.\n * 5. Path, including \"/\", optional.\n * 6. Query, including \"?\", optional.\n * 7. Hash, including \"#\", optional.\n */\nconst urlRegex = /^([\\w+.-]+:)\\/\\/([^@/#?]*@)?([^:/#?]*)(:\\d+)?(\\/[^#?]*)?(\\?[^#]*)?(#.*)?/;\n\n/**\n * File URLs are weird. They dont' need the regular `//` in the scheme, they may or may not start\n * with a leading `/`, they can have a domain (but only if they don't start with a Windows drive).\n *\n * 1. Host, optional.\n * 2. Path, which may include \"/\", guaranteed.\n * 3. Query, including \"?\", optional.\n * 4. Hash, including \"#\", optional.\n */\nconst fileRegex = /^file:(?:\\/\\/((?![a-z]:)[^/#?]*)?)?(\\/?[^#?]*)(\\?[^#]*)?(#.*)?/i;\n\ntype Url = {\n scheme: string;\n user: string;\n host: string;\n port: string;\n path: string;\n query: string;\n hash: string;\n type: UrlType;\n};\n\nconst enum UrlType {\n Empty = 1,\n Hash = 2,\n Query = 3,\n RelativePath = 4,\n AbsolutePath = 5,\n SchemeRelative = 6,\n Absolute = 7,\n}\n\nfunction isAbsoluteUrl(input: string): boolean {\n return schemeRegex.test(input);\n}\n\nfunction isSchemeRelativeUrl(input: string): boolean {\n return input.startsWith('//');\n}\n\nfunction isAbsolutePath(input: string): boolean {\n return input.startsWith('/');\n}\n\nfunction isFileUrl(input: string): boolean {\n return input.startsWith('file:');\n}\n\nfunction isRelative(input: string): boolean {\n return /^[.?#]/.test(input);\n}\n\nfunction parseAbsoluteUrl(input: string): Url {\n const match = urlRegex.exec(input)!;\n return makeUrl(\n match[1],\n match[2] || '',\n match[3],\n match[4] || '',\n match[5] || '/',\n match[6] || '',\n match[7] || '',\n );\n}\n\nfunction parseFileUrl(input: string): Url {\n const match = fileRegex.exec(input)!;\n const path = match[2];\n return makeUrl(\n 'file:',\n '',\n match[1] || '',\n '',\n isAbsolutePath(path) ? path : '/' + path,\n match[3] || '',\n match[4] || '',\n );\n}\n\nfunction makeUrl(\n scheme: string,\n user: string,\n host: string,\n port: string,\n path: string,\n query: string,\n hash: string,\n): Url {\n return {\n scheme,\n user,\n host,\n port,\n path,\n query,\n hash,\n type: UrlType.Absolute,\n };\n}\n\nfunction parseUrl(input: string): Url {\n if (isSchemeRelativeUrl(input)) {\n const url = parseAbsoluteUrl('http:' + input);\n url.scheme = '';\n url.type = UrlType.SchemeRelative;\n return url;\n }\n\n if (isAbsolutePath(input)) {\n const url = parseAbsoluteUrl('http://foo.com' + input);\n url.scheme = '';\n url.host = '';\n url.type = UrlType.AbsolutePath;\n return url;\n }\n\n if (isFileUrl(input)) return parseFileUrl(input);\n\n if (isAbsoluteUrl(input)) return parseAbsoluteUrl(input);\n\n const url = parseAbsoluteUrl('http://foo.com/' + input);\n url.scheme = '';\n url.host = '';\n url.type = input\n ? input.startsWith('?')\n ? UrlType.Query\n : input.startsWith('#')\n ? UrlType.Hash\n : UrlType.RelativePath\n : UrlType.Empty;\n return url;\n}\n\nfunction stripPathFilename(path: string): string {\n // If a path ends with a parent directory \"..\", then it's a relative path with excess parent\n // paths. It's not a file, so we can't strip it.\n if (path.endsWith('/..')) return path;\n const index = path.lastIndexOf('/');\n return path.slice(0, index + 1);\n}\n\nfunction mergePaths(url: Url, base: Url) {\n normalizePath(base, base.type);\n\n // If the path is just a \"/\", then it was an empty path to begin with (remember, we're a relative\n // path).\n if (url.path === '/') {\n url.path = base.path;\n } else {\n // Resolution happens relative to the base path's directory, not the file.\n url.path = stripPathFilename(base.path) + url.path;\n }\n}\n\n/**\n * The path can have empty directories \"//\", unneeded parents \"foo/..\", or current directory\n * \"foo/.\". We need to normalize to a standard representation.\n */\nfunction normalizePath(url: Url, type: UrlType) {\n const rel = type <= UrlType.RelativePath;\n const pieces = url.path.split('/');\n\n // We need to preserve the first piece always, so that we output a leading slash. The item at\n // pieces[0] is an empty string.\n let pointer = 1;\n\n // Positive is the number of real directories we've output, used for popping a parent directory.\n // Eg, \"foo/bar/..\" will have a positive 2, and we can decrement to be left with just \"foo\".\n let positive = 0;\n\n // We need to keep a trailing slash if we encounter an empty directory (eg, splitting \"foo/\" will\n // generate `[\"foo\", \"\"]` pieces). And, if we pop a parent directory. But once we encounter a\n // real directory, we won't need to append, unless the other conditions happen again.\n let addTrailingSlash = false;\n\n for (let i = 1; i < pieces.length; i++) {\n const piece = pieces[i];\n\n // An empty directory, could be a trailing slash, or just a double \"//\" in the path.\n if (!piece) {\n addTrailingSlash = true;\n continue;\n }\n\n // If we encounter a real directory, then we don't need to append anymore.\n addTrailingSlash = false;\n\n // A current directory, which we can always drop.\n if (piece === '.') continue;\n\n // A parent directory, we need to see if there are any real directories we can pop. Else, we\n // have an excess of parents, and we'll need to keep the \"..\".\n if (piece === '..') {\n if (positive) {\n addTrailingSlash = true;\n positive--;\n pointer--;\n } else if (rel) {\n // If we're in a relativePath, then we need to keep the excess parents. Else, in an absolute\n // URL, protocol relative URL, or an absolute path, we don't need to keep excess.\n pieces[pointer++] = piece;\n }\n continue;\n }\n\n // We've encountered a real directory. Move it to the next insertion pointer, which accounts for\n // any popped or dropped directories.\n pieces[pointer++] = piece;\n positive++;\n }\n\n let path = '';\n for (let i = 1; i < pointer; i++) {\n path += '/' + pieces[i];\n }\n if (!path || (addTrailingSlash && !path.endsWith('/..'))) {\n path += '/';\n }\n url.path = path;\n}\n\n/**\n * Attempts to resolve `input` URL/path relative to `base`.\n */\nexport default function resolve(input: string, base: string | undefined): string {\n if (!input && !base) return '';\n\n const url = parseUrl(input);\n let inputType = url.type;\n\n if (base && inputType !== UrlType.Absolute) {\n const baseUrl = parseUrl(base);\n const baseType = baseUrl.type;\n\n switch (inputType) {\n case UrlType.Empty:\n url.hash = baseUrl.hash;\n // fall through\n\n case UrlType.Hash:\n url.query = baseUrl.query;\n // fall through\n\n case UrlType.Query:\n case UrlType.RelativePath:\n mergePaths(url, baseUrl);\n // fall through\n\n case UrlType.AbsolutePath:\n // The host, user, and port are joined, you can't copy one without the others.\n url.user = baseUrl.user;\n url.host = baseUrl.host;\n url.port = baseUrl.port;\n // fall through\n\n case UrlType.SchemeRelative:\n // The input doesn't have a schema at least, so we need to copy at least that over.\n url.scheme = baseUrl.scheme;\n }\n if (baseType > inputType) inputType = baseType;\n }\n\n normalizePath(url, inputType);\n\n const queryHash = url.query + url.hash;\n switch (inputType) {\n // This is impossible, because of the empty checks at the start of the function.\n // case UrlType.Empty:\n\n case UrlType.Hash:\n case UrlType.Query:\n return queryHash;\n\n case UrlType.RelativePath: {\n // The first char is always a \"/\", and we need it to be relative.\n const path = url.path.slice(1);\n\n if (!path) return queryHash || '.';\n\n if (isRelative(base || input) && !isRelative(path)) {\n // If base started with a leading \".\", or there is no base and input started with a \".\",\n // then we need to ensure that the relative path starts with a \".\". We don't know if\n // relative starts with a \"..\", though, so check before prepending.\n return './' + path + queryHash;\n }\n\n return path + queryHash;\n }\n\n case UrlType.AbsolutePath:\n return url.path + queryHash;\n\n default:\n return url.scheme + '//' + url.user + url.host + url.port + url.path + queryHash;\n }\n}\n"],"names":[],"mappings":";;;;;;IAAA;IACA,MAAM,WAAW,GAAG,gBAAgB,CAAC;IAErC;;;;;;;;;;IAUA,MAAM,QAAQ,GAAG,0EAA0E,CAAC;IAE5F;;;;;;;;;IASA,MAAM,SAAS,GAAG,iEAAiE,CAAC;IAuBpF,SAAS,aAAa,CAAC,KAAa;QAClC,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,SAAS,mBAAmB,CAAC,KAAa;QACxC,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,SAAS,cAAc,CAAC,KAAa;QACnC,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,SAAS,SAAS,CAAC,KAAa;QAC9B,OAAO,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,SAAS,UAAU,CAAC,KAAa;QAC/B,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,SAAS,gBAAgB,CAAC,KAAa;QACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAE,CAAC;QACpC,OAAO,OAAO,CACZ,KAAK,CAAC,CAAC,CAAC,EACR,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EACd,KAAK,CAAC,CAAC,CAAC,EACR,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EACd,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,EACf,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EACd,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CACf,CAAC;IACJ,CAAC;IAED,SAAS,YAAY,CAAC,KAAa;QACjC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAE,CAAC;QACrC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,OAAO,OAAO,CACZ,OAAO,EACP,EAAE,EACF,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EACd,EAAE,EACF,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,EACxC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EACd,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CACf,CAAC;IACJ,CAAC;IAED,SAAS,OAAO,CACd,MAAc,EACd,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,KAAa,EACb,IAAY;QAEZ,OAAO;YACL,MAAM;YACN,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,KAAK;YACL,IAAI;YACJ,IAAI;SACL,CAAC;IACJ,CAAC;IAED,SAAS,QAAQ,CAAC,KAAa;QAC7B,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE;YAC9B,MAAM,GAAG,GAAG,gBAAgB,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;YAC9C,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC;YAChB,GAAG,CAAC,IAAI,0BAA0B;YAClC,OAAO,GAAG,CAAC;SACZ;QAED,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE;YACzB,MAAM,GAAG,GAAG,gBAAgB,CAAC,gBAAgB,GAAG,KAAK,CAAC,CAAC;YACvD,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC;YAChB,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;YACd,GAAG,CAAC,IAAI,wBAAwB;YAChC,OAAO,GAAG,CAAC;SACZ;QAED,IAAI,SAAS,CAAC,KAAK,CAAC;YAAE,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;QAEjD,IAAI,aAAa,CAAC,KAAK,CAAC;YAAE,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAEzD,MAAM,GAAG,GAAG,gBAAgB,CAAC,iBAAiB,GAAG,KAAK,CAAC,CAAC;QACxD,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC;QAChB,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;QACd,GAAG,CAAC,IAAI,GAAG,KAAK;cACZ,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;;kBAEnB,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;;;4BAGT;QAClB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,SAAS,iBAAiB,CAAC,IAAY;;;QAGrC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,SAAS,UAAU,CAAC,GAAQ,EAAE,IAAS;QACrC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;;;QAI/B,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;YACpB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;SACtB;aAAM;;YAEL,GAAG,CAAC,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;SACpD;IACH,CAAC;IAED;;;;IAIA,SAAS,aAAa,CAAC,GAAQ,EAAE,IAAa;QAC5C,MAAM,GAAG,GAAG,IAAI,yBAAyB;QACzC,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;;QAInC,IAAI,OAAO,GAAG,CAAC,CAAC;;;QAIhB,IAAI,QAAQ,GAAG,CAAC,CAAC;;;;QAKjB,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;;YAGxB,IAAI,CAAC,KAAK,EAAE;gBACV,gBAAgB,GAAG,IAAI,CAAC;gBACxB,SAAS;aACV;;YAGD,gBAAgB,GAAG,KAAK,CAAC;;YAGzB,IAAI,KAAK,KAAK,GAAG;gBAAE,SAAS;;;YAI5B,IAAI,KAAK,KAAK,IAAI,EAAE;gBAClB,IAAI,QAAQ,EAAE;oBACZ,gBAAgB,GAAG,IAAI,CAAC;oBACxB,QAAQ,EAAE,CAAC;oBACX,OAAO,EAAE,CAAC;iBACX;qBAAM,IAAI,GAAG,EAAE;;;oBAGd,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC;iBAC3B;gBACD,SAAS;aACV;;;YAID,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC;YAC1B,QAAQ,EAAE,CAAC;SACZ;QAED,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE;YAChC,IAAI,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;SACzB;QACD,IAAI,CAAC,IAAI,KAAK,gBAAgB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;YACxD,IAAI,IAAI,GAAG,CAAC;SACb;QACD,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;IAClB,CAAC;IAED;;;aAGwB,OAAO,CAAC,KAAa,EAAE,IAAwB;QACrE,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QAE/B,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC;QAEzB,IAAI,IAAI,IAAI,SAAS,uBAAuB;YAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;YAE9B,QAAQ,SAAS;gBACf;oBACE,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;;gBAG1B;oBACE,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;;gBAG5B,mBAAmB;gBACnB;oBACE,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;;gBAG3B;;oBAEE,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;oBACxB,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;oBACxB,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;;gBAG1B;;oBAEE,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;aAC/B;YACD,IAAI,QAAQ,GAAG,SAAS;gBAAE,SAAS,GAAG,QAAQ,CAAC;SAChD;QAED,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAE9B,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC;QACvC,QAAQ,SAAS;;;YAIf,kBAAkB;YAClB;gBACE,OAAO,SAAS,CAAC;YAEnB,2BAA2B;;gBAEzB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAE/B,IAAI,CAAC,IAAI;oBAAE,OAAO,SAAS,IAAI,GAAG,CAAC;gBAEnC,IAAI,UAAU,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;;;;oBAIlD,OAAO,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;iBAChC;gBAED,OAAO,IAAI,GAAG,SAAS,CAAC;aACzB;YAED;gBACE,OAAO,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC;YAE9B;gBACE,OAAO,GAAG,CAAC,MAAM,GAAG,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC;SACpF;IACH;;;;;;;;"} \ No newline at end of file diff --git a/node_modules/@jridgewell/resolve-uri/dist/types/resolve-uri.d.ts b/node_modules/@jridgewell/resolve-uri/dist/types/resolve-uri.d.ts new file mode 100644 index 00000000..b7f0b3b2 --- /dev/null +++ b/node_modules/@jridgewell/resolve-uri/dist/types/resolve-uri.d.ts @@ -0,0 +1,4 @@ +/** + * Attempts to resolve `input` URL/path relative to `base`. + */ +export default function resolve(input: string, base: string | undefined): string; diff --git a/node_modules/@jridgewell/resolve-uri/package.json b/node_modules/@jridgewell/resolve-uri/package.json new file mode 100644 index 00000000..02a4c518 --- /dev/null +++ b/node_modules/@jridgewell/resolve-uri/package.json @@ -0,0 +1,69 @@ +{ + "name": "@jridgewell/resolve-uri", + "version": "3.1.2", + "description": "Resolve a URI relative to an optional base URI", + "keywords": [ + "resolve", + "uri", + "url", + "path" + ], + "author": "Justin Ridgewell ", + "license": "MIT", + "repository": "https://github.com/jridgewell/resolve-uri", + "main": "dist/resolve-uri.umd.js", + "module": "dist/resolve-uri.mjs", + "types": "dist/types/resolve-uri.d.ts", + "exports": { + ".": [ + { + "types": "./dist/types/resolve-uri.d.ts", + "browser": "./dist/resolve-uri.umd.js", + "require": "./dist/resolve-uri.umd.js", + "import": "./dist/resolve-uri.mjs" + }, + "./dist/resolve-uri.umd.js" + ], + "./package.json": "./package.json" + }, + "files": [ + "dist" + ], + "engines": { + "node": ">=6.0.0" + }, + "scripts": { + "prebuild": "rm -rf dist", + "build": "run-s -n build:*", + "build:rollup": "rollup -c rollup.config.js", + "build:ts": "tsc --project tsconfig.build.json", + "lint": "run-s -n lint:*", + "lint:prettier": "npm run test:lint:prettier -- --write", + "lint:ts": "npm run test:lint:ts -- --fix", + "pretest": "run-s build:rollup", + "test": "run-s -n test:lint test:only", + "test:debug": "mocha --inspect-brk", + "test:lint": "run-s -n test:lint:*", + "test:lint:prettier": "prettier --check '{src,test}/**/*.ts'", + "test:lint:ts": "eslint '{src,test}/**/*.ts'", + "test:only": "mocha", + "test:coverage": "c8 mocha", + "test:watch": "mocha --watch", + "prepublishOnly": "npm run preversion", + "preversion": "run-s test build" + }, + "devDependencies": { + "@jridgewell/resolve-uri-latest": "npm:@jridgewell/resolve-uri@*", + "@rollup/plugin-typescript": "8.3.0", + "@typescript-eslint/eslint-plugin": "5.10.0", + "@typescript-eslint/parser": "5.10.0", + "c8": "7.11.0", + "eslint": "8.7.0", + "eslint-config-prettier": "8.3.0", + "mocha": "9.2.0", + "npm-run-all": "4.1.5", + "prettier": "2.5.1", + "rollup": "2.66.0", + "typescript": "4.5.5" + } +} diff --git a/node_modules/@jridgewell/sourcemap-codec/LICENSE b/node_modules/@jridgewell/sourcemap-codec/LICENSE new file mode 100644 index 00000000..1f6ce94c --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/LICENSE @@ -0,0 +1,19 @@ +Copyright 2024 Justin Ridgewell + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/@jridgewell/sourcemap-codec/README.md b/node_modules/@jridgewell/sourcemap-codec/README.md new file mode 100644 index 00000000..b3e0708b --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/README.md @@ -0,0 +1,264 @@ +# @jridgewell/sourcemap-codec + +Encode/decode the `mappings` property of a [sourcemap](https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit). + + +## Why? + +Sourcemaps are difficult to generate and manipulate, because the `mappings` property – the part that actually links the generated code back to the original source – is encoded using an obscure method called [Variable-length quantity](https://en.wikipedia.org/wiki/Variable-length_quantity). On top of that, each segment in the mapping contains offsets rather than absolute indices, which means that you can't look at a segment in isolation – you have to understand the whole sourcemap. + +This package makes the process slightly easier. + + +## Installation + +```bash +npm install @jridgewell/sourcemap-codec +``` + + +## Usage + +```js +import { encode, decode } from '@jridgewell/sourcemap-codec'; + +var decoded = decode( ';EAEEA,EAAE,EAAC,CAAE;ECQY,UACC' ); + +assert.deepEqual( decoded, [ + // the first line (of the generated code) has no mappings, + // as shown by the starting semi-colon (which separates lines) + [], + + // the second line contains four (comma-separated) segments + [ + // segments are encoded as you'd expect: + // [ generatedCodeColumn, sourceIndex, sourceCodeLine, sourceCodeColumn, nameIndex ] + + // i.e. the first segment begins at column 2, and maps back to the second column + // of the second line (both zero-based) of the 0th source, and uses the 0th + // name in the `map.names` array + [ 2, 0, 2, 2, 0 ], + + // the remaining segments are 4-length rather than 5-length, + // because they don't map a name + [ 4, 0, 2, 4 ], + [ 6, 0, 2, 5 ], + [ 7, 0, 2, 7 ] + ], + + // the final line contains two segments + [ + [ 2, 1, 10, 19 ], + [ 12, 1, 11, 20 ] + ] +]); + +var encoded = encode( decoded ); +assert.equal( encoded, ';EAEEA,EAAE,EAAC,CAAE;ECQY,UACC' ); +``` + +## Benchmarks + +``` +node v20.10.0 + +amp.js.map - 45120 segments + +Decode Memory Usage: +local code 5815135 bytes +@jridgewell/sourcemap-codec 1.4.15 5868160 bytes +sourcemap-codec 5492584 bytes +source-map-0.6.1 13569984 bytes +source-map-0.8.0 6390584 bytes +chrome dev tools 8011136 bytes +Smallest memory usage is sourcemap-codec + +Decode speed: +decode: local code x 492 ops/sec ±1.22% (90 runs sampled) +decode: @jridgewell/sourcemap-codec 1.4.15 x 499 ops/sec ±1.16% (89 runs sampled) +decode: sourcemap-codec x 376 ops/sec ±1.66% (89 runs sampled) +decode: source-map-0.6.1 x 34.99 ops/sec ±0.94% (48 runs sampled) +decode: source-map-0.8.0 x 351 ops/sec ±0.07% (95 runs sampled) +chrome dev tools x 165 ops/sec ±0.91% (86 runs sampled) +Fastest is decode: @jridgewell/sourcemap-codec 1.4.15 + +Encode Memory Usage: +local code 444248 bytes +@jridgewell/sourcemap-codec 1.4.15 623024 bytes +sourcemap-codec 8696280 bytes +source-map-0.6.1 8745176 bytes +source-map-0.8.0 8736624 bytes +Smallest memory usage is local code + +Encode speed: +encode: local code x 796 ops/sec ±0.11% (97 runs sampled) +encode: @jridgewell/sourcemap-codec 1.4.15 x 795 ops/sec ±0.25% (98 runs sampled) +encode: sourcemap-codec x 231 ops/sec ±0.83% (86 runs sampled) +encode: source-map-0.6.1 x 166 ops/sec ±0.57% (86 runs sampled) +encode: source-map-0.8.0 x 203 ops/sec ±0.45% (88 runs sampled) +Fastest is encode: local code,encode: @jridgewell/sourcemap-codec 1.4.15 + + +*** + + +babel.min.js.map - 347793 segments + +Decode Memory Usage: +local code 35424960 bytes +@jridgewell/sourcemap-codec 1.4.15 35424696 bytes +sourcemap-codec 36033464 bytes +source-map-0.6.1 62253704 bytes +source-map-0.8.0 43843920 bytes +chrome dev tools 45111400 bytes +Smallest memory usage is @jridgewell/sourcemap-codec 1.4.15 + +Decode speed: +decode: local code x 38.18 ops/sec ±5.44% (52 runs sampled) +decode: @jridgewell/sourcemap-codec 1.4.15 x 38.36 ops/sec ±5.02% (52 runs sampled) +decode: sourcemap-codec x 34.05 ops/sec ±4.45% (47 runs sampled) +decode: source-map-0.6.1 x 4.31 ops/sec ±2.76% (15 runs sampled) +decode: source-map-0.8.0 x 55.60 ops/sec ±0.13% (73 runs sampled) +chrome dev tools x 16.94 ops/sec ±3.78% (46 runs sampled) +Fastest is decode: source-map-0.8.0 + +Encode Memory Usage: +local code 2606016 bytes +@jridgewell/sourcemap-codec 1.4.15 2626440 bytes +sourcemap-codec 21152576 bytes +source-map-0.6.1 25023928 bytes +source-map-0.8.0 25256448 bytes +Smallest memory usage is local code + +Encode speed: +encode: local code x 127 ops/sec ±0.18% (83 runs sampled) +encode: @jridgewell/sourcemap-codec 1.4.15 x 128 ops/sec ±0.26% (83 runs sampled) +encode: sourcemap-codec x 29.31 ops/sec ±2.55% (53 runs sampled) +encode: source-map-0.6.1 x 18.85 ops/sec ±3.19% (36 runs sampled) +encode: source-map-0.8.0 x 19.34 ops/sec ±1.97% (36 runs sampled) +Fastest is encode: @jridgewell/sourcemap-codec 1.4.15 + + +*** + + +preact.js.map - 1992 segments + +Decode Memory Usage: +local code 261696 bytes +@jridgewell/sourcemap-codec 1.4.15 244296 bytes +sourcemap-codec 302816 bytes +source-map-0.6.1 939176 bytes +source-map-0.8.0 336 bytes +chrome dev tools 587368 bytes +Smallest memory usage is source-map-0.8.0 + +Decode speed: +decode: local code x 17,782 ops/sec ±0.32% (97 runs sampled) +decode: @jridgewell/sourcemap-codec 1.4.15 x 17,863 ops/sec ±0.40% (100 runs sampled) +decode: sourcemap-codec x 12,453 ops/sec ±0.27% (101 runs sampled) +decode: source-map-0.6.1 x 1,288 ops/sec ±1.05% (96 runs sampled) +decode: source-map-0.8.0 x 9,289 ops/sec ±0.27% (101 runs sampled) +chrome dev tools x 4,769 ops/sec ±0.18% (100 runs sampled) +Fastest is decode: @jridgewell/sourcemap-codec 1.4.15 + +Encode Memory Usage: +local code 262944 bytes +@jridgewell/sourcemap-codec 1.4.15 25544 bytes +sourcemap-codec 323048 bytes +source-map-0.6.1 507808 bytes +source-map-0.8.0 507480 bytes +Smallest memory usage is @jridgewell/sourcemap-codec 1.4.15 + +Encode speed: +encode: local code x 24,207 ops/sec ±0.79% (95 runs sampled) +encode: @jridgewell/sourcemap-codec 1.4.15 x 24,288 ops/sec ±0.48% (96 runs sampled) +encode: sourcemap-codec x 6,761 ops/sec ±0.21% (100 runs sampled) +encode: source-map-0.6.1 x 5,374 ops/sec ±0.17% (99 runs sampled) +encode: source-map-0.8.0 x 5,633 ops/sec ±0.32% (99 runs sampled) +Fastest is encode: @jridgewell/sourcemap-codec 1.4.15,encode: local code + + +*** + + +react.js.map - 5726 segments + +Decode Memory Usage: +local code 678816 bytes +@jridgewell/sourcemap-codec 1.4.15 678816 bytes +sourcemap-codec 816400 bytes +source-map-0.6.1 2288864 bytes +source-map-0.8.0 721360 bytes +chrome dev tools 1012512 bytes +Smallest memory usage is local code + +Decode speed: +decode: local code x 6,178 ops/sec ±0.19% (98 runs sampled) +decode: @jridgewell/sourcemap-codec 1.4.15 x 6,261 ops/sec ±0.22% (100 runs sampled) +decode: sourcemap-codec x 4,472 ops/sec ±0.90% (99 runs sampled) +decode: source-map-0.6.1 x 449 ops/sec ±0.31% (95 runs sampled) +decode: source-map-0.8.0 x 3,219 ops/sec ±0.13% (100 runs sampled) +chrome dev tools x 1,743 ops/sec ±0.20% (99 runs sampled) +Fastest is decode: @jridgewell/sourcemap-codec 1.4.15 + +Encode Memory Usage: +local code 140960 bytes +@jridgewell/sourcemap-codec 1.4.15 159808 bytes +sourcemap-codec 969304 bytes +source-map-0.6.1 930520 bytes +source-map-0.8.0 930248 bytes +Smallest memory usage is local code + +Encode speed: +encode: local code x 8,013 ops/sec ±0.19% (100 runs sampled) +encode: @jridgewell/sourcemap-codec 1.4.15 x 7,989 ops/sec ±0.20% (101 runs sampled) +encode: sourcemap-codec x 2,472 ops/sec ±0.21% (99 runs sampled) +encode: source-map-0.6.1 x 2,200 ops/sec ±0.17% (99 runs sampled) +encode: source-map-0.8.0 x 2,220 ops/sec ±0.37% (99 runs sampled) +Fastest is encode: local code + + +*** + + +vscode.map - 2141001 segments + +Decode Memory Usage: +local code 198955264 bytes +@jridgewell/sourcemap-codec 1.4.15 199175352 bytes +sourcemap-codec 199102688 bytes +source-map-0.6.1 386323432 bytes +source-map-0.8.0 244116432 bytes +chrome dev tools 293734280 bytes +Smallest memory usage is local code + +Decode speed: +decode: local code x 3.90 ops/sec ±22.21% (15 runs sampled) +decode: @jridgewell/sourcemap-codec 1.4.15 x 3.95 ops/sec ±23.53% (15 runs sampled) +decode: sourcemap-codec x 3.82 ops/sec ±17.94% (14 runs sampled) +decode: source-map-0.6.1 x 0.61 ops/sec ±7.81% (6 runs sampled) +decode: source-map-0.8.0 x 9.54 ops/sec ±0.28% (28 runs sampled) +chrome dev tools x 2.18 ops/sec ±10.58% (10 runs sampled) +Fastest is decode: source-map-0.8.0 + +Encode Memory Usage: +local code 13509880 bytes +@jridgewell/sourcemap-codec 1.4.15 13537648 bytes +sourcemap-codec 32540104 bytes +source-map-0.6.1 127531040 bytes +source-map-0.8.0 127535312 bytes +Smallest memory usage is local code + +Encode speed: +encode: local code x 20.10 ops/sec ±0.19% (38 runs sampled) +encode: @jridgewell/sourcemap-codec 1.4.15 x 20.26 ops/sec ±0.32% (38 runs sampled) +encode: sourcemap-codec x 5.44 ops/sec ±1.64% (18 runs sampled) +encode: source-map-0.6.1 x 2.30 ops/sec ±4.79% (10 runs sampled) +encode: source-map-0.8.0 x 2.46 ops/sec ±6.53% (10 runs sampled) +Fastest is encode: @jridgewell/sourcemap-codec 1.4.15 +``` + +# License + +MIT diff --git a/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs b/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs new file mode 100644 index 00000000..532bab39 --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs @@ -0,0 +1,423 @@ +// src/vlq.ts +var comma = ",".charCodeAt(0); +var semicolon = ";".charCodeAt(0); +var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; +var intToChar = new Uint8Array(64); +var charToInt = new Uint8Array(128); +for (let i = 0; i < chars.length; i++) { + const c = chars.charCodeAt(i); + intToChar[i] = c; + charToInt[c] = i; +} +function decodeInteger(reader, relative) { + let value = 0; + let shift = 0; + let integer = 0; + do { + const c = reader.next(); + integer = charToInt[c]; + value |= (integer & 31) << shift; + shift += 5; + } while (integer & 32); + const shouldNegate = value & 1; + value >>>= 1; + if (shouldNegate) { + value = -2147483648 | -value; + } + return relative + value; +} +function encodeInteger(builder, num, relative) { + let delta = num - relative; + delta = delta < 0 ? -delta << 1 | 1 : delta << 1; + do { + let clamped = delta & 31; + delta >>>= 5; + if (delta > 0) clamped |= 32; + builder.write(intToChar[clamped]); + } while (delta > 0); + return num; +} +function hasMoreVlq(reader, max) { + if (reader.pos >= max) return false; + return reader.peek() !== comma; +} + +// src/strings.ts +var bufLength = 1024 * 16; +var td = typeof TextDecoder !== "undefined" ? /* @__PURE__ */ new TextDecoder() : typeof Buffer !== "undefined" ? { + decode(buf) { + const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength); + return out.toString(); + } +} : { + decode(buf) { + let out = ""; + for (let i = 0; i < buf.length; i++) { + out += String.fromCharCode(buf[i]); + } + return out; + } +}; +var StringWriter = class { + constructor() { + this.pos = 0; + this.out = ""; + this.buffer = new Uint8Array(bufLength); + } + write(v) { + const { buffer } = this; + buffer[this.pos++] = v; + if (this.pos === bufLength) { + this.out += td.decode(buffer); + this.pos = 0; + } + } + flush() { + const { buffer, out, pos } = this; + return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out; + } +}; +var StringReader = class { + constructor(buffer) { + this.pos = 0; + this.buffer = buffer; + } + next() { + return this.buffer.charCodeAt(this.pos++); + } + peek() { + return this.buffer.charCodeAt(this.pos); + } + indexOf(char) { + const { buffer, pos } = this; + const idx = buffer.indexOf(char, pos); + return idx === -1 ? buffer.length : idx; + } +}; + +// src/scopes.ts +var EMPTY = []; +function decodeOriginalScopes(input) { + const { length } = input; + const reader = new StringReader(input); + const scopes = []; + const stack = []; + let line = 0; + for (; reader.pos < length; reader.pos++) { + line = decodeInteger(reader, line); + const column = decodeInteger(reader, 0); + if (!hasMoreVlq(reader, length)) { + const last = stack.pop(); + last[2] = line; + last[3] = column; + continue; + } + const kind = decodeInteger(reader, 0); + const fields = decodeInteger(reader, 0); + const hasName = fields & 1; + const scope = hasName ? [line, column, 0, 0, kind, decodeInteger(reader, 0)] : [line, column, 0, 0, kind]; + let vars = EMPTY; + if (hasMoreVlq(reader, length)) { + vars = []; + do { + const varsIndex = decodeInteger(reader, 0); + vars.push(varsIndex); + } while (hasMoreVlq(reader, length)); + } + scope.vars = vars; + scopes.push(scope); + stack.push(scope); + } + return scopes; +} +function encodeOriginalScopes(scopes) { + const writer = new StringWriter(); + for (let i = 0; i < scopes.length; ) { + i = _encodeOriginalScopes(scopes, i, writer, [0]); + } + return writer.flush(); +} +function _encodeOriginalScopes(scopes, index, writer, state) { + const scope = scopes[index]; + const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, 4: kind, vars } = scope; + if (index > 0) writer.write(comma); + state[0] = encodeInteger(writer, startLine, state[0]); + encodeInteger(writer, startColumn, 0); + encodeInteger(writer, kind, 0); + const fields = scope.length === 6 ? 1 : 0; + encodeInteger(writer, fields, 0); + if (scope.length === 6) encodeInteger(writer, scope[5], 0); + for (const v of vars) { + encodeInteger(writer, v, 0); + } + for (index++; index < scopes.length; ) { + const next = scopes[index]; + const { 0: l, 1: c } = next; + if (l > endLine || l === endLine && c >= endColumn) { + break; + } + index = _encodeOriginalScopes(scopes, index, writer, state); + } + writer.write(comma); + state[0] = encodeInteger(writer, endLine, state[0]); + encodeInteger(writer, endColumn, 0); + return index; +} +function decodeGeneratedRanges(input) { + const { length } = input; + const reader = new StringReader(input); + const ranges = []; + const stack = []; + let genLine = 0; + let definitionSourcesIndex = 0; + let definitionScopeIndex = 0; + let callsiteSourcesIndex = 0; + let callsiteLine = 0; + let callsiteColumn = 0; + let bindingLine = 0; + let bindingColumn = 0; + do { + const semi = reader.indexOf(";"); + let genColumn = 0; + for (; reader.pos < semi; reader.pos++) { + genColumn = decodeInteger(reader, genColumn); + if (!hasMoreVlq(reader, semi)) { + const last = stack.pop(); + last[2] = genLine; + last[3] = genColumn; + continue; + } + const fields = decodeInteger(reader, 0); + const hasDefinition = fields & 1; + const hasCallsite = fields & 2; + const hasScope = fields & 4; + let callsite = null; + let bindings = EMPTY; + let range; + if (hasDefinition) { + const defSourcesIndex = decodeInteger(reader, definitionSourcesIndex); + definitionScopeIndex = decodeInteger( + reader, + definitionSourcesIndex === defSourcesIndex ? definitionScopeIndex : 0 + ); + definitionSourcesIndex = defSourcesIndex; + range = [genLine, genColumn, 0, 0, defSourcesIndex, definitionScopeIndex]; + } else { + range = [genLine, genColumn, 0, 0]; + } + range.isScope = !!hasScope; + if (hasCallsite) { + const prevCsi = callsiteSourcesIndex; + const prevLine = callsiteLine; + callsiteSourcesIndex = decodeInteger(reader, callsiteSourcesIndex); + const sameSource = prevCsi === callsiteSourcesIndex; + callsiteLine = decodeInteger(reader, sameSource ? callsiteLine : 0); + callsiteColumn = decodeInteger( + reader, + sameSource && prevLine === callsiteLine ? callsiteColumn : 0 + ); + callsite = [callsiteSourcesIndex, callsiteLine, callsiteColumn]; + } + range.callsite = callsite; + if (hasMoreVlq(reader, semi)) { + bindings = []; + do { + bindingLine = genLine; + bindingColumn = genColumn; + const expressionsCount = decodeInteger(reader, 0); + let expressionRanges; + if (expressionsCount < -1) { + expressionRanges = [[decodeInteger(reader, 0)]]; + for (let i = -1; i > expressionsCount; i--) { + const prevBl = bindingLine; + bindingLine = decodeInteger(reader, bindingLine); + bindingColumn = decodeInteger(reader, bindingLine === prevBl ? bindingColumn : 0); + const expression = decodeInteger(reader, 0); + expressionRanges.push([expression, bindingLine, bindingColumn]); + } + } else { + expressionRanges = [[expressionsCount]]; + } + bindings.push(expressionRanges); + } while (hasMoreVlq(reader, semi)); + } + range.bindings = bindings; + ranges.push(range); + stack.push(range); + } + genLine++; + reader.pos = semi + 1; + } while (reader.pos < length); + return ranges; +} +function encodeGeneratedRanges(ranges) { + if (ranges.length === 0) return ""; + const writer = new StringWriter(); + for (let i = 0; i < ranges.length; ) { + i = _encodeGeneratedRanges(ranges, i, writer, [0, 0, 0, 0, 0, 0, 0]); + } + return writer.flush(); +} +function _encodeGeneratedRanges(ranges, index, writer, state) { + const range = ranges[index]; + const { + 0: startLine, + 1: startColumn, + 2: endLine, + 3: endColumn, + isScope, + callsite, + bindings + } = range; + if (state[0] < startLine) { + catchupLine(writer, state[0], startLine); + state[0] = startLine; + state[1] = 0; + } else if (index > 0) { + writer.write(comma); + } + state[1] = encodeInteger(writer, range[1], state[1]); + const fields = (range.length === 6 ? 1 : 0) | (callsite ? 2 : 0) | (isScope ? 4 : 0); + encodeInteger(writer, fields, 0); + if (range.length === 6) { + const { 4: sourcesIndex, 5: scopesIndex } = range; + if (sourcesIndex !== state[2]) { + state[3] = 0; + } + state[2] = encodeInteger(writer, sourcesIndex, state[2]); + state[3] = encodeInteger(writer, scopesIndex, state[3]); + } + if (callsite) { + const { 0: sourcesIndex, 1: callLine, 2: callColumn } = range.callsite; + if (sourcesIndex !== state[4]) { + state[5] = 0; + state[6] = 0; + } else if (callLine !== state[5]) { + state[6] = 0; + } + state[4] = encodeInteger(writer, sourcesIndex, state[4]); + state[5] = encodeInteger(writer, callLine, state[5]); + state[6] = encodeInteger(writer, callColumn, state[6]); + } + if (bindings) { + for (const binding of bindings) { + if (binding.length > 1) encodeInteger(writer, -binding.length, 0); + const expression = binding[0][0]; + encodeInteger(writer, expression, 0); + let bindingStartLine = startLine; + let bindingStartColumn = startColumn; + for (let i = 1; i < binding.length; i++) { + const expRange = binding[i]; + bindingStartLine = encodeInteger(writer, expRange[1], bindingStartLine); + bindingStartColumn = encodeInteger(writer, expRange[2], bindingStartColumn); + encodeInteger(writer, expRange[0], 0); + } + } + } + for (index++; index < ranges.length; ) { + const next = ranges[index]; + const { 0: l, 1: c } = next; + if (l > endLine || l === endLine && c >= endColumn) { + break; + } + index = _encodeGeneratedRanges(ranges, index, writer, state); + } + if (state[0] < endLine) { + catchupLine(writer, state[0], endLine); + state[0] = endLine; + state[1] = 0; + } else { + writer.write(comma); + } + state[1] = encodeInteger(writer, endColumn, state[1]); + return index; +} +function catchupLine(writer, lastLine, line) { + do { + writer.write(semicolon); + } while (++lastLine < line); +} + +// src/sourcemap-codec.ts +function decode(mappings) { + const { length } = mappings; + const reader = new StringReader(mappings); + const decoded = []; + let genColumn = 0; + let sourcesIndex = 0; + let sourceLine = 0; + let sourceColumn = 0; + let namesIndex = 0; + do { + const semi = reader.indexOf(";"); + const line = []; + let sorted = true; + let lastCol = 0; + genColumn = 0; + while (reader.pos < semi) { + let seg; + genColumn = decodeInteger(reader, genColumn); + if (genColumn < lastCol) sorted = false; + lastCol = genColumn; + if (hasMoreVlq(reader, semi)) { + sourcesIndex = decodeInteger(reader, sourcesIndex); + sourceLine = decodeInteger(reader, sourceLine); + sourceColumn = decodeInteger(reader, sourceColumn); + if (hasMoreVlq(reader, semi)) { + namesIndex = decodeInteger(reader, namesIndex); + seg = [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex]; + } else { + seg = [genColumn, sourcesIndex, sourceLine, sourceColumn]; + } + } else { + seg = [genColumn]; + } + line.push(seg); + reader.pos++; + } + if (!sorted) sort(line); + decoded.push(line); + reader.pos = semi + 1; + } while (reader.pos <= length); + return decoded; +} +function sort(line) { + line.sort(sortComparator); +} +function sortComparator(a, b) { + return a[0] - b[0]; +} +function encode(decoded) { + const writer = new StringWriter(); + let sourcesIndex = 0; + let sourceLine = 0; + let sourceColumn = 0; + let namesIndex = 0; + for (let i = 0; i < decoded.length; i++) { + const line = decoded[i]; + if (i > 0) writer.write(semicolon); + if (line.length === 0) continue; + let genColumn = 0; + for (let j = 0; j < line.length; j++) { + const segment = line[j]; + if (j > 0) writer.write(comma); + genColumn = encodeInteger(writer, segment[0], genColumn); + if (segment.length === 1) continue; + sourcesIndex = encodeInteger(writer, segment[1], sourcesIndex); + sourceLine = encodeInteger(writer, segment[2], sourceLine); + sourceColumn = encodeInteger(writer, segment[3], sourceColumn); + if (segment.length === 4) continue; + namesIndex = encodeInteger(writer, segment[4], namesIndex); + } + } + return writer.flush(); +} +export { + decode, + decodeGeneratedRanges, + decodeOriginalScopes, + encode, + encodeGeneratedRanges, + encodeOriginalScopes +}; +//# sourceMappingURL=sourcemap-codec.mjs.map diff --git a/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs.map b/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs.map new file mode 100644 index 00000000..c276844b --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs.map @@ -0,0 +1,6 @@ +{ + "version": 3, + "sources": ["../src/vlq.ts", "../src/strings.ts", "../src/scopes.ts", "../src/sourcemap-codec.ts"], + "mappings": ";AAEO,IAAM,QAAQ,IAAI,WAAW,CAAC;AAC9B,IAAM,YAAY,IAAI,WAAW,CAAC;AAEzC,IAAM,QAAQ;AACd,IAAM,YAAY,IAAI,WAAW,EAAE;AACnC,IAAM,YAAY,IAAI,WAAW,GAAG;AAEpC,SAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,QAAM,IAAI,MAAM,WAAW,CAAC;AAC5B,YAAU,CAAC,IAAI;AACf,YAAU,CAAC,IAAI;AACjB;AAEO,SAAS,cAAc,QAAsB,UAA0B;AAC5E,MAAI,QAAQ;AACZ,MAAI,QAAQ;AACZ,MAAI,UAAU;AAEd,KAAG;AACD,UAAM,IAAI,OAAO,KAAK;AACtB,cAAU,UAAU,CAAC;AACrB,cAAU,UAAU,OAAO;AAC3B,aAAS;AAAA,EACX,SAAS,UAAU;AAEnB,QAAM,eAAe,QAAQ;AAC7B,aAAW;AAEX,MAAI,cAAc;AAChB,YAAQ,cAAc,CAAC;AAAA,EACzB;AAEA,SAAO,WAAW;AACpB;AAEO,SAAS,cAAc,SAAuB,KAAa,UAA0B;AAC1F,MAAI,QAAQ,MAAM;AAElB,UAAQ,QAAQ,IAAK,CAAC,SAAS,IAAK,IAAI,SAAS;AACjD,KAAG;AACD,QAAI,UAAU,QAAQ;AACtB,eAAW;AACX,QAAI,QAAQ,EAAG,YAAW;AAC1B,YAAQ,MAAM,UAAU,OAAO,CAAC;AAAA,EAClC,SAAS,QAAQ;AAEjB,SAAO;AACT;AAEO,SAAS,WAAW,QAAsB,KAAa;AAC5D,MAAI,OAAO,OAAO,IAAK,QAAO;AAC9B,SAAO,OAAO,KAAK,MAAM;AAC3B;;;ACtDA,IAAM,YAAY,OAAO;AAGzB,IAAM,KACJ,OAAO,gBAAgB,cACH,oBAAI,YAAY,IAChC,OAAO,WAAW,cAChB;AAAA,EACE,OAAO,KAAyB;AAC9B,UAAM,MAAM,OAAO,KAAK,IAAI,QAAQ,IAAI,YAAY,IAAI,UAAU;AAClE,WAAO,IAAI,SAAS;AAAA,EACtB;AACF,IACA;AAAA,EACE,OAAO,KAAyB;AAC9B,QAAI,MAAM;AACV,aAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,aAAO,OAAO,aAAa,IAAI,CAAC,CAAC;AAAA,IACnC;AACA,WAAO;AAAA,EACT;AACF;AAED,IAAM,eAAN,MAAmB;AAAA,EAAnB;AACL,eAAM;AACN,SAAQ,MAAM;AACd,SAAQ,SAAS,IAAI,WAAW,SAAS;AAAA;AAAA,EAEzC,MAAM,GAAiB;AACrB,UAAM,EAAE,OAAO,IAAI;AACnB,WAAO,KAAK,KAAK,IAAI;AACrB,QAAI,KAAK,QAAQ,WAAW;AAC1B,WAAK,OAAO,GAAG,OAAO,MAAM;AAC5B,WAAK,MAAM;AAAA,IACb;AAAA,EACF;AAAA,EAEA,QAAgB;AACd,UAAM,EAAE,QAAQ,KAAK,IAAI,IAAI;AAC7B,WAAO,MAAM,IAAI,MAAM,GAAG,OAAO,OAAO,SAAS,GAAG,GAAG,CAAC,IAAI;AAAA,EAC9D;AACF;AAEO,IAAM,eAAN,MAAmB;AAAA,EAIxB,YAAY,QAAgB;AAH5B,eAAM;AAIJ,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,OAAe;AACb,WAAO,KAAK,OAAO,WAAW,KAAK,KAAK;AAAA,EAC1C;AAAA,EAEA,OAAe;AACb,WAAO,KAAK,OAAO,WAAW,KAAK,GAAG;AAAA,EACxC;AAAA,EAEA,QAAQ,MAAsB;AAC5B,UAAM,EAAE,QAAQ,IAAI,IAAI;AACxB,UAAM,MAAM,OAAO,QAAQ,MAAM,GAAG;AACpC,WAAO,QAAQ,KAAK,OAAO,SAAS;AAAA,EACtC;AACF;;;AC7DA,IAAM,QAAe,CAAC;AA+Bf,SAAS,qBAAqB,OAAgC;AACnE,QAAM,EAAE,OAAO,IAAI;AACnB,QAAM,SAAS,IAAI,aAAa,KAAK;AACrC,QAAM,SAA0B,CAAC;AACjC,QAAM,QAAyB,CAAC;AAChC,MAAI,OAAO;AAEX,SAAO,OAAO,MAAM,QAAQ,OAAO,OAAO;AACxC,WAAO,cAAc,QAAQ,IAAI;AACjC,UAAM,SAAS,cAAc,QAAQ,CAAC;AAEtC,QAAI,CAAC,WAAW,QAAQ,MAAM,GAAG;AAC/B,YAAM,OAAO,MAAM,IAAI;AACvB,WAAK,CAAC,IAAI;AACV,WAAK,CAAC,IAAI;AACV;AAAA,IACF;AAEA,UAAM,OAAO,cAAc,QAAQ,CAAC;AACpC,UAAM,SAAS,cAAc,QAAQ,CAAC;AACtC,UAAM,UAAU,SAAS;AAEzB,UAAM,QACJ,UAAU,CAAC,MAAM,QAAQ,GAAG,GAAG,MAAM,cAAc,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,QAAQ,GAAG,GAAG,IAAI;AAG5F,QAAI,OAAc;AAClB,QAAI,WAAW,QAAQ,MAAM,GAAG;AAC9B,aAAO,CAAC;AACR,SAAG;AACD,cAAM,YAAY,cAAc,QAAQ,CAAC;AACzC,aAAK,KAAK,SAAS;AAAA,MACrB,SAAS,WAAW,QAAQ,MAAM;AAAA,IACpC;AACA,UAAM,OAAO;AAEb,WAAO,KAAK,KAAK;AACjB,UAAM,KAAK,KAAK;AAAA,EAClB;AAEA,SAAO;AACT;AAEO,SAAS,qBAAqB,QAAiC;AACpE,QAAM,SAAS,IAAI,aAAa;AAEhC,WAAS,IAAI,GAAG,IAAI,OAAO,UAAU;AACnC,QAAI,sBAAsB,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC;AAAA,EAClD;AAEA,SAAO,OAAO,MAAM;AACtB;AAEA,SAAS,sBACP,QACA,OACA,QACA,OAGQ;AACR,QAAM,QAAQ,OAAO,KAAK;AAC1B,QAAM,EAAE,GAAG,WAAW,GAAG,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,KAAK,IAAI;AAElF,MAAI,QAAQ,EAAG,QAAO,MAAM,KAAK;AAEjC,QAAM,CAAC,IAAI,cAAc,QAAQ,WAAW,MAAM,CAAC,CAAC;AACpD,gBAAc,QAAQ,aAAa,CAAC;AACpC,gBAAc,QAAQ,MAAM,CAAC;AAE7B,QAAM,SAAS,MAAM,WAAW,IAAI,IAAS;AAC7C,gBAAc,QAAQ,QAAQ,CAAC;AAC/B,MAAI,MAAM,WAAW,EAAG,eAAc,QAAQ,MAAM,CAAC,GAAG,CAAC;AAEzD,aAAW,KAAK,MAAM;AACpB,kBAAc,QAAQ,GAAG,CAAC;AAAA,EAC5B;AAEA,OAAK,SAAS,QAAQ,OAAO,UAAU;AACrC,UAAM,OAAO,OAAO,KAAK;AACzB,UAAM,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI;AACvB,QAAI,IAAI,WAAY,MAAM,WAAW,KAAK,WAAY;AACpD;AAAA,IACF;AACA,YAAQ,sBAAsB,QAAQ,OAAO,QAAQ,KAAK;AAAA,EAC5D;AAEA,SAAO,MAAM,KAAK;AAClB,QAAM,CAAC,IAAI,cAAc,QAAQ,SAAS,MAAM,CAAC,CAAC;AAClD,gBAAc,QAAQ,WAAW,CAAC;AAElC,SAAO;AACT;AAEO,SAAS,sBAAsB,OAAiC;AACrE,QAAM,EAAE,OAAO,IAAI;AACnB,QAAM,SAAS,IAAI,aAAa,KAAK;AACrC,QAAM,SAA2B,CAAC;AAClC,QAAM,QAA0B,CAAC;AAEjC,MAAI,UAAU;AACd,MAAI,yBAAyB;AAC7B,MAAI,uBAAuB;AAC3B,MAAI,uBAAuB;AAC3B,MAAI,eAAe;AACnB,MAAI,iBAAiB;AACrB,MAAI,cAAc;AAClB,MAAI,gBAAgB;AAEpB,KAAG;AACD,UAAM,OAAO,OAAO,QAAQ,GAAG;AAC/B,QAAI,YAAY;AAEhB,WAAO,OAAO,MAAM,MAAM,OAAO,OAAO;AACtC,kBAAY,cAAc,QAAQ,SAAS;AAE3C,UAAI,CAAC,WAAW,QAAQ,IAAI,GAAG;AAC7B,cAAM,OAAO,MAAM,IAAI;AACvB,aAAK,CAAC,IAAI;AACV,aAAK,CAAC,IAAI;AACV;AAAA,MACF;AAEA,YAAM,SAAS,cAAc,QAAQ,CAAC;AACtC,YAAM,gBAAgB,SAAS;AAC/B,YAAM,cAAc,SAAS;AAC7B,YAAM,WAAW,SAAS;AAE1B,UAAI,WAA4B;AAChC,UAAI,WAAsB;AAC1B,UAAI;AACJ,UAAI,eAAe;AACjB,cAAM,kBAAkB,cAAc,QAAQ,sBAAsB;AACpE,+BAAuB;AAAA,UACrB;AAAA,UACA,2BAA2B,kBAAkB,uBAAuB;AAAA,QACtE;AAEA,iCAAyB;AACzB,gBAAQ,CAAC,SAAS,WAAW,GAAG,GAAG,iBAAiB,oBAAoB;AAAA,MAC1E,OAAO;AACL,gBAAQ,CAAC,SAAS,WAAW,GAAG,CAAC;AAAA,MACnC;AAEA,YAAM,UAAU,CAAC,CAAC;AAElB,UAAI,aAAa;AACf,cAAM,UAAU;AAChB,cAAM,WAAW;AACjB,+BAAuB,cAAc,QAAQ,oBAAoB;AACjE,cAAM,aAAa,YAAY;AAC/B,uBAAe,cAAc,QAAQ,aAAa,eAAe,CAAC;AAClE,yBAAiB;AAAA,UACf;AAAA,UACA,cAAc,aAAa,eAAe,iBAAiB;AAAA,QAC7D;AAEA,mBAAW,CAAC,sBAAsB,cAAc,cAAc;AAAA,MAChE;AACA,YAAM,WAAW;AAEjB,UAAI,WAAW,QAAQ,IAAI,GAAG;AAC5B,mBAAW,CAAC;AACZ,WAAG;AACD,wBAAc;AACd,0BAAgB;AAChB,gBAAM,mBAAmB,cAAc,QAAQ,CAAC;AAChD,cAAI;AACJ,cAAI,mBAAmB,IAAI;AACzB,+BAAmB,CAAC,CAAC,cAAc,QAAQ,CAAC,CAAC,CAAC;AAC9C,qBAAS,IAAI,IAAI,IAAI,kBAAkB,KAAK;AAC1C,oBAAM,SAAS;AACf,4BAAc,cAAc,QAAQ,WAAW;AAC/C,8BAAgB,cAAc,QAAQ,gBAAgB,SAAS,gBAAgB,CAAC;AAChF,oBAAM,aAAa,cAAc,QAAQ,CAAC;AAC1C,+BAAiB,KAAK,CAAC,YAAY,aAAa,aAAa,CAAC;AAAA,YAChE;AAAA,UACF,OAAO;AACL,+BAAmB,CAAC,CAAC,gBAAgB,CAAC;AAAA,UACxC;AACA,mBAAS,KAAK,gBAAgB;AAAA,QAChC,SAAS,WAAW,QAAQ,IAAI;AAAA,MAClC;AACA,YAAM,WAAW;AAEjB,aAAO,KAAK,KAAK;AACjB,YAAM,KAAK,KAAK;AAAA,IAClB;AAEA;AACA,WAAO,MAAM,OAAO;AAAA,EACtB,SAAS,OAAO,MAAM;AAEtB,SAAO;AACT;AAEO,SAAS,sBAAsB,QAAkC;AACtE,MAAI,OAAO,WAAW,EAAG,QAAO;AAEhC,QAAM,SAAS,IAAI,aAAa;AAEhC,WAAS,IAAI,GAAG,IAAI,OAAO,UAAU;AACnC,QAAI,uBAAuB,QAAQ,GAAG,QAAQ,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AAAA,EACrE;AAEA,SAAO,OAAO,MAAM;AACtB;AAEA,SAAS,uBACP,QACA,OACA,QACA,OASQ;AACR,QAAM,QAAQ,OAAO,KAAK;AAC1B,QAAM;AAAA,IACJ,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,MAAI,MAAM,CAAC,IAAI,WAAW;AACxB,gBAAY,QAAQ,MAAM,CAAC,GAAG,SAAS;AACvC,UAAM,CAAC,IAAI;AACX,UAAM,CAAC,IAAI;AAAA,EACb,WAAW,QAAQ,GAAG;AACpB,WAAO,MAAM,KAAK;AAAA,EACpB;AAEA,QAAM,CAAC,IAAI,cAAc,QAAQ,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;AAEnD,QAAM,UACH,MAAM,WAAW,IAAI,IAAS,MAAM,WAAW,IAAS,MAAM,UAAU,IAAS;AACpF,gBAAc,QAAQ,QAAQ,CAAC;AAE/B,MAAI,MAAM,WAAW,GAAG;AACtB,UAAM,EAAE,GAAG,cAAc,GAAG,YAAY,IAAI;AAC5C,QAAI,iBAAiB,MAAM,CAAC,GAAG;AAC7B,YAAM,CAAC,IAAI;AAAA,IACb;AACA,UAAM,CAAC,IAAI,cAAc,QAAQ,cAAc,MAAM,CAAC,CAAC;AACvD,UAAM,CAAC,IAAI,cAAc,QAAQ,aAAa,MAAM,CAAC,CAAC;AAAA,EACxD;AAEA,MAAI,UAAU;AACZ,UAAM,EAAE,GAAG,cAAc,GAAG,UAAU,GAAG,WAAW,IAAI,MAAM;AAC9D,QAAI,iBAAiB,MAAM,CAAC,GAAG;AAC7B,YAAM,CAAC,IAAI;AACX,YAAM,CAAC,IAAI;AAAA,IACb,WAAW,aAAa,MAAM,CAAC,GAAG;AAChC,YAAM,CAAC,IAAI;AAAA,IACb;AACA,UAAM,CAAC,IAAI,cAAc,QAAQ,cAAc,MAAM,CAAC,CAAC;AACvD,UAAM,CAAC,IAAI,cAAc,QAAQ,UAAU,MAAM,CAAC,CAAC;AACnD,UAAM,CAAC,IAAI,cAAc,QAAQ,YAAY,MAAM,CAAC,CAAC;AAAA,EACvD;AAEA,MAAI,UAAU;AACZ,eAAW,WAAW,UAAU;AAC9B,UAAI,QAAQ,SAAS,EAAG,eAAc,QAAQ,CAAC,QAAQ,QAAQ,CAAC;AAChE,YAAM,aAAa,QAAQ,CAAC,EAAE,CAAC;AAC/B,oBAAc,QAAQ,YAAY,CAAC;AACnC,UAAI,mBAAmB;AACvB,UAAI,qBAAqB;AACzB,eAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,cAAM,WAAW,QAAQ,CAAC;AAC1B,2BAAmB,cAAc,QAAQ,SAAS,CAAC,GAAI,gBAAgB;AACvE,6BAAqB,cAAc,QAAQ,SAAS,CAAC,GAAI,kBAAkB;AAC3E,sBAAc,QAAQ,SAAS,CAAC,GAAI,CAAC;AAAA,MACvC;AAAA,IACF;AAAA,EACF;AAEA,OAAK,SAAS,QAAQ,OAAO,UAAU;AACrC,UAAM,OAAO,OAAO,KAAK;AACzB,UAAM,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI;AACvB,QAAI,IAAI,WAAY,MAAM,WAAW,KAAK,WAAY;AACpD;AAAA,IACF;AACA,YAAQ,uBAAuB,QAAQ,OAAO,QAAQ,KAAK;AAAA,EAC7D;AAEA,MAAI,MAAM,CAAC,IAAI,SAAS;AACtB,gBAAY,QAAQ,MAAM,CAAC,GAAG,OAAO;AACrC,UAAM,CAAC,IAAI;AACX,UAAM,CAAC,IAAI;AAAA,EACb,OAAO;AACL,WAAO,MAAM,KAAK;AAAA,EACpB;AACA,QAAM,CAAC,IAAI,cAAc,QAAQ,WAAW,MAAM,CAAC,CAAC;AAEpD,SAAO;AACT;AAEA,SAAS,YAAY,QAAsB,UAAkB,MAAc;AACzE,KAAG;AACD,WAAO,MAAM,SAAS;AAAA,EACxB,SAAS,EAAE,WAAW;AACxB;;;ACtUO,SAAS,OAAO,UAAqC;AAC1D,QAAM,EAAE,OAAO,IAAI;AACnB,QAAM,SAAS,IAAI,aAAa,QAAQ;AACxC,QAAM,UAA6B,CAAC;AACpC,MAAI,YAAY;AAChB,MAAI,eAAe;AACnB,MAAI,aAAa;AACjB,MAAI,eAAe;AACnB,MAAI,aAAa;AAEjB,KAAG;AACD,UAAM,OAAO,OAAO,QAAQ,GAAG;AAC/B,UAAM,OAAsB,CAAC;AAC7B,QAAI,SAAS;AACb,QAAI,UAAU;AACd,gBAAY;AAEZ,WAAO,OAAO,MAAM,MAAM;AACxB,UAAI;AAEJ,kBAAY,cAAc,QAAQ,SAAS;AAC3C,UAAI,YAAY,QAAS,UAAS;AAClC,gBAAU;AAEV,UAAI,WAAW,QAAQ,IAAI,GAAG;AAC5B,uBAAe,cAAc,QAAQ,YAAY;AACjD,qBAAa,cAAc,QAAQ,UAAU;AAC7C,uBAAe,cAAc,QAAQ,YAAY;AAEjD,YAAI,WAAW,QAAQ,IAAI,GAAG;AAC5B,uBAAa,cAAc,QAAQ,UAAU;AAC7C,gBAAM,CAAC,WAAW,cAAc,YAAY,cAAc,UAAU;AAAA,QACtE,OAAO;AACL,gBAAM,CAAC,WAAW,cAAc,YAAY,YAAY;AAAA,QAC1D;AAAA,MACF,OAAO;AACL,cAAM,CAAC,SAAS;AAAA,MAClB;AAEA,WAAK,KAAK,GAAG;AACb,aAAO;AAAA,IACT;AAEA,QAAI,CAAC,OAAQ,MAAK,IAAI;AACtB,YAAQ,KAAK,IAAI;AACjB,WAAO,MAAM,OAAO;AAAA,EACtB,SAAS,OAAO,OAAO;AAEvB,SAAO;AACT;AAEA,SAAS,KAAK,MAA0B;AACtC,OAAK,KAAK,cAAc;AAC1B;AAEA,SAAS,eAAe,GAAqB,GAA6B;AACxE,SAAO,EAAE,CAAC,IAAI,EAAE,CAAC;AACnB;AAIO,SAAS,OAAO,SAA8C;AACnE,QAAM,SAAS,IAAI,aAAa;AAChC,MAAI,eAAe;AACnB,MAAI,aAAa;AACjB,MAAI,eAAe;AACnB,MAAI,aAAa;AAEjB,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,UAAM,OAAO,QAAQ,CAAC;AACtB,QAAI,IAAI,EAAG,QAAO,MAAM,SAAS;AACjC,QAAI,KAAK,WAAW,EAAG;AAEvB,QAAI,YAAY;AAEhB,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,YAAM,UAAU,KAAK,CAAC;AACtB,UAAI,IAAI,EAAG,QAAO,MAAM,KAAK;AAE7B,kBAAY,cAAc,QAAQ,QAAQ,CAAC,GAAG,SAAS;AAEvD,UAAI,QAAQ,WAAW,EAAG;AAC1B,qBAAe,cAAc,QAAQ,QAAQ,CAAC,GAAG,YAAY;AAC7D,mBAAa,cAAc,QAAQ,QAAQ,CAAC,GAAG,UAAU;AACzD,qBAAe,cAAc,QAAQ,QAAQ,CAAC,GAAG,YAAY;AAE7D,UAAI,QAAQ,WAAW,EAAG;AAC1B,mBAAa,cAAc,QAAQ,QAAQ,CAAC,GAAG,UAAU;AAAA,IAC3D;AAAA,EACF;AAEA,SAAO,OAAO,MAAM;AACtB;", + "names": [] +} diff --git a/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js b/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js new file mode 100644 index 00000000..2d8e459f --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js @@ -0,0 +1,464 @@ +(function (global, factory) { + if (typeof exports === 'object' && typeof module !== 'undefined') { + factory(module); + module.exports = def(module); + } else if (typeof define === 'function' && define.amd) { + define(['module'], function(mod) { + factory.apply(this, arguments); + mod.exports = def(mod); + }); + } else { + const mod = { exports: {} }; + factory(mod); + global = typeof globalThis !== 'undefined' ? globalThis : global || self; + global.sourcemapCodec = def(mod); + } + function def(m) { return 'default' in m.exports ? m.exports.default : m.exports; } +})(this, (function (module) { +"use strict"; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/sourcemap-codec.ts +var sourcemap_codec_exports = {}; +__export(sourcemap_codec_exports, { + decode: () => decode, + decodeGeneratedRanges: () => decodeGeneratedRanges, + decodeOriginalScopes: () => decodeOriginalScopes, + encode: () => encode, + encodeGeneratedRanges: () => encodeGeneratedRanges, + encodeOriginalScopes: () => encodeOriginalScopes +}); +module.exports = __toCommonJS(sourcemap_codec_exports); + +// src/vlq.ts +var comma = ",".charCodeAt(0); +var semicolon = ";".charCodeAt(0); +var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; +var intToChar = new Uint8Array(64); +var charToInt = new Uint8Array(128); +for (let i = 0; i < chars.length; i++) { + const c = chars.charCodeAt(i); + intToChar[i] = c; + charToInt[c] = i; +} +function decodeInteger(reader, relative) { + let value = 0; + let shift = 0; + let integer = 0; + do { + const c = reader.next(); + integer = charToInt[c]; + value |= (integer & 31) << shift; + shift += 5; + } while (integer & 32); + const shouldNegate = value & 1; + value >>>= 1; + if (shouldNegate) { + value = -2147483648 | -value; + } + return relative + value; +} +function encodeInteger(builder, num, relative) { + let delta = num - relative; + delta = delta < 0 ? -delta << 1 | 1 : delta << 1; + do { + let clamped = delta & 31; + delta >>>= 5; + if (delta > 0) clamped |= 32; + builder.write(intToChar[clamped]); + } while (delta > 0); + return num; +} +function hasMoreVlq(reader, max) { + if (reader.pos >= max) return false; + return reader.peek() !== comma; +} + +// src/strings.ts +var bufLength = 1024 * 16; +var td = typeof TextDecoder !== "undefined" ? /* @__PURE__ */ new TextDecoder() : typeof Buffer !== "undefined" ? { + decode(buf) { + const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength); + return out.toString(); + } +} : { + decode(buf) { + let out = ""; + for (let i = 0; i < buf.length; i++) { + out += String.fromCharCode(buf[i]); + } + return out; + } +}; +var StringWriter = class { + constructor() { + this.pos = 0; + this.out = ""; + this.buffer = new Uint8Array(bufLength); + } + write(v) { + const { buffer } = this; + buffer[this.pos++] = v; + if (this.pos === bufLength) { + this.out += td.decode(buffer); + this.pos = 0; + } + } + flush() { + const { buffer, out, pos } = this; + return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out; + } +}; +var StringReader = class { + constructor(buffer) { + this.pos = 0; + this.buffer = buffer; + } + next() { + return this.buffer.charCodeAt(this.pos++); + } + peek() { + return this.buffer.charCodeAt(this.pos); + } + indexOf(char) { + const { buffer, pos } = this; + const idx = buffer.indexOf(char, pos); + return idx === -1 ? buffer.length : idx; + } +}; + +// src/scopes.ts +var EMPTY = []; +function decodeOriginalScopes(input) { + const { length } = input; + const reader = new StringReader(input); + const scopes = []; + const stack = []; + let line = 0; + for (; reader.pos < length; reader.pos++) { + line = decodeInteger(reader, line); + const column = decodeInteger(reader, 0); + if (!hasMoreVlq(reader, length)) { + const last = stack.pop(); + last[2] = line; + last[3] = column; + continue; + } + const kind = decodeInteger(reader, 0); + const fields = decodeInteger(reader, 0); + const hasName = fields & 1; + const scope = hasName ? [line, column, 0, 0, kind, decodeInteger(reader, 0)] : [line, column, 0, 0, kind]; + let vars = EMPTY; + if (hasMoreVlq(reader, length)) { + vars = []; + do { + const varsIndex = decodeInteger(reader, 0); + vars.push(varsIndex); + } while (hasMoreVlq(reader, length)); + } + scope.vars = vars; + scopes.push(scope); + stack.push(scope); + } + return scopes; +} +function encodeOriginalScopes(scopes) { + const writer = new StringWriter(); + for (let i = 0; i < scopes.length; ) { + i = _encodeOriginalScopes(scopes, i, writer, [0]); + } + return writer.flush(); +} +function _encodeOriginalScopes(scopes, index, writer, state) { + const scope = scopes[index]; + const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, 4: kind, vars } = scope; + if (index > 0) writer.write(comma); + state[0] = encodeInteger(writer, startLine, state[0]); + encodeInteger(writer, startColumn, 0); + encodeInteger(writer, kind, 0); + const fields = scope.length === 6 ? 1 : 0; + encodeInteger(writer, fields, 0); + if (scope.length === 6) encodeInteger(writer, scope[5], 0); + for (const v of vars) { + encodeInteger(writer, v, 0); + } + for (index++; index < scopes.length; ) { + const next = scopes[index]; + const { 0: l, 1: c } = next; + if (l > endLine || l === endLine && c >= endColumn) { + break; + } + index = _encodeOriginalScopes(scopes, index, writer, state); + } + writer.write(comma); + state[0] = encodeInteger(writer, endLine, state[0]); + encodeInteger(writer, endColumn, 0); + return index; +} +function decodeGeneratedRanges(input) { + const { length } = input; + const reader = new StringReader(input); + const ranges = []; + const stack = []; + let genLine = 0; + let definitionSourcesIndex = 0; + let definitionScopeIndex = 0; + let callsiteSourcesIndex = 0; + let callsiteLine = 0; + let callsiteColumn = 0; + let bindingLine = 0; + let bindingColumn = 0; + do { + const semi = reader.indexOf(";"); + let genColumn = 0; + for (; reader.pos < semi; reader.pos++) { + genColumn = decodeInteger(reader, genColumn); + if (!hasMoreVlq(reader, semi)) { + const last = stack.pop(); + last[2] = genLine; + last[3] = genColumn; + continue; + } + const fields = decodeInteger(reader, 0); + const hasDefinition = fields & 1; + const hasCallsite = fields & 2; + const hasScope = fields & 4; + let callsite = null; + let bindings = EMPTY; + let range; + if (hasDefinition) { + const defSourcesIndex = decodeInteger(reader, definitionSourcesIndex); + definitionScopeIndex = decodeInteger( + reader, + definitionSourcesIndex === defSourcesIndex ? definitionScopeIndex : 0 + ); + definitionSourcesIndex = defSourcesIndex; + range = [genLine, genColumn, 0, 0, defSourcesIndex, definitionScopeIndex]; + } else { + range = [genLine, genColumn, 0, 0]; + } + range.isScope = !!hasScope; + if (hasCallsite) { + const prevCsi = callsiteSourcesIndex; + const prevLine = callsiteLine; + callsiteSourcesIndex = decodeInteger(reader, callsiteSourcesIndex); + const sameSource = prevCsi === callsiteSourcesIndex; + callsiteLine = decodeInteger(reader, sameSource ? callsiteLine : 0); + callsiteColumn = decodeInteger( + reader, + sameSource && prevLine === callsiteLine ? callsiteColumn : 0 + ); + callsite = [callsiteSourcesIndex, callsiteLine, callsiteColumn]; + } + range.callsite = callsite; + if (hasMoreVlq(reader, semi)) { + bindings = []; + do { + bindingLine = genLine; + bindingColumn = genColumn; + const expressionsCount = decodeInteger(reader, 0); + let expressionRanges; + if (expressionsCount < -1) { + expressionRanges = [[decodeInteger(reader, 0)]]; + for (let i = -1; i > expressionsCount; i--) { + const prevBl = bindingLine; + bindingLine = decodeInteger(reader, bindingLine); + bindingColumn = decodeInteger(reader, bindingLine === prevBl ? bindingColumn : 0); + const expression = decodeInteger(reader, 0); + expressionRanges.push([expression, bindingLine, bindingColumn]); + } + } else { + expressionRanges = [[expressionsCount]]; + } + bindings.push(expressionRanges); + } while (hasMoreVlq(reader, semi)); + } + range.bindings = bindings; + ranges.push(range); + stack.push(range); + } + genLine++; + reader.pos = semi + 1; + } while (reader.pos < length); + return ranges; +} +function encodeGeneratedRanges(ranges) { + if (ranges.length === 0) return ""; + const writer = new StringWriter(); + for (let i = 0; i < ranges.length; ) { + i = _encodeGeneratedRanges(ranges, i, writer, [0, 0, 0, 0, 0, 0, 0]); + } + return writer.flush(); +} +function _encodeGeneratedRanges(ranges, index, writer, state) { + const range = ranges[index]; + const { + 0: startLine, + 1: startColumn, + 2: endLine, + 3: endColumn, + isScope, + callsite, + bindings + } = range; + if (state[0] < startLine) { + catchupLine(writer, state[0], startLine); + state[0] = startLine; + state[1] = 0; + } else if (index > 0) { + writer.write(comma); + } + state[1] = encodeInteger(writer, range[1], state[1]); + const fields = (range.length === 6 ? 1 : 0) | (callsite ? 2 : 0) | (isScope ? 4 : 0); + encodeInteger(writer, fields, 0); + if (range.length === 6) { + const { 4: sourcesIndex, 5: scopesIndex } = range; + if (sourcesIndex !== state[2]) { + state[3] = 0; + } + state[2] = encodeInteger(writer, sourcesIndex, state[2]); + state[3] = encodeInteger(writer, scopesIndex, state[3]); + } + if (callsite) { + const { 0: sourcesIndex, 1: callLine, 2: callColumn } = range.callsite; + if (sourcesIndex !== state[4]) { + state[5] = 0; + state[6] = 0; + } else if (callLine !== state[5]) { + state[6] = 0; + } + state[4] = encodeInteger(writer, sourcesIndex, state[4]); + state[5] = encodeInteger(writer, callLine, state[5]); + state[6] = encodeInteger(writer, callColumn, state[6]); + } + if (bindings) { + for (const binding of bindings) { + if (binding.length > 1) encodeInteger(writer, -binding.length, 0); + const expression = binding[0][0]; + encodeInteger(writer, expression, 0); + let bindingStartLine = startLine; + let bindingStartColumn = startColumn; + for (let i = 1; i < binding.length; i++) { + const expRange = binding[i]; + bindingStartLine = encodeInteger(writer, expRange[1], bindingStartLine); + bindingStartColumn = encodeInteger(writer, expRange[2], bindingStartColumn); + encodeInteger(writer, expRange[0], 0); + } + } + } + for (index++; index < ranges.length; ) { + const next = ranges[index]; + const { 0: l, 1: c } = next; + if (l > endLine || l === endLine && c >= endColumn) { + break; + } + index = _encodeGeneratedRanges(ranges, index, writer, state); + } + if (state[0] < endLine) { + catchupLine(writer, state[0], endLine); + state[0] = endLine; + state[1] = 0; + } else { + writer.write(comma); + } + state[1] = encodeInteger(writer, endColumn, state[1]); + return index; +} +function catchupLine(writer, lastLine, line) { + do { + writer.write(semicolon); + } while (++lastLine < line); +} + +// src/sourcemap-codec.ts +function decode(mappings) { + const { length } = mappings; + const reader = new StringReader(mappings); + const decoded = []; + let genColumn = 0; + let sourcesIndex = 0; + let sourceLine = 0; + let sourceColumn = 0; + let namesIndex = 0; + do { + const semi = reader.indexOf(";"); + const line = []; + let sorted = true; + let lastCol = 0; + genColumn = 0; + while (reader.pos < semi) { + let seg; + genColumn = decodeInteger(reader, genColumn); + if (genColumn < lastCol) sorted = false; + lastCol = genColumn; + if (hasMoreVlq(reader, semi)) { + sourcesIndex = decodeInteger(reader, sourcesIndex); + sourceLine = decodeInteger(reader, sourceLine); + sourceColumn = decodeInteger(reader, sourceColumn); + if (hasMoreVlq(reader, semi)) { + namesIndex = decodeInteger(reader, namesIndex); + seg = [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex]; + } else { + seg = [genColumn, sourcesIndex, sourceLine, sourceColumn]; + } + } else { + seg = [genColumn]; + } + line.push(seg); + reader.pos++; + } + if (!sorted) sort(line); + decoded.push(line); + reader.pos = semi + 1; + } while (reader.pos <= length); + return decoded; +} +function sort(line) { + line.sort(sortComparator); +} +function sortComparator(a, b) { + return a[0] - b[0]; +} +function encode(decoded) { + const writer = new StringWriter(); + let sourcesIndex = 0; + let sourceLine = 0; + let sourceColumn = 0; + let namesIndex = 0; + for (let i = 0; i < decoded.length; i++) { + const line = decoded[i]; + if (i > 0) writer.write(semicolon); + if (line.length === 0) continue; + let genColumn = 0; + for (let j = 0; j < line.length; j++) { + const segment = line[j]; + if (j > 0) writer.write(comma); + genColumn = encodeInteger(writer, segment[0], genColumn); + if (segment.length === 1) continue; + sourcesIndex = encodeInteger(writer, segment[1], sourcesIndex); + sourceLine = encodeInteger(writer, segment[2], sourceLine); + sourceColumn = encodeInteger(writer, segment[3], sourceColumn); + if (segment.length === 4) continue; + namesIndex = encodeInteger(writer, segment[4], namesIndex); + } + } + return writer.flush(); +} +})); +//# sourceMappingURL=sourcemap-codec.umd.js.map diff --git a/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js.map b/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js.map new file mode 100644 index 00000000..abc18d28 --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js.map @@ -0,0 +1,6 @@ +{ + "version": 3, + "sources": ["../src/sourcemap-codec.ts", "../src/vlq.ts", "../src/strings.ts", "../src/scopes.ts"], + "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACEO,IAAM,QAAQ,IAAI,WAAW,CAAC;AAC9B,IAAM,YAAY,IAAI,WAAW,CAAC;AAEzC,IAAM,QAAQ;AACd,IAAM,YAAY,IAAI,WAAW,EAAE;AACnC,IAAM,YAAY,IAAI,WAAW,GAAG;AAEpC,SAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,QAAM,IAAI,MAAM,WAAW,CAAC;AAC5B,YAAU,CAAC,IAAI;AACf,YAAU,CAAC,IAAI;AACjB;AAEO,SAAS,cAAc,QAAsB,UAA0B;AAC5E,MAAI,QAAQ;AACZ,MAAI,QAAQ;AACZ,MAAI,UAAU;AAEd,KAAG;AACD,UAAM,IAAI,OAAO,KAAK;AACtB,cAAU,UAAU,CAAC;AACrB,cAAU,UAAU,OAAO;AAC3B,aAAS;AAAA,EACX,SAAS,UAAU;AAEnB,QAAM,eAAe,QAAQ;AAC7B,aAAW;AAEX,MAAI,cAAc;AAChB,YAAQ,cAAc,CAAC;AAAA,EACzB;AAEA,SAAO,WAAW;AACpB;AAEO,SAAS,cAAc,SAAuB,KAAa,UAA0B;AAC1F,MAAI,QAAQ,MAAM;AAElB,UAAQ,QAAQ,IAAK,CAAC,SAAS,IAAK,IAAI,SAAS;AACjD,KAAG;AACD,QAAI,UAAU,QAAQ;AACtB,eAAW;AACX,QAAI,QAAQ,EAAG,YAAW;AAC1B,YAAQ,MAAM,UAAU,OAAO,CAAC;AAAA,EAClC,SAAS,QAAQ;AAEjB,SAAO;AACT;AAEO,SAAS,WAAW,QAAsB,KAAa;AAC5D,MAAI,OAAO,OAAO,IAAK,QAAO;AAC9B,SAAO,OAAO,KAAK,MAAM;AAC3B;;;ACtDA,IAAM,YAAY,OAAO;AAGzB,IAAM,KACJ,OAAO,gBAAgB,cACH,oBAAI,YAAY,IAChC,OAAO,WAAW,cAChB;AAAA,EACE,OAAO,KAAyB;AAC9B,UAAM,MAAM,OAAO,KAAK,IAAI,QAAQ,IAAI,YAAY,IAAI,UAAU;AAClE,WAAO,IAAI,SAAS;AAAA,EACtB;AACF,IACA;AAAA,EACE,OAAO,KAAyB;AAC9B,QAAI,MAAM;AACV,aAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,aAAO,OAAO,aAAa,IAAI,CAAC,CAAC;AAAA,IACnC;AACA,WAAO;AAAA,EACT;AACF;AAED,IAAM,eAAN,MAAmB;AAAA,EAAnB;AACL,eAAM;AACN,SAAQ,MAAM;AACd,SAAQ,SAAS,IAAI,WAAW,SAAS;AAAA;AAAA,EAEzC,MAAM,GAAiB;AACrB,UAAM,EAAE,OAAO,IAAI;AACnB,WAAO,KAAK,KAAK,IAAI;AACrB,QAAI,KAAK,QAAQ,WAAW;AAC1B,WAAK,OAAO,GAAG,OAAO,MAAM;AAC5B,WAAK,MAAM;AAAA,IACb;AAAA,EACF;AAAA,EAEA,QAAgB;AACd,UAAM,EAAE,QAAQ,KAAK,IAAI,IAAI;AAC7B,WAAO,MAAM,IAAI,MAAM,GAAG,OAAO,OAAO,SAAS,GAAG,GAAG,CAAC,IAAI;AAAA,EAC9D;AACF;AAEO,IAAM,eAAN,MAAmB;AAAA,EAIxB,YAAY,QAAgB;AAH5B,eAAM;AAIJ,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,OAAe;AACb,WAAO,KAAK,OAAO,WAAW,KAAK,KAAK;AAAA,EAC1C;AAAA,EAEA,OAAe;AACb,WAAO,KAAK,OAAO,WAAW,KAAK,GAAG;AAAA,EACxC;AAAA,EAEA,QAAQ,MAAsB;AAC5B,UAAM,EAAE,QAAQ,IAAI,IAAI;AACxB,UAAM,MAAM,OAAO,QAAQ,MAAM,GAAG;AACpC,WAAO,QAAQ,KAAK,OAAO,SAAS;AAAA,EACtC;AACF;;;AC7DA,IAAM,QAAe,CAAC;AA+Bf,SAAS,qBAAqB,OAAgC;AACnE,QAAM,EAAE,OAAO,IAAI;AACnB,QAAM,SAAS,IAAI,aAAa,KAAK;AACrC,QAAM,SAA0B,CAAC;AACjC,QAAM,QAAyB,CAAC;AAChC,MAAI,OAAO;AAEX,SAAO,OAAO,MAAM,QAAQ,OAAO,OAAO;AACxC,WAAO,cAAc,QAAQ,IAAI;AACjC,UAAM,SAAS,cAAc,QAAQ,CAAC;AAEtC,QAAI,CAAC,WAAW,QAAQ,MAAM,GAAG;AAC/B,YAAM,OAAO,MAAM,IAAI;AACvB,WAAK,CAAC,IAAI;AACV,WAAK,CAAC,IAAI;AACV;AAAA,IACF;AAEA,UAAM,OAAO,cAAc,QAAQ,CAAC;AACpC,UAAM,SAAS,cAAc,QAAQ,CAAC;AACtC,UAAM,UAAU,SAAS;AAEzB,UAAM,QACJ,UAAU,CAAC,MAAM,QAAQ,GAAG,GAAG,MAAM,cAAc,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,QAAQ,GAAG,GAAG,IAAI;AAG5F,QAAI,OAAc;AAClB,QAAI,WAAW,QAAQ,MAAM,GAAG;AAC9B,aAAO,CAAC;AACR,SAAG;AACD,cAAM,YAAY,cAAc,QAAQ,CAAC;AACzC,aAAK,KAAK,SAAS;AAAA,MACrB,SAAS,WAAW,QAAQ,MAAM;AAAA,IACpC;AACA,UAAM,OAAO;AAEb,WAAO,KAAK,KAAK;AACjB,UAAM,KAAK,KAAK;AAAA,EAClB;AAEA,SAAO;AACT;AAEO,SAAS,qBAAqB,QAAiC;AACpE,QAAM,SAAS,IAAI,aAAa;AAEhC,WAAS,IAAI,GAAG,IAAI,OAAO,UAAU;AACnC,QAAI,sBAAsB,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC;AAAA,EAClD;AAEA,SAAO,OAAO,MAAM;AACtB;AAEA,SAAS,sBACP,QACA,OACA,QACA,OAGQ;AACR,QAAM,QAAQ,OAAO,KAAK;AAC1B,QAAM,EAAE,GAAG,WAAW,GAAG,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,KAAK,IAAI;AAElF,MAAI,QAAQ,EAAG,QAAO,MAAM,KAAK;AAEjC,QAAM,CAAC,IAAI,cAAc,QAAQ,WAAW,MAAM,CAAC,CAAC;AACpD,gBAAc,QAAQ,aAAa,CAAC;AACpC,gBAAc,QAAQ,MAAM,CAAC;AAE7B,QAAM,SAAS,MAAM,WAAW,IAAI,IAAS;AAC7C,gBAAc,QAAQ,QAAQ,CAAC;AAC/B,MAAI,MAAM,WAAW,EAAG,eAAc,QAAQ,MAAM,CAAC,GAAG,CAAC;AAEzD,aAAW,KAAK,MAAM;AACpB,kBAAc,QAAQ,GAAG,CAAC;AAAA,EAC5B;AAEA,OAAK,SAAS,QAAQ,OAAO,UAAU;AACrC,UAAM,OAAO,OAAO,KAAK;AACzB,UAAM,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI;AACvB,QAAI,IAAI,WAAY,MAAM,WAAW,KAAK,WAAY;AACpD;AAAA,IACF;AACA,YAAQ,sBAAsB,QAAQ,OAAO,QAAQ,KAAK;AAAA,EAC5D;AAEA,SAAO,MAAM,KAAK;AAClB,QAAM,CAAC,IAAI,cAAc,QAAQ,SAAS,MAAM,CAAC,CAAC;AAClD,gBAAc,QAAQ,WAAW,CAAC;AAElC,SAAO;AACT;AAEO,SAAS,sBAAsB,OAAiC;AACrE,QAAM,EAAE,OAAO,IAAI;AACnB,QAAM,SAAS,IAAI,aAAa,KAAK;AACrC,QAAM,SAA2B,CAAC;AAClC,QAAM,QAA0B,CAAC;AAEjC,MAAI,UAAU;AACd,MAAI,yBAAyB;AAC7B,MAAI,uBAAuB;AAC3B,MAAI,uBAAuB;AAC3B,MAAI,eAAe;AACnB,MAAI,iBAAiB;AACrB,MAAI,cAAc;AAClB,MAAI,gBAAgB;AAEpB,KAAG;AACD,UAAM,OAAO,OAAO,QAAQ,GAAG;AAC/B,QAAI,YAAY;AAEhB,WAAO,OAAO,MAAM,MAAM,OAAO,OAAO;AACtC,kBAAY,cAAc,QAAQ,SAAS;AAE3C,UAAI,CAAC,WAAW,QAAQ,IAAI,GAAG;AAC7B,cAAM,OAAO,MAAM,IAAI;AACvB,aAAK,CAAC,IAAI;AACV,aAAK,CAAC,IAAI;AACV;AAAA,MACF;AAEA,YAAM,SAAS,cAAc,QAAQ,CAAC;AACtC,YAAM,gBAAgB,SAAS;AAC/B,YAAM,cAAc,SAAS;AAC7B,YAAM,WAAW,SAAS;AAE1B,UAAI,WAA4B;AAChC,UAAI,WAAsB;AAC1B,UAAI;AACJ,UAAI,eAAe;AACjB,cAAM,kBAAkB,cAAc,QAAQ,sBAAsB;AACpE,+BAAuB;AAAA,UACrB;AAAA,UACA,2BAA2B,kBAAkB,uBAAuB;AAAA,QACtE;AAEA,iCAAyB;AACzB,gBAAQ,CAAC,SAAS,WAAW,GAAG,GAAG,iBAAiB,oBAAoB;AAAA,MAC1E,OAAO;AACL,gBAAQ,CAAC,SAAS,WAAW,GAAG,CAAC;AAAA,MACnC;AAEA,YAAM,UAAU,CAAC,CAAC;AAElB,UAAI,aAAa;AACf,cAAM,UAAU;AAChB,cAAM,WAAW;AACjB,+BAAuB,cAAc,QAAQ,oBAAoB;AACjE,cAAM,aAAa,YAAY;AAC/B,uBAAe,cAAc,QAAQ,aAAa,eAAe,CAAC;AAClE,yBAAiB;AAAA,UACf;AAAA,UACA,cAAc,aAAa,eAAe,iBAAiB;AAAA,QAC7D;AAEA,mBAAW,CAAC,sBAAsB,cAAc,cAAc;AAAA,MAChE;AACA,YAAM,WAAW;AAEjB,UAAI,WAAW,QAAQ,IAAI,GAAG;AAC5B,mBAAW,CAAC;AACZ,WAAG;AACD,wBAAc;AACd,0BAAgB;AAChB,gBAAM,mBAAmB,cAAc,QAAQ,CAAC;AAChD,cAAI;AACJ,cAAI,mBAAmB,IAAI;AACzB,+BAAmB,CAAC,CAAC,cAAc,QAAQ,CAAC,CAAC,CAAC;AAC9C,qBAAS,IAAI,IAAI,IAAI,kBAAkB,KAAK;AAC1C,oBAAM,SAAS;AACf,4BAAc,cAAc,QAAQ,WAAW;AAC/C,8BAAgB,cAAc,QAAQ,gBAAgB,SAAS,gBAAgB,CAAC;AAChF,oBAAM,aAAa,cAAc,QAAQ,CAAC;AAC1C,+BAAiB,KAAK,CAAC,YAAY,aAAa,aAAa,CAAC;AAAA,YAChE;AAAA,UACF,OAAO;AACL,+BAAmB,CAAC,CAAC,gBAAgB,CAAC;AAAA,UACxC;AACA,mBAAS,KAAK,gBAAgB;AAAA,QAChC,SAAS,WAAW,QAAQ,IAAI;AAAA,MAClC;AACA,YAAM,WAAW;AAEjB,aAAO,KAAK,KAAK;AACjB,YAAM,KAAK,KAAK;AAAA,IAClB;AAEA;AACA,WAAO,MAAM,OAAO;AAAA,EACtB,SAAS,OAAO,MAAM;AAEtB,SAAO;AACT;AAEO,SAAS,sBAAsB,QAAkC;AACtE,MAAI,OAAO,WAAW,EAAG,QAAO;AAEhC,QAAM,SAAS,IAAI,aAAa;AAEhC,WAAS,IAAI,GAAG,IAAI,OAAO,UAAU;AACnC,QAAI,uBAAuB,QAAQ,GAAG,QAAQ,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AAAA,EACrE;AAEA,SAAO,OAAO,MAAM;AACtB;AAEA,SAAS,uBACP,QACA,OACA,QACA,OASQ;AACR,QAAM,QAAQ,OAAO,KAAK;AAC1B,QAAM;AAAA,IACJ,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,MAAI,MAAM,CAAC,IAAI,WAAW;AACxB,gBAAY,QAAQ,MAAM,CAAC,GAAG,SAAS;AACvC,UAAM,CAAC,IAAI;AACX,UAAM,CAAC,IAAI;AAAA,EACb,WAAW,QAAQ,GAAG;AACpB,WAAO,MAAM,KAAK;AAAA,EACpB;AAEA,QAAM,CAAC,IAAI,cAAc,QAAQ,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;AAEnD,QAAM,UACH,MAAM,WAAW,IAAI,IAAS,MAAM,WAAW,IAAS,MAAM,UAAU,IAAS;AACpF,gBAAc,QAAQ,QAAQ,CAAC;AAE/B,MAAI,MAAM,WAAW,GAAG;AACtB,UAAM,EAAE,GAAG,cAAc,GAAG,YAAY,IAAI;AAC5C,QAAI,iBAAiB,MAAM,CAAC,GAAG;AAC7B,YAAM,CAAC,IAAI;AAAA,IACb;AACA,UAAM,CAAC,IAAI,cAAc,QAAQ,cAAc,MAAM,CAAC,CAAC;AACvD,UAAM,CAAC,IAAI,cAAc,QAAQ,aAAa,MAAM,CAAC,CAAC;AAAA,EACxD;AAEA,MAAI,UAAU;AACZ,UAAM,EAAE,GAAG,cAAc,GAAG,UAAU,GAAG,WAAW,IAAI,MAAM;AAC9D,QAAI,iBAAiB,MAAM,CAAC,GAAG;AAC7B,YAAM,CAAC,IAAI;AACX,YAAM,CAAC,IAAI;AAAA,IACb,WAAW,aAAa,MAAM,CAAC,GAAG;AAChC,YAAM,CAAC,IAAI;AAAA,IACb;AACA,UAAM,CAAC,IAAI,cAAc,QAAQ,cAAc,MAAM,CAAC,CAAC;AACvD,UAAM,CAAC,IAAI,cAAc,QAAQ,UAAU,MAAM,CAAC,CAAC;AACnD,UAAM,CAAC,IAAI,cAAc,QAAQ,YAAY,MAAM,CAAC,CAAC;AAAA,EACvD;AAEA,MAAI,UAAU;AACZ,eAAW,WAAW,UAAU;AAC9B,UAAI,QAAQ,SAAS,EAAG,eAAc,QAAQ,CAAC,QAAQ,QAAQ,CAAC;AAChE,YAAM,aAAa,QAAQ,CAAC,EAAE,CAAC;AAC/B,oBAAc,QAAQ,YAAY,CAAC;AACnC,UAAI,mBAAmB;AACvB,UAAI,qBAAqB;AACzB,eAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,cAAM,WAAW,QAAQ,CAAC;AAC1B,2BAAmB,cAAc,QAAQ,SAAS,CAAC,GAAI,gBAAgB;AACvE,6BAAqB,cAAc,QAAQ,SAAS,CAAC,GAAI,kBAAkB;AAC3E,sBAAc,QAAQ,SAAS,CAAC,GAAI,CAAC;AAAA,MACvC;AAAA,IACF;AAAA,EACF;AAEA,OAAK,SAAS,QAAQ,OAAO,UAAU;AACrC,UAAM,OAAO,OAAO,KAAK;AACzB,UAAM,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI;AACvB,QAAI,IAAI,WAAY,MAAM,WAAW,KAAK,WAAY;AACpD;AAAA,IACF;AACA,YAAQ,uBAAuB,QAAQ,OAAO,QAAQ,KAAK;AAAA,EAC7D;AAEA,MAAI,MAAM,CAAC,IAAI,SAAS;AACtB,gBAAY,QAAQ,MAAM,CAAC,GAAG,OAAO;AACrC,UAAM,CAAC,IAAI;AACX,UAAM,CAAC,IAAI;AAAA,EACb,OAAO;AACL,WAAO,MAAM,KAAK;AAAA,EACpB;AACA,QAAM,CAAC,IAAI,cAAc,QAAQ,WAAW,MAAM,CAAC,CAAC;AAEpD,SAAO;AACT;AAEA,SAAS,YAAY,QAAsB,UAAkB,MAAc;AACzE,KAAG;AACD,WAAO,MAAM,SAAS;AAAA,EACxB,SAAS,EAAE,WAAW;AACxB;;;AHtUO,SAAS,OAAO,UAAqC;AAC1D,QAAM,EAAE,OAAO,IAAI;AACnB,QAAM,SAAS,IAAI,aAAa,QAAQ;AACxC,QAAM,UAA6B,CAAC;AACpC,MAAI,YAAY;AAChB,MAAI,eAAe;AACnB,MAAI,aAAa;AACjB,MAAI,eAAe;AACnB,MAAI,aAAa;AAEjB,KAAG;AACD,UAAM,OAAO,OAAO,QAAQ,GAAG;AAC/B,UAAM,OAAsB,CAAC;AAC7B,QAAI,SAAS;AACb,QAAI,UAAU;AACd,gBAAY;AAEZ,WAAO,OAAO,MAAM,MAAM;AACxB,UAAI;AAEJ,kBAAY,cAAc,QAAQ,SAAS;AAC3C,UAAI,YAAY,QAAS,UAAS;AAClC,gBAAU;AAEV,UAAI,WAAW,QAAQ,IAAI,GAAG;AAC5B,uBAAe,cAAc,QAAQ,YAAY;AACjD,qBAAa,cAAc,QAAQ,UAAU;AAC7C,uBAAe,cAAc,QAAQ,YAAY;AAEjD,YAAI,WAAW,QAAQ,IAAI,GAAG;AAC5B,uBAAa,cAAc,QAAQ,UAAU;AAC7C,gBAAM,CAAC,WAAW,cAAc,YAAY,cAAc,UAAU;AAAA,QACtE,OAAO;AACL,gBAAM,CAAC,WAAW,cAAc,YAAY,YAAY;AAAA,QAC1D;AAAA,MACF,OAAO;AACL,cAAM,CAAC,SAAS;AAAA,MAClB;AAEA,WAAK,KAAK,GAAG;AACb,aAAO;AAAA,IACT;AAEA,QAAI,CAAC,OAAQ,MAAK,IAAI;AACtB,YAAQ,KAAK,IAAI;AACjB,WAAO,MAAM,OAAO;AAAA,EACtB,SAAS,OAAO,OAAO;AAEvB,SAAO;AACT;AAEA,SAAS,KAAK,MAA0B;AACtC,OAAK,KAAK,cAAc;AAC1B;AAEA,SAAS,eAAe,GAAqB,GAA6B;AACxE,SAAO,EAAE,CAAC,IAAI,EAAE,CAAC;AACnB;AAIO,SAAS,OAAO,SAA8C;AACnE,QAAM,SAAS,IAAI,aAAa;AAChC,MAAI,eAAe;AACnB,MAAI,aAAa;AACjB,MAAI,eAAe;AACnB,MAAI,aAAa;AAEjB,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,UAAM,OAAO,QAAQ,CAAC;AACtB,QAAI,IAAI,EAAG,QAAO,MAAM,SAAS;AACjC,QAAI,KAAK,WAAW,EAAG;AAEvB,QAAI,YAAY;AAEhB,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,YAAM,UAAU,KAAK,CAAC;AACtB,UAAI,IAAI,EAAG,QAAO,MAAM,KAAK;AAE7B,kBAAY,cAAc,QAAQ,QAAQ,CAAC,GAAG,SAAS;AAEvD,UAAI,QAAQ,WAAW,EAAG;AAC1B,qBAAe,cAAc,QAAQ,QAAQ,CAAC,GAAG,YAAY;AAC7D,mBAAa,cAAc,QAAQ,QAAQ,CAAC,GAAG,UAAU;AACzD,qBAAe,cAAc,QAAQ,QAAQ,CAAC,GAAG,YAAY;AAE7D,UAAI,QAAQ,WAAW,EAAG;AAC1B,mBAAa,cAAc,QAAQ,QAAQ,CAAC,GAAG,UAAU;AAAA,IAC3D;AAAA,EACF;AAEA,SAAO,OAAO,MAAM;AACtB;", + "names": [] +} diff --git a/node_modules/@jridgewell/sourcemap-codec/package.json b/node_modules/@jridgewell/sourcemap-codec/package.json new file mode 100644 index 00000000..da551376 --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/package.json @@ -0,0 +1,63 @@ +{ + "name": "@jridgewell/sourcemap-codec", + "version": "1.5.5", + "description": "Encode/decode sourcemap mappings", + "keywords": [ + "sourcemap", + "vlq" + ], + "main": "dist/sourcemap-codec.umd.js", + "module": "dist/sourcemap-codec.mjs", + "types": "types/sourcemap-codec.d.cts", + "files": [ + "dist", + "src", + "types" + ], + "exports": { + ".": [ + { + "import": { + "types": "./types/sourcemap-codec.d.mts", + "default": "./dist/sourcemap-codec.mjs" + }, + "default": { + "types": "./types/sourcemap-codec.d.cts", + "default": "./dist/sourcemap-codec.umd.js" + } + }, + "./dist/sourcemap-codec.umd.js" + ], + "./package.json": "./package.json" + }, + "scripts": { + "benchmark": "run-s build:code benchmark:*", + "benchmark:install": "cd benchmark && npm install", + "benchmark:only": "node --expose-gc benchmark/index.js", + "build": "run-s -n build:code build:types", + "build:code": "node ../../esbuild.mjs sourcemap-codec.ts", + "build:types": "run-s build:types:force build:types:emit build:types:mts", + "build:types:force": "rimraf tsconfig.build.tsbuildinfo", + "build:types:emit": "tsc --project tsconfig.build.json", + "build:types:mts": "node ../../mts-types.mjs", + "clean": "run-s -n clean:code clean:types", + "clean:code": "tsc --build --clean tsconfig.build.json", + "clean:types": "rimraf dist types", + "test": "run-s -n test:types test:only test:format", + "test:format": "prettier --check '{src,test}/**/*.ts'", + "test:only": "mocha", + "test:types": "eslint '{src,test}/**/*.ts'", + "lint": "run-s -n lint:types lint:format", + "lint:format": "npm run test:format -- --write", + "lint:types": "npm run test:types -- --fix", + "prepublishOnly": "npm run-s -n build test" + }, + "homepage": "https://github.com/jridgewell/sourcemaps/tree/main/packages/sourcemap-codec", + "repository": { + "type": "git", + "url": "git+https://github.com/jridgewell/sourcemaps.git", + "directory": "packages/sourcemap-codec" + }, + "author": "Justin Ridgewell ", + "license": "MIT" +} diff --git a/node_modules/@jridgewell/sourcemap-codec/src/scopes.ts b/node_modules/@jridgewell/sourcemap-codec/src/scopes.ts new file mode 100644 index 00000000..d194c2f0 --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/src/scopes.ts @@ -0,0 +1,345 @@ +import { StringReader, StringWriter } from './strings'; +import { comma, decodeInteger, encodeInteger, hasMoreVlq, semicolon } from './vlq'; + +const EMPTY: any[] = []; + +type Line = number; +type Column = number; +type Kind = number; +type Name = number; +type Var = number; +type SourcesIndex = number; +type ScopesIndex = number; + +type Mix = (A & O) | (B & O); + +export type OriginalScope = Mix< + [Line, Column, Line, Column, Kind], + [Line, Column, Line, Column, Kind, Name], + { vars: Var[] } +>; + +export type GeneratedRange = Mix< + [Line, Column, Line, Column], + [Line, Column, Line, Column, SourcesIndex, ScopesIndex], + { + callsite: CallSite | null; + bindings: Binding[]; + isScope: boolean; + } +>; +export type CallSite = [SourcesIndex, Line, Column]; +type Binding = BindingExpressionRange[]; +export type BindingExpressionRange = [Name] | [Name, Line, Column]; + +export function decodeOriginalScopes(input: string): OriginalScope[] { + const { length } = input; + const reader = new StringReader(input); + const scopes: OriginalScope[] = []; + const stack: OriginalScope[] = []; + let line = 0; + + for (; reader.pos < length; reader.pos++) { + line = decodeInteger(reader, line); + const column = decodeInteger(reader, 0); + + if (!hasMoreVlq(reader, length)) { + const last = stack.pop()!; + last[2] = line; + last[3] = column; + continue; + } + + const kind = decodeInteger(reader, 0); + const fields = decodeInteger(reader, 0); + const hasName = fields & 0b0001; + + const scope: OriginalScope = ( + hasName ? [line, column, 0, 0, kind, decodeInteger(reader, 0)] : [line, column, 0, 0, kind] + ) as OriginalScope; + + let vars: Var[] = EMPTY; + if (hasMoreVlq(reader, length)) { + vars = []; + do { + const varsIndex = decodeInteger(reader, 0); + vars.push(varsIndex); + } while (hasMoreVlq(reader, length)); + } + scope.vars = vars; + + scopes.push(scope); + stack.push(scope); + } + + return scopes; +} + +export function encodeOriginalScopes(scopes: OriginalScope[]): string { + const writer = new StringWriter(); + + for (let i = 0; i < scopes.length; ) { + i = _encodeOriginalScopes(scopes, i, writer, [0]); + } + + return writer.flush(); +} + +function _encodeOriginalScopes( + scopes: OriginalScope[], + index: number, + writer: StringWriter, + state: [ + number, // GenColumn + ], +): number { + const scope = scopes[index]; + const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, 4: kind, vars } = scope; + + if (index > 0) writer.write(comma); + + state[0] = encodeInteger(writer, startLine, state[0]); + encodeInteger(writer, startColumn, 0); + encodeInteger(writer, kind, 0); + + const fields = scope.length === 6 ? 0b0001 : 0; + encodeInteger(writer, fields, 0); + if (scope.length === 6) encodeInteger(writer, scope[5], 0); + + for (const v of vars) { + encodeInteger(writer, v, 0); + } + + for (index++; index < scopes.length; ) { + const next = scopes[index]; + const { 0: l, 1: c } = next; + if (l > endLine || (l === endLine && c >= endColumn)) { + break; + } + index = _encodeOriginalScopes(scopes, index, writer, state); + } + + writer.write(comma); + state[0] = encodeInteger(writer, endLine, state[0]); + encodeInteger(writer, endColumn, 0); + + return index; +} + +export function decodeGeneratedRanges(input: string): GeneratedRange[] { + const { length } = input; + const reader = new StringReader(input); + const ranges: GeneratedRange[] = []; + const stack: GeneratedRange[] = []; + + let genLine = 0; + let definitionSourcesIndex = 0; + let definitionScopeIndex = 0; + let callsiteSourcesIndex = 0; + let callsiteLine = 0; + let callsiteColumn = 0; + let bindingLine = 0; + let bindingColumn = 0; + + do { + const semi = reader.indexOf(';'); + let genColumn = 0; + + for (; reader.pos < semi; reader.pos++) { + genColumn = decodeInteger(reader, genColumn); + + if (!hasMoreVlq(reader, semi)) { + const last = stack.pop()!; + last[2] = genLine; + last[3] = genColumn; + continue; + } + + const fields = decodeInteger(reader, 0); + const hasDefinition = fields & 0b0001; + const hasCallsite = fields & 0b0010; + const hasScope = fields & 0b0100; + + let callsite: CallSite | null = null; + let bindings: Binding[] = EMPTY; + let range: GeneratedRange; + if (hasDefinition) { + const defSourcesIndex = decodeInteger(reader, definitionSourcesIndex); + definitionScopeIndex = decodeInteger( + reader, + definitionSourcesIndex === defSourcesIndex ? definitionScopeIndex : 0, + ); + + definitionSourcesIndex = defSourcesIndex; + range = [genLine, genColumn, 0, 0, defSourcesIndex, definitionScopeIndex] as GeneratedRange; + } else { + range = [genLine, genColumn, 0, 0] as GeneratedRange; + } + + range.isScope = !!hasScope; + + if (hasCallsite) { + const prevCsi = callsiteSourcesIndex; + const prevLine = callsiteLine; + callsiteSourcesIndex = decodeInteger(reader, callsiteSourcesIndex); + const sameSource = prevCsi === callsiteSourcesIndex; + callsiteLine = decodeInteger(reader, sameSource ? callsiteLine : 0); + callsiteColumn = decodeInteger( + reader, + sameSource && prevLine === callsiteLine ? callsiteColumn : 0, + ); + + callsite = [callsiteSourcesIndex, callsiteLine, callsiteColumn]; + } + range.callsite = callsite; + + if (hasMoreVlq(reader, semi)) { + bindings = []; + do { + bindingLine = genLine; + bindingColumn = genColumn; + const expressionsCount = decodeInteger(reader, 0); + let expressionRanges: BindingExpressionRange[]; + if (expressionsCount < -1) { + expressionRanges = [[decodeInteger(reader, 0)]]; + for (let i = -1; i > expressionsCount; i--) { + const prevBl = bindingLine; + bindingLine = decodeInteger(reader, bindingLine); + bindingColumn = decodeInteger(reader, bindingLine === prevBl ? bindingColumn : 0); + const expression = decodeInteger(reader, 0); + expressionRanges.push([expression, bindingLine, bindingColumn]); + } + } else { + expressionRanges = [[expressionsCount]]; + } + bindings.push(expressionRanges); + } while (hasMoreVlq(reader, semi)); + } + range.bindings = bindings; + + ranges.push(range); + stack.push(range); + } + + genLine++; + reader.pos = semi + 1; + } while (reader.pos < length); + + return ranges; +} + +export function encodeGeneratedRanges(ranges: GeneratedRange[]): string { + if (ranges.length === 0) return ''; + + const writer = new StringWriter(); + + for (let i = 0; i < ranges.length; ) { + i = _encodeGeneratedRanges(ranges, i, writer, [0, 0, 0, 0, 0, 0, 0]); + } + + return writer.flush(); +} + +function _encodeGeneratedRanges( + ranges: GeneratedRange[], + index: number, + writer: StringWriter, + state: [ + number, // GenLine + number, // GenColumn + number, // DefSourcesIndex + number, // DefScopesIndex + number, // CallSourcesIndex + number, // CallLine + number, // CallColumn + ], +): number { + const range = ranges[index]; + const { + 0: startLine, + 1: startColumn, + 2: endLine, + 3: endColumn, + isScope, + callsite, + bindings, + } = range; + + if (state[0] < startLine) { + catchupLine(writer, state[0], startLine); + state[0] = startLine; + state[1] = 0; + } else if (index > 0) { + writer.write(comma); + } + + state[1] = encodeInteger(writer, range[1], state[1]); + + const fields = + (range.length === 6 ? 0b0001 : 0) | (callsite ? 0b0010 : 0) | (isScope ? 0b0100 : 0); + encodeInteger(writer, fields, 0); + + if (range.length === 6) { + const { 4: sourcesIndex, 5: scopesIndex } = range; + if (sourcesIndex !== state[2]) { + state[3] = 0; + } + state[2] = encodeInteger(writer, sourcesIndex, state[2]); + state[3] = encodeInteger(writer, scopesIndex, state[3]); + } + + if (callsite) { + const { 0: sourcesIndex, 1: callLine, 2: callColumn } = range.callsite!; + if (sourcesIndex !== state[4]) { + state[5] = 0; + state[6] = 0; + } else if (callLine !== state[5]) { + state[6] = 0; + } + state[4] = encodeInteger(writer, sourcesIndex, state[4]); + state[5] = encodeInteger(writer, callLine, state[5]); + state[6] = encodeInteger(writer, callColumn, state[6]); + } + + if (bindings) { + for (const binding of bindings) { + if (binding.length > 1) encodeInteger(writer, -binding.length, 0); + const expression = binding[0][0]; + encodeInteger(writer, expression, 0); + let bindingStartLine = startLine; + let bindingStartColumn = startColumn; + for (let i = 1; i < binding.length; i++) { + const expRange = binding[i]; + bindingStartLine = encodeInteger(writer, expRange[1]!, bindingStartLine); + bindingStartColumn = encodeInteger(writer, expRange[2]!, bindingStartColumn); + encodeInteger(writer, expRange[0]!, 0); + } + } + } + + for (index++; index < ranges.length; ) { + const next = ranges[index]; + const { 0: l, 1: c } = next; + if (l > endLine || (l === endLine && c >= endColumn)) { + break; + } + index = _encodeGeneratedRanges(ranges, index, writer, state); + } + + if (state[0] < endLine) { + catchupLine(writer, state[0], endLine); + state[0] = endLine; + state[1] = 0; + } else { + writer.write(comma); + } + state[1] = encodeInteger(writer, endColumn, state[1]); + + return index; +} + +function catchupLine(writer: StringWriter, lastLine: number, line: number) { + do { + writer.write(semicolon); + } while (++lastLine < line); +} diff --git a/node_modules/@jridgewell/sourcemap-codec/src/sourcemap-codec.ts b/node_modules/@jridgewell/sourcemap-codec/src/sourcemap-codec.ts new file mode 100644 index 00000000..a81f894d --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/src/sourcemap-codec.ts @@ -0,0 +1,111 @@ +import { comma, decodeInteger, encodeInteger, hasMoreVlq, semicolon } from './vlq'; +import { StringWriter, StringReader } from './strings'; + +export { + decodeOriginalScopes, + encodeOriginalScopes, + decodeGeneratedRanges, + encodeGeneratedRanges, +} from './scopes'; +export type { OriginalScope, GeneratedRange, CallSite, BindingExpressionRange } from './scopes'; + +export type SourceMapSegment = + | [number] + | [number, number, number, number] + | [number, number, number, number, number]; +export type SourceMapLine = SourceMapSegment[]; +export type SourceMapMappings = SourceMapLine[]; + +export function decode(mappings: string): SourceMapMappings { + const { length } = mappings; + const reader = new StringReader(mappings); + const decoded: SourceMapMappings = []; + let genColumn = 0; + let sourcesIndex = 0; + let sourceLine = 0; + let sourceColumn = 0; + let namesIndex = 0; + + do { + const semi = reader.indexOf(';'); + const line: SourceMapLine = []; + let sorted = true; + let lastCol = 0; + genColumn = 0; + + while (reader.pos < semi) { + let seg: SourceMapSegment; + + genColumn = decodeInteger(reader, genColumn); + if (genColumn < lastCol) sorted = false; + lastCol = genColumn; + + if (hasMoreVlq(reader, semi)) { + sourcesIndex = decodeInteger(reader, sourcesIndex); + sourceLine = decodeInteger(reader, sourceLine); + sourceColumn = decodeInteger(reader, sourceColumn); + + if (hasMoreVlq(reader, semi)) { + namesIndex = decodeInteger(reader, namesIndex); + seg = [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex]; + } else { + seg = [genColumn, sourcesIndex, sourceLine, sourceColumn]; + } + } else { + seg = [genColumn]; + } + + line.push(seg); + reader.pos++; + } + + if (!sorted) sort(line); + decoded.push(line); + reader.pos = semi + 1; + } while (reader.pos <= length); + + return decoded; +} + +function sort(line: SourceMapSegment[]) { + line.sort(sortComparator); +} + +function sortComparator(a: SourceMapSegment, b: SourceMapSegment): number { + return a[0] - b[0]; +} + +export function encode(decoded: SourceMapMappings): string; +export function encode(decoded: Readonly): string; +export function encode(decoded: Readonly): string { + const writer = new StringWriter(); + let sourcesIndex = 0; + let sourceLine = 0; + let sourceColumn = 0; + let namesIndex = 0; + + for (let i = 0; i < decoded.length; i++) { + const line = decoded[i]; + if (i > 0) writer.write(semicolon); + if (line.length === 0) continue; + + let genColumn = 0; + + for (let j = 0; j < line.length; j++) { + const segment = line[j]; + if (j > 0) writer.write(comma); + + genColumn = encodeInteger(writer, segment[0], genColumn); + + if (segment.length === 1) continue; + sourcesIndex = encodeInteger(writer, segment[1], sourcesIndex); + sourceLine = encodeInteger(writer, segment[2], sourceLine); + sourceColumn = encodeInteger(writer, segment[3], sourceColumn); + + if (segment.length === 4) continue; + namesIndex = encodeInteger(writer, segment[4], namesIndex); + } + } + + return writer.flush(); +} diff --git a/node_modules/@jridgewell/sourcemap-codec/src/strings.ts b/node_modules/@jridgewell/sourcemap-codec/src/strings.ts new file mode 100644 index 00000000..d1619650 --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/src/strings.ts @@ -0,0 +1,65 @@ +const bufLength = 1024 * 16; + +// Provide a fallback for older environments. +const td = + typeof TextDecoder !== 'undefined' + ? /* #__PURE__ */ new TextDecoder() + : typeof Buffer !== 'undefined' + ? { + decode(buf: Uint8Array): string { + const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength); + return out.toString(); + }, + } + : { + decode(buf: Uint8Array): string { + let out = ''; + for (let i = 0; i < buf.length; i++) { + out += String.fromCharCode(buf[i]); + } + return out; + }, + }; + +export class StringWriter { + pos = 0; + private out = ''; + private buffer = new Uint8Array(bufLength); + + write(v: number): void { + const { buffer } = this; + buffer[this.pos++] = v; + if (this.pos === bufLength) { + this.out += td.decode(buffer); + this.pos = 0; + } + } + + flush(): string { + const { buffer, out, pos } = this; + return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out; + } +} + +export class StringReader { + pos = 0; + declare private buffer: string; + + constructor(buffer: string) { + this.buffer = buffer; + } + + next(): number { + return this.buffer.charCodeAt(this.pos++); + } + + peek(): number { + return this.buffer.charCodeAt(this.pos); + } + + indexOf(char: string): number { + const { buffer, pos } = this; + const idx = buffer.indexOf(char, pos); + return idx === -1 ? buffer.length : idx; + } +} diff --git a/node_modules/@jridgewell/sourcemap-codec/src/vlq.ts b/node_modules/@jridgewell/sourcemap-codec/src/vlq.ts new file mode 100644 index 00000000..a42c6815 --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/src/vlq.ts @@ -0,0 +1,55 @@ +import type { StringReader, StringWriter } from './strings'; + +export const comma = ','.charCodeAt(0); +export const semicolon = ';'.charCodeAt(0); + +const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; +const intToChar = new Uint8Array(64); // 64 possible chars. +const charToInt = new Uint8Array(128); // z is 122 in ASCII + +for (let i = 0; i < chars.length; i++) { + const c = chars.charCodeAt(i); + intToChar[i] = c; + charToInt[c] = i; +} + +export function decodeInteger(reader: StringReader, relative: number): number { + let value = 0; + let shift = 0; + let integer = 0; + + do { + const c = reader.next(); + integer = charToInt[c]; + value |= (integer & 31) << shift; + shift += 5; + } while (integer & 32); + + const shouldNegate = value & 1; + value >>>= 1; + + if (shouldNegate) { + value = -0x80000000 | -value; + } + + return relative + value; +} + +export function encodeInteger(builder: StringWriter, num: number, relative: number): number { + let delta = num - relative; + + delta = delta < 0 ? (-delta << 1) | 1 : delta << 1; + do { + let clamped = delta & 0b011111; + delta >>>= 5; + if (delta > 0) clamped |= 0b100000; + builder.write(intToChar[clamped]); + } while (delta > 0); + + return num; +} + +export function hasMoreVlq(reader: StringReader, max: number) { + if (reader.pos >= max) return false; + return reader.peek() !== comma; +} diff --git a/node_modules/@jridgewell/sourcemap-codec/types/scopes.d.cts b/node_modules/@jridgewell/sourcemap-codec/types/scopes.d.cts new file mode 100644 index 00000000..c583c756 --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/types/scopes.d.cts @@ -0,0 +1,50 @@ +type Line = number; +type Column = number; +type Kind = number; +type Name = number; +type Var = number; +type SourcesIndex = number; +type ScopesIndex = number; +type Mix = (A & O) | (B & O); +export type OriginalScope = Mix<[ + Line, + Column, + Line, + Column, + Kind +], [ + Line, + Column, + Line, + Column, + Kind, + Name +], { + vars: Var[]; +}>; +export type GeneratedRange = Mix<[ + Line, + Column, + Line, + Column +], [ + Line, + Column, + Line, + Column, + SourcesIndex, + ScopesIndex +], { + callsite: CallSite | null; + bindings: Binding[]; + isScope: boolean; +}>; +export type CallSite = [SourcesIndex, Line, Column]; +type Binding = BindingExpressionRange[]; +export type BindingExpressionRange = [Name] | [Name, Line, Column]; +export declare function decodeOriginalScopes(input: string): OriginalScope[]; +export declare function encodeOriginalScopes(scopes: OriginalScope[]): string; +export declare function decodeGeneratedRanges(input: string): GeneratedRange[]; +export declare function encodeGeneratedRanges(ranges: GeneratedRange[]): string; +export {}; +//# sourceMappingURL=scopes.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/sourcemap-codec/types/scopes.d.cts.map b/node_modules/@jridgewell/sourcemap-codec/types/scopes.d.cts.map new file mode 100644 index 00000000..630e6477 --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/types/scopes.d.cts.map @@ -0,0 +1 @@ +{"version":3,"file":"scopes.d.ts","sourceRoot":"","sources":["../src/scopes.ts"],"names":[],"mappings":"AAKA,KAAK,IAAI,GAAG,MAAM,CAAC;AACnB,KAAK,MAAM,GAAG,MAAM,CAAC;AACrB,KAAK,IAAI,GAAG,MAAM,CAAC;AACnB,KAAK,IAAI,GAAG,MAAM,CAAC;AACnB,KAAK,GAAG,GAAG,MAAM,CAAC;AAClB,KAAK,YAAY,GAAG,MAAM,CAAC;AAC3B,KAAK,WAAW,GAAG,MAAM,CAAC;AAE1B,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAEtC,MAAM,MAAM,aAAa,GAAG,GAAG,CAC7B;IAAC,IAAI;IAAE,MAAM;IAAE,IAAI;IAAE,MAAM;IAAE,IAAI;CAAC,EAClC;IAAC,IAAI;IAAE,MAAM;IAAE,IAAI;IAAE,MAAM;IAAE,IAAI;IAAE,IAAI;CAAC,EACxC;IAAE,IAAI,EAAE,GAAG,EAAE,CAAA;CAAE,CAChB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,GAAG,CAC9B;IAAC,IAAI;IAAE,MAAM;IAAE,IAAI;IAAE,MAAM;CAAC,EAC5B;IAAC,IAAI;IAAE,MAAM;IAAE,IAAI;IAAE,MAAM;IAAE,YAAY;IAAE,WAAW;CAAC,EACvD;IACE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB,CACF,CAAC;AACF,MAAM,MAAM,QAAQ,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACpD,KAAK,OAAO,GAAG,sBAAsB,EAAE,CAAC;AACxC,MAAM,MAAM,sBAAsB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAEnE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE,CAyCnE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAQpE;AA2CD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,EAAE,CAoGrE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,CAUtE"} \ No newline at end of file diff --git a/node_modules/@jridgewell/sourcemap-codec/types/scopes.d.mts b/node_modules/@jridgewell/sourcemap-codec/types/scopes.d.mts new file mode 100644 index 00000000..c583c756 --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/types/scopes.d.mts @@ -0,0 +1,50 @@ +type Line = number; +type Column = number; +type Kind = number; +type Name = number; +type Var = number; +type SourcesIndex = number; +type ScopesIndex = number; +type Mix = (A & O) | (B & O); +export type OriginalScope = Mix<[ + Line, + Column, + Line, + Column, + Kind +], [ + Line, + Column, + Line, + Column, + Kind, + Name +], { + vars: Var[]; +}>; +export type GeneratedRange = Mix<[ + Line, + Column, + Line, + Column +], [ + Line, + Column, + Line, + Column, + SourcesIndex, + ScopesIndex +], { + callsite: CallSite | null; + bindings: Binding[]; + isScope: boolean; +}>; +export type CallSite = [SourcesIndex, Line, Column]; +type Binding = BindingExpressionRange[]; +export type BindingExpressionRange = [Name] | [Name, Line, Column]; +export declare function decodeOriginalScopes(input: string): OriginalScope[]; +export declare function encodeOriginalScopes(scopes: OriginalScope[]): string; +export declare function decodeGeneratedRanges(input: string): GeneratedRange[]; +export declare function encodeGeneratedRanges(ranges: GeneratedRange[]): string; +export {}; +//# sourceMappingURL=scopes.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/sourcemap-codec/types/scopes.d.mts.map b/node_modules/@jridgewell/sourcemap-codec/types/scopes.d.mts.map new file mode 100644 index 00000000..630e6477 --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/types/scopes.d.mts.map @@ -0,0 +1 @@ +{"version":3,"file":"scopes.d.ts","sourceRoot":"","sources":["../src/scopes.ts"],"names":[],"mappings":"AAKA,KAAK,IAAI,GAAG,MAAM,CAAC;AACnB,KAAK,MAAM,GAAG,MAAM,CAAC;AACrB,KAAK,IAAI,GAAG,MAAM,CAAC;AACnB,KAAK,IAAI,GAAG,MAAM,CAAC;AACnB,KAAK,GAAG,GAAG,MAAM,CAAC;AAClB,KAAK,YAAY,GAAG,MAAM,CAAC;AAC3B,KAAK,WAAW,GAAG,MAAM,CAAC;AAE1B,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAEtC,MAAM,MAAM,aAAa,GAAG,GAAG,CAC7B;IAAC,IAAI;IAAE,MAAM;IAAE,IAAI;IAAE,MAAM;IAAE,IAAI;CAAC,EAClC;IAAC,IAAI;IAAE,MAAM;IAAE,IAAI;IAAE,MAAM;IAAE,IAAI;IAAE,IAAI;CAAC,EACxC;IAAE,IAAI,EAAE,GAAG,EAAE,CAAA;CAAE,CAChB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,GAAG,CAC9B;IAAC,IAAI;IAAE,MAAM;IAAE,IAAI;IAAE,MAAM;CAAC,EAC5B;IAAC,IAAI;IAAE,MAAM;IAAE,IAAI;IAAE,MAAM;IAAE,YAAY;IAAE,WAAW;CAAC,EACvD;IACE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB,CACF,CAAC;AACF,MAAM,MAAM,QAAQ,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACpD,KAAK,OAAO,GAAG,sBAAsB,EAAE,CAAC;AACxC,MAAM,MAAM,sBAAsB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAEnE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE,CAyCnE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAQpE;AA2CD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,EAAE,CAoGrE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,CAUtE"} \ No newline at end of file diff --git a/node_modules/@jridgewell/sourcemap-codec/types/sourcemap-codec.d.cts b/node_modules/@jridgewell/sourcemap-codec/types/sourcemap-codec.d.cts new file mode 100644 index 00000000..5f35e22f --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/types/sourcemap-codec.d.cts @@ -0,0 +1,9 @@ +export { decodeOriginalScopes, encodeOriginalScopes, decodeGeneratedRanges, encodeGeneratedRanges, } from './scopes.cts'; +export type { OriginalScope, GeneratedRange, CallSite, BindingExpressionRange } from './scopes.cts'; +export type SourceMapSegment = [number] | [number, number, number, number] | [number, number, number, number, number]; +export type SourceMapLine = SourceMapSegment[]; +export type SourceMapMappings = SourceMapLine[]; +export declare function decode(mappings: string): SourceMapMappings; +export declare function encode(decoded: SourceMapMappings): string; +export declare function encode(decoded: Readonly): string; +//# sourceMappingURL=sourcemap-codec.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/sourcemap-codec/types/sourcemap-codec.d.cts.map b/node_modules/@jridgewell/sourcemap-codec/types/sourcemap-codec.d.cts.map new file mode 100644 index 00000000..7123d520 --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/types/sourcemap-codec.d.cts.map @@ -0,0 +1 @@ +{"version":3,"file":"sourcemap-codec.d.ts","sourceRoot":"","sources":["../src/sourcemap-codec.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEhG,MAAM,MAAM,gBAAgB,GACxB,CAAC,MAAM,CAAC,GACR,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAChC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7C,MAAM,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;AAC/C,MAAM,MAAM,iBAAiB,GAAG,aAAa,EAAE,CAAC;AAEhD,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,CAiD1D;AAUD,wBAAgB,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAAC;AAC3D,wBAAgB,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/@jridgewell/sourcemap-codec/types/sourcemap-codec.d.mts b/node_modules/@jridgewell/sourcemap-codec/types/sourcemap-codec.d.mts new file mode 100644 index 00000000..199fb9f5 --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/types/sourcemap-codec.d.mts @@ -0,0 +1,9 @@ +export { decodeOriginalScopes, encodeOriginalScopes, decodeGeneratedRanges, encodeGeneratedRanges, } from './scopes.mts'; +export type { OriginalScope, GeneratedRange, CallSite, BindingExpressionRange } from './scopes.mts'; +export type SourceMapSegment = [number] | [number, number, number, number] | [number, number, number, number, number]; +export type SourceMapLine = SourceMapSegment[]; +export type SourceMapMappings = SourceMapLine[]; +export declare function decode(mappings: string): SourceMapMappings; +export declare function encode(decoded: SourceMapMappings): string; +export declare function encode(decoded: Readonly): string; +//# sourceMappingURL=sourcemap-codec.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/sourcemap-codec/types/sourcemap-codec.d.mts.map b/node_modules/@jridgewell/sourcemap-codec/types/sourcemap-codec.d.mts.map new file mode 100644 index 00000000..7123d520 --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/types/sourcemap-codec.d.mts.map @@ -0,0 +1 @@ +{"version":3,"file":"sourcemap-codec.d.ts","sourceRoot":"","sources":["../src/sourcemap-codec.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEhG,MAAM,MAAM,gBAAgB,GACxB,CAAC,MAAM,CAAC,GACR,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAChC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7C,MAAM,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;AAC/C,MAAM,MAAM,iBAAiB,GAAG,aAAa,EAAE,CAAC;AAEhD,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,CAiD1D;AAUD,wBAAgB,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAAC;AAC3D,wBAAgB,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/@jridgewell/sourcemap-codec/types/strings.d.cts b/node_modules/@jridgewell/sourcemap-codec/types/strings.d.cts new file mode 100644 index 00000000..62faceb3 --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/types/strings.d.cts @@ -0,0 +1,16 @@ +export declare class StringWriter { + pos: number; + private out; + private buffer; + write(v: number): void; + flush(): string; +} +export declare class StringReader { + pos: number; + private buffer; + constructor(buffer: string); + next(): number; + peek(): number; + indexOf(char: string): number; +} +//# sourceMappingURL=strings.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/sourcemap-codec/types/strings.d.cts.map b/node_modules/@jridgewell/sourcemap-codec/types/strings.d.cts.map new file mode 100644 index 00000000..d3602da4 --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/types/strings.d.cts.map @@ -0,0 +1 @@ +{"version":3,"file":"strings.d.ts","sourceRoot":"","sources":["../src/strings.ts"],"names":[],"mappings":"AAuBA,qBAAa,YAAY;IACvB,GAAG,SAAK;IACR,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,MAAM,CAA6B;IAE3C,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAStB,KAAK,IAAI,MAAM;CAIhB;AAED,qBAAa,YAAY;IACvB,GAAG,SAAK;IACR,QAAgB,MAAM,CAAS;gBAEnB,MAAM,EAAE,MAAM;IAI1B,IAAI,IAAI,MAAM;IAId,IAAI,IAAI,MAAM;IAId,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;CAK9B"} \ No newline at end of file diff --git a/node_modules/@jridgewell/sourcemap-codec/types/strings.d.mts b/node_modules/@jridgewell/sourcemap-codec/types/strings.d.mts new file mode 100644 index 00000000..62faceb3 --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/types/strings.d.mts @@ -0,0 +1,16 @@ +export declare class StringWriter { + pos: number; + private out; + private buffer; + write(v: number): void; + flush(): string; +} +export declare class StringReader { + pos: number; + private buffer; + constructor(buffer: string); + next(): number; + peek(): number; + indexOf(char: string): number; +} +//# sourceMappingURL=strings.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/sourcemap-codec/types/strings.d.mts.map b/node_modules/@jridgewell/sourcemap-codec/types/strings.d.mts.map new file mode 100644 index 00000000..d3602da4 --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/types/strings.d.mts.map @@ -0,0 +1 @@ +{"version":3,"file":"strings.d.ts","sourceRoot":"","sources":["../src/strings.ts"],"names":[],"mappings":"AAuBA,qBAAa,YAAY;IACvB,GAAG,SAAK;IACR,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,MAAM,CAA6B;IAE3C,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAStB,KAAK,IAAI,MAAM;CAIhB;AAED,qBAAa,YAAY;IACvB,GAAG,SAAK;IACR,QAAgB,MAAM,CAAS;gBAEnB,MAAM,EAAE,MAAM;IAI1B,IAAI,IAAI,MAAM;IAId,IAAI,IAAI,MAAM;IAId,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;CAK9B"} \ No newline at end of file diff --git a/node_modules/@jridgewell/sourcemap-codec/types/vlq.d.cts b/node_modules/@jridgewell/sourcemap-codec/types/vlq.d.cts new file mode 100644 index 00000000..dbd6602d --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/types/vlq.d.cts @@ -0,0 +1,7 @@ +import type { StringReader, StringWriter } from './strings.cts'; +export declare const comma: number; +export declare const semicolon: number; +export declare function decodeInteger(reader: StringReader, relative: number): number; +export declare function encodeInteger(builder: StringWriter, num: number, relative: number): number; +export declare function hasMoreVlq(reader: StringReader, max: number): boolean; +//# sourceMappingURL=vlq.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/sourcemap-codec/types/vlq.d.cts.map b/node_modules/@jridgewell/sourcemap-codec/types/vlq.d.cts.map new file mode 100644 index 00000000..6fdc3569 --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/types/vlq.d.cts.map @@ -0,0 +1 @@ +{"version":3,"file":"vlq.d.ts","sourceRoot":"","sources":["../src/vlq.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE5D,eAAO,MAAM,KAAK,QAAoB,CAAC;AACvC,eAAO,MAAM,SAAS,QAAoB,CAAC;AAY3C,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAoB5E;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAY1F;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,WAG3D"} \ No newline at end of file diff --git a/node_modules/@jridgewell/sourcemap-codec/types/vlq.d.mts b/node_modules/@jridgewell/sourcemap-codec/types/vlq.d.mts new file mode 100644 index 00000000..2c739bc9 --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/types/vlq.d.mts @@ -0,0 +1,7 @@ +import type { StringReader, StringWriter } from './strings.mts'; +export declare const comma: number; +export declare const semicolon: number; +export declare function decodeInteger(reader: StringReader, relative: number): number; +export declare function encodeInteger(builder: StringWriter, num: number, relative: number): number; +export declare function hasMoreVlq(reader: StringReader, max: number): boolean; +//# sourceMappingURL=vlq.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/sourcemap-codec/types/vlq.d.mts.map b/node_modules/@jridgewell/sourcemap-codec/types/vlq.d.mts.map new file mode 100644 index 00000000..6fdc3569 --- /dev/null +++ b/node_modules/@jridgewell/sourcemap-codec/types/vlq.d.mts.map @@ -0,0 +1 @@ +{"version":3,"file":"vlq.d.ts","sourceRoot":"","sources":["../src/vlq.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE5D,eAAO,MAAM,KAAK,QAAoB,CAAC;AACvC,eAAO,MAAM,SAAS,QAAoB,CAAC;AAY3C,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAoB5E;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAY1F;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,WAG3D"} \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/LICENSE b/node_modules/@jridgewell/trace-mapping/LICENSE new file mode 100644 index 00000000..1f6ce94c --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/LICENSE @@ -0,0 +1,19 @@ +Copyright 2024 Justin Ridgewell + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/@jridgewell/trace-mapping/README.md b/node_modules/@jridgewell/trace-mapping/README.md new file mode 100644 index 00000000..9fc0ed09 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/README.md @@ -0,0 +1,348 @@ +# @jridgewell/trace-mapping + +> Trace the original position through a source map + +`trace-mapping` allows you to take the line and column of an output file and trace it to the +original location in the source file through a source map. + +You may already be familiar with the [`source-map`][source-map] package's `SourceMapConsumer`. This +provides the same `originalPositionFor` and `generatedPositionFor` API, without requiring WASM. + +## Installation + +```sh +npm install @jridgewell/trace-mapping +``` + +## Usage + +```typescript +import { + TraceMap, + originalPositionFor, + generatedPositionFor, + sourceContentFor, + isIgnored, +} from '@jridgewell/trace-mapping'; + +const tracer = new TraceMap({ + version: 3, + sources: ['input.js'], + sourcesContent: ['content of input.js'], + names: ['foo'], + mappings: 'KAyCIA', + ignoreList: [], +}); + +// Lines start at line 1, columns at column 0. +const traced = originalPositionFor(tracer, { line: 1, column: 5 }); +assert.deepEqual(traced, { + source: 'input.js', + line: 42, + column: 4, + name: 'foo', +}); + +const content = sourceContentFor(tracer, traced.source); +assert.strictEqual(content, 'content for input.js'); + +const generated = generatedPositionFor(tracer, { + source: 'input.js', + line: 42, + column: 4, +}); +assert.deepEqual(generated, { + line: 1, + column: 5, +}); + +const ignored = isIgnored(tracer, 'input.js'); +assert.equal(ignored, false); +``` + +We also provide a lower level API to get the actual segment that matches our line and column. Unlike +`originalPositionFor`, `traceSegment` uses a 0-base for `line`: + +```typescript +import { traceSegment } from '@jridgewell/trace-mapping'; + +// line is 0-base. +const traced = traceSegment(tracer, /* line */ 0, /* column */ 5); + +// Segments are [outputColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex] +// Again, line is 0-base and so is sourceLine +assert.deepEqual(traced, [5, 0, 41, 4, 0]); +``` + +### SectionedSourceMaps + +The sourcemap spec defines a special `sections` field that's designed to handle concatenation of +output code with associated sourcemaps. This type of sourcemap is rarely used (no major build tool +produces it), but if you are hand coding a concatenation you may need it. We provide an `AnyMap` +helper that can receive either a regular sourcemap or a `SectionedSourceMap` and returns a +`TraceMap` instance: + +```typescript +import { AnyMap } from '@jridgewell/trace-mapping'; +const fooOutput = 'foo'; +const barOutput = 'bar'; +const output = [fooOutput, barOutput].join('\n'); + +const sectioned = new AnyMap({ + version: 3, + sections: [ + { + // 0-base line and column + offset: { line: 0, column: 0 }, + // fooOutput's sourcemap + map: { + version: 3, + sources: ['foo.js'], + names: ['foo'], + mappings: 'AAAAA', + }, + }, + { + // barOutput's sourcemap will not affect the first line, only the second + offset: { line: 1, column: 0 }, + map: { + version: 3, + sources: ['bar.js'], + names: ['bar'], + mappings: 'AAAAA', + }, + }, + ], +}); + +const traced = originalPositionFor(sectioned, { + line: 2, + column: 0, +}); + +assert.deepEqual(traced, { + source: 'bar.js', + line: 1, + column: 0, + name: 'bar', +}); +``` + +## Benchmarks + +``` +node v20.10.0 + +amp.js.map - 45120 segments + +Memory Usage: +trace-mapping decoded 414164 bytes +trace-mapping encoded 6274352 bytes +source-map-js 10968904 bytes +source-map-0.6.1 17587160 bytes +source-map-0.8.0 8812155 bytes +Chrome dev tools 8672912 bytes +Smallest memory usage is trace-mapping decoded + +Init speed: +trace-mapping: decoded JSON input x 205 ops/sec ±0.19% (88 runs sampled) +trace-mapping: encoded JSON input x 405 ops/sec ±1.47% (88 runs sampled) +trace-mapping: decoded Object input x 4,645 ops/sec ±0.15% (98 runs sampled) +trace-mapping: encoded Object input x 458 ops/sec ±1.63% (91 runs sampled) +source-map-js: encoded Object input x 75.48 ops/sec ±1.64% (67 runs sampled) +source-map-0.6.1: encoded Object input x 39.37 ops/sec ±1.44% (53 runs sampled) +Chrome dev tools: encoded Object input x 150 ops/sec ±1.76% (79 runs sampled) +Fastest is trace-mapping: decoded Object input + +Trace speed (random): +trace-mapping: decoded originalPositionFor x 44,946 ops/sec ±0.16% (99 runs sampled) +trace-mapping: encoded originalPositionFor x 37,995 ops/sec ±1.81% (89 runs sampled) +source-map-js: encoded originalPositionFor x 9,230 ops/sec ±1.36% (93 runs sampled) +source-map-0.6.1: encoded originalPositionFor x 8,057 ops/sec ±0.84% (96 runs sampled) +source-map-0.8.0: encoded originalPositionFor x 28,198 ops/sec ±1.12% (91 runs sampled) +Chrome dev tools: encoded originalPositionFor x 46,276 ops/sec ±1.35% (95 runs sampled) +Fastest is Chrome dev tools: encoded originalPositionFor + +Trace speed (ascending): +trace-mapping: decoded originalPositionFor x 204,406 ops/sec ±0.19% (97 runs sampled) +trace-mapping: encoded originalPositionFor x 196,695 ops/sec ±0.24% (99 runs sampled) +source-map-js: encoded originalPositionFor x 11,948 ops/sec ±0.94% (99 runs sampled) +source-map-0.6.1: encoded originalPositionFor x 10,730 ops/sec ±0.36% (100 runs sampled) +source-map-0.8.0: encoded originalPositionFor x 51,427 ops/sec ±0.21% (98 runs sampled) +Chrome dev tools: encoded originalPositionFor x 162,615 ops/sec ±0.18% (98 runs sampled) +Fastest is trace-mapping: decoded originalPositionFor + + +*** + + +babel.min.js.map - 347793 segments + +Memory Usage: +trace-mapping decoded 18504 bytes +trace-mapping encoded 35428008 bytes +source-map-js 51676808 bytes +source-map-0.6.1 63367136 bytes +source-map-0.8.0 43158400 bytes +Chrome dev tools 50721552 bytes +Smallest memory usage is trace-mapping decoded + +Init speed: +trace-mapping: decoded JSON input x 17.82 ops/sec ±6.35% (35 runs sampled) +trace-mapping: encoded JSON input x 31.57 ops/sec ±7.50% (43 runs sampled) +trace-mapping: decoded Object input x 867 ops/sec ±0.74% (94 runs sampled) +trace-mapping: encoded Object input x 33.83 ops/sec ±7.66% (46 runs sampled) +source-map-js: encoded Object input x 6.58 ops/sec ±3.31% (20 runs sampled) +source-map-0.6.1: encoded Object input x 4.23 ops/sec ±3.43% (15 runs sampled) +Chrome dev tools: encoded Object input x 22.14 ops/sec ±3.79% (41 runs sampled) +Fastest is trace-mapping: decoded Object input + +Trace speed (random): +trace-mapping: decoded originalPositionFor x 78,234 ops/sec ±1.48% (29 runs sampled) +trace-mapping: encoded originalPositionFor x 60,761 ops/sec ±1.35% (21 runs sampled) +source-map-js: encoded originalPositionFor x 51,448 ops/sec ±2.17% (89 runs sampled) +source-map-0.6.1: encoded originalPositionFor x 47,221 ops/sec ±1.99% (15 runs sampled) +source-map-0.8.0: encoded originalPositionFor x 84,002 ops/sec ±1.45% (27 runs sampled) +Chrome dev tools: encoded originalPositionFor x 106,457 ops/sec ±1.38% (37 runs sampled) +Fastest is Chrome dev tools: encoded originalPositionFor + +Trace speed (ascending): +trace-mapping: decoded originalPositionFor x 930,943 ops/sec ±0.25% (99 runs sampled) +trace-mapping: encoded originalPositionFor x 843,545 ops/sec ±0.34% (97 runs sampled) +source-map-js: encoded originalPositionFor x 114,510 ops/sec ±1.37% (36 runs sampled) +source-map-0.6.1: encoded originalPositionFor x 87,412 ops/sec ±0.72% (92 runs sampled) +source-map-0.8.0: encoded originalPositionFor x 197,709 ops/sec ±0.89% (59 runs sampled) +Chrome dev tools: encoded originalPositionFor x 688,983 ops/sec ±0.33% (98 runs sampled) +Fastest is trace-mapping: decoded originalPositionFor + + +*** + + +preact.js.map - 1992 segments + +Memory Usage: +trace-mapping decoded 33136 bytes +trace-mapping encoded 254240 bytes +source-map-js 837488 bytes +source-map-0.6.1 961928 bytes +source-map-0.8.0 54384 bytes +Chrome dev tools 709680 bytes +Smallest memory usage is trace-mapping decoded + +Init speed: +trace-mapping: decoded JSON input x 3,709 ops/sec ±0.13% (99 runs sampled) +trace-mapping: encoded JSON input x 6,447 ops/sec ±0.22% (101 runs sampled) +trace-mapping: decoded Object input x 83,062 ops/sec ±0.23% (100 runs sampled) +trace-mapping: encoded Object input x 14,980 ops/sec ±0.28% (100 runs sampled) +source-map-js: encoded Object input x 2,544 ops/sec ±0.16% (99 runs sampled) +source-map-0.6.1: encoded Object input x 1,221 ops/sec ±0.37% (97 runs sampled) +Chrome dev tools: encoded Object input x 4,241 ops/sec ±0.39% (93 runs sampled) +Fastest is trace-mapping: decoded Object input + +Trace speed (random): +trace-mapping: decoded originalPositionFor x 91,028 ops/sec ±0.14% (94 runs sampled) +trace-mapping: encoded originalPositionFor x 84,348 ops/sec ±0.26% (98 runs sampled) +source-map-js: encoded originalPositionFor x 26,998 ops/sec ±0.23% (98 runs sampled) +source-map-0.6.1: encoded originalPositionFor x 18,049 ops/sec ±0.26% (100 runs sampled) +source-map-0.8.0: encoded originalPositionFor x 41,916 ops/sec ±0.28% (98 runs sampled) +Chrome dev tools: encoded originalPositionFor x 88,616 ops/sec ±0.14% (98 runs sampled) +Fastest is trace-mapping: decoded originalPositionFor + +Trace speed (ascending): +trace-mapping: decoded originalPositionFor x 319,960 ops/sec ±0.16% (100 runs sampled) +trace-mapping: encoded originalPositionFor x 302,153 ops/sec ±0.18% (100 runs sampled) +source-map-js: encoded originalPositionFor x 35,574 ops/sec ±0.19% (100 runs sampled) +source-map-0.6.1: encoded originalPositionFor x 19,943 ops/sec ±0.12% (101 runs sampled) +source-map-0.8.0: encoded originalPositionFor x 54,648 ops/sec ±0.20% (99 runs sampled) +Chrome dev tools: encoded originalPositionFor x 278,319 ops/sec ±0.17% (102 runs sampled) +Fastest is trace-mapping: decoded originalPositionFor + + +*** + + +react.js.map - 5726 segments + +Memory Usage: +trace-mapping decoded 10872 bytes +trace-mapping encoded 681512 bytes +source-map-js 2563944 bytes +source-map-0.6.1 2150864 bytes +source-map-0.8.0 88680 bytes +Chrome dev tools 1149576 bytes +Smallest memory usage is trace-mapping decoded + +Init speed: +trace-mapping: decoded JSON input x 1,887 ops/sec ±0.28% (99 runs sampled) +trace-mapping: encoded JSON input x 4,749 ops/sec ±0.48% (97 runs sampled) +trace-mapping: decoded Object input x 74,236 ops/sec ±0.11% (99 runs sampled) +trace-mapping: encoded Object input x 5,752 ops/sec ±0.38% (100 runs sampled) +source-map-js: encoded Object input x 806 ops/sec ±0.19% (97 runs sampled) +source-map-0.6.1: encoded Object input x 418 ops/sec ±0.33% (94 runs sampled) +Chrome dev tools: encoded Object input x 1,524 ops/sec ±0.57% (92 runs sampled) +Fastest is trace-mapping: decoded Object input + +Trace speed (random): +trace-mapping: decoded originalPositionFor x 620,201 ops/sec ±0.33% (96 runs sampled) +trace-mapping: encoded originalPositionFor x 579,548 ops/sec ±0.35% (97 runs sampled) +source-map-js: encoded originalPositionFor x 230,983 ops/sec ±0.62% (54 runs sampled) +source-map-0.6.1: encoded originalPositionFor x 158,145 ops/sec ±0.80% (46 runs sampled) +source-map-0.8.0: encoded originalPositionFor x 343,801 ops/sec ±0.55% (96 runs sampled) +Chrome dev tools: encoded originalPositionFor x 659,649 ops/sec ±0.49% (98 runs sampled) +Fastest is Chrome dev tools: encoded originalPositionFor + +Trace speed (ascending): +trace-mapping: decoded originalPositionFor x 2,368,079 ops/sec ±0.32% (98 runs sampled) +trace-mapping: encoded originalPositionFor x 2,134,039 ops/sec ±2.72% (87 runs sampled) +source-map-js: encoded originalPositionFor x 290,120 ops/sec ±2.49% (82 runs sampled) +source-map-0.6.1: encoded originalPositionFor x 187,613 ops/sec ±0.86% (49 runs sampled) +source-map-0.8.0: encoded originalPositionFor x 479,569 ops/sec ±0.65% (96 runs sampled) +Chrome dev tools: encoded originalPositionFor x 2,048,414 ops/sec ±0.24% (98 runs sampled) +Fastest is trace-mapping: decoded originalPositionFor + + +*** + + +vscode.map - 2141001 segments + +Memory Usage: +trace-mapping decoded 5206584 bytes +trace-mapping encoded 208370336 bytes +source-map-js 278493008 bytes +source-map-0.6.1 391564048 bytes +source-map-0.8.0 257508787 bytes +Chrome dev tools 291053000 bytes +Smallest memory usage is trace-mapping decoded + +Init speed: +trace-mapping: decoded JSON input x 1.63 ops/sec ±33.88% (9 runs sampled) +trace-mapping: encoded JSON input x 3.29 ops/sec ±36.13% (13 runs sampled) +trace-mapping: decoded Object input x 103 ops/sec ±0.93% (77 runs sampled) +trace-mapping: encoded Object input x 5.42 ops/sec ±28.54% (19 runs sampled) +source-map-js: encoded Object input x 1.07 ops/sec ±13.84% (7 runs sampled) +source-map-0.6.1: encoded Object input x 0.60 ops/sec ±2.43% (6 runs sampled) +Chrome dev tools: encoded Object input x 2.61 ops/sec ±22.00% (11 runs sampled) +Fastest is trace-mapping: decoded Object input + +Trace speed (random): +trace-mapping: decoded originalPositionFor x 257,019 ops/sec ±0.97% (93 runs sampled) +trace-mapping: encoded originalPositionFor x 179,163 ops/sec ±0.83% (92 runs sampled) +source-map-js: encoded originalPositionFor x 73,337 ops/sec ±1.35% (87 runs sampled) +source-map-0.6.1: encoded originalPositionFor x 38,797 ops/sec ±1.66% (88 runs sampled) +source-map-0.8.0: encoded originalPositionFor x 107,758 ops/sec ±1.94% (45 runs sampled) +Chrome dev tools: encoded originalPositionFor x 188,550 ops/sec ±1.85% (79 runs sampled) +Fastest is trace-mapping: decoded originalPositionFor + +Trace speed (ascending): +trace-mapping: decoded originalPositionFor x 447,621 ops/sec ±3.64% (94 runs sampled) +trace-mapping: encoded originalPositionFor x 323,698 ops/sec ±5.20% (88 runs sampled) +source-map-js: encoded originalPositionFor x 78,387 ops/sec ±1.69% (89 runs sampled) +source-map-0.6.1: encoded originalPositionFor x 41,016 ops/sec ±3.01% (25 runs sampled) +source-map-0.8.0: encoded originalPositionFor x 124,204 ops/sec ±0.90% (92 runs sampled) +Chrome dev tools: encoded originalPositionFor x 230,087 ops/sec ±2.61% (93 runs sampled) +Fastest is trace-mapping: decoded originalPositionFor +``` + +[source-map]: https://www.npmjs.com/package/source-map diff --git a/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs b/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs new file mode 100644 index 00000000..73a95c77 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs @@ -0,0 +1,493 @@ +// src/trace-mapping.ts +import { encode, decode } from "@jridgewell/sourcemap-codec"; + +// src/resolve.ts +import resolveUri from "@jridgewell/resolve-uri"; + +// src/strip-filename.ts +function stripFilename(path) { + if (!path) return ""; + const index = path.lastIndexOf("/"); + return path.slice(0, index + 1); +} + +// src/resolve.ts +function resolver(mapUrl, sourceRoot) { + const from = stripFilename(mapUrl); + const prefix = sourceRoot ? sourceRoot + "/" : ""; + return (source) => resolveUri(prefix + (source || ""), from); +} + +// src/sourcemap-segment.ts +var COLUMN = 0; +var SOURCES_INDEX = 1; +var SOURCE_LINE = 2; +var SOURCE_COLUMN = 3; +var NAMES_INDEX = 4; +var REV_GENERATED_LINE = 1; +var REV_GENERATED_COLUMN = 2; + +// src/sort.ts +function maybeSort(mappings, owned) { + const unsortedIndex = nextUnsortedSegmentLine(mappings, 0); + if (unsortedIndex === mappings.length) return mappings; + if (!owned) mappings = mappings.slice(); + for (let i = unsortedIndex; i < mappings.length; i = nextUnsortedSegmentLine(mappings, i + 1)) { + mappings[i] = sortSegments(mappings[i], owned); + } + return mappings; +} +function nextUnsortedSegmentLine(mappings, start) { + for (let i = start; i < mappings.length; i++) { + if (!isSorted(mappings[i])) return i; + } + return mappings.length; +} +function isSorted(line) { + for (let j = 1; j < line.length; j++) { + if (line[j][COLUMN] < line[j - 1][COLUMN]) { + return false; + } + } + return true; +} +function sortSegments(line, owned) { + if (!owned) line = line.slice(); + return line.sort(sortComparator); +} +function sortComparator(a, b) { + return a[COLUMN] - b[COLUMN]; +} + +// src/by-source.ts +function buildBySources(decoded, memos) { + const sources = memos.map(() => []); + for (let i = 0; i < decoded.length; i++) { + const line = decoded[i]; + for (let j = 0; j < line.length; j++) { + const seg = line[j]; + if (seg.length === 1) continue; + const sourceIndex2 = seg[SOURCES_INDEX]; + const sourceLine = seg[SOURCE_LINE]; + const sourceColumn = seg[SOURCE_COLUMN]; + const source = sources[sourceIndex2]; + const segs = source[sourceLine] || (source[sourceLine] = []); + segs.push([sourceColumn, i, seg[COLUMN]]); + } + } + for (let i = 0; i < sources.length; i++) { + const source = sources[i]; + for (let j = 0; j < source.length; j++) { + const line = source[j]; + if (line) line.sort(sortComparator); + } + } + return sources; +} + +// src/binary-search.ts +var found = false; +function binarySearch(haystack, needle, low, high) { + while (low <= high) { + const mid = low + (high - low >> 1); + const cmp = haystack[mid][COLUMN] - needle; + if (cmp === 0) { + found = true; + return mid; + } + if (cmp < 0) { + low = mid + 1; + } else { + high = mid - 1; + } + } + found = false; + return low - 1; +} +function upperBound(haystack, needle, index) { + for (let i = index + 1; i < haystack.length; index = i++) { + if (haystack[i][COLUMN] !== needle) break; + } + return index; +} +function lowerBound(haystack, needle, index) { + for (let i = index - 1; i >= 0; index = i--) { + if (haystack[i][COLUMN] !== needle) break; + } + return index; +} +function memoizedState() { + return { + lastKey: -1, + lastNeedle: -1, + lastIndex: -1 + }; +} +function memoizedBinarySearch(haystack, needle, state, key) { + const { lastKey, lastNeedle, lastIndex } = state; + let low = 0; + let high = haystack.length - 1; + if (key === lastKey) { + if (needle === lastNeedle) { + found = lastIndex !== -1 && haystack[lastIndex][COLUMN] === needle; + return lastIndex; + } + if (needle >= lastNeedle) { + low = lastIndex === -1 ? 0 : lastIndex; + } else { + high = lastIndex; + } + } + state.lastKey = key; + state.lastNeedle = needle; + return state.lastIndex = binarySearch(haystack, needle, low, high); +} + +// src/types.ts +function parse(map) { + return typeof map === "string" ? JSON.parse(map) : map; +} + +// src/flatten-map.ts +var FlattenMap = function(map, mapUrl) { + const parsed = parse(map); + if (!("sections" in parsed)) { + return new TraceMap(parsed, mapUrl); + } + const mappings = []; + const sources = []; + const sourcesContent = []; + const names = []; + const ignoreList = []; + recurse( + parsed, + mapUrl, + mappings, + sources, + sourcesContent, + names, + ignoreList, + 0, + 0, + Infinity, + Infinity + ); + const joined = { + version: 3, + file: parsed.file, + names, + sources, + sourcesContent, + mappings, + ignoreList + }; + return presortedDecodedMap(joined); +}; +function recurse(input, mapUrl, mappings, sources, sourcesContent, names, ignoreList, lineOffset, columnOffset, stopLine, stopColumn) { + const { sections } = input; + for (let i = 0; i < sections.length; i++) { + const { map, offset } = sections[i]; + let sl = stopLine; + let sc = stopColumn; + if (i + 1 < sections.length) { + const nextOffset = sections[i + 1].offset; + sl = Math.min(stopLine, lineOffset + nextOffset.line); + if (sl === stopLine) { + sc = Math.min(stopColumn, columnOffset + nextOffset.column); + } else if (sl < stopLine) { + sc = columnOffset + nextOffset.column; + } + } + addSection( + map, + mapUrl, + mappings, + sources, + sourcesContent, + names, + ignoreList, + lineOffset + offset.line, + columnOffset + offset.column, + sl, + sc + ); + } +} +function addSection(input, mapUrl, mappings, sources, sourcesContent, names, ignoreList, lineOffset, columnOffset, stopLine, stopColumn) { + const parsed = parse(input); + if ("sections" in parsed) return recurse(...arguments); + const map = new TraceMap(parsed, mapUrl); + const sourcesOffset = sources.length; + const namesOffset = names.length; + const decoded = decodedMappings(map); + const { resolvedSources, sourcesContent: contents, ignoreList: ignores } = map; + append(sources, resolvedSources); + append(names, map.names); + if (contents) append(sourcesContent, contents); + else for (let i = 0; i < resolvedSources.length; i++) sourcesContent.push(null); + if (ignores) for (let i = 0; i < ignores.length; i++) ignoreList.push(ignores[i] + sourcesOffset); + for (let i = 0; i < decoded.length; i++) { + const lineI = lineOffset + i; + if (lineI > stopLine) return; + const out = getLine(mappings, lineI); + const cOffset = i === 0 ? columnOffset : 0; + const line = decoded[i]; + for (let j = 0; j < line.length; j++) { + const seg = line[j]; + const column = cOffset + seg[COLUMN]; + if (lineI === stopLine && column >= stopColumn) return; + if (seg.length === 1) { + out.push([column]); + continue; + } + const sourcesIndex = sourcesOffset + seg[SOURCES_INDEX]; + const sourceLine = seg[SOURCE_LINE]; + const sourceColumn = seg[SOURCE_COLUMN]; + out.push( + seg.length === 4 ? [column, sourcesIndex, sourceLine, sourceColumn] : [column, sourcesIndex, sourceLine, sourceColumn, namesOffset + seg[NAMES_INDEX]] + ); + } + } +} +function append(arr, other) { + for (let i = 0; i < other.length; i++) arr.push(other[i]); +} +function getLine(arr, index) { + for (let i = arr.length; i <= index; i++) arr[i] = []; + return arr[index]; +} + +// src/trace-mapping.ts +var LINE_GTR_ZERO = "`line` must be greater than 0 (lines start at line 1)"; +var COL_GTR_EQ_ZERO = "`column` must be greater than or equal to 0 (columns start at column 0)"; +var LEAST_UPPER_BOUND = -1; +var GREATEST_LOWER_BOUND = 1; +var TraceMap = class { + constructor(map, mapUrl) { + const isString = typeof map === "string"; + if (!isString && map._decodedMemo) return map; + const parsed = parse(map); + const { version, file, names, sourceRoot, sources, sourcesContent } = parsed; + this.version = version; + this.file = file; + this.names = names || []; + this.sourceRoot = sourceRoot; + this.sources = sources; + this.sourcesContent = sourcesContent; + this.ignoreList = parsed.ignoreList || parsed.x_google_ignoreList || void 0; + const resolve = resolver(mapUrl, sourceRoot); + this.resolvedSources = sources.map(resolve); + const { mappings } = parsed; + if (typeof mappings === "string") { + this._encoded = mappings; + this._decoded = void 0; + } else if (Array.isArray(mappings)) { + this._encoded = void 0; + this._decoded = maybeSort(mappings, isString); + } else if (parsed.sections) { + throw new Error(`TraceMap passed sectioned source map, please use FlattenMap export instead`); + } else { + throw new Error(`invalid source map: ${JSON.stringify(parsed)}`); + } + this._decodedMemo = memoizedState(); + this._bySources = void 0; + this._bySourceMemos = void 0; + } +}; +function cast(map) { + return map; +} +function encodedMappings(map) { + var _a, _b; + return (_b = (_a = cast(map))._encoded) != null ? _b : _a._encoded = encode(cast(map)._decoded); +} +function decodedMappings(map) { + var _a; + return (_a = cast(map))._decoded || (_a._decoded = decode(cast(map)._encoded)); +} +function traceSegment(map, line, column) { + const decoded = decodedMappings(map); + if (line >= decoded.length) return null; + const segments = decoded[line]; + const index = traceSegmentInternal( + segments, + cast(map)._decodedMemo, + line, + column, + GREATEST_LOWER_BOUND + ); + return index === -1 ? null : segments[index]; +} +function originalPositionFor(map, needle) { + let { line, column, bias } = needle; + line--; + if (line < 0) throw new Error(LINE_GTR_ZERO); + if (column < 0) throw new Error(COL_GTR_EQ_ZERO); + const decoded = decodedMappings(map); + if (line >= decoded.length) return OMapping(null, null, null, null); + const segments = decoded[line]; + const index = traceSegmentInternal( + segments, + cast(map)._decodedMemo, + line, + column, + bias || GREATEST_LOWER_BOUND + ); + if (index === -1) return OMapping(null, null, null, null); + const segment = segments[index]; + if (segment.length === 1) return OMapping(null, null, null, null); + const { names, resolvedSources } = map; + return OMapping( + resolvedSources[segment[SOURCES_INDEX]], + segment[SOURCE_LINE] + 1, + segment[SOURCE_COLUMN], + segment.length === 5 ? names[segment[NAMES_INDEX]] : null + ); +} +function generatedPositionFor(map, needle) { + const { source, line, column, bias } = needle; + return generatedPosition(map, source, line, column, bias || GREATEST_LOWER_BOUND, false); +} +function allGeneratedPositionsFor(map, needle) { + const { source, line, column, bias } = needle; + return generatedPosition(map, source, line, column, bias || LEAST_UPPER_BOUND, true); +} +function eachMapping(map, cb) { + const decoded = decodedMappings(map); + const { names, resolvedSources } = map; + for (let i = 0; i < decoded.length; i++) { + const line = decoded[i]; + for (let j = 0; j < line.length; j++) { + const seg = line[j]; + const generatedLine = i + 1; + const generatedColumn = seg[0]; + let source = null; + let originalLine = null; + let originalColumn = null; + let name = null; + if (seg.length !== 1) { + source = resolvedSources[seg[1]]; + originalLine = seg[2] + 1; + originalColumn = seg[3]; + } + if (seg.length === 5) name = names[seg[4]]; + cb({ + generatedLine, + generatedColumn, + source, + originalLine, + originalColumn, + name + }); + } + } +} +function sourceIndex(map, source) { + const { sources, resolvedSources } = map; + let index = sources.indexOf(source); + if (index === -1) index = resolvedSources.indexOf(source); + return index; +} +function sourceContentFor(map, source) { + const { sourcesContent } = map; + if (sourcesContent == null) return null; + const index = sourceIndex(map, source); + return index === -1 ? null : sourcesContent[index]; +} +function isIgnored(map, source) { + const { ignoreList } = map; + if (ignoreList == null) return false; + const index = sourceIndex(map, source); + return index === -1 ? false : ignoreList.includes(index); +} +function presortedDecodedMap(map, mapUrl) { + const tracer = new TraceMap(clone(map, []), mapUrl); + cast(tracer)._decoded = map.mappings; + return tracer; +} +function decodedMap(map) { + return clone(map, decodedMappings(map)); +} +function encodedMap(map) { + return clone(map, encodedMappings(map)); +} +function clone(map, mappings) { + return { + version: map.version, + file: map.file, + names: map.names, + sourceRoot: map.sourceRoot, + sources: map.sources, + sourcesContent: map.sourcesContent, + mappings, + ignoreList: map.ignoreList || map.x_google_ignoreList + }; +} +function OMapping(source, line, column, name) { + return { source, line, column, name }; +} +function GMapping(line, column) { + return { line, column }; +} +function traceSegmentInternal(segments, memo, line, column, bias) { + let index = memoizedBinarySearch(segments, column, memo, line); + if (found) { + index = (bias === LEAST_UPPER_BOUND ? upperBound : lowerBound)(segments, column, index); + } else if (bias === LEAST_UPPER_BOUND) index++; + if (index === -1 || index === segments.length) return -1; + return index; +} +function sliceGeneratedPositions(segments, memo, line, column, bias) { + let min = traceSegmentInternal(segments, memo, line, column, GREATEST_LOWER_BOUND); + if (!found && bias === LEAST_UPPER_BOUND) min++; + if (min === -1 || min === segments.length) return []; + const matchedColumn = found ? column : segments[min][COLUMN]; + if (!found) min = lowerBound(segments, matchedColumn, min); + const max = upperBound(segments, matchedColumn, min); + const result = []; + for (; min <= max; min++) { + const segment = segments[min]; + result.push(GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN])); + } + return result; +} +function generatedPosition(map, source, line, column, bias, all) { + var _a, _b; + line--; + if (line < 0) throw new Error(LINE_GTR_ZERO); + if (column < 0) throw new Error(COL_GTR_EQ_ZERO); + const { sources, resolvedSources } = map; + let sourceIndex2 = sources.indexOf(source); + if (sourceIndex2 === -1) sourceIndex2 = resolvedSources.indexOf(source); + if (sourceIndex2 === -1) return all ? [] : GMapping(null, null); + const bySourceMemos = (_a = cast(map))._bySourceMemos || (_a._bySourceMemos = sources.map(memoizedState)); + const generated = (_b = cast(map))._bySources || (_b._bySources = buildBySources(decodedMappings(map), bySourceMemos)); + const segments = generated[sourceIndex2][line]; + if (segments == null) return all ? [] : GMapping(null, null); + const memo = bySourceMemos[sourceIndex2]; + if (all) return sliceGeneratedPositions(segments, memo, line, column, bias); + const index = traceSegmentInternal(segments, memo, line, column, bias); + if (index === -1) return GMapping(null, null); + const segment = segments[index]; + return GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN]); +} +export { + FlattenMap as AnyMap, + FlattenMap, + GREATEST_LOWER_BOUND, + LEAST_UPPER_BOUND, + TraceMap, + allGeneratedPositionsFor, + decodedMap, + decodedMappings, + eachMapping, + encodedMap, + encodedMappings, + generatedPositionFor, + isIgnored, + originalPositionFor, + presortedDecodedMap, + sourceContentFor, + traceSegment +}; +//# sourceMappingURL=trace-mapping.mjs.map diff --git a/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs.map b/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs.map new file mode 100644 index 00000000..a7895814 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs.map @@ -0,0 +1,6 @@ +{ + "version": 3, + "sources": ["../src/trace-mapping.ts", "../src/resolve.ts", "../src/strip-filename.ts", "../src/sourcemap-segment.ts", "../src/sort.ts", "../src/by-source.ts", "../src/binary-search.ts", "../src/types.ts", "../src/flatten-map.ts"], + "mappings": ";AAAA,SAAS,QAAQ,cAAc;;;ACA/B,OAAO,gBAAgB;;;ACGR,SAAR,cAA+B,MAAyC;AAC7E,MAAI,CAAC,KAAM,QAAO;AAClB,QAAM,QAAQ,KAAK,YAAY,GAAG;AAClC,SAAO,KAAK,MAAM,GAAG,QAAQ,CAAC;AAChC;;;ADHe,SAAR,SACL,QACA,YACS;AACT,QAAM,OAAO,cAAc,MAAM;AAIjC,QAAM,SAAS,aAAa,aAAa,MAAM;AAE/C,SAAO,CAAC,WAAW,WAAW,UAAU,UAAU,KAAK,IAAI;AAC7D;;;AEAO,IAAM,SAAS;AACf,IAAM,gBAAgB;AACtB,IAAM,cAAc;AACpB,IAAM,gBAAgB;AACtB,IAAM,cAAc;AAEpB,IAAM,qBAAqB;AAC3B,IAAM,uBAAuB;;;AClBrB,SAAR,UACL,UACA,OACsB;AACtB,QAAM,gBAAgB,wBAAwB,UAAU,CAAC;AACzD,MAAI,kBAAkB,SAAS,OAAQ,QAAO;AAI9C,MAAI,CAAC,MAAO,YAAW,SAAS,MAAM;AAEtC,WAAS,IAAI,eAAe,IAAI,SAAS,QAAQ,IAAI,wBAAwB,UAAU,IAAI,CAAC,GAAG;AAC7F,aAAS,CAAC,IAAI,aAAa,SAAS,CAAC,GAAG,KAAK;AAAA,EAC/C;AACA,SAAO;AACT;AAEA,SAAS,wBAAwB,UAAgC,OAAuB;AACtF,WAAS,IAAI,OAAO,IAAI,SAAS,QAAQ,KAAK;AAC5C,QAAI,CAAC,SAAS,SAAS,CAAC,CAAC,EAAG,QAAO;AAAA,EACrC;AACA,SAAO,SAAS;AAClB;AAEA,SAAS,SAAS,MAAmC;AACnD,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,QAAI,KAAK,CAAC,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC,EAAE,MAAM,GAAG;AACzC,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,aAAa,MAA0B,OAAoC;AAClF,MAAI,CAAC,MAAO,QAAO,KAAK,MAAM;AAC9B,SAAO,KAAK,KAAK,cAAc;AACjC;AAEO,SAAS,eAA4D,GAAM,GAAc;AAC9F,SAAO,EAAE,MAAM,IAAI,EAAE,MAAM;AAC7B;;;ACnCe,SAAR,eACL,SACA,OACU;AACV,QAAM,UAAoB,MAAM,IAAI,MAAM,CAAC,CAAC;AAE5C,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,UAAM,OAAO,QAAQ,CAAC;AACtB,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,YAAM,MAAM,KAAK,CAAC;AAClB,UAAI,IAAI,WAAW,EAAG;AAEtB,YAAMA,eAAc,IAAI,aAAa;AACrC,YAAM,aAAa,IAAI,WAAW;AAClC,YAAM,eAAe,IAAI,aAAa;AAEtC,YAAM,SAAS,QAAQA,YAAW;AAClC,YAAM,OAAQ,4CAAuB,CAAC;AACtC,WAAK,KAAK,CAAC,cAAc,GAAG,IAAI,MAAM,CAAC,CAAC;AAAA,IAC1C;AAAA,EACF;AAEA,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,UAAM,SAAS,QAAQ,CAAC;AACxB,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,YAAM,OAAO,OAAO,CAAC;AACrB,UAAI,KAAM,MAAK,KAAK,cAAc;AAAA,IACpC;AAAA,EACF;AAEA,SAAO;AACT;;;AC/BO,IAAI,QAAQ;AAkBZ,SAAS,aACd,UACA,QACA,KACA,MACQ;AACR,SAAO,OAAO,MAAM;AAClB,UAAM,MAAM,OAAQ,OAAO,OAAQ;AACnC,UAAM,MAAM,SAAS,GAAG,EAAE,MAAM,IAAI;AAEpC,QAAI,QAAQ,GAAG;AACb,cAAQ;AACR,aAAO;AAAA,IACT;AAEA,QAAI,MAAM,GAAG;AACX,YAAM,MAAM;AAAA,IACd,OAAO;AACL,aAAO,MAAM;AAAA,IACf;AAAA,EACF;AAEA,UAAQ;AACR,SAAO,MAAM;AACf;AAEO,SAAS,WACd,UACA,QACA,OACQ;AACR,WAAS,IAAI,QAAQ,GAAG,IAAI,SAAS,QAAQ,QAAQ,KAAK;AACxD,QAAI,SAAS,CAAC,EAAE,MAAM,MAAM,OAAQ;AAAA,EACtC;AACA,SAAO;AACT;AAEO,SAAS,WACd,UACA,QACA,OACQ;AACR,WAAS,IAAI,QAAQ,GAAG,KAAK,GAAG,QAAQ,KAAK;AAC3C,QAAI,SAAS,CAAC,EAAE,MAAM,MAAM,OAAQ;AAAA,EACtC;AACA,SAAO;AACT;AAEO,SAAS,gBAA2B;AACzC,SAAO;AAAA,IACL,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,WAAW;AAAA,EACb;AACF;AAMO,SAAS,qBACd,UACA,QACA,OACA,KACQ;AACR,QAAM,EAAE,SAAS,YAAY,UAAU,IAAI;AAE3C,MAAI,MAAM;AACV,MAAI,OAAO,SAAS,SAAS;AAC7B,MAAI,QAAQ,SAAS;AACnB,QAAI,WAAW,YAAY;AACzB,cAAQ,cAAc,MAAM,SAAS,SAAS,EAAE,MAAM,MAAM;AAC5D,aAAO;AAAA,IACT;AAEA,QAAI,UAAU,YAAY;AAExB,YAAM,cAAc,KAAK,IAAI;AAAA,IAC/B,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AACA,QAAM,UAAU;AAChB,QAAM,aAAa;AAEnB,SAAQ,MAAM,YAAY,aAAa,UAAU,QAAQ,KAAK,IAAI;AACpE;;;ACHO,SAAS,MAAS,KAA4B;AACnD,SAAO,OAAO,QAAQ,WAAW,KAAK,MAAM,GAAG,IAAK;AACtD;;;ACvFO,IAAM,aAAyB,SAAU,KAAK,QAAQ;AAC3D,QAAM,SAAS,MAAM,GAA8B;AAEnD,MAAI,EAAE,cAAc,SAAS;AAC3B,WAAO,IAAI,SAAS,QAA2D,MAAM;AAAA,EACvF;AAEA,QAAM,WAAiC,CAAC;AACxC,QAAM,UAAoB,CAAC;AAC3B,QAAM,iBAAoC,CAAC;AAC3C,QAAM,QAAkB,CAAC;AACzB,QAAM,aAAuB,CAAC;AAE9B;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,QAAM,SAA2B;AAAA,IAC/B,SAAS;AAAA,IACT,MAAM,OAAO;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,SAAO,oBAAoB,MAAM;AACnC;AAEA,SAAS,QACP,OACA,QACA,UACA,SACA,gBACA,OACA,YACA,YACA,cACA,UACA,YACA;AACA,QAAM,EAAE,SAAS,IAAI;AACrB,WAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,UAAM,EAAE,KAAK,OAAO,IAAI,SAAS,CAAC;AAElC,QAAI,KAAK;AACT,QAAI,KAAK;AACT,QAAI,IAAI,IAAI,SAAS,QAAQ;AAC3B,YAAM,aAAa,SAAS,IAAI,CAAC,EAAE;AACnC,WAAK,KAAK,IAAI,UAAU,aAAa,WAAW,IAAI;AAEpD,UAAI,OAAO,UAAU;AACnB,aAAK,KAAK,IAAI,YAAY,eAAe,WAAW,MAAM;AAAA,MAC5D,WAAW,KAAK,UAAU;AACxB,aAAK,eAAe,WAAW;AAAA,MACjC;AAAA,IACF;AAEA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,aAAa,OAAO;AAAA,MACpB,eAAe,OAAO;AAAA,MACtB;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,WACP,OACA,QACA,UACA,SACA,gBACA,OACA,YACA,YACA,cACA,UACA,YACA;AACA,QAAM,SAAS,MAAM,KAAK;AAC1B,MAAI,cAAc,OAAQ,QAAO,QAAQ,GAAI,SAAmD;AAEhG,QAAM,MAAM,IAAI,SAAS,QAAQ,MAAM;AACvC,QAAM,gBAAgB,QAAQ;AAC9B,QAAM,cAAc,MAAM;AAC1B,QAAM,UAAU,gBAAgB,GAAG;AACnC,QAAM,EAAE,iBAAiB,gBAAgB,UAAU,YAAY,QAAQ,IAAI;AAE3E,SAAO,SAAS,eAAe;AAC/B,SAAO,OAAO,IAAI,KAAK;AAEvB,MAAI,SAAU,QAAO,gBAAgB,QAAQ;AAAA,MACxC,UAAS,IAAI,GAAG,IAAI,gBAAgB,QAAQ,IAAK,gBAAe,KAAK,IAAI;AAE9E,MAAI,QAAS,UAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,IAAK,YAAW,KAAK,QAAQ,CAAC,IAAI,aAAa;AAEhG,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,UAAM,QAAQ,aAAa;AAM3B,QAAI,QAAQ,SAAU;AAItB,UAAM,MAAM,QAAQ,UAAU,KAAK;AAGnC,UAAM,UAAU,MAAM,IAAI,eAAe;AAEzC,UAAM,OAAO,QAAQ,CAAC;AACtB,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,YAAM,MAAM,KAAK,CAAC;AAClB,YAAM,SAAS,UAAU,IAAI,MAAM;AAInC,UAAI,UAAU,YAAY,UAAU,WAAY;AAEhD,UAAI,IAAI,WAAW,GAAG;AACpB,YAAI,KAAK,CAAC,MAAM,CAAC;AACjB;AAAA,MACF;AAEA,YAAM,eAAe,gBAAgB,IAAI,aAAa;AACtD,YAAM,aAAa,IAAI,WAAW;AAClC,YAAM,eAAe,IAAI,aAAa;AACtC,UAAI;AAAA,QACF,IAAI,WAAW,IACX,CAAC,QAAQ,cAAc,YAAY,YAAY,IAC/C,CAAC,QAAQ,cAAc,YAAY,cAAc,cAAc,IAAI,WAAW,CAAC;AAAA,MACrF;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,OAAU,KAAU,OAAY;AACvC,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,IAAK,KAAI,KAAK,MAAM,CAAC,CAAC;AAC1D;AAEA,SAAS,QAAW,KAAY,OAAoB;AAClD,WAAS,IAAI,IAAI,QAAQ,KAAK,OAAO,IAAK,KAAI,CAAC,IAAI,CAAC;AACpD,SAAO,IAAI,KAAK;AAClB;;;ARhHA,IAAM,gBAAgB;AACtB,IAAM,kBAAkB;AAEjB,IAAM,oBAAoB;AAC1B,IAAM,uBAAuB;AAI7B,IAAM,WAAN,MAAoC;AAAA,EAkBzC,YAAY,KAAyB,QAAwB;AAC3D,UAAM,WAAW,OAAO,QAAQ;AAChC,QAAI,CAAC,YAAa,IAAyC,aAAc,QAAO;AAEhF,UAAM,SAAS,MAAM,GAAwC;AAE7D,UAAM,EAAE,SAAS,MAAM,OAAO,YAAY,SAAS,eAAe,IAAI;AACtE,SAAK,UAAU;AACf,SAAK,OAAO;AACZ,SAAK,QAAQ,SAAS,CAAC;AACvB,SAAK,aAAa;AAClB,SAAK,UAAU;AACf,SAAK,iBAAiB;AACtB,SAAK,aAAa,OAAO,cAAe,OAAkB,uBAAuB;AAEjF,UAAM,UAAU,SAAS,QAAQ,UAAU;AAC3C,SAAK,kBAAkB,QAAQ,IAAI,OAAO;AAE1C,UAAM,EAAE,SAAS,IAAI;AACrB,QAAI,OAAO,aAAa,UAAU;AAChC,WAAK,WAAW;AAChB,WAAK,WAAW;AAAA,IAClB,WAAW,MAAM,QAAQ,QAAQ,GAAG;AAClC,WAAK,WAAW;AAChB,WAAK,WAAW,UAAU,UAAU,QAAQ;AAAA,IAC9C,WAAY,OAAyC,UAAU;AAC7D,YAAM,IAAI,MAAM,4EAA4E;AAAA,IAC9F,OAAO;AACL,YAAM,IAAI,MAAM,uBAAuB,KAAK,UAAU,MAAM,CAAC,EAAE;AAAA,IACjE;AAEA,SAAK,eAAe,cAAc;AAClC,SAAK,aAAa;AAClB,SAAK,iBAAiB;AAAA,EACxB;AACF;AAMA,SAAS,KAAK,KAAyB;AACrC,SAAO;AACT;AAKO,SAAS,gBAAgB,KAA6C;AAzJ7E;AA0JE,UAAQ,gBAAK,GAAG,GAAE,aAAV,eAAU,WAAa,OAAO,KAAK,GAAG,EAAE,QAAS;AAC3D;AAKO,SAAS,gBAAgB,KAAuD;AAhKvF;AAiKE,UAAQ,UAAK,GAAG,GAAE,aAAV,GAAU,WAAa,OAAO,KAAK,GAAG,EAAE,QAAS;AAC3D;AAMO,SAAS,aACd,KACA,MACA,QACmC;AACnC,QAAM,UAAU,gBAAgB,GAAG;AAInC,MAAI,QAAQ,QAAQ,OAAQ,QAAO;AAEnC,QAAM,WAAW,QAAQ,IAAI;AAC7B,QAAM,QAAQ;AAAA,IACZ;AAAA,IACA,KAAK,GAAG,EAAE;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,SAAO,UAAU,KAAK,OAAO,SAAS,KAAK;AAC7C;AAOO,SAAS,oBACd,KACA,QAC0C;AAC1C,MAAI,EAAE,MAAM,QAAQ,KAAK,IAAI;AAC7B;AACA,MAAI,OAAO,EAAG,OAAM,IAAI,MAAM,aAAa;AAC3C,MAAI,SAAS,EAAG,OAAM,IAAI,MAAM,eAAe;AAE/C,QAAM,UAAU,gBAAgB,GAAG;AAInC,MAAI,QAAQ,QAAQ,OAAQ,QAAO,SAAS,MAAM,MAAM,MAAM,IAAI;AAElE,QAAM,WAAW,QAAQ,IAAI;AAC7B,QAAM,QAAQ;AAAA,IACZ;AAAA,IACA,KAAK,GAAG,EAAE;AAAA,IACV;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,EACV;AAEA,MAAI,UAAU,GAAI,QAAO,SAAS,MAAM,MAAM,MAAM,IAAI;AAExD,QAAM,UAAU,SAAS,KAAK;AAC9B,MAAI,QAAQ,WAAW,EAAG,QAAO,SAAS,MAAM,MAAM,MAAM,IAAI;AAEhE,QAAM,EAAE,OAAO,gBAAgB,IAAI;AACnC,SAAO;AAAA,IACL,gBAAgB,QAAQ,aAAa,CAAC;AAAA,IACtC,QAAQ,WAAW,IAAI;AAAA,IACvB,QAAQ,aAAa;AAAA,IACrB,QAAQ,WAAW,IAAI,MAAM,QAAQ,WAAW,CAAC,IAAI;AAAA,EACvD;AACF;AAKO,SAAS,qBACd,KACA,QAC4C;AAC5C,QAAM,EAAE,QAAQ,MAAM,QAAQ,KAAK,IAAI;AACvC,SAAO,kBAAkB,KAAK,QAAQ,MAAM,QAAQ,QAAQ,sBAAsB,KAAK;AACzF;AAKO,SAAS,yBAAyB,KAAe,QAA0C;AAChG,QAAM,EAAE,QAAQ,MAAM,QAAQ,KAAK,IAAI;AAEvC,SAAO,kBAAkB,KAAK,QAAQ,MAAM,QAAQ,QAAQ,mBAAmB,IAAI;AACrF;AAKO,SAAS,YAAY,KAAe,IAA0C;AACnF,QAAM,UAAU,gBAAgB,GAAG;AACnC,QAAM,EAAE,OAAO,gBAAgB,IAAI;AAEnC,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,UAAM,OAAO,QAAQ,CAAC;AACtB,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,YAAM,MAAM,KAAK,CAAC;AAElB,YAAM,gBAAgB,IAAI;AAC1B,YAAM,kBAAkB,IAAI,CAAC;AAC7B,UAAI,SAAS;AACb,UAAI,eAAe;AACnB,UAAI,iBAAiB;AACrB,UAAI,OAAO;AACX,UAAI,IAAI,WAAW,GAAG;AACpB,iBAAS,gBAAgB,IAAI,CAAC,CAAC;AAC/B,uBAAe,IAAI,CAAC,IAAI;AACxB,yBAAiB,IAAI,CAAC;AAAA,MACxB;AACA,UAAI,IAAI,WAAW,EAAG,QAAO,MAAM,IAAI,CAAC,CAAC;AAEzC,SAAG;AAAA,QACD;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAgB;AAAA,IAClB;AAAA,EACF;AACF;AAEA,SAAS,YAAY,KAAe,QAAwB;AAC1D,QAAM,EAAE,SAAS,gBAAgB,IAAI;AACrC,MAAI,QAAQ,QAAQ,QAAQ,MAAM;AAClC,MAAI,UAAU,GAAI,SAAQ,gBAAgB,QAAQ,MAAM;AACxD,SAAO;AACT;AAKO,SAAS,iBAAiB,KAAe,QAA+B;AAC7E,QAAM,EAAE,eAAe,IAAI;AAC3B,MAAI,kBAAkB,KAAM,QAAO;AACnC,QAAM,QAAQ,YAAY,KAAK,MAAM;AACrC,SAAO,UAAU,KAAK,OAAO,eAAe,KAAK;AACnD;AAKO,SAAS,UAAU,KAAe,QAAyB;AAChE,QAAM,EAAE,WAAW,IAAI;AACvB,MAAI,cAAc,KAAM,QAAO;AAC/B,QAAM,QAAQ,YAAY,KAAK,MAAM;AACrC,SAAO,UAAU,KAAK,QAAQ,WAAW,SAAS,KAAK;AACzD;AAMO,SAAS,oBAAoB,KAAuB,QAA2B;AACpF,QAAM,SAAS,IAAI,SAAS,MAAM,KAAK,CAAC,CAAC,GAAG,MAAM;AAClD,OAAK,MAAM,EAAE,WAAW,IAAI;AAC5B,SAAO;AACT;AAMO,SAAS,WACd,KACkF;AAClF,SAAO,MAAM,KAAK,gBAAgB,GAAG,CAAC;AACxC;AAMO,SAAS,WAAW,KAAiC;AAC1D,SAAO,MAAM,KAAK,gBAAgB,GAAG,CAAC;AACxC;AAEA,SAAS,MACP,KACA,UACwD;AACxD,SAAO;AAAA,IACL,SAAS,IAAI;AAAA,IACb,MAAM,IAAI;AAAA,IACV,OAAO,IAAI;AAAA,IACX,YAAY,IAAI;AAAA,IAChB,SAAS,IAAI;AAAA,IACb,gBAAgB,IAAI;AAAA,IACpB;AAAA,IACA,YAAY,IAAI,cAAe,IAAe;AAAA,EAChD;AACF;AASA,SAAS,SACP,QACA,MACA,QACA,MAC0C;AAC1C,SAAO,EAAE,QAAQ,MAAM,QAAQ,KAAK;AACtC;AAIA,SAAS,SACP,MACA,QAC4C;AAC5C,SAAO,EAAE,MAAM,OAAO;AACxB;AAgBA,SAAS,qBACP,UACA,MACA,MACA,QACA,MACQ;AACR,MAAI,QAAQ,qBAAqB,UAAU,QAAQ,MAAM,IAAI;AAC7D,MAAI,OAAS;AACX,aAAS,SAAS,oBAAoB,aAAa,YAAY,UAAU,QAAQ,KAAK;AAAA,EACxF,WAAW,SAAS,kBAAmB;AAEvC,MAAI,UAAU,MAAM,UAAU,SAAS,OAAQ,QAAO;AACtD,SAAO;AACT;AAEA,SAAS,wBACP,UACA,MACA,MACA,QACA,MACoB;AACpB,MAAI,MAAM,qBAAqB,UAAU,MAAM,MAAM,QAAQ,oBAAoB;AAQjF,MAAI,CAAC,SAAW,SAAS,kBAAmB;AAE5C,MAAI,QAAQ,MAAM,QAAQ,SAAS,OAAQ,QAAO,CAAC;AAKnD,QAAM,gBAAgB,QAAU,SAAS,SAAS,GAAG,EAAE,MAAM;AAG7D,MAAI,CAAC,MAAS,OAAM,WAAW,UAAU,eAAe,GAAG;AAC3D,QAAM,MAAM,WAAW,UAAU,eAAe,GAAG;AAEnD,QAAM,SAAS,CAAC;AAChB,SAAO,OAAO,KAAK,OAAO;AACxB,UAAM,UAAU,SAAS,GAAG;AAC5B,WAAO,KAAK,SAAS,QAAQ,kBAAkB,IAAI,GAAG,QAAQ,oBAAoB,CAAC,CAAC;AAAA,EACtF;AACA,SAAO;AACT;AAkBA,SAAS,kBACP,KACA,QACA,MACA,QACA,MACA,KACiE;AA5dnE;AA6dE;AACA,MAAI,OAAO,EAAG,OAAM,IAAI,MAAM,aAAa;AAC3C,MAAI,SAAS,EAAG,OAAM,IAAI,MAAM,eAAe;AAE/C,QAAM,EAAE,SAAS,gBAAgB,IAAI;AACrC,MAAIC,eAAc,QAAQ,QAAQ,MAAM;AACxC,MAAIA,iBAAgB,GAAI,CAAAA,eAAc,gBAAgB,QAAQ,MAAM;AACpE,MAAIA,iBAAgB,GAAI,QAAO,MAAM,CAAC,IAAI,SAAS,MAAM,IAAI;AAE7D,QAAM,iBAAiB,UAAK,GAAG,GAAE,mBAAV,GAAU,iBAAmB,QAAQ,IAAI,aAAa;AAC7E,QAAM,aAAa,UAAK,GAAG,GAAE,eAAV,GAAU,aAAe,eAAe,gBAAgB,GAAG,GAAG,aAAa;AAE9F,QAAM,WAAW,UAAUA,YAAW,EAAE,IAAI;AAC5C,MAAI,YAAY,KAAM,QAAO,MAAM,CAAC,IAAI,SAAS,MAAM,IAAI;AAE3D,QAAM,OAAO,cAAcA,YAAW;AAEtC,MAAI,IAAK,QAAO,wBAAwB,UAAU,MAAM,MAAM,QAAQ,IAAI;AAE1E,QAAM,QAAQ,qBAAqB,UAAU,MAAM,MAAM,QAAQ,IAAI;AACrE,MAAI,UAAU,GAAI,QAAO,SAAS,MAAM,IAAI;AAE5C,QAAM,UAAU,SAAS,KAAK;AAC9B,SAAO,SAAS,QAAQ,kBAAkB,IAAI,GAAG,QAAQ,oBAAoB,CAAC;AAChF;", + "names": ["sourceIndex", "sourceIndex"] +} diff --git a/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.umd.js b/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.umd.js new file mode 100644 index 00000000..0387ae38 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.umd.js @@ -0,0 +1,559 @@ +(function (global, factory) { + if (typeof exports === 'object' && typeof module !== 'undefined') { + factory(module, require('@jridgewell/resolve-uri'), require('@jridgewell/sourcemap-codec')); + module.exports = def(module); + } else if (typeof define === 'function' && define.amd) { + define(['module', '@jridgewell/resolve-uri', '@jridgewell/sourcemap-codec'], function(mod) { + factory.apply(this, arguments); + mod.exports = def(mod); + }); + } else { + const mod = { exports: {} }; + factory(mod, global.resolveURI, global.sourcemapCodec); + global = typeof globalThis !== 'undefined' ? globalThis : global || self; + global.traceMapping = def(mod); + } + function def(m) { return 'default' in m.exports ? m.exports.default : m.exports; } +})(this, (function (module, require_resolveURI, require_sourcemapCodec) { +"use strict"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// umd:@jridgewell/sourcemap-codec +var require_sourcemap_codec = __commonJS({ + "umd:@jridgewell/sourcemap-codec"(exports, module2) { + module2.exports = require_sourcemapCodec; + } +}); + +// umd:@jridgewell/resolve-uri +var require_resolve_uri = __commonJS({ + "umd:@jridgewell/resolve-uri"(exports, module2) { + module2.exports = require_resolveURI; + } +}); + +// src/trace-mapping.ts +var trace_mapping_exports = {}; +__export(trace_mapping_exports, { + AnyMap: () => FlattenMap, + FlattenMap: () => FlattenMap, + GREATEST_LOWER_BOUND: () => GREATEST_LOWER_BOUND, + LEAST_UPPER_BOUND: () => LEAST_UPPER_BOUND, + TraceMap: () => TraceMap, + allGeneratedPositionsFor: () => allGeneratedPositionsFor, + decodedMap: () => decodedMap, + decodedMappings: () => decodedMappings, + eachMapping: () => eachMapping, + encodedMap: () => encodedMap, + encodedMappings: () => encodedMappings, + generatedPositionFor: () => generatedPositionFor, + isIgnored: () => isIgnored, + originalPositionFor: () => originalPositionFor, + presortedDecodedMap: () => presortedDecodedMap, + sourceContentFor: () => sourceContentFor, + traceSegment: () => traceSegment +}); +module.exports = __toCommonJS(trace_mapping_exports); +var import_sourcemap_codec = __toESM(require_sourcemap_codec()); + +// src/resolve.ts +var import_resolve_uri = __toESM(require_resolve_uri()); + +// src/strip-filename.ts +function stripFilename(path) { + if (!path) return ""; + const index = path.lastIndexOf("/"); + return path.slice(0, index + 1); +} + +// src/resolve.ts +function resolver(mapUrl, sourceRoot) { + const from = stripFilename(mapUrl); + const prefix = sourceRoot ? sourceRoot + "/" : ""; + return (source) => (0, import_resolve_uri.default)(prefix + (source || ""), from); +} + +// src/sourcemap-segment.ts +var COLUMN = 0; +var SOURCES_INDEX = 1; +var SOURCE_LINE = 2; +var SOURCE_COLUMN = 3; +var NAMES_INDEX = 4; +var REV_GENERATED_LINE = 1; +var REV_GENERATED_COLUMN = 2; + +// src/sort.ts +function maybeSort(mappings, owned) { + const unsortedIndex = nextUnsortedSegmentLine(mappings, 0); + if (unsortedIndex === mappings.length) return mappings; + if (!owned) mappings = mappings.slice(); + for (let i = unsortedIndex; i < mappings.length; i = nextUnsortedSegmentLine(mappings, i + 1)) { + mappings[i] = sortSegments(mappings[i], owned); + } + return mappings; +} +function nextUnsortedSegmentLine(mappings, start) { + for (let i = start; i < mappings.length; i++) { + if (!isSorted(mappings[i])) return i; + } + return mappings.length; +} +function isSorted(line) { + for (let j = 1; j < line.length; j++) { + if (line[j][COLUMN] < line[j - 1][COLUMN]) { + return false; + } + } + return true; +} +function sortSegments(line, owned) { + if (!owned) line = line.slice(); + return line.sort(sortComparator); +} +function sortComparator(a, b) { + return a[COLUMN] - b[COLUMN]; +} + +// src/by-source.ts +function buildBySources(decoded, memos) { + const sources = memos.map(() => []); + for (let i = 0; i < decoded.length; i++) { + const line = decoded[i]; + for (let j = 0; j < line.length; j++) { + const seg = line[j]; + if (seg.length === 1) continue; + const sourceIndex2 = seg[SOURCES_INDEX]; + const sourceLine = seg[SOURCE_LINE]; + const sourceColumn = seg[SOURCE_COLUMN]; + const source = sources[sourceIndex2]; + const segs = source[sourceLine] || (source[sourceLine] = []); + segs.push([sourceColumn, i, seg[COLUMN]]); + } + } + for (let i = 0; i < sources.length; i++) { + const source = sources[i]; + for (let j = 0; j < source.length; j++) { + const line = source[j]; + if (line) line.sort(sortComparator); + } + } + return sources; +} + +// src/binary-search.ts +var found = false; +function binarySearch(haystack, needle, low, high) { + while (low <= high) { + const mid = low + (high - low >> 1); + const cmp = haystack[mid][COLUMN] - needle; + if (cmp === 0) { + found = true; + return mid; + } + if (cmp < 0) { + low = mid + 1; + } else { + high = mid - 1; + } + } + found = false; + return low - 1; +} +function upperBound(haystack, needle, index) { + for (let i = index + 1; i < haystack.length; index = i++) { + if (haystack[i][COLUMN] !== needle) break; + } + return index; +} +function lowerBound(haystack, needle, index) { + for (let i = index - 1; i >= 0; index = i--) { + if (haystack[i][COLUMN] !== needle) break; + } + return index; +} +function memoizedState() { + return { + lastKey: -1, + lastNeedle: -1, + lastIndex: -1 + }; +} +function memoizedBinarySearch(haystack, needle, state, key) { + const { lastKey, lastNeedle, lastIndex } = state; + let low = 0; + let high = haystack.length - 1; + if (key === lastKey) { + if (needle === lastNeedle) { + found = lastIndex !== -1 && haystack[lastIndex][COLUMN] === needle; + return lastIndex; + } + if (needle >= lastNeedle) { + low = lastIndex === -1 ? 0 : lastIndex; + } else { + high = lastIndex; + } + } + state.lastKey = key; + state.lastNeedle = needle; + return state.lastIndex = binarySearch(haystack, needle, low, high); +} + +// src/types.ts +function parse(map) { + return typeof map === "string" ? JSON.parse(map) : map; +} + +// src/flatten-map.ts +var FlattenMap = function(map, mapUrl) { + const parsed = parse(map); + if (!("sections" in parsed)) { + return new TraceMap(parsed, mapUrl); + } + const mappings = []; + const sources = []; + const sourcesContent = []; + const names = []; + const ignoreList = []; + recurse( + parsed, + mapUrl, + mappings, + sources, + sourcesContent, + names, + ignoreList, + 0, + 0, + Infinity, + Infinity + ); + const joined = { + version: 3, + file: parsed.file, + names, + sources, + sourcesContent, + mappings, + ignoreList + }; + return presortedDecodedMap(joined); +}; +function recurse(input, mapUrl, mappings, sources, sourcesContent, names, ignoreList, lineOffset, columnOffset, stopLine, stopColumn) { + const { sections } = input; + for (let i = 0; i < sections.length; i++) { + const { map, offset } = sections[i]; + let sl = stopLine; + let sc = stopColumn; + if (i + 1 < sections.length) { + const nextOffset = sections[i + 1].offset; + sl = Math.min(stopLine, lineOffset + nextOffset.line); + if (sl === stopLine) { + sc = Math.min(stopColumn, columnOffset + nextOffset.column); + } else if (sl < stopLine) { + sc = columnOffset + nextOffset.column; + } + } + addSection( + map, + mapUrl, + mappings, + sources, + sourcesContent, + names, + ignoreList, + lineOffset + offset.line, + columnOffset + offset.column, + sl, + sc + ); + } +} +function addSection(input, mapUrl, mappings, sources, sourcesContent, names, ignoreList, lineOffset, columnOffset, stopLine, stopColumn) { + const parsed = parse(input); + if ("sections" in parsed) return recurse(...arguments); + const map = new TraceMap(parsed, mapUrl); + const sourcesOffset = sources.length; + const namesOffset = names.length; + const decoded = decodedMappings(map); + const { resolvedSources, sourcesContent: contents, ignoreList: ignores } = map; + append(sources, resolvedSources); + append(names, map.names); + if (contents) append(sourcesContent, contents); + else for (let i = 0; i < resolvedSources.length; i++) sourcesContent.push(null); + if (ignores) for (let i = 0; i < ignores.length; i++) ignoreList.push(ignores[i] + sourcesOffset); + for (let i = 0; i < decoded.length; i++) { + const lineI = lineOffset + i; + if (lineI > stopLine) return; + const out = getLine(mappings, lineI); + const cOffset = i === 0 ? columnOffset : 0; + const line = decoded[i]; + for (let j = 0; j < line.length; j++) { + const seg = line[j]; + const column = cOffset + seg[COLUMN]; + if (lineI === stopLine && column >= stopColumn) return; + if (seg.length === 1) { + out.push([column]); + continue; + } + const sourcesIndex = sourcesOffset + seg[SOURCES_INDEX]; + const sourceLine = seg[SOURCE_LINE]; + const sourceColumn = seg[SOURCE_COLUMN]; + out.push( + seg.length === 4 ? [column, sourcesIndex, sourceLine, sourceColumn] : [column, sourcesIndex, sourceLine, sourceColumn, namesOffset + seg[NAMES_INDEX]] + ); + } + } +} +function append(arr, other) { + for (let i = 0; i < other.length; i++) arr.push(other[i]); +} +function getLine(arr, index) { + for (let i = arr.length; i <= index; i++) arr[i] = []; + return arr[index]; +} + +// src/trace-mapping.ts +var LINE_GTR_ZERO = "`line` must be greater than 0 (lines start at line 1)"; +var COL_GTR_EQ_ZERO = "`column` must be greater than or equal to 0 (columns start at column 0)"; +var LEAST_UPPER_BOUND = -1; +var GREATEST_LOWER_BOUND = 1; +var TraceMap = class { + constructor(map, mapUrl) { + const isString = typeof map === "string"; + if (!isString && map._decodedMemo) return map; + const parsed = parse(map); + const { version, file, names, sourceRoot, sources, sourcesContent } = parsed; + this.version = version; + this.file = file; + this.names = names || []; + this.sourceRoot = sourceRoot; + this.sources = sources; + this.sourcesContent = sourcesContent; + this.ignoreList = parsed.ignoreList || parsed.x_google_ignoreList || void 0; + const resolve = resolver(mapUrl, sourceRoot); + this.resolvedSources = sources.map(resolve); + const { mappings } = parsed; + if (typeof mappings === "string") { + this._encoded = mappings; + this._decoded = void 0; + } else if (Array.isArray(mappings)) { + this._encoded = void 0; + this._decoded = maybeSort(mappings, isString); + } else if (parsed.sections) { + throw new Error(`TraceMap passed sectioned source map, please use FlattenMap export instead`); + } else { + throw new Error(`invalid source map: ${JSON.stringify(parsed)}`); + } + this._decodedMemo = memoizedState(); + this._bySources = void 0; + this._bySourceMemos = void 0; + } +}; +function cast(map) { + return map; +} +function encodedMappings(map) { + var _a, _b; + return (_b = (_a = cast(map))._encoded) != null ? _b : _a._encoded = (0, import_sourcemap_codec.encode)(cast(map)._decoded); +} +function decodedMappings(map) { + var _a; + return (_a = cast(map))._decoded || (_a._decoded = (0, import_sourcemap_codec.decode)(cast(map)._encoded)); +} +function traceSegment(map, line, column) { + const decoded = decodedMappings(map); + if (line >= decoded.length) return null; + const segments = decoded[line]; + const index = traceSegmentInternal( + segments, + cast(map)._decodedMemo, + line, + column, + GREATEST_LOWER_BOUND + ); + return index === -1 ? null : segments[index]; +} +function originalPositionFor(map, needle) { + let { line, column, bias } = needle; + line--; + if (line < 0) throw new Error(LINE_GTR_ZERO); + if (column < 0) throw new Error(COL_GTR_EQ_ZERO); + const decoded = decodedMappings(map); + if (line >= decoded.length) return OMapping(null, null, null, null); + const segments = decoded[line]; + const index = traceSegmentInternal( + segments, + cast(map)._decodedMemo, + line, + column, + bias || GREATEST_LOWER_BOUND + ); + if (index === -1) return OMapping(null, null, null, null); + const segment = segments[index]; + if (segment.length === 1) return OMapping(null, null, null, null); + const { names, resolvedSources } = map; + return OMapping( + resolvedSources[segment[SOURCES_INDEX]], + segment[SOURCE_LINE] + 1, + segment[SOURCE_COLUMN], + segment.length === 5 ? names[segment[NAMES_INDEX]] : null + ); +} +function generatedPositionFor(map, needle) { + const { source, line, column, bias } = needle; + return generatedPosition(map, source, line, column, bias || GREATEST_LOWER_BOUND, false); +} +function allGeneratedPositionsFor(map, needle) { + const { source, line, column, bias } = needle; + return generatedPosition(map, source, line, column, bias || LEAST_UPPER_BOUND, true); +} +function eachMapping(map, cb) { + const decoded = decodedMappings(map); + const { names, resolvedSources } = map; + for (let i = 0; i < decoded.length; i++) { + const line = decoded[i]; + for (let j = 0; j < line.length; j++) { + const seg = line[j]; + const generatedLine = i + 1; + const generatedColumn = seg[0]; + let source = null; + let originalLine = null; + let originalColumn = null; + let name = null; + if (seg.length !== 1) { + source = resolvedSources[seg[1]]; + originalLine = seg[2] + 1; + originalColumn = seg[3]; + } + if (seg.length === 5) name = names[seg[4]]; + cb({ + generatedLine, + generatedColumn, + source, + originalLine, + originalColumn, + name + }); + } + } +} +function sourceIndex(map, source) { + const { sources, resolvedSources } = map; + let index = sources.indexOf(source); + if (index === -1) index = resolvedSources.indexOf(source); + return index; +} +function sourceContentFor(map, source) { + const { sourcesContent } = map; + if (sourcesContent == null) return null; + const index = sourceIndex(map, source); + return index === -1 ? null : sourcesContent[index]; +} +function isIgnored(map, source) { + const { ignoreList } = map; + if (ignoreList == null) return false; + const index = sourceIndex(map, source); + return index === -1 ? false : ignoreList.includes(index); +} +function presortedDecodedMap(map, mapUrl) { + const tracer = new TraceMap(clone(map, []), mapUrl); + cast(tracer)._decoded = map.mappings; + return tracer; +} +function decodedMap(map) { + return clone(map, decodedMappings(map)); +} +function encodedMap(map) { + return clone(map, encodedMappings(map)); +} +function clone(map, mappings) { + return { + version: map.version, + file: map.file, + names: map.names, + sourceRoot: map.sourceRoot, + sources: map.sources, + sourcesContent: map.sourcesContent, + mappings, + ignoreList: map.ignoreList || map.x_google_ignoreList + }; +} +function OMapping(source, line, column, name) { + return { source, line, column, name }; +} +function GMapping(line, column) { + return { line, column }; +} +function traceSegmentInternal(segments, memo, line, column, bias) { + let index = memoizedBinarySearch(segments, column, memo, line); + if (found) { + index = (bias === LEAST_UPPER_BOUND ? upperBound : lowerBound)(segments, column, index); + } else if (bias === LEAST_UPPER_BOUND) index++; + if (index === -1 || index === segments.length) return -1; + return index; +} +function sliceGeneratedPositions(segments, memo, line, column, bias) { + let min = traceSegmentInternal(segments, memo, line, column, GREATEST_LOWER_BOUND); + if (!found && bias === LEAST_UPPER_BOUND) min++; + if (min === -1 || min === segments.length) return []; + const matchedColumn = found ? column : segments[min][COLUMN]; + if (!found) min = lowerBound(segments, matchedColumn, min); + const max = upperBound(segments, matchedColumn, min); + const result = []; + for (; min <= max; min++) { + const segment = segments[min]; + result.push(GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN])); + } + return result; +} +function generatedPosition(map, source, line, column, bias, all) { + var _a, _b; + line--; + if (line < 0) throw new Error(LINE_GTR_ZERO); + if (column < 0) throw new Error(COL_GTR_EQ_ZERO); + const { sources, resolvedSources } = map; + let sourceIndex2 = sources.indexOf(source); + if (sourceIndex2 === -1) sourceIndex2 = resolvedSources.indexOf(source); + if (sourceIndex2 === -1) return all ? [] : GMapping(null, null); + const bySourceMemos = (_a = cast(map))._bySourceMemos || (_a._bySourceMemos = sources.map(memoizedState)); + const generated = (_b = cast(map))._bySources || (_b._bySources = buildBySources(decodedMappings(map), bySourceMemos)); + const segments = generated[sourceIndex2][line]; + if (segments == null) return all ? [] : GMapping(null, null); + const memo = bySourceMemos[sourceIndex2]; + if (all) return sliceGeneratedPositions(segments, memo, line, column, bias); + const index = traceSegmentInternal(segments, memo, line, column, bias); + if (index === -1) return GMapping(null, null); + const segment = segments[index]; + return GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN]); +} +})); +//# sourceMappingURL=trace-mapping.umd.js.map diff --git a/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.umd.js.map b/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.umd.js.map new file mode 100644 index 00000000..68b0c775 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.umd.js.map @@ -0,0 +1,6 @@ +{ + "version": 3, + "sources": ["umd:@jridgewell/sourcemap-codec", "umd:@jridgewell/resolve-uri", "../src/trace-mapping.ts", "../src/resolve.ts", "../src/strip-filename.ts", "../src/sourcemap-segment.ts", "../src/sort.ts", "../src/by-source.ts", "../src/binary-search.ts", "../src/types.ts", "../src/flatten-map.ts"], + "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,6CAAAA,SAAA;AAAA,IAAAA,QAAO,UAAU;AAAA;AAAA;;;ACAjB;AAAA,yCAAAC,SAAA;AAAA,IAAAA,QAAO,UAAU;AAAA;AAAA;;;ACAjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6BAA+B;;;ACA/B,yBAAuB;;;ACGR,SAAR,cAA+B,MAAyC;AAC7E,MAAI,CAAC,KAAM,QAAO;AAClB,QAAM,QAAQ,KAAK,YAAY,GAAG;AAClC,SAAO,KAAK,MAAM,GAAG,QAAQ,CAAC;AAChC;;;ADHe,SAAR,SACL,QACA,YACS;AACT,QAAM,OAAO,cAAc,MAAM;AAIjC,QAAM,SAAS,aAAa,aAAa,MAAM;AAE/C,SAAO,CAAC,eAAW,mBAAAC,SAAW,UAAU,UAAU,KAAK,IAAI;AAC7D;;;AEAO,IAAM,SAAS;AACf,IAAM,gBAAgB;AACtB,IAAM,cAAc;AACpB,IAAM,gBAAgB;AACtB,IAAM,cAAc;AAEpB,IAAM,qBAAqB;AAC3B,IAAM,uBAAuB;;;AClBrB,SAAR,UACL,UACA,OACsB;AACtB,QAAM,gBAAgB,wBAAwB,UAAU,CAAC;AACzD,MAAI,kBAAkB,SAAS,OAAQ,QAAO;AAI9C,MAAI,CAAC,MAAO,YAAW,SAAS,MAAM;AAEtC,WAAS,IAAI,eAAe,IAAI,SAAS,QAAQ,IAAI,wBAAwB,UAAU,IAAI,CAAC,GAAG;AAC7F,aAAS,CAAC,IAAI,aAAa,SAAS,CAAC,GAAG,KAAK;AAAA,EAC/C;AACA,SAAO;AACT;AAEA,SAAS,wBAAwB,UAAgC,OAAuB;AACtF,WAAS,IAAI,OAAO,IAAI,SAAS,QAAQ,KAAK;AAC5C,QAAI,CAAC,SAAS,SAAS,CAAC,CAAC,EAAG,QAAO;AAAA,EACrC;AACA,SAAO,SAAS;AAClB;AAEA,SAAS,SAAS,MAAmC;AACnD,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,QAAI,KAAK,CAAC,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC,EAAE,MAAM,GAAG;AACzC,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,aAAa,MAA0B,OAAoC;AAClF,MAAI,CAAC,MAAO,QAAO,KAAK,MAAM;AAC9B,SAAO,KAAK,KAAK,cAAc;AACjC;AAEO,SAAS,eAA4D,GAAM,GAAc;AAC9F,SAAO,EAAE,MAAM,IAAI,EAAE,MAAM;AAC7B;;;ACnCe,SAAR,eACL,SACA,OACU;AACV,QAAM,UAAoB,MAAM,IAAI,MAAM,CAAC,CAAC;AAE5C,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,UAAM,OAAO,QAAQ,CAAC;AACtB,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,YAAM,MAAM,KAAK,CAAC;AAClB,UAAI,IAAI,WAAW,EAAG;AAEtB,YAAMC,eAAc,IAAI,aAAa;AACrC,YAAM,aAAa,IAAI,WAAW;AAClC,YAAM,eAAe,IAAI,aAAa;AAEtC,YAAM,SAAS,QAAQA,YAAW;AAClC,YAAM,OAAQ,4CAAuB,CAAC;AACtC,WAAK,KAAK,CAAC,cAAc,GAAG,IAAI,MAAM,CAAC,CAAC;AAAA,IAC1C;AAAA,EACF;AAEA,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,UAAM,SAAS,QAAQ,CAAC;AACxB,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,YAAM,OAAO,OAAO,CAAC;AACrB,UAAI,KAAM,MAAK,KAAK,cAAc;AAAA,IACpC;AAAA,EACF;AAEA,SAAO;AACT;;;AC/BO,IAAI,QAAQ;AAkBZ,SAAS,aACd,UACA,QACA,KACA,MACQ;AACR,SAAO,OAAO,MAAM;AAClB,UAAM,MAAM,OAAQ,OAAO,OAAQ;AACnC,UAAM,MAAM,SAAS,GAAG,EAAE,MAAM,IAAI;AAEpC,QAAI,QAAQ,GAAG;AACb,cAAQ;AACR,aAAO;AAAA,IACT;AAEA,QAAI,MAAM,GAAG;AACX,YAAM,MAAM;AAAA,IACd,OAAO;AACL,aAAO,MAAM;AAAA,IACf;AAAA,EACF;AAEA,UAAQ;AACR,SAAO,MAAM;AACf;AAEO,SAAS,WACd,UACA,QACA,OACQ;AACR,WAAS,IAAI,QAAQ,GAAG,IAAI,SAAS,QAAQ,QAAQ,KAAK;AACxD,QAAI,SAAS,CAAC,EAAE,MAAM,MAAM,OAAQ;AAAA,EACtC;AACA,SAAO;AACT;AAEO,SAAS,WACd,UACA,QACA,OACQ;AACR,WAAS,IAAI,QAAQ,GAAG,KAAK,GAAG,QAAQ,KAAK;AAC3C,QAAI,SAAS,CAAC,EAAE,MAAM,MAAM,OAAQ;AAAA,EACtC;AACA,SAAO;AACT;AAEO,SAAS,gBAA2B;AACzC,SAAO;AAAA,IACL,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,WAAW;AAAA,EACb;AACF;AAMO,SAAS,qBACd,UACA,QACA,OACA,KACQ;AACR,QAAM,EAAE,SAAS,YAAY,UAAU,IAAI;AAE3C,MAAI,MAAM;AACV,MAAI,OAAO,SAAS,SAAS;AAC7B,MAAI,QAAQ,SAAS;AACnB,QAAI,WAAW,YAAY;AACzB,cAAQ,cAAc,MAAM,SAAS,SAAS,EAAE,MAAM,MAAM;AAC5D,aAAO;AAAA,IACT;AAEA,QAAI,UAAU,YAAY;AAExB,YAAM,cAAc,KAAK,IAAI;AAAA,IAC/B,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AACA,QAAM,UAAU;AAChB,QAAM,aAAa;AAEnB,SAAQ,MAAM,YAAY,aAAa,UAAU,QAAQ,KAAK,IAAI;AACpE;;;ACHO,SAAS,MAAS,KAA4B;AACnD,SAAO,OAAO,QAAQ,WAAW,KAAK,MAAM,GAAG,IAAK;AACtD;;;ACvFO,IAAM,aAAyB,SAAU,KAAK,QAAQ;AAC3D,QAAM,SAAS,MAAM,GAA8B;AAEnD,MAAI,EAAE,cAAc,SAAS;AAC3B,WAAO,IAAI,SAAS,QAA2D,MAAM;AAAA,EACvF;AAEA,QAAM,WAAiC,CAAC;AACxC,QAAM,UAAoB,CAAC;AAC3B,QAAM,iBAAoC,CAAC;AAC3C,QAAM,QAAkB,CAAC;AACzB,QAAM,aAAuB,CAAC;AAE9B;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,QAAM,SAA2B;AAAA,IAC/B,SAAS;AAAA,IACT,MAAM,OAAO;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,SAAO,oBAAoB,MAAM;AACnC;AAEA,SAAS,QACP,OACA,QACA,UACA,SACA,gBACA,OACA,YACA,YACA,cACA,UACA,YACA;AACA,QAAM,EAAE,SAAS,IAAI;AACrB,WAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,UAAM,EAAE,KAAK,OAAO,IAAI,SAAS,CAAC;AAElC,QAAI,KAAK;AACT,QAAI,KAAK;AACT,QAAI,IAAI,IAAI,SAAS,QAAQ;AAC3B,YAAM,aAAa,SAAS,IAAI,CAAC,EAAE;AACnC,WAAK,KAAK,IAAI,UAAU,aAAa,WAAW,IAAI;AAEpD,UAAI,OAAO,UAAU;AACnB,aAAK,KAAK,IAAI,YAAY,eAAe,WAAW,MAAM;AAAA,MAC5D,WAAW,KAAK,UAAU;AACxB,aAAK,eAAe,WAAW;AAAA,MACjC;AAAA,IACF;AAEA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,aAAa,OAAO;AAAA,MACpB,eAAe,OAAO;AAAA,MACtB;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,WACP,OACA,QACA,UACA,SACA,gBACA,OACA,YACA,YACA,cACA,UACA,YACA;AACA,QAAM,SAAS,MAAM,KAAK;AAC1B,MAAI,cAAc,OAAQ,QAAO,QAAQ,GAAI,SAAmD;AAEhG,QAAM,MAAM,IAAI,SAAS,QAAQ,MAAM;AACvC,QAAM,gBAAgB,QAAQ;AAC9B,QAAM,cAAc,MAAM;AAC1B,QAAM,UAAU,gBAAgB,GAAG;AACnC,QAAM,EAAE,iBAAiB,gBAAgB,UAAU,YAAY,QAAQ,IAAI;AAE3E,SAAO,SAAS,eAAe;AAC/B,SAAO,OAAO,IAAI,KAAK;AAEvB,MAAI,SAAU,QAAO,gBAAgB,QAAQ;AAAA,MACxC,UAAS,IAAI,GAAG,IAAI,gBAAgB,QAAQ,IAAK,gBAAe,KAAK,IAAI;AAE9E,MAAI,QAAS,UAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,IAAK,YAAW,KAAK,QAAQ,CAAC,IAAI,aAAa;AAEhG,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,UAAM,QAAQ,aAAa;AAM3B,QAAI,QAAQ,SAAU;AAItB,UAAM,MAAM,QAAQ,UAAU,KAAK;AAGnC,UAAM,UAAU,MAAM,IAAI,eAAe;AAEzC,UAAM,OAAO,QAAQ,CAAC;AACtB,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,YAAM,MAAM,KAAK,CAAC;AAClB,YAAM,SAAS,UAAU,IAAI,MAAM;AAInC,UAAI,UAAU,YAAY,UAAU,WAAY;AAEhD,UAAI,IAAI,WAAW,GAAG;AACpB,YAAI,KAAK,CAAC,MAAM,CAAC;AACjB;AAAA,MACF;AAEA,YAAM,eAAe,gBAAgB,IAAI,aAAa;AACtD,YAAM,aAAa,IAAI,WAAW;AAClC,YAAM,eAAe,IAAI,aAAa;AACtC,UAAI;AAAA,QACF,IAAI,WAAW,IACX,CAAC,QAAQ,cAAc,YAAY,YAAY,IAC/C,CAAC,QAAQ,cAAc,YAAY,cAAc,cAAc,IAAI,WAAW,CAAC;AAAA,MACrF;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,OAAU,KAAU,OAAY;AACvC,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,IAAK,KAAI,KAAK,MAAM,CAAC,CAAC;AAC1D;AAEA,SAAS,QAAW,KAAY,OAAoB;AAClD,WAAS,IAAI,IAAI,QAAQ,KAAK,OAAO,IAAK,KAAI,CAAC,IAAI,CAAC;AACpD,SAAO,IAAI,KAAK;AAClB;;;ARhHA,IAAM,gBAAgB;AACtB,IAAM,kBAAkB;AAEjB,IAAM,oBAAoB;AAC1B,IAAM,uBAAuB;AAI7B,IAAM,WAAN,MAAoC;AAAA,EAkBzC,YAAY,KAAyB,QAAwB;AAC3D,UAAM,WAAW,OAAO,QAAQ;AAChC,QAAI,CAAC,YAAa,IAAyC,aAAc,QAAO;AAEhF,UAAM,SAAS,MAAM,GAAwC;AAE7D,UAAM,EAAE,SAAS,MAAM,OAAO,YAAY,SAAS,eAAe,IAAI;AACtE,SAAK,UAAU;AACf,SAAK,OAAO;AACZ,SAAK,QAAQ,SAAS,CAAC;AACvB,SAAK,aAAa;AAClB,SAAK,UAAU;AACf,SAAK,iBAAiB;AACtB,SAAK,aAAa,OAAO,cAAe,OAAkB,uBAAuB;AAEjF,UAAM,UAAU,SAAS,QAAQ,UAAU;AAC3C,SAAK,kBAAkB,QAAQ,IAAI,OAAO;AAE1C,UAAM,EAAE,SAAS,IAAI;AACrB,QAAI,OAAO,aAAa,UAAU;AAChC,WAAK,WAAW;AAChB,WAAK,WAAW;AAAA,IAClB,WAAW,MAAM,QAAQ,QAAQ,GAAG;AAClC,WAAK,WAAW;AAChB,WAAK,WAAW,UAAU,UAAU,QAAQ;AAAA,IAC9C,WAAY,OAAyC,UAAU;AAC7D,YAAM,IAAI,MAAM,4EAA4E;AAAA,IAC9F,OAAO;AACL,YAAM,IAAI,MAAM,uBAAuB,KAAK,UAAU,MAAM,CAAC,EAAE;AAAA,IACjE;AAEA,SAAK,eAAe,cAAc;AAClC,SAAK,aAAa;AAClB,SAAK,iBAAiB;AAAA,EACxB;AACF;AAMA,SAAS,KAAK,KAAyB;AACrC,SAAO;AACT;AAKO,SAAS,gBAAgB,KAA6C;AAzJ7E;AA0JE,UAAQ,gBAAK,GAAG,GAAE,aAAV,eAAU,eAAa,+BAAO,KAAK,GAAG,EAAE,QAAS;AAC3D;AAKO,SAAS,gBAAgB,KAAuD;AAhKvF;AAiKE,UAAQ,UAAK,GAAG,GAAE,aAAV,GAAU,eAAa,+BAAO,KAAK,GAAG,EAAE,QAAS;AAC3D;AAMO,SAAS,aACd,KACA,MACA,QACmC;AACnC,QAAM,UAAU,gBAAgB,GAAG;AAInC,MAAI,QAAQ,QAAQ,OAAQ,QAAO;AAEnC,QAAM,WAAW,QAAQ,IAAI;AAC7B,QAAM,QAAQ;AAAA,IACZ;AAAA,IACA,KAAK,GAAG,EAAE;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,SAAO,UAAU,KAAK,OAAO,SAAS,KAAK;AAC7C;AAOO,SAAS,oBACd,KACA,QAC0C;AAC1C,MAAI,EAAE,MAAM,QAAQ,KAAK,IAAI;AAC7B;AACA,MAAI,OAAO,EAAG,OAAM,IAAI,MAAM,aAAa;AAC3C,MAAI,SAAS,EAAG,OAAM,IAAI,MAAM,eAAe;AAE/C,QAAM,UAAU,gBAAgB,GAAG;AAInC,MAAI,QAAQ,QAAQ,OAAQ,QAAO,SAAS,MAAM,MAAM,MAAM,IAAI;AAElE,QAAM,WAAW,QAAQ,IAAI;AAC7B,QAAM,QAAQ;AAAA,IACZ;AAAA,IACA,KAAK,GAAG,EAAE;AAAA,IACV;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,EACV;AAEA,MAAI,UAAU,GAAI,QAAO,SAAS,MAAM,MAAM,MAAM,IAAI;AAExD,QAAM,UAAU,SAAS,KAAK;AAC9B,MAAI,QAAQ,WAAW,EAAG,QAAO,SAAS,MAAM,MAAM,MAAM,IAAI;AAEhE,QAAM,EAAE,OAAO,gBAAgB,IAAI;AACnC,SAAO;AAAA,IACL,gBAAgB,QAAQ,aAAa,CAAC;AAAA,IACtC,QAAQ,WAAW,IAAI;AAAA,IACvB,QAAQ,aAAa;AAAA,IACrB,QAAQ,WAAW,IAAI,MAAM,QAAQ,WAAW,CAAC,IAAI;AAAA,EACvD;AACF;AAKO,SAAS,qBACd,KACA,QAC4C;AAC5C,QAAM,EAAE,QAAQ,MAAM,QAAQ,KAAK,IAAI;AACvC,SAAO,kBAAkB,KAAK,QAAQ,MAAM,QAAQ,QAAQ,sBAAsB,KAAK;AACzF;AAKO,SAAS,yBAAyB,KAAe,QAA0C;AAChG,QAAM,EAAE,QAAQ,MAAM,QAAQ,KAAK,IAAI;AAEvC,SAAO,kBAAkB,KAAK,QAAQ,MAAM,QAAQ,QAAQ,mBAAmB,IAAI;AACrF;AAKO,SAAS,YAAY,KAAe,IAA0C;AACnF,QAAM,UAAU,gBAAgB,GAAG;AACnC,QAAM,EAAE,OAAO,gBAAgB,IAAI;AAEnC,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,UAAM,OAAO,QAAQ,CAAC;AACtB,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,YAAM,MAAM,KAAK,CAAC;AAElB,YAAM,gBAAgB,IAAI;AAC1B,YAAM,kBAAkB,IAAI,CAAC;AAC7B,UAAI,SAAS;AACb,UAAI,eAAe;AACnB,UAAI,iBAAiB;AACrB,UAAI,OAAO;AACX,UAAI,IAAI,WAAW,GAAG;AACpB,iBAAS,gBAAgB,IAAI,CAAC,CAAC;AAC/B,uBAAe,IAAI,CAAC,IAAI;AACxB,yBAAiB,IAAI,CAAC;AAAA,MACxB;AACA,UAAI,IAAI,WAAW,EAAG,QAAO,MAAM,IAAI,CAAC,CAAC;AAEzC,SAAG;AAAA,QACD;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAgB;AAAA,IAClB;AAAA,EACF;AACF;AAEA,SAAS,YAAY,KAAe,QAAwB;AAC1D,QAAM,EAAE,SAAS,gBAAgB,IAAI;AACrC,MAAI,QAAQ,QAAQ,QAAQ,MAAM;AAClC,MAAI,UAAU,GAAI,SAAQ,gBAAgB,QAAQ,MAAM;AACxD,SAAO;AACT;AAKO,SAAS,iBAAiB,KAAe,QAA+B;AAC7E,QAAM,EAAE,eAAe,IAAI;AAC3B,MAAI,kBAAkB,KAAM,QAAO;AACnC,QAAM,QAAQ,YAAY,KAAK,MAAM;AACrC,SAAO,UAAU,KAAK,OAAO,eAAe,KAAK;AACnD;AAKO,SAAS,UAAU,KAAe,QAAyB;AAChE,QAAM,EAAE,WAAW,IAAI;AACvB,MAAI,cAAc,KAAM,QAAO;AAC/B,QAAM,QAAQ,YAAY,KAAK,MAAM;AACrC,SAAO,UAAU,KAAK,QAAQ,WAAW,SAAS,KAAK;AACzD;AAMO,SAAS,oBAAoB,KAAuB,QAA2B;AACpF,QAAM,SAAS,IAAI,SAAS,MAAM,KAAK,CAAC,CAAC,GAAG,MAAM;AAClD,OAAK,MAAM,EAAE,WAAW,IAAI;AAC5B,SAAO;AACT;AAMO,SAAS,WACd,KACkF;AAClF,SAAO,MAAM,KAAK,gBAAgB,GAAG,CAAC;AACxC;AAMO,SAAS,WAAW,KAAiC;AAC1D,SAAO,MAAM,KAAK,gBAAgB,GAAG,CAAC;AACxC;AAEA,SAAS,MACP,KACA,UACwD;AACxD,SAAO;AAAA,IACL,SAAS,IAAI;AAAA,IACb,MAAM,IAAI;AAAA,IACV,OAAO,IAAI;AAAA,IACX,YAAY,IAAI;AAAA,IAChB,SAAS,IAAI;AAAA,IACb,gBAAgB,IAAI;AAAA,IACpB;AAAA,IACA,YAAY,IAAI,cAAe,IAAe;AAAA,EAChD;AACF;AASA,SAAS,SACP,QACA,MACA,QACA,MAC0C;AAC1C,SAAO,EAAE,QAAQ,MAAM,QAAQ,KAAK;AACtC;AAIA,SAAS,SACP,MACA,QAC4C;AAC5C,SAAO,EAAE,MAAM,OAAO;AACxB;AAgBA,SAAS,qBACP,UACA,MACA,MACA,QACA,MACQ;AACR,MAAI,QAAQ,qBAAqB,UAAU,QAAQ,MAAM,IAAI;AAC7D,MAAI,OAAS;AACX,aAAS,SAAS,oBAAoB,aAAa,YAAY,UAAU,QAAQ,KAAK;AAAA,EACxF,WAAW,SAAS,kBAAmB;AAEvC,MAAI,UAAU,MAAM,UAAU,SAAS,OAAQ,QAAO;AACtD,SAAO;AACT;AAEA,SAAS,wBACP,UACA,MACA,MACA,QACA,MACoB;AACpB,MAAI,MAAM,qBAAqB,UAAU,MAAM,MAAM,QAAQ,oBAAoB;AAQjF,MAAI,CAAC,SAAW,SAAS,kBAAmB;AAE5C,MAAI,QAAQ,MAAM,QAAQ,SAAS,OAAQ,QAAO,CAAC;AAKnD,QAAM,gBAAgB,QAAU,SAAS,SAAS,GAAG,EAAE,MAAM;AAG7D,MAAI,CAAC,MAAS,OAAM,WAAW,UAAU,eAAe,GAAG;AAC3D,QAAM,MAAM,WAAW,UAAU,eAAe,GAAG;AAEnD,QAAM,SAAS,CAAC;AAChB,SAAO,OAAO,KAAK,OAAO;AACxB,UAAM,UAAU,SAAS,GAAG;AAC5B,WAAO,KAAK,SAAS,QAAQ,kBAAkB,IAAI,GAAG,QAAQ,oBAAoB,CAAC,CAAC;AAAA,EACtF;AACA,SAAO;AACT;AAkBA,SAAS,kBACP,KACA,QACA,MACA,QACA,MACA,KACiE;AA5dnE;AA6dE;AACA,MAAI,OAAO,EAAG,OAAM,IAAI,MAAM,aAAa;AAC3C,MAAI,SAAS,EAAG,OAAM,IAAI,MAAM,eAAe;AAE/C,QAAM,EAAE,SAAS,gBAAgB,IAAI;AACrC,MAAIC,eAAc,QAAQ,QAAQ,MAAM;AACxC,MAAIA,iBAAgB,GAAI,CAAAA,eAAc,gBAAgB,QAAQ,MAAM;AACpE,MAAIA,iBAAgB,GAAI,QAAO,MAAM,CAAC,IAAI,SAAS,MAAM,IAAI;AAE7D,QAAM,iBAAiB,UAAK,GAAG,GAAE,mBAAV,GAAU,iBAAmB,QAAQ,IAAI,aAAa;AAC7E,QAAM,aAAa,UAAK,GAAG,GAAE,eAAV,GAAU,aAAe,eAAe,gBAAgB,GAAG,GAAG,aAAa;AAE9F,QAAM,WAAW,UAAUA,YAAW,EAAE,IAAI;AAC5C,MAAI,YAAY,KAAM,QAAO,MAAM,CAAC,IAAI,SAAS,MAAM,IAAI;AAE3D,QAAM,OAAO,cAAcA,YAAW;AAEtC,MAAI,IAAK,QAAO,wBAAwB,UAAU,MAAM,MAAM,QAAQ,IAAI;AAE1E,QAAM,QAAQ,qBAAqB,UAAU,MAAM,MAAM,QAAQ,IAAI;AACrE,MAAI,UAAU,GAAI,QAAO,SAAS,MAAM,IAAI;AAE5C,QAAM,UAAU,SAAS,KAAK;AAC9B,SAAO,SAAS,QAAQ,kBAAkB,IAAI,GAAG,QAAQ,oBAAoB,CAAC;AAChF;", + "names": ["module", "module", "resolveUri", "sourceIndex", "sourceIndex"] +} diff --git a/node_modules/@jridgewell/trace-mapping/package.json b/node_modules/@jridgewell/trace-mapping/package.json new file mode 100644 index 00000000..9d3a1c08 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/package.json @@ -0,0 +1,67 @@ +{ + "name": "@jridgewell/trace-mapping", + "version": "0.3.31", + "description": "Trace the original position through a source map", + "keywords": [ + "source", + "map" + ], + "main": "dist/trace-mapping.umd.js", + "module": "dist/trace-mapping.mjs", + "types": "types/trace-mapping.d.cts", + "files": [ + "dist", + "src", + "types" + ], + "exports": { + ".": [ + { + "import": { + "types": "./types/trace-mapping.d.mts", + "default": "./dist/trace-mapping.mjs" + }, + "default": { + "types": "./types/trace-mapping.d.cts", + "default": "./dist/trace-mapping.umd.js" + } + }, + "./dist/trace-mapping.umd.js" + ], + "./package.json": "./package.json" + }, + "scripts": { + "benchmark": "run-s build:code benchmark:*", + "benchmark:install": "cd benchmark && npm install", + "benchmark:only": "node --expose-gc benchmark/index.mjs", + "build": "run-s -n build:code build:types", + "build:code": "node ../../esbuild.mjs trace-mapping.ts", + "build:types": "run-s build:types:force build:types:emit build:types:mts", + "build:types:force": "rimraf tsconfig.build.tsbuildinfo", + "build:types:emit": "tsc --project tsconfig.build.json", + "build:types:mts": "node ../../mts-types.mjs", + "clean": "run-s -n clean:code clean:types", + "clean:code": "tsc --build --clean tsconfig.build.json", + "clean:types": "rimraf dist types", + "test": "run-s -n test:types test:only test:format", + "test:format": "prettier --check '{src,test}/**/*.ts'", + "test:only": "mocha", + "test:types": "eslint '{src,test}/**/*.ts'", + "lint": "run-s -n lint:types lint:format", + "lint:format": "npm run test:format -- --write", + "lint:types": "npm run test:types -- --fix", + "prepublishOnly": "npm run-s -n build test" + }, + "homepage": "https://github.com/jridgewell/sourcemaps/tree/main/packages/trace-mapping", + "repository": { + "type": "git", + "url": "git+https://github.com/jridgewell/sourcemaps.git", + "directory": "packages/trace-mapping" + }, + "author": "Justin Ridgewell ", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } +} diff --git a/node_modules/@jridgewell/trace-mapping/src/binary-search.ts b/node_modules/@jridgewell/trace-mapping/src/binary-search.ts new file mode 100644 index 00000000..c1144ad1 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/src/binary-search.ts @@ -0,0 +1,115 @@ +import type { SourceMapSegment, ReverseSegment } from './sourcemap-segment'; +import { COLUMN } from './sourcemap-segment'; + +export type MemoState = { + lastKey: number; + lastNeedle: number; + lastIndex: number; +}; + +export let found = false; + +/** + * A binary search implementation that returns the index if a match is found. + * If no match is found, then the left-index (the index associated with the item that comes just + * before the desired index) is returned. To maintain proper sort order, a splice would happen at + * the next index: + * + * ```js + * const array = [1, 3]; + * const needle = 2; + * const index = binarySearch(array, needle, (item, needle) => item - needle); + * + * assert.equal(index, 0); + * array.splice(index + 1, 0, needle); + * assert.deepEqual(array, [1, 2, 3]); + * ``` + */ +export function binarySearch( + haystack: SourceMapSegment[] | ReverseSegment[], + needle: number, + low: number, + high: number, +): number { + while (low <= high) { + const mid = low + ((high - low) >> 1); + const cmp = haystack[mid][COLUMN] - needle; + + if (cmp === 0) { + found = true; + return mid; + } + + if (cmp < 0) { + low = mid + 1; + } else { + high = mid - 1; + } + } + + found = false; + return low - 1; +} + +export function upperBound( + haystack: SourceMapSegment[] | ReverseSegment[], + needle: number, + index: number, +): number { + for (let i = index + 1; i < haystack.length; index = i++) { + if (haystack[i][COLUMN] !== needle) break; + } + return index; +} + +export function lowerBound( + haystack: SourceMapSegment[] | ReverseSegment[], + needle: number, + index: number, +): number { + for (let i = index - 1; i >= 0; index = i--) { + if (haystack[i][COLUMN] !== needle) break; + } + return index; +} + +export function memoizedState(): MemoState { + return { + lastKey: -1, + lastNeedle: -1, + lastIndex: -1, + }; +} + +/** + * This overly complicated beast is just to record the last tested line/column and the resulting + * index, allowing us to skip a few tests if mappings are monotonically increasing. + */ +export function memoizedBinarySearch( + haystack: SourceMapSegment[] | ReverseSegment[], + needle: number, + state: MemoState, + key: number, +): number { + const { lastKey, lastNeedle, lastIndex } = state; + + let low = 0; + let high = haystack.length - 1; + if (key === lastKey) { + if (needle === lastNeedle) { + found = lastIndex !== -1 && haystack[lastIndex][COLUMN] === needle; + return lastIndex; + } + + if (needle >= lastNeedle) { + // lastIndex may be -1 if the previous needle was not found. + low = lastIndex === -1 ? 0 : lastIndex; + } else { + high = lastIndex; + } + } + state.lastKey = key; + state.lastNeedle = needle; + + return (state.lastIndex = binarySearch(haystack, needle, low, high)); +} diff --git a/node_modules/@jridgewell/trace-mapping/src/by-source.ts b/node_modules/@jridgewell/trace-mapping/src/by-source.ts new file mode 100644 index 00000000..1da6af05 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/src/by-source.ts @@ -0,0 +1,41 @@ +import { COLUMN, SOURCES_INDEX, SOURCE_LINE, SOURCE_COLUMN } from './sourcemap-segment'; +import { sortComparator } from './sort'; + +import type { ReverseSegment, SourceMapSegment } from './sourcemap-segment'; + +export type Source = ReverseSegment[][]; + +// Rebuilds the original source files, with mappings that are ordered by source line/column instead +// of generated line/column. +export default function buildBySources( + decoded: readonly SourceMapSegment[][], + memos: unknown[], +): Source[] { + const sources: Source[] = memos.map(() => []); + + for (let i = 0; i < decoded.length; i++) { + const line = decoded[i]; + for (let j = 0; j < line.length; j++) { + const seg = line[j]; + if (seg.length === 1) continue; + + const sourceIndex = seg[SOURCES_INDEX]; + const sourceLine = seg[SOURCE_LINE]; + const sourceColumn = seg[SOURCE_COLUMN]; + + const source = sources[sourceIndex]; + const segs = (source[sourceLine] ||= []); + segs.push([sourceColumn, i, seg[COLUMN]]); + } + } + + for (let i = 0; i < sources.length; i++) { + const source = sources[i]; + for (let j = 0; j < source.length; j++) { + const line = source[j]; + if (line) line.sort(sortComparator); + } + } + + return sources; +} diff --git a/node_modules/@jridgewell/trace-mapping/src/flatten-map.ts b/node_modules/@jridgewell/trace-mapping/src/flatten-map.ts new file mode 100644 index 00000000..61ac40ca --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/src/flatten-map.ts @@ -0,0 +1,192 @@ +import { TraceMap, presortedDecodedMap, decodedMappings } from './trace-mapping'; +import { + COLUMN, + SOURCES_INDEX, + SOURCE_LINE, + SOURCE_COLUMN, + NAMES_INDEX, +} from './sourcemap-segment'; +import { parse } from './types'; + +import type { + DecodedSourceMap, + DecodedSourceMapXInput, + EncodedSourceMapXInput, + SectionedSourceMapXInput, + SectionedSourceMapInput, + SectionXInput, + Ro, +} from './types'; +import type { SourceMapSegment } from './sourcemap-segment'; + +type FlattenMap = { + new (map: Ro, mapUrl?: string | null): TraceMap; + (map: Ro, mapUrl?: string | null): TraceMap; +}; + +export const FlattenMap: FlattenMap = function (map, mapUrl) { + const parsed = parse(map as SectionedSourceMapInput); + + if (!('sections' in parsed)) { + return new TraceMap(parsed as DecodedSourceMapXInput | EncodedSourceMapXInput, mapUrl); + } + + const mappings: SourceMapSegment[][] = []; + const sources: string[] = []; + const sourcesContent: (string | null)[] = []; + const names: string[] = []; + const ignoreList: number[] = []; + + recurse( + parsed, + mapUrl, + mappings, + sources, + sourcesContent, + names, + ignoreList, + 0, + 0, + Infinity, + Infinity, + ); + + const joined: DecodedSourceMap = { + version: 3, + file: parsed.file, + names, + sources, + sourcesContent, + mappings, + ignoreList, + }; + + return presortedDecodedMap(joined); +} as FlattenMap; + +function recurse( + input: SectionedSourceMapXInput, + mapUrl: string | null | undefined, + mappings: SourceMapSegment[][], + sources: string[], + sourcesContent: (string | null)[], + names: string[], + ignoreList: number[], + lineOffset: number, + columnOffset: number, + stopLine: number, + stopColumn: number, +) { + const { sections } = input; + for (let i = 0; i < sections.length; i++) { + const { map, offset } = sections[i]; + + let sl = stopLine; + let sc = stopColumn; + if (i + 1 < sections.length) { + const nextOffset = sections[i + 1].offset; + sl = Math.min(stopLine, lineOffset + nextOffset.line); + + if (sl === stopLine) { + sc = Math.min(stopColumn, columnOffset + nextOffset.column); + } else if (sl < stopLine) { + sc = columnOffset + nextOffset.column; + } + } + + addSection( + map, + mapUrl, + mappings, + sources, + sourcesContent, + names, + ignoreList, + lineOffset + offset.line, + columnOffset + offset.column, + sl, + sc, + ); + } +} + +function addSection( + input: SectionXInput['map'], + mapUrl: string | null | undefined, + mappings: SourceMapSegment[][], + sources: string[], + sourcesContent: (string | null)[], + names: string[], + ignoreList: number[], + lineOffset: number, + columnOffset: number, + stopLine: number, + stopColumn: number, +) { + const parsed = parse(input); + if ('sections' in parsed) return recurse(...(arguments as unknown as Parameters)); + + const map = new TraceMap(parsed, mapUrl); + const sourcesOffset = sources.length; + const namesOffset = names.length; + const decoded = decodedMappings(map); + const { resolvedSources, sourcesContent: contents, ignoreList: ignores } = map; + + append(sources, resolvedSources); + append(names, map.names); + + if (contents) append(sourcesContent, contents); + else for (let i = 0; i < resolvedSources.length; i++) sourcesContent.push(null); + + if (ignores) for (let i = 0; i < ignores.length; i++) ignoreList.push(ignores[i] + sourcesOffset); + + for (let i = 0; i < decoded.length; i++) { + const lineI = lineOffset + i; + + // We can only add so many lines before we step into the range that the next section's map + // controls. When we get to the last line, then we'll start checking the segments to see if + // they've crossed into the column range. But it may not have any columns that overstep, so we + // still need to check that we don't overstep lines, too. + if (lineI > stopLine) return; + + // The out line may already exist in mappings (if we're continuing the line started by a + // previous section). Or, we may have jumped ahead several lines to start this section. + const out = getLine(mappings, lineI); + // On the 0th loop, the section's column offset shifts us forward. On all other lines (since the + // map can be multiple lines), it doesn't. + const cOffset = i === 0 ? columnOffset : 0; + + const line = decoded[i]; + for (let j = 0; j < line.length; j++) { + const seg = line[j]; + const column = cOffset + seg[COLUMN]; + + // If this segment steps into the column range that the next section's map controls, we need + // to stop early. + if (lineI === stopLine && column >= stopColumn) return; + + if (seg.length === 1) { + out.push([column]); + continue; + } + + const sourcesIndex = sourcesOffset + seg[SOURCES_INDEX]; + const sourceLine = seg[SOURCE_LINE]; + const sourceColumn = seg[SOURCE_COLUMN]; + out.push( + seg.length === 4 + ? [column, sourcesIndex, sourceLine, sourceColumn] + : [column, sourcesIndex, sourceLine, sourceColumn, namesOffset + seg[NAMES_INDEX]], + ); + } + } +} + +function append(arr: T[], other: T[]) { + for (let i = 0; i < other.length; i++) arr.push(other[i]); +} + +function getLine(arr: T[][], index: number): T[] { + for (let i = arr.length; i <= index; i++) arr[i] = []; + return arr[index]; +} diff --git a/node_modules/@jridgewell/trace-mapping/src/resolve.ts b/node_modules/@jridgewell/trace-mapping/src/resolve.ts new file mode 100644 index 00000000..30bfa3b2 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/src/resolve.ts @@ -0,0 +1,16 @@ +import resolveUri from '@jridgewell/resolve-uri'; +import stripFilename from './strip-filename'; + +type Resolve = (source: string | null) => string; +export default function resolver( + mapUrl: string | null | undefined, + sourceRoot: string | undefined, +): Resolve { + const from = stripFilename(mapUrl); + // The sourceRoot is always treated as a directory, if it's not empty. + // https://github.com/mozilla/source-map/blob/8cb3ee57/lib/util.js#L327 + // https://github.com/chromium/chromium/blob/da4adbb3/third_party/blink/renderer/devtools/front_end/sdk/SourceMap.js#L400-L401 + const prefix = sourceRoot ? sourceRoot + '/' : ''; + + return (source) => resolveUri(prefix + (source || ''), from); +} diff --git a/node_modules/@jridgewell/trace-mapping/src/sort.ts b/node_modules/@jridgewell/trace-mapping/src/sort.ts new file mode 100644 index 00000000..5d016cb7 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/src/sort.ts @@ -0,0 +1,45 @@ +import { COLUMN } from './sourcemap-segment'; + +import type { ReverseSegment, SourceMapSegment } from './sourcemap-segment'; + +export default function maybeSort( + mappings: SourceMapSegment[][], + owned: boolean, +): SourceMapSegment[][] { + const unsortedIndex = nextUnsortedSegmentLine(mappings, 0); + if (unsortedIndex === mappings.length) return mappings; + + // If we own the array (meaning we parsed it from JSON), then we're free to directly mutate it. If + // not, we do not want to modify the consumer's input array. + if (!owned) mappings = mappings.slice(); + + for (let i = unsortedIndex; i < mappings.length; i = nextUnsortedSegmentLine(mappings, i + 1)) { + mappings[i] = sortSegments(mappings[i], owned); + } + return mappings; +} + +function nextUnsortedSegmentLine(mappings: SourceMapSegment[][], start: number): number { + for (let i = start; i < mappings.length; i++) { + if (!isSorted(mappings[i])) return i; + } + return mappings.length; +} + +function isSorted(line: SourceMapSegment[]): boolean { + for (let j = 1; j < line.length; j++) { + if (line[j][COLUMN] < line[j - 1][COLUMN]) { + return false; + } + } + return true; +} + +function sortSegments(line: SourceMapSegment[], owned: boolean): SourceMapSegment[] { + if (!owned) line = line.slice(); + return line.sort(sortComparator); +} + +export function sortComparator(a: T, b: T): number { + return a[COLUMN] - b[COLUMN]; +} diff --git a/node_modules/@jridgewell/trace-mapping/src/sourcemap-segment.ts b/node_modules/@jridgewell/trace-mapping/src/sourcemap-segment.ts new file mode 100644 index 00000000..94f1b6ab --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/src/sourcemap-segment.ts @@ -0,0 +1,23 @@ +type GeneratedColumn = number; +type SourcesIndex = number; +type SourceLine = number; +type SourceColumn = number; +type NamesIndex = number; + +type GeneratedLine = number; + +export type SourceMapSegment = + | [GeneratedColumn] + | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn] + | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn, NamesIndex]; + +export type ReverseSegment = [SourceColumn, GeneratedLine, GeneratedColumn]; + +export const COLUMN = 0; +export const SOURCES_INDEX = 1; +export const SOURCE_LINE = 2; +export const SOURCE_COLUMN = 3; +export const NAMES_INDEX = 4; + +export const REV_GENERATED_LINE = 1; +export const REV_GENERATED_COLUMN = 2; diff --git a/node_modules/@jridgewell/trace-mapping/src/strip-filename.ts b/node_modules/@jridgewell/trace-mapping/src/strip-filename.ts new file mode 100644 index 00000000..2c889800 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/src/strip-filename.ts @@ -0,0 +1,8 @@ +/** + * Removes everything after the last "/", but leaves the slash. + */ +export default function stripFilename(path: string | undefined | null): string { + if (!path) return ''; + const index = path.lastIndexOf('/'); + return path.slice(0, index + 1); +} diff --git a/node_modules/@jridgewell/trace-mapping/src/trace-mapping.ts b/node_modules/@jridgewell/trace-mapping/src/trace-mapping.ts new file mode 100644 index 00000000..0b793d5b --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/src/trace-mapping.ts @@ -0,0 +1,502 @@ +import { encode, decode } from '@jridgewell/sourcemap-codec'; + +import resolver from './resolve'; +import maybeSort from './sort'; +import buildBySources from './by-source'; +import { + memoizedState, + memoizedBinarySearch, + upperBound, + lowerBound, + found as bsFound, +} from './binary-search'; +import { + COLUMN, + SOURCES_INDEX, + SOURCE_LINE, + SOURCE_COLUMN, + NAMES_INDEX, + REV_GENERATED_LINE, + REV_GENERATED_COLUMN, +} from './sourcemap-segment'; +import { parse } from './types'; + +import type { SourceMapSegment, ReverseSegment } from './sourcemap-segment'; +import type { + SourceMapV3, + DecodedSourceMap, + EncodedSourceMap, + InvalidOriginalMapping, + OriginalMapping, + InvalidGeneratedMapping, + GeneratedMapping, + SourceMapInput, + Needle, + SourceNeedle, + SourceMap, + EachMapping, + Bias, + XInput, + SectionedSourceMap, + Ro, +} from './types'; +import type { Source } from './by-source'; +import type { MemoState } from './binary-search'; + +export type { SourceMapSegment } from './sourcemap-segment'; +export type { + SourceMap, + DecodedSourceMap, + EncodedSourceMap, + Section, + SectionedSourceMap, + SourceMapV3, + Bias, + EachMapping, + GeneratedMapping, + InvalidGeneratedMapping, + InvalidOriginalMapping, + Needle, + OriginalMapping, + OriginalMapping as Mapping, + SectionedSourceMapInput, + SourceMapInput, + SourceNeedle, + XInput, + EncodedSourceMapXInput, + DecodedSourceMapXInput, + SectionedSourceMapXInput, + SectionXInput, +} from './types'; + +interface PublicMap { + _encoded: TraceMap['_encoded']; + _decoded: TraceMap['_decoded']; + _decodedMemo: TraceMap['_decodedMemo']; + _bySources: TraceMap['_bySources']; + _bySourceMemos: TraceMap['_bySourceMemos']; +} + +const LINE_GTR_ZERO = '`line` must be greater than 0 (lines start at line 1)'; +const COL_GTR_EQ_ZERO = '`column` must be greater than or equal to 0 (columns start at column 0)'; + +export const LEAST_UPPER_BOUND = -1; +export const GREATEST_LOWER_BOUND = 1; + +export { FlattenMap, FlattenMap as AnyMap } from './flatten-map'; + +export class TraceMap implements SourceMap { + declare version: SourceMapV3['version']; + declare file: SourceMapV3['file']; + declare names: SourceMapV3['names']; + declare sourceRoot: SourceMapV3['sourceRoot']; + declare sources: SourceMapV3['sources']; + declare sourcesContent: SourceMapV3['sourcesContent']; + declare ignoreList: SourceMapV3['ignoreList']; + + declare resolvedSources: string[]; + declare private _encoded: string | undefined; + + declare private _decoded: SourceMapSegment[][] | undefined; + declare private _decodedMemo: MemoState; + + declare private _bySources: Source[] | undefined; + declare private _bySourceMemos: MemoState[] | undefined; + + constructor(map: Ro, mapUrl?: string | null) { + const isString = typeof map === 'string'; + if (!isString && (map as unknown as { _decodedMemo: any })._decodedMemo) return map as TraceMap; + + const parsed = parse(map as Exclude); + + const { version, file, names, sourceRoot, sources, sourcesContent } = parsed; + this.version = version; + this.file = file; + this.names = names || []; + this.sourceRoot = sourceRoot; + this.sources = sources; + this.sourcesContent = sourcesContent; + this.ignoreList = parsed.ignoreList || (parsed as XInput).x_google_ignoreList || undefined; + + const resolve = resolver(mapUrl, sourceRoot); + this.resolvedSources = sources.map(resolve); + + const { mappings } = parsed; + if (typeof mappings === 'string') { + this._encoded = mappings; + this._decoded = undefined; + } else if (Array.isArray(mappings)) { + this._encoded = undefined; + this._decoded = maybeSort(mappings, isString); + } else if ((parsed as unknown as SectionedSourceMap).sections) { + throw new Error(`TraceMap passed sectioned source map, please use FlattenMap export instead`); + } else { + throw new Error(`invalid source map: ${JSON.stringify(parsed)}`); + } + + this._decodedMemo = memoizedState(); + this._bySources = undefined; + this._bySourceMemos = undefined; + } +} + +/** + * Typescript doesn't allow friend access to private fields, so this just casts the map into a type + * with public access modifiers. + */ +function cast(map: unknown): PublicMap { + return map as any; +} + +/** + * Returns the encoded (VLQ string) form of the SourceMap's mappings field. + */ +export function encodedMappings(map: TraceMap): EncodedSourceMap['mappings'] { + return (cast(map)._encoded ??= encode(cast(map)._decoded!)); +} + +/** + * Returns the decoded (array of lines of segments) form of the SourceMap's mappings field. + */ +export function decodedMappings(map: TraceMap): Readonly { + return (cast(map)._decoded ||= decode(cast(map)._encoded!)); +} + +/** + * A low-level API to find the segment associated with a generated line/column (think, from a + * stack trace). Line and column here are 0-based, unlike `originalPositionFor`. + */ +export function traceSegment( + map: TraceMap, + line: number, + column: number, +): Readonly | null { + const decoded = decodedMappings(map); + + // It's common for parent source maps to have pointers to lines that have no + // mapping (like a "//# sourceMappingURL=") at the end of the child file. + if (line >= decoded.length) return null; + + const segments = decoded[line]; + const index = traceSegmentInternal( + segments, + cast(map)._decodedMemo, + line, + column, + GREATEST_LOWER_BOUND, + ); + + return index === -1 ? null : segments[index]; +} + +/** + * A higher-level API to find the source/line/column associated with a generated line/column + * (think, from a stack trace). Line is 1-based, but column is 0-based, due to legacy behavior in + * `source-map` library. + */ +export function originalPositionFor( + map: TraceMap, + needle: Needle, +): OriginalMapping | InvalidOriginalMapping { + let { line, column, bias } = needle; + line--; + if (line < 0) throw new Error(LINE_GTR_ZERO); + if (column < 0) throw new Error(COL_GTR_EQ_ZERO); + + const decoded = decodedMappings(map); + + // It's common for parent source maps to have pointers to lines that have no + // mapping (like a "//# sourceMappingURL=") at the end of the child file. + if (line >= decoded.length) return OMapping(null, null, null, null); + + const segments = decoded[line]; + const index = traceSegmentInternal( + segments, + cast(map)._decodedMemo, + line, + column, + bias || GREATEST_LOWER_BOUND, + ); + + if (index === -1) return OMapping(null, null, null, null); + + const segment = segments[index]; + if (segment.length === 1) return OMapping(null, null, null, null); + + const { names, resolvedSources } = map; + return OMapping( + resolvedSources[segment[SOURCES_INDEX]], + segment[SOURCE_LINE] + 1, + segment[SOURCE_COLUMN], + segment.length === 5 ? names[segment[NAMES_INDEX]] : null, + ); +} + +/** + * Finds the generated line/column position of the provided source/line/column source position. + */ +export function generatedPositionFor( + map: TraceMap, + needle: SourceNeedle, +): GeneratedMapping | InvalidGeneratedMapping { + const { source, line, column, bias } = needle; + return generatedPosition(map, source, line, column, bias || GREATEST_LOWER_BOUND, false); +} + +/** + * Finds all generated line/column positions of the provided source/line/column source position. + */ +export function allGeneratedPositionsFor(map: TraceMap, needle: SourceNeedle): GeneratedMapping[] { + const { source, line, column, bias } = needle; + // SourceMapConsumer uses LEAST_UPPER_BOUND for some reason, so we follow suit. + return generatedPosition(map, source, line, column, bias || LEAST_UPPER_BOUND, true); +} + +/** + * Iterates each mapping in generated position order. + */ +export function eachMapping(map: TraceMap, cb: (mapping: EachMapping) => void): void { + const decoded = decodedMappings(map); + const { names, resolvedSources } = map; + + for (let i = 0; i < decoded.length; i++) { + const line = decoded[i]; + for (let j = 0; j < line.length; j++) { + const seg = line[j]; + + const generatedLine = i + 1; + const generatedColumn = seg[0]; + let source = null; + let originalLine = null; + let originalColumn = null; + let name = null; + if (seg.length !== 1) { + source = resolvedSources[seg[1]]; + originalLine = seg[2] + 1; + originalColumn = seg[3]; + } + if (seg.length === 5) name = names[seg[4]]; + + cb({ + generatedLine, + generatedColumn, + source, + originalLine, + originalColumn, + name, + } as EachMapping); + } + } +} + +function sourceIndex(map: TraceMap, source: string): number { + const { sources, resolvedSources } = map; + let index = sources.indexOf(source); + if (index === -1) index = resolvedSources.indexOf(source); + return index; +} + +/** + * Retrieves the source content for a particular source, if its found. Returns null if not. + */ +export function sourceContentFor(map: TraceMap, source: string): string | null { + const { sourcesContent } = map; + if (sourcesContent == null) return null; + const index = sourceIndex(map, source); + return index === -1 ? null : sourcesContent[index]; +} + +/** + * Determines if the source is marked to ignore by the source map. + */ +export function isIgnored(map: TraceMap, source: string): boolean { + const { ignoreList } = map; + if (ignoreList == null) return false; + const index = sourceIndex(map, source); + return index === -1 ? false : ignoreList.includes(index); +} + +/** + * A helper that skips sorting of the input map's mappings array, which can be expensive for larger + * maps. + */ +export function presortedDecodedMap(map: DecodedSourceMap, mapUrl?: string): TraceMap { + const tracer = new TraceMap(clone(map, []), mapUrl); + cast(tracer)._decoded = map.mappings; + return tracer; +} + +/** + * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects + * a sourcemap, or to JSON.stringify. + */ +export function decodedMap( + map: TraceMap, +): Omit & { mappings: readonly SourceMapSegment[][] } { + return clone(map, decodedMappings(map)); +} + +/** + * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects + * a sourcemap, or to JSON.stringify. + */ +export function encodedMap(map: TraceMap): EncodedSourceMap { + return clone(map, encodedMappings(map)); +} + +function clone( + map: TraceMap | DecodedSourceMap, + mappings: T, +): T extends string ? EncodedSourceMap : DecodedSourceMap { + return { + version: map.version, + file: map.file, + names: map.names, + sourceRoot: map.sourceRoot, + sources: map.sources, + sourcesContent: map.sourcesContent, + mappings, + ignoreList: map.ignoreList || (map as XInput).x_google_ignoreList, + } as any; +} + +function OMapping(source: null, line: null, column: null, name: null): InvalidOriginalMapping; +function OMapping( + source: string, + line: number, + column: number, + name: string | null, +): OriginalMapping; +function OMapping( + source: string | null, + line: number | null, + column: number | null, + name: string | null, +): OriginalMapping | InvalidOriginalMapping { + return { source, line, column, name } as any; +} + +function GMapping(line: null, column: null): InvalidGeneratedMapping; +function GMapping(line: number, column: number): GeneratedMapping; +function GMapping( + line: number | null, + column: number | null, +): GeneratedMapping | InvalidGeneratedMapping { + return { line, column } as any; +} + +function traceSegmentInternal( + segments: SourceMapSegment[], + memo: MemoState, + line: number, + column: number, + bias: Bias, +): number; +function traceSegmentInternal( + segments: ReverseSegment[], + memo: MemoState, + line: number, + column: number, + bias: Bias, +): number; +function traceSegmentInternal( + segments: SourceMapSegment[] | ReverseSegment[], + memo: MemoState, + line: number, + column: number, + bias: Bias, +): number { + let index = memoizedBinarySearch(segments, column, memo, line); + if (bsFound) { + index = (bias === LEAST_UPPER_BOUND ? upperBound : lowerBound)(segments, column, index); + } else if (bias === LEAST_UPPER_BOUND) index++; + + if (index === -1 || index === segments.length) return -1; + return index; +} + +function sliceGeneratedPositions( + segments: ReverseSegment[], + memo: MemoState, + line: number, + column: number, + bias: Bias, +): GeneratedMapping[] { + let min = traceSegmentInternal(segments, memo, line, column, GREATEST_LOWER_BOUND); + + // We ignored the bias when tracing the segment so that we're guarnateed to find the first (in + // insertion order) segment that matched. Even if we did respect the bias when tracing, we would + // still need to call `lowerBound()` to find the first segment, which is slower than just looking + // for the GREATEST_LOWER_BOUND to begin with. The only difference that matters for us is when the + // binary search didn't match, in which case GREATEST_LOWER_BOUND just needs to increment to + // match LEAST_UPPER_BOUND. + if (!bsFound && bias === LEAST_UPPER_BOUND) min++; + + if (min === -1 || min === segments.length) return []; + + // We may have found the segment that started at an earlier column. If this is the case, then we + // need to slice all generated segments that match _that_ column, because all such segments span + // to our desired column. + const matchedColumn = bsFound ? column : segments[min][COLUMN]; + + // The binary search is not guaranteed to find the lower bound when a match wasn't found. + if (!bsFound) min = lowerBound(segments, matchedColumn, min); + const max = upperBound(segments, matchedColumn, min); + + const result = []; + for (; min <= max; min++) { + const segment = segments[min]; + result.push(GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN])); + } + return result; +} + +function generatedPosition( + map: TraceMap, + source: string, + line: number, + column: number, + bias: Bias, + all: false, +): GeneratedMapping | InvalidGeneratedMapping; +function generatedPosition( + map: TraceMap, + source: string, + line: number, + column: number, + bias: Bias, + all: true, +): GeneratedMapping[]; +function generatedPosition( + map: TraceMap, + source: string, + line: number, + column: number, + bias: Bias, + all: boolean, +): GeneratedMapping | InvalidGeneratedMapping | GeneratedMapping[] { + line--; + if (line < 0) throw new Error(LINE_GTR_ZERO); + if (column < 0) throw new Error(COL_GTR_EQ_ZERO); + + const { sources, resolvedSources } = map; + let sourceIndex = sources.indexOf(source); + if (sourceIndex === -1) sourceIndex = resolvedSources.indexOf(source); + if (sourceIndex === -1) return all ? [] : GMapping(null, null); + + const bySourceMemos = (cast(map)._bySourceMemos ||= sources.map(memoizedState)); + const generated = (cast(map)._bySources ||= buildBySources(decodedMappings(map), bySourceMemos)); + + const segments = generated[sourceIndex][line]; + if (segments == null) return all ? [] : GMapping(null, null); + + const memo = bySourceMemos[sourceIndex]; + + if (all) return sliceGeneratedPositions(segments, memo, line, column, bias); + + const index = traceSegmentInternal(segments, memo, line, column, bias); + if (index === -1) return GMapping(null, null); + + const segment = segments[index]; + return GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN]); +} diff --git a/node_modules/@jridgewell/trace-mapping/src/types.ts b/node_modules/@jridgewell/trace-mapping/src/types.ts new file mode 100644 index 00000000..730a61fb --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/src/types.ts @@ -0,0 +1,114 @@ +import type { SourceMapSegment } from './sourcemap-segment'; +import type { GREATEST_LOWER_BOUND, LEAST_UPPER_BOUND, TraceMap } from './trace-mapping'; + +export interface SourceMapV3 { + file?: string | null; + names: string[]; + sourceRoot?: string; + sources: (string | null)[]; + sourcesContent?: (string | null)[]; + version: 3; + ignoreList?: number[]; +} + +export interface EncodedSourceMap extends SourceMapV3 { + mappings: string; +} + +export interface DecodedSourceMap extends SourceMapV3 { + mappings: SourceMapSegment[][]; +} + +export interface Section { + offset: { line: number; column: number }; + map: EncodedSourceMap | DecodedSourceMap | SectionedSourceMap; +} + +export interface SectionedSourceMap { + file?: string | null; + sections: Section[]; + version: 3; +} + +export type OriginalMapping = { + source: string | null; + line: number; + column: number; + name: string | null; +}; + +export type InvalidOriginalMapping = { + source: null; + line: null; + column: null; + name: null; +}; + +export type GeneratedMapping = { + line: number; + column: number; +}; +export type InvalidGeneratedMapping = { + line: null; + column: null; +}; + +export type Bias = typeof GREATEST_LOWER_BOUND | typeof LEAST_UPPER_BOUND; + +export type XInput = { x_google_ignoreList?: SourceMapV3['ignoreList'] }; +export type EncodedSourceMapXInput = EncodedSourceMap & XInput; +export type DecodedSourceMapXInput = DecodedSourceMap & XInput; +export type SectionedSourceMapXInput = Omit & { + sections: SectionXInput[]; +}; +export type SectionXInput = Omit & { + map: SectionedSourceMapInput; +}; + +export type SourceMapInput = string | EncodedSourceMapXInput | DecodedSourceMapXInput | TraceMap; +export type SectionedSourceMapInput = SourceMapInput | SectionedSourceMapXInput; + +export type Needle = { line: number; column: number; bias?: Bias }; +export type SourceNeedle = { source: string; line: number; column: number; bias?: Bias }; + +export type EachMapping = + | { + generatedLine: number; + generatedColumn: number; + source: null; + originalLine: null; + originalColumn: null; + name: null; + } + | { + generatedLine: number; + generatedColumn: number; + source: string | null; + originalLine: number; + originalColumn: number; + name: string | null; + }; + +export abstract class SourceMap { + declare version: SourceMapV3['version']; + declare file: SourceMapV3['file']; + declare names: SourceMapV3['names']; + declare sourceRoot: SourceMapV3['sourceRoot']; + declare sources: SourceMapV3['sources']; + declare sourcesContent: SourceMapV3['sourcesContent']; + declare resolvedSources: SourceMapV3['sources']; + declare ignoreList: SourceMapV3['ignoreList']; +} + +export type Ro = + T extends Array + ? V[] | Readonly | RoArray | Readonly> + : T extends object + ? T | Readonly | RoObject | Readonly> + : T; +type RoArray = Ro[]; +type RoObject = { [K in keyof T]: T[K] | Ro }; + +export function parse(map: T): Exclude { + return typeof map === 'string' ? JSON.parse(map) : (map as Exclude); +} diff --git a/node_modules/@jridgewell/trace-mapping/types/binary-search.d.cts b/node_modules/@jridgewell/trace-mapping/types/binary-search.d.cts new file mode 100644 index 00000000..b7bb85c9 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/binary-search.d.cts @@ -0,0 +1,33 @@ +import type { SourceMapSegment, ReverseSegment } from './sourcemap-segment.cts'; +export type MemoState = { + lastKey: number; + lastNeedle: number; + lastIndex: number; +}; +export declare let found: boolean; +/** + * A binary search implementation that returns the index if a match is found. + * If no match is found, then the left-index (the index associated with the item that comes just + * before the desired index) is returned. To maintain proper sort order, a splice would happen at + * the next index: + * + * ```js + * const array = [1, 3]; + * const needle = 2; + * const index = binarySearch(array, needle, (item, needle) => item - needle); + * + * assert.equal(index, 0); + * array.splice(index + 1, 0, needle); + * assert.deepEqual(array, [1, 2, 3]); + * ``` + */ +export declare function binarySearch(haystack: SourceMapSegment[] | ReverseSegment[], needle: number, low: number, high: number): number; +export declare function upperBound(haystack: SourceMapSegment[] | ReverseSegment[], needle: number, index: number): number; +export declare function lowerBound(haystack: SourceMapSegment[] | ReverseSegment[], needle: number, index: number): number; +export declare function memoizedState(): MemoState; +/** + * This overly complicated beast is just to record the last tested line/column and the resulting + * index, allowing us to skip a few tests if mappings are monotonically increasing. + */ +export declare function memoizedBinarySearch(haystack: SourceMapSegment[] | ReverseSegment[], needle: number, state: MemoState, key: number): number; +//# sourceMappingURL=binary-search.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/binary-search.d.cts.map b/node_modules/@jridgewell/trace-mapping/types/binary-search.d.cts.map new file mode 100644 index 00000000..648e84c1 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/binary-search.d.cts.map @@ -0,0 +1 @@ +{"version":3,"file":"binary-search.d.ts","sourceRoot":"","sources":["../src/binary-search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG5E,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,eAAO,IAAI,KAAK,SAAQ,CAAC;AAEzB;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,gBAAgB,EAAE,GAAG,cAAc,EAAE,EAC/C,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GACX,MAAM,CAmBR;AAED,wBAAgB,UAAU,CACxB,QAAQ,EAAE,gBAAgB,EAAE,GAAG,cAAc,EAAE,EAC/C,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,MAAM,CAKR;AAED,wBAAgB,UAAU,CACxB,QAAQ,EAAE,gBAAgB,EAAE,GAAG,cAAc,EAAE,EAC/C,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,MAAM,CAKR;AAED,wBAAgB,aAAa,IAAI,SAAS,CAMzC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,gBAAgB,EAAE,GAAG,cAAc,EAAE,EAC/C,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,SAAS,EAChB,GAAG,EAAE,MAAM,GACV,MAAM,CAsBR"} \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/binary-search.d.mts b/node_modules/@jridgewell/trace-mapping/types/binary-search.d.mts new file mode 100644 index 00000000..19e1e6b9 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/binary-search.d.mts @@ -0,0 +1,33 @@ +import type { SourceMapSegment, ReverseSegment } from './sourcemap-segment.mts'; +export type MemoState = { + lastKey: number; + lastNeedle: number; + lastIndex: number; +}; +export declare let found: boolean; +/** + * A binary search implementation that returns the index if a match is found. + * If no match is found, then the left-index (the index associated with the item that comes just + * before the desired index) is returned. To maintain proper sort order, a splice would happen at + * the next index: + * + * ```js + * const array = [1, 3]; + * const needle = 2; + * const index = binarySearch(array, needle, (item, needle) => item - needle); + * + * assert.equal(index, 0); + * array.splice(index + 1, 0, needle); + * assert.deepEqual(array, [1, 2, 3]); + * ``` + */ +export declare function binarySearch(haystack: SourceMapSegment[] | ReverseSegment[], needle: number, low: number, high: number): number; +export declare function upperBound(haystack: SourceMapSegment[] | ReverseSegment[], needle: number, index: number): number; +export declare function lowerBound(haystack: SourceMapSegment[] | ReverseSegment[], needle: number, index: number): number; +export declare function memoizedState(): MemoState; +/** + * This overly complicated beast is just to record the last tested line/column and the resulting + * index, allowing us to skip a few tests if mappings are monotonically increasing. + */ +export declare function memoizedBinarySearch(haystack: SourceMapSegment[] | ReverseSegment[], needle: number, state: MemoState, key: number): number; +//# sourceMappingURL=binary-search.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/binary-search.d.mts.map b/node_modules/@jridgewell/trace-mapping/types/binary-search.d.mts.map new file mode 100644 index 00000000..648e84c1 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/binary-search.d.mts.map @@ -0,0 +1 @@ +{"version":3,"file":"binary-search.d.ts","sourceRoot":"","sources":["../src/binary-search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG5E,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,eAAO,IAAI,KAAK,SAAQ,CAAC;AAEzB;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,gBAAgB,EAAE,GAAG,cAAc,EAAE,EAC/C,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GACX,MAAM,CAmBR;AAED,wBAAgB,UAAU,CACxB,QAAQ,EAAE,gBAAgB,EAAE,GAAG,cAAc,EAAE,EAC/C,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,MAAM,CAKR;AAED,wBAAgB,UAAU,CACxB,QAAQ,EAAE,gBAAgB,EAAE,GAAG,cAAc,EAAE,EAC/C,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,MAAM,CAKR;AAED,wBAAgB,aAAa,IAAI,SAAS,CAMzC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,gBAAgB,EAAE,GAAG,cAAc,EAAE,EAC/C,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,SAAS,EAChB,GAAG,EAAE,MAAM,GACV,MAAM,CAsBR"} \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/by-source.d.cts b/node_modules/@jridgewell/trace-mapping/types/by-source.d.cts new file mode 100644 index 00000000..da496939 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/by-source.d.cts @@ -0,0 +1,4 @@ +import type { ReverseSegment, SourceMapSegment } from './sourcemap-segment.cts'; +export type Source = ReverseSegment[][]; +export = function buildBySources(decoded: readonly SourceMapSegment[][], memos: unknown[]): Source[]; +//# sourceMappingURL=by-source.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/by-source.d.cts.map b/node_modules/@jridgewell/trace-mapping/types/by-source.d.cts.map new file mode 100644 index 00000000..32d2a7a1 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/by-source.d.cts.map @@ -0,0 +1 @@ +{"version":3,"file":"by-source.d.ts","sourceRoot":"","sources":["../src/by-source.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5E,MAAM,MAAM,MAAM,GAAG,cAAc,EAAE,EAAE,CAAC;AAIxC,MAAM,CAAC,OAAO,UAAU,cAAc,CACpC,OAAO,EAAE,SAAS,gBAAgB,EAAE,EAAE,EACtC,KAAK,EAAE,OAAO,EAAE,GACf,MAAM,EAAE,CA4BV"} \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/by-source.d.mts b/node_modules/@jridgewell/trace-mapping/types/by-source.d.mts new file mode 100644 index 00000000..f3610495 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/by-source.d.mts @@ -0,0 +1,4 @@ +import type { ReverseSegment, SourceMapSegment } from './sourcemap-segment.mts'; +export type Source = ReverseSegment[][]; +export default function buildBySources(decoded: readonly SourceMapSegment[][], memos: unknown[]): Source[]; +//# sourceMappingURL=by-source.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/by-source.d.mts.map b/node_modules/@jridgewell/trace-mapping/types/by-source.d.mts.map new file mode 100644 index 00000000..32d2a7a1 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/by-source.d.mts.map @@ -0,0 +1 @@ +{"version":3,"file":"by-source.d.ts","sourceRoot":"","sources":["../src/by-source.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5E,MAAM,MAAM,MAAM,GAAG,cAAc,EAAE,EAAE,CAAC;AAIxC,MAAM,CAAC,OAAO,UAAU,cAAc,CACpC,OAAO,EAAE,SAAS,gBAAgB,EAAE,EAAE,EACtC,KAAK,EAAE,OAAO,EAAE,GACf,MAAM,EAAE,CA4BV"} \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/flatten-map.d.cts b/node_modules/@jridgewell/trace-mapping/types/flatten-map.d.cts new file mode 100644 index 00000000..433d849b --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/flatten-map.d.cts @@ -0,0 +1,9 @@ +import { TraceMap } from './trace-mapping.cts'; +import type { SectionedSourceMapInput, Ro } from './types.cts'; +type FlattenMap = { + new (map: Ro, mapUrl?: string | null): TraceMap; + (map: Ro, mapUrl?: string | null): TraceMap; +}; +export declare const FlattenMap: FlattenMap; +export {}; +//# sourceMappingURL=flatten-map.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/flatten-map.d.cts.map b/node_modules/@jridgewell/trace-mapping/types/flatten-map.d.cts.map new file mode 100644 index 00000000..994b208a --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/flatten-map.d.cts.map @@ -0,0 +1 @@ +{"version":3,"file":"flatten-map.d.ts","sourceRoot":"","sources":["../src/flatten-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAwC,MAAM,iBAAiB,CAAC;AAUjF,OAAO,KAAK,EAKV,uBAAuB,EAEvB,EAAE,EACH,MAAM,SAAS,CAAC;AAGjB,KAAK,UAAU,GAAG;IAChB,KAAK,GAAG,EAAE,EAAE,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,QAAQ,CAAC;IACzE,CAAC,GAAG,EAAE,EAAE,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,QAAQ,CAAC;CACtE,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,UAsCV,CAAC"} \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/flatten-map.d.mts b/node_modules/@jridgewell/trace-mapping/types/flatten-map.d.mts new file mode 100644 index 00000000..444a1bed --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/flatten-map.d.mts @@ -0,0 +1,9 @@ +import { TraceMap } from './trace-mapping.mts'; +import type { SectionedSourceMapInput, Ro } from './types.mts'; +type FlattenMap = { + new (map: Ro, mapUrl?: string | null): TraceMap; + (map: Ro, mapUrl?: string | null): TraceMap; +}; +export declare const FlattenMap: FlattenMap; +export {}; +//# sourceMappingURL=flatten-map.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/flatten-map.d.mts.map b/node_modules/@jridgewell/trace-mapping/types/flatten-map.d.mts.map new file mode 100644 index 00000000..994b208a --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/flatten-map.d.mts.map @@ -0,0 +1 @@ +{"version":3,"file":"flatten-map.d.ts","sourceRoot":"","sources":["../src/flatten-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAwC,MAAM,iBAAiB,CAAC;AAUjF,OAAO,KAAK,EAKV,uBAAuB,EAEvB,EAAE,EACH,MAAM,SAAS,CAAC;AAGjB,KAAK,UAAU,GAAG;IAChB,KAAK,GAAG,EAAE,EAAE,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,QAAQ,CAAC;IACzE,CAAC,GAAG,EAAE,EAAE,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,QAAQ,CAAC;CACtE,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,UAsCV,CAAC"} \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/resolve.d.cts b/node_modules/@jridgewell/trace-mapping/types/resolve.d.cts new file mode 100644 index 00000000..62aeedb5 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/resolve.d.cts @@ -0,0 +1,4 @@ +type Resolve = (source: string | null) => string; +export = function resolver(mapUrl: string | null | undefined, sourceRoot: string | undefined): Resolve; +export {}; +//# sourceMappingURL=resolve.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/resolve.d.cts.map b/node_modules/@jridgewell/trace-mapping/types/resolve.d.cts.map new file mode 100644 index 00000000..9f155ace --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/resolve.d.cts.map @@ -0,0 +1 @@ +{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAGA,KAAK,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC;AACjD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAC9B,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACjC,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B,OAAO,CAQT"} \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/resolve.d.mts b/node_modules/@jridgewell/trace-mapping/types/resolve.d.mts new file mode 100644 index 00000000..e2798a19 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/resolve.d.mts @@ -0,0 +1,4 @@ +type Resolve = (source: string | null) => string; +export default function resolver(mapUrl: string | null | undefined, sourceRoot: string | undefined): Resolve; +export {}; +//# sourceMappingURL=resolve.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/resolve.d.mts.map b/node_modules/@jridgewell/trace-mapping/types/resolve.d.mts.map new file mode 100644 index 00000000..9f155ace --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/resolve.d.mts.map @@ -0,0 +1 @@ +{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAGA,KAAK,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC;AACjD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAC9B,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACjC,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B,OAAO,CAQT"} \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/sort.d.cts b/node_modules/@jridgewell/trace-mapping/types/sort.d.cts new file mode 100644 index 00000000..aa14c129 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/sort.d.cts @@ -0,0 +1,4 @@ +import type { ReverseSegment, SourceMapSegment } from './sourcemap-segment.cts'; +export = function maybeSort(mappings: SourceMapSegment[][], owned: boolean): SourceMapSegment[][]; +export declare function sortComparator(a: T, b: T): number; +//# sourceMappingURL=sort.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/sort.d.cts.map b/node_modules/@jridgewell/trace-mapping/types/sort.d.cts.map new file mode 100644 index 00000000..48b8e674 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/sort.d.cts.map @@ -0,0 +1 @@ +{"version":3,"file":"sort.d.ts","sourceRoot":"","sources":["../src/sort.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5E,MAAM,CAAC,OAAO,UAAU,SAAS,CAC/B,QAAQ,EAAE,gBAAgB,EAAE,EAAE,EAC9B,KAAK,EAAE,OAAO,GACb,gBAAgB,EAAE,EAAE,CAYtB;AAuBD,wBAAgB,cAAc,CAAC,CAAC,SAAS,gBAAgB,GAAG,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,CAE9F"} \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/sort.d.mts b/node_modules/@jridgewell/trace-mapping/types/sort.d.mts new file mode 100644 index 00000000..c5b94e64 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/sort.d.mts @@ -0,0 +1,4 @@ +import type { ReverseSegment, SourceMapSegment } from './sourcemap-segment.mts'; +export default function maybeSort(mappings: SourceMapSegment[][], owned: boolean): SourceMapSegment[][]; +export declare function sortComparator(a: T, b: T): number; +//# sourceMappingURL=sort.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/sort.d.mts.map b/node_modules/@jridgewell/trace-mapping/types/sort.d.mts.map new file mode 100644 index 00000000..48b8e674 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/sort.d.mts.map @@ -0,0 +1 @@ +{"version":3,"file":"sort.d.ts","sourceRoot":"","sources":["../src/sort.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5E,MAAM,CAAC,OAAO,UAAU,SAAS,CAC/B,QAAQ,EAAE,gBAAgB,EAAE,EAAE,EAC9B,KAAK,EAAE,OAAO,GACb,gBAAgB,EAAE,EAAE,CAYtB;AAuBD,wBAAgB,cAAc,CAAC,CAAC,SAAS,gBAAgB,GAAG,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,CAE9F"} \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/sourcemap-segment.d.cts b/node_modules/@jridgewell/trace-mapping/types/sourcemap-segment.d.cts new file mode 100644 index 00000000..8d3cabc1 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/sourcemap-segment.d.cts @@ -0,0 +1,17 @@ +type GeneratedColumn = number; +type SourcesIndex = number; +type SourceLine = number; +type SourceColumn = number; +type NamesIndex = number; +type GeneratedLine = number; +export type SourceMapSegment = [GeneratedColumn] | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn] | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn, NamesIndex]; +export type ReverseSegment = [SourceColumn, GeneratedLine, GeneratedColumn]; +export declare const COLUMN = 0; +export declare const SOURCES_INDEX = 1; +export declare const SOURCE_LINE = 2; +export declare const SOURCE_COLUMN = 3; +export declare const NAMES_INDEX = 4; +export declare const REV_GENERATED_LINE = 1; +export declare const REV_GENERATED_COLUMN = 2; +export {}; +//# sourceMappingURL=sourcemap-segment.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/sourcemap-segment.d.cts.map b/node_modules/@jridgewell/trace-mapping/types/sourcemap-segment.d.cts.map new file mode 100644 index 00000000..0c94a461 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/sourcemap-segment.d.cts.map @@ -0,0 +1 @@ +{"version":3,"file":"sourcemap-segment.d.ts","sourceRoot":"","sources":["../src/sourcemap-segment.ts"],"names":[],"mappings":"AAAA,KAAK,eAAe,GAAG,MAAM,CAAC;AAC9B,KAAK,YAAY,GAAG,MAAM,CAAC;AAC3B,KAAK,UAAU,GAAG,MAAM,CAAC;AACzB,KAAK,YAAY,GAAG,MAAM,CAAC;AAC3B,KAAK,UAAU,GAAG,MAAM,CAAC;AAEzB,KAAK,aAAa,GAAG,MAAM,CAAC;AAE5B,MAAM,MAAM,gBAAgB,GACxB,CAAC,eAAe,CAAC,GACjB,CAAC,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,CAAC,GACzD,CAAC,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;AAE1E,MAAM,MAAM,cAAc,GAAG,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;AAE5E,eAAO,MAAM,MAAM,IAAI,CAAC;AACxB,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,eAAO,MAAM,WAAW,IAAI,CAAC;AAE7B,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,oBAAoB,IAAI,CAAC"} \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/sourcemap-segment.d.mts b/node_modules/@jridgewell/trace-mapping/types/sourcemap-segment.d.mts new file mode 100644 index 00000000..8d3cabc1 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/sourcemap-segment.d.mts @@ -0,0 +1,17 @@ +type GeneratedColumn = number; +type SourcesIndex = number; +type SourceLine = number; +type SourceColumn = number; +type NamesIndex = number; +type GeneratedLine = number; +export type SourceMapSegment = [GeneratedColumn] | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn] | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn, NamesIndex]; +export type ReverseSegment = [SourceColumn, GeneratedLine, GeneratedColumn]; +export declare const COLUMN = 0; +export declare const SOURCES_INDEX = 1; +export declare const SOURCE_LINE = 2; +export declare const SOURCE_COLUMN = 3; +export declare const NAMES_INDEX = 4; +export declare const REV_GENERATED_LINE = 1; +export declare const REV_GENERATED_COLUMN = 2; +export {}; +//# sourceMappingURL=sourcemap-segment.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/sourcemap-segment.d.mts.map b/node_modules/@jridgewell/trace-mapping/types/sourcemap-segment.d.mts.map new file mode 100644 index 00000000..0c94a461 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/sourcemap-segment.d.mts.map @@ -0,0 +1 @@ +{"version":3,"file":"sourcemap-segment.d.ts","sourceRoot":"","sources":["../src/sourcemap-segment.ts"],"names":[],"mappings":"AAAA,KAAK,eAAe,GAAG,MAAM,CAAC;AAC9B,KAAK,YAAY,GAAG,MAAM,CAAC;AAC3B,KAAK,UAAU,GAAG,MAAM,CAAC;AACzB,KAAK,YAAY,GAAG,MAAM,CAAC;AAC3B,KAAK,UAAU,GAAG,MAAM,CAAC;AAEzB,KAAK,aAAa,GAAG,MAAM,CAAC;AAE5B,MAAM,MAAM,gBAAgB,GACxB,CAAC,eAAe,CAAC,GACjB,CAAC,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,CAAC,GACzD,CAAC,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;AAE1E,MAAM,MAAM,cAAc,GAAG,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;AAE5E,eAAO,MAAM,MAAM,IAAI,CAAC;AACxB,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,eAAO,MAAM,WAAW,IAAI,CAAC;AAE7B,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,oBAAoB,IAAI,CAAC"} \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/strip-filename.d.cts b/node_modules/@jridgewell/trace-mapping/types/strip-filename.d.cts new file mode 100644 index 00000000..8b3c0e9b --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/strip-filename.d.cts @@ -0,0 +1,5 @@ +/** + * Removes everything after the last "/", but leaves the slash. + */ +export = function stripFilename(path: string | undefined | null): string; +//# sourceMappingURL=strip-filename.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/strip-filename.d.cts.map b/node_modules/@jridgewell/trace-mapping/types/strip-filename.d.cts.map new file mode 100644 index 00000000..17a25da0 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/strip-filename.d.cts.map @@ -0,0 +1 @@ +{"version":3,"file":"strip-filename.d.ts","sourceRoot":"","sources":["../src/strip-filename.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAI7E"} \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/strip-filename.d.mts b/node_modules/@jridgewell/trace-mapping/types/strip-filename.d.mts new file mode 100644 index 00000000..cbbaee0d --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/strip-filename.d.mts @@ -0,0 +1,5 @@ +/** + * Removes everything after the last "/", but leaves the slash. + */ +export default function stripFilename(path: string | undefined | null): string; +//# sourceMappingURL=strip-filename.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/strip-filename.d.mts.map b/node_modules/@jridgewell/trace-mapping/types/strip-filename.d.mts.map new file mode 100644 index 00000000..17a25da0 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/strip-filename.d.mts.map @@ -0,0 +1 @@ +{"version":3,"file":"strip-filename.d.ts","sourceRoot":"","sources":["../src/strip-filename.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAI7E"} \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/trace-mapping.d.cts b/node_modules/@jridgewell/trace-mapping/types/trace-mapping.d.cts new file mode 100644 index 00000000..a40f3054 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/trace-mapping.d.cts @@ -0,0 +1,80 @@ +import type { SourceMapSegment } from './sourcemap-segment.cts'; +import type { SourceMapV3, DecodedSourceMap, EncodedSourceMap, InvalidOriginalMapping, OriginalMapping, InvalidGeneratedMapping, GeneratedMapping, SourceMapInput, Needle, SourceNeedle, SourceMap, EachMapping, Ro } from './types.cts'; +export type { SourceMapSegment } from './sourcemap-segment.cts'; +export type { SourceMap, DecodedSourceMap, EncodedSourceMap, Section, SectionedSourceMap, SourceMapV3, Bias, EachMapping, GeneratedMapping, InvalidGeneratedMapping, InvalidOriginalMapping, Needle, OriginalMapping, OriginalMapping as Mapping, SectionedSourceMapInput, SourceMapInput, SourceNeedle, XInput, EncodedSourceMapXInput, DecodedSourceMapXInput, SectionedSourceMapXInput, SectionXInput, } from './types.cts'; +export declare const LEAST_UPPER_BOUND = -1; +export declare const GREATEST_LOWER_BOUND = 1; +export { FlattenMap, FlattenMap as AnyMap } from './flatten-map.cts'; +export declare class TraceMap implements SourceMap { + version: SourceMapV3['version']; + file: SourceMapV3['file']; + names: SourceMapV3['names']; + sourceRoot: SourceMapV3['sourceRoot']; + sources: SourceMapV3['sources']; + sourcesContent: SourceMapV3['sourcesContent']; + ignoreList: SourceMapV3['ignoreList']; + resolvedSources: string[]; + private _encoded; + private _decoded; + private _decodedMemo; + private _bySources; + private _bySourceMemos; + constructor(map: Ro, mapUrl?: string | null); +} +/** + * Returns the encoded (VLQ string) form of the SourceMap's mappings field. + */ +export declare function encodedMappings(map: TraceMap): EncodedSourceMap['mappings']; +/** + * Returns the decoded (array of lines of segments) form of the SourceMap's mappings field. + */ +export declare function decodedMappings(map: TraceMap): Readonly; +/** + * A low-level API to find the segment associated with a generated line/column (think, from a + * stack trace). Line and column here are 0-based, unlike `originalPositionFor`. + */ +export declare function traceSegment(map: TraceMap, line: number, column: number): Readonly | null; +/** + * A higher-level API to find the source/line/column associated with a generated line/column + * (think, from a stack trace). Line is 1-based, but column is 0-based, due to legacy behavior in + * `source-map` library. + */ +export declare function originalPositionFor(map: TraceMap, needle: Needle): OriginalMapping | InvalidOriginalMapping; +/** + * Finds the generated line/column position of the provided source/line/column source position. + */ +export declare function generatedPositionFor(map: TraceMap, needle: SourceNeedle): GeneratedMapping | InvalidGeneratedMapping; +/** + * Finds all generated line/column positions of the provided source/line/column source position. + */ +export declare function allGeneratedPositionsFor(map: TraceMap, needle: SourceNeedle): GeneratedMapping[]; +/** + * Iterates each mapping in generated position order. + */ +export declare function eachMapping(map: TraceMap, cb: (mapping: EachMapping) => void): void; +/** + * Retrieves the source content for a particular source, if its found. Returns null if not. + */ +export declare function sourceContentFor(map: TraceMap, source: string): string | null; +/** + * Determines if the source is marked to ignore by the source map. + */ +export declare function isIgnored(map: TraceMap, source: string): boolean; +/** + * A helper that skips sorting of the input map's mappings array, which can be expensive for larger + * maps. + */ +export declare function presortedDecodedMap(map: DecodedSourceMap, mapUrl?: string): TraceMap; +/** + * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects + * a sourcemap, or to JSON.stringify. + */ +export declare function decodedMap(map: TraceMap): Omit & { + mappings: readonly SourceMapSegment[][]; +}; +/** + * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects + * a sourcemap, or to JSON.stringify. + */ +export declare function encodedMap(map: TraceMap): EncodedSourceMap; +//# sourceMappingURL=trace-mapping.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/trace-mapping.d.cts.map b/node_modules/@jridgewell/trace-mapping/types/trace-mapping.d.cts.map new file mode 100644 index 00000000..b5a874c0 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/trace-mapping.d.cts.map @@ -0,0 +1 @@ +{"version":3,"file":"trace-mapping.d.ts","sourceRoot":"","sources":["../src/trace-mapping.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,gBAAgB,EAAkB,MAAM,qBAAqB,CAAC;AAC5E,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,EACd,MAAM,EACN,YAAY,EACZ,SAAS,EACT,WAAW,EAIX,EAAE,EACH,MAAM,SAAS,CAAC;AAIjB,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,YAAY,EACV,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,OAAO,EACP,kBAAkB,EAClB,WAAW,EACX,IAAI,EACJ,WAAW,EACX,gBAAgB,EAChB,uBAAuB,EACvB,sBAAsB,EACtB,MAAM,EACN,eAAe,EACf,eAAe,IAAI,OAAO,EAC1B,uBAAuB,EACvB,cAAc,EACd,YAAY,EACZ,MAAM,EACN,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,aAAa,GACd,MAAM,SAAS,CAAC;AAajB,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,UAAU,IAAI,MAAM,EAAE,MAAM,eAAe,CAAC;AAEjE,qBAAa,QAAS,YAAW,SAAS;IAChC,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IAChC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1B,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5B,UAAU,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;IACtC,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IAChC,cAAc,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAC9C,UAAU,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;IAEtC,eAAe,EAAE,MAAM,EAAE,CAAC;IAClC,QAAgB,QAAQ,CAAqB;IAE7C,QAAgB,QAAQ,CAAmC;IAC3D,QAAgB,YAAY,CAAY;IAExC,QAAgB,UAAU,CAAuB;IACjD,QAAgB,cAAc,CAA0B;gBAE5C,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;CAmC5D;AAUD;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,QAAQ,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAE3E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAErF;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,QAAQ,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAiBnC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,MAAM,GACb,eAAe,GAAG,sBAAsB,CAiC1C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,YAAY,GACnB,gBAAgB,GAAG,uBAAuB,CAG5C;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,GAAG,gBAAgB,EAAE,CAIhG;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI,CAgCnF;AASD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK7E;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAKhE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAIpF;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,QAAQ,GACZ,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,GAAG;IAAE,QAAQ,EAAE,SAAS,gBAAgB,EAAE,EAAE,CAAA;CAAE,CAElF;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,QAAQ,GAAG,gBAAgB,CAE1D"} \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/trace-mapping.d.mts b/node_modules/@jridgewell/trace-mapping/types/trace-mapping.d.mts new file mode 100644 index 00000000..bc2ff0f1 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/trace-mapping.d.mts @@ -0,0 +1,80 @@ +import type { SourceMapSegment } from './sourcemap-segment.mts'; +import type { SourceMapV3, DecodedSourceMap, EncodedSourceMap, InvalidOriginalMapping, OriginalMapping, InvalidGeneratedMapping, GeneratedMapping, SourceMapInput, Needle, SourceNeedle, SourceMap, EachMapping, Ro } from './types.mts'; +export type { SourceMapSegment } from './sourcemap-segment.mts'; +export type { SourceMap, DecodedSourceMap, EncodedSourceMap, Section, SectionedSourceMap, SourceMapV3, Bias, EachMapping, GeneratedMapping, InvalidGeneratedMapping, InvalidOriginalMapping, Needle, OriginalMapping, OriginalMapping as Mapping, SectionedSourceMapInput, SourceMapInput, SourceNeedle, XInput, EncodedSourceMapXInput, DecodedSourceMapXInput, SectionedSourceMapXInput, SectionXInput, } from './types.mts'; +export declare const LEAST_UPPER_BOUND = -1; +export declare const GREATEST_LOWER_BOUND = 1; +export { FlattenMap, FlattenMap as AnyMap } from './flatten-map.mts'; +export declare class TraceMap implements SourceMap { + version: SourceMapV3['version']; + file: SourceMapV3['file']; + names: SourceMapV3['names']; + sourceRoot: SourceMapV3['sourceRoot']; + sources: SourceMapV3['sources']; + sourcesContent: SourceMapV3['sourcesContent']; + ignoreList: SourceMapV3['ignoreList']; + resolvedSources: string[]; + private _encoded; + private _decoded; + private _decodedMemo; + private _bySources; + private _bySourceMemos; + constructor(map: Ro, mapUrl?: string | null); +} +/** + * Returns the encoded (VLQ string) form of the SourceMap's mappings field. + */ +export declare function encodedMappings(map: TraceMap): EncodedSourceMap['mappings']; +/** + * Returns the decoded (array of lines of segments) form of the SourceMap's mappings field. + */ +export declare function decodedMappings(map: TraceMap): Readonly; +/** + * A low-level API to find the segment associated with a generated line/column (think, from a + * stack trace). Line and column here are 0-based, unlike `originalPositionFor`. + */ +export declare function traceSegment(map: TraceMap, line: number, column: number): Readonly | null; +/** + * A higher-level API to find the source/line/column associated with a generated line/column + * (think, from a stack trace). Line is 1-based, but column is 0-based, due to legacy behavior in + * `source-map` library. + */ +export declare function originalPositionFor(map: TraceMap, needle: Needle): OriginalMapping | InvalidOriginalMapping; +/** + * Finds the generated line/column position of the provided source/line/column source position. + */ +export declare function generatedPositionFor(map: TraceMap, needle: SourceNeedle): GeneratedMapping | InvalidGeneratedMapping; +/** + * Finds all generated line/column positions of the provided source/line/column source position. + */ +export declare function allGeneratedPositionsFor(map: TraceMap, needle: SourceNeedle): GeneratedMapping[]; +/** + * Iterates each mapping in generated position order. + */ +export declare function eachMapping(map: TraceMap, cb: (mapping: EachMapping) => void): void; +/** + * Retrieves the source content for a particular source, if its found. Returns null if not. + */ +export declare function sourceContentFor(map: TraceMap, source: string): string | null; +/** + * Determines if the source is marked to ignore by the source map. + */ +export declare function isIgnored(map: TraceMap, source: string): boolean; +/** + * A helper that skips sorting of the input map's mappings array, which can be expensive for larger + * maps. + */ +export declare function presortedDecodedMap(map: DecodedSourceMap, mapUrl?: string): TraceMap; +/** + * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects + * a sourcemap, or to JSON.stringify. + */ +export declare function decodedMap(map: TraceMap): Omit & { + mappings: readonly SourceMapSegment[][]; +}; +/** + * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects + * a sourcemap, or to JSON.stringify. + */ +export declare function encodedMap(map: TraceMap): EncodedSourceMap; +//# sourceMappingURL=trace-mapping.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/trace-mapping.d.mts.map b/node_modules/@jridgewell/trace-mapping/types/trace-mapping.d.mts.map new file mode 100644 index 00000000..b5a874c0 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/trace-mapping.d.mts.map @@ -0,0 +1 @@ +{"version":3,"file":"trace-mapping.d.ts","sourceRoot":"","sources":["../src/trace-mapping.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,gBAAgB,EAAkB,MAAM,qBAAqB,CAAC;AAC5E,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,EACd,MAAM,EACN,YAAY,EACZ,SAAS,EACT,WAAW,EAIX,EAAE,EACH,MAAM,SAAS,CAAC;AAIjB,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,YAAY,EACV,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,OAAO,EACP,kBAAkB,EAClB,WAAW,EACX,IAAI,EACJ,WAAW,EACX,gBAAgB,EAChB,uBAAuB,EACvB,sBAAsB,EACtB,MAAM,EACN,eAAe,EACf,eAAe,IAAI,OAAO,EAC1B,uBAAuB,EACvB,cAAc,EACd,YAAY,EACZ,MAAM,EACN,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,aAAa,GACd,MAAM,SAAS,CAAC;AAajB,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,UAAU,IAAI,MAAM,EAAE,MAAM,eAAe,CAAC;AAEjE,qBAAa,QAAS,YAAW,SAAS;IAChC,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IAChC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1B,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5B,UAAU,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;IACtC,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IAChC,cAAc,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAC9C,UAAU,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;IAEtC,eAAe,EAAE,MAAM,EAAE,CAAC;IAClC,QAAgB,QAAQ,CAAqB;IAE7C,QAAgB,QAAQ,CAAmC;IAC3D,QAAgB,YAAY,CAAY;IAExC,QAAgB,UAAU,CAAuB;IACjD,QAAgB,cAAc,CAA0B;gBAE5C,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;CAmC5D;AAUD;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,QAAQ,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAE3E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAErF;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,QAAQ,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAiBnC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,MAAM,GACb,eAAe,GAAG,sBAAsB,CAiC1C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,YAAY,GACnB,gBAAgB,GAAG,uBAAuB,CAG5C;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,GAAG,gBAAgB,EAAE,CAIhG;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI,CAgCnF;AASD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK7E;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAKhE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAIpF;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,QAAQ,GACZ,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,GAAG;IAAE,QAAQ,EAAE,SAAS,gBAAgB,EAAE,EAAE,CAAA;CAAE,CAElF;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,QAAQ,GAAG,gBAAgB,CAE1D"} \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/types.d.cts b/node_modules/@jridgewell/trace-mapping/types/types.d.cts new file mode 100644 index 00000000..729c2c32 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/types.d.cts @@ -0,0 +1,107 @@ +import type { SourceMapSegment } from './sourcemap-segment.cts'; +import type { GREATEST_LOWER_BOUND, LEAST_UPPER_BOUND, TraceMap } from './trace-mapping.cts'; +export interface SourceMapV3 { + file?: string | null; + names: string[]; + sourceRoot?: string; + sources: (string | null)[]; + sourcesContent?: (string | null)[]; + version: 3; + ignoreList?: number[]; +} +export interface EncodedSourceMap extends SourceMapV3 { + mappings: string; +} +export interface DecodedSourceMap extends SourceMapV3 { + mappings: SourceMapSegment[][]; +} +export interface Section { + offset: { + line: number; + column: number; + }; + map: EncodedSourceMap | DecodedSourceMap | SectionedSourceMap; +} +export interface SectionedSourceMap { + file?: string | null; + sections: Section[]; + version: 3; +} +export type OriginalMapping = { + source: string | null; + line: number; + column: number; + name: string | null; +}; +export type InvalidOriginalMapping = { + source: null; + line: null; + column: null; + name: null; +}; +export type GeneratedMapping = { + line: number; + column: number; +}; +export type InvalidGeneratedMapping = { + line: null; + column: null; +}; +export type Bias = typeof GREATEST_LOWER_BOUND | typeof LEAST_UPPER_BOUND; +export type XInput = { + x_google_ignoreList?: SourceMapV3['ignoreList']; +}; +export type EncodedSourceMapXInput = EncodedSourceMap & XInput; +export type DecodedSourceMapXInput = DecodedSourceMap & XInput; +export type SectionedSourceMapXInput = Omit & { + sections: SectionXInput[]; +}; +export type SectionXInput = Omit & { + map: SectionedSourceMapInput; +}; +export type SourceMapInput = string | EncodedSourceMapXInput | DecodedSourceMapXInput | TraceMap; +export type SectionedSourceMapInput = SourceMapInput | SectionedSourceMapXInput; +export type Needle = { + line: number; + column: number; + bias?: Bias; +}; +export type SourceNeedle = { + source: string; + line: number; + column: number; + bias?: Bias; +}; +export type EachMapping = { + generatedLine: number; + generatedColumn: number; + source: null; + originalLine: null; + originalColumn: null; + name: null; +} | { + generatedLine: number; + generatedColumn: number; + source: string | null; + originalLine: number; + originalColumn: number; + name: string | null; +}; +export declare abstract class SourceMap { + version: SourceMapV3['version']; + file: SourceMapV3['file']; + names: SourceMapV3['names']; + sourceRoot: SourceMapV3['sourceRoot']; + sources: SourceMapV3['sources']; + sourcesContent: SourceMapV3['sourcesContent']; + resolvedSources: SourceMapV3['sources']; + ignoreList: SourceMapV3['ignoreList']; +} +export type Ro = T extends Array ? V[] | Readonly | RoArray | Readonly> : T extends object ? T | Readonly | RoObject | Readonly> : T; +type RoArray = Ro[]; +type RoObject = { + [K in keyof T]: T[K] | Ro; +}; +export declare function parse(map: T): Exclude; +export {}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/types.d.cts.map b/node_modules/@jridgewell/trace-mapping/types/types.d.cts.map new file mode 100644 index 00000000..92247839 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/types.d.cts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEzF,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IAC3B,cAAc,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IACnC,OAAO,EAAE,CAAC,CAAC;IACX,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,QAAQ,EAAE,gBAAgB,EAAE,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,GAAG,EAAE,gBAAgB,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;CAC/D;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,EAAE,CAAC,CAAC;CACZ;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,IAAI,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,IAAI,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AACF,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,IAAI,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG,OAAO,oBAAoB,GAAG,OAAO,iBAAiB,CAAC;AAE1E,MAAM,MAAM,MAAM,GAAG;IAAE,mBAAmB,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,CAAA;CAAE,CAAC;AACzE,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,GAAG,MAAM,CAAC;AAC/D,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,GAAG,MAAM,CAAC;AAC/D,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,GAAG;IAC5E,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B,CAAC;AACF,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG;IACjD,GAAG,EAAE,uBAAuB,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,sBAAsB,GAAG,sBAAsB,GAAG,QAAQ,CAAC;AACjG,MAAM,MAAM,uBAAuB,GAAG,cAAc,GAAG,wBAAwB,CAAC;AAEhF,MAAM,MAAM,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AACnE,MAAM,MAAM,YAAY,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAEzF,MAAM,MAAM,WAAW,GACnB;IACE,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,IAAI,CAAC;IACb,YAAY,EAAE,IAAI,CAAC;IACnB,cAAc,EAAE,IAAI,CAAC;IACrB,IAAI,EAAE,IAAI,CAAC;CACZ,GACD;IACE,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB,CAAC;AAEN,8BAAsB,SAAS;IACrB,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IAChC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1B,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5B,UAAU,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;IACtC,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IAChC,cAAc,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAC9C,eAAe,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACxC,UAAU,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;CAC/C;AAED,MAAM,MAAM,EAAE,CAAC,CAAC,IACd,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GACpB,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GACvD,CAAC,SAAS,MAAM,GACd,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GACrD,CAAC,CAAC;AACV,KAAK,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1B,KAAK,QAAQ,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC;AAEvD,wBAAgB,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAEnD"} \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/types.d.mts b/node_modules/@jridgewell/trace-mapping/types/types.d.mts new file mode 100644 index 00000000..a26d1866 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/types.d.mts @@ -0,0 +1,107 @@ +import type { SourceMapSegment } from './sourcemap-segment.mts'; +import type { GREATEST_LOWER_BOUND, LEAST_UPPER_BOUND, TraceMap } from './trace-mapping.mts'; +export interface SourceMapV3 { + file?: string | null; + names: string[]; + sourceRoot?: string; + sources: (string | null)[]; + sourcesContent?: (string | null)[]; + version: 3; + ignoreList?: number[]; +} +export interface EncodedSourceMap extends SourceMapV3 { + mappings: string; +} +export interface DecodedSourceMap extends SourceMapV3 { + mappings: SourceMapSegment[][]; +} +export interface Section { + offset: { + line: number; + column: number; + }; + map: EncodedSourceMap | DecodedSourceMap | SectionedSourceMap; +} +export interface SectionedSourceMap { + file?: string | null; + sections: Section[]; + version: 3; +} +export type OriginalMapping = { + source: string | null; + line: number; + column: number; + name: string | null; +}; +export type InvalidOriginalMapping = { + source: null; + line: null; + column: null; + name: null; +}; +export type GeneratedMapping = { + line: number; + column: number; +}; +export type InvalidGeneratedMapping = { + line: null; + column: null; +}; +export type Bias = typeof GREATEST_LOWER_BOUND | typeof LEAST_UPPER_BOUND; +export type XInput = { + x_google_ignoreList?: SourceMapV3['ignoreList']; +}; +export type EncodedSourceMapXInput = EncodedSourceMap & XInput; +export type DecodedSourceMapXInput = DecodedSourceMap & XInput; +export type SectionedSourceMapXInput = Omit & { + sections: SectionXInput[]; +}; +export type SectionXInput = Omit & { + map: SectionedSourceMapInput; +}; +export type SourceMapInput = string | EncodedSourceMapXInput | DecodedSourceMapXInput | TraceMap; +export type SectionedSourceMapInput = SourceMapInput | SectionedSourceMapXInput; +export type Needle = { + line: number; + column: number; + bias?: Bias; +}; +export type SourceNeedle = { + source: string; + line: number; + column: number; + bias?: Bias; +}; +export type EachMapping = { + generatedLine: number; + generatedColumn: number; + source: null; + originalLine: null; + originalColumn: null; + name: null; +} | { + generatedLine: number; + generatedColumn: number; + source: string | null; + originalLine: number; + originalColumn: number; + name: string | null; +}; +export declare abstract class SourceMap { + version: SourceMapV3['version']; + file: SourceMapV3['file']; + names: SourceMapV3['names']; + sourceRoot: SourceMapV3['sourceRoot']; + sources: SourceMapV3['sources']; + sourcesContent: SourceMapV3['sourcesContent']; + resolvedSources: SourceMapV3['sources']; + ignoreList: SourceMapV3['ignoreList']; +} +export type Ro = T extends Array ? V[] | Readonly | RoArray | Readonly> : T extends object ? T | Readonly | RoObject | Readonly> : T; +type RoArray = Ro[]; +type RoObject = { + [K in keyof T]: T[K] | Ro; +}; +export declare function parse(map: T): Exclude; +export {}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/node_modules/@jridgewell/trace-mapping/types/types.d.mts.map b/node_modules/@jridgewell/trace-mapping/types/types.d.mts.map new file mode 100644 index 00000000..92247839 --- /dev/null +++ b/node_modules/@jridgewell/trace-mapping/types/types.d.mts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEzF,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IAC3B,cAAc,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IACnC,OAAO,EAAE,CAAC,CAAC;IACX,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,QAAQ,EAAE,gBAAgB,EAAE,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,GAAG,EAAE,gBAAgB,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;CAC/D;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,EAAE,CAAC,CAAC;CACZ;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,IAAI,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,IAAI,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AACF,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,IAAI,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG,OAAO,oBAAoB,GAAG,OAAO,iBAAiB,CAAC;AAE1E,MAAM,MAAM,MAAM,GAAG;IAAE,mBAAmB,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,CAAA;CAAE,CAAC;AACzE,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,GAAG,MAAM,CAAC;AAC/D,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,GAAG,MAAM,CAAC;AAC/D,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,GAAG;IAC5E,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B,CAAC;AACF,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG;IACjD,GAAG,EAAE,uBAAuB,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,sBAAsB,GAAG,sBAAsB,GAAG,QAAQ,CAAC;AACjG,MAAM,MAAM,uBAAuB,GAAG,cAAc,GAAG,wBAAwB,CAAC;AAEhF,MAAM,MAAM,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AACnE,MAAM,MAAM,YAAY,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAEzF,MAAM,MAAM,WAAW,GACnB;IACE,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,IAAI,CAAC;IACb,YAAY,EAAE,IAAI,CAAC;IACnB,cAAc,EAAE,IAAI,CAAC;IACrB,IAAI,EAAE,IAAI,CAAC;CACZ,GACD;IACE,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB,CAAC;AAEN,8BAAsB,SAAS;IACrB,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IAChC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1B,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5B,UAAU,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;IACtC,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IAChC,cAAc,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAC9C,eAAe,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACxC,UAAU,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;CAC/C;AAED,MAAM,MAAM,EAAE,CAAC,CAAC,IACd,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GACpB,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GACvD,CAAC,SAAS,MAAM,GACd,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GACrD,CAAC,CAAC;AACV,KAAK,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1B,KAAK,QAAQ,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC;AAEvD,wBAAgB,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAEnD"} \ No newline at end of file diff --git a/node_modules/@napi-rs/wasm-runtime/dist/fs-proxy.cjs b/node_modules/@napi-rs/wasm-runtime/dist/fs-proxy.cjs new file mode 100644 index 00000000..32eebc3b --- /dev/null +++ b/node_modules/@napi-rs/wasm-runtime/dist/fs-proxy.cjs @@ -0,0 +1,299 @@ +'use strict'; + +// @ts-check + +/** + * @param {unknown} value + */ +const getType = (value) => { + if (value === undefined) return 0 + if (value === null) return 1 + const t = typeof value; + if (t === 'boolean') return 2 + if (t === 'number') return 3 + if (t === 'string') return 4 + if (t === 'object') return 6 + if (t === 'bigint') return 9 + return -1 +}; + +const RESPONSE_HEADER_SIZE = 16; +const RESPONSE_PAYLOAD_SIZE = 10240; +const RESPONSE_BUFFER_SIZE = RESPONSE_HEADER_SIZE + RESPONSE_PAYLOAD_SIZE; + +/** + * @param {Int32Array} sab + * @param {Uint8Array} payload + */ +const writeResponsePayload = (sab, payload) => { + if (payload.length > RESPONSE_PAYLOAD_SIZE) { + throw new RangeError('payload overflow') + } + new Uint8Array(sab.buffer).set(payload, RESPONSE_HEADER_SIZE); +}; + +/** + * @param {import('memfs').IFs} memfs + * @param {any} value + * @param {ReturnType} type + * @returns {Uint8Array} + */ +const encodeValue = (memfs, value, type) => { + switch (type) { + case 0: + case 1: + return new Uint8Array(0) + case 2: { + const view = new Int32Array(1); + view[0] = value ? 1 : 0; + return new Uint8Array(view.buffer) + } + case 3: { + const view = new Float64Array(1); + view[0] = value; + return new Uint8Array(view.buffer) + } + case 4: { + const view = new TextEncoder().encode(value); + return view + } + case 6: { + function storeConstructor(obj, memfs, processed = new WeakSet()) { + if (!obj || typeof obj !== 'object') { + return + } + + if (processed.has(obj)) { + return + } + + processed.add(obj); + + const [entry] = + Object.entries(memfs).filter(([_, v]) => v === obj.constructor)[0] ?? + []; + if (entry) { + Object.defineProperty(obj, '__constructor__', { + configurable: true, + writable: true, + enumerable: true, + value: entry, + }); + } + + for (const value of Object.values(obj)) { + storeConstructor(value, memfs, processed); + } + } + + storeConstructor(value, memfs); + + const json = JSON.stringify(value, (_, value) => { + if (typeof value === 'bigint') { + return `BigInt(${String(value)})` + } + if (value instanceof Error) { + return { + ...value, + message: value.message, + stack: value.stack, + __error__: value.constructor.name, + } + } + return value + }); + const view = new TextEncoder().encode(json); + return view + } + case 9: { + return new TextEncoder().encode(String(value)) + } + case -1: + default: + throw new Error('unsupported data') + } +}; + +/** + * @param {typeof import('memfs')} memfs + * @param {Uint8Array} payload + * @param {number} type + * @returns {any} + */ +const decodeValue = (memfs, payload, type) => { + if (type === 0) return undefined + if (type === 1) return null + if (type === 2) + return Boolean(new Int32Array(payload.buffer, payload.byteOffset, 1)[0]) + if (type === 3) + return new Float64Array(payload.buffer, payload.byteOffset, 1)[0] + if (type === 4) return new TextDecoder().decode(payload.slice()) + if (type === 6) { + const obj = JSON.parse( + new TextDecoder().decode(payload.slice()), + (_key, value) => { + if (typeof value === 'string') { + const matched = value.match(/^BigInt\((-?\d+)\)$/); + if (matched && matched[1]) { + return BigInt(matched[1]) + } + } + return value + }, + ); + + function loadConstructor(obj, memfs, processed = new WeakSet()) { + if (!obj || typeof obj !== 'object') { + return + } + + if (processed.has(obj)) { + return + } + + processed.add(obj); + + if (obj.__constructor__) { + const ctor = obj.__constructor__; + delete obj.__constructor__; + Object.setPrototypeOf(obj, memfs[ctor].prototype); + } + + for (const value of Object.values(obj)) { + loadConstructor(value, memfs, processed); + } + } + + loadConstructor(obj, memfs); + + if (obj.__error__) { + const name = obj.__error__; + const ErrorConstructor = globalThis[name] || Error; + delete obj.__error__; + const err = new ErrorConstructor(obj.message); + Object.defineProperty(err, 'stack', { + configurable: true, + enumerable: false, + writable: true, + value: err.stack, + }); + Object.defineProperty(err, Symbol.toStringTag, { + configurable: true, + enumerable: false, + writable: true, + value: name, + }); + for (const [k, v] of Object.entries(obj)) { + if (k === 'message' || k === 'stack') continue + err[k] = v; + } + return err + } + return obj + } + if (type === 9) { + return BigInt(new TextDecoder().decode(payload.slice())) + } + throw new Error('unsupported data') +}; + +/** + * @param {import('memfs').IFs} fs + * @returns {(e: { data: { __fs__: { sab: Int32Array, type: keyof import('memfs').IFs, payload: any[] } } }) => void} + */ +// oxlint-disable-next-line no-unused-vars -- fixed in an upcoming release +const createOnMessage = (fs) => + function onMessage(e) { + if (e.data.__fs__) { + /** + * 0..4 status(int32_t): 21(waiting) 0(success) 1(error) + * 5..8 type(napi_valuetype): 0(undefined) 1(null) 2(boolean) 3(number) 4(string) 6(jsonstring) 9(bigint) -1(unsupported) + * 9..16 payload_size(uint32_t) <= 10240 + * 16..16 + payload_size payload_content + */ + const { sab, type, payload } = e.data.__fs__; + const fn = fs[type]; + try { + const ret = fn.apply(fs, payload); + const t = getType(ret); + Atomics.store(sab, 1, t); + const v = encodeValue(fs, ret, t); + Atomics.store(sab, 2, v.length); + writeResponsePayload(sab, v); + Atomics.store(sab, 0, 0); // success + } catch (/** @type {any} */ err) { + let t = getType(err); + let v; + try { + if (t === -1) { + throw new Error('unsupported data') + } + v = encodeValue(fs, err, t); + } catch { + const fallback = (() => { + try { + return String(err) + } catch { + return 'Unserializable thrown value' + } + })(); + t = getType(fallback); + v = encodeValue(fs, fallback, t); + } + if (v.length > RESPONSE_PAYLOAD_SIZE) { + const overflowErr = new RangeError('payload overflow'); + t = getType(overflowErr); + v = encodeValue(fs, overflowErr, t); + } + Atomics.store(sab, 1, t); + Atomics.store(sab, 2, v.length); + writeResponsePayload(sab, v); + Atomics.store(sab, 0, 1); // error + } finally { + Atomics.notify(sab, 0); + } + } + }; + +/** + * @param {typeof import('memfs')} memfs + */ +const createFsProxy = (memfs) => + new Proxy( + {}, + { + get(_target, p, _receiver) { + /** + * @param {any[]} args + */ + return function (...args) { + const sab = new SharedArrayBuffer(RESPONSE_BUFFER_SIZE); + const i32arr = new Int32Array(sab); + Atomics.store(i32arr, 0, 21); + + postMessage({ + __fs__: { + sab: i32arr, + type: p, + payload: args, + }, + }); + + Atomics.wait(i32arr, 0, 21); + + const status = Atomics.load(i32arr, 0); + const type = Atomics.load(i32arr, 1); + const size = Atomics.load(i32arr, 2); + const content = new Uint8Array(sab, RESPONSE_HEADER_SIZE, size); + const value = decodeValue(memfs, content, type); + if (status === 1) { + throw value + } + return value + } + }, + }, + ); + +exports.createFsProxy = createFsProxy; +exports.createOnMessage = createOnMessage; diff --git a/node_modules/@napi-rs/wasm-runtime/dist/fs.js b/node_modules/@napi-rs/wasm-runtime/dist/fs.js new file mode 100644 index 00000000..9bc973fd --- /dev/null +++ b/node_modules/@napi-rs/wasm-runtime/dist/fs.js @@ -0,0 +1,25092 @@ +function _mergeNamespaces(n, m) { + m.forEach(function (e) { + e && typeof e !== 'string' && !Array.isArray(e) && Object.keys(e).forEach(function (k) { + if (k !== 'default' && !(k in n)) { + var d = Object.getOwnPropertyDescriptor(e, k); + Object.defineProperty(n, k, d.get ? d : { + enumerable: true, + get: function () { return e[k]; } + }); + } + }); + }); + return Object.freeze(n); +} + +var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof undefined !== 'undefined' ? undefined : typeof self !== 'undefined' ? self : {}; + +function getDefaultExportFromCjs (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; +} + +function getAugmentedNamespace(n) { + if (Object.prototype.hasOwnProperty.call(n, '__esModule')) return n; + var f = n.default; + if (typeof f == "function") { + var a = function a () { + var isInstance = false; + try { + isInstance = this instanceof a; + } catch {} + if (isInstance) { + return Reflect.construct(f, arguments, this.constructor); + } + return f.apply(this, arguments); + }; + a.prototype = f.prototype; + } else a = {}; + Object.defineProperty(a, '__esModule', {value: true}); + Object.keys(n).forEach(function (k) { + var d = Object.getOwnPropertyDescriptor(n, k); + Object.defineProperty(a, k, d.get ? d : { + enumerable: true, + get: function () { + return n[k]; + } + }); + }); + return a; +} + +var lib$8 = {exports: {}}; + +var lib$7 = {}; + +/****************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +/* undefined Reflect, Promise, SuppressedError, Symbol, Iterator */ + +var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); +}; + +function __extends(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +} + +var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; + +function __rest(s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; +} + +function __decorate(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + 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; + return c > 3 && r && Object.defineProperty(target, key, r), r; +} + +function __param(paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } +} + +function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { + function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; } + var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; + var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; + var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); + var _, done = false; + for (var i = decorators.length - 1; i >= 0; i--) { + var context = {}; + for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p]; + for (var p in contextIn.access) context.access[p] = contextIn.access[p]; + context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); }; + var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context); + if (kind === "accessor") { + if (result === void 0) continue; + if (result === null || typeof result !== "object") throw new TypeError("Object expected"); + if (_ = accept(result.get)) descriptor.get = _; + if (_ = accept(result.set)) descriptor.set = _; + if (_ = accept(result.init)) initializers.unshift(_); + } + else if (_ = accept(result)) { + if (kind === "field") initializers.unshift(_); + else descriptor[key] = _; + } + } + if (target) Object.defineProperty(target, contextIn.name, descriptor); + done = true; +} +function __runInitializers(thisArg, initializers, value) { + var useValue = arguments.length > 2; + for (var i = 0; i < initializers.length; i++) { + value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); + } + return useValue ? value : void 0; +} +function __propKey(x) { + return typeof x === "symbol" ? x : "".concat(x); +} +function __setFunctionName(f, name, prefix) { + if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; + return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); +} +function __metadata(metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); +} + +function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} + +function __generator(thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype); + return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (g && (g = 0, op[0] && (_ = 0)), _) try { + 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; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +} + +var __createBinding = Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +}); + +function __exportStar(m, o) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p); +} + +function __values(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +} + +function __read(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; +} + +/** @deprecated */ +function __spread() { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; +} + +/** @deprecated */ +function __spreadArrays() { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; +} + +function __spreadArray(to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +} + +function __await(v) { + return this instanceof __await ? (this.v = v, this) : new __await(v); +} + +function __asyncGenerator(thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i; + function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; } + function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } } + function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function fulfill(value) { resume("next", value); } + function reject(value) { resume("throw", value); } + function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } +} + +function __asyncDelegator(o) { + var i, p; + return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; + function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; } +} + +function __asyncValues(o) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + 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); + 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); }); }; } + function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } +} + +function __makeTemplateObject(cooked, raw) { + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } + return cooked; +} +var __setModuleDefault = Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}; + +var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); +}; + +function __importStar(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; +} + +function __importDefault(mod) { + return (mod && mod.__esModule) ? mod : { default: mod }; +} + +function __classPrivateFieldGet(receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + 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"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); +} + +function __classPrivateFieldSet(receiver, state, value, kind, f) { + if (kind === "m") throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); + 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"); + return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; +} + +function __classPrivateFieldIn(state, receiver) { + if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function")) throw new TypeError("Cannot use 'in' operator on non-object"); + return typeof state === "function" ? receiver === state : state.has(receiver); +} + +function __addDisposableResource(env, value, async) { + if (value !== null && value !== void 0) { + if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected."); + var dispose, inner; + if (async) { + if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined."); + dispose = value[Symbol.asyncDispose]; + } + if (dispose === void 0) { + if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined."); + dispose = value[Symbol.dispose]; + if (async) inner = dispose; + } + if (typeof dispose !== "function") throw new TypeError("Object not disposable."); + if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } }; + env.stack.push({ value: value, dispose: dispose, async: async }); + } + else if (async) { + env.stack.push({ async: true }); + } + return value; +} + +var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { + var e = new Error(message); + return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; +}; + +function __disposeResources(env) { + function fail(e) { + env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e; + env.hasError = true; + } + var r, s = 0; + function next() { + while (r = env.stack.pop()) { + try { + if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next); + if (r.dispose) { + var result = r.dispose.call(r.value); + if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); }); + } + else s |= 1; + } + catch (e) { + fail(e); + } + } + if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve(); + if (env.hasError) throw env.error; + } + return next(); +} + +function __rewriteRelativeImportExtension(path, preserveJsx) { + if (typeof path === "string" && /^\.\.?\//.test(path)) { + return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) { + return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js"); + }); + } + return path; +} + +var tslib_es6 = { + __extends, + __assign, + __rest, + __decorate, + __param, + __esDecorate, + __runInitializers, + __propKey, + __setFunctionName, + __metadata, + __awaiter, + __generator, + __createBinding, + __exportStar, + __values, + __read, + __spread, + __spreadArrays, + __spreadArray, + __await, + __asyncGenerator, + __asyncDelegator, + __asyncValues, + __makeTemplateObject, + __importStar, + __importDefault, + __classPrivateFieldGet, + __classPrivateFieldSet, + __classPrivateFieldIn, + __addDisposableResource, + __disposeResources, + __rewriteRelativeImportExtension, +}; + +var tslib_es6$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + __addDisposableResource: __addDisposableResource, + get __assign () { return __assign; }, + __asyncDelegator: __asyncDelegator, + __asyncGenerator: __asyncGenerator, + __asyncValues: __asyncValues, + __await: __await, + __awaiter: __awaiter, + __classPrivateFieldGet: __classPrivateFieldGet, + __classPrivateFieldIn: __classPrivateFieldIn, + __classPrivateFieldSet: __classPrivateFieldSet, + __createBinding: __createBinding, + __decorate: __decorate, + __disposeResources: __disposeResources, + __esDecorate: __esDecorate, + __exportStar: __exportStar, + __extends: __extends, + __generator: __generator, + __importDefault: __importDefault, + __importStar: __importStar, + __makeTemplateObject: __makeTemplateObject, + __metadata: __metadata, + __param: __param, + __propKey: __propKey, + __read: __read, + __rest: __rest, + __rewriteRelativeImportExtension: __rewriteRelativeImportExtension, + __runInitializers: __runInitializers, + __setFunctionName: __setFunctionName, + __spread: __spread, + __spreadArray: __spreadArray, + __spreadArrays: __spreadArrays, + __values: __values, + default: tslib_es6 +}); + +var require$$0$2 = /*@__PURE__*/getAugmentedNamespace(tslib_es6$1); + +var volume = {}; + +var path$1 = {}; + +var browser$2 = {exports: {}}; + +var hasRequiredBrowser$2; + +function requireBrowser$2 () { + if (hasRequiredBrowser$2) return browser$2.exports; + hasRequiredBrowser$2 = 1; + // shim for using process in browser + var process = browser$2.exports = {}; + + // cached from whatever undefined is present so that test runners that stub it + // don't break things. But we need to wrap it in a try catch in case it is + // wrapped in strict mode code which doesn't define any globals. It's inside a + // function because try/catches deoptimize in certain engines. + + var cachedSetTimeout; + var cachedClearTimeout; + + function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); + } + function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); + } + (function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } + } ()); + function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the undefined object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the undefined object for 'this', hopfully our context correct otherwise it will throw a undefined error + return cachedSetTimeout.call(this, fun, 0); + } + } + + + } + function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the undefined object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the undefined object for 'this', hopfully our context correct otherwise it will throw a undefined error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + + } + var queue = []; + var draining = false; + var currentQueue; + var queueIndex = -1; + + function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } + } + + function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); + } + + process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } + }; + + // v8 likes predictible objects + function Item(fun, array) { + this.fun = fun; + this.array = array; + } + Item.prototype.run = function () { + this.fun.apply(null, this.array); + }; + process.title = 'browser'; + process.browser = true; + process.env = {}; + process.argv = []; + process.version = ''; // empty string to avoid regexp issues + process.versions = {}; + + function noop() {} + + process.on = noop; + process.addListener = noop; + process.once = noop; + process.off = noop; + process.removeListener = noop; + process.removeAllListeners = noop; + process.emit = noop; + process.prependListener = noop; + process.prependOnceListener = noop; + + process.listeners = function (name) { return [] }; + + process.binding = function (name) { + throw new Error('process.binding is not supported'); + }; + + process.cwd = function () { return '/' }; + process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); + }; + process.umask = function() { return 0; }; + return browser$2.exports; +} + +var browserExports = requireBrowser$2(); +var process$1 = /*@__PURE__*/getDefaultExportFromCjs(browserExports); + +var pathBrowserify; +var hasRequiredPathBrowserify; + +function requirePathBrowserify () { + if (hasRequiredPathBrowserify) return pathBrowserify; + hasRequiredPathBrowserify = 1; + + function assertPath(path) { + if (typeof path !== 'string') { + throw new TypeError('Path must be a string. Received ' + JSON.stringify(path)); + } + } + + // Resolves . and .. elements in a path with directory names + function normalizeStringPosix(path, allowAboveRoot) { + var res = ''; + var lastSegmentLength = 0; + var lastSlash = -1; + var dots = 0; + var code; + for (var i = 0; i <= path.length; ++i) { + if (i < path.length) + code = path.charCodeAt(i); + else if (code === 47 /*/*/) + break; + else + code = 47 /*/*/; + if (code === 47 /*/*/) { + if (lastSlash === i - 1 || dots === 1) ; else if (lastSlash !== i - 1 && dots === 2) { + if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) { + if (res.length > 2) { + var lastSlashIndex = res.lastIndexOf('/'); + if (lastSlashIndex !== res.length - 1) { + if (lastSlashIndex === -1) { + res = ''; + lastSegmentLength = 0; + } else { + res = res.slice(0, lastSlashIndex); + lastSegmentLength = res.length - 1 - res.lastIndexOf('/'); + } + lastSlash = i; + dots = 0; + continue; + } + } else if (res.length === 2 || res.length === 1) { + res = ''; + lastSegmentLength = 0; + lastSlash = i; + dots = 0; + continue; + } + } + if (allowAboveRoot) { + if (res.length > 0) + res += '/..'; + else + res = '..'; + lastSegmentLength = 2; + } + } else { + if (res.length > 0) + res += '/' + path.slice(lastSlash + 1, i); + else + res = path.slice(lastSlash + 1, i); + lastSegmentLength = i - lastSlash - 1; + } + lastSlash = i; + dots = 0; + } else if (code === 46 /*.*/ && dots !== -1) { + ++dots; + } else { + dots = -1; + } + } + return res; + } + + function _format(sep, pathObject) { + var dir = pathObject.dir || pathObject.root; + var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || ''); + if (!dir) { + return base; + } + if (dir === pathObject.root) { + return dir + base; + } + return dir + sep + base; + } + + var posix = { + // path.resolve([from ...], to) + resolve: function resolve() { + var resolvedPath = ''; + var resolvedAbsolute = false; + var cwd; + + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path; + if (i >= 0) + path = arguments[i]; + else { + if (cwd === undefined) + cwd = process$1.cwd(); + path = cwd; + } + + assertPath(path); + + // Skip empty entries + if (path.length === 0) { + continue; + } + + resolvedPath = path + '/' + resolvedPath; + resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/; + } + + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + + // Normalize the path + resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute); + + if (resolvedAbsolute) { + if (resolvedPath.length > 0) + return '/' + resolvedPath; + else + return '/'; + } else if (resolvedPath.length > 0) { + return resolvedPath; + } else { + return '.'; + } + }, + + normalize: function normalize(path) { + assertPath(path); + + if (path.length === 0) return '.'; + + var isAbsolute = path.charCodeAt(0) === 47 /*/*/; + var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/; + + // Normalize the path + path = normalizeStringPosix(path, !isAbsolute); + + if (path.length === 0 && !isAbsolute) path = '.'; + if (path.length > 0 && trailingSeparator) path += '/'; + + if (isAbsolute) return '/' + path; + return path; + }, + + isAbsolute: function isAbsolute(path) { + assertPath(path); + return path.length > 0 && path.charCodeAt(0) === 47 /*/*/; + }, + + join: function join() { + if (arguments.length === 0) + return '.'; + var joined; + for (var i = 0; i < arguments.length; ++i) { + var arg = arguments[i]; + assertPath(arg); + if (arg.length > 0) { + if (joined === undefined) + joined = arg; + else + joined += '/' + arg; + } + } + if (joined === undefined) + return '.'; + return posix.normalize(joined); + }, + + relative: function relative(from, to) { + assertPath(from); + assertPath(to); + + if (from === to) return ''; + + from = posix.resolve(from); + to = posix.resolve(to); + + if (from === to) return ''; + + // Trim any leading backslashes + var fromStart = 1; + for (; fromStart < from.length; ++fromStart) { + if (from.charCodeAt(fromStart) !== 47 /*/*/) + break; + } + var fromEnd = from.length; + var fromLen = fromEnd - fromStart; + + // Trim any leading backslashes + var toStart = 1; + for (; toStart < to.length; ++toStart) { + if (to.charCodeAt(toStart) !== 47 /*/*/) + break; + } + var toEnd = to.length; + var toLen = toEnd - toStart; + + // Compare paths to find the longest common path from root + var length = fromLen < toLen ? fromLen : toLen; + var lastCommonSep = -1; + var i = 0; + for (; i <= length; ++i) { + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === 47 /*/*/) { + // We get here if `from` is the exact base path for `to`. + // For example: from='/foo/bar'; to='/foo/bar/baz' + return to.slice(toStart + i + 1); + } else if (i === 0) { + // We get here if `from` is the root + // For example: from='/'; to='/foo' + return to.slice(toStart + i); + } + } else if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === 47 /*/*/) { + // We get here if `to` is the exact base path for `from`. + // For example: from='/foo/bar/baz'; to='/foo/bar' + lastCommonSep = i; + } else if (i === 0) { + // We get here if `to` is the root. + // For example: from='/foo'; to='/' + lastCommonSep = 0; + } + } + break; + } + var fromCode = from.charCodeAt(fromStart + i); + var toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) + break; + else if (fromCode === 47 /*/*/) + lastCommonSep = i; + } + + var out = ''; + // Generate the relative path based on the path difference between `to` + // and `from` + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) { + if (out.length === 0) + out += '..'; + else + out += '/..'; + } + } + + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts + if (out.length > 0) + return out + to.slice(toStart + lastCommonSep); + else { + toStart += lastCommonSep; + if (to.charCodeAt(toStart) === 47 /*/*/) + ++toStart; + return to.slice(toStart); + } + }, + + _makeLong: function _makeLong(path) { + return path; + }, + + dirname: function dirname(path) { + assertPath(path); + if (path.length === 0) return '.'; + var code = path.charCodeAt(0); + var hasRoot = code === 47 /*/*/; + var end = -1; + var matchedSlash = true; + for (var i = path.length - 1; i >= 1; --i) { + code = path.charCodeAt(i); + if (code === 47 /*/*/) { + if (!matchedSlash) { + end = i; + break; + } + } else { + // We saw the first non-path separator + matchedSlash = false; + } + } + + if (end === -1) return hasRoot ? '/' : '.'; + if (hasRoot && end === 1) return '//'; + return path.slice(0, end); + }, + + basename: function basename(path, ext) { + if (ext !== undefined && typeof ext !== 'string') throw new TypeError('"ext" argument must be a string'); + assertPath(path); + + var start = 0; + var end = -1; + var matchedSlash = true; + var i; + + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext.length === path.length && ext === path) return ''; + var extIdx = ext.length - 1; + var firstNonSlashEnd = -1; + for (i = path.length - 1; i >= 0; --i) { + var code = path.charCodeAt(i); + if (code === 47 /*/*/) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else { + if (firstNonSlashEnd === -1) { + // We saw the first non-path separator, remember this index in case + // we need it if the extension ends up not matching + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + // Try to match the explicit extension + if (code === ext.charCodeAt(extIdx)) { + if (--extIdx === -1) { + // We matched the extension, so mark this as the end of our path + // component + end = i; + } + } else { + // Extension does not match, so our result is the entire path + // component + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + + if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length; + return path.slice(start, end); + } else { + for (i = path.length - 1; i >= 0; --i) { + if (path.charCodeAt(i) === 47 /*/*/) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + + if (end === -1) return ''; + return path.slice(start, end); + } + }, + + extname: function extname(path) { + assertPath(path); + var startDot = -1; + var startPart = 0; + var end = -1; + var matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + var preDotState = 0; + for (var i = path.length - 1; i >= 0; --i) { + var code = path.charCodeAt(i); + if (code === 47 /*/*/) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === 46 /*.*/) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) + startDot = i; + else if (preDotState !== 1) + preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if (startDot === -1 || end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + return ''; + } + return path.slice(startDot, end); + }, + + format: function format(pathObject) { + if (pathObject === null || typeof pathObject !== 'object') { + throw new TypeError('The "pathObject" argument must be of type Object. Received type ' + typeof pathObject); + } + return _format('/', pathObject); + }, + + parse: function parse(path) { + assertPath(path); + + var ret = { root: '', dir: '', base: '', ext: '', name: '' }; + if (path.length === 0) return ret; + var code = path.charCodeAt(0); + var isAbsolute = code === 47 /*/*/; + var start; + if (isAbsolute) { + ret.root = '/'; + start = 1; + } else { + start = 0; + } + var startDot = -1; + var startPart = 0; + var end = -1; + var matchedSlash = true; + var i = path.length - 1; + + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + var preDotState = 0; + + // Get non-dir info + for (; i >= start; --i) { + code = path.charCodeAt(i); + if (code === 47 /*/*/) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === 46 /*.*/) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if (startDot === -1 || end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + if (end !== -1) { + if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end); + } + } else { + if (startPart === 0 && isAbsolute) { + ret.name = path.slice(1, startDot); + ret.base = path.slice(1, end); + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + } + ret.ext = path.slice(startDot, end); + } + + if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/'; + + return ret; + }, + + sep: '/', + delimiter: ':', + win32: null, + posix: null + }; + + posix.posix = posix; + + pathBrowserify = posix; + return pathBrowserify; +} + +var hasRequiredPath$1; + +function requirePath$1 () { + if (hasRequiredPath$1) return path$1; + hasRequiredPath$1 = 1; + (function (exports$1) { + Object.defineProperty(exports$1, "__esModule", { value: true }); + exports$1.basename = exports$1.isAbsolute = exports$1.normalize = exports$1.dirname = exports$1.relative = exports$1.join = exports$1.posix = exports$1.sep = exports$1.resolve = void 0; + var node_path_1 = requirePathBrowserify(); + Object.defineProperty(exports$1, "resolve", { enumerable: true, get: function () { return node_path_1.resolve; } }); + Object.defineProperty(exports$1, "sep", { enumerable: true, get: function () { return node_path_1.sep; } }); + Object.defineProperty(exports$1, "posix", { enumerable: true, get: function () { return node_path_1.posix; } }); + Object.defineProperty(exports$1, "join", { enumerable: true, get: function () { return node_path_1.join; } }); + Object.defineProperty(exports$1, "relative", { enumerable: true, get: function () { return node_path_1.relative; } }); + Object.defineProperty(exports$1, "dirname", { enumerable: true, get: function () { return node_path_1.dirname; } }); + Object.defineProperty(exports$1, "normalize", { enumerable: true, get: function () { return node_path_1.normalize; } }); + Object.defineProperty(exports$1, "isAbsolute", { enumerable: true, get: function () { return node_path_1.isAbsolute; } }); + Object.defineProperty(exports$1, "basename", { enumerable: true, get: function () { return node_path_1.basename; } }); + + } (path$1)); + return path$1; +} + +var lib$6 = {}; + +var types$1 = {}; + +var hasRequiredTypes$1; + +function requireTypes$1 () { + if (hasRequiredTypes$1) return types$1; + hasRequiredTypes$1 = 1; + Object.defineProperty(types$1, "__esModule", { value: true }); + + return types$1; +} + +var json$1 = {}; + +var buffer$2 = {}; + +var buffer$1 = {}; + +var base64Js = {}; + +var hasRequiredBase64Js; + +function requireBase64Js () { + if (hasRequiredBase64Js) return base64Js; + hasRequiredBase64Js = 1; + + base64Js.byteLength = byteLength; + base64Js.toByteArray = toByteArray; + base64Js.fromByteArray = fromByteArray; + + var lookup = []; + var revLookup = []; + var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array; + + var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + for (var i = 0, len = code.length; i < len; ++i) { + lookup[i] = code[i]; + revLookup[code.charCodeAt(i)] = i; + } + + // Support decoding URL-safe base64 strings, as Node.js does. + // See: https://en.wikipedia.org/wiki/Base64#URL_applications + revLookup['-'.charCodeAt(0)] = 62; + revLookup['_'.charCodeAt(0)] = 63; + + function getLens (b64) { + var len = b64.length; + + if (len % 4 > 0) { + throw new Error('Invalid string. Length must be a multiple of 4') + } + + // Trim off extra bytes after placeholder bytes are found + // See: https://github.com/beatgammit/base64-js/issues/42 + var validLen = b64.indexOf('='); + if (validLen === -1) validLen = len; + + var placeHoldersLen = validLen === len + ? 0 + : 4 - (validLen % 4); + + return [validLen, placeHoldersLen] + } + + // base64 is 4/3 + up to two characters of the original data + function byteLength (b64) { + var lens = getLens(b64); + var validLen = lens[0]; + var placeHoldersLen = lens[1]; + return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen + } + + function _byteLength (b64, validLen, placeHoldersLen) { + return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen + } + + function toByteArray (b64) { + var tmp; + var lens = getLens(b64); + var validLen = lens[0]; + var placeHoldersLen = lens[1]; + + var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)); + + var curByte = 0; + + // if there are placeholders, only get up to the last complete 4 chars + var len = placeHoldersLen > 0 + ? validLen - 4 + : validLen; + + var i; + for (i = 0; i < len; i += 4) { + tmp = + (revLookup[b64.charCodeAt(i)] << 18) | + (revLookup[b64.charCodeAt(i + 1)] << 12) | + (revLookup[b64.charCodeAt(i + 2)] << 6) | + revLookup[b64.charCodeAt(i + 3)]; + arr[curByte++] = (tmp >> 16) & 0xFF; + arr[curByte++] = (tmp >> 8) & 0xFF; + arr[curByte++] = tmp & 0xFF; + } + + if (placeHoldersLen === 2) { + tmp = + (revLookup[b64.charCodeAt(i)] << 2) | + (revLookup[b64.charCodeAt(i + 1)] >> 4); + arr[curByte++] = tmp & 0xFF; + } + + if (placeHoldersLen === 1) { + tmp = + (revLookup[b64.charCodeAt(i)] << 10) | + (revLookup[b64.charCodeAt(i + 1)] << 4) | + (revLookup[b64.charCodeAt(i + 2)] >> 2); + arr[curByte++] = (tmp >> 8) & 0xFF; + arr[curByte++] = tmp & 0xFF; + } + + return arr + } + + function tripletToBase64 (num) { + return lookup[num >> 18 & 0x3F] + + lookup[num >> 12 & 0x3F] + + lookup[num >> 6 & 0x3F] + + lookup[num & 0x3F] + } + + function encodeChunk (uint8, start, end) { + var tmp; + var output = []; + for (var i = start; i < end; i += 3) { + tmp = + ((uint8[i] << 16) & 0xFF0000) + + ((uint8[i + 1] << 8) & 0xFF00) + + (uint8[i + 2] & 0xFF); + output.push(tripletToBase64(tmp)); + } + return output.join('') + } + + function fromByteArray (uint8) { + var tmp; + var len = uint8.length; + var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes + var parts = []; + var maxChunkLength = 16383; // must be multiple of 3 + + // go through the array every three bytes, we'll deal with trailing stuff later + for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { + parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))); + } + + // pad the end with zeros, but make sure to not forget the extra bytes + if (extraBytes === 1) { + tmp = uint8[len - 1]; + parts.push( + lookup[tmp >> 2] + + lookup[(tmp << 4) & 0x3F] + + '==' + ); + } else if (extraBytes === 2) { + tmp = (uint8[len - 2] << 8) + uint8[len - 1]; + parts.push( + lookup[tmp >> 10] + + lookup[(tmp >> 4) & 0x3F] + + lookup[(tmp << 2) & 0x3F] + + '=' + ); + } + + return parts.join('') + } + return base64Js; +} + +var base64JsExports = requireBase64Js(); + +var ieee754 = {}; + +/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ + +var hasRequiredIeee754; + +function requireIeee754 () { + if (hasRequiredIeee754) return ieee754; + hasRequiredIeee754 = 1; + ieee754.read = function (buffer, offset, isLE, mLen, nBytes) { + var e, m; + var eLen = (nBytes * 8) - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var nBits = -7; + var i = isLE ? (nBytes - 1) : 0; + var d = isLE ? -1 : 1; + var s = buffer[offset + i]; + + i += d; + + e = s & ((1 << (-nBits)) - 1); + s >>= (-nBits); + nBits += eLen; + for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {} + + m = e & ((1 << (-nBits)) - 1); + e >>= (-nBits); + nBits += mLen; + for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {} + + if (e === 0) { + e = 1 - eBias; + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity) + } else { + m = m + Math.pow(2, mLen); + e = e - eBias; + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen) + }; + + ieee754.write = function (buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c; + var eLen = (nBytes * 8) - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0); + var i = isLE ? 0 : (nBytes - 1); + var d = isLE ? 1 : -1; + var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0; + + value = Math.abs(value); + + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0; + e = eMax; + } else { + e = Math.floor(Math.log(value) / Math.LN2); + if (value * (c = Math.pow(2, -e)) < 1) { + e--; + c *= 2; + } + if (e + eBias >= 1) { + value += rt / c; + } else { + value += rt * Math.pow(2, 1 - eBias); + } + if (value * c >= 2) { + e++; + c /= 2; + } + + if (e + eBias >= eMax) { + m = 0; + e = eMax; + } else if (e + eBias >= 1) { + m = ((value * c) - 1) * Math.pow(2, mLen); + e = e + eBias; + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); + e = 0; + } + } + + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} + + e = (e << mLen) | m; + eLen += mLen; + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} + + buffer[offset + i - d] |= s * 128; + }; + return ieee754; +} + +var ieee754Exports = requireIeee754(); + +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +/* eslint-disable no-proto */ + +const customInspectSymbol = + (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation + ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation + : null; + +const INSPECT_MAX_BYTES = 50; + +const K_MAX_LENGTH = 0x7fffffff; +const kMaxLength = K_MAX_LENGTH; + +/** + * If `Buffer.TYPED_ARRAY_SUPPORT`: + * === true Use Uint8Array implementation (fastest) + * === false Print warning and recommend using `buffer` v4.x which has an Object + * implementation (most compatible, even IE6) + * + * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, + * Opera 11.6+, iOS 4.2+. + * + * We report that the browser does not support typed arrays if the are not subclassable + * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array` + * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support + * for __proto__ and has a buggy typed array implementation. + */ +Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport(); + +if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && + typeof console.error === 'function') { + console.error( + 'This browser lacks typed array (Uint8Array) support which is required by ' + + '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.' + ); +} + +function typedArraySupport () { + // Can typed array instances can be augmented? + try { + const arr = new Uint8Array(1); + const proto = { foo: function () { return 42 } }; + Object.setPrototypeOf(proto, Uint8Array.prototype); + Object.setPrototypeOf(arr, proto); + return arr.foo() === 42 + } catch (e) { + return false + } +} + +Object.defineProperty(Buffer.prototype, 'parent', { + enumerable: true, + get: function () { + if (!Buffer.isBuffer(this)) return undefined + return this.buffer + } +}); + +Object.defineProperty(Buffer.prototype, 'offset', { + enumerable: true, + get: function () { + if (!Buffer.isBuffer(this)) return undefined + return this.byteOffset + } +}); + +function createBuffer (length) { + if (length > K_MAX_LENGTH) { + throw new RangeError('The value "' + length + '" is invalid for option "size"') + } + // Return an augmented `Uint8Array` instance + const buf = new Uint8Array(length); + Object.setPrototypeOf(buf, Buffer.prototype); + return buf +} + +/** + * The Buffer constructor returns instances of `Uint8Array` that have their + * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of + * `Uint8Array`, so the returned instances will have all the node `Buffer` methods + * and the `Uint8Array` methods. Square bracket notation works as expected -- it + * returns a single octet. + * + * The `Uint8Array` prototype remains unmodified. + */ + +function Buffer (arg, encodingOrOffset, length) { + // Common case. + if (typeof arg === 'number') { + if (typeof encodingOrOffset === 'string') { + throw new TypeError( + 'The "string" argument must be of type string. Received type number' + ) + } + return allocUnsafe(arg) + } + return from(arg, encodingOrOffset, length) +} + +Buffer.poolSize = 8192; // not used by this implementation + +function from (value, encodingOrOffset, length) { + if (typeof value === 'string') { + return fromString(value, encodingOrOffset) + } + + if (ArrayBuffer.isView(value)) { + return fromArrayView(value) + } + + if (value == null) { + throw new TypeError( + 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + + 'or Array-like Object. Received type ' + (typeof value) + ) + } + + if (isInstance(value, ArrayBuffer) || + (value && isInstance(value.buffer, ArrayBuffer))) { + return fromArrayBuffer(value, encodingOrOffset, length) + } + + if (typeof SharedArrayBuffer !== 'undefined' && + (isInstance(value, SharedArrayBuffer) || + (value && isInstance(value.buffer, SharedArrayBuffer)))) { + return fromArrayBuffer(value, encodingOrOffset, length) + } + + if (typeof value === 'number') { + throw new TypeError( + 'The "value" argument must not be of type number. Received type number' + ) + } + + const valueOf = value.valueOf && value.valueOf(); + if (valueOf != null && valueOf !== value) { + return Buffer.from(valueOf, encodingOrOffset, length) + } + + const b = fromObject(value); + if (b) return b + + if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && + typeof value[Symbol.toPrimitive] === 'function') { + return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length) + } + + throw new TypeError( + 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + + 'or Array-like Object. Received type ' + (typeof value) + ) +} + +/** + * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError + * if value is a number. + * Buffer.from(str[, encoding]) + * Buffer.from(array) + * Buffer.from(buffer) + * Buffer.from(arrayBuffer[, byteOffset[, length]]) + **/ +Buffer.from = function (value, encodingOrOffset, length) { + return from(value, encodingOrOffset, length) +}; + +// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug: +// https://github.com/feross/buffer/pull/148 +Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype); +Object.setPrototypeOf(Buffer, Uint8Array); + +function assertSize (size) { + if (typeof size !== 'number') { + throw new TypeError('"size" argument must be of type number') + } else if (size < 0) { + throw new RangeError('The value "' + size + '" is invalid for option "size"') + } +} + +function alloc (size, fill, encoding) { + assertSize(size); + if (size <= 0) { + return createBuffer(size) + } + if (fill !== undefined) { + // Only pay attention to encoding if it's a string. This + // prevents accidentally sending in a number that would + // be interpreted as a start offset. + return typeof encoding === 'string' + ? createBuffer(size).fill(fill, encoding) + : createBuffer(size).fill(fill) + } + return createBuffer(size) +} + +/** + * Creates a new filled Buffer instance. + * alloc(size[, fill[, encoding]]) + **/ +Buffer.alloc = function (size, fill, encoding) { + return alloc(size, fill, encoding) +}; + +function allocUnsafe (size) { + assertSize(size); + return createBuffer(size < 0 ? 0 : checked(size) | 0) +} + +/** + * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. + * */ +Buffer.allocUnsafe = function (size) { + return allocUnsafe(size) +}; +/** + * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. + */ +Buffer.allocUnsafeSlow = function (size) { + return allocUnsafe(size) +}; + +function fromString (string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8'; + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + + const length = byteLength(string, encoding) | 0; + let buf = createBuffer(length); + + const actual = buf.write(string, encoding); + + if (actual !== length) { + // Writing a hex string, for example, that contains invalid characters will + // cause everything after the first invalid character to be ignored. (e.g. + // 'abxxcd' will be treated as 'ab') + buf = buf.slice(0, actual); + } + + return buf +} + +function fromArrayLike (array) { + const length = array.length < 0 ? 0 : checked(array.length) | 0; + const buf = createBuffer(length); + for (let i = 0; i < length; i += 1) { + buf[i] = array[i] & 255; + } + return buf +} + +function fromArrayView (arrayView) { + if (isInstance(arrayView, Uint8Array)) { + const copy = new Uint8Array(arrayView); + return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength) + } + return fromArrayLike(arrayView) +} + +function fromArrayBuffer (array, byteOffset, length) { + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('"offset" is outside of buffer bounds') + } + + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('"length" is outside of buffer bounds') + } + + let buf; + if (byteOffset === undefined && length === undefined) { + buf = new Uint8Array(array); + } else if (length === undefined) { + buf = new Uint8Array(array, byteOffset); + } else { + buf = new Uint8Array(array, byteOffset, length); + } + + // Return an augmented `Uint8Array` instance + Object.setPrototypeOf(buf, Buffer.prototype); + + return buf +} + +function fromObject (obj) { + if (Buffer.isBuffer(obj)) { + const len = checked(obj.length) | 0; + const buf = createBuffer(len); + + if (buf.length === 0) { + return buf + } + + obj.copy(buf, 0, 0, len); + return buf + } + + if (obj.length !== undefined) { + if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) { + return createBuffer(0) + } + return fromArrayLike(obj) + } + + if (obj.type === 'Buffer' && Array.isArray(obj.data)) { + return fromArrayLike(obj.data) + } +} + +function checked (length) { + // Note: cannot use `length < K_MAX_LENGTH` here because that fails when + // length is NaN (which is otherwise coerced to zero.) + if (length >= K_MAX_LENGTH) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + + 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes') + } + return length | 0 +} + +function SlowBuffer (length) { + if (+length != length) { // eslint-disable-line eqeqeq + length = 0; + } + return Buffer.alloc(+length) +} + +Buffer.isBuffer = function isBuffer (b) { + return b != null && b._isBuffer === true && + b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false +}; + +Buffer.compare = function compare (a, b) { + if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength); + if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength); + if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { + throw new TypeError( + 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array' + ) + } + + if (a === b) return 0 + + let x = a.length; + let y = b.length; + + for (let i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i]; + y = b[i]; + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +}; + +Buffer.isEncoding = function isEncoding (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false + } +}; + +Buffer.concat = function concat (list, length) { + if (!Array.isArray(list)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + + if (list.length === 0) { + return Buffer.alloc(0) + } + + let i; + if (length === undefined) { + length = 0; + for (i = 0; i < list.length; ++i) { + length += list[i].length; + } + } + + const buffer = Buffer.allocUnsafe(length); + let pos = 0; + for (i = 0; i < list.length; ++i) { + let buf = list[i]; + if (isInstance(buf, Uint8Array)) { + if (pos + buf.length > buffer.length) { + if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf); + buf.copy(buffer, pos); + } else { + Uint8Array.prototype.set.call( + buffer, + buf, + pos + ); + } + } else if (!Buffer.isBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } else { + buf.copy(buffer, pos); + } + pos += buf.length; + } + return buffer +}; + +function byteLength (string, encoding) { + if (Buffer.isBuffer(string)) { + return string.length + } + if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { + return string.byteLength + } + if (typeof string !== 'string') { + throw new TypeError( + 'The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + + 'Received type ' + typeof string + ) + } + + const len = string.length; + const mustMatch = (arguments.length > 2 && arguments[2] === true); + if (!mustMatch && len === 0) return 0 + + // Use a for loop to avoid recursion + let loweredCase = false; + for (;;) { + switch (encoding) { + case 'ascii': + case 'latin1': + case 'binary': + return len + case 'utf8': + case 'utf-8': + return utf8ToBytes(string).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2 + case 'hex': + return len >>> 1 + case 'base64': + return base64ToBytes(string).length + default: + if (loweredCase) { + return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8 + } + encoding = ('' + encoding).toLowerCase(); + loweredCase = true; + } + } +} +Buffer.byteLength = byteLength; + +function slowToString (encoding, start, end) { + let loweredCase = false; + + // No need to verify that "this.length <= MAX_UINT32" since it's a read-only + // property of a typed array. + + // This behaves neither like String nor Uint8Array in that we set start/end + // to their upper/lower bounds if the value passed is out of range. + // undefined is handled specially as per ECMA-262 6th Edition, + // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. + if (start === undefined || start < 0) { + start = 0; + } + // Return early if start > this.length. Done here to prevent potential uint32 + // coercion fail below. + if (start > this.length) { + return '' + } + + if (end === undefined || end > this.length) { + end = this.length; + } + + if (end <= 0) { + return '' + } + + // Force coercion to uint32. This will also coerce falsey/NaN values to 0. + end >>>= 0; + start >>>= 0; + + if (end <= start) { + return '' + } + + if (!encoding) encoding = 'utf8'; + + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end) + + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end) + + case 'ascii': + return asciiSlice(this, start, end) + + case 'latin1': + case 'binary': + return latin1Slice(this, start, end) + + case 'base64': + return base64Slice(this, start, end) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = (encoding + '').toLowerCase(); + loweredCase = true; + } + } +} + +// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package) +// to detect a Buffer instance. It's not possible to use `instanceof Buffer` +// reliably in a browserify context because there could be multiple different +// copies of the 'buffer' package in use. This method works even for Buffer +// instances that were created from another copy of the `buffer` package. +// See: https://github.com/feross/buffer/issues/154 +Buffer.prototype._isBuffer = true; + +function swap (b, n, m) { + const i = b[n]; + b[n] = b[m]; + b[m] = i; +} + +Buffer.prototype.swap16 = function swap16 () { + const len = this.length; + if (len % 2 !== 0) { + throw new RangeError('Buffer size must be a multiple of 16-bits') + } + for (let i = 0; i < len; i += 2) { + swap(this, i, i + 1); + } + return this +}; + +Buffer.prototype.swap32 = function swap32 () { + const len = this.length; + if (len % 4 !== 0) { + throw new RangeError('Buffer size must be a multiple of 32-bits') + } + for (let i = 0; i < len; i += 4) { + swap(this, i, i + 3); + swap(this, i + 1, i + 2); + } + return this +}; + +Buffer.prototype.swap64 = function swap64 () { + const len = this.length; + if (len % 8 !== 0) { + throw new RangeError('Buffer size must be a multiple of 64-bits') + } + for (let i = 0; i < len; i += 8) { + swap(this, i, i + 7); + swap(this, i + 1, i + 6); + swap(this, i + 2, i + 5); + swap(this, i + 3, i + 4); + } + return this +}; + +Buffer.prototype.toString = function toString () { + const length = this.length; + if (length === 0) return '' + if (arguments.length === 0) return utf8Slice(this, 0, length) + return slowToString.apply(this, arguments) +}; + +Buffer.prototype.toLocaleString = Buffer.prototype.toString; + +Buffer.prototype.equals = function equals (b) { + if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return true + return Buffer.compare(this, b) === 0 +}; + +Buffer.prototype.inspect = function inspect () { + let str = ''; + const max = INSPECT_MAX_BYTES; + str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim(); + if (this.length > max) str += ' ... '; + return '' +}; +if (customInspectSymbol) { + Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect; +} + +Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { + if (isInstance(target, Uint8Array)) { + target = Buffer.from(target, target.offset, target.byteLength); + } + if (!Buffer.isBuffer(target)) { + throw new TypeError( + 'The "target" argument must be one of type Buffer or Uint8Array. ' + + 'Received type ' + (typeof target) + ) + } + + if (start === undefined) { + start = 0; + } + if (end === undefined) { + end = target ? target.length : 0; + } + if (thisStart === undefined) { + thisStart = 0; + } + if (thisEnd === undefined) { + thisEnd = this.length; + } + + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError('out of range index') + } + + if (thisStart >= thisEnd && start >= end) { + return 0 + } + if (thisStart >= thisEnd) { + return -1 + } + if (start >= end) { + return 1 + } + + start >>>= 0; + end >>>= 0; + thisStart >>>= 0; + thisEnd >>>= 0; + + if (this === target) return 0 + + let x = thisEnd - thisStart; + let y = end - start; + const len = Math.min(x, y); + + const thisCopy = this.slice(thisStart, thisEnd); + const targetCopy = target.slice(start, end); + + for (let i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i]; + y = targetCopy[i]; + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +}; + +// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, +// OR the last index of `val` in `buffer` at offset <= `byteOffset`. +// +// Arguments: +// - buffer - a Buffer to search +// - val - a string, Buffer, or number +// - byteOffset - an index into `buffer`; will be clamped to an int32 +// - encoding - an optional encoding, relevant is val is a string +// - dir - true for indexOf, false for lastIndexOf +function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { + // Empty buffer means no match + if (buffer.length === 0) return -1 + + // Normalize byteOffset + if (typeof byteOffset === 'string') { + encoding = byteOffset; + byteOffset = 0; + } else if (byteOffset > 0x7fffffff) { + byteOffset = 0x7fffffff; + } else if (byteOffset < -2147483648) { + byteOffset = -2147483648; + } + byteOffset = +byteOffset; // Coerce to Number. + if (numberIsNaN(byteOffset)) { + // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer + byteOffset = dir ? 0 : (buffer.length - 1); + } + + // Normalize byteOffset: negative offsets start from the end of the buffer + if (byteOffset < 0) byteOffset = buffer.length + byteOffset; + if (byteOffset >= buffer.length) { + if (dir) return -1 + else byteOffset = buffer.length - 1; + } else if (byteOffset < 0) { + if (dir) byteOffset = 0; + else return -1 + } + + // Normalize val + if (typeof val === 'string') { + val = Buffer.from(val, encoding); + } + + // Finally, search either indexOf (if dir is true) or lastIndexOf + if (Buffer.isBuffer(val)) { + // Special case: looking for empty string/buffer always fails + if (val.length === 0) { + return -1 + } + return arrayIndexOf(buffer, val, byteOffset, encoding, dir) + } else if (typeof val === 'number') { + val = val & 0xFF; // Search for a byte value [0-255] + if (typeof Uint8Array.prototype.indexOf === 'function') { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) + } + } + return arrayIndexOf(buffer, [val], byteOffset, encoding, dir) + } + + throw new TypeError('val must be string, number or Buffer') +} + +function arrayIndexOf (arr, val, byteOffset, encoding, dir) { + let indexSize = 1; + let arrLength = arr.length; + let valLength = val.length; + + if (encoding !== undefined) { + encoding = String(encoding).toLowerCase(); + if (encoding === 'ucs2' || encoding === 'ucs-2' || + encoding === 'utf16le' || encoding === 'utf-16le') { + if (arr.length < 2 || val.length < 2) { + return -1 + } + indexSize = 2; + arrLength /= 2; + valLength /= 2; + byteOffset /= 2; + } + } + + function read (buf, i) { + if (indexSize === 1) { + return buf[i] + } else { + return buf.readUInt16BE(i * indexSize) + } + } + + let i; + if (dir) { + let foundIndex = -1; + for (i = byteOffset; i < arrLength; i++) { + if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) foundIndex = i; + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize + } else { + if (foundIndex !== -1) i -= i - foundIndex; + foundIndex = -1; + } + } + } else { + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength; + for (i = byteOffset; i >= 0; i--) { + let found = true; + for (let j = 0; j < valLength; j++) { + if (read(arr, i + j) !== read(val, j)) { + found = false; + break + } + } + if (found) return i + } + } + + return -1 +} + +Buffer.prototype.includes = function includes (val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1 +}; + +Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true) +}; + +Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false) +}; + +function hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0; + const remaining = buf.length - offset; + if (!length) { + length = remaining; + } else { + length = Number(length); + if (length > remaining) { + length = remaining; + } + } + + const strLen = string.length; + + if (length > strLen / 2) { + length = strLen / 2; + } + let i; + for (i = 0; i < length; ++i) { + const parsed = parseInt(string.substr(i * 2, 2), 16); + if (numberIsNaN(parsed)) return i + buf[offset + i] = parsed; + } + return i +} + +function utf8Write (buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +} + +function asciiWrite (buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length) +} + +function base64Write (buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length) +} + +function ucs2Write (buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) +} + +Buffer.prototype.write = function write (string, offset, length, encoding) { + // Buffer#write(string) + if (offset === undefined) { + encoding = 'utf8'; + length = this.length; + offset = 0; + // Buffer#write(string, encoding) + } else if (length === undefined && typeof offset === 'string') { + encoding = offset; + length = this.length; + offset = 0; + // Buffer#write(string, offset[, length][, encoding]) + } else if (isFinite(offset)) { + offset = offset >>> 0; + if (isFinite(length)) { + length = length >>> 0; + if (encoding === undefined) encoding = 'utf8'; + } else { + encoding = length; + length = undefined; + } + } else { + throw new Error( + 'Buffer.write(string, encoding, offset[, length]) is no longer supported' + ) + } + + const remaining = this.length - offset; + if (length === undefined || length > remaining) length = remaining; + + if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { + throw new RangeError('Attempt to write outside buffer bounds') + } + + if (!encoding) encoding = 'utf8'; + + let loweredCase = false; + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length) + + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length) + + case 'ascii': + case 'latin1': + case 'binary': + return asciiWrite(this, string, offset, length) + + case 'base64': + // Warning: maxLength not taken into account in base64Write + return base64Write(this, string, offset, length) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = ('' + encoding).toLowerCase(); + loweredCase = true; + } + } +}; + +Buffer.prototype.toJSON = function toJSON () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } +}; + +function base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return base64JsExports.fromByteArray(buf) + } else { + return base64JsExports.fromByteArray(buf.slice(start, end)) + } +} + +function utf8Slice (buf, start, end) { + end = Math.min(buf.length, end); + const res = []; + + let i = start; + while (i < end) { + const firstByte = buf[i]; + let codePoint = null; + let bytesPerSequence = (firstByte > 0xEF) + ? 4 + : (firstByte > 0xDF) + ? 3 + : (firstByte > 0xBF) + ? 2 + : 1; + + if (i + bytesPerSequence <= end) { + let secondByte, thirdByte, fourthByte, tempCodePoint; + + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte; + } + break + case 2: + secondByte = buf[i + 1]; + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F); + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint; + } + } + break + case 3: + secondByte = buf[i + 1]; + thirdByte = buf[i + 2]; + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F); + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint; + } + } + break + case 4: + secondByte = buf[i + 1]; + thirdByte = buf[i + 2]; + fourthByte = buf[i + 3]; + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F); + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint; + } + } + } + } + + if (codePoint === null) { + // we did not generate a valid codePoint so insert a + // replacement char (U+FFFD) and advance only 1 byte + codePoint = 0xFFFD; + bytesPerSequence = 1; + } else if (codePoint > 0xFFFF) { + // encode to utf16 (surrogate pair dance) + codePoint -= 0x10000; + res.push(codePoint >>> 10 & 0x3FF | 0xD800); + codePoint = 0xDC00 | codePoint & 0x3FF; + } + + res.push(codePoint); + i += bytesPerSequence; + } + + return decodeCodePointsArray(res) +} + +// Based on http://stackoverflow.com/a/22747272/680742, the browser with +// the lowest limit is Chrome, with 0x10000 args. +// We go 1 magnitude less, for safety +const MAX_ARGUMENTS_LENGTH = 0x1000; + +function decodeCodePointsArray (codePoints) { + const len = codePoints.length; + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints) // avoid extra slice() + } + + // Decode in chunks to avoid "call stack size exceeded". + let res = ''; + let i = 0; + while (i < len) { + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ); + } + return res +} + +function asciiSlice (buf, start, end) { + let ret = ''; + end = Math.min(buf.length, end); + + for (let i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 0x7F); + } + return ret +} + +function latin1Slice (buf, start, end) { + let ret = ''; + end = Math.min(buf.length, end); + + for (let i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]); + } + return ret +} + +function hexSlice (buf, start, end) { + const len = buf.length; + + if (!start || start < 0) start = 0; + if (!end || end < 0 || end > len) end = len; + + let out = ''; + for (let i = start; i < end; ++i) { + out += hexSliceLookupTable[buf[i]]; + } + return out +} + +function utf16leSlice (buf, start, end) { + const bytes = buf.slice(start, end); + let res = ''; + // If bytes.length is odd, the last 8 bits must be ignored (same as node.js) + for (let i = 0; i < bytes.length - 1; i += 2) { + res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256)); + } + return res +} + +Buffer.prototype.slice = function slice (start, end) { + const len = this.length; + start = ~~start; + end = end === undefined ? len : ~~end; + + if (start < 0) { + start += len; + if (start < 0) start = 0; + } else if (start > len) { + start = len; + } + + if (end < 0) { + end += len; + if (end < 0) end = 0; + } else if (end > len) { + end = len; + } + + if (end < start) end = start; + + const newBuf = this.subarray(start, end); + // Return an augmented `Uint8Array` instance + Object.setPrototypeOf(newBuf, Buffer.prototype); + + return newBuf +}; + +/* + * Need to make sure that buffer isn't trying to write out of bounds. + */ +function checkOffset (offset, ext, length) { + if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') +} + +Buffer.prototype.readUintLE = +Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { + offset = offset >>> 0; + byteLength = byteLength >>> 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + let val = this[offset]; + let mul = 1; + let i = 0; + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul; + } + + return val +}; + +Buffer.prototype.readUintBE = +Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { + offset = offset >>> 0; + byteLength = byteLength >>> 0; + if (!noAssert) { + checkOffset(offset, byteLength, this.length); + } + + let val = this[offset + --byteLength]; + let mul = 1; + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul; + } + + return val +}; + +Buffer.prototype.readUint8 = +Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 1, this.length); + return this[offset] +}; + +Buffer.prototype.readUint16LE = +Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 2, this.length); + return this[offset] | (this[offset + 1] << 8) +}; + +Buffer.prototype.readUint16BE = +Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 2, this.length); + return (this[offset] << 8) | this[offset + 1] +}; + +Buffer.prototype.readUint32LE = +Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 4, this.length); + + return ((this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16)) + + (this[offset + 3] * 0x1000000) +}; + +Buffer.prototype.readUint32BE = +Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 4, this.length); + + return (this[offset] * 0x1000000) + + ((this[offset + 1] << 16) | + (this[offset + 2] << 8) | + this[offset + 3]) +}; + +Buffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) { + offset = offset >>> 0; + validateNumber(offset, 'offset'); + const first = this[offset]; + const last = this[offset + 7]; + if (first === undefined || last === undefined) { + boundsError(offset, this.length - 8); + } + + const lo = first + + this[++offset] * 2 ** 8 + + this[++offset] * 2 ** 16 + + this[++offset] * 2 ** 24; + + const hi = this[++offset] + + this[++offset] * 2 ** 8 + + this[++offset] * 2 ** 16 + + last * 2 ** 24; + + return BigInt(lo) + (BigInt(hi) << BigInt(32)) +}); + +Buffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) { + offset = offset >>> 0; + validateNumber(offset, 'offset'); + const first = this[offset]; + const last = this[offset + 7]; + if (first === undefined || last === undefined) { + boundsError(offset, this.length - 8); + } + + const hi = first * 2 ** 24 + + this[++offset] * 2 ** 16 + + this[++offset] * 2 ** 8 + + this[++offset]; + + const lo = this[++offset] * 2 ** 24 + + this[++offset] * 2 ** 16 + + this[++offset] * 2 ** 8 + + last; + + return (BigInt(hi) << BigInt(32)) + BigInt(lo) +}); + +Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { + offset = offset >>> 0; + byteLength = byteLength >>> 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + let val = this[offset]; + let mul = 1; + let i = 0; + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul; + } + mul *= 0x80; + + if (val >= mul) val -= Math.pow(2, 8 * byteLength); + + return val +}; + +Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { + offset = offset >>> 0; + byteLength = byteLength >>> 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + let i = byteLength; + let mul = 1; + let val = this[offset + --i]; + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul; + } + mul *= 0x80; + + if (val >= mul) val -= Math.pow(2, 8 * byteLength); + + return val +}; + +Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 1, this.length); + if (!(this[offset] & 0x80)) return (this[offset]) + return ((0xff - this[offset] + 1) * -1) +}; + +Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 2, this.length); + const val = this[offset] | (this[offset + 1] << 8); + return (val & 0x8000) ? val | 0xFFFF0000 : val +}; + +Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 2, this.length); + const val = this[offset + 1] | (this[offset] << 8); + return (val & 0x8000) ? val | 0xFFFF0000 : val +}; + +Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 4, this.length); + + return (this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16) | + (this[offset + 3] << 24) +}; + +Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 4, this.length); + + return (this[offset] << 24) | + (this[offset + 1] << 16) | + (this[offset + 2] << 8) | + (this[offset + 3]) +}; + +Buffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) { + offset = offset >>> 0; + validateNumber(offset, 'offset'); + const first = this[offset]; + const last = this[offset + 7]; + if (first === undefined || last === undefined) { + boundsError(offset, this.length - 8); + } + + const val = this[offset + 4] + + this[offset + 5] * 2 ** 8 + + this[offset + 6] * 2 ** 16 + + (last << 24); // Overflow + + return (BigInt(val) << BigInt(32)) + + BigInt(first + + this[++offset] * 2 ** 8 + + this[++offset] * 2 ** 16 + + this[++offset] * 2 ** 24) +}); + +Buffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) { + offset = offset >>> 0; + validateNumber(offset, 'offset'); + const first = this[offset]; + const last = this[offset + 7]; + if (first === undefined || last === undefined) { + boundsError(offset, this.length - 8); + } + + const val = (first << 24) + // Overflow + this[++offset] * 2 ** 16 + + this[++offset] * 2 ** 8 + + this[++offset]; + + return (BigInt(val) << BigInt(32)) + + BigInt(this[++offset] * 2 ** 24 + + this[++offset] * 2 ** 16 + + this[++offset] * 2 ** 8 + + last) +}); + +Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 4, this.length); + return ieee754Exports.read(this, offset, true, 23, 4) +}; + +Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 4, this.length); + return ieee754Exports.read(this, offset, false, 23, 4) +}; + +Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 8, this.length); + return ieee754Exports.read(this, offset, true, 52, 8) +}; + +Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { + offset = offset >>> 0; + if (!noAssert) checkOffset(offset, 8, this.length); + return ieee754Exports.read(this, offset, false, 52, 8) +}; + +function checkInt (buf, value, offset, ext, max, min) { + if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') + if (offset + ext > buf.length) throw new RangeError('Index out of range') +} + +Buffer.prototype.writeUintLE = +Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset >>> 0; + byteLength = byteLength >>> 0; + if (!noAssert) { + const maxBytes = Math.pow(2, 8 * byteLength) - 1; + checkInt(this, value, offset, byteLength, maxBytes, 0); + } + + let mul = 1; + let i = 0; + this[offset] = value & 0xFF; + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF; + } + + return offset + byteLength +}; + +Buffer.prototype.writeUintBE = +Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset >>> 0; + byteLength = byteLength >>> 0; + if (!noAssert) { + const maxBytes = Math.pow(2, 8 * byteLength) - 1; + checkInt(this, value, offset, byteLength, maxBytes, 0); + } + + let i = byteLength - 1; + let mul = 1; + this[offset + i] = value & 0xFF; + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF; + } + + return offset + byteLength +}; + +Buffer.prototype.writeUint8 = +Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0); + this[offset] = (value & 0xff); + return offset + 1 +}; + +Buffer.prototype.writeUint16LE = +Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); + this[offset] = (value & 0xff); + this[offset + 1] = (value >>> 8); + return offset + 2 +}; + +Buffer.prototype.writeUint16BE = +Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); + this[offset] = (value >>> 8); + this[offset + 1] = (value & 0xff); + return offset + 2 +}; + +Buffer.prototype.writeUint32LE = +Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); + this[offset + 3] = (value >>> 24); + this[offset + 2] = (value >>> 16); + this[offset + 1] = (value >>> 8); + this[offset] = (value & 0xff); + return offset + 4 +}; + +Buffer.prototype.writeUint32BE = +Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); + this[offset] = (value >>> 24); + this[offset + 1] = (value >>> 16); + this[offset + 2] = (value >>> 8); + this[offset + 3] = (value & 0xff); + return offset + 4 +}; + +function wrtBigUInt64LE (buf, value, offset, min, max) { + checkIntBI(value, min, max, buf, offset, 7); + + let lo = Number(value & BigInt(0xffffffff)); + buf[offset++] = lo; + lo = lo >> 8; + buf[offset++] = lo; + lo = lo >> 8; + buf[offset++] = lo; + lo = lo >> 8; + buf[offset++] = lo; + let hi = Number(value >> BigInt(32) & BigInt(0xffffffff)); + buf[offset++] = hi; + hi = hi >> 8; + buf[offset++] = hi; + hi = hi >> 8; + buf[offset++] = hi; + hi = hi >> 8; + buf[offset++] = hi; + return offset +} + +function wrtBigUInt64BE (buf, value, offset, min, max) { + checkIntBI(value, min, max, buf, offset, 7); + + let lo = Number(value & BigInt(0xffffffff)); + buf[offset + 7] = lo; + lo = lo >> 8; + buf[offset + 6] = lo; + lo = lo >> 8; + buf[offset + 5] = lo; + lo = lo >> 8; + buf[offset + 4] = lo; + let hi = Number(value >> BigInt(32) & BigInt(0xffffffff)); + buf[offset + 3] = hi; + hi = hi >> 8; + buf[offset + 2] = hi; + hi = hi >> 8; + buf[offset + 1] = hi; + hi = hi >> 8; + buf[offset] = hi; + return offset + 8 +} + +Buffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) { + return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff')) +}); + +Buffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) { + return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff')) +}); + +Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) { + const limit = Math.pow(2, (8 * byteLength) - 1); + + checkInt(this, value, offset, byteLength, limit - 1, -limit); + } + + let i = 0; + let mul = 1; + let sub = 0; + this[offset] = value & 0xFF; + while (++i < byteLength && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1; + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF; + } + + return offset + byteLength +}; + +Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) { + const limit = Math.pow(2, (8 * byteLength) - 1); + + checkInt(this, value, offset, byteLength, limit - 1, -limit); + } + + let i = byteLength - 1; + let mul = 1; + let sub = 0; + this[offset + i] = value & 0xFF; + while (--i >= 0 && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1; + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF; + } + + return offset + byteLength +}; + +Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -128); + if (value < 0) value = 0xff + value + 1; + this[offset] = (value & 0xff); + return offset + 1 +}; + +Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -32768); + this[offset] = (value & 0xff); + this[offset + 1] = (value >>> 8); + return offset + 2 +}; + +Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -32768); + this[offset] = (value >>> 8); + this[offset + 1] = (value & 0xff); + return offset + 2 +}; + +Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -2147483648); + this[offset] = (value & 0xff); + this[offset + 1] = (value >>> 8); + this[offset + 2] = (value >>> 16); + this[offset + 3] = (value >>> 24); + return offset + 4 +}; + +Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -2147483648); + if (value < 0) value = 0xffffffff + value + 1; + this[offset] = (value >>> 24); + this[offset + 1] = (value >>> 16); + this[offset + 2] = (value >>> 8); + this[offset + 3] = (value & 0xff); + return offset + 4 +}; + +Buffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) { + return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff')) +}); + +Buffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) { + return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff')) +}); + +function checkIEEE754 (buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) throw new RangeError('Index out of range') + if (offset < 0) throw new RangeError('Index out of range') +} + +function writeFloat (buf, value, offset, littleEndian, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) { + checkIEEE754(buf, value, offset, 4); + } + ieee754Exports.write(buf, value, offset, littleEndian, 23, 4); + return offset + 4 +} + +Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert) +}; + +Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert) +}; + +function writeDouble (buf, value, offset, littleEndian, noAssert) { + value = +value; + offset = offset >>> 0; + if (!noAssert) { + checkIEEE754(buf, value, offset, 8); + } + ieee754Exports.write(buf, value, offset, littleEndian, 52, 8); + return offset + 8 +} + +Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert) +}; + +Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert) +}; + +// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) +Buffer.prototype.copy = function copy (target, targetStart, start, end) { + if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer') + if (!start) start = 0; + if (!end && end !== 0) end = this.length; + if (targetStart >= target.length) targetStart = target.length; + if (!targetStart) targetStart = 0; + if (end > 0 && end < start) end = start; + + // Copy 0 bytes; we're done + if (end === start) return 0 + if (target.length === 0 || this.length === 0) return 0 + + // Fatal error conditions + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds') + } + if (start < 0 || start >= this.length) throw new RangeError('Index out of range') + if (end < 0) throw new RangeError('sourceEnd out of bounds') + + // Are we oob? + if (end > this.length) end = this.length; + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start; + } + + const len = end - start; + + if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') { + // Use built-in when available, missing from IE11 + this.copyWithin(targetStart, start, end); + } else { + Uint8Array.prototype.set.call( + target, + this.subarray(start, end), + targetStart + ); + } + + return len +}; + +// Usage: +// buffer.fill(number[, offset[, end]]) +// buffer.fill(buffer[, offset[, end]]) +// buffer.fill(string[, offset[, end]][, encoding]) +Buffer.prototype.fill = function fill (val, start, end, encoding) { + // Handle string cases: + if (typeof val === 'string') { + if (typeof start === 'string') { + encoding = start; + start = 0; + end = this.length; + } else if (typeof end === 'string') { + encoding = end; + end = this.length; + } + if (encoding !== undefined && typeof encoding !== 'string') { + throw new TypeError('encoding must be a string') + } + if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + if (val.length === 1) { + const code = val.charCodeAt(0); + if ((encoding === 'utf8' && code < 128) || + encoding === 'latin1') { + // Fast path: If `val` fits into a single byte, use that numeric value. + val = code; + } + } + } else if (typeof val === 'number') { + val = val & 255; + } else if (typeof val === 'boolean') { + val = Number(val); + } + + // Invalid ranges are not set to a default, so can range check early. + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError('Out of range index') + } + + if (end <= start) { + return this + } + + start = start >>> 0; + end = end === undefined ? this.length : end >>> 0; + + if (!val) val = 0; + + let i; + if (typeof val === 'number') { + for (i = start; i < end; ++i) { + this[i] = val; + } + } else { + const bytes = Buffer.isBuffer(val) + ? val + : Buffer.from(val, encoding); + const len = bytes.length; + if (len === 0) { + throw new TypeError('The value "' + val + + '" is invalid for argument "value"') + } + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len]; + } + } + + return this +}; + +// CUSTOM ERRORS +// ============= + +// Simplified versions from Node, changed for Buffer-only usage +const errors$2 = {}; +function E (sym, getMessage, Base) { + errors$2[sym] = class NodeError extends Base { + constructor () { + super(); + + Object.defineProperty(this, 'message', { + value: getMessage.apply(this, arguments), + writable: true, + configurable: true + }); + + // Add the error code to the name to include it in the stack trace. + this.name = `${this.name} [${sym}]`; + // Access the stack to generate the error message including the error code + // from the name. + this.stack; // eslint-disable-line no-unused-expressions + // Reset the name to the actual name. + delete this.name; + } + + get code () { + return sym + } + + set code (value) { + Object.defineProperty(this, 'code', { + configurable: true, + enumerable: true, + value, + writable: true + }); + } + + toString () { + return `${this.name} [${sym}]: ${this.message}` + } + }; +} + +E('ERR_BUFFER_OUT_OF_BOUNDS', + function (name) { + if (name) { + return `${name} is outside of buffer bounds` + } + + return 'Attempt to access memory outside buffer bounds' + }, RangeError); +E('ERR_INVALID_ARG_TYPE', + function (name, actual) { + return `The "${name}" argument must be of type number. Received type ${typeof actual}` + }, TypeError); +E('ERR_OUT_OF_RANGE', + function (str, range, input) { + let msg = `The value of "${str}" is out of range.`; + let received = input; + if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) { + received = addNumericalSeparator(String(input)); + } else if (typeof input === 'bigint') { + received = String(input); + if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) { + received = addNumericalSeparator(received); + } + received += 'n'; + } + msg += ` It must be ${range}. Received ${received}`; + return msg + }, RangeError); + +function addNumericalSeparator (val) { + let res = ''; + let i = val.length; + const start = val[0] === '-' ? 1 : 0; + for (; i >= start + 4; i -= 3) { + res = `_${val.slice(i - 3, i)}${res}`; + } + return `${val.slice(0, i)}${res}` +} + +// CHECK FUNCTIONS +// =============== + +function checkBounds (buf, offset, byteLength) { + validateNumber(offset, 'offset'); + if (buf[offset] === undefined || buf[offset + byteLength] === undefined) { + boundsError(offset, buf.length - (byteLength + 1)); + } +} + +function checkIntBI (value, min, max, buf, offset, byteLength) { + if (value > max || value < min) { + const n = typeof min === 'bigint' ? 'n' : ''; + let range; + { + if (min === 0 || min === BigInt(0)) { + range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`; + } else { + range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` + + `${(byteLength + 1) * 8 - 1}${n}`; + } + } + throw new errors$2.ERR_OUT_OF_RANGE('value', range, value) + } + checkBounds(buf, offset, byteLength); +} + +function validateNumber (value, name) { + if (typeof value !== 'number') { + throw new errors$2.ERR_INVALID_ARG_TYPE(name, 'number', value) + } +} + +function boundsError (value, length, type) { + if (Math.floor(value) !== value) { + validateNumber(value, type); + throw new errors$2.ERR_OUT_OF_RANGE('offset', 'an integer', value) + } + + if (length < 0) { + throw new errors$2.ERR_BUFFER_OUT_OF_BOUNDS() + } + + throw new errors$2.ERR_OUT_OF_RANGE('offset', + `>= ${0} and <= ${length}`, + value) +} + +// HELPER FUNCTIONS +// ================ + +const INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g; + +function base64clean (str) { + // Node takes equal signs as end of the Base64 encoding + str = str.split('=')[0]; + // Node strips out invalid characters like \n and \t from the string, base64-js does not + str = str.trim().replace(INVALID_BASE64_RE, ''); + // Node converts strings with length < 2 to '' + if (str.length < 2) return '' + // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not + while (str.length % 4 !== 0) { + str = str + '='; + } + return str +} + +function utf8ToBytes (string, units) { + units = units || Infinity; + let codePoint; + const length = string.length; + let leadSurrogate = null; + const bytes = []; + + for (let i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i); + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + continue + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + continue + } + + // valid lead + leadSurrogate = codePoint; + + continue + } + + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + leadSurrogate = codePoint; + continue + } + + // valid surrogate pair + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000; + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + } + + leadSurrogate = null; + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break + bytes.push(codePoint); + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break + bytes.push( + codePoint >> 0x6 | 0xC0, + codePoint & 0x3F | 0x80 + ); + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break + bytes.push( + codePoint >> 0xC | 0xE0, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ); + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break + bytes.push( + codePoint >> 0x12 | 0xF0, + codePoint >> 0xC & 0x3F | 0x80, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ); + } else { + throw new Error('Invalid code point') + } + } + + return bytes +} + +function asciiToBytes (str) { + const byteArray = []; + for (let i = 0; i < str.length; ++i) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF); + } + return byteArray +} + +function utf16leToBytes (str, units) { + let c, hi, lo; + const byteArray = []; + for (let i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) break + + c = str.charCodeAt(i); + hi = c >> 8; + lo = c % 256; + byteArray.push(lo); + byteArray.push(hi); + } + + return byteArray +} + +function base64ToBytes (str) { + return base64JsExports.toByteArray(base64clean(str)) +} + +function blitBuffer (src, dst, offset, length) { + let i; + for (i = 0; i < length; ++i) { + if ((i + offset >= dst.length) || (i >= src.length)) break + dst[i + offset] = src[i]; + } + return i +} + +// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass +// the `instanceof` check but they should be treated as of that type. +// See: https://github.com/feross/buffer/issues/166 +function isInstance (obj, type) { + return obj instanceof type || + (obj != null && obj.constructor != null && obj.constructor.name != null && + obj.constructor.name === type.name) +} +function numberIsNaN (obj) { + // For IE11 support + return obj !== obj // eslint-disable-line no-self-compare +} + +// Create lookup table for `toString('hex')` +// See: https://github.com/feross/buffer/issues/219 +const hexSliceLookupTable = (function () { + const alphabet = '0123456789abcdef'; + const table = new Array(256); + for (let i = 0; i < 16; ++i) { + const i16 = i * 16; + for (let j = 0; j < 16; ++j) { + table[i16 + j] = alphabet[i] + alphabet[j]; + } + } + return table +})(); + +// Return not function with Error if BigInt not supported +function defineBigIntMethod (fn) { + return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn +} + +function BufferBigIntNotDefined () { + throw new Error('BigInt not supported') +} + +var buffer = /*#__PURE__*/Object.freeze({ + __proto__: null, + Buffer: Buffer, + INSPECT_MAX_BYTES: INSPECT_MAX_BYTES, + SlowBuffer: SlowBuffer, + kMaxLength: kMaxLength +}); + +var require$$0$1 = /*@__PURE__*/getAugmentedNamespace(buffer); + +var hasRequiredBuffer$1; + +function requireBuffer$1 () { + if (hasRequiredBuffer$1) return buffer$1; + hasRequiredBuffer$1 = 1; + (function (exports$1) { + Object.defineProperty(exports$1, "__esModule", { value: true }); + exports$1.Buffer = void 0; + var node_buffer_1 = require$$0$1; + Object.defineProperty(exports$1, "Buffer", { enumerable: true, get: function () { return node_buffer_1.Buffer; } }); + + } (buffer$1)); + return buffer$1; +} + +var hasRequiredBuffer; + +function requireBuffer () { + if (hasRequiredBuffer) return buffer$2; + hasRequiredBuffer = 1; + (function (exports$1) { + Object.defineProperty(exports$1, "__esModule", { value: true }); + exports$1.bufferFrom = exports$1.bufferAllocUnsafe = exports$1.Buffer = void 0; + const buffer_1 = requireBuffer$1(); + Object.defineProperty(exports$1, "Buffer", { enumerable: true, get: function () { return buffer_1.Buffer; } }); + function bufferV0P12Ponyfill(arg0, ...args) { + return new buffer_1.Buffer(arg0, ...args); + } + const bufferAllocUnsafe = buffer_1.Buffer.allocUnsafe || bufferV0P12Ponyfill; + exports$1.bufferAllocUnsafe = bufferAllocUnsafe; + const bufferFrom = buffer_1.Buffer.from || bufferV0P12Ponyfill; + exports$1.bufferFrom = bufferFrom; + + } (buffer$2)); + return buffer$2; +} + +var hasRequiredJson$1; + +function requireJson$1 () { + if (hasRequiredJson$1) return json$1; + hasRequiredJson$1 = 1; + Object.defineProperty(json$1, "__esModule", { value: true }); + json$1.flattenJSON = void 0; + const buffer_1 = requireBuffer(); + const path_1 = requirePath$1(); + const pathJoin = path_1.posix ? path_1.posix.join : path_1.join; + const flattenJSON = (nestedJSON) => { + const flatJSON = {}; + function flatten(pathPrefix, node) { + for (const path in node) { + const contentOrNode = node[path]; + // TODO: Can we avoid using `join` here? Just concatenate? + const joinedPath = pathJoin(pathPrefix, path); + if (typeof contentOrNode === 'string' || contentOrNode instanceof buffer_1.Buffer) { + flatJSON[joinedPath] = contentOrNode; + } + else if (typeof contentOrNode === 'object' && + contentOrNode !== null && + !(contentOrNode instanceof buffer_1.Buffer) && + Object.keys(contentOrNode).length > 0) { + // empty directories need an explicit entry and therefore get handled in `else`, non-empty ones are implicitly considered + flatten(joinedPath, contentOrNode); + } + else { + // without this branch null, empty-object or non-object entries would not be handled in the same way + // by both fromJSON() and fromNestedJSON() + flatJSON[joinedPath] = null; + } + } + } + flatten('', nestedJSON); + return flatJSON; + }; + json$1.flattenJSON = flattenJSON; + + return json$1; +} + +var constants$3 = {}; + +var hasRequiredConstants$3; + +function requireConstants$3 () { + if (hasRequiredConstants$3) return constants$3; + hasRequiredConstants$3 = 1; + Object.defineProperty(constants$3, "__esModule", { value: true }); + + return constants$3; +} + +var result = {}; + +var hasRequiredResult; + +function requireResult () { + if (hasRequiredResult) return result; + hasRequiredResult = 1; + Object.defineProperty(result, "__esModule", { value: true }); + result.Ok = Ok; + result.Err = Err; + function Ok(value) { + return { ok: true, value }; + } + function Err(err) { + return { ok: false, err }; + } + + return result; +} + +var Node = {}; + +var fanout = {}; + +var hasRequiredFanout; + +function requireFanout () { + if (hasRequiredFanout) return fanout; + hasRequiredFanout = 1; + Object.defineProperty(fanout, "__esModule", { value: true }); + fanout.FanOut = void 0; + class FanOut { + constructor() { + this.listeners = new Set(); + } + emit(data) { + this.listeners.forEach((listener) => listener(data)); + } + listen(listener) { + const listeners = this.listeners; + listeners.add(listener); + return () => listeners.delete(listener); + } + } + fanout.FanOut = FanOut; + return fanout; +} + +var process = {}; + +var hasRequiredProcess; + +function requireProcess () { + if (hasRequiredProcess) return process; + hasRequiredProcess = 1; + // Here we mock the undefined `process` variable in case we are not in Node's environment. + Object.defineProperty(process, "__esModule", { value: true }); + process.createProcess = createProcess; + /** + * Looks to return a `process` object, if one is available. + * + * The undefined `process` is returned if defined; + * otherwise `require('process')` is attempted. + * + * If that fails, `undefined` is returned. + * + * @return {IProcess | undefined} + */ + const maybeReturnProcess = () => { + if (typeof process$1 !== 'undefined') { + return process$1; + } + try { + return requireBrowser$2(); + } + catch { + return undefined; + } + }; + function createProcess() { + const p = maybeReturnProcess() || {}; + if (!p.cwd) + p.cwd = () => '/'; + if (!p.emitWarning) + p.emitWarning = (message, type) => { + // tslint:disable-next-line:no-console + console.warn(`${type}${type ? ': ' : ''}${message}`); + }; + if (!p.env) + p.env = {}; + return p; + } + process.default = createProcess(); + + return process; +} + +var lib$5 = {}; + +var types = {}; + +var hasRequiredTypes; + +function requireTypes () { + if (hasRequiredTypes) return types; + hasRequiredTypes = 1; + Object.defineProperty(types, "__esModule", { value: true }); + + return types; +} + +var constants$2 = {}; + +var hasRequiredConstants$2; + +function requireConstants$2 () { + if (hasRequiredConstants$2) return constants$2; + hasRequiredConstants$2 = 1; + (function (exports$1) { + Object.defineProperty(exports$1, "__esModule", { value: true }); + exports$1.FLAGS = exports$1.ERRSTR = exports$1.constants = exports$1.SEP = void 0; + exports$1.SEP = '/'; + exports$1.constants = { + O_RDONLY: 0, + O_WRONLY: 1, + O_RDWR: 2, + S_IFMT: 61440, + S_IFREG: 32768, + S_IFDIR: 16384, + S_IFCHR: 8192, + S_IFBLK: 24576, + S_IFIFO: 4096, + S_IFLNK: 40960, + S_IFSOCK: 49152, + O_CREAT: 64, + O_EXCL: 128, + O_NOCTTY: 256, + O_TRUNC: 512, + O_APPEND: 1024, + O_DIRECTORY: 65536, + O_NOATIME: 262144, + O_NOFOLLOW: 131072, + O_SYNC: 1052672, + O_SYMLINK: 2097152, + O_DIRECT: 16384, + O_NONBLOCK: 2048, + S_IRWXU: 448, + S_IRUSR: 256, + S_IWUSR: 128, + S_IXUSR: 64, + S_IRWXG: 56, + S_IRGRP: 32, + S_IWGRP: 16, + S_IXGRP: 8, + S_IRWXO: 7, + S_IROTH: 4, + S_IWOTH: 2, + S_IXOTH: 1, + F_OK: 0, + R_OK: 4, + W_OK: 2, + X_OK: 1, + UV_FS_SYMLINK_DIR: 1, + UV_FS_SYMLINK_JUNCTION: 2, + UV_FS_COPYFILE_EXCL: 1, + UV_FS_COPYFILE_FICLONE: 2, + UV_FS_COPYFILE_FICLONE_FORCE: 4, + COPYFILE_EXCL: 1, + COPYFILE_FICLONE: 2, + COPYFILE_FICLONE_FORCE: 4, + }; + exports$1.ERRSTR = { + PATH_STR: 'path must be a string, Buffer, or Uint8Array', + // FD: 'file descriptor must be a unsigned 32-bit integer', + FD: 'fd must be a file descriptor', + MODE_INT: 'mode must be an int', + CB: 'callback must be a function', + UID: 'uid must be an unsigned int', + GID: 'gid must be an unsigned int', + LEN: 'len must be an integer', + ATIME: 'atime must be an integer', + MTIME: 'mtime must be an integer', + PREFIX: 'filename prefix is required', + BUFFER: 'buffer must be an instance of Buffer or StaticBuffer', + OFFSET: 'offset must be an integer', + LENGTH: 'length must be an integer', + POSITION: 'position must be an integer', + }; + const { O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_EXCL, O_TRUNC, O_APPEND, O_SYNC } = exports$1.constants; + // List of file `flags` as defined by Node. + var FLAGS; + (function (FLAGS) { + // Open file for reading. An exception occurs if the file does not exist. + FLAGS[FLAGS["r"] = O_RDONLY] = "r"; + // Open file for reading and writing. An exception occurs if the file does not exist. + FLAGS[FLAGS["r+"] = O_RDWR] = "r+"; + // Open file for reading in synchronous mode. Instructs the operating system to bypass the local file system cache. + FLAGS[FLAGS["rs"] = O_RDONLY | O_SYNC] = "rs"; + FLAGS[FLAGS["sr"] = FLAGS.rs] = "sr"; + // Open file for reading and writing, telling the OS to open it synchronously. See notes for 'rs' about using this with caution. + FLAGS[FLAGS["rs+"] = O_RDWR | O_SYNC] = "rs+"; + FLAGS[FLAGS["sr+"] = FLAGS['rs+']] = "sr+"; + // Open file for writing. The file is created (if it does not exist) or truncated (if it exists). + FLAGS[FLAGS["w"] = O_WRONLY | O_CREAT | O_TRUNC] = "w"; + // Like 'w' but fails if path exists. + FLAGS[FLAGS["wx"] = O_WRONLY | O_CREAT | O_TRUNC | O_EXCL] = "wx"; + FLAGS[FLAGS["xw"] = FLAGS.wx] = "xw"; + // Open file for reading and writing. The file is created (if it does not exist) or truncated (if it exists). + FLAGS[FLAGS["w+"] = O_RDWR | O_CREAT | O_TRUNC] = "w+"; + // Like 'w+' but fails if path exists. + FLAGS[FLAGS["wx+"] = O_RDWR | O_CREAT | O_TRUNC | O_EXCL] = "wx+"; + FLAGS[FLAGS["xw+"] = FLAGS['wx+']] = "xw+"; + // Open file for appending. The file is created if it does not exist. + FLAGS[FLAGS["a"] = O_WRONLY | O_APPEND | O_CREAT] = "a"; + // Like 'a' but fails if path exists. + FLAGS[FLAGS["ax"] = O_WRONLY | O_APPEND | O_CREAT | O_EXCL] = "ax"; + FLAGS[FLAGS["xa"] = FLAGS.ax] = "xa"; + // Open file for reading and appending. The file is created if it does not exist. + FLAGS[FLAGS["a+"] = O_RDWR | O_APPEND | O_CREAT] = "a+"; + // Like 'a+' but fails if path exists. + FLAGS[FLAGS["ax+"] = O_RDWR | O_APPEND | O_CREAT | O_EXCL] = "ax+"; + FLAGS[FLAGS["xa+"] = FLAGS['ax+']] = "xa+"; + })(FLAGS || (exports$1.FLAGS = FLAGS = {})); + + } (constants$2)); + return constants$2; +} + +var AMODE = {}; + +var hasRequiredAMODE; + +function requireAMODE () { + if (hasRequiredAMODE) return AMODE; + hasRequiredAMODE = 1; + Object.defineProperty(AMODE, "__esModule", { value: true }); + + return AMODE; +} + +var FLAG = {}; + +var hasRequiredFLAG; + +function requireFLAG () { + if (hasRequiredFLAG) return FLAG; + hasRequiredFLAG = 1; + Object.defineProperty(FLAG, "__esModule", { value: true }); + FLAG.FLAG = void 0; + /** + * Constants used in `open` system calls, see [open(2)](http://man7.org/linux/man-pages/man2/open.2.html). + * + * These constants are compatible with Node.js fs constants and can be used with both + * memfs and native Node.js fs.promises.open(). + * + * @see http://man7.org/linux/man-pages/man2/open.2.html + * @see https://www.gnu.org/software/libc/manual/html_node/Open_002dtime-Flags.html + */ + var FLAG$1; + (function (FLAG) { + FLAG[FLAG["O_RDONLY"] = 0] = "O_RDONLY"; + FLAG[FLAG["O_WRONLY"] = 1] = "O_WRONLY"; + FLAG[FLAG["O_RDWR"] = 2] = "O_RDWR"; + FLAG[FLAG["O_ACCMODE"] = 3] = "O_ACCMODE"; + FLAG[FLAG["O_CREAT"] = 64] = "O_CREAT"; + FLAG[FLAG["O_EXCL"] = 128] = "O_EXCL"; + FLAG[FLAG["O_NOCTTY"] = 256] = "O_NOCTTY"; + FLAG[FLAG["O_TRUNC"] = 512] = "O_TRUNC"; + FLAG[FLAG["O_APPEND"] = 1024] = "O_APPEND"; + FLAG[FLAG["O_NONBLOCK"] = 2048] = "O_NONBLOCK"; + FLAG[FLAG["O_DSYNC"] = 4096] = "O_DSYNC"; + FLAG[FLAG["FASYNC"] = 8192] = "FASYNC"; + FLAG[FLAG["O_DIRECT"] = 16384] = "O_DIRECT"; + FLAG[FLAG["O_LARGEFILE"] = 0] = "O_LARGEFILE"; + FLAG[FLAG["O_DIRECTORY"] = 65536] = "O_DIRECTORY"; + FLAG[FLAG["O_NOFOLLOW"] = 131072] = "O_NOFOLLOW"; + FLAG[FLAG["O_NOATIME"] = 262144] = "O_NOATIME"; + FLAG[FLAG["O_CLOEXEC"] = 524288] = "O_CLOEXEC"; + FLAG[FLAG["O_SYNC"] = 1052672] = "O_SYNC"; + FLAG[FLAG["O_NDELAY"] = 2048] = "O_NDELAY"; + })(FLAG$1 || (FLAG.FLAG = FLAG$1 = {})); + + return FLAG; +} + +var path = {}; + +var hasRequiredPath; + +function requirePath () { + if (hasRequiredPath) return path; + hasRequiredPath = 1; + Object.defineProperty(path, "__esModule", { value: true }); + path.basename = void 0; + const basename = (path, separator) => { + if (path[path.length - 1] === separator) + path = path.slice(0, -1); + const lastSlashIndex = path.lastIndexOf(separator); + return lastSlashIndex === -1 ? path : path.slice(lastSlashIndex + 1); + }; + path.basename = basename; + + return path; +} + +var encoding$1 = {}; + +var errors$1 = {}; + +var util$4 = {}; + +var hasRequiredUtil$4; + +function requireUtil$4 () { + if (hasRequiredUtil$4) return util$4; + hasRequiredUtil$4 = 1; + Object.defineProperty(util$4, "__esModule", { value: true }); + util$4.inherits = inherits; + util$4.promisify = promisify; + util$4.inspect = inspect; + util$4.format = format; + /** + * Minimal implementation of Node.js util.inherits function. + * Sets up prototype inheritance between constructor functions. + */ + function inherits(ctor, superCtor) { + if (ctor === undefined || ctor === null) { + throw new TypeError('The constructor to inherit from is not defined'); + } + if (superCtor === undefined || superCtor === null) { + throw new TypeError('The super constructor to inherit from is not defined'); + } + ctor.super_ = superCtor; + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true, + }, + }); + } + /** + * Minimal implementation of Node.js util.promisify function. + * Converts callback-based functions to Promise-based functions. + */ + function promisify(fn) { + if (typeof fn !== 'function') { + throw new TypeError('The "original" argument must be of type function'); + } + return function (...args) { + return new Promise((resolve, reject) => { + fn.call(this, ...args, (err, result) => { + if (err) { + reject(err); + } + else { + resolve(result); + } + }); + }); + }; + } + /** + * Minimal implementation of Node.js util.inspect function. + * Converts a value to a string representation for debugging. + */ + function inspect(value) { + if (value === null) + return 'null'; + if (value === undefined) + return 'undefined'; + if (typeof value === 'string') + return `'${value}'`; + if (typeof value === 'number' || typeof value === 'boolean') + return String(value); + if (Array.isArray(value)) { + const items = value.map(item => inspect(item)).join(', '); + return `[ ${items} ]`; + } + if (typeof value === 'object') { + const entries = Object.entries(value) + .map(([key, val]) => `${key}: ${inspect(val)}`) + .join(', '); + return `{ ${entries} }`; + } + return String(value); + } + /** + * Minimal implementation of Node.js util.format function. + * Provides printf-style string formatting with basic placeholder support. + */ + function format(template, ...args) { + if (args.length === 0) + return template; + let result = template; + let argIndex = 0; + // Replace %s (string), %d (number), %j (JSON) placeholders + result = result.replace(/%[sdj%]/g, match => { + if (argIndex >= args.length) + return match; + const arg = args[argIndex++]; + switch (match) { + case '%s': + return String(arg); + case '%d': + return Number(arg).toString(); + case '%j': + try { + return JSON.stringify(arg); + } + catch { + return '[Circular]'; + } + case '%%': + return '%'; + default: + return match; + } + }); + // Append remaining arguments + while (argIndex < args.length) { + result += ' ' + String(args[argIndex++]); + } + return result; + } + + return util$4; +} + +var hasRequiredErrors$1; + +function requireErrors$1 () { + if (hasRequiredErrors$1) return errors$1; + hasRequiredErrors$1 = 1; + (function (exports$1) { + // Adapted from Node.js ../internal/errors.js, used for throwing similar errors to Node.js. + Object.defineProperty(exports$1, "__esModule", { value: true }); + exports$1.AssertionError = exports$1.RangeError = exports$1.TypeError = exports$1.Error = void 0; + exports$1.message = message; + exports$1.E = E; + const util_1 = requireUtil$4(); + const kCode = typeof Symbol === 'undefined' ? '_kCode' : Symbol('code'); + const messages = {}; + function makeNodeError(Base) { + return class NodeError extends Base { + constructor(key, ...args) { + super(message(key, args)); + this.code = key; + this[kCode] = key; + this.name = `${super.name} [${this[kCode]}]`; + } + }; + } + const g = typeof globalThis !== 'undefined' ? globalThis : commonjsGlobal; + class AssertionError extends g.Error { + constructor(options) { + if (typeof options !== 'object' || options === null) { + throw new exports$1.TypeError('ERR_INVALID_ARG_TYPE', 'options', 'object'); + } + if (options.message) { + super(options.message); + } + else { + super(`${(0, util_1.inspect)(options.actual).slice(0, 128)} ` + `${options.operator} ${(0, util_1.inspect)(options.expected).slice(0, 128)}`); + } + this.generatedMessage = !options.message; + this.name = 'AssertionError [ERR_ASSERTION]'; + this.code = 'ERR_ASSERTION'; + this.actual = options.actual; + this.expected = options.expected; + this.operator = options.operator; + exports$1.Error.captureStackTrace(this, options.stackStartFunction); + } + } + exports$1.AssertionError = AssertionError; + function message(key, args) { + if (typeof key !== 'string') + throw new exports$1.Error('Error message key must be a string'); + const msg = messages[key]; + if (!msg) + throw new exports$1.Error(`An invalid error message key was used: ${key}.`); + let fmt; + if (typeof msg === 'function') { + fmt = msg; + } + else { + fmt = util_1.format; + if (args === undefined || args.length === 0) + return msg; + args.unshift(msg); + } + return String(fmt.apply(null, args)); + } + // Utility function for registering the error codes. Only used here. Exported + // *only* to allow for testing. + function E(sym, val) { + messages[sym] = typeof val === 'function' ? val : String(val); + } + exports$1.Error = makeNodeError(g.Error); + exports$1.TypeError = makeNodeError(g.TypeError); + exports$1.RangeError = makeNodeError(g.RangeError); + E('ERR_DIR_CLOSED', 'Directory handle was closed'); + E('ERR_DIR_CONCURRENT_OPERATION', 'Cannot do synchronous work on directory handle with concurrent asynchronous operations'); + E('ERR_INVALID_FILE_URL_HOST', 'File URL host must be "localhost" or empty on %s'); + E('ERR_INVALID_FILE_URL_PATH', 'File URL path %s'); + E('ERR_INVALID_OPT_VALUE', (name, value) => { + return `The value "${String(value)}" is invalid for option "${name}"`; + }); + E('ERR_INVALID_OPT_VALUE_ENCODING', value => `The value "${String(value)}" is invalid for option "encoding"`); + E('ERR_INVALID_ARG_VALUE', 'Unable to open file as blob'); + + } (errors$1)); + return errors$1; +} + +var hasRequiredEncoding$1; + +function requireEncoding$1 () { + if (hasRequiredEncoding$1) return encoding$1; + hasRequiredEncoding$1 = 1; + (function (exports$1) { + Object.defineProperty(exports$1, "__esModule", { value: true }); + exports$1.ENCODING_UTF8 = void 0; + exports$1.assertEncoding = assertEncoding; + exports$1.strToEncoding = strToEncoding; + const buffer_1 = requireBuffer(); + const errors = requireErrors$1(); + exports$1.ENCODING_UTF8 = 'utf8'; + function assertEncoding(encoding) { + if (encoding && !buffer_1.Buffer.isEncoding(encoding)) + throw new errors.TypeError('ERR_INVALID_OPT_VALUE_ENCODING', encoding); + } + function strToEncoding(str, encoding) { + if (!encoding || encoding === exports$1.ENCODING_UTF8) + return str; // UTF-8 + if (encoding === 'buffer') + return new buffer_1.Buffer(str); // `buffer` encoding + return new buffer_1.Buffer(str).toString(encoding); // Custom encoding + } + + } (encoding$1)); + return encoding$1; +} + +var hasRequiredLib$8; + +function requireLib$8 () { + if (hasRequiredLib$8) return lib$5; + hasRequiredLib$8 = 1; + (function (exports$1) { + Object.defineProperty(exports$1, "__esModule", { value: true }); + const tslib_1 = require$$0$2; + tslib_1.__exportStar(requireTypes(), exports$1); + tslib_1.__exportStar(requireConstants$2(), exports$1); + tslib_1.__exportStar(requireAMODE(), exports$1); + tslib_1.__exportStar(requireFLAG(), exports$1); + tslib_1.__exportStar(requirePath(), exports$1); + tslib_1.__exportStar(requireEncoding$1(), exports$1); + + } (lib$5)); + return lib$5; +} + +var hasRequiredNode; + +function requireNode () { + if (hasRequiredNode) return Node; + hasRequiredNode = 1; + Object.defineProperty(Node, "__esModule", { value: true }); + Node.Node = void 0; + const fanout_1 = requireFanout(); + const process_1 = requireProcess(); + const buffer_1 = requireBuffer(); + const fs_node_utils_1 = requireLib$8(); + const { S_IFMT, S_IFDIR, S_IFREG, S_IFLNK, S_IFCHR } = fs_node_utils_1.constants; + const getuid = () => process_1.default.getuid?.() ?? 0; + const getgid = () => process_1.default.getgid?.() ?? 0; + const EMPTY_BUFFER = (0, buffer_1.bufferAllocUnsafe)(0); + /** + * Node in a file system (like i-node, v-node). + */ + let Node$1 = class Node { + constructor(ino, mode = 0o666, uid = getuid(), gid = getgid()) { + this.changes = new fanout_1.FanOut(); + // User ID and group ID. + this._uid = getuid(); + this._gid = getgid(); + this._atime = new Date(); + this._mtime = new Date(); + this._ctime = new Date(); + this.buf = EMPTY_BUFFER; + /** Total allocated memory capacity for this node. */ + this.capacity = 0; + /** Actually used bytes to store content. */ + this.size = 0; + this.rdev = 0; + // Number of hard links pointing at this Node. + this._nlink = 1; + this.mode = mode; + this.ino = ino; + this._uid = uid; + this._gid = gid; + } + set ctime(ctime) { + this._ctime = ctime; + } + get ctime() { + return this._ctime; + } + set uid(uid) { + this._uid = uid; + this.ctime = new Date(); + } + get uid() { + return this._uid; + } + set gid(gid) { + this._gid = gid; + this.ctime = new Date(); + } + get gid() { + return this._gid; + } + set atime(atime) { + this._atime = atime; + } + get atime() { + return this._atime; + } + set mtime(mtime) { + this._mtime = mtime; + this.ctime = new Date(); + } + get mtime() { + return this._mtime; + } + get perm() { + return this.mode & ~S_IFMT; + } + set perm(perm) { + this.mode = (this.mode & S_IFMT) | (perm & ~S_IFMT); + this.ctime = new Date(); + } + set nlink(nlink) { + this._nlink = nlink; + this.ctime = new Date(); + } + get nlink() { + return this._nlink; + } + getString(encoding = 'utf8') { + this.atime = new Date(); + return this.getBuffer().toString(encoding); + } + setString(str) { + this._setBuf((0, buffer_1.bufferFrom)(str, 'utf8')); + } + getBuffer() { + this.atime = new Date(); + if (!this.buf) + this.buf = (0, buffer_1.bufferAllocUnsafe)(0); + return (0, buffer_1.bufferFrom)(this.buf.subarray(0, this.size)); // Return a copy of used portion. + } + setBuffer(buf) { + const copy = (0, buffer_1.bufferFrom)(buf); // Creates a copy of data. + this._setBuf(copy); + } + _setBuf(buf) { + const size = buf.length; + this.buf = buf; + this.capacity = size; + this.size = size; + this.touch(); + } + getSize() { + return this.size; + } + setModeProperty(property) { + this.mode = property; + } + isFile() { + return (this.mode & S_IFMT) === S_IFREG; + } + isDirectory() { + return (this.mode & S_IFMT) === S_IFDIR; + } + isSymlink() { + // return !!this.symlink; + return (this.mode & S_IFMT) === S_IFLNK; + } + isCharacterDevice() { + return (this.mode & S_IFMT) === S_IFCHR; + } + makeSymlink(symlink) { + this.mode = S_IFLNK | 0o666; + this.symlink = symlink; + } + write(buf, off = 0, len = buf.length, pos = 0) { + const bufLength = buf.length; + if (off + len > bufLength) + len = bufLength - off; + if (len <= 0) + return 0; + const requiredSize = pos + len; + if (requiredSize > this.capacity) { + let newCapacity = Math.max(this.capacity * 2, 64); + while (newCapacity < requiredSize) + newCapacity *= 2; + const newBuf = (0, buffer_1.bufferAllocUnsafe)(newCapacity); + if (this.size > 0) + this.buf.copy(newBuf, 0, 0, this.size); + this.buf = newBuf; + this.capacity = newCapacity; + } + if (pos > this.size) + this.buf.fill(0, this.size, pos); + buf.copy(this.buf, pos, off, off + len); + if (requiredSize > this.size) + this.size = requiredSize; + this.touch(); + return len; + } + /** + * Read data from the file. + * + * @param buf Buffer to read data into. + * @param off Offset int the `buf` where to start writing data. + * @param len How many bytes to read. Equals to `buf.byteLength` by default. + * @param pos Position offset in file where to start reading. Defaults to `0`. + * @returns Returns the number of bytes read. + */ + read(buf, off = 0, len = buf.byteLength, pos = 0) { + this.atime = new Date(); + if (pos >= this.size) + return 0; + let actualLen = len; + if (actualLen > buf.byteLength) + actualLen = buf.byteLength; + if (actualLen + pos > this.size) + actualLen = this.size - pos; + if (actualLen <= 0) + return 0; + const buf2 = buf instanceof buffer_1.Buffer ? buf : buffer_1.Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength); + this.buf.copy(buf2, off, pos, pos + actualLen); + return actualLen; + } + truncate(len = 0) { + if (!len) { + this.buf = EMPTY_BUFFER; + this.capacity = 0; + this.size = 0; + this.touch(); + return; + } + if (len <= this.size) + this.size = len; + else { + if (len > this.capacity) { + let newCapacity = Math.max(this.capacity * 2, 64); + while (newCapacity < len) + newCapacity *= 2; + const buf = (0, buffer_1.bufferAllocUnsafe)(newCapacity); + if (this.size > 0) + this.buf.copy(buf, 0, 0, this.size); + buf.fill(0, this.size, len); + this.buf = buf; + this.capacity = newCapacity; + } + else + this.buf.fill(0, this.size, len); + this.size = len; + } + this.touch(); + } + chmod(perm) { + this.mode = (this.mode & S_IFMT) | (perm & ~S_IFMT); + this.touch(); + } + chown(uid, gid) { + this.uid = uid; + this.gid = gid; + this.touch(); + } + touch() { + this.mtime = new Date(); + this.changes.emit(['modify']); + } + canRead(uid = getuid(), gid = getgid()) { + if (this.perm & 4 /* S.IROTH */) { + return true; + } + if (gid === this.gid) { + if (this.perm & 32 /* S.IRGRP */) { + return true; + } + } + if (uid === this.uid) { + if (this.perm & 256 /* S.IRUSR */) { + return true; + } + } + return false; + } + canWrite(uid = getuid(), gid = getgid()) { + if (this.perm & 2 /* S.IWOTH */) { + return true; + } + if (gid === this.gid) { + if (this.perm & 16 /* S.IWGRP */) { + return true; + } + } + if (uid === this.uid) { + if (this.perm & 128 /* S.IWUSR */) { + return true; + } + } + return false; + } + canExecute(uid = getuid(), gid = getgid()) { + if (this.perm & 1 /* S.IXOTH */) { + return true; + } + if (gid === this.gid) { + if (this.perm & 8 /* S.IXGRP */) { + return true; + } + } + if (uid === this.uid) { + if (this.perm & 64 /* S.IXUSR */) { + return true; + } + } + return false; + } + del() { + this.changes.emit(['delete']); + } + toJSON() { + return { + ino: this.ino, + uid: this.uid, + gid: this.gid, + atime: this.atime.getTime(), + mtime: this.mtime.getTime(), + ctime: this.ctime.getTime(), + perm: this.perm, + mode: this.mode, + nlink: this.nlink, + symlink: this.symlink, + data: this.getString(), + }; + } + }; + Node.Node = Node$1; + + return Node; +} + +var Link = {}; + +var hasRequiredLink; + +function requireLink () { + if (hasRequiredLink) return Link; + hasRequiredLink = 1; + Object.defineProperty(Link, "__esModule", { value: true }); + Link.Link = void 0; + const fs_node_utils_1 = requireLib$8(); + const fanout_1 = requireFanout(); + const { S_IFREG } = fs_node_utils_1.constants; + /** + * Represents a hard link that points to an i-node `node`. + */ + let Link$1 = class Link { + get steps() { + return this._steps; + } + // Recursively sync children steps, e.g. in case of dir rename + set steps(val) { + this._steps = val; + for (const [child, link] of this.children.entries()) { + if (child === '.' || child === '..') { + continue; + } + link?.syncSteps(); + } + } + constructor(vol, parent, name) { + this.changes = new fanout_1.FanOut(); + this.children = new Map(); + // Path to this node as Array: ['usr', 'bin', 'node']. + this._steps = []; + // "i-node" number of the node. + this.ino = 0; + // Number of children. + this.length = 0; + this.vol = vol; + this.parent = parent; + this.name = name; + this.syncSteps(); + } + setNode(node) { + this.node = node; + this.ino = node.ino; + } + getNode() { + return this.node; + } + createChild(name, node = this.vol.createNode(S_IFREG | 0o666)) { + const link = new Link(this.vol, this, name); + link.setNode(node); + if (node.isDirectory()) { + link.children.set('.', link); + link.getNode().nlink++; + } + this.setChild(name, link); + return link; + } + setChild(name, link = new Link(this.vol, this, name)) { + this.children.set(name, link); + link.parent = this; + this.length++; + const node = link.getNode(); + if (node.isDirectory()) { + link.children.set('..', this); + this.getNode().nlink++; + } + this.getNode().mtime = new Date(); + this.changes.emit(['child:add', link, this]); + return link; + } + deleteChild(link) { + const node = link.getNode(); + if (node.isDirectory()) { + link.children.delete('..'); + this.getNode().nlink--; + } + this.children.delete(link.getName()); + this.length--; + this.getNode().mtime = new Date(); + this.changes.emit(['child:del', link, this]); + } + getChild(name) { + this.getNode().atime = new Date(); + return this.children.get(name); + } + getPath() { + return this.steps.join("/" /* PATH.SEP */); + } + getParentPath() { + const parent = this.steps.slice(0, -1).join("/" /* PATH.SEP */); + return parent ? parent : "/" /* PATH.SEP */; + } + getName() { + return this.steps[this.steps.length - 1]; + } + toJSON() { + return { + steps: this.steps, + ino: this.ino, + children: Array.from(this.children.keys()), + }; + } + syncSteps() { + this.steps = this.parent ? this.parent.steps.concat([this.name]) : [this.name]; + } + }; + Link.Link = Link$1; + + return Link; +} + +var File = {}; + +var hasRequiredFile; + +function requireFile () { + if (hasRequiredFile) return File; + hasRequiredFile = 1; + Object.defineProperty(File, "__esModule", { value: true }); + File.File = void 0; + const fs_node_utils_1 = requireLib$8(); + const { O_APPEND } = fs_node_utils_1.constants; + /** + * Represents an open file (file descriptor) that points to a `Link` (Hard-link) and a `Node`. + * + * @todo Rename to `OpenFile`. + */ + let File$1 = class File { + /** + * Open a Link-Node pair. `node` is provided separately as that might be a different node + * rather the one `link` points to, because it might be a symlink. + * @param link + * @param node + * @param flags + * @param fd + */ + constructor(link, node, flags, fd) { + this.link = link; + this.node = node; + this.flags = flags; + this.fd = fd; + this.position = 0; + if (this.flags & O_APPEND) + this.position = this.getSize(); + } + getString(encoding = 'utf8') { + return this.node.getString(); + } + setString(str) { + this.node.setString(str); + } + getBuffer() { + return this.node.getBuffer(); + } + setBuffer(buf) { + this.node.setBuffer(buf); + } + getSize() { + return this.node.getSize(); + } + truncate(len) { + this.node.truncate(len); + } + seekTo(position) { + this.position = position; + } + write(buf, offset = 0, length = buf.length, position) { + if (typeof position !== 'number') + position = this.position; + const bytes = this.node.write(buf, offset, length, position); + this.position = position + bytes; + return bytes; + } + read(buf, offset = 0, length = buf.byteLength, position) { + if (typeof position !== 'number') + position = this.position; + const bytes = this.node.read(buf, offset, length, position); + this.position = position + bytes; + return bytes; + } + chmod(perm) { + this.node.chmod(perm); + } + chown(uid, gid) { + this.node.chown(uid, gid); + } + }; + File.File = File$1; + + return File; +} + +var Superblock = {}; + +var util$3 = {}; + +var encoding = {}; + +var hasRequiredEncoding; + +function requireEncoding () { + if (hasRequiredEncoding) return encoding; + hasRequiredEncoding = 1; + (function (exports$1) { + Object.defineProperty(exports$1, "__esModule", { value: true }); + exports$1.ENCODING_UTF8 = void 0; + exports$1.assertEncoding = assertEncoding; + exports$1.strToEncoding = strToEncoding; + const buffer_1 = requireBuffer(); + const errors = requireErrors$1(); + exports$1.ENCODING_UTF8 = 'utf8'; + function assertEncoding(encoding) { + if (encoding && !buffer_1.Buffer.isEncoding(encoding)) + throw new errors.TypeError('ERR_INVALID_OPT_VALUE_ENCODING', encoding); + } + function strToEncoding(str, encoding) { + if (!encoding || encoding === exports$1.ENCODING_UTF8) + return str; // UTF-8 + if (encoding === 'buffer') + return new buffer_1.Buffer(str); // `buffer` encoding + return new buffer_1.Buffer(str).toString(encoding); // Custom encoding + } + + } (encoding)); + return encoding; +} + +var url = {}; + +var punycode$1 = {exports: {}}; + +/*! https://mths.be/punycode v1.4.1 by @mathias */ +var punycode = punycode$1.exports; + +var hasRequiredPunycode; + +function requirePunycode () { + if (hasRequiredPunycode) return punycode$1.exports; + hasRequiredPunycode = 1; + (function (module, exports$1) { +(function(root) { + + /** Detect free variables */ + var freeExports = exports$1 && + !exports$1.nodeType && exports$1; + var freeModule = module && + !module.nodeType && module; + var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal; + if ( + freeGlobal.undefined === freeGlobal || + freeGlobal.window === freeGlobal || + freeGlobal.self === freeGlobal + ) { + root = freeGlobal; + } + + /** + * The `punycode` object. + * @name punycode + * @type Object + */ + var punycode, + + /** Highest positive signed 32-bit float value */ + maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 + + /** Bootstring parameters */ + base = 36, + tMin = 1, + tMax = 26, + skew = 38, + damp = 700, + initialBias = 72, + initialN = 128, // 0x80 + delimiter = '-', // '\x2D' + + /** Regular expressions */ + regexPunycode = /^xn--/, + regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars + regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators + + /** Error messages */ + errors = { + 'overflow': 'Overflow: input needs wider integers to process', + 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', + 'invalid-input': 'Invalid input' + }, + + /** Convenience shortcuts */ + baseMinusTMin = base - tMin, + floor = Math.floor, + stringFromCharCode = String.fromCharCode, + + /** Temporary variable */ + key; + + /*--------------------------------------------------------------------------*/ + + /** + * A generic error utility function. + * @private + * @param {String} type The error type. + * @returns {Error} Throws a `RangeError` with the applicable error message. + */ + function error(type) { + throw new RangeError(errors[type]); + } + + /** + * A generic `Array#map` utility function. + * @private + * @param {Array} array The array to iterate over. + * @param {Function} callback The function that gets called for every array + * item. + * @returns {Array} A new array of values returned by the callback function. + */ + function map(array, fn) { + var length = array.length; + var result = []; + while (length--) { + result[length] = fn(array[length]); + } + return result; + } + + /** + * A simple `Array#map`-like wrapper to work with domain name strings or email + * addresses. + * @private + * @param {String} domain The domain name or email address. + * @param {Function} callback The function that gets called for every + * character. + * @returns {Array} A new string of characters returned by the callback + * function. + */ + function mapDomain(string, fn) { + var parts = string.split('@'); + var result = ''; + if (parts.length > 1) { + // In email addresses, only the domain name should be punycoded. Leave + // the local part (i.e. everything up to `@`) intact. + result = parts[0] + '@'; + string = parts[1]; + } + // Avoid `split(regex)` for IE8 compatibility. See #17. + string = string.replace(regexSeparators, '\x2E'); + var labels = string.split('.'); + var encoded = map(labels, fn).join('.'); + return result + encoded; + } + + /** + * Creates an array containing the numeric code points of each Unicode + * character in the string. While JavaScript uses UCS-2 internally, + * this function will convert a pair of surrogate halves (each of which + * UCS-2 exposes as separate characters) into a single code point, + * matching UTF-16. + * @see `punycode.ucs2.encode` + * @see + * @memberOf punycode.ucs2 + * @name decode + * @param {String} string The Unicode input string (UCS-2). + * @returns {Array} The new array of code points. + */ + function ucs2decode(string) { + var output = [], + counter = 0, + length = string.length, + value, + extra; + while (counter < length) { + value = string.charCodeAt(counter++); + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + // high surrogate, and there is a next character + extra = string.charCodeAt(counter++); + if ((extra & 0xFC00) == 0xDC00) { // low surrogate + output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + // unmatched surrogate; only append this code unit, in case the next + // code unit is the high surrogate of a surrogate pair + output.push(value); + counter--; + } + } else { + output.push(value); + } + } + return output; + } + + /** + * Creates a string based on an array of numeric code points. + * @see `punycode.ucs2.decode` + * @memberOf punycode.ucs2 + * @name encode + * @param {Array} codePoints The array of numeric code points. + * @returns {String} The new Unicode string (UCS-2). + */ + function ucs2encode(array) { + return map(array, function(value) { + var output = ''; + if (value > 0xFFFF) { + value -= 0x10000; + output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); + value = 0xDC00 | value & 0x3FF; + } + output += stringFromCharCode(value); + return output; + }).join(''); + } + + /** + * Converts a basic code point into a digit/integer. + * @see `digitToBasic()` + * @private + * @param {Number} codePoint The basic numeric code point value. + * @returns {Number} The numeric value of a basic code point (for use in + * representing integers) in the range `0` to `base - 1`, or `base` if + * the code point does not represent a value. + */ + function basicToDigit(codePoint) { + if (codePoint - 48 < 10) { + return codePoint - 22; + } + if (codePoint - 65 < 26) { + return codePoint - 65; + } + if (codePoint - 97 < 26) { + return codePoint - 97; + } + return base; + } + + /** + * Converts a digit/integer into a basic code point. + * @see `basicToDigit()` + * @private + * @param {Number} digit The numeric value of a basic code point. + * @returns {Number} The basic code point whose value (when used for + * representing integers) is `digit`, which needs to be in the range + * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is + * used; else, the lowercase form is used. The behavior is undefined + * if `flag` is non-zero and `digit` has no uppercase form. + */ + function digitToBasic(digit, flag) { + // 0..25 map to ASCII a..z or A..Z + // 26..35 map to ASCII 0..9 + return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); + } + + /** + * Bias adaptation function as per section 3.4 of RFC 3492. + * https://tools.ietf.org/html/rfc3492#section-3.4 + * @private + */ + function adapt(delta, numPoints, firstTime) { + var k = 0; + delta = firstTime ? floor(delta / damp) : delta >> 1; + delta += floor(delta / numPoints); + for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { + delta = floor(delta / baseMinusTMin); + } + return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); + } + + /** + * Converts a Punycode string of ASCII-only symbols to a string of Unicode + * symbols. + * @memberOf punycode + * @param {String} input The Punycode string of ASCII-only symbols. + * @returns {String} The resulting string of Unicode symbols. + */ + function decode(input) { + // Don't use UCS-2 + var output = [], + inputLength = input.length, + out, + i = 0, + n = initialN, + bias = initialBias, + basic, + j, + index, + oldi, + w, + k, + digit, + t, + /** Cached calculation results */ + baseMinusT; + + // Handle the basic code points: let `basic` be the number of input code + // points before the last delimiter, or `0` if there is none, then copy + // the first basic code points to the output. + + basic = input.lastIndexOf(delimiter); + if (basic < 0) { + basic = 0; + } + + for (j = 0; j < basic; ++j) { + // if it's not a basic code point + if (input.charCodeAt(j) >= 0x80) { + error('not-basic'); + } + output.push(input.charCodeAt(j)); + } + + // Main decoding loop: start just after the last delimiter if any basic code + // points were copied; start at the beginning otherwise. + + for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { + + // `index` is the index of the next character to be consumed. + // Decode a generalized variable-length integer into `delta`, + // which gets added to `i`. The overflow checking is easier + // if we increase `i` as we go, then subtract off its starting + // value at the end to obtain `delta`. + for (oldi = i, w = 1, k = base; /* no condition */; k += base) { + + if (index >= inputLength) { + error('invalid-input'); + } + + digit = basicToDigit(input.charCodeAt(index++)); + + if (digit >= base || digit > floor((maxInt - i) / w)) { + error('overflow'); + } + + i += digit * w; + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + + if (digit < t) { + break; + } + + baseMinusT = base - t; + if (w > floor(maxInt / baseMinusT)) { + error('overflow'); + } + + w *= baseMinusT; + + } + + out = output.length + 1; + bias = adapt(i - oldi, out, oldi == 0); + + // `i` was supposed to wrap around from `out` to `0`, + // incrementing `n` each time, so we'll fix that now: + if (floor(i / out) > maxInt - n) { + error('overflow'); + } + + n += floor(i / out); + i %= out; + + // Insert `n` at position `i` of the output + output.splice(i++, 0, n); + + } + + return ucs2encode(output); + } + + /** + * Converts a string of Unicode symbols (e.g. a domain name label) to a + * Punycode string of ASCII-only symbols. + * @memberOf punycode + * @param {String} input The string of Unicode symbols. + * @returns {String} The resulting Punycode string of ASCII-only symbols. + */ + function encode(input) { + var n, + delta, + handledCPCount, + basicLength, + bias, + j, + m, + q, + k, + t, + currentValue, + output = [], + /** `inputLength` will hold the number of code points in `input`. */ + inputLength, + /** Cached calculation results */ + handledCPCountPlusOne, + baseMinusT, + qMinusT; + + // Convert the input in UCS-2 to Unicode + input = ucs2decode(input); + + // Cache the length + inputLength = input.length; + + // Initialize the state + n = initialN; + delta = 0; + bias = initialBias; + + // Handle the basic code points + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue < 0x80) { + output.push(stringFromCharCode(currentValue)); + } + } + + handledCPCount = basicLength = output.length; + + // `handledCPCount` is the number of code points that have been handled; + // `basicLength` is the number of basic code points. + + // Finish the basic string - if it is not empty - with a delimiter + if (basicLength) { + output.push(delimiter); + } + + // Main encoding loop: + while (handledCPCount < inputLength) { + + // All non-basic code points < n have been handled already. Find the next + // larger one: + for (m = maxInt, j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue >= n && currentValue < m) { + m = currentValue; + } + } + + // Increase `delta` enough to advance the decoder's state to , + // but guard against overflow + handledCPCountPlusOne = handledCPCount + 1; + if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { + error('overflow'); + } + + delta += (m - n) * handledCPCountPlusOne; + n = m; + + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + + if (currentValue < n && ++delta > maxInt) { + error('overflow'); + } + + if (currentValue == n) { + // Represent delta as a generalized variable-length integer + for (q = delta, k = base; /* no condition */; k += base) { + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + if (q < t) { + break; + } + qMinusT = q - t; + baseMinusT = base - t; + output.push( + stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) + ); + q = floor(qMinusT / baseMinusT); + } + + output.push(stringFromCharCode(digitToBasic(q, 0))); + bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); + delta = 0; + ++handledCPCount; + } + } + + ++delta; + ++n; + + } + return output.join(''); + } + + /** + * Converts a Punycode string representing a domain name or an email address + * to Unicode. Only the Punycoded parts of the input will be converted, i.e. + * it doesn't matter if you call it on a string that has already been + * converted to Unicode. + * @memberOf punycode + * @param {String} input The Punycoded domain name or email address to + * convert to Unicode. + * @returns {String} The Unicode representation of the given Punycode + * string. + */ + function toUnicode(input) { + return mapDomain(input, function(string) { + return regexPunycode.test(string) + ? decode(string.slice(4).toLowerCase()) + : string; + }); + } + + /** + * Converts a Unicode string representing a domain name or an email address to + * Punycode. Only the non-ASCII parts of the domain name will be converted, + * i.e. it doesn't matter if you call it with a domain that's already in + * ASCII. + * @memberOf punycode + * @param {String} input The domain name or email address to convert, as a + * Unicode string. + * @returns {String} The Punycode representation of the given domain name or + * email address. + */ + function toASCII(input) { + return mapDomain(input, function(string) { + return regexNonASCII.test(string) + ? 'xn--' + encode(string) + : string; + }); + } + + /*--------------------------------------------------------------------------*/ + + /** Define the public API */ + punycode = { + /** + * A string representing the current Punycode.js version number. + * @memberOf punycode + * @type String + */ + 'version': '1.4.1', + /** + * An object of methods to convert from JavaScript's internal character + * representation (UCS-2) to Unicode code points, and back. + * @see + * @memberOf punycode + * @type Object + */ + 'ucs2': { + 'decode': ucs2decode, + 'encode': ucs2encode + }, + 'decode': decode, + 'encode': encode, + 'toASCII': toASCII, + 'toUnicode': toUnicode + }; + + /** Expose `punycode` */ + // Some AMD build optimizers, like r.js, check for specific condition patterns + // like the following: + if (freeExports && freeModule) { + if (module.exports == freeExports) { + // in Node.js, io.js, or RingoJS v0.8.0+ + freeModule.exports = punycode; + } else { + // in Narwhal or RingoJS v0.7.0- + for (key in punycode) { + punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); + } + } + } else { + // in Rhino or a web browser + root.punycode = punycode; + } + + }(punycode)); + } (punycode$1, punycode$1.exports)); + return punycode$1.exports; +} + +var type; +var hasRequiredType; + +function requireType () { + if (hasRequiredType) return type; + hasRequiredType = 1; + + /** @type {import('./type')} */ + type = TypeError; + return type; +} + +var _nodeResolve_empty = {}; + +var _nodeResolve_empty$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + default: _nodeResolve_empty +}); + +var require$$0 = /*@__PURE__*/getAugmentedNamespace(_nodeResolve_empty$1); + +var objectInspect; +var hasRequiredObjectInspect; + +function requireObjectInspect () { + if (hasRequiredObjectInspect) return objectInspect; + hasRequiredObjectInspect = 1; + var hasMap = typeof Map === 'function' && Map.prototype; + var mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null; + var mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null; + var mapForEach = hasMap && Map.prototype.forEach; + var hasSet = typeof Set === 'function' && Set.prototype; + var setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null; + var setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null; + var setForEach = hasSet && Set.prototype.forEach; + var hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype; + var weakMapHas = hasWeakMap ? WeakMap.prototype.has : null; + var hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype; + var weakSetHas = hasWeakSet ? WeakSet.prototype.has : null; + var hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype; + var weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null; + var booleanValueOf = Boolean.prototype.valueOf; + var objectToString = Object.prototype.toString; + var functionToString = Function.prototype.toString; + var $match = String.prototype.match; + var $slice = String.prototype.slice; + var $replace = String.prototype.replace; + var $toUpperCase = String.prototype.toUpperCase; + var $toLowerCase = String.prototype.toLowerCase; + var $test = RegExp.prototype.test; + var $concat = Array.prototype.concat; + var $join = Array.prototype.join; + var $arrSlice = Array.prototype.slice; + var $floor = Math.floor; + var bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null; + var gOPS = Object.getOwnPropertySymbols; + var symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null; + var hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object'; + // ie, `has-tostringtag/shams + var toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol') + ? Symbol.toStringTag + : null; + var isEnumerable = Object.prototype.propertyIsEnumerable; + + var gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || ( + [].__proto__ === Array.prototype // eslint-disable-line no-proto + ? function (O) { + return O.__proto__; // eslint-disable-line no-proto + } + : null + ); + + function addNumericSeparator(num, str) { + if ( + num === Infinity + || num === -Infinity + || num !== num + || (num && num > -1e3 && num < 1000) + || $test.call(/e/, str) + ) { + return str; + } + var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g; + if (typeof num === 'number') { + var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num) + if (int !== num) { + var intStr = String(int); + var dec = $slice.call(str, intStr.length + 1); + return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, ''); + } + } + return $replace.call(str, sepRegex, '$&_'); + } + + var utilInspect = require$$0; + var inspectCustom = utilInspect.custom; + var inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null; + + var quotes = { + __proto__: null, + 'double': '"', + single: "'" + }; + var quoteREs = { + __proto__: null, + 'double': /(["\\])/g, + single: /(['\\])/g + }; + + objectInspect = function inspect_(obj, options, depth, seen) { + var opts = options || {}; + + if (has(opts, 'quoteStyle') && !has(quotes, opts.quoteStyle)) { + throw new TypeError('option "quoteStyle" must be "single" or "double"'); + } + if ( + has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number' + ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity + : opts.maxStringLength !== null + ) + ) { + throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`'); + } + var customInspect = has(opts, 'customInspect') ? opts.customInspect : true; + if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') { + throw new TypeError('option "customInspect", if provided, must be `true`, `false`, or `\'symbol\'`'); + } + + if ( + has(opts, 'indent') + && opts.indent !== null + && opts.indent !== '\t' + && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0) + ) { + throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`'); + } + if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') { + throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`'); + } + var numericSeparator = opts.numericSeparator; + + if (typeof obj === 'undefined') { + return 'undefined'; + } + if (obj === null) { + return 'null'; + } + if (typeof obj === 'boolean') { + return obj ? 'true' : 'false'; + } + + if (typeof obj === 'string') { + return inspectString(obj, opts); + } + if (typeof obj === 'number') { + if (obj === 0) { + return Infinity / obj > 0 ? '0' : '-0'; + } + var str = String(obj); + return numericSeparator ? addNumericSeparator(obj, str) : str; + } + if (typeof obj === 'bigint') { + var bigIntStr = String(obj) + 'n'; + return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr; + } + + var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth; + if (typeof depth === 'undefined') { depth = 0; } + if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') { + return isArray(obj) ? '[Array]' : '[Object]'; + } + + var indent = getIndent(opts, depth); + + if (typeof seen === 'undefined') { + seen = []; + } else if (indexOf(seen, obj) >= 0) { + return '[Circular]'; + } + + function inspect(value, from, noIndent) { + if (from) { + seen = $arrSlice.call(seen); + seen.push(from); + } + if (noIndent) { + var newOpts = { + depth: opts.depth + }; + if (has(opts, 'quoteStyle')) { + newOpts.quoteStyle = opts.quoteStyle; + } + return inspect_(value, newOpts, depth + 1, seen); + } + return inspect_(value, opts, depth + 1, seen); + } + + if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable + var name = nameOf(obj); + var keys = arrObjKeys(obj, inspect); + return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : ''); + } + if (isSymbol(obj)) { + var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\(.*\))_[^)]*$/, '$1') : symToString.call(obj); + return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString; + } + if (isElement(obj)) { + var s = '<' + $toLowerCase.call(String(obj.nodeName)); + var attrs = obj.attributes || []; + for (var i = 0; i < attrs.length; i++) { + s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts); + } + s += '>'; + if (obj.childNodes && obj.childNodes.length) { s += '...'; } + s += ''; + return s; + } + if (isArray(obj)) { + if (obj.length === 0) { return '[]'; } + var xs = arrObjKeys(obj, inspect); + if (indent && !singleLineValues(xs)) { + return '[' + indentedJoin(xs, indent) + ']'; + } + return '[ ' + $join.call(xs, ', ') + ' ]'; + } + if (isError(obj)) { + var parts = arrObjKeys(obj, inspect); + if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) { + return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }'; + } + if (parts.length === 0) { return '[' + String(obj) + ']'; } + return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }'; + } + if (typeof obj === 'object' && customInspect) { + if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) { + return utilInspect(obj, { depth: maxDepth - depth }); + } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') { + return obj.inspect(); + } + } + if (isMap(obj)) { + var mapParts = []; + if (mapForEach) { + mapForEach.call(obj, function (value, key) { + mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj)); + }); + } + return collectionOf('Map', mapSize.call(obj), mapParts, indent); + } + if (isSet(obj)) { + var setParts = []; + if (setForEach) { + setForEach.call(obj, function (value) { + setParts.push(inspect(value, obj)); + }); + } + return collectionOf('Set', setSize.call(obj), setParts, indent); + } + if (isWeakMap(obj)) { + return weakCollectionOf('WeakMap'); + } + if (isWeakSet(obj)) { + return weakCollectionOf('WeakSet'); + } + if (isWeakRef(obj)) { + return weakCollectionOf('WeakRef'); + } + if (isNumber(obj)) { + return markBoxed(inspect(Number(obj))); + } + if (isBigInt(obj)) { + return markBoxed(inspect(bigIntValueOf.call(obj))); + } + if (isBoolean(obj)) { + return markBoxed(booleanValueOf.call(obj)); + } + if (isString(obj)) { + return markBoxed(inspect(String(obj))); + } + // note: in IE 8, sometimes `undefined !== window` but both are the prototypes of each other + /* eslint-env browser */ + if (typeof window !== 'undefined' && obj === window) { + return '{ [object Window] }'; + } + if ( + (typeof globalThis !== 'undefined' && obj === globalThis) + || (typeof commonjsGlobal !== 'undefined' && obj === commonjsGlobal) + ) { + return '{ [object globalThis] }'; + } + if (!isDate(obj) && !isRegExp(obj)) { + var ys = arrObjKeys(obj, inspect); + var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object; + var protoTag = obj instanceof Object ? '' : 'null prototype'; + var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : ''; + var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : ''; + var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : ''); + if (ys.length === 0) { return tag + '{}'; } + if (indent) { + return tag + '{' + indentedJoin(ys, indent) + '}'; + } + return tag + '{ ' + $join.call(ys, ', ') + ' }'; + } + return String(obj); + }; + + function wrapQuotes(s, defaultStyle, opts) { + var style = opts.quoteStyle || defaultStyle; + var quoteChar = quotes[style]; + return quoteChar + s + quoteChar; + } + + function quote(s) { + return $replace.call(String(s), /"/g, '"'); + } + + function canTrustToString(obj) { + return !toStringTag || !(typeof obj === 'object' && (toStringTag in obj || typeof obj[toStringTag] !== 'undefined')); + } + function isArray(obj) { return toStr(obj) === '[object Array]' && canTrustToString(obj); } + function isDate(obj) { return toStr(obj) === '[object Date]' && canTrustToString(obj); } + function isRegExp(obj) { return toStr(obj) === '[object RegExp]' && canTrustToString(obj); } + function isError(obj) { return toStr(obj) === '[object Error]' && canTrustToString(obj); } + function isString(obj) { return toStr(obj) === '[object String]' && canTrustToString(obj); } + function isNumber(obj) { return toStr(obj) === '[object Number]' && canTrustToString(obj); } + function isBoolean(obj) { return toStr(obj) === '[object Boolean]' && canTrustToString(obj); } + + // Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives + function isSymbol(obj) { + if (hasShammedSymbols) { + return obj && typeof obj === 'object' && obj instanceof Symbol; + } + if (typeof obj === 'symbol') { + return true; + } + if (!obj || typeof obj !== 'object' || !symToString) { + return false; + } + try { + symToString.call(obj); + return true; + } catch (e) {} + return false; + } + + function isBigInt(obj) { + if (!obj || typeof obj !== 'object' || !bigIntValueOf) { + return false; + } + try { + bigIntValueOf.call(obj); + return true; + } catch (e) {} + return false; + } + + var hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; }; + function has(obj, key) { + return hasOwn.call(obj, key); + } + + function toStr(obj) { + return objectToString.call(obj); + } + + function nameOf(f) { + if (f.name) { return f.name; } + var m = $match.call(functionToString.call(f), /^function\s*([\w$]+)/); + if (m) { return m[1]; } + return null; + } + + function indexOf(xs, x) { + if (xs.indexOf) { return xs.indexOf(x); } + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) { return i; } + } + return -1; + } + + function isMap(x) { + if (!mapSize || !x || typeof x !== 'object') { + return false; + } + try { + mapSize.call(x); + try { + setSize.call(x); + } catch (s) { + return true; + } + return x instanceof Map; // core-js workaround, pre-v2.5.0 + } catch (e) {} + return false; + } + + function isWeakMap(x) { + if (!weakMapHas || !x || typeof x !== 'object') { + return false; + } + try { + weakMapHas.call(x, weakMapHas); + try { + weakSetHas.call(x, weakSetHas); + } catch (s) { + return true; + } + return x instanceof WeakMap; // core-js workaround, pre-v2.5.0 + } catch (e) {} + return false; + } + + function isWeakRef(x) { + if (!weakRefDeref || !x || typeof x !== 'object') { + return false; + } + try { + weakRefDeref.call(x); + return true; + } catch (e) {} + return false; + } + + function isSet(x) { + if (!setSize || !x || typeof x !== 'object') { + return false; + } + try { + setSize.call(x); + try { + mapSize.call(x); + } catch (m) { + return true; + } + return x instanceof Set; // core-js workaround, pre-v2.5.0 + } catch (e) {} + return false; + } + + function isWeakSet(x) { + if (!weakSetHas || !x || typeof x !== 'object') { + return false; + } + try { + weakSetHas.call(x, weakSetHas); + try { + weakMapHas.call(x, weakMapHas); + } catch (s) { + return true; + } + return x instanceof WeakSet; // core-js workaround, pre-v2.5.0 + } catch (e) {} + return false; + } + + function isElement(x) { + if (!x || typeof x !== 'object') { return false; } + if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) { + return true; + } + return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function'; + } + + function inspectString(str, opts) { + if (str.length > opts.maxStringLength) { + var remaining = str.length - opts.maxStringLength; + var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : ''); + return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer; + } + var quoteRE = quoteREs[opts.quoteStyle || 'single']; + quoteRE.lastIndex = 0; + // eslint-disable-next-line no-control-regex + var s = $replace.call($replace.call(str, quoteRE, '\\$1'), /[\x00-\x1f]/g, lowbyte); + return wrapQuotes(s, 'single', opts); + } + + function lowbyte(c) { + var n = c.charCodeAt(0); + var x = { + 8: 'b', + 9: 't', + 10: 'n', + 12: 'f', + 13: 'r' + }[n]; + if (x) { return '\\' + x; } + return '\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16)); + } + + function markBoxed(str) { + return 'Object(' + str + ')'; + } + + function weakCollectionOf(type) { + return type + ' { ? }'; + } + + function collectionOf(type, size, entries, indent) { + var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', '); + return type + ' (' + size + ') {' + joinedEntries + '}'; + } + + function singleLineValues(xs) { + for (var i = 0; i < xs.length; i++) { + if (indexOf(xs[i], '\n') >= 0) { + return false; + } + } + return true; + } + + function getIndent(opts, depth) { + var baseIndent; + if (opts.indent === '\t') { + baseIndent = '\t'; + } else if (typeof opts.indent === 'number' && opts.indent > 0) { + baseIndent = $join.call(Array(opts.indent + 1), ' '); + } else { + return null; + } + return { + base: baseIndent, + prev: $join.call(Array(depth + 1), baseIndent) + }; + } + + function indentedJoin(xs, indent) { + if (xs.length === 0) { return ''; } + var lineJoiner = '\n' + indent.prev + indent.base; + return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\n' + indent.prev; + } + + function arrObjKeys(obj, inspect) { + var isArr = isArray(obj); + var xs = []; + if (isArr) { + xs.length = obj.length; + for (var i = 0; i < obj.length; i++) { + xs[i] = has(obj, i) ? inspect(obj[i], obj) : ''; + } + } + var syms = typeof gOPS === 'function' ? gOPS(obj) : []; + var symMap; + if (hasShammedSymbols) { + symMap = {}; + for (var k = 0; k < syms.length; k++) { + symMap['$' + syms[k]] = syms[k]; + } + } + + for (var key in obj) { // eslint-disable-line no-restricted-syntax + if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue + if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue + if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) { + // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section + continue; // eslint-disable-line no-restricted-syntax, no-continue + } else if ($test.call(/[^\w$]/, key)) { + xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj)); + } else { + xs.push(key + ': ' + inspect(obj[key], obj)); + } + } + if (typeof gOPS === 'function') { + for (var j = 0; j < syms.length; j++) { + if (isEnumerable.call(obj, syms[j])) { + xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj)); + } + } + } + return xs; + } + return objectInspect; +} + +var sideChannelList; +var hasRequiredSideChannelList; + +function requireSideChannelList () { + if (hasRequiredSideChannelList) return sideChannelList; + hasRequiredSideChannelList = 1; + + var inspect = /*@__PURE__*/ requireObjectInspect(); + + var $TypeError = /*@__PURE__*/ requireType(); + + /* + * This function traverses the list returning the node corresponding to the given key. + * + * That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list. + * By doing so, all the recently used nodes can be accessed relatively quickly. + */ + /** @type {import('./list.d.ts').listGetNode} */ + // eslint-disable-next-line consistent-return + var listGetNode = function (list, key, isDelete) { + /** @type {typeof list | NonNullable<(typeof list)['next']>} */ + var prev = list; + /** @type {(typeof list)['next']} */ + var curr; + // eslint-disable-next-line eqeqeq + for (; (curr = prev.next) != null; prev = curr) { + if (curr.key === key) { + prev.next = curr.next; + if (!isDelete) { + // eslint-disable-next-line no-extra-parens + curr.next = /** @type {NonNullable} */ (list.next); + list.next = curr; // eslint-disable-line no-param-reassign + } + return curr; + } + } + }; + + /** @type {import('./list.d.ts').listGet} */ + var listGet = function (objects, key) { + if (!objects) { + return void undefined; + } + var node = listGetNode(objects, key); + return node && node.value; + }; + /** @type {import('./list.d.ts').listSet} */ + var listSet = function (objects, key, value) { + var node = listGetNode(objects, key); + if (node) { + node.value = value; + } else { + // Prepend the new node to the beginning of the list + objects.next = /** @type {import('./list.d.ts').ListNode} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens + key: key, + next: objects.next, + value: value + }); + } + }; + /** @type {import('./list.d.ts').listHas} */ + var listHas = function (objects, key) { + if (!objects) { + return false; + } + return !!listGetNode(objects, key); + }; + /** @type {import('./list.d.ts').listDelete} */ + // eslint-disable-next-line consistent-return + var listDelete = function (objects, key) { + if (objects) { + return listGetNode(objects, key, true); + } + }; + + /** @type {import('.')} */ + sideChannelList = function getSideChannelList() { + /** @typedef {ReturnType} Channel */ + /** @typedef {Parameters[0]} K */ + /** @typedef {Parameters[1]} V */ + + /** @type {import('./list.d.ts').RootNode | undefined} */ var $o; + + /** @type {Channel} */ + var channel = { + assert: function (key) { + if (!channel.has(key)) { + throw new $TypeError('Side channel does not contain ' + inspect(key)); + } + }, + 'delete': function (key) { + var root = $o && $o.next; + var deletedNode = listDelete($o, key); + if (deletedNode && root && root === deletedNode) { + $o = void undefined; + } + return !!deletedNode; + }, + get: function (key) { + return listGet($o, key); + }, + has: function (key) { + return listHas($o, key); + }, + set: function (key, value) { + if (!$o) { + // Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head + $o = { + next: void undefined + }; + } + // eslint-disable-next-line no-extra-parens + listSet(/** @type {NonNullable} */ ($o), key, value); + } + }; + // @ts-expect-error TODO: figure out why this is erroring + return channel; + }; + return sideChannelList; +} + +var esObjectAtoms; +var hasRequiredEsObjectAtoms; + +function requireEsObjectAtoms () { + if (hasRequiredEsObjectAtoms) return esObjectAtoms; + hasRequiredEsObjectAtoms = 1; + + /** @type {import('.')} */ + esObjectAtoms = Object; + return esObjectAtoms; +} + +var esErrors; +var hasRequiredEsErrors; + +function requireEsErrors () { + if (hasRequiredEsErrors) return esErrors; + hasRequiredEsErrors = 1; + + /** @type {import('.')} */ + esErrors = Error; + return esErrors; +} + +var _eval; +var hasRequired_eval; + +function require_eval () { + if (hasRequired_eval) return _eval; + hasRequired_eval = 1; + + /** @type {import('./eval')} */ + _eval = EvalError; + return _eval; +} + +var range; +var hasRequiredRange; + +function requireRange () { + if (hasRequiredRange) return range; + hasRequiredRange = 1; + + /** @type {import('./range')} */ + range = RangeError; + return range; +} + +var ref; +var hasRequiredRef; + +function requireRef () { + if (hasRequiredRef) return ref; + hasRequiredRef = 1; + + /** @type {import('./ref')} */ + ref = ReferenceError; + return ref; +} + +var syntax; +var hasRequiredSyntax; + +function requireSyntax () { + if (hasRequiredSyntax) return syntax; + hasRequiredSyntax = 1; + + /** @type {import('./syntax')} */ + syntax = SyntaxError; + return syntax; +} + +var uri; +var hasRequiredUri; + +function requireUri () { + if (hasRequiredUri) return uri; + hasRequiredUri = 1; + + /** @type {import('./uri')} */ + uri = URIError; + return uri; +} + +var abs; +var hasRequiredAbs; + +function requireAbs () { + if (hasRequiredAbs) return abs; + hasRequiredAbs = 1; + + /** @type {import('./abs')} */ + abs = Math.abs; + return abs; +} + +var floor; +var hasRequiredFloor; + +function requireFloor () { + if (hasRequiredFloor) return floor; + hasRequiredFloor = 1; + + /** @type {import('./floor')} */ + floor = Math.floor; + return floor; +} + +var max; +var hasRequiredMax; + +function requireMax () { + if (hasRequiredMax) return max; + hasRequiredMax = 1; + + /** @type {import('./max')} */ + max = Math.max; + return max; +} + +var min; +var hasRequiredMin; + +function requireMin () { + if (hasRequiredMin) return min; + hasRequiredMin = 1; + + /** @type {import('./min')} */ + min = Math.min; + return min; +} + +var pow; +var hasRequiredPow; + +function requirePow () { + if (hasRequiredPow) return pow; + hasRequiredPow = 1; + + /** @type {import('./pow')} */ + pow = Math.pow; + return pow; +} + +var round; +var hasRequiredRound; + +function requireRound () { + if (hasRequiredRound) return round; + hasRequiredRound = 1; + + /** @type {import('./round')} */ + round = Math.round; + return round; +} + +var _isNaN; +var hasRequired_isNaN; + +function require_isNaN () { + if (hasRequired_isNaN) return _isNaN; + hasRequired_isNaN = 1; + + /** @type {import('./isNaN')} */ + _isNaN = Number.isNaN || function isNaN(a) { + return a !== a; + }; + return _isNaN; +} + +var sign; +var hasRequiredSign; + +function requireSign () { + if (hasRequiredSign) return sign; + hasRequiredSign = 1; + + var $isNaN = /*@__PURE__*/ require_isNaN(); + + /** @type {import('./sign')} */ + sign = function sign(number) { + if ($isNaN(number) || number === 0) { + return number; + } + return number < 0 ? -1 : 1; + }; + return sign; +} + +var gOPD; +var hasRequiredGOPD; + +function requireGOPD () { + if (hasRequiredGOPD) return gOPD; + hasRequiredGOPD = 1; + + /** @type {import('./gOPD')} */ + gOPD = Object.getOwnPropertyDescriptor; + return gOPD; +} + +var gopd; +var hasRequiredGopd; + +function requireGopd () { + if (hasRequiredGopd) return gopd; + hasRequiredGopd = 1; + + /** @type {import('.')} */ + var $gOPD = /*@__PURE__*/ requireGOPD(); + + if ($gOPD) { + try { + $gOPD([], 'length'); + } catch (e) { + // IE 8 has a broken gOPD + $gOPD = null; + } + } + + gopd = $gOPD; + return gopd; +} + +var esDefineProperty; +var hasRequiredEsDefineProperty; + +function requireEsDefineProperty () { + if (hasRequiredEsDefineProperty) return esDefineProperty; + hasRequiredEsDefineProperty = 1; + + /** @type {import('.')} */ + var $defineProperty = Object.defineProperty || false; + if ($defineProperty) { + try { + $defineProperty({}, 'a', { value: 1 }); + } catch (e) { + // IE 8 has a broken defineProperty + $defineProperty = false; + } + } + + esDefineProperty = $defineProperty; + return esDefineProperty; +} + +var shams; +var hasRequiredShams; + +function requireShams () { + if (hasRequiredShams) return shams; + hasRequiredShams = 1; + + /** @type {import('./shams')} */ + /* eslint complexity: [2, 18], max-statements: [2, 33] */ + shams = function hasSymbols() { + if (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; } + if (typeof Symbol.iterator === 'symbol') { return true; } + + /** @type {{ [k in symbol]?: unknown }} */ + var obj = {}; + var sym = Symbol('test'); + var symObj = Object(sym); + if (typeof sym === 'string') { return false; } + + if (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; } + if (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; } + + // temp disabled per https://github.com/ljharb/object.assign/issues/17 + // if (sym instanceof Symbol) { return false; } + // temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4 + // if (!(symObj instanceof Symbol)) { return false; } + + // if (typeof Symbol.prototype.toString !== 'function') { return false; } + // if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; } + + var symVal = 42; + obj[sym] = symVal; + for (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop + if (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; } + + if (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; } + + var syms = Object.getOwnPropertySymbols(obj); + if (syms.length !== 1 || syms[0] !== sym) { return false; } + + if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; } + + if (typeof Object.getOwnPropertyDescriptor === 'function') { + // eslint-disable-next-line no-extra-parens + var descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym)); + if (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; } + } + + return true; + }; + return shams; +} + +var hasSymbols; +var hasRequiredHasSymbols; + +function requireHasSymbols () { + if (hasRequiredHasSymbols) return hasSymbols; + hasRequiredHasSymbols = 1; + + var origSymbol = typeof Symbol !== 'undefined' && Symbol; + var hasSymbolSham = requireShams(); + + /** @type {import('.')} */ + hasSymbols = function hasNativeSymbols() { + if (typeof origSymbol !== 'function') { return false; } + if (typeof Symbol !== 'function') { return false; } + if (typeof origSymbol('foo') !== 'symbol') { return false; } + if (typeof Symbol('bar') !== 'symbol') { return false; } + + return hasSymbolSham(); + }; + return hasSymbols; +} + +var Reflect_getPrototypeOf; +var hasRequiredReflect_getPrototypeOf; + +function requireReflect_getPrototypeOf () { + if (hasRequiredReflect_getPrototypeOf) return Reflect_getPrototypeOf; + hasRequiredReflect_getPrototypeOf = 1; + + /** @type {import('./Reflect.getPrototypeOf')} */ + Reflect_getPrototypeOf = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null; + return Reflect_getPrototypeOf; +} + +var Object_getPrototypeOf; +var hasRequiredObject_getPrototypeOf; + +function requireObject_getPrototypeOf () { + if (hasRequiredObject_getPrototypeOf) return Object_getPrototypeOf; + hasRequiredObject_getPrototypeOf = 1; + + var $Object = /*@__PURE__*/ requireEsObjectAtoms(); + + /** @type {import('./Object.getPrototypeOf')} */ + Object_getPrototypeOf = $Object.getPrototypeOf || null; + return Object_getPrototypeOf; +} + +var implementation; +var hasRequiredImplementation; + +function requireImplementation () { + if (hasRequiredImplementation) return implementation; + hasRequiredImplementation = 1; + + /* eslint no-invalid-this: 1 */ + + var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible '; + var toStr = Object.prototype.toString; + var max = Math.max; + var funcType = '[object Function]'; + + var concatty = function concatty(a, b) { + var arr = []; + + for (var i = 0; i < a.length; i += 1) { + arr[i] = a[i]; + } + for (var j = 0; j < b.length; j += 1) { + arr[j + a.length] = b[j]; + } + + return arr; + }; + + var slicy = function slicy(arrLike, offset) { + var arr = []; + for (var i = offset, j = 0; i < arrLike.length; i += 1, j += 1) { + arr[j] = arrLike[i]; + } + return arr; + }; + + var joiny = function (arr, joiner) { + var str = ''; + for (var i = 0; i < arr.length; i += 1) { + str += arr[i]; + if (i + 1 < arr.length) { + str += joiner; + } + } + return str; + }; + + implementation = function bind(that) { + var target = this; + if (typeof target !== 'function' || toStr.apply(target) !== funcType) { + throw new TypeError(ERROR_MESSAGE + target); + } + var args = slicy(arguments, 1); + + var bound; + var binder = function () { + if (this instanceof bound) { + var result = target.apply( + this, + concatty(args, arguments) + ); + if (Object(result) === result) { + return result; + } + return this; + } + return target.apply( + that, + concatty(args, arguments) + ); + + }; + + var boundLength = max(0, target.length - args.length); + var boundArgs = []; + for (var i = 0; i < boundLength; i++) { + boundArgs[i] = '$' + i; + } + + bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder); + + if (target.prototype) { + var Empty = function Empty() {}; + Empty.prototype = target.prototype; + bound.prototype = new Empty(); + Empty.prototype = null; + } + + return bound; + }; + return implementation; +} + +var functionBind; +var hasRequiredFunctionBind; + +function requireFunctionBind () { + if (hasRequiredFunctionBind) return functionBind; + hasRequiredFunctionBind = 1; + + var implementation = requireImplementation(); + + functionBind = Function.prototype.bind || implementation; + return functionBind; +} + +var functionCall; +var hasRequiredFunctionCall; + +function requireFunctionCall () { + if (hasRequiredFunctionCall) return functionCall; + hasRequiredFunctionCall = 1; + + /** @type {import('./functionCall')} */ + functionCall = Function.prototype.call; + return functionCall; +} + +var functionApply; +var hasRequiredFunctionApply; + +function requireFunctionApply () { + if (hasRequiredFunctionApply) return functionApply; + hasRequiredFunctionApply = 1; + + /** @type {import('./functionApply')} */ + functionApply = Function.prototype.apply; + return functionApply; +} + +var reflectApply; +var hasRequiredReflectApply; + +function requireReflectApply () { + if (hasRequiredReflectApply) return reflectApply; + hasRequiredReflectApply = 1; + + /** @type {import('./reflectApply')} */ + reflectApply = typeof Reflect !== 'undefined' && Reflect && Reflect.apply; + return reflectApply; +} + +var actualApply; +var hasRequiredActualApply; + +function requireActualApply () { + if (hasRequiredActualApply) return actualApply; + hasRequiredActualApply = 1; + + var bind = requireFunctionBind(); + + var $apply = requireFunctionApply(); + var $call = requireFunctionCall(); + var $reflectApply = requireReflectApply(); + + /** @type {import('./actualApply')} */ + actualApply = $reflectApply || bind.call($call, $apply); + return actualApply; +} + +var callBindApplyHelpers; +var hasRequiredCallBindApplyHelpers; + +function requireCallBindApplyHelpers () { + if (hasRequiredCallBindApplyHelpers) return callBindApplyHelpers; + hasRequiredCallBindApplyHelpers = 1; + + var bind = requireFunctionBind(); + var $TypeError = /*@__PURE__*/ requireType(); + + var $call = requireFunctionCall(); + var $actualApply = requireActualApply(); + + /** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */ + callBindApplyHelpers = function callBindBasic(args) { + if (args.length < 1 || typeof args[0] !== 'function') { + throw new $TypeError('a function is required'); + } + return $actualApply(bind, $call, args); + }; + return callBindApplyHelpers; +} + +var get; +var hasRequiredGet; + +function requireGet () { + if (hasRequiredGet) return get; + hasRequiredGet = 1; + + var callBind = requireCallBindApplyHelpers(); + var gOPD = /*@__PURE__*/ requireGopd(); + + var hasProtoAccessor; + try { + // eslint-disable-next-line no-extra-parens, no-proto + hasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype; + } catch (e) { + if (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') { + throw e; + } + } + + // eslint-disable-next-line no-extra-parens + var desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__')); + + var $Object = Object; + var $getPrototypeOf = $Object.getPrototypeOf; + + /** @type {import('./get')} */ + get = desc && typeof desc.get === 'function' + ? callBind([desc.get]) + : typeof $getPrototypeOf === 'function' + ? /** @type {import('./get')} */ function getDunder(value) { + // eslint-disable-next-line eqeqeq + return $getPrototypeOf(value == null ? value : $Object(value)); + } + : false; + return get; +} + +var getProto; +var hasRequiredGetProto; + +function requireGetProto () { + if (hasRequiredGetProto) return getProto; + hasRequiredGetProto = 1; + + var reflectGetProto = requireReflect_getPrototypeOf(); + var originalGetProto = requireObject_getPrototypeOf(); + + var getDunderProto = /*@__PURE__*/ requireGet(); + + /** @type {import('.')} */ + getProto = reflectGetProto + ? function getProto(O) { + // @ts-expect-error TS can't narrow inside a closure, for some reason + return reflectGetProto(O); + } + : originalGetProto + ? function getProto(O) { + if (!O || (typeof O !== 'object' && typeof O !== 'function')) { + throw new TypeError('getProto: not an object'); + } + // @ts-expect-error TS can't narrow inside a closure, for some reason + return originalGetProto(O); + } + : getDunderProto + ? function getProto(O) { + // @ts-expect-error TS can't narrow inside a closure, for some reason + return getDunderProto(O); + } + : null; + return getProto; +} + +var asyncFunction; +var hasRequiredAsyncFunction; + +function requireAsyncFunction () { + if (hasRequiredAsyncFunction) return asyncFunction; + hasRequiredAsyncFunction = 1; + + // eslint-disable-next-line no-extra-parens, no-empty-function + const cached = /** @type {import('.').AsyncFunctionConstructor} */ (async function () {}.constructor); + + /** @type {import('.')} */ + asyncFunction = () => cached; + return asyncFunction; +} + +var generatorFunction; +var hasRequiredGeneratorFunction; + +function requireGeneratorFunction () { + if (hasRequiredGeneratorFunction) return generatorFunction; + hasRequiredGeneratorFunction = 1; + + // eslint-disable-next-line no-extra-parens, no-empty-function + const cached = /** @type {GeneratorFunctionConstructor} */ (function* () {}.constructor); + + /** @type {import('.')} */ + generatorFunction = () => cached; + return generatorFunction; +} + +var asyncGeneratorFunction; +var hasRequiredAsyncGeneratorFunction; + +function requireAsyncGeneratorFunction () { + if (hasRequiredAsyncGeneratorFunction) return asyncGeneratorFunction; + hasRequiredAsyncGeneratorFunction = 1; + + // eslint-disable-next-line no-extra-parens, no-empty-function + const cached = /** @type {import('.').AsyncGeneratorFunctionConstructor} */ (async function* () {}.constructor); + + /** @type {import('.')} */ + asyncGeneratorFunction = () => cached; + return asyncGeneratorFunction; +} + +var hasown; +var hasRequiredHasown; + +function requireHasown () { + if (hasRequiredHasown) return hasown; + hasRequiredHasown = 1; + + var call = Function.prototype.call; + var $hasOwn = Object.prototype.hasOwnProperty; + var bind = requireFunctionBind(); + + /** @type {import('.')} */ + hasown = bind.call(call, $hasOwn); + return hasown; +} + +var getIntrinsic; +var hasRequiredGetIntrinsic; + +function requireGetIntrinsic () { + if (hasRequiredGetIntrinsic) return getIntrinsic; + hasRequiredGetIntrinsic = 1; + + var undefined$1; + + var $Object = /*@__PURE__*/ requireEsObjectAtoms(); + + var $Error = /*@__PURE__*/ requireEsErrors(); + var $EvalError = /*@__PURE__*/ require_eval(); + var $RangeError = /*@__PURE__*/ requireRange(); + var $ReferenceError = /*@__PURE__*/ requireRef(); + var $SyntaxError = /*@__PURE__*/ requireSyntax(); + var $TypeError = /*@__PURE__*/ requireType(); + var $URIError = /*@__PURE__*/ requireUri(); + + var abs = /*@__PURE__*/ requireAbs(); + var floor = /*@__PURE__*/ requireFloor(); + var max = /*@__PURE__*/ requireMax(); + var min = /*@__PURE__*/ requireMin(); + var pow = /*@__PURE__*/ requirePow(); + var round = /*@__PURE__*/ requireRound(); + var sign = /*@__PURE__*/ requireSign(); + + var $gOPD = /*@__PURE__*/ requireGopd(); + var $defineProperty = /*@__PURE__*/ requireEsDefineProperty(); + + var throwTypeError = function () { + throw new $TypeError(); + }; + var ThrowTypeError = $gOPD + ? (function () { + try { + // eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties + arguments.callee; // IE 8 does not throw here + return throwTypeError; + } catch (calleeThrows) { + try { + // IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '') + return $gOPD(arguments, 'callee').get; + } catch (gOPDthrows) { + return throwTypeError; + } + } + }()) + : throwTypeError; + + var hasSymbols = requireHasSymbols()(); + + var getProto = requireGetProto(); + var $ObjectGPO = requireObject_getPrototypeOf(); + var $ReflectGPO = requireReflect_getPrototypeOf(); + + var $apply = requireFunctionApply(); + var $call = requireFunctionCall(); + + var needsEval = {}; + + var TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined$1 : getProto(Uint8Array); + + var INTRINSICS = { + __proto__: null, + '%AggregateError%': typeof AggregateError === 'undefined' ? undefined$1 : AggregateError, + '%Array%': Array, + '%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined$1 : ArrayBuffer, + '%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined$1, + '%AsyncFromSyncIteratorPrototype%': undefined$1, + '%AsyncFunction%': needsEval, + '%AsyncGenerator%': needsEval, + '%AsyncGeneratorFunction%': needsEval, + '%AsyncIteratorPrototype%': needsEval, + '%Atomics%': typeof Atomics === 'undefined' ? undefined$1 : Atomics, + '%BigInt%': typeof BigInt === 'undefined' ? undefined$1 : BigInt, + '%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined$1 : BigInt64Array, + '%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined$1 : BigUint64Array, + '%Boolean%': Boolean, + '%DataView%': typeof DataView === 'undefined' ? undefined$1 : DataView, + '%Date%': Date, + '%decodeURI%': decodeURI, + '%decodeURIComponent%': decodeURIComponent, + '%encodeURI%': encodeURI, + '%encodeURIComponent%': encodeURIComponent, + '%Error%': $Error, + '%eval%': eval, // eslint-disable-line no-eval + '%EvalError%': $EvalError, + '%Float16Array%': typeof Float16Array === 'undefined' ? undefined$1 : Float16Array, + '%Float32Array%': typeof Float32Array === 'undefined' ? undefined$1 : Float32Array, + '%Float64Array%': typeof Float64Array === 'undefined' ? undefined$1 : Float64Array, + '%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined$1 : FinalizationRegistry, + '%Function%': Function, + '%GeneratorFunction%': needsEval, + '%Int8Array%': typeof Int8Array === 'undefined' ? undefined$1 : Int8Array, + '%Int16Array%': typeof Int16Array === 'undefined' ? undefined$1 : Int16Array, + '%Int32Array%': typeof Int32Array === 'undefined' ? undefined$1 : Int32Array, + '%isFinite%': isFinite, + '%isNaN%': isNaN, + '%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined$1, + '%JSON%': typeof JSON === 'object' ? JSON : undefined$1, + '%Map%': typeof Map === 'undefined' ? undefined$1 : Map, + '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined$1 : getProto(new Map()[Symbol.iterator]()), + '%Math%': Math, + '%Number%': Number, + '%Object%': $Object, + '%Object.getOwnPropertyDescriptor%': $gOPD, + '%parseFloat%': parseFloat, + '%parseInt%': parseInt, + '%Promise%': typeof Promise === 'undefined' ? undefined$1 : Promise, + '%Proxy%': typeof Proxy === 'undefined' ? undefined$1 : Proxy, + '%RangeError%': $RangeError, + '%ReferenceError%': $ReferenceError, + '%Reflect%': typeof Reflect === 'undefined' ? undefined$1 : Reflect, + '%RegExp%': RegExp, + '%Set%': typeof Set === 'undefined' ? undefined$1 : Set, + '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined$1 : getProto(new Set()[Symbol.iterator]()), + '%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined$1 : SharedArrayBuffer, + '%String%': String, + '%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined$1, + '%Symbol%': hasSymbols ? Symbol : undefined$1, + '%SyntaxError%': $SyntaxError, + '%ThrowTypeError%': ThrowTypeError, + '%TypedArray%': TypedArray, + '%TypeError%': $TypeError, + '%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined$1 : Uint8Array, + '%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined$1 : Uint8ClampedArray, + '%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined$1 : Uint16Array, + '%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined$1 : Uint32Array, + '%URIError%': $URIError, + '%WeakMap%': typeof WeakMap === 'undefined' ? undefined$1 : WeakMap, + '%WeakRef%': typeof WeakRef === 'undefined' ? undefined$1 : WeakRef, + '%WeakSet%': typeof WeakSet === 'undefined' ? undefined$1 : WeakSet, + + '%Function.prototype.call%': $call, + '%Function.prototype.apply%': $apply, + '%Object.defineProperty%': $defineProperty, + '%Object.getPrototypeOf%': $ObjectGPO, + '%Math.abs%': abs, + '%Math.floor%': floor, + '%Math.max%': max, + '%Math.min%': min, + '%Math.pow%': pow, + '%Math.round%': round, + '%Math.sign%': sign, + '%Reflect.getPrototypeOf%': $ReflectGPO + }; + + if (getProto) { + try { + null.error; // eslint-disable-line no-unused-expressions + } catch (e) { + // https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229 + var errorProto = getProto(getProto(e)); + INTRINSICS['%Error.prototype%'] = errorProto; + } + } + + var getAsyncFunction = requireAsyncFunction(); + var getGeneratorFunction = /*@__PURE__*/ requireGeneratorFunction(); + var getAsyncGeneratorFunction = requireAsyncGeneratorFunction(); + + var doEval = function doEval(name) { + var value; + if (name === '%AsyncFunction%') { + value = getAsyncFunction() || void undefined$1; + } else if (name === '%GeneratorFunction%') { + value = getGeneratorFunction() || void undefined$1; + } else if (name === '%AsyncGeneratorFunction%') { + value = getAsyncGeneratorFunction() || void undefined$1; + } else if (name === '%AsyncGenerator%') { + var fn = doEval('%AsyncGeneratorFunction%'); + if (fn) { + value = fn.prototype; + } + } else if (name === '%AsyncIteratorPrototype%') { + var gen = doEval('%AsyncGenerator%'); + if (gen && getProto) { + value = getProto(gen.prototype); + } + } + + INTRINSICS[name] = value; + + return value; + }; + + var LEGACY_ALIASES = { + __proto__: null, + '%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'], + '%ArrayPrototype%': ['Array', 'prototype'], + '%ArrayProto_entries%': ['Array', 'prototype', 'entries'], + '%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'], + '%ArrayProto_keys%': ['Array', 'prototype', 'keys'], + '%ArrayProto_values%': ['Array', 'prototype', 'values'], + '%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'], + '%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'], + '%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'], + '%BooleanPrototype%': ['Boolean', 'prototype'], + '%DataViewPrototype%': ['DataView', 'prototype'], + '%DatePrototype%': ['Date', 'prototype'], + '%ErrorPrototype%': ['Error', 'prototype'], + '%EvalErrorPrototype%': ['EvalError', 'prototype'], + '%Float32ArrayPrototype%': ['Float32Array', 'prototype'], + '%Float64ArrayPrototype%': ['Float64Array', 'prototype'], + '%FunctionPrototype%': ['Function', 'prototype'], + '%Generator%': ['GeneratorFunction', 'prototype'], + '%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'], + '%Int8ArrayPrototype%': ['Int8Array', 'prototype'], + '%Int16ArrayPrototype%': ['Int16Array', 'prototype'], + '%Int32ArrayPrototype%': ['Int32Array', 'prototype'], + '%JSONParse%': ['JSON', 'parse'], + '%JSONStringify%': ['JSON', 'stringify'], + '%MapPrototype%': ['Map', 'prototype'], + '%NumberPrototype%': ['Number', 'prototype'], + '%ObjectPrototype%': ['Object', 'prototype'], + '%ObjProto_toString%': ['Object', 'prototype', 'toString'], + '%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'], + '%PromisePrototype%': ['Promise', 'prototype'], + '%PromiseProto_then%': ['Promise', 'prototype', 'then'], + '%Promise_all%': ['Promise', 'all'], + '%Promise_reject%': ['Promise', 'reject'], + '%Promise_resolve%': ['Promise', 'resolve'], + '%RangeErrorPrototype%': ['RangeError', 'prototype'], + '%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'], + '%RegExpPrototype%': ['RegExp', 'prototype'], + '%SetPrototype%': ['Set', 'prototype'], + '%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'], + '%StringPrototype%': ['String', 'prototype'], + '%SymbolPrototype%': ['Symbol', 'prototype'], + '%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'], + '%TypedArrayPrototype%': ['TypedArray', 'prototype'], + '%TypeErrorPrototype%': ['TypeError', 'prototype'], + '%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'], + '%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'], + '%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'], + '%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'], + '%URIErrorPrototype%': ['URIError', 'prototype'], + '%WeakMapPrototype%': ['WeakMap', 'prototype'], + '%WeakSetPrototype%': ['WeakSet', 'prototype'] + }; + + var bind = requireFunctionBind(); + var hasOwn = /*@__PURE__*/ requireHasown(); + var $concat = bind.call($call, Array.prototype.concat); + var $spliceApply = bind.call($apply, Array.prototype.splice); + var $replace = bind.call($call, String.prototype.replace); + var $strSlice = bind.call($call, String.prototype.slice); + var $exec = bind.call($call, RegExp.prototype.exec); + + /* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */ + var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g; + var reEscapeChar = /\\(\\)?/g; /** Used to match backslashes in property paths. */ + var stringToPath = function stringToPath(string) { + var first = $strSlice(string, 0, 1); + var last = $strSlice(string, -1); + if (first === '%' && last !== '%') { + throw new $SyntaxError('invalid intrinsic syntax, expected closing `%`'); + } else if (last === '%' && first !== '%') { + throw new $SyntaxError('invalid intrinsic syntax, expected opening `%`'); + } + var result = []; + $replace(string, rePropName, function (match, number, quote, subString) { + result[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match; + }); + return result; + }; + /* end adaptation */ + + var getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) { + var intrinsicName = name; + var alias; + if (hasOwn(LEGACY_ALIASES, intrinsicName)) { + alias = LEGACY_ALIASES[intrinsicName]; + intrinsicName = '%' + alias[0] + '%'; + } + + if (hasOwn(INTRINSICS, intrinsicName)) { + var value = INTRINSICS[intrinsicName]; + if (value === needsEval) { + value = doEval(intrinsicName); + } + if (typeof value === 'undefined' && !allowMissing) { + throw new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!'); + } + + return { + alias: alias, + name: intrinsicName, + value: value + }; + } + + throw new $SyntaxError('intrinsic ' + name + ' does not exist!'); + }; + + getIntrinsic = function GetIntrinsic(name, allowMissing) { + if (typeof name !== 'string' || name.length === 0) { + throw new $TypeError('intrinsic name must be a non-empty string'); + } + if (arguments.length > 1 && typeof allowMissing !== 'boolean') { + throw new $TypeError('"allowMissing" argument must be a boolean'); + } + + if ($exec(/^%?[^%]*%?$/, name) === null) { + throw new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name'); + } + var parts = stringToPath(name); + var intrinsicBaseName = parts.length > 0 ? parts[0] : ''; + + var intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing); + var intrinsicRealName = intrinsic.name; + var value = intrinsic.value; + var skipFurtherCaching = false; + + var alias = intrinsic.alias; + if (alias) { + intrinsicBaseName = alias[0]; + $spliceApply(parts, $concat([0, 1], alias)); + } + + for (var i = 1, isOwn = true; i < parts.length; i += 1) { + var part = parts[i]; + var first = $strSlice(part, 0, 1); + var last = $strSlice(part, -1); + if ( + ( + (first === '"' || first === "'" || first === '`') + || (last === '"' || last === "'" || last === '`') + ) + && first !== last + ) { + throw new $SyntaxError('property names with quotes must have matching quotes'); + } + if (part === 'constructor' || !isOwn) { + skipFurtherCaching = true; + } + + intrinsicBaseName += '.' + part; + intrinsicRealName = '%' + intrinsicBaseName + '%'; + + if (hasOwn(INTRINSICS, intrinsicRealName)) { + value = INTRINSICS[intrinsicRealName]; + } else if (value != null) { + if (!(part in value)) { + if (!allowMissing) { + throw new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.'); + } + return void undefined$1; + } + if ($gOPD && (i + 1) >= parts.length) { + var desc = $gOPD(value, part); + isOwn = !!desc; + + // By convention, when a data property is converted to an accessor + // property to emulate a data property that does not suffer from + // the override mistake, that accessor's getter is marked with + // an `originalValue` property. Here, when we detect this, we + // uphold the illusion by pretending to see that original data + // property, i.e., returning the value rather than the getter + // itself. + if (isOwn && 'get' in desc && !('originalValue' in desc.get)) { + value = desc.get; + } else { + value = value[part]; + } + } else { + isOwn = hasOwn(value, part); + value = value[part]; + } + + if (isOwn && !skipFurtherCaching) { + INTRINSICS[intrinsicRealName] = value; + } + } + } + return value; + }; + return getIntrinsic; +} + +var callBound; +var hasRequiredCallBound; + +function requireCallBound () { + if (hasRequiredCallBound) return callBound; + hasRequiredCallBound = 1; + + var GetIntrinsic = /*@__PURE__*/ requireGetIntrinsic(); + + var callBindBasic = requireCallBindApplyHelpers(); + + /** @type {(thisArg: string, searchString: string, position?: number) => number} */ + var $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]); + + /** @type {import('.')} */ + callBound = function callBoundIntrinsic(name, allowMissing) { + /* eslint no-extra-parens: 0 */ + + var intrinsic = /** @type {(this: unknown, ...args: unknown[]) => unknown} */ (GetIntrinsic(name, !!allowMissing)); + if (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) { + return callBindBasic(/** @type {const} */ ([intrinsic])); + } + return intrinsic; + }; + return callBound; +} + +var sideChannelMap; +var hasRequiredSideChannelMap; + +function requireSideChannelMap () { + if (hasRequiredSideChannelMap) return sideChannelMap; + hasRequiredSideChannelMap = 1; + + var GetIntrinsic = /*@__PURE__*/ requireGetIntrinsic(); + var callBound = /*@__PURE__*/ requireCallBound(); + var inspect = /*@__PURE__*/ requireObjectInspect(); + + var $TypeError = /*@__PURE__*/ requireType(); + var $Map = GetIntrinsic('%Map%', true); + + /** @type {(thisArg: Map, key: K) => V} */ + var $mapGet = callBound('Map.prototype.get', true); + /** @type {(thisArg: Map, key: K, value: V) => void} */ + var $mapSet = callBound('Map.prototype.set', true); + /** @type {(thisArg: Map, key: K) => boolean} */ + var $mapHas = callBound('Map.prototype.has', true); + /** @type {(thisArg: Map, key: K) => boolean} */ + var $mapDelete = callBound('Map.prototype.delete', true); + /** @type {(thisArg: Map) => number} */ + var $mapSize = callBound('Map.prototype.size', true); + + /** @type {import('.')} */ + sideChannelMap = !!$Map && /** @type {Exclude} */ function getSideChannelMap() { + /** @typedef {ReturnType} Channel */ + /** @typedef {Parameters[0]} K */ + /** @typedef {Parameters[1]} V */ + + /** @type {Map | undefined} */ var $m; + + /** @type {Channel} */ + var channel = { + assert: function (key) { + if (!channel.has(key)) { + throw new $TypeError('Side channel does not contain ' + inspect(key)); + } + }, + 'delete': function (key) { + if ($m) { + var result = $mapDelete($m, key); + if ($mapSize($m) === 0) { + $m = void undefined; + } + return result; + } + return false; + }, + get: function (key) { // eslint-disable-line consistent-return + if ($m) { + return $mapGet($m, key); + } + }, + has: function (key) { + if ($m) { + return $mapHas($m, key); + } + return false; + }, + set: function (key, value) { + if (!$m) { + // @ts-expect-error TS can't handle narrowing a variable inside a closure + $m = new $Map(); + } + $mapSet($m, key, value); + } + }; + + // @ts-expect-error TODO: figure out why TS is erroring here + return channel; + }; + return sideChannelMap; +} + +var sideChannelWeakmap; +var hasRequiredSideChannelWeakmap; + +function requireSideChannelWeakmap () { + if (hasRequiredSideChannelWeakmap) return sideChannelWeakmap; + hasRequiredSideChannelWeakmap = 1; + + var GetIntrinsic = /*@__PURE__*/ requireGetIntrinsic(); + var callBound = /*@__PURE__*/ requireCallBound(); + var inspect = /*@__PURE__*/ requireObjectInspect(); + var getSideChannelMap = requireSideChannelMap(); + + var $TypeError = /*@__PURE__*/ requireType(); + var $WeakMap = GetIntrinsic('%WeakMap%', true); + + /** @type {(thisArg: WeakMap, key: K) => V} */ + var $weakMapGet = callBound('WeakMap.prototype.get', true); + /** @type {(thisArg: WeakMap, key: K, value: V) => void} */ + var $weakMapSet = callBound('WeakMap.prototype.set', true); + /** @type {(thisArg: WeakMap, key: K) => boolean} */ + var $weakMapHas = callBound('WeakMap.prototype.has', true); + /** @type {(thisArg: WeakMap, key: K) => boolean} */ + var $weakMapDelete = callBound('WeakMap.prototype.delete', true); + + /** @type {import('.')} */ + sideChannelWeakmap = $WeakMap + ? /** @type {Exclude} */ function getSideChannelWeakMap() { + /** @typedef {ReturnType} Channel */ + /** @typedef {Parameters[0]} K */ + /** @typedef {Parameters[1]} V */ + + /** @type {WeakMap | undefined} */ var $wm; + /** @type {Channel | undefined} */ var $m; + + /** @type {Channel} */ + var channel = { + assert: function (key) { + if (!channel.has(key)) { + throw new $TypeError('Side channel does not contain ' + inspect(key)); + } + }, + 'delete': function (key) { + if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { + if ($wm) { + return $weakMapDelete($wm, key); + } + } else if (getSideChannelMap) { + if ($m) { + return $m['delete'](key); + } + } + return false; + }, + get: function (key) { + if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { + if ($wm) { + return $weakMapGet($wm, key); + } + } + return $m && $m.get(key); + }, + has: function (key) { + if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { + if ($wm) { + return $weakMapHas($wm, key); + } + } + return !!$m && $m.has(key); + }, + set: function (key, value) { + if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { + if (!$wm) { + $wm = new $WeakMap(); + } + $weakMapSet($wm, key, value); + } else if (getSideChannelMap) { + if (!$m) { + $m = getSideChannelMap(); + } + // eslint-disable-next-line no-extra-parens + /** @type {NonNullable} */ ($m).set(key, value); + } + } + }; + + // @ts-expect-error TODO: figure out why this is erroring + return channel; + } + : getSideChannelMap; + return sideChannelWeakmap; +} + +var sideChannel; +var hasRequiredSideChannel; + +function requireSideChannel () { + if (hasRequiredSideChannel) return sideChannel; + hasRequiredSideChannel = 1; + + var $TypeError = /*@__PURE__*/ requireType(); + var inspect = /*@__PURE__*/ requireObjectInspect(); + var getSideChannelList = requireSideChannelList(); + var getSideChannelMap = requireSideChannelMap(); + var getSideChannelWeakMap = requireSideChannelWeakmap(); + + var makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList; + + /** @type {import('.')} */ + sideChannel = function getSideChannel() { + /** @typedef {ReturnType} Channel */ + + /** @type {Channel | undefined} */ var $channelData; + + /** @type {Channel} */ + var channel = { + assert: function (key) { + if (!channel.has(key)) { + throw new $TypeError('Side channel does not contain ' + inspect(key)); + } + }, + 'delete': function (key) { + return !!$channelData && $channelData['delete'](key); + }, + get: function (key) { + return $channelData && $channelData.get(key); + }, + has: function (key) { + return !!$channelData && $channelData.has(key); + }, + set: function (key, value) { + if (!$channelData) { + $channelData = makeChannel(); + } + + $channelData.set(key, value); + } + }; + // @ts-expect-error TODO: figure out why this is erroring + return channel; + }; + return sideChannel; +} + +var formats; +var hasRequiredFormats; + +function requireFormats () { + if (hasRequiredFormats) return formats; + hasRequiredFormats = 1; + + var replace = String.prototype.replace; + var percentTwenties = /%20/g; + + var Format = { + RFC1738: 'RFC1738', + RFC3986: 'RFC3986' + }; + + formats = { + 'default': Format.RFC3986, + formatters: { + RFC1738: function (value) { + return replace.call(value, percentTwenties, '+'); + }, + RFC3986: function (value) { + return String(value); + } + }, + RFC1738: Format.RFC1738, + RFC3986: Format.RFC3986 + }; + return formats; +} + +var utils$1; +var hasRequiredUtils$1; + +function requireUtils$1 () { + if (hasRequiredUtils$1) return utils$1; + hasRequiredUtils$1 = 1; + + var formats = /*@__PURE__*/ requireFormats(); + var getSideChannel = requireSideChannel(); + + var has = Object.prototype.hasOwnProperty; + var isArray = Array.isArray; + + // Track objects created from arrayLimit overflow using side-channel + // Stores the current max numeric index for O(1) lookup + var overflowChannel = getSideChannel(); + + var markOverflow = function markOverflow(obj, maxIndex) { + overflowChannel.set(obj, maxIndex); + return obj; + }; + + var isOverflow = function isOverflow(obj) { + return overflowChannel.has(obj); + }; + + var getMaxIndex = function getMaxIndex(obj) { + return overflowChannel.get(obj); + }; + + var setMaxIndex = function setMaxIndex(obj, maxIndex) { + overflowChannel.set(obj, maxIndex); + }; + + var hexTable = (function () { + var array = []; + for (var i = 0; i < 256; ++i) { + array[array.length] = '%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase(); + } + + return array; + }()); + + var compactQueue = function compactQueue(queue) { + while (queue.length > 1) { + var item = queue.pop(); + var obj = item.obj[item.prop]; + + if (isArray(obj)) { + var compacted = []; + + for (var j = 0; j < obj.length; ++j) { + if (typeof obj[j] !== 'undefined') { + compacted[compacted.length] = obj[j]; + } + } + + item.obj[item.prop] = compacted; + } + } + }; + + var arrayToObject = function arrayToObject(source, options) { + var obj = options && options.plainObjects ? { __proto__: null } : {}; + for (var i = 0; i < source.length; ++i) { + if (typeof source[i] !== 'undefined') { + obj[i] = source[i]; + } + } + + return obj; + }; + + var merge = function merge(target, source, options) { + /* eslint no-param-reassign: 0 */ + if (!source) { + return target; + } + + if (typeof source !== 'object' && typeof source !== 'function') { + if (isArray(target)) { + var nextIndex = target.length; + if (options && typeof options.arrayLimit === 'number' && nextIndex > options.arrayLimit) { + return markOverflow(arrayToObject(target.concat(source), options), nextIndex); + } + target[nextIndex] = source; + } else if (target && typeof target === 'object') { + if (isOverflow(target)) { + // Add at next numeric index for overflow objects + var newIndex = getMaxIndex(target) + 1; + target[newIndex] = source; + setMaxIndex(target, newIndex); + } else if (options && options.strictMerge) { + return [target, source]; + } else if ( + (options && (options.plainObjects || options.allowPrototypes)) + || !has.call(Object.prototype, source) + ) { + target[source] = true; + } + } else { + return [target, source]; + } + + return target; + } + + if (!target || typeof target !== 'object') { + if (isOverflow(source)) { + // Create new object with target at 0, source values shifted by 1 + var sourceKeys = Object.keys(source); + var result = options && options.plainObjects + ? { __proto__: null, 0: target } + : { 0: target }; + for (var m = 0; m < sourceKeys.length; m++) { + var oldKey = parseInt(sourceKeys[m], 10); + result[oldKey + 1] = source[sourceKeys[m]]; + } + return markOverflow(result, getMaxIndex(source) + 1); + } + var combined = [target].concat(source); + if (options && typeof options.arrayLimit === 'number' && combined.length > options.arrayLimit) { + return markOverflow(arrayToObject(combined, options), combined.length - 1); + } + return combined; + } + + var mergeTarget = target; + if (isArray(target) && !isArray(source)) { + mergeTarget = arrayToObject(target, options); + } + + if (isArray(target) && isArray(source)) { + source.forEach(function (item, i) { + if (has.call(target, i)) { + var targetItem = target[i]; + if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') { + target[i] = merge(targetItem, item, options); + } else { + target[target.length] = item; + } + } else { + target[i] = item; + } + }); + return target; + } + + return Object.keys(source).reduce(function (acc, key) { + var value = source[key]; + + if (has.call(acc, key)) { + acc[key] = merge(acc[key], value, options); + } else { + acc[key] = value; + } + + if (isOverflow(source) && !isOverflow(acc)) { + markOverflow(acc, getMaxIndex(source)); + } + if (isOverflow(acc)) { + var keyNum = parseInt(key, 10); + if (String(keyNum) === key && keyNum >= 0 && keyNum > getMaxIndex(acc)) { + setMaxIndex(acc, keyNum); + } + } + + return acc; + }, mergeTarget); + }; + + var assign = function assignSingleSource(target, source) { + return Object.keys(source).reduce(function (acc, key) { + acc[key] = source[key]; + return acc; + }, target); + }; + + var decode = function (str, defaultDecoder, charset) { + var strWithoutPlus = str.replace(/\+/g, ' '); + if (charset === 'iso-8859-1') { + // unescape never throws, no try...catch needed: + return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape); + } + // utf-8 + try { + return decodeURIComponent(strWithoutPlus); + } catch (e) { + return strWithoutPlus; + } + }; + + var limit = 1024; + + /* eslint operator-linebreak: [2, "before"] */ + + var encode = function encode(str, defaultEncoder, charset, kind, format) { + // This code was originally written by Brian White (mscdex) for the io.js core querystring library. + // It has been adapted here for stricter adherence to RFC 3986 + if (str.length === 0) { + return str; + } + + var string = str; + if (typeof str === 'symbol') { + string = Symbol.prototype.toString.call(str); + } else if (typeof str !== 'string') { + string = String(str); + } + + if (charset === 'iso-8859-1') { + return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) { + return '%26%23' + parseInt($0.slice(2), 16) + '%3B'; + }); + } + + var out = ''; + for (var j = 0; j < string.length; j += limit) { + var segment = string.length >= limit ? string.slice(j, j + limit) : string; + var arr = []; + + for (var i = 0; i < segment.length; ++i) { + var c = segment.charCodeAt(i); + if ( + c === 0x2D // - + || c === 0x2E // . + || c === 0x5F // _ + || c === 0x7E // ~ + || (c >= 0x30 && c <= 0x39) // 0-9 + || (c >= 0x41 && c <= 0x5A) // a-z + || (c >= 0x61 && c <= 0x7A) // A-Z + || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( ) + ) { + arr[arr.length] = segment.charAt(i); + continue; + } + + if (c < 0x80) { + arr[arr.length] = hexTable[c]; + continue; + } + + if (c < 0x800) { + arr[arr.length] = hexTable[0xC0 | (c >> 6)] + + hexTable[0x80 | (c & 0x3F)]; + continue; + } + + if (c < 0xD800 || c >= 0xE000) { + arr[arr.length] = hexTable[0xE0 | (c >> 12)] + + hexTable[0x80 | ((c >> 6) & 0x3F)] + + hexTable[0x80 | (c & 0x3F)]; + continue; + } + + i += 1; + c = 0x10000 + (((c & 0x3FF) << 10) | (segment.charCodeAt(i) & 0x3FF)); + + arr[arr.length] = hexTable[0xF0 | (c >> 18)] + + hexTable[0x80 | ((c >> 12) & 0x3F)] + + hexTable[0x80 | ((c >> 6) & 0x3F)] + + hexTable[0x80 | (c & 0x3F)]; + } + + out += arr.join(''); + } + + return out; + }; + + var compact = function compact(value) { + var queue = [{ obj: { o: value }, prop: 'o' }]; + var refs = []; + + for (var i = 0; i < queue.length; ++i) { + var item = queue[i]; + var obj = item.obj[item.prop]; + + var keys = Object.keys(obj); + for (var j = 0; j < keys.length; ++j) { + var key = keys[j]; + var val = obj[key]; + if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) { + queue[queue.length] = { obj: obj, prop: key }; + refs[refs.length] = val; + } + } + } + + compactQueue(queue); + + return value; + }; + + var isRegExp = function isRegExp(obj) { + return Object.prototype.toString.call(obj) === '[object RegExp]'; + }; + + var isBuffer = function isBuffer(obj) { + if (!obj || typeof obj !== 'object') { + return false; + } + + return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj)); + }; + + var combine = function combine(a, b, arrayLimit, plainObjects) { + // If 'a' is already an overflow object, add to it + if (isOverflow(a)) { + var newIndex = getMaxIndex(a) + 1; + a[newIndex] = b; + setMaxIndex(a, newIndex); + return a; + } + + var result = [].concat(a, b); + if (result.length > arrayLimit) { + return markOverflow(arrayToObject(result, { plainObjects: plainObjects }), result.length - 1); + } + return result; + }; + + var maybeMap = function maybeMap(val, fn) { + if (isArray(val)) { + var mapped = []; + for (var i = 0; i < val.length; i += 1) { + mapped[mapped.length] = fn(val[i]); + } + return mapped; + } + return fn(val); + }; + + utils$1 = { + arrayToObject: arrayToObject, + assign: assign, + combine: combine, + compact: compact, + decode: decode, + encode: encode, + isBuffer: isBuffer, + isOverflow: isOverflow, + isRegExp: isRegExp, + markOverflow: markOverflow, + maybeMap: maybeMap, + merge: merge + }; + return utils$1; +} + +var stringify_1; +var hasRequiredStringify; + +function requireStringify () { + if (hasRequiredStringify) return stringify_1; + hasRequiredStringify = 1; + + var getSideChannel = requireSideChannel(); + var utils = /*@__PURE__*/ requireUtils$1(); + var formats = /*@__PURE__*/ requireFormats(); + var has = Object.prototype.hasOwnProperty; + + var arrayPrefixGenerators = { + brackets: function brackets(prefix) { + return prefix + '[]'; + }, + comma: 'comma', + indices: function indices(prefix, key) { + return prefix + '[' + key + ']'; + }, + repeat: function repeat(prefix) { + return prefix; + } + }; + + var isArray = Array.isArray; + var push = Array.prototype.push; + var pushToArray = function (arr, valueOrArray) { + push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]); + }; + + var toISO = Date.prototype.toISOString; + + var defaultFormat = formats['default']; + var defaults = { + addQueryPrefix: false, + allowDots: false, + allowEmptyArrays: false, + arrayFormat: 'indices', + charset: 'utf-8', + charsetSentinel: false, + commaRoundTrip: false, + delimiter: '&', + encode: true, + encodeDotInKeys: false, + encoder: utils.encode, + encodeValuesOnly: false, + filter: void undefined, + format: defaultFormat, + formatter: formats.formatters[defaultFormat], + // deprecated + indices: false, + serializeDate: function serializeDate(date) { + return toISO.call(date); + }, + skipNulls: false, + strictNullHandling: false + }; + + var isNonNullishPrimitive = function isNonNullishPrimitive(v) { + return typeof v === 'string' + || typeof v === 'number' + || typeof v === 'boolean' + || typeof v === 'symbol' + || typeof v === 'bigint'; + }; + + var sentinel = {}; + + var stringify = function stringify( + object, + prefix, + generateArrayPrefix, + commaRoundTrip, + allowEmptyArrays, + strictNullHandling, + skipNulls, + encodeDotInKeys, + encoder, + filter, + sort, + allowDots, + serializeDate, + format, + formatter, + encodeValuesOnly, + charset, + sideChannel + ) { + var obj = object; + + var tmpSc = sideChannel; + var step = 0; + var findFlag = false; + while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) { + // Where object last appeared in the ref tree + var pos = tmpSc.get(object); + step += 1; + if (typeof pos !== 'undefined') { + if (pos === step) { + throw new RangeError('Cyclic object value'); + } else { + findFlag = true; // Break while + } + } + if (typeof tmpSc.get(sentinel) === 'undefined') { + step = 0; + } + } + + if (typeof filter === 'function') { + obj = filter(prefix, obj); + } else if (obj instanceof Date) { + obj = serializeDate(obj); + } else if (generateArrayPrefix === 'comma' && isArray(obj)) { + obj = utils.maybeMap(obj, function (value) { + if (value instanceof Date) { + return serializeDate(value); + } + return value; + }); + } + + if (obj === null) { + if (strictNullHandling) { + return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix; + } + + obj = ''; + } + + if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) { + if (encoder) { + var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format); + return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))]; + } + return [formatter(prefix) + '=' + formatter(String(obj))]; + } + + var values = []; + + if (typeof obj === 'undefined') { + return values; + } + + var objKeys; + if (generateArrayPrefix === 'comma' && isArray(obj)) { + // we need to join elements in + if (encodeValuesOnly && encoder) { + obj = utils.maybeMap(obj, encoder); + } + objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }]; + } else if (isArray(filter)) { + objKeys = filter; + } else { + var keys = Object.keys(obj); + objKeys = sort ? keys.sort(sort) : keys; + } + + var encodedPrefix = encodeDotInKeys ? String(prefix).replace(/\./g, '%2E') : String(prefix); + + var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix; + + if (allowEmptyArrays && isArray(obj) && obj.length === 0) { + return adjustedPrefix + '[]'; + } + + for (var j = 0; j < objKeys.length; ++j) { + var key = objKeys[j]; + var value = typeof key === 'object' && key && typeof key.value !== 'undefined' + ? key.value + : obj[key]; + + if (skipNulls && value === null) { + continue; + } + + var encodedKey = allowDots && encodeDotInKeys ? String(key).replace(/\./g, '%2E') : String(key); + var keyPrefix = isArray(obj) + ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix + : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']'); + + sideChannel.set(object, step); + var valueSideChannel = getSideChannel(); + valueSideChannel.set(sentinel, sideChannel); + pushToArray(values, stringify( + value, + keyPrefix, + generateArrayPrefix, + commaRoundTrip, + allowEmptyArrays, + strictNullHandling, + skipNulls, + encodeDotInKeys, + generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder, + filter, + sort, + allowDots, + serializeDate, + format, + formatter, + encodeValuesOnly, + charset, + valueSideChannel + )); + } + + return values; + }; + + var normalizeStringifyOptions = function normalizeStringifyOptions(opts) { + if (!opts) { + return defaults; + } + + if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') { + throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided'); + } + + if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') { + throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided'); + } + + if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') { + throw new TypeError('Encoder has to be a function.'); + } + + var charset = opts.charset || defaults.charset; + if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') { + throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'); + } + + var format = formats['default']; + if (typeof opts.format !== 'undefined') { + if (!has.call(formats.formatters, opts.format)) { + throw new TypeError('Unknown format option provided.'); + } + format = opts.format; + } + var formatter = formats.formatters[format]; + + var filter = defaults.filter; + if (typeof opts.filter === 'function' || isArray(opts.filter)) { + filter = opts.filter; + } + + var arrayFormat; + if (opts.arrayFormat in arrayPrefixGenerators) { + arrayFormat = opts.arrayFormat; + } else if ('indices' in opts) { + arrayFormat = opts.indices ? 'indices' : 'repeat'; + } else { + arrayFormat = defaults.arrayFormat; + } + + if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') { + throw new TypeError('`commaRoundTrip` must be a boolean, or absent'); + } + + var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots; + + return { + addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix, + allowDots: allowDots, + allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays, + arrayFormat: arrayFormat, + charset: charset, + charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel, + commaRoundTrip: !!opts.commaRoundTrip, + delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter, + encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode, + encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys, + encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder, + encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly, + filter: filter, + format: format, + formatter: formatter, + serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate, + skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls, + sort: typeof opts.sort === 'function' ? opts.sort : null, + strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling + }; + }; + + stringify_1 = function (object, opts) { + var obj = object; + var options = normalizeStringifyOptions(opts); + + var objKeys; + var filter; + + if (typeof options.filter === 'function') { + filter = options.filter; + obj = filter('', obj); + } else if (isArray(options.filter)) { + filter = options.filter; + objKeys = filter; + } + + var keys = []; + + if (typeof obj !== 'object' || obj === null) { + return ''; + } + + var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat]; + var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip; + + if (!objKeys) { + objKeys = Object.keys(obj); + } + + if (options.sort) { + objKeys.sort(options.sort); + } + + var sideChannel = getSideChannel(); + for (var i = 0; i < objKeys.length; ++i) { + var key = objKeys[i]; + var value = obj[key]; + + if (options.skipNulls && value === null) { + continue; + } + pushToArray(keys, stringify( + value, + key, + generateArrayPrefix, + commaRoundTrip, + options.allowEmptyArrays, + options.strictNullHandling, + options.skipNulls, + options.encodeDotInKeys, + options.encode ? options.encoder : null, + options.filter, + options.sort, + options.allowDots, + options.serializeDate, + options.format, + options.formatter, + options.encodeValuesOnly, + options.charset, + sideChannel + )); + } + + var joined = keys.join(options.delimiter); + var prefix = options.addQueryPrefix === true ? '?' : ''; + + if (options.charsetSentinel) { + if (options.charset === 'iso-8859-1') { + // encodeURIComponent('✓'), the "numeric entity" representation of a checkmark + prefix += 'utf8=%26%2310003%3B&'; + } else { + // encodeURIComponent('✓') + prefix += 'utf8=%E2%9C%93&'; + } + } + + return joined.length > 0 ? prefix + joined : ''; + }; + return stringify_1; +} + +var parse; +var hasRequiredParse; + +function requireParse () { + if (hasRequiredParse) return parse; + hasRequiredParse = 1; + + var utils = /*@__PURE__*/ requireUtils$1(); + + var has = Object.prototype.hasOwnProperty; + var isArray = Array.isArray; + + var defaults = { + allowDots: false, + allowEmptyArrays: false, + allowPrototypes: false, + allowSparse: false, + arrayLimit: 20, + charset: 'utf-8', + charsetSentinel: false, + comma: false, + decodeDotInKeys: false, + decoder: utils.decode, + delimiter: '&', + depth: 5, + duplicates: 'combine', + ignoreQueryPrefix: false, + interpretNumericEntities: false, + parameterLimit: 1000, + parseArrays: true, + plainObjects: false, + strictDepth: false, + strictMerge: true, + strictNullHandling: false, + throwOnLimitExceeded: false + }; + + var interpretNumericEntities = function (str) { + return str.replace(/&#(\d+);/g, function ($0, numberStr) { + return String.fromCharCode(parseInt(numberStr, 10)); + }); + }; + + var parseArrayValue = function (val, options, currentArrayLength) { + if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) { + return val.split(','); + } + + if (options.throwOnLimitExceeded && currentArrayLength >= options.arrayLimit) { + throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.'); + } + + return val; + }; + + // This is what browsers will submit when the ✓ character occurs in an + // application/x-www-form-urlencoded body and the encoding of the page containing + // the form is iso-8859-1, or when the submitted form has an accept-charset + // attribute of iso-8859-1. Presumably also with other charsets that do not contain + // the ✓ character, such as us-ascii. + var isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓') + + // These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded. + var charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓') + + var parseValues = function parseQueryStringValues(str, options) { + var obj = { __proto__: null }; + + var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str; + cleanStr = cleanStr.replace(/%5B/gi, '[').replace(/%5D/gi, ']'); + + var limit = options.parameterLimit === Infinity ? void undefined : options.parameterLimit; + var parts = cleanStr.split( + options.delimiter, + options.throwOnLimitExceeded ? limit + 1 : limit + ); + + if (options.throwOnLimitExceeded && parts.length > limit) { + throw new RangeError('Parameter limit exceeded. Only ' + limit + ' parameter' + (limit === 1 ? '' : 's') + ' allowed.'); + } + + var skipIndex = -1; // Keep track of where the utf8 sentinel was found + var i; + + var charset = options.charset; + if (options.charsetSentinel) { + for (i = 0; i < parts.length; ++i) { + if (parts[i].indexOf('utf8=') === 0) { + if (parts[i] === charsetSentinel) { + charset = 'utf-8'; + } else if (parts[i] === isoSentinel) { + charset = 'iso-8859-1'; + } + skipIndex = i; + i = parts.length; // The eslint settings do not allow break; + } + } + } + + for (i = 0; i < parts.length; ++i) { + if (i === skipIndex) { + continue; + } + var part = parts[i]; + + var bracketEqualsPos = part.indexOf(']='); + var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1; + + var key; + var val; + if (pos === -1) { + key = options.decoder(part, defaults.decoder, charset, 'key'); + val = options.strictNullHandling ? null : ''; + } else { + key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key'); + + if (key !== null) { + val = utils.maybeMap( + parseArrayValue( + part.slice(pos + 1), + options, + isArray(obj[key]) ? obj[key].length : 0 + ), + function (encodedVal) { + return options.decoder(encodedVal, defaults.decoder, charset, 'value'); + } + ); + } + } + + if (val && options.interpretNumericEntities && charset === 'iso-8859-1') { + val = interpretNumericEntities(String(val)); + } + + if (part.indexOf('[]=') > -1) { + val = isArray(val) ? [val] : val; + } + + if (options.comma && isArray(val) && val.length > options.arrayLimit) { + if (options.throwOnLimitExceeded) { + throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.'); + } + val = utils.combine([], val, options.arrayLimit, options.plainObjects); + } + + if (key !== null) { + var existing = has.call(obj, key); + if (existing && (options.duplicates === 'combine' || part.indexOf('[]=') > -1)) { + obj[key] = utils.combine( + obj[key], + val, + options.arrayLimit, + options.plainObjects + ); + } else if (!existing || options.duplicates === 'last') { + obj[key] = val; + } + } + } + + return obj; + }; + + var parseObject = function (chain, val, options, valuesParsed) { + var currentArrayLength = 0; + if (chain.length > 0 && chain[chain.length - 1] === '[]') { + var parentKey = chain.slice(0, -1).join(''); + currentArrayLength = Array.isArray(val) && val[parentKey] ? val[parentKey].length : 0; + } + + var leaf = valuesParsed ? val : parseArrayValue(val, options, currentArrayLength); + + for (var i = chain.length - 1; i >= 0; --i) { + var obj; + var root = chain[i]; + + if (root === '[]' && options.parseArrays) { + if (utils.isOverflow(leaf)) { + // leaf is already an overflow object, preserve it + obj = leaf; + } else { + obj = options.allowEmptyArrays && (leaf === '' || (options.strictNullHandling && leaf === null)) + ? [] + : utils.combine( + [], + leaf, + options.arrayLimit, + options.plainObjects + ); + } + } else { + obj = options.plainObjects ? { __proto__: null } : {}; + var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root; + var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot; + var index = parseInt(decodedRoot, 10); + var isValidArrayIndex = !isNaN(index) + && root !== decodedRoot + && String(index) === decodedRoot + && index >= 0 + && options.parseArrays; + if (!options.parseArrays && decodedRoot === '') { + obj = { 0: leaf }; + } else if (isValidArrayIndex && index < options.arrayLimit) { + obj = []; + obj[index] = leaf; + } else if (isValidArrayIndex && options.throwOnLimitExceeded) { + throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.'); + } else if (isValidArrayIndex) { + obj[index] = leaf; + utils.markOverflow(obj, index); + } else if (decodedRoot !== '__proto__') { + obj[decodedRoot] = leaf; + } + } + + leaf = obj; + } + + return leaf; + }; + + var splitKeyIntoSegments = function splitKeyIntoSegments(givenKey, options) { + var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, '[$1]') : givenKey; + + if (options.depth <= 0) { + if (!options.plainObjects && has.call(Object.prototype, key)) { + if (!options.allowPrototypes) { + return; + } + } + + return [key]; + } + + var brackets = /(\[[^[\]]*])/; + var child = /(\[[^[\]]*])/g; + + var segment = brackets.exec(key); + var parent = segment ? key.slice(0, segment.index) : key; + + var keys = []; + + if (parent) { + if (!options.plainObjects && has.call(Object.prototype, parent)) { + if (!options.allowPrototypes) { + return; + } + } + + keys[keys.length] = parent; + } + + var i = 0; + while ((segment = child.exec(key)) !== null && i < options.depth) { + i += 1; + + var segmentContent = segment[1].slice(1, -1); + if (!options.plainObjects && has.call(Object.prototype, segmentContent)) { + if (!options.allowPrototypes) { + return; + } + } + + keys[keys.length] = segment[1]; + } + + if (segment) { + if (options.strictDepth === true) { + throw new RangeError('Input depth exceeded depth option of ' + options.depth + ' and strictDepth is true'); + } + + keys[keys.length] = '[' + key.slice(segment.index) + ']'; + } + + return keys; + }; + + var parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) { + if (!givenKey) { + return; + } + + var keys = splitKeyIntoSegments(givenKey, options); + + if (!keys) { + return; + } + + return parseObject(keys, val, options, valuesParsed); + }; + + var normalizeParseOptions = function normalizeParseOptions(opts) { + if (!opts) { + return defaults; + } + + if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') { + throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided'); + } + + if (typeof opts.decodeDotInKeys !== 'undefined' && typeof opts.decodeDotInKeys !== 'boolean') { + throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided'); + } + + if (opts.decoder !== null && typeof opts.decoder !== 'undefined' && typeof opts.decoder !== 'function') { + throw new TypeError('Decoder has to be a function.'); + } + + if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') { + throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'); + } + + if (typeof opts.throwOnLimitExceeded !== 'undefined' && typeof opts.throwOnLimitExceeded !== 'boolean') { + throw new TypeError('`throwOnLimitExceeded` option must be a boolean'); + } + + var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset; + + var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates; + + if (duplicates !== 'combine' && duplicates !== 'first' && duplicates !== 'last') { + throw new TypeError('The duplicates option must be either combine, first, or last'); + } + + var allowDots = typeof opts.allowDots === 'undefined' ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots; + + return { + allowDots: allowDots, + allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays, + allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes, + allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse, + arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit, + charset: charset, + charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel, + comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma, + decodeDotInKeys: typeof opts.decodeDotInKeys === 'boolean' ? opts.decodeDotInKeys : defaults.decodeDotInKeys, + decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder, + delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter, + // eslint-disable-next-line no-implicit-coercion, no-extra-parens + depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth, + duplicates: duplicates, + ignoreQueryPrefix: opts.ignoreQueryPrefix === true, + interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities, + parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit, + parseArrays: opts.parseArrays !== false, + plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects, + strictDepth: typeof opts.strictDepth === 'boolean' ? !!opts.strictDepth : defaults.strictDepth, + strictMerge: typeof opts.strictMerge === 'boolean' ? !!opts.strictMerge : defaults.strictMerge, + strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling, + throwOnLimitExceeded: typeof opts.throwOnLimitExceeded === 'boolean' ? opts.throwOnLimitExceeded : false + }; + }; + + parse = function (str, opts) { + var options = normalizeParseOptions(opts); + + if (str === '' || str === null || typeof str === 'undefined') { + return options.plainObjects ? { __proto__: null } : {}; + } + + var tempObj = typeof str === 'string' ? parseValues(str, options) : str; + var obj = options.plainObjects ? { __proto__: null } : {}; + + // Iterate over the keys and setup the new object + + var keys = Object.keys(tempObj); + for (var i = 0; i < keys.length; ++i) { + var key = keys[i]; + var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string'); + obj = utils.merge(obj, newObj, options); + } + + if (options.allowSparse === true) { + return obj; + } + + return utils.compact(obj); + }; + return parse; +} + +var lib$4; +var hasRequiredLib$7; + +function requireLib$7 () { + if (hasRequiredLib$7) return lib$4; + hasRequiredLib$7 = 1; + + var stringify = /*@__PURE__*/ requireStringify(); + var parse = /*@__PURE__*/ requireParse(); + var formats = /*@__PURE__*/ requireFormats(); + + lib$4 = { + formats: formats, + parse: parse, + stringify: stringify + }; + return lib$4; +} + +/* + * Copyright Joyent, Inc. and other Node contributors. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to permit + * persons to whom the Software is furnished to do so, subject to the + * following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + * USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +var hasRequiredUrl; + +function requireUrl () { + if (hasRequiredUrl) return url; + hasRequiredUrl = 1; + + var punycode = requirePunycode(); + + function Url() { + this.protocol = null; + this.slashes = null; + this.auth = null; + this.host = null; + this.port = null; + this.hostname = null; + this.hash = null; + this.search = null; + this.query = null; + this.pathname = null; + this.path = null; + this.href = null; + } + + // Reference: RFC 3986, RFC 1808, RFC 2396 + + /* + * define these here so at least they only have to be + * compiled once on the first module load. + */ + var protocolPattern = /^([a-z0-9.+-]+:)/i, + portPattern = /:[0-9]*$/, + + // Special case for a simple path URL + simplePathPattern = /^(\/\/?(?!\/)[^?\s]*)(\?[^\s]*)?$/, + + /* + * RFC 2396: characters reserved for delimiting URLs. + * We actually just auto-escape these. + */ + delims = [ + '<', '>', '"', '`', ' ', '\r', '\n', '\t' + ], + + // RFC 2396: characters not allowed for various reasons. + unwise = [ + '{', '}', '|', '\\', '^', '`' + ].concat(delims), + + // Allowed by RFCs, but cause of XSS attacks. Always escape these. + autoEscape = ['\''].concat(unwise), + /* + * Characters that are never ever allowed in a hostname. + * Note that any invalid chars are also handled, but these + * are the ones that are *expected* to be seen, so we fast-path + * them. + */ + nonHostChars = [ + '%', '/', '?', ';', '#' + ].concat(autoEscape), + hostEndingChars = [ + '/', '?', '#' + ], + hostnameMaxLen = 255, + hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/, + hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/, + // protocols that can allow "unsafe" and "unwise" chars. + unsafeProtocol = { + javascript: true, + 'javascript:': true + }, + // protocols that never have a hostname. + hostlessProtocol = { + javascript: true, + 'javascript:': true + }, + // protocols that always contain a // bit. + slashedProtocol = { + http: true, + https: true, + ftp: true, + gopher: true, + file: true, + 'http:': true, + 'https:': true, + 'ftp:': true, + 'gopher:': true, + 'file:': true + }, + querystring = /*@__PURE__*/ requireLib$7(); + + function urlParse(url, parseQueryString, slashesDenoteHost) { + if (url && typeof url === 'object' && url instanceof Url) { return url; } + + var u = new Url(); + u.parse(url, parseQueryString, slashesDenoteHost); + return u; + } + + Url.prototype.parse = function (url, parseQueryString, slashesDenoteHost) { + if (typeof url !== 'string') { + throw new TypeError("Parameter 'url' must be a string, not " + typeof url); + } + + /* + * Copy chrome, IE, opera backslash-handling behavior. + * Back slashes before the query string get converted to forward slashes + * See: https://code.google.com/p/chromium/issues/detail?id=25916 + */ + var queryIndex = url.indexOf('?'), + splitter = queryIndex !== -1 && queryIndex < url.indexOf('#') ? '?' : '#', + uSplit = url.split(splitter), + slashRegex = /\\/g; + uSplit[0] = uSplit[0].replace(slashRegex, '/'); + url = uSplit.join(splitter); + + var rest = url; + + /* + * trim before proceeding. + * This is to support parse stuff like " http://foo.com \n" + */ + rest = rest.trim(); + + if (!slashesDenoteHost && url.split('#').length === 1) { + // Try fast path regexp + var simplePath = simplePathPattern.exec(rest); + if (simplePath) { + this.path = rest; + this.href = rest; + this.pathname = simplePath[1]; + if (simplePath[2]) { + this.search = simplePath[2]; + if (parseQueryString) { + this.query = querystring.parse(this.search.substr(1)); + } else { + this.query = this.search.substr(1); + } + } else if (parseQueryString) { + this.search = ''; + this.query = {}; + } + return this; + } + } + + var proto = protocolPattern.exec(rest); + if (proto) { + proto = proto[0]; + var lowerProto = proto.toLowerCase(); + this.protocol = lowerProto; + rest = rest.substr(proto.length); + } + + /* + * figure out if it's got a host + * user@server is *always* interpreted as a hostname, and url + * resolution will treat //foo/bar as host=foo,path=bar because that's + * how the browser resolves relative URLs. + */ + if (slashesDenoteHost || proto || rest.match(/^\/\/[^@/]+@[^@/]+/)) { + var slashes = rest.substr(0, 2) === '//'; + if (slashes && !(proto && hostlessProtocol[proto])) { + rest = rest.substr(2); + this.slashes = true; + } + } + + if (!hostlessProtocol[proto] && (slashes || (proto && !slashedProtocol[proto]))) { + + /* + * there's a hostname. + * the first instance of /, ?, ;, or # ends the host. + * + * If there is an @ in the hostname, then non-host chars *are* allowed + * to the left of the last @ sign, unless some host-ending character + * comes *before* the @-sign. + * URLs are obnoxious. + * + * ex: + * http://a@b@c/ => user:a@b host:c + * http://a@b?@c => user:a host:c path:/?@c + */ + + /* + * v0.12 TODO(isaacs): This is not quite how Chrome does things. + * Review our test case against browsers more comprehensively. + */ + + // find the first instance of any hostEndingChars + var hostEnd = -1; + for (var i = 0; i < hostEndingChars.length; i++) { + var hec = rest.indexOf(hostEndingChars[i]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; } + } + + /* + * at this point, either we have an explicit point where the + * auth portion cannot go past, or the last @ char is the decider. + */ + var auth, atSign; + if (hostEnd === -1) { + // atSign can be anywhere. + atSign = rest.lastIndexOf('@'); + } else { + /* + * atSign must be in auth portion. + * http://a@b/c@d => host:b auth:a path:/c@d + */ + atSign = rest.lastIndexOf('@', hostEnd); + } + + /* + * Now we have a portion which is definitely the auth. + * Pull that off. + */ + if (atSign !== -1) { + auth = rest.slice(0, atSign); + rest = rest.slice(atSign + 1); + this.auth = decodeURIComponent(auth); + } + + // the host is the remaining to the left of the first non-host char + hostEnd = -1; + for (var i = 0; i < nonHostChars.length; i++) { + var hec = rest.indexOf(nonHostChars[i]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; } + } + // if we still have not hit it, then the entire thing is a host. + if (hostEnd === -1) { hostEnd = rest.length; } + + this.host = rest.slice(0, hostEnd); + rest = rest.slice(hostEnd); + + // pull out port. + this.parseHost(); + + /* + * we've indicated that there is a hostname, + * so even if it's empty, it has to be present. + */ + this.hostname = this.hostname || ''; + + /* + * if hostname begins with [ and ends with ] + * assume that it's an IPv6 address. + */ + var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']'; + + // validate a little. + if (!ipv6Hostname) { + var hostparts = this.hostname.split(/\./); + for (var i = 0, l = hostparts.length; i < l; i++) { + var part = hostparts[i]; + if (!part) { continue; } + if (!part.match(hostnamePartPattern)) { + var newpart = ''; + for (var j = 0, k = part.length; j < k; j++) { + if (part.charCodeAt(j) > 127) { + /* + * we replace non-ASCII char with a temporary placeholder + * we need this to make sure size of hostname is not + * broken by replacing non-ASCII by nothing + */ + newpart += 'x'; + } else { + newpart += part[j]; + } + } + // we test again with ASCII char only + if (!newpart.match(hostnamePartPattern)) { + var validParts = hostparts.slice(0, i); + var notHost = hostparts.slice(i + 1); + var bit = part.match(hostnamePartStart); + if (bit) { + validParts.push(bit[1]); + notHost.unshift(bit[2]); + } + if (notHost.length) { + rest = '/' + notHost.join('.') + rest; + } + this.hostname = validParts.join('.'); + break; + } + } + } + } + + if (this.hostname.length > hostnameMaxLen) { + this.hostname = ''; + } else { + // hostnames are always lower case. + this.hostname = this.hostname.toLowerCase(); + } + + if (!ipv6Hostname) { + /* + * IDNA Support: Returns a punycoded representation of "domain". + * It only converts parts of the domain name that + * have non-ASCII characters, i.e. it doesn't matter if + * you call it with a domain that already is ASCII-only. + */ + this.hostname = punycode.toASCII(this.hostname); + } + + var p = this.port ? ':' + this.port : ''; + var h = this.hostname || ''; + this.host = h + p; + this.href += this.host; + + /* + * strip [ and ] from the hostname + * the host field still retains them, though + */ + if (ipv6Hostname) { + this.hostname = this.hostname.substr(1, this.hostname.length - 2); + if (rest[0] !== '/') { + rest = '/' + rest; + } + } + } + + /* + * now rest is set to the post-host stuff. + * chop off any delim chars. + */ + if (!unsafeProtocol[lowerProto]) { + + /* + * First, make 100% sure that any "autoEscape" chars get + * escaped, even if encodeURIComponent doesn't think they + * need to be. + */ + for (var i = 0, l = autoEscape.length; i < l; i++) { + var ae = autoEscape[i]; + if (rest.indexOf(ae) === -1) { continue; } + var esc = encodeURIComponent(ae); + if (esc === ae) { + esc = escape(ae); + } + rest = rest.split(ae).join(esc); + } + } + + // chop off from the tail first. + var hash = rest.indexOf('#'); + if (hash !== -1) { + // got a fragment string. + this.hash = rest.substr(hash); + rest = rest.slice(0, hash); + } + var qm = rest.indexOf('?'); + if (qm !== -1) { + this.search = rest.substr(qm); + this.query = rest.substr(qm + 1); + if (parseQueryString) { + this.query = querystring.parse(this.query); + } + rest = rest.slice(0, qm); + } else if (parseQueryString) { + // no query string, but parseQueryString still requested + this.search = ''; + this.query = {}; + } + if (rest) { this.pathname = rest; } + if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) { + this.pathname = '/'; + } + + // to support http.request + if (this.pathname || this.search) { + var p = this.pathname || ''; + var s = this.search || ''; + this.path = p + s; + } + + // finally, reconstruct the href based on what has been validated. + this.href = this.format(); + return this; + }; + + // format a parsed object into a url string + function urlFormat(obj) { + /* + * ensure it's an object, and not a string url. + * If it's an obj, this is a no-op. + * this way, you can call url_format() on strings + * to clean up potentially wonky urls. + */ + if (typeof obj === 'string') { obj = urlParse(obj); } + if (!(obj instanceof Url)) { return Url.prototype.format.call(obj); } + return obj.format(); + } + + Url.prototype.format = function () { + var auth = this.auth || ''; + if (auth) { + auth = encodeURIComponent(auth); + auth = auth.replace(/%3A/i, ':'); + auth += '@'; + } + + var protocol = this.protocol || '', + pathname = this.pathname || '', + hash = this.hash || '', + host = false, + query = ''; + + if (this.host) { + host = auth + this.host; + } else if (this.hostname) { + host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']'); + if (this.port) { + host += ':' + this.port; + } + } + + if (this.query && typeof this.query === 'object' && Object.keys(this.query).length) { + query = querystring.stringify(this.query, { + arrayFormat: 'repeat', + addQueryPrefix: false + }); + } + + var search = this.search || (query && ('?' + query)) || ''; + + if (protocol && protocol.substr(-1) !== ':') { protocol += ':'; } + + /* + * only the slashedProtocols get the //. Not mailto:, xmpp:, etc. + * unless they had them to begin with. + */ + if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) { + host = '//' + (host || ''); + if (pathname && pathname.charAt(0) !== '/') { pathname = '/' + pathname; } + } else if (!host) { + host = ''; + } + + if (hash && hash.charAt(0) !== '#') { hash = '#' + hash; } + if (search && search.charAt(0) !== '?') { search = '?' + search; } + + pathname = pathname.replace(/[?#]/g, function (match) { + return encodeURIComponent(match); + }); + search = search.replace('#', '%23'); + + return protocol + host + pathname + search + hash; + }; + + function urlResolve(source, relative) { + return urlParse(source, false, true).resolve(relative); + } + + Url.prototype.resolve = function (relative) { + return this.resolveObject(urlParse(relative, false, true)).format(); + }; + + function urlResolveObject(source, relative) { + if (!source) { return relative; } + return urlParse(source, false, true).resolveObject(relative); + } + + Url.prototype.resolveObject = function (relative) { + if (typeof relative === 'string') { + var rel = new Url(); + rel.parse(relative, false, true); + relative = rel; + } + + var result = new Url(); + var tkeys = Object.keys(this); + for (var tk = 0; tk < tkeys.length; tk++) { + var tkey = tkeys[tk]; + result[tkey] = this[tkey]; + } + + /* + * hash is always overridden, no matter what. + * even href="" will remove it. + */ + result.hash = relative.hash; + + // if the relative url is empty, then there's nothing left to do here. + if (relative.href === '') { + result.href = result.format(); + return result; + } + + // hrefs like //foo/bar always cut to the protocol. + if (relative.slashes && !relative.protocol) { + // take everything except the protocol from relative + var rkeys = Object.keys(relative); + for (var rk = 0; rk < rkeys.length; rk++) { + var rkey = rkeys[rk]; + if (rkey !== 'protocol') { result[rkey] = relative[rkey]; } + } + + // urlParse appends trailing / to urls like http://www.example.com + if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) { + result.pathname = '/'; + result.path = result.pathname; + } + + result.href = result.format(); + return result; + } + + if (relative.protocol && relative.protocol !== result.protocol) { + /* + * if it's a known url protocol, then changing + * the protocol does weird things + * first, if it's not file:, then we MUST have a host, + * and if there was a path + * to begin with, then we MUST have a path. + * if it is file:, then the host is dropped, + * because that's known to be hostless. + * anything else is assumed to be absolute. + */ + if (!slashedProtocol[relative.protocol]) { + var keys = Object.keys(relative); + for (var v = 0; v < keys.length; v++) { + var k = keys[v]; + result[k] = relative[k]; + } + result.href = result.format(); + return result; + } + + result.protocol = relative.protocol; + if (!relative.host && !hostlessProtocol[relative.protocol]) { + var relPath = (relative.pathname || '').split('/'); + while (relPath.length && !(relative.host = relPath.shift())) { } + if (!relative.host) { relative.host = ''; } + if (!relative.hostname) { relative.hostname = ''; } + if (relPath[0] !== '') { relPath.unshift(''); } + if (relPath.length < 2) { relPath.unshift(''); } + result.pathname = relPath.join('/'); + } else { + result.pathname = relative.pathname; + } + result.search = relative.search; + result.query = relative.query; + result.host = relative.host || ''; + result.auth = relative.auth; + result.hostname = relative.hostname || relative.host; + result.port = relative.port; + // to support http.request + if (result.pathname || result.search) { + var p = result.pathname || ''; + var s = result.search || ''; + result.path = p + s; + } + result.slashes = result.slashes || relative.slashes; + result.href = result.format(); + return result; + } + + var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/', + isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/', + mustEndAbs = isRelAbs || isSourceAbs || (result.host && relative.pathname), + removeAllDots = mustEndAbs, + srcPath = result.pathname && result.pathname.split('/') || [], + relPath = relative.pathname && relative.pathname.split('/') || [], + psychotic = result.protocol && !slashedProtocol[result.protocol]; + + /* + * if the url is a non-slashed url, then relative + * links like ../.. should be able + * to crawl up to the hostname, as well. This is strange. + * result.protocol has already been set by now. + * Later on, put the first path part into the host field. + */ + if (psychotic) { + result.hostname = ''; + result.port = null; + if (result.host) { + if (srcPath[0] === '') { srcPath[0] = result.host; } else { srcPath.unshift(result.host); } + } + result.host = ''; + if (relative.protocol) { + relative.hostname = null; + relative.port = null; + if (relative.host) { + if (relPath[0] === '') { relPath[0] = relative.host; } else { relPath.unshift(relative.host); } + } + relative.host = null; + } + mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === ''); + } + + if (isRelAbs) { + // it's absolute. + result.host = relative.host || relative.host === '' ? relative.host : result.host; + result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname; + result.search = relative.search; + result.query = relative.query; + srcPath = relPath; + // fall through to the dot-handling below. + } else if (relPath.length) { + /* + * it's relative + * throw away the existing file, and take the new path instead. + */ + if (!srcPath) { srcPath = []; } + srcPath.pop(); + srcPath = srcPath.concat(relPath); + result.search = relative.search; + result.query = relative.query; + } else if (relative.search != null) { + /* + * just pull out the search. + * like href='?foo'. + * Put this after the other two cases because it simplifies the booleans + */ + if (psychotic) { + result.host = srcPath.shift(); + result.hostname = result.host; + /* + * occationaly the auth can get stuck only in host + * this especially happens in cases like + * url.resolveObject('mailto:local1@domain1', 'local2@domain2') + */ + var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false; + if (authInHost) { + result.auth = authInHost.shift(); + result.hostname = authInHost.shift(); + result.host = result.hostname; + } + } + result.search = relative.search; + result.query = relative.query; + // to support http.request + if (result.pathname !== null || result.search !== null) { + result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : ''); + } + result.href = result.format(); + return result; + } + + if (!srcPath.length) { + /* + * no path at all. easy. + * we've already handled the other stuff above. + */ + result.pathname = null; + // to support http.request + if (result.search) { + result.path = '/' + result.search; + } else { + result.path = null; + } + result.href = result.format(); + return result; + } + + /* + * if a url ENDs in . or .., then it must get a trailing slash. + * however, if it ends in anything else non-slashy, + * then it must NOT get a trailing slash. + */ + var last = srcPath.slice(-1)[0]; + var hasTrailingSlash = (result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..') || last === ''; + + /* + * strip single dots, resolve double dots to parent dir + * if the path tries to go above the root, `up` ends up > 0 + */ + var up = 0; + for (var i = srcPath.length; i >= 0; i--) { + last = srcPath[i]; + if (last === '.') { + srcPath.splice(i, 1); + } else if (last === '..') { + srcPath.splice(i, 1); + up++; + } else if (up) { + srcPath.splice(i, 1); + up--; + } + } + + // if the path is allowed to go above the root, restore leading ..s + if (!mustEndAbs && !removeAllDots) { + for (; up--; up) { + srcPath.unshift('..'); + } + } + + if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) { + srcPath.unshift(''); + } + + if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) { + srcPath.push(''); + } + + var isAbsolute = srcPath[0] === '' || (srcPath[0] && srcPath[0].charAt(0) === '/'); + + // put the host back + if (psychotic) { + result.hostname = isAbsolute ? '' : srcPath.length ? srcPath.shift() : ''; + result.host = result.hostname; + /* + * occationaly the auth can get stuck only in host + * this especially happens in cases like + * url.resolveObject('mailto:local1@domain1', 'local2@domain2') + */ + var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false; + if (authInHost) { + result.auth = authInHost.shift(); + result.hostname = authInHost.shift(); + result.host = result.hostname; + } + } + + mustEndAbs = mustEndAbs || (result.host && srcPath.length); + + if (mustEndAbs && !isAbsolute) { + srcPath.unshift(''); + } + + if (srcPath.length > 0) { + result.pathname = srcPath.join('/'); + } else { + result.pathname = null; + result.path = null; + } + + // to support request.http + if (result.pathname !== null || result.search !== null) { + result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : ''); + } + result.auth = relative.auth || result.auth; + result.slashes = result.slashes || relative.slashes; + result.href = result.format(); + return result; + }; + + Url.prototype.parseHost = function () { + var host = this.host; + var port = portPattern.exec(host); + if (port) { + port = port[0]; + if (port !== ':') { + this.port = port.substr(1); + } + host = host.substr(0, host.length - port.length); + } + if (host) { this.hostname = host; } + }; + + url.parse = urlParse; + url.resolve = urlResolve; + url.resolveObject = urlResolveObject; + url.format = urlFormat; + + url.Url = Url; + return url; +} + +var hasRequiredUtil$3; + +function requireUtil$3 () { + if (hasRequiredUtil$3) return util$3; + hasRequiredUtil$3 = 1; + (function (exports$1) { + Object.defineProperty(exports$1, "__esModule", { value: true }); + exports$1.filenameToSteps = exports$1.resolve = exports$1.unixify = exports$1.isWin = void 0; + exports$1.isFd = isFd; + exports$1.validateFd = validateFd; + exports$1.dataToBuffer = dataToBuffer; + exports$1.nullCheck = nullCheck; + exports$1.pathToFilename = pathToFilename; + exports$1.createError = createError; + exports$1.createStatError = createStatError; + const path_1 = requirePath$1(); + const buffer_1 = requireBuffer(); + const errors = requireErrors$1(); + const process_1 = requireProcess(); + const encoding_1 = requireEncoding(); + const fs_node_utils_1 = requireLib$8(); + exports$1.isWin = process_1.default.platform === 'win32'; + const resolveCrossPlatform = path_1.resolve; + const pathSep = path_1.posix ? path_1.posix.sep : path_1.sep; + const isSeparator = (str, i) => { + let char = str[i]; + return i > 0 && (char === '/' || (exports$1.isWin && char === '\\')); + }; + const removeTrailingSeparator = (str) => { + let i = str.length - 1; + if (i < 2) + return str; + while (isSeparator(str, i)) + i--; + return str.substr(0, i + 1); + }; + const normalizePath = (str, stripTrailing) => { + if (typeof str !== 'string') + throw new TypeError('expected a string'); + str = str.replace(/[\\\/]+/g, '/'); + if (stripTrailing !== false) + str = removeTrailingSeparator(str); + return str; + }; + const unixify = (filepath, stripTrailing = true) => { + if (exports$1.isWin) { + filepath = normalizePath(filepath, stripTrailing); + return filepath.replace(/^([a-zA-Z]+:|\.\/)/, ''); + } + return filepath; + }; + exports$1.unixify = unixify; + let resolve = (filename, base = process_1.default.cwd()) => resolveCrossPlatform(base, filename); + exports$1.resolve = resolve; + if (exports$1.isWin) { + const _resolve = resolve; + exports$1.resolve = resolve = (filename, base) => (0, exports$1.unixify)(_resolve(filename, base)); + } + const filenameToSteps = (filename, base) => { + const fullPath = resolve(filename, base); + const fullPathSansSlash = fullPath.substring(1); + if (!fullPathSansSlash) + return []; + return fullPathSansSlash.split(pathSep); + }; + exports$1.filenameToSteps = filenameToSteps; + function isFd(path) { + return path >>> 0 === path; + } + function validateFd(fd) { + if (!isFd(fd)) + throw TypeError(fs_node_utils_1.ERRSTR.FD); + } + function dataToBuffer(data, encoding = encoding_1.ENCODING_UTF8) { + if (buffer_1.Buffer.isBuffer(data)) + return data; + else if (data instanceof Uint8Array) + return (0, buffer_1.bufferFrom)(data); + else if (encoding === 'buffer') + return (0, buffer_1.bufferFrom)(String(data), 'utf8'); + else + return (0, buffer_1.bufferFrom)(String(data), encoding); + } + function nullCheck(path, callback) { + if (('' + path).indexOf('\u0000') !== -1) { + const er = new Error('Path must be a string without null bytes'); + er.code = 'ENOENT'; + if (typeof callback !== 'function') + throw er; + Promise.resolve().then(() => callback(er)); + return false; + } + return true; + } + function getPathFromURLPosix(url) { + if (url.hostname !== '') { + throw new errors.TypeError('ERR_INVALID_FILE_URL_HOST', process_1.default.platform); + } + const pathname = url.pathname; + for (let n = 0; n < pathname.length; n++) { + if (pathname[n] === '%') { + const third = pathname.codePointAt(n + 2) | 0x20; + if (pathname[n + 1] === '2' && third === 102) { + throw new errors.TypeError('ERR_INVALID_FILE_URL_PATH', 'must not include encoded / characters'); + } + } + } + return decodeURIComponent(pathname); + } + function pathToFilename(path) { + if (path instanceof Uint8Array) { + path = (0, buffer_1.bufferFrom)(path); + } + if (typeof path !== 'string' && !buffer_1.Buffer.isBuffer(path)) { + try { + if (!(path instanceof requireUrl().URL)) + throw new TypeError(fs_node_utils_1.ERRSTR.PATH_STR); + } + catch (err) { + throw new TypeError(fs_node_utils_1.ERRSTR.PATH_STR); + } + path = getPathFromURLPosix(path); + } + const pathString = String(path); + nullCheck(pathString); + return pathString; + } + const ENOENT = 'ENOENT'; + const EBADF = 'EBADF'; + const EINVAL = 'EINVAL'; + const EPERM = 'EPERM'; + const EPROTO = 'EPROTO'; + const EEXIST = 'EEXIST'; + const ENOTDIR = 'ENOTDIR'; + const EMFILE = 'EMFILE'; + const EACCES = 'EACCES'; + const EISDIR = 'EISDIR'; + const ENOTEMPTY = 'ENOTEMPTY'; + const ENOSYS = 'ENOSYS'; + const ERR_FS_EISDIR = 'ERR_FS_EISDIR'; + const ERR_OUT_OF_RANGE = 'ERR_OUT_OF_RANGE'; + function formatError(errorCode, func = '', path = '', path2 = '') { + let pathFormatted = ''; + if (path) + pathFormatted = ` '${path}'`; + if (path2) + pathFormatted += ` -> '${path2}'`; + switch (errorCode) { + case ENOENT: + return `ENOENT: no such file or directory, ${func}${pathFormatted}`; + case EBADF: + return `EBADF: bad file descriptor, ${func}${pathFormatted}`; + case EINVAL: + return `EINVAL: invalid argument, ${func}${pathFormatted}`; + case EPERM: + return `EPERM: operation not permitted, ${func}${pathFormatted}`; + case EPROTO: + return `EPROTO: protocol error, ${func}${pathFormatted}`; + case EEXIST: + return `EEXIST: file already exists, ${func}${pathFormatted}`; + case ENOTDIR: + return `ENOTDIR: not a directory, ${func}${pathFormatted}`; + case EISDIR: + return `EISDIR: illegal operation on a directory, ${func}${pathFormatted}`; + case EACCES: + return `EACCES: permission denied, ${func}${pathFormatted}`; + case ENOTEMPTY: + return `ENOTEMPTY: directory not empty, ${func}${pathFormatted}`; + case EMFILE: + return `EMFILE: too many open files, ${func}${pathFormatted}`; + case ENOSYS: + return `ENOSYS: function not implemented, ${func}${pathFormatted}`; + case ERR_FS_EISDIR: + return `[ERR_FS_EISDIR]: Path is a directory: ${func} returned EISDIR (is a directory) ${path}`; + case ERR_OUT_OF_RANGE: + return `[ERR_OUT_OF_RANGE]: value out of range, ${func}${pathFormatted}`; + default: + return `${errorCode}: error occurred, ${func}${pathFormatted}`; + } + } + function createError(errorCode, func = '', path = '', path2 = '', Constructor = Error) { + const error = new Constructor(formatError(errorCode, func, path, path2)); + error.code = errorCode; + if (path) { + error.path = path; + } + return error; + } + function createStatError(errorCode, func = '', path = '', path2 = '') { + return { + code: errorCode, + message: formatError(errorCode, func, path, path2), + path, + toError() { + const error = new Error(this.message); + error.code = this.code; + if (this.path) { + error.path = this.path; + } + return error; + }, + }; + } + + } (util$3)); + return util$3; +} + +var hasRequiredSuperblock; + +function requireSuperblock () { + if (hasRequiredSuperblock) return Superblock; + hasRequiredSuperblock = 1; + Object.defineProperty(Superblock, "__esModule", { value: true }); + Superblock.Superblock = void 0; + const path_1 = requirePath$1(); + const Node_1 = requireNode(); + const Link_1 = requireLink(); + const File_1 = requireFile(); + const buffer_1 = requireBuffer(); + const process_1 = requireProcess(); + const fs_node_utils_1 = requireLib$8(); + const fs_node_utils_2 = requireLib$8(); + const util_1 = requireUtil$3(); + const json_1 = requireJson$1(); + const result_1 = requireResult(); + const pathSep = path_1.posix ? path_1.posix.sep : path_1.sep; + const pathRelative = path_1.posix ? path_1.posix.relative : path_1.relative; + const pathJoin = path_1.posix ? path_1.posix.join : path_1.join; + const { O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_EXCL, O_TRUNC, O_APPEND, O_DIRECTORY } = fs_node_utils_1.constants; + /** + * Represents a filesystem superblock, which is the root of a virtual + * filesystem in Linux. + * @see https://lxr.linux.no/linux+v3.11.2/include/linux/fs.h#L1242 + */ + let Superblock$1 = class Superblock { + static fromJSON(json, cwd, opts) { + const vol = new Superblock(opts); + vol.fromJSON(json, cwd); + return vol; + } + static fromNestedJSON(json, cwd, opts) { + const vol = new Superblock(opts); + vol.fromNestedJSON(json, cwd); + return vol; + } + constructor(opts = {}) { + // I-node number counter. + this.ino = 0; + // A mapping for i-node numbers to i-nodes (`Node`); + this.inodes = {}; + // List of released i-node numbers, for reuse. + this.releasedInos = []; + // A mapping for file descriptors to `File`s. + this.fds = {}; + // A list of reusable (opened and closed) file descriptors, that should be + // used first before creating a new file descriptor. + this.releasedFds = []; + // Max number of open files. + this.maxFiles = 10000; + // Current number of open files. + this.openFiles = 0; + this.open = (filename, flagsNum, modeNum, resolveSymlinks = true) => { + const file = this.openFile(filename, flagsNum, modeNum, resolveSymlinks); + if (!file) + throw (0, util_1.createError)("ENOENT" /* ERROR_CODE.ENOENT */, 'open', filename); + return file.fd; + }; + this.writeFile = (id, buf, flagsNum, modeNum) => { + const isUserFd = typeof id === 'number'; + let fd; + if (isUserFd) + fd = id; + else + fd = this.open((0, util_1.pathToFilename)(id), flagsNum, modeNum); + let offset = 0; + let length = buf.length; + let position = flagsNum & O_APPEND ? undefined : 0; + try { + while (length > 0) { + const written = this.write(fd, buf, offset, length, position); + offset += written; + length -= written; + if (position !== undefined) + position += written; + } + } + finally { + if (!isUserFd) + this.close(fd); + } + }; + this.read = (fd, buffer, offset, length, position) => { + if (buffer.byteLength < length) { + throw (0, util_1.createError)("ERR_OUT_OF_RANGE" /* ERROR_CODE.ERR_OUT_OF_RANGE */, 'read', undefined, undefined, RangeError); + } + const file = this.getFileByFdOrThrow(fd); + if (file.node.isSymlink()) { + throw (0, util_1.createError)("EPERM" /* ERROR_CODE.EPERM */, 'read', file.link.getPath()); + } + return file.read(buffer, Number(offset), Number(length), position === -1 || typeof position !== 'number' ? undefined : position); + }; + this.readv = (fd, buffers, position) => { + const file = this.getFileByFdOrThrow(fd); + let p = position ?? undefined; + if (p === -1) + p = undefined; + let bytesRead = 0; + for (const buffer of buffers) { + const bytes = file.read(buffer, 0, buffer.byteLength, p); + p = undefined; + bytesRead += bytes; + if (bytes < buffer.byteLength) + break; + } + return bytesRead; + }; + this.link = (filename1, filename2) => { + let link1; + try { + link1 = this.getLinkOrThrow(filename1, 'link'); + } + catch (err) { + if (err.code) + err = (0, util_1.createError)(err.code, 'link', filename1, filename2); + throw err; + } + const dirname2 = (0, path_1.dirname)(filename2); + let dir2; + try { + dir2 = this.getLinkOrThrow(dirname2, 'link'); + } + catch (err) { + // Augment error with filename1 + if (err.code) + err = (0, util_1.createError)(err.code, 'link', filename1, filename2); + throw err; + } + const name = (0, path_1.basename)(filename2); + if (dir2.getChild(name)) + throw (0, util_1.createError)("EEXIST" /* ERROR_CODE.EEXIST */, 'link', filename1, filename2); + const node = link1.getNode(); + node.nlink++; + dir2.createChild(name, node); + }; + this.unlink = (filename) => { + const link = this.getLinkOrThrow(filename, 'unlink'); + // TODO: Check if it is file, dir, other... + if (link.length) + throw Error('Dir not empty...'); + this.deleteLink(link); + const node = link.getNode(); + node.nlink--; + // When all hard links to i-node are deleted, remove the i-node, too. + if (node.nlink <= 0) { + this.deleteNode(node); + } + }; + this.symlink = (targetFilename, pathFilename) => { + const pathSteps = (0, util_1.filenameToSteps)(pathFilename); + // Check if directory exists, where we about to create a symlink. + let dirLink; + try { + dirLink = this.getLinkParentAsDirOrThrow(pathSteps); + } + catch (err) { + // Catch error to populate with the correct fields - getLinkParentAsDirOrThrow won't be aware of the second path + if (err.code) + err = (0, util_1.createError)(err.code, 'symlink', targetFilename, pathFilename); + throw err; + } + const name = pathSteps[pathSteps.length - 1]; + // Check if new file already exists. + if (dirLink.getChild(name)) + throw (0, util_1.createError)("EEXIST" /* ERROR_CODE.EEXIST */, 'symlink', targetFilename, pathFilename); + // Check permissions on the path where we are creating the symlink. + // Note we're not checking permissions on the target path: It is not an error to create a symlink to a + // non-existent or inaccessible target + const node = dirLink.getNode(); + if (!node.canExecute() || !node.canWrite()) + throw (0, util_1.createError)("EACCES" /* ERROR_CODE.EACCES */, 'symlink', targetFilename, pathFilename); + // Create symlink. + const symlink = dirLink.createChild(name); + symlink.getNode().makeSymlink(targetFilename); + return symlink; + }; + this.rename = (oldPathFilename, newPathFilename) => { + let link; + try { + link = this.getResolvedLinkOrThrow(oldPathFilename); + } + catch (err) { + // Augment err with newPathFilename + if (err.code) + err = (0, util_1.createError)(err.code, 'rename', oldPathFilename, newPathFilename); + throw err; + } + // TODO: Check if it is directory, if non-empty, we cannot move it, right? + // Check directory exists for the new location. + let newPathDirLink; + try { + newPathDirLink = this.getLinkParentAsDirOrThrow(newPathFilename); + } + catch (err) { + // Augment error with oldPathFilename + if (err.code) + err = (0, util_1.createError)(err.code, 'rename', oldPathFilename, newPathFilename); + throw err; + } + // TODO: Also treat cases with directories and symbolic links. + // TODO: See: http://man7.org/linux/man-pages/man2/rename.2.html + // Remove hard link from old folder. + const oldLinkParent = link.parent; + if (!oldLinkParent) + throw (0, util_1.createError)("EINVAL" /* ERROR_CODE.EINVAL */, 'rename', oldPathFilename, newPathFilename); + // Check we have access and write permissions in both places + const oldParentNode = oldLinkParent.getNode(); + const newPathDirNode = newPathDirLink.getNode(); + if (!oldParentNode.canExecute() || + !oldParentNode.canWrite() || + !newPathDirNode.canExecute() || + !newPathDirNode.canWrite()) { + throw (0, util_1.createError)("EACCES" /* ERROR_CODE.EACCES */, 'rename', oldPathFilename, newPathFilename); + } + oldLinkParent.deleteChild(link); + // Rename should overwrite the new path, if that exists. + const name = (0, path_1.basename)(newPathFilename); + link.name = name; + link.steps = [...newPathDirLink.steps, name]; + newPathDirLink.setChild(link.getName(), link); + }; + this.mkdir = (filename, modeNum) => { + const steps = (0, util_1.filenameToSteps)(filename); + // This will throw if user tries to create root dir `fs.mkdirSync('/')`. + if (!steps.length) + throw (0, util_1.createError)("EEXIST" /* ERROR_CODE.EEXIST */, 'mkdir', filename); + const dir = this.getLinkParentAsDirOrThrow(filename, 'mkdir'); + // Check path already exists. + const name = steps[steps.length - 1]; + if (dir.getChild(name)) + throw (0, util_1.createError)("EEXIST" /* ERROR_CODE.EEXIST */, 'mkdir', filename); + const node = dir.getNode(); + if (!node.canWrite() || !node.canExecute()) + throw (0, util_1.createError)("EACCES" /* ERROR_CODE.EACCES */, 'mkdir', filename); + dir.createChild(name, this.createNode(fs_node_utils_1.constants.S_IFDIR | modeNum)); + }; + /** + * Creates directory tree recursively. + */ + this.mkdirp = (filename, modeNum) => { + let created = false; + const steps = (0, util_1.filenameToSteps)(filename); + let curr = null; + let i = steps.length; + // Find the longest subpath of filename that still exists: + for (i = steps.length; i >= 0; i--) { + curr = this.getResolvedLink(steps.slice(0, i)); + if (curr) + break; + } + if (!curr) { + curr = this.root; + i = 0; + } + // curr is now the last directory that still exists. + // (If none of them existed, curr is the root.) + // Check access the lazy way: + curr = this.getResolvedLinkOrThrow(path_1.sep + steps.slice(0, i).join(path_1.sep), 'mkdir'); + // Start creating directories: + for (i; i < steps.length; i++) { + const node = curr.getNode(); + if (node.isDirectory()) { + // Check we have permissions + if (!node.canExecute() || !node.canWrite()) + throw (0, util_1.createError)("EACCES" /* ERROR_CODE.EACCES */, 'mkdir', filename); + } + else { + throw (0, util_1.createError)("ENOTDIR" /* ERROR_CODE.ENOTDIR */, 'mkdir', filename); + } + created = true; + curr = curr.createChild(steps[i], this.createNode(fs_node_utils_1.constants.S_IFDIR | modeNum)); + } + return created ? filename : undefined; + }; + this.rmdir = (filename, recursive = false) => { + const link = this.getLinkAsDirOrThrow(filename, 'rmdir'); + if (link.length && !recursive) + throw (0, util_1.createError)("ENOTEMPTY" /* ERROR_CODE.ENOTEMPTY */, 'rmdir', filename); + this.deleteLink(link); + }; + this.rm = (filename, force = false, recursive = false) => { + // "stat" is used to match Node's native error message. + let link; + try { + link = this.getResolvedLinkOrThrow(filename, 'stat'); + } + catch (err) { + // Silently ignore missing paths if force option is true + if (err.code === "ENOENT" /* ERROR_CODE.ENOENT */ && force) + return; + else + throw err; + } + if (link.getNode().isDirectory() && !recursive) + throw (0, util_1.createError)("ERR_FS_EISDIR" /* ERROR_CODE.ERR_FS_EISDIR */, 'rm', filename); + if (!link.parent?.getNode().canWrite()) + throw (0, util_1.createError)("EACCES" /* ERROR_CODE.EACCES */, 'rm', filename); + this.deleteLink(link); + }; + this.close = (fd) => { + (0, util_1.validateFd)(fd); + const file = this.getFileByFdOrThrow(fd, 'close'); + this.closeFile(file); + }; + this.process = opts.process ?? process_1.default; + const root = this.createLink(); + root.setNode(this.createNode(fs_node_utils_1.constants.S_IFDIR | 0o777)); + root.setChild('.', root); + root.getNode().nlink++; + root.setChild('..', root); + root.getNode().nlink++; + this.root = root; + } + createLink(parent, name, isDirectory = false, mode) { + if (!parent) { + return new Link_1.Link(this, void 0, ''); + } + if (!name) { + throw new Error('createLink: name cannot be empty'); + } + // If no explicit permission is provided, use defaults based on type + const finalPerm = mode ?? (isDirectory ? 0o777 : 0o666); + // To prevent making a breaking change, `mode` can also just be a permission number + // and the file type is set based on `isDirectory` + const hasFileType = mode && mode & fs_node_utils_1.constants.S_IFMT; + const modeType = hasFileType ? mode & fs_node_utils_1.constants.S_IFMT : isDirectory ? fs_node_utils_1.constants.S_IFDIR : fs_node_utils_1.constants.S_IFREG; + const finalMode = (finalPerm & ~fs_node_utils_1.constants.S_IFMT) | modeType; + return parent.createChild(name, this.createNode(finalMode)); + } + deleteLink(link) { + const parent = link.parent; + if (parent) { + parent.deleteChild(link); + return true; + } + return false; + } + newInoNumber() { + const releasedFd = this.releasedInos.pop(); + if (releasedFd) + return releasedFd; + else { + this.ino = (this.ino + 1) % 0xffffffff; + return this.ino; + } + } + newFdNumber() { + const releasedFd = this.releasedFds.pop(); + return typeof releasedFd === 'number' ? releasedFd : Superblock.fd--; + } + createNode(mode) { + const uid = this.process.getuid?.() ?? 0; + const gid = this.process.getgid?.() ?? 0; + const node = new Node_1.Node(this.newInoNumber(), mode, uid, gid); + this.inodes[node.ino] = node; + return node; + } + deleteNode(node) { + node.del(); + delete this.inodes[node.ino]; + this.releasedInos.push(node.ino); + } + walk(stepsOrFilenameOrLink, resolveSymlinks = false, checkExistence = false, checkAccess = false, funcName) { + let steps; + let filename; + if (stepsOrFilenameOrLink instanceof Link_1.Link) { + steps = stepsOrFilenameOrLink.steps; + filename = pathSep + steps.join(pathSep); + } + else if (typeof stepsOrFilenameOrLink === 'string') { + steps = (0, util_1.filenameToSteps)(stepsOrFilenameOrLink); + filename = stepsOrFilenameOrLink; + } + else { + steps = stepsOrFilenameOrLink; + filename = pathSep + steps.join(pathSep); + } + let curr = this.root; + let i = 0; + const uid = this.process.getuid?.() ?? 0; + const gid = this.process.getgid?.() ?? 0; + while (i < steps.length) { + let node = curr.getNode(); + // Check access permissions if current link is a directory + if (node.isDirectory()) { + if (checkAccess && !node.canExecute(uid, gid)) { + return (0, result_1.Err)((0, util_1.createStatError)("EACCES" /* ERROR_CODE.EACCES */, funcName, filename)); + } + } + else { + if (i < steps.length - 1) { + return (0, result_1.Err)((0, util_1.createStatError)("ENOTDIR" /* ERROR_CODE.ENOTDIR */, funcName, filename)); + } + } + curr = curr.getChild(steps[i]) ?? null; + // Check existence of current link + if (!curr) + if (checkExistence) { + return (0, result_1.Err)((0, util_1.createStatError)("ENOENT" /* ERROR_CODE.ENOENT */, funcName, filename)); + } + else { + return (0, result_1.Ok)(null); + } + node = curr?.getNode(); + // Resolve symlink if we're resolving all symlinks OR if this is an intermediate path component + // This allows lstat to traverse through symlinks in intermediate directories while not resolving the final component + if (node.isSymlink() && (resolveSymlinks || i < steps.length - 1)) { + const resolvedPath = (0, path_1.isAbsolute)(node.symlink) ? node.symlink : pathJoin((0, path_1.dirname)(curr.getPath()), node.symlink); // Relative to symlink's parent + steps = (0, util_1.filenameToSteps)(resolvedPath).concat(steps.slice(i + 1)); + curr = this.root; + i = 0; + continue; + } + // After resolving symlinks, check if it's not a directory and we still have more steps + // This handles the case where we try to traverse through a file + // Only do this check when we're doing filesystem operations (checkExistence = true) + if (checkExistence && !node.isDirectory() && i < steps.length - 1) { + // On Windows, use ENOENT for consistency with Node.js behavior + // On other platforms, use ENOTDIR which is more semantically correct + const errorCode = this.process.platform === 'win32' ? "ENOENT" /* ERROR_CODE.ENOENT */ : "ENOTDIR" /* ERROR_CODE.ENOTDIR */; + return (0, result_1.Err)((0, util_1.createStatError)(errorCode, funcName, filename)); + } + i++; + } + return (0, result_1.Ok)(curr); + } + // Returns a `Link` (hard link) referenced by path "split" into steps. + getLink(steps) { + const result = this.walk(steps, false, false, false); + if (result.ok) { + return result.value; + } + throw result.err.toError(); + } + // Just link `getLink`, but throws a correct user error, if link to found. + getLinkOrThrow(filename, funcName) { + const result = this.walk(filename, false, true, true, funcName); + if (result.ok) { + return result.value; + } + throw result.err.toError(); + } + // Just like `getLink`, but also dereference/resolves symbolic links. + getResolvedLink(filenameOrSteps) { + const result = this.walk(filenameOrSteps, true, false, false); + if (result.ok) { + return result.value; + } + throw result.err.toError(); + } + /** + * Just like `getLinkOrThrow`, but also dereference/resolves symbolic links. + */ + getResolvedLinkOrThrow(filename, funcName) { + const result = this.walk(filename, true, true, true, funcName); + if (result.ok) { + return result.value; + } + throw result.err.toError(); + } + getResolvedLinkResult(filename, funcName) { + const result = this.walk(filename, true, true, true, funcName); + if (result.ok) { + return (0, result_1.Ok)(result.value); + } + return result; + } + resolveSymlinks(link) { + return this.getResolvedLink(link.steps.slice(1)); + } + /** + * Just like `getLinkOrThrow`, but also verifies that the link is a directory. + */ + getLinkAsDirOrThrow(filename, funcName) { + const link = this.getLinkOrThrow(filename, funcName); + if (!link.getNode().isDirectory()) + throw (0, util_1.createError)("ENOTDIR" /* ERROR_CODE.ENOTDIR */, funcName, filename); + return link; + } + // Get the immediate parent directory of the link. + getLinkParent(steps) { + return this.getLink(steps.slice(0, -1)); + } + getLinkParentAsDirOrThrow(filenameOrSteps, funcName) { + const steps = (filenameOrSteps instanceof Array ? filenameOrSteps : (0, util_1.filenameToSteps)(filenameOrSteps)).slice(0, -1); + const filename = pathSep + steps.join(pathSep); + const link = this.getLinkOrThrow(filename, funcName); + if (!link.getNode().isDirectory()) + throw (0, util_1.createError)("ENOTDIR" /* ERROR_CODE.ENOTDIR */, funcName, filename); + return link; + } + getFileByFd(fd) { + return this.fds[String(fd)]; + } + getFileByFdOrThrow(fd, funcName) { + if (!(0, util_1.isFd)(fd)) + throw TypeError(fs_node_utils_2.ERRSTR.FD); + const file = this.getFileByFd(fd); + if (!file) + throw (0, util_1.createError)("EBADF" /* ERROR_CODE.EBADF */, funcName); + return file; + } + _toJSON(link = this.root, json = {}, path, asBuffer) { + let isEmpty = true; + let children = link.children; + if (link.getNode().isFile()) { + children = new Map([[link.getName(), link.parent.getChild(link.getName())]]); + link = link.parent; + } + for (const name of children.keys()) { + if (name === '.' || name === '..') { + continue; + } + isEmpty = false; + const child = link.getChild(name); + if (!child) { + throw new Error('_toJSON: unexpected undefined'); + } + const node = child.getNode(); + if (node.isFile()) { + let filename = child.getPath(); + if (path) + filename = pathRelative(path, filename); + json[filename] = asBuffer ? node.getBuffer() : node.getString(); + } + else if (node.isDirectory()) { + this._toJSON(child, json, path, asBuffer); + } + } + let dirPath = link.getPath(); + if (path) + dirPath = pathRelative(path, dirPath); + if (dirPath && isEmpty) { + json[dirPath] = null; + } + return json; + } + toJSON(paths, json = {}, isRelative = false, asBuffer = false) { + const links = []; + if (paths) { + if (!Array.isArray(paths)) + paths = [paths]; + for (const path of paths) { + const filename = (0, util_1.pathToFilename)(path); + const link = this.getResolvedLink(filename); + if (!link) + continue; + links.push(link); + } + } + else { + links.push(this.root); + } + if (!links.length) + return json; + for (const link of links) + this._toJSON(link, json, isRelative ? link.getPath() : '', asBuffer); + return json; + } + fromJSON(json, cwd = this.process.cwd()) { + for (let filename in json) { + const data = json[filename]; + filename = (0, util_1.resolve)(filename, cwd); + if (typeof data === 'string' || data instanceof buffer_1.Buffer) { + const dir = (0, path_1.dirname)(filename); + this.mkdirp(dir, 511 /* MODE.DIR */); + const buffer = (0, util_1.dataToBuffer)(data); + this.writeFile(filename, buffer, fs_node_utils_2.FLAGS.w, 438 /* MODE.DEFAULT */); + } + else { + this.mkdirp(filename, 511 /* MODE.DIR */); + } + } + } + fromNestedJSON(json, cwd) { + this.fromJSON((0, json_1.flattenJSON)(json), cwd); + } + reset() { + this.ino = 0; + this.inodes = {}; + this.releasedInos = []; + this.fds = {}; + this.releasedFds = []; + this.openFiles = 0; + this.root = this.createLink(); + this.root.setNode(this.createNode(fs_node_utils_1.constants.S_IFDIR | 0o777)); + } + // Legacy interface + mountSync(mountpoint, json) { + this.fromJSON(json, mountpoint); + } + openLink(link, flagsNum, resolveSymlinks = true) { + if (this.openFiles >= this.maxFiles) { + // Too many open files. + throw (0, util_1.createError)("EMFILE" /* ERROR_CODE.EMFILE */, 'open', link.getPath()); + } + // Resolve symlinks. + // + // @TODO: This should be superfluous. This method is only ever called by openFile(), which does its own symlink resolution + // prior to calling. + let realLink = link; + if (resolveSymlinks) + realLink = this.getResolvedLinkOrThrow(link.getPath(), 'open'); + const node = realLink.getNode(); + // Check whether node is a directory + if (node.isDirectory()) { + if ((flagsNum & (O_RDONLY | O_RDWR | O_WRONLY)) !== O_RDONLY) + throw (0, util_1.createError)("EISDIR" /* ERROR_CODE.EISDIR */, 'open', link.getPath()); + } + else { + if (flagsNum & O_DIRECTORY) + throw (0, util_1.createError)("ENOTDIR" /* ERROR_CODE.ENOTDIR */, 'open', link.getPath()); + } + // Check node permissions + // For read access: check if flags are O_RDONLY or O_RDWR (i.e., not only O_WRONLY) + if ((flagsNum & (O_RDONLY | O_RDWR | O_WRONLY)) !== O_WRONLY) { + if (!node.canRead()) { + throw (0, util_1.createError)("EACCES" /* ERROR_CODE.EACCES */, 'open', link.getPath()); + } + } + // For write access: check if flags are O_WRONLY or O_RDWR + if (flagsNum & (O_WRONLY | O_RDWR)) { + if (!node.canWrite()) { + throw (0, util_1.createError)("EACCES" /* ERROR_CODE.EACCES */, 'open', link.getPath()); + } + } + const file = new File_1.File(link, node, flagsNum, this.newFdNumber()); + this.fds[file.fd] = file; + this.openFiles++; + if (flagsNum & O_TRUNC) + file.truncate(); + return file; + } + openFile(filename, flagsNum, modeNum, resolveSymlinks = true) { + const steps = (0, util_1.filenameToSteps)(filename); + let link; + try { + link = resolveSymlinks ? this.getResolvedLinkOrThrow(filename, 'open') : this.getLinkOrThrow(filename, 'open'); + // Check if file already existed when trying to create it exclusively (O_CREAT and O_EXCL flags are set). + // This is an error, see https://pubs.opengroup.org/onlinepubs/009695399/functions/open.html: + // "If O_CREAT and O_EXCL are set, open() shall fail if the file exists." + if (link && flagsNum & O_CREAT && flagsNum & O_EXCL) + throw (0, util_1.createError)("EEXIST" /* ERROR_CODE.EEXIST */, 'open', filename); + } + catch (err) { + // Try creating a new file, if it does not exist and O_CREAT flag is set. + // Note that this will still throw if the ENOENT came from one of the + // intermediate directories instead of the file itself. + if (err.code === "ENOENT" /* ERROR_CODE.ENOENT */ && flagsNum & O_CREAT) { + const dirName = (0, path_1.dirname)(filename); + const dirLink = this.getResolvedLinkOrThrow(dirName); + const dirNode = dirLink.getNode(); + // Check that the place we create the new file is actually a directory and that we are allowed to do so: + if (!dirNode.isDirectory()) + throw (0, util_1.createError)("ENOTDIR" /* ERROR_CODE.ENOTDIR */, 'open', filename); + if (!dirNode.canExecute() || !dirNode.canWrite()) + throw (0, util_1.createError)("EACCES" /* ERROR_CODE.EACCES */, 'open', filename); + // This is a difference to the original implementation, which would simply not create a file unless modeNum was specified. + // However, current Node versions will default to 0o666. + modeNum ?? (modeNum = 0o666); + link = this.createLink(dirLink, steps[steps.length - 1], false, modeNum); + } + else + throw err; + } + if (link) + return this.openLink(link, flagsNum, resolveSymlinks); + throw (0, util_1.createError)("ENOENT" /* ERROR_CODE.ENOENT */, 'open', filename); + } + closeFile(file) { + if (!this.fds[file.fd]) + return; + this.openFiles--; + delete this.fds[file.fd]; + this.releasedFds.push(file.fd); + } + write(fd, buf, offset, length, position) { + const file = this.getFileByFdOrThrow(fd, 'write'); + if (file.node.isSymlink()) { + throw (0, util_1.createError)("EBADF" /* ERROR_CODE.EBADF */, 'write', file.link.getPath()); + } + return file.write(buf, offset, length, position === -1 || typeof position !== 'number' ? undefined : position); + } + }; + Superblock.Superblock = Superblock$1; + /** + * Global file descriptor counter. UNIX file descriptors start from 0 and go sequentially + * up, so here, in order not to conflict with them, we choose some big number and descrease + * the file descriptor of every new opened file. + * @type {number} + * @todo This should not be static, right? + */ + Superblock$1.fd = 0x7fffffff; + + return Superblock; +} + +var hasRequiredLib$6; + +function requireLib$6 () { + if (hasRequiredLib$6) return lib$6; + hasRequiredLib$6 = 1; + (function (exports$1) { + Object.defineProperty(exports$1, "__esModule", { value: true }); + exports$1.resolve = exports$1.pathToFilename = exports$1.createStatError = exports$1.createError = exports$1.validateFd = exports$1.isFd = exports$1.filenameToSteps = exports$1.dataToBuffer = exports$1.Superblock = exports$1.File = exports$1.Link = exports$1.Node = void 0; + const tslib_1 = require$$0$2; + tslib_1.__exportStar(requireTypes$1(), exports$1); + tslib_1.__exportStar(requireJson$1(), exports$1); + tslib_1.__exportStar(requireConstants$3(), exports$1); + tslib_1.__exportStar(requireResult(), exports$1); + var Node_1 = requireNode(); + Object.defineProperty(exports$1, "Node", { enumerable: true, get: function () { return Node_1.Node; } }); + var Link_1 = requireLink(); + Object.defineProperty(exports$1, "Link", { enumerable: true, get: function () { return Link_1.Link; } }); + var File_1 = requireFile(); + Object.defineProperty(exports$1, "File", { enumerable: true, get: function () { return File_1.File; } }); + var Superblock_1 = requireSuperblock(); + Object.defineProperty(exports$1, "Superblock", { enumerable: true, get: function () { return Superblock_1.Superblock; } }); + var util_1 = requireUtil$3(); + Object.defineProperty(exports$1, "dataToBuffer", { enumerable: true, get: function () { return util_1.dataToBuffer; } }); + Object.defineProperty(exports$1, "filenameToSteps", { enumerable: true, get: function () { return util_1.filenameToSteps; } }); + Object.defineProperty(exports$1, "isFd", { enumerable: true, get: function () { return util_1.isFd; } }); + Object.defineProperty(exports$1, "validateFd", { enumerable: true, get: function () { return util_1.validateFd; } }); + Object.defineProperty(exports$1, "createError", { enumerable: true, get: function () { return util_1.createError; } }); + Object.defineProperty(exports$1, "createStatError", { enumerable: true, get: function () { return util_1.createStatError; } }); + Object.defineProperty(exports$1, "pathToFilename", { enumerable: true, get: function () { return util_1.pathToFilename; } }); + Object.defineProperty(exports$1, "resolve", { enumerable: true, get: function () { return util_1.resolve; } }); + + } (lib$6)); + return lib$6; +} + +var Stats = {}; + +var hasRequiredStats; + +function requireStats () { + if (hasRequiredStats) return Stats; + hasRequiredStats = 1; + Object.defineProperty(Stats, "__esModule", { value: true }); + Stats.Stats = void 0; + const fs_node_utils_1 = requireLib$8(); + const { S_IFMT, S_IFDIR, S_IFREG, S_IFBLK, S_IFCHR, S_IFLNK, S_IFIFO, S_IFSOCK } = fs_node_utils_1.constants; + /** + * Statistics about a file/directory, like `fs.Stats`. + */ + let Stats$1 = class Stats { + static build(node, bigint = false) { + const stats = new Stats(); + const { uid, gid, atime, mtime, ctime } = node; + const getStatNumber = !bigint ? number => number : number => BigInt(number); + // Copy all values on Stats from Node, so that if Node values + // change, values on Stats would still be the old ones, + // just like in Node fs. + stats.uid = getStatNumber(uid); + stats.gid = getStatNumber(gid); + stats.rdev = getStatNumber(node.rdev); + stats.blksize = getStatNumber(4096); + stats.ino = getStatNumber(node.ino); + stats.size = getStatNumber(node.getSize()); + stats.blocks = getStatNumber(1); + stats.atime = atime; + stats.mtime = mtime; + stats.ctime = ctime; + stats.birthtime = ctime; + stats.atimeMs = getStatNumber(atime.getTime()); + stats.mtimeMs = getStatNumber(mtime.getTime()); + const ctimeMs = getStatNumber(ctime.getTime()); + stats.ctimeMs = ctimeMs; + stats.birthtimeMs = ctimeMs; + if (bigint) { + stats.atimeNs = BigInt(atime.getTime()) * BigInt(1000000); + stats.mtimeNs = BigInt(mtime.getTime()) * BigInt(1000000); + const ctimeNs = BigInt(ctime.getTime()) * BigInt(1000000); + stats.ctimeNs = ctimeNs; + stats.birthtimeNs = ctimeNs; + } + stats.dev = getStatNumber(0); + stats.mode = getStatNumber(node.mode); + stats.nlink = getStatNumber(node.nlink); + return stats; + } + _checkModeProperty(property) { + return (Number(this.mode) & S_IFMT) === property; + } + isDirectory() { + return this._checkModeProperty(S_IFDIR); + } + isFile() { + return this._checkModeProperty(S_IFREG); + } + isBlockDevice() { + return this._checkModeProperty(S_IFBLK); + } + isCharacterDevice() { + return this._checkModeProperty(S_IFCHR); + } + isSymbolicLink() { + return this._checkModeProperty(S_IFLNK); + } + isFIFO() { + return this._checkModeProperty(S_IFIFO); + } + isSocket() { + return this._checkModeProperty(S_IFSOCK); + } + }; + Stats.Stats = Stats$1; + Stats.default = Stats$1; + + return Stats; +} + +var Dirent = {}; + +var hasRequiredDirent; + +function requireDirent () { + if (hasRequiredDirent) return Dirent; + hasRequiredDirent = 1; + Object.defineProperty(Dirent, "__esModule", { value: true }); + Dirent.Dirent = void 0; + const fs_node_utils_1 = requireLib$8(); + const { S_IFMT, S_IFDIR, S_IFREG, S_IFBLK, S_IFCHR, S_IFLNK, S_IFIFO, S_IFSOCK } = fs_node_utils_1.constants; + /** + * A directory entry, like `fs.Dirent`. + */ + let Dirent$1 = class Dirent { + constructor() { + this.name = ''; + this.parentPath = ''; + this.mode = 0; + /** + * @deprecated Will be removed at any time. + * @see https://nodejs.org/api/deprecations.html#DEP0178 + */ + this.path = ''; + } + static build(link, encoding) { + const dirent = new Dirent(); + const { mode } = link.getNode(); + dirent.name = (0, fs_node_utils_1.strToEncoding)(link.getName(), encoding); + dirent.mode = mode; + dirent.parentPath = link.getParentPath(); + dirent.path = dirent.parentPath; + return dirent; + } + _checkModeProperty(property) { + return (this.mode & S_IFMT) === property; + } + isDirectory() { + return this._checkModeProperty(S_IFDIR); + } + isFile() { + return this._checkModeProperty(S_IFREG); + } + isBlockDevice() { + return this._checkModeProperty(S_IFBLK); + } + isCharacterDevice() { + return this._checkModeProperty(S_IFCHR); + } + isSymbolicLink() { + return this._checkModeProperty(S_IFLNK); + } + isFIFO() { + return this._checkModeProperty(S_IFIFO); + } + isSocket() { + return this._checkModeProperty(S_IFSOCK); + } + }; + Dirent.Dirent = Dirent$1; + Dirent.default = Dirent$1; + + return Dirent; +} + +var StatFs = {}; + +var hasRequiredStatFs; + +function requireStatFs () { + if (hasRequiredStatFs) return StatFs; + hasRequiredStatFs = 1; + Object.defineProperty(StatFs, "__esModule", { value: true }); + StatFs.StatFs = void 0; + /** + * Statistics about a file system, like `fs.StatFs`. + */ + let StatFs$1 = class StatFs { + static build(superblock, bigint = false) { + const statfs = new StatFs(); + const getStatNumber = !bigint ? number => number : number => BigInt(number); + // For in-memory filesystem, provide mock but reasonable values + // Magic number for in-memory filesystem type (similar to ramfs) + statfs.type = getStatNumber(0x858458f6); + // Optimal transfer block size - commonly 4096 bytes + statfs.bsize = getStatNumber(4096); + // Calculate filesystem stats based on current state + const totalInodes = Object.keys(superblock.inodes).length; + // Mock large filesystem capacity (appears as a large filesystem to applications) + const totalBlocks = 1000000; + const usedBlocks = Math.min(totalInodes * 2, totalBlocks); // Rough estimation + const freeBlocks = totalBlocks - usedBlocks; + statfs.blocks = getStatNumber(totalBlocks); // Total data blocks + statfs.bfree = getStatNumber(freeBlocks); // Free blocks in file system + statfs.bavail = getStatNumber(freeBlocks); // Free blocks available to unprivileged users + // File node statistics + const maxFiles = 1000000; // Mock large number of available inodes + statfs.files = getStatNumber(maxFiles); // Total file nodes in file system + statfs.ffree = getStatNumber(maxFiles - totalInodes); // Free file nodes + return statfs; + } + }; + StatFs.StatFs = StatFs$1; + StatFs.default = StatFs$1; + + return StatFs; +} + +var setTimeoutUnref = {}; + +var hasRequiredSetTimeoutUnref; + +function requireSetTimeoutUnref () { + if (hasRequiredSetTimeoutUnref) return setTimeoutUnref; + hasRequiredSetTimeoutUnref = 1; + Object.defineProperty(setTimeoutUnref, "__esModule", { value: true }); + /** + * `setTimeoutUnref` is just like `setTimeout`, + * only in Node's environment it will "unref" its macro task. + */ + function setTimeoutUnref$1(callback, time, args) { + const ref = setTimeout.apply(typeof globalThis !== 'undefined' ? globalThis : commonjsGlobal, arguments); + if (ref && typeof ref === 'object' && typeof ref.unref === 'function') + ref.unref(); + return ref; + } + setTimeoutUnref.default = setTimeoutUnref$1; + + return setTimeoutUnref; +} + +var stream$1 = {}; + +var browser$1 = {exports: {}}; + +var stream = {exports: {}}; + +var primordials; +var hasRequiredPrimordials; + +function requirePrimordials () { + if (hasRequiredPrimordials) return primordials; + hasRequiredPrimordials = 1; + + /* + This file is a reduced and adapted version of the main lib/internal/per_context/primordials.js file defined at + + https://github.com/nodejs/node/blob/main/lib/internal/per_context/primordials.js + + Don't try to replace with the original file and keep it up to date with the upstream file. + */ + + // This is a simplified version of AggregateError + class AggregateError extends Error { + constructor(errors) { + if (!Array.isArray(errors)) { + throw new TypeError(`Expected input to be an Array, got ${typeof errors}`) + } + let message = ''; + for (let i = 0; i < errors.length; i++) { + message += ` ${errors[i].stack}\n`; + } + super(message); + this.name = 'AggregateError'; + this.errors = errors; + } + } + primordials = { + AggregateError, + ArrayIsArray(self) { + return Array.isArray(self) + }, + ArrayPrototypeIncludes(self, el) { + return self.includes(el) + }, + ArrayPrototypeIndexOf(self, el) { + return self.indexOf(el) + }, + ArrayPrototypeJoin(self, sep) { + return self.join(sep) + }, + ArrayPrototypeMap(self, fn) { + return self.map(fn) + }, + ArrayPrototypePop(self, el) { + return self.pop(el) + }, + ArrayPrototypePush(self, el) { + return self.push(el) + }, + ArrayPrototypeSlice(self, start, end) { + return self.slice(start, end) + }, + Error, + FunctionPrototypeCall(fn, thisArgs, ...args) { + return fn.call(thisArgs, ...args) + }, + FunctionPrototypeSymbolHasInstance(self, instance) { + return Function.prototype[Symbol.hasInstance].call(self, instance) + }, + MathFloor: Math.floor, + Number, + NumberIsInteger: Number.isInteger, + NumberIsNaN: Number.isNaN, + NumberMAX_SAFE_INTEGER: Number.MAX_SAFE_INTEGER, + NumberMIN_SAFE_INTEGER: Number.MIN_SAFE_INTEGER, + NumberParseInt: Number.parseInt, + ObjectDefineProperties(self, props) { + return Object.defineProperties(self, props) + }, + ObjectDefineProperty(self, name, prop) { + return Object.defineProperty(self, name, prop) + }, + ObjectGetOwnPropertyDescriptor(self, name) { + return Object.getOwnPropertyDescriptor(self, name) + }, + ObjectKeys(obj) { + return Object.keys(obj) + }, + ObjectSetPrototypeOf(target, proto) { + return Object.setPrototypeOf(target, proto) + }, + Promise, + PromisePrototypeCatch(self, fn) { + return self.catch(fn) + }, + PromisePrototypeThen(self, thenFn, catchFn) { + return self.then(thenFn, catchFn) + }, + PromiseReject(err) { + return Promise.reject(err) + }, + PromiseResolve(val) { + return Promise.resolve(val) + }, + ReflectApply: Reflect.apply, + RegExpPrototypeTest(self, value) { + return self.test(value) + }, + SafeSet: Set, + String, + StringPrototypeSlice(self, start, end) { + return self.slice(start, end) + }, + StringPrototypeToLowerCase(self) { + return self.toLowerCase() + }, + StringPrototypeToUpperCase(self) { + return self.toUpperCase() + }, + StringPrototypeTrim(self) { + return self.trim() + }, + Symbol, + SymbolFor: Symbol.for, + SymbolAsyncIterator: Symbol.asyncIterator, + SymbolHasInstance: Symbol.hasInstance, + SymbolIterator: Symbol.iterator, + SymbolDispose: Symbol.dispose || Symbol('Symbol.dispose'), + SymbolAsyncDispose: Symbol.asyncDispose || Symbol('Symbol.asyncDispose'), + TypedArrayPrototypeSet(self, buf, len) { + return self.set(buf, len) + }, + Boolean, + Uint8Array + }; + return primordials; +} + +var util$2 = {exports: {}}; + +var inspect; +var hasRequiredInspect; + +function requireInspect () { + if (hasRequiredInspect) return inspect; + hasRequiredInspect = 1; + + /* + This file is a reduced and adapted version of the main lib/internal/util/inspect.js file defined at + + https://github.com/nodejs/node/blob/main/lib/internal/util/inspect.js + + Don't try to replace with the original file and keep it up to date with the upstream file. + */ + inspect = { + format(format, ...args) { + // Simplified version of https://nodejs.org/api/util.html#utilformatformat-args + return format.replace(/%([sdifj])/g, function (...[_unused, type]) { + const replacement = args.shift(); + if (type === 'f') { + return replacement.toFixed(6) + } else if (type === 'j') { + return JSON.stringify(replacement) + } else if (type === 's' && typeof replacement === 'object') { + const ctor = replacement.constructor !== Object ? replacement.constructor.name : ''; + return `${ctor} {}`.trim() + } else { + return replacement.toString() + } + }) + }, + inspect(value) { + // Vastly simplified version of https://nodejs.org/api/util.html#utilinspectobject-options + switch (typeof value) { + case 'string': + if (value.includes("'")) { + if (!value.includes('"')) { + return `"${value}"` + } else if (!value.includes('`') && !value.includes('${')) { + return `\`${value}\`` + } + } + return `'${value}'` + case 'number': + if (isNaN(value)) { + return 'NaN' + } else if (Object.is(value, -0)) { + return String(value) + } + return value + case 'bigint': + return `${String(value)}n` + case 'boolean': + case 'undefined': + return String(value) + case 'object': + return '{}' + } + } + }; + return inspect; +} + +var errors; +var hasRequiredErrors; + +function requireErrors () { + if (hasRequiredErrors) return errors; + hasRequiredErrors = 1; + + const { format, inspect } = requireInspect(); + const { AggregateError: CustomAggregateError } = requirePrimordials(); + + /* + This file is a reduced and adapted version of the main lib/internal/errors.js file defined at + + https://github.com/nodejs/node/blob/main/lib/internal/errors.js + + Don't try to replace with the original file and keep it up to date (starting from E(...) definitions) + with the upstream file. + */ + + const AggregateError = globalThis.AggregateError || CustomAggregateError; + const kIsNodeError = Symbol('kIsNodeError'); + const kTypes = [ + 'string', + 'function', + 'number', + 'object', + // Accept 'Function' and 'Object' as alternative to the lower cased version. + 'Function', + 'Object', + 'boolean', + 'bigint', + 'symbol' + ]; + const classRegExp = /^([A-Z][a-z0-9]*)+$/; + const nodeInternalPrefix = '__node_internal_'; + const codes = {}; + function assert(value, message) { + if (!value) { + throw new codes.ERR_INTERNAL_ASSERTION(message) + } + } + + // Only use this for integers! Decimal numbers do not work with this function. + function addNumericalSeparator(val) { + let res = ''; + let i = val.length; + const start = val[0] === '-' ? 1 : 0; + for (; i >= start + 4; i -= 3) { + res = `_${val.slice(i - 3, i)}${res}`; + } + return `${val.slice(0, i)}${res}` + } + function getMessage(key, msg, args) { + if (typeof msg === 'function') { + assert( + msg.length <= args.length, + // Default options do not count. + `Code: ${key}; The provided arguments length (${args.length}) does not match the required ones (${msg.length}).` + ); + return msg(...args) + } + const expectedLength = (msg.match(/%[dfijoOs]/g) || []).length; + assert( + expectedLength === args.length, + `Code: ${key}; The provided arguments length (${args.length}) does not match the required ones (${expectedLength}).` + ); + if (args.length === 0) { + return msg + } + return format(msg, ...args) + } + function E(code, message, Base) { + if (!Base) { + Base = Error; + } + class NodeError extends Base { + constructor(...args) { + super(getMessage(code, message, args)); + } + toString() { + return `${this.name} [${code}]: ${this.message}` + } + } + Object.defineProperties(NodeError.prototype, { + name: { + value: Base.name, + writable: true, + enumerable: false, + configurable: true + }, + toString: { + value() { + return `${this.name} [${code}]: ${this.message}` + }, + writable: true, + enumerable: false, + configurable: true + } + }); + NodeError.prototype.code = code; + NodeError.prototype[kIsNodeError] = true; + codes[code] = NodeError; + } + function hideStackFrames(fn) { + // We rename the functions that will be hidden to cut off the stacktrace + // at the outermost one + const hidden = nodeInternalPrefix + fn.name; + Object.defineProperty(fn, 'name', { + value: hidden + }); + return fn + } + function aggregateTwoErrors(innerError, outerError) { + if (innerError && outerError && innerError !== outerError) { + if (Array.isArray(outerError.errors)) { + // If `outerError` is already an `AggregateError`. + outerError.errors.push(innerError); + return outerError + } + const err = new AggregateError([outerError, innerError], outerError.message); + err.code = outerError.code; + return err + } + return innerError || outerError + } + class AbortError extends Error { + constructor(message = 'The operation was aborted', options = undefined) { + if (options !== undefined && typeof options !== 'object') { + throw new codes.ERR_INVALID_ARG_TYPE('options', 'Object', options) + } + super(message, options); + this.code = 'ABORT_ERR'; + this.name = 'AbortError'; + } + } + E('ERR_ASSERTION', '%s', Error); + E( + 'ERR_INVALID_ARG_TYPE', + (name, expected, actual) => { + assert(typeof name === 'string', "'name' must be a string"); + if (!Array.isArray(expected)) { + expected = [expected]; + } + let msg = 'The '; + if (name.endsWith(' argument')) { + // For cases like 'first argument' + msg += `${name} `; + } else { + msg += `"${name}" ${name.includes('.') ? 'property' : 'argument'} `; + } + msg += 'must be '; + const types = []; + const instances = []; + const other = []; + for (const value of expected) { + assert(typeof value === 'string', 'All expected entries have to be of type string'); + if (kTypes.includes(value)) { + types.push(value.toLowerCase()); + } else if (classRegExp.test(value)) { + instances.push(value); + } else { + assert(value !== 'object', 'The value "object" should be written as "Object"'); + other.push(value); + } + } + + // Special handle `object` in case other instances are allowed to outline + // the differences between each other. + if (instances.length > 0) { + const pos = types.indexOf('object'); + if (pos !== -1) { + types.splice(types, pos, 1); + instances.push('Object'); + } + } + if (types.length > 0) { + switch (types.length) { + case 1: + msg += `of type ${types[0]}`; + break + case 2: + msg += `one of type ${types[0]} or ${types[1]}`; + break + default: { + const last = types.pop(); + msg += `one of type ${types.join(', ')}, or ${last}`; + } + } + if (instances.length > 0 || other.length > 0) { + msg += ' or '; + } + } + if (instances.length > 0) { + switch (instances.length) { + case 1: + msg += `an instance of ${instances[0]}`; + break + case 2: + msg += `an instance of ${instances[0]} or ${instances[1]}`; + break + default: { + const last = instances.pop(); + msg += `an instance of ${instances.join(', ')}, or ${last}`; + } + } + if (other.length > 0) { + msg += ' or '; + } + } + switch (other.length) { + case 0: + break + case 1: + if (other[0].toLowerCase() !== other[0]) { + msg += 'an '; + } + msg += `${other[0]}`; + break + case 2: + msg += `one of ${other[0]} or ${other[1]}`; + break + default: { + const last = other.pop(); + msg += `one of ${other.join(', ')}, or ${last}`; + } + } + if (actual == null) { + msg += `. Received ${actual}`; + } else if (typeof actual === 'function' && actual.name) { + msg += `. Received function ${actual.name}`; + } else if (typeof actual === 'object') { + var _actual$constructor; + if ( + (_actual$constructor = actual.constructor) !== null && + _actual$constructor !== undefined && + _actual$constructor.name + ) { + msg += `. Received an instance of ${actual.constructor.name}`; + } else { + const inspected = inspect(actual, { + depth: -1 + }); + msg += `. Received ${inspected}`; + } + } else { + let inspected = inspect(actual, { + colors: false + }); + if (inspected.length > 25) { + inspected = `${inspected.slice(0, 25)}...`; + } + msg += `. Received type ${typeof actual} (${inspected})`; + } + return msg + }, + TypeError + ); + E( + 'ERR_INVALID_ARG_VALUE', + (name, value, reason = 'is invalid') => { + let inspected = inspect(value); + if (inspected.length > 128) { + inspected = inspected.slice(0, 128) + '...'; + } + const type = name.includes('.') ? 'property' : 'argument'; + return `The ${type} '${name}' ${reason}. Received ${inspected}` + }, + TypeError + ); + E( + 'ERR_INVALID_RETURN_VALUE', + (input, name, value) => { + var _value$constructor; + const type = + value !== null && + value !== undefined && + (_value$constructor = value.constructor) !== null && + _value$constructor !== undefined && + _value$constructor.name + ? `instance of ${value.constructor.name}` + : `type ${typeof value}`; + return `Expected ${input} to be returned from the "${name}"` + ` function but got ${type}.` + }, + TypeError + ); + E( + 'ERR_MISSING_ARGS', + (...args) => { + assert(args.length > 0, 'At least one arg needs to be specified'); + let msg; + const len = args.length; + args = (Array.isArray(args) ? args : [args]).map((a) => `"${a}"`).join(' or '); + switch (len) { + case 1: + msg += `The ${args[0]} argument`; + break + case 2: + msg += `The ${args[0]} and ${args[1]} arguments`; + break + default: + { + const last = args.pop(); + msg += `The ${args.join(', ')}, and ${last} arguments`; + } + break + } + return `${msg} must be specified` + }, + TypeError + ); + E( + 'ERR_OUT_OF_RANGE', + (str, range, input) => { + assert(range, 'Missing "range" argument'); + let received; + if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) { + received = addNumericalSeparator(String(input)); + } else if (typeof input === 'bigint') { + received = String(input); + const limit = BigInt(2) ** BigInt(32); + if (input > limit || input < -limit) { + received = addNumericalSeparator(received); + } + received += 'n'; + } else { + received = inspect(input); + } + return `The value of "${str}" is out of range. It must be ${range}. Received ${received}` + }, + RangeError + ); + E('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times', Error); + E('ERR_METHOD_NOT_IMPLEMENTED', 'The %s method is not implemented', Error); + E('ERR_STREAM_ALREADY_FINISHED', 'Cannot call %s after a stream was finished', Error); + E('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable', Error); + E('ERR_STREAM_DESTROYED', 'Cannot call %s after a stream was destroyed', Error); + E('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError); + E('ERR_STREAM_PREMATURE_CLOSE', 'Premature close', Error); + E('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF', Error); + E('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event', Error); + E('ERR_STREAM_WRITE_AFTER_END', 'write after end', Error); + E('ERR_UNKNOWN_ENCODING', 'Unknown encoding: %s', TypeError); + errors = { + AbortError, + aggregateTwoErrors: hideStackFrames(aggregateTwoErrors), + hideStackFrames, + codes + }; + return errors; +} + +var browser = {exports: {}}; + +/*globals self, window */ + +var hasRequiredBrowser$1; + +function requireBrowser$1 () { + if (hasRequiredBrowser$1) return browser.exports; + hasRequiredBrowser$1 = 1; + + /*eslint-disable @mysticatea/prettier */ + const { AbortController, AbortSignal } = + typeof self !== "undefined" ? self : + typeof window !== "undefined" ? window : + /* otherwise */ undefined; + /*eslint-enable @mysticatea/prettier */ + + browser.exports = AbortController; + browser.exports.AbortSignal = AbortSignal; + browser.exports.default = AbortController; + return browser.exports; +} + +var events$1 = {exports: {}}; + +var hasRequiredEvents$1; + +function requireEvents$1 () { + if (hasRequiredEvents$1) return events$1.exports; + hasRequiredEvents$1 = 1; + + var R = typeof Reflect === 'object' ? Reflect : null; + var ReflectApply = R && typeof R.apply === 'function' + ? R.apply + : function ReflectApply(target, receiver, args) { + return Function.prototype.apply.call(target, receiver, args); + }; + + var ReflectOwnKeys; + if (R && typeof R.ownKeys === 'function') { + ReflectOwnKeys = R.ownKeys; + } else if (Object.getOwnPropertySymbols) { + ReflectOwnKeys = function ReflectOwnKeys(target) { + return Object.getOwnPropertyNames(target) + .concat(Object.getOwnPropertySymbols(target)); + }; + } else { + ReflectOwnKeys = function ReflectOwnKeys(target) { + return Object.getOwnPropertyNames(target); + }; + } + + function ProcessEmitWarning(warning) { + if (console && console.warn) console.warn(warning); + } + + var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) { + return value !== value; + }; + + function EventEmitter() { + EventEmitter.init.call(this); + } + events$1.exports = EventEmitter; + events$1.exports.once = once; + + // Backwards-compat with node 0.10.x + EventEmitter.EventEmitter = EventEmitter; + + EventEmitter.prototype._events = undefined; + EventEmitter.prototype._eventsCount = 0; + EventEmitter.prototype._maxListeners = undefined; + + // By default EventEmitters will print a warning if more than 10 listeners are + // added to it. This is a useful default which helps finding memory leaks. + var defaultMaxListeners = 10; + + function checkListener(listener) { + if (typeof listener !== 'function') { + throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener); + } + } + + Object.defineProperty(EventEmitter, 'defaultMaxListeners', { + enumerable: true, + get: function() { + return defaultMaxListeners; + }, + set: function(arg) { + if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) { + throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + '.'); + } + defaultMaxListeners = arg; + } + }); + + EventEmitter.init = function() { + + if (this._events === undefined || + this._events === Object.getPrototypeOf(this)._events) { + this._events = Object.create(null); + this._eventsCount = 0; + } + + this._maxListeners = this._maxListeners || undefined; + }; + + // Obviously not all Emitters should be limited to 10. This function allows + // that to be increased. Set to zero for unlimited. + EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) { + if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) { + throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + '.'); + } + this._maxListeners = n; + return this; + }; + + function _getMaxListeners(that) { + if (that._maxListeners === undefined) + return EventEmitter.defaultMaxListeners; + return that._maxListeners; + } + + EventEmitter.prototype.getMaxListeners = function getMaxListeners() { + return _getMaxListeners(this); + }; + + EventEmitter.prototype.emit = function emit(type) { + var args = []; + for (var i = 1; i < arguments.length; i++) args.push(arguments[i]); + var doError = (type === 'error'); + + var events = this._events; + if (events !== undefined) + doError = (doError && events.error === undefined); + else if (!doError) + return false; + + // If there is no 'error' event listener then throw. + if (doError) { + var er; + if (args.length > 0) + er = args[0]; + if (er instanceof Error) { + // Note: The comments on the `throw` lines are intentional, they show + // up in Node's output if this results in an unhandled exception. + throw er; // Unhandled 'error' event + } + // At least give some kind of context to the user + var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : '')); + err.context = er; + throw err; // Unhandled 'error' event + } + + var handler = events[type]; + + if (handler === undefined) + return false; + + if (typeof handler === 'function') { + ReflectApply(handler, this, args); + } else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for (var i = 0; i < len; ++i) + ReflectApply(listeners[i], this, args); + } + + return true; + }; + + function _addListener(target, type, listener, prepend) { + var m; + var events; + var existing; + + checkListener(listener); + + events = target._events; + if (events === undefined) { + events = target._events = Object.create(null); + target._eventsCount = 0; + } else { + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (events.newListener !== undefined) { + target.emit('newListener', type, + listener.listener ? listener.listener : listener); + + // Re-assign `events` because a newListener handler could have caused the + // this._events to be assigned to a new object + events = target._events; + } + existing = events[type]; + } + + if (existing === undefined) { + // Optimize the case of one listener. Don't need the extra array object. + existing = events[type] = listener; + ++target._eventsCount; + } else { + if (typeof existing === 'function') { + // Adding the second element, need to change to array. + existing = events[type] = + prepend ? [listener, existing] : [existing, listener]; + // If we've already got an array, just append. + } else if (prepend) { + existing.unshift(listener); + } else { + existing.push(listener); + } + + // Check for listener leak + m = _getMaxListeners(target); + if (m > 0 && existing.length > m && !existing.warned) { + existing.warned = true; + // No error code for this since it is a Warning + // eslint-disable-next-line no-restricted-syntax + var w = new Error('Possible EventEmitter memory leak detected. ' + + existing.length + ' ' + String(type) + ' listeners ' + + 'added. Use emitter.setMaxListeners() to ' + + 'increase limit'); + w.name = 'MaxListenersExceededWarning'; + w.emitter = target; + w.type = type; + w.count = existing.length; + ProcessEmitWarning(w); + } + } + + return target; + } + + EventEmitter.prototype.addListener = function addListener(type, listener) { + return _addListener(this, type, listener, false); + }; + + EventEmitter.prototype.on = EventEmitter.prototype.addListener; + + EventEmitter.prototype.prependListener = + function prependListener(type, listener) { + return _addListener(this, type, listener, true); + }; + + function onceWrapper() { + if (!this.fired) { + this.target.removeListener(this.type, this.wrapFn); + this.fired = true; + if (arguments.length === 0) + return this.listener.call(this.target); + return this.listener.apply(this.target, arguments); + } + } + + function _onceWrap(target, type, listener) { + var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener }; + var wrapped = onceWrapper.bind(state); + wrapped.listener = listener; + state.wrapFn = wrapped; + return wrapped; + } + + EventEmitter.prototype.once = function once(type, listener) { + checkListener(listener); + this.on(type, _onceWrap(this, type, listener)); + return this; + }; + + EventEmitter.prototype.prependOnceListener = + function prependOnceListener(type, listener) { + checkListener(listener); + this.prependListener(type, _onceWrap(this, type, listener)); + return this; + }; + + // Emits a 'removeListener' event if and only if the listener was removed. + EventEmitter.prototype.removeListener = + function removeListener(type, listener) { + var list, events, position, i, originalListener; + + checkListener(listener); + + events = this._events; + if (events === undefined) + return this; + + list = events[type]; + if (list === undefined) + return this; + + if (list === listener || list.listener === listener) { + if (--this._eventsCount === 0) + this._events = Object.create(null); + else { + delete events[type]; + if (events.removeListener) + this.emit('removeListener', type, list.listener || listener); + } + } else if (typeof list !== 'function') { + position = -1; + + for (i = list.length - 1; i >= 0; i--) { + if (list[i] === listener || list[i].listener === listener) { + originalListener = list[i].listener; + position = i; + break; + } + } + + if (position < 0) + return this; + + if (position === 0) + list.shift(); + else { + spliceOne(list, position); + } + + if (list.length === 1) + events[type] = list[0]; + + if (events.removeListener !== undefined) + this.emit('removeListener', type, originalListener || listener); + } + + return this; + }; + + EventEmitter.prototype.off = EventEmitter.prototype.removeListener; + + EventEmitter.prototype.removeAllListeners = + function removeAllListeners(type) { + var listeners, events, i; + + events = this._events; + if (events === undefined) + return this; + + // not listening for removeListener, no need to emit + if (events.removeListener === undefined) { + if (arguments.length === 0) { + this._events = Object.create(null); + this._eventsCount = 0; + } else if (events[type] !== undefined) { + if (--this._eventsCount === 0) + this._events = Object.create(null); + else + delete events[type]; + } + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + var keys = Object.keys(events); + var key; + for (i = 0; i < keys.length; ++i) { + key = keys[i]; + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = Object.create(null); + this._eventsCount = 0; + return this; + } + + listeners = events[type]; + + if (typeof listeners === 'function') { + this.removeListener(type, listeners); + } else if (listeners !== undefined) { + // LIFO order + for (i = listeners.length - 1; i >= 0; i--) { + this.removeListener(type, listeners[i]); + } + } + + return this; + }; + + function _listeners(target, type, unwrap) { + var events = target._events; + + if (events === undefined) + return []; + + var evlistener = events[type]; + if (evlistener === undefined) + return []; + + if (typeof evlistener === 'function') + return unwrap ? [evlistener.listener || evlistener] : [evlistener]; + + return unwrap ? + unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); + } + + EventEmitter.prototype.listeners = function listeners(type) { + return _listeners(this, type, true); + }; + + EventEmitter.prototype.rawListeners = function rawListeners(type) { + return _listeners(this, type, false); + }; + + EventEmitter.listenerCount = function(emitter, type) { + if (typeof emitter.listenerCount === 'function') { + return emitter.listenerCount(type); + } else { + return listenerCount.call(emitter, type); + } + }; + + EventEmitter.prototype.listenerCount = listenerCount; + function listenerCount(type) { + var events = this._events; + + if (events !== undefined) { + var evlistener = events[type]; + + if (typeof evlistener === 'function') { + return 1; + } else if (evlistener !== undefined) { + return evlistener.length; + } + } + + return 0; + } + + EventEmitter.prototype.eventNames = function eventNames() { + return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : []; + }; + + function arrayClone(arr, n) { + var copy = new Array(n); + for (var i = 0; i < n; ++i) + copy[i] = arr[i]; + return copy; + } + + function spliceOne(list, index) { + for (; index + 1 < list.length; index++) + list[index] = list[index + 1]; + list.pop(); + } + + function unwrapListeners(arr) { + var ret = new Array(arr.length); + for (var i = 0; i < ret.length; ++i) { + ret[i] = arr[i].listener || arr[i]; + } + return ret; + } + + function once(emitter, name) { + return new Promise(function (resolve, reject) { + function errorListener(err) { + emitter.removeListener(name, resolver); + reject(err); + } + + function resolver() { + if (typeof emitter.removeListener === 'function') { + emitter.removeListener('error', errorListener); + } + resolve([].slice.call(arguments)); + } + eventTargetAgnosticAddListener(emitter, name, resolver, { once: true }); + if (name !== 'error') { + addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true }); + } + }); + } + + function addErrorHandlerIfEventEmitter(emitter, handler, flags) { + if (typeof emitter.on === 'function') { + eventTargetAgnosticAddListener(emitter, 'error', handler, flags); + } + } + + function eventTargetAgnosticAddListener(emitter, name, listener, flags) { + if (typeof emitter.on === 'function') { + if (flags.once) { + emitter.once(name, listener); + } else { + emitter.on(name, listener); + } + } else if (typeof emitter.addEventListener === 'function') { + // EventTarget does not have `error` event semantics like Node + // EventEmitters, we do not listen for `error` events here. + emitter.addEventListener(name, function wrapListener(arg) { + // IE does not have builtin `{ once: true }` support so we + // have to do it manually. + if (flags.once) { + emitter.removeEventListener(name, wrapListener); + } + listener(arg); + }); + } else { + throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof emitter); + } + } + return events$1.exports; +} + +var hasRequiredUtil$2; + +function requireUtil$2 () { + if (hasRequiredUtil$2) return util$2.exports; + hasRequiredUtil$2 = 1; + (function (module) { + + const bufferModule = require$$0$1; + const { format, inspect } = requireInspect(); + const { + codes: { ERR_INVALID_ARG_TYPE } + } = requireErrors(); + const { kResistStopPropagation, AggregateError, SymbolDispose } = requirePrimordials(); + const AbortSignal = globalThis.AbortSignal || requireBrowser$1().AbortSignal; + const AbortController = globalThis.AbortController || requireBrowser$1().AbortController; + const AsyncFunction = Object.getPrototypeOf(async function () {}).constructor; + const Blob = globalThis.Blob || bufferModule.Blob; + /* eslint-disable indent */ + const isBlob = + typeof Blob !== 'undefined' + ? function isBlob(b) { + // eslint-disable-next-line indent + return b instanceof Blob + } + : function isBlob(b) { + return false + }; + /* eslint-enable indent */ + + const validateAbortSignal = (signal, name) => { + if (signal !== undefined && (signal === null || typeof signal !== 'object' || !('aborted' in signal))) { + throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal) + } + }; + const validateFunction = (value, name) => { + if (typeof value !== 'function') { + throw new ERR_INVALID_ARG_TYPE(name, 'Function', value) + } + }; + module.exports = { + AggregateError, + kEmptyObject: Object.freeze({}), + once(callback) { + let called = false; + return function (...args) { + if (called) { + return + } + called = true; + callback.apply(this, args); + } + }, + createDeferredPromise: function () { + let resolve; + let reject; + + // eslint-disable-next-line promise/param-names + const promise = new Promise((res, rej) => { + resolve = res; + reject = rej; + }); + return { + promise, + resolve, + reject + } + }, + promisify(fn) { + return new Promise((resolve, reject) => { + fn((err, ...args) => { + if (err) { + return reject(err) + } + return resolve(...args) + }); + }) + }, + debuglog() { + return function () {} + }, + format, + inspect, + types: { + isAsyncFunction(fn) { + return fn instanceof AsyncFunction + }, + isArrayBufferView(arr) { + return ArrayBuffer.isView(arr) + } + }, + isBlob, + deprecate(fn, message) { + return fn + }, + addAbortListener: + requireEvents$1().addAbortListener || + function addAbortListener(signal, listener) { + if (signal === undefined) { + throw new ERR_INVALID_ARG_TYPE('signal', 'AbortSignal', signal) + } + validateAbortSignal(signal, 'signal'); + validateFunction(listener, 'listener'); + let removeEventListener; + if (signal.aborted) { + queueMicrotask(() => listener()); + } else { + signal.addEventListener('abort', listener, { + __proto__: null, + once: true, + [kResistStopPropagation]: true + }); + removeEventListener = () => { + signal.removeEventListener('abort', listener); + }; + } + return { + __proto__: null, + [SymbolDispose]() { + var _removeEventListener + ;(_removeEventListener = removeEventListener) === null || _removeEventListener === undefined + ? undefined + : _removeEventListener(); + } + } + }, + AbortSignalAny: + AbortSignal.any || + function AbortSignalAny(signals) { + // Fast path if there is only one signal. + if (signals.length === 1) { + return signals[0] + } + const ac = new AbortController(); + const abort = () => ac.abort(); + signals.forEach((signal) => { + validateAbortSignal(signal, 'signals'); + signal.addEventListener('abort', abort, { + once: true + }); + }); + ac.signal.addEventListener( + 'abort', + () => { + signals.forEach((signal) => signal.removeEventListener('abort', abort)); + }, + { + once: true + } + ); + return ac.signal + } + }; + module.exports.promisify.custom = Symbol.for('nodejs.util.promisify.custom'); + } (util$2)); + return util$2.exports; +} + +var operators = {}; + +/* eslint jsdoc/require-jsdoc: "error" */ + +var validators; +var hasRequiredValidators; + +function requireValidators () { + if (hasRequiredValidators) return validators; + hasRequiredValidators = 1; + + const { + ArrayIsArray, + ArrayPrototypeIncludes, + ArrayPrototypeJoin, + ArrayPrototypeMap, + NumberIsInteger, + NumberIsNaN, + NumberMAX_SAFE_INTEGER, + NumberMIN_SAFE_INTEGER, + NumberParseInt, + ObjectPrototypeHasOwnProperty, + RegExpPrototypeExec, + String, + StringPrototypeToUpperCase, + StringPrototypeTrim + } = requirePrimordials(); + const { + hideStackFrames, + codes: { ERR_SOCKET_BAD_PORT, ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE, ERR_OUT_OF_RANGE, ERR_UNKNOWN_SIGNAL } + } = requireErrors(); + const { normalizeEncoding } = requireUtil$2(); + const { isAsyncFunction, isArrayBufferView } = requireUtil$2().types; + const signals = {}; + + /** + * @param {*} value + * @returns {boolean} + */ + function isInt32(value) { + return value === (value | 0) + } + + /** + * @param {*} value + * @returns {boolean} + */ + function isUint32(value) { + return value === value >>> 0 + } + const octalReg = /^[0-7]+$/; + const modeDesc = 'must be a 32-bit unsigned integer or an octal string'; + + /** + * Parse and validate values that will be converted into mode_t (the S_* + * constants). Only valid numbers and octal strings are allowed. They could be + * converted to 32-bit unsigned integers or non-negative signed integers in the + * C++ land, but any value higher than 0o777 will result in platform-specific + * behaviors. + * @param {*} value Values to be validated + * @param {string} name Name of the argument + * @param {number} [def] If specified, will be returned for invalid values + * @returns {number} + */ + function parseFileMode(value, name, def) { + if (typeof value === 'undefined') { + value = def; + } + if (typeof value === 'string') { + if (RegExpPrototypeExec(octalReg, value) === null) { + throw new ERR_INVALID_ARG_VALUE(name, value, modeDesc) + } + value = NumberParseInt(value, 8); + } + validateUint32(value, name); + return value + } + + /** + * @callback validateInteger + * @param {*} value + * @param {string} name + * @param {number} [min] + * @param {number} [max] + * @returns {asserts value is number} + */ + + /** @type {validateInteger} */ + const validateInteger = hideStackFrames((value, name, min = NumberMIN_SAFE_INTEGER, max = NumberMAX_SAFE_INTEGER) => { + if (typeof value !== 'number') throw new ERR_INVALID_ARG_TYPE(name, 'number', value) + if (!NumberIsInteger(value)) throw new ERR_OUT_OF_RANGE(name, 'an integer', value) + if (value < min || value > max) throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value) + }); + + /** + * @callback validateInt32 + * @param {*} value + * @param {string} name + * @param {number} [min] + * @param {number} [max] + * @returns {asserts value is number} + */ + + /** @type {validateInt32} */ + const validateInt32 = hideStackFrames((value, name, min = -2147483648, max = 2147483647) => { + // The defaults for min and max correspond to the limits of 32-bit integers. + if (typeof value !== 'number') { + throw new ERR_INVALID_ARG_TYPE(name, 'number', value) + } + if (!NumberIsInteger(value)) { + throw new ERR_OUT_OF_RANGE(name, 'an integer', value) + } + if (value < min || value > max) { + throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value) + } + }); + + /** + * @callback validateUint32 + * @param {*} value + * @param {string} name + * @param {number|boolean} [positive=false] + * @returns {asserts value is number} + */ + + /** @type {validateUint32} */ + const validateUint32 = hideStackFrames((value, name, positive = false) => { + if (typeof value !== 'number') { + throw new ERR_INVALID_ARG_TYPE(name, 'number', value) + } + if (!NumberIsInteger(value)) { + throw new ERR_OUT_OF_RANGE(name, 'an integer', value) + } + const min = positive ? 1 : 0; + // 2 ** 32 === 4294967296 + const max = 4294967295; + if (value < min || value > max) { + throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value) + } + }); + + /** + * @callback validateString + * @param {*} value + * @param {string} name + * @returns {asserts value is string} + */ + + /** @type {validateString} */ + function validateString(value, name) { + if (typeof value !== 'string') throw new ERR_INVALID_ARG_TYPE(name, 'string', value) + } + + /** + * @callback validateNumber + * @param {*} value + * @param {string} name + * @param {number} [min] + * @param {number} [max] + * @returns {asserts value is number} + */ + + /** @type {validateNumber} */ + function validateNumber(value, name, min = undefined, max) { + if (typeof value !== 'number') throw new ERR_INVALID_ARG_TYPE(name, 'number', value) + if ( + (min != null && value < min) || + (max != null && value > max) || + ((min != null || max != null) && NumberIsNaN(value)) + ) { + throw new ERR_OUT_OF_RANGE( + name, + `${min != null ? `>= ${min}` : ''}${min != null && max != null ? ' && ' : ''}${max != null ? `<= ${max}` : ''}`, + value + ) + } + } + + /** + * @callback validateOneOf + * @template T + * @param {T} value + * @param {string} name + * @param {T[]} oneOf + */ + + /** @type {validateOneOf} */ + const validateOneOf = hideStackFrames((value, name, oneOf) => { + if (!ArrayPrototypeIncludes(oneOf, value)) { + const allowed = ArrayPrototypeJoin( + ArrayPrototypeMap(oneOf, (v) => (typeof v === 'string' ? `'${v}'` : String(v))), + ', ' + ); + const reason = 'must be one of: ' + allowed; + throw new ERR_INVALID_ARG_VALUE(name, value, reason) + } + }); + + /** + * @callback validateBoolean + * @param {*} value + * @param {string} name + * @returns {asserts value is boolean} + */ + + /** @type {validateBoolean} */ + function validateBoolean(value, name) { + if (typeof value !== 'boolean') throw new ERR_INVALID_ARG_TYPE(name, 'boolean', value) + } + + /** + * @param {any} options + * @param {string} key + * @param {boolean} defaultValue + * @returns {boolean} + */ + function getOwnPropertyValueOrDefault(options, key, defaultValue) { + return options == null || !ObjectPrototypeHasOwnProperty(options, key) ? defaultValue : options[key] + } + + /** + * @callback validateObject + * @param {*} value + * @param {string} name + * @param {{ + * allowArray?: boolean, + * allowFunction?: boolean, + * nullable?: boolean + * }} [options] + */ + + /** @type {validateObject} */ + const validateObject = hideStackFrames((value, name, options = null) => { + const allowArray = getOwnPropertyValueOrDefault(options, 'allowArray', false); + const allowFunction = getOwnPropertyValueOrDefault(options, 'allowFunction', false); + const nullable = getOwnPropertyValueOrDefault(options, 'nullable', false); + if ( + (!nullable && value === null) || + (!allowArray && ArrayIsArray(value)) || + (typeof value !== 'object' && (!allowFunction || typeof value !== 'function')) + ) { + throw new ERR_INVALID_ARG_TYPE(name, 'Object', value) + } + }); + + /** + * @callback validateDictionary - We are using the Web IDL Standard definition + * of "dictionary" here, which means any value + * whose Type is either Undefined, Null, or + * Object (which includes functions). + * @param {*} value + * @param {string} name + * @see https://webidl.spec.whatwg.org/#es-dictionary + * @see https://tc39.es/ecma262/#table-typeof-operator-results + */ + + /** @type {validateDictionary} */ + const validateDictionary = hideStackFrames((value, name) => { + if (value != null && typeof value !== 'object' && typeof value !== 'function') { + throw new ERR_INVALID_ARG_TYPE(name, 'a dictionary', value) + } + }); + + /** + * @callback validateArray + * @param {*} value + * @param {string} name + * @param {number} [minLength] + * @returns {asserts value is any[]} + */ + + /** @type {validateArray} */ + const validateArray = hideStackFrames((value, name, minLength = 0) => { + if (!ArrayIsArray(value)) { + throw new ERR_INVALID_ARG_TYPE(name, 'Array', value) + } + if (value.length < minLength) { + const reason = `must be longer than ${minLength}`; + throw new ERR_INVALID_ARG_VALUE(name, value, reason) + } + }); + + /** + * @callback validateStringArray + * @param {*} value + * @param {string} name + * @returns {asserts value is string[]} + */ + + /** @type {validateStringArray} */ + function validateStringArray(value, name) { + validateArray(value, name); + for (let i = 0; i < value.length; i++) { + validateString(value[i], `${name}[${i}]`); + } + } + + /** + * @callback validateBooleanArray + * @param {*} value + * @param {string} name + * @returns {asserts value is boolean[]} + */ + + /** @type {validateBooleanArray} */ + function validateBooleanArray(value, name) { + validateArray(value, name); + for (let i = 0; i < value.length; i++) { + validateBoolean(value[i], `${name}[${i}]`); + } + } + + /** + * @callback validateAbortSignalArray + * @param {*} value + * @param {string} name + * @returns {asserts value is AbortSignal[]} + */ + + /** @type {validateAbortSignalArray} */ + function validateAbortSignalArray(value, name) { + validateArray(value, name); + for (let i = 0; i < value.length; i++) { + const signal = value[i]; + const indexedName = `${name}[${i}]`; + if (signal == null) { + throw new ERR_INVALID_ARG_TYPE(indexedName, 'AbortSignal', signal) + } + validateAbortSignal(signal, indexedName); + } + } + + /** + * @param {*} signal + * @param {string} [name='signal'] + * @returns {asserts signal is keyof signals} + */ + function validateSignalName(signal, name = 'signal') { + validateString(signal, name); + if (signals[signal] === undefined) { + if (signals[StringPrototypeToUpperCase(signal)] !== undefined) { + throw new ERR_UNKNOWN_SIGNAL(signal + ' (signals must use all capital letters)') + } + throw new ERR_UNKNOWN_SIGNAL(signal) + } + } + + /** + * @callback validateBuffer + * @param {*} buffer + * @param {string} [name='buffer'] + * @returns {asserts buffer is ArrayBufferView} + */ + + /** @type {validateBuffer} */ + const validateBuffer = hideStackFrames((buffer, name = 'buffer') => { + if (!isArrayBufferView(buffer)) { + throw new ERR_INVALID_ARG_TYPE(name, ['Buffer', 'TypedArray', 'DataView'], buffer) + } + }); + + /** + * @param {string} data + * @param {string} encoding + */ + function validateEncoding(data, encoding) { + const normalizedEncoding = normalizeEncoding(encoding); + const length = data.length; + if (normalizedEncoding === 'hex' && length % 2 !== 0) { + throw new ERR_INVALID_ARG_VALUE('encoding', encoding, `is invalid for data of length ${length}`) + } + } + + /** + * Check that the port number is not NaN when coerced to a number, + * is an integer and that it falls within the legal range of port numbers. + * @param {*} port + * @param {string} [name='Port'] + * @param {boolean} [allowZero=true] + * @returns {number} + */ + function validatePort(port, name = 'Port', allowZero = true) { + if ( + (typeof port !== 'number' && typeof port !== 'string') || + (typeof port === 'string' && StringPrototypeTrim(port).length === 0) || + +port !== +port >>> 0 || + port > 0xffff || + (port === 0 && !allowZero) + ) { + throw new ERR_SOCKET_BAD_PORT(name, port, allowZero) + } + return port | 0 + } + + /** + * @callback validateAbortSignal + * @param {*} signal + * @param {string} name + */ + + /** @type {validateAbortSignal} */ + const validateAbortSignal = hideStackFrames((signal, name) => { + if (signal !== undefined && (signal === null || typeof signal !== 'object' || !('aborted' in signal))) { + throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal) + } + }); + + /** + * @callback validateFunction + * @param {*} value + * @param {string} name + * @returns {asserts value is Function} + */ + + /** @type {validateFunction} */ + const validateFunction = hideStackFrames((value, name) => { + if (typeof value !== 'function') throw new ERR_INVALID_ARG_TYPE(name, 'Function', value) + }); + + /** + * @callback validatePlainFunction + * @param {*} value + * @param {string} name + * @returns {asserts value is Function} + */ + + /** @type {validatePlainFunction} */ + const validatePlainFunction = hideStackFrames((value, name) => { + if (typeof value !== 'function' || isAsyncFunction(value)) throw new ERR_INVALID_ARG_TYPE(name, 'Function', value) + }); + + /** + * @callback validateUndefined + * @param {*} value + * @param {string} name + * @returns {asserts value is undefined} + */ + + /** @type {validateUndefined} */ + const validateUndefined = hideStackFrames((value, name) => { + if (value !== undefined) throw new ERR_INVALID_ARG_TYPE(name, 'undefined', value) + }); + + /** + * @template T + * @param {T} value + * @param {string} name + * @param {T[]} union + */ + function validateUnion(value, name, union) { + if (!ArrayPrototypeIncludes(union, value)) { + throw new ERR_INVALID_ARG_TYPE(name, `('${ArrayPrototypeJoin(union, '|')}')`, value) + } + } + + /* + The rules for the Link header field are described here: + https://www.rfc-editor.org/rfc/rfc8288.html#section-3 + + This regex validates any string surrounded by angle brackets + (not necessarily a valid URI reference) followed by zero or more + link-params separated by semicolons. + */ + const linkValueRegExp = /^(?:<[^>]*>)(?:\s*;\s*[^;"\s]+(?:=(")?[^;"\s]*\1)?)*$/; + + /** + * @param {any} value + * @param {string} name + */ + function validateLinkHeaderFormat(value, name) { + if (typeof value === 'undefined' || !RegExpPrototypeExec(linkValueRegExp, value)) { + throw new ERR_INVALID_ARG_VALUE( + name, + value, + 'must be an array or string of format "; rel=preload; as=style"' + ) + } + } + + /** + * @param {any} hints + * @return {string} + */ + function validateLinkHeaderValue(hints) { + if (typeof hints === 'string') { + validateLinkHeaderFormat(hints, 'hints'); + return hints + } else if (ArrayIsArray(hints)) { + const hintsLength = hints.length; + let result = ''; + if (hintsLength === 0) { + return result + } + for (let i = 0; i < hintsLength; i++) { + const link = hints[i]; + validateLinkHeaderFormat(link, 'hints'); + result += link; + if (i !== hintsLength - 1) { + result += ', '; + } + } + return result + } + throw new ERR_INVALID_ARG_VALUE( + 'hints', + hints, + 'must be an array or string of format "; rel=preload; as=style"' + ) + } + validators = { + isInt32, + isUint32, + parseFileMode, + validateArray, + validateStringArray, + validateBooleanArray, + validateAbortSignalArray, + validateBoolean, + validateBuffer, + validateDictionary, + validateEncoding, + validateFunction, + validateInt32, + validateInteger, + validateNumber, + validateObject, + validateOneOf, + validatePlainFunction, + validatePort, + validateSignalName, + validateString, + validateUint32, + validateUndefined, + validateUnion, + validateAbortSignal, + validateLinkHeaderValue + }; + return validators; +} + +var endOfStream = {exports: {}}; + +var utils; +var hasRequiredUtils; + +function requireUtils () { + if (hasRequiredUtils) return utils; + hasRequiredUtils = 1; + + const { SymbolAsyncIterator, SymbolIterator, SymbolFor } = requirePrimordials(); + + // We need to use SymbolFor to make these globally available + // for interopt with readable-stream, i.e. readable-stream + // and node core needs to be able to read/write private state + // from each other for proper interoperability. + const kIsDestroyed = SymbolFor('nodejs.stream.destroyed'); + const kIsErrored = SymbolFor('nodejs.stream.errored'); + const kIsReadable = SymbolFor('nodejs.stream.readable'); + const kIsWritable = SymbolFor('nodejs.stream.writable'); + const kIsDisturbed = SymbolFor('nodejs.stream.disturbed'); + const kIsClosedPromise = SymbolFor('nodejs.webstream.isClosedPromise'); + const kControllerErrorFunction = SymbolFor('nodejs.webstream.controllerErrorFunction'); + function isReadableNodeStream(obj, strict = false) { + var _obj$_readableState; + return !!( + ( + obj && + typeof obj.pipe === 'function' && + typeof obj.on === 'function' && + (!strict || (typeof obj.pause === 'function' && typeof obj.resume === 'function')) && + (!obj._writableState || + ((_obj$_readableState = obj._readableState) === null || _obj$_readableState === undefined + ? undefined + : _obj$_readableState.readable) !== false) && + // Duplex + (!obj._writableState || obj._readableState) + ) // Writable has .pipe. + ) + } + function isWritableNodeStream(obj) { + var _obj$_writableState; + return !!( + ( + obj && + typeof obj.write === 'function' && + typeof obj.on === 'function' && + (!obj._readableState || + ((_obj$_writableState = obj._writableState) === null || _obj$_writableState === undefined + ? undefined + : _obj$_writableState.writable) !== false) + ) // Duplex + ) + } + function isDuplexNodeStream(obj) { + return !!( + obj && + typeof obj.pipe === 'function' && + obj._readableState && + typeof obj.on === 'function' && + typeof obj.write === 'function' + ) + } + function isNodeStream(obj) { + return ( + obj && + (obj._readableState || + obj._writableState || + (typeof obj.write === 'function' && typeof obj.on === 'function') || + (typeof obj.pipe === 'function' && typeof obj.on === 'function')) + ) + } + function isReadableStream(obj) { + return !!( + obj && + !isNodeStream(obj) && + typeof obj.pipeThrough === 'function' && + typeof obj.getReader === 'function' && + typeof obj.cancel === 'function' + ) + } + function isWritableStream(obj) { + return !!(obj && !isNodeStream(obj) && typeof obj.getWriter === 'function' && typeof obj.abort === 'function') + } + function isTransformStream(obj) { + return !!(obj && !isNodeStream(obj) && typeof obj.readable === 'object' && typeof obj.writable === 'object') + } + function isWebStream(obj) { + return isReadableStream(obj) || isWritableStream(obj) || isTransformStream(obj) + } + function isIterable(obj, isAsync) { + if (obj == null) return false + if (isAsync === true) return typeof obj[SymbolAsyncIterator] === 'function' + if (isAsync === false) return typeof obj[SymbolIterator] === 'function' + return typeof obj[SymbolAsyncIterator] === 'function' || typeof obj[SymbolIterator] === 'function' + } + function isDestroyed(stream) { + if (!isNodeStream(stream)) return null + const wState = stream._writableState; + const rState = stream._readableState; + const state = wState || rState; + return !!(stream.destroyed || stream[kIsDestroyed] || (state !== null && state !== undefined && state.destroyed)) + } + + // Have been end():d. + function isWritableEnded(stream) { + if (!isWritableNodeStream(stream)) return null + if (stream.writableEnded === true) return true + const wState = stream._writableState; + if (wState !== null && wState !== undefined && wState.errored) return false + if (typeof (wState === null || wState === undefined ? undefined : wState.ended) !== 'boolean') return null + return wState.ended + } + + // Have emitted 'finish'. + function isWritableFinished(stream, strict) { + if (!isWritableNodeStream(stream)) return null + if (stream.writableFinished === true) return true + const wState = stream._writableState; + if (wState !== null && wState !== undefined && wState.errored) return false + if (typeof (wState === null || wState === undefined ? undefined : wState.finished) !== 'boolean') return null + return !!(wState.finished || (strict === false && wState.ended === true && wState.length === 0)) + } + + // Have been push(null):d. + function isReadableEnded(stream) { + if (!isReadableNodeStream(stream)) return null + if (stream.readableEnded === true) return true + const rState = stream._readableState; + if (!rState || rState.errored) return false + if (typeof (rState === null || rState === undefined ? undefined : rState.ended) !== 'boolean') return null + return rState.ended + } + + // Have emitted 'end'. + function isReadableFinished(stream, strict) { + if (!isReadableNodeStream(stream)) return null + const rState = stream._readableState; + if (rState !== null && rState !== undefined && rState.errored) return false + if (typeof (rState === null || rState === undefined ? undefined : rState.endEmitted) !== 'boolean') return null + return !!(rState.endEmitted || (strict === false && rState.ended === true && rState.length === 0)) + } + function isReadable(stream) { + if (stream && stream[kIsReadable] != null) return stream[kIsReadable] + if (typeof (stream === null || stream === undefined ? undefined : stream.readable) !== 'boolean') return null + if (isDestroyed(stream)) return false + return isReadableNodeStream(stream) && stream.readable && !isReadableFinished(stream) + } + function isWritable(stream) { + if (stream && stream[kIsWritable] != null) return stream[kIsWritable] + if (typeof (stream === null || stream === undefined ? undefined : stream.writable) !== 'boolean') return null + if (isDestroyed(stream)) return false + return isWritableNodeStream(stream) && stream.writable && !isWritableEnded(stream) + } + function isFinished(stream, opts) { + if (!isNodeStream(stream)) { + return null + } + if (isDestroyed(stream)) { + return true + } + if ((opts === null || opts === undefined ? undefined : opts.readable) !== false && isReadable(stream)) { + return false + } + if ((opts === null || opts === undefined ? undefined : opts.writable) !== false && isWritable(stream)) { + return false + } + return true + } + function isWritableErrored(stream) { + var _stream$_writableStat, _stream$_writableStat2; + if (!isNodeStream(stream)) { + return null + } + if (stream.writableErrored) { + return stream.writableErrored + } + return (_stream$_writableStat = + (_stream$_writableStat2 = stream._writableState) === null || _stream$_writableStat2 === undefined + ? undefined + : _stream$_writableStat2.errored) !== null && _stream$_writableStat !== undefined + ? _stream$_writableStat + : null + } + function isReadableErrored(stream) { + var _stream$_readableStat, _stream$_readableStat2; + if (!isNodeStream(stream)) { + return null + } + if (stream.readableErrored) { + return stream.readableErrored + } + return (_stream$_readableStat = + (_stream$_readableStat2 = stream._readableState) === null || _stream$_readableStat2 === undefined + ? undefined + : _stream$_readableStat2.errored) !== null && _stream$_readableStat !== undefined + ? _stream$_readableStat + : null + } + function isClosed(stream) { + if (!isNodeStream(stream)) { + return null + } + if (typeof stream.closed === 'boolean') { + return stream.closed + } + const wState = stream._writableState; + const rState = stream._readableState; + if ( + typeof (wState === null || wState === undefined ? undefined : wState.closed) === 'boolean' || + typeof (rState === null || rState === undefined ? undefined : rState.closed) === 'boolean' + ) { + return ( + (wState === null || wState === undefined ? undefined : wState.closed) || + (rState === null || rState === undefined ? undefined : rState.closed) + ) + } + if (typeof stream._closed === 'boolean' && isOutgoingMessage(stream)) { + return stream._closed + } + return null + } + function isOutgoingMessage(stream) { + return ( + typeof stream._closed === 'boolean' && + typeof stream._defaultKeepAlive === 'boolean' && + typeof stream._removedConnection === 'boolean' && + typeof stream._removedContLen === 'boolean' + ) + } + function isServerResponse(stream) { + return typeof stream._sent100 === 'boolean' && isOutgoingMessage(stream) + } + function isServerRequest(stream) { + var _stream$req; + return ( + typeof stream._consuming === 'boolean' && + typeof stream._dumped === 'boolean' && + ((_stream$req = stream.req) === null || _stream$req === undefined ? undefined : _stream$req.upgradeOrConnect) === + undefined + ) + } + function willEmitClose(stream) { + if (!isNodeStream(stream)) return null + const wState = stream._writableState; + const rState = stream._readableState; + const state = wState || rState; + return ( + (!state && isServerResponse(stream)) || !!(state && state.autoDestroy && state.emitClose && state.closed === false) + ) + } + function isDisturbed(stream) { + var _stream$kIsDisturbed; + return !!( + stream && + ((_stream$kIsDisturbed = stream[kIsDisturbed]) !== null && _stream$kIsDisturbed !== undefined + ? _stream$kIsDisturbed + : stream.readableDidRead || stream.readableAborted) + ) + } + function isErrored(stream) { + var _ref, + _ref2, + _ref3, + _ref4, + _ref5, + _stream$kIsErrored, + _stream$_readableStat3, + _stream$_writableStat3, + _stream$_readableStat4, + _stream$_writableStat4; + return !!( + stream && + ((_ref = + (_ref2 = + (_ref3 = + (_ref4 = + (_ref5 = + (_stream$kIsErrored = stream[kIsErrored]) !== null && _stream$kIsErrored !== undefined + ? _stream$kIsErrored + : stream.readableErrored) !== null && _ref5 !== undefined + ? _ref5 + : stream.writableErrored) !== null && _ref4 !== undefined + ? _ref4 + : (_stream$_readableStat3 = stream._readableState) === null || _stream$_readableStat3 === undefined + ? undefined + : _stream$_readableStat3.errorEmitted) !== null && _ref3 !== undefined + ? _ref3 + : (_stream$_writableStat3 = stream._writableState) === null || _stream$_writableStat3 === undefined + ? undefined + : _stream$_writableStat3.errorEmitted) !== null && _ref2 !== undefined + ? _ref2 + : (_stream$_readableStat4 = stream._readableState) === null || _stream$_readableStat4 === undefined + ? undefined + : _stream$_readableStat4.errored) !== null && _ref !== undefined + ? _ref + : (_stream$_writableStat4 = stream._writableState) === null || _stream$_writableStat4 === undefined + ? undefined + : _stream$_writableStat4.errored) + ) + } + utils = { + isDestroyed, + kIsDestroyed, + isDisturbed, + kIsDisturbed, + isErrored, + kIsErrored, + isReadable, + kIsReadable, + kIsClosedPromise, + kControllerErrorFunction, + kIsWritable, + isClosed, + isDuplexNodeStream, + isFinished, + isIterable, + isReadableNodeStream, + isReadableStream, + isReadableEnded, + isReadableFinished, + isReadableErrored, + isNodeStream, + isWebStream, + isWritable, + isWritableNodeStream, + isWritableStream, + isWritableEnded, + isWritableFinished, + isWritableErrored, + isServerRequest, + isServerResponse, + willEmitClose, + isTransformStream + }; + return utils; +} + +var hasRequiredEndOfStream; + +function requireEndOfStream () { + if (hasRequiredEndOfStream) return endOfStream.exports; + hasRequiredEndOfStream = 1; + + /* replacement start */ + + const process = requireBrowser$2(); + + /* replacement end */ + + const { AbortError, codes } = requireErrors(); + const { ERR_INVALID_ARG_TYPE, ERR_STREAM_PREMATURE_CLOSE } = codes; + const { kEmptyObject, once } = requireUtil$2(); + const { validateAbortSignal, validateFunction, validateObject, validateBoolean } = requireValidators(); + const { Promise, PromisePrototypeThen, SymbolDispose } = requirePrimordials(); + const { + isClosed, + isReadable, + isReadableNodeStream, + isReadableStream, + isReadableFinished, + isReadableErrored, + isWritable, + isWritableNodeStream, + isWritableStream, + isWritableFinished, + isWritableErrored, + isNodeStream, + willEmitClose: _willEmitClose, + kIsClosedPromise + } = requireUtils(); + let addAbortListener; + function isRequest(stream) { + return stream.setHeader && typeof stream.abort === 'function' + } + const nop = () => {}; + function eos(stream, options, callback) { + var _options$readable, _options$writable; + if (arguments.length === 2) { + callback = options; + options = kEmptyObject; + } else if (options == null) { + options = kEmptyObject; + } else { + validateObject(options, 'options'); + } + validateFunction(callback, 'callback'); + validateAbortSignal(options.signal, 'options.signal'); + callback = once(callback); + if (isReadableStream(stream) || isWritableStream(stream)) { + return eosWeb(stream, options, callback) + } + if (!isNodeStream(stream)) { + throw new ERR_INVALID_ARG_TYPE('stream', ['ReadableStream', 'WritableStream', 'Stream'], stream) + } + const readable = + (_options$readable = options.readable) !== null && _options$readable !== undefined + ? _options$readable + : isReadableNodeStream(stream); + const writable = + (_options$writable = options.writable) !== null && _options$writable !== undefined + ? _options$writable + : isWritableNodeStream(stream); + const wState = stream._writableState; + const rState = stream._readableState; + const onlegacyfinish = () => { + if (!stream.writable) { + onfinish(); + } + }; + + // TODO (ronag): Improve soft detection to include core modules and + // common ecosystem modules that do properly emit 'close' but fail + // this generic check. + let willEmitClose = + _willEmitClose(stream) && isReadableNodeStream(stream) === readable && isWritableNodeStream(stream) === writable; + let writableFinished = isWritableFinished(stream, false); + const onfinish = () => { + writableFinished = true; + // Stream should not be destroyed here. If it is that + // means that user space is doing something differently and + // we cannot trust willEmitClose. + if (stream.destroyed) { + willEmitClose = false; + } + if (willEmitClose && (!stream.readable || readable)) { + return + } + if (!readable || readableFinished) { + callback.call(stream); + } + }; + let readableFinished = isReadableFinished(stream, false); + const onend = () => { + readableFinished = true; + // Stream should not be destroyed here. If it is that + // means that user space is doing something differently and + // we cannot trust willEmitClose. + if (stream.destroyed) { + willEmitClose = false; + } + if (willEmitClose && (!stream.writable || writable)) { + return + } + if (!writable || writableFinished) { + callback.call(stream); + } + }; + const onerror = (err) => { + callback.call(stream, err); + }; + let closed = isClosed(stream); + const onclose = () => { + closed = true; + const errored = isWritableErrored(stream) || isReadableErrored(stream); + if (errored && typeof errored !== 'boolean') { + return callback.call(stream, errored) + } + if (readable && !readableFinished && isReadableNodeStream(stream, true)) { + if (!isReadableFinished(stream, false)) return callback.call(stream, new ERR_STREAM_PREMATURE_CLOSE()) + } + if (writable && !writableFinished) { + if (!isWritableFinished(stream, false)) return callback.call(stream, new ERR_STREAM_PREMATURE_CLOSE()) + } + callback.call(stream); + }; + const onclosed = () => { + closed = true; + const errored = isWritableErrored(stream) || isReadableErrored(stream); + if (errored && typeof errored !== 'boolean') { + return callback.call(stream, errored) + } + callback.call(stream); + }; + const onrequest = () => { + stream.req.on('finish', onfinish); + }; + if (isRequest(stream)) { + stream.on('complete', onfinish); + if (!willEmitClose) { + stream.on('abort', onclose); + } + if (stream.req) { + onrequest(); + } else { + stream.on('request', onrequest); + } + } else if (writable && !wState) { + // legacy streams + stream.on('end', onlegacyfinish); + stream.on('close', onlegacyfinish); + } + + // Not all streams will emit 'close' after 'aborted'. + if (!willEmitClose && typeof stream.aborted === 'boolean') { + stream.on('aborted', onclose); + } + stream.on('end', onend); + stream.on('finish', onfinish); + if (options.error !== false) { + stream.on('error', onerror); + } + stream.on('close', onclose); + if (closed) { + process.nextTick(onclose); + } else if ( + (wState !== null && wState !== undefined && wState.errorEmitted) || + (rState !== null && rState !== undefined && rState.errorEmitted) + ) { + if (!willEmitClose) { + process.nextTick(onclosed); + } + } else if ( + !readable && + (!willEmitClose || isReadable(stream)) && + (writableFinished || isWritable(stream) === false) + ) { + process.nextTick(onclosed); + } else if ( + !writable && + (!willEmitClose || isWritable(stream)) && + (readableFinished || isReadable(stream) === false) + ) { + process.nextTick(onclosed); + } else if (rState && stream.req && stream.aborted) { + process.nextTick(onclosed); + } + const cleanup = () => { + callback = nop; + stream.removeListener('aborted', onclose); + stream.removeListener('complete', onfinish); + stream.removeListener('abort', onclose); + stream.removeListener('request', onrequest); + if (stream.req) stream.req.removeListener('finish', onfinish); + stream.removeListener('end', onlegacyfinish); + stream.removeListener('close', onlegacyfinish); + stream.removeListener('finish', onfinish); + stream.removeListener('end', onend); + stream.removeListener('error', onerror); + stream.removeListener('close', onclose); + }; + if (options.signal && !closed) { + const abort = () => { + // Keep it because cleanup removes it. + const endCallback = callback; + cleanup(); + endCallback.call( + stream, + new AbortError(undefined, { + cause: options.signal.reason + }) + ); + }; + if (options.signal.aborted) { + process.nextTick(abort); + } else { + addAbortListener = addAbortListener || requireUtil$2().addAbortListener; + const disposable = addAbortListener(options.signal, abort); + const originalCallback = callback; + callback = once((...args) => { + disposable[SymbolDispose](); + originalCallback.apply(stream, args); + }); + } + } + return cleanup + } + function eosWeb(stream, options, callback) { + let isAborted = false; + let abort = nop; + if (options.signal) { + abort = () => { + isAborted = true; + callback.call( + stream, + new AbortError(undefined, { + cause: options.signal.reason + }) + ); + }; + if (options.signal.aborted) { + process.nextTick(abort); + } else { + addAbortListener = addAbortListener || requireUtil$2().addAbortListener; + const disposable = addAbortListener(options.signal, abort); + const originalCallback = callback; + callback = once((...args) => { + disposable[SymbolDispose](); + originalCallback.apply(stream, args); + }); + } + } + const resolverFn = (...args) => { + if (!isAborted) { + process.nextTick(() => callback.apply(stream, args)); + } + }; + PromisePrototypeThen(stream[kIsClosedPromise].promise, resolverFn, resolverFn); + return nop + } + function finished(stream, opts) { + var _opts; + let autoCleanup = false; + if (opts === null) { + opts = kEmptyObject; + } + if ((_opts = opts) !== null && _opts !== undefined && _opts.cleanup) { + validateBoolean(opts.cleanup, 'cleanup'); + autoCleanup = opts.cleanup; + } + return new Promise((resolve, reject) => { + const cleanup = eos(stream, opts, (err) => { + if (autoCleanup) { + cleanup(); + } + if (err) { + reject(err); + } else { + resolve(); + } + }); + }) + } + endOfStream.exports = eos; + endOfStream.exports.finished = finished; + return endOfStream.exports; +} + +var destroy_1; +var hasRequiredDestroy; + +function requireDestroy () { + if (hasRequiredDestroy) return destroy_1; + hasRequiredDestroy = 1; + + /* replacement start */ + + const process = requireBrowser$2(); + + /* replacement end */ + + const { + aggregateTwoErrors, + codes: { ERR_MULTIPLE_CALLBACK }, + AbortError + } = requireErrors(); + const { Symbol } = requirePrimordials(); + const { kIsDestroyed, isDestroyed, isFinished, isServerRequest } = requireUtils(); + const kDestroy = Symbol('kDestroy'); + const kConstruct = Symbol('kConstruct'); + function checkError(err, w, r) { + if (err) { + // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364 + err.stack; // eslint-disable-line no-unused-expressions + + if (w && !w.errored) { + w.errored = err; + } + if (r && !r.errored) { + r.errored = err; + } + } + } + + // Backwards compat. cb() is undocumented and unused in core but + // unfortunately might be used by modules. + function destroy(err, cb) { + const r = this._readableState; + const w = this._writableState; + // With duplex streams we use the writable side for state. + const s = w || r; + if ((w !== null && w !== undefined && w.destroyed) || (r !== null && r !== undefined && r.destroyed)) { + if (typeof cb === 'function') { + cb(); + } + return this + } + + // We set destroyed to true before firing error callbacks in order + // to make it re-entrance safe in case destroy() is called within callbacks + checkError(err, w, r); + if (w) { + w.destroyed = true; + } + if (r) { + r.destroyed = true; + } + + // If still constructing then defer calling _destroy. + if (!s.constructed) { + this.once(kDestroy, function (er) { + _destroy(this, aggregateTwoErrors(er, err), cb); + }); + } else { + _destroy(this, err, cb); + } + return this + } + function _destroy(self, err, cb) { + let called = false; + function onDestroy(err) { + if (called) { + return + } + called = true; + const r = self._readableState; + const w = self._writableState; + checkError(err, w, r); + if (w) { + w.closed = true; + } + if (r) { + r.closed = true; + } + if (typeof cb === 'function') { + cb(err); + } + if (err) { + process.nextTick(emitErrorCloseNT, self, err); + } else { + process.nextTick(emitCloseNT, self); + } + } + try { + self._destroy(err || null, onDestroy); + } catch (err) { + onDestroy(err); + } + } + function emitErrorCloseNT(self, err) { + emitErrorNT(self, err); + emitCloseNT(self); + } + function emitCloseNT(self) { + const r = self._readableState; + const w = self._writableState; + if (w) { + w.closeEmitted = true; + } + if (r) { + r.closeEmitted = true; + } + if ((w !== null && w !== undefined && w.emitClose) || (r !== null && r !== undefined && r.emitClose)) { + self.emit('close'); + } + } + function emitErrorNT(self, err) { + const r = self._readableState; + const w = self._writableState; + if ((w !== null && w !== undefined && w.errorEmitted) || (r !== null && r !== undefined && r.errorEmitted)) { + return + } + if (w) { + w.errorEmitted = true; + } + if (r) { + r.errorEmitted = true; + } + self.emit('error', err); + } + function undestroy() { + const r = this._readableState; + const w = this._writableState; + if (r) { + r.constructed = true; + r.closed = false; + r.closeEmitted = false; + r.destroyed = false; + r.errored = null; + r.errorEmitted = false; + r.reading = false; + r.ended = r.readable === false; + r.endEmitted = r.readable === false; + } + if (w) { + w.constructed = true; + w.destroyed = false; + w.closed = false; + w.closeEmitted = false; + w.errored = null; + w.errorEmitted = false; + w.finalCalled = false; + w.prefinished = false; + w.ended = w.writable === false; + w.ending = w.writable === false; + w.finished = w.writable === false; + } + } + function errorOrDestroy(stream, err, sync) { + // We have tests that rely on errors being emitted + // in the same tick, so changing this is semver major. + // For now when you opt-in to autoDestroy we allow + // the error to be emitted nextTick. In a future + // semver major update we should change the default to this. + + const r = stream._readableState; + const w = stream._writableState; + if ((w !== null && w !== undefined && w.destroyed) || (r !== null && r !== undefined && r.destroyed)) { + return this + } + if ((r !== null && r !== undefined && r.autoDestroy) || (w !== null && w !== undefined && w.autoDestroy)) + stream.destroy(err); + else if (err) { + // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364 + err.stack; // eslint-disable-line no-unused-expressions + + if (w && !w.errored) { + w.errored = err; + } + if (r && !r.errored) { + r.errored = err; + } + if (sync) { + process.nextTick(emitErrorNT, stream, err); + } else { + emitErrorNT(stream, err); + } + } + } + function construct(stream, cb) { + if (typeof stream._construct !== 'function') { + return + } + const r = stream._readableState; + const w = stream._writableState; + if (r) { + r.constructed = false; + } + if (w) { + w.constructed = false; + } + stream.once(kConstruct, cb); + if (stream.listenerCount(kConstruct) > 1) { + // Duplex + return + } + process.nextTick(constructNT, stream); + } + function constructNT(stream) { + let called = false; + function onConstruct(err) { + if (called) { + errorOrDestroy(stream, err !== null && err !== undefined ? err : new ERR_MULTIPLE_CALLBACK()); + return + } + called = true; + const r = stream._readableState; + const w = stream._writableState; + const s = w || r; + if (r) { + r.constructed = true; + } + if (w) { + w.constructed = true; + } + if (s.destroyed) { + stream.emit(kDestroy, err); + } else if (err) { + errorOrDestroy(stream, err, true); + } else { + process.nextTick(emitConstructNT, stream); + } + } + try { + stream._construct((err) => { + process.nextTick(onConstruct, err); + }); + } catch (err) { + process.nextTick(onConstruct, err); + } + } + function emitConstructNT(stream) { + stream.emit(kConstruct); + } + function isRequest(stream) { + return (stream === null || stream === undefined ? undefined : stream.setHeader) && typeof stream.abort === 'function' + } + function emitCloseLegacy(stream) { + stream.emit('close'); + } + function emitErrorCloseLegacy(stream, err) { + stream.emit('error', err); + process.nextTick(emitCloseLegacy, stream); + } + + // Normalize destroy for legacy. + function destroyer(stream, err) { + if (!stream || isDestroyed(stream)) { + return + } + if (!err && !isFinished(stream)) { + err = new AbortError(); + } + + // TODO: Remove isRequest branches. + if (isServerRequest(stream)) { + stream.socket = null; + stream.destroy(err); + } else if (isRequest(stream)) { + stream.abort(); + } else if (isRequest(stream.req)) { + stream.req.abort(); + } else if (typeof stream.destroy === 'function') { + stream.destroy(err); + } else if (typeof stream.close === 'function') { + // TODO: Don't lose err? + stream.close(); + } else if (err) { + process.nextTick(emitErrorCloseLegacy, stream, err); + } else { + process.nextTick(emitCloseLegacy, stream); + } + if (!stream.destroyed) { + stream[kIsDestroyed] = true; + } + } + destroy_1 = { + construct, + destroyer, + destroy, + undestroy, + errorOrDestroy + }; + return destroy_1; +} + +var legacy; +var hasRequiredLegacy; + +function requireLegacy () { + if (hasRequiredLegacy) return legacy; + hasRequiredLegacy = 1; + + const { ArrayIsArray, ObjectSetPrototypeOf } = requirePrimordials(); + const { EventEmitter: EE } = requireEvents$1(); + function Stream(opts) { + EE.call(this, opts); + } + ObjectSetPrototypeOf(Stream.prototype, EE.prototype); + ObjectSetPrototypeOf(Stream, EE); + Stream.prototype.pipe = function (dest, options) { + const source = this; + function ondata(chunk) { + if (dest.writable && dest.write(chunk) === false && source.pause) { + source.pause(); + } + } + source.on('data', ondata); + function ondrain() { + if (source.readable && source.resume) { + source.resume(); + } + } + dest.on('drain', ondrain); + + // If the 'end' option is not supplied, dest.end() will be called when + // source gets the 'end' or 'close' events. Only dest.end() once. + if (!dest._isStdio && (!options || options.end !== false)) { + source.on('end', onend); + source.on('close', onclose); + } + let didOnEnd = false; + function onend() { + if (didOnEnd) return + didOnEnd = true; + dest.end(); + } + function onclose() { + if (didOnEnd) return + didOnEnd = true; + if (typeof dest.destroy === 'function') dest.destroy(); + } + + // Don't leave dangling pipes when there are errors. + function onerror(er) { + cleanup(); + if (EE.listenerCount(this, 'error') === 0) { + this.emit('error', er); + } + } + prependListener(source, 'error', onerror); + prependListener(dest, 'error', onerror); + + // Remove all the event listeners that were added. + function cleanup() { + source.removeListener('data', ondata); + dest.removeListener('drain', ondrain); + source.removeListener('end', onend); + source.removeListener('close', onclose); + source.removeListener('error', onerror); + dest.removeListener('error', onerror); + source.removeListener('end', cleanup); + source.removeListener('close', cleanup); + dest.removeListener('close', cleanup); + } + source.on('end', cleanup); + source.on('close', cleanup); + dest.on('close', cleanup); + dest.emit('pipe', source); + + // Allow for unix-like usage: A.pipe(B).pipe(C) + return dest + }; + function prependListener(emitter, event, fn) { + // Sadly this is not cacheable as some libraries bundle their own + // event emitter implementation with them. + if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn) + + // This is a hack to make sure that our error handler is attached before any + // userland ones. NEVER DO THIS. This is here only because this code needs + // to continue to work with older versions of Node.js that do not include + // the prependListener() method. The goal is to eventually remove this hack. + if (!emitter._events || !emitter._events[event]) emitter.on(event, fn); + else if (ArrayIsArray(emitter._events[event])) emitter._events[event].unshift(fn); + else emitter._events[event] = [fn, emitter._events[event]]; + } + legacy = { + Stream, + prependListener + }; + return legacy; +} + +var addAbortSignal = {exports: {}}; + +var hasRequiredAddAbortSignal; + +function requireAddAbortSignal () { + if (hasRequiredAddAbortSignal) return addAbortSignal.exports; + hasRequiredAddAbortSignal = 1; + (function (module) { + + const { SymbolDispose } = requirePrimordials(); + const { AbortError, codes } = requireErrors(); + const { isNodeStream, isWebStream, kControllerErrorFunction } = requireUtils(); + const eos = requireEndOfStream(); + const { ERR_INVALID_ARG_TYPE } = codes; + let addAbortListener; + + // This method is inlined here for readable-stream + // It also does not allow for signal to not exist on the stream + // https://github.com/nodejs/node/pull/36061#discussion_r533718029 + const validateAbortSignal = (signal, name) => { + if (typeof signal !== 'object' || !('aborted' in signal)) { + throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal) + } + }; + module.exports.addAbortSignal = function addAbortSignal(signal, stream) { + validateAbortSignal(signal, 'signal'); + if (!isNodeStream(stream) && !isWebStream(stream)) { + throw new ERR_INVALID_ARG_TYPE('stream', ['ReadableStream', 'WritableStream', 'Stream'], stream) + } + return module.exports.addAbortSignalNoValidate(signal, stream) + }; + module.exports.addAbortSignalNoValidate = function (signal, stream) { + if (typeof signal !== 'object' || !('aborted' in signal)) { + return stream + } + const onAbort = isNodeStream(stream) + ? () => { + stream.destroy( + new AbortError(undefined, { + cause: signal.reason + }) + ); + } + : () => { + stream[kControllerErrorFunction]( + new AbortError(undefined, { + cause: signal.reason + }) + ); + }; + if (signal.aborted) { + onAbort(); + } else { + addAbortListener = addAbortListener || requireUtil$2().addAbortListener; + const disposable = addAbortListener(signal, onAbort); + eos(stream, disposable[SymbolDispose]); + } + return stream + }; + } (addAbortSignal)); + return addAbortSignal.exports; +} + +var buffer_list; +var hasRequiredBuffer_list; + +function requireBuffer_list () { + if (hasRequiredBuffer_list) return buffer_list; + hasRequiredBuffer_list = 1; + + const { StringPrototypeSlice, SymbolIterator, TypedArrayPrototypeSet, Uint8Array } = requirePrimordials(); + const { Buffer } = require$$0$1; + const { inspect } = requireUtil$2(); + buffer_list = class BufferList { + constructor() { + this.head = null; + this.tail = null; + this.length = 0; + } + push(v) { + const entry = { + data: v, + next: null + }; + if (this.length > 0) this.tail.next = entry; + else this.head = entry; + this.tail = entry; + ++this.length; + } + unshift(v) { + const entry = { + data: v, + next: this.head + }; + if (this.length === 0) this.tail = entry; + this.head = entry; + ++this.length; + } + shift() { + if (this.length === 0) return + const ret = this.head.data; + if (this.length === 1) this.head = this.tail = null; + else this.head = this.head.next; + --this.length; + return ret + } + clear() { + this.head = this.tail = null; + this.length = 0; + } + join(s) { + if (this.length === 0) return '' + let p = this.head; + let ret = '' + p.data; + while ((p = p.next) !== null) ret += s + p.data; + return ret + } + concat(n) { + if (this.length === 0) return Buffer.alloc(0) + const ret = Buffer.allocUnsafe(n >>> 0); + let p = this.head; + let i = 0; + while (p) { + TypedArrayPrototypeSet(ret, p.data, i); + i += p.data.length; + p = p.next; + } + return ret + } + + // Consumes a specified amount of bytes or characters from the buffered data. + consume(n, hasStrings) { + const data = this.head.data; + if (n < data.length) { + // `slice` is the same for buffers and strings. + const slice = data.slice(0, n); + this.head.data = data.slice(n); + return slice + } + if (n === data.length) { + // First chunk is a perfect match. + return this.shift() + } + // Result spans more than one buffer. + return hasStrings ? this._getString(n) : this._getBuffer(n) + } + first() { + return this.head.data + } + *[SymbolIterator]() { + for (let p = this.head; p; p = p.next) { + yield p.data; + } + } + + // Consumes a specified amount of characters from the buffered data. + _getString(n) { + let ret = ''; + let p = this.head; + let c = 0; + do { + const str = p.data; + if (n > str.length) { + ret += str; + n -= str.length; + } else { + if (n === str.length) { + ret += str; + ++c; + if (p.next) this.head = p.next; + else this.head = this.tail = null; + } else { + ret += StringPrototypeSlice(str, 0, n); + this.head = p; + p.data = StringPrototypeSlice(str, n); + } + break + } + ++c; + } while ((p = p.next) !== null) + this.length -= c; + return ret + } + + // Consumes a specified amount of bytes from the buffered data. + _getBuffer(n) { + const ret = Buffer.allocUnsafe(n); + const retLen = n; + let p = this.head; + let c = 0; + do { + const buf = p.data; + if (n > buf.length) { + TypedArrayPrototypeSet(ret, buf, retLen - n); + n -= buf.length; + } else { + if (n === buf.length) { + TypedArrayPrototypeSet(ret, buf, retLen - n); + ++c; + if (p.next) this.head = p.next; + else this.head = this.tail = null; + } else { + TypedArrayPrototypeSet(ret, new Uint8Array(buf.buffer, buf.byteOffset, n), retLen - n); + this.head = p; + p.data = buf.slice(n); + } + break + } + ++c; + } while ((p = p.next) !== null) + this.length -= c; + return ret + } + + // Make sure the linked list only shows the minimal necessary information. + [Symbol.for('nodejs.util.inspect.custom')](_, options) { + return inspect(this, { + ...options, + // Only inspect one level. + depth: 0, + // It should not recurse. + customInspect: false + }) + } + }; + return buffer_list; +} + +var state; +var hasRequiredState; + +function requireState () { + if (hasRequiredState) return state; + hasRequiredState = 1; + + const { MathFloor, NumberIsInteger } = requirePrimordials(); + const { validateInteger } = requireValidators(); + const { ERR_INVALID_ARG_VALUE } = requireErrors().codes; + let defaultHighWaterMarkBytes = 16 * 1024; + let defaultHighWaterMarkObjectMode = 16; + function highWaterMarkFrom(options, isDuplex, duplexKey) { + return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null + } + function getDefaultHighWaterMark(objectMode) { + return objectMode ? defaultHighWaterMarkObjectMode : defaultHighWaterMarkBytes + } + function setDefaultHighWaterMark(objectMode, value) { + validateInteger(value, 'value', 0); + if (objectMode) { + defaultHighWaterMarkObjectMode = value; + } else { + defaultHighWaterMarkBytes = value; + } + } + function getHighWaterMark(state, options, duplexKey, isDuplex) { + const hwm = highWaterMarkFrom(options, isDuplex, duplexKey); + if (hwm != null) { + if (!NumberIsInteger(hwm) || hwm < 0) { + const name = isDuplex ? `options.${duplexKey}` : 'options.highWaterMark'; + throw new ERR_INVALID_ARG_VALUE(name, hwm) + } + return MathFloor(hwm) + } + + // Default value + return getDefaultHighWaterMark(state.objectMode) + } + state = { + getHighWaterMark, + getDefaultHighWaterMark, + setDefaultHighWaterMark + }; + return state; +} + +var string_decoder = {}; + +var safeBuffer = {exports: {}}; + +/*! safe-buffer. MIT License. Feross Aboukhadijeh */ + +var hasRequiredSafeBuffer; + +function requireSafeBuffer () { + if (hasRequiredSafeBuffer) return safeBuffer.exports; + hasRequiredSafeBuffer = 1; + (function (module, exports$1) { + /* eslint-disable node/no-deprecated-api */ + var buffer = require$$0$1; + var Buffer = buffer.Buffer; + + // alternative to using Object.keys for old browsers + function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key]; + } + } + if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer; + } else { + // Copy properties from require('buffer') + copyProps(buffer, exports$1); + exports$1.Buffer = SafeBuffer; + } + + function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) + } + + SafeBuffer.prototype = Object.create(Buffer.prototype); + + // Copy static methods from Buffer + copyProps(Buffer, SafeBuffer); + + SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) + }; + + SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size); + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding); + } else { + buf.fill(fill); + } + } else { + buf.fill(0); + } + return buf + }; + + SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return Buffer(size) + }; + + SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer.SlowBuffer(size) + }; + } (safeBuffer, safeBuffer.exports)); + return safeBuffer.exports; +} + +var hasRequiredString_decoder; + +function requireString_decoder () { + if (hasRequiredString_decoder) return string_decoder; + hasRequiredString_decoder = 1; + + /**/ + + var Buffer = requireSafeBuffer().Buffer; + /**/ + + var isEncoding = Buffer.isEncoding || function (encoding) { + encoding = '' + encoding; + switch (encoding && encoding.toLowerCase()) { + case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw': + return true; + default: + return false; + } + }; + + function _normalizeEncoding(enc) { + if (!enc) return 'utf8'; + var retried; + while (true) { + switch (enc) { + case 'utf8': + case 'utf-8': + return 'utf8'; + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return 'utf16le'; + case 'latin1': + case 'binary': + return 'latin1'; + case 'base64': + case 'ascii': + case 'hex': + return enc; + default: + if (retried) return; // undefined + enc = ('' + enc).toLowerCase(); + retried = true; + } + } + } + // Do not cache `Buffer.isEncoding` when checking encoding names as some + // modules monkey-patch it to support additional encodings + function normalizeEncoding(enc) { + var nenc = _normalizeEncoding(enc); + if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); + return nenc || enc; + } + + // StringDecoder provides an interface for efficiently splitting a series of + // buffers into a series of JS strings without breaking apart multi-byte + // characters. + string_decoder.StringDecoder = StringDecoder; + function StringDecoder(encoding) { + this.encoding = normalizeEncoding(encoding); + var nb; + switch (this.encoding) { + case 'utf16le': + this.text = utf16Text; + this.end = utf16End; + nb = 4; + break; + case 'utf8': + this.fillLast = utf8FillLast; + nb = 4; + break; + case 'base64': + this.text = base64Text; + this.end = base64End; + nb = 3; + break; + default: + this.write = simpleWrite; + this.end = simpleEnd; + return; + } + this.lastNeed = 0; + this.lastTotal = 0; + this.lastChar = Buffer.allocUnsafe(nb); + } + + StringDecoder.prototype.write = function (buf) { + if (buf.length === 0) return ''; + var r; + var i; + if (this.lastNeed) { + r = this.fillLast(buf); + if (r === undefined) return ''; + i = this.lastNeed; + this.lastNeed = 0; + } else { + i = 0; + } + if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); + return r || ''; + }; + + StringDecoder.prototype.end = utf8End; + + // Returns only complete characters in a Buffer + StringDecoder.prototype.text = utf8Text; + + // Attempts to complete a partial non-UTF-8 character using bytes from a Buffer + StringDecoder.prototype.fillLast = function (buf) { + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); + this.lastNeed -= buf.length; + }; + + // Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a + // continuation byte. If an invalid byte is detected, -2 is returned. + function utf8CheckByte(byte) { + if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4; + return byte >> 6 === 0x02 ? -1 : -2; + } + + // Checks at most 3 bytes at the end of a Buffer in order to detect an + // incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) + // needed to complete the UTF-8 character (if applicable) are returned. + function utf8CheckIncomplete(self, buf, i) { + var j = buf.length - 1; + if (j < i) return 0; + var nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 1; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 2; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) { + if (nb === 2) nb = 0;else self.lastNeed = nb - 3; + } + return nb; + } + return 0; + } + + // Validates as many continuation bytes for a multi-byte UTF-8 character as + // needed or are available. If we see a non-continuation byte where we expect + // one, we "replace" the validated continuation bytes we've seen so far with + // a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding + // behavior. The continuation byte check is included three times in the case + // where all of the continuation bytes for a character exist in the same buffer. + // It is also done this way as a slight performance increase instead of using a + // loop. + function utf8CheckExtraBytes(self, buf, p) { + if ((buf[0] & 0xC0) !== 0x80) { + self.lastNeed = 0; + return '\ufffd'; + } + if (self.lastNeed > 1 && buf.length > 1) { + if ((buf[1] & 0xC0) !== 0x80) { + self.lastNeed = 1; + return '\ufffd'; + } + if (self.lastNeed > 2 && buf.length > 2) { + if ((buf[2] & 0xC0) !== 0x80) { + self.lastNeed = 2; + return '\ufffd'; + } + } + } + } + + // Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. + function utf8FillLast(buf) { + var p = this.lastTotal - this.lastNeed; + var r = utf8CheckExtraBytes(this, buf); + if (r !== undefined) return r; + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, p, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, p, 0, buf.length); + this.lastNeed -= buf.length; + } + + // Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a + // partial character, the character's bytes are buffered until the required + // number of bytes are available. + function utf8Text(buf, i) { + var total = utf8CheckIncomplete(this, buf, i); + if (!this.lastNeed) return buf.toString('utf8', i); + this.lastTotal = total; + var end = buf.length - (total - this.lastNeed); + buf.copy(this.lastChar, 0, end); + return buf.toString('utf8', i, end); + } + + // For UTF-8, a replacement character is added when ending on a partial + // character. + function utf8End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + '\ufffd'; + return r; + } + + // UTF-16LE typically needs two bytes per character, but even if we have an even + // number of bytes available, we need to check if we end on a leading/high + // surrogate. In that case, we need to wait for the next two bytes in order to + // decode the last character properly. + function utf16Text(buf, i) { + if ((buf.length - i) % 2 === 0) { + var r = buf.toString('utf16le', i); + if (r) { + var c = r.charCodeAt(r.length - 1); + if (c >= 0xD800 && c <= 0xDBFF) { + this.lastNeed = 2; + this.lastTotal = 4; + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + return r.slice(0, -1); + } + } + return r; + } + this.lastNeed = 1; + this.lastTotal = 2; + this.lastChar[0] = buf[buf.length - 1]; + return buf.toString('utf16le', i, buf.length - 1); + } + + // For UTF-16LE we do not explicitly append special replacement characters if we + // end on a partial character, we simply let v8 handle that. + function utf16End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) { + var end = this.lastTotal - this.lastNeed; + return r + this.lastChar.toString('utf16le', 0, end); + } + return r; + } + + function base64Text(buf, i) { + var n = (buf.length - i) % 3; + if (n === 0) return buf.toString('base64', i); + this.lastNeed = 3 - n; + this.lastTotal = 3; + if (n === 1) { + this.lastChar[0] = buf[buf.length - 1]; + } else { + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + } + return buf.toString('base64', i, buf.length - n); + } + + function base64End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); + return r; + } + + // Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) + function simpleWrite(buf) { + return buf.toString(this.encoding); + } + + function simpleEnd(buf) { + return buf && buf.length ? this.write(buf) : ''; + } + return string_decoder; +} + +var from_1; +var hasRequiredFrom; + +function requireFrom () { + if (hasRequiredFrom) return from_1; + hasRequiredFrom = 1; + + /* replacement start */ + + const process = requireBrowser$2(); + + /* replacement end */ + + const { PromisePrototypeThen, SymbolAsyncIterator, SymbolIterator } = requirePrimordials(); + const { Buffer } = require$$0$1; + const { ERR_INVALID_ARG_TYPE, ERR_STREAM_NULL_VALUES } = requireErrors().codes; + function from(Readable, iterable, opts) { + let iterator; + if (typeof iterable === 'string' || iterable instanceof Buffer) { + return new Readable({ + objectMode: true, + ...opts, + read() { + this.push(iterable); + this.push(null); + } + }) + } + let isAsync; + if (iterable && iterable[SymbolAsyncIterator]) { + isAsync = true; + iterator = iterable[SymbolAsyncIterator](); + } else if (iterable && iterable[SymbolIterator]) { + isAsync = false; + iterator = iterable[SymbolIterator](); + } else { + throw new ERR_INVALID_ARG_TYPE('iterable', ['Iterable'], iterable) + } + const readable = new Readable({ + objectMode: true, + highWaterMark: 1, + // TODO(ronag): What options should be allowed? + ...opts + }); + + // Flag to protect against _read + // being called before last iteration completion. + let reading = false; + readable._read = function () { + if (!reading) { + reading = true; + next(); + } + }; + readable._destroy = function (error, cb) { + PromisePrototypeThen( + close(error), + () => process.nextTick(cb, error), + // nextTick is here in case cb throws + (e) => process.nextTick(cb, e || error) + ); + }; + async function close(error) { + const hadError = error !== undefined && error !== null; + const hasThrow = typeof iterator.throw === 'function'; + if (hadError && hasThrow) { + const { value, done } = await iterator.throw(error); + await value; + if (done) { + return + } + } + if (typeof iterator.return === 'function') { + const { value } = await iterator.return(); + await value; + } + } + async function next() { + for (;;) { + try { + const { value, done } = isAsync ? await iterator.next() : iterator.next(); + if (done) { + readable.push(null); + } else { + const res = value && typeof value.then === 'function' ? await value : value; + if (res === null) { + reading = false; + throw new ERR_STREAM_NULL_VALUES() + } else if (readable.push(res)) { + continue + } else { + reading = false; + } + } + } catch (err) { + readable.destroy(err); + } + break + } + } + return readable + } + from_1 = from; + return from_1; +} + +var readable; +var hasRequiredReadable; + +function requireReadable () { + if (hasRequiredReadable) return readable; + hasRequiredReadable = 1; + + /* replacement start */ + + const process = requireBrowser$2(); + + /* replacement end */ + + const { + ArrayPrototypeIndexOf, + NumberIsInteger, + NumberIsNaN, + NumberParseInt, + ObjectDefineProperties, + ObjectKeys, + ObjectSetPrototypeOf, + Promise, + SafeSet, + SymbolAsyncDispose, + SymbolAsyncIterator, + Symbol + } = requirePrimordials(); + readable = Readable; + Readable.ReadableState = ReadableState; + const { EventEmitter: EE } = requireEvents$1(); + const { Stream, prependListener } = requireLegacy(); + const { Buffer } = require$$0$1; + const { addAbortSignal } = requireAddAbortSignal(); + const eos = requireEndOfStream(); + let debug = requireUtil$2().debuglog('stream', (fn) => { + debug = fn; + }); + const BufferList = requireBuffer_list(); + const destroyImpl = requireDestroy(); + const { getHighWaterMark, getDefaultHighWaterMark } = requireState(); + const { + aggregateTwoErrors, + codes: { + ERR_INVALID_ARG_TYPE, + ERR_METHOD_NOT_IMPLEMENTED, + ERR_OUT_OF_RANGE, + ERR_STREAM_PUSH_AFTER_EOF, + ERR_STREAM_UNSHIFT_AFTER_END_EVENT + }, + AbortError + } = requireErrors(); + const { validateObject } = requireValidators(); + const kPaused = Symbol('kPaused'); + const { StringDecoder } = requireString_decoder(); + const from = requireFrom(); + ObjectSetPrototypeOf(Readable.prototype, Stream.prototype); + ObjectSetPrototypeOf(Readable, Stream); + const nop = () => {}; + const { errorOrDestroy } = destroyImpl; + const kObjectMode = 1 << 0; + const kEnded = 1 << 1; + const kEndEmitted = 1 << 2; + const kReading = 1 << 3; + const kConstructed = 1 << 4; + const kSync = 1 << 5; + const kNeedReadable = 1 << 6; + const kEmittedReadable = 1 << 7; + const kReadableListening = 1 << 8; + const kResumeScheduled = 1 << 9; + const kErrorEmitted = 1 << 10; + const kEmitClose = 1 << 11; + const kAutoDestroy = 1 << 12; + const kDestroyed = 1 << 13; + const kClosed = 1 << 14; + const kCloseEmitted = 1 << 15; + const kMultiAwaitDrain = 1 << 16; + const kReadingMore = 1 << 17; + const kDataEmitted = 1 << 18; + + // TODO(benjamingr) it is likely slower to do it this way than with free functions + function makeBitMapDescriptor(bit) { + return { + enumerable: false, + get() { + return (this.state & bit) !== 0 + }, + set(value) { + if (value) this.state |= bit; + else this.state &= ~bit; + } + } + } + ObjectDefineProperties(ReadableState.prototype, { + objectMode: makeBitMapDescriptor(kObjectMode), + ended: makeBitMapDescriptor(kEnded), + endEmitted: makeBitMapDescriptor(kEndEmitted), + reading: makeBitMapDescriptor(kReading), + // Stream is still being constructed and cannot be + // destroyed until construction finished or failed. + // Async construction is opt in, therefore we start as + // constructed. + constructed: makeBitMapDescriptor(kConstructed), + // A flag to be able to tell if the event 'readable'/'data' is emitted + // immediately, or on a later tick. We set this to true at first, because + // any actions that shouldn't happen until "later" should generally also + // not happen before the first read call. + sync: makeBitMapDescriptor(kSync), + // Whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + needReadable: makeBitMapDescriptor(kNeedReadable), + emittedReadable: makeBitMapDescriptor(kEmittedReadable), + readableListening: makeBitMapDescriptor(kReadableListening), + resumeScheduled: makeBitMapDescriptor(kResumeScheduled), + // True if the error was already emitted and should not be thrown again. + errorEmitted: makeBitMapDescriptor(kErrorEmitted), + emitClose: makeBitMapDescriptor(kEmitClose), + autoDestroy: makeBitMapDescriptor(kAutoDestroy), + // Has it been destroyed. + destroyed: makeBitMapDescriptor(kDestroyed), + // Indicates whether the stream has finished destroying. + closed: makeBitMapDescriptor(kClosed), + // True if close has been emitted or would have been emitted + // depending on emitClose. + closeEmitted: makeBitMapDescriptor(kCloseEmitted), + multiAwaitDrain: makeBitMapDescriptor(kMultiAwaitDrain), + // If true, a maybeReadMore has been scheduled. + readingMore: makeBitMapDescriptor(kReadingMore), + dataEmitted: makeBitMapDescriptor(kDataEmitted) + }); + function ReadableState(options, stream, isDuplex) { + // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof requireDuplex(); + + // Bit map field to store ReadableState more effciently with 1 bit per field + // instead of a V8 slot per field. + this.state = kEmitClose | kAutoDestroy | kConstructed | kSync; + // Object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away. + if (options && options.objectMode) this.state |= kObjectMode; + if (isDuplex && options && options.readableObjectMode) this.state |= kObjectMode; + + // The point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" + this.highWaterMark = options + ? getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex) + : getDefaultHighWaterMark(false); + + // A linked list is used to store data chunks instead of an array because the + // linked list can remove elements from the beginning faster than + // array.shift(). + this.buffer = new BufferList(); + this.length = 0; + this.pipes = []; + this.flowing = null; + this[kPaused] = null; + + // Should close be emitted on destroy. Defaults to true. + if (options && options.emitClose === false) this.state &= ~kEmitClose; + + // Should .destroy() be called after 'end' (and potentially 'finish'). + if (options && options.autoDestroy === false) this.state &= ~kAutoDestroy; + + // Indicates whether the stream has errored. When true no further + // _read calls, 'data' or 'readable' events should occur. This is needed + // since when autoDestroy is disabled we need a way to tell whether the + // stream has failed. + this.errored = null; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = (options && options.defaultEncoding) || 'utf8'; + + // Ref the piped dest which we need a drain event on it + // type: null | Writable | Set. + this.awaitDrainWriters = null; + this.decoder = null; + this.encoding = null; + if (options && options.encoding) { + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } + } + function Readable(options) { + if (!(this instanceof Readable)) return new Readable(options) + + // Checking for a Stream.Duplex instance is faster here instead of inside + // the ReadableState constructor, at least with V8 6.5. + const isDuplex = this instanceof requireDuplex(); + this._readableState = new ReadableState(options, this, isDuplex); + if (options) { + if (typeof options.read === 'function') this._read = options.read; + if (typeof options.destroy === 'function') this._destroy = options.destroy; + if (typeof options.construct === 'function') this._construct = options.construct; + if (options.signal && !isDuplex) addAbortSignal(options.signal, this); + } + Stream.call(this, options); + destroyImpl.construct(this, () => { + if (this._readableState.needReadable) { + maybeReadMore(this, this._readableState); + } + }); + } + Readable.prototype.destroy = destroyImpl.destroy; + Readable.prototype._undestroy = destroyImpl.undestroy; + Readable.prototype._destroy = function (err, cb) { + cb(err); + }; + Readable.prototype[EE.captureRejectionSymbol] = function (err) { + this.destroy(err); + }; + Readable.prototype[SymbolAsyncDispose] = function () { + let error; + if (!this.destroyed) { + error = this.readableEnded ? null : new AbortError(); + this.destroy(error); + } + return new Promise((resolve, reject) => eos(this, (err) => (err && err !== error ? reject(err) : resolve(null)))) + }; + + // Manually shove something into the read() buffer. + // This returns true if the highWaterMark has not been hit yet, + // similar to how Writable.write() returns true if you should + // write() some more. + Readable.prototype.push = function (chunk, encoding) { + return readableAddChunk(this, chunk, encoding, false) + }; + + // Unshift should *always* be something directly out of read(). + Readable.prototype.unshift = function (chunk, encoding) { + return readableAddChunk(this, chunk, encoding, true) + }; + function readableAddChunk(stream, chunk, encoding, addToFront) { + debug('readableAddChunk', chunk); + const state = stream._readableState; + let err; + if ((state.state & kObjectMode) === 0) { + if (typeof chunk === 'string') { + encoding = encoding || state.defaultEncoding; + if (state.encoding !== encoding) { + if (addToFront && state.encoding) { + // When unshifting, if state.encoding is set, we have to save + // the string in the BufferList with the state encoding. + chunk = Buffer.from(chunk, encoding).toString(state.encoding); + } else { + chunk = Buffer.from(chunk, encoding); + encoding = ''; + } + } + } else if (chunk instanceof Buffer) { + encoding = ''; + } else if (Stream._isUint8Array(chunk)) { + chunk = Stream._uint8ArrayToBuffer(chunk); + encoding = ''; + } else if (chunk != null) { + err = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk); + } + } + if (err) { + errorOrDestroy(stream, err); + } else if (chunk === null) { + state.state &= ~kReading; + onEofChunk(stream, state); + } else if ((state.state & kObjectMode) !== 0 || (chunk && chunk.length > 0)) { + if (addToFront) { + if ((state.state & kEndEmitted) !== 0) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT()); + else if (state.destroyed || state.errored) return false + else addChunk(stream, state, chunk, true); + } else if (state.ended) { + errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF()); + } else if (state.destroyed || state.errored) { + return false + } else { + state.state &= ~kReading; + if (state.decoder && !encoding) { + chunk = state.decoder.write(chunk); + if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false); + else maybeReadMore(stream, state); + } else { + addChunk(stream, state, chunk, false); + } + } + } else if (!addToFront) { + state.state &= ~kReading; + maybeReadMore(stream, state); + } + + // We can push more data if we are below the highWaterMark. + // Also, if we have no data yet, we can stand some more bytes. + // This is to work around cases where hwm=0, such as the repl. + return !state.ended && (state.length < state.highWaterMark || state.length === 0) + } + function addChunk(stream, state, chunk, addToFront) { + if (state.flowing && state.length === 0 && !state.sync && stream.listenerCount('data') > 0) { + // Use the guard to avoid creating `Set()` repeatedly + // when we have multiple pipes. + if ((state.state & kMultiAwaitDrain) !== 0) { + state.awaitDrainWriters.clear(); + } else { + state.awaitDrainWriters = null; + } + state.dataEmitted = true; + stream.emit('data', chunk); + } else { + // Update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) state.buffer.unshift(chunk); + else state.buffer.push(chunk); + if ((state.state & kNeedReadable) !== 0) emitReadable(stream); + } + maybeReadMore(stream, state); + } + Readable.prototype.isPaused = function () { + const state = this._readableState; + return state[kPaused] === true || state.flowing === false + }; + + // Backwards compatibility. + Readable.prototype.setEncoding = function (enc) { + const decoder = new StringDecoder(enc); + this._readableState.decoder = decoder; + // If setEncoding(null), decoder.encoding equals utf8. + this._readableState.encoding = this._readableState.decoder.encoding; + const buffer = this._readableState.buffer; + // Iterate over current buffer to convert already stored Buffers: + let content = ''; + for (const data of buffer) { + content += decoder.write(data); + } + buffer.clear(); + if (content !== '') buffer.push(content); + this._readableState.length = content.length; + return this + }; + + // Don't raise the hwm > 1GB. + const MAX_HWM = 0x40000000; + function computeNewHighWaterMark(n) { + if (n > MAX_HWM) { + throw new ERR_OUT_OF_RANGE('size', '<= 1GiB', n) + } else { + // Get the next highest power of 2 to prevent increasing hwm excessively in + // tiny amounts. + n--; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + n++; + } + return n + } + + // This function is designed to be inlinable, so please take care when making + // changes to the function body. + function howMuchToRead(n, state) { + if (n <= 0 || (state.length === 0 && state.ended)) return 0 + if ((state.state & kObjectMode) !== 0) return 1 + if (NumberIsNaN(n)) { + // Only flow one buffer at a time. + if (state.flowing && state.length) return state.buffer.first().length + return state.length + } + if (n <= state.length) return n + return state.ended ? state.length : 0 + } + + // You can override either this method, or the async _read(n) below. + Readable.prototype.read = function (n) { + debug('read', n); + // Same as parseInt(undefined, 10), however V8 7.3 performance regressed + // in this scenario, so we are doing it manually. + if (n === undefined) { + n = NaN; + } else if (!NumberIsInteger(n)) { + n = NumberParseInt(n, 10); + } + const state = this._readableState; + const nOrig = n; + + // If we're asking for more than the current hwm, then raise the hwm. + if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); + if (n !== 0) state.state &= ~kEmittedReadable; + + // If we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + if ( + n === 0 && + state.needReadable && + ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended) + ) { + debug('read: emitReadable', state.length, state.ended); + if (state.length === 0 && state.ended) endReadable(this); + else emitReadable(this); + return null + } + n = howMuchToRead(n, state); + + // If we've ended, and we're now clear, then finish it up. + if (n === 0 && state.ended) { + if (state.length === 0) endReadable(this); + return null + } + + // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. + + // if we need a readable event, then we need to do some reading. + let doRead = (state.state & kNeedReadable) !== 0; + debug('need readable', doRead); + + // If we currently have less than the highWaterMark, then also read some. + if (state.length === 0 || state.length - n < state.highWaterMark) { + doRead = true; + debug('length less than watermark', doRead); + } + + // However, if we've ended, then there's no point, if we're already + // reading, then it's unnecessary, if we're constructing we have to wait, + // and if we're destroyed or errored, then it's not allowed, + if (state.ended || state.reading || state.destroyed || state.errored || !state.constructed) { + doRead = false; + debug('reading, ended or constructing', doRead); + } else if (doRead) { + debug('do read'); + state.state |= kReading | kSync; + // If the length is currently zero, then we *need* a readable event. + if (state.length === 0) state.state |= kNeedReadable; + + // Call internal read method + try { + this._read(state.highWaterMark); + } catch (err) { + errorOrDestroy(this, err); + } + state.state &= ~kSync; + + // If _read pushed data synchronously, then `reading` will be false, + // and we need to re-evaluate how much data we can return to the user. + if (!state.reading) n = howMuchToRead(nOrig, state); + } + let ret; + if (n > 0) ret = fromList(n, state); + else ret = null; + if (ret === null) { + state.needReadable = state.length <= state.highWaterMark; + n = 0; + } else { + state.length -= n; + if (state.multiAwaitDrain) { + state.awaitDrainWriters.clear(); + } else { + state.awaitDrainWriters = null; + } + } + if (state.length === 0) { + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (!state.ended) state.needReadable = true; + + // If we tried to read() past the EOF, then emit end on the next tick. + if (nOrig !== n && state.ended) endReadable(this); + } + if (ret !== null && !state.errorEmitted && !state.closeEmitted) { + state.dataEmitted = true; + this.emit('data', ret); + } + return ret + }; + function onEofChunk(stream, state) { + debug('onEofChunk'); + if (state.ended) return + if (state.decoder) { + const chunk = state.decoder.end(); + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + state.ended = true; + if (state.sync) { + // If we are sync, wait until next tick to emit the data. + // Otherwise we risk emitting data in the flow() + // the readable code triggers during a read() call. + emitReadable(stream); + } else { + // Emit 'readable' now to make sure it gets picked up. + state.needReadable = false; + state.emittedReadable = true; + // We have to emit readable now that we are EOF. Modules + // in the ecosystem (e.g. dicer) rely on this event being sync. + emitReadable_(stream); + } + } + + // Don't emit readable right away in sync mode, because this can trigger + // another read() call => stack overflow. This way, it might trigger + // a nextTick recursion warning, but that's not so bad. + function emitReadable(stream) { + const state = stream._readableState; + debug('emitReadable', state.needReadable, state.emittedReadable); + state.needReadable = false; + if (!state.emittedReadable) { + debug('emitReadable', state.flowing); + state.emittedReadable = true; + process.nextTick(emitReadable_, stream); + } + } + function emitReadable_(stream) { + const state = stream._readableState; + debug('emitReadable_', state.destroyed, state.length, state.ended); + if (!state.destroyed && !state.errored && (state.length || state.ended)) { + stream.emit('readable'); + state.emittedReadable = false; + } + + // The stream needs another readable event if: + // 1. It is not flowing, as the flow mechanism will take + // care of it. + // 2. It is not ended. + // 3. It is below the highWaterMark, so we can schedule + // another readable later. + state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark; + flow(stream); + } + + // At this point, the user has presumably seen the 'readable' event, + // and called read() to consume some data. that may have triggered + // in turn another _read(n) call, in which case reading = true if + // it's in progress. + // However, if we're not ended, or reading, and the length < hwm, + // then go ahead and try to read some more preemptively. + function maybeReadMore(stream, state) { + if (!state.readingMore && state.constructed) { + state.readingMore = true; + process.nextTick(maybeReadMore_, stream, state); + } + } + function maybeReadMore_(stream, state) { + // Attempt to read more data if we should. + // + // The conditions for reading more data are (one of): + // - Not enough data buffered (state.length < state.highWaterMark). The loop + // is responsible for filling the buffer with enough data if such data + // is available. If highWaterMark is 0 and we are not in the flowing mode + // we should _not_ attempt to buffer any extra data. We'll get more data + // when the stream consumer calls read() instead. + // - No data in the buffer, and the stream is in flowing mode. In this mode + // the loop below is responsible for ensuring read() is called. Failing to + // call read here would abort the flow and there's no other mechanism for + // continuing the flow if the stream consumer has just subscribed to the + // 'data' event. + // + // In addition to the above conditions to keep reading data, the following + // conditions prevent the data from being read: + // - The stream has ended (state.ended). + // - There is already a pending 'read' operation (state.reading). This is a + // case where the stream has called the implementation defined _read() + // method, but they are processing the call asynchronously and have _not_ + // called push() with new data. In this case we skip performing more + // read()s. The execution ends in this method again after the _read() ends + // up calling push() with more data. + while ( + !state.reading && + !state.ended && + (state.length < state.highWaterMark || (state.flowing && state.length === 0)) + ) { + const len = state.length; + debug('maybeReadMore read 0'); + stream.read(0); + if (len === state.length) + // Didn't get any data, stop spinning. + break + } + state.readingMore = false; + } + + // Abstract method. to be overridden in specific implementation classes. + // call cb(er, data) where data is <= n in length. + // for virtual (non-string, non-buffer) streams, "length" is somewhat + // arbitrary, and perhaps not very meaningful. + Readable.prototype._read = function (n) { + throw new ERR_METHOD_NOT_IMPLEMENTED('_read()') + }; + Readable.prototype.pipe = function (dest, pipeOpts) { + const src = this; + const state = this._readableState; + if (state.pipes.length === 1) { + if (!state.multiAwaitDrain) { + state.multiAwaitDrain = true; + state.awaitDrainWriters = new SafeSet(state.awaitDrainWriters ? [state.awaitDrainWriters] : []); + } + } + state.pipes.push(dest); + debug('pipe count=%d opts=%j', state.pipes.length, pipeOpts); + const doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; + const endFn = doEnd ? onend : unpipe; + if (state.endEmitted) process.nextTick(endFn); + else src.once('end', endFn); + dest.on('unpipe', onunpipe); + function onunpipe(readable, unpipeInfo) { + debug('onunpipe'); + if (readable === src) { + if (unpipeInfo && unpipeInfo.hasUnpiped === false) { + unpipeInfo.hasUnpiped = true; + cleanup(); + } + } + } + function onend() { + debug('onend'); + dest.end(); + } + let ondrain; + let cleanedUp = false; + function cleanup() { + debug('cleanup'); + // Cleanup event handlers once the pipe is broken. + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + if (ondrain) { + dest.removeListener('drain', ondrain); + } + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', unpipe); + src.removeListener('data', ondata); + cleanedUp = true; + + // If the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + if (ondrain && state.awaitDrainWriters && (!dest._writableState || dest._writableState.needDrain)) ondrain(); + } + function pause() { + // If the user unpiped during `dest.write()`, it is possible + // to get stuck in a permanently paused state if that write + // also returned false. + // => Check whether `dest` is still a piping destination. + if (!cleanedUp) { + if (state.pipes.length === 1 && state.pipes[0] === dest) { + debug('false write response, pause', 0); + state.awaitDrainWriters = dest; + state.multiAwaitDrain = false; + } else if (state.pipes.length > 1 && state.pipes.includes(dest)) { + debug('false write response, pause', state.awaitDrainWriters.size); + state.awaitDrainWriters.add(dest); + } + src.pause(); + } + if (!ondrain) { + // When the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + ondrain = pipeOnDrain(src, dest); + dest.on('drain', ondrain); + } + } + src.on('data', ondata); + function ondata(chunk) { + debug('ondata'); + const ret = dest.write(chunk); + debug('dest.write', ret); + if (ret === false) { + pause(); + } + } + + // If the dest has an error, then stop piping into it. + // However, don't suppress the throwing behavior for this. + function onerror(er) { + debug('onerror', er); + unpipe(); + dest.removeListener('error', onerror); + if (dest.listenerCount('error') === 0) { + const s = dest._writableState || dest._readableState; + if (s && !s.errorEmitted) { + // User incorrectly emitted 'error' directly on the stream. + errorOrDestroy(dest, er); + } else { + dest.emit('error', er); + } + } + } + + // Make sure our error handler is attached before userland ones. + prependListener(dest, 'error', onerror); + + // Both close and finish should trigger unpipe, but only once. + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + dest.once('close', onclose); + function onfinish() { + debug('onfinish'); + dest.removeListener('close', onclose); + unpipe(); + } + dest.once('finish', onfinish); + function unpipe() { + debug('unpipe'); + src.unpipe(dest); + } + + // Tell the dest that it's being piped to. + dest.emit('pipe', src); + + // Start the flow if it hasn't been started already. + + if (dest.writableNeedDrain === true) { + pause(); + } else if (!state.flowing) { + debug('pipe resume'); + src.resume(); + } + return dest + }; + function pipeOnDrain(src, dest) { + return function pipeOnDrainFunctionResult() { + const state = src._readableState; + + // `ondrain` will call directly, + // `this` maybe not a reference to dest, + // so we use the real dest here. + if (state.awaitDrainWriters === dest) { + debug('pipeOnDrain', 1); + state.awaitDrainWriters = null; + } else if (state.multiAwaitDrain) { + debug('pipeOnDrain', state.awaitDrainWriters.size); + state.awaitDrainWriters.delete(dest); + } + if ((!state.awaitDrainWriters || state.awaitDrainWriters.size === 0) && src.listenerCount('data')) { + src.resume(); + } + } + } + Readable.prototype.unpipe = function (dest) { + const state = this._readableState; + const unpipeInfo = { + hasUnpiped: false + }; + + // If we're not piping anywhere, then do nothing. + if (state.pipes.length === 0) return this + if (!dest) { + // remove all. + const dests = state.pipes; + state.pipes = []; + this.pause(); + for (let i = 0; i < dests.length; i++) + dests[i].emit('unpipe', this, { + hasUnpiped: false + }); + return this + } + + // Try to find the right one. + const index = ArrayPrototypeIndexOf(state.pipes, dest); + if (index === -1) return this + state.pipes.splice(index, 1); + if (state.pipes.length === 0) this.pause(); + dest.emit('unpipe', this, unpipeInfo); + return this + }; + + // Set up data events if they are asked for + // Ensure readable listeners eventually get something. + Readable.prototype.on = function (ev, fn) { + const res = Stream.prototype.on.call(this, ev, fn); + const state = this._readableState; + if (ev === 'data') { + // Update readableListening so that resume() may be a no-op + // a few lines down. This is needed to support once('readable'). + state.readableListening = this.listenerCount('readable') > 0; + + // Try start flowing on next tick if stream isn't explicitly paused. + if (state.flowing !== false) this.resume(); + } else if (ev === 'readable') { + if (!state.endEmitted && !state.readableListening) { + state.readableListening = state.needReadable = true; + state.flowing = false; + state.emittedReadable = false; + debug('on readable', state.length, state.reading); + if (state.length) { + emitReadable(this); + } else if (!state.reading) { + process.nextTick(nReadingNextTick, this); + } + } + } + return res + }; + Readable.prototype.addListener = Readable.prototype.on; + Readable.prototype.removeListener = function (ev, fn) { + const res = Stream.prototype.removeListener.call(this, ev, fn); + if (ev === 'readable') { + // We need to check if there is someone still listening to + // readable and reset the state. However this needs to happen + // after readable has been emitted but before I/O (nextTick) to + // support once('readable', fn) cycles. This means that calling + // resume within the same tick will have no + // effect. + process.nextTick(updateReadableListening, this); + } + return res + }; + Readable.prototype.off = Readable.prototype.removeListener; + Readable.prototype.removeAllListeners = function (ev) { + const res = Stream.prototype.removeAllListeners.apply(this, arguments); + if (ev === 'readable' || ev === undefined) { + // We need to check if there is someone still listening to + // readable and reset the state. However this needs to happen + // after readable has been emitted but before I/O (nextTick) to + // support once('readable', fn) cycles. This means that calling + // resume within the same tick will have no + // effect. + process.nextTick(updateReadableListening, this); + } + return res + }; + function updateReadableListening(self) { + const state = self._readableState; + state.readableListening = self.listenerCount('readable') > 0; + if (state.resumeScheduled && state[kPaused] === false) { + // Flowing needs to be set to true now, otherwise + // the upcoming resume will not flow. + state.flowing = true; + + // Crude way to check if we should resume. + } else if (self.listenerCount('data') > 0) { + self.resume(); + } else if (!state.readableListening) { + state.flowing = null; + } + } + function nReadingNextTick(self) { + debug('readable nexttick read 0'); + self.read(0); + } + + // pause() and resume() are remnants of the legacy readable stream API + // If the user uses them, then switch into old mode. + Readable.prototype.resume = function () { + const state = this._readableState; + if (!state.flowing) { + debug('resume'); + // We flow only if there is no one listening + // for readable, but we still have to call + // resume(). + state.flowing = !state.readableListening; + resume(this, state); + } + state[kPaused] = false; + return this + }; + function resume(stream, state) { + if (!state.resumeScheduled) { + state.resumeScheduled = true; + process.nextTick(resume_, stream, state); + } + } + function resume_(stream, state) { + debug('resume', state.reading); + if (!state.reading) { + stream.read(0); + } + state.resumeScheduled = false; + stream.emit('resume'); + flow(stream); + if (state.flowing && !state.reading) stream.read(0); + } + Readable.prototype.pause = function () { + debug('call pause flowing=%j', this._readableState.flowing); + if (this._readableState.flowing !== false) { + debug('pause'); + this._readableState.flowing = false; + this.emit('pause'); + } + this._readableState[kPaused] = true; + return this + }; + function flow(stream) { + const state = stream._readableState; + debug('flow', state.flowing); + while (state.flowing && stream.read() !== null); + } + + // Wrap an old-style stream as the async data source. + // This is *not* part of the readable stream interface. + // It is an ugly unfortunate mess of history. + Readable.prototype.wrap = function (stream) { + let paused = false; + + // TODO (ronag): Should this.destroy(err) emit + // 'error' on the wrapped stream? Would require + // a static factory method, e.g. Readable.wrap(stream). + + stream.on('data', (chunk) => { + if (!this.push(chunk) && stream.pause) { + paused = true; + stream.pause(); + } + }); + stream.on('end', () => { + this.push(null); + }); + stream.on('error', (err) => { + errorOrDestroy(this, err); + }); + stream.on('close', () => { + this.destroy(); + }); + stream.on('destroy', () => { + this.destroy(); + }); + this._read = () => { + if (paused && stream.resume) { + paused = false; + stream.resume(); + } + }; + + // Proxy all the other methods. Important when wrapping filters and duplexes. + const streamKeys = ObjectKeys(stream); + for (let j = 1; j < streamKeys.length; j++) { + const i = streamKeys[j]; + if (this[i] === undefined && typeof stream[i] === 'function') { + this[i] = stream[i].bind(stream); + } + } + return this + }; + Readable.prototype[SymbolAsyncIterator] = function () { + return streamToAsyncIterator(this) + }; + Readable.prototype.iterator = function (options) { + if (options !== undefined) { + validateObject(options, 'options'); + } + return streamToAsyncIterator(this, options) + }; + function streamToAsyncIterator(stream, options) { + if (typeof stream.read !== 'function') { + stream = Readable.wrap(stream, { + objectMode: true + }); + } + const iter = createAsyncIterator(stream, options); + iter.stream = stream; + return iter + } + async function* createAsyncIterator(stream, options) { + let callback = nop; + function next(resolve) { + if (this === stream) { + callback(); + callback = nop; + } else { + callback = resolve; + } + } + stream.on('readable', next); + let error; + const cleanup = eos( + stream, + { + writable: false + }, + (err) => { + error = err ? aggregateTwoErrors(error, err) : null; + callback(); + callback = nop; + } + ); + try { + while (true) { + const chunk = stream.destroyed ? null : stream.read(); + if (chunk !== null) { + yield chunk; + } else if (error) { + throw error + } else if (error === null) { + return + } else { + await new Promise(next); + } + } + } catch (err) { + error = aggregateTwoErrors(error, err); + throw error + } finally { + if ( + (error || (options === null || options === undefined ? undefined : options.destroyOnReturn) !== false) && + (error === undefined || stream._readableState.autoDestroy) + ) { + destroyImpl.destroyer(stream, null); + } else { + stream.off('readable', next); + cleanup(); + } + } + } + + // Making it explicit these properties are not enumerable + // because otherwise some prototype manipulation in + // userland will fail. + ObjectDefineProperties(Readable.prototype, { + readable: { + __proto__: null, + get() { + const r = this._readableState; + // r.readable === false means that this is part of a Duplex stream + // where the readable side was disabled upon construction. + // Compat. The user might manually disable readable side through + // deprecated setter. + return !!r && r.readable !== false && !r.destroyed && !r.errorEmitted && !r.endEmitted + }, + set(val) { + // Backwards compat. + if (this._readableState) { + this._readableState.readable = !!val; + } + } + }, + readableDidRead: { + __proto__: null, + enumerable: false, + get: function () { + return this._readableState.dataEmitted + } + }, + readableAborted: { + __proto__: null, + enumerable: false, + get: function () { + return !!( + this._readableState.readable !== false && + (this._readableState.destroyed || this._readableState.errored) && + !this._readableState.endEmitted + ) + } + }, + readableHighWaterMark: { + __proto__: null, + enumerable: false, + get: function () { + return this._readableState.highWaterMark + } + }, + readableBuffer: { + __proto__: null, + enumerable: false, + get: function () { + return this._readableState && this._readableState.buffer + } + }, + readableFlowing: { + __proto__: null, + enumerable: false, + get: function () { + return this._readableState.flowing + }, + set: function (state) { + if (this._readableState) { + this._readableState.flowing = state; + } + } + }, + readableLength: { + __proto__: null, + enumerable: false, + get() { + return this._readableState.length + } + }, + readableObjectMode: { + __proto__: null, + enumerable: false, + get() { + return this._readableState ? this._readableState.objectMode : false + } + }, + readableEncoding: { + __proto__: null, + enumerable: false, + get() { + return this._readableState ? this._readableState.encoding : null + } + }, + errored: { + __proto__: null, + enumerable: false, + get() { + return this._readableState ? this._readableState.errored : null + } + }, + closed: { + __proto__: null, + get() { + return this._readableState ? this._readableState.closed : false + } + }, + destroyed: { + __proto__: null, + enumerable: false, + get() { + return this._readableState ? this._readableState.destroyed : false + }, + set(value) { + // We ignore the value if the stream + // has not been initialized yet. + if (!this._readableState) { + return + } + + // Backward compatibility, the user is explicitly + // managing destroyed. + this._readableState.destroyed = value; + } + }, + readableEnded: { + __proto__: null, + enumerable: false, + get() { + return this._readableState ? this._readableState.endEmitted : false + } + } + }); + ObjectDefineProperties(ReadableState.prototype, { + // Legacy getter for `pipesCount`. + pipesCount: { + __proto__: null, + get() { + return this.pipes.length + } + }, + // Legacy property for `paused`. + paused: { + __proto__: null, + get() { + return this[kPaused] !== false + }, + set(value) { + this[kPaused] = !!value; + } + } + }); + + // Exposed for testing purposes only. + Readable._fromList = fromList; + + // Pluck off n bytes from an array of buffers. + // Length is the combined lengths of all the buffers in the list. + // This function is designed to be inlinable, so please take care when making + // changes to the function body. + function fromList(n, state) { + // nothing buffered. + if (state.length === 0) return null + let ret; + if (state.objectMode) ret = state.buffer.shift(); + else if (!n || n >= state.length) { + // Read it all, truncate the list. + if (state.decoder) ret = state.buffer.join(''); + else if (state.buffer.length === 1) ret = state.buffer.first(); + else ret = state.buffer.concat(state.length); + state.buffer.clear(); + } else { + // read part of list. + ret = state.buffer.consume(n, state.decoder); + } + return ret + } + function endReadable(stream) { + const state = stream._readableState; + debug('endReadable', state.endEmitted); + if (!state.endEmitted) { + state.ended = true; + process.nextTick(endReadableNT, state, stream); + } + } + function endReadableNT(state, stream) { + debug('endReadableNT', state.endEmitted, state.length); + + // Check that we didn't get one last unshift. + if (!state.errored && !state.closeEmitted && !state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.emit('end'); + if (stream.writable && stream.allowHalfOpen === false) { + process.nextTick(endWritableNT, stream); + } else if (state.autoDestroy) { + // In case of duplex streams we need a way to detect + // if the writable side is ready for autoDestroy as well. + const wState = stream._writableState; + const autoDestroy = + !wState || + (wState.autoDestroy && + // We don't expect the writable to ever 'finish' + // if writable is explicitly set to false. + (wState.finished || wState.writable === false)); + if (autoDestroy) { + stream.destroy(); + } + } + } + } + function endWritableNT(stream) { + const writable = stream.writable && !stream.writableEnded && !stream.destroyed; + if (writable) { + stream.end(); + } + } + Readable.from = function (iterable, opts) { + return from(Readable, iterable, opts) + }; + let webStreamsAdapters; + + // Lazy to avoid circular references + function lazyWebStreams() { + if (webStreamsAdapters === undefined) webStreamsAdapters = {}; + return webStreamsAdapters + } + Readable.fromWeb = function (readableStream, options) { + return lazyWebStreams().newStreamReadableFromReadableStream(readableStream, options) + }; + Readable.toWeb = function (streamReadable, options) { + return lazyWebStreams().newReadableStreamFromStreamReadable(streamReadable, options) + }; + Readable.wrap = function (src, options) { + var _ref, _src$readableObjectMo; + return new Readable({ + objectMode: + (_ref = + (_src$readableObjectMo = src.readableObjectMode) !== null && _src$readableObjectMo !== undefined + ? _src$readableObjectMo + : src.objectMode) !== null && _ref !== undefined + ? _ref + : true, + ...options, + destroy(err, callback) { + destroyImpl.destroyer(src, err); + callback(err); + } + }).wrap(src) + }; + return readable; +} + +var writable; +var hasRequiredWritable; + +function requireWritable () { + if (hasRequiredWritable) return writable; + hasRequiredWritable = 1; + + /* replacement start */ + + const process = requireBrowser$2(); + + /* replacement end */ + + const { + ArrayPrototypeSlice, + Error, + FunctionPrototypeSymbolHasInstance, + ObjectDefineProperty, + ObjectDefineProperties, + ObjectSetPrototypeOf, + StringPrototypeToLowerCase, + Symbol, + SymbolHasInstance + } = requirePrimordials(); + writable = Writable; + Writable.WritableState = WritableState; + const { EventEmitter: EE } = requireEvents$1(); + const Stream = requireLegacy().Stream; + const { Buffer } = require$$0$1; + const destroyImpl = requireDestroy(); + const { addAbortSignal } = requireAddAbortSignal(); + const { getHighWaterMark, getDefaultHighWaterMark } = requireState(); + const { + ERR_INVALID_ARG_TYPE, + ERR_METHOD_NOT_IMPLEMENTED, + ERR_MULTIPLE_CALLBACK, + ERR_STREAM_CANNOT_PIPE, + ERR_STREAM_DESTROYED, + ERR_STREAM_ALREADY_FINISHED, + ERR_STREAM_NULL_VALUES, + ERR_STREAM_WRITE_AFTER_END, + ERR_UNKNOWN_ENCODING + } = requireErrors().codes; + const { errorOrDestroy } = destroyImpl; + ObjectSetPrototypeOf(Writable.prototype, Stream.prototype); + ObjectSetPrototypeOf(Writable, Stream); + function nop() {} + const kOnFinished = Symbol('kOnFinished'); + function WritableState(options, stream, isDuplex) { + // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream, + // e.g. options.readableObjectMode vs. options.writableObjectMode, etc. + if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof requireDuplex(); + + // Object stream flag to indicate whether or not this stream + // contains buffers or objects. + this.objectMode = !!(options && options.objectMode); + if (isDuplex) this.objectMode = this.objectMode || !!(options && options.writableObjectMode); + + // The point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write(). + this.highWaterMark = options + ? getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex) + : getDefaultHighWaterMark(false); + + // if _final has been called. + this.finalCalled = false; + + // drain event flag. + this.needDrain = false; + // At the start of calling end() + this.ending = false; + // When end() has been called, and returned. + this.ended = false; + // When 'finish' is emitted. + this.finished = false; + + // Has it been destroyed + this.destroyed = false; + + // Should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + const noDecode = !!(options && options.decodeStrings === false); + this.decodeStrings = !noDecode; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = (options && options.defaultEncoding) || 'utf8'; + + // Not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + this.length = 0; + + // A flag to see when we're in the middle of a write. + this.writing = false; + + // When true all writes will be buffered until .uncork() call. + this.corked = 0; + + // A flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + this.sync = true; + + // A flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + this.bufferProcessing = false; + + // The callback that's passed to _write(chunk, cb). + this.onwrite = onwrite.bind(undefined, stream); + + // The callback that the user supplies to write(chunk, encoding, cb). + this.writecb = null; + + // The amount that is being written when _write is called. + this.writelen = 0; + + // Storage for data passed to the afterWrite() callback in case of + // synchronous _write() completion. + this.afterWriteTickInfo = null; + resetBuffer(this); + + // Number of pending user-supplied write callbacks + // this must be 0 before 'finish' can be emitted. + this.pendingcb = 0; + + // Stream is still being constructed and cannot be + // destroyed until construction finished or failed. + // Async construction is opt in, therefore we start as + // constructed. + this.constructed = true; + + // Emit prefinish if the only thing we're waiting for is _write cbs + // This is relevant for synchronous Transform streams. + this.prefinished = false; + + // True if the error was already emitted and should not be thrown again. + this.errorEmitted = false; + + // Should close be emitted on destroy. Defaults to true. + this.emitClose = !options || options.emitClose !== false; + + // Should .destroy() be called after 'finish' (and potentially 'end'). + this.autoDestroy = !options || options.autoDestroy !== false; + + // Indicates whether the stream has errored. When true all write() calls + // should return false. This is needed since when autoDestroy + // is disabled we need a way to tell whether the stream has failed. + this.errored = null; + + // Indicates whether the stream has finished destroying. + this.closed = false; + + // True if close has been emitted or would have been emitted + // depending on emitClose. + this.closeEmitted = false; + this[kOnFinished] = []; + } + function resetBuffer(state) { + state.buffered = []; + state.bufferedIndex = 0; + state.allBuffers = true; + state.allNoop = true; + } + WritableState.prototype.getBuffer = function getBuffer() { + return ArrayPrototypeSlice(this.buffered, this.bufferedIndex) + }; + ObjectDefineProperty(WritableState.prototype, 'bufferedRequestCount', { + __proto__: null, + get() { + return this.buffered.length - this.bufferedIndex + } + }); + function Writable(options) { + // Writable ctor is applied to Duplexes, too. + // `realHasInstance` is necessary because using plain `instanceof` + // would return false, as no `_writableState` property is attached. + + // Trying to use the custom `instanceof` for Writable here will also break the + // Node.js LazyTransform implementation, which has a non-trivial getter for + // `_writableState` that would lead to infinite recursion. + + // Checking for a Stream.Duplex instance is faster here instead of inside + // the WritableState constructor, at least with V8 6.5. + const isDuplex = this instanceof requireDuplex(); + if (!isDuplex && !FunctionPrototypeSymbolHasInstance(Writable, this)) return new Writable(options) + this._writableState = new WritableState(options, this, isDuplex); + if (options) { + if (typeof options.write === 'function') this._write = options.write; + if (typeof options.writev === 'function') this._writev = options.writev; + if (typeof options.destroy === 'function') this._destroy = options.destroy; + if (typeof options.final === 'function') this._final = options.final; + if (typeof options.construct === 'function') this._construct = options.construct; + if (options.signal) addAbortSignal(options.signal, this); + } + Stream.call(this, options); + destroyImpl.construct(this, () => { + const state = this._writableState; + if (!state.writing) { + clearBuffer(this, state); + } + finishMaybe(this, state); + }); + } + ObjectDefineProperty(Writable, SymbolHasInstance, { + __proto__: null, + value: function (object) { + if (FunctionPrototypeSymbolHasInstance(this, object)) return true + if (this !== Writable) return false + return object && object._writableState instanceof WritableState + } + }); + + // Otherwise people can pipe Writable streams, which is just wrong. + Writable.prototype.pipe = function () { + errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE()); + }; + function _write(stream, chunk, encoding, cb) { + const state = stream._writableState; + if (typeof encoding === 'function') { + cb = encoding; + encoding = state.defaultEncoding; + } else { + if (!encoding) encoding = state.defaultEncoding; + else if (encoding !== 'buffer' && !Buffer.isEncoding(encoding)) throw new ERR_UNKNOWN_ENCODING(encoding) + if (typeof cb !== 'function') cb = nop; + } + if (chunk === null) { + throw new ERR_STREAM_NULL_VALUES() + } else if (!state.objectMode) { + if (typeof chunk === 'string') { + if (state.decodeStrings !== false) { + chunk = Buffer.from(chunk, encoding); + encoding = 'buffer'; + } + } else if (chunk instanceof Buffer) { + encoding = 'buffer'; + } else if (Stream._isUint8Array(chunk)) { + chunk = Stream._uint8ArrayToBuffer(chunk); + encoding = 'buffer'; + } else { + throw new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk) + } + } + let err; + if (state.ending) { + err = new ERR_STREAM_WRITE_AFTER_END(); + } else if (state.destroyed) { + err = new ERR_STREAM_DESTROYED('write'); + } + if (err) { + process.nextTick(cb, err); + errorOrDestroy(stream, err, true); + return err + } + state.pendingcb++; + return writeOrBuffer(stream, state, chunk, encoding, cb) + } + Writable.prototype.write = function (chunk, encoding, cb) { + return _write(this, chunk, encoding, cb) === true + }; + Writable.prototype.cork = function () { + this._writableState.corked++; + }; + Writable.prototype.uncork = function () { + const state = this._writableState; + if (state.corked) { + state.corked--; + if (!state.writing) clearBuffer(this, state); + } + }; + Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { + // node::ParseEncoding() requires lower case. + if (typeof encoding === 'string') encoding = StringPrototypeToLowerCase(encoding); + if (!Buffer.isEncoding(encoding)) throw new ERR_UNKNOWN_ENCODING(encoding) + this._writableState.defaultEncoding = encoding; + return this + }; + + // If we're already writing something, then just put this + // in the queue, and wait our turn. Otherwise, call _write + // If we return false, then we need a drain event, so set that flag. + function writeOrBuffer(stream, state, chunk, encoding, callback) { + const len = state.objectMode ? 1 : chunk.length; + state.length += len; + + // stream._write resets state.length + const ret = state.length < state.highWaterMark; + // We must ensure that previous needDrain will not be reset to false. + if (!ret) state.needDrain = true; + if (state.writing || state.corked || state.errored || !state.constructed) { + state.buffered.push({ + chunk, + encoding, + callback + }); + if (state.allBuffers && encoding !== 'buffer') { + state.allBuffers = false; + } + if (state.allNoop && callback !== nop) { + state.allNoop = false; + } + } else { + state.writelen = len; + state.writecb = callback; + state.writing = true; + state.sync = true; + stream._write(chunk, encoding, state.onwrite); + state.sync = false; + } + + // Return false if errored or destroyed in order to break + // any synchronous while(stream.write(data)) loops. + return ret && !state.errored && !state.destroyed + } + function doWrite(stream, state, writev, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write')); + else if (writev) stream._writev(chunk, state.onwrite); + else stream._write(chunk, encoding, state.onwrite); + state.sync = false; + } + function onwriteError(stream, state, er, cb) { + --state.pendingcb; + cb(er); + // Ensure callbacks are invoked even when autoDestroy is + // not enabled. Passing `er` here doesn't make sense since + // it's related to one specific write, not to the buffered + // writes. + errorBuffer(state); + // This can emit error, but error must always follow cb. + errorOrDestroy(stream, er); + } + function onwrite(stream, er) { + const state = stream._writableState; + const sync = state.sync; + const cb = state.writecb; + if (typeof cb !== 'function') { + errorOrDestroy(stream, new ERR_MULTIPLE_CALLBACK()); + return + } + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; + if (er) { + // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364 + er.stack; // eslint-disable-line no-unused-expressions + + if (!state.errored) { + state.errored = er; + } + + // In case of duplex streams we need to notify the readable side of the + // error. + if (stream._readableState && !stream._readableState.errored) { + stream._readableState.errored = er; + } + if (sync) { + process.nextTick(onwriteError, stream, state, er, cb); + } else { + onwriteError(stream, state, er, cb); + } + } else { + if (state.buffered.length > state.bufferedIndex) { + clearBuffer(stream, state); + } + if (sync) { + // It is a common case that the callback passed to .write() is always + // the same. In that case, we do not schedule a new nextTick(), but + // rather just increase a counter, to improve performance and avoid + // memory allocations. + if (state.afterWriteTickInfo !== null && state.afterWriteTickInfo.cb === cb) { + state.afterWriteTickInfo.count++; + } else { + state.afterWriteTickInfo = { + count: 1, + cb, + stream, + state + }; + process.nextTick(afterWriteTick, state.afterWriteTickInfo); + } + } else { + afterWrite(stream, state, 1, cb); + } + } + } + function afterWriteTick({ stream, state, count, cb }) { + state.afterWriteTickInfo = null; + return afterWrite(stream, state, count, cb) + } + function afterWrite(stream, state, count, cb) { + const needDrain = !state.ending && !stream.destroyed && state.length === 0 && state.needDrain; + if (needDrain) { + state.needDrain = false; + stream.emit('drain'); + } + while (count-- > 0) { + state.pendingcb--; + cb(); + } + if (state.destroyed) { + errorBuffer(state); + } + finishMaybe(stream, state); + } + + // If there's something in the buffer waiting, then invoke callbacks. + function errorBuffer(state) { + if (state.writing) { + return + } + for (let n = state.bufferedIndex; n < state.buffered.length; ++n) { + var _state$errored; + const { chunk, callback } = state.buffered[n]; + const len = state.objectMode ? 1 : chunk.length; + state.length -= len; + callback( + (_state$errored = state.errored) !== null && _state$errored !== undefined + ? _state$errored + : new ERR_STREAM_DESTROYED('write') + ); + } + const onfinishCallbacks = state[kOnFinished].splice(0); + for (let i = 0; i < onfinishCallbacks.length; i++) { + var _state$errored2; + onfinishCallbacks[i]( + (_state$errored2 = state.errored) !== null && _state$errored2 !== undefined + ? _state$errored2 + : new ERR_STREAM_DESTROYED('end') + ); + } + resetBuffer(state); + } + + // If there's something in the buffer waiting, then process it. + function clearBuffer(stream, state) { + if (state.corked || state.bufferProcessing || state.destroyed || !state.constructed) { + return + } + const { buffered, bufferedIndex, objectMode } = state; + const bufferedLength = buffered.length - bufferedIndex; + if (!bufferedLength) { + return + } + let i = bufferedIndex; + state.bufferProcessing = true; + if (bufferedLength > 1 && stream._writev) { + state.pendingcb -= bufferedLength - 1; + const callback = state.allNoop + ? nop + : (err) => { + for (let n = i; n < buffered.length; ++n) { + buffered[n].callback(err); + } + }; + // Make a copy of `buffered` if it's going to be used by `callback` above, + // since `doWrite` will mutate the array. + const chunks = state.allNoop && i === 0 ? buffered : ArrayPrototypeSlice(buffered, i); + chunks.allBuffers = state.allBuffers; + doWrite(stream, state, true, state.length, chunks, '', callback); + resetBuffer(state); + } else { + do { + const { chunk, encoding, callback } = buffered[i]; + buffered[i++] = null; + const len = objectMode ? 1 : chunk.length; + doWrite(stream, state, false, len, chunk, encoding, callback); + } while (i < buffered.length && !state.writing) + if (i === buffered.length) { + resetBuffer(state); + } else if (i > 256) { + buffered.splice(0, i); + state.bufferedIndex = 0; + } else { + state.bufferedIndex = i; + } + } + state.bufferProcessing = false; + } + Writable.prototype._write = function (chunk, encoding, cb) { + if (this._writev) { + this._writev( + [ + { + chunk, + encoding + } + ], + cb + ); + } else { + throw new ERR_METHOD_NOT_IMPLEMENTED('_write()') + } + }; + Writable.prototype._writev = null; + Writable.prototype.end = function (chunk, encoding, cb) { + const state = this._writableState; + if (typeof chunk === 'function') { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + let err; + if (chunk !== null && chunk !== undefined) { + const ret = _write(this, chunk, encoding); + if (ret instanceof Error) { + err = ret; + } + } + + // .end() fully uncorks. + if (state.corked) { + state.corked = 1; + this.uncork(); + } + if (err) ; else if (!state.errored && !state.ending) { + // This is forgiving in terms of unnecessary calls to end() and can hide + // logic errors. However, usually such errors are harmless and causing a + // hard error can be disproportionately destructive. It is not always + // trivial for the user to determine whether end() needs to be called + // or not. + + state.ending = true; + finishMaybe(this, state, true); + state.ended = true; + } else if (state.finished) { + err = new ERR_STREAM_ALREADY_FINISHED('end'); + } else if (state.destroyed) { + err = new ERR_STREAM_DESTROYED('end'); + } + if (typeof cb === 'function') { + if (err || state.finished) { + process.nextTick(cb, err); + } else { + state[kOnFinished].push(cb); + } + } + return this + }; + function needFinish(state) { + return ( + state.ending && + !state.destroyed && + state.constructed && + state.length === 0 && + !state.errored && + state.buffered.length === 0 && + !state.finished && + !state.writing && + !state.errorEmitted && + !state.closeEmitted + ) + } + function callFinal(stream, state) { + let called = false; + function onFinish(err) { + if (called) { + errorOrDestroy(stream, err !== null && err !== undefined ? err : ERR_MULTIPLE_CALLBACK()); + return + } + called = true; + state.pendingcb--; + if (err) { + const onfinishCallbacks = state[kOnFinished].splice(0); + for (let i = 0; i < onfinishCallbacks.length; i++) { + onfinishCallbacks[i](err); + } + errorOrDestroy(stream, err, state.sync); + } else if (needFinish(state)) { + state.prefinished = true; + stream.emit('prefinish'); + // Backwards compat. Don't check state.sync here. + // Some streams assume 'finish' will be emitted + // asynchronously relative to _final callback. + state.pendingcb++; + process.nextTick(finish, stream, state); + } + } + state.sync = true; + state.pendingcb++; + try { + stream._final(onFinish); + } catch (err) { + onFinish(err); + } + state.sync = false; + } + function prefinish(stream, state) { + if (!state.prefinished && !state.finalCalled) { + if (typeof stream._final === 'function' && !state.destroyed) { + state.finalCalled = true; + callFinal(stream, state); + } else { + state.prefinished = true; + stream.emit('prefinish'); + } + } + } + function finishMaybe(stream, state, sync) { + if (needFinish(state)) { + prefinish(stream, state); + if (state.pendingcb === 0) { + if (sync) { + state.pendingcb++; + process.nextTick( + (stream, state) => { + if (needFinish(state)) { + finish(stream, state); + } else { + state.pendingcb--; + } + }, + stream, + state + ); + } else if (needFinish(state)) { + state.pendingcb++; + finish(stream, state); + } + } + } + } + function finish(stream, state) { + state.pendingcb--; + state.finished = true; + const onfinishCallbacks = state[kOnFinished].splice(0); + for (let i = 0; i < onfinishCallbacks.length; i++) { + onfinishCallbacks[i](); + } + stream.emit('finish'); + if (state.autoDestroy) { + // In case of duplex streams we need a way to detect + // if the readable side is ready for autoDestroy as well. + const rState = stream._readableState; + const autoDestroy = + !rState || + (rState.autoDestroy && + // We don't expect the readable to ever 'end' + // if readable is explicitly set to false. + (rState.endEmitted || rState.readable === false)); + if (autoDestroy) { + stream.destroy(); + } + } + } + ObjectDefineProperties(Writable.prototype, { + closed: { + __proto__: null, + get() { + return this._writableState ? this._writableState.closed : false + } + }, + destroyed: { + __proto__: null, + get() { + return this._writableState ? this._writableState.destroyed : false + }, + set(value) { + // Backward compatibility, the user is explicitly managing destroyed. + if (this._writableState) { + this._writableState.destroyed = value; + } + } + }, + writable: { + __proto__: null, + get() { + const w = this._writableState; + // w.writable === false means that this is part of a Duplex stream + // where the writable side was disabled upon construction. + // Compat. The user might manually disable writable side through + // deprecated setter. + return !!w && w.writable !== false && !w.destroyed && !w.errored && !w.ending && !w.ended + }, + set(val) { + // Backwards compatible. + if (this._writableState) { + this._writableState.writable = !!val; + } + } + }, + writableFinished: { + __proto__: null, + get() { + return this._writableState ? this._writableState.finished : false + } + }, + writableObjectMode: { + __proto__: null, + get() { + return this._writableState ? this._writableState.objectMode : false + } + }, + writableBuffer: { + __proto__: null, + get() { + return this._writableState && this._writableState.getBuffer() + } + }, + writableEnded: { + __proto__: null, + get() { + return this._writableState ? this._writableState.ending : false + } + }, + writableNeedDrain: { + __proto__: null, + get() { + const wState = this._writableState; + if (!wState) return false + return !wState.destroyed && !wState.ending && wState.needDrain + } + }, + writableHighWaterMark: { + __proto__: null, + get() { + return this._writableState && this._writableState.highWaterMark + } + }, + writableCorked: { + __proto__: null, + get() { + return this._writableState ? this._writableState.corked : 0 + } + }, + writableLength: { + __proto__: null, + get() { + return this._writableState && this._writableState.length + } + }, + errored: { + __proto__: null, + enumerable: false, + get() { + return this._writableState ? this._writableState.errored : null + } + }, + writableAborted: { + __proto__: null, + enumerable: false, + get: function () { + return !!( + this._writableState.writable !== false && + (this._writableState.destroyed || this._writableState.errored) && + !this._writableState.finished + ) + } + } + }); + const destroy = destroyImpl.destroy; + Writable.prototype.destroy = function (err, cb) { + const state = this._writableState; + + // Invoke pending callbacks. + if (!state.destroyed && (state.bufferedIndex < state.buffered.length || state[kOnFinished].length)) { + process.nextTick(errorBuffer, state); + } + destroy.call(this, err, cb); + return this + }; + Writable.prototype._undestroy = destroyImpl.undestroy; + Writable.prototype._destroy = function (err, cb) { + cb(err); + }; + Writable.prototype[EE.captureRejectionSymbol] = function (err) { + this.destroy(err); + }; + let webStreamsAdapters; + + // Lazy to avoid circular references + function lazyWebStreams() { + if (webStreamsAdapters === undefined) webStreamsAdapters = {}; + return webStreamsAdapters + } + Writable.fromWeb = function (writableStream, options) { + return lazyWebStreams().newStreamWritableFromWritableStream(writableStream, options) + }; + Writable.toWeb = function (streamWritable) { + return lazyWebStreams().newWritableStreamFromStreamWritable(streamWritable) + }; + return writable; +} + +/* replacement start */ + +var duplexify; +var hasRequiredDuplexify; + +function requireDuplexify () { + if (hasRequiredDuplexify) return duplexify; + hasRequiredDuplexify = 1; + const process = requireBrowser$2() + + /* replacement end */ + + ; const bufferModule = require$$0$1; + const { + isReadable, + isWritable, + isIterable, + isNodeStream, + isReadableNodeStream, + isWritableNodeStream, + isDuplexNodeStream, + isReadableStream, + isWritableStream + } = requireUtils(); + const eos = requireEndOfStream(); + const { + AbortError, + codes: { ERR_INVALID_ARG_TYPE, ERR_INVALID_RETURN_VALUE } + } = requireErrors(); + const { destroyer } = requireDestroy(); + const Duplex = requireDuplex(); + const Readable = requireReadable(); + const Writable = requireWritable(); + const { createDeferredPromise } = requireUtil$2(); + const from = requireFrom(); + const Blob = globalThis.Blob || bufferModule.Blob; + const isBlob = + typeof Blob !== 'undefined' + ? function isBlob(b) { + return b instanceof Blob + } + : function isBlob(b) { + return false + }; + const AbortController = globalThis.AbortController || requireBrowser$1().AbortController; + const { FunctionPrototypeCall } = requirePrimordials(); + + // This is needed for pre node 17. + class Duplexify extends Duplex { + constructor(options) { + super(options); + + // https://github.com/nodejs/node/pull/34385 + + if ((options === null || options === undefined ? undefined : options.readable) === false) { + this._readableState.readable = false; + this._readableState.ended = true; + this._readableState.endEmitted = true; + } + if ((options === null || options === undefined ? undefined : options.writable) === false) { + this._writableState.writable = false; + this._writableState.ending = true; + this._writableState.ended = true; + this._writableState.finished = true; + } + } + } + duplexify = function duplexify(body, name) { + if (isDuplexNodeStream(body)) { + return body + } + if (isReadableNodeStream(body)) { + return _duplexify({ + readable: body + }) + } + if (isWritableNodeStream(body)) { + return _duplexify({ + writable: body + }) + } + if (isNodeStream(body)) { + return _duplexify({ + writable: false, + readable: false + }) + } + if (isReadableStream(body)) { + return _duplexify({ + readable: Readable.fromWeb(body) + }) + } + if (isWritableStream(body)) { + return _duplexify({ + writable: Writable.fromWeb(body) + }) + } + if (typeof body === 'function') { + const { value, write, final, destroy } = fromAsyncGen(body); + if (isIterable(value)) { + return from(Duplexify, value, { + // TODO (ronag): highWaterMark? + objectMode: true, + write, + final, + destroy + }) + } + const then = value === null || value === undefined ? undefined : value.then; + if (typeof then === 'function') { + let d; + const promise = FunctionPrototypeCall( + then, + value, + (val) => { + if (val != null) { + throw new ERR_INVALID_RETURN_VALUE('nully', 'body', val) + } + }, + (err) => { + destroyer(d, err); + } + ); + return (d = new Duplexify({ + // TODO (ronag): highWaterMark? + objectMode: true, + readable: false, + write, + final(cb) { + final(async () => { + try { + await promise; + process.nextTick(cb, null); + } catch (err) { + process.nextTick(cb, err); + } + }); + }, + destroy + })) + } + throw new ERR_INVALID_RETURN_VALUE('Iterable, AsyncIterable or AsyncFunction', name, value) + } + if (isBlob(body)) { + return duplexify(body.arrayBuffer()) + } + if (isIterable(body)) { + return from(Duplexify, body, { + // TODO (ronag): highWaterMark? + objectMode: true, + writable: false + }) + } + if ( + isReadableStream(body === null || body === undefined ? undefined : body.readable) && + isWritableStream(body === null || body === undefined ? undefined : body.writable) + ) { + return Duplexify.fromWeb(body) + } + if ( + typeof (body === null || body === undefined ? undefined : body.writable) === 'object' || + typeof (body === null || body === undefined ? undefined : body.readable) === 'object' + ) { + const readable = + body !== null && body !== undefined && body.readable + ? isReadableNodeStream(body === null || body === undefined ? undefined : body.readable) + ? body === null || body === undefined + ? undefined + : body.readable + : duplexify(body.readable) + : undefined; + const writable = + body !== null && body !== undefined && body.writable + ? isWritableNodeStream(body === null || body === undefined ? undefined : body.writable) + ? body === null || body === undefined + ? undefined + : body.writable + : duplexify(body.writable) + : undefined; + return _duplexify({ + readable, + writable + }) + } + const then = body === null || body === undefined ? undefined : body.then; + if (typeof then === 'function') { + let d; + FunctionPrototypeCall( + then, + body, + (val) => { + if (val != null) { + d.push(val); + } + d.push(null); + }, + (err) => { + destroyer(d, err); + } + ); + return (d = new Duplexify({ + objectMode: true, + writable: false, + read() {} + })) + } + throw new ERR_INVALID_ARG_TYPE( + name, + [ + 'Blob', + 'ReadableStream', + 'WritableStream', + 'Stream', + 'Iterable', + 'AsyncIterable', + 'Function', + '{ readable, writable } pair', + 'Promise' + ], + body + ) + }; + function fromAsyncGen(fn) { + let { promise, resolve } = createDeferredPromise(); + const ac = new AbortController(); + const signal = ac.signal; + const value = fn( + (async function* () { + while (true) { + const _promise = promise; + promise = null; + const { chunk, done, cb } = await _promise; + process.nextTick(cb); + if (done) return + if (signal.aborted) + throw new AbortError(undefined, { + cause: signal.reason + }) + ;({ promise, resolve } = createDeferredPromise()); + yield chunk; + } + })(), + { + signal + } + ); + return { + value, + write(chunk, encoding, cb) { + const _resolve = resolve; + resolve = null; + _resolve({ + chunk, + done: false, + cb + }); + }, + final(cb) { + const _resolve = resolve; + resolve = null; + _resolve({ + done: true, + cb + }); + }, + destroy(err, cb) { + ac.abort(); + cb(err); + } + } + } + function _duplexify(pair) { + const r = pair.readable && typeof pair.readable.read !== 'function' ? Readable.wrap(pair.readable) : pair.readable; + const w = pair.writable; + let readable = !!isReadable(r); + let writable = !!isWritable(w); + let ondrain; + let onfinish; + let onreadable; + let onclose; + let d; + function onfinished(err) { + const cb = onclose; + onclose = null; + if (cb) { + cb(err); + } else if (err) { + d.destroy(err); + } + } + + // TODO(ronag): Avoid double buffering. + // Implement Writable/Readable/Duplex traits. + // See, https://github.com/nodejs/node/pull/33515. + d = new Duplexify({ + // TODO (ronag): highWaterMark? + readableObjectMode: !!(r !== null && r !== undefined && r.readableObjectMode), + writableObjectMode: !!(w !== null && w !== undefined && w.writableObjectMode), + readable, + writable + }); + if (writable) { + eos(w, (err) => { + writable = false; + if (err) { + destroyer(r, err); + } + onfinished(err); + }); + d._write = function (chunk, encoding, callback) { + if (w.write(chunk, encoding)) { + callback(); + } else { + ondrain = callback; + } + }; + d._final = function (callback) { + w.end(); + onfinish = callback; + }; + w.on('drain', function () { + if (ondrain) { + const cb = ondrain; + ondrain = null; + cb(); + } + }); + w.on('finish', function () { + if (onfinish) { + const cb = onfinish; + onfinish = null; + cb(); + } + }); + } + if (readable) { + eos(r, (err) => { + readable = false; + if (err) { + destroyer(r, err); + } + onfinished(err); + }); + r.on('readable', function () { + if (onreadable) { + const cb = onreadable; + onreadable = null; + cb(); + } + }); + r.on('end', function () { + d.push(null); + }); + d._read = function () { + while (true) { + const buf = r.read(); + if (buf === null) { + onreadable = d._read; + return + } + if (!d.push(buf)) { + return + } + } + }; + } + d._destroy = function (err, callback) { + if (!err && onclose !== null) { + err = new AbortError(); + } + onreadable = null; + ondrain = null; + onfinish = null; + if (onclose === null) { + callback(err); + } else { + onclose = callback; + destroyer(w, err); + destroyer(r, err); + } + }; + return d + } + return duplexify; +} + +var duplex; +var hasRequiredDuplex; + +function requireDuplex () { + if (hasRequiredDuplex) return duplex; + hasRequiredDuplex = 1; + + const { + ObjectDefineProperties, + ObjectGetOwnPropertyDescriptor, + ObjectKeys, + ObjectSetPrototypeOf + } = requirePrimordials(); + duplex = Duplex; + const Readable = requireReadable(); + const Writable = requireWritable(); + ObjectSetPrototypeOf(Duplex.prototype, Readable.prototype); + ObjectSetPrototypeOf(Duplex, Readable); + { + const keys = ObjectKeys(Writable.prototype); + // Allow the keys array to be GC'ed. + for (let i = 0; i < keys.length; i++) { + const method = keys[i]; + if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; + } + } + function Duplex(options) { + if (!(this instanceof Duplex)) return new Duplex(options) + Readable.call(this, options); + Writable.call(this, options); + if (options) { + this.allowHalfOpen = options.allowHalfOpen !== false; + if (options.readable === false) { + this._readableState.readable = false; + this._readableState.ended = true; + this._readableState.endEmitted = true; + } + if (options.writable === false) { + this._writableState.writable = false; + this._writableState.ending = true; + this._writableState.ended = true; + this._writableState.finished = true; + } + } else { + this.allowHalfOpen = true; + } + } + ObjectDefineProperties(Duplex.prototype, { + writable: { + __proto__: null, + ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writable') + }, + writableHighWaterMark: { + __proto__: null, + ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableHighWaterMark') + }, + writableObjectMode: { + __proto__: null, + ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableObjectMode') + }, + writableBuffer: { + __proto__: null, + ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableBuffer') + }, + writableLength: { + __proto__: null, + ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableLength') + }, + writableFinished: { + __proto__: null, + ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableFinished') + }, + writableCorked: { + __proto__: null, + ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableCorked') + }, + writableEnded: { + __proto__: null, + ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableEnded') + }, + writableNeedDrain: { + __proto__: null, + ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableNeedDrain') + }, + destroyed: { + __proto__: null, + get() { + if (this._readableState === undefined || this._writableState === undefined) { + return false + } + return this._readableState.destroyed && this._writableState.destroyed + }, + set(value) { + // Backward compatibility, the user is explicitly + // managing destroyed. + if (this._readableState && this._writableState) { + this._readableState.destroyed = value; + this._writableState.destroyed = value; + } + } + } + }); + let webStreamsAdapters; + + // Lazy to avoid circular references + function lazyWebStreams() { + if (webStreamsAdapters === undefined) webStreamsAdapters = {}; + return webStreamsAdapters + } + Duplex.fromWeb = function (pair, options) { + return lazyWebStreams().newStreamDuplexFromReadableWritablePair(pair, options) + }; + Duplex.toWeb = function (duplex) { + return lazyWebStreams().newReadableWritablePairFromDuplex(duplex) + }; + let duplexify; + Duplex.from = function (body) { + if (!duplexify) { + duplexify = requireDuplexify(); + } + return duplexify(body, 'body') + }; + return duplex; +} + +var transform; +var hasRequiredTransform; + +function requireTransform () { + if (hasRequiredTransform) return transform; + hasRequiredTransform = 1; + + const { ObjectSetPrototypeOf, Symbol } = requirePrimordials(); + transform = Transform; + const { ERR_METHOD_NOT_IMPLEMENTED } = requireErrors().codes; + const Duplex = requireDuplex(); + const { getHighWaterMark } = requireState(); + ObjectSetPrototypeOf(Transform.prototype, Duplex.prototype); + ObjectSetPrototypeOf(Transform, Duplex); + const kCallback = Symbol('kCallback'); + function Transform(options) { + if (!(this instanceof Transform)) return new Transform(options) + + // TODO (ronag): This should preferably always be + // applied but would be semver-major. Or even better; + // make Transform a Readable with the Writable interface. + const readableHighWaterMark = options ? getHighWaterMark(this, options, 'readableHighWaterMark', true) : null; + if (readableHighWaterMark === 0) { + // A Duplex will buffer both on the writable and readable side while + // a Transform just wants to buffer hwm number of elements. To avoid + // buffering twice we disable buffering on the writable side. + options = { + ...options, + highWaterMark: null, + readableHighWaterMark, + // TODO (ronag): 0 is not optimal since we have + // a "bug" where we check needDrain before calling _write and not after. + // Refs: https://github.com/nodejs/node/pull/32887 + // Refs: https://github.com/nodejs/node/pull/35941 + writableHighWaterMark: options.writableHighWaterMark || 0 + }; + } + Duplex.call(this, options); + + // We have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + this._readableState.sync = false; + this[kCallback] = null; + if (options) { + if (typeof options.transform === 'function') this._transform = options.transform; + if (typeof options.flush === 'function') this._flush = options.flush; + } + + // When the writable side finishes, then flush out anything remaining. + // Backwards compat. Some Transform streams incorrectly implement _final + // instead of or in addition to _flush. By using 'prefinish' instead of + // implementing _final we continue supporting this unfortunate use case. + this.on('prefinish', prefinish); + } + function final(cb) { + if (typeof this._flush === 'function' && !this.destroyed) { + this._flush((er, data) => { + if (er) { + if (cb) { + cb(er); + } else { + this.destroy(er); + } + return + } + if (data != null) { + this.push(data); + } + this.push(null); + if (cb) { + cb(); + } + }); + } else { + this.push(null); + if (cb) { + cb(); + } + } + } + function prefinish() { + if (this._final !== final) { + final.call(this); + } + } + Transform.prototype._final = final; + Transform.prototype._transform = function (chunk, encoding, callback) { + throw new ERR_METHOD_NOT_IMPLEMENTED('_transform()') + }; + Transform.prototype._write = function (chunk, encoding, callback) { + const rState = this._readableState; + const wState = this._writableState; + const length = rState.length; + this._transform(chunk, encoding, (err, val) => { + if (err) { + callback(err); + return + } + if (val != null) { + this.push(val); + } + if ( + wState.ended || + // Backwards compat. + length === rState.length || + // Backwards compat. + rState.length < rState.highWaterMark + ) { + callback(); + } else { + this[kCallback] = callback; + } + }); + }; + Transform.prototype._read = function () { + if (this[kCallback]) { + const callback = this[kCallback]; + this[kCallback] = null; + callback(); + } + }; + return transform; +} + +var passthrough; +var hasRequiredPassthrough; + +function requirePassthrough () { + if (hasRequiredPassthrough) return passthrough; + hasRequiredPassthrough = 1; + + const { ObjectSetPrototypeOf } = requirePrimordials(); + passthrough = PassThrough; + const Transform = requireTransform(); + ObjectSetPrototypeOf(PassThrough.prototype, Transform.prototype); + ObjectSetPrototypeOf(PassThrough, Transform); + function PassThrough(options) { + if (!(this instanceof PassThrough)) return new PassThrough(options) + Transform.call(this, options); + } + PassThrough.prototype._transform = function (chunk, encoding, cb) { + cb(null, chunk); + }; + return passthrough; +} + +/* replacement start */ + +var pipeline_1; +var hasRequiredPipeline; + +function requirePipeline () { + if (hasRequiredPipeline) return pipeline_1; + hasRequiredPipeline = 1; + const process = requireBrowser$2() + + /* replacement end */ + // Ported from https://github.com/mafintosh/pump with + // permission from the author, Mathias Buus (@mafintosh). + + ; const { ArrayIsArray, Promise, SymbolAsyncIterator, SymbolDispose } = requirePrimordials(); + const eos = requireEndOfStream(); + const { once } = requireUtil$2(); + const destroyImpl = requireDestroy(); + const Duplex = requireDuplex(); + const { + aggregateTwoErrors, + codes: { + ERR_INVALID_ARG_TYPE, + ERR_INVALID_RETURN_VALUE, + ERR_MISSING_ARGS, + ERR_STREAM_DESTROYED, + ERR_STREAM_PREMATURE_CLOSE + }, + AbortError + } = requireErrors(); + const { validateFunction, validateAbortSignal } = requireValidators(); + const { + isIterable, + isReadable, + isReadableNodeStream, + isNodeStream, + isTransformStream, + isWebStream, + isReadableStream, + isReadableFinished + } = requireUtils(); + const AbortController = globalThis.AbortController || requireBrowser$1().AbortController; + let PassThrough; + let Readable; + let addAbortListener; + function destroyer(stream, reading, writing) { + let finished = false; + stream.on('close', () => { + finished = true; + }); + const cleanup = eos( + stream, + { + readable: reading, + writable: writing + }, + (err) => { + finished = !err; + } + ); + return { + destroy: (err) => { + if (finished) return + finished = true; + destroyImpl.destroyer(stream, err || new ERR_STREAM_DESTROYED('pipe')); + }, + cleanup + } + } + function popCallback(streams) { + // Streams should never be an empty array. It should always contain at least + // a single stream. Therefore optimize for the average case instead of + // checking for length === 0 as well. + validateFunction(streams[streams.length - 1], 'streams[stream.length - 1]'); + return streams.pop() + } + function makeAsyncIterable(val) { + if (isIterable(val)) { + return val + } else if (isReadableNodeStream(val)) { + // Legacy streams are not Iterable. + return fromReadable(val) + } + throw new ERR_INVALID_ARG_TYPE('val', ['Readable', 'Iterable', 'AsyncIterable'], val) + } + async function* fromReadable(val) { + if (!Readable) { + Readable = requireReadable(); + } + yield* Readable.prototype[SymbolAsyncIterator].call(val); + } + async function pumpToNode(iterable, writable, finish, { end }) { + let error; + let onresolve = null; + const resume = (err) => { + if (err) { + error = err; + } + if (onresolve) { + const callback = onresolve; + onresolve = null; + callback(); + } + }; + const wait = () => + new Promise((resolve, reject) => { + if (error) { + reject(error); + } else { + onresolve = () => { + if (error) { + reject(error); + } else { + resolve(); + } + }; + } + }); + writable.on('drain', resume); + const cleanup = eos( + writable, + { + readable: false + }, + resume + ); + try { + if (writable.writableNeedDrain) { + await wait(); + } + for await (const chunk of iterable) { + if (!writable.write(chunk)) { + await wait(); + } + } + if (end) { + writable.end(); + await wait(); + } + finish(); + } catch (err) { + finish(error !== err ? aggregateTwoErrors(error, err) : err); + } finally { + cleanup(); + writable.off('drain', resume); + } + } + async function pumpToWeb(readable, writable, finish, { end }) { + if (isTransformStream(writable)) { + writable = writable.writable; + } + // https://streams.spec.whatwg.org/#example-manual-write-with-backpressure + const writer = writable.getWriter(); + try { + for await (const chunk of readable) { + await writer.ready; + writer.write(chunk).catch(() => {}); + } + await writer.ready; + if (end) { + await writer.close(); + } + finish(); + } catch (err) { + try { + await writer.abort(err); + finish(err); + } catch (err) { + finish(err); + } + } + } + function pipeline(...streams) { + return pipelineImpl(streams, once(popCallback(streams))) + } + function pipelineImpl(streams, callback, opts) { + if (streams.length === 1 && ArrayIsArray(streams[0])) { + streams = streams[0]; + } + if (streams.length < 2) { + throw new ERR_MISSING_ARGS('streams') + } + const ac = new AbortController(); + const signal = ac.signal; + const outerSignal = opts === null || opts === undefined ? undefined : opts.signal; + + // Need to cleanup event listeners if last stream is readable + // https://github.com/nodejs/node/issues/35452 + const lastStreamCleanup = []; + validateAbortSignal(outerSignal, 'options.signal'); + function abort() { + finishImpl(new AbortError()); + } + addAbortListener = addAbortListener || requireUtil$2().addAbortListener; + let disposable; + if (outerSignal) { + disposable = addAbortListener(outerSignal, abort); + } + let error; + let value; + const destroys = []; + let finishCount = 0; + function finish(err) { + finishImpl(err, --finishCount === 0); + } + function finishImpl(err, final) { + var _disposable; + if (err && (!error || error.code === 'ERR_STREAM_PREMATURE_CLOSE')) { + error = err; + } + if (!error && !final) { + return + } + while (destroys.length) { + destroys.shift()(error); + } +(_disposable = disposable) === null || _disposable === undefined ? undefined : _disposable[SymbolDispose](); + ac.abort(); + if (final) { + if (!error) { + lastStreamCleanup.forEach((fn) => fn()); + } + process.nextTick(callback, error, value); + } + } + let ret; + for (let i = 0; i < streams.length; i++) { + const stream = streams[i]; + const reading = i < streams.length - 1; + const writing = i > 0; + const end = reading || (opts === null || opts === undefined ? undefined : opts.end) !== false; + const isLastStream = i === streams.length - 1; + if (isNodeStream(stream)) { + if (end) { + const { destroy, cleanup } = destroyer(stream, reading, writing); + destroys.push(destroy); + if (isReadable(stream) && isLastStream) { + lastStreamCleanup.push(cleanup); + } + } + + // Catch stream errors that occur after pipe/pump has completed. + function onError(err) { + if (err && err.name !== 'AbortError' && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') { + finish(err); + } + } + stream.on('error', onError); + if (isReadable(stream) && isLastStream) { + lastStreamCleanup.push(() => { + stream.removeListener('error', onError); + }); + } + } + if (i === 0) { + if (typeof stream === 'function') { + ret = stream({ + signal + }); + if (!isIterable(ret)) { + throw new ERR_INVALID_RETURN_VALUE('Iterable, AsyncIterable or Stream', 'source', ret) + } + } else if (isIterable(stream) || isReadableNodeStream(stream) || isTransformStream(stream)) { + ret = stream; + } else { + ret = Duplex.from(stream); + } + } else if (typeof stream === 'function') { + if (isTransformStream(ret)) { + var _ret; + ret = makeAsyncIterable((_ret = ret) === null || _ret === undefined ? undefined : _ret.readable); + } else { + ret = makeAsyncIterable(ret); + } + ret = stream(ret, { + signal + }); + if (reading) { + if (!isIterable(ret, true)) { + throw new ERR_INVALID_RETURN_VALUE('AsyncIterable', `transform[${i - 1}]`, ret) + } + } else { + var _ret2; + if (!PassThrough) { + PassThrough = requirePassthrough(); + } + + // If the last argument to pipeline is not a stream + // we must create a proxy stream so that pipeline(...) + // always returns a stream which can be further + // composed through `.pipe(stream)`. + + const pt = new PassThrough({ + objectMode: true + }); + + // Handle Promises/A+ spec, `then` could be a getter that throws on + // second use. + const then = (_ret2 = ret) === null || _ret2 === undefined ? undefined : _ret2.then; + if (typeof then === 'function') { + finishCount++; + then.call( + ret, + (val) => { + value = val; + if (val != null) { + pt.write(val); + } + if (end) { + pt.end(); + } + process.nextTick(finish); + }, + (err) => { + pt.destroy(err); + process.nextTick(finish, err); + } + ); + } else if (isIterable(ret, true)) { + finishCount++; + pumpToNode(ret, pt, finish, { + end + }); + } else if (isReadableStream(ret) || isTransformStream(ret)) { + const toRead = ret.readable || ret; + finishCount++; + pumpToNode(toRead, pt, finish, { + end + }); + } else { + throw new ERR_INVALID_RETURN_VALUE('AsyncIterable or Promise', 'destination', ret) + } + ret = pt; + const { destroy, cleanup } = destroyer(ret, false, true); + destroys.push(destroy); + if (isLastStream) { + lastStreamCleanup.push(cleanup); + } + } + } else if (isNodeStream(stream)) { + if (isReadableNodeStream(ret)) { + finishCount += 2; + const cleanup = pipe(ret, stream, finish, { + end + }); + if (isReadable(stream) && isLastStream) { + lastStreamCleanup.push(cleanup); + } + } else if (isTransformStream(ret) || isReadableStream(ret)) { + const toRead = ret.readable || ret; + finishCount++; + pumpToNode(toRead, stream, finish, { + end + }); + } else if (isIterable(ret)) { + finishCount++; + pumpToNode(ret, stream, finish, { + end + }); + } else { + throw new ERR_INVALID_ARG_TYPE( + 'val', + ['Readable', 'Iterable', 'AsyncIterable', 'ReadableStream', 'TransformStream'], + ret + ) + } + ret = stream; + } else if (isWebStream(stream)) { + if (isReadableNodeStream(ret)) { + finishCount++; + pumpToWeb(makeAsyncIterable(ret), stream, finish, { + end + }); + } else if (isReadableStream(ret) || isIterable(ret)) { + finishCount++; + pumpToWeb(ret, stream, finish, { + end + }); + } else if (isTransformStream(ret)) { + finishCount++; + pumpToWeb(ret.readable, stream, finish, { + end + }); + } else { + throw new ERR_INVALID_ARG_TYPE( + 'val', + ['Readable', 'Iterable', 'AsyncIterable', 'ReadableStream', 'TransformStream'], + ret + ) + } + ret = stream; + } else { + ret = Duplex.from(stream); + } + } + if ( + (signal !== null && signal !== undefined && signal.aborted) || + (outerSignal !== null && outerSignal !== undefined && outerSignal.aborted) + ) { + process.nextTick(abort); + } + return ret + } + function pipe(src, dst, finish, { end }) { + let ended = false; + dst.on('close', () => { + if (!ended) { + // Finish if the destination closes before the source has completed. + finish(new ERR_STREAM_PREMATURE_CLOSE()); + } + }); + src.pipe(dst, { + end: false + }); // If end is true we already will have a listener to end dst. + + if (end) { + // Compat. Before node v10.12.0 stdio used to throw an error so + // pipe() did/does not end() stdio destinations. + // Now they allow it but "secretly" don't close the underlying fd. + + function endFn() { + ended = true; + dst.end(); + } + if (isReadableFinished(src)) { + // End the destination if the source has already ended. + process.nextTick(endFn); + } else { + src.once('end', endFn); + } + } else { + finish(); + } + eos( + src, + { + readable: true, + writable: false + }, + (err) => { + const rState = src._readableState; + if ( + err && + err.code === 'ERR_STREAM_PREMATURE_CLOSE' && + rState && + rState.ended && + !rState.errored && + !rState.errorEmitted + ) { + // Some readable streams will emit 'close' before 'end'. However, since + // this is on the readable side 'end' should still be emitted if the + // stream has been ended and no error emitted. This should be allowed in + // favor of backwards compatibility. Since the stream is piped to a + // destination this should not result in any observable difference. + // We don't need to check if this is a writable premature close since + // eos will only fail with premature close on the reading side for + // duplex streams. + src.once('end', finish).once('error', finish); + } else { + finish(err); + } + } + ); + return eos( + dst, + { + readable: false, + writable: true + }, + finish + ) + } + pipeline_1 = { + pipelineImpl, + pipeline + }; + return pipeline_1; +} + +var compose; +var hasRequiredCompose; + +function requireCompose () { + if (hasRequiredCompose) return compose; + hasRequiredCompose = 1; + + const { pipeline } = requirePipeline(); + const Duplex = requireDuplex(); + const { destroyer } = requireDestroy(); + const { + isNodeStream, + isReadable, + isWritable, + isWebStream, + isTransformStream, + isWritableStream, + isReadableStream + } = requireUtils(); + const { + AbortError, + codes: { ERR_INVALID_ARG_VALUE, ERR_MISSING_ARGS } + } = requireErrors(); + const eos = requireEndOfStream(); + compose = function compose(...streams) { + if (streams.length === 0) { + throw new ERR_MISSING_ARGS('streams') + } + if (streams.length === 1) { + return Duplex.from(streams[0]) + } + const orgStreams = [...streams]; + if (typeof streams[0] === 'function') { + streams[0] = Duplex.from(streams[0]); + } + if (typeof streams[streams.length - 1] === 'function') { + const idx = streams.length - 1; + streams[idx] = Duplex.from(streams[idx]); + } + for (let n = 0; n < streams.length; ++n) { + if (!isNodeStream(streams[n]) && !isWebStream(streams[n])) { + // TODO(ronag): Add checks for non streams. + continue + } + if ( + n < streams.length - 1 && + !(isReadable(streams[n]) || isReadableStream(streams[n]) || isTransformStream(streams[n])) + ) { + throw new ERR_INVALID_ARG_VALUE(`streams[${n}]`, orgStreams[n], 'must be readable') + } + if (n > 0 && !(isWritable(streams[n]) || isWritableStream(streams[n]) || isTransformStream(streams[n]))) { + throw new ERR_INVALID_ARG_VALUE(`streams[${n}]`, orgStreams[n], 'must be writable') + } + } + let ondrain; + let onfinish; + let onreadable; + let onclose; + let d; + function onfinished(err) { + const cb = onclose; + onclose = null; + if (cb) { + cb(err); + } else if (err) { + d.destroy(err); + } else if (!readable && !writable) { + d.destroy(); + } + } + const head = streams[0]; + const tail = pipeline(streams, onfinished); + const writable = !!(isWritable(head) || isWritableStream(head) || isTransformStream(head)); + const readable = !!(isReadable(tail) || isReadableStream(tail) || isTransformStream(tail)); + + // TODO(ronag): Avoid double buffering. + // Implement Writable/Readable/Duplex traits. + // See, https://github.com/nodejs/node/pull/33515. + d = new Duplex({ + // TODO (ronag): highWaterMark? + writableObjectMode: !!(head !== null && head !== undefined && head.writableObjectMode), + readableObjectMode: !!(tail !== null && tail !== undefined && tail.readableObjectMode), + writable, + readable + }); + if (writable) { + if (isNodeStream(head)) { + d._write = function (chunk, encoding, callback) { + if (head.write(chunk, encoding)) { + callback(); + } else { + ondrain = callback; + } + }; + d._final = function (callback) { + head.end(); + onfinish = callback; + }; + head.on('drain', function () { + if (ondrain) { + const cb = ondrain; + ondrain = null; + cb(); + } + }); + } else if (isWebStream(head)) { + const writable = isTransformStream(head) ? head.writable : head; + const writer = writable.getWriter(); + d._write = async function (chunk, encoding, callback) { + try { + await writer.ready; + writer.write(chunk).catch(() => {}); + callback(); + } catch (err) { + callback(err); + } + }; + d._final = async function (callback) { + try { + await writer.ready; + writer.close().catch(() => {}); + onfinish = callback; + } catch (err) { + callback(err); + } + }; + } + const toRead = isTransformStream(tail) ? tail.readable : tail; + eos(toRead, () => { + if (onfinish) { + const cb = onfinish; + onfinish = null; + cb(); + } + }); + } + if (readable) { + if (isNodeStream(tail)) { + tail.on('readable', function () { + if (onreadable) { + const cb = onreadable; + onreadable = null; + cb(); + } + }); + tail.on('end', function () { + d.push(null); + }); + d._read = function () { + while (true) { + const buf = tail.read(); + if (buf === null) { + onreadable = d._read; + return + } + if (!d.push(buf)) { + return + } + } + }; + } else if (isWebStream(tail)) { + const readable = isTransformStream(tail) ? tail.readable : tail; + const reader = readable.getReader(); + d._read = async function () { + while (true) { + try { + const { value, done } = await reader.read(); + if (!d.push(value)) { + return + } + if (done) { + d.push(null); + return + } + } catch { + return + } + } + }; + } + } + d._destroy = function (err, callback) { + if (!err && onclose !== null) { + err = new AbortError(); + } + onreadable = null; + ondrain = null; + onfinish = null; + if (onclose === null) { + callback(err); + } else { + onclose = callback; + if (isNodeStream(tail)) { + destroyer(tail, err); + } + } + }; + return d + }; + return compose; +} + +var hasRequiredOperators; + +function requireOperators () { + if (hasRequiredOperators) return operators; + hasRequiredOperators = 1; + + const AbortController = globalThis.AbortController || requireBrowser$1().AbortController; + const { + codes: { ERR_INVALID_ARG_VALUE, ERR_INVALID_ARG_TYPE, ERR_MISSING_ARGS, ERR_OUT_OF_RANGE }, + AbortError + } = requireErrors(); + const { validateAbortSignal, validateInteger, validateObject } = requireValidators(); + const kWeakHandler = requirePrimordials().Symbol('kWeak'); + const kResistStopPropagation = requirePrimordials().Symbol('kResistStopPropagation'); + const { finished } = requireEndOfStream(); + const staticCompose = requireCompose(); + const { addAbortSignalNoValidate } = requireAddAbortSignal(); + const { isWritable, isNodeStream } = requireUtils(); + const { deprecate } = requireUtil$2(); + const { + ArrayPrototypePush, + Boolean, + MathFloor, + Number, + NumberIsNaN, + Promise, + PromiseReject, + PromiseResolve, + PromisePrototypeThen, + Symbol + } = requirePrimordials(); + const kEmpty = Symbol('kEmpty'); + const kEof = Symbol('kEof'); + function compose(stream, options) { + if (options != null) { + validateObject(options, 'options'); + } + if ((options === null || options === undefined ? undefined : options.signal) != null) { + validateAbortSignal(options.signal, 'options.signal'); + } + if (isNodeStream(stream) && !isWritable(stream)) { + throw new ERR_INVALID_ARG_VALUE('stream', stream, 'must be writable') + } + const composedStream = staticCompose(this, stream); + if (options !== null && options !== undefined && options.signal) { + // Not validating as we already validated before + addAbortSignalNoValidate(options.signal, composedStream); + } + return composedStream + } + function map(fn, options) { + if (typeof fn !== 'function') { + throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn) + } + if (options != null) { + validateObject(options, 'options'); + } + if ((options === null || options === undefined ? undefined : options.signal) != null) { + validateAbortSignal(options.signal, 'options.signal'); + } + let concurrency = 1; + if ((options === null || options === undefined ? undefined : options.concurrency) != null) { + concurrency = MathFloor(options.concurrency); + } + let highWaterMark = concurrency - 1; + if ((options === null || options === undefined ? undefined : options.highWaterMark) != null) { + highWaterMark = MathFloor(options.highWaterMark); + } + validateInteger(concurrency, 'options.concurrency', 1); + validateInteger(highWaterMark, 'options.highWaterMark', 0); + highWaterMark += concurrency; + return async function* map() { + const signal = requireUtil$2().AbortSignalAny( + [options === null || options === undefined ? undefined : options.signal].filter(Boolean) + ); + const stream = this; + const queue = []; + const signalOpt = { + signal + }; + let next; + let resume; + let done = false; + let cnt = 0; + function onCatch() { + done = true; + afterItemProcessed(); + } + function afterItemProcessed() { + cnt -= 1; + maybeResume(); + } + function maybeResume() { + if (resume && !done && cnt < concurrency && queue.length < highWaterMark) { + resume(); + resume = null; + } + } + async function pump() { + try { + for await (let val of stream) { + if (done) { + return + } + if (signal.aborted) { + throw new AbortError() + } + try { + val = fn(val, signalOpt); + if (val === kEmpty) { + continue + } + val = PromiseResolve(val); + } catch (err) { + val = PromiseReject(err); + } + cnt += 1; + PromisePrototypeThen(val, afterItemProcessed, onCatch); + queue.push(val); + if (next) { + next(); + next = null; + } + if (!done && (queue.length >= highWaterMark || cnt >= concurrency)) { + await new Promise((resolve) => { + resume = resolve; + }); + } + } + queue.push(kEof); + } catch (err) { + const val = PromiseReject(err); + PromisePrototypeThen(val, afterItemProcessed, onCatch); + queue.push(val); + } finally { + done = true; + if (next) { + next(); + next = null; + } + } + } + pump(); + try { + while (true) { + while (queue.length > 0) { + const val = await queue[0]; + if (val === kEof) { + return + } + if (signal.aborted) { + throw new AbortError() + } + if (val !== kEmpty) { + yield val; + } + queue.shift(); + maybeResume(); + } + await new Promise((resolve) => { + next = resolve; + }); + } + } finally { + done = true; + if (resume) { + resume(); + resume = null; + } + } + }.call(this) + } + function asIndexedPairs(options = undefined) { + if (options != null) { + validateObject(options, 'options'); + } + if ((options === null || options === undefined ? undefined : options.signal) != null) { + validateAbortSignal(options.signal, 'options.signal'); + } + return async function* asIndexedPairs() { + let index = 0; + for await (const val of this) { + var _options$signal; + if ( + options !== null && + options !== undefined && + (_options$signal = options.signal) !== null && + _options$signal !== undefined && + _options$signal.aborted + ) { + throw new AbortError({ + cause: options.signal.reason + }) + } + yield [index++, val]; + } + }.call(this) + } + async function some(fn, options = undefined) { + for await (const unused of filter.call(this, fn, options)) { + return true + } + return false + } + async function every(fn, options = undefined) { + if (typeof fn !== 'function') { + throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn) + } + // https://en.wikipedia.org/wiki/De_Morgan%27s_laws + return !(await some.call( + this, + async (...args) => { + return !(await fn(...args)) + }, + options + )) + } + async function find(fn, options) { + for await (const result of filter.call(this, fn, options)) { + return result + } + return undefined + } + async function forEach(fn, options) { + if (typeof fn !== 'function') { + throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn) + } + async function forEachFn(value, options) { + await fn(value, options); + return kEmpty + } + // eslint-disable-next-line no-unused-vars + for await (const unused of map.call(this, forEachFn, options)); + } + function filter(fn, options) { + if (typeof fn !== 'function') { + throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn) + } + async function filterFn(value, options) { + if (await fn(value, options)) { + return value + } + return kEmpty + } + return map.call(this, filterFn, options) + } + + // Specific to provide better error to reduce since the argument is only + // missing if the stream has no items in it - but the code is still appropriate + class ReduceAwareErrMissingArgs extends ERR_MISSING_ARGS { + constructor() { + super('reduce'); + this.message = 'Reduce of an empty stream requires an initial value'; + } + } + async function reduce(reducer, initialValue, options) { + var _options$signal2; + if (typeof reducer !== 'function') { + throw new ERR_INVALID_ARG_TYPE('reducer', ['Function', 'AsyncFunction'], reducer) + } + if (options != null) { + validateObject(options, 'options'); + } + if ((options === null || options === undefined ? undefined : options.signal) != null) { + validateAbortSignal(options.signal, 'options.signal'); + } + let hasInitialValue = arguments.length > 1; + if ( + options !== null && + options !== undefined && + (_options$signal2 = options.signal) !== null && + _options$signal2 !== undefined && + _options$signal2.aborted + ) { + const err = new AbortError(undefined, { + cause: options.signal.reason + }); + this.once('error', () => {}); // The error is already propagated + await finished(this.destroy(err)); + throw err + } + const ac = new AbortController(); + const signal = ac.signal; + if (options !== null && options !== undefined && options.signal) { + const opts = { + once: true, + [kWeakHandler]: this, + [kResistStopPropagation]: true + }; + options.signal.addEventListener('abort', () => ac.abort(), opts); + } + let gotAnyItemFromStream = false; + try { + for await (const value of this) { + var _options$signal3; + gotAnyItemFromStream = true; + if ( + options !== null && + options !== undefined && + (_options$signal3 = options.signal) !== null && + _options$signal3 !== undefined && + _options$signal3.aborted + ) { + throw new AbortError() + } + if (!hasInitialValue) { + initialValue = value; + hasInitialValue = true; + } else { + initialValue = await reducer(initialValue, value, { + signal + }); + } + } + if (!gotAnyItemFromStream && !hasInitialValue) { + throw new ReduceAwareErrMissingArgs() + } + } finally { + ac.abort(); + } + return initialValue + } + async function toArray(options) { + if (options != null) { + validateObject(options, 'options'); + } + if ((options === null || options === undefined ? undefined : options.signal) != null) { + validateAbortSignal(options.signal, 'options.signal'); + } + const result = []; + for await (const val of this) { + var _options$signal4; + if ( + options !== null && + options !== undefined && + (_options$signal4 = options.signal) !== null && + _options$signal4 !== undefined && + _options$signal4.aborted + ) { + throw new AbortError(undefined, { + cause: options.signal.reason + }) + } + ArrayPrototypePush(result, val); + } + return result + } + function flatMap(fn, options) { + const values = map.call(this, fn, options); + return async function* flatMap() { + for await (const val of values) { + yield* val; + } + }.call(this) + } + function toIntegerOrInfinity(number) { + // We coerce here to align with the spec + // https://github.com/tc39/proposal-iterator-helpers/issues/169 + number = Number(number); + if (NumberIsNaN(number)) { + return 0 + } + if (number < 0) { + throw new ERR_OUT_OF_RANGE('number', '>= 0', number) + } + return number + } + function drop(number, options = undefined) { + if (options != null) { + validateObject(options, 'options'); + } + if ((options === null || options === undefined ? undefined : options.signal) != null) { + validateAbortSignal(options.signal, 'options.signal'); + } + number = toIntegerOrInfinity(number); + return async function* drop() { + var _options$signal5; + if ( + options !== null && + options !== undefined && + (_options$signal5 = options.signal) !== null && + _options$signal5 !== undefined && + _options$signal5.aborted + ) { + throw new AbortError() + } + for await (const val of this) { + var _options$signal6; + if ( + options !== null && + options !== undefined && + (_options$signal6 = options.signal) !== null && + _options$signal6 !== undefined && + _options$signal6.aborted + ) { + throw new AbortError() + } + if (number-- <= 0) { + yield val; + } + } + }.call(this) + } + function take(number, options = undefined) { + if (options != null) { + validateObject(options, 'options'); + } + if ((options === null || options === undefined ? undefined : options.signal) != null) { + validateAbortSignal(options.signal, 'options.signal'); + } + number = toIntegerOrInfinity(number); + return async function* take() { + var _options$signal7; + if ( + options !== null && + options !== undefined && + (_options$signal7 = options.signal) !== null && + _options$signal7 !== undefined && + _options$signal7.aborted + ) { + throw new AbortError() + } + for await (const val of this) { + var _options$signal8; + if ( + options !== null && + options !== undefined && + (_options$signal8 = options.signal) !== null && + _options$signal8 !== undefined && + _options$signal8.aborted + ) { + throw new AbortError() + } + if (number-- > 0) { + yield val; + } + + // Don't get another item from iterator in case we reached the end + if (number <= 0) { + return + } + } + }.call(this) + } + operators.streamReturningOperators = { + asIndexedPairs: deprecate(asIndexedPairs, 'readable.asIndexedPairs will be removed in a future version.'), + drop, + filter, + flatMap, + map, + take, + compose + }; + operators.promiseReturningOperators = { + every, + forEach, + reduce, + toArray, + some, + find + }; + return operators; +} + +var promises; +var hasRequiredPromises; + +function requirePromises () { + if (hasRequiredPromises) return promises; + hasRequiredPromises = 1; + + const { ArrayPrototypePop, Promise } = requirePrimordials(); + const { isIterable, isNodeStream, isWebStream } = requireUtils(); + const { pipelineImpl: pl } = requirePipeline(); + const { finished } = requireEndOfStream(); + requireStream$1(); + function pipeline(...streams) { + return new Promise((resolve, reject) => { + let signal; + let end; + const lastArg = streams[streams.length - 1]; + if ( + lastArg && + typeof lastArg === 'object' && + !isNodeStream(lastArg) && + !isIterable(lastArg) && + !isWebStream(lastArg) + ) { + const options = ArrayPrototypePop(streams); + signal = options.signal; + end = options.end; + } + pl( + streams, + (err, value) => { + if (err) { + reject(err); + } else { + resolve(value); + } + }, + { + signal, + end + } + ); + }) + } + promises = { + finished, + pipeline + }; + return promises; +} + +var hasRequiredStream$1; + +function requireStream$1 () { + if (hasRequiredStream$1) return stream.exports; + hasRequiredStream$1 = 1; + + /* replacement start */ + + const { Buffer } = require$$0$1; + + /* replacement end */ + + const { ObjectDefineProperty, ObjectKeys, ReflectApply } = requirePrimordials(); + const { + promisify: { custom: customPromisify } + } = requireUtil$2(); + const { streamReturningOperators, promiseReturningOperators } = requireOperators(); + const { + codes: { ERR_ILLEGAL_CONSTRUCTOR } + } = requireErrors(); + const compose = requireCompose(); + const { setDefaultHighWaterMark, getDefaultHighWaterMark } = requireState(); + const { pipeline } = requirePipeline(); + const { destroyer } = requireDestroy(); + const eos = requireEndOfStream(); + const promises = requirePromises(); + const utils = requireUtils(); + const Stream = (stream.exports = requireLegacy().Stream); + Stream.isDestroyed = utils.isDestroyed; + Stream.isDisturbed = utils.isDisturbed; + Stream.isErrored = utils.isErrored; + Stream.isReadable = utils.isReadable; + Stream.isWritable = utils.isWritable; + Stream.Readable = requireReadable(); + for (const key of ObjectKeys(streamReturningOperators)) { + const op = streamReturningOperators[key]; + function fn(...args) { + if (new.target) { + throw ERR_ILLEGAL_CONSTRUCTOR() + } + return Stream.Readable.from(ReflectApply(op, this, args)) + } + ObjectDefineProperty(fn, 'name', { + __proto__: null, + value: op.name + }); + ObjectDefineProperty(fn, 'length', { + __proto__: null, + value: op.length + }); + ObjectDefineProperty(Stream.Readable.prototype, key, { + __proto__: null, + value: fn, + enumerable: false, + configurable: true, + writable: true + }); + } + for (const key of ObjectKeys(promiseReturningOperators)) { + const op = promiseReturningOperators[key]; + function fn(...args) { + if (new.target) { + throw ERR_ILLEGAL_CONSTRUCTOR() + } + return ReflectApply(op, this, args) + } + ObjectDefineProperty(fn, 'name', { + __proto__: null, + value: op.name + }); + ObjectDefineProperty(fn, 'length', { + __proto__: null, + value: op.length + }); + ObjectDefineProperty(Stream.Readable.prototype, key, { + __proto__: null, + value: fn, + enumerable: false, + configurable: true, + writable: true + }); + } + Stream.Writable = requireWritable(); + Stream.Duplex = requireDuplex(); + Stream.Transform = requireTransform(); + Stream.PassThrough = requirePassthrough(); + Stream.pipeline = pipeline; + const { addAbortSignal } = requireAddAbortSignal(); + Stream.addAbortSignal = addAbortSignal; + Stream.finished = eos; + Stream.destroy = destroyer; + Stream.compose = compose; + Stream.setDefaultHighWaterMark = setDefaultHighWaterMark; + Stream.getDefaultHighWaterMark = getDefaultHighWaterMark; + ObjectDefineProperty(Stream, 'promises', { + __proto__: null, + configurable: true, + enumerable: true, + get() { + return promises + } + }); + ObjectDefineProperty(pipeline, customPromisify, { + __proto__: null, + enumerable: true, + get() { + return promises.pipeline + } + }); + ObjectDefineProperty(eos, customPromisify, { + __proto__: null, + enumerable: true, + get() { + return promises.finished + } + }); + + // Backwards-compat with node 0.4.x + Stream.Stream = Stream; + Stream._isUint8Array = function isUint8Array(value) { + return value instanceof Uint8Array + }; + Stream._uint8ArrayToBuffer = function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength) + }; + return stream.exports; +} + +var hasRequiredBrowser; + +function requireBrowser () { + if (hasRequiredBrowser) return browser$1.exports; + hasRequiredBrowser = 1; + (function (module) { + + const CustomStream = requireStream$1(); + const promises = requirePromises(); + const originalDestroy = CustomStream.Readable.destroy; + module.exports = CustomStream.Readable; + + // Explicit export naming is needed for ESM + module.exports._uint8ArrayToBuffer = CustomStream._uint8ArrayToBuffer; + module.exports._isUint8Array = CustomStream._isUint8Array; + module.exports.isDisturbed = CustomStream.isDisturbed; + module.exports.isErrored = CustomStream.isErrored; + module.exports.isReadable = CustomStream.isReadable; + module.exports.Readable = CustomStream.Readable; + module.exports.Writable = CustomStream.Writable; + module.exports.Duplex = CustomStream.Duplex; + module.exports.Transform = CustomStream.Transform; + module.exports.PassThrough = CustomStream.PassThrough; + module.exports.addAbortSignal = CustomStream.addAbortSignal; + module.exports.finished = CustomStream.finished; + module.exports.destroy = CustomStream.destroy; + module.exports.destroy = originalDestroy; + module.exports.pipeline = CustomStream.pipeline; + module.exports.compose = CustomStream.compose; + Object.defineProperty(CustomStream, 'promises', { + configurable: true, + enumerable: true, + get() { + return promises + } + }); + module.exports.Stream = CustomStream.Stream; + + // Allow default importing + module.exports.default = module.exports; + } (browser$1)); + return browser$1.exports; +} + +var hasRequiredStream; + +function requireStream () { + if (hasRequiredStream) return stream$1; + hasRequiredStream = 1; + (function (exports$1) { + Object.defineProperty(exports$1, "__esModule", { value: true }); + exports$1.Writable = exports$1.Readable = void 0; + var node_stream_1 = requireBrowser(); + Object.defineProperty(exports$1, "Readable", { enumerable: true, get: function () { return node_stream_1.Readable; } }); + Object.defineProperty(exports$1, "Writable", { enumerable: true, get: function () { return node_stream_1.Writable; } }); + + } (stream$1)); + return stream$1; +} + +var events = {}; + +var hasRequiredEvents; + +function requireEvents () { + if (hasRequiredEvents) return events; + hasRequiredEvents = 1; + (function (exports$1) { + Object.defineProperty(exports$1, "__esModule", { value: true }); + exports$1.EventEmitter = void 0; + var node_events_1 = requireEvents$1(); + Object.defineProperty(exports$1, "EventEmitter", { enumerable: true, get: function () { return node_events_1.EventEmitter; } }); + + } (events)); + return events; +} + +var FileHandle = {}; + +var util$1 = {}; + +var hasRequiredUtil$1; + +function requireUtil$1 () { + if (hasRequiredUtil$1) return util$1; + hasRequiredUtil$1 = 1; + Object.defineProperty(util$1, "__esModule", { value: true }); + util$1.getWriteSyncArgs = util$1.getWriteArgs = util$1.bufToUint8 = void 0; + util$1.promisify = promisify; + util$1.validateCallback = validateCallback; + util$1.modeToNumber = modeToNumber; + util$1.nullCheck = nullCheck; + util$1.pathToFilename = pathToFilename; + util$1.createError = createError; + util$1.createStatError = createStatError; + util$1.genRndStr6 = genRndStr6; + util$1.flagsToNumber = flagsToNumber; + util$1.streamToBuffer = streamToBuffer; + util$1.bufferToEncoding = bufferToEncoding; + util$1.isReadableStream = isReadableStream; + const fs_node_utils_1 = requireLib$8(); + const errors = requireErrors$1(); + const buffer_1 = requireBuffer(); + const fs_core_1 = requireLib$6(); + function promisify(fs, fn, getResult = input => input) { + return (...args) => new Promise((resolve, reject) => { + fs[fn].bind(fs)(...args, (error, result) => { + if (error) + return reject(error); + return resolve(getResult(result)); + }); + }); + } + function validateCallback(callback) { + if (typeof callback !== 'function') + throw TypeError(fs_node_utils_1.ERRSTR.CB); + return callback; + } + function _modeToNumber(mode, def) { + if (typeof mode === 'number') + return mode; + if (typeof mode === 'string') + return parseInt(mode, 8); + if (def) + return modeToNumber(def); + return undefined; + } + function modeToNumber(mode, def) { + const result = _modeToNumber(mode, def); + if (typeof result !== 'number' || isNaN(result)) + throw new TypeError(fs_node_utils_1.ERRSTR.MODE_INT); + return result; + } + function nullCheck(path, callback) { + if (('' + path).indexOf('\u0000') !== -1) { + const er = new Error('Path must be a string without null bytes'); + er.code = 'ENOENT'; + if (typeof callback !== 'function') + throw er; + queueMicrotask(() => { + callback(er); + }); + return false; + } + return true; + } + function getPathFromURLPosix(url) { + if (url.hostname !== '') { + throw new errors.TypeError('ERR_INVALID_FILE_URL_HOST', process$1.platform); + } + const pathname = url.pathname; + for (let n = 0; n < pathname.length; n++) { + if (pathname[n] === '%') { + const third = pathname.codePointAt(n + 2) | 0x20; + if (pathname[n + 1] === '2' && third === 102) { + throw new errors.TypeError('ERR_INVALID_FILE_URL_PATH', 'must not include encoded / characters'); + } + } + } + return decodeURIComponent(pathname); + } + function pathToFilename(path) { + if (path instanceof Uint8Array) { + path = (0, buffer_1.bufferFrom)(path); + } + if (typeof path !== 'string' && !buffer_1.Buffer.isBuffer(path)) { + try { + if (!(path instanceof requireUrl().URL)) + throw new TypeError(fs_node_utils_1.ERRSTR.PATH_STR); + } + catch (err) { + throw new TypeError(fs_node_utils_1.ERRSTR.PATH_STR); + } + path = getPathFromURLPosix(path); + } + const pathString = String(path); + nullCheck(pathString); + // return slash(pathString); + return pathString; + } + const ENOENT = 'ENOENT'; + const EBADF = 'EBADF'; + const EINVAL = 'EINVAL'; + const EPERM = 'EPERM'; + const EPROTO = 'EPROTO'; + const EEXIST = 'EEXIST'; + const ENOTDIR = 'ENOTDIR'; + const EMFILE = 'EMFILE'; + const EACCES = 'EACCES'; + const EISDIR = 'EISDIR'; + const ENOTEMPTY = 'ENOTEMPTY'; + const ENOSYS = 'ENOSYS'; + const ERR_FS_EISDIR = 'ERR_FS_EISDIR'; + const ERR_OUT_OF_RANGE = 'ERR_OUT_OF_RANGE'; + function formatError(errorCode, func = '', path = '', path2 = '') { + let pathFormatted = ''; + if (path) + pathFormatted = ` '${path}'`; + if (path2) + pathFormatted += ` -> '${path2}'`; + switch (errorCode) { + case ENOENT: + return `ENOENT: no such file or directory, ${func}${pathFormatted}`; + case EBADF: + return `EBADF: bad file descriptor, ${func}${pathFormatted}`; + case EINVAL: + return `EINVAL: invalid argument, ${func}${pathFormatted}`; + case EPERM: + return `EPERM: operation not permitted, ${func}${pathFormatted}`; + case EPROTO: + return `EPROTO: protocol error, ${func}${pathFormatted}`; + case EEXIST: + return `EEXIST: file already exists, ${func}${pathFormatted}`; + case ENOTDIR: + return `ENOTDIR: not a directory, ${func}${pathFormatted}`; + case EISDIR: + return `EISDIR: illegal operation on a directory, ${func}${pathFormatted}`; + case EACCES: + return `EACCES: permission denied, ${func}${pathFormatted}`; + case ENOTEMPTY: + return `ENOTEMPTY: directory not empty, ${func}${pathFormatted}`; + case EMFILE: + return `EMFILE: too many open files, ${func}${pathFormatted}`; + case ENOSYS: + return `ENOSYS: function not implemented, ${func}${pathFormatted}`; + case ERR_FS_EISDIR: + return `[ERR_FS_EISDIR]: Path is a directory: ${func} returned EISDIR (is a directory) ${path}`; + case ERR_OUT_OF_RANGE: + return `[ERR_OUT_OF_RANGE]: value out of range, ${func}${pathFormatted}`; + default: + return `${errorCode}: error occurred, ${func}${pathFormatted}`; + } + } + function createError(errorCode, func = '', path = '', path2 = '', Constructor = Error) { + const error = new Constructor(formatError(errorCode, func, path, path2)); + error.code = errorCode; + if (path) { + error.path = path; + } + return error; + } + function createStatError(errorCode, func = '', path = '', path2 = '') { + return { + code: errorCode, + message: formatError(errorCode, func, path, path2), + path, + toError() { + const error = new Error(this.message); + error.code = this.code; + if (this.path) { + error.path = this.path; + } + return error; + }, + }; + } + function genRndStr6() { + return Math.random().toString(36).slice(2, 8).padEnd(6, '0'); + } + function flagsToNumber(flags) { + if (typeof flags === 'number') + return flags; + if (typeof flags === 'string') { + const flagsNum = fs_node_utils_1.FLAGS[flags]; + if (typeof flagsNum !== 'undefined') + return flagsNum; + } + // throw new TypeError(formatError(ERRSTR_FLAG(flags))); + throw new errors.TypeError('ERR_INVALID_OPT_VALUE', 'flags', flags); + } + function streamToBuffer(stream) { + const chunks = []; + return new Promise((resolve, reject) => { + stream.on('data', chunk => chunks.push(chunk)); + stream.on('end', () => resolve(buffer_1.Buffer.concat(chunks))); + stream.on('error', reject); + }); + } + const bufToUint8 = (buf) => new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength); + util$1.bufToUint8 = bufToUint8; + const getWriteArgs = (fd, a, b, c, d, e) => { + (0, fs_core_1.validateFd)(fd); + let offset = 0; + let length; + let position = null; + let encoding; + let callback; + const tipa = typeof a; + const tipb = typeof b; + const tipc = typeof c; + const tipd = typeof d; + if (tipa !== 'string') { + if (tipb === 'function') { + callback = b; + } + else if (tipc === 'function') { + offset = b | 0; + callback = c; + } + else if (tipd === 'function') { + offset = b | 0; + length = c; + callback = d; + } + else { + offset = b | 0; + length = c; + position = d; + callback = e; + } + } + else { + if (tipb === 'function') { + callback = b; + } + else if (tipc === 'function') { + position = b; + callback = c; + } + else if (tipd === 'function') { + position = b; + encoding = c; + callback = d; + } + } + const buf = (0, fs_core_1.dataToBuffer)(a, encoding); + if (tipa !== 'string') { + if (typeof length === 'undefined') + length = buf.length; + } + else { + offset = 0; + length = buf.length; + } + const cb = validateCallback(callback); + return [fd, tipa === 'string', buf, offset, length, position, cb]; + }; + util$1.getWriteArgs = getWriteArgs; + const getWriteSyncArgs = (fd, a, b, c, d) => { + (0, fs_core_1.validateFd)(fd); + let encoding; + let offset; + let length; + let position; + const isBuffer = typeof a !== 'string'; + if (isBuffer) { + offset = (b || 0) | 0; + length = c; + position = d; + } + else { + position = b; + encoding = c; + } + const buf = (0, fs_core_1.dataToBuffer)(a, encoding); + if (isBuffer) { + if (typeof length === 'undefined') { + length = buf.length; + } + } + else { + offset = 0; + length = buf.length; + } + return [fd, buf, offset || 0, length, position]; + }; + util$1.getWriteSyncArgs = getWriteSyncArgs; + function bufferToEncoding(buffer, encoding) { + if (!encoding || encoding === 'buffer') + return buffer; + else + return buffer.toString(encoding); + } + function isReadableStream(stream) { + return (stream !== null && + typeof stream === 'object' && + typeof stream.pipe === 'function' && + typeof stream.on === 'function' && + stream.readable === true); + } + + return util$1; +} + +var hasRequiredFileHandle; + +function requireFileHandle () { + if (hasRequiredFileHandle) return FileHandle; + hasRequiredFileHandle = 1; + Object.defineProperty(FileHandle, "__esModule", { value: true }); + FileHandle.FileHandle = void 0; + const util_1 = requireUtil$1(); + const events_1 = requireEvents(); + let FileHandle$1 = class FileHandle extends events_1.EventEmitter { + constructor(fs, fd) { + super(); + this.refs = 1; + this.closePromise = null; + this.position = 0; + this.readableWebStreamLocked = false; + this.fs = fs; + this.fd = fd; + } + getAsyncId() { + // Return a unique async ID for this file handle + // In a real implementation, this would be provided by the underlying system + return this.fd; + } + appendFile(data, options) { + return (0, util_1.promisify)(this.fs, 'appendFile')(this.fd, data, options); + } + chmod(mode) { + return (0, util_1.promisify)(this.fs, 'fchmod')(this.fd, mode); + } + chown(uid, gid) { + return (0, util_1.promisify)(this.fs, 'fchown')(this.fd, uid, gid); + } + close() { + if (this.fd === -1) { + return Promise.resolve(); + } + if (this.closePromise) { + return this.closePromise; + } + this.refs--; + if (this.refs === 0) { + const currentFd = this.fd; + this.fd = -1; + this.closePromise = (0, util_1.promisify)(this.fs, 'close')(currentFd).finally(() => { + this.closePromise = null; + }); + } + else { + this.closePromise = new Promise((resolve, reject) => { + this.closeResolve = resolve; + this.closeReject = reject; + }).finally(() => { + this.closePromise = null; + this.closeReject = undefined; + this.closeResolve = undefined; + }); + } + this.emit('close'); + return this.closePromise; + } + datasync() { + return (0, util_1.promisify)(this.fs, 'fdatasync')(this.fd); + } + createReadStream(options) { + return this.fs.createReadStream('', { ...options, fd: this }); + } + createWriteStream(options) { + return this.fs.createWriteStream('', { ...options, fd: this }); + } + readableWebStream(options = {}) { + const { type = 'bytes', autoClose = false } = options; + let position = 0; + if (this.fd === -1) { + throw new Error('The FileHandle is closed'); + } + if (this.closePromise) { + throw new Error('The FileHandle is closing'); + } + if (this.readableWebStreamLocked) { + throw new Error('An error will be thrown if this method is called more than once or is called after the FileHandle is closed or closing.'); + } + this.readableWebStreamLocked = true; + this.ref(); + const unlockAndCleanup = () => { + this.readableWebStreamLocked = false; + this.unref(); + if (autoClose) { + this.close().catch(() => { + // Ignore close errors in cleanup + }); + } + }; + return new ReadableStream({ + type: type === 'bytes' ? 'bytes' : undefined, + autoAllocateChunkSize: 16384, + pull: async (controller) => { + try { + const view = controller.byobRequest?.view; + if (!view) { + // Fallback for when BYOB is not available + const buffer = new Uint8Array(16384); + const result = await this.read(buffer, 0, buffer.length, position); + if (result.bytesRead === 0) { + controller.close(); + unlockAndCleanup(); + return; + } + position += result.bytesRead; + controller.enqueue(buffer.slice(0, result.bytesRead)); + return; + } + const result = await this.read(view, view.byteOffset, view.byteLength, position); + if (result.bytesRead === 0) { + controller.close(); + unlockAndCleanup(); + return; + } + position += result.bytesRead; + controller.byobRequest.respond(result.bytesRead); + } + catch (error) { + controller.error(error); + unlockAndCleanup(); + } + }, + cancel: async () => { + unlockAndCleanup(); + }, + }); + } + async read(buffer, offset, length, position) { + const readPosition = position !== null && position !== undefined ? position : this.position; + const result = await (0, util_1.promisify)(this.fs, 'read', bytesRead => ({ bytesRead, buffer }))(this.fd, buffer, offset, length, readPosition); + // Update internal position only if position was null/undefined + if (position === null || position === undefined) { + this.position += result.bytesRead; + } + return result; + } + readv(buffers, position) { + return (0, util_1.promisify)(this.fs, 'readv', bytesRead => ({ bytesRead, buffers }))(this.fd, buffers, position); + } + readFile(options) { + return (0, util_1.promisify)(this.fs, 'readFile')(this.fd, options); + } + stat(options) { + return (0, util_1.promisify)(this.fs, 'fstat')(this.fd, options); + } + sync() { + return (0, util_1.promisify)(this.fs, 'fsync')(this.fd); + } + truncate(len) { + return (0, util_1.promisify)(this.fs, 'ftruncate')(this.fd, len); + } + utimes(atime, mtime) { + return (0, util_1.promisify)(this.fs, 'futimes')(this.fd, atime, mtime); + } + async write(buffer, offset, length, position) { + const useInternalPosition = typeof position !== 'number'; + const writePosition = useInternalPosition ? this.position : position; + const result = await (0, util_1.promisify)(this.fs, 'write', bytesWritten => ({ bytesWritten, buffer }))(this.fd, buffer, offset, length, writePosition); + // Update internal position only if position was null/undefined + if (useInternalPosition) { + this.position += result.bytesWritten; + } + return result; + } + writev(buffers, position) { + return (0, util_1.promisify)(this.fs, 'writev', bytesWritten => ({ bytesWritten, buffers }))(this.fd, buffers, position); + } + writeFile(data, options) { + return (0, util_1.promisify)(this.fs, 'writeFile')(this.fd, data, options); + } + // Implement Symbol.asyncDispose if available (ES2023+) + async [Symbol.asyncDispose]() { + await this.close(); + } + ref() { + this.refs++; + } + unref() { + this.refs--; + if (this.refs === 0) { + this.fd = -1; + if (this.closeResolve) { + (0, util_1.promisify)(this.fs, 'close')(this.fd).then(this.closeResolve, this.closeReject); + } + } + } + }; + FileHandle.FileHandle = FileHandle$1; + + return FileHandle; +} + +var FsPromises = {}; + +var hasRequiredFsPromises; + +function requireFsPromises () { + if (hasRequiredFsPromises) return FsPromises; + hasRequiredFsPromises = 1; + Object.defineProperty(FsPromises, "__esModule", { value: true }); + FsPromises.FsPromises = void 0; + const util_1 = requireUtil$1(); + const fs_node_utils_1 = requireLib$8(); + // AsyncIterator implementation for promises.watch + class FSWatchAsyncIterator { + constructor(fs, path, options = {}) { + this.fs = fs; + this.path = path; + this.options = options; + this.eventQueue = []; + this.resolveQueue = []; + this.finished = false; + this.maxQueue = options.maxQueue || 2048; + this.overflow = options.overflow || 'ignore'; + this.startWatching(); + // Handle AbortSignal + if (options.signal) { + if (options.signal.aborted) { + this.finish(); + return; + } + options.signal.addEventListener('abort', () => { + this.finish(); + }); + } + } + startWatching() { + try { + this.watcher = this.fs.watch(this.path, this.options, (eventType, filename) => { + this.enqueueEvent({ eventType, filename }); + }); + } + catch (error) { + // If we can't start watching, finish immediately + this.finish(); + throw error; + } + } + enqueueEvent(event) { + if (this.finished) + return; + // Handle queue overflow + if (this.eventQueue.length >= this.maxQueue) { + if (this.overflow === 'throw') { + const error = new Error(`Watch queue overflow: more than ${this.maxQueue} events queued`); + this.finish(error); + return; + } + else { + // 'ignore' - drop the oldest event + this.eventQueue.shift(); + } + } + this.eventQueue.push(event); + // If there's a waiting promise, resolve it + if (this.resolveQueue.length > 0) { + const { resolve } = this.resolveQueue.shift(); + const nextEvent = this.eventQueue.shift(); + resolve({ value: nextEvent, done: false }); + } + } + finish(error) { + if (this.finished) + return; + this.finished = true; + if (this.watcher) { + this.watcher.close(); + this.watcher = null; + } + // Resolve or reject all pending promises + while (this.resolveQueue.length > 0) { + const { resolve, reject } = this.resolveQueue.shift(); + if (error) { + reject(error); + } + else { + resolve({ value: undefined, done: true }); + } + } + } + async next() { + if (this.finished) { + return { value: undefined, done: true }; + } + // If we have queued events, return one + if (this.eventQueue.length > 0) { + const event = this.eventQueue.shift(); + return { value: event, done: false }; + } + // Otherwise, wait for the next event + return new Promise((resolve, reject) => { + this.resolveQueue.push({ resolve, reject }); + }); + } + async return() { + this.finish(); + return { value: undefined, done: true }; + } + async throw(error) { + this.finish(error); + throw error; + } + [Symbol.asyncIterator]() { + return this; + } + } + let FsPromises$1 = class FsPromises { + constructor(fs, FileHandle) { + this.fs = fs; + this.FileHandle = FileHandle; + this.constants = fs_node_utils_1.constants; + this.cp = (0, util_1.promisify)(this.fs, 'cp'); + this.opendir = (0, util_1.promisify)(this.fs, 'opendir'); + this.statfs = (0, util_1.promisify)(this.fs, 'statfs'); + this.lutimes = (0, util_1.promisify)(this.fs, 'lutimes'); + this.glob = (0, util_1.promisify)(this.fs, 'glob'); + this.access = (0, util_1.promisify)(this.fs, 'access'); + this.chmod = (0, util_1.promisify)(this.fs, 'chmod'); + this.chown = (0, util_1.promisify)(this.fs, 'chown'); + this.copyFile = (0, util_1.promisify)(this.fs, 'copyFile'); + this.lchmod = (0, util_1.promisify)(this.fs, 'lchmod'); + this.lchown = (0, util_1.promisify)(this.fs, 'lchown'); + this.link = (0, util_1.promisify)(this.fs, 'link'); + this.lstat = (0, util_1.promisify)(this.fs, 'lstat'); + this.mkdir = (0, util_1.promisify)(this.fs, 'mkdir'); + this.mkdtemp = (0, util_1.promisify)(this.fs, 'mkdtemp'); + this.readdir = (0, util_1.promisify)(this.fs, 'readdir'); + this.readlink = (0, util_1.promisify)(this.fs, 'readlink'); + this.realpath = (0, util_1.promisify)(this.fs, 'realpath'); + this.rename = (0, util_1.promisify)(this.fs, 'rename'); + this.rmdir = (0, util_1.promisify)(this.fs, 'rmdir'); + this.rm = (0, util_1.promisify)(this.fs, 'rm'); + this.stat = (0, util_1.promisify)(this.fs, 'stat'); + this.symlink = (0, util_1.promisify)(this.fs, 'symlink'); + this.truncate = (0, util_1.promisify)(this.fs, 'truncate'); + this.unlink = (0, util_1.promisify)(this.fs, 'unlink'); + this.utimes = (0, util_1.promisify)(this.fs, 'utimes'); + this.readFile = (id, options) => { + return (0, util_1.promisify)(this.fs, 'readFile')(id instanceof this.FileHandle ? id.fd : id, options); + }; + this.appendFile = (path, data, options) => { + return (0, util_1.promisify)(this.fs, 'appendFile')(path instanceof this.FileHandle ? path.fd : path, data, options); + }; + this.open = (path, flags = 'r', mode) => { + return (0, util_1.promisify)(this.fs, 'open', fd => new this.FileHandle(this.fs, fd))(path, flags, mode); + }; + this.writeFile = (id, data, options) => { + const dataPromise = (0, util_1.isReadableStream)(data) ? (0, util_1.streamToBuffer)(data) : Promise.resolve(data); + return dataPromise.then(data => (0, util_1.promisify)(this.fs, 'writeFile')(id instanceof this.FileHandle ? id.fd : id, data, options)); + }; + this.watch = (filename, options) => { + const watchOptions = typeof options === 'string' ? { encoding: options } : options || {}; + return new FSWatchAsyncIterator(this.fs, filename, watchOptions); + }; + } + }; + FsPromises.FsPromises = FsPromises$1; + + return FsPromises; +} + +var lib$3 = {}; + +var lib$2 = {}; + +var printTree = {}; + +var hasRequiredPrintTree; + +function requirePrintTree () { + if (hasRequiredPrintTree) return printTree; + hasRequiredPrintTree = 1; + Object.defineProperty(printTree, "__esModule", { value: true }); + printTree.printTree = void 0; + const printTree$1 = (tab = '', children) => { + let str = ''; + let last = children.length - 1; + for (; last >= 0; last--) + if (children[last]) + break; + for (let i = 0; i <= last; i++) { + const fn = children[i]; + if (!fn) + continue; + const isLast = i === last; + const child = fn(tab + (isLast ? ' ' : '│') + ' '); + const branch = child ? (isLast ? '└─' : '├─') : '│'; + str += '\n' + tab + branch + (child ? ' ' + child : ''); + } + return str; + }; + printTree.printTree = printTree$1; + return printTree; +} + +var printBinary = {}; + +var hasRequiredPrintBinary; + +function requirePrintBinary () { + if (hasRequiredPrintBinary) return printBinary; + hasRequiredPrintBinary = 1; + Object.defineProperty(printBinary, "__esModule", { value: true }); + printBinary.printBinary = void 0; + const printBinary$1 = (tab = '', children) => { + const left = children[0], right = children[1]; + let str = ''; + if (left) + str += '\n' + tab + '← ' + left(tab + ' '); + if (right) + str += '\n' + tab + '→ ' + right(tab + ' '); + return str; + }; + printBinary.printBinary = printBinary$1; + return printBinary; +} + +var printJson = {}; + +var hasRequiredPrintJson; + +function requirePrintJson () { + if (hasRequiredPrintJson) return printJson; + hasRequiredPrintJson = 1; + Object.defineProperty(printJson, "__esModule", { value: true }); + printJson.printJson = void 0; + const printJson$1 = (tab = '', json, space = 2) => (JSON.stringify(json, null, space) || 'nil').split('\n').join('\n' + tab); + printJson.printJson = printJson$1; + return printJson; +} + +var hasRequiredLib$5; + +function requireLib$5 () { + if (hasRequiredLib$5) return lib$2; + hasRequiredLib$5 = 1; + (function (exports$1) { + Object.defineProperty(exports$1, "__esModule", { value: true }); + const tslib_1 = require$$0$2; + tslib_1.__exportStar(requirePrintTree(), exports$1); + tslib_1.__exportStar(requirePrintBinary(), exports$1); + tslib_1.__exportStar(requirePrintJson(), exports$1); + } (lib$2)); + return lib$2; +} + +var hasRequiredLib$4; + +function requireLib$4 () { + if (hasRequiredLib$4) return lib$3; + hasRequiredLib$4 = 1; + (function (exports$1) { + Object.defineProperty(exports$1, "__esModule", { value: true }); + exports$1.toTreeSync = void 0; + const tree_dump_1 = requireLib$5(); + const fs_node_utils_1 = requireLib$8(); + const toTreeSync = (fs, opts = {}) => { + const separator = opts.separator || '/'; + let dir = opts.dir || separator; + if (dir[dir.length - 1] !== separator) + dir += separator; + const tab = opts.tab || ''; + const depth = opts.depth ?? 10; + const sort = opts.sort ?? true; + let subtree = ' (...)'; + if (depth > 0) { + const list = fs.readdirSync(dir, { withFileTypes: true }); + if (sort) { + list.sort((a, b) => { + if (a.isDirectory() && b.isDirectory()) { + return a.name.toString().localeCompare(b.name.toString()); + } + else if (a.isDirectory()) { + return -1; + } + else if (b.isDirectory()) { + return 1; + } + else { + return a.name.toString().localeCompare(b.name.toString()); + } + }); + } + subtree = (0, tree_dump_1.printTree)(tab, list.map(entry => tab => { + if (entry.isDirectory()) { + return (0, exports$1.toTreeSync)(fs, { dir: dir + entry.name, depth: depth - 1, tab }); + } + else if (entry.isSymbolicLink()) { + return '' + entry.name + ' → ' + fs.readlinkSync(dir + entry.name); + } + else { + return '' + entry.name; + } + })); + } + const base = (0, fs_node_utils_1.basename)(dir, separator) + separator; + return base + subtree; + }; + exports$1.toTreeSync = toTreeSync; + + } (lib$3)); + return lib$3; +} + +var lib$1 = {}; + +var constants$1 = {}; + +var hasRequiredConstants$1; + +function requireConstants$1 () { + if (hasRequiredConstants$1) return constants$1; + hasRequiredConstants$1 = 1; + Object.defineProperty(constants$1, "__esModule", { value: true }); + + return constants$1; +} + +var sync = {}; + +var hasRequiredSync; + +function requireSync () { + if (hasRequiredSync) return sync; + hasRequiredSync = 1; + (function (exports$1) { + Object.defineProperty(exports$1, "__esModule", { value: true }); + exports$1.fromSnapshotSync = exports$1.toSnapshotSync = void 0; + const toSnapshotSync = ({ fs, path = '/', separator = '/' }) => { + const stats = fs.lstatSync(path); + if (stats.isDirectory()) { + const list = fs.readdirSync(path); + const entries = {}; + const dir = path.endsWith(separator) ? path : path + separator; + for (const child of list) { + const childSnapshot = (0, exports$1.toSnapshotSync)({ fs, path: `${dir}${child}`, separator }); + if (childSnapshot) + entries['' + child] = childSnapshot; + } + return [0 /* SnapshotNodeType.Folder */, {}, entries]; + } + else if (stats.isFile()) { + const buf = fs.readFileSync(path); + const uint8 = new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength); + return [1 /* SnapshotNodeType.File */, {}, uint8]; + } + else if (stats.isSymbolicLink()) { + return [ + 2 /* SnapshotNodeType.Symlink */, + { + target: fs.readlinkSync(path).toString(), + }, + ]; + } + return null; + }; + exports$1.toSnapshotSync = toSnapshotSync; + const fromSnapshotSync = (snapshot, { fs, path = '/', separator = '/' }) => { + if (!snapshot) + return; + switch (snapshot[0]) { + case 0 /* SnapshotNodeType.Folder */: { + if (!path.endsWith(separator)) + path = path + separator; + const [, , entries] = snapshot; + fs.mkdirSync(path, { recursive: true }); + for (const [name, child] of Object.entries(entries)) + (0, exports$1.fromSnapshotSync)(child, { fs, path: `${path}${name}`, separator }); + break; + } + case 1 /* SnapshotNodeType.File */: { + const [, , data] = snapshot; + fs.writeFileSync(path, data); + break; + } + case 2 /* SnapshotNodeType.Symlink */: { + const [, { target }] = snapshot; + fs.symlinkSync(target, path); + break; + } + } + }; + exports$1.fromSnapshotSync = fromSnapshotSync; + + } (sync)); + return sync; +} + +var binary = {}; + +var CborEncoder = {}; + +var isFloat32 = {}; + +var hasRequiredIsFloat32; + +function requireIsFloat32 () { + if (hasRequiredIsFloat32) return isFloat32; + hasRequiredIsFloat32 = 1; + Object.defineProperty(isFloat32, "__esModule", { value: true }); + isFloat32.isFloat32 = void 0; + const view = new DataView(new ArrayBuffer(4)); + const isFloat32$1 = (n) => { + view.setFloat32(0, n); + return n === view.getFloat32(0); + }; + isFloat32.isFloat32 = isFloat32$1; + + return isFloat32; +} + +var JsonPackExtension = {}; + +var hasRequiredJsonPackExtension; + +function requireJsonPackExtension () { + if (hasRequiredJsonPackExtension) return JsonPackExtension; + hasRequiredJsonPackExtension = 1; + Object.defineProperty(JsonPackExtension, "__esModule", { value: true }); + JsonPackExtension.JsonPackExtension = void 0; + /** + * A wrapping for MessagePack extension or CBOR tag value. When encoder + * encounters {@link JsonPackExtension} it will encode it as a MessagePack + * extension or CBOR tag. Likewise, the decoder will + * decode extensions into {@link JsonPackExtension}. + * + * @category Value + */ + let JsonPackExtension$1 = class JsonPackExtension { + constructor(tag, val) { + this.tag = tag; + this.val = val; + } + }; + JsonPackExtension.JsonPackExtension = JsonPackExtension$1; + + return JsonPackExtension; +} + +var CborEncoderFast = {}; + +var Writer = {}; + +var Slice = {}; + +var hasRequiredSlice; + +function requireSlice () { + if (hasRequiredSlice) return Slice; + hasRequiredSlice = 1; + Object.defineProperty(Slice, "__esModule", { value: true }); + Slice.Slice = void 0; + /** + * @deprecated Use {@link Reader} instead. + */ + let Slice$1 = class Slice { + constructor(uint8, view, start, end) { + this.uint8 = uint8; + this.view = view; + this.start = start; + this.end = end; + } + subarray() { + return this.uint8.subarray(this.start, this.end); + } + }; + Slice.Slice = Slice$1; + + return Slice; +} + +var hasRequiredWriter; + +function requireWriter () { + if (hasRequiredWriter) return Writer; + hasRequiredWriter = 1; + Object.defineProperty(Writer, "__esModule", { value: true }); + Writer.Writer = void 0; + const Slice_1 = requireSlice(); + const EMPTY_UINT8 = new Uint8Array([]); + const EMPTY_VIEW = new DataView(EMPTY_UINT8.buffer); + const hasBuffer = typeof Buffer === 'function'; + const utf8Write = hasBuffer + ? Buffer.prototype.utf8Write + : null; + const from = hasBuffer ? Buffer.from : null; + const textEncoder = typeof TextEncoder !== 'undefined' ? new TextEncoder() : null; + /** + * Writer class provides an efficient way to encode binary data. It grows the + * internal memory buffer automatically as more space is required. It is useful + * in cases when it is not known in advance the size of memory needed. + */ + let Writer$1 = class Writer { + /** + * @param allocSize Number of bytes to allocate at a time when buffer ends. + */ + constructor(allocSize = 64 * 1024) { + this.allocSize = allocSize; + /** @ignore */ + this.view = EMPTY_VIEW; + /** @ignore */ + this.x0 = 0; + /** @ignore */ + this.x = 0; + this.uint8 = new Uint8Array(allocSize); + this.size = allocSize; + this.view = new DataView(this.uint8.buffer); + } + /** @ignore */ + grow(size) { + const x0 = this.x0; + const x = this.x; + const oldUint8 = this.uint8; + const newUint8 = new Uint8Array(size); + const view = new DataView(newUint8.buffer); + const activeSlice = oldUint8.subarray(x0, x); + newUint8.set(activeSlice, 0); + this.x = x - x0; + this.x0 = 0; + this.uint8 = newUint8; + this.size = size; + this.view = view; + } + /** + * Make sure the internal buffer has enough space to write the specified number + * of bytes, otherwise resize the internal buffer to accommodate for more size. + * + * @param capacity Number of bytes. + */ + ensureCapacity(capacity) { + const byteLength = this.size; + const remaining = byteLength - this.x; + if (remaining < capacity) { + const total = byteLength - this.x0; + const required = capacity - remaining; + const totalRequired = total + required; + this.grow(totalRequired <= this.allocSize ? this.allocSize : totalRequired * 2); + } + } + /** @todo Consider renaming to "skip"? */ + move(capacity) { + this.ensureCapacity(capacity); + this.x += capacity; + } + reset() { + this.x0 = this.x; + } + /** + * Allocates a new {@link ArrayBuffer}, useful when the underlying + * {@link ArrayBuffer} cannot be shared between threads. + * + * @param size Size of memory to allocate. + */ + newBuffer(size) { + const uint8 = (this.uint8 = new Uint8Array(size)); + this.size = size; + this.view = new DataView(uint8.buffer); + this.x = this.x0 = 0; + } + /** + * @returns Encoded memory buffer contents. + */ + flush() { + const result = this.uint8.subarray(this.x0, this.x); + this.x0 = this.x; + return result; + } + flushSlice() { + const slice = new Slice_1.Slice(this.uint8, this.view, this.x0, this.x); + this.x0 = this.x; + return slice; + } + u8(char) { + this.ensureCapacity(1); + this.uint8[this.x++] = char; + } + u16(word) { + this.ensureCapacity(2); + this.view.setUint16(this.x, word); + this.x += 2; + } + u32(dword) { + this.ensureCapacity(4); + this.view.setUint32(this.x, dword); + this.x += 4; + } + i32(dword) { + this.ensureCapacity(4); + this.view.setInt32(this.x, dword); + this.x += 4; + } + u64(qword) { + this.ensureCapacity(8); + this.view.setBigUint64(this.x, BigInt(qword)); + this.x += 8; + } + f64(float) { + this.ensureCapacity(8); + this.view.setFloat64(this.x, float); + this.x += 8; + } + u8u16(u8, u16) { + this.ensureCapacity(3); + let x = this.x; + this.uint8[x++] = u8; + this.uint8[x++] = u16 >>> 8; + this.uint8[x++] = u16 & 0xff; + this.x = x; + } + u8u32(u8, u32) { + this.ensureCapacity(5); + let x = this.x; + this.uint8[x++] = u8; + this.view.setUint32(x, u32); + this.x = x + 4; + } + u8u64(u8, u64) { + this.ensureCapacity(9); + let x = this.x; + this.uint8[x++] = u8; + this.view.setBigUint64(x, BigInt(u64)); + this.x = x + 8; + } + u8f32(u8, f32) { + this.ensureCapacity(5); + let x = this.x; + this.uint8[x++] = u8; + this.view.setFloat32(x, f32); + this.x = x + 4; + } + u8f64(u8, f64) { + this.ensureCapacity(9); + let x = this.x; + this.uint8[x++] = u8; + this.view.setFloat64(x, f64); + this.x = x + 8; + } + buf(buf, length) { + this.ensureCapacity(length); + const x = this.x; + this.uint8.set(buf, x); + this.x = x + length; + } + /** + * Encodes string as UTF-8. You need to call .ensureCapacity(str.length * 4) + * before calling + * + * @param str String to encode as UTF-8. + * @returns The number of bytes written + */ + utf8(str) { + const theoreticalMaxLength = str.length * 4; + if (theoreticalMaxLength < 168) + return this.utf8Native(str); + this.ensureCapacity(theoreticalMaxLength); + const maxLength = this.size - this.x; + if (utf8Write) { + const writeLength = utf8Write.call(this.uint8, str, this.x, maxLength); + this.x += writeLength; + return writeLength; + } + else if (from) { + const uint8 = this.uint8; + const offset = uint8.byteOffset + this.x; + const buf = from(uint8.buffer).subarray(offset, offset + maxLength); + const writeLength = buf.write(str, 0, maxLength, 'utf8'); + this.x += writeLength; + return writeLength; + } + else if (theoreticalMaxLength > 1024 && textEncoder) { + const writeLength = textEncoder.encodeInto(str, this.uint8.subarray(this.x, this.x + maxLength)).written; + this.x += writeLength; + return writeLength; + } + return this.utf8Native(str); + } + utf8Native(str) { + const length = str.length; + const uint8 = this.uint8; + let offset = this.x; + let pos = 0; + while (pos < length) { + let value = str.charCodeAt(pos++); + if ((value & 0xffffff80) === 0) { + uint8[offset++] = value; + continue; + } + else if ((value & 0xfffff800) === 0) { + uint8[offset++] = ((value >> 6) & 0x1f) | 0xc0; + } + else { + if (value >= 0xd800 && value <= 0xdbff) { + if (pos < length) { + const extra = str.charCodeAt(pos); + if ((extra & 0xfc00) === 0xdc00) { + pos++; + value = ((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000; + } + } + } + if ((value & 0xffff0000) === 0) { + uint8[offset++] = ((value >> 12) & 0x0f) | 0xe0; + uint8[offset++] = ((value >> 6) & 0x3f) | 0x80; + } + else { + uint8[offset++] = ((value >> 18) & 0x07) | 0xf0; + uint8[offset++] = ((value >> 12) & 0x3f) | 0x80; + uint8[offset++] = ((value >> 6) & 0x3f) | 0x80; + } + } + uint8[offset++] = (value & 0x3f) | 0x80; + } + const writeLength = offset - this.x; + this.x = offset; + return writeLength; + } + ascii(str) { + const length = str.length; + this.ensureCapacity(length); + const uint8 = this.uint8; + let x = this.x; + let pos = 0; + while (pos < length) + uint8[x++] = str.charCodeAt(pos++); + this.x = x; + } + }; + Writer.Writer = Writer$1; + + return Writer; +} + +var hasRequiredCborEncoderFast; + +function requireCborEncoderFast () { + if (hasRequiredCborEncoderFast) return CborEncoderFast; + hasRequiredCborEncoderFast = 1; + Object.defineProperty(CborEncoderFast, "__esModule", { value: true }); + CborEncoderFast.CborEncoderFast = void 0; + const Writer_1 = requireWriter(); + const isSafeInteger = Number.isSafeInteger; + /** + * Fast CBOR encoder supports only JSON values. Use regular `CborEncoder` if + * you need ability to encode all CBOR value types. + */ + let CborEncoderFast$1 = class CborEncoderFast { + constructor(writer = new Writer_1.Writer()) { + this.writer = writer; + } + encode(value) { + this.writeAny(value); + return this.writer.flush(); + } + writeAny(value) { + switch (typeof value) { + case 'number': + return this.writeNumber(value); + case 'string': + return this.writeStr(value); + case 'boolean': + return this.writer.u8(0xf4 + +value); + case 'object': { + if (!value) + return this.writer.u8(0xf6); + const constr = value.constructor; + switch (constr) { + case Array: + return this.writeArr(value); + default: + return this.writeObj(value); + } + } + } + } + writeCbor() { + this.writer.u8u16(0xd9, 0xd9f7); + } + writeEnd() { + this.writer.u8(255 /* CONST.END */); + } + writeNull() { + this.writer.u8(0xf6); + } + writeBoolean(bool) { + if (bool) + this.writer.u8(0xf5); + else + this.writer.u8(0xf4); + } + writeNumber(num) { + if (isSafeInteger(num)) + this.writeInteger(num); + else if (typeof num === 'bigint') + this.writeBigInt(num); + else + this.writeFloat(num); + } + writeBigInt(int) { + if (int >= 0) + this.writeBigUint(int); + else + this.writeBigSint(int); + } + writeBigUint(uint) { + if (uint <= Number.MAX_SAFE_INTEGER) + return this.writeUInteger(Number(uint)); + this.writer.u8u64(0x1b, uint); + } + writeBigSint(int) { + if (int >= Number.MIN_SAFE_INTEGER) + return this.encodeNint(Number(int)); + const uint = -BigInt(1) - int; + this.writer.u8u64(0x3b, uint); + } + writeInteger(int) { + if (int >= 0) + this.writeUInteger(int); + else + this.encodeNint(int); + } + writeUInteger(uint) { + const writer = this.writer; + writer.ensureCapacity(9); + const uint8 = writer.uint8; + let x = writer.x; + if (uint <= 23) { + uint8[x++] = 0 /* MAJOR_OVERLAY.UIN */ + uint; + } + else if (uint <= 0xff) { + uint8[x++] = 0x18; + uint8[x++] = uint; + } + else if (uint <= 0xffff) { + uint8[x++] = 0x19; + writer.view.setUint16(x, uint); + x += 2; + } + else if (uint <= 0xffffffff) { + uint8[x++] = 0x1a; + writer.view.setUint32(x, uint); + x += 4; + } + else { + uint8[x++] = 0x1b; + writer.view.setBigUint64(x, BigInt(uint)); + x += 8; + } + writer.x = x; + } + /** @deprecated Remove and use `writeNumber` instead. */ + encodeNumber(num) { + this.writeNumber(num); + } + /** @deprecated Remove and use `writeInteger` instead. */ + encodeInteger(int) { + this.writeInteger(int); + } + /** @deprecated */ + encodeUint(uint) { + this.writeUInteger(uint); + } + encodeNint(int) { + const uint = -1 - int; + const writer = this.writer; + writer.ensureCapacity(9); + const uint8 = writer.uint8; + let x = writer.x; + if (uint < 24) { + uint8[x++] = 32 /* MAJOR_OVERLAY.NIN */ + uint; + } + else if (uint <= 0xff) { + uint8[x++] = 0x38; + uint8[x++] = uint; + } + else if (uint <= 0xffff) { + uint8[x++] = 0x39; + writer.view.setUint16(x, uint); + x += 2; + } + else if (uint <= 0xffffffff) { + uint8[x++] = 0x3a; + writer.view.setUint32(x, uint); + x += 4; + } + else { + uint8[x++] = 0x3b; + writer.view.setBigUint64(x, BigInt(uint)); + x += 8; + } + writer.x = x; + } + writeFloat(float) { + this.writer.u8f64(0xfb, float); + } + writeBin(buf) { + const length = buf.length; + this.writeBinHdr(length); + this.writer.buf(buf, length); + } + writeBinHdr(length) { + const writer = this.writer; + if (length <= 23) + writer.u8(64 /* MAJOR_OVERLAY.BIN */ + length); + else if (length <= 0xff) + writer.u16((0x58 << 8) + length); + else if (length <= 0xffff) + writer.u8u16(0x59, length); + else if (length <= 0xffffffff) + writer.u8u32(0x5a, length); + else + writer.u8u64(0x5b, length); + } + writeStr(str) { + const writer = this.writer; + const length = str.length; + const maxSize = length * 4; + writer.ensureCapacity(5 + maxSize); + const uint8 = writer.uint8; + let lengthOffset = writer.x; + if (maxSize <= 23) + writer.x++; + else if (maxSize <= 0xff) { + uint8[writer.x++] = 0x78; + lengthOffset = writer.x; + writer.x++; + } + else if (maxSize <= 0xffff) { + uint8[writer.x++] = 0x79; + lengthOffset = writer.x; + writer.x += 2; + } + else { + uint8[writer.x++] = 0x7a; + lengthOffset = writer.x; + writer.x += 4; + } + const bytesWritten = writer.utf8(str); + if (maxSize <= 23) + uint8[lengthOffset] = 96 /* MAJOR_OVERLAY.STR */ + bytesWritten; + else if (maxSize <= 0xff) + uint8[lengthOffset] = bytesWritten; + else if (maxSize <= 0xffff) + writer.view.setUint16(lengthOffset, bytesWritten); + else + writer.view.setUint32(lengthOffset, bytesWritten); + } + writeStrHdr(length) { + const writer = this.writer; + if (length <= 23) + writer.u8(96 /* MAJOR_OVERLAY.STR */ + length); + else if (length <= 0xff) + writer.u16((0x78 << 8) + length); + else if (length <= 0xffff) + writer.u8u16(0x79, length); + else + writer.u8u32(0x7a, length); + } + writeAsciiStr(str) { + this.writeStrHdr(str.length); + this.writer.ascii(str); + } + writeArr(arr) { + const length = arr.length; + this.writeArrHdr(length); + for (let i = 0; i < length; i++) + this.writeAny(arr[i]); + } + writeArrHdr(length) { + const writer = this.writer; + if (length <= 23) + writer.u8(128 /* MAJOR_OVERLAY.ARR */ + length); + else if (length <= 0xff) + writer.u16((0x98 << 8) + length); + else if (length <= 0xffff) + writer.u8u16(0x99, length); + else if (length <= 0xffffffff) + writer.u8u32(0x9a, length); + else + writer.u8u64(0x9b, length); + } + writeObj(obj) { + const keys = Object.keys(obj); + const length = keys.length; + this.writeObjHdr(length); + for (let i = 0; i < length; i++) { + const key = keys[i]; + this.writeStr(key); + this.writeAny(obj[key]); + } + } + writeObjHdr(length) { + const writer = this.writer; + if (length <= 23) + writer.u8(160 /* MAJOR_OVERLAY.MAP */ + length); + else if (length <= 0xff) + writer.u16((0xb8 << 8) + length); + else if (length <= 0xffff) + writer.u8u16(0xb9, length); + else if (length <= 0xffffffff) + writer.u8u32(0xba, length); + else + writer.u8u64(0xbb, length); + } + writeMapHdr(length) { + this.writeObjHdr(length); + } + writeStartMap() { + this.writer.u8(0xbf); + } + writeTag(tag, value) { + this.writeTagHdr(tag); + this.writeAny(value); + } + writeTagHdr(tag) { + const writer = this.writer; + if (tag <= 23) + writer.u8(192 /* MAJOR_OVERLAY.TAG */ + tag); + else if (tag <= 0xff) + writer.u16((0xd8 << 8) + tag); + else if (tag <= 0xffff) + writer.u8u16(0xd9, tag); + else if (tag <= 0xffffffff) + writer.u8u32(0xda, tag); + else + writer.u8u64(0xdb, tag); + } + writeTkn(value) { + const writer = this.writer; + if (value <= 23) + writer.u8(224 /* MAJOR_OVERLAY.TKN */ + value); + else if (value <= 0xff) + writer.u16((0xf8 << 8) + value); + } + // ------------------------------------------------------- Streaming encoding + writeStartStr() { + this.writer.u8(0x7f); + } + writeStrChunk(str) { + throw new Error('Not implemented'); + } + writeEndStr() { + throw new Error('Not implemented'); + } + writeStartBin() { + this.writer.u8(0x5f); + } + writeBinChunk(buf) { + throw new Error('Not implemented'); + } + writeEndBin() { + throw new Error('Not implemented'); + } + writeStartArr() { + this.writer.u8(0x9f); + } + writeArrChunk(item) { + throw new Error('Not implemented'); + } + writeEndArr() { + this.writer.u8(255 /* CONST.END */); + } + writeStartObj() { + this.writer.u8(0xbf); + } + writeObjChunk(key, value) { + throw new Error('Not implemented'); + } + writeEndObj() { + this.writer.u8(255 /* CONST.END */); + } + }; + CborEncoderFast.CborEncoderFast = CborEncoderFast$1; + + return CborEncoderFast; +} + +var JsonPackValue = {}; + +var hasRequiredJsonPackValue; + +function requireJsonPackValue () { + if (hasRequiredJsonPackValue) return JsonPackValue; + hasRequiredJsonPackValue = 1; + Object.defineProperty(JsonPackValue, "__esModule", { value: true }); + JsonPackValue.JsonPackValue = void 0; + /** + * Use this wrapper is you have a pre-encoded MessagePack or CBOR value and you would + * like to dump it into a the document as-is. The contents of `buf` will + * be written as is to the document. + * + * It also serves as CBOR simple value container. In which case the type of value + * `val` field is "number". + * + * @category Value + */ + let JsonPackValue$1 = class JsonPackValue { + constructor(val) { + this.val = val; + } + }; + JsonPackValue.JsonPackValue = JsonPackValue$1; + + return JsonPackValue; +} + +var hasRequiredCborEncoder; + +function requireCborEncoder () { + if (hasRequiredCborEncoder) return CborEncoder; + hasRequiredCborEncoder = 1; + Object.defineProperty(CborEncoder, "__esModule", { value: true }); + CborEncoder.CborEncoder = void 0; + const isFloat32_1 = requireIsFloat32(); + const JsonPackExtension_1 = requireJsonPackExtension(); + const CborEncoderFast_1 = requireCborEncoderFast(); + const JsonPackValue_1 = requireJsonPackValue(); + let CborEncoder$1 = class CborEncoder extends CborEncoderFast_1.CborEncoderFast { + /** + * Called when the encoder encounters a value that it does not know how to encode. + * + * @param value Some JavaScript value. + */ + writeUnknown(value) { + this.writeNull(); + } + writeAny(value) { + switch (typeof value) { + case 'number': + return this.writeNumber(value); + case 'string': + return this.writeStr(value); + case 'boolean': + return this.writer.u8(0xf4 + +value); + case 'object': { + if (!value) + return this.writer.u8(0xf6); + const constr = value.constructor; + switch (constr) { + case Object: + return this.writeObj(value); + case Array: + return this.writeArr(value); + case Uint8Array: + return this.writeBin(value); + case Map: + return this.writeMap(value); + case JsonPackExtension_1.JsonPackExtension: + return this.writeTag(value.tag, value.val); + case JsonPackValue_1.JsonPackValue: { + const buf = value.val; + return this.writer.buf(buf, buf.length); + } + default: + if (value instanceof Uint8Array) + return this.writeBin(value); + if (Array.isArray(value)) + return this.writeArr(value); + if (value instanceof Map) + return this.writeMap(value); + return this.writeUnknown(value); + } + } + case 'undefined': + return this.writeUndef(); + case 'bigint': + return this.writeBigInt(value); + default: + return this.writeUnknown(value); + } + } + writeFloat(float) { + if ((0, isFloat32_1.isFloat32)(float)) + this.writer.u8f32(0xfa, float); + else + this.writer.u8f64(0xfb, float); + } + writeMap(map) { + this.writeMapHdr(map.size); + map.forEach((value, key) => { + this.writeAny(key); + this.writeAny(value); + }); + } + writeUndef() { + this.writer.u8(0xf7); + } + }; + CborEncoder.CborEncoder = CborEncoder$1; + + return CborEncoder; +} + +var CborDecoder = {}; + +var CborDecoderBase = {}; + +var f16 = {}; + +var hasRequiredF16; + +function requireF16 () { + if (hasRequiredF16) return f16; + hasRequiredF16 = 1; + Object.defineProperty(f16, "__esModule", { value: true }); + f16.decodeF16 = void 0; + const pow = Math.pow; + const decodeF16 = (binary) => { + const exponent = (binary & 0x7c00) >> 10; + const fraction = binary & 0x03ff; + return ((binary >> 15 ? -1 : 1) * + (exponent + ? exponent === 0x1f + ? fraction + ? NaN + : Infinity + : pow(2, exponent - 15) * (1 + fraction / 0x400) + : 6.103515625e-5 * (fraction / 0x400))); + }; + f16.decodeF16 = decodeF16; + + return f16; +} + +var Reader = {}; + +var decodeUtf8 = {}; + +var v16 = {}; + +var decodeAscii = {}; + +var hasRequiredDecodeAscii; + +function requireDecodeAscii () { + if (hasRequiredDecodeAscii) return decodeAscii; + hasRequiredDecodeAscii = 1; + Object.defineProperty(decodeAscii, "__esModule", { value: true }); + decodeAscii.decodeAsciiMax15 = decodeAscii.decodeAscii = void 0; + const fromCharCode = String.fromCharCode; + /** This code was borrowed form cbor-x under the MIT license. */ + // MIT License + // Copyright (c) 2020 Kris Zyp + // Permission is hereby granted, free of charge, to any person obtaining a copy + // of this software and associated documentation files (the "Software"), to deal + // in the Software without restriction, including without limitation the rights + // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + // copies of the Software, and to permit persons to whom the Software is + // furnished to do so, subject to the following conditions: + // The above copyright notice and this permission notice shall be included in all + // copies or substantial portions of the Software. + // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + // SOFTWARE. + const decodeAscii$1 = (src, position, length) => { + const bytes = []; + for (let i = 0; i < length; i++) { + const byte = src[position++]; + if (byte & 0x80) + return; + bytes.push(byte); + } + return fromCharCode.apply(String, bytes); + }; + decodeAscii.decodeAscii = decodeAscii$1; + const decodeAsciiMax15 = (src, position, length) => { + if (length < 4) { + if (length < 2) { + if (length === 0) + return ''; + else { + const a = src[position++]; + if ((a & 0x80) > 1) { + position -= 1; + return; + } + return fromCharCode(a); + } + } + else { + const a = src[position++]; + const b = src[position++]; + if ((a & 0x80) > 0 || (b & 0x80) > 0) { + position -= 2; + return; + } + if (length < 3) + return fromCharCode(a, b); + const c = src[position++]; + if ((c & 0x80) > 0) { + position -= 3; + return; + } + return fromCharCode(a, b, c); + } + } + else { + const a = src[position++]; + const b = src[position++]; + const c = src[position++]; + const d = src[position++]; + if ((a & 0x80) > 0 || (b & 0x80) > 0 || (c & 0x80) > 0 || (d & 0x80) > 0) { + position -= 4; + return; + } + if (length < 6) { + if (length === 4) + return fromCharCode(a, b, c, d); + else { + const e = src[position++]; + if ((e & 0x80) > 0) { + position -= 5; + return; + } + return fromCharCode(a, b, c, d, e); + } + } + else if (length < 8) { + const e = src[position++]; + const f = src[position++]; + if ((e & 0x80) > 0 || (f & 0x80) > 0) { + position -= 6; + return; + } + if (length < 7) + return fromCharCode(a, b, c, d, e, f); + const g = src[position++]; + if ((g & 0x80) > 0) { + position -= 7; + return; + } + return fromCharCode(a, b, c, d, e, f, g); + } + else { + const e = src[position++]; + const f = src[position++]; + const g = src[position++]; + const h = src[position++]; + if ((e & 0x80) > 0 || (f & 0x80) > 0 || (g & 0x80) > 0 || (h & 0x80) > 0) { + position -= 8; + return; + } + if (length < 10) { + if (length === 8) + return fromCharCode(a, b, c, d, e, f, g, h); + else { + const i = src[position++]; + if ((i & 0x80) > 0) { + position -= 9; + return; + } + return fromCharCode(a, b, c, d, e, f, g, h, i); + } + } + else if (length < 12) { + const i = src[position++]; + const j = src[position++]; + if ((i & 0x80) > 0 || (j & 0x80) > 0) { + position -= 10; + return; + } + if (length < 11) + return fromCharCode(a, b, c, d, e, f, g, h, i, j); + const k = src[position++]; + if ((k & 0x80) > 0) { + position -= 11; + return; + } + return fromCharCode(a, b, c, d, e, f, g, h, i, j, k); + } + else { + const i = src[position++]; + const j = src[position++]; + const k = src[position++]; + const l = src[position++]; + if ((i & 0x80) > 0 || (j & 0x80) > 0 || (k & 0x80) > 0 || (l & 0x80) > 0) { + position -= 12; + return; + } + if (length < 14) { + if (length === 12) + return fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l); + else { + const m = src[position++]; + if ((m & 0x80) > 0) { + position -= 13; + return; + } + return fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m); + } + } + else { + const m = src[position++]; + const n = src[position++]; + if ((m & 0x80) > 0 || (n & 0x80) > 0) { + position -= 14; + return; + } + if (length < 15) + return fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m, n); + const o = src[position++]; + if ((o & 0x80) > 0) { + position -= 15; + return; + } + return fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o); + } + } + } + } + }; + decodeAscii.decodeAsciiMax15 = decodeAsciiMax15; + + return decodeAscii; +} + +var v18 = {}; + +var hasRequiredV18; + +function requireV18 () { + if (hasRequiredV18) return v18; + hasRequiredV18 = 1; + Object.defineProperty(v18, "__esModule", { value: true }); + const fromCharCode = String.fromCharCode; + v18.default = (buf, start, length) => { + let offset = start; + const end = offset + length; + const points = []; + while (offset < end) { + let code = buf[offset++]; + if ((code & 0x80) !== 0) { + const octet2 = buf[offset++] & 0x3f; + if ((code & 0xe0) === 0xc0) { + code = ((code & 0x1f) << 6) | octet2; + } + else { + const octet3 = buf[offset++] & 0x3f; + if ((code & 0xf0) === 0xe0) { + code = ((code & 0x1f) << 12) | (octet2 << 6) | octet3; + } + else { + if ((code & 0xf8) === 0xf0) { + const octet4 = buf[offset++] & 0x3f; + let unit = ((code & 0x07) << 0x12) | (octet2 << 0x0c) | (octet3 << 0x06) | octet4; + if (unit > 0xffff) { + unit -= 0x10000; + const unit0 = ((unit >>> 10) & 0x3ff) | 0xd800; + code = 0xdc00 | (unit & 0x3ff); + points.push(unit0); + } + else { + code = unit; + } + } + } + } + } + points.push(code); + } + return fromCharCode.apply(String, points); + }; + + return v18; +} + +var hasRequiredV16; + +function requireV16 () { + if (hasRequiredV16) return v16; + hasRequiredV16 = 1; + Object.defineProperty(v16, "__esModule", { value: true }); + const tslib_1 = require$$0$2; + const decodeAscii_1 = requireDecodeAscii(); + const v18_1 = tslib_1.__importDefault(requireV18()); + const hasBuffer = typeof Buffer !== 'undefined'; + const utf8Slice = hasBuffer ? Buffer.prototype.utf8Slice : null; + const from = hasBuffer ? Buffer.from : null; + const shortDecoder = (buf, start, length) => (0, decodeAscii_1.decodeAsciiMax15)(buf, start, length) ?? (0, v18_1.default)(buf, start, length); + const midDecoder = (buf, start, length) => (0, decodeAscii_1.decodeAscii)(buf, start, length) ?? (0, v18_1.default)(buf, start, length); + const longDecoder = utf8Slice + ? (buf, start, length) => utf8Slice.call(buf, start, start + length) + : from + ? (buf, start, length) => from(buf) + .subarray(start, start + length) + .toString('utf8') + : v18_1.default; + const decoder = (buf, start, length) => { + if (length < 16) + return shortDecoder(buf, start, length); + if (length < 32) + return midDecoder(buf, start, length); + return longDecoder(buf, start, length); + }; + v16.default = decoder; + + return v16; +} + +var hasRequiredDecodeUtf8; + +function requireDecodeUtf8 () { + if (hasRequiredDecodeUtf8) return decodeUtf8; + hasRequiredDecodeUtf8 = 1; + Object.defineProperty(decodeUtf8, "__esModule", { value: true }); + decodeUtf8.decodeUtf8 = void 0; + const tslib_1 = require$$0$2; + const v16_1 = tslib_1.__importDefault(requireV16()); + decodeUtf8.decodeUtf8 = v16_1.default; + + return decodeUtf8; +} + +var hasRequiredReader; + +function requireReader () { + if (hasRequiredReader) return Reader; + hasRequiredReader = 1; + Object.defineProperty(Reader, "__esModule", { value: true }); + Reader.Reader = void 0; + const decodeUtf8_1 = requireDecodeUtf8(); + let Reader$1 = class Reader { + constructor(uint8 = new Uint8Array([]), view = new DataView(uint8.buffer, uint8.byteOffset, uint8.length), x = 0, end = uint8.length) { + this.uint8 = uint8; + this.view = view; + this.x = x; + this.end = end; + } + reset(uint8) { + this.x = 0; + this.uint8 = uint8; + this.view = new DataView(uint8.buffer, uint8.byteOffset, uint8.length); + } + size() { + return this.end - this.x; + } + /** + * Get current byte value without advancing the cursor. + */ + peek() { + return this.view.getUint8(this.x); + } + /** + * @deprecated Use peek() instead. + */ + peak() { + return this.peek(); + } + skip(length) { + this.x += length; + } + buf(size = this.size()) { + const x = this.x; + const end = x + size; + const bin = this.uint8.subarray(x, end); + this.x = end; + return bin; + } + subarray(start = 0, end) { + const x = this.x; + const actualStart = x + start; + const actualEnd = typeof end === 'number' ? x + end : this.end; + return this.uint8.subarray(actualStart, actualEnd); + } + /** + * Creates a new {@link Reader} that references the same underlying memory + * buffer. But with independent cursor and end. + * + * Preferred over {@link buf} since it also provides a DataView and is much + * faster to allocate a new {@link Slice} than a new {@link Uint8Array}. + * + * @param start Start offset relative to the current cursor position. + * @param end End offset relative to the current cursor position. + * @returns A new {@link Reader} instance. + */ + slice(start = 0, end) { + const x = this.x; + const actualStart = x + start; + const actualEnd = typeof end === 'number' ? x + end : this.end; + return new Reader(this.uint8, this.view, actualStart, actualEnd); + } + /** + * Similar to {@link slice} but also advances the cursor. Returns a new + * {@link Reader} that references the same underlying memory buffer, starting + * from the current cursor position. + * + * @param size Number of bytes to cut from the current position. + * @returns A new {@link Reader} instance. + */ + cut(size = this.size()) { + const slice = this.slice(0, size); + this.skip(size); + return slice; + } + u8() { + return this.uint8[this.x++]; + // return this.view.getUint8(this.x++); + } + i8() { + return this.view.getInt8(this.x++); + } + u16() { + // const num = this.view.getUint16(this.x); + // this.x += 2; + // return num; + let x = this.x; + const num = (this.uint8[x++] << 8) + this.uint8[x++]; + this.x = x; + return num; + } + i16() { + const num = this.view.getInt16(this.x); + this.x += 2; + return num; + } + u32() { + const num = this.view.getUint32(this.x); + this.x += 4; + return num; + } + i32() { + const num = this.view.getInt32(this.x); + this.x += 4; + return num; + } + u64() { + const num = this.view.getBigUint64(this.x); + this.x += 8; + return num; + } + i64() { + const num = this.view.getBigInt64(this.x); + this.x += 8; + return num; + } + f32() { + const pos = this.x; + this.x += 4; + return this.view.getFloat32(pos); + } + f64() { + const pos = this.x; + this.x += 8; + return this.view.getFloat64(pos); + } + utf8(size) { + const start = this.x; + this.x += size; + return (0, decodeUtf8_1.decodeUtf8)(this.uint8, start, size); + } + ascii(length) { + const uint8 = this.uint8; + let str = ''; + const end = this.x + length; + for (let i = this.x; i < end; i++) + str += String.fromCharCode(uint8[i]); + this.x = end; + return str; + } + }; + Reader.Reader = Reader$1; + + return Reader; +} + +var sharedCachedUtf8Decoder = {}; + +var CachedUtf8Decoder = {}; + +var v10 = {}; + +var hasRequiredV10; + +function requireV10 () { + if (hasRequiredV10) return v10; + hasRequiredV10 = 1; + Object.defineProperty(v10, "__esModule", { value: true }); + const fromCharCode = String.fromCharCode; + v10.default = (buf, start, length) => { + let offset = start; + const end = offset + length; + let str = ''; + while (offset < end) { + const octet1 = buf[offset++]; + if ((octet1 & 0x80) === 0) { + str += fromCharCode(octet1); + continue; + } + const octet2 = buf[offset++] & 0x3f; + if ((octet1 & 0xe0) === 0xc0) { + str += fromCharCode(((octet1 & 0x1f) << 6) | octet2); + continue; + } + const octet3 = buf[offset++] & 0x3f; + if ((octet1 & 0xf0) === 0xe0) { + str += fromCharCode(((octet1 & 0x1f) << 12) | (octet2 << 6) | octet3); + continue; + } + if ((octet1 & 0xf8) === 0xf0) { + const octet4 = buf[offset++] & 0x3f; + let unit = ((octet1 & 0x07) << 0x12) | (octet2 << 0x0c) | (octet3 << 0x06) | octet4; + if (unit > 0xffff) { + unit -= 0x10000; + const unit0 = ((unit >>> 10) & 0x3ff) | 0xd800; + unit = 0xdc00 | (unit & 0x3ff); + str += fromCharCode(unit0, unit); + } + else { + str += fromCharCode(unit); + } + } + else { + str += fromCharCode(octet1); + } + } + return str; + }; + + return v10; +} + +var hasRequiredCachedUtf8Decoder; + +function requireCachedUtf8Decoder () { + if (hasRequiredCachedUtf8Decoder) return CachedUtf8Decoder; + hasRequiredCachedUtf8Decoder = 1; + Object.defineProperty(CachedUtf8Decoder, "__esModule", { value: true }); + CachedUtf8Decoder.CachedUtf8Decoder = void 0; + const tslib_1 = require$$0$2; + const v10_1 = tslib_1.__importDefault(requireV10()); + let x = 1 + Math.round(Math.random() * ((-1 >>> 0) - 1)); + /** Generate a random 32-bit unsigned integer in the specified [min, max] range. */ + function randomU32(min, max) { + x ^= x << 13; + x ^= x >>> 17; + x ^= x << 5; + return ((x >>> 0) % (max - min + 1)) + min; + } + class CacheItem { + constructor(bytes, value) { + this.bytes = bytes; + this.value = value; + } + } + let CachedUtf8Decoder$1 = class CachedUtf8Decoder { + constructor() { + this.caches = []; + for (let i = 0; i < 31 /* CONST.MAX_CACHED_STR_LEN */; i++) + this.caches.push([]); + } + get(bytes, offset, size) { + const records = this.caches[size - 1]; + const len = records.length; + FIND_CHUNK: for (let i = 0; i < len; i++) { + const record = records[i]; + const recordBytes = record.bytes; + for (let j = 0; j < size; j++) + if (recordBytes[j] !== bytes[offset + j]) + continue FIND_CHUNK; + return record.value; + } + return null; + } + store(bytes, value) { + const records = this.caches[bytes.length - 1]; + const record = new CacheItem(bytes, value); + const length = records.length; + if (length >= 16 /* CONST.MAX_RECORDS_PER_SIZE */) + records[randomU32(0, 16 /* CONST.MAX_RECORDS_PER_SIZE */ - 1)] = record; + else + records.push(record); + } + decode(bytes, offset, size) { + if (!size) + return ''; + const cachedValue = this.get(bytes, offset, size); + if (cachedValue !== null) + return cachedValue; + const value = (0, v10_1.default)(bytes, offset, size); + // Ensure to copy a slice of bytes because the byte may be NodeJS Buffer and Buffer#slice() returns a reference to its internal ArrayBuffer. + const copy = Uint8Array.prototype.slice.call(bytes, offset, offset + size); + this.store(copy, value); + return value; + } + }; + CachedUtf8Decoder.CachedUtf8Decoder = CachedUtf8Decoder$1; + + return CachedUtf8Decoder; +} + +var hasRequiredSharedCachedUtf8Decoder; + +function requireSharedCachedUtf8Decoder () { + if (hasRequiredSharedCachedUtf8Decoder) return sharedCachedUtf8Decoder; + hasRequiredSharedCachedUtf8Decoder = 1; + Object.defineProperty(sharedCachedUtf8Decoder, "__esModule", { value: true }); + const CachedUtf8Decoder_1 = requireCachedUtf8Decoder(); + sharedCachedUtf8Decoder.default = new CachedUtf8Decoder_1.CachedUtf8Decoder(); + + return sharedCachedUtf8Decoder; +} + +var hasRequiredCborDecoderBase; + +function requireCborDecoderBase () { + if (hasRequiredCborDecoderBase) return CborDecoderBase; + hasRequiredCborDecoderBase = 1; + Object.defineProperty(CborDecoderBase, "__esModule", { value: true }); + CborDecoderBase.CborDecoderBase = void 0; + const tslib_1 = require$$0$2; + const f16_1 = requireF16(); + const JsonPackExtension_1 = requireJsonPackExtension(); + const JsonPackValue_1 = requireJsonPackValue(); + const Reader_1 = requireReader(); + const sharedCachedUtf8Decoder_1 = tslib_1.__importDefault(requireSharedCachedUtf8Decoder()); + let CborDecoderBase$1 = class CborDecoderBase { + constructor(reader = new Reader_1.Reader(), keyDecoder = sharedCachedUtf8Decoder_1.default) { + this.reader = reader; + this.keyDecoder = keyDecoder; + } + read(uint8) { + this.reader.reset(uint8); + return this.readAny(); + } + decode(uint8) { + this.reader.reset(uint8); + return this.readAny(); + } + // -------------------------------------------------------- Any value reading + val() { + return this.readAny(); + } + readAny() { + const reader = this.reader; + const octet = reader.u8(); + const major = octet >> 5; + const minor = octet & 31 /* CONST.MINOR_MASK */; + if (major < 4 /* MAJOR.ARR */) { + if (major < 2 /* MAJOR.BIN */) + return major === 0 /* MAJOR.UIN */ ? this.readUint(minor) : this.readNint(minor); + else + return major === 2 /* MAJOR.BIN */ ? this.readBin(minor) : this.readStr(minor); + } + else { + if (major < 6 /* MAJOR.TAG */) + return major === 4 /* MAJOR.ARR */ ? this.readArr(minor) : this.readObj(minor); + else + return major === 6 /* MAJOR.TAG */ ? this.readTag(minor) : this.readTkn(minor); + } + } + readAnyRaw(octet) { + const major = octet >> 5; + const minor = octet & 31 /* CONST.MINOR_MASK */; + if (major < 4 /* MAJOR.ARR */) { + if (major < 2 /* MAJOR.BIN */) + return major === 0 /* MAJOR.UIN */ ? this.readUint(minor) : this.readNint(minor); + else + return major === 2 /* MAJOR.BIN */ ? this.readBin(minor) : this.readStr(minor); + } + else { + if (major < 6 /* MAJOR.TAG */) + return major === 4 /* MAJOR.ARR */ ? this.readArr(minor) : this.readObj(minor); + else + return major === 6 /* MAJOR.TAG */ ? this.readTag(minor) : this.readTkn(minor); + } + } + readMinorLen(minor) { + if (minor < 24) + return minor; + switch (minor) { + case 24: + return this.reader.u8(); + case 25: + return this.reader.u16(); + case 26: + return this.reader.u32(); + case 27: + return Number(this.reader.u64()); + case 31: + return -1; + default: + throw 1 /* ERROR.UNEXPECTED_MINOR */; + } + } + // ----------------------------------------------------- Unsigned int reading + readUint(minor) { + if (minor < 25) { + return minor === 24 ? this.reader.u8() : minor; + } + else { + if (minor < 27) { + return minor === 25 ? this.reader.u16() : this.reader.u32(); + } + else { + const num = this.reader.u64(); + return num > 9007199254740991 /* CONST.MAX_UINT */ ? num : Number(num); + } + } + } + // ----------------------------------------------------- Negative int reading + readNint(minor) { + if (minor < 25) { + return minor === 24 ? -this.reader.u8() - 1 : -minor - 1; + } + else { + if (minor < 27) { + return minor === 25 ? -this.reader.u16() - 1 : -this.reader.u32() - 1; + } + else { + const num = this.reader.u64(); + return num > 9007199254740991 /* CONST.MAX_UINT */ - 1 ? -num - BigInt(1) : -Number(num) - 1; + } + } + } + // ----------------------------------------------------------- Binary reading + readBin(minor) { + const reader = this.reader; + if (minor <= 23) + return reader.buf(minor); + switch (minor) { + case 24: + return reader.buf(reader.u8()); + case 25: + return reader.buf(reader.u16()); + case 26: + return reader.buf(reader.u32()); + case 27: + return reader.buf(Number(reader.u64())); + case 31: { + let size = 0; + const list = []; + while (this.reader.peak() !== 255 /* CONST.END */) { + const uint8 = this.readBinChunk(); + size += uint8.length; + list.push(uint8); + } + this.reader.x++; + const res = new Uint8Array(size); + let offset = 0; + const length = list.length; + for (let i = 0; i < length; i++) { + const arr = list[i]; + res.set(arr, offset); + offset += arr.length; + } + return res; + } + default: + throw 1 /* ERROR.UNEXPECTED_MINOR */; + } + } + readBinChunk() { + const octet = this.reader.u8(); + const major = octet >> 5; + const minor = octet & 31 /* CONST.MINOR_MASK */; + if (major !== 2 /* MAJOR.BIN */) + throw 2 /* ERROR.UNEXPECTED_BIN_CHUNK_MAJOR */; + if (minor > 27) + throw 3 /* ERROR.UNEXPECTED_BIN_CHUNK_MINOR */; + return this.readBin(minor); + } + // ----------------------------------------------------------- String reading + readAsStr() { + const reader = this.reader; + const octet = reader.u8(); + const major = octet >> 5; + const minor = octet & 31 /* CONST.MINOR_MASK */; + if (major !== 3 /* MAJOR.STR */) + throw 11 /* ERROR.UNEXPECTED_STR_MAJOR */; + return this.readStr(minor); + } + readStr(minor) { + const reader = this.reader; + if (minor <= 23) + return reader.utf8(minor); + switch (minor) { + case 24: + return reader.utf8(reader.u8()); + case 25: + return reader.utf8(reader.u16()); + case 26: + return reader.utf8(reader.u32()); + case 27: + return reader.utf8(Number(reader.u64())); + case 31: { + let str = ''; + while (reader.peak() !== 255 /* CONST.END */) + str += this.readStrChunk(); + this.reader.x++; + return str; + } + default: + throw 1 /* ERROR.UNEXPECTED_MINOR */; + } + } + readStrLen(minor) { + if (minor <= 23) + return minor; + switch (minor) { + case 24: + return this.reader.u8(); + case 25: + return this.reader.u16(); + case 26: + return this.reader.u32(); + case 27: + return Number(this.reader.u64()); + default: + throw 1 /* ERROR.UNEXPECTED_MINOR */; + } + } + readStrChunk() { + const octet = this.reader.u8(); + const major = octet >> 5; + const minor = octet & 31 /* CONST.MINOR_MASK */; + if (major !== 3 /* MAJOR.STR */) + throw 4 /* ERROR.UNEXPECTED_STR_CHUNK_MAJOR */; + if (minor > 27) + throw 5 /* ERROR.UNEXPECTED_STR_CHUNK_MINOR */; + return this.readStr(minor); + } + // ------------------------------------------------------------ Array reading + readArr(minor) { + const length = this.readMinorLen(minor); + if (length >= 0) + return this.readArrRaw(length); + return this.readArrIndef(); + } + readArrRaw(length) { + const arr = []; + for (let i = 0; i < length; i++) + arr.push(this.readAny()); + return arr; + } + readArrIndef() { + const arr = []; + while (this.reader.peak() !== 255 /* CONST.END */) + arr.push(this.readAny()); + this.reader.x++; + return arr; + } + // ----------------------------------------------------------- Object reading + readObj(minor) { + if (minor < 28) { + let length = minor; + switch (minor) { + case 24: + length = this.reader.u8(); + break; + case 25: + length = this.reader.u16(); + break; + case 26: + length = this.reader.u32(); + break; + case 27: + length = Number(this.reader.u64()); + break; + } + const obj = {}; + for (let i = 0; i < length; i++) { + const key = this.key(); + if (key === '__proto__') + throw 6 /* ERROR.UNEXPECTED_OBJ_KEY */; + const value = this.readAny(); + obj[key] = value; + } + return obj; + } + else if (minor === 31) + return this.readObjIndef(); + else + throw 1 /* ERROR.UNEXPECTED_MINOR */; + } + /** Remove this? */ + readObjRaw(length) { + const obj = {}; + for (let i = 0; i < length; i++) { + const key = this.key(); + const value = this.readAny(); + obj[key] = value; + } + return obj; + } + readObjIndef() { + const obj = {}; + while (this.reader.peak() !== 255 /* CONST.END */) { + const key = this.key(); + if (this.reader.peak() === 255 /* CONST.END */) + throw 7 /* ERROR.UNEXPECTED_OBJ_BREAK */; + const value = this.readAny(); + obj[key] = value; + } + this.reader.x++; + return obj; + } + key() { + const octet = this.reader.u8(); + const major = octet >> 5; + const minor = octet & 31 /* CONST.MINOR_MASK */; + if (major !== 3 /* MAJOR.STR */) + return String(this.readAnyRaw(octet)); + const length = this.readStrLen(minor); + if (length > 31) + return this.reader.utf8(length); + const key = this.keyDecoder.decode(this.reader.uint8, this.reader.x, length); + this.reader.skip(length); + return key; + } + // -------------------------------------------------------------- Tag reading + readTag(minor) { + if (minor <= 23) + return this.readTagRaw(minor); + switch (minor) { + case 24: + return this.readTagRaw(this.reader.u8()); + case 25: + return this.readTagRaw(this.reader.u16()); + case 26: + return this.readTagRaw(this.reader.u32()); + case 27: + return this.readTagRaw(Number(this.reader.u64())); + default: + throw 1 /* ERROR.UNEXPECTED_MINOR */; + } + } + readTagRaw(tag) { + return new JsonPackExtension_1.JsonPackExtension(tag, this.readAny()); + } + // ------------------------------------------------------------ Token reading + readTkn(minor) { + switch (minor) { + case 0xf4 & 31 /* CONST.MINOR_MASK */: + return false; + case 0xf5 & 31 /* CONST.MINOR_MASK */: + return true; + case 0xf6 & 31 /* CONST.MINOR_MASK */: + return null; + case 0xf7 & 31 /* CONST.MINOR_MASK */: + return undefined; + case 0xf8 & 31 /* CONST.MINOR_MASK */: + return new JsonPackValue_1.JsonPackValue(this.reader.u8()); + case 0xf9 & 31 /* CONST.MINOR_MASK */: + return this.f16(); + case 0xfa & 31 /* CONST.MINOR_MASK */: + return this.reader.f32(); + case 0xfb & 31 /* CONST.MINOR_MASK */: + return this.reader.f64(); + } + if (minor <= 23) + return new JsonPackValue_1.JsonPackValue(minor); + throw 1 /* ERROR.UNEXPECTED_MINOR */; + } + f16() { + return (0, f16_1.decodeF16)(this.reader.u16()); + } + }; + CborDecoderBase.CborDecoderBase = CborDecoderBase$1; + + return CborDecoderBase; +} + +var hasRequiredCborDecoder; + +function requireCborDecoder () { + if (hasRequiredCborDecoder) return CborDecoder; + hasRequiredCborDecoder = 1; + Object.defineProperty(CborDecoder, "__esModule", { value: true }); + CborDecoder.CborDecoder = void 0; + const CborDecoderBase_1 = requireCborDecoderBase(); + const JsonPackValue_1 = requireJsonPackValue(); + let CborDecoder$1 = class CborDecoder extends CborDecoderBase_1.CborDecoderBase { + // -------------------------------------------------------------- Map reading + readAsMap() { + const octet = this.reader.u8(); + const major = octet >> 5; + const minor = octet & 31 /* CONST.MINOR_MASK */; + switch (major) { + case 5 /* MAJOR.MAP */: + return this.readMap(minor); + default: + throw 0 /* ERROR.UNEXPECTED_MAJOR */; + } + } + readMap(minor) { + const length = this.readMinorLen(minor); + if (length >= 0) + return this.readMapRaw(length); + else + return this.readMapIndef(); + } + readMapRaw(length) { + const map = new Map(); + for (let i = 0; i < length; i++) { + const key = this.readAny(); + const value = this.readAny(); + map.set(key, value); + } + return map; + } + readMapIndef() { + const map = new Map(); + while (this.reader.peak() !== 255 /* CONST.END */) { + const key = this.readAny(); + if (this.reader.peak() === 255 /* CONST.END */) + throw 7 /* ERROR.UNEXPECTED_OBJ_BREAK */; + const value = this.readAny(); + map.set(key, value); + } + this.reader.x++; + return map; + } + // ----------------------------------------------------------- Value skipping + skipN(n) { + for (let i = 0; i < n; i++) + this.skipAny(); + } + skipAny() { + this.skipAnyRaw(this.reader.u8()); + } + skipAnyRaw(octet) { + const major = octet >> 5; + const minor = octet & 31 /* CONST.MINOR_MASK */; + switch (major) { + case 0 /* MAJOR.UIN */: + case 1 /* MAJOR.NIN */: + this.skipUNint(minor); + break; + case 2 /* MAJOR.BIN */: + this.skipBin(minor); + break; + case 3 /* MAJOR.STR */: + this.skipStr(minor); + break; + case 4 /* MAJOR.ARR */: + this.skipArr(minor); + break; + case 5 /* MAJOR.MAP */: + this.skipObj(minor); + break; + case 7 /* MAJOR.TKN */: + this.skipTkn(minor); + break; + case 6 /* MAJOR.TAG */: + this.skipTag(minor); + break; + } + } + skipMinorLen(minor) { + if (minor <= 23) + return minor; + switch (minor) { + case 24: + return this.reader.u8(); + case 25: + return this.reader.u16(); + case 26: + return this.reader.u32(); + case 27: + return Number(this.reader.u64()); + case 31: + return -1; + default: + throw 1 /* ERROR.UNEXPECTED_MINOR */; + } + } + // --------------------------------------------------------- Integer skipping + skipUNint(minor) { + if (minor <= 23) + return; + switch (minor) { + case 24: + return this.reader.skip(1); + case 25: + return this.reader.skip(2); + case 26: + return this.reader.skip(4); + case 27: + return this.reader.skip(8); + default: + throw 1 /* ERROR.UNEXPECTED_MINOR */; + } + } + // ---------------------------------------------------------- Binary skipping + skipBin(minor) { + const length = this.skipMinorLen(minor); + if (length >= 0) + this.reader.skip(length); + else { + while (this.reader.peak() !== 255 /* CONST.END */) + this.skipBinChunk(); + this.reader.x++; + } + } + skipBinChunk() { + const octet = this.reader.u8(); + const major = octet >> 5; + const minor = octet & 31 /* CONST.MINOR_MASK */; + if (major !== 2 /* MAJOR.BIN */) + throw 2 /* ERROR.UNEXPECTED_BIN_CHUNK_MAJOR */; + if (minor > 27) + throw 3 /* ERROR.UNEXPECTED_BIN_CHUNK_MINOR */; + this.skipBin(minor); + } + // ---------------------------------------------------------- String skipping + skipStr(minor) { + const length = this.skipMinorLen(minor); + if (length >= 0) + this.reader.skip(length); + else { + while (this.reader.peak() !== 255 /* CONST.END */) + this.skipStrChunk(); + this.reader.x++; + } + } + skipStrChunk() { + const octet = this.reader.u8(); + const major = octet >> 5; + const minor = octet & 31 /* CONST.MINOR_MASK */; + if (major !== 3 /* MAJOR.STR */) + throw 4 /* ERROR.UNEXPECTED_STR_CHUNK_MAJOR */; + if (minor > 27) + throw 5 /* ERROR.UNEXPECTED_STR_CHUNK_MINOR */; + this.skipStr(minor); + } + // ----------------------------------------------------------- Array skipping + skipArr(minor) { + const length = this.skipMinorLen(minor); + if (length >= 0) + this.skipN(length); + else { + while (this.reader.peak() !== 255 /* CONST.END */) + this.skipAny(); + this.reader.x++; + } + } + // ---------------------------------------------------------- Object skipping + skipObj(minor) { + const length = this.readMinorLen(minor); + if (length >= 0) + return this.skipN(length * 2); + else { + while (this.reader.peak() !== 255 /* CONST.END */) { + this.skipAny(); + if (this.reader.peak() === 255 /* CONST.END */) + throw 7 /* ERROR.UNEXPECTED_OBJ_BREAK */; + this.skipAny(); + } + this.reader.x++; + } + } + // ------------------------------------------------------------- Tag skipping + skipTag(minor) { + const length = this.skipMinorLen(minor); + if (length < 0) + throw 1 /* ERROR.UNEXPECTED_MINOR */; + this.skipAny(); + } + // ----------------------------------------------------------- Token skipping + skipTkn(minor) { + switch (minor) { + case 0xf8 & 31 /* CONST.MINOR_MASK */: + this.reader.skip(1); + return; + case 0xf9 & 31 /* CONST.MINOR_MASK */: + this.reader.skip(2); + return; + case 0xfa & 31 /* CONST.MINOR_MASK */: + this.reader.skip(4); + return; + case 0xfb & 31 /* CONST.MINOR_MASK */: + this.reader.skip(8); + return; + } + if (minor <= 23) + return; + throw 1 /* ERROR.UNEXPECTED_MINOR */; + } + // --------------------------------------------------------------- Validation + /** + * Throws if at given offset in a buffer there is an invalid CBOR value, or + * if the value does not span the exact length specified in `size`. I.e. + * throws if: + * + * - The value is not a valid CBOR value. + * - The value is shorter than `size`. + * - The value is longer than `size`. + * + * @param value Buffer in which to validate CBOR value. + * @param offset Offset at which the value starts. + * @param size Expected size of the value. + */ + validate(value, offset = 0, size = value.length) { + this.reader.reset(value); + this.reader.x = offset; + const start = offset; + this.skipAny(); + const end = this.reader.x; + if (end - start !== size) + throw 8 /* ERROR.INVALID_SIZE */; + } + // -------------------------------------------- One level reading - any value + decodeLevel(value) { + this.reader.reset(value); + return this.readLevel(); + } + /** + * Decodes only one level of objects and arrays. Other values are decoded + * completely. + * + * @returns One level of decoded CBOR value. + */ + readLevel() { + const octet = this.reader.u8(); + const major = octet >> 5; + const minor = octet & 31 /* CONST.MINOR_MASK */; + switch (major) { + case 4 /* MAJOR.ARR */: + return this.readArrLevel(minor); + case 5 /* MAJOR.MAP */: + return this.readObjLevel(minor); + default: + return super.readAnyRaw(octet); + } + } + /** + * Decodes primitive values, returns container values as `JsonPackValue`. + * + * @returns A primitive value, or CBOR container value as a blob. + */ + readPrimitiveOrVal() { + const octet = this.reader.peak(); + const major = octet >> 5; + switch (major) { + case 4 /* MAJOR.ARR */: + case 5 /* MAJOR.MAP */: + return this.readAsValue(); + default: + return this.readAny(); + } + } + readAsValue() { + const reader = this.reader; + const start = reader.x; + this.skipAny(); + const end = reader.x; + return new JsonPackValue_1.JsonPackValue(reader.uint8.subarray(start, end)); + } + // ----------------------------------------------- One level reading - object + readObjLevel(minor) { + const length = this.readMinorLen(minor); + if (length >= 0) + return this.readObjRawLevel(length); + else + return this.readObjIndefLevel(); + } + readObjRawLevel(length) { + const obj = {}; + for (let i = 0; i < length; i++) { + const key = this.key(); + const value = this.readPrimitiveOrVal(); + obj[key] = value; + } + return obj; + } + readObjIndefLevel() { + const obj = {}; + while (this.reader.peak() !== 255 /* CONST.END */) { + const key = this.key(); + if (this.reader.peak() === 255 /* CONST.END */) + throw 7 /* ERROR.UNEXPECTED_OBJ_BREAK */; + const value = this.readPrimitiveOrVal(); + obj[key] = value; + } + this.reader.x++; + return obj; + } + // ------------------------------------------------ One level reading - array + readArrLevel(minor) { + const length = this.readMinorLen(minor); + if (length >= 0) + return this.readArrRawLevel(length); + return this.readArrIndefLevel(); + } + readArrRawLevel(length) { + const arr = []; + for (let i = 0; i < length; i++) + arr.push(this.readPrimitiveOrVal()); + return arr; + } + readArrIndefLevel() { + const arr = []; + while (this.reader.peak() !== 255 /* CONST.END */) + arr.push(this.readPrimitiveOrVal()); + this.reader.x++; + return arr; + } + // ---------------------------------------------------------- Shallow reading + readHdr(expectedMajor) { + const octet = this.reader.u8(); + const major = octet >> 5; + if (major !== expectedMajor) + throw 0 /* ERROR.UNEXPECTED_MAJOR */; + const minor = octet & 31 /* CONST.MINOR_MASK */; + if (minor < 24) + return minor; + switch (minor) { + case 24: + return this.reader.u8(); + case 25: + return this.reader.u16(); + case 26: + return this.reader.u32(); + case 27: + return Number(this.reader.u64()); + case 31: + return -1; + } + throw 1 /* ERROR.UNEXPECTED_MINOR */; + } + readStrHdr() { + return this.readHdr(3 /* MAJOR.STR */); + } + readObjHdr() { + return this.readHdr(5 /* MAJOR.MAP */); + } + readArrHdr() { + return this.readHdr(4 /* MAJOR.ARR */); + } + findKey(key) { + const size = this.readObjHdr(); + for (let i = 0; i < size; i++) { + const k = this.key(); + if (k === key) + return this; + this.skipAny(); + } + throw 9 /* ERROR.KEY_NOT_FOUND */; + } + findIndex(index) { + const size = this.readArrHdr(); + if (index >= size) + throw 10 /* ERROR.INDEX_OUT_OF_BOUNDS */; + for (let i = 0; i < index; i++) + this.skipAny(); + return this; + } + find(path) { + for (let i = 0; i < path.length; i++) { + const segment = path[i]; + if (typeof segment === 'string') + this.findKey(segment); + else + this.findIndex(segment); + } + return this; + } + }; + CborDecoder.CborDecoder = CborDecoder$1; + + return CborDecoder; +} + +var async = {}; + +var hasRequiredAsync; + +function requireAsync () { + if (hasRequiredAsync) return async; + hasRequiredAsync = 1; + (function (exports$1) { + Object.defineProperty(exports$1, "__esModule", { value: true }); + exports$1.fromSnapshot = exports$1.toSnapshot = void 0; + const toSnapshot = async ({ fs, path = '/', separator = '/' }) => { + const stats = await fs.lstat(path); + if (stats.isDirectory()) { + const list = await fs.readdir(path); + const entries = {}; + const dir = path.endsWith(separator) ? path : path + separator; + const snapshots = await Promise.all(list.map(child => (0, exports$1.toSnapshot)({ fs, path: `${dir}${child}`, separator }))); + for (let i = 0; i < list.length; i++) { + if (snapshots[i]) + entries['' + list[i]] = snapshots[i]; + } + return [0 /* SnapshotNodeType.Folder */, {}, entries]; + } + else if (stats.isFile()) { + const buf = (await fs.readFile(path)); + const uint8 = new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength); + return [1 /* SnapshotNodeType.File */, {}, uint8]; + } + else if (stats.isSymbolicLink()) { + return [ + 2 /* SnapshotNodeType.Symlink */, + { + target: (await fs.readlink(path, { encoding: 'utf8' })), + }, + ]; + } + return null; + }; + exports$1.toSnapshot = toSnapshot; + const fromSnapshot = async (snapshot, { fs, path = '/', separator = '/' }) => { + if (!snapshot) + return; + switch (snapshot[0]) { + case 0 /* SnapshotNodeType.Folder */: { + if (!path.endsWith(separator)) + path = path + separator; + const [, , entries] = snapshot; + await fs.mkdir(path, { recursive: true }); + for (const [name, child] of Object.entries(entries)) + await (0, exports$1.fromSnapshot)(child, { fs, path: `${path}${name}`, separator }); + break; + } + case 1 /* SnapshotNodeType.File */: { + const [, , data] = snapshot; + await fs.writeFile(path, data); + break; + } + case 2 /* SnapshotNodeType.Symlink */: { + const [, { target }] = snapshot; + await fs.symlink(target, path); + break; + } + } + }; + exports$1.fromSnapshot = fromSnapshot; + + } (async)); + return async; +} + +var shared = {}; + +var hasRequiredShared; + +function requireShared () { + if (hasRequiredShared) return shared; + hasRequiredShared = 1; + Object.defineProperty(shared, "__esModule", { value: true }); + shared.writer = void 0; + const Writer_1 = requireWriter(); + shared.writer = new Writer_1.Writer(1024 * 32); + + return shared; +} + +var hasRequiredBinary; + +function requireBinary () { + if (hasRequiredBinary) return binary; + hasRequiredBinary = 1; + Object.defineProperty(binary, "__esModule", { value: true }); + binary.fromBinarySnapshot = binary.toBinarySnapshot = binary.fromBinarySnapshotSync = binary.toBinarySnapshotSync = void 0; + const CborEncoder_1 = requireCborEncoder(); + const CborDecoder_1 = requireCborDecoder(); + const sync_1 = requireSync(); + const async_1 = requireAsync(); + const shared_1 = requireShared(); + const encoder = new CborEncoder_1.CborEncoder(shared_1.writer); + const decoder = new CborDecoder_1.CborDecoder(); + const toBinarySnapshotSync = (options) => { + const snapshot = (0, sync_1.toSnapshotSync)(options); + return encoder.encode(snapshot); + }; + binary.toBinarySnapshotSync = toBinarySnapshotSync; + const fromBinarySnapshotSync = (uint8, options) => { + const snapshot = decoder.decode(uint8); + (0, sync_1.fromSnapshotSync)(snapshot, options); + }; + binary.fromBinarySnapshotSync = fromBinarySnapshotSync; + const toBinarySnapshot = async (options) => { + const snapshot = await (0, async_1.toSnapshot)(options); + return encoder.encode(snapshot); + }; + binary.toBinarySnapshot = toBinarySnapshot; + const fromBinarySnapshot = async (uint8, options) => { + const snapshot = decoder.decode(uint8); + await (0, async_1.fromSnapshot)(snapshot, options); + }; + binary.fromBinarySnapshot = fromBinarySnapshot; + + return binary; +} + +var json = {}; + +var JsonEncoder = {}; + +var toBase64Bin = {}; + +var createToBase64Bin = {}; + +var constants = {}; + +var hasRequiredConstants; + +function requireConstants () { + if (hasRequiredConstants) return constants; + hasRequiredConstants = 1; + Object.defineProperty(constants, "__esModule", { value: true }); + constants.hasBuffer = constants.alphabet = void 0; + constants.alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + constants.hasBuffer = typeof Buffer === 'function' && typeof Buffer.from === 'function'; + + return constants; +} + +var hasRequiredCreateToBase64Bin; + +function requireCreateToBase64Bin () { + if (hasRequiredCreateToBase64Bin) return createToBase64Bin; + hasRequiredCreateToBase64Bin = 1; + Object.defineProperty(createToBase64Bin, "__esModule", { value: true }); + createToBase64Bin.createToBase64Bin = void 0; + const constants_1 = requireConstants(); + const createToBase64Bin$1 = (chars = constants_1.alphabet, pad = '=') => { + if (chars.length !== 64) + throw new Error('chars must be 64 characters long'); + const table = chars.split('').map((c) => c.charCodeAt(0)); + const table2 = []; + for (const c1 of table) { + for (const c2 of table) { + const two = (c1 << 8) + c2; + table2.push(two); + } + } + const doAddPadding = pad.length === 1; + const E = doAddPadding ? pad.charCodeAt(0) : 0; + const EE = doAddPadding ? (E << 8) | E : 0; + return (uint8, start, length, dest, offset) => { + const extraLength = length % 3; + const baseLength = length - extraLength; + for (; start < baseLength; start += 3) { + const o1 = uint8[start]; + const o2 = uint8[start + 1]; + const o3 = uint8[start + 2]; + const v1 = (o1 << 4) | (o2 >> 4); + const v2 = ((o2 & 0b1111) << 8) | o3; + dest.setInt32(offset, (table2[v1] << 16) + table2[v2]); + offset += 4; + } + if (extraLength === 1) { + const o1 = uint8[baseLength]; + if (doAddPadding) { + dest.setInt32(offset, (table2[o1 << 4] << 16) + EE); + offset += 4; + } + else { + dest.setInt16(offset, table2[o1 << 4]); + offset += 2; + } + } + else if (extraLength) { + const o1 = uint8[baseLength]; + const o2 = uint8[baseLength + 1]; + const v1 = (o1 << 4) | (o2 >> 4); + const v2 = (o2 & 0b1111) << 2; + if (doAddPadding) { + dest.setInt32(offset, (table2[v1] << 16) + (table[v2] << 8) + E); + offset += 4; + } + else { + dest.setInt16(offset, table2[v1]); + offset += 2; + dest.setInt8(offset, table[v2]); + offset += 1; + } + } + return offset; + }; + }; + createToBase64Bin.createToBase64Bin = createToBase64Bin$1; + + return createToBase64Bin; +} + +var hasRequiredToBase64Bin; + +function requireToBase64Bin () { + if (hasRequiredToBase64Bin) return toBase64Bin; + hasRequiredToBase64Bin = 1; + Object.defineProperty(toBase64Bin, "__esModule", { value: true }); + toBase64Bin.toBase64Bin = void 0; + const createToBase64Bin_1 = requireCreateToBase64Bin(); + toBase64Bin.toBase64Bin = (0, createToBase64Bin_1.createToBase64Bin)(); + + return toBase64Bin; +} + +var hasRequiredJsonEncoder; + +function requireJsonEncoder () { + if (hasRequiredJsonEncoder) return JsonEncoder; + hasRequiredJsonEncoder = 1; + Object.defineProperty(JsonEncoder, "__esModule", { value: true }); + JsonEncoder.JsonEncoder = void 0; + const toBase64Bin_1 = requireToBase64Bin(); + let JsonEncoder$1 = class JsonEncoder { + constructor(writer) { + this.writer = writer; + } + encode(value) { + const writer = this.writer; + writer.reset(); + this.writeAny(value); + return writer.flush(); + } + /** + * Called when the encoder encounters a value that it does not know how to encode. + * + * @param value Some JavaScript value. + */ + writeUnknown(value) { + this.writeNull(); + } + writeAny(value) { + switch (typeof value) { + case 'boolean': + return this.writeBoolean(value); + case 'number': + return this.writeNumber(value); + case 'string': + return this.writeStr(value); + case 'object': { + if (value === null) + return this.writeNull(); + const constr = value.constructor; + switch (constr) { + case Object: + return this.writeObj(value); + case Array: + return this.writeArr(value); + case Uint8Array: + return this.writeBin(value); + default: + if (value instanceof Uint8Array) + return this.writeBin(value); + if (Array.isArray(value)) + return this.writeArr(value); + return this.writeUnknown(value); + } + } + case 'undefined': { + return this.writeUndef(); + } + default: + return this.writeUnknown(value); + } + } + writeNull() { + this.writer.u32(0x6e756c6c); // null + } + writeUndef() { + const writer = this.writer; + const length = 35; + writer.ensureCapacity(length); + // Write: "data:application/cbor,base64;9w==" + const view = writer.view; + let x = writer.x; + view.setUint32(x, 577003892); // "dat + x += 4; + view.setUint32(x, 1631215984); // a:ap + x += 4; + view.setUint32(x, 1886153059); // plic + x += 4; + view.setUint32(x, 1635019119); // atio + x += 4; + view.setUint32(x, 1848599394); // n/cb + x += 4; + view.setUint32(x, 1869753442); // or,b + x += 4; + view.setUint32(x, 1634952502); // ase6 + x += 4; + view.setUint32(x, 876296567); // 4;9w + x += 4; + view.setUint16(x, 15677); // == + x += 2; + writer.uint8[x++] = 0x22; // " + writer.x = x; + } + writeBoolean(bool) { + if (bool) + this.writer.u32(0x74727565); // true + else + this.writer.u8u32(0x66, 0x616c7365); // false + } + writeNumber(num) { + const str = num.toString(); + this.writer.ascii(str); + } + writeInteger(int) { + this.writeNumber(int >> 0 === int ? int : Math.trunc(int)); + } + writeUInteger(uint) { + this.writeInteger(uint < 0 ? -uint : uint); + } + writeFloat(float) { + this.writeNumber(float); + } + writeBin(buf) { + const writer = this.writer; + const length = buf.length; + writer.ensureCapacity(38 + 3 + (length << 1)); + // Write: "data:application/octet-stream;base64, - 22 64 61 74 61 3a 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6f 63 74 65 74 2d 73 74 72 65 61 6d 3b 62 61 73 65 36 34 2c + const view = writer.view; + let x = writer.x; + view.setUint32(x, 577003892); // "dat + x += 4; + view.setUint32(x, 1631215984); // a:ap + x += 4; + view.setUint32(x, 1886153059); // plic + x += 4; + view.setUint32(x, 1635019119); // atio + x += 4; + view.setUint32(x, 1848602467); // n/oc + x += 4; + view.setUint32(x, 1952805933); // tet- + x += 4; + view.setUint32(x, 1937011301); // stre + x += 4; + view.setUint32(x, 1634548578); // am;b + x += 4; + view.setUint32(x, 1634952502); // ase6 + x += 4; + view.setUint16(x, 13356); // 4, + x += 2; + x = (0, toBase64Bin_1.toBase64Bin)(buf, 0, length, view, x); + writer.uint8[x++] = 0x22; // " + writer.x = x; + } + writeStr(str) { + const writer = this.writer; + const length = str.length; + writer.ensureCapacity(length * 4 + 2); + if (length < 256) { + const startX = writer.x; + let x = startX; + const uint8 = writer.uint8; + uint8[x++] = 0x22; // " + for (let i = 0; i < length; i++) { + const code = str.charCodeAt(i); + switch (code) { + case 34: // " + case 92: // \ + uint8[x++] = 0x5c; // \ + break; + } + if (code < 32 || code > 126) { + writer.x = startX; + const jsonStr = JSON.stringify(str); + writer.ensureCapacity(jsonStr.length * 4 + 4); + writer.utf8(jsonStr); + return; + } + else + uint8[x++] = code; + } + uint8[x++] = 0x22; // " + writer.x = x; + return; + } + const jsonStr = JSON.stringify(str); + writer.ensureCapacity(jsonStr.length * 4 + 4); + writer.utf8(jsonStr); + } + writeAsciiStr(str) { + const length = str.length; + const writer = this.writer; + writer.ensureCapacity(length * 2 + 2); + const uint8 = writer.uint8; + let x = writer.x; + uint8[x++] = 0x22; // " + for (let i = 0; i < length; i++) { + const code = str.charCodeAt(i); + switch (code) { + case 34: // " + case 92: // \ + uint8[x++] = 0x5c; // \ + break; + } + uint8[x++] = code; + } + uint8[x++] = 0x22; // " + writer.x = x; + } + writeArr(arr) { + const writer = this.writer; + writer.u8(0x5b); // [ + const length = arr.length; + const last = length - 1; + for (let i = 0; i < last; i++) { + this.writeAny(arr[i]); + writer.u8(0x2c); // , + } + if (last >= 0) + this.writeAny(arr[last]); + writer.u8(0x5d); // ] + } + writeArrSeparator() { + this.writer.u8(0x2c); // , + } + writeObj(obj) { + const writer = this.writer; + const keys = Object.keys(obj); + const length = keys.length; + if (!length) + return writer.u16(0x7b7d); // {} + writer.u8(0x7b); // { + for (let i = 0; i < length; i++) { + const key = keys[i]; + const value = obj[key]; + this.writeStr(key); + writer.u8(0x3a); // : + this.writeAny(value); + writer.u8(0x2c); // , + } + writer.uint8[writer.x - 1] = 0x7d; // } + } + writeObjSeparator() { + this.writer.u8(0x2c); // , + } + writeObjKeySeparator() { + this.writer.u8(0x3a); // : + } + // ------------------------------------------------------- Streaming encoding + writeStartStr() { + throw new Error('Method not implemented.'); + } + writeStrChunk(str) { + throw new Error('Method not implemented.'); + } + writeEndStr() { + throw new Error('Method not implemented.'); + } + writeStartBin() { + throw new Error('Method not implemented.'); + } + writeBinChunk(buf) { + throw new Error('Method not implemented.'); + } + writeEndBin() { + throw new Error('Method not implemented.'); + } + writeStartArr() { + this.writer.u8(0x5b); // [ + } + writeArrChunk(item) { + throw new Error('Method not implemented.'); + } + writeEndArr() { + this.writer.u8(0x5d); // ] + } + writeStartObj() { + this.writer.u8(0x7b); // { + } + writeObjChunk(key, value) { + throw new Error('Method not implemented.'); + } + writeEndObj() { + this.writer.u8(0x7d); // } + } + }; + JsonEncoder.JsonEncoder = JsonEncoder$1; + + return JsonEncoder; +} + +var JsonDecoder = {}; + +var fromBase64Bin = {}; + +var createFromBase64Bin = {}; + +var hasRequiredCreateFromBase64Bin; + +function requireCreateFromBase64Bin () { + if (hasRequiredCreateFromBase64Bin) return createFromBase64Bin; + hasRequiredCreateFromBase64Bin = 1; + Object.defineProperty(createFromBase64Bin, "__esModule", { value: true }); + createFromBase64Bin.createFromBase64Bin = void 0; + const constants_1 = requireConstants(); + const createFromBase64Bin$1 = (chars = constants_1.alphabet, pad = '=') => { + if (chars.length !== 64) + throw new Error('chars must be 64 characters long'); + let max = 0; + for (let i = 0; i < chars.length; i++) + max = Math.max(max, chars.charCodeAt(i)); + const table = []; + for (let i = 0; i <= max; i += 1) + table[i] = -1; + for (let i = 0; i < chars.length; i++) + table[chars.charCodeAt(i)] = i; + const doExpectPadding = pad.length === 1; + const PAD = doExpectPadding ? pad.charCodeAt(0) : 0; + return (view, offset, length) => { + if (!length) + return new Uint8Array(0); + let padding = 0; + if (length % 4 !== 0) { + padding = 4 - (length % 4); + length += padding; + } + else { + const end = offset + length; + const last = end - 1; + if (view.getUint8(last) === PAD) { + padding = 1; + if (length > 1 && view.getUint8(last - 1) === PAD) + padding = 2; + } + } + if (length % 4 !== 0) + throw new Error('Base64 string length must be a multiple of 4'); + const mainEnd = offset + length - (padding ? 4 : 0); + const bufferLength = (length >> 2) * 3 - padding; + const buf = new Uint8Array(bufferLength); + let j = 0; + let i = offset; + for (; i < mainEnd; i += 4) { + const word = view.getUint32(i); + const octet0 = word >>> 24; + const octet1 = (word >>> 16) & 0xff; + const octet2 = (word >>> 8) & 0xff; + const octet3 = word & 0xff; + const sextet0 = table[octet0]; + const sextet1 = table[octet1]; + const sextet2 = table[octet2]; + const sextet3 = table[octet3]; + if (sextet0 < 0 || sextet1 < 0 || sextet2 < 0 || sextet3 < 0) + throw new Error('INVALID_BASE64_SEQ'); + buf[j] = (sextet0 << 2) | (sextet1 >> 4); + buf[j + 1] = (sextet1 << 4) | (sextet2 >> 2); + buf[j + 2] = (sextet2 << 6) | sextet3; + j += 3; + } + if (!padding) + return buf; + if (padding === 1) { + const word = view.getUint16(mainEnd); + const octet0 = word >> 8; + const octet1 = word & 0xff; + const octet2 = view.getUint8(mainEnd + 2); + const sextet0 = table[octet0]; + const sextet1 = table[octet1]; + const sextet2 = table[octet2]; + if (sextet0 < 0 || sextet1 < 0 || sextet2 < 0) + throw new Error('INVALID_BASE64_SEQ'); + buf[j] = (sextet0 << 2) | (sextet1 >> 4); + buf[j + 1] = (sextet1 << 4) | (sextet2 >> 2); + return buf; + } + const word = view.getUint16(mainEnd); + const octet0 = word >> 8; + const octet1 = word & 0xff; + const sextet0 = table[octet0]; + const sextet1 = table[octet1]; + if (sextet0 < 0 || sextet1 < 0) + throw new Error('INVALID_BASE64_SEQ'); + buf[j] = (sextet0 << 2) | (sextet1 >> 4); + return buf; + }; + }; + createFromBase64Bin.createFromBase64Bin = createFromBase64Bin$1; + + return createFromBase64Bin; +} + +var hasRequiredFromBase64Bin; + +function requireFromBase64Bin () { + if (hasRequiredFromBase64Bin) return fromBase64Bin; + hasRequiredFromBase64Bin = 1; + Object.defineProperty(fromBase64Bin, "__esModule", { value: true }); + fromBase64Bin.fromBase64Bin = void 0; + const createFromBase64Bin_1 = requireCreateFromBase64Bin(); + fromBase64Bin.fromBase64Bin = (0, createFromBase64Bin_1.createFromBase64Bin)(); + + return fromBase64Bin; +} + +var util = {}; + +var hasRequiredUtil; + +function requireUtil () { + if (hasRequiredUtil) return util; + hasRequiredUtil = 1; + Object.defineProperty(util, "__esModule", { value: true }); + util.findEndingQuote = void 0; + const findEndingQuote = (uint8, x) => { + const len = uint8.length; + let char = uint8[x]; + let prev = 0; + while (x < len) { + if (char === 34 && prev !== 92) + break; + if (char === 92 && prev === 92) + prev = 0; + else + prev = char; + char = uint8[++x]; + } + if (x === len) + throw new Error('Invalid JSON'); + return x; + }; + util.findEndingQuote = findEndingQuote; + + return util; +} + +var hasRequiredJsonDecoder; + +function requireJsonDecoder () { + if (hasRequiredJsonDecoder) return JsonDecoder; + hasRequiredJsonDecoder = 1; + (function (exports$1) { + Object.defineProperty(exports$1, "__esModule", { value: true }); + exports$1.JsonDecoder = exports$1.readKey = void 0; + const decodeUtf8_1 = requireDecodeUtf8(); + const Reader_1 = requireReader(); + const fromBase64Bin_1 = requireFromBase64Bin(); + const util_1 = requireUtil(); + const REGEX_REPLACE_ESCAPED_CHARS = /\\(b|f|n|r|t|"|\/|\\)/g; + const escapedCharReplacer = (char) => { + switch (char) { + case '\\b': + return '\b'; + case '\\f': + return '\f'; + case '\\n': + return '\n'; + case '\\r': + return '\r'; + case '\\t': + return '\t'; + case '\\"': + return '"'; + case '\\/': + return '/'; + case '\\\\': + return '\\'; + } + return char; + }; + // Starts with data:application/octet-stream;base64, - 64 61 74 61 3a 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6f 63 74 65 74 2d 73 74 72 65 61 6d 3b 62 61 73 65 36 34 2c + const hasBinaryPrefix = (u8, x) => u8[x] === 0x64 && + u8[x + 1] === 0x61 && + u8[x + 2] === 0x74 && + u8[x + 3] === 0x61 && + u8[x + 4] === 0x3a && + u8[x + 5] === 0x61 && + u8[x + 6] === 0x70 && + u8[x + 7] === 0x70 && + u8[x + 8] === 0x6c && + u8[x + 9] === 0x69 && + u8[x + 10] === 0x63 && + u8[x + 11] === 0x61 && + u8[x + 12] === 0x74 && + u8[x + 13] === 0x69 && + u8[x + 14] === 0x6f && + u8[x + 15] === 0x6e && + u8[x + 16] === 0x2f && + u8[x + 17] === 0x6f && + u8[x + 18] === 0x63 && + u8[x + 19] === 0x74 && + u8[x + 20] === 0x65 && + u8[x + 21] === 0x74 && + u8[x + 22] === 0x2d && + u8[x + 23] === 0x73 && + u8[x + 24] === 0x74 && + u8[x + 25] === 0x72 && + u8[x + 26] === 0x65 && + u8[x + 27] === 0x61 && + u8[x + 28] === 0x6d && + u8[x + 29] === 0x3b && + u8[x + 30] === 0x62 && + u8[x + 31] === 0x61 && + u8[x + 32] === 0x73 && + u8[x + 33] === 0x65 && + u8[x + 34] === 0x36 && + u8[x + 35] === 0x34 && + u8[x + 36] === 0x2c; + // Matches "data:application/cbor,base64;9w==" + const isUndefined = (u8, x) => + // u8[x++] === 0x22 && // " + // u8[x++] === 0x64 && // d + u8[x++] === 0x61 && // a + u8[x++] === 0x74 && // t + u8[x++] === 0x61 && // a + u8[x++] === 0x3a && // : + u8[x++] === 0x61 && // a + u8[x++] === 0x70 && // p + u8[x++] === 0x70 && // p + u8[x++] === 0x6c && // l + u8[x++] === 0x69 && // i + u8[x++] === 0x63 && // c + u8[x++] === 0x61 && // a + u8[x++] === 0x74 && // t + u8[x++] === 0x69 && // i + u8[x++] === 0x6f && // o + u8[x++] === 0x6e && // n + u8[x++] === 0x2f && // / + u8[x++] === 0x63 && // c + u8[x++] === 0x62 && // b + u8[x++] === 0x6f && // o + u8[x++] === 0x72 && // r + u8[x++] === 0x2c && // , + u8[x++] === 0x62 && // b + u8[x++] === 0x61 && // a + u8[x++] === 0x73 && // s + u8[x++] === 0x65 && // e + u8[x++] === 0x36 && // 6 + u8[x++] === 0x34 && // 4 + u8[x++] === 0x3b && // ; + u8[x++] === 0x39 && // 9 + u8[x++] === 0x77 && // w + u8[x++] === 0x3d && // = + u8[x++] === 0x3d && // = + u8[x++] === 0x22; // " + const fromCharCode = String.fromCharCode; + const readKey = (reader) => { + const buf = reader.uint8; + const len = buf.length; + const points = []; + let x = reader.x; + let prev = 0; + while (x < len) { + let code = buf[x++]; + if ((code & 0x80) === 0) { + if (prev === 92) { + switch (code) { + case 98: // \b + code = 8; + break; + case 102: // \f + code = 12; + break; + case 110: // \n + code = 10; + break; + case 114: // \r + code = 13; + break; + case 116: // \t + code = 9; + break; + case 34: // \" + code = 34; + break; + case 47: // \/ + code = 47; + break; + case 92: // \\ + code = 92; + break; + default: + throw new Error('Invalid JSON'); + } + prev = 0; + } + else { + if (code === 34) + break; + prev = code; + if (prev === 92) + continue; + } + } + else { + const octet2 = buf[x++] & 0x3f; + if ((code & 0xe0) === 0xc0) { + code = ((code & 0x1f) << 6) | octet2; + } + else { + const octet3 = buf[x++] & 0x3f; + if ((code & 0xf0) === 0xe0) { + code = ((code & 0x1f) << 12) | (octet2 << 6) | octet3; + } + else { + if ((code & 0xf8) === 0xf0) { + const octet4 = buf[x++] & 0x3f; + let unit = ((code & 0x07) << 0x12) | (octet2 << 0x0c) | (octet3 << 0x06) | octet4; + if (unit > 0xffff) { + unit -= 0x10000; + const unit0 = ((unit >>> 10) & 0x3ff) | 0xd800; + unit = 0xdc00 | (unit & 0x3ff); + points.push(unit0); + code = unit; + } + else { + code = unit; + } + } + } + } + } + points.push(code); + } + reader.x = x; + return fromCharCode.apply(String, points); + }; + exports$1.readKey = readKey; + class JsonDecoder { + constructor() { + this.reader = new Reader_1.Reader(); + } + read(uint8) { + this.reader.reset(uint8); + return this.readAny(); + } + decode(uint8) { + this.reader.reset(uint8); + return this.readAny(); + } + readAny() { + this.skipWhitespace(); + const reader = this.reader; + const x = reader.x; + const uint8 = reader.uint8; + const char = uint8[x]; + switch (char) { + case 34 /* " */: { + if (uint8[x + 1] === 0x64 /* d */) { + const bin = this.tryReadBin(); + if (bin) + return bin; + if (isUndefined(uint8, x + 2)) { + reader.x = x + 35; + return undefined; + } + } + return this.readStr(); + } + case 91 /* [ */: + return this.readArr(); + case 102 /* f */: + return this.readFalse(); + case 110 /* n */: + return this.readNull(); + case 116 /* t */: + return this.readTrue(); + case 123 /* { */: + return this.readObj(); + default: + if ((char >= 48 /* 0 */ && char <= 57) /* 9 */ || char === 45 /* - */) + return this.readNum(); + throw new Error('Invalid JSON'); + } + } + skipWhitespace() { + const reader = this.reader; + const uint8 = reader.uint8; + let x = reader.x; + let char = 0; + while (true) { + char = uint8[x]; + switch (char) { + case 32 /* */: + case 9 /* */: + case 10 /* */: + case 13 /* */: + x++; + continue; + default: + reader.x = x; + return; + } + } + } + readNull() { + if (this.reader.u32() !== 0x6e756c6c /* null */) + throw new Error('Invalid JSON'); + return null; + } + readTrue() { + if (this.reader.u32() !== 0x74727565 /* true */) + throw new Error('Invalid JSON'); + return true; + } + readFalse() { + const reader = this.reader; + if (reader.u8() !== 0x66 /* f */ || reader.u32() !== 0x616c7365 /* alse */) + throw new Error('Invalid JSON'); + return false; + } + readBool() { + const reader = this.reader; + switch (reader.uint8[reader.x]) { + case 102 /* f */: + return this.readFalse(); + case 116 /* t */: + return this.readTrue(); + default: + throw new Error('Invalid JSON'); + } + } + readNum() { + const reader = this.reader; + const uint8 = reader.uint8; + let x = reader.x; + let c = uint8[x++]; + const c1 = c; + c = uint8[x++]; + if (!c || ((c < 45 || c > 57) && c !== 43 && c !== 69 && c !== 101)) { + reader.x = x - 1; + const num = +fromCharCode(c1); + if (num !== num) + throw new Error('Invalid JSON'); + return num; + } + const c2 = c; + c = uint8[x++]; + if (!c || ((c < 45 || c > 57) && c !== 43 && c !== 69 && c !== 101)) { + reader.x = x - 1; + const num = +fromCharCode(c1, c2); + if (num !== num) + throw new Error('Invalid JSON'); + return num; + } + const c3 = c; + c = uint8[x++]; + if (!c || ((c < 45 || c > 57) && c !== 43 && c !== 69 && c !== 101)) { + reader.x = x - 1; + const num = +fromCharCode(c1, c2, c3); + if (num !== num) + throw new Error('Invalid JSON'); + return num; + } + const c4 = c; + c = uint8[x++]; + if (!c || ((c < 45 || c > 57) && c !== 43 && c !== 69 && c !== 101)) { + reader.x = x - 1; + const num = +fromCharCode(c1, c2, c3, c4); + if (num !== num) + throw new Error('Invalid JSON'); + return num; + } + const c5 = c; + c = uint8[x++]; + if (!c || ((c < 45 || c > 57) && c !== 43 && c !== 69 && c !== 101)) { + reader.x = x - 1; + const num = +fromCharCode(c1, c2, c3, c4, c5); + if (num !== num) + throw new Error('Invalid JSON'); + return num; + } + const c6 = c; + c = uint8[x++]; + if (!c || ((c < 45 || c > 57) && c !== 43 && c !== 69 && c !== 101)) { + reader.x = x - 1; + const num = +fromCharCode(c1, c2, c3, c4, c5, c6); + if (num !== num) + throw new Error('Invalid JSON'); + return num; + } + const c7 = c; + c = uint8[x++]; + if (!c || ((c < 45 || c > 57) && c !== 43 && c !== 69 && c !== 101)) { + reader.x = x - 1; + const num = +fromCharCode(c1, c2, c3, c4, c5, c6, c7); + if (num !== num) + throw new Error('Invalid JSON'); + return num; + } + const c8 = c; + c = uint8[x++]; + if (!c || ((c < 45 || c > 57) && c !== 43 && c !== 69 && c !== 101)) { + reader.x = x - 1; + const num = +fromCharCode(c1, c2, c3, c4, c5, c6, c7, c8); + if (num !== num) + throw new Error('Invalid JSON'); + return num; + } + const c9 = c; + c = uint8[x++]; + if (!c || ((c < 45 || c > 57) && c !== 43 && c !== 69 && c !== 101)) { + reader.x = x - 1; + const num = +fromCharCode(c1, c2, c3, c4, c5, c6, c7, c8, c9); + if (num !== num) + throw new Error('Invalid JSON'); + return num; + } + const c10 = c; + c = uint8[x++]; + if (!c || ((c < 45 || c > 57) && c !== 43 && c !== 69 && c !== 101)) { + reader.x = x - 1; + const num = +fromCharCode(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10); + if (num !== num) + throw new Error('Invalid JSON'); + return num; + } + const c11 = c; + c = uint8[x++]; + if (!c || ((c < 45 || c > 57) && c !== 43 && c !== 69 && c !== 101)) { + reader.x = x - 1; + const num = +fromCharCode(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11); + if (num !== num) + throw new Error('Invalid JSON'); + return num; + } + const c12 = c; + c = uint8[x++]; + if (!c || ((c < 45 || c > 57) && c !== 43 && c !== 69 && c !== 101)) { + reader.x = x - 1; + const num = +fromCharCode(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12); + if (num !== num) + throw new Error('Invalid JSON'); + return num; + } + const c13 = c; + c = uint8[x++]; + if (!c || ((c < 45 || c > 57) && c !== 43 && c !== 69 && c !== 101)) { + reader.x = x - 1; + const num = +fromCharCode(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13); + if (num !== num) + throw new Error('Invalid JSON'); + return num; + } + const c14 = c; + c = uint8[x++]; + if (!c || ((c < 45 || c > 57) && c !== 43 && c !== 69 && c !== 101)) { + reader.x = x - 1; + const num = +fromCharCode(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14); + if (num !== num) + throw new Error('Invalid JSON'); + return num; + } + const c15 = c; + c = uint8[x++]; + if (!c || ((c < 45 || c > 57) && c !== 43 && c !== 69 && c !== 101)) { + reader.x = x - 1; + const num = +fromCharCode(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15); + if (num !== num) + throw new Error('Invalid JSON'); + return num; + } + const c16 = c; + c = uint8[x++]; + if (!c || ((c < 45 || c > 57) && c !== 43 && c !== 69 && c !== 101)) { + reader.x = x - 1; + const num = +fromCharCode(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16); + if (num !== num) + throw new Error('Invalid JSON'); + return num; + } + const c17 = c; + c = uint8[x++]; + if (!c || ((c < 45 || c > 57) && c !== 43 && c !== 69 && c !== 101)) { + reader.x = x - 1; + const num = +fromCharCode(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17); + if (num !== num) + throw new Error('Invalid JSON'); + return num; + } + const c18 = c; + c = uint8[x++]; + if (!c || ((c < 45 || c > 57) && c !== 43 && c !== 69 && c !== 101)) { + reader.x = x - 1; + const num = +fromCharCode(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18); + if (num !== num) + throw new Error('Invalid JSON'); + return num; + } + const c19 = c; + c = uint8[x++]; + if (!c || ((c < 45 || c > 57) && c !== 43 && c !== 69 && c !== 101)) { + reader.x = x - 1; + const num = +fromCharCode(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19); + if (num !== num) + throw new Error('Invalid JSON'); + return num; + } + const c20 = c; + c = uint8[x++]; + if (!c || ((c < 45 || c > 57) && c !== 43 && c !== 69 && c !== 101)) { + reader.x = x - 1; + const num = +fromCharCode(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20); + if (num !== num) + throw new Error('Invalid JSON'); + return num; + } + const c21 = c; + c = uint8[x++]; + if (!c || ((c < 45 || c > 57) && c !== 43 && c !== 69 && c !== 101)) { + reader.x = x - 1; + const num = +fromCharCode(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21); + if (num !== num) + throw new Error('Invalid JSON'); + return num; + } + const c22 = c; + c = uint8[x++]; + if (!c || ((c < 45 || c > 57) && c !== 43 && c !== 69 && c !== 101)) { + reader.x = x - 1; + const num = +fromCharCode(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22); + if (num !== num) + throw new Error('Invalid JSON'); + return num; + } + const c23 = c; + c = uint8[x++]; + if (!c || ((c < 45 || c > 57) && c !== 43 && c !== 69 && c !== 101)) { + reader.x = x - 1; + const num = +fromCharCode(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23); + if (num !== num) + throw new Error('Invalid JSON'); + return num; + } + const c24 = c; + c = uint8[x++]; + if (!c || ((c < 45 || c > 57) && c !== 43 && c !== 69 && c !== 101)) { + reader.x = x - 1; + const num = +fromCharCode(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24); + if (num !== num) + throw new Error('Invalid JSON'); + return num; + } + throw new Error('Invalid JSON'); + } + readStr() { + const reader = this.reader; + const uint8 = reader.uint8; + const char = uint8[reader.x++]; + if (char !== 0x22) + throw new Error('Invalid JSON'); + const x0 = reader.x; + const x1 = (0, util_1.findEndingQuote)(uint8, x0); + let str = (0, decodeUtf8_1.decodeUtf8)(uint8, x0, x1 - x0); + /** @todo perf: maybe faster is to first check if there are any escaped chars. */ + str = str.replace(REGEX_REPLACE_ESCAPED_CHARS, escapedCharReplacer); + reader.x = x1 + 1; + return str; + } + tryReadBin() { + const reader = this.reader; + const u8 = reader.uint8; + let x = reader.x; + if (u8[x++] !== 0x22) + return undefined; + const hasDataUrlPrefix = hasBinaryPrefix(u8, x); + if (!hasDataUrlPrefix) + return undefined; + x += 37; + const x0 = x; + x = (0, util_1.findEndingQuote)(u8, x); + reader.x = x0; + const bin = (0, fromBase64Bin_1.fromBase64Bin)(reader.view, x0, x - x0); + reader.x = x + 1; + return bin; + } + readBin() { + const reader = this.reader; + const u8 = reader.uint8; + let x = reader.x; + if (u8[x++] !== 0x22) + throw new Error('Invalid JSON'); + const hasDataUrlPrefix = hasBinaryPrefix(u8, x); + if (!hasDataUrlPrefix) + throw new Error('Invalid JSON'); + x += 37; + const x0 = x; + x = (0, util_1.findEndingQuote)(u8, x); + reader.x = x0; + const bin = (0, fromBase64Bin_1.fromBase64Bin)(reader.view, x0, x - x0); + reader.x = x + 1; + return bin; + } + readArr() { + const reader = this.reader; + if (reader.u8() !== 0x5b /* [ */) + throw new Error('Invalid JSON'); + const arr = []; + const uint8 = reader.uint8; + let first = true; + while (true) { + this.skipWhitespace(); + const char = uint8[reader.x]; + if (char === 0x5d /* ] */) + return reader.x++, arr; + if (char === 0x2c /* , */) + reader.x++; + else if (!first) + throw new Error('Invalid JSON'); + this.skipWhitespace(); + arr.push(this.readAny()); + first = false; + } + } + readObj() { + const reader = this.reader; + if (reader.u8() !== 0x7b /* { */) + throw new Error('Invalid JSON'); + const obj = {}; + const uint8 = reader.uint8; + let first = true; + while (true) { + this.skipWhitespace(); + let char = uint8[reader.x]; + if (char === 0x7d /* } */) + return reader.x++, obj; + if (char === 0x2c /* , */) + reader.x++; + else if (!first) + throw new Error('Invalid JSON'); + this.skipWhitespace(); + char = uint8[reader.x++]; + if (char !== 0x22 /* " */) + throw new Error('Invalid JSON'); + const key = (0, exports$1.readKey)(reader); + if (key === '__proto__') + throw new Error('Invalid JSON'); + this.skipWhitespace(); + if (reader.u8() !== 0x3a /* : */) + throw new Error('Invalid JSON'); + this.skipWhitespace(); + obj[key] = this.readAny(); + first = false; + } + } + } + exports$1.JsonDecoder = JsonDecoder; + + } (JsonDecoder)); + return JsonDecoder; +} + +var hasRequiredJson; + +function requireJson () { + if (hasRequiredJson) return json; + hasRequiredJson = 1; + Object.defineProperty(json, "__esModule", { value: true }); + json.fromJsonSnapshot = json.toJsonSnapshot = json.fromJsonSnapshotSync = json.toJsonSnapshotSync = void 0; + const JsonEncoder_1 = requireJsonEncoder(); + const JsonDecoder_1 = requireJsonDecoder(); + const sync_1 = requireSync(); + const async_1 = requireAsync(); + const shared_1 = requireShared(); + const encoder = new JsonEncoder_1.JsonEncoder(shared_1.writer); + const decoder = new JsonDecoder_1.JsonDecoder(); + const toJsonSnapshotSync = (options) => { + const snapshot = (0, sync_1.toSnapshotSync)(options); + return encoder.encode(snapshot); + }; + json.toJsonSnapshotSync = toJsonSnapshotSync; + const fromJsonSnapshotSync = (uint8, options) => { + const snapshot = decoder.read(uint8); + (0, sync_1.fromSnapshotSync)(snapshot, options); + }; + json.fromJsonSnapshotSync = fromJsonSnapshotSync; + const toJsonSnapshot = async (options) => { + const snapshot = await (0, async_1.toSnapshot)(options); + return encoder.encode(snapshot); + }; + json.toJsonSnapshot = toJsonSnapshot; + const fromJsonSnapshot = async (uint8, options) => { + const snapshot = decoder.read(uint8); + await (0, async_1.fromSnapshot)(snapshot, options); + }; + json.fromJsonSnapshot = fromJsonSnapshot; + + return json; +} + +var hasRequiredLib$3; + +function requireLib$3 () { + if (hasRequiredLib$3) return lib$1; + hasRequiredLib$3 = 1; + (function (exports$1) { + Object.defineProperty(exports$1, "__esModule", { value: true }); + const tslib_1 = require$$0$2; + tslib_1.__exportStar(requireConstants$1(), exports$1); + tslib_1.__exportStar(requireSync(), exports$1); + tslib_1.__exportStar(requireBinary(), exports$1); + tslib_1.__exportStar(requireJson(), exports$1); + + } (lib$1)); + return lib$1; +} + +var options = {}; + +var hasRequiredOptions; + +function requireOptions () { + if (hasRequiredOptions) return options; + hasRequiredOptions = 1; + (function (exports$1) { + Object.defineProperty(exports$1, "__esModule", { value: true }); + exports$1.getWriteFileOptions = exports$1.writeFileDefaults = exports$1.getRealpathOptsAndCb = exports$1.getRealpathOptions = exports$1.getStatfsOptsAndCb = exports$1.getStatfsOptions = exports$1.getStatOptsAndCb = exports$1.getStatOptions = exports$1.getAppendFileOptsAndCb = exports$1.getAppendFileOpts = exports$1.getOpendirOptsAndCb = exports$1.getOpendirOptions = exports$1.getReaddirOptsAndCb = exports$1.getReaddirOptions = exports$1.getReadFileOptions = exports$1.getRmOptsAndCb = exports$1.getRmdirOptions = exports$1.getDefaultOptsAndCb = exports$1.getDefaultOpts = exports$1.optsDefaults = exports$1.getMkdirOptions = void 0; + exports$1.getOptions = getOptions; + exports$1.optsGenerator = optsGenerator; + exports$1.optsAndCbGenerator = optsAndCbGenerator; + const fs_node_utils_1 = requireLib$8(); + const util_1 = requireUtil$1(); + const mkdirDefaults = { + mode: 511 /* MODE.DIR */, + recursive: false, + }; + const getMkdirOptions = (options) => { + if (typeof options === 'number') + return Object.assign({}, mkdirDefaults, { mode: options }); + return Object.assign({}, mkdirDefaults, options); + }; + exports$1.getMkdirOptions = getMkdirOptions; + const ERRSTR_OPTS = tipeof => `Expected options to be either an object or a string, but got ${tipeof} instead`; + function getOptions(defaults, options) { + let opts; + if (!options) + return defaults; + else { + const tipeof = typeof options; + switch (tipeof) { + case 'string': + opts = Object.assign({}, defaults, { encoding: options }); + break; + case 'object': + opts = Object.assign({}, defaults, options); + break; + default: + throw TypeError(ERRSTR_OPTS(tipeof)); + } + } + if (opts.encoding !== 'buffer') + (0, fs_node_utils_1.assertEncoding)(opts.encoding); + return opts; + } + function optsGenerator(defaults) { + return options => getOptions(defaults, options); + } + function optsAndCbGenerator(getOpts) { + return (options, callback) => typeof options === 'function' ? [getOpts(), options] : [getOpts(options), (0, util_1.validateCallback)(callback)]; + } + exports$1.optsDefaults = { + encoding: 'utf8', + }; + exports$1.getDefaultOpts = optsGenerator(exports$1.optsDefaults); + exports$1.getDefaultOptsAndCb = optsAndCbGenerator(exports$1.getDefaultOpts); + const rmdirDefaults = { + recursive: false, + }; + const getRmdirOptions = (options) => { + return Object.assign({}, rmdirDefaults, options); + }; + exports$1.getRmdirOptions = getRmdirOptions; + const getRmOpts = optsGenerator(exports$1.optsDefaults); + exports$1.getRmOptsAndCb = optsAndCbGenerator(getRmOpts); + const readFileOptsDefaults = { + flag: 'r', + }; + exports$1.getReadFileOptions = optsGenerator(readFileOptsDefaults); + const readdirDefaults = { + encoding: 'utf8', + recursive: false, + withFileTypes: false, + }; + exports$1.getReaddirOptions = optsGenerator(readdirDefaults); + exports$1.getReaddirOptsAndCb = optsAndCbGenerator(exports$1.getReaddirOptions); + const opendirDefaults = { + encoding: 'utf8', + bufferSize: 32, + recursive: false, + }; + exports$1.getOpendirOptions = optsGenerator(opendirDefaults); + exports$1.getOpendirOptsAndCb = optsAndCbGenerator(exports$1.getOpendirOptions); + const appendFileDefaults = { + encoding: 'utf8', + mode: 438 /* MODE.DEFAULT */, + flag: fs_node_utils_1.FLAGS[fs_node_utils_1.FLAGS.a], + }; + exports$1.getAppendFileOpts = optsGenerator(appendFileDefaults); + exports$1.getAppendFileOptsAndCb = optsAndCbGenerator(exports$1.getAppendFileOpts); + const statDefaults = { + bigint: false, + }; + const getStatOptions = (options = {}) => Object.assign({}, statDefaults, options); + exports$1.getStatOptions = getStatOptions; + const getStatOptsAndCb = (options, callback) => typeof options === 'function' ? [(0, exports$1.getStatOptions)(), options] : [(0, exports$1.getStatOptions)(options), (0, util_1.validateCallback)(callback)]; + exports$1.getStatOptsAndCb = getStatOptsAndCb; + const statfsDefaults = { + bigint: false, + }; + const getStatfsOptions = (options = {}) => Object.assign({}, statfsDefaults, options); + exports$1.getStatfsOptions = getStatfsOptions; + const getStatfsOptsAndCb = (options, callback) => typeof options === 'function' + ? [(0, exports$1.getStatfsOptions)(), options] + : [(0, exports$1.getStatfsOptions)(options), (0, util_1.validateCallback)(callback)]; + exports$1.getStatfsOptsAndCb = getStatfsOptsAndCb; + const realpathDefaults = exports$1.optsDefaults; + exports$1.getRealpathOptions = optsGenerator(realpathDefaults); + exports$1.getRealpathOptsAndCb = optsAndCbGenerator(exports$1.getRealpathOptions); + exports$1.writeFileDefaults = { + encoding: 'utf8', + mode: 438 /* MODE.DEFAULT */, + flag: fs_node_utils_1.FLAGS[fs_node_utils_1.FLAGS.w], + }; + exports$1.getWriteFileOptions = optsGenerator(exports$1.writeFileDefaults); + + } (options)); + return options; +} + +var Dir = {}; + +var hasRequiredDir; + +function requireDir () { + if (hasRequiredDir) return Dir; + hasRequiredDir = 1; + Object.defineProperty(Dir, "__esModule", { value: true }); + Dir.Dir = void 0; + const util_1 = requireUtil$1(); + const Dirent_1 = requireDirent(); + const errors = requireErrors$1(); + /** + * A directory stream, like `fs.Dir`. + */ + let Dir$1 = class Dir { + constructor(link, options) { + this.link = link; + this.options = options; + this.iteratorInfo = []; + this.closed = false; + this.operationQueue = null; + this.path = link.getPath(); + this.iteratorInfo.push(link.children[Symbol.iterator]()); + } + closeBase() { + // In a real filesystem implementation, this would close file descriptors + // For memfs, we just need to mark as closed + } + readBase(iteratorInfo) { + let done; + let value; + let name; + let link; + do { + do { + ({ done, value } = iteratorInfo[iteratorInfo.length - 1].next()); + if (!done) { + [name, link] = value; + } + else { + break; + } + } while (name === '.' || name === '..'); + if (done) { + iteratorInfo.pop(); + if (iteratorInfo.length === 0) { + break; + } + else { + done = false; + } + } + else { + if (this.options.recursive && link.children.size) { + iteratorInfo.push(link.children[Symbol.iterator]()); + } + return Dirent_1.default.build(link, this.options.encoding); + } + } while (!done); + return null; + } + close(callback) { + // Promise-based close + if (callback === undefined) { + if (this.closed) { + return Promise.reject(new errors.Error('ERR_DIR_CLOSED')); + } + return new Promise((resolve, reject) => { + this.close(err => { + if (err) + reject(err); + else + resolve(); + }); + }); + } + // Callback-based close + (0, util_1.validateCallback)(callback); + if (this.closed) { + process$1.nextTick(callback, new errors.Error('ERR_DIR_CLOSED')); + return; + } + if (this.operationQueue !== null) { + this.operationQueue.push(() => { + this.close(callback); + }); + return; + } + this.closed = true; + try { + this.closeBase(); + process$1.nextTick(callback); + } + catch (err) { + process$1.nextTick(callback, err); + } + } + closeSync() { + if (this.closed) { + throw new errors.Error('ERR_DIR_CLOSED'); + } + if (this.operationQueue !== null) { + throw new errors.Error('ERR_DIR_CONCURRENT_OPERATION'); + } + this.closed = true; + this.closeBase(); + } + read(callback) { + // Promise-based read + if (callback === undefined) { + return new Promise((resolve, reject) => { + this.read((err, result) => { + if (err) + reject(err); + else + resolve(result ?? null); + }); + }); + } + // Callback-based read + (0, util_1.validateCallback)(callback); + if (this.closed) { + process$1.nextTick(callback, new errors.Error('ERR_DIR_CLOSED')); + return; + } + if (this.operationQueue !== null) { + this.operationQueue.push(() => { + this.read(callback); + }); + return; + } + this.operationQueue = []; + try { + const result = this.readBase(this.iteratorInfo); + process$1.nextTick(() => { + const queue = this.operationQueue; + this.operationQueue = null; + for (const op of queue) + op(); + callback(null, result); + }); + } + catch (err) { + process$1.nextTick(() => { + const queue = this.operationQueue; + this.operationQueue = null; + for (const op of queue) + op(); + callback(err); + }); + } + } + readSync() { + if (this.closed) { + throw new errors.Error('ERR_DIR_CLOSED'); + } + if (this.operationQueue !== null) { + throw new errors.Error('ERR_DIR_CONCURRENT_OPERATION'); + } + return this.readBase(this.iteratorInfo); + } + [Symbol.asyncIterator]() { + return { + next: async () => { + try { + const dirEnt = await this.read(); + if (dirEnt !== null) { + return { done: false, value: dirEnt }; + } + else { + return { done: true, value: undefined }; + } + } + catch (err) { + throw err; + } + }, + [Symbol.asyncIterator]() { + return this; + }, + }; + } + [Symbol.asyncDispose]() { + return this.close(); + } + [Symbol.dispose]() { + this.closeSync(); + } + }; + Dir.Dir = Dir$1; + + return Dir; +} + +var glob = {}; + +var lib = {}; + +var hasRequiredLib$2; + +function requireLib$2 () { + if (hasRequiredLib$2) return lib; + hasRequiredLib$2 = 1; + (function (exports$1) { + Object.defineProperty(exports$1, "__esModule", { value: true }); + exports$1.toMatcher = exports$1.toRegex = void 0; + const escapeRe = (ch) => (/[.^$+{}()|\\]/.test(ch) ? `\\${ch}` : ch); + /** + * Parse an extended glob pattern like ?(a|b|c) + * Returns the regex string equivalent and the new index position + */ + const parseExtGlob = (pattern, startIdx, prefix, options) => { + let i = startIdx; // startIdx should be pointing at the character after '(' + const parts = []; + let cur = ''; + let depth = 1; // Track parenthesis depth for nested patterns + while (i < pattern.length && depth > 0) { + const ch = pattern[i]; + if (ch === '(') { + depth++; + cur += ch; + i++; + } + else if (ch === ')') { + depth--; + if (depth === 0) { + // Found the closing parenthesis + parts.push(cur); + i++; // consume ')' + break; + } + else { + cur += ch; + i++; + } + } + else if (ch === '|' && depth === 1) { + // Pipe separator at top level of this extglob + parts.push(cur); + cur = ''; + i++; + } + else { + cur += ch; + i++; + } + } + if (depth !== 0) + return; // Unclosed parenthesis + let alternatives = ''; + const length = parts.length; + for (let j = 0; j < length; j++) + alternatives += (alternatives ? '|' : '') + (0, exports$1.toRegex)(parts[j], options).source.replace(/^\^/, '').replace(/\$$/, ''); + switch (prefix) { + case '?': // zero or one + return [`(?:${alternatives})?`, i]; + case '*': // zero or more + return [`(?:${alternatives})*`, i]; + case '+': // one or more + return [`(?:${alternatives})+`, i]; + case '@': // exactly one + return [`(?:${alternatives})`, i]; + case '!': // none of (negative match) + // For negation, we need to match anything that doesn't match the pattern + // Use negative lookahead without consuming characters after + return [`(?!${alternatives})[^/]*`, i]; + } + return; + }; + /** + * Convert a glob pattern to a regular expression + * + * Supports: + * - `/` to separate path segments + * - `*` to match zero or more characters in a path segment + * - `?` to match one character in a path segment + * - `**` to match any number of path segments, including none + * - `{}` to group conditions (e.g. `{html,txt}`) + * - `[abc]`, `[a-z]`, `[!a-z]`, `[!abc]` character classes + * - Extended globbing (when `extglob: true` option is set): + * - `?(pattern-list)` zero or one occurrence + * - `*(pattern-list)` zero or more occurrences + * - `+(pattern-list)` one or more occurrences + * - `@(pattern-list)` exactly one of the patterns + * - `!(pattern-list)` anything except the patterns + */ + const toRegex = (pattern, options) => { + let regexStr = ''; + let i = 0; + // Helper to parse a brace group like {a,b,c}. No nesting support. + const parseBraceGroup = () => { + // Assume current char is '{' + i++; // skip '{' + const parts = []; + let cur = ''; + let closed = false; + while (i < pattern.length) { + const ch = pattern[i]; + if (ch === '}') { + parts.push(cur); + i++; // consume '}' + closed = true; + break; + } + if (ch === ',') { + parts.push(cur); + cur = ''; + i++; + continue; + } + cur += ch; + i++; + } + if (!closed) { + // treat as literal '{...' + return '\\{' + escapeRe(cur); + } + // Convert each part recursively to support globs inside braces + const alt = parts.map((p) => (0, exports$1.toRegex)(p, options).source.replace(/^\^/, '').replace(/\$$/, '')).join('|'); + return `(?:${alt})`; + }; + const extglob = !!options?.extglob; + while (i < pattern.length) { + const char = pattern[i]; + // Check for extended glob patterns when extglob is enabled + if (extglob && pattern[i + 1] === '(') { + if (char === '?' || char === '*' || char === '+' || char === '@' || char === '!') { + const result = parseExtGlob(pattern, i + 2, char, options); + if (result) { + regexStr += result[0]; + i = result[1]; + continue; + } + // If parse failed, fall through to normal handling + } + } + switch (char) { + case '*': { + // Check for double star ** + if (pattern[i + 1] === '*') { + // Collapse consecutive * beyond two (e.g., *** -> **) + let j = i + 2; + while (pattern[j] === '*') + j++; + // If followed by a slash, make it optional to allow zero segments + if (pattern[j] === '/') { + regexStr += '(?:.*/)?'; + i = j + 1; // consume **/ + } + else { + regexStr += '.*'; + i = j; // consume ** + } + } + else { + regexStr += '[^/]*'; + i++; + } + break; + } + case '?': + regexStr += '[^/]'; + i++; + break; + case '[': { + // Copy character class as-is with support for leading '!' + let cls = '['; + i++; + if (i < pattern.length && pattern[i] === '!') { + cls += '^'; + i++; + } + // if first after [ or [^ is ']' include it literally + if (i < pattern.length && pattern[i] === ']') { + cls += ']'; + i++; + } + while (i < pattern.length && pattern[i] !== ']') { + const ch = pattern[i]; + // Escape backslash inside class + cls += ch === '\\' ? '\\\\' : ch; + i++; + } + if (i < pattern.length && pattern[i] === ']') { + cls += ']'; + i++; + } + else { + // Unclosed class -> treat '[' literally + regexStr += '\\['; + continue; + } + regexStr += cls; + break; + } + case '{': { + regexStr += parseBraceGroup(); + break; + } + case '/': + regexStr += '/'; + i++; + break; + case '.': + case '^': + case '$': + case '+': + case '(': + case ')': + case '|': + case '\\': + regexStr += `\\${char}`; + i++; + break; + default: + regexStr += char; + i++; + break; + } + } + const flags = options?.nocase ? 'i' : ''; + return new RegExp('^' + regexStr + '$', flags); + }; + exports$1.toRegex = toRegex; + const isRegExp = /^\/(.{1,4096})\/([gimsuy]{0,6})$/; + const toMatcher = (pattern, options) => { + const regexes = []; + const patterns = Array.isArray(pattern) ? pattern : [pattern]; + for (const pat of patterns) { + if (typeof pat === 'string') { + const match = isRegExp.exec(pat); + if (match) { + const [, expr, flags] = match; + regexes.push(new RegExp(expr, flags)); + } + else { + regexes.push((0, exports$1.toRegex)(pat, options)); + } + } + else { + regexes.push(pat); + } + } + return regexes.length + ? new Function('p', 'return ' + regexes.map((r) => r + '.test(p)').join('||')) + : () => false; + }; + exports$1.toMatcher = toMatcher; + } (lib)); + return lib; +} + +var hasRequiredGlob; + +function requireGlob () { + if (hasRequiredGlob) return glob; + hasRequiredGlob = 1; + Object.defineProperty(glob, "__esModule", { value: true }); + glob.globSync = globSync; + const path_1 = requirePath$1(); + const glob_to_regex_js_1 = requireLib$2(); + const util_1 = requireUtil$1(); + const pathJoin = path_1.posix.join; + const pathRelative = path_1.posix.relative; + const pathResolve = path_1.posix.resolve; + /** + * Check if a path matches a glob pattern + */ + function matchesPattern(path, pattern) { + const regex = (0, glob_to_regex_js_1.toRegex)(pattern); + return regex.test(path); + } + /** + * Check if a path should be excluded based on exclude patterns + */ + function isExcluded(path, exclude) { + if (!exclude) + return false; + if (typeof exclude === 'function') { + return exclude(path); + } + const patterns = Array.isArray(exclude) ? exclude : [exclude]; + return patterns.some(pattern => matchesPattern(path, pattern)); + } + /** + * Walk directory tree and collect matching paths + */ + function walkDirectory(fs, dir, patterns, options, currentDepth = 0) { + const results = []; + const maxDepth = options.maxdepth ?? Infinity; + const baseCwd = options.cwd ? (0, util_1.pathToFilename)(options.cwd) : process$1.cwd(); + if (currentDepth > maxDepth) { + return results; + } + try { + const entries = fs.readdirSync(dir, { withFileTypes: true }); + for (const entry of entries) { + const fullPath = pathJoin(dir, entry.name.toString()); + const relativePath = pathRelative(baseCwd, fullPath); + // Skip if excluded + if (isExcluded(relativePath, options.exclude)) { + continue; + } + // Check if this path matches any pattern + const matches = patterns.some(pattern => matchesPattern(relativePath, pattern)); + if (matches) { + results.push(relativePath); + } + // Recurse into directories + if (entry.isDirectory() && currentDepth < maxDepth) { + const subResults = walkDirectory(fs, fullPath, patterns, options, currentDepth + 1); + results.push(...subResults); + } + } + } + catch (err) { + // Skip directories we can't read + } + return results; + } + /** + * Main glob implementation + */ + function globSync(fs, pattern, options = {}) { + const cwd = options.cwd ? (0, util_1.pathToFilename)(options.cwd) : process$1.cwd(); + const resolvedCwd = pathResolve(cwd); + const globOptions = { + cwd: resolvedCwd, + exclude: options.exclude, + maxdepth: options.maxdepth, + withFileTypes: options.withFileTypes || false, + }; + let results = []; + // Handle absolute patterns + if (path_1.posix.isAbsolute(pattern)) { + const dir = path_1.posix.dirname(pattern); + const patternBasename = path_1.posix.basename(pattern); + const dirResults = walkDirectory(fs, dir, [patternBasename], { ...globOptions, cwd: dir }); + results.push(...dirResults.map(r => path_1.posix.resolve(dir, r))); + } + else { + // Handle relative patterns - normalize by stripping leading './' + const normalizedPattern = pattern.replace(/^\.\//, ''); + const dirResults = walkDirectory(fs, resolvedCwd, [normalizedPattern], globOptions); + results.push(...dirResults); + } + // Remove duplicates and sort + results = [...new Set(results)].sort(); + return results; + } + + return glob; +} + +var hasRequiredVolume; + +function requireVolume () { + if (hasRequiredVolume) return volume; + hasRequiredVolume = 1; + Object.defineProperty(volume, "__esModule", { value: true }); + volume.FSWatcher = volume.StatWatcher = volume.Volume = void 0; + volume.pathToSteps = pathToSteps; + volume.dataToStr = dataToStr; + volume.toUnixTimestamp = toUnixTimestamp; + const path_1 = requirePath$1(); + const fs_core_1 = requireLib$6(); + const util_1 = requireUtil$3(); + const Stats_1 = requireStats(); + const Dirent_1 = requireDirent(); + const StatFs_1 = requireStatFs(); + const buffer_1 = requireBuffer(); + const setTimeoutUnref_1 = requireSetTimeoutUnref(); + const stream_1 = requireStream(); + const fs_node_utils_1 = requireLib$8(); + const events_1 = requireEvents(); + const FileHandle_1 = requireFileHandle(); + const util_2 = requireUtil$4(); + const FsPromises_1 = requireFsPromises(); + const fs_print_1 = requireLib$4(); + const fsSnapshot = requireLib$3(); + const fs_node_utils_2 = requireLib$8(); + const errors = requireErrors$1(); + const options_1 = requireOptions(); + const util_3 = requireUtil$1(); + const Dir_1 = requireDir(); + const resolveCrossPlatform = path_1.resolve; + const { O_SYMLINK, F_OK, R_OK, W_OK, X_OK, COPYFILE_EXCL, COPYFILE_FICLONE_FORCE } = fs_node_utils_1.constants; + path_1.posix ? path_1.posix.sep : path_1.sep; + const pathRelative = path_1.posix ? path_1.posix.relative : path_1.relative; + const pathJoin = path_1.posix ? path_1.posix.join : path_1.join; + const pathDirname = path_1.posix ? path_1.posix.dirname : path_1.dirname; + const pathNormalize = path_1.posix ? path_1.posix.normalize : path_1.normalize; + // ------------------------------------------------------------------ Constants + const kMinPoolSpace = 128; + // ---------------------------------------------------------- Utility functions + function pathToSteps(path) { + return (0, fs_core_1.filenameToSteps)((0, util_3.pathToFilename)(path)); + } + function dataToStr(data, encoding = fs_node_utils_1.ENCODING_UTF8) { + if (buffer_1.Buffer.isBuffer(data)) + return data.toString(encoding); + else if (data instanceof Uint8Array) + return (0, buffer_1.bufferFrom)(data).toString(encoding); + else + return String(data); + } + // converts Date or number to a fractional UNIX timestamp + function toUnixTimestamp(time) { + // tslint:disable-next-line triple-equals + if (typeof time === 'string' && +time == time) { + return +time; + } + if (time instanceof Date) { + return time.getTime() / 1000; + } + if (isFinite(time)) { + if (time < 0) { + return Date.now() / 1000; + } + return time; + } + throw new Error('Cannot parse time: ' + time); + } + function validateUid(uid) { + if (typeof uid !== 'number') + throw TypeError(fs_node_utils_2.ERRSTR.UID); + } + function validateGid(gid) { + if (typeof gid !== 'number') + throw TypeError(fs_node_utils_2.ERRSTR.GID); + } + /** + * `Volume` represents a file system. + */ + class Volume { + get promises() { + if (this.promisesApi === null) + throw new Error('Promise is not supported in this environment.'); + return this.promisesApi; + } + constructor(_core = new fs_core_1.Superblock()) { + this._core = _core; + this.promisesApi = new FsPromises_1.FsPromises(this, FileHandle_1.FileHandle); + this.openSync = (path, flags, mode = 438 /* MODE.DEFAULT */) => { + // Validate (1) mode; (2) path; (3) flags - in that order. + const modeNum = (0, util_3.modeToNumber)(mode); + const fileName = (0, util_3.pathToFilename)(path); + const flagsNum = (0, util_3.flagsToNumber)(flags); + return this._core.open(fileName, flagsNum, modeNum, !(flagsNum & O_SYMLINK)); + }; + this.open = (path, flags, a, b) => { + let mode = a; + let callback = b; + if (typeof a === 'function') { + mode = 438 /* MODE.DEFAULT */; + callback = a; + } + mode = mode || 438 /* MODE.DEFAULT */; + const modeNum = (0, util_3.modeToNumber)(mode); + const fileName = (0, util_3.pathToFilename)(path); + const flagsNum = (0, util_3.flagsToNumber)(flags); + this.wrapAsync(this._core.open, [fileName, flagsNum, modeNum, !(flagsNum & O_SYMLINK)], callback); + }; + this.closeSync = (fd) => { + this._core.close(fd); + }; + this.close = (fd, callback) => { + (0, fs_core_1.validateFd)(fd); + const file = this._core.getFileByFdOrThrow(fd, 'close'); + this.wrapAsync(this._core.close, [file.fd], callback); + }; + this.readSync = (fd, buffer, offset, length, position) => { + (0, fs_core_1.validateFd)(fd); + return this._core.read(fd, buffer, offset, length, position); + }; + this.read = (fd, buffer, offset, length, position, callback) => { + (0, util_3.validateCallback)(callback); + if (length === 0) { + // This `if` branch is from Node.js + return queueMicrotask(() => { + if (callback) + callback(null, 0, buffer); + }); + } + Promise.resolve().then(() => { + try { + const bytes = this._core.read(fd, buffer, offset, length, position); + callback(null, bytes, buffer); + } + catch (err) { + callback(err); + } + }); + }; + this.readv = (fd, buffers, a, b) => { + let position = a; + let callback = b; + if (typeof a === 'function') + [position, callback] = [null, a]; + (0, util_3.validateCallback)(callback); + Promise.resolve().then(() => { + try { + const bytes = this._core.readv(fd, buffers, position); + callback(null, bytes, buffers); + } + catch (err) { + callback(err); + } + }); + }; + this.readvSync = (fd, buffers, position) => { + (0, fs_core_1.validateFd)(fd); + return this._core.readv(fd, buffers, position ?? null); + }; + this._readfile = (id, flagsNum, encoding) => { + let result; + const isUserFd = typeof id === 'number'; + const userOwnsFd = isUserFd && (0, fs_core_1.isFd)(id); + let fd; + if (userOwnsFd) + fd = id; + else { + const filename = (0, util_3.pathToFilename)(id); + // Check if original path had trailing slash (indicates directory intent) + const originalPath = String(id); + const hasTrailingSlash = originalPath.length > 1 && originalPath.endsWith('/'); + const link = this._core.getResolvedLinkOrThrow(filename, 'open'); + const node = link.getNode(); + if (node.isDirectory()) + throw (0, util_3.createError)("EISDIR" /* ERROR_CODE.EISDIR */, 'open', link.getPath()); + // If path had trailing slash but resolved to a file, throw ENOTDIR + if (hasTrailingSlash && node.isFile()) { + throw (0, util_3.createError)("ENOTDIR" /* ERROR_CODE.ENOTDIR */, 'open', originalPath); + } + fd = this.openSync(id, flagsNum); + } + try { + result = (0, util_3.bufferToEncoding)(this._core.getFileByFdOrThrow(fd).getBuffer(), encoding); + } + finally { + if (!userOwnsFd) { + this.closeSync(fd); + } + } + return result; + }; + this.readFileSync = (file, options) => { + const opts = (0, options_1.getReadFileOptions)(options); + const flagsNum = (0, util_3.flagsToNumber)(opts.flag); + return this._readfile(file, flagsNum, opts.encoding); + }; + this.readFile = (id, a, b) => { + const [opts, callback] = (0, options_1.optsAndCbGenerator)(options_1.getReadFileOptions)(a, b); + const flagsNum = (0, util_3.flagsToNumber)(opts.flag); + this.wrapAsync(this._readfile, [id, flagsNum, opts.encoding], callback); + }; + this.writeSync = (fd, a, b, c, d) => { + const [, buf, offset, length, position] = (0, util_3.getWriteSyncArgs)(fd, a, b, c, d); + return this._write(fd, buf, offset, length, position); + }; + this.write = (fd, a, b, c, d, e) => { + const [, asStr, buf, offset, length, position, cb] = (0, util_3.getWriteArgs)(fd, a, b, c, d, e); + Promise.resolve().then(() => { + try { + const bytes = this._write(fd, buf, offset, length, position); + if (!asStr) { + cb(null, bytes, buf); + } + else { + cb(null, bytes, a); + } + } + catch (err) { + cb(err); + } + }); + }; + this.writev = (fd, buffers, a, b) => { + let position = a; + let callback = b; + if (typeof a === 'function') + [position, callback] = [null, a]; + (0, util_3.validateCallback)(callback); + Promise.resolve().then(() => { + try { + const bytes = this.writevBase(fd, buffers, position); + callback(null, bytes, buffers); + } + catch (err) { + callback(err); + } + }); + }; + this.writevSync = (fd, buffers, position) => { + (0, fs_core_1.validateFd)(fd); + return this.writevBase(fd, buffers, position ?? null); + }; + this.writeFileSync = (id, data, options) => { + const opts = (0, options_1.getWriteFileOptions)(options); + const flagsNum = (0, util_3.flagsToNumber)(opts.flag); + const modeNum = (0, util_3.modeToNumber)(opts.mode); + const buf = (0, fs_core_1.dataToBuffer)(data, opts.encoding); + this._core.writeFile(id, buf, flagsNum, modeNum); + }; + this.writeFile = (id, data, a, b) => { + let options = a; + let callback = b; + if (typeof a === 'function') + [options, callback] = [options_1.writeFileDefaults, a]; + const cb = (0, util_3.validateCallback)(callback); + const opts = (0, options_1.getWriteFileOptions)(options); + const flagsNum = (0, util_3.flagsToNumber)(opts.flag); + const modeNum = (0, util_3.modeToNumber)(opts.mode); + const buf = (0, fs_core_1.dataToBuffer)(data, opts.encoding); + this.wrapAsync(this._core.writeFile, [id, buf, flagsNum, modeNum], cb); + }; + this.copyFileSync = (src, dest, flags) => { + const srcFilename = (0, util_3.pathToFilename)(src); + const destFilename = (0, util_3.pathToFilename)(dest); + return this._copyFile(srcFilename, destFilename, (flags || 0) | 0); + }; + this.copyFile = (src, dest, a, b) => { + const srcFilename = (0, util_3.pathToFilename)(src); + const destFilename = (0, util_3.pathToFilename)(dest); + let flags; + let callback; + if (typeof a === 'function') + [flags, callback] = [0, a]; + else + [flags, callback] = [a, b]; + (0, util_3.validateCallback)(callback); + this.wrapAsync(this._copyFile, [srcFilename, destFilename, flags], callback); + }; + this._cp = (src, dest, options) => { + if (options.filter && !options.filter(src, dest)) + return; + const srcStat = options.dereference ? this.statSync(src) : this.lstatSync(src); + let destStat = null; + try { + destStat = this.lstatSync(dest); + } + catch (err) { + if (err.code !== 'ENOENT') { + throw err; + } + } + // Check if src and dest are the same (both exist and have same inode) + if (destStat && srcStat.ino === destStat.ino && srcStat.dev === destStat.dev) + throw (0, util_3.createError)("EINVAL" /* ERROR_CODE.EINVAL */, 'cp', src, dest); + // Check type compatibility + if (destStat) { + if (srcStat.isDirectory() && !destStat.isDirectory()) + throw (0, util_3.createError)("EISDIR" /* ERROR_CODE.EISDIR */, 'cp', src, dest); + if (!srcStat.isDirectory() && destStat.isDirectory()) + throw (0, util_3.createError)("ENOTDIR" /* ERROR_CODE.ENOTDIR */, 'cp', src, dest); + } + // Check if trying to copy directory to subdirectory of itself + if (srcStat.isDirectory() && this.isSrcSubdir(src, dest)) + throw (0, util_3.createError)("EINVAL" /* ERROR_CODE.EINVAL */, 'cp', src, dest); + { + const parent = pathDirname(dest); + if (!this.existsSync(parent)) + this.mkdirSync(parent, { recursive: true }); + } + // Handle different file types + if (srcStat.isDirectory()) { + if (!options.recursive) + throw (0, util_3.createError)("EISDIR" /* ERROR_CODE.EISDIR */, 'cp', src); + this.cpDirSync(srcStat, destStat, src, dest, options); + } + else if (srcStat.isFile() || srcStat.isCharacterDevice() || srcStat.isBlockDevice()) { + this.cpFileSync(srcStat, destStat, src, dest, options); + } + else if (srcStat.isSymbolicLink() && !options.dereference) { + // Only handle as symlink if not dereferencing + this.cpSymlinkSync(destStat, src, dest, options); + } + else { + throw (0, util_3.createError)("EINVAL" /* ERROR_CODE.EINVAL */, 'cp', src); + } + }; + this.linkSync = (existingPath, newPath) => { + const existingPathFilename = (0, util_3.pathToFilename)(existingPath); + const newPathFilename = (0, util_3.pathToFilename)(newPath); + this._core.link(existingPathFilename, newPathFilename); + }; + this.link = (existingPath, newPath, callback) => { + const existingPathFilename = (0, util_3.pathToFilename)(existingPath); + const newPathFilename = (0, util_3.pathToFilename)(newPath); + this.wrapAsync(this._core.link, [existingPathFilename, newPathFilename], callback); + }; + this.unlinkSync = (path) => { + const filename = (0, util_3.pathToFilename)(path); + this._core.unlink(filename); + }; + this.unlink = (path, callback) => { + const filename = (0, util_3.pathToFilename)(path); + this.wrapAsync(this._core.unlink, [filename], callback); + }; + /** + * `type` argument works only on Windows. + * @param target + * @param path + * @param type + */ + this.symlinkSync = (target, path, type) => { + const targetFilename = (0, util_3.pathToFilename)(target); + const pathFilename = (0, util_3.pathToFilename)(path); + this._core.symlink(targetFilename, pathFilename); + }; + this.symlink = (target, path, a, b) => { + const callback = (0, util_3.validateCallback)(typeof a === 'function' ? a : b); + const targetFilename = (0, util_3.pathToFilename)(target); + const pathFilename = (0, util_3.pathToFilename)(path); + this.wrapAsync(this._core.symlink, [targetFilename, pathFilename], callback); + }; + this._lstat = (filename, bigint = false, throwIfNoEntry = false) => { + let link; + try { + link = this._core.getLinkOrThrow(filename, 'lstat'); + } + catch (err) { + if (err.code === "ENOENT" /* ERROR_CODE.ENOENT */ && !throwIfNoEntry) + return undefined; + else + throw err; + } + return Stats_1.default.build(link.getNode(), bigint); + }; + this.lstatSync = (path, options) => { + const { throwIfNoEntry = true, bigint = false } = (0, options_1.getStatOptions)(options); + return this._lstat((0, util_3.pathToFilename)(path), bigint, throwIfNoEntry); + }; + this.renameSync = (oldPath, newPath) => { + const oldPathFilename = (0, util_3.pathToFilename)(oldPath); + const newPathFilename = (0, util_3.pathToFilename)(newPath); + this._core.rename(oldPathFilename, newPathFilename); + }; + this.rename = (oldPath, newPath, callback) => { + const oldPathFilename = (0, util_3.pathToFilename)(oldPath); + const newPathFilename = (0, util_3.pathToFilename)(newPath); + this.wrapAsync(this._core.rename, [oldPathFilename, newPathFilename], callback); + }; + this.existsSync = (path) => { + try { + return this._exists((0, util_3.pathToFilename)(path)).ok; + } + catch (err) { + return false; + } + }; + this.exists = (path, callback) => { + const filename = (0, util_3.pathToFilename)(path); + if (typeof callback !== 'function') + throw Error(fs_node_utils_2.ERRSTR.CB); + Promise.resolve().then(() => { + try { + callback(this._exists(filename).ok); + } + catch (err) { + callback(false); + } + }); + }; + this.accessSync = (path, mode = F_OK) => { + const filename = (0, util_3.pathToFilename)(path); + mode = mode | 0; + this._access(filename, mode); + }; + this.access = (path, a, b) => { + let mode = F_OK; + let callback; + if (typeof a !== 'function') + [mode, callback] = [a | 0, (0, util_3.validateCallback)(b)]; + else + callback = a; + const filename = (0, util_3.pathToFilename)(path); + this.wrapAsync(this._access, [filename, mode], callback); + }; + this.appendFileSync = (id, data, options) => { + const opts = (0, options_1.getAppendFileOpts)(options); + // Force append behavior when using a supplied file descriptor. + if (!opts.flag || (0, fs_core_1.isFd)(id)) + opts.flag = 'a'; + this.writeFileSync(id, data, opts); + }; + this.appendFile = (id, data, a, b) => { + const [opts, callback] = (0, options_1.getAppendFileOptsAndCb)(a, b); + // Force append behavior when using a supplied file descriptor. + if (!opts.flag || (0, fs_core_1.isFd)(id)) + opts.flag = 'a'; + this.writeFile(id, data, opts, callback); + }; + this._readdir = (filename, options) => { + (0, fs_core_1.filenameToSteps)(filename); + const link = this._core.getResolvedLinkOrThrow(filename, 'scandir'); + const node = link.getNode(); + if (!node.isDirectory()) + throw (0, util_3.createError)("ENOTDIR" /* ERROR_CODE.ENOTDIR */, 'scandir', filename); + // Check we have permissions + if (!node.canRead()) + throw (0, util_3.createError)("EACCES" /* ERROR_CODE.EACCES */, 'scandir', filename); + const list = []; // output list + for (const name of link.children.keys()) { + const child = link.getChild(name); + if (!child || name === '.' || name === '..') + continue; + list.push(Dirent_1.default.build(child, options.encoding)); + // recursion + if (options.recursive && child.children.size) { + const recurseOptions = { ...options, recursive: true, withFileTypes: true }; + const childList = this._readdir(child.getPath(), recurseOptions); + list.push(...childList); + } + } + if (!util_1.isWin && options.encoding !== 'buffer') + list.sort((a, b) => { + if (a.name < b.name) + return -1; + if (a.name > b.name) + return 1; + return 0; + }); + if (options.withFileTypes) + return list; + let filename2 = filename; + if (util_1.isWin) + filename2 = filename2.replace(/\\/g, '/'); + return list.map(dirent => { + if (options.recursive) { + let fullPath = pathJoin(dirent.parentPath, dirent.name.toString()); + if (util_1.isWin) { + fullPath = fullPath.replace(/\\/g, '/'); + } + return fullPath.replace(filename2 + path_1.posix.sep, ''); + } + return dirent.name; + }); + }; + this.readdirSync = (path, options) => { + const opts = (0, options_1.getReaddirOptions)(options); + const filename = (0, util_3.pathToFilename)(path); + return this._readdir(filename, opts); + }; + this.readdir = (path, a, b) => { + const [options, callback] = (0, options_1.getReaddirOptsAndCb)(a, b); + const filename = (0, util_3.pathToFilename)(path); + this.wrapAsync(this._readdir, [filename, options], callback); + }; + this._readlink = (filename, encoding) => { + const link = this._core.getLinkOrThrow(filename, 'readlink'); + const node = link.getNode(); + if (!node.isSymlink()) + throw (0, util_3.createError)("EINVAL" /* ERROR_CODE.EINVAL */, 'readlink', filename); + return (0, fs_node_utils_1.strToEncoding)(node.symlink, encoding); + }; + this.readlinkSync = (path, options) => { + const opts = (0, options_1.getDefaultOpts)(options); + const filename = (0, util_3.pathToFilename)(path); + return this._readlink(filename, opts.encoding); + }; + this.readlink = (path, a, b) => { + const [opts, callback] = (0, options_1.getDefaultOptsAndCb)(a, b); + const filename = (0, util_3.pathToFilename)(path); + this.wrapAsync(this._readlink, [filename, opts.encoding], callback); + }; + this._fsync = (fd) => { + this._core.getFileByFdOrThrow(fd, 'fsync'); + }; + this.fsyncSync = (fd) => { + this._fsync(fd); + }; + this.fsync = (fd, callback) => { + this.wrapAsync(this._fsync, [fd], callback); + }; + this._fdatasync = (fd) => { + this._core.getFileByFdOrThrow(fd, 'fdatasync'); + }; + this.fdatasyncSync = (fd) => { + this._fdatasync(fd); + }; + this.fdatasync = (fd, callback) => { + this.wrapAsync(this._fdatasync, [fd], callback); + }; + this._ftruncate = (fd, len) => { + const file = this._core.getFileByFdOrThrow(fd, 'ftruncate'); + file.truncate(len); + }; + this.ftruncateSync = (fd, len) => { + this._ftruncate(fd, len); + }; + this.ftruncate = (fd, a, b) => { + const len = typeof a === 'number' ? a : 0; + const callback = (0, util_3.validateCallback)(typeof a === 'number' ? b : a); + this.wrapAsync(this._ftruncate, [fd, len], callback); + }; + this._truncate = (path, len) => { + const fd = this.openSync(path, 'r+'); + try { + this.ftruncateSync(fd, len); + } + finally { + this.closeSync(fd); + } + }; + /** + * `id` should be a file descriptor or a path. `id` as file descriptor will + * not be supported soon. + */ + this.truncateSync = (id, len) => { + if ((0, fs_core_1.isFd)(id)) + return this.ftruncateSync(id, len); + this._truncate(id, len); + }; + this.truncate = (id, a, b) => { + const len = typeof a === 'number' ? a : 0; + const callback = (0, util_3.validateCallback)(typeof a === 'number' ? b : a); + if ((0, fs_core_1.isFd)(id)) + return this.ftruncate(id, len, callback); + this.wrapAsync(this._truncate, [id, len], callback); + }; + this._futimes = (fd, atime, mtime) => { + const file = this._core.getFileByFdOrThrow(fd, 'futimes'); + const node = file.node; + node.atime = new Date(atime * 1000); + node.mtime = new Date(mtime * 1000); + }; + this.futimesSync = (fd, atime, mtime) => { + this._futimes(fd, toUnixTimestamp(atime), toUnixTimestamp(mtime)); + }; + this.futimes = (fd, atime, mtime, callback) => { + this.wrapAsync(this._futimes, [fd, toUnixTimestamp(atime), toUnixTimestamp(mtime)], callback); + }; + this._utimes = (filename, atime, mtime, followSymlinks = true) => { + const core = this._core; + const link = followSymlinks + ? core.getResolvedLinkOrThrow(filename, 'utimes') + : core.getLinkOrThrow(filename, 'lutimes'); + const node = link.getNode(); + node.atime = new Date(atime * 1000); + node.mtime = new Date(mtime * 1000); + }; + this.utimesSync = (path, atime, mtime) => { + this._utimes((0, util_3.pathToFilename)(path), toUnixTimestamp(atime), toUnixTimestamp(mtime), true); + }; + this.utimes = (path, atime, mtime, callback) => { + this.wrapAsync(this._utimes, [(0, util_3.pathToFilename)(path), toUnixTimestamp(atime), toUnixTimestamp(mtime), true], callback); + }; + this.lutimesSync = (path, atime, mtime) => { + this._utimes((0, util_3.pathToFilename)(path), toUnixTimestamp(atime), toUnixTimestamp(mtime), false); + }; + this.lutimes = (path, atime, mtime, callback) => { + this.wrapAsync(this._utimes, [(0, util_3.pathToFilename)(path), toUnixTimestamp(atime), toUnixTimestamp(mtime), false], callback); + }; + this.mkdirSync = (path, options) => { + const opts = (0, options_1.getMkdirOptions)(options); + const modeNum = (0, util_3.modeToNumber)(opts.mode, 0o777); + const filename = (0, util_3.pathToFilename)(path); + if (opts.recursive) + return this._core.mkdirp(filename, modeNum); + this._core.mkdir(filename, modeNum); + }; + this.mkdir = (path, a, b) => { + const opts = (0, options_1.getMkdirOptions)(a); + const callback = (0, util_3.validateCallback)(typeof a === 'function' ? a : b); + const modeNum = (0, util_3.modeToNumber)(opts.mode, 0o777); + const filename = (0, util_3.pathToFilename)(path); + if (opts.recursive) + this.wrapAsync(this._core.mkdirp, [filename, modeNum], callback); + else + this.wrapAsync(this._core.mkdir, [filename, modeNum], callback); + }; + this._mkdtemp = (prefix, encoding, retry = 5) => { + const filename = prefix + (0, util_3.genRndStr6)(); + try { + this._core.mkdir(filename, 511 /* MODE.DIR */); + return (0, fs_node_utils_1.strToEncoding)(filename, encoding); + } + catch (err) { + if (err.code === "EEXIST" /* ERROR_CODE.EEXIST */) { + if (retry > 1) + return this._mkdtemp(prefix, encoding, retry - 1); + else + throw Error('Could not create temp dir.'); + } + else + throw err; + } + }; + this.mkdtempSync = (prefix, options) => { + const { encoding } = (0, options_1.getDefaultOpts)(options); + if (!prefix || typeof prefix !== 'string') + throw new TypeError('filename prefix is required'); + (0, util_3.nullCheck)(prefix); + return this._mkdtemp(prefix, encoding); + }; + this.mkdtemp = (prefix, a, b) => { + const [{ encoding }, callback] = (0, options_1.getDefaultOptsAndCb)(a, b); + if (!prefix || typeof prefix !== 'string') + throw new TypeError('filename prefix is required'); + if (!(0, util_3.nullCheck)(prefix)) + return; + this.wrapAsync(this._mkdtemp, [prefix, encoding], callback); + }; + this.rmdirSync = (path, options) => { + const opts = (0, options_1.getRmdirOptions)(options); + this._core.rmdir((0, util_3.pathToFilename)(path), opts.recursive); + }; + this.rmdir = (path, a, b) => { + const opts = (0, options_1.getRmdirOptions)(a); + const callback = (0, util_3.validateCallback)(typeof a === 'function' ? a : b); + this.wrapAsync(this._core.rmdir, [(0, util_3.pathToFilename)(path), opts.recursive], callback); + }; + this.rmSync = (path, options) => { + this._core.rm((0, util_3.pathToFilename)(path), options?.force, options?.recursive); + }; + this.rm = (path, a, b) => { + const [opts, callback] = (0, options_1.getRmOptsAndCb)(a, b); + this.wrapAsync(this._core.rm, [(0, util_3.pathToFilename)(path), opts?.force, opts?.recursive], callback); + }; + this._fchmod = (fd, modeNum) => { + const file = this._core.getFileByFdOrThrow(fd, 'fchmod'); + file.chmod(modeNum); + }; + this.fchmodSync = (fd, mode) => { + this._fchmod(fd, (0, util_3.modeToNumber)(mode)); + }; + this.fchmod = (fd, mode, callback) => { + this.wrapAsync(this._fchmod, [fd, (0, util_3.modeToNumber)(mode)], callback); + }; + this._chmod = (filename, modeNum, followSymlinks = true) => { + const link = followSymlinks + ? this._core.getResolvedLinkOrThrow(filename, 'chmod') + : this._core.getLinkOrThrow(filename, 'chmod'); + const node = link.getNode(); + node.chmod(modeNum); + }; + this.chmodSync = (path, mode) => { + const modeNum = (0, util_3.modeToNumber)(mode); + const filename = (0, util_3.pathToFilename)(path); + this._chmod(filename, modeNum, true); + }; + this.chmod = (path, mode, callback) => { + const modeNum = (0, util_3.modeToNumber)(mode); + const filename = (0, util_3.pathToFilename)(path); + this.wrapAsync(this._chmod, [filename, modeNum], callback); + }; + this._lchmod = (filename, modeNum) => { + this._chmod(filename, modeNum, false); + }; + this.lchmodSync = (path, mode) => { + const modeNum = (0, util_3.modeToNumber)(mode); + const filename = (0, util_3.pathToFilename)(path); + this._lchmod(filename, modeNum); + }; + this.lchmod = (path, mode, callback) => { + const modeNum = (0, util_3.modeToNumber)(mode); + const filename = (0, util_3.pathToFilename)(path); + this.wrapAsync(this._lchmod, [filename, modeNum], callback); + }; + this._fchown = (fd, uid, gid) => { + this._core.getFileByFdOrThrow(fd, 'fchown').chown(uid, gid); + }; + this.fchownSync = (fd, uid, gid) => { + validateUid(uid); + validateGid(gid); + this._fchown(fd, uid, gid); + }; + this.fchown = (fd, uid, gid, callback) => { + validateUid(uid); + validateGid(gid); + this.wrapAsync(this._fchown, [fd, uid, gid], callback); + }; + this._chown = (filename, uid, gid) => { + const link = this._core.getResolvedLinkOrThrow(filename, 'chown'); + const node = link.getNode(); + node.chown(uid, gid); + }; + this.chownSync = (path, uid, gid) => { + validateUid(uid); + validateGid(gid); + this._chown((0, util_3.pathToFilename)(path), uid, gid); + }; + this.chown = (path, uid, gid, callback) => { + validateUid(uid); + validateGid(gid); + this.wrapAsync(this._chown, [(0, util_3.pathToFilename)(path), uid, gid], callback); + }; + this._lchown = (filename, uid, gid) => { + this._core.getLinkOrThrow(filename, 'lchown').getNode().chown(uid, gid); + }; + this.lchownSync = (path, uid, gid) => { + validateUid(uid); + validateGid(gid); + this._lchown((0, util_3.pathToFilename)(path), uid, gid); + }; + this.lchown = (path, uid, gid, callback) => { + validateUid(uid); + validateGid(gid); + this.wrapAsync(this._lchown, [(0, util_3.pathToFilename)(path), uid, gid], callback); + }; + this.statWatchers = {}; + this.cpSync = (src, dest, options) => { + const srcFilename = (0, util_3.pathToFilename)(src); + const destFilename = (0, util_3.pathToFilename)(dest); + const opts_ = { + dereference: options?.dereference ?? false, + errorOnExist: options?.errorOnExist ?? false, + filter: options?.filter, + force: options?.force ?? true, + mode: options?.mode ?? 0, + preserveTimestamps: options?.preserveTimestamps ?? false, + recursive: options?.recursive ?? false, + verbatimSymlinks: options?.verbatimSymlinks ?? false, + }; + return this._cp(srcFilename, destFilename, opts_); + }; + this.cp = (src, dest, a, b) => { + const srcFilename = (0, util_3.pathToFilename)(src); + const destFilename = (0, util_3.pathToFilename)(dest); + let options; + let callback; + if (typeof a === 'function') + [options, callback] = [{}, a]; + else + [options, callback] = [a || {}, b]; + (0, util_3.validateCallback)(callback); + const opts_ = { + dereference: options?.dereference ?? false, + errorOnExist: options?.errorOnExist ?? false, + filter: options?.filter, + force: options?.force ?? true, + mode: options?.mode ?? 0, + preserveTimestamps: options?.preserveTimestamps ?? false, + recursive: options?.recursive ?? false, + verbatimSymlinks: options?.verbatimSymlinks ?? false, + }; + this.wrapAsync(this._cp, [srcFilename, destFilename, opts_], callback); + }; + this.openAsBlob = async (path, options) => { + const filename = (0, util_3.pathToFilename)(path); + let link; + try { + link = this._core.getResolvedLinkOrThrow(filename, 'open'); + } + catch (error) { + // Convert ENOENT to Node.js-compatible error for openAsBlob + if (error && typeof error === 'object' && error.code === 'ENOENT') { + const nodeError = new errors.TypeError('ERR_INVALID_ARG_VALUE'); + throw nodeError; + } + throw error; + } + const node = link.getNode(); + // Note: Node.js allows opening directories as blobs, so we don't throw EISDIR + const buffer = node.getBuffer(); + const type = options?.type || ''; + return new Blob([buffer], { type }); + }; + this.glob = (pattern, ...args) => { + const [options, callback] = args.length === 1 ? [{}, args[0]] : [args[0], args[1]]; + this.wrapAsync(this._globSync, [pattern, options || {}], callback); + }; + this.globSync = (pattern, options = {}) => { + return this._globSync(pattern, options); + }; + this._globSync = (pattern, options = {}) => { + const { globSync } = requireGlob(); + return globSync(this, pattern, options); + }; + this._opendir = (filename, options) => { + const link = this._core.getResolvedLinkOrThrow(filename, 'scandir'); + const node = link.getNode(); + if (!node.isDirectory()) + throw (0, util_3.createError)("ENOTDIR" /* ERROR_CODE.ENOTDIR */, 'scandir', filename); + return new Dir_1.Dir(link, options); + }; + this.opendirSync = (path, options) => { + const opts = (0, options_1.getOpendirOptions)(options); + const filename = (0, util_3.pathToFilename)(path); + return this._opendir(filename, opts); + }; + this.opendir = (path, a, b) => { + const [options, callback] = (0, options_1.getOpendirOptsAndCb)(a, b); + const filename = (0, util_3.pathToFilename)(path); + this.wrapAsync(this._opendir, [filename, options], callback); + }; + const self = this; // tslint:disable-line no-this-assignment + this.StatWatcher = class extends StatWatcher { + constructor() { + super(self); + } + }; + const _ReadStream = FsReadStream; + this.ReadStream = class extends _ReadStream { + constructor(...args) { + super(self, ...args); + } + }; + const _WriteStream = FsWriteStream; + this.WriteStream = class extends _WriteStream { + constructor(...args) { + super(self, ...args); + } + }; + this.FSWatcher = class extends FSWatcher { + constructor() { + super(self); + } + }; + const _realpath = (filename, encoding) => { + const realLink = this._core.getResolvedLinkOrThrow(filename, 'realpath'); + return (0, fs_node_utils_1.strToEncoding)(realLink.getPath() || '/', encoding); + }; + const realpathImpl = (path, a, b) => { + const [opts, callback] = (0, options_1.getRealpathOptsAndCb)(a, b); + const pathFilename = (0, util_3.pathToFilename)(path); + self.wrapAsync(_realpath, [pathFilename, opts.encoding], callback); + }; + const realpathSyncImpl = (path, options) => _realpath((0, util_3.pathToFilename)(path), (0, options_1.getRealpathOptions)(options).encoding); + this.realpath = realpathImpl; + this.realpath.native = realpathImpl; + this.realpathSync = realpathSyncImpl; + this.realpathSync.native = realpathSyncImpl; + } + wrapAsync(method, args, callback) { + (0, util_3.validateCallback)(callback); + Promise.resolve().then(() => { + let result; + try { + result = method.apply(this, args); + } + catch (err) { + callback(err); + return; + } + callback(null, result); + }); + } + reset() { + this._core.reset(); + } + toJSON(paths, json = {}, isRelative = false, asBuffer = false) { + return this._core.toJSON(paths, json, isRelative, asBuffer); + } + fromJSON(json, cwd) { + return this._core.fromJSON(json, cwd); + } + fromNestedJSON(json, cwd) { + return this._core.fromNestedJSON(json, cwd); + } + // Legacy interface + mountSync(mountpoint, json) { + this._core.fromJSON(json, mountpoint); + } + _write(fd, buf, offset, length, position) { + const file = this._core.getFileByFdOrThrow(fd, 'write'); + if (file.node.isSymlink()) { + throw (0, util_3.createError)("EBADF" /* ERROR_CODE.EBADF */, 'write', file.link.getPath()); + } + return file.write(buf, offset, length, position === -1 || typeof position !== 'number' ? undefined : position); + } + writevBase(fd, buffers, position) { + const file = this._core.getFileByFdOrThrow(fd); + let p = position ?? undefined; + if (p === -1) { + p = undefined; + } + let bytesWritten = 0; + for (const buffer of buffers) { + const nodeBuf = buffer_1.Buffer.from(buffer.buffer, buffer.byteOffset, buffer.byteLength); + const bytes = file.write(nodeBuf, 0, nodeBuf.byteLength, p); + p = undefined; + bytesWritten += bytes; + if (bytes < nodeBuf.byteLength) + break; + } + return bytesWritten; + } + _copyFile(src, dest, flags) { + const buf = this.readFileSync(src); + if (flags & COPYFILE_EXCL && this.existsSync(dest)) + throw (0, util_3.createError)("EEXIST" /* ERROR_CODE.EEXIST */, 'copyFile', src, dest); + if (flags & COPYFILE_FICLONE_FORCE) + throw (0, util_3.createError)("ENOSYS" /* ERROR_CODE.ENOSYS */, 'copyFile', src, dest); + this._core.writeFile(dest, buf, fs_node_utils_2.FLAGS.w, 438 /* MODE.DEFAULT */); + } + isSrcSubdir(src, dest) { + try { + const normalizedSrc = pathNormalize(src.startsWith('/') ? src : '/' + src); + const normalizedDest = pathNormalize(dest.startsWith('/') ? dest : '/' + dest); + if (normalizedSrc === normalizedDest) + return true; + // Check if dest is under src by using relative path + // If dest is under src, the relative path from src to dest won't start with '..' + const relativePath = pathRelative(normalizedSrc, normalizedDest); + // If relative path is empty or doesn't start with '..', dest is under src + return relativePath === '' || (!relativePath.startsWith('..') && !(0, path_1.isAbsolute)(relativePath)); + } + catch (error) { + // If path operations fail, assume it's safe (don't block the copy) + return false; + } + } + cpFileSync(srcStat, destStat, src, dest, options) { + if (destStat) { + if (options.errorOnExist) + throw (0, util_3.createError)("EEXIST" /* ERROR_CODE.EEXIST */, 'cp', dest); + if (!options.force) + return; + this.unlinkSync(dest); + } + // Copy the file + this.copyFileSync(src, dest, options.mode); + // Preserve timestamps if requested + if (options.preserveTimestamps) + this.utimesSync(dest, srcStat.atime, srcStat.mtime); + // Set file mode + this.chmodSync(dest, Number(srcStat.mode)); + } + cpDirSync(srcStat, destStat, src, dest, options) { + if (!destStat) { + this.mkdirSync(dest); + } + // Read directory contents + const entries = this.readdirSync(src); + for (const entry of entries) { + const srcItem = pathJoin(src, String(entry)); + const destItem = pathJoin(dest, String(entry)); + // Apply filter to each item + if (options.filter && !options.filter(srcItem, destItem)) { + continue; + } + this._cp(srcItem, destItem, options); + } + // Set directory mode + this.chmodSync(dest, Number(srcStat.mode)); + } + cpSymlinkSync(destStat, src, dest, options) { + let linkTarget = String(this.readlinkSync(src)); + if (!options.verbatimSymlinks && !(0, path_1.isAbsolute)(linkTarget)) + linkTarget = resolveCrossPlatform(pathDirname(src), linkTarget); + if (destStat) + this.unlinkSync(dest); + this.symlinkSync(linkTarget, dest); + } + lstat(path, a, b) { + const [{ throwIfNoEntry = true, bigint = false }, callback] = (0, options_1.getStatOptsAndCb)(a, b); + this.wrapAsync(this._lstat, [(0, util_3.pathToFilename)(path), bigint, throwIfNoEntry], callback); + } + _stat(filename, bigint = false, throwIfNoEntry = true) { + const result = this._core.getResolvedLinkResult(filename, 'stat'); + if (result.ok) { + return (0, fs_core_1.Ok)(Stats_1.default.build(result.value.getNode(), bigint)); + } + if (result.err.code === "ENOENT" /* ERROR_CODE.ENOENT */ && !throwIfNoEntry) { + return (0, fs_core_1.Ok)(undefined); + } + else { + return result; + } + } + _statOrThrow(filename, bigint = false, throwIfNoEntry = true) { + const result = this._stat(filename, bigint, throwIfNoEntry); + if (result.ok) { + return result.value; + } + else { + throw result.err.toError(); + } + } + statSync(path, options) { + const { bigint = true, throwIfNoEntry = true } = (0, options_1.getStatOptions)(options); + const result = this._stat((0, util_3.pathToFilename)(path), bigint, throwIfNoEntry); + if (result.ok) { + return result.value; + } + else { + throw result.err.toError(); + } + } + stat(path, a, b) { + const [{ bigint = false, throwIfNoEntry = true }, callback] = (0, options_1.getStatOptsAndCb)(a, b); + this.wrapAsync(this._statOrThrow, [(0, util_3.pathToFilename)(path), bigint, throwIfNoEntry], callback); + } + fstatBase(fd, bigint = false) { + const file = this._core.getFileByFd(fd); + if (!file) + throw (0, util_3.createError)("EBADF" /* ERROR_CODE.EBADF */, 'fstat'); + return Stats_1.default.build(file.node, bigint); + } + fstatSync(fd, options) { + return this.fstatBase(fd, (0, options_1.getStatOptions)(options).bigint); + } + fstat(fd, a, b) { + const [opts, callback] = (0, options_1.getStatOptsAndCb)(a, b); + this.wrapAsync(this.fstatBase, [fd, opts.bigint], callback); + } + _exists(filename) { + const result = this._stat(filename); + return result.ok ? (0, fs_core_1.Ok)(true) : result; + } + _access(filename, mode) { + const link = this._core.getLinkOrThrow(filename, 'access'); + const node = link.getNode(); + // F_OK (0) just checks for existence, which we already confirmed above + if (mode === F_OK) { + return; + } + // Check read permission + if (mode & R_OK && !node.canRead()) { + throw (0, util_3.createError)("EACCES" /* ERROR_CODE.EACCES */, 'access', filename); + } + // Check write permission + if (mode & W_OK && !node.canWrite()) { + throw (0, util_3.createError)("EACCES" /* ERROR_CODE.EACCES */, 'access', filename); + } + // Check execute permission + if (mode & X_OK && !node.canExecute()) { + throw (0, util_3.createError)("EACCES" /* ERROR_CODE.EACCES */, 'access', filename); + } + } + watchFile(path, a, b) { + const filename = (0, util_3.pathToFilename)(path); + let options = a; + let listener = b; + if (typeof options === 'function') { + listener = a; + options = null; + } + if (typeof listener !== 'function') { + throw Error('"watchFile()" requires a listener function'); + } + let interval = 5007; + let persistent = true; + if (options && typeof options === 'object') { + if (typeof options.interval === 'number') + interval = options.interval; + if (typeof options.persistent === 'boolean') + persistent = options.persistent; + } + let watcher = this.statWatchers[filename]; + if (!watcher) { + watcher = new this.StatWatcher(); + watcher.start(filename, persistent, interval); + this.statWatchers[filename] = watcher; + } + watcher.addListener('change', listener); + return watcher; + } + unwatchFile(path, listener) { + const filename = (0, util_3.pathToFilename)(path); + const watcher = this.statWatchers[filename]; + if (!watcher) + return; + if (typeof listener === 'function') { + watcher.removeListener('change', listener); + } + else { + watcher.removeAllListeners('change'); + } + if (watcher.listenerCount('change') === 0) { + watcher.stop(); + delete this.statWatchers[filename]; + } + } + createReadStream(path, options) { + return new this.ReadStream(path, options); + } + createWriteStream(path, options) { + return new this.WriteStream(path, options); + } + // watch(path: PathLike): FSWatcher; + // watch(path: PathLike, options?: IWatchOptions | string): FSWatcher; + watch(path, options, listener) { + const filename = (0, util_3.pathToFilename)(path); + let givenOptions = options; + if (typeof options === 'function') { + listener = options; + givenOptions = null; + } + // tslint:disable-next-line prefer-const + let { persistent, recursive, encoding } = (0, options_1.getDefaultOpts)(givenOptions); + if (persistent === undefined) + persistent = true; + if (recursive === undefined) + recursive = false; + const watcher = new this.FSWatcher(); + watcher.start(filename, persistent, recursive, encoding); + if (listener) { + watcher.addListener('change', listener); + } + return watcher; + } + _statfs(filename, bigint = false) { + // Verify the path exists to match Node.js behavior + this._core.getResolvedLinkOrThrow(filename, 'statfs'); + return StatFs_1.default.build(this._core, bigint); + } + statfsSync(path, options) { + const { bigint = false } = (0, options_1.getStatfsOptions)(options); + return this._statfs((0, util_3.pathToFilename)(path), bigint); + } + statfs(path, a, b) { + const [{ bigint = false }, callback] = (0, options_1.getStatfsOptsAndCb)(a, b); + this.wrapAsync(this._statfs, [(0, util_3.pathToFilename)(path), bigint], callback); + } + // ---------------------------------------------------------------- Tree View + toTree(opts = { separator: path_1.sep }) { + return (0, fs_print_1.toTreeSync)(this, opts); + } + // ---------------------------------------------------------------- Snapshots + toSnapshot(path = '/') { + return fsSnapshot.toSnapshotSync({ fs: this, path }); + } + fromSnapshot(snapshot, path = '/') { + return fsSnapshot.fromSnapshotSync(snapshot, { fs: this, path }); + } + toBinarySnapshot(path = '/') { + return fsSnapshot.toBinarySnapshotSync({ fs: this, path }); + } + fromBinarySnapshot(binary, path = '/') { + return fsSnapshot.fromBinarySnapshotSync(binary, { fs: this, path }); + } + toJsonSnapshot(path = '/') { + const uint8 = fsSnapshot.toJsonSnapshotSync({ fs: this, path }); + return buffer_1.Buffer.from(uint8).toString('utf8'); + } + fromJsonSnapshot(json, path = '/') { + const uint8 = new Uint8Array(buffer_1.Buffer.from(json, 'utf8')); + return fsSnapshot.fromJsonSnapshotSync(uint8, { fs: this, path }); + } + } + volume.Volume = Volume; + Volume.fromJSON = (json, cwd, opts) => new Volume(fs_core_1.Superblock.fromJSON(json, cwd, opts)); + Volume.fromNestedJSON = (json, cwd, opts) => new Volume(fs_core_1.Superblock.fromNestedJSON(json, cwd, opts)); + function emitStop(self) { + self.emit('stop'); + } + class StatWatcher extends events_1.EventEmitter { + constructor(vol) { + super(); + this.onInterval = () => { + try { + const stats = this.vol.statSync(this.filename); + if (this.hasChanged(stats)) { + this.emit('change', stats, this.prev); + this.prev = stats; + } + } + finally { + this.loop(); + } + }; + this.vol = vol; + } + loop() { + this.timeoutRef = this.setTimeout(this.onInterval, this.interval); + } + hasChanged(stats) { + // if(!this.prev) return false; + if (stats.mtimeMs > this.prev.mtimeMs) + return true; + if (stats.nlink !== this.prev.nlink) + return true; + return false; + } + start(path, persistent = true, interval = 5007) { + this.filename = (0, util_3.pathToFilename)(path); + this.setTimeout = persistent + ? setTimeout.bind(typeof globalThis !== 'undefined' ? globalThis : commonjsGlobal) + : setTimeoutUnref_1.default; + this.interval = interval; + this.prev = this.vol.statSync(this.filename); + this.loop(); + } + stop() { + clearTimeout(this.timeoutRef); + queueMicrotask(() => { + emitStop.call(this, this); + }); + } + } + volume.StatWatcher = StatWatcher; + /* tslint:disable no-var-keyword prefer-const */ + // ---------------------------------------- ReadStream + var pool; + function allocNewPool(poolSize) { + pool = (0, buffer_1.bufferAllocUnsafe)(poolSize); + pool.used = 0; + } + (0, util_2.inherits)(FsReadStream, stream_1.Readable); + volume.ReadStream = FsReadStream; + function FsReadStream(vol, path, options) { + if (!(this instanceof FsReadStream)) + return new FsReadStream(vol, path, options); + this._vol = vol; + // a little bit bigger buffer and water marks by default + options = Object.assign({}, (0, options_1.getOptions)(options, {})); + if (options.highWaterMark === undefined) + options.highWaterMark = 64 * 1024; + stream_1.Readable.call(this, options); + this.path = (0, util_3.pathToFilename)(path); + this._fileHandle = options.fd && typeof options.fd !== 'number' ? options.fd : null; + this.fd = options.fd === undefined ? null : typeof options.fd !== 'number' ? options.fd.fd : options.fd; + this.flags = options.flags === undefined ? 'r' : options.flags; + this.mode = options.mode === undefined ? 0o666 : options.mode; + this.start = options.start; + this.end = options.end; + this.autoClose = options.autoClose === undefined ? true : options.autoClose; + this.pos = undefined; + this.bytesRead = 0; + if (this.start !== undefined) { + if (typeof this.start !== 'number') { + throw new TypeError('"start" option must be a Number'); + } + if (this.end === undefined) { + this.end = Infinity; + } + else if (typeof this.end !== 'number') { + throw new TypeError('"end" option must be a Number'); + } + if (this.start > this.end) { + throw new Error('"start" option must be <= "end" option'); + } + this.pos = this.start; + } + if (typeof this.fd !== 'number') + this.open(); + this.on('end', function () { + if (this.autoClose) { + if (this.destroy) + this.destroy(); + } + }); + } + FsReadStream.prototype.open = function () { + var self = this; // tslint:disable-line no-this-assignment + this._vol.open(this.path, this.flags, this.mode, (er, fd) => { + if (er) { + if (self.autoClose) { + if (self.destroy) + self.destroy(); + } + self.emit('error', er); + return; + } + self.fd = fd; + self.emit('open', fd); + // start the flow of data. + self.read(); + }); + }; + FsReadStream.prototype._read = function (n) { + if (typeof this.fd !== 'number') { + return this.once('open', function () { + this._read(n); + }); + } + if (this.destroyed) + return; + if (!pool || pool.length - pool.used < kMinPoolSpace) { + // discard the old pool. + allocNewPool(this._readableState.highWaterMark); + } + // Grab another reference to the pool in the case that while we're + // in the thread pool another read() finishes up the pool, and + // allocates a new one. + var thisPool = pool; + var toRead = Math.min(pool.length - pool.used, n); + var start = pool.used; + if (this.pos !== undefined) + toRead = Math.min(this.end - this.pos + 1, toRead); + // already read everything we were supposed to read! + // treat as EOF. + if (toRead <= 0) + return this.push(null); + // the actual read. + var self = this; // tslint:disable-line no-this-assignment + this._vol.read(this.fd, pool, pool.used, toRead, this.pos, onread); + // move the pool positions, and internal position for reading. + if (this.pos !== undefined) + this.pos += toRead; + pool.used += toRead; + function onread(er, bytesRead) { + if (er) { + if (self.autoClose && self.destroy) { + self.destroy(); + } + self.emit('error', er); + } + else { + var b = null; + if (bytesRead > 0) { + self.bytesRead += bytesRead; + b = thisPool.slice(start, start + bytesRead); + } + self.push(b); + } + } + }; + FsReadStream.prototype._destroy = function (err, cb) { + this.close(err2 => { + cb(err || err2); + }); + }; + FsReadStream.prototype.close = function (cb) { + if (cb) + this.once('close', cb); + if (this.closed || typeof this.fd !== 'number') { + if (typeof this.fd !== 'number') { + this.once('open', closeOnOpen); + return; + } + return queueMicrotask(() => this.emit('close')); + } + // Since Node 18, there is only a getter for '.closed'. + // The first branch mimics other setters from Readable. + // See https://github.com/nodejs/node/blob/v18.0.0/lib/internal/streams/readable.js#L1243 + if (typeof this._readableState?.closed === 'boolean') { + this._readableState.closed = true; + } + else { + this.closed = true; + } + if (this._fileHandle) { + this._fileHandle.close().then(() => this.emit('close'), er => this.emit('error', er)); + } + else { + this._vol.close(this.fd, er => { + if (er) + this.emit('error', er); + else + this.emit('close'); + }); + } + this.fd = null; + }; + // needed because as it will be called with arguments + // that does not match this.close() signature + function closeOnOpen(fd) { + this.close(); + } + (0, util_2.inherits)(FsWriteStream, stream_1.Writable); + volume.WriteStream = FsWriteStream; + function FsWriteStream(vol, path, options) { + if (!(this instanceof FsWriteStream)) + return new FsWriteStream(vol, path, options); + this._vol = vol; + options = Object.assign({}, (0, options_1.getOptions)(options, {})); + stream_1.Writable.call(this, options); + this.path = (0, util_3.pathToFilename)(path); + this._fileHandle = options.fd && typeof options.fd !== 'number' ? options.fd : null; + this.fd = options.fd === undefined ? null : typeof options.fd !== 'number' ? options.fd.fd : options.fd; + this.flags = options.flags === undefined ? 'w' : options.flags; + this.mode = options.mode === undefined ? 0o666 : options.mode; + this.start = options.start; + this.autoClose = options.autoClose === undefined ? true : !!options.autoClose; + this.pos = undefined; + this.bytesWritten = 0; + this.pending = true; + if (this.start !== undefined) { + if (typeof this.start !== 'number') { + throw new TypeError('"start" option must be a Number'); + } + if (this.start < 0) { + throw new Error('"start" must be >= zero'); + } + this.pos = this.start; + } + if (options.encoding) + this.setDefaultEncoding(options.encoding); + if (typeof this.fd !== 'number') + this.open(); + // dispose on finish. + this.once('finish', function () { + if (this.autoClose) { + this.close(); + } + }); + } + FsWriteStream.prototype.open = function () { + this._vol.open(this.path, this.flags, this.mode, function (er, fd) { + if (er) { + if (this.autoClose && this.destroy) { + this.destroy(); + } + this.emit('error', er); + return; + } + this.fd = fd; + this.pending = false; + this.emit('open', fd); + }.bind(this)); + }; + FsWriteStream.prototype._write = function (data, encoding, cb) { + if (!(data instanceof buffer_1.Buffer || data instanceof Uint8Array)) + return this.emit('error', new Error('Invalid data')); + if (typeof this.fd !== 'number') { + return this.once('open', function () { + this._write(data, encoding, cb); + }); + } + var self = this; // tslint:disable-line no-this-assignment + this._vol.write(this.fd, data, 0, data.length, this.pos, (er, bytes) => { + if (er) { + if (self.autoClose && self.destroy) { + self.destroy(); + } + return cb(er); + } + self.bytesWritten += bytes; + cb(); + }); + if (this.pos !== undefined) + this.pos += data.length; + }; + FsWriteStream.prototype._writev = function (data, cb) { + if (typeof this.fd !== 'number') { + return this.once('open', function () { + this._writev(data, cb); + }); + } + const self = this; // tslint:disable-line no-this-assignment + const len = data.length; + const chunks = new Array(len); + var size = 0; + for (var i = 0; i < len; i++) { + var chunk = data[i].chunk; + chunks[i] = chunk; + size += chunk.length; + } + const buf = buffer_1.Buffer.concat(chunks); + this._vol.write(this.fd, buf, 0, buf.length, this.pos, (er, bytes) => { + if (er) { + if (self.destroy) + self.destroy(); + return cb(er); + } + self.bytesWritten += bytes; + cb(); + }); + if (this.pos !== undefined) + this.pos += size; + }; + FsWriteStream.prototype.close = function (cb) { + if (cb) + this.once('close', cb); + if (this.closed || typeof this.fd !== 'number') { + if (typeof this.fd !== 'number') { + this.once('open', closeOnOpen); + return; + } + return queueMicrotask(() => this.emit('close')); + } + // Since Node 18, there is only a getter for '.closed'. + // The first branch mimics other setters from Writable. + // See https://github.com/nodejs/node/blob/v18.0.0/lib/internal/streams/writable.js#L766 + if (typeof this._writableState?.closed === 'boolean') { + this._writableState.closed = true; + } + else { + this.closed = true; + } + if (this._fileHandle) { + this._fileHandle.close().then(() => this.emit('close'), er => this.emit('error', er)); + } + else { + this._vol.close(this.fd, er => { + if (er) + this.emit('error', er); + else + this.emit('close'); + }); + } + this.fd = null; + }; + FsWriteStream.prototype._destroy = FsReadStream.prototype._destroy; + // There is no shutdown() for files. + FsWriteStream.prototype.destroySoon = FsWriteStream.prototype.end; + // ---------------------------------------- FSWatcher + class FSWatcher extends events_1.EventEmitter { + constructor(vol) { + super(); + this._filename = ''; + this._filenameEncoded = ''; + // _persistent: boolean = true; + this._recursive = false; + this._encoding = fs_node_utils_1.ENCODING_UTF8; + // inode -> removers + this._listenerRemovers = new Map(); + this._onParentChild = (link) => { + if (link.getName() === this._getName()) { + this._emit('rename'); + } + }; + this._emit = (type) => { + this.emit('change', type, this._filenameEncoded); + }; + this._persist = () => { + this._timer = setTimeout(this._persist, 1e6); + }; + this._vol = vol; + // TODO: Emit "error" messages when watching. + // this._handle.onchange = function(status, eventType, filename) { + // if (status < 0) { + // self._handle.close(); + // const error = !filename ? + // errnoException(status, 'Error watching file for changes:') : + // errnoException(status, `Error watching file ${filename} for changes:`); + // error.filename = filename; + // self.emit('error', error); + // } else { + // self.emit('change', eventType, filename); + // } + // }; + } + _getName() { + return this._steps[this._steps.length - 1]; + } + start(path, persistent = true, recursive = false, encoding = fs_node_utils_1.ENCODING_UTF8) { + this._filename = (0, util_3.pathToFilename)(path); + this._steps = (0, fs_core_1.filenameToSteps)(this._filename); + this._filenameEncoded = (0, fs_node_utils_1.strToEncoding)(this._filename); + // this._persistent = persistent; + this._recursive = recursive; + this._encoding = encoding; + try { + this._link = this._vol._core.getLinkOrThrow(this._filename, 'FSWatcher'); + } + catch (err) { + const error = new Error(`watch ${this._filename} ${err.code}`); + error.code = err.code; + error.errno = err.code; + throw error; + } + const watchLinkNodeChanged = (link) => { + const filepath = link.getPath(); + const node = link.getNode(); + const onNodeChange = () => { + let filename = pathRelative(this._filename, filepath); + if (!filename) + filename = this._getName(); + return this.emit('change', 'change', filename); + }; + const unsub = node.changes.listen(([type]) => { + if (type === 'modify') + onNodeChange(); + }); + const removers = this._listenerRemovers.get(node.ino) ?? []; + removers.push(() => unsub()); + this._listenerRemovers.set(node.ino, removers); + }; + const watchLinkChildrenChanged = (link) => { + const node = link.getNode(); + // when a new link added + const onLinkChildAdd = (l) => { + this.emit('change', 'rename', pathRelative(this._filename, l.getPath())); + // 1. watch changes of the new link-node + watchLinkNodeChanged(l); + // 2. watch changes of the new link-node's children + watchLinkChildrenChanged(l); + }; + // when a new link deleted + const onLinkChildDelete = (l) => { + // remove the listeners of the children nodes + const removeLinkNodeListeners = (curLink) => { + const ino = curLink.getNode().ino; + const removers = this._listenerRemovers.get(ino); + if (removers) { + removers.forEach(r => r()); + this._listenerRemovers.delete(ino); + } + for (const [name, childLink] of curLink.children.entries()) { + if (childLink && name !== '.' && name !== '..') { + removeLinkNodeListeners(childLink); + } + } + }; + removeLinkNodeListeners(l); + this.emit('change', 'rename', pathRelative(this._filename, l.getPath())); + }; + // children nodes changed + for (const [name, childLink] of link.children.entries()) { + if (childLink && name !== '.' && name !== '..') { + watchLinkNodeChanged(childLink); + } + } + // link children add/remove + const unsubscribeLinkChanges = link.changes.listen(([type, link]) => { + if (type === 'child:add') + onLinkChildAdd(link); + else if (type === 'child:del') + onLinkChildDelete(link); + }); + const removers = this._listenerRemovers.get(node.ino) ?? []; + removers.push(() => { + unsubscribeLinkChanges(); + }); + if (recursive) { + for (const [name, childLink] of link.children.entries()) { + if (childLink && name !== '.' && name !== '..') { + watchLinkChildrenChanged(childLink); + } + } + } + }; + watchLinkNodeChanged(this._link); + watchLinkChildrenChanged(this._link); + const parent = this._link.parent; + if (parent) { + // parent.on('child:delete', this._onParentChild); + parent.changes.listen(([type, link]) => { + if (type === 'child:del') + this._onParentChild(link); + }); + } + if (persistent) + this._persist(); + } + close() { + clearTimeout(this._timer); + this._listenerRemovers.forEach(removers => { + removers.forEach(r => r()); + }); + this._listenerRemovers.clear(); + this._parentChangesUnsub?.(); + } + } + volume.FSWatcher = FSWatcher; + + return volume; +} + +var fsCallbackApiList = {}; + +var hasRequiredFsCallbackApiList; + +function requireFsCallbackApiList () { + if (hasRequiredFsCallbackApiList) return fsCallbackApiList; + hasRequiredFsCallbackApiList = 1; + Object.defineProperty(fsCallbackApiList, "__esModule", { value: true }); + fsCallbackApiList.fsCallbackApiList = void 0; + fsCallbackApiList.fsCallbackApiList = [ + 'access', + 'appendFile', + 'chmod', + 'chown', + 'close', + 'copyFile', + 'cp', + 'createReadStream', + 'createWriteStream', + 'exists', + 'fchmod', + 'fchown', + 'fdatasync', + 'fstat', + 'fsync', + 'ftruncate', + 'futimes', + 'glob', + 'lchmod', + 'lchown', + 'link', + 'lstat', + 'mkdir', + 'mkdtemp', + 'open', + 'openAsBlob', + 'opendir', + 'read', + 'readv', + 'readdir', + 'readFile', + 'readlink', + 'realpath', + 'rename', + 'rm', + 'rmdir', + 'stat', + 'statfs', + 'symlink', + 'truncate', + 'unlink', + 'unwatchFile', + 'utimes', + 'lutimes', + 'watch', + 'watchFile', + 'write', + 'writev', + 'writeFile', + ]; + + return fsCallbackApiList; +} + +var fsSynchronousApiList = {}; + +var hasRequiredFsSynchronousApiList; + +function requireFsSynchronousApiList () { + if (hasRequiredFsSynchronousApiList) return fsSynchronousApiList; + hasRequiredFsSynchronousApiList = 1; + Object.defineProperty(fsSynchronousApiList, "__esModule", { value: true }); + fsSynchronousApiList.fsSynchronousApiList = void 0; + fsSynchronousApiList.fsSynchronousApiList = [ + 'accessSync', + 'appendFileSync', + 'chmodSync', + 'chownSync', + 'closeSync', + 'copyFileSync', + 'existsSync', + 'fchmodSync', + 'fchownSync', + 'fdatasyncSync', + 'fstatSync', + 'fsyncSync', + 'ftruncateSync', + 'futimesSync', + 'globSync', + 'lchmodSync', + 'lchownSync', + 'linkSync', + 'lstatSync', + 'mkdirSync', + 'mkdtempSync', + 'openSync', + 'opendirSync', + 'readdirSync', + 'readFileSync', + 'readlinkSync', + 'readSync', + 'readvSync', + 'realpathSync', + 'renameSync', + 'rmdirSync', + 'rmSync', + 'statSync', + 'symlinkSync', + 'truncateSync', + 'unlinkSync', + 'utimesSync', + 'lutimesSync', + 'writeFileSync', + 'writeSync', + 'writevSync', + // 'cpSync', + // 'statfsSync', + ]; + + return fsSynchronousApiList; +} + +var fsCommonObjectsList = {}; + +var hasRequiredFsCommonObjectsList; + +function requireFsCommonObjectsList () { + if (hasRequiredFsCommonObjectsList) return fsCommonObjectsList; + hasRequiredFsCommonObjectsList = 1; + Object.defineProperty(fsCommonObjectsList, "__esModule", { value: true }); + fsCommonObjectsList.fsCommonObjectsList = void 0; + fsCommonObjectsList.fsCommonObjectsList = [ + 'F_OK', + 'R_OK', + 'W_OK', + 'X_OK', + 'constants', + 'Stats', + 'StatFs', + 'Dir', + 'Dirent', + 'StatsWatcher', + 'FSWatcher', + 'ReadStream', + 'WriteStream', + ]; + + return fsCommonObjectsList; +} + +var hasRequiredLib$1; + +function requireLib$1 () { + if (hasRequiredLib$1) return lib$7; + hasRequiredLib$1 = 1; + (function (exports$1) { + Object.defineProperty(exports$1, "__esModule", { value: true }); + exports$1.fsCommonObjectsList = exports$1.fsSynchronousApiList = exports$1.fsCallbackApiList = exports$1.FsPromises = exports$1.Dir = exports$1.FileHandle = exports$1.StatFs = exports$1.Dirent = exports$1.Stats = exports$1.toUnixTimestamp = exports$1.FSWatcher = exports$1.StatWatcher = exports$1.Volume = void 0; + const tslib_1 = require$$0$2; + var volume_1 = requireVolume(); + Object.defineProperty(exports$1, "Volume", { enumerable: true, get: function () { return volume_1.Volume; } }); + Object.defineProperty(exports$1, "StatWatcher", { enumerable: true, get: function () { return volume_1.StatWatcher; } }); + Object.defineProperty(exports$1, "FSWatcher", { enumerable: true, get: function () { return volume_1.FSWatcher; } }); + Object.defineProperty(exports$1, "toUnixTimestamp", { enumerable: true, get: function () { return volume_1.toUnixTimestamp; } }); + var Stats_1 = requireStats(); + Object.defineProperty(exports$1, "Stats", { enumerable: true, get: function () { return Stats_1.default; } }); + var Dirent_1 = requireDirent(); + Object.defineProperty(exports$1, "Dirent", { enumerable: true, get: function () { return Dirent_1.default; } }); + var StatFs_1 = requireStatFs(); + Object.defineProperty(exports$1, "StatFs", { enumerable: true, get: function () { return StatFs_1.default; } }); + var FileHandle_1 = requireFileHandle(); + Object.defineProperty(exports$1, "FileHandle", { enumerable: true, get: function () { return FileHandle_1.FileHandle; } }); + var Dir_1 = requireDir(); + Object.defineProperty(exports$1, "Dir", { enumerable: true, get: function () { return Dir_1.Dir; } }); + var FsPromises_1 = requireFsPromises(); + Object.defineProperty(exports$1, "FsPromises", { enumerable: true, get: function () { return FsPromises_1.FsPromises; } }); + tslib_1.__exportStar(requireOptions(), exports$1); + tslib_1.__exportStar(requireUtil$1(), exports$1); + tslib_1.__exportStar(requireGlob(), exports$1); + var fsCallbackApiList_1 = requireFsCallbackApiList(); + Object.defineProperty(exports$1, "fsCallbackApiList", { enumerable: true, get: function () { return fsCallbackApiList_1.fsCallbackApiList; } }); + var fsSynchronousApiList_1 = requireFsSynchronousApiList(); + Object.defineProperty(exports$1, "fsSynchronousApiList", { enumerable: true, get: function () { return fsSynchronousApiList_1.fsSynchronousApiList; } }); + var fsCommonObjectsList_1 = requireFsCommonObjectsList(); + Object.defineProperty(exports$1, "fsCommonObjectsList", { enumerable: true, get: function () { return fsCommonObjectsList_1.fsCommonObjectsList; } }); + + } (lib$7)); + return lib$7; +} + +var hasRequiredLib; + +function requireLib () { + if (hasRequiredLib) return lib$8.exports; + hasRequiredLib = 1; + (function (module, exports$1) { + Object.defineProperty(exports$1, "__esModule", { value: true }); + exports$1.memfs = exports$1.fs = exports$1.vol = exports$1.Volume = void 0; + exports$1.createFsFromVolume = createFsFromVolume; + const fs_node_1 = requireLib$1(); + Object.defineProperty(exports$1, "Volume", { enumerable: true, get: function () { return fs_node_1.Volume; } }); + const fs_node_utils_1 = requireLib$8(); + const { F_OK, R_OK, W_OK, X_OK } = fs_node_utils_1.constants; + // Default volume. + exports$1.vol = new fs_node_1.Volume(); + function createFsFromVolume(vol) { + const fs = { F_OK, R_OK, W_OK, X_OK, constants: fs_node_utils_1.constants, Stats: fs_node_1.Stats, Dirent: fs_node_1.Dirent }; + // Bind FS methods. + for (const method of fs_node_1.fsSynchronousApiList) + if (typeof vol[method] === 'function') + fs[method] = vol[method].bind(vol); + for (const method of fs_node_1.fsCallbackApiList) + if (typeof vol[method] === 'function') + fs[method] = vol[method].bind(vol); + fs.StatWatcher = vol.StatWatcher; + fs.FSWatcher = vol.FSWatcher; + fs.WriteStream = vol.WriteStream; + fs.ReadStream = vol.ReadStream; + fs.promises = vol.promises; + // Handle realpath and realpathSync with their .native properties + if (typeof vol.realpath === 'function') { + fs.realpath = vol.realpath.bind(vol); + if (typeof vol.realpath.native === 'function') { + fs.realpath.native = vol.realpath.native.bind(vol); + } + } + if (typeof vol.realpathSync === 'function') { + fs.realpathSync = vol.realpathSync.bind(vol); + if (typeof vol.realpathSync.native === 'function') { + fs.realpathSync.native = vol.realpathSync.native.bind(vol); + } + } + fs._toUnixTimestamp = fs_node_1.toUnixTimestamp; + fs.__vol = vol; + return fs; + } + exports$1.fs = createFsFromVolume(exports$1.vol); + /** + * Creates a new file system instance. + * + * @param json File system structure expressed as a JSON object. + * Use `null` for empty directories and empty string for empty files. + * @param cwdOrOpts Current working directory (string) or options object. + * The JSON structure will be created relative to the cwd path. + * @returns A `memfs` file system instance, which is a drop-in replacement for + * the `fs` module. + */ + const memfs = (json = {}, cwdOrOpts = '/') => { + const opts = typeof cwdOrOpts === 'string' ? { cwd: cwdOrOpts } : cwdOrOpts; + // When no explicit cwd is given but a custom process is provided, let the + // Superblock use that process's cwd(). Otherwise default to '/' so the + // convenience function keeps its opinionated virtual-root default. + const cwd = opts.cwd ?? (opts.process ? undefined : '/'); + const vol = fs_node_1.Volume.fromNestedJSON(json, cwd, { process: opts.process }); + const fs = createFsFromVolume(vol); + return { fs, vol }; + }; + exports$1.memfs = memfs; + module.exports = { ...module.exports, ...exports$1.fs }; + module.exports.semantic = true; + + } (lib$8, lib$8.exports)); + return lib$8.exports; +} + +var libExports = requireLib(); +var index = /*@__PURE__*/getDefaultExportFromCjs(libExports); + +var memfsExported = /*#__PURE__*/_mergeNamespaces({ + __proto__: null, + default: index +}, [libExports]); + +const { createFsFromVolume, Volume, fs, memfs } = memfsExported; + +export { Buffer, Volume, createFsFromVolume, fs, memfs, memfsExported }; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMuanMiLCJzb3VyY2VzIjpbIi4uLy4uL25vZGVfbW9kdWxlcy90c2xpYi90c2xpYi5lczYubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb2Nlc3MvYnJvd3Nlci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wYXRoLWJyb3dzZXJpZnkvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGpzb25qb3kuY29tL2ZzLW5vZGUtYnVpbHRpbnMvbGliL3BhdGguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGpzb25qb3kuY29tL2ZzLWNvcmUvbGliL3R5cGVzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jhc2U2NC1qcy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9pZWVlNzU0L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2J1ZmZlci9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNvbmpveS5jb20vZnMtbm9kZS1idWlsdGlucy9saWIvYnVmZmVyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0Bqc29uam95LmNvbS9mcy1ub2RlLWJ1aWx0aW5zL2xpYi9pbnRlcm5hbC9idWZmZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGpzb25qb3kuY29tL2ZzLWNvcmUvbGliL2pzb24uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGpzb25qb3kuY29tL2ZzLWNvcmUvbGliL2NvbnN0YW50cy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNvbmpveS5jb20vZnMtY29yZS9saWIvcmVzdWx0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3RoaW5naWVzL2xpYi9mYW5vdXQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGpzb25qb3kuY29tL2ZzLWNvcmUvbGliL3Byb2Nlc3MuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGpzb25qb3kuY29tL2ZzLW5vZGUtdXRpbHMvbGliL3R5cGVzL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0Bqc29uam95LmNvbS9mcy1ub2RlLXV0aWxzL2xpYi9jb25zdGFudHMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGpzb25qb3kuY29tL2ZzLW5vZGUtdXRpbHMvbGliL2NvbnN0cy9BTU9ERS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNvbmpveS5jb20vZnMtbm9kZS11dGlscy9saWIvY29uc3RzL0ZMQUcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGpzb25qb3kuY29tL2ZzLW5vZGUtdXRpbHMvbGliL3BhdGguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGpzb25qb3kuY29tL2ZzLW5vZGUtYnVpbHRpbnMvbGliL3V0aWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGpzb25qb3kuY29tL2ZzLW5vZGUtYnVpbHRpbnMvbGliL2ludGVybmFsL2Vycm9ycy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNvbmpveS5jb20vZnMtbm9kZS11dGlscy9saWIvZW5jb2RpbmcuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGpzb25qb3kuY29tL2ZzLW5vZGUtdXRpbHMvbGliL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0Bqc29uam95LmNvbS9mcy1jb3JlL2xpYi9Ob2RlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0Bqc29uam95LmNvbS9mcy1jb3JlL2xpYi9MaW5rLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0Bqc29uam95LmNvbS9mcy1jb3JlL2xpYi9GaWxlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0Bqc29uam95LmNvbS9mcy1jb3JlL2xpYi9lbmNvZGluZy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9wdW55Y29kZS9wdW55Y29kZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9lcy1lcnJvcnMvdHlwZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9vYmplY3QtaW5zcGVjdC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9zaWRlLWNoYW5uZWwtbGlzdC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9lcy1vYmplY3QtYXRvbXMvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZXMtZXJyb3JzL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2VzLWVycm9ycy9ldmFsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2VzLWVycm9ycy9yYW5nZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9lcy1lcnJvcnMvcmVmLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2VzLWVycm9ycy9zeW50YXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZXMtZXJyb3JzL3VyaS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tYXRoLWludHJpbnNpY3MvYWJzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21hdGgtaW50cmluc2ljcy9mbG9vci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tYXRoLWludHJpbnNpY3MvbWF4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21hdGgtaW50cmluc2ljcy9taW4uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWF0aC1pbnRyaW5zaWNzL3Bvdy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tYXRoLWludHJpbnNpY3Mvcm91bmQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWF0aC1pbnRyaW5zaWNzL2lzTmFOLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21hdGgtaW50cmluc2ljcy9zaWduLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2dvcGQvZ09QRC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9nb3BkL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2VzLWRlZmluZS1wcm9wZXJ0eS9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXMtc3ltYm9scy9zaGFtcy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXMtc3ltYm9scy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9nZXQtcHJvdG8vUmVmbGVjdC5nZXRQcm90b3R5cGVPZi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9nZXQtcHJvdG8vT2JqZWN0LmdldFByb3RvdHlwZU9mLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Z1bmN0aW9uLWJpbmQvaW1wbGVtZW50YXRpb24uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZnVuY3Rpb24tYmluZC9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9jYWxsLWJpbmQtYXBwbHktaGVscGVycy9mdW5jdGlvbkNhbGwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvY2FsbC1iaW5kLWFwcGx5LWhlbHBlcnMvZnVuY3Rpb25BcHBseS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9jYWxsLWJpbmQtYXBwbHktaGVscGVycy9yZWZsZWN0QXBwbHkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvY2FsbC1iaW5kLWFwcGx5LWhlbHBlcnMvYWN0dWFsQXBwbHkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvY2FsbC1iaW5kLWFwcGx5LWhlbHBlcnMvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZHVuZGVyLXByb3RvL2dldC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9nZXQtcHJvdG8vaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvYXN5bmMtZnVuY3Rpb24vaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZ2VuZXJhdG9yLWZ1bmN0aW9uL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2FzeW5jLWdlbmVyYXRvci1mdW5jdGlvbi9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9oYXNvd24vaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZ2V0LWludHJpbnNpYy9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9jYWxsLWJvdW5kL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3NpZGUtY2hhbm5lbC1tYXAvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvc2lkZS1jaGFubmVsLXdlYWttYXAvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvc2lkZS1jaGFubmVsL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3FzL2xpYi9mb3JtYXRzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3FzL2xpYi91dGlscy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9xcy9saWIvc3RyaW5naWZ5LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3FzL2xpYi9wYXJzZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9xcy9saWIvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdXJsL3VybC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNvbmpveS5jb20vZnMtY29yZS9saWIvdXRpbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNvbmpveS5jb20vZnMtY29yZS9saWIvU3VwZXJibG9jay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNvbmpveS5jb20vZnMtY29yZS9saWIvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGpzb25qb3kuY29tL2ZzLW5vZGUvbGliL1N0YXRzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0Bqc29uam95LmNvbS9mcy1ub2RlL2xpYi9EaXJlbnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGpzb25qb3kuY29tL2ZzLW5vZGUvbGliL1N0YXRGcy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNvbmpveS5jb20vZnMtbm9kZS11dGlscy9saWIvc2V0VGltZW91dFVucmVmLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvb3Vycy9wcmltb3JkaWFscy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL291cnMvdXRpbC9pbnNwZWN0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvb3Vycy9lcnJvcnMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvYWJvcnQtY29udHJvbGxlci9icm93c2VyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2V2ZW50cy9ldmVudHMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9vdXJzL3V0aWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC92YWxpZGF0b3JzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy91dGlscy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvZW5kLW9mLXN0cmVhbS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvZGVzdHJveS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvbGVnYWN5LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9hZGQtYWJvcnQtc2lnbmFsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9idWZmZXJfbGlzdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvc3RhdGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvc2FmZS1idWZmZXIvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvc3RyaW5nX2RlY29kZXIvbGliL3N0cmluZ19kZWNvZGVyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9mcm9tLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9yZWFkYWJsZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvd3JpdGFibGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL2R1cGxleGlmeS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvZHVwbGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy90cmFuc2Zvcm0uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL3Bhc3N0aHJvdWdoLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9waXBlbGluZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvY29tcG9zZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvb3BlcmF0b3JzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvc3RyZWFtL3Byb21pc2VzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvc3RyZWFtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvb3Vycy9icm93c2VyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0Bqc29uam95LmNvbS9mcy1ub2RlLWJ1aWx0aW5zL2xpYi9zdHJlYW0uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGpzb25qb3kuY29tL2ZzLW5vZGUtYnVpbHRpbnMvbGliL2V2ZW50cy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNvbmpveS5jb20vZnMtbm9kZS9saWIvdXRpbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNvbmpveS5jb20vZnMtbm9kZS9saWIvRmlsZUhhbmRsZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNvbmpveS5jb20vZnMtbm9kZS9saWIvRnNQcm9taXNlcy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy90cmVlLWR1bXAvbGliL3ByaW50VHJlZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy90cmVlLWR1bXAvbGliL3ByaW50QmluYXJ5LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3RyZWUtZHVtcC9saWIvcHJpbnRKc29uLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3RyZWUtZHVtcC9saWIvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGpzb25qb3kuY29tL2ZzLXByaW50L2xpYi9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNvbmpveS5jb20vZnMtc25hcHNob3QvbGliL2NvbnN0YW50cy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNvbmpveS5jb20vZnMtc25hcHNob3QvbGliL3N5bmMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGpzb25qb3kuY29tL2J1ZmZlcnMvbGliL2lzRmxvYXQzMi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNvbmpveS5jb20vanNvbi1wYWNrL2xpYi9Kc29uUGFja0V4dGVuc2lvbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNvbmpveS5jb20vYnVmZmVycy9saWIvU2xpY2UuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGpzb25qb3kuY29tL2J1ZmZlcnMvbGliL1dyaXRlci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNvbmpveS5jb20vanNvbi1wYWNrL2xpYi9jYm9yL0Nib3JFbmNvZGVyRmFzdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNvbmpveS5jb20vanNvbi1wYWNrL2xpYi9Kc29uUGFja1ZhbHVlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0Bqc29uam95LmNvbS9qc29uLXBhY2svbGliL2Nib3IvQ2JvckVuY29kZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGpzb25qb3kuY29tL2J1ZmZlcnMvbGliL2YxNi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNvbmpveS5jb20vYnVmZmVycy9saWIvdXRmOC9kZWNvZGVBc2NpaS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNvbmpveS5jb20vYnVmZmVycy9saWIvdXRmOC9kZWNvZGVVdGY4L3YxOC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNvbmpveS5jb20vYnVmZmVycy9saWIvdXRmOC9kZWNvZGVVdGY4L3YxNi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNvbmpveS5jb20vYnVmZmVycy9saWIvdXRmOC9kZWNvZGVVdGY4L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0Bqc29uam95LmNvbS9idWZmZXJzL2xpYi9SZWFkZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGpzb25qb3kuY29tL2J1ZmZlcnMvbGliL3V0ZjgvZGVjb2RlVXRmOC92MTAuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGpzb25qb3kuY29tL2J1ZmZlcnMvbGliL3V0ZjgvQ2FjaGVkVXRmOERlY29kZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGpzb25qb3kuY29tL2J1ZmZlcnMvbGliL3V0Zjgvc2hhcmVkQ2FjaGVkVXRmOERlY29kZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGpzb25qb3kuY29tL2pzb24tcGFjay9saWIvY2Jvci9DYm9yRGVjb2RlckJhc2UuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGpzb25qb3kuY29tL2pzb24tcGFjay9saWIvY2Jvci9DYm9yRGVjb2Rlci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNvbmpveS5jb20vZnMtc25hcHNob3QvbGliL2FzeW5jLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0Bqc29uam95LmNvbS9mcy1zbmFwc2hvdC9saWIvc2hhcmVkLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0Bqc29uam95LmNvbS9mcy1zbmFwc2hvdC9saWIvYmluYXJ5LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0Bqc29uam95LmNvbS9iYXNlNjQvbGliL2NvbnN0YW50cy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNvbmpveS5jb20vYmFzZTY0L2xpYi9jcmVhdGVUb0Jhc2U2NEJpbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNvbmpveS5jb20vYmFzZTY0L2xpYi90b0Jhc2U2NEJpbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNvbmpveS5jb20vanNvbi1wYWNrL2xpYi9qc29uL0pzb25FbmNvZGVyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0Bqc29uam95LmNvbS9iYXNlNjQvbGliL2NyZWF0ZUZyb21CYXNlNjRCaW4uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGpzb25qb3kuY29tL2Jhc2U2NC9saWIvZnJvbUJhc2U2NEJpbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNvbmpveS5jb20vanNvbi1wYWNrL2xpYi9qc29uL3V0aWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGpzb25qb3kuY29tL2pzb24tcGFjay9saWIvanNvbi9Kc29uRGVjb2Rlci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNvbmpveS5jb20vZnMtc25hcHNob3QvbGliL2pzb24uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGpzb25qb3kuY29tL2ZzLXNuYXBzaG90L2xpYi9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNvbmpveS5jb20vZnMtbm9kZS9saWIvb3B0aW9ucy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNvbmpveS5jb20vZnMtbm9kZS9saWIvRGlyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2dsb2ItdG8tcmVnZXguanMvbGliL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0Bqc29uam95LmNvbS9mcy1ub2RlL2xpYi9nbG9iLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0Bqc29uam95LmNvbS9mcy1ub2RlL2xpYi92b2x1bWUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGpzb25qb3kuY29tL2ZzLW5vZGUvbGliL2xpc3RzL2ZzQ2FsbGJhY2tBcGlMaXN0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0Bqc29uam95LmNvbS9mcy1ub2RlL2xpYi9saXN0cy9mc1N5bmNocm9ub3VzQXBpTGlzdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNvbmpveS5jb20vZnMtbm9kZS9saWIvbGlzdHMvZnNDb21tb25PYmplY3RzTGlzdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AanNvbmpveS5jb20vZnMtbm9kZS9saWIvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWVtZnMvbGliL2luZGV4LmpzIiwiLi4vZnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXG5cblBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxucHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxuXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXG5SRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcbklORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxuTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1Jcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcblBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UsIFN1cHByZXNzZWRFcnJvciwgU3ltYm9sLCBJdGVyYXRvciAqL1xuXG52YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uKGQsIGIpIHtcbiAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcbiAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcbiAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbClcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcbiAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbn1cblxuZXhwb3J0IHZhciBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xuICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xuICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHQ7XG4gIH1cbiAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3Jlc3QocywgZSkge1xuICB2YXIgdCA9IHt9O1xuICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgIHRbcF0gPSBzW3BdO1xuICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgIH1cbiAgcmV0dXJuIHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2RlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XG4gIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XG4gIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XG4gIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XG4gIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3BhcmFtKHBhcmFtSW5kZXgsIGRlY29yYXRvcikge1xuICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fZXNEZWNvcmF0ZShjdG9yLCBkZXNjcmlwdG9ySW4sIGRlY29yYXRvcnMsIGNvbnRleHRJbiwgaW5pdGlhbGl6ZXJzLCBleHRyYUluaXRpYWxpemVycykge1xuICBmdW5jdGlvbiBhY2NlcHQoZikgeyBpZiAoZiAhPT0gdm9pZCAwICYmIHR5cGVvZiBmICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJGdW5jdGlvbiBleHBlY3RlZFwiKTsgcmV0dXJuIGY7IH1cbiAgdmFyIGtpbmQgPSBjb250ZXh0SW4ua2luZCwga2V5ID0ga2luZCA9PT0gXCJnZXR0ZXJcIiA/IFwiZ2V0XCIgOiBraW5kID09PSBcInNldHRlclwiID8gXCJzZXRcIiA6IFwidmFsdWVcIjtcbiAgdmFyIHRhcmdldCA9ICFkZXNjcmlwdG9ySW4gJiYgY3RvciA/IGNvbnRleHRJbltcInN0YXRpY1wiXSA/IGN0b3IgOiBjdG9yLnByb3RvdHlwZSA6IG51bGw7XG4gIHZhciBkZXNjcmlwdG9yID0gZGVzY3JpcHRvckluIHx8ICh0YXJnZXQgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgY29udGV4dEluLm5hbWUpIDoge30pO1xuICB2YXIgXywgZG9uZSA9IGZhbHNlO1xuICBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGNvbnRleHQgPSB7fTtcbiAgICAgIGZvciAodmFyIHAgaW4gY29udGV4dEluKSBjb250ZXh0W3BdID0gcCA9PT0gXCJhY2Nlc3NcIiA/IHt9IDogY29udGV4dEluW3BdO1xuICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4uYWNjZXNzKSBjb250ZXh0LmFjY2Vzc1twXSA9IGNvbnRleHRJbi5hY2Nlc3NbcF07XG4gICAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyID0gZnVuY3Rpb24gKGYpIHsgaWYgKGRvbmUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWRcIik7IGV4dHJhSW5pdGlhbGl6ZXJzLnB1c2goYWNjZXB0KGYgfHwgbnVsbCkpOyB9O1xuICAgICAgdmFyIHJlc3VsdCA9ICgwLCBkZWNvcmF0b3JzW2ldKShraW5kID09PSBcImFjY2Vzc29yXCIgPyB7IGdldDogZGVzY3JpcHRvci5nZXQsIHNldDogZGVzY3JpcHRvci5zZXQgfSA6IGRlc2NyaXB0b3Jba2V5XSwgY29udGV4dCk7XG4gICAgICBpZiAoa2luZCA9PT0gXCJhY2Nlc3NvclwiKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gdm9pZCAwKSBjb250aW51ZTtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsIHx8IHR5cGVvZiByZXN1bHQgIT09IFwib2JqZWN0XCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3QgZXhwZWN0ZWRcIik7XG4gICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmdldCkpIGRlc2NyaXB0b3IuZ2V0ID0gXztcbiAgICAgICAgICBpZiAoXyA9IGFjY2VwdChyZXN1bHQuc2V0KSkgZGVzY3JpcHRvci5zZXQgPSBfO1xuICAgICAgICAgIGlmIChfID0gYWNjZXB0KHJlc3VsdC5pbml0KSkgaW5pdGlhbGl6ZXJzLnVuc2hpZnQoXyk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChfID0gYWNjZXB0KHJlc3VsdCkpIHtcbiAgICAgICAgICBpZiAoa2luZCA9PT0gXCJmaWVsZFwiKSBpbml0aWFsaXplcnMudW5zaGlmdChfKTtcbiAgICAgICAgICBlbHNlIGRlc2NyaXB0b3Jba2V5XSA9IF87XG4gICAgICB9XG4gIH1cbiAgaWYgKHRhcmdldCkgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgY29udGV4dEluLm5hbWUsIGRlc2NyaXB0b3IpO1xuICBkb25lID0gdHJ1ZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3J1bkluaXRpYWxpemVycyh0aGlzQXJnLCBpbml0aWFsaXplcnMsIHZhbHVlKSB7XG4gIHZhciB1c2VWYWx1ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAyO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGluaXRpYWxpemVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFsdWUgPSB1c2VWYWx1ZSA/IGluaXRpYWxpemVyc1tpXS5jYWxsKHRoaXNBcmcsIHZhbHVlKSA6IGluaXRpYWxpemVyc1tpXS5jYWxsKHRoaXNBcmcpO1xuICB9XG4gIHJldHVybiB1c2VWYWx1ZSA/IHZhbHVlIDogdm9pZCAwO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fcHJvcEtleSh4KSB7XG4gIHJldHVybiB0eXBlb2YgeCA9PT0gXCJzeW1ib2xcIiA/IHggOiBcIlwiLmNvbmNhdCh4KTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3NldEZ1bmN0aW9uTmFtZShmLCBuYW1lLCBwcmVmaXgpIHtcbiAgaWYgKHR5cGVvZiBuYW1lID09PSBcInN5bWJvbFwiKSBuYW1lID0gbmFtZS5kZXNjcmlwdGlvbiA/IFwiW1wiLmNvbmNhdChuYW1lLmRlc2NyaXB0aW9uLCBcIl1cIikgOiBcIlwiO1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGYsIFwibmFtZVwiLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHByZWZpeCA/IFwiXCIuY29uY2F0KHByZWZpeCwgXCIgXCIsIG5hbWUpIDogbmFtZSB9KTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XG4gIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2dlbmVyYXRvcih0aGlzQXJnLCBib2R5KSB7XG4gIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGcgPSBPYmplY3QuY3JlYXRlKCh0eXBlb2YgSXRlcmF0b3IgPT09IFwiZnVuY3Rpb25cIiA/IEl0ZXJhdG9yIDogT2JqZWN0KS5wcm90b3R5cGUpO1xuICByZXR1cm4gZy5uZXh0ID0gdmVyYigwKSwgZ1tcInRocm93XCJdID0gdmVyYigxKSwgZ1tcInJldHVyblwiXSA9IHZlcmIoMiksIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgfVxufVxuXG5leHBvcnQgdmFyIF9fY3JlYXRlQmluZGluZyA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xuICBpZiAoIWRlc2MgfHwgKFwiZ2V0XCIgaW4gZGVzYyA/ICFtLl9fZXNNb2R1bGUgOiBkZXNjLndyaXRhYmxlIHx8IGRlc2MuY29uZmlndXJhYmxlKSkge1xuICAgICAgZGVzYyA9IHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfTtcbiAgfVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIGRlc2MpO1xufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgb1trMl0gPSBtW2tdO1xufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgbykge1xuICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sIHApKSBfX2NyZWF0ZUJpbmRpbmcobywgbSwgcCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3ZhbHVlcyhvKSB7XG4gIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XG4gIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICB9XG4gIH07XG4gIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVhZChvLCBuKSB7XG4gIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCFtKSByZXR1cm4gbztcbiAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gIHRyeSB7XG4gICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcbiAgfVxuICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgfVxuICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gIH1cbiAgcmV0dXJuIGFyO1xufVxuXG4vKiogQGRlcHJlY2F0ZWQgKi9cbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZCgpIHtcbiAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXG4gICAgICBhciA9IGFyLmNvbmNhdChfX3JlYWQoYXJndW1lbnRzW2ldKSk7XG4gIHJldHVybiBhcjtcbn1cblxuLyoqIEBkZXByZWNhdGVkICovXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheXMoKSB7XG4gIGZvciAodmFyIHMgPSAwLCBpID0gMCwgaWwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgaWw7IGkrKykgcyArPSBhcmd1bWVudHNbaV0ubGVuZ3RoO1xuICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXG4gICAgICBmb3IgKHZhciBhID0gYXJndW1lbnRzW2ldLCBqID0gMCwgamwgPSBhLmxlbmd0aDsgaiA8IGpsOyBqKyssIGsrKylcbiAgICAgICAgICByW2tdID0gYVtqXTtcbiAgcmV0dXJuIHI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5KHRvLCBmcm9tLCBwYWNrKSB7XG4gIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XG4gICAgICBpZiAoYXIgfHwgIShpIGluIGZyb20pKSB7XG4gICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcbiAgICAgICAgICBhcltpXSA9IGZyb21baV07XG4gICAgICB9XG4gIH1cbiAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0KHYpIHtcbiAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBfX2F3YWl0ID8gKHRoaXMudiA9IHYsIHRoaXMpIDogbmV3IF9fYXdhaXQodik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jR2VuZXJhdG9yKHRoaXNBcmcsIF9hcmd1bWVudHMsIGdlbmVyYXRvcikge1xuICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xuICB2YXIgZyA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSwgaSwgcSA9IFtdO1xuICByZXR1cm4gaSA9IE9iamVjdC5jcmVhdGUoKHR5cGVvZiBBc3luY0l0ZXJhdG9yID09PSBcImZ1bmN0aW9uXCIgPyBBc3luY0l0ZXJhdG9yIDogT2JqZWN0KS5wcm90b3R5cGUpLCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIsIGF3YWl0UmV0dXJuKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xuICBmdW5jdGlvbiBhd2FpdFJldHVybihmKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHYpLnRoZW4oZiwgcmVqZWN0KTsgfTsgfVxuICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaWYgKGdbbl0pIHsgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgaWYgKGYpIGlbbl0gPSBmKGlbbl0pOyB9IH1cbiAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxuICBmdW5jdGlvbiBzdGVwKHIpIHsgci52YWx1ZSBpbnN0YW5jZW9mIF9fYXdhaXQgPyBQcm9taXNlLnJlc29sdmUoci52YWx1ZS52KS50aGVuKGZ1bGZpbGwsIHJlamVjdCkgOiBzZXR0bGUocVswXVsyXSwgcik7IH1cbiAgZnVuY3Rpb24gZnVsZmlsbCh2YWx1ZSkgeyByZXN1bWUoXCJuZXh0XCIsIHZhbHVlKTsgfVxuICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XG4gIGZ1bmN0aW9uIHNldHRsZShmLCB2KSB7IGlmIChmKHYpLCBxLnNoaWZ0KCksIHEubGVuZ3RoKSByZXN1bWUocVswXVswXSwgcVswXVsxXSk7IH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNEZWxlZ2F0b3Iobykge1xuICB2YXIgaSwgcDtcbiAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcbiAgZnVuY3Rpb24gdmVyYihuLCBmKSB7IGlbbl0gPSBvW25dID8gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIChwID0gIXApID8geyB2YWx1ZTogX19hd2FpdChvW25dKHYpKSwgZG9uZTogZmFsc2UgfSA6IGYgPyBmKHYpIDogdjsgfSA6IGY7IH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNWYWx1ZXMobykge1xuICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xuICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xuICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IChvID0gdHlwZW9mIF9fdmFsdWVzID09PSBcImZ1bmN0aW9uXCIgPyBfX3ZhbHVlcyhvKSA6IG9bU3ltYm9sLml0ZXJhdG9yXSgpLCBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaSk7XG4gIGZ1bmN0aW9uIHZlcmIobikgeyBpW25dID0gb1tuXSAmJiBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyB2ID0gb1tuXSh2KSwgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgdi5kb25lLCB2LnZhbHVlKTsgfSk7IH07IH1cbiAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcbiAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cbiAgcmV0dXJuIGNvb2tlZDtcbn07XG5cbnZhciBfX3NldE1vZHVsZURlZmF1bHQgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIHYpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xufSkgOiBmdW5jdGlvbihvLCB2KSB7XG4gIG9bXCJkZWZhdWx0XCJdID0gdjtcbn07XG5cbnZhciBvd25LZXlzID0gZnVuY3Rpb24obykge1xuICBvd25LZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgfHwgZnVuY3Rpb24gKG8pIHtcbiAgICB2YXIgYXIgPSBbXTtcbiAgICBmb3IgKHZhciBrIGluIG8pIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobywgaykpIGFyW2FyLmxlbmd0aF0gPSBrO1xuICAgIHJldHVybiBhcjtcbiAgfTtcbiAgcmV0dXJuIG93bktleXMobyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xuICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xuICB2YXIgcmVzdWx0ID0ge307XG4gIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayA9IG93bktleXMobW9kKSwgaSA9IDA7IGkgPCBrLmxlbmd0aDsgaSsrKSBpZiAoa1tpXSAhPT0gXCJkZWZhdWx0XCIpIF9fY3JlYXRlQmluZGluZyhyZXN1bHQsIG1vZCwga1tpXSk7XG4gIF9fc2V0TW9kdWxlRGVmYXVsdChyZXN1bHQsIG1vZCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XG4gIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgZGVmYXVsdDogbW9kIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHJlY2VpdmVyLCBzdGF0ZSwga2luZCwgZikge1xuICBpZiAoa2luZCA9PT0gXCJhXCIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBnZXR0ZXJcIik7XG4gIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xuICByZXR1cm4ga2luZCA9PT0gXCJtXCIgPyBmIDoga2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIpIDogZiA/IGYudmFsdWUgOiBzdGF0ZS5nZXQocmVjZWl2ZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZFNldChyZWNlaXZlciwgc3RhdGUsIHZhbHVlLCBraW5kLCBmKSB7XG4gIGlmIChraW5kID09PSBcIm1cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgbWV0aG9kIGlzIG5vdCB3cml0YWJsZVwiKTtcbiAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xuICBpZiAodHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCB3cml0ZSBwcml2YXRlIG1lbWJlciB0byBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xuICByZXR1cm4gKGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyLCB2YWx1ZSkgOiBmID8gZi52YWx1ZSA9IHZhbHVlIDogc3RhdGUuc2V0KHJlY2VpdmVyLCB2YWx1ZSkpLCB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRJbihzdGF0ZSwgcmVjZWl2ZXIpIHtcbiAgaWYgKHJlY2VpdmVyID09PSBudWxsIHx8ICh0eXBlb2YgcmVjZWl2ZXIgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHJlY2VpdmVyICE9PSBcImZ1bmN0aW9uXCIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3RcIik7XG4gIHJldHVybiB0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyID09PSBzdGF0ZSA6IHN0YXRlLmhhcyhyZWNlaXZlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2FkZERpc3Bvc2FibGVSZXNvdXJjZShlbnYsIHZhbHVlLCBhc3luYykge1xuICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHZvaWQgMCkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3QgZXhwZWN0ZWQuXCIpO1xuICAgIHZhciBkaXNwb3NlLCBpbm5lcjtcbiAgICBpZiAoYXN5bmMpIHtcbiAgICAgIGlmICghU3ltYm9sLmFzeW5jRGlzcG9zZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0Rpc3Bvc2UgaXMgbm90IGRlZmluZWQuXCIpO1xuICAgICAgZGlzcG9zZSA9IHZhbHVlW1N5bWJvbC5hc3luY0Rpc3Bvc2VdO1xuICAgIH1cbiAgICBpZiAoZGlzcG9zZSA9PT0gdm9pZCAwKSB7XG4gICAgICBpZiAoIVN5bWJvbC5kaXNwb3NlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmRpc3Bvc2UgaXMgbm90IGRlZmluZWQuXCIpO1xuICAgICAgZGlzcG9zZSA9IHZhbHVlW1N5bWJvbC5kaXNwb3NlXTtcbiAgICAgIGlmIChhc3luYykgaW5uZXIgPSBkaXNwb3NlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGRpc3Bvc2UgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBub3QgZGlzcG9zYWJsZS5cIik7XG4gICAgaWYgKGlubmVyKSBkaXNwb3NlID0gZnVuY3Rpb24oKSB7IHRyeSB7IGlubmVyLmNhbGwodGhpcyk7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIFByb21pc2UucmVqZWN0KGUpOyB9IH07XG4gICAgZW52LnN0YWNrLnB1c2goeyB2YWx1ZTogdmFsdWUsIGRpc3Bvc2U6IGRpc3Bvc2UsIGFzeW5jOiBhc3luYyB9KTtcbiAgfVxuICBlbHNlIGlmIChhc3luYykge1xuICAgIGVudi5zdGFjay5wdXNoKHsgYXN5bmM6IHRydWUgfSk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG52YXIgX1N1cHByZXNzZWRFcnJvciA9IHR5cGVvZiBTdXBwcmVzc2VkRXJyb3IgPT09IFwiZnVuY3Rpb25cIiA/IFN1cHByZXNzZWRFcnJvciA6IGZ1bmN0aW9uIChlcnJvciwgc3VwcHJlc3NlZCwgbWVzc2FnZSkge1xuICB2YXIgZSA9IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgcmV0dXJuIGUubmFtZSA9IFwiU3VwcHJlc3NlZEVycm9yXCIsIGUuZXJyb3IgPSBlcnJvciwgZS5zdXBwcmVzc2VkID0gc3VwcHJlc3NlZCwgZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2Rpc3Bvc2VSZXNvdXJjZXMoZW52KSB7XG4gIGZ1bmN0aW9uIGZhaWwoZSkge1xuICAgIGVudi5lcnJvciA9IGVudi5oYXNFcnJvciA/IG5ldyBfU3VwcHJlc3NlZEVycm9yKGUsIGVudi5lcnJvciwgXCJBbiBlcnJvciB3YXMgc3VwcHJlc3NlZCBkdXJpbmcgZGlzcG9zYWwuXCIpIDogZTtcbiAgICBlbnYuaGFzRXJyb3IgPSB0cnVlO1xuICB9XG4gIHZhciByLCBzID0gMDtcbiAgZnVuY3Rpb24gbmV4dCgpIHtcbiAgICB3aGlsZSAociA9IGVudi5zdGFjay5wb3AoKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKCFyLmFzeW5jICYmIHMgPT09IDEpIHJldHVybiBzID0gMCwgZW52LnN0YWNrLnB1c2gociksIFByb21pc2UucmVzb2x2ZSgpLnRoZW4obmV4dCk7XG4gICAgICAgIGlmIChyLmRpc3Bvc2UpIHtcbiAgICAgICAgICB2YXIgcmVzdWx0ID0gci5kaXNwb3NlLmNhbGwoci52YWx1ZSk7XG4gICAgICAgICAgaWYgKHIuYXN5bmMpIHJldHVybiBzIHw9IDIsIFByb21pc2UucmVzb2x2ZShyZXN1bHQpLnRoZW4obmV4dCwgZnVuY3Rpb24oZSkgeyBmYWlsKGUpOyByZXR1cm4gbmV4dCgpOyB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHMgfD0gMTtcbiAgICAgIH1cbiAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgIGZhaWwoZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzID09PSAxKSByZXR1cm4gZW52Lmhhc0Vycm9yID8gUHJvbWlzZS5yZWplY3QoZW52LmVycm9yKSA6IFByb21pc2UucmVzb2x2ZSgpO1xuICAgIGlmIChlbnYuaGFzRXJyb3IpIHRocm93IGVudi5lcnJvcjtcbiAgfVxuICByZXR1cm4gbmV4dCgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19yZXdyaXRlUmVsYXRpdmVJbXBvcnRFeHRlbnNpb24ocGF0aCwgcHJlc2VydmVKc3gpIHtcbiAgaWYgKHR5cGVvZiBwYXRoID09PSBcInN0cmluZ1wiICYmIC9eXFwuXFwuP1xcLy8udGVzdChwYXRoKSkge1xuICAgICAgcmV0dXJuIHBhdGgucmVwbGFjZSgvXFwuKHRzeCkkfCgoPzpcXC5kKT8pKCg/OlxcLlteLi9dKz8pPylcXC4oW2NtXT8pdHMkL2ksIGZ1bmN0aW9uIChtLCB0c3gsIGQsIGV4dCwgY20pIHtcbiAgICAgICAgICByZXR1cm4gdHN4ID8gcHJlc2VydmVKc3ggPyBcIi5qc3hcIiA6IFwiLmpzXCIgOiBkICYmICghZXh0IHx8ICFjbSkgPyBtIDogKGQgKyBleHQgKyBcIi5cIiArIGNtLnRvTG93ZXJDYXNlKCkgKyBcImpzXCIpO1xuICAgICAgfSk7XG4gIH1cbiAgcmV0dXJuIHBhdGg7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgX19leHRlbmRzLFxuICBfX2Fzc2lnbixcbiAgX19yZXN0LFxuICBfX2RlY29yYXRlLFxuICBfX3BhcmFtLFxuICBfX2VzRGVjb3JhdGUsXG4gIF9fcnVuSW5pdGlhbGl6ZXJzLFxuICBfX3Byb3BLZXksXG4gIF9fc2V0RnVuY3Rpb25OYW1lLFxuICBfX21ldGFkYXRhLFxuICBfX2F3YWl0ZXIsXG4gIF9fZ2VuZXJhdG9yLFxuICBfX2NyZWF0ZUJpbmRpbmcsXG4gIF9fZXhwb3J0U3RhcixcbiAgX192YWx1ZXMsXG4gIF9fcmVhZCxcbiAgX19zcHJlYWQsXG4gIF9fc3ByZWFkQXJyYXlzLFxuICBfX3NwcmVhZEFycmF5LFxuICBfX2F3YWl0LFxuICBfX2FzeW5jR2VuZXJhdG9yLFxuICBfX2FzeW5jRGVsZWdhdG9yLFxuICBfX2FzeW5jVmFsdWVzLFxuICBfX21ha2VUZW1wbGF0ZU9iamVjdCxcbiAgX19pbXBvcnRTdGFyLFxuICBfX2ltcG9ydERlZmF1bHQsXG4gIF9fY2xhc3NQcml2YXRlRmllbGRHZXQsXG4gIF9fY2xhc3NQcml2YXRlRmllbGRTZXQsXG4gIF9fY2xhc3NQcml2YXRlRmllbGRJbixcbiAgX19hZGREaXNwb3NhYmxlUmVzb3VyY2UsXG4gIF9fZGlzcG9zZVJlc291cmNlcyxcbiAgX19yZXdyaXRlUmVsYXRpdmVJbXBvcnRFeHRlbnNpb24sXG59O1xuIiwiLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG52YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XG5cbi8vIGNhY2hlZCBmcm9tIHdoYXRldmVyIGdsb2JhbCBpcyBwcmVzZW50IHNvIHRoYXQgdGVzdCBydW5uZXJzIHRoYXQgc3R1YiBpdFxuLy8gZG9uJ3QgYnJlYWsgdGhpbmdzLiAgQnV0IHdlIG5lZWQgdG8gd3JhcCBpdCBpbiBhIHRyeSBjYXRjaCBpbiBjYXNlIGl0IGlzXG4vLyB3cmFwcGVkIGluIHN0cmljdCBtb2RlIGNvZGUgd2hpY2ggZG9lc24ndCBkZWZpbmUgYW55IGdsb2JhbHMuICBJdCdzIGluc2lkZSBhXG4vLyBmdW5jdGlvbiBiZWNhdXNlIHRyeS9jYXRjaGVzIGRlb3B0aW1pemUgaW4gY2VydGFpbiBlbmdpbmVzLlxuXG52YXIgY2FjaGVkU2V0VGltZW91dDtcbnZhciBjYWNoZWRDbGVhclRpbWVvdXQ7XG5cbmZ1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG5mdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1lb3V0ICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIHNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIGNsZWFyVGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICB9XG59ICgpKVxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbmZ1bmN0aW9uIHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcbiAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0Q2xlYXJUaW1lb3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfSBjYXRjaCAoZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgIHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcbiAgICAgICAgfSBjYXRjaCAoZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgd2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxuXG5wcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59O1xuXG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xucHJvY2Vzcy50aXRsZSA9ICdicm93c2VyJztcbnByb2Nlc3MuYnJvd3NlciA9IHRydWU7XG5wcm9jZXNzLmVudiA9IHt9O1xucHJvY2Vzcy5hcmd2ID0gW107XG5wcm9jZXNzLnZlcnNpb24gPSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcbnByb2Nlc3MudmVyc2lvbnMgPSB7fTtcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnByb2Nlc3Mub24gPSBub29wO1xucHJvY2Vzcy5hZGRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLm9uY2UgPSBub29wO1xucHJvY2Vzcy5vZmYgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUFsbExpc3RlbmVycyA9IG5vb3A7XG5wcm9jZXNzLmVtaXQgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kT25jZUxpc3RlbmVyID0gbm9vcDtcblxucHJvY2Vzcy5saXN0ZW5lcnMgPSBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gW10gfVxuXG5wcm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5cbnByb2Nlc3MuY3dkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJy8nIH07XG5wcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xucHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcbiIsIi8vICdwYXRoJyBtb2R1bGUgZXh0cmFjdGVkIGZyb20gTm9kZS5qcyB2OC4xMS4xIChvbmx5IHRoZSBwb3NpeCBwYXJ0KVxuLy8gdHJhbnNwbGl0ZWQgd2l0aCBCYWJlbFxuXG4vLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBhc3NlcnRQYXRoKHBhdGgpIHtcbiAgaWYgKHR5cGVvZiBwYXRoICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1BhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgJyArIEpTT04uc3RyaW5naWZ5KHBhdGgpKTtcbiAgfVxufVxuXG4vLyBSZXNvbHZlcyAuIGFuZCAuLiBlbGVtZW50cyBpbiBhIHBhdGggd2l0aCBkaXJlY3RvcnkgbmFtZXNcbmZ1bmN0aW9uIG5vcm1hbGl6ZVN0cmluZ1Bvc2l4KHBhdGgsIGFsbG93QWJvdmVSb290KSB7XG4gIHZhciByZXMgPSAnJztcbiAgdmFyIGxhc3RTZWdtZW50TGVuZ3RoID0gMDtcbiAgdmFyIGxhc3RTbGFzaCA9IC0xO1xuICB2YXIgZG90cyA9IDA7XG4gIHZhciBjb2RlO1xuICBmb3IgKHZhciBpID0gMDsgaSA8PSBwYXRoLmxlbmd0aDsgKytpKSB7XG4gICAgaWYgKGkgPCBwYXRoLmxlbmd0aClcbiAgICAgIGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoaSk7XG4gICAgZWxzZSBpZiAoY29kZSA9PT0gNDcgLyovKi8pXG4gICAgICBicmVhaztcbiAgICBlbHNlXG4gICAgICBjb2RlID0gNDcgLyovKi87XG4gICAgaWYgKGNvZGUgPT09IDQ3IC8qLyovKSB7XG4gICAgICBpZiAobGFzdFNsYXNoID09PSBpIC0gMSB8fCBkb3RzID09PSAxKSB7XG4gICAgICAgIC8vIE5PT1BcbiAgICAgIH0gZWxzZSBpZiAobGFzdFNsYXNoICE9PSBpIC0gMSAmJiBkb3RzID09PSAyKSB7XG4gICAgICAgIGlmIChyZXMubGVuZ3RoIDwgMiB8fCBsYXN0U2VnbWVudExlbmd0aCAhPT0gMiB8fCByZXMuY2hhckNvZGVBdChyZXMubGVuZ3RoIC0gMSkgIT09IDQ2IC8qLiovIHx8IHJlcy5jaGFyQ29kZUF0KHJlcy5sZW5ndGggLSAyKSAhPT0gNDYgLyouKi8pIHtcbiAgICAgICAgICBpZiAocmVzLmxlbmd0aCA+IDIpIHtcbiAgICAgICAgICAgIHZhciBsYXN0U2xhc2hJbmRleCA9IHJlcy5sYXN0SW5kZXhPZignLycpO1xuICAgICAgICAgICAgaWYgKGxhc3RTbGFzaEluZGV4ICE9PSByZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICBpZiAobGFzdFNsYXNoSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgcmVzID0gJyc7XG4gICAgICAgICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSAwO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlcyA9IHJlcy5zbGljZSgwLCBsYXN0U2xhc2hJbmRleCk7XG4gICAgICAgICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSByZXMubGVuZ3RoIC0gMSAtIHJlcy5sYXN0SW5kZXhPZignLycpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxhc3RTbGFzaCA9IGk7XG4gICAgICAgICAgICAgIGRvdHMgPSAwO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5sZW5ndGggPT09IDIgfHwgcmVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgcmVzID0gJyc7XG4gICAgICAgICAgICBsYXN0U2VnbWVudExlbmd0aCA9IDA7XG4gICAgICAgICAgICBsYXN0U2xhc2ggPSBpO1xuICAgICAgICAgICAgZG90cyA9IDA7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFsbG93QWJvdmVSb290KSB7XG4gICAgICAgICAgaWYgKHJlcy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgcmVzICs9ICcvLi4nO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJlcyA9ICcuLic7XG4gICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSAyO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocmVzLmxlbmd0aCA+IDApXG4gICAgICAgICAgcmVzICs9ICcvJyArIHBhdGguc2xpY2UobGFzdFNsYXNoICsgMSwgaSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICByZXMgPSBwYXRoLnNsaWNlKGxhc3RTbGFzaCArIDEsIGkpO1xuICAgICAgICBsYXN0U2VnbWVudExlbmd0aCA9IGkgLSBsYXN0U2xhc2ggLSAxO1xuICAgICAgfVxuICAgICAgbGFzdFNsYXNoID0gaTtcbiAgICAgIGRvdHMgPSAwO1xuICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gNDYgLyouKi8gJiYgZG90cyAhPT0gLTEpIHtcbiAgICAgICsrZG90cztcbiAgICB9IGVsc2Uge1xuICAgICAgZG90cyA9IC0xO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG5mdW5jdGlvbiBfZm9ybWF0KHNlcCwgcGF0aE9iamVjdCkge1xuICB2YXIgZGlyID0gcGF0aE9iamVjdC5kaXIgfHwgcGF0aE9iamVjdC5yb290O1xuICB2YXIgYmFzZSA9IHBhdGhPYmplY3QuYmFzZSB8fCAocGF0aE9iamVjdC5uYW1lIHx8ICcnKSArIChwYXRoT2JqZWN0LmV4dCB8fCAnJyk7XG4gIGlmICghZGlyKSB7XG4gICAgcmV0dXJuIGJhc2U7XG4gIH1cbiAgaWYgKGRpciA9PT0gcGF0aE9iamVjdC5yb290KSB7XG4gICAgcmV0dXJuIGRpciArIGJhc2U7XG4gIH1cbiAgcmV0dXJuIGRpciArIHNlcCArIGJhc2U7XG59XG5cbnZhciBwb3NpeCA9IHtcbiAgLy8gcGF0aC5yZXNvbHZlKFtmcm9tIC4uLl0sIHRvKVxuICByZXNvbHZlOiBmdW5jdGlvbiByZXNvbHZlKCkge1xuICAgIHZhciByZXNvbHZlZFBhdGggPSAnJztcbiAgICB2YXIgcmVzb2x2ZWRBYnNvbHV0ZSA9IGZhbHNlO1xuICAgIHZhciBjd2Q7XG5cbiAgICBmb3IgKHZhciBpID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7IGkgPj0gLTEgJiYgIXJlc29sdmVkQWJzb2x1dGU7IGktLSkge1xuICAgICAgdmFyIHBhdGg7XG4gICAgICBpZiAoaSA+PSAwKVxuICAgICAgICBwYXRoID0gYXJndW1lbnRzW2ldO1xuICAgICAgZWxzZSB7XG4gICAgICAgIGlmIChjd2QgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICBjd2QgPSBwcm9jZXNzLmN3ZCgpO1xuICAgICAgICBwYXRoID0gY3dkO1xuICAgICAgfVxuXG4gICAgICBhc3NlcnRQYXRoKHBhdGgpO1xuXG4gICAgICAvLyBTa2lwIGVtcHR5IGVudHJpZXNcbiAgICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgcmVzb2x2ZWRQYXRoID0gcGF0aCArICcvJyArIHJlc29sdmVkUGF0aDtcbiAgICAgIHJlc29sdmVkQWJzb2x1dGUgPSBwYXRoLmNoYXJDb2RlQXQoMCkgPT09IDQ3IC8qLyovO1xuICAgIH1cblxuICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIHBhdGggc2hvdWxkIGJlIHJlc29sdmVkIHRvIGEgZnVsbCBhYnNvbHV0ZSBwYXRoLCBidXRcbiAgICAvLyBoYW5kbGUgcmVsYXRpdmUgcGF0aHMgdG8gYmUgc2FmZSAobWlnaHQgaGFwcGVuIHdoZW4gcHJvY2Vzcy5jd2QoKSBmYWlscylcblxuICAgIC8vIE5vcm1hbGl6ZSB0aGUgcGF0aFxuICAgIHJlc29sdmVkUGF0aCA9IG5vcm1hbGl6ZVN0cmluZ1Bvc2l4KHJlc29sdmVkUGF0aCwgIXJlc29sdmVkQWJzb2x1dGUpO1xuXG4gICAgaWYgKHJlc29sdmVkQWJzb2x1dGUpIHtcbiAgICAgIGlmIChyZXNvbHZlZFBhdGgubGVuZ3RoID4gMClcbiAgICAgICAgcmV0dXJuICcvJyArIHJlc29sdmVkUGF0aDtcbiAgICAgIGVsc2VcbiAgICAgICAgcmV0dXJuICcvJztcbiAgICB9IGVsc2UgaWYgKHJlc29sdmVkUGF0aC5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZWRQYXRoO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJy4nO1xuICAgIH1cbiAgfSxcblxuICBub3JtYWxpemU6IGZ1bmN0aW9uIG5vcm1hbGl6ZShwYXRoKSB7XG4gICAgYXNzZXJ0UGF0aChwYXRoKTtcblxuICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcuJztcblxuICAgIHZhciBpc0Fic29sdXRlID0gcGF0aC5jaGFyQ29kZUF0KDApID09PSA0NyAvKi8qLztcbiAgICB2YXIgdHJhaWxpbmdTZXBhcmF0b3IgPSBwYXRoLmNoYXJDb2RlQXQocGF0aC5sZW5ndGggLSAxKSA9PT0gNDcgLyovKi87XG5cbiAgICAvLyBOb3JtYWxpemUgdGhlIHBhdGhcbiAgICBwYXRoID0gbm9ybWFsaXplU3RyaW5nUG9zaXgocGF0aCwgIWlzQWJzb2x1dGUpO1xuXG4gICAgaWYgKHBhdGgubGVuZ3RoID09PSAwICYmICFpc0Fic29sdXRlKSBwYXRoID0gJy4nO1xuICAgIGlmIChwYXRoLmxlbmd0aCA+IDAgJiYgdHJhaWxpbmdTZXBhcmF0b3IpIHBhdGggKz0gJy8nO1xuXG4gICAgaWYgKGlzQWJzb2x1dGUpIHJldHVybiAnLycgKyBwYXRoO1xuICAgIHJldHVybiBwYXRoO1xuICB9LFxuXG4gIGlzQWJzb2x1dGU6IGZ1bmN0aW9uIGlzQWJzb2x1dGUocGF0aCkge1xuICAgIGFzc2VydFBhdGgocGF0aCk7XG4gICAgcmV0dXJuIHBhdGgubGVuZ3RoID4gMCAmJiBwYXRoLmNoYXJDb2RlQXQoMCkgPT09IDQ3IC8qLyovO1xuICB9LFxuXG4gIGpvaW46IGZ1bmN0aW9uIGpvaW4oKSB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApXG4gICAgICByZXR1cm4gJy4nO1xuICAgIHZhciBqb2luZWQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyArK2kpIHtcbiAgICAgIHZhciBhcmcgPSBhcmd1bWVudHNbaV07XG4gICAgICBhc3NlcnRQYXRoKGFyZyk7XG4gICAgICBpZiAoYXJnLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKGpvaW5lZCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgIGpvaW5lZCA9IGFyZztcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGpvaW5lZCArPSAnLycgKyBhcmc7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChqb2luZWQgPT09IHVuZGVmaW5lZClcbiAgICAgIHJldHVybiAnLic7XG4gICAgcmV0dXJuIHBvc2l4Lm5vcm1hbGl6ZShqb2luZWQpO1xuICB9LFxuXG4gIHJlbGF0aXZlOiBmdW5jdGlvbiByZWxhdGl2ZShmcm9tLCB0bykge1xuICAgIGFzc2VydFBhdGgoZnJvbSk7XG4gICAgYXNzZXJ0UGF0aCh0byk7XG5cbiAgICBpZiAoZnJvbSA9PT0gdG8pIHJldHVybiAnJztcblxuICAgIGZyb20gPSBwb3NpeC5yZXNvbHZlKGZyb20pO1xuICAgIHRvID0gcG9zaXgucmVzb2x2ZSh0byk7XG5cbiAgICBpZiAoZnJvbSA9PT0gdG8pIHJldHVybiAnJztcblxuICAgIC8vIFRyaW0gYW55IGxlYWRpbmcgYmFja3NsYXNoZXNcbiAgICB2YXIgZnJvbVN0YXJ0ID0gMTtcbiAgICBmb3IgKDsgZnJvbVN0YXJ0IDwgZnJvbS5sZW5ndGg7ICsrZnJvbVN0YXJ0KSB7XG4gICAgICBpZiAoZnJvbS5jaGFyQ29kZUF0KGZyb21TdGFydCkgIT09IDQ3IC8qLyovKVxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgdmFyIGZyb21FbmQgPSBmcm9tLmxlbmd0aDtcbiAgICB2YXIgZnJvbUxlbiA9IGZyb21FbmQgLSBmcm9tU3RhcnQ7XG5cbiAgICAvLyBUcmltIGFueSBsZWFkaW5nIGJhY2tzbGFzaGVzXG4gICAgdmFyIHRvU3RhcnQgPSAxO1xuICAgIGZvciAoOyB0b1N0YXJ0IDwgdG8ubGVuZ3RoOyArK3RvU3RhcnQpIHtcbiAgICAgIGlmICh0by5jaGFyQ29kZUF0KHRvU3RhcnQpICE9PSA0NyAvKi8qLylcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHZhciB0b0VuZCA9IHRvLmxlbmd0aDtcbiAgICB2YXIgdG9MZW4gPSB0b0VuZCAtIHRvU3RhcnQ7XG5cbiAgICAvLyBDb21wYXJlIHBhdGhzIHRvIGZpbmQgdGhlIGxvbmdlc3QgY29tbW9uIHBhdGggZnJvbSByb290XG4gICAgdmFyIGxlbmd0aCA9IGZyb21MZW4gPCB0b0xlbiA/IGZyb21MZW4gOiB0b0xlbjtcbiAgICB2YXIgbGFzdENvbW1vblNlcCA9IC0xO1xuICAgIHZhciBpID0gMDtcbiAgICBmb3IgKDsgaSA8PSBsZW5ndGg7ICsraSkge1xuICAgICAgaWYgKGkgPT09IGxlbmd0aCkge1xuICAgICAgICBpZiAodG9MZW4gPiBsZW5ndGgpIHtcbiAgICAgICAgICBpZiAodG8uY2hhckNvZGVBdCh0b1N0YXJ0ICsgaSkgPT09IDQ3IC8qLyovKSB7XG4gICAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgZnJvbWAgaXMgdGhlIGV4YWN0IGJhc2UgcGF0aCBmb3IgYHRvYC5cbiAgICAgICAgICAgIC8vIEZvciBleGFtcGxlOiBmcm9tPScvZm9vL2Jhcic7IHRvPScvZm9vL2Jhci9iYXonXG4gICAgICAgICAgICByZXR1cm4gdG8uc2xpY2UodG9TdGFydCArIGkgKyAxKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAgIC8vIFdlIGdldCBoZXJlIGlmIGBmcm9tYCBpcyB0aGUgcm9vdFxuICAgICAgICAgICAgLy8gRm9yIGV4YW1wbGU6IGZyb209Jy8nOyB0bz0nL2ZvbydcbiAgICAgICAgICAgIHJldHVybiB0by5zbGljZSh0b1N0YXJ0ICsgaSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGZyb21MZW4gPiBsZW5ndGgpIHtcbiAgICAgICAgICBpZiAoZnJvbS5jaGFyQ29kZUF0KGZyb21TdGFydCArIGkpID09PSA0NyAvKi8qLykge1xuICAgICAgICAgICAgLy8gV2UgZ2V0IGhlcmUgaWYgYHRvYCBpcyB0aGUgZXhhY3QgYmFzZSBwYXRoIGZvciBgZnJvbWAuXG4gICAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogZnJvbT0nL2Zvby9iYXIvYmF6JzsgdG89Jy9mb28vYmFyJ1xuICAgICAgICAgICAgbGFzdENvbW1vblNlcCA9IGk7XG4gICAgICAgICAgfSBlbHNlIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgdG9gIGlzIHRoZSByb290LlxuICAgICAgICAgICAgLy8gRm9yIGV4YW1wbGU6IGZyb209Jy9mb28nOyB0bz0nLydcbiAgICAgICAgICAgIGxhc3RDb21tb25TZXAgPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHZhciBmcm9tQ29kZSA9IGZyb20uY2hhckNvZGVBdChmcm9tU3RhcnQgKyBpKTtcbiAgICAgIHZhciB0b0NvZGUgPSB0by5jaGFyQ29kZUF0KHRvU3RhcnQgKyBpKTtcbiAgICAgIGlmIChmcm9tQ29kZSAhPT0gdG9Db2RlKVxuICAgICAgICBicmVhaztcbiAgICAgIGVsc2UgaWYgKGZyb21Db2RlID09PSA0NyAvKi8qLylcbiAgICAgICAgbGFzdENvbW1vblNlcCA9IGk7XG4gICAgfVxuXG4gICAgdmFyIG91dCA9ICcnO1xuICAgIC8vIEdlbmVyYXRlIHRoZSByZWxhdGl2ZSBwYXRoIGJhc2VkIG9uIHRoZSBwYXRoIGRpZmZlcmVuY2UgYmV0d2VlbiBgdG9gXG4gICAgLy8gYW5kIGBmcm9tYFxuICAgIGZvciAoaSA9IGZyb21TdGFydCArIGxhc3RDb21tb25TZXAgKyAxOyBpIDw9IGZyb21FbmQ7ICsraSkge1xuICAgICAgaWYgKGkgPT09IGZyb21FbmQgfHwgZnJvbS5jaGFyQ29kZUF0KGkpID09PSA0NyAvKi8qLykge1xuICAgICAgICBpZiAob3V0Lmxlbmd0aCA9PT0gMClcbiAgICAgICAgICBvdXQgKz0gJy4uJztcbiAgICAgICAgZWxzZVxuICAgICAgICAgIG91dCArPSAnLy4uJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBMYXN0bHksIGFwcGVuZCB0aGUgcmVzdCBvZiB0aGUgZGVzdGluYXRpb24gKGB0b2ApIHBhdGggdGhhdCBjb21lcyBhZnRlclxuICAgIC8vIHRoZSBjb21tb24gcGF0aCBwYXJ0c1xuICAgIGlmIChvdXQubGVuZ3RoID4gMClcbiAgICAgIHJldHVybiBvdXQgKyB0by5zbGljZSh0b1N0YXJ0ICsgbGFzdENvbW1vblNlcCk7XG4gICAgZWxzZSB7XG4gICAgICB0b1N0YXJ0ICs9IGxhc3RDb21tb25TZXA7XG4gICAgICBpZiAodG8uY2hhckNvZGVBdCh0b1N0YXJ0KSA9PT0gNDcgLyovKi8pXG4gICAgICAgICsrdG9TdGFydDtcbiAgICAgIHJldHVybiB0by5zbGljZSh0b1N0YXJ0KTtcbiAgICB9XG4gIH0sXG5cbiAgX21ha2VMb25nOiBmdW5jdGlvbiBfbWFrZUxvbmcocGF0aCkge1xuICAgIHJldHVybiBwYXRoO1xuICB9LFxuXG4gIGRpcm5hbWU6IGZ1bmN0aW9uIGRpcm5hbWUocGF0aCkge1xuICAgIGFzc2VydFBhdGgocGF0aCk7XG4gICAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSByZXR1cm4gJy4nO1xuICAgIHZhciBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KDApO1xuICAgIHZhciBoYXNSb290ID0gY29kZSA9PT0gNDcgLyovKi87XG4gICAgdmFyIGVuZCA9IC0xO1xuICAgIHZhciBtYXRjaGVkU2xhc2ggPSB0cnVlO1xuICAgIGZvciAodmFyIGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gMTsgLS1pKSB7XG4gICAgICBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KGkpO1xuICAgICAgaWYgKGNvZGUgPT09IDQ3IC8qLyovKSB7XG4gICAgICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgICAgIGVuZCA9IGk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFdlIHNhdyB0aGUgZmlyc3Qgbm9uLXBhdGggc2VwYXJhdG9yXG4gICAgICAgIG1hdGNoZWRTbGFzaCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlbmQgPT09IC0xKSByZXR1cm4gaGFzUm9vdCA/ICcvJyA6ICcuJztcbiAgICBpZiAoaGFzUm9vdCAmJiBlbmQgPT09IDEpIHJldHVybiAnLy8nO1xuICAgIHJldHVybiBwYXRoLnNsaWNlKDAsIGVuZCk7XG4gIH0sXG5cbiAgYmFzZW5hbWU6IGZ1bmN0aW9uIGJhc2VuYW1lKHBhdGgsIGV4dCkge1xuICAgIGlmIChleHQgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgZXh0ICE9PSAnc3RyaW5nJykgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJleHRcIiBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nJyk7XG4gICAgYXNzZXJ0UGF0aChwYXRoKTtcblxuICAgIHZhciBzdGFydCA9IDA7XG4gICAgdmFyIGVuZCA9IC0xO1xuICAgIHZhciBtYXRjaGVkU2xhc2ggPSB0cnVlO1xuICAgIHZhciBpO1xuXG4gICAgaWYgKGV4dCAhPT0gdW5kZWZpbmVkICYmIGV4dC5sZW5ndGggPiAwICYmIGV4dC5sZW5ndGggPD0gcGF0aC5sZW5ndGgpIHtcbiAgICAgIGlmIChleHQubGVuZ3RoID09PSBwYXRoLmxlbmd0aCAmJiBleHQgPT09IHBhdGgpIHJldHVybiAnJztcbiAgICAgIHZhciBleHRJZHggPSBleHQubGVuZ3RoIC0gMTtcbiAgICAgIHZhciBmaXJzdE5vblNsYXNoRW5kID0gLTE7XG4gICAgICBmb3IgKGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KGkpO1xuICAgICAgICBpZiAoY29kZSA9PT0gNDcgLyovKi8pIHtcbiAgICAgICAgICAgIC8vIElmIHdlIHJlYWNoZWQgYSBwYXRoIHNlcGFyYXRvciB0aGF0IHdhcyBub3QgcGFydCBvZiBhIHNldCBvZiBwYXRoXG4gICAgICAgICAgICAvLyBzZXBhcmF0b3JzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZywgc3RvcCBub3dcbiAgICAgICAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7XG4gICAgICAgICAgICAgIHN0YXJ0ID0gaSArIDE7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGZpcnN0Tm9uU2xhc2hFbmQgPT09IC0xKSB7XG4gICAgICAgICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvciwgcmVtZW1iZXIgdGhpcyBpbmRleCBpbiBjYXNlXG4gICAgICAgICAgICAvLyB3ZSBuZWVkIGl0IGlmIHRoZSBleHRlbnNpb24gZW5kcyB1cCBub3QgbWF0Y2hpbmdcbiAgICAgICAgICAgIG1hdGNoZWRTbGFzaCA9IGZhbHNlO1xuICAgICAgICAgICAgZmlyc3ROb25TbGFzaEVuZCA9IGkgKyAxO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZXh0SWR4ID49IDApIHtcbiAgICAgICAgICAgIC8vIFRyeSB0byBtYXRjaCB0aGUgZXhwbGljaXQgZXh0ZW5zaW9uXG4gICAgICAgICAgICBpZiAoY29kZSA9PT0gZXh0LmNoYXJDb2RlQXQoZXh0SWR4KSkge1xuICAgICAgICAgICAgICBpZiAoLS1leHRJZHggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgLy8gV2UgbWF0Y2hlZCB0aGUgZXh0ZW5zaW9uLCBzbyBtYXJrIHRoaXMgYXMgdGhlIGVuZCBvZiBvdXIgcGF0aFxuICAgICAgICAgICAgICAgIC8vIGNvbXBvbmVudFxuICAgICAgICAgICAgICAgIGVuZCA9IGk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIEV4dGVuc2lvbiBkb2VzIG5vdCBtYXRjaCwgc28gb3VyIHJlc3VsdCBpcyB0aGUgZW50aXJlIHBhdGhcbiAgICAgICAgICAgICAgLy8gY29tcG9uZW50XG4gICAgICAgICAgICAgIGV4dElkeCA9IC0xO1xuICAgICAgICAgICAgICBlbmQgPSBmaXJzdE5vblNsYXNoRW5kO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoc3RhcnQgPT09IGVuZCkgZW5kID0gZmlyc3ROb25TbGFzaEVuZDtlbHNlIGlmIChlbmQgPT09IC0xKSBlbmQgPSBwYXRoLmxlbmd0aDtcbiAgICAgIHJldHVybiBwYXRoLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIGlmIChwYXRoLmNoYXJDb2RlQXQoaSkgPT09IDQ3IC8qLyovKSB7XG4gICAgICAgICAgICAvLyBJZiB3ZSByZWFjaGVkIGEgcGF0aCBzZXBhcmF0b3IgdGhhdCB3YXMgbm90IHBhcnQgb2YgYSBzZXQgb2YgcGF0aFxuICAgICAgICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICAgICAgICBpZiAoIW1hdGNoZWRTbGFzaCkge1xuICAgICAgICAgICAgICBzdGFydCA9IGkgKyAxO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKGVuZCA9PT0gLTEpIHtcbiAgICAgICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvciwgbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyXG4gICAgICAgICAgLy8gcGF0aCBjb21wb25lbnRcbiAgICAgICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgICAgICBlbmQgPSBpICsgMTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZW5kID09PSAtMSkgcmV0dXJuICcnO1xuICAgICAgcmV0dXJuIHBhdGguc2xpY2Uoc3RhcnQsIGVuZCk7XG4gICAgfVxuICB9LFxuXG4gIGV4dG5hbWU6IGZ1bmN0aW9uIGV4dG5hbWUocGF0aCkge1xuICAgIGFzc2VydFBhdGgocGF0aCk7XG4gICAgdmFyIHN0YXJ0RG90ID0gLTE7XG4gICAgdmFyIHN0YXJ0UGFydCA9IDA7XG4gICAgdmFyIGVuZCA9IC0xO1xuICAgIHZhciBtYXRjaGVkU2xhc2ggPSB0cnVlO1xuICAgIC8vIFRyYWNrIHRoZSBzdGF0ZSBvZiBjaGFyYWN0ZXJzIChpZiBhbnkpIHdlIHNlZSBiZWZvcmUgb3VyIGZpcnN0IGRvdCBhbmRcbiAgICAvLyBhZnRlciBhbnkgcGF0aCBzZXBhcmF0b3Igd2UgZmluZFxuICAgIHZhciBwcmVEb3RTdGF0ZSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHBhdGgubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgIHZhciBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KGkpO1xuICAgICAgaWYgKGNvZGUgPT09IDQ3IC8qLyovKSB7XG4gICAgICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgICAgICAvLyBzZXBhcmF0b3JzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZywgc3RvcCBub3dcbiAgICAgICAgICBpZiAoIW1hdGNoZWRTbGFzaCkge1xuICAgICAgICAgICAgc3RhcnRQYXJ0ID0gaSArIDE7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIGlmIChlbmQgPT09IC0xKSB7XG4gICAgICAgIC8vIFdlIHNhdyB0aGUgZmlyc3Qgbm9uLXBhdGggc2VwYXJhdG9yLCBtYXJrIHRoaXMgYXMgdGhlIGVuZCBvZiBvdXJcbiAgICAgICAgLy8gZXh0ZW5zaW9uXG4gICAgICAgIG1hdGNoZWRTbGFzaCA9IGZhbHNlO1xuICAgICAgICBlbmQgPSBpICsgMTtcbiAgICAgIH1cbiAgICAgIGlmIChjb2RlID09PSA0NiAvKi4qLykge1xuICAgICAgICAgIC8vIElmIHRoaXMgaXMgb3VyIGZpcnN0IGRvdCwgbWFyayBpdCBhcyB0aGUgc3RhcnQgb2Ygb3VyIGV4dGVuc2lvblxuICAgICAgICAgIGlmIChzdGFydERvdCA9PT0gLTEpXG4gICAgICAgICAgICBzdGFydERvdCA9IGk7XG4gICAgICAgICAgZWxzZSBpZiAocHJlRG90U3RhdGUgIT09IDEpXG4gICAgICAgICAgICBwcmVEb3RTdGF0ZSA9IDE7XG4gICAgICB9IGVsc2UgaWYgKHN0YXJ0RG90ICE9PSAtMSkge1xuICAgICAgICAvLyBXZSBzYXcgYSBub24tZG90IGFuZCBub24tcGF0aCBzZXBhcmF0b3IgYmVmb3JlIG91ciBkb3QsIHNvIHdlIHNob3VsZFxuICAgICAgICAvLyBoYXZlIGEgZ29vZCBjaGFuY2UgYXQgaGF2aW5nIGEgbm9uLWVtcHR5IGV4dGVuc2lvblxuICAgICAgICBwcmVEb3RTdGF0ZSA9IC0xO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdGFydERvdCA9PT0gLTEgfHwgZW5kID09PSAtMSB8fFxuICAgICAgICAvLyBXZSBzYXcgYSBub24tZG90IGNoYXJhY3RlciBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGRvdFxuICAgICAgICBwcmVEb3RTdGF0ZSA9PT0gMCB8fFxuICAgICAgICAvLyBUaGUgKHJpZ2h0LW1vc3QpIHRyaW1tZWQgcGF0aCBjb21wb25lbnQgaXMgZXhhY3RseSAnLi4nXG4gICAgICAgIHByZURvdFN0YXRlID09PSAxICYmIHN0YXJ0RG90ID09PSBlbmQgLSAxICYmIHN0YXJ0RG90ID09PSBzdGFydFBhcnQgKyAxKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiBwYXRoLnNsaWNlKHN0YXJ0RG90LCBlbmQpO1xuICB9LFxuXG4gIGZvcm1hdDogZnVuY3Rpb24gZm9ybWF0KHBhdGhPYmplY3QpIHtcbiAgICBpZiAocGF0aE9iamVjdCA9PT0gbnVsbCB8fCB0eXBlb2YgcGF0aE9iamVjdCAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcInBhdGhPYmplY3RcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgT2JqZWN0LiBSZWNlaXZlZCB0eXBlICcgKyB0eXBlb2YgcGF0aE9iamVjdCk7XG4gICAgfVxuICAgIHJldHVybiBfZm9ybWF0KCcvJywgcGF0aE9iamVjdCk7XG4gIH0sXG5cbiAgcGFyc2U6IGZ1bmN0aW9uIHBhcnNlKHBhdGgpIHtcbiAgICBhc3NlcnRQYXRoKHBhdGgpO1xuXG4gICAgdmFyIHJldCA9IHsgcm9vdDogJycsIGRpcjogJycsIGJhc2U6ICcnLCBleHQ6ICcnLCBuYW1lOiAnJyB9O1xuICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHJldDtcbiAgICB2YXIgY29kZSA9IHBhdGguY2hhckNvZGVBdCgwKTtcbiAgICB2YXIgaXNBYnNvbHV0ZSA9IGNvZGUgPT09IDQ3IC8qLyovO1xuICAgIHZhciBzdGFydDtcbiAgICBpZiAoaXNBYnNvbHV0ZSkge1xuICAgICAgcmV0LnJvb3QgPSAnLyc7XG4gICAgICBzdGFydCA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXJ0ID0gMDtcbiAgICB9XG4gICAgdmFyIHN0YXJ0RG90ID0gLTE7XG4gICAgdmFyIHN0YXJ0UGFydCA9IDA7XG4gICAgdmFyIGVuZCA9IC0xO1xuICAgIHZhciBtYXRjaGVkU2xhc2ggPSB0cnVlO1xuICAgIHZhciBpID0gcGF0aC5sZW5ndGggLSAxO1xuXG4gICAgLy8gVHJhY2sgdGhlIHN0YXRlIG9mIGNoYXJhY3RlcnMgKGlmIGFueSkgd2Ugc2VlIGJlZm9yZSBvdXIgZmlyc3QgZG90IGFuZFxuICAgIC8vIGFmdGVyIGFueSBwYXRoIHNlcGFyYXRvciB3ZSBmaW5kXG4gICAgdmFyIHByZURvdFN0YXRlID0gMDtcblxuICAgIC8vIEdldCBub24tZGlyIGluZm9cbiAgICBmb3IgKDsgaSA+PSBzdGFydDsgLS1pKSB7XG4gICAgICBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KGkpO1xuICAgICAgaWYgKGNvZGUgPT09IDQ3IC8qLyovKSB7XG4gICAgICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgICAgICAvLyBzZXBhcmF0b3JzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZywgc3RvcCBub3dcbiAgICAgICAgICBpZiAoIW1hdGNoZWRTbGFzaCkge1xuICAgICAgICAgICAgc3RhcnRQYXJ0ID0gaSArIDE7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIGlmIChlbmQgPT09IC0xKSB7XG4gICAgICAgIC8vIFdlIHNhdyB0aGUgZmlyc3Qgbm9uLXBhdGggc2VwYXJhdG9yLCBtYXJrIHRoaXMgYXMgdGhlIGVuZCBvZiBvdXJcbiAgICAgICAgLy8gZXh0ZW5zaW9uXG4gICAgICAgIG1hdGNoZWRTbGFzaCA9IGZhbHNlO1xuICAgICAgICBlbmQgPSBpICsgMTtcbiAgICAgIH1cbiAgICAgIGlmIChjb2RlID09PSA0NiAvKi4qLykge1xuICAgICAgICAgIC8vIElmIHRoaXMgaXMgb3VyIGZpcnN0IGRvdCwgbWFyayBpdCBhcyB0aGUgc3RhcnQgb2Ygb3VyIGV4dGVuc2lvblxuICAgICAgICAgIGlmIChzdGFydERvdCA9PT0gLTEpIHN0YXJ0RG90ID0gaTtlbHNlIGlmIChwcmVEb3RTdGF0ZSAhPT0gMSkgcHJlRG90U3RhdGUgPSAxO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0RG90ICE9PSAtMSkge1xuICAgICAgICAvLyBXZSBzYXcgYSBub24tZG90IGFuZCBub24tcGF0aCBzZXBhcmF0b3IgYmVmb3JlIG91ciBkb3QsIHNvIHdlIHNob3VsZFxuICAgICAgICAvLyBoYXZlIGEgZ29vZCBjaGFuY2UgYXQgaGF2aW5nIGEgbm9uLWVtcHR5IGV4dGVuc2lvblxuICAgICAgICBwcmVEb3RTdGF0ZSA9IC0xO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdGFydERvdCA9PT0gLTEgfHwgZW5kID09PSAtMSB8fFxuICAgIC8vIFdlIHNhdyBhIG5vbi1kb3QgY2hhcmFjdGVyIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgZG90XG4gICAgcHJlRG90U3RhdGUgPT09IDAgfHxcbiAgICAvLyBUaGUgKHJpZ2h0LW1vc3QpIHRyaW1tZWQgcGF0aCBjb21wb25lbnQgaXMgZXhhY3RseSAnLi4nXG4gICAgcHJlRG90U3RhdGUgPT09IDEgJiYgc3RhcnREb3QgPT09IGVuZCAtIDEgJiYgc3RhcnREb3QgPT09IHN0YXJ0UGFydCArIDEpIHtcbiAgICAgIGlmIChlbmQgIT09IC0xKSB7XG4gICAgICAgIGlmIChzdGFydFBhcnQgPT09IDAgJiYgaXNBYnNvbHV0ZSkgcmV0LmJhc2UgPSByZXQubmFtZSA9IHBhdGguc2xpY2UoMSwgZW5kKTtlbHNlIHJldC5iYXNlID0gcmV0Lm5hbWUgPSBwYXRoLnNsaWNlKHN0YXJ0UGFydCwgZW5kKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHN0YXJ0UGFydCA9PT0gMCAmJiBpc0Fic29sdXRlKSB7XG4gICAgICAgIHJldC5uYW1lID0gcGF0aC5zbGljZSgxLCBzdGFydERvdCk7XG4gICAgICAgIHJldC5iYXNlID0gcGF0aC5zbGljZSgxLCBlbmQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0Lm5hbWUgPSBwYXRoLnNsaWNlKHN0YXJ0UGFydCwgc3RhcnREb3QpO1xuICAgICAgICByZXQuYmFzZSA9IHBhdGguc2xpY2Uoc3RhcnRQYXJ0LCBlbmQpO1xuICAgICAgfVxuICAgICAgcmV0LmV4dCA9IHBhdGguc2xpY2Uoc3RhcnREb3QsIGVuZCk7XG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0UGFydCA+IDApIHJldC5kaXIgPSBwYXRoLnNsaWNlKDAsIHN0YXJ0UGFydCAtIDEpO2Vsc2UgaWYgKGlzQWJzb2x1dGUpIHJldC5kaXIgPSAnLyc7XG5cbiAgICByZXR1cm4gcmV0O1xuICB9LFxuXG4gIHNlcDogJy8nLFxuICBkZWxpbWl0ZXI6ICc6JyxcbiAgd2luMzI6IG51bGwsXG4gIHBvc2l4OiBudWxsXG59O1xuXG5wb3NpeC5wb3NpeCA9IHBvc2l4O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBvc2l4O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmJhc2VuYW1lID0gZXhwb3J0cy5pc0Fic29sdXRlID0gZXhwb3J0cy5ub3JtYWxpemUgPSBleHBvcnRzLmRpcm5hbWUgPSBleHBvcnRzLnJlbGF0aXZlID0gZXhwb3J0cy5qb2luID0gZXhwb3J0cy5wb3NpeCA9IGV4cG9ydHMuc2VwID0gZXhwb3J0cy5yZXNvbHZlID0gdm9pZCAwO1xudmFyIG5vZGVfcGF0aF8xID0gcmVxdWlyZShcIm5vZGU6cGF0aFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInJlc29sdmVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5vZGVfcGF0aF8xLnJlc29sdmU7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJzZXBcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5vZGVfcGF0aF8xLnNlcDsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInBvc2l4XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBub2RlX3BhdGhfMS5wb3NpeDsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImpvaW5cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5vZGVfcGF0aF8xLmpvaW47IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJyZWxhdGl2ZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gbm9kZV9wYXRoXzEucmVsYXRpdmU7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJkaXJuYW1lXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBub2RlX3BhdGhfMS5kaXJuYW1lOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwibm9ybWFsaXplXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBub2RlX3BhdGhfMS5ub3JtYWxpemU7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJpc0Fic29sdXRlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBub2RlX3BhdGhfMS5pc0Fic29sdXRlOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiYmFzZW5hbWVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5vZGVfcGF0aF8xLmJhc2VuYW1lOyB9IH0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGF0aC5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXR5cGVzLmpzLm1hcCIsIid1c2Ugc3RyaWN0J1xuXG5leHBvcnRzLmJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoXG5leHBvcnRzLnRvQnl0ZUFycmF5ID0gdG9CeXRlQXJyYXlcbmV4cG9ydHMuZnJvbUJ5dGVBcnJheSA9IGZyb21CeXRlQXJyYXlcblxudmFyIGxvb2t1cCA9IFtdXG52YXIgcmV2TG9va3VwID0gW11cbnZhciBBcnIgPSB0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcgPyBVaW50OEFycmF5IDogQXJyYXlcblxudmFyIGNvZGUgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLydcbmZvciAodmFyIGkgPSAwLCBsZW4gPSBjb2RlLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gIGxvb2t1cFtpXSA9IGNvZGVbaV1cbiAgcmV2TG9va3VwW2NvZGUuY2hhckNvZGVBdChpKV0gPSBpXG59XG5cbi8vIFN1cHBvcnQgZGVjb2RpbmcgVVJMLXNhZmUgYmFzZTY0IHN0cmluZ3MsIGFzIE5vZGUuanMgZG9lcy5cbi8vIFNlZTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmFzZTY0I1VSTF9hcHBsaWNhdGlvbnNcbnJldkxvb2t1cFsnLScuY2hhckNvZGVBdCgwKV0gPSA2MlxucmV2TG9va3VwWydfJy5jaGFyQ29kZUF0KDApXSA9IDYzXG5cbmZ1bmN0aW9uIGdldExlbnMgKGI2NCkge1xuICB2YXIgbGVuID0gYjY0Lmxlbmd0aFxuXG4gIGlmIChsZW4gJSA0ID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNCcpXG4gIH1cblxuICAvLyBUcmltIG9mZiBleHRyYSBieXRlcyBhZnRlciBwbGFjZWhvbGRlciBieXRlcyBhcmUgZm91bmRcbiAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vYmVhdGdhbW1pdC9iYXNlNjQtanMvaXNzdWVzLzQyXG4gIHZhciB2YWxpZExlbiA9IGI2NC5pbmRleE9mKCc9JylcbiAgaWYgKHZhbGlkTGVuID09PSAtMSkgdmFsaWRMZW4gPSBsZW5cblxuICB2YXIgcGxhY2VIb2xkZXJzTGVuID0gdmFsaWRMZW4gPT09IGxlblxuICAgID8gMFxuICAgIDogNCAtICh2YWxpZExlbiAlIDQpXG5cbiAgcmV0dXJuIFt2YWxpZExlbiwgcGxhY2VIb2xkZXJzTGVuXVxufVxuXG4vLyBiYXNlNjQgaXMgNC8zICsgdXAgdG8gdHdvIGNoYXJhY3RlcnMgb2YgdGhlIG9yaWdpbmFsIGRhdGFcbmZ1bmN0aW9uIGJ5dGVMZW5ndGggKGI2NCkge1xuICB2YXIgbGVucyA9IGdldExlbnMoYjY0KVxuICB2YXIgdmFsaWRMZW4gPSBsZW5zWzBdXG4gIHZhciBwbGFjZUhvbGRlcnNMZW4gPSBsZW5zWzFdXG4gIHJldHVybiAoKHZhbGlkTGVuICsgcGxhY2VIb2xkZXJzTGVuKSAqIDMgLyA0KSAtIHBsYWNlSG9sZGVyc0xlblxufVxuXG5mdW5jdGlvbiBfYnl0ZUxlbmd0aCAoYjY0LCB2YWxpZExlbiwgcGxhY2VIb2xkZXJzTGVuKSB7XG4gIHJldHVybiAoKHZhbGlkTGVuICsgcGxhY2VIb2xkZXJzTGVuKSAqIDMgLyA0KSAtIHBsYWNlSG9sZGVyc0xlblxufVxuXG5mdW5jdGlvbiB0b0J5dGVBcnJheSAoYjY0KSB7XG4gIHZhciB0bXBcbiAgdmFyIGxlbnMgPSBnZXRMZW5zKGI2NClcbiAgdmFyIHZhbGlkTGVuID0gbGVuc1swXVxuICB2YXIgcGxhY2VIb2xkZXJzTGVuID0gbGVuc1sxXVxuXG4gIHZhciBhcnIgPSBuZXcgQXJyKF9ieXRlTGVuZ3RoKGI2NCwgdmFsaWRMZW4sIHBsYWNlSG9sZGVyc0xlbikpXG5cbiAgdmFyIGN1ckJ5dGUgPSAwXG5cbiAgLy8gaWYgdGhlcmUgYXJlIHBsYWNlaG9sZGVycywgb25seSBnZXQgdXAgdG8gdGhlIGxhc3QgY29tcGxldGUgNCBjaGFyc1xuICB2YXIgbGVuID0gcGxhY2VIb2xkZXJzTGVuID4gMFxuICAgID8gdmFsaWRMZW4gLSA0XG4gICAgOiB2YWxpZExlblxuXG4gIHZhciBpXG4gIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gNCkge1xuICAgIHRtcCA9XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAxOCkgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldIDw8IDEyKSB8XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAyKV0gPDwgNikgfFxuICAgICAgcmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAzKV1cbiAgICBhcnJbY3VyQnl0ZSsrXSA9ICh0bXAgPj4gMTYpICYgMHhGRlxuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiA4KSAmIDB4RkZcbiAgICBhcnJbY3VyQnl0ZSsrXSA9IHRtcCAmIDB4RkZcbiAgfVxuXG4gIGlmIChwbGFjZUhvbGRlcnNMZW4gPT09IDIpIHtcbiAgICB0bXAgPVxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKV0gPDwgMikgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldID4+IDQpXG4gICAgYXJyW2N1ckJ5dGUrK10gPSB0bXAgJiAweEZGXG4gIH1cblxuICBpZiAocGxhY2VIb2xkZXJzTGVuID09PSAxKSB7XG4gICAgdG1wID1cbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDEwKSB8XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAxKV0gPDwgNCkgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMildID4+IDIpXG4gICAgYXJyW2N1ckJ5dGUrK10gPSAodG1wID4+IDgpICYgMHhGRlxuICAgIGFycltjdXJCeXRlKytdID0gdG1wICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIGFyclxufVxuXG5mdW5jdGlvbiB0cmlwbGV0VG9CYXNlNjQgKG51bSkge1xuICByZXR1cm4gbG9va3VwW251bSA+PiAxOCAmIDB4M0ZdICtcbiAgICBsb29rdXBbbnVtID4+IDEyICYgMHgzRl0gK1xuICAgIGxvb2t1cFtudW0gPj4gNiAmIDB4M0ZdICtcbiAgICBsb29rdXBbbnVtICYgMHgzRl1cbn1cblxuZnVuY3Rpb24gZW5jb2RlQ2h1bmsgKHVpbnQ4LCBzdGFydCwgZW5kKSB7XG4gIHZhciB0bXBcbiAgdmFyIG91dHB1dCA9IFtdXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSArPSAzKSB7XG4gICAgdG1wID1cbiAgICAgICgodWludDhbaV0gPDwgMTYpICYgMHhGRjAwMDApICtcbiAgICAgICgodWludDhbaSArIDFdIDw8IDgpICYgMHhGRjAwKSArXG4gICAgICAodWludDhbaSArIDJdICYgMHhGRilcbiAgICBvdXRwdXQucHVzaCh0cmlwbGV0VG9CYXNlNjQodG1wKSlcbiAgfVxuICByZXR1cm4gb3V0cHV0LmpvaW4oJycpXG59XG5cbmZ1bmN0aW9uIGZyb21CeXRlQXJyYXkgKHVpbnQ4KSB7XG4gIHZhciB0bXBcbiAgdmFyIGxlbiA9IHVpbnQ4Lmxlbmd0aFxuICB2YXIgZXh0cmFCeXRlcyA9IGxlbiAlIDMgLy8gaWYgd2UgaGF2ZSAxIGJ5dGUgbGVmdCwgcGFkIDIgYnl0ZXNcbiAgdmFyIHBhcnRzID0gW11cbiAgdmFyIG1heENodW5rTGVuZ3RoID0gMTYzODMgLy8gbXVzdCBiZSBtdWx0aXBsZSBvZiAzXG5cbiAgLy8gZ28gdGhyb3VnaCB0aGUgYXJyYXkgZXZlcnkgdGhyZWUgYnl0ZXMsIHdlJ2xsIGRlYWwgd2l0aCB0cmFpbGluZyBzdHVmZiBsYXRlclxuICBmb3IgKHZhciBpID0gMCwgbGVuMiA9IGxlbiAtIGV4dHJhQnl0ZXM7IGkgPCBsZW4yOyBpICs9IG1heENodW5rTGVuZ3RoKSB7XG4gICAgcGFydHMucHVzaChlbmNvZGVDaHVuayh1aW50OCwgaSwgKGkgKyBtYXhDaHVua0xlbmd0aCkgPiBsZW4yID8gbGVuMiA6IChpICsgbWF4Q2h1bmtMZW5ndGgpKSlcbiAgfVxuXG4gIC8vIHBhZCB0aGUgZW5kIHdpdGggemVyb3MsIGJ1dCBtYWtlIHN1cmUgdG8gbm90IGZvcmdldCB0aGUgZXh0cmEgYnl0ZXNcbiAgaWYgKGV4dHJhQnl0ZXMgPT09IDEpIHtcbiAgICB0bXAgPSB1aW50OFtsZW4gLSAxXVxuICAgIHBhcnRzLnB1c2goXG4gICAgICBsb29rdXBbdG1wID4+IDJdICtcbiAgICAgIGxvb2t1cFsodG1wIDw8IDQpICYgMHgzRl0gK1xuICAgICAgJz09J1xuICAgIClcbiAgfSBlbHNlIGlmIChleHRyYUJ5dGVzID09PSAyKSB7XG4gICAgdG1wID0gKHVpbnQ4W2xlbiAtIDJdIDw8IDgpICsgdWludDhbbGVuIC0gMV1cbiAgICBwYXJ0cy5wdXNoKFxuICAgICAgbG9va3VwW3RtcCA+PiAxMF0gK1xuICAgICAgbG9va3VwWyh0bXAgPj4gNCkgJiAweDNGXSArXG4gICAgICBsb29rdXBbKHRtcCA8PCAyKSAmIDB4M0ZdICtcbiAgICAgICc9J1xuICAgIClcbiAgfVxuXG4gIHJldHVybiBwYXJ0cy5qb2luKCcnKVxufVxuIiwiLyohIGllZWU3NTQuIEJTRC0zLUNsYXVzZSBMaWNlbnNlLiBGZXJvc3MgQWJvdWtoYWRpamVoIDxodHRwczovL2Zlcm9zcy5vcmcvb3BlbnNvdXJjZT4gKi9cbmV4cG9ydHMucmVhZCA9IGZ1bmN0aW9uIChidWZmZXIsIG9mZnNldCwgaXNMRSwgbUxlbiwgbkJ5dGVzKSB7XG4gIHZhciBlLCBtXG4gIHZhciBlTGVuID0gKG5CeXRlcyAqIDgpIC0gbUxlbiAtIDFcbiAgdmFyIGVNYXggPSAoMSA8PCBlTGVuKSAtIDFcbiAgdmFyIGVCaWFzID0gZU1heCA+PiAxXG4gIHZhciBuQml0cyA9IC03XG4gIHZhciBpID0gaXNMRSA/IChuQnl0ZXMgLSAxKSA6IDBcbiAgdmFyIGQgPSBpc0xFID8gLTEgOiAxXG4gIHZhciBzID0gYnVmZmVyW29mZnNldCArIGldXG5cbiAgaSArPSBkXG5cbiAgZSA9IHMgJiAoKDEgPDwgKC1uQml0cykpIC0gMSlcbiAgcyA+Pj0gKC1uQml0cylcbiAgbkJpdHMgKz0gZUxlblxuICBmb3IgKDsgbkJpdHMgPiAwOyBlID0gKGUgKiAyNTYpICsgYnVmZmVyW29mZnNldCArIGldLCBpICs9IGQsIG5CaXRzIC09IDgpIHt9XG5cbiAgbSA9IGUgJiAoKDEgPDwgKC1uQml0cykpIC0gMSlcbiAgZSA+Pj0gKC1uQml0cylcbiAgbkJpdHMgKz0gbUxlblxuICBmb3IgKDsgbkJpdHMgPiAwOyBtID0gKG0gKiAyNTYpICsgYnVmZmVyW29mZnNldCArIGldLCBpICs9IGQsIG5CaXRzIC09IDgpIHt9XG5cbiAgaWYgKGUgPT09IDApIHtcbiAgICBlID0gMSAtIGVCaWFzXG4gIH0gZWxzZSBpZiAoZSA9PT0gZU1heCkge1xuICAgIHJldHVybiBtID8gTmFOIDogKChzID8gLTEgOiAxKSAqIEluZmluaXR5KVxuICB9IGVsc2Uge1xuICAgIG0gPSBtICsgTWF0aC5wb3coMiwgbUxlbilcbiAgICBlID0gZSAtIGVCaWFzXG4gIH1cbiAgcmV0dXJuIChzID8gLTEgOiAxKSAqIG0gKiBNYXRoLnBvdygyLCBlIC0gbUxlbilcbn1cblxuZXhwb3J0cy53cml0ZSA9IGZ1bmN0aW9uIChidWZmZXIsIHZhbHVlLCBvZmZzZXQsIGlzTEUsIG1MZW4sIG5CeXRlcykge1xuICB2YXIgZSwgbSwgY1xuICB2YXIgZUxlbiA9IChuQnl0ZXMgKiA4KSAtIG1MZW4gLSAxXG4gIHZhciBlTWF4ID0gKDEgPDwgZUxlbikgLSAxXG4gIHZhciBlQmlhcyA9IGVNYXggPj4gMVxuICB2YXIgcnQgPSAobUxlbiA9PT0gMjMgPyBNYXRoLnBvdygyLCAtMjQpIC0gTWF0aC5wb3coMiwgLTc3KSA6IDApXG4gIHZhciBpID0gaXNMRSA/IDAgOiAobkJ5dGVzIC0gMSlcbiAgdmFyIGQgPSBpc0xFID8gMSA6IC0xXG4gIHZhciBzID0gdmFsdWUgPCAwIHx8ICh2YWx1ZSA9PT0gMCAmJiAxIC8gdmFsdWUgPCAwKSA/IDEgOiAwXG5cbiAgdmFsdWUgPSBNYXRoLmFicyh2YWx1ZSlcblxuICBpZiAoaXNOYU4odmFsdWUpIHx8IHZhbHVlID09PSBJbmZpbml0eSkge1xuICAgIG0gPSBpc05hTih2YWx1ZSkgPyAxIDogMFxuICAgIGUgPSBlTWF4XG4gIH0gZWxzZSB7XG4gICAgZSA9IE1hdGguZmxvb3IoTWF0aC5sb2codmFsdWUpIC8gTWF0aC5MTjIpXG4gICAgaWYgKHZhbHVlICogKGMgPSBNYXRoLnBvdygyLCAtZSkpIDwgMSkge1xuICAgICAgZS0tXG4gICAgICBjICo9IDJcbiAgICB9XG4gICAgaWYgKGUgKyBlQmlhcyA+PSAxKSB7XG4gICAgICB2YWx1ZSArPSBydCAvIGNcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgKz0gcnQgKiBNYXRoLnBvdygyLCAxIC0gZUJpYXMpXG4gICAgfVxuICAgIGlmICh2YWx1ZSAqIGMgPj0gMikge1xuICAgICAgZSsrXG4gICAgICBjIC89IDJcbiAgICB9XG5cbiAgICBpZiAoZSArIGVCaWFzID49IGVNYXgpIHtcbiAgICAgIG0gPSAwXG4gICAgICBlID0gZU1heFxuICAgIH0gZWxzZSBpZiAoZSArIGVCaWFzID49IDEpIHtcbiAgICAgIG0gPSAoKHZhbHVlICogYykgLSAxKSAqIE1hdGgucG93KDIsIG1MZW4pXG4gICAgICBlID0gZSArIGVCaWFzXG4gICAgfSBlbHNlIHtcbiAgICAgIG0gPSB2YWx1ZSAqIE1hdGgucG93KDIsIGVCaWFzIC0gMSkgKiBNYXRoLnBvdygyLCBtTGVuKVxuICAgICAgZSA9IDBcbiAgICB9XG4gIH1cblxuICBmb3IgKDsgbUxlbiA+PSA4OyBidWZmZXJbb2Zmc2V0ICsgaV0gPSBtICYgMHhmZiwgaSArPSBkLCBtIC89IDI1NiwgbUxlbiAtPSA4KSB7fVxuXG4gIGUgPSAoZSA8PCBtTGVuKSB8IG1cbiAgZUxlbiArPSBtTGVuXG4gIGZvciAoOyBlTGVuID4gMDsgYnVmZmVyW29mZnNldCArIGldID0gZSAmIDB4ZmYsIGkgKz0gZCwgZSAvPSAyNTYsIGVMZW4gLT0gOCkge31cblxuICBidWZmZXJbb2Zmc2V0ICsgaSAtIGRdIHw9IHMgKiAxMjhcbn1cbiIsIi8qIVxuICogVGhlIGJ1ZmZlciBtb2R1bGUgZnJvbSBub2RlLmpzLCBmb3IgdGhlIGJyb3dzZXIuXG4gKlxuICogQGF1dGhvciAgIEZlcm9zcyBBYm91a2hhZGlqZWggPGh0dHBzOi8vZmVyb3NzLm9yZz5cbiAqIEBsaWNlbnNlICBNSVRcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG8gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbmltcG9ydCAqIGFzIGJhc2U2NCBmcm9tICdiYXNlNjQtanMnXG5pbXBvcnQgKiBhcyBpZWVlNzU0IGZyb20gJ2llZWU3NTQnXG5jb25zdCBjdXN0b21JbnNwZWN0U3ltYm9sID1cbiAgKHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIFN5bWJvbFsnZm9yJ10gPT09ICdmdW5jdGlvbicpIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZG90LW5vdGF0aW9uXG4gICAgPyBTeW1ib2xbJ2ZvciddKCdub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbScpIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZG90LW5vdGF0aW9uXG4gICAgOiBudWxsXG5cbmNvbnN0IElOU1BFQ1RfTUFYX0JZVEVTID0gNTBcblxuY29uc3QgS19NQVhfTEVOR1RIID0gMHg3ZmZmZmZmZlxuY29uc3Qga01heExlbmd0aCA9IEtfTUFYX0xFTkdUSFxuXG4vKipcbiAqIElmIGBCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVGA6XG4gKiAgID09PSB0cnVlICAgIFVzZSBVaW50OEFycmF5IGltcGxlbWVudGF0aW9uIChmYXN0ZXN0KVxuICogICA9PT0gZmFsc2UgICBQcmludCB3YXJuaW5nIGFuZCByZWNvbW1lbmQgdXNpbmcgYGJ1ZmZlcmAgdjQueCB3aGljaCBoYXMgYW4gT2JqZWN0XG4gKiAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uIChtb3N0IGNvbXBhdGlibGUsIGV2ZW4gSUU2KVxuICpcbiAqIEJyb3dzZXJzIHRoYXQgc3VwcG9ydCB0eXBlZCBhcnJheXMgYXJlIElFIDEwKywgRmlyZWZveCA0KywgQ2hyb21lIDcrLCBTYWZhcmkgNS4xKyxcbiAqIE9wZXJhIDExLjYrLCBpT1MgNC4yKy5cbiAqXG4gKiBXZSByZXBvcnQgdGhhdCB0aGUgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IHR5cGVkIGFycmF5cyBpZiB0aGUgYXJlIG5vdCBzdWJjbGFzc2FibGVcbiAqIHVzaW5nIF9fcHJvdG9fXy4gRmlyZWZveCA0LTI5IGxhY2tzIHN1cHBvcnQgZm9yIGFkZGluZyBuZXcgcHJvcGVydGllcyB0byBgVWludDhBcnJheWBcbiAqIChTZWU6IGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTY5NTQzOCkuIElFIDEwIGxhY2tzIHN1cHBvcnRcbiAqIGZvciBfX3Byb3RvX18gYW5kIGhhcyBhIGJ1Z2d5IHR5cGVkIGFycmF5IGltcGxlbWVudGF0aW9uLlxuICovXG5CdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCA9IHR5cGVkQXJyYXlTdXBwb3J0KClcblxuaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCAmJiB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICB0eXBlb2YgY29uc29sZS5lcnJvciA9PT0gJ2Z1bmN0aW9uJykge1xuICBjb25zb2xlLmVycm9yKFxuICAgICdUaGlzIGJyb3dzZXIgbGFja3MgdHlwZWQgYXJyYXkgKFVpbnQ4QXJyYXkpIHN1cHBvcnQgd2hpY2ggaXMgcmVxdWlyZWQgYnkgJyArXG4gICAgJ2BidWZmZXJgIHY1LnguIFVzZSBgYnVmZmVyYCB2NC54IGlmIHlvdSByZXF1aXJlIG9sZCBicm93c2VyIHN1cHBvcnQuJ1xuICApXG59XG5cbmZ1bmN0aW9uIHR5cGVkQXJyYXlTdXBwb3J0ICgpIHtcbiAgLy8gQ2FuIHR5cGVkIGFycmF5IGluc3RhbmNlcyBjYW4gYmUgYXVnbWVudGVkP1xuICB0cnkge1xuICAgIGNvbnN0IGFyciA9IG5ldyBVaW50OEFycmF5KDEpXG4gICAgY29uc3QgcHJvdG8gPSB7IGZvbzogZnVuY3Rpb24gKCkgeyByZXR1cm4gNDIgfSB9XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHByb3RvLCBVaW50OEFycmF5LnByb3RvdHlwZSlcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YoYXJyLCBwcm90bylcbiAgICByZXR1cm4gYXJyLmZvbygpID09PSA0MlxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KEJ1ZmZlci5wcm90b3R5cGUsICdwYXJlbnQnLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKHRoaXMpKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgcmV0dXJuIHRoaXMuYnVmZmVyXG4gIH1cbn0pXG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShCdWZmZXIucHJvdG90eXBlLCAnb2Zmc2V0Jywge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih0aGlzKSkgcmV0dXJuIHVuZGVmaW5lZFxuICAgIHJldHVybiB0aGlzLmJ5dGVPZmZzZXRcbiAgfVxufSlcblxuZnVuY3Rpb24gY3JlYXRlQnVmZmVyIChsZW5ndGgpIHtcbiAgaWYgKGxlbmd0aCA+IEtfTUFYX0xFTkdUSCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgXCInICsgbGVuZ3RoICsgJ1wiIGlzIGludmFsaWQgZm9yIG9wdGlvbiBcInNpemVcIicpXG4gIH1cbiAgLy8gUmV0dXJuIGFuIGF1Z21lbnRlZCBgVWludDhBcnJheWAgaW5zdGFuY2VcbiAgY29uc3QgYnVmID0gbmV3IFVpbnQ4QXJyYXkobGVuZ3RoKVxuICBPYmplY3Quc2V0UHJvdG90eXBlT2YoYnVmLCBCdWZmZXIucHJvdG90eXBlKVxuICByZXR1cm4gYnVmXG59XG5cbi8qKlxuICogVGhlIEJ1ZmZlciBjb25zdHJ1Y3RvciByZXR1cm5zIGluc3RhbmNlcyBvZiBgVWludDhBcnJheWAgdGhhdCBoYXZlIHRoZWlyXG4gKiBwcm90b3R5cGUgY2hhbmdlZCB0byBgQnVmZmVyLnByb3RvdHlwZWAuIEZ1cnRoZXJtb3JlLCBgQnVmZmVyYCBpcyBhIHN1YmNsYXNzIG9mXG4gKiBgVWludDhBcnJheWAsIHNvIHRoZSByZXR1cm5lZCBpbnN0YW5jZXMgd2lsbCBoYXZlIGFsbCB0aGUgbm9kZSBgQnVmZmVyYCBtZXRob2RzXG4gKiBhbmQgdGhlIGBVaW50OEFycmF5YCBtZXRob2RzLiBTcXVhcmUgYnJhY2tldCBub3RhdGlvbiB3b3JrcyBhcyBleHBlY3RlZCAtLSBpdFxuICogcmV0dXJucyBhIHNpbmdsZSBvY3RldC5cbiAqXG4gKiBUaGUgYFVpbnQ4QXJyYXlgIHByb3RvdHlwZSByZW1haW5zIHVubW9kaWZpZWQuXG4gKi9cblxuZnVuY3Rpb24gQnVmZmVyIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICAvLyBDb21tb24gY2FzZS5cbiAgaWYgKHR5cGVvZiBhcmcgPT09ICdudW1iZXInKSB7XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZ09yT2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgJ1RoZSBcInN0cmluZ1wiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcuIFJlY2VpdmVkIHR5cGUgbnVtYmVyJ1xuICAgICAgKVxuICAgIH1cbiAgICByZXR1cm4gYWxsb2NVbnNhZmUoYXJnKVxuICB9XG4gIHJldHVybiBmcm9tKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG5CdWZmZXIucG9vbFNpemUgPSA4MTkyIC8vIG5vdCB1c2VkIGJ5IHRoaXMgaW1wbGVtZW50YXRpb25cblxuZnVuY3Rpb24gZnJvbSAodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmcm9tU3RyaW5nKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0KVxuICB9XG5cbiAgaWYgKEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZnJvbUFycmF5Vmlldyh2YWx1ZSlcbiAgfVxuXG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICdUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCAnICtcbiAgICAgICdvciBBcnJheS1saWtlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAnICsgKHR5cGVvZiB2YWx1ZSlcbiAgICApXG4gIH1cblxuICBpZiAoaXNJbnN0YW5jZSh2YWx1ZSwgQXJyYXlCdWZmZXIpIHx8XG4gICAgICAodmFsdWUgJiYgaXNJbnN0YW5jZSh2YWx1ZS5idWZmZXIsIEFycmF5QnVmZmVyKSkpIHtcbiAgICByZXR1cm4gZnJvbUFycmF5QnVmZmVyKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG4gIH1cblxuICBpZiAodHlwZW9mIFNoYXJlZEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgKGlzSW5zdGFuY2UodmFsdWUsIFNoYXJlZEFycmF5QnVmZmVyKSB8fFxuICAgICAgKHZhbHVlICYmIGlzSW5zdGFuY2UodmFsdWUuYnVmZmVyLCBTaGFyZWRBcnJheUJ1ZmZlcikpKSkge1xuICAgIHJldHVybiBmcm9tQXJyYXlCdWZmZXIodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICdUaGUgXCJ2YWx1ZVwiIGFyZ3VtZW50IG11c3Qgbm90IGJlIG9mIHR5cGUgbnVtYmVyLiBSZWNlaXZlZCB0eXBlIG51bWJlcidcbiAgICApXG4gIH1cblxuICBjb25zdCB2YWx1ZU9mID0gdmFsdWUudmFsdWVPZiAmJiB2YWx1ZS52YWx1ZU9mKClcbiAgaWYgKHZhbHVlT2YgIT0gbnVsbCAmJiB2YWx1ZU9mICE9PSB2YWx1ZSkge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZU9mLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG4gIH1cblxuICBjb25zdCBiID0gZnJvbU9iamVjdCh2YWx1ZSlcbiAgaWYgKGIpIHJldHVybiBiXG5cbiAgaWYgKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1ByaW1pdGl2ZSAhPSBudWxsICYmXG4gICAgICB0eXBlb2YgdmFsdWVbU3ltYm9sLnRvUHJpbWl0aXZlXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZVtTeW1ib2wudG9QcmltaXRpdmVdKCdzdHJpbmcnKSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAnVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgJyArXG4gICAgJ29yIEFycmF5LWxpa2UgT2JqZWN0LiBSZWNlaXZlZCB0eXBlICcgKyAodHlwZW9mIHZhbHVlKVxuICApXG59XG5cbi8qKlxuICogRnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gQnVmZmVyKGFyZywgZW5jb2RpbmcpIGJ1dCB0aHJvd3MgYSBUeXBlRXJyb3JcbiAqIGlmIHZhbHVlIGlzIGEgbnVtYmVyLlxuICogQnVmZmVyLmZyb20oc3RyWywgZW5jb2RpbmddKVxuICogQnVmZmVyLmZyb20oYXJyYXkpXG4gKiBCdWZmZXIuZnJvbShidWZmZXIpXG4gKiBCdWZmZXIuZnJvbShhcnJheUJ1ZmZlclssIGJ5dGVPZmZzZXRbLCBsZW5ndGhdXSlcbiAqKi9cbkJ1ZmZlci5mcm9tID0gZnVuY3Rpb24gKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGZyb20odmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuLy8gTm90ZTogQ2hhbmdlIHByb3RvdHlwZSAqYWZ0ZXIqIEJ1ZmZlci5mcm9tIGlzIGRlZmluZWQgdG8gd29ya2Fyb3VuZCBDaHJvbWUgYnVnOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXIvcHVsbC8xNDhcbk9iamVjdC5zZXRQcm90b3R5cGVPZihCdWZmZXIucHJvdG90eXBlLCBVaW50OEFycmF5LnByb3RvdHlwZSlcbk9iamVjdC5zZXRQcm90b3R5cGVPZihCdWZmZXIsIFVpbnQ4QXJyYXkpXG5cbmZ1bmN0aW9uIGFzc2VydFNpemUgKHNpemUpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wic2l6ZVwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBudW1iZXInKVxuICB9IGVsc2UgaWYgKHNpemUgPCAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBcIicgKyBzaXplICsgJ1wiIGlzIGludmFsaWQgZm9yIG9wdGlvbiBcInNpemVcIicpXG4gIH1cbn1cblxuZnVuY3Rpb24gYWxsb2MgKHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gIGFzc2VydFNpemUoc2l6ZSlcbiAgaWYgKHNpemUgPD0gMCkge1xuICAgIHJldHVybiBjcmVhdGVCdWZmZXIoc2l6ZSlcbiAgfVxuICBpZiAoZmlsbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gT25seSBwYXkgYXR0ZW50aW9uIHRvIGVuY29kaW5nIGlmIGl0J3MgYSBzdHJpbmcuIFRoaXNcbiAgICAvLyBwcmV2ZW50cyBhY2NpZGVudGFsbHkgc2VuZGluZyBpbiBhIG51bWJlciB0aGF0IHdvdWxkXG4gICAgLy8gYmUgaW50ZXJwcmV0ZWQgYXMgYSBzdGFydCBvZmZzZXQuXG4gICAgcmV0dXJuIHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZydcbiAgICAgID8gY3JlYXRlQnVmZmVyKHNpemUpLmZpbGwoZmlsbCwgZW5jb2RpbmcpXG4gICAgICA6IGNyZWF0ZUJ1ZmZlcihzaXplKS5maWxsKGZpbGwpXG4gIH1cbiAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcihzaXplKVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS5cbiAqIGFsbG9jKHNpemVbLCBmaWxsWywgZW5jb2RpbmddXSlcbiAqKi9cbkJ1ZmZlci5hbGxvYyA9IGZ1bmN0aW9uIChzaXplLCBmaWxsLCBlbmNvZGluZykge1xuICByZXR1cm4gYWxsb2Moc2l6ZSwgZmlsbCwgZW5jb2RpbmcpXG59XG5cbmZ1bmN0aW9uIGFsbG9jVW5zYWZlIChzaXplKSB7XG4gIGFzc2VydFNpemUoc2l6ZSlcbiAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcihzaXplIDwgMCA/IDAgOiBjaGVja2VkKHNpemUpIHwgMClcbn1cblxuLyoqXG4gKiBFcXVpdmFsZW50IHRvIEJ1ZmZlcihudW0pLCBieSBkZWZhdWx0IGNyZWF0ZXMgYSBub24temVyby1maWxsZWQgQnVmZmVyIGluc3RhbmNlLlxuICogKi9cbkJ1ZmZlci5hbGxvY1Vuc2FmZSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIHJldHVybiBhbGxvY1Vuc2FmZShzaXplKVxufVxuLyoqXG4gKiBFcXVpdmFsZW50IHRvIFNsb3dCdWZmZXIobnVtKSwgYnkgZGVmYXVsdCBjcmVhdGVzIGEgbm9uLXplcm8tZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS5cbiAqL1xuQnVmZmVyLmFsbG9jVW5zYWZlU2xvdyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIHJldHVybiBhbGxvY1Vuc2FmZShzaXplKVxufVxuXG5mdW5jdGlvbiBmcm9tU3RyaW5nIChzdHJpbmcsIGVuY29kaW5nKSB7XG4gIGlmICh0eXBlb2YgZW5jb2RpbmcgIT09ICdzdHJpbmcnIHx8IGVuY29kaW5nID09PSAnJykge1xuICAgIGVuY29kaW5nID0gJ3V0ZjgnXG4gIH1cblxuICBpZiAoIUJ1ZmZlci5pc0VuY29kaW5nKGVuY29kaW5nKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgfVxuXG4gIGNvbnN0IGxlbmd0aCA9IGJ5dGVMZW5ndGgoc3RyaW5nLCBlbmNvZGluZykgfCAwXG4gIGxldCBidWYgPSBjcmVhdGVCdWZmZXIobGVuZ3RoKVxuXG4gIGNvbnN0IGFjdHVhbCA9IGJ1Zi53cml0ZShzdHJpbmcsIGVuY29kaW5nKVxuXG4gIGlmIChhY3R1YWwgIT09IGxlbmd0aCkge1xuICAgIC8vIFdyaXRpbmcgYSBoZXggc3RyaW5nLCBmb3IgZXhhbXBsZSwgdGhhdCBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnMgd2lsbFxuICAgIC8vIGNhdXNlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0IGludmFsaWQgY2hhcmFjdGVyIHRvIGJlIGlnbm9yZWQuIChlLmcuXG4gICAgLy8gJ2FieHhjZCcgd2lsbCBiZSB0cmVhdGVkIGFzICdhYicpXG4gICAgYnVmID0gYnVmLnNsaWNlKDAsIGFjdHVhbClcbiAgfVxuXG4gIHJldHVybiBidWZcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5TGlrZSAoYXJyYXkpIHtcbiAgY29uc3QgbGVuZ3RoID0gYXJyYXkubGVuZ3RoIDwgMCA/IDAgOiBjaGVja2VkKGFycmF5Lmxlbmd0aCkgfCAwXG4gIGNvbnN0IGJ1ZiA9IGNyZWF0ZUJ1ZmZlcihsZW5ndGgpXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEpIHtcbiAgICBidWZbaV0gPSBhcnJheVtpXSAmIDI1NVxuICB9XG4gIHJldHVybiBidWZcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5VmlldyAoYXJyYXlWaWV3KSB7XG4gIGlmIChpc0luc3RhbmNlKGFycmF5VmlldywgVWludDhBcnJheSkpIHtcbiAgICBjb25zdCBjb3B5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlWaWV3KVxuICAgIHJldHVybiBmcm9tQXJyYXlCdWZmZXIoY29weS5idWZmZXIsIGNvcHkuYnl0ZU9mZnNldCwgY29weS5ieXRlTGVuZ3RoKVxuICB9XG4gIHJldHVybiBmcm9tQXJyYXlMaWtlKGFycmF5Vmlldylcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5QnVmZmVyIChhcnJheSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmIChieXRlT2Zmc2V0IDwgMCB8fCBhcnJheS5ieXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcIm9mZnNldFwiIGlzIG91dHNpZGUgb2YgYnVmZmVyIGJvdW5kcycpXG4gIH1cblxuICBpZiAoYXJyYXkuYnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQgKyAobGVuZ3RoIHx8IDApKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1wibGVuZ3RoXCIgaXMgb3V0c2lkZSBvZiBidWZmZXIgYm91bmRzJylcbiAgfVxuXG4gIGxldCBidWZcbiAgaWYgKGJ5dGVPZmZzZXQgPT09IHVuZGVmaW5lZCAmJiBsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGFycmF5KVxuICB9IGVsc2UgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYnVmID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXksIGJ5dGVPZmZzZXQpXG4gIH0gZWxzZSB7XG4gICAgYnVmID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXksIGJ5dGVPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIC8vIFJldHVybiBhbiBhdWdtZW50ZWQgYFVpbnQ4QXJyYXlgIGluc3RhbmNlXG4gIE9iamVjdC5zZXRQcm90b3R5cGVPZihidWYsIEJ1ZmZlci5wcm90b3R5cGUpXG5cbiAgcmV0dXJuIGJ1ZlxufVxuXG5mdW5jdGlvbiBmcm9tT2JqZWN0IChvYmopIHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihvYmopKSB7XG4gICAgY29uc3QgbGVuID0gY2hlY2tlZChvYmoubGVuZ3RoKSB8IDBcbiAgICBjb25zdCBidWYgPSBjcmVhdGVCdWZmZXIobGVuKVxuXG4gICAgaWYgKGJ1Zi5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBidWZcbiAgICB9XG5cbiAgICBvYmouY29weShidWYsIDAsIDAsIGxlbilcbiAgICByZXR1cm4gYnVmXG4gIH1cblxuICBpZiAob2JqLmxlbmd0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHR5cGVvZiBvYmoubGVuZ3RoICE9PSAnbnVtYmVyJyB8fCBudW1iZXJJc05hTihvYmoubGVuZ3RoKSkge1xuICAgICAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcigwKVxuICAgIH1cbiAgICByZXR1cm4gZnJvbUFycmF5TGlrZShvYmopXG4gIH1cblxuICBpZiAob2JqLnR5cGUgPT09ICdCdWZmZXInICYmIEFycmF5LmlzQXJyYXkob2JqLmRhdGEpKSB7XG4gICAgcmV0dXJuIGZyb21BcnJheUxpa2Uob2JqLmRhdGEpXG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tlZCAobGVuZ3RoKSB7XG4gIC8vIE5vdGU6IGNhbm5vdCB1c2UgYGxlbmd0aCA8IEtfTUFYX0xFTkdUSGAgaGVyZSBiZWNhdXNlIHRoYXQgZmFpbHMgd2hlblxuICAvLyBsZW5ndGggaXMgTmFOICh3aGljaCBpcyBvdGhlcndpc2UgY29lcmNlZCB0byB6ZXJvLilcbiAgaWYgKGxlbmd0aCA+PSBLX01BWF9MRU5HVEgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXR0ZW1wdCB0byBhbGxvY2F0ZSBCdWZmZXIgbGFyZ2VyIHRoYW4gbWF4aW11bSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAnc2l6ZTogMHgnICsgS19NQVhfTEVOR1RILnRvU3RyaW5nKDE2KSArICcgYnl0ZXMnKVxuICB9XG4gIHJldHVybiBsZW5ndGggfCAwXG59XG5cbmZ1bmN0aW9uIFNsb3dCdWZmZXIgKGxlbmd0aCkge1xuICBpZiAoK2xlbmd0aCAhPSBsZW5ndGgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBlcWVxZXFcbiAgICBsZW5ndGggPSAwXG4gIH1cbiAgcmV0dXJuIEJ1ZmZlci5hbGxvYygrbGVuZ3RoKVxufVxuXG5CdWZmZXIuaXNCdWZmZXIgPSBmdW5jdGlvbiBpc0J1ZmZlciAoYikge1xuICByZXR1cm4gYiAhPSBudWxsICYmIGIuX2lzQnVmZmVyID09PSB0cnVlICYmXG4gICAgYiAhPT0gQnVmZmVyLnByb3RvdHlwZSAvLyBzbyBCdWZmZXIuaXNCdWZmZXIoQnVmZmVyLnByb3RvdHlwZSkgd2lsbCBiZSBmYWxzZVxufVxuXG5CdWZmZXIuY29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUgKGEsIGIpIHtcbiAgaWYgKGlzSW5zdGFuY2UoYSwgVWludDhBcnJheSkpIGEgPSBCdWZmZXIuZnJvbShhLCBhLm9mZnNldCwgYS5ieXRlTGVuZ3RoKVxuICBpZiAoaXNJbnN0YW5jZShiLCBVaW50OEFycmF5KSkgYiA9IEJ1ZmZlci5mcm9tKGIsIGIub2Zmc2V0LCBiLmJ5dGVMZW5ndGgpXG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGEpIHx8ICFCdWZmZXIuaXNCdWZmZXIoYikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgJ1RoZSBcImJ1ZjFcIiwgXCJidWYyXCIgYXJndW1lbnRzIG11c3QgYmUgb25lIG9mIHR5cGUgQnVmZmVyIG9yIFVpbnQ4QXJyYXknXG4gICAgKVxuICB9XG5cbiAgaWYgKGEgPT09IGIpIHJldHVybiAwXG5cbiAgbGV0IHggPSBhLmxlbmd0aFxuICBsZXQgeSA9IGIubGVuZ3RoXG5cbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IE1hdGgubWluKHgsIHkpOyBpIDwgbGVuOyArK2kpIHtcbiAgICBpZiAoYVtpXSAhPT0gYltpXSkge1xuICAgICAgeCA9IGFbaV1cbiAgICAgIHkgPSBiW2ldXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xXG4gIGlmICh5IDwgeCkgcmV0dXJuIDFcbiAgcmV0dXJuIDBcbn1cblxuQnVmZmVyLmlzRW5jb2RpbmcgPSBmdW5jdGlvbiBpc0VuY29kaW5nIChlbmNvZGluZykge1xuICBzd2l0Y2ggKFN0cmluZyhlbmNvZGluZykudG9Mb3dlckNhc2UoKSkge1xuICAgIGNhc2UgJ2hleCc6XG4gICAgY2FzZSAndXRmOCc6XG4gICAgY2FzZSAndXRmLTgnOlxuICAgIGNhc2UgJ2FzY2lpJzpcbiAgICBjYXNlICdsYXRpbjEnOlxuICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgY2FzZSAnYmFzZTY0JzpcbiAgICBjYXNlICd1Y3MyJzpcbiAgICBjYXNlICd1Y3MtMic6XG4gICAgY2FzZSAndXRmMTZsZSc6XG4gICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgcmV0dXJuIHRydWVcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuQnVmZmVyLmNvbmNhdCA9IGZ1bmN0aW9uIGNvbmNhdCAobGlzdCwgbGVuZ3RoKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShsaXN0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdFwiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpXG4gIH1cblxuICBpZiAobGlzdC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gQnVmZmVyLmFsbG9jKDApXG4gIH1cblxuICBsZXQgaVxuICBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICBsZW5ndGggPSAwXG4gICAgZm9yIChpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHtcbiAgICAgIGxlbmd0aCArPSBsaXN0W2ldLmxlbmd0aFxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShsZW5ndGgpXG4gIGxldCBwb3MgPSAwXG4gIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XG4gICAgbGV0IGJ1ZiA9IGxpc3RbaV1cbiAgICBpZiAoaXNJbnN0YW5jZShidWYsIFVpbnQ4QXJyYXkpKSB7XG4gICAgICBpZiAocG9zICsgYnVmLmxlbmd0aCA+IGJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkgYnVmID0gQnVmZmVyLmZyb20oYnVmKVxuICAgICAgICBidWYuY29weShidWZmZXIsIHBvcylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKFxuICAgICAgICAgIGJ1ZmZlcixcbiAgICAgICAgICBidWYsXG4gICAgICAgICAgcG9zXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJsaXN0XCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJylcbiAgICB9IGVsc2Uge1xuICAgICAgYnVmLmNvcHkoYnVmZmVyLCBwb3MpXG4gICAgfVxuICAgIHBvcyArPSBidWYubGVuZ3RoXG4gIH1cbiAgcmV0dXJuIGJ1ZmZlclxufVxuXG5mdW5jdGlvbiBieXRlTGVuZ3RoIChzdHJpbmcsIGVuY29kaW5nKSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIoc3RyaW5nKSkge1xuICAgIHJldHVybiBzdHJpbmcubGVuZ3RoXG4gIH1cbiAgaWYgKEFycmF5QnVmZmVyLmlzVmlldyhzdHJpbmcpIHx8IGlzSW5zdGFuY2Uoc3RyaW5nLCBBcnJheUJ1ZmZlcikpIHtcbiAgICByZXR1cm4gc3RyaW5nLmJ5dGVMZW5ndGhcbiAgfVxuICBpZiAodHlwZW9mIHN0cmluZyAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgJ1RoZSBcInN0cmluZ1wiIGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIG9yIEFycmF5QnVmZmVyLiAnICtcbiAgICAgICdSZWNlaXZlZCB0eXBlICcgKyB0eXBlb2Ygc3RyaW5nXG4gICAgKVxuICB9XG5cbiAgY29uc3QgbGVuID0gc3RyaW5nLmxlbmd0aFxuICBjb25zdCBtdXN0TWF0Y2ggPSAoYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdID09PSB0cnVlKVxuICBpZiAoIW11c3RNYXRjaCAmJiBsZW4gPT09IDApIHJldHVybiAwXG5cbiAgLy8gVXNlIGEgZm9yIGxvb3AgdG8gYXZvaWQgcmVjdXJzaW9uXG4gIGxldCBsb3dlcmVkQ2FzZSA9IGZhbHNlXG4gIGZvciAoOzspIHtcbiAgICBzd2l0Y2ggKGVuY29kaW5nKSB7XG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICBjYXNlICdsYXRpbjEnOlxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuIGxlblxuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICAgIHJldHVybiB1dGY4VG9CeXRlcyhzdHJpbmcpLmxlbmd0aFxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIGxlbiAqIDJcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBsZW4gPj4+IDFcbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIHJldHVybiBiYXNlNjRUb0J5dGVzKHN0cmluZykubGVuZ3RoXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHtcbiAgICAgICAgICByZXR1cm4gbXVzdE1hdGNoID8gLTEgOiB1dGY4VG9CeXRlcyhzdHJpbmcpLmxlbmd0aCAvLyBhc3N1bWUgdXRmOFxuICAgICAgICB9XG4gICAgICAgIGVuY29kaW5nID0gKCcnICsgZW5jb2RpbmcpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlXG4gICAgfVxuICB9XG59XG5CdWZmZXIuYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGhcblxuZnVuY3Rpb24gc2xvd1RvU3RyaW5nIChlbmNvZGluZywgc3RhcnQsIGVuZCkge1xuICBsZXQgbG93ZXJlZENhc2UgPSBmYWxzZVxuXG4gIC8vIE5vIG5lZWQgdG8gdmVyaWZ5IHRoYXQgXCJ0aGlzLmxlbmd0aCA8PSBNQVhfVUlOVDMyXCIgc2luY2UgaXQncyBhIHJlYWQtb25seVxuICAvLyBwcm9wZXJ0eSBvZiBhIHR5cGVkIGFycmF5LlxuXG4gIC8vIFRoaXMgYmVoYXZlcyBuZWl0aGVyIGxpa2UgU3RyaW5nIG5vciBVaW50OEFycmF5IGluIHRoYXQgd2Ugc2V0IHN0YXJ0L2VuZFxuICAvLyB0byB0aGVpciB1cHBlci9sb3dlciBib3VuZHMgaWYgdGhlIHZhbHVlIHBhc3NlZCBpcyBvdXQgb2YgcmFuZ2UuXG4gIC8vIHVuZGVmaW5lZCBpcyBoYW5kbGVkIHNwZWNpYWxseSBhcyBwZXIgRUNNQS0yNjIgNnRoIEVkaXRpb24sXG4gIC8vIFNlY3Rpb24gMTMuMy4zLjcgUnVudGltZSBTZW1hbnRpY3M6IEtleWVkQmluZGluZ0luaXRpYWxpemF0aW9uLlxuICBpZiAoc3RhcnQgPT09IHVuZGVmaW5lZCB8fCBzdGFydCA8IDApIHtcbiAgICBzdGFydCA9IDBcbiAgfVxuICAvLyBSZXR1cm4gZWFybHkgaWYgc3RhcnQgPiB0aGlzLmxlbmd0aC4gRG9uZSBoZXJlIHRvIHByZXZlbnQgcG90ZW50aWFsIHVpbnQzMlxuICAvLyBjb2VyY2lvbiBmYWlsIGJlbG93LlxuICBpZiAoc3RhcnQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkIHx8IGVuZCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgZW5kID0gdGhpcy5sZW5ndGhcbiAgfVxuXG4gIGlmIChlbmQgPD0gMCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgLy8gRm9yY2UgY29lcmNpb24gdG8gdWludDMyLiBUaGlzIHdpbGwgYWxzbyBjb2VyY2UgZmFsc2V5L05hTiB2YWx1ZXMgdG8gMC5cbiAgZW5kID4+Pj0gMFxuICBzdGFydCA+Pj49IDBcblxuICBpZiAoZW5kIDw9IHN0YXJ0KSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICBpZiAoIWVuY29kaW5nKSBlbmNvZGluZyA9ICd1dGY4J1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGhleFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgICAgcmV0dXJuIGFzY2lpU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBsYXRpbjFTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICByZXR1cm4gYmFzZTY0U2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIHV0ZjE2bGVTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICAgICAgZW5jb2RpbmcgPSAoZW5jb2RpbmcgKyAnJykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cblxuLy8gVGhpcyBwcm9wZXJ0eSBpcyB1c2VkIGJ5IGBCdWZmZXIuaXNCdWZmZXJgIChhbmQgdGhlIGBpcy1idWZmZXJgIG5wbSBwYWNrYWdlKVxuLy8gdG8gZGV0ZWN0IGEgQnVmZmVyIGluc3RhbmNlLiBJdCdzIG5vdCBwb3NzaWJsZSB0byB1c2UgYGluc3RhbmNlb2YgQnVmZmVyYFxuLy8gcmVsaWFibHkgaW4gYSBicm93c2VyaWZ5IGNvbnRleHQgYmVjYXVzZSB0aGVyZSBjb3VsZCBiZSBtdWx0aXBsZSBkaWZmZXJlbnRcbi8vIGNvcGllcyBvZiB0aGUgJ2J1ZmZlcicgcGFja2FnZSBpbiB1c2UuIFRoaXMgbWV0aG9kIHdvcmtzIGV2ZW4gZm9yIEJ1ZmZlclxuLy8gaW5zdGFuY2VzIHRoYXQgd2VyZSBjcmVhdGVkIGZyb20gYW5vdGhlciBjb3B5IG9mIHRoZSBgYnVmZmVyYCBwYWNrYWdlLlxuLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlci9pc3N1ZXMvMTU0XG5CdWZmZXIucHJvdG90eXBlLl9pc0J1ZmZlciA9IHRydWVcblxuZnVuY3Rpb24gc3dhcCAoYiwgbiwgbSkge1xuICBjb25zdCBpID0gYltuXVxuICBiW25dID0gYlttXVxuICBiW21dID0gaVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnN3YXAxNiA9IGZ1bmN0aW9uIHN3YXAxNiAoKSB7XG4gIGNvbnN0IGxlbiA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW4gJSAyICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxNi1iaXRzJylcbiAgfVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSArPSAyKSB7XG4gICAgc3dhcCh0aGlzLCBpLCBpICsgMSlcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnN3YXAzMiA9IGZ1bmN0aW9uIHN3YXAzMiAoKSB7XG4gIGNvbnN0IGxlbiA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW4gJSA0ICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzMi1iaXRzJylcbiAgfVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSArPSA0KSB7XG4gICAgc3dhcCh0aGlzLCBpLCBpICsgMylcbiAgICBzd2FwKHRoaXMsIGkgKyAxLCBpICsgMilcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnN3YXA2NCA9IGZ1bmN0aW9uIHN3YXA2NCAoKSB7XG4gIGNvbnN0IGxlbiA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW4gJSA4ICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA2NC1iaXRzJylcbiAgfVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSArPSA4KSB7XG4gICAgc3dhcCh0aGlzLCBpLCBpICsgNylcbiAgICBzd2FwKHRoaXMsIGkgKyAxLCBpICsgNilcbiAgICBzd2FwKHRoaXMsIGkgKyAyLCBpICsgNSlcbiAgICBzd2FwKHRoaXMsIGkgKyAzLCBpICsgNClcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKCkge1xuICBjb25zdCBsZW5ndGggPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuZ3RoID09PSAwKSByZXR1cm4gJydcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHJldHVybiB1dGY4U2xpY2UodGhpcywgMCwgbGVuZ3RoKVxuICByZXR1cm4gc2xvd1RvU3RyaW5nLmFwcGx5KHRoaXMsIGFyZ3VtZW50cylcbn1cblxuQnVmZmVyLnByb3RvdHlwZS50b0xvY2FsZVN0cmluZyA9IEJ1ZmZlci5wcm90b3R5cGUudG9TdHJpbmdcblxuQnVmZmVyLnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbiBlcXVhbHMgKGIpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXInKVxuICBpZiAodGhpcyA9PT0gYikgcmV0dXJuIHRydWVcbiAgcmV0dXJuIEJ1ZmZlci5jb21wYXJlKHRoaXMsIGIpID09PSAwXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uIGluc3BlY3QgKCkge1xuICBsZXQgc3RyID0gJydcbiAgY29uc3QgbWF4ID0gSU5TUEVDVF9NQVhfQllURVNcbiAgc3RyID0gdGhpcy50b1N0cmluZygnaGV4JywgMCwgbWF4KS5yZXBsYWNlKC8oLnsyfSkvZywgJyQxICcpLnRyaW0oKVxuICBpZiAodGhpcy5sZW5ndGggPiBtYXgpIHN0ciArPSAnIC4uLiAnXG4gIHJldHVybiAnPEJ1ZmZlciAnICsgc3RyICsgJz4nXG59XG5pZiAoY3VzdG9tSW5zcGVjdFN5bWJvbCkge1xuICBCdWZmZXIucHJvdG90eXBlW2N1c3RvbUluc3BlY3RTeW1ib2xdID0gQnVmZmVyLnByb3RvdHlwZS5pbnNwZWN0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUgKHRhcmdldCwgc3RhcnQsIGVuZCwgdGhpc1N0YXJ0LCB0aGlzRW5kKSB7XG4gIGlmIChpc0luc3RhbmNlKHRhcmdldCwgVWludDhBcnJheSkpIHtcbiAgICB0YXJnZXQgPSBCdWZmZXIuZnJvbSh0YXJnZXQsIHRhcmdldC5vZmZzZXQsIHRhcmdldC5ieXRlTGVuZ3RoKVxuICB9XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHRhcmdldCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgJ1RoZSBcInRhcmdldFwiIGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgQnVmZmVyIG9yIFVpbnQ4QXJyYXkuICcgK1xuICAgICAgJ1JlY2VpdmVkIHR5cGUgJyArICh0eXBlb2YgdGFyZ2V0KVxuICAgIClcbiAgfVxuXG4gIGlmIChzdGFydCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgc3RhcnQgPSAwXG4gIH1cbiAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZW5kID0gdGFyZ2V0ID8gdGFyZ2V0Lmxlbmd0aCA6IDBcbiAgfVxuICBpZiAodGhpc1N0YXJ0ID09PSB1bmRlZmluZWQpIHtcbiAgICB0aGlzU3RhcnQgPSAwXG4gIH1cbiAgaWYgKHRoaXNFbmQgPT09IHVuZGVmaW5lZCkge1xuICAgIHRoaXNFbmQgPSB0aGlzLmxlbmd0aFxuICB9XG5cbiAgaWYgKHN0YXJ0IDwgMCB8fCBlbmQgPiB0YXJnZXQubGVuZ3RoIHx8IHRoaXNTdGFydCA8IDAgfHwgdGhpc0VuZCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ291dCBvZiByYW5nZSBpbmRleCcpXG4gIH1cblxuICBpZiAodGhpc1N0YXJ0ID49IHRoaXNFbmQgJiYgc3RhcnQgPj0gZW5kKSB7XG4gICAgcmV0dXJuIDBcbiAgfVxuICBpZiAodGhpc1N0YXJ0ID49IHRoaXNFbmQpIHtcbiAgICByZXR1cm4gLTFcbiAgfVxuICBpZiAoc3RhcnQgPj0gZW5kKSB7XG4gICAgcmV0dXJuIDFcbiAgfVxuXG4gIHN0YXJ0ID4+Pj0gMFxuICBlbmQgPj4+PSAwXG4gIHRoaXNTdGFydCA+Pj49IDBcbiAgdGhpc0VuZCA+Pj49IDBcblxuICBpZiAodGhpcyA9PT0gdGFyZ2V0KSByZXR1cm4gMFxuXG4gIGxldCB4ID0gdGhpc0VuZCAtIHRoaXNTdGFydFxuICBsZXQgeSA9IGVuZCAtIHN0YXJ0XG4gIGNvbnN0IGxlbiA9IE1hdGgubWluKHgsIHkpXG5cbiAgY29uc3QgdGhpc0NvcHkgPSB0aGlzLnNsaWNlKHRoaXNTdGFydCwgdGhpc0VuZClcbiAgY29uc3QgdGFyZ2V0Q29weSA9IHRhcmdldC5zbGljZShzdGFydCwgZW5kKVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICBpZiAodGhpc0NvcHlbaV0gIT09IHRhcmdldENvcHlbaV0pIHtcbiAgICAgIHggPSB0aGlzQ29weVtpXVxuICAgICAgeSA9IHRhcmdldENvcHlbaV1cbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaWYgKHggPCB5KSByZXR1cm4gLTFcbiAgaWYgKHkgPCB4KSByZXR1cm4gMVxuICByZXR1cm4gMFxufVxuXG4vLyBGaW5kcyBlaXRoZXIgdGhlIGZpcnN0IGluZGV4IG9mIGB2YWxgIGluIGBidWZmZXJgIGF0IG9mZnNldCA+PSBgYnl0ZU9mZnNldGAsXG4vLyBPUiB0aGUgbGFzdCBpbmRleCBvZiBgdmFsYCBpbiBgYnVmZmVyYCBhdCBvZmZzZXQgPD0gYGJ5dGVPZmZzZXRgLlxuLy9cbi8vIEFyZ3VtZW50czpcbi8vIC0gYnVmZmVyIC0gYSBCdWZmZXIgdG8gc2VhcmNoXG4vLyAtIHZhbCAtIGEgc3RyaW5nLCBCdWZmZXIsIG9yIG51bWJlclxuLy8gLSBieXRlT2Zmc2V0IC0gYW4gaW5kZXggaW50byBgYnVmZmVyYDsgd2lsbCBiZSBjbGFtcGVkIHRvIGFuIGludDMyXG4vLyAtIGVuY29kaW5nIC0gYW4gb3B0aW9uYWwgZW5jb2RpbmcsIHJlbGV2YW50IGlzIHZhbCBpcyBhIHN0cmluZ1xuLy8gLSBkaXIgLSB0cnVlIGZvciBpbmRleE9mLCBmYWxzZSBmb3IgbGFzdEluZGV4T2ZcbmZ1bmN0aW9uIGJpZGlyZWN0aW9uYWxJbmRleE9mIChidWZmZXIsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcikge1xuICAvLyBFbXB0eSBidWZmZXIgbWVhbnMgbm8gbWF0Y2hcbiAgaWYgKGJ1ZmZlci5sZW5ndGggPT09IDApIHJldHVybiAtMVxuXG4gIC8vIE5vcm1hbGl6ZSBieXRlT2Zmc2V0XG4gIGlmICh0eXBlb2YgYnl0ZU9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICBlbmNvZGluZyA9IGJ5dGVPZmZzZXRcbiAgICBieXRlT2Zmc2V0ID0gMFxuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPiAweDdmZmZmZmZmKSB7XG4gICAgYnl0ZU9mZnNldCA9IDB4N2ZmZmZmZmZcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0IDwgLTB4ODAwMDAwMDApIHtcbiAgICBieXRlT2Zmc2V0ID0gLTB4ODAwMDAwMDBcbiAgfVxuICBieXRlT2Zmc2V0ID0gK2J5dGVPZmZzZXQgLy8gQ29lcmNlIHRvIE51bWJlci5cbiAgaWYgKG51bWJlcklzTmFOKGJ5dGVPZmZzZXQpKSB7XG4gICAgLy8gYnl0ZU9mZnNldDogaXQgaXQncyB1bmRlZmluZWQsIG51bGwsIE5hTiwgXCJmb29cIiwgZXRjLCBzZWFyY2ggd2hvbGUgYnVmZmVyXG4gICAgYnl0ZU9mZnNldCA9IGRpciA/IDAgOiAoYnVmZmVyLmxlbmd0aCAtIDEpXG4gIH1cblxuICAvLyBOb3JtYWxpemUgYnl0ZU9mZnNldDogbmVnYXRpdmUgb2Zmc2V0cyBzdGFydCBmcm9tIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlclxuICBpZiAoYnl0ZU9mZnNldCA8IDApIGJ5dGVPZmZzZXQgPSBidWZmZXIubGVuZ3RoICsgYnl0ZU9mZnNldFxuICBpZiAoYnl0ZU9mZnNldCA+PSBidWZmZXIubGVuZ3RoKSB7XG4gICAgaWYgKGRpcikgcmV0dXJuIC0xXG4gICAgZWxzZSBieXRlT2Zmc2V0ID0gYnVmZmVyLmxlbmd0aCAtIDFcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0IDwgMCkge1xuICAgIGlmIChkaXIpIGJ5dGVPZmZzZXQgPSAwXG4gICAgZWxzZSByZXR1cm4gLTFcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSB2YWxcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFsID0gQnVmZmVyLmZyb20odmFsLCBlbmNvZGluZylcbiAgfVxuXG4gIC8vIEZpbmFsbHksIHNlYXJjaCBlaXRoZXIgaW5kZXhPZiAoaWYgZGlyIGlzIHRydWUpIG9yIGxhc3RJbmRleE9mXG4gIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsKSkge1xuICAgIC8vIFNwZWNpYWwgY2FzZTogbG9va2luZyBmb3IgZW1wdHkgc3RyaW5nL2J1ZmZlciBhbHdheXMgZmFpbHNcbiAgICBpZiAodmFsLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIC0xXG4gICAgfVxuICAgIHJldHVybiBhcnJheUluZGV4T2YoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpXG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICB2YWwgPSB2YWwgJiAweEZGIC8vIFNlYXJjaCBmb3IgYSBieXRlIHZhbHVlIFswLTI1NV1cbiAgICBpZiAodHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGlmIChkaXIpIHtcbiAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChidWZmZXIsIHZhbCwgYnl0ZU9mZnNldClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0KVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXlJbmRleE9mKGJ1ZmZlciwgW3ZhbF0sIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpXG4gIH1cblxuICB0aHJvdyBuZXcgVHlwZUVycm9yKCd2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXInKVxufVxuXG5mdW5jdGlvbiBhcnJheUluZGV4T2YgKGFyciwgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKSB7XG4gIGxldCBpbmRleFNpemUgPSAxXG4gIGxldCBhcnJMZW5ndGggPSBhcnIubGVuZ3RoXG4gIGxldCB2YWxMZW5ndGggPSB2YWwubGVuZ3RoXG5cbiAgaWYgKGVuY29kaW5nICE9PSB1bmRlZmluZWQpIHtcbiAgICBlbmNvZGluZyA9IFN0cmluZyhlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgIGlmIChlbmNvZGluZyA9PT0gJ3VjczInIHx8IGVuY29kaW5nID09PSAndWNzLTInIHx8XG4gICAgICAgIGVuY29kaW5nID09PSAndXRmMTZsZScgfHwgZW5jb2RpbmcgPT09ICd1dGYtMTZsZScpIHtcbiAgICAgIGlmIChhcnIubGVuZ3RoIDwgMiB8fCB2YWwubGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4gLTFcbiAgICAgIH1cbiAgICAgIGluZGV4U2l6ZSA9IDJcbiAgICAgIGFyckxlbmd0aCAvPSAyXG4gICAgICB2YWxMZW5ndGggLz0gMlxuICAgICAgYnl0ZU9mZnNldCAvPSAyXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVhZCAoYnVmLCBpKSB7XG4gICAgaWYgKGluZGV4U2l6ZSA9PT0gMSkge1xuICAgICAgcmV0dXJuIGJ1ZltpXVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYnVmLnJlYWRVSW50MTZCRShpICogaW5kZXhTaXplKVxuICAgIH1cbiAgfVxuXG4gIGxldCBpXG4gIGlmIChkaXIpIHtcbiAgICBsZXQgZm91bmRJbmRleCA9IC0xXG4gICAgZm9yIChpID0gYnl0ZU9mZnNldDsgaSA8IGFyckxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAocmVhZChhcnIsIGkpID09PSByZWFkKHZhbCwgZm91bmRJbmRleCA9PT0gLTEgPyAwIDogaSAtIGZvdW5kSW5kZXgpKSB7XG4gICAgICAgIGlmIChmb3VuZEluZGV4ID09PSAtMSkgZm91bmRJbmRleCA9IGlcbiAgICAgICAgaWYgKGkgLSBmb3VuZEluZGV4ICsgMSA9PT0gdmFsTGVuZ3RoKSByZXR1cm4gZm91bmRJbmRleCAqIGluZGV4U2l6ZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGZvdW5kSW5kZXggIT09IC0xKSBpIC09IGkgLSBmb3VuZEluZGV4XG4gICAgICAgIGZvdW5kSW5kZXggPSAtMVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoYnl0ZU9mZnNldCArIHZhbExlbmd0aCA+IGFyckxlbmd0aCkgYnl0ZU9mZnNldCA9IGFyckxlbmd0aCAtIHZhbExlbmd0aFxuICAgIGZvciAoaSA9IGJ5dGVPZmZzZXQ7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBsZXQgZm91bmQgPSB0cnVlXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHZhbExlbmd0aDsgaisrKSB7XG4gICAgICAgIGlmIChyZWFkKGFyciwgaSArIGopICE9PSByZWFkKHZhbCwgaikpIHtcbiAgICAgICAgICBmb3VuZCA9IGZhbHNlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGZvdW5kKSByZXR1cm4gaVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAtMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluY2x1ZGVzID0gZnVuY3Rpb24gaW5jbHVkZXMgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIHRoaXMuaW5kZXhPZih2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSAhPT0gLTFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24gaW5kZXhPZiAodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gYmlkaXJlY3Rpb25hbEluZGV4T2YodGhpcywgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgdHJ1ZSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5sYXN0SW5kZXhPZiA9IGZ1bmN0aW9uIGxhc3RJbmRleE9mICh2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7XG4gIHJldHVybiBiaWRpcmVjdGlvbmFsSW5kZXhPZih0aGlzLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBmYWxzZSlcbn1cblxuZnVuY3Rpb24gaGV4V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICBvZmZzZXQgPSBOdW1iZXIob2Zmc2V0KSB8fCAwXG4gIGNvbnN0IHJlbWFpbmluZyA9IGJ1Zi5sZW5ndGggLSBvZmZzZXRcbiAgaWYgKCFsZW5ndGgpIHtcbiAgICBsZW5ndGggPSByZW1haW5pbmdcbiAgfSBlbHNlIHtcbiAgICBsZW5ndGggPSBOdW1iZXIobGVuZ3RoKVxuICAgIGlmIChsZW5ndGggPiByZW1haW5pbmcpIHtcbiAgICAgIGxlbmd0aCA9IHJlbWFpbmluZ1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHN0ckxlbiA9IHN0cmluZy5sZW5ndGhcblxuICBpZiAobGVuZ3RoID4gc3RyTGVuIC8gMikge1xuICAgIGxlbmd0aCA9IHN0ckxlbiAvIDJcbiAgfVxuICBsZXQgaVxuICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBjb25zdCBwYXJzZWQgPSBwYXJzZUludChzdHJpbmcuc3Vic3RyKGkgKiAyLCAyKSwgMTYpXG4gICAgaWYgKG51bWJlcklzTmFOKHBhcnNlZCkpIHJldHVybiBpXG4gICAgYnVmW29mZnNldCArIGldID0gcGFyc2VkXG4gIH1cbiAgcmV0dXJuIGlcbn1cblxuZnVuY3Rpb24gdXRmOFdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIodXRmOFRvQnl0ZXMoc3RyaW5nLCBidWYubGVuZ3RoIC0gb2Zmc2V0KSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gYXNjaWlXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKGFzY2lpVG9CeXRlcyhzdHJpbmcpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBiYXNlNjRXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKGJhc2U2NFRvQnl0ZXMoc3RyaW5nKSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gdWNzMldyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIodXRmMTZsZVRvQnl0ZXMoc3RyaW5nLCBidWYubGVuZ3RoIC0gb2Zmc2V0KSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIHdyaXRlIChzdHJpbmcsIG9mZnNldCwgbGVuZ3RoLCBlbmNvZGluZykge1xuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nKVxuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICBlbmNvZGluZyA9ICd1dGY4J1xuICAgIGxlbmd0aCA9IHRoaXMubGVuZ3RoXG4gICAgb2Zmc2V0ID0gMFxuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nLCBlbmNvZGluZylcbiAgfSBlbHNlIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gb2Zmc2V0XG4gICAgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgICBvZmZzZXQgPSAwXG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcsIG9mZnNldFssIGxlbmd0aF1bLCBlbmNvZGluZ10pXG4gIH0gZWxzZSBpZiAoaXNGaW5pdGUob2Zmc2V0KSkge1xuICAgIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICAgIGlmIChpc0Zpbml0ZShsZW5ndGgpKSB7XG4gICAgICBsZW5ndGggPSBsZW5ndGggPj4+IDBcbiAgICAgIGlmIChlbmNvZGluZyA9PT0gdW5kZWZpbmVkKSBlbmNvZGluZyA9ICd1dGY4J1xuICAgIH0gZWxzZSB7XG4gICAgICBlbmNvZGluZyA9IGxlbmd0aFxuICAgICAgbGVuZ3RoID0gdW5kZWZpbmVkXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCdcbiAgICApXG4gIH1cblxuICBjb25zdCByZW1haW5pbmcgPSB0aGlzLmxlbmd0aCAtIG9mZnNldFxuICBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQgfHwgbGVuZ3RoID4gcmVtYWluaW5nKSBsZW5ndGggPSByZW1haW5pbmdcblxuICBpZiAoKHN0cmluZy5sZW5ndGggPiAwICYmIChsZW5ndGggPCAwIHx8IG9mZnNldCA8IDApKSB8fCBvZmZzZXQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdBdHRlbXB0IHRvIHdyaXRlIG91dHNpZGUgYnVmZmVyIGJvdW5kcycpXG4gIH1cblxuICBpZiAoIWVuY29kaW5nKSBlbmNvZGluZyA9ICd1dGY4J1xuXG4gIGxldCBsb3dlcmVkQ2FzZSA9IGZhbHNlXG4gIGZvciAoOzspIHtcbiAgICBzd2l0Y2ggKGVuY29kaW5nKSB7XG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gaGV4V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICAgIHJldHVybiB1dGY4V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBhc2NpaVdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIC8vIFdhcm5pbmc6IG1heExlbmd0aCBub3QgdGFrZW4gaW50byBhY2NvdW50IGluIGJhc2U2NFdyaXRlXG4gICAgICAgIHJldHVybiBiYXNlNjRXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gdWNzMldyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChsb3dlcmVkQ2FzZSkgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgICAgICBlbmNvZGluZyA9ICgnJyArIGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uIHRvSlNPTiAoKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogJ0J1ZmZlcicsXG4gICAgZGF0YTogQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyIHx8IHRoaXMsIDApXG4gIH1cbn1cblxuZnVuY3Rpb24gYmFzZTY0U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBpZiAoc3RhcnQgPT09IDAgJiYgZW5kID09PSBidWYubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGJhc2U2NC5mcm9tQnl0ZUFycmF5KGJ1ZilcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYmFzZTY0LmZyb21CeXRlQXJyYXkoYnVmLnNsaWNlKHN0YXJ0LCBlbmQpKVxuICB9XG59XG5cbmZ1bmN0aW9uIHV0ZjhTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcbiAgY29uc3QgcmVzID0gW11cblxuICBsZXQgaSA9IHN0YXJ0XG4gIHdoaWxlIChpIDwgZW5kKSB7XG4gICAgY29uc3QgZmlyc3RCeXRlID0gYnVmW2ldXG4gICAgbGV0IGNvZGVQb2ludCA9IG51bGxcbiAgICBsZXQgYnl0ZXNQZXJTZXF1ZW5jZSA9IChmaXJzdEJ5dGUgPiAweEVGKVxuICAgICAgPyA0XG4gICAgICA6IChmaXJzdEJ5dGUgPiAweERGKVxuICAgICAgICAgID8gM1xuICAgICAgICAgIDogKGZpcnN0Qnl0ZSA+IDB4QkYpXG4gICAgICAgICAgICAgID8gMlxuICAgICAgICAgICAgICA6IDFcblxuICAgIGlmIChpICsgYnl0ZXNQZXJTZXF1ZW5jZSA8PSBlbmQpIHtcbiAgICAgIGxldCBzZWNvbmRCeXRlLCB0aGlyZEJ5dGUsIGZvdXJ0aEJ5dGUsIHRlbXBDb2RlUG9pbnRcblxuICAgICAgc3dpdGNoIChieXRlc1BlclNlcXVlbmNlKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpZiAoZmlyc3RCeXRlIDwgMHg4MCkge1xuICAgICAgICAgICAgY29kZVBvaW50ID0gZmlyc3RCeXRlXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4MUYpIDw8IDB4NiB8IChzZWNvbmRCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHg3Rikge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAodGhpcmRCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHhGKSA8PCAweEMgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpIDw8IDB4NiB8ICh0aGlyZEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweDdGRiAmJiAodGVtcENvZGVQb2ludCA8IDB4RDgwMCB8fCB0ZW1wQ29kZVBvaW50ID4gMHhERkZGKSkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBmb3VydGhCeXRlID0gYnVmW2kgKyAzXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwICYmICh0aGlyZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAoZm91cnRoQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4RikgPDwgMHgxMiB8IChzZWNvbmRCeXRlICYgMHgzRikgPDwgMHhDIHwgKHRoaXJkQnl0ZSAmIDB4M0YpIDw8IDB4NiB8IChmb3VydGhCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHhGRkZGICYmIHRlbXBDb2RlUG9pbnQgPCAweDExMDAwMCkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjb2RlUG9pbnQgPT09IG51bGwpIHtcbiAgICAgIC8vIHdlIGRpZCBub3QgZ2VuZXJhdGUgYSB2YWxpZCBjb2RlUG9pbnQgc28gaW5zZXJ0IGFcbiAgICAgIC8vIHJlcGxhY2VtZW50IGNoYXIgKFUrRkZGRCkgYW5kIGFkdmFuY2Ugb25seSAxIGJ5dGVcbiAgICAgIGNvZGVQb2ludCA9IDB4RkZGRFxuICAgICAgYnl0ZXNQZXJTZXF1ZW5jZSA9IDFcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA+IDB4RkZGRikge1xuICAgICAgLy8gZW5jb2RlIHRvIHV0ZjE2IChzdXJyb2dhdGUgcGFpciBkYW5jZSlcbiAgICAgIGNvZGVQb2ludCAtPSAweDEwMDAwXG4gICAgICByZXMucHVzaChjb2RlUG9pbnQgPj4+IDEwICYgMHgzRkYgfCAweEQ4MDApXG4gICAgICBjb2RlUG9pbnQgPSAweERDMDAgfCBjb2RlUG9pbnQgJiAweDNGRlxuICAgIH1cblxuICAgIHJlcy5wdXNoKGNvZGVQb2ludClcbiAgICBpICs9IGJ5dGVzUGVyU2VxdWVuY2VcbiAgfVxuXG4gIHJldHVybiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkocmVzKVxufVxuXG4vLyBCYXNlZCBvbiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMjc0NzI3Mi82ODA3NDIsIHRoZSBicm93c2VyIHdpdGhcbi8vIHRoZSBsb3dlc3QgbGltaXQgaXMgQ2hyb21lLCB3aXRoIDB4MTAwMDAgYXJncy5cbi8vIFdlIGdvIDEgbWFnbml0dWRlIGxlc3MsIGZvciBzYWZldHlcbmNvbnN0IE1BWF9BUkdVTUVOVFNfTEVOR1RIID0gMHgxMDAwXG5cbmZ1bmN0aW9uIGRlY29kZUNvZGVQb2ludHNBcnJheSAoY29kZVBvaW50cykge1xuICBjb25zdCBsZW4gPSBjb2RlUG9pbnRzLmxlbmd0aFxuICBpZiAobGVuIDw9IE1BWF9BUkdVTUVOVFNfTEVOR1RIKSB7XG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLCBjb2RlUG9pbnRzKSAvLyBhdm9pZCBleHRyYSBzbGljZSgpXG4gIH1cblxuICAvLyBEZWNvZGUgaW4gY2h1bmtzIHRvIGF2b2lkIFwiY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkXCIuXG4gIGxldCByZXMgPSAnJ1xuICBsZXQgaSA9IDBcbiAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICByZXMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShcbiAgICAgIFN0cmluZyxcbiAgICAgIGNvZGVQb2ludHMuc2xpY2UoaSwgaSArPSBNQVhfQVJHVU1FTlRTX0xFTkdUSClcbiAgICApXG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5mdW5jdGlvbiBhc2NpaVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgbGV0IHJldCA9ICcnXG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcblxuICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgIHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSAmIDB4N0YpXG4gIH1cbiAgcmV0dXJuIHJldFxufVxuXG5mdW5jdGlvbiBsYXRpbjFTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIGxldCByZXQgPSAnJ1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpXG5cbiAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICByZXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShidWZbaV0pXG4gIH1cbiAgcmV0dXJuIHJldFxufVxuXG5mdW5jdGlvbiBoZXhTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIGNvbnN0IGxlbiA9IGJ1Zi5sZW5ndGhcblxuICBpZiAoIXN0YXJ0IHx8IHN0YXJ0IDwgMCkgc3RhcnQgPSAwXG4gIGlmICghZW5kIHx8IGVuZCA8IDAgfHwgZW5kID4gbGVuKSBlbmQgPSBsZW5cblxuICBsZXQgb3V0ID0gJydcbiAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICBvdXQgKz0gaGV4U2xpY2VMb29rdXBUYWJsZVtidWZbaV1dXG4gIH1cbiAgcmV0dXJuIG91dFxufVxuXG5mdW5jdGlvbiB1dGYxNmxlU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBjb25zdCBieXRlcyA9IGJ1Zi5zbGljZShzdGFydCwgZW5kKVxuICBsZXQgcmVzID0gJydcbiAgLy8gSWYgYnl0ZXMubGVuZ3RoIGlzIG9kZCwgdGhlIGxhc3QgOCBiaXRzIG11c3QgYmUgaWdub3JlZCAoc2FtZSBhcyBub2RlLmpzKVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aCAtIDE7IGkgKz0gMikge1xuICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ5dGVzW2ldICsgKGJ5dGVzW2kgKyAxXSAqIDI1NikpXG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnNsaWNlID0gZnVuY3Rpb24gc2xpY2UgKHN0YXJ0LCBlbmQpIHtcbiAgY29uc3QgbGVuID0gdGhpcy5sZW5ndGhcbiAgc3RhcnQgPSB+fnN0YXJ0XG4gIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuIDogfn5lbmRcblxuICBpZiAoc3RhcnQgPCAwKSB7XG4gICAgc3RhcnQgKz0gbGVuXG4gICAgaWYgKHN0YXJ0IDwgMCkgc3RhcnQgPSAwXG4gIH0gZWxzZSBpZiAoc3RhcnQgPiBsZW4pIHtcbiAgICBzdGFydCA9IGxlblxuICB9XG5cbiAgaWYgKGVuZCA8IDApIHtcbiAgICBlbmQgKz0gbGVuXG4gICAgaWYgKGVuZCA8IDApIGVuZCA9IDBcbiAgfSBlbHNlIGlmIChlbmQgPiBsZW4pIHtcbiAgICBlbmQgPSBsZW5cbiAgfVxuXG4gIGlmIChlbmQgPCBzdGFydCkgZW5kID0gc3RhcnRcblxuICBjb25zdCBuZXdCdWYgPSB0aGlzLnN1YmFycmF5KHN0YXJ0LCBlbmQpXG4gIC8vIFJldHVybiBhbiBhdWdtZW50ZWQgYFVpbnQ4QXJyYXlgIGluc3RhbmNlXG4gIE9iamVjdC5zZXRQcm90b3R5cGVPZihuZXdCdWYsIEJ1ZmZlci5wcm90b3R5cGUpXG5cbiAgcmV0dXJuIG5ld0J1ZlxufVxuXG4vKlxuICogTmVlZCB0byBtYWtlIHN1cmUgdGhhdCBidWZmZXIgaXNuJ3QgdHJ5aW5nIHRvIHdyaXRlIG91dCBvZiBib3VuZHMuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrT2Zmc2V0IChvZmZzZXQsIGV4dCwgbGVuZ3RoKSB7XG4gIGlmICgob2Zmc2V0ICUgMSkgIT09IDAgfHwgb2Zmc2V0IDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ29mZnNldCBpcyBub3QgdWludCcpXG4gIGlmIChvZmZzZXQgKyBleHQgPiBsZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdUcnlpbmcgdG8gYWNjZXNzIGJleW9uZCBidWZmZXIgbGVuZ3RoJylcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVWludExFID1cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRMRSA9IGZ1bmN0aW9uIHJlYWRVSW50TEUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgbGV0IHZhbCA9IHRoaXNbb2Zmc2V0XVxuICBsZXQgbXVsID0gMVxuICBsZXQgaSA9IDBcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyBpXSAqIG11bFxuICB9XG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVaW50QkUgPVxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludEJFID0gZnVuY3Rpb24gcmVhZFVJbnRCRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG4gIH1cblxuICBsZXQgdmFsID0gdGhpc1tvZmZzZXQgKyAtLWJ5dGVMZW5ndGhdXG4gIGxldCBtdWwgPSAxXG4gIHdoaWxlIChieXRlTGVuZ3RoID4gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIC0tYnl0ZUxlbmd0aF0gKiBtdWxcbiAgfVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVWludDggPVxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDggPSBmdW5jdGlvbiByZWFkVUludDggKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMSwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiB0aGlzW29mZnNldF1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVWludDE2TEUgPVxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDE2TEUgPSBmdW5jdGlvbiByZWFkVUludDE2TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiB0aGlzW29mZnNldF0gfCAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVaW50MTZCRSA9XG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MTZCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MTZCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuICh0aGlzW29mZnNldF0gPDwgOCkgfCB0aGlzW29mZnNldCArIDFdXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVpbnQzMkxFID1cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQzMkxFID0gZnVuY3Rpb24gcmVhZFVJbnQzMkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAoKHRoaXNbb2Zmc2V0XSkgfFxuICAgICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOCkgfFxuICAgICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgMTYpKSArXG4gICAgICAodGhpc1tvZmZzZXQgKyAzXSAqIDB4MTAwMDAwMClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVWludDMyQkUgPVxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDMyQkUgPSBmdW5jdGlvbiByZWFkVUludDMyQkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICh0aGlzW29mZnNldF0gKiAweDEwMDAwMDApICtcbiAgICAoKHRoaXNbb2Zmc2V0ICsgMV0gPDwgMTYpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCA4KSB8XG4gICAgdGhpc1tvZmZzZXQgKyAzXSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkQmlnVUludDY0TEUgPSBkZWZpbmVCaWdJbnRNZXRob2QoZnVuY3Rpb24gcmVhZEJpZ1VJbnQ2NExFIChvZmZzZXQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIHZhbGlkYXRlTnVtYmVyKG9mZnNldCwgJ29mZnNldCcpXG4gIGNvbnN0IGZpcnN0ID0gdGhpc1tvZmZzZXRdXG4gIGNvbnN0IGxhc3QgPSB0aGlzW29mZnNldCArIDddXG4gIGlmIChmaXJzdCA9PT0gdW5kZWZpbmVkIHx8IGxhc3QgPT09IHVuZGVmaW5lZCkge1xuICAgIGJvdW5kc0Vycm9yKG9mZnNldCwgdGhpcy5sZW5ndGggLSA4KVxuICB9XG5cbiAgY29uc3QgbG8gPSBmaXJzdCArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDggK1xuICAgIHRoaXNbKytvZmZzZXRdICogMiAqKiAxNiArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDI0XG5cbiAgY29uc3QgaGkgPSB0aGlzWysrb2Zmc2V0XSArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDggK1xuICAgIHRoaXNbKytvZmZzZXRdICogMiAqKiAxNiArXG4gICAgbGFzdCAqIDIgKiogMjRcblxuICByZXR1cm4gQmlnSW50KGxvKSArIChCaWdJbnQoaGkpIDw8IEJpZ0ludCgzMikpXG59KVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRCaWdVSW50NjRCRSA9IGRlZmluZUJpZ0ludE1ldGhvZChmdW5jdGlvbiByZWFkQmlnVUludDY0QkUgKG9mZnNldCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgdmFsaWRhdGVOdW1iZXIob2Zmc2V0LCAnb2Zmc2V0JylcbiAgY29uc3QgZmlyc3QgPSB0aGlzW29mZnNldF1cbiAgY29uc3QgbGFzdCA9IHRoaXNbb2Zmc2V0ICsgN11cbiAgaWYgKGZpcnN0ID09PSB1bmRlZmluZWQgfHwgbGFzdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYm91bmRzRXJyb3Iob2Zmc2V0LCB0aGlzLmxlbmd0aCAtIDgpXG4gIH1cblxuICBjb25zdCBoaSA9IGZpcnN0ICogMiAqKiAyNCArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDE2ICtcbiAgICB0aGlzWysrb2Zmc2V0XSAqIDIgKiogOCArXG4gICAgdGhpc1srK29mZnNldF1cblxuICBjb25zdCBsbyA9IHRoaXNbKytvZmZzZXRdICogMiAqKiAyNCArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDE2ICtcbiAgICB0aGlzWysrb2Zmc2V0XSAqIDIgKiogOCArXG4gICAgbGFzdFxuXG4gIHJldHVybiAoQmlnSW50KGhpKSA8PCBCaWdJbnQoMzIpKSArIEJpZ0ludChsbylcbn0pXG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludExFID0gZnVuY3Rpb24gcmVhZEludExFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuXG4gIGxldCB2YWwgPSB0aGlzW29mZnNldF1cbiAgbGV0IG11bCA9IDFcbiAgbGV0IGkgPSAwXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgaV0gKiBtdWxcbiAgfVxuICBtdWwgKj0gMHg4MFxuXG4gIGlmICh2YWwgPj0gbXVsKSB2YWwgLT0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpXG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnRCRSA9IGZ1bmN0aW9uIHJlYWRJbnRCRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcblxuICBsZXQgaSA9IGJ5dGVMZW5ndGhcbiAgbGV0IG11bCA9IDFcbiAgbGV0IHZhbCA9IHRoaXNbb2Zmc2V0ICsgLS1pXVxuICB3aGlsZSAoaSA+IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyAtLWldICogbXVsXG4gIH1cbiAgbXVsICo9IDB4ODBcblxuICBpZiAodmFsID49IG11bCkgdmFsIC09IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50OCA9IGZ1bmN0aW9uIHJlYWRJbnQ4IChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDEsIHRoaXMubGVuZ3RoKVxuICBpZiAoISh0aGlzW29mZnNldF0gJiAweDgwKSkgcmV0dXJuICh0aGlzW29mZnNldF0pXG4gIHJldHVybiAoKDB4ZmYgLSB0aGlzW29mZnNldF0gKyAxKSAqIC0xKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQxNkxFID0gZnVuY3Rpb24gcmVhZEludDE2TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIGNvbnN0IHZhbCA9IHRoaXNbb2Zmc2V0XSB8ICh0aGlzW29mZnNldCArIDFdIDw8IDgpXG4gIHJldHVybiAodmFsICYgMHg4MDAwKSA/IHZhbCB8IDB4RkZGRjAwMDAgOiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MTZCRSA9IGZ1bmN0aW9uIHJlYWRJbnQxNkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICBjb25zdCB2YWwgPSB0aGlzW29mZnNldCArIDFdIHwgKHRoaXNbb2Zmc2V0XSA8PCA4KVxuICByZXR1cm4gKHZhbCAmIDB4ODAwMCkgPyB2YWwgfCAweEZGRkYwMDAwIDogdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyTEUgPSBmdW5jdGlvbiByZWFkSW50MzJMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSkgfFxuICAgICh0aGlzW29mZnNldCArIDFdIDw8IDgpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCAxNikgfFxuICAgICh0aGlzW29mZnNldCArIDNdIDw8IDI0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQzMkJFID0gZnVuY3Rpb24gcmVhZEludDMyQkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICh0aGlzW29mZnNldF0gPDwgMjQpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCAxNikgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDgpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAzXSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkQmlnSW50NjRMRSA9IGRlZmluZUJpZ0ludE1ldGhvZChmdW5jdGlvbiByZWFkQmlnSW50NjRMRSAob2Zmc2V0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICB2YWxpZGF0ZU51bWJlcihvZmZzZXQsICdvZmZzZXQnKVxuICBjb25zdCBmaXJzdCA9IHRoaXNbb2Zmc2V0XVxuICBjb25zdCBsYXN0ID0gdGhpc1tvZmZzZXQgKyA3XVxuICBpZiAoZmlyc3QgPT09IHVuZGVmaW5lZCB8fCBsYXN0ID09PSB1bmRlZmluZWQpIHtcbiAgICBib3VuZHNFcnJvcihvZmZzZXQsIHRoaXMubGVuZ3RoIC0gOClcbiAgfVxuXG4gIGNvbnN0IHZhbCA9IHRoaXNbb2Zmc2V0ICsgNF0gK1xuICAgIHRoaXNbb2Zmc2V0ICsgNV0gKiAyICoqIDggK1xuICAgIHRoaXNbb2Zmc2V0ICsgNl0gKiAyICoqIDE2ICtcbiAgICAobGFzdCA8PCAyNCkgLy8gT3ZlcmZsb3dcblxuICByZXR1cm4gKEJpZ0ludCh2YWwpIDw8IEJpZ0ludCgzMikpICtcbiAgICBCaWdJbnQoZmlyc3QgK1xuICAgIHRoaXNbKytvZmZzZXRdICogMiAqKiA4ICtcbiAgICB0aGlzWysrb2Zmc2V0XSAqIDIgKiogMTYgK1xuICAgIHRoaXNbKytvZmZzZXRdICogMiAqKiAyNClcbn0pXG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEJpZ0ludDY0QkUgPSBkZWZpbmVCaWdJbnRNZXRob2QoZnVuY3Rpb24gcmVhZEJpZ0ludDY0QkUgKG9mZnNldCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgdmFsaWRhdGVOdW1iZXIob2Zmc2V0LCAnb2Zmc2V0JylcbiAgY29uc3QgZmlyc3QgPSB0aGlzW29mZnNldF1cbiAgY29uc3QgbGFzdCA9IHRoaXNbb2Zmc2V0ICsgN11cbiAgaWYgKGZpcnN0ID09PSB1bmRlZmluZWQgfHwgbGFzdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYm91bmRzRXJyb3Iob2Zmc2V0LCB0aGlzLmxlbmd0aCAtIDgpXG4gIH1cblxuICBjb25zdCB2YWwgPSAoZmlyc3QgPDwgMjQpICsgLy8gT3ZlcmZsb3dcbiAgICB0aGlzWysrb2Zmc2V0XSAqIDIgKiogMTYgK1xuICAgIHRoaXNbKytvZmZzZXRdICogMiAqKiA4ICtcbiAgICB0aGlzWysrb2Zmc2V0XVxuXG4gIHJldHVybiAoQmlnSW50KHZhbCkgPDwgQmlnSW50KDMyKSkgK1xuICAgIEJpZ0ludCh0aGlzWysrb2Zmc2V0XSAqIDIgKiogMjQgK1xuICAgIHRoaXNbKytvZmZzZXRdICogMiAqKiAxNiArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDggK1xuICAgIGxhc3QpXG59KVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRGbG9hdExFID0gZnVuY3Rpb24gcmVhZEZsb2F0TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCB0cnVlLCAyMywgNClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkRmxvYXRCRSA9IGZ1bmN0aW9uIHJlYWRGbG9hdEJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgZmFsc2UsIDIzLCA0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWREb3VibGVMRSA9IGZ1bmN0aW9uIHJlYWREb3VibGVMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA4LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIHRydWUsIDUyLCA4KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWREb3VibGVCRSA9IGZ1bmN0aW9uIHJlYWREb3VibGVCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA4LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIGZhbHNlLCA1MiwgOClcbn1cblxuZnVuY3Rpb24gY2hlY2tJbnQgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgZXh0LCBtYXgsIG1pbikge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihidWYpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImJ1ZmZlclwiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKVxuICBpZiAodmFsdWUgPiBtYXggfHwgdmFsdWUgPCBtaW4pIHRocm93IG5ldyBSYW5nZUVycm9yKCdcInZhbHVlXCIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpXG4gIGlmIChvZmZzZXQgKyBleHQgPiBidWYubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVpbnRMRSA9XG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludExFID0gZnVuY3Rpb24gd3JpdGVVSW50TEUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY29uc3QgbWF4Qnl0ZXMgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCkgLSAxXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbWF4Qnl0ZXMsIDApXG4gIH1cblxuICBsZXQgbXVsID0gMVxuICBsZXQgaSA9IDBcbiAgdGhpc1tvZmZzZXRdID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVWludEJFID1cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50QkUgPSBmdW5jdGlvbiB3cml0ZVVJbnRCRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjb25zdCBtYXhCeXRlcyA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKSAtIDFcbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBtYXhCeXRlcywgMClcbiAgfVxuXG4gIGxldCBpID0gYnl0ZUxlbmd0aCAtIDFcbiAgbGV0IG11bCA9IDFcbiAgdGhpc1tvZmZzZXQgKyBpXSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoLS1pID49IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB0aGlzW29mZnNldCArIGldID0gKHZhbHVlIC8gbXVsKSAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVaW50OCA9XG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDggPSBmdW5jdGlvbiB3cml0ZVVJbnQ4ICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMSwgMHhmZiwgMClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVpbnQxNkxFID1cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZMRSA9IGZ1bmN0aW9uIHdyaXRlVUludDE2TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweGZmZmYsIDApXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVaW50MTZCRSA9XG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDE2QkUgPSBmdW5jdGlvbiB3cml0ZVVJbnQxNkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHhmZmZmLCAwKVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDgpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVWludDMyTEUgPVxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQzMkxFID0gZnVuY3Rpb24gd3JpdGVVSW50MzJMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4ZmZmZmZmZmYsIDApXG4gIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgPj4+IDI0KVxuICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiAxNilcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVpbnQzMkJFID1cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MzJCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweGZmZmZmZmZmLCAwKVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDI0KVxuICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiAxNilcbiAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gOClcbiAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbmZ1bmN0aW9uIHdydEJpZ1VJbnQ2NExFIChidWYsIHZhbHVlLCBvZmZzZXQsIG1pbiwgbWF4KSB7XG4gIGNoZWNrSW50QkkodmFsdWUsIG1pbiwgbWF4LCBidWYsIG9mZnNldCwgNylcblxuICBsZXQgbG8gPSBOdW1iZXIodmFsdWUgJiBCaWdJbnQoMHhmZmZmZmZmZikpXG4gIGJ1ZltvZmZzZXQrK10gPSBsb1xuICBsbyA9IGxvID4+IDhcbiAgYnVmW29mZnNldCsrXSA9IGxvXG4gIGxvID0gbG8gPj4gOFxuICBidWZbb2Zmc2V0KytdID0gbG9cbiAgbG8gPSBsbyA+PiA4XG4gIGJ1ZltvZmZzZXQrK10gPSBsb1xuICBsZXQgaGkgPSBOdW1iZXIodmFsdWUgPj4gQmlnSW50KDMyKSAmIEJpZ0ludCgweGZmZmZmZmZmKSlcbiAgYnVmW29mZnNldCsrXSA9IGhpXG4gIGhpID0gaGkgPj4gOFxuICBidWZbb2Zmc2V0KytdID0gaGlcbiAgaGkgPSBoaSA+PiA4XG4gIGJ1ZltvZmZzZXQrK10gPSBoaVxuICBoaSA9IGhpID4+IDhcbiAgYnVmW29mZnNldCsrXSA9IGhpXG4gIHJldHVybiBvZmZzZXRcbn1cblxuZnVuY3Rpb24gd3J0QmlnVUludDY0QkUgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbWluLCBtYXgpIHtcbiAgY2hlY2tJbnRCSSh2YWx1ZSwgbWluLCBtYXgsIGJ1Ziwgb2Zmc2V0LCA3KVxuXG4gIGxldCBsbyA9IE51bWJlcih2YWx1ZSAmIEJpZ0ludCgweGZmZmZmZmZmKSlcbiAgYnVmW29mZnNldCArIDddID0gbG9cbiAgbG8gPSBsbyA+PiA4XG4gIGJ1ZltvZmZzZXQgKyA2XSA9IGxvXG4gIGxvID0gbG8gPj4gOFxuICBidWZbb2Zmc2V0ICsgNV0gPSBsb1xuICBsbyA9IGxvID4+IDhcbiAgYnVmW29mZnNldCArIDRdID0gbG9cbiAgbGV0IGhpID0gTnVtYmVyKHZhbHVlID4+IEJpZ0ludCgzMikgJiBCaWdJbnQoMHhmZmZmZmZmZikpXG4gIGJ1ZltvZmZzZXQgKyAzXSA9IGhpXG4gIGhpID0gaGkgPj4gOFxuICBidWZbb2Zmc2V0ICsgMl0gPSBoaVxuICBoaSA9IGhpID4+IDhcbiAgYnVmW29mZnNldCArIDFdID0gaGlcbiAgaGkgPSBoaSA+PiA4XG4gIGJ1ZltvZmZzZXRdID0gaGlcbiAgcmV0dXJuIG9mZnNldCArIDhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUJpZ1VJbnQ2NExFID0gZGVmaW5lQmlnSW50TWV0aG9kKGZ1bmN0aW9uIHdyaXRlQmlnVUludDY0TEUgKHZhbHVlLCBvZmZzZXQgPSAwKSB7XG4gIHJldHVybiB3cnRCaWdVSW50NjRMRSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBCaWdJbnQoMCksIEJpZ0ludCgnMHhmZmZmZmZmZmZmZmZmZmZmJykpXG59KVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlQmlnVUludDY0QkUgPSBkZWZpbmVCaWdJbnRNZXRob2QoZnVuY3Rpb24gd3JpdGVCaWdVSW50NjRCRSAodmFsdWUsIG9mZnNldCA9IDApIHtcbiAgcmV0dXJuIHdydEJpZ1VJbnQ2NEJFKHRoaXMsIHZhbHVlLCBvZmZzZXQsIEJpZ0ludCgwKSwgQmlnSW50KCcweGZmZmZmZmZmZmZmZmZmZmYnKSlcbn0pXG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnRMRSA9IGZ1bmN0aW9uIHdyaXRlSW50TEUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY29uc3QgbGltaXQgPSBNYXRoLnBvdygyLCAoOCAqIGJ5dGVMZW5ndGgpIC0gMSlcblxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIGxpbWl0IC0gMSwgLWxpbWl0KVxuICB9XG5cbiAgbGV0IGkgPSAwXG4gIGxldCBtdWwgPSAxXG4gIGxldCBzdWIgPSAwXG4gIHRoaXNbb2Zmc2V0XSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIGlmICh2YWx1ZSA8IDAgJiYgc3ViID09PSAwICYmIHRoaXNbb2Zmc2V0ICsgaSAtIDFdICE9PSAwKSB7XG4gICAgICBzdWIgPSAxXG4gICAgfVxuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAoKHZhbHVlIC8gbXVsKSA+PiAwKSAtIHN1YiAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnRCRSA9IGZ1bmN0aW9uIHdyaXRlSW50QkUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY29uc3QgbGltaXQgPSBNYXRoLnBvdygyLCAoOCAqIGJ5dGVMZW5ndGgpIC0gMSlcblxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIGxpbWl0IC0gMSwgLWxpbWl0KVxuICB9XG5cbiAgbGV0IGkgPSBieXRlTGVuZ3RoIC0gMVxuICBsZXQgbXVsID0gMVxuICBsZXQgc3ViID0gMFxuICB0aGlzW29mZnNldCArIGldID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgtLWkgPj0gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIGlmICh2YWx1ZSA8IDAgJiYgc3ViID09PSAwICYmIHRoaXNbb2Zmc2V0ICsgaSArIDFdICE9PSAwKSB7XG4gICAgICBzdWIgPSAxXG4gICAgfVxuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAoKHZhbHVlIC8gbXVsKSA+PiAwKSAtIHN1YiAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQ4ID0gZnVuY3Rpb24gd3JpdGVJbnQ4ICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMSwgMHg3ZiwgLTB4ODApXG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZiArIHZhbHVlICsgMVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MTZMRSA9IGZ1bmN0aW9uIHdyaXRlSW50MTZMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4N2ZmZiwgLTB4ODAwMClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDE2QkUgPSBmdW5jdGlvbiB3cml0ZUludDE2QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweDdmZmYsIC0weDgwMDApXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gOClcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQzMkxFID0gZnVuY3Rpb24gd3JpdGVJbnQzMkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHg3ZmZmZmZmZiwgLTB4ODAwMDAwMDApXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDE2KVxuICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlID4+PiAyNClcbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDMyQkUgPSBmdW5jdGlvbiB3cml0ZUludDMyQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweDdmZmZmZmZmLCAtMHg4MDAwMDAwMClcbiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmZmZmZmZmICsgdmFsdWUgKyAxXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gMjQpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KVxuICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiA4KVxuICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUJpZ0ludDY0TEUgPSBkZWZpbmVCaWdJbnRNZXRob2QoZnVuY3Rpb24gd3JpdGVCaWdJbnQ2NExFICh2YWx1ZSwgb2Zmc2V0ID0gMCkge1xuICByZXR1cm4gd3J0QmlnVUludDY0TEUodGhpcywgdmFsdWUsIG9mZnNldCwgLUJpZ0ludCgnMHg4MDAwMDAwMDAwMDAwMDAwJyksIEJpZ0ludCgnMHg3ZmZmZmZmZmZmZmZmZmZmJykpXG59KVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlQmlnSW50NjRCRSA9IGRlZmluZUJpZ0ludE1ldGhvZChmdW5jdGlvbiB3cml0ZUJpZ0ludDY0QkUgKHZhbHVlLCBvZmZzZXQgPSAwKSB7XG4gIHJldHVybiB3cnRCaWdVSW50NjRCRSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAtQmlnSW50KCcweDgwMDAwMDAwMDAwMDAwMDAnKSwgQmlnSW50KCcweDdmZmZmZmZmZmZmZmZmZmYnKSlcbn0pXG5cbmZ1bmN0aW9uIGNoZWNrSUVFRTc1NCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBleHQsIG1heCwgbWluKSB7XG4gIGlmIChvZmZzZXQgKyBleHQgPiBidWYubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbiAgaWYgKG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5mdW5jdGlvbiB3cml0ZUZsb2F0IChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjaGVja0lFRUU3NTQoYnVmLCB2YWx1ZSwgb2Zmc2V0LCA0LCAzLjQwMjgyMzQ2NjM4NTI4ODZlKzM4LCAtMy40MDI4MjM0NjYzODUyODg2ZSszOClcbiAgfVxuICBpZWVlNzU0LndyaXRlKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCAyMywgNClcbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUZsb2F0TEUgPSBmdW5jdGlvbiB3cml0ZUZsb2F0TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZUZsb2F0KHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUsIG5vQXNzZXJ0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRCRSA9IGZ1bmN0aW9uIHdyaXRlRmxvYXRCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRmxvYXQodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UsIG5vQXNzZXJ0KVxufVxuXG5mdW5jdGlvbiB3cml0ZURvdWJsZSAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY2hlY2tJRUVFNzU0KGJ1ZiwgdmFsdWUsIG9mZnNldCwgOCwgMS43OTc2OTMxMzQ4NjIzMTU3RSszMDgsIC0xLjc5NzY5MzEzNDg2MjMxNTdFKzMwOClcbiAgfVxuICBpZWVlNzU0LndyaXRlKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCA1MiwgOClcbiAgcmV0dXJuIG9mZnNldCArIDhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZURvdWJsZUxFID0gZnVuY3Rpb24gd3JpdGVEb3VibGVMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRG91YmxlKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUsIG5vQXNzZXJ0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRG91YmxlQkUgPSBmdW5jdGlvbiB3cml0ZURvdWJsZUJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVEb3VibGUodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UsIG5vQXNzZXJ0KVxufVxuXG4vLyBjb3B5KHRhcmdldEJ1ZmZlciwgdGFyZ2V0U3RhcnQ9MCwgc291cmNlU3RhcnQ9MCwgc291cmNlRW5kPWJ1ZmZlci5sZW5ndGgpXG5CdWZmZXIucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiBjb3B5ICh0YXJnZXQsIHRhcmdldFN0YXJ0LCBzdGFydCwgZW5kKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHRhcmdldCkpIHRocm93IG5ldyBUeXBlRXJyb3IoJ2FyZ3VtZW50IHNob3VsZCBiZSBhIEJ1ZmZlcicpXG4gIGlmICghc3RhcnQpIHN0YXJ0ID0gMFxuICBpZiAoIWVuZCAmJiBlbmQgIT09IDApIGVuZCA9IHRoaXMubGVuZ3RoXG4gIGlmICh0YXJnZXRTdGFydCA+PSB0YXJnZXQubGVuZ3RoKSB0YXJnZXRTdGFydCA9IHRhcmdldC5sZW5ndGhcbiAgaWYgKCF0YXJnZXRTdGFydCkgdGFyZ2V0U3RhcnQgPSAwXG4gIGlmIChlbmQgPiAwICYmIGVuZCA8IHN0YXJ0KSBlbmQgPSBzdGFydFxuXG4gIC8vIENvcHkgMCBieXRlczsgd2UncmUgZG9uZVxuICBpZiAoZW5kID09PSBzdGFydCkgcmV0dXJuIDBcbiAgaWYgKHRhcmdldC5sZW5ndGggPT09IDAgfHwgdGhpcy5sZW5ndGggPT09IDApIHJldHVybiAwXG5cbiAgLy8gRmF0YWwgZXJyb3IgY29uZGl0aW9uc1xuICBpZiAodGFyZ2V0U3RhcnQgPCAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3RhcmdldFN0YXJ0IG91dCBvZiBib3VuZHMnKVxuICB9XG4gIGlmIChzdGFydCA8IDAgfHwgc3RhcnQgPj0gdGhpcy5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxuICBpZiAoZW5kIDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3NvdXJjZUVuZCBvdXQgb2YgYm91bmRzJylcblxuICAvLyBBcmUgd2Ugb29iP1xuICBpZiAoZW5kID4gdGhpcy5sZW5ndGgpIGVuZCA9IHRoaXMubGVuZ3RoXG4gIGlmICh0YXJnZXQubGVuZ3RoIC0gdGFyZ2V0U3RhcnQgPCBlbmQgLSBzdGFydCkge1xuICAgIGVuZCA9IHRhcmdldC5sZW5ndGggLSB0YXJnZXRTdGFydCArIHN0YXJ0XG4gIH1cblxuICBjb25zdCBsZW4gPSBlbmQgLSBzdGFydFxuXG4gIGlmICh0aGlzID09PSB0YXJnZXQgJiYgdHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBVc2UgYnVpbHQtaW4gd2hlbiBhdmFpbGFibGUsIG1pc3NpbmcgZnJvbSBJRTExXG4gICAgdGhpcy5jb3B5V2l0aGluKHRhcmdldFN0YXJ0LCBzdGFydCwgZW5kKVxuICB9IGVsc2Uge1xuICAgIFVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKFxuICAgICAgdGFyZ2V0LFxuICAgICAgdGhpcy5zdWJhcnJheShzdGFydCwgZW5kKSxcbiAgICAgIHRhcmdldFN0YXJ0XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIGxlblxufVxuXG4vLyBVc2FnZTpcbi8vICAgIGJ1ZmZlci5maWxsKG51bWJlclssIG9mZnNldFssIGVuZF1dKVxuLy8gICAgYnVmZmVyLmZpbGwoYnVmZmVyWywgb2Zmc2V0WywgZW5kXV0pXG4vLyAgICBidWZmZXIuZmlsbChzdHJpbmdbLCBvZmZzZXRbLCBlbmRdXVssIGVuY29kaW5nXSlcbkJ1ZmZlci5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uIGZpbGwgKHZhbCwgc3RhcnQsIGVuZCwgZW5jb2RpbmcpIHtcbiAgLy8gSGFuZGxlIHN0cmluZyBjYXNlczpcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKHR5cGVvZiBzdGFydCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVuY29kaW5nID0gc3RhcnRcbiAgICAgIHN0YXJ0ID0gMFxuICAgICAgZW5kID0gdGhpcy5sZW5ndGhcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBlbmQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBlbmNvZGluZyA9IGVuZFxuICAgICAgZW5kID0gdGhpcy5sZW5ndGhcbiAgICB9XG4gICAgaWYgKGVuY29kaW5nICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGVuY29kaW5nICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZW5jb2RpbmcgbXVzdCBiZSBhIHN0cmluZycpXG4gICAgfVxuICAgIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnICYmICFCdWZmZXIuaXNFbmNvZGluZyhlbmNvZGluZykpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICB9XG4gICAgaWYgKHZhbC5sZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnN0IGNvZGUgPSB2YWwuY2hhckNvZGVBdCgwKVxuICAgICAgaWYgKChlbmNvZGluZyA9PT0gJ3V0ZjgnICYmIGNvZGUgPCAxMjgpIHx8XG4gICAgICAgICAgZW5jb2RpbmcgPT09ICdsYXRpbjEnKSB7XG4gICAgICAgIC8vIEZhc3QgcGF0aDogSWYgYHZhbGAgZml0cyBpbnRvIGEgc2luZ2xlIGJ5dGUsIHVzZSB0aGF0IG51bWVyaWMgdmFsdWUuXG4gICAgICAgIHZhbCA9IGNvZGVcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICB2YWwgPSB2YWwgJiAyNTVcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnYm9vbGVhbicpIHtcbiAgICB2YWwgPSBOdW1iZXIodmFsKVxuICB9XG5cbiAgLy8gSW52YWxpZCByYW5nZXMgYXJlIG5vdCBzZXQgdG8gYSBkZWZhdWx0LCBzbyBjYW4gcmFuZ2UgY2hlY2sgZWFybHkuXG4gIGlmIChzdGFydCA8IDAgfHwgdGhpcy5sZW5ndGggPCBzdGFydCB8fCB0aGlzLmxlbmd0aCA8IGVuZCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdPdXQgb2YgcmFuZ2UgaW5kZXgnKVxuICB9XG5cbiAgaWYgKGVuZCA8PSBzdGFydCkge1xuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBzdGFydCA9IHN0YXJ0ID4+PiAwXG4gIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gdGhpcy5sZW5ndGggOiBlbmQgPj4+IDBcblxuICBpZiAoIXZhbCkgdmFsID0gMFxuXG4gIGxldCBpXG4gIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICAgIHRoaXNbaV0gPSB2YWxcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgYnl0ZXMgPSBCdWZmZXIuaXNCdWZmZXIodmFsKVxuICAgICAgPyB2YWxcbiAgICAgIDogQnVmZmVyLmZyb20odmFsLCBlbmNvZGluZylcbiAgICBjb25zdCBsZW4gPSBieXRlcy5sZW5ndGhcbiAgICBpZiAobGVuID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgdmFsdWUgXCInICsgdmFsICtcbiAgICAgICAgJ1wiIGlzIGludmFsaWQgZm9yIGFyZ3VtZW50IFwidmFsdWVcIicpXG4gICAgfVxuICAgIGZvciAoaSA9IDA7IGkgPCBlbmQgLSBzdGFydDsgKytpKSB7XG4gICAgICB0aGlzW2kgKyBzdGFydF0gPSBieXRlc1tpICUgbGVuXVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzXG59XG5cbi8vIENVU1RPTSBFUlJPUlNcbi8vID09PT09PT09PT09PT1cblxuLy8gU2ltcGxpZmllZCB2ZXJzaW9ucyBmcm9tIE5vZGUsIGNoYW5nZWQgZm9yIEJ1ZmZlci1vbmx5IHVzYWdlXG5jb25zdCBlcnJvcnMgPSB7fVxuZnVuY3Rpb24gRSAoc3ltLCBnZXRNZXNzYWdlLCBCYXNlKSB7XG4gIGVycm9yc1tzeW1dID0gY2xhc3MgTm9kZUVycm9yIGV4dGVuZHMgQmFzZSB7XG4gICAgY29uc3RydWN0b3IgKCkge1xuICAgICAgc3VwZXIoKVxuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ21lc3NhZ2UnLCB7XG4gICAgICAgIHZhbHVlOiBnZXRNZXNzYWdlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgIH0pXG5cbiAgICAgIC8vIEFkZCB0aGUgZXJyb3IgY29kZSB0byB0aGUgbmFtZSB0byBpbmNsdWRlIGl0IGluIHRoZSBzdGFjayB0cmFjZS5cbiAgICAgIHRoaXMubmFtZSA9IGAke3RoaXMubmFtZX0gWyR7c3ltfV1gXG4gICAgICAvLyBBY2Nlc3MgdGhlIHN0YWNrIHRvIGdlbmVyYXRlIHRoZSBlcnJvciBtZXNzYWdlIGluY2x1ZGluZyB0aGUgZXJyb3IgY29kZVxuICAgICAgLy8gZnJvbSB0aGUgbmFtZS5cbiAgICAgIHRoaXMuc3RhY2sgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnNcbiAgICAgIC8vIFJlc2V0IHRoZSBuYW1lIHRvIHRoZSBhY3R1YWwgbmFtZS5cbiAgICAgIGRlbGV0ZSB0aGlzLm5hbWVcbiAgICB9XG5cbiAgICBnZXQgY29kZSAoKSB7XG4gICAgICByZXR1cm4gc3ltXG4gICAgfVxuXG4gICAgc2V0IGNvZGUgKHZhbHVlKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2NvZGUnLCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICB9KVxuICAgIH1cblxuICAgIHRvU3RyaW5nICgpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLm5hbWV9IFske3N5bX1dOiAke3RoaXMubWVzc2FnZX1gXG4gICAgfVxuICB9XG59XG5cbkUoJ0VSUl9CVUZGRVJfT1VUX09GX0JPVU5EUycsXG4gIGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIHJldHVybiBgJHtuYW1lfSBpcyBvdXRzaWRlIG9mIGJ1ZmZlciBib3VuZHNgXG4gICAgfVxuXG4gICAgcmV0dXJuICdBdHRlbXB0IHRvIGFjY2VzcyBtZW1vcnkgb3V0c2lkZSBidWZmZXIgYm91bmRzJ1xuICB9LCBSYW5nZUVycm9yKVxuRSgnRVJSX0lOVkFMSURfQVJHX1RZUEUnLFxuICBmdW5jdGlvbiAobmFtZSwgYWN0dWFsKSB7XG4gICAgcmV0dXJuIGBUaGUgXCIke25hbWV9XCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIG51bWJlci4gUmVjZWl2ZWQgdHlwZSAke3R5cGVvZiBhY3R1YWx9YFxuICB9LCBUeXBlRXJyb3IpXG5FKCdFUlJfT1VUX09GX1JBTkdFJyxcbiAgZnVuY3Rpb24gKHN0ciwgcmFuZ2UsIGlucHV0KSB7XG4gICAgbGV0IG1zZyA9IGBUaGUgdmFsdWUgb2YgXCIke3N0cn1cIiBpcyBvdXQgb2YgcmFuZ2UuYFxuICAgIGxldCByZWNlaXZlZCA9IGlucHV0XG4gICAgaWYgKE51bWJlci5pc0ludGVnZXIoaW5wdXQpICYmIE1hdGguYWJzKGlucHV0KSA+IDIgKiogMzIpIHtcbiAgICAgIHJlY2VpdmVkID0gYWRkTnVtZXJpY2FsU2VwYXJhdG9yKFN0cmluZyhpbnB1dCkpXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgaW5wdXQgPT09ICdiaWdpbnQnKSB7XG4gICAgICByZWNlaXZlZCA9IFN0cmluZyhpbnB1dClcbiAgICAgIGlmIChpbnB1dCA+IEJpZ0ludCgyKSAqKiBCaWdJbnQoMzIpIHx8IGlucHV0IDwgLShCaWdJbnQoMikgKiogQmlnSW50KDMyKSkpIHtcbiAgICAgICAgcmVjZWl2ZWQgPSBhZGROdW1lcmljYWxTZXBhcmF0b3IocmVjZWl2ZWQpXG4gICAgICB9XG4gICAgICByZWNlaXZlZCArPSAnbidcbiAgICB9XG4gICAgbXNnICs9IGAgSXQgbXVzdCBiZSAke3JhbmdlfS4gUmVjZWl2ZWQgJHtyZWNlaXZlZH1gXG4gICAgcmV0dXJuIG1zZ1xuICB9LCBSYW5nZUVycm9yKVxuXG5mdW5jdGlvbiBhZGROdW1lcmljYWxTZXBhcmF0b3IgKHZhbCkge1xuICBsZXQgcmVzID0gJydcbiAgbGV0IGkgPSB2YWwubGVuZ3RoXG4gIGNvbnN0IHN0YXJ0ID0gdmFsWzBdID09PSAnLScgPyAxIDogMFxuICBmb3IgKDsgaSA+PSBzdGFydCArIDQ7IGkgLT0gMykge1xuICAgIHJlcyA9IGBfJHt2YWwuc2xpY2UoaSAtIDMsIGkpfSR7cmVzfWBcbiAgfVxuICByZXR1cm4gYCR7dmFsLnNsaWNlKDAsIGkpfSR7cmVzfWBcbn1cblxuLy8gQ0hFQ0sgRlVOQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT1cblxuZnVuY3Rpb24gY2hlY2tCb3VuZHMgKGJ1Ziwgb2Zmc2V0LCBieXRlTGVuZ3RoKSB7XG4gIHZhbGlkYXRlTnVtYmVyKG9mZnNldCwgJ29mZnNldCcpXG4gIGlmIChidWZbb2Zmc2V0XSA9PT0gdW5kZWZpbmVkIHx8IGJ1ZltvZmZzZXQgKyBieXRlTGVuZ3RoXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYm91bmRzRXJyb3Iob2Zmc2V0LCBidWYubGVuZ3RoIC0gKGJ5dGVMZW5ndGggKyAxKSlcbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja0ludEJJICh2YWx1ZSwgbWluLCBtYXgsIGJ1Ziwgb2Zmc2V0LCBieXRlTGVuZ3RoKSB7XG4gIGlmICh2YWx1ZSA+IG1heCB8fCB2YWx1ZSA8IG1pbikge1xuICAgIGNvbnN0IG4gPSB0eXBlb2YgbWluID09PSAnYmlnaW50JyA/ICduJyA6ICcnXG4gICAgbGV0IHJhbmdlXG4gICAgaWYgKGJ5dGVMZW5ndGggPiAzKSB7XG4gICAgICBpZiAobWluID09PSAwIHx8IG1pbiA9PT0gQmlnSW50KDApKSB7XG4gICAgICAgIHJhbmdlID0gYD49IDAke259IGFuZCA8IDIke259ICoqICR7KGJ5dGVMZW5ndGggKyAxKSAqIDh9JHtufWBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJhbmdlID0gYD49IC0oMiR7bn0gKiogJHsoYnl0ZUxlbmd0aCArIDEpICogOCAtIDF9JHtufSkgYW5kIDwgMiAqKiBgICtcbiAgICAgICAgICAgICAgICBgJHsoYnl0ZUxlbmd0aCArIDEpICogOCAtIDF9JHtufWBcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmFuZ2UgPSBgPj0gJHttaW59JHtufSBhbmQgPD0gJHttYXh9JHtufWBcbiAgICB9XG4gICAgdGhyb3cgbmV3IGVycm9ycy5FUlJfT1VUX09GX1JBTkdFKCd2YWx1ZScsIHJhbmdlLCB2YWx1ZSlcbiAgfVxuICBjaGVja0JvdW5kcyhidWYsIG9mZnNldCwgYnl0ZUxlbmd0aClcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVOdW1iZXIgKHZhbHVlLCBuYW1lKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5FUlJfSU5WQUxJRF9BUkdfVFlQRShuYW1lLCAnbnVtYmVyJywgdmFsdWUpXG4gIH1cbn1cblxuZnVuY3Rpb24gYm91bmRzRXJyb3IgKHZhbHVlLCBsZW5ndGgsIHR5cGUpIHtcbiAgaWYgKE1hdGguZmxvb3IodmFsdWUpICE9PSB2YWx1ZSkge1xuICAgIHZhbGlkYXRlTnVtYmVyKHZhbHVlLCB0eXBlKVxuICAgIHRocm93IG5ldyBlcnJvcnMuRVJSX09VVF9PRl9SQU5HRSh0eXBlIHx8ICdvZmZzZXQnLCAnYW4gaW50ZWdlcicsIHZhbHVlKVxuICB9XG5cbiAgaWYgKGxlbmd0aCA8IDApIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkVSUl9CVUZGRVJfT1VUX09GX0JPVU5EUygpXG4gIH1cblxuICB0aHJvdyBuZXcgZXJyb3JzLkVSUl9PVVRfT0ZfUkFOR0UodHlwZSB8fCAnb2Zmc2V0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGA+PSAke3R5cGUgPyAxIDogMH0gYW5kIDw9ICR7bGVuZ3RofWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSlcbn1cblxuLy8gSEVMUEVSIEZVTkNUSU9OU1xuLy8gPT09PT09PT09PT09PT09PVxuXG5jb25zdCBJTlZBTElEX0JBU0U2NF9SRSA9IC9bXisvMC05QS1aYS16LV9dL2dcblxuZnVuY3Rpb24gYmFzZTY0Y2xlYW4gKHN0cikge1xuICAvLyBOb2RlIHRha2VzIGVxdWFsIHNpZ25zIGFzIGVuZCBvZiB0aGUgQmFzZTY0IGVuY29kaW5nXG4gIHN0ciA9IHN0ci5zcGxpdCgnPScpWzBdXG4gIC8vIE5vZGUgc3RyaXBzIG91dCBpbnZhbGlkIGNoYXJhY3RlcnMgbGlrZSBcXG4gYW5kIFxcdCBmcm9tIHRoZSBzdHJpbmcsIGJhc2U2NC1qcyBkb2VzIG5vdFxuICBzdHIgPSBzdHIudHJpbSgpLnJlcGxhY2UoSU5WQUxJRF9CQVNFNjRfUkUsICcnKVxuICAvLyBOb2RlIGNvbnZlcnRzIHN0cmluZ3Mgd2l0aCBsZW5ndGggPCAyIHRvICcnXG4gIGlmIChzdHIubGVuZ3RoIDwgMikgcmV0dXJuICcnXG4gIC8vIE5vZGUgYWxsb3dzIGZvciBub24tcGFkZGVkIGJhc2U2NCBzdHJpbmdzIChtaXNzaW5nIHRyYWlsaW5nID09PSksIGJhc2U2NC1qcyBkb2VzIG5vdFxuICB3aGlsZSAoc3RyLmxlbmd0aCAlIDQgIT09IDApIHtcbiAgICBzdHIgPSBzdHIgKyAnPSdcbiAgfVxuICByZXR1cm4gc3RyXG59XG5cbmZ1bmN0aW9uIHV0ZjhUb0J5dGVzIChzdHJpbmcsIHVuaXRzKSB7XG4gIHVuaXRzID0gdW5pdHMgfHwgSW5maW5pdHlcbiAgbGV0IGNvZGVQb2ludFxuICBjb25zdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoXG4gIGxldCBsZWFkU3Vycm9nYXRlID0gbnVsbFxuICBjb25zdCBieXRlcyA9IFtdXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIGNvZGVQb2ludCA9IHN0cmluZy5jaGFyQ29kZUF0KGkpXG5cbiAgICAvLyBpcyBzdXJyb2dhdGUgY29tcG9uZW50XG4gICAgaWYgKGNvZGVQb2ludCA+IDB4RDdGRiAmJiBjb2RlUG9pbnQgPCAweEUwMDApIHtcbiAgICAgIC8vIGxhc3QgY2hhciB3YXMgYSBsZWFkXG4gICAgICBpZiAoIWxlYWRTdXJyb2dhdGUpIHtcbiAgICAgICAgLy8gbm8gbGVhZCB5ZXRcbiAgICAgICAgaWYgKGNvZGVQb2ludCA+IDB4REJGRikge1xuICAgICAgICAgIC8vIHVuZXhwZWN0ZWQgdHJhaWxcbiAgICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9IGVsc2UgaWYgKGkgKyAxID09PSBsZW5ndGgpIHtcbiAgICAgICAgICAvLyB1bnBhaXJlZCBsZWFkXG4gICAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHZhbGlkIGxlYWRcbiAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IGNvZGVQb2ludFxuXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIC8vIDIgbGVhZHMgaW4gYSByb3dcbiAgICAgIGlmIChjb2RlUG9pbnQgPCAweERDMDApIHtcbiAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgIGxlYWRTdXJyb2dhdGUgPSBjb2RlUG9pbnRcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLy8gdmFsaWQgc3Vycm9nYXRlIHBhaXJcbiAgICAgIGNvZGVQb2ludCA9IChsZWFkU3Vycm9nYXRlIC0gMHhEODAwIDw8IDEwIHwgY29kZVBvaW50IC0gMHhEQzAwKSArIDB4MTAwMDBcbiAgICB9IGVsc2UgaWYgKGxlYWRTdXJyb2dhdGUpIHtcbiAgICAgIC8vIHZhbGlkIGJtcCBjaGFyLCBidXQgbGFzdCBjaGFyIHdhcyBhIGxlYWRcbiAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgIH1cblxuICAgIGxlYWRTdXJyb2dhdGUgPSBudWxsXG5cbiAgICAvLyBlbmNvZGUgdXRmOFxuICAgIGlmIChjb2RlUG9pbnQgPCAweDgwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDEpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goY29kZVBvaW50KVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHg4MDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMikgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiB8IDB4QzAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDEwMDAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDMpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweEMgfCAweEUwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2ICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDExMDAwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSA0KSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHgxMiB8IDB4RjAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweEMgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29kZSBwb2ludCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJ5dGVzXG59XG5cbmZ1bmN0aW9uIGFzY2lpVG9CeXRlcyAoc3RyKSB7XG4gIGNvbnN0IGJ5dGVBcnJheSA9IFtdXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7XG4gICAgLy8gTm9kZSdzIGNvZGUgc2VlbXMgdG8gYmUgZG9pbmcgdGhpcyBhbmQgbm90ICYgMHg3Ri4uXG4gICAgYnl0ZUFycmF5LnB1c2goc3RyLmNoYXJDb2RlQXQoaSkgJiAweEZGKVxuICB9XG4gIHJldHVybiBieXRlQXJyYXlcbn1cblxuZnVuY3Rpb24gdXRmMTZsZVRvQnl0ZXMgKHN0ciwgdW5pdHMpIHtcbiAgbGV0IGMsIGhpLCBsb1xuICBjb25zdCBieXRlQXJyYXkgPSBbXVxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkge1xuICAgIGlmICgodW5pdHMgLT0gMikgPCAwKSBicmVha1xuXG4gICAgYyA9IHN0ci5jaGFyQ29kZUF0KGkpXG4gICAgaGkgPSBjID4+IDhcbiAgICBsbyA9IGMgJSAyNTZcbiAgICBieXRlQXJyYXkucHVzaChsbylcbiAgICBieXRlQXJyYXkucHVzaChoaSlcbiAgfVxuXG4gIHJldHVybiBieXRlQXJyYXlcbn1cblxuZnVuY3Rpb24gYmFzZTY0VG9CeXRlcyAoc3RyKSB7XG4gIHJldHVybiBiYXNlNjQudG9CeXRlQXJyYXkoYmFzZTY0Y2xlYW4oc3RyKSlcbn1cblxuZnVuY3Rpb24gYmxpdEJ1ZmZlciAoc3JjLCBkc3QsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIGxldCBpXG4gIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIGlmICgoaSArIG9mZnNldCA+PSBkc3QubGVuZ3RoKSB8fCAoaSA+PSBzcmMubGVuZ3RoKSkgYnJlYWtcbiAgICBkc3RbaSArIG9mZnNldF0gPSBzcmNbaV1cbiAgfVxuICByZXR1cm4gaVxufVxuXG4vLyBBcnJheUJ1ZmZlciBvciBVaW50OEFycmF5IG9iamVjdHMgZnJvbSBvdGhlciBjb250ZXh0cyAoaS5lLiBpZnJhbWVzKSBkbyBub3QgcGFzc1xuLy8gdGhlIGBpbnN0YW5jZW9mYCBjaGVjayBidXQgdGhleSBzaG91bGQgYmUgdHJlYXRlZCBhcyBvZiB0aGF0IHR5cGUuXG4vLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyL2lzc3Vlcy8xNjZcbmZ1bmN0aW9uIGlzSW5zdGFuY2UgKG9iaiwgdHlwZSkge1xuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgdHlwZSB8fFxuICAgIChvYmogIT0gbnVsbCAmJiBvYmouY29uc3RydWN0b3IgIT0gbnVsbCAmJiBvYmouY29uc3RydWN0b3IubmFtZSAhPSBudWxsICYmXG4gICAgICBvYmouY29uc3RydWN0b3IubmFtZSA9PT0gdHlwZS5uYW1lKVxufVxuZnVuY3Rpb24gbnVtYmVySXNOYU4gKG9iaikge1xuICAvLyBGb3IgSUUxMSBzdXBwb3J0XG4gIHJldHVybiBvYmogIT09IG9iaiAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXNlbGYtY29tcGFyZVxufVxuXG4vLyBDcmVhdGUgbG9va3VwIHRhYmxlIGZvciBgdG9TdHJpbmcoJ2hleCcpYFxuLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlci9pc3N1ZXMvMjE5XG5jb25zdCBoZXhTbGljZUxvb2t1cFRhYmxlID0gKGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgYWxwaGFiZXQgPSAnMDEyMzQ1Njc4OWFiY2RlZidcbiAgY29uc3QgdGFibGUgPSBuZXcgQXJyYXkoMjU2KVxuICBmb3IgKGxldCBpID0gMDsgaSA8IDE2OyArK2kpIHtcbiAgICBjb25zdCBpMTYgPSBpICogMTZcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IDE2OyArK2opIHtcbiAgICAgIHRhYmxlW2kxNiArIGpdID0gYWxwaGFiZXRbaV0gKyBhbHBoYWJldFtqXVxuICAgIH1cbiAgfVxuICByZXR1cm4gdGFibGVcbn0pKClcblxuLy8gUmV0dXJuIG5vdCBmdW5jdGlvbiB3aXRoIEVycm9yIGlmIEJpZ0ludCBub3Qgc3VwcG9ydGVkXG5mdW5jdGlvbiBkZWZpbmVCaWdJbnRNZXRob2QgKGZuKSB7XG4gIHJldHVybiB0eXBlb2YgQmlnSW50ID09PSAndW5kZWZpbmVkJyA/IEJ1ZmZlckJpZ0ludE5vdERlZmluZWQgOiBmblxufVxuXG5mdW5jdGlvbiBCdWZmZXJCaWdJbnROb3REZWZpbmVkICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdCaWdJbnQgbm90IHN1cHBvcnRlZCcpXG59XG5cbmV4cG9ydCB7XG4gIEJ1ZmZlcixcbiAgU2xvd0J1ZmZlcixcbiAgSU5TUEVDVF9NQVhfQllURVMsXG4gIGtNYXhMZW5ndGgsXG59IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkJ1ZmZlciA9IHZvaWQgMDtcbnZhciBub2RlX2J1ZmZlcl8xID0gcmVxdWlyZShcIm5vZGU6YnVmZmVyXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQnVmZmVyXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBub2RlX2J1ZmZlcl8xLkJ1ZmZlcjsgfSB9KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJ1ZmZlci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuYnVmZmVyRnJvbSA9IGV4cG9ydHMuYnVmZmVyQWxsb2NVbnNhZmUgPSBleHBvcnRzLkJ1ZmZlciA9IHZvaWQgMDtcbmNvbnN0IGJ1ZmZlcl8xID0gcmVxdWlyZShcIi4uL2J1ZmZlclwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkJ1ZmZlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gYnVmZmVyXzEuQnVmZmVyOyB9IH0pO1xuZnVuY3Rpb24gYnVmZmVyVjBQMTJQb255ZmlsbChhcmcwLCAuLi5hcmdzKSB7XG4gICAgcmV0dXJuIG5ldyBidWZmZXJfMS5CdWZmZXIoYXJnMCwgLi4uYXJncyk7XG59XG5jb25zdCBidWZmZXJBbGxvY1Vuc2FmZSA9IGJ1ZmZlcl8xLkJ1ZmZlci5hbGxvY1Vuc2FmZSB8fCBidWZmZXJWMFAxMlBvbnlmaWxsO1xuZXhwb3J0cy5idWZmZXJBbGxvY1Vuc2FmZSA9IGJ1ZmZlckFsbG9jVW5zYWZlO1xuY29uc3QgYnVmZmVyRnJvbSA9IGJ1ZmZlcl8xLkJ1ZmZlci5mcm9tIHx8IGJ1ZmZlclYwUDEyUG9ueWZpbGw7XG5leHBvcnRzLmJ1ZmZlckZyb20gPSBidWZmZXJGcm9tO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YnVmZmVyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5mbGF0dGVuSlNPTiA9IHZvaWQgMDtcbmNvbnN0IGJ1ZmZlcl8xID0gcmVxdWlyZShcIkBqc29uam95LmNvbS9mcy1ub2RlLWJ1aWx0aW5zL2xpYi9pbnRlcm5hbC9idWZmZXJcIik7XG5jb25zdCBwYXRoXzEgPSByZXF1aXJlKFwiQGpzb25qb3kuY29tL2ZzLW5vZGUtYnVpbHRpbnMvbGliL3BhdGhcIik7XG5jb25zdCBwYXRoSm9pbiA9IHBhdGhfMS5wb3NpeCA/IHBhdGhfMS5wb3NpeC5qb2luIDogcGF0aF8xLmpvaW47XG5jb25zdCBmbGF0dGVuSlNPTiA9IChuZXN0ZWRKU09OKSA9PiB7XG4gICAgY29uc3QgZmxhdEpTT04gPSB7fTtcbiAgICBmdW5jdGlvbiBmbGF0dGVuKHBhdGhQcmVmaXgsIG5vZGUpIHtcbiAgICAgICAgZm9yIChjb25zdCBwYXRoIGluIG5vZGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRPck5vZGUgPSBub2RlW3BhdGhdO1xuICAgICAgICAgICAgLy8gVE9ETzogQ2FuIHdlIGF2b2lkIHVzaW5nIGBqb2luYCBoZXJlPyBKdXN0IGNvbmNhdGVuYXRlP1xuICAgICAgICAgICAgY29uc3Qgam9pbmVkUGF0aCA9IHBhdGhKb2luKHBhdGhQcmVmaXgsIHBhdGgpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb250ZW50T3JOb2RlID09PSAnc3RyaW5nJyB8fCBjb250ZW50T3JOb2RlIGluc3RhbmNlb2YgYnVmZmVyXzEuQnVmZmVyKSB7XG4gICAgICAgICAgICAgICAgZmxhdEpTT05bam9pbmVkUGF0aF0gPSBjb250ZW50T3JOb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIGNvbnRlbnRPck5vZGUgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICAgICAgY29udGVudE9yTm9kZSAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgICEoY29udGVudE9yTm9kZSBpbnN0YW5jZW9mIGJ1ZmZlcl8xLkJ1ZmZlcikgJiZcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhjb250ZW50T3JOb2RlKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgLy8gZW1wdHkgZGlyZWN0b3JpZXMgbmVlZCBhbiBleHBsaWNpdCBlbnRyeSBhbmQgdGhlcmVmb3JlIGdldCBoYW5kbGVkIGluIGBlbHNlYCwgbm9uLWVtcHR5IG9uZXMgYXJlIGltcGxpY2l0bHkgY29uc2lkZXJlZFxuICAgICAgICAgICAgICAgIGZsYXR0ZW4oam9pbmVkUGF0aCwgY29udGVudE9yTm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyB3aXRob3V0IHRoaXMgYnJhbmNoIG51bGwsIGVtcHR5LW9iamVjdCBvciBub24tb2JqZWN0IGVudHJpZXMgd291bGQgbm90IGJlIGhhbmRsZWQgaW4gdGhlIHNhbWUgd2F5XG4gICAgICAgICAgICAgICAgLy8gYnkgYm90aCBmcm9tSlNPTigpIGFuZCBmcm9tTmVzdGVkSlNPTigpXG4gICAgICAgICAgICAgICAgZmxhdEpTT05bam9pbmVkUGF0aF0gPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGZsYXR0ZW4oJycsIG5lc3RlZEpTT04pO1xuICAgIHJldHVybiBmbGF0SlNPTjtcbn07XG5leHBvcnRzLmZsYXR0ZW5KU09OID0gZmxhdHRlbkpTT047XG4vLyMgc291cmNlTWFwcGluZ1VSTD1qc29uLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29uc3RhbnRzLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5PayA9IE9rO1xuZXhwb3J0cy5FcnIgPSBFcnI7XG5mdW5jdGlvbiBPayh2YWx1ZSkge1xuICAgIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZSB9O1xufVxuZnVuY3Rpb24gRXJyKGVycikge1xuICAgIHJldHVybiB7IG9rOiBmYWxzZSwgZXJyIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZXN1bHQuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkZhbk91dCA9IHZvaWQgMDtcbmNsYXNzIEZhbk91dCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMubGlzdGVuZXJzID0gbmV3IFNldCgpO1xuICAgIH1cbiAgICBlbWl0KGRhdGEpIHtcbiAgICAgICAgdGhpcy5saXN0ZW5lcnMuZm9yRWFjaCgobGlzdGVuZXIpID0+IGxpc3RlbmVyKGRhdGEpKTtcbiAgICB9XG4gICAgbGlzdGVuKGxpc3RlbmVyKSB7XG4gICAgICAgIGNvbnN0IGxpc3RlbmVycyA9IHRoaXMubGlzdGVuZXJzO1xuICAgICAgICBsaXN0ZW5lcnMuYWRkKGxpc3RlbmVyKTtcbiAgICAgICAgcmV0dXJuICgpID0+IGxpc3RlbmVycy5kZWxldGUobGlzdGVuZXIpO1xuICAgIH1cbn1cbmV4cG9ydHMuRmFuT3V0ID0gRmFuT3V0O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vLyBIZXJlIHdlIG1vY2sgdGhlIGdsb2JhbCBgcHJvY2Vzc2AgdmFyaWFibGUgaW4gY2FzZSB3ZSBhcmUgbm90IGluIE5vZGUncyBlbnZpcm9ubWVudC5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuY3JlYXRlUHJvY2VzcyA9IGNyZWF0ZVByb2Nlc3M7XG4vKipcbiAqIExvb2tzIHRvIHJldHVybiBhIGBwcm9jZXNzYCBvYmplY3QsIGlmIG9uZSBpcyBhdmFpbGFibGUuXG4gKlxuICogVGhlIGdsb2JhbCBgcHJvY2Vzc2AgaXMgcmV0dXJuZWQgaWYgZGVmaW5lZDtcbiAqIG90aGVyd2lzZSBgcmVxdWlyZSgncHJvY2VzcycpYCBpcyBhdHRlbXB0ZWQuXG4gKlxuICogSWYgdGhhdCBmYWlscywgYHVuZGVmaW5lZGAgaXMgcmV0dXJuZWQuXG4gKlxuICogQHJldHVybiB7SVByb2Nlc3MgfCB1bmRlZmluZWR9XG4gKi9cbmNvbnN0IG1heWJlUmV0dXJuUHJvY2VzcyA9ICgpID0+IHtcbiAgICBpZiAodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiBwcm9jZXNzO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gcmVxdWlyZSgncHJvY2VzcycpO1xuICAgIH1cbiAgICBjYXRjaCB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxufTtcbmZ1bmN0aW9uIGNyZWF0ZVByb2Nlc3MoKSB7XG4gICAgY29uc3QgcCA9IG1heWJlUmV0dXJuUHJvY2VzcygpIHx8IHt9O1xuICAgIGlmICghcC5jd2QpXG4gICAgICAgIHAuY3dkID0gKCkgPT4gJy8nO1xuICAgIGlmICghcC5lbWl0V2FybmluZylcbiAgICAgICAgcC5lbWl0V2FybmluZyA9IChtZXNzYWdlLCB0eXBlKSA9PiB7XG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tY29uc29sZVxuICAgICAgICAgICAgY29uc29sZS53YXJuKGAke3R5cGV9JHt0eXBlID8gJzogJyA6ICcnfSR7bWVzc2FnZX1gKTtcbiAgICAgICAgfTtcbiAgICBpZiAoIXAuZW52KVxuICAgICAgICBwLmVudiA9IHt9O1xuICAgIHJldHVybiBwO1xufVxuZXhwb3J0cy5kZWZhdWx0ID0gY3JlYXRlUHJvY2VzcygpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cHJvY2Vzcy5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5GTEFHUyA9IGV4cG9ydHMuRVJSU1RSID0gZXhwb3J0cy5jb25zdGFudHMgPSBleHBvcnRzLlNFUCA9IHZvaWQgMDtcbmV4cG9ydHMuU0VQID0gJy8nO1xuZXhwb3J0cy5jb25zdGFudHMgPSB7XG4gICAgT19SRE9OTFk6IDAsXG4gICAgT19XUk9OTFk6IDEsXG4gICAgT19SRFdSOiAyLFxuICAgIFNfSUZNVDogNjE0NDAsXG4gICAgU19JRlJFRzogMzI3NjgsXG4gICAgU19JRkRJUjogMTYzODQsXG4gICAgU19JRkNIUjogODE5MixcbiAgICBTX0lGQkxLOiAyNDU3NixcbiAgICBTX0lGSUZPOiA0MDk2LFxuICAgIFNfSUZMTks6IDQwOTYwLFxuICAgIFNfSUZTT0NLOiA0OTE1MixcbiAgICBPX0NSRUFUOiA2NCxcbiAgICBPX0VYQ0w6IDEyOCxcbiAgICBPX05PQ1RUWTogMjU2LFxuICAgIE9fVFJVTkM6IDUxMixcbiAgICBPX0FQUEVORDogMTAyNCxcbiAgICBPX0RJUkVDVE9SWTogNjU1MzYsXG4gICAgT19OT0FUSU1FOiAyNjIxNDQsXG4gICAgT19OT0ZPTExPVzogMTMxMDcyLFxuICAgIE9fU1lOQzogMTA1MjY3MixcbiAgICBPX1NZTUxJTks6IDIwOTcxNTIsXG4gICAgT19ESVJFQ1Q6IDE2Mzg0LFxuICAgIE9fTk9OQkxPQ0s6IDIwNDgsXG4gICAgU19JUldYVTogNDQ4LFxuICAgIFNfSVJVU1I6IDI1NixcbiAgICBTX0lXVVNSOiAxMjgsXG4gICAgU19JWFVTUjogNjQsXG4gICAgU19JUldYRzogNTYsXG4gICAgU19JUkdSUDogMzIsXG4gICAgU19JV0dSUDogMTYsXG4gICAgU19JWEdSUDogOCxcbiAgICBTX0lSV1hPOiA3LFxuICAgIFNfSVJPVEg6IDQsXG4gICAgU19JV09USDogMixcbiAgICBTX0lYT1RIOiAxLFxuICAgIEZfT0s6IDAsXG4gICAgUl9PSzogNCxcbiAgICBXX09LOiAyLFxuICAgIFhfT0s6IDEsXG4gICAgVVZfRlNfU1lNTElOS19ESVI6IDEsXG4gICAgVVZfRlNfU1lNTElOS19KVU5DVElPTjogMixcbiAgICBVVl9GU19DT1BZRklMRV9FWENMOiAxLFxuICAgIFVWX0ZTX0NPUFlGSUxFX0ZJQ0xPTkU6IDIsXG4gICAgVVZfRlNfQ09QWUZJTEVfRklDTE9ORV9GT1JDRTogNCxcbiAgICBDT1BZRklMRV9FWENMOiAxLFxuICAgIENPUFlGSUxFX0ZJQ0xPTkU6IDIsXG4gICAgQ09QWUZJTEVfRklDTE9ORV9GT1JDRTogNCxcbn07XG5leHBvcnRzLkVSUlNUUiA9IHtcbiAgICBQQVRIX1NUUjogJ3BhdGggbXVzdCBiZSBhIHN0cmluZywgQnVmZmVyLCBvciBVaW50OEFycmF5JyxcbiAgICAvLyBGRDogICAgICAgICAgICAgJ2ZpbGUgZGVzY3JpcHRvciBtdXN0IGJlIGEgdW5zaWduZWQgMzItYml0IGludGVnZXInLFxuICAgIEZEOiAnZmQgbXVzdCBiZSBhIGZpbGUgZGVzY3JpcHRvcicsXG4gICAgTU9ERV9JTlQ6ICdtb2RlIG11c3QgYmUgYW4gaW50JyxcbiAgICBDQjogJ2NhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbicsXG4gICAgVUlEOiAndWlkIG11c3QgYmUgYW4gdW5zaWduZWQgaW50JyxcbiAgICBHSUQ6ICdnaWQgbXVzdCBiZSBhbiB1bnNpZ25lZCBpbnQnLFxuICAgIExFTjogJ2xlbiBtdXN0IGJlIGFuIGludGVnZXInLFxuICAgIEFUSU1FOiAnYXRpbWUgbXVzdCBiZSBhbiBpbnRlZ2VyJyxcbiAgICBNVElNRTogJ210aW1lIG11c3QgYmUgYW4gaW50ZWdlcicsXG4gICAgUFJFRklYOiAnZmlsZW5hbWUgcHJlZml4IGlzIHJlcXVpcmVkJyxcbiAgICBCVUZGRVI6ICdidWZmZXIgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBCdWZmZXIgb3IgU3RhdGljQnVmZmVyJyxcbiAgICBPRkZTRVQ6ICdvZmZzZXQgbXVzdCBiZSBhbiBpbnRlZ2VyJyxcbiAgICBMRU5HVEg6ICdsZW5ndGggbXVzdCBiZSBhbiBpbnRlZ2VyJyxcbiAgICBQT1NJVElPTjogJ3Bvc2l0aW9uIG11c3QgYmUgYW4gaW50ZWdlcicsXG59O1xuY29uc3QgeyBPX1JET05MWSwgT19XUk9OTFksIE9fUkRXUiwgT19DUkVBVCwgT19FWENMLCBPX1RSVU5DLCBPX0FQUEVORCwgT19TWU5DIH0gPSBleHBvcnRzLmNvbnN0YW50cztcbi8vIExpc3Qgb2YgZmlsZSBgZmxhZ3NgIGFzIGRlZmluZWQgYnkgTm9kZS5cbnZhciBGTEFHUztcbihmdW5jdGlvbiAoRkxBR1MpIHtcbiAgICAvLyBPcGVuIGZpbGUgZm9yIHJlYWRpbmcuIEFuIGV4Y2VwdGlvbiBvY2N1cnMgaWYgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3QuXG4gICAgRkxBR1NbRkxBR1NbXCJyXCJdID0gT19SRE9OTFldID0gXCJyXCI7XG4gICAgLy8gT3BlbiBmaWxlIGZvciByZWFkaW5nIGFuZCB3cml0aW5nLiBBbiBleGNlcHRpb24gb2NjdXJzIGlmIHRoZSBmaWxlIGRvZXMgbm90IGV4aXN0LlxuICAgIEZMQUdTW0ZMQUdTW1wicitcIl0gPSBPX1JEV1JdID0gXCJyK1wiO1xuICAgIC8vIE9wZW4gZmlsZSBmb3IgcmVhZGluZyBpbiBzeW5jaHJvbm91cyBtb2RlLiBJbnN0cnVjdHMgdGhlIG9wZXJhdGluZyBzeXN0ZW0gdG8gYnlwYXNzIHRoZSBsb2NhbCBmaWxlIHN5c3RlbSBjYWNoZS5cbiAgICBGTEFHU1tGTEFHU1tcInJzXCJdID0gT19SRE9OTFkgfCBPX1NZTkNdID0gXCJyc1wiO1xuICAgIEZMQUdTW0ZMQUdTW1wic3JcIl0gPSBGTEFHUy5yc10gPSBcInNyXCI7XG4gICAgLy8gT3BlbiBmaWxlIGZvciByZWFkaW5nIGFuZCB3cml0aW5nLCB0ZWxsaW5nIHRoZSBPUyB0byBvcGVuIGl0IHN5bmNocm9ub3VzbHkuIFNlZSBub3RlcyBmb3IgJ3JzJyBhYm91dCB1c2luZyB0aGlzIHdpdGggY2F1dGlvbi5cbiAgICBGTEFHU1tGTEFHU1tcInJzK1wiXSA9IE9fUkRXUiB8IE9fU1lOQ10gPSBcInJzK1wiO1xuICAgIEZMQUdTW0ZMQUdTW1wic3IrXCJdID0gRkxBR1NbJ3JzKyddXSA9IFwic3IrXCI7XG4gICAgLy8gT3BlbiBmaWxlIGZvciB3cml0aW5nLiBUaGUgZmlsZSBpcyBjcmVhdGVkIChpZiBpdCBkb2VzIG5vdCBleGlzdCkgb3IgdHJ1bmNhdGVkIChpZiBpdCBleGlzdHMpLlxuICAgIEZMQUdTW0ZMQUdTW1wid1wiXSA9IE9fV1JPTkxZIHwgT19DUkVBVCB8IE9fVFJVTkNdID0gXCJ3XCI7XG4gICAgLy8gTGlrZSAndycgYnV0IGZhaWxzIGlmIHBhdGggZXhpc3RzLlxuICAgIEZMQUdTW0ZMQUdTW1wid3hcIl0gPSBPX1dST05MWSB8IE9fQ1JFQVQgfCBPX1RSVU5DIHwgT19FWENMXSA9IFwid3hcIjtcbiAgICBGTEFHU1tGTEFHU1tcInh3XCJdID0gRkxBR1Mud3hdID0gXCJ4d1wiO1xuICAgIC8vIE9wZW4gZmlsZSBmb3IgcmVhZGluZyBhbmQgd3JpdGluZy4gVGhlIGZpbGUgaXMgY3JlYXRlZCAoaWYgaXQgZG9lcyBub3QgZXhpc3QpIG9yIHRydW5jYXRlZCAoaWYgaXQgZXhpc3RzKS5cbiAgICBGTEFHU1tGTEFHU1tcIncrXCJdID0gT19SRFdSIHwgT19DUkVBVCB8IE9fVFJVTkNdID0gXCJ3K1wiO1xuICAgIC8vIExpa2UgJ3crJyBidXQgZmFpbHMgaWYgcGF0aCBleGlzdHMuXG4gICAgRkxBR1NbRkxBR1NbXCJ3eCtcIl0gPSBPX1JEV1IgfCBPX0NSRUFUIHwgT19UUlVOQyB8IE9fRVhDTF0gPSBcInd4K1wiO1xuICAgIEZMQUdTW0ZMQUdTW1wieHcrXCJdID0gRkxBR1NbJ3d4KyddXSA9IFwieHcrXCI7XG4gICAgLy8gT3BlbiBmaWxlIGZvciBhcHBlbmRpbmcuIFRoZSBmaWxlIGlzIGNyZWF0ZWQgaWYgaXQgZG9lcyBub3QgZXhpc3QuXG4gICAgRkxBR1NbRkxBR1NbXCJhXCJdID0gT19XUk9OTFkgfCBPX0FQUEVORCB8IE9fQ1JFQVRdID0gXCJhXCI7XG4gICAgLy8gTGlrZSAnYScgYnV0IGZhaWxzIGlmIHBhdGggZXhpc3RzLlxuICAgIEZMQUdTW0ZMQUdTW1wiYXhcIl0gPSBPX1dST05MWSB8IE9fQVBQRU5EIHwgT19DUkVBVCB8IE9fRVhDTF0gPSBcImF4XCI7XG4gICAgRkxBR1NbRkxBR1NbXCJ4YVwiXSA9IEZMQUdTLmF4XSA9IFwieGFcIjtcbiAgICAvLyBPcGVuIGZpbGUgZm9yIHJlYWRpbmcgYW5kIGFwcGVuZGluZy4gVGhlIGZpbGUgaXMgY3JlYXRlZCBpZiBpdCBkb2VzIG5vdCBleGlzdC5cbiAgICBGTEFHU1tGTEFHU1tcImErXCJdID0gT19SRFdSIHwgT19BUFBFTkQgfCBPX0NSRUFUXSA9IFwiYStcIjtcbiAgICAvLyBMaWtlICdhKycgYnV0IGZhaWxzIGlmIHBhdGggZXhpc3RzLlxuICAgIEZMQUdTW0ZMQUdTW1wiYXgrXCJdID0gT19SRFdSIHwgT19BUFBFTkQgfCBPX0NSRUFUIHwgT19FWENMXSA9IFwiYXgrXCI7XG4gICAgRkxBR1NbRkxBR1NbXCJ4YStcIl0gPSBGTEFHU1snYXgrJ11dID0gXCJ4YStcIjtcbn0pKEZMQUdTIHx8IChleHBvcnRzLkZMQUdTID0gRkxBR1MgPSB7fSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29uc3RhbnRzLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QU1PREUuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkZMQUcgPSB2b2lkIDA7XG4vKipcbiAqIENvbnN0YW50cyB1c2VkIGluIGBvcGVuYCBzeXN0ZW0gY2FsbHMsIHNlZSBbb3BlbigyKV0oaHR0cDovL21hbjcub3JnL2xpbnV4L21hbi1wYWdlcy9tYW4yL29wZW4uMi5odG1sKS5cbiAqXG4gKiBUaGVzZSBjb25zdGFudHMgYXJlIGNvbXBhdGlibGUgd2l0aCBOb2RlLmpzIGZzIGNvbnN0YW50cyBhbmQgY2FuIGJlIHVzZWQgd2l0aCBib3RoXG4gKiBtZW1mcyBhbmQgbmF0aXZlIE5vZGUuanMgZnMucHJvbWlzZXMub3BlbigpLlxuICpcbiAqIEBzZWUgaHR0cDovL21hbjcub3JnL2xpbnV4L21hbi1wYWdlcy9tYW4yL29wZW4uMi5odG1sXG4gKiBAc2VlIGh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliYy9tYW51YWwvaHRtbF9ub2RlL09wZW5fMDAyZHRpbWUtRmxhZ3MuaHRtbFxuICovXG52YXIgRkxBRztcbihmdW5jdGlvbiAoRkxBRykge1xuICAgIEZMQUdbRkxBR1tcIk9fUkRPTkxZXCJdID0gMF0gPSBcIk9fUkRPTkxZXCI7XG4gICAgRkxBR1tGTEFHW1wiT19XUk9OTFlcIl0gPSAxXSA9IFwiT19XUk9OTFlcIjtcbiAgICBGTEFHW0ZMQUdbXCJPX1JEV1JcIl0gPSAyXSA9IFwiT19SRFdSXCI7XG4gICAgRkxBR1tGTEFHW1wiT19BQ0NNT0RFXCJdID0gM10gPSBcIk9fQUNDTU9ERVwiO1xuICAgIEZMQUdbRkxBR1tcIk9fQ1JFQVRcIl0gPSA2NF0gPSBcIk9fQ1JFQVRcIjtcbiAgICBGTEFHW0ZMQUdbXCJPX0VYQ0xcIl0gPSAxMjhdID0gXCJPX0VYQ0xcIjtcbiAgICBGTEFHW0ZMQUdbXCJPX05PQ1RUWVwiXSA9IDI1Nl0gPSBcIk9fTk9DVFRZXCI7XG4gICAgRkxBR1tGTEFHW1wiT19UUlVOQ1wiXSA9IDUxMl0gPSBcIk9fVFJVTkNcIjtcbiAgICBGTEFHW0ZMQUdbXCJPX0FQUEVORFwiXSA9IDEwMjRdID0gXCJPX0FQUEVORFwiO1xuICAgIEZMQUdbRkxBR1tcIk9fTk9OQkxPQ0tcIl0gPSAyMDQ4XSA9IFwiT19OT05CTE9DS1wiO1xuICAgIEZMQUdbRkxBR1tcIk9fRFNZTkNcIl0gPSA0MDk2XSA9IFwiT19EU1lOQ1wiO1xuICAgIEZMQUdbRkxBR1tcIkZBU1lOQ1wiXSA9IDgxOTJdID0gXCJGQVNZTkNcIjtcbiAgICBGTEFHW0ZMQUdbXCJPX0RJUkVDVFwiXSA9IDE2Mzg0XSA9IFwiT19ESVJFQ1RcIjtcbiAgICBGTEFHW0ZMQUdbXCJPX0xBUkdFRklMRVwiXSA9IDBdID0gXCJPX0xBUkdFRklMRVwiO1xuICAgIEZMQUdbRkxBR1tcIk9fRElSRUNUT1JZXCJdID0gNjU1MzZdID0gXCJPX0RJUkVDVE9SWVwiO1xuICAgIEZMQUdbRkxBR1tcIk9fTk9GT0xMT1dcIl0gPSAxMzEwNzJdID0gXCJPX05PRk9MTE9XXCI7XG4gICAgRkxBR1tGTEFHW1wiT19OT0FUSU1FXCJdID0gMjYyMTQ0XSA9IFwiT19OT0FUSU1FXCI7XG4gICAgRkxBR1tGTEFHW1wiT19DTE9FWEVDXCJdID0gNTI0Mjg4XSA9IFwiT19DTE9FWEVDXCI7XG4gICAgRkxBR1tGTEFHW1wiT19TWU5DXCJdID0gMTA1MjY3Ml0gPSBcIk9fU1lOQ1wiO1xuICAgIEZMQUdbRkxBR1tcIk9fTkRFTEFZXCJdID0gMjA0OF0gPSBcIk9fTkRFTEFZXCI7XG59KShGTEFHIHx8IChleHBvcnRzLkZMQUcgPSBGTEFHID0ge30pKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZMQUcuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmJhc2VuYW1lID0gdm9pZCAwO1xuY29uc3QgYmFzZW5hbWUgPSAocGF0aCwgc2VwYXJhdG9yKSA9PiB7XG4gICAgaWYgKHBhdGhbcGF0aC5sZW5ndGggLSAxXSA9PT0gc2VwYXJhdG9yKVxuICAgICAgICBwYXRoID0gcGF0aC5zbGljZSgwLCAtMSk7XG4gICAgY29uc3QgbGFzdFNsYXNoSW5kZXggPSBwYXRoLmxhc3RJbmRleE9mKHNlcGFyYXRvcik7XG4gICAgcmV0dXJuIGxhc3RTbGFzaEluZGV4ID09PSAtMSA/IHBhdGggOiBwYXRoLnNsaWNlKGxhc3RTbGFzaEluZGV4ICsgMSk7XG59O1xuZXhwb3J0cy5iYXNlbmFtZSA9IGJhc2VuYW1lO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGF0aC5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuaW5oZXJpdHMgPSBpbmhlcml0cztcbmV4cG9ydHMucHJvbWlzaWZ5ID0gcHJvbWlzaWZ5O1xuZXhwb3J0cy5pbnNwZWN0ID0gaW5zcGVjdDtcbmV4cG9ydHMuZm9ybWF0ID0gZm9ybWF0O1xuLyoqXG4gKiBNaW5pbWFsIGltcGxlbWVudGF0aW9uIG9mIE5vZGUuanMgdXRpbC5pbmhlcml0cyBmdW5jdGlvbi5cbiAqIFNldHMgdXAgcHJvdG90eXBlIGluaGVyaXRhbmNlIGJldHdlZW4gY29uc3RydWN0b3IgZnVuY3Rpb25zLlxuICovXG5mdW5jdGlvbiBpbmhlcml0cyhjdG9yLCBzdXBlckN0b3IpIHtcbiAgICBpZiAoY3RvciA9PT0gdW5kZWZpbmVkIHx8IGN0b3IgPT09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIGNvbnN0cnVjdG9yIHRvIGluaGVyaXQgZnJvbSBpcyBub3QgZGVmaW5lZCcpO1xuICAgIH1cbiAgICBpZiAoc3VwZXJDdG9yID09PSB1bmRlZmluZWQgfHwgc3VwZXJDdG9yID09PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBzdXBlciBjb25zdHJ1Y3RvciB0byBpbmhlcml0IGZyb20gaXMgbm90IGRlZmluZWQnKTtcbiAgICB9XG4gICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3I7XG4gICAgY3Rvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ3Rvci5wcm90b3R5cGUsIHtcbiAgICAgICAgY29uc3RydWN0b3I6IHtcbiAgICAgICAgICAgIHZhbHVlOiBjdG9yLFxuICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cbi8qKlxuICogTWluaW1hbCBpbXBsZW1lbnRhdGlvbiBvZiBOb2RlLmpzIHV0aWwucHJvbWlzaWZ5IGZ1bmN0aW9uLlxuICogQ29udmVydHMgY2FsbGJhY2stYmFzZWQgZnVuY3Rpb25zIHRvIFByb21pc2UtYmFzZWQgZnVuY3Rpb25zLlxuICovXG5mdW5jdGlvbiBwcm9taXNpZnkoZm4pIHtcbiAgICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcIm9yaWdpbmFsXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIGZ1bmN0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgZm4uY2FsbCh0aGlzLCAuLi5hcmdzLCAoZXJyLCByZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xufVxuLyoqXG4gKiBNaW5pbWFsIGltcGxlbWVudGF0aW9uIG9mIE5vZGUuanMgdXRpbC5pbnNwZWN0IGZ1bmN0aW9uLlxuICogQ29udmVydHMgYSB2YWx1ZSB0byBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBmb3IgZGVidWdnaW5nLlxuICovXG5mdW5jdGlvbiBpbnNwZWN0KHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsKVxuICAgICAgICByZXR1cm4gJ251bGwnO1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm4gJ3VuZGVmaW5lZCc7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpXG4gICAgICAgIHJldHVybiBgJyR7dmFsdWV9J2A7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpXG4gICAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICBjb25zdCBpdGVtcyA9IHZhbHVlLm1hcChpdGVtID0+IGluc3BlY3QoaXRlbSkpLmpvaW4oJywgJyk7XG4gICAgICAgIHJldHVybiBgWyAke2l0ZW1zfSBdYDtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHZhbHVlKVxuICAgICAgICAgICAgLm1hcCgoW2tleSwgdmFsXSkgPT4gYCR7a2V5fTogJHtpbnNwZWN0KHZhbCl9YClcbiAgICAgICAgICAgIC5qb2luKCcsICcpO1xuICAgICAgICByZXR1cm4gYHsgJHtlbnRyaWVzfSB9YDtcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG4vKipcbiAqIE1pbmltYWwgaW1wbGVtZW50YXRpb24gb2YgTm9kZS5qcyB1dGlsLmZvcm1hdCBmdW5jdGlvbi5cbiAqIFByb3ZpZGVzIHByaW50Zi1zdHlsZSBzdHJpbmcgZm9ybWF0dGluZyB3aXRoIGJhc2ljIHBsYWNlaG9sZGVyIHN1cHBvcnQuXG4gKi9cbmZ1bmN0aW9uIGZvcm1hdCh0ZW1wbGF0ZSwgLi4uYXJncykge1xuICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgcmV0dXJuIHRlbXBsYXRlO1xuICAgIGxldCByZXN1bHQgPSB0ZW1wbGF0ZTtcbiAgICBsZXQgYXJnSW5kZXggPSAwO1xuICAgIC8vIFJlcGxhY2UgJXMgKHN0cmluZyksICVkIChudW1iZXIpLCAlaiAoSlNPTikgcGxhY2Vob2xkZXJzXG4gICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoLyVbc2RqJV0vZywgbWF0Y2ggPT4ge1xuICAgICAgICBpZiAoYXJnSW5kZXggPj0gYXJncy5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICAgIGNvbnN0IGFyZyA9IGFyZ3NbYXJnSW5kZXgrK107XG4gICAgICAgIHN3aXRjaCAobWF0Y2gpIHtcbiAgICAgICAgICAgIGNhc2UgJyVzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKGFyZyk7XG4gICAgICAgICAgICBjYXNlICclZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIE51bWJlcihhcmcpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICBjYXNlICclaic6XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGFyZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbQ2lyY3VsYXJdJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICclJSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICclJztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgLy8gQXBwZW5kIHJlbWFpbmluZyBhcmd1bWVudHNcbiAgICB3aGlsZSAoYXJnSW5kZXggPCBhcmdzLmxlbmd0aCkge1xuICAgICAgICByZXN1bHQgKz0gJyAnICsgU3RyaW5nKGFyZ3NbYXJnSW5kZXgrK10pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRpbC5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8vIEFkYXB0ZWQgZnJvbSBOb2RlLmpzIC4uL2ludGVybmFsL2Vycm9ycy5qcywgdXNlZCBmb3IgdGhyb3dpbmcgc2ltaWxhciBlcnJvcnMgdG8gTm9kZS5qcy5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQXNzZXJ0aW9uRXJyb3IgPSBleHBvcnRzLlJhbmdlRXJyb3IgPSBleHBvcnRzLlR5cGVFcnJvciA9IGV4cG9ydHMuRXJyb3IgPSB2b2lkIDA7XG5leHBvcnRzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuZXhwb3J0cy5FID0gRTtcbmNvbnN0IHV0aWxfMSA9IHJlcXVpcmUoXCIuLi91dGlsXCIpO1xuY29uc3Qga0NvZGUgPSB0eXBlb2YgU3ltYm9sID09PSAndW5kZWZpbmVkJyA/ICdfa0NvZGUnIDogU3ltYm9sKCdjb2RlJyk7XG5jb25zdCBtZXNzYWdlcyA9IHt9O1xuZnVuY3Rpb24gbWFrZU5vZGVFcnJvcihCYXNlKSB7XG4gICAgcmV0dXJuIGNsYXNzIE5vZGVFcnJvciBleHRlbmRzIEJhc2Uge1xuICAgICAgICBjb25zdHJ1Y3RvcihrZXksIC4uLmFyZ3MpIHtcbiAgICAgICAgICAgIHN1cGVyKG1lc3NhZ2Uoa2V5LCBhcmdzKSk7XG4gICAgICAgICAgICB0aGlzLmNvZGUgPSBrZXk7XG4gICAgICAgICAgICB0aGlzW2tDb2RlXSA9IGtleTtcbiAgICAgICAgICAgIHRoaXMubmFtZSA9IGAke3N1cGVyLm5hbWV9IFske3RoaXNba0NvZGVdfV1gO1xuICAgICAgICB9XG4gICAgfTtcbn1cbmNvbnN0IGcgPSB0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWxUaGlzIDogZ2xvYmFsO1xuY2xhc3MgQXNzZXJ0aW9uRXJyb3IgZXh0ZW5kcyBnLkVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcgfHwgb3B0aW9ucyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IGV4cG9ydHMuVHlwZUVycm9yKCdFUlJfSU5WQUxJRF9BUkdfVFlQRScsICdvcHRpb25zJywgJ29iamVjdCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLm1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHN1cGVyKG9wdGlvbnMubWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzdXBlcihgJHsoMCwgdXRpbF8xLmluc3BlY3QpKG9wdGlvbnMuYWN0dWFsKS5zbGljZSgwLCAxMjgpfSBgICsgYCR7b3B0aW9ucy5vcGVyYXRvcn0gJHsoMCwgdXRpbF8xLmluc3BlY3QpKG9wdGlvbnMuZXhwZWN0ZWQpLnNsaWNlKDAsIDEyOCl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5nZW5lcmF0ZWRNZXNzYWdlID0gIW9wdGlvbnMubWVzc2FnZTtcbiAgICAgICAgdGhpcy5uYW1lID0gJ0Fzc2VydGlvbkVycm9yIFtFUlJfQVNTRVJUSU9OXSc7XG4gICAgICAgIHRoaXMuY29kZSA9ICdFUlJfQVNTRVJUSU9OJztcbiAgICAgICAgdGhpcy5hY3R1YWwgPSBvcHRpb25zLmFjdHVhbDtcbiAgICAgICAgdGhpcy5leHBlY3RlZCA9IG9wdGlvbnMuZXhwZWN0ZWQ7XG4gICAgICAgIHRoaXMub3BlcmF0b3IgPSBvcHRpb25zLm9wZXJhdG9yO1xuICAgICAgICBleHBvcnRzLkVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIG9wdGlvbnMuc3RhY2tTdGFydEZ1bmN0aW9uKTtcbiAgICB9XG59XG5leHBvcnRzLkFzc2VydGlvbkVycm9yID0gQXNzZXJ0aW9uRXJyb3I7XG5mdW5jdGlvbiBtZXNzYWdlKGtleSwgYXJncykge1xuICAgIGlmICh0eXBlb2Yga2V5ICE9PSAnc3RyaW5nJylcbiAgICAgICAgdGhyb3cgbmV3IGV4cG9ydHMuRXJyb3IoJ0Vycm9yIG1lc3NhZ2Uga2V5IG11c3QgYmUgYSBzdHJpbmcnKTtcbiAgICBjb25zdCBtc2cgPSBtZXNzYWdlc1trZXldO1xuICAgIGlmICghbXNnKVxuICAgICAgICB0aHJvdyBuZXcgZXhwb3J0cy5FcnJvcihgQW4gaW52YWxpZCBlcnJvciBtZXNzYWdlIGtleSB3YXMgdXNlZDogJHtrZXl9LmApO1xuICAgIGxldCBmbXQ7XG4gICAgaWYgKHR5cGVvZiBtc2cgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgZm10ID0gbXNnO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgZm10ID0gdXRpbF8xLmZvcm1hdDtcbiAgICAgICAgaWYgKGFyZ3MgPT09IHVuZGVmaW5lZCB8fCBhcmdzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiBtc2c7XG4gICAgICAgIGFyZ3MudW5zaGlmdChtc2cpO1xuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKGZtdC5hcHBseShudWxsLCBhcmdzKSk7XG59XG4vLyBVdGlsaXR5IGZ1bmN0aW9uIGZvciByZWdpc3RlcmluZyB0aGUgZXJyb3IgY29kZXMuIE9ubHkgdXNlZCBoZXJlLiBFeHBvcnRlZFxuLy8gKm9ubHkqIHRvIGFsbG93IGZvciB0ZXN0aW5nLlxuZnVuY3Rpb24gRShzeW0sIHZhbCkge1xuICAgIG1lc3NhZ2VzW3N5bV0gPSB0eXBlb2YgdmFsID09PSAnZnVuY3Rpb24nID8gdmFsIDogU3RyaW5nKHZhbCk7XG59XG5leHBvcnRzLkVycm9yID0gbWFrZU5vZGVFcnJvcihnLkVycm9yKTtcbmV4cG9ydHMuVHlwZUVycm9yID0gbWFrZU5vZGVFcnJvcihnLlR5cGVFcnJvcik7XG5leHBvcnRzLlJhbmdlRXJyb3IgPSBtYWtlTm9kZUVycm9yKGcuUmFuZ2VFcnJvcik7XG5FKCdFUlJfRElSX0NMT1NFRCcsICdEaXJlY3RvcnkgaGFuZGxlIHdhcyBjbG9zZWQnKTtcbkUoJ0VSUl9ESVJfQ09OQ1VSUkVOVF9PUEVSQVRJT04nLCAnQ2Fubm90IGRvIHN5bmNocm9ub3VzIHdvcmsgb24gZGlyZWN0b3J5IGhhbmRsZSB3aXRoIGNvbmN1cnJlbnQgYXN5bmNocm9ub3VzIG9wZXJhdGlvbnMnKTtcbkUoJ0VSUl9JTlZBTElEX0ZJTEVfVVJMX0hPU1QnLCAnRmlsZSBVUkwgaG9zdCBtdXN0IGJlIFwibG9jYWxob3N0XCIgb3IgZW1wdHkgb24gJXMnKTtcbkUoJ0VSUl9JTlZBTElEX0ZJTEVfVVJMX1BBVEgnLCAnRmlsZSBVUkwgcGF0aCAlcycpO1xuRSgnRVJSX0lOVkFMSURfT1BUX1ZBTFVFJywgKG5hbWUsIHZhbHVlKSA9PiB7XG4gICAgcmV0dXJuIGBUaGUgdmFsdWUgXCIke1N0cmluZyh2YWx1ZSl9XCIgaXMgaW52YWxpZCBmb3Igb3B0aW9uIFwiJHtuYW1lfVwiYDtcbn0pO1xuRSgnRVJSX0lOVkFMSURfT1BUX1ZBTFVFX0VOQ09ESU5HJywgdmFsdWUgPT4gYFRoZSB2YWx1ZSBcIiR7U3RyaW5nKHZhbHVlKX1cIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gXCJlbmNvZGluZ1wiYCk7XG5FKCdFUlJfSU5WQUxJRF9BUkdfVkFMVUUnLCAnVW5hYmxlIHRvIG9wZW4gZmlsZSBhcyBibG9iJyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1lcnJvcnMuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkVOQ09ESU5HX1VURjggPSB2b2lkIDA7XG5leHBvcnRzLmFzc2VydEVuY29kaW5nID0gYXNzZXJ0RW5jb2Rpbmc7XG5leHBvcnRzLnN0clRvRW5jb2RpbmcgPSBzdHJUb0VuY29kaW5nO1xuY29uc3QgYnVmZmVyXzEgPSByZXF1aXJlKFwiQGpzb25qb3kuY29tL2ZzLW5vZGUtYnVpbHRpbnMvbGliL2ludGVybmFsL2J1ZmZlclwiKTtcbmNvbnN0IGVycm9ycyA9IHJlcXVpcmUoXCJAanNvbmpveS5jb20vZnMtbm9kZS1idWlsdGlucy9saWIvaW50ZXJuYWwvZXJyb3JzXCIpO1xuZXhwb3J0cy5FTkNPRElOR19VVEY4ID0gJ3V0ZjgnO1xuZnVuY3Rpb24gYXNzZXJ0RW5jb2RpbmcoZW5jb2RpbmcpIHtcbiAgICBpZiAoZW5jb2RpbmcgJiYgIWJ1ZmZlcl8xLkJ1ZmZlci5pc0VuY29kaW5nKGVuY29kaW5nKSlcbiAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5UeXBlRXJyb3IoJ0VSUl9JTlZBTElEX09QVF9WQUxVRV9FTkNPRElORycsIGVuY29kaW5nKTtcbn1cbmZ1bmN0aW9uIHN0clRvRW5jb2Rpbmcoc3RyLCBlbmNvZGluZykge1xuICAgIGlmICghZW5jb2RpbmcgfHwgZW5jb2RpbmcgPT09IGV4cG9ydHMuRU5DT0RJTkdfVVRGOClcbiAgICAgICAgcmV0dXJuIHN0cjsgLy8gVVRGLThcbiAgICBpZiAoZW5jb2RpbmcgPT09ICdidWZmZXInKVxuICAgICAgICByZXR1cm4gbmV3IGJ1ZmZlcl8xLkJ1ZmZlcihzdHIpOyAvLyBgYnVmZmVyYCBlbmNvZGluZ1xuICAgIHJldHVybiBuZXcgYnVmZmVyXzEuQnVmZmVyKHN0cikudG9TdHJpbmcoZW5jb2RpbmcpOyAvLyBDdXN0b20gZW5jb2Rpbmdcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWVuY29kaW5nLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuY29uc3QgdHNsaWJfMSA9IHJlcXVpcmUoXCJ0c2xpYlwiKTtcbnRzbGliXzEuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL3R5cGVzXCIpLCBleHBvcnRzKTtcbnRzbGliXzEuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL2NvbnN0YW50c1wiKSwgZXhwb3J0cyk7XG50c2xpYl8xLl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9jb25zdHMvQU1PREVcIiksIGV4cG9ydHMpO1xudHNsaWJfMS5fX2V4cG9ydFN0YXIocmVxdWlyZShcIi4vY29uc3RzL0ZMQUdcIiksIGV4cG9ydHMpO1xudHNsaWJfMS5fX2V4cG9ydFN0YXIocmVxdWlyZShcIi4vcGF0aFwiKSwgZXhwb3J0cyk7XG50c2xpYl8xLl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9lbmNvZGluZ1wiKSwgZXhwb3J0cyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuTm9kZSA9IHZvaWQgMDtcbmNvbnN0IGZhbm91dF8xID0gcmVxdWlyZShcInRoaW5naWVzL2xpYi9mYW5vdXRcIik7XG5jb25zdCBwcm9jZXNzXzEgPSByZXF1aXJlKFwiLi9wcm9jZXNzXCIpO1xuY29uc3QgYnVmZmVyXzEgPSByZXF1aXJlKFwiQGpzb25qb3kuY29tL2ZzLW5vZGUtYnVpbHRpbnMvbGliL2ludGVybmFsL2J1ZmZlclwiKTtcbmNvbnN0IGZzX25vZGVfdXRpbHNfMSA9IHJlcXVpcmUoXCJAanNvbmpveS5jb20vZnMtbm9kZS11dGlsc1wiKTtcbmNvbnN0IHsgU19JRk1ULCBTX0lGRElSLCBTX0lGUkVHLCBTX0lGTE5LLCBTX0lGQ0hSIH0gPSBmc19ub2RlX3V0aWxzXzEuY29uc3RhbnRzO1xuY29uc3QgZ2V0dWlkID0gKCkgPT4gcHJvY2Vzc18xLmRlZmF1bHQuZ2V0dWlkPy4oKSA/PyAwO1xuY29uc3QgZ2V0Z2lkID0gKCkgPT4gcHJvY2Vzc18xLmRlZmF1bHQuZ2V0Z2lkPy4oKSA/PyAwO1xuY29uc3QgRU1QVFlfQlVGRkVSID0gKDAsIGJ1ZmZlcl8xLmJ1ZmZlckFsbG9jVW5zYWZlKSgwKTtcbi8qKlxuICogTm9kZSBpbiBhIGZpbGUgc3lzdGVtIChsaWtlIGktbm9kZSwgdi1ub2RlKS5cbiAqL1xuY2xhc3MgTm9kZSB7XG4gICAgY29uc3RydWN0b3IoaW5vLCBtb2RlID0gMG82NjYsIHVpZCA9IGdldHVpZCgpLCBnaWQgPSBnZXRnaWQoKSkge1xuICAgICAgICB0aGlzLmNoYW5nZXMgPSBuZXcgZmFub3V0XzEuRmFuT3V0KCk7XG4gICAgICAgIC8vIFVzZXIgSUQgYW5kIGdyb3VwIElELlxuICAgICAgICB0aGlzLl91aWQgPSBnZXR1aWQoKTtcbiAgICAgICAgdGhpcy5fZ2lkID0gZ2V0Z2lkKCk7XG4gICAgICAgIHRoaXMuX2F0aW1lID0gbmV3IERhdGUoKTtcbiAgICAgICAgdGhpcy5fbXRpbWUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICB0aGlzLl9jdGltZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIHRoaXMuYnVmID0gRU1QVFlfQlVGRkVSO1xuICAgICAgICAvKiogVG90YWwgYWxsb2NhdGVkIG1lbW9yeSBjYXBhY2l0eSBmb3IgdGhpcyBub2RlLiAqL1xuICAgICAgICB0aGlzLmNhcGFjaXR5ID0gMDtcbiAgICAgICAgLyoqIEFjdHVhbGx5IHVzZWQgYnl0ZXMgdG8gc3RvcmUgY29udGVudC4gKi9cbiAgICAgICAgdGhpcy5zaXplID0gMDtcbiAgICAgICAgdGhpcy5yZGV2ID0gMDtcbiAgICAgICAgLy8gTnVtYmVyIG9mIGhhcmQgbGlua3MgcG9pbnRpbmcgYXQgdGhpcyBOb2RlLlxuICAgICAgICB0aGlzLl9ubGluayA9IDE7XG4gICAgICAgIHRoaXMubW9kZSA9IG1vZGU7XG4gICAgICAgIHRoaXMuaW5vID0gaW5vO1xuICAgICAgICB0aGlzLl91aWQgPSB1aWQ7XG4gICAgICAgIHRoaXMuX2dpZCA9IGdpZDtcbiAgICB9XG4gICAgc2V0IGN0aW1lKGN0aW1lKSB7XG4gICAgICAgIHRoaXMuX2N0aW1lID0gY3RpbWU7XG4gICAgfVxuICAgIGdldCBjdGltZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N0aW1lO1xuICAgIH1cbiAgICBzZXQgdWlkKHVpZCkge1xuICAgICAgICB0aGlzLl91aWQgPSB1aWQ7XG4gICAgICAgIHRoaXMuY3RpbWUgPSBuZXcgRGF0ZSgpO1xuICAgIH1cbiAgICBnZXQgdWlkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdWlkO1xuICAgIH1cbiAgICBzZXQgZ2lkKGdpZCkge1xuICAgICAgICB0aGlzLl9naWQgPSBnaWQ7XG4gICAgICAgIHRoaXMuY3RpbWUgPSBuZXcgRGF0ZSgpO1xuICAgIH1cbiAgICBnZXQgZ2lkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2lkO1xuICAgIH1cbiAgICBzZXQgYXRpbWUoYXRpbWUpIHtcbiAgICAgICAgdGhpcy5fYXRpbWUgPSBhdGltZTtcbiAgICB9XG4gICAgZ2V0IGF0aW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXRpbWU7XG4gICAgfVxuICAgIHNldCBtdGltZShtdGltZSkge1xuICAgICAgICB0aGlzLl9tdGltZSA9IG10aW1lO1xuICAgICAgICB0aGlzLmN0aW1lID0gbmV3IERhdGUoKTtcbiAgICB9XG4gICAgZ2V0IG10aW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbXRpbWU7XG4gICAgfVxuICAgIGdldCBwZXJtKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RlICYgflNfSUZNVDtcbiAgICB9XG4gICAgc2V0IHBlcm0ocGVybSkge1xuICAgICAgICB0aGlzLm1vZGUgPSAodGhpcy5tb2RlICYgU19JRk1UKSB8IChwZXJtICYgflNfSUZNVCk7XG4gICAgICAgIHRoaXMuY3RpbWUgPSBuZXcgRGF0ZSgpO1xuICAgIH1cbiAgICBzZXQgbmxpbmsobmxpbmspIHtcbiAgICAgICAgdGhpcy5fbmxpbmsgPSBubGluaztcbiAgICAgICAgdGhpcy5jdGltZSA9IG5ldyBEYXRlKCk7XG4gICAgfVxuICAgIGdldCBubGluaygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25saW5rO1xuICAgIH1cbiAgICBnZXRTdHJpbmcoZW5jb2RpbmcgPSAndXRmOCcpIHtcbiAgICAgICAgdGhpcy5hdGltZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEJ1ZmZlcigpLnRvU3RyaW5nKGVuY29kaW5nKTtcbiAgICB9XG4gICAgc2V0U3RyaW5nKHN0cikge1xuICAgICAgICB0aGlzLl9zZXRCdWYoKDAsIGJ1ZmZlcl8xLmJ1ZmZlckZyb20pKHN0ciwgJ3V0ZjgnKSk7XG4gICAgfVxuICAgIGdldEJ1ZmZlcigpIHtcbiAgICAgICAgdGhpcy5hdGltZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGlmICghdGhpcy5idWYpXG4gICAgICAgICAgICB0aGlzLmJ1ZiA9ICgwLCBidWZmZXJfMS5idWZmZXJBbGxvY1Vuc2FmZSkoMCk7XG4gICAgICAgIHJldHVybiAoMCwgYnVmZmVyXzEuYnVmZmVyRnJvbSkodGhpcy5idWYuc3ViYXJyYXkoMCwgdGhpcy5zaXplKSk7IC8vIFJldHVybiBhIGNvcHkgb2YgdXNlZCBwb3J0aW9uLlxuICAgIH1cbiAgICBzZXRCdWZmZXIoYnVmKSB7XG4gICAgICAgIGNvbnN0IGNvcHkgPSAoMCwgYnVmZmVyXzEuYnVmZmVyRnJvbSkoYnVmKTsgLy8gQ3JlYXRlcyBhIGNvcHkgb2YgZGF0YS5cbiAgICAgICAgdGhpcy5fc2V0QnVmKGNvcHkpO1xuICAgIH1cbiAgICBfc2V0QnVmKGJ1Zikge1xuICAgICAgICBjb25zdCBzaXplID0gYnVmLmxlbmd0aDtcbiAgICAgICAgdGhpcy5idWYgPSBidWY7XG4gICAgICAgIHRoaXMuY2FwYWNpdHkgPSBzaXplO1xuICAgICAgICB0aGlzLnNpemUgPSBzaXplO1xuICAgICAgICB0aGlzLnRvdWNoKCk7XG4gICAgfVxuICAgIGdldFNpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNpemU7XG4gICAgfVxuICAgIHNldE1vZGVQcm9wZXJ0eShwcm9wZXJ0eSkge1xuICAgICAgICB0aGlzLm1vZGUgPSBwcm9wZXJ0eTtcbiAgICB9XG4gICAgaXNGaWxlKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMubW9kZSAmIFNfSUZNVCkgPT09IFNfSUZSRUc7XG4gICAgfVxuICAgIGlzRGlyZWN0b3J5KCkge1xuICAgICAgICByZXR1cm4gKHRoaXMubW9kZSAmIFNfSUZNVCkgPT09IFNfSUZESVI7XG4gICAgfVxuICAgIGlzU3ltbGluaygpIHtcbiAgICAgICAgLy8gcmV0dXJuICEhdGhpcy5zeW1saW5rO1xuICAgICAgICByZXR1cm4gKHRoaXMubW9kZSAmIFNfSUZNVCkgPT09IFNfSUZMTks7XG4gICAgfVxuICAgIGlzQ2hhcmFjdGVyRGV2aWNlKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMubW9kZSAmIFNfSUZNVCkgPT09IFNfSUZDSFI7XG4gICAgfVxuICAgIG1ha2VTeW1saW5rKHN5bWxpbmspIHtcbiAgICAgICAgdGhpcy5tb2RlID0gU19JRkxOSyB8IDBvNjY2O1xuICAgICAgICB0aGlzLnN5bWxpbmsgPSBzeW1saW5rO1xuICAgIH1cbiAgICB3cml0ZShidWYsIG9mZiA9IDAsIGxlbiA9IGJ1Zi5sZW5ndGgsIHBvcyA9IDApIHtcbiAgICAgICAgY29uc3QgYnVmTGVuZ3RoID0gYnVmLmxlbmd0aDtcbiAgICAgICAgaWYgKG9mZiArIGxlbiA+IGJ1Zkxlbmd0aClcbiAgICAgICAgICAgIGxlbiA9IGJ1Zkxlbmd0aCAtIG9mZjtcbiAgICAgICAgaWYgKGxlbiA8PSAwKVxuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIGNvbnN0IHJlcXVpcmVkU2l6ZSA9IHBvcyArIGxlbjtcbiAgICAgICAgaWYgKHJlcXVpcmVkU2l6ZSA+IHRoaXMuY2FwYWNpdHkpIHtcbiAgICAgICAgICAgIGxldCBuZXdDYXBhY2l0eSA9IE1hdGgubWF4KHRoaXMuY2FwYWNpdHkgKiAyLCA2NCk7XG4gICAgICAgICAgICB3aGlsZSAobmV3Q2FwYWNpdHkgPCByZXF1aXJlZFNpemUpXG4gICAgICAgICAgICAgICAgbmV3Q2FwYWNpdHkgKj0gMjtcbiAgICAgICAgICAgIGNvbnN0IG5ld0J1ZiA9ICgwLCBidWZmZXJfMS5idWZmZXJBbGxvY1Vuc2FmZSkobmV3Q2FwYWNpdHkpO1xuICAgICAgICAgICAgaWYgKHRoaXMuc2l6ZSA+IDApXG4gICAgICAgICAgICAgICAgdGhpcy5idWYuY29weShuZXdCdWYsIDAsIDAsIHRoaXMuc2l6ZSk7XG4gICAgICAgICAgICB0aGlzLmJ1ZiA9IG5ld0J1ZjtcbiAgICAgICAgICAgIHRoaXMuY2FwYWNpdHkgPSBuZXdDYXBhY2l0eTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocG9zID4gdGhpcy5zaXplKVxuICAgICAgICAgICAgdGhpcy5idWYuZmlsbCgwLCB0aGlzLnNpemUsIHBvcyk7XG4gICAgICAgIGJ1Zi5jb3B5KHRoaXMuYnVmLCBwb3MsIG9mZiwgb2ZmICsgbGVuKTtcbiAgICAgICAgaWYgKHJlcXVpcmVkU2l6ZSA+IHRoaXMuc2l6ZSlcbiAgICAgICAgICAgIHRoaXMuc2l6ZSA9IHJlcXVpcmVkU2l6ZTtcbiAgICAgICAgdGhpcy50b3VjaCgpO1xuICAgICAgICByZXR1cm4gbGVuO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZWFkIGRhdGEgZnJvbSB0aGUgZmlsZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBidWYgQnVmZmVyIHRvIHJlYWQgZGF0YSBpbnRvLlxuICAgICAqIEBwYXJhbSBvZmYgT2Zmc2V0IGludCB0aGUgYGJ1ZmAgd2hlcmUgdG8gc3RhcnQgd3JpdGluZyBkYXRhLlxuICAgICAqIEBwYXJhbSBsZW4gSG93IG1hbnkgYnl0ZXMgdG8gcmVhZC4gRXF1YWxzIHRvIGBidWYuYnl0ZUxlbmd0aGAgYnkgZGVmYXVsdC5cbiAgICAgKiBAcGFyYW0gcG9zIFBvc2l0aW9uIG9mZnNldCBpbiBmaWxlIHdoZXJlIHRvIHN0YXJ0IHJlYWRpbmcuIERlZmF1bHRzIHRvIGAwYC5cbiAgICAgKiBAcmV0dXJucyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZC5cbiAgICAgKi9cbiAgICByZWFkKGJ1Ziwgb2ZmID0gMCwgbGVuID0gYnVmLmJ5dGVMZW5ndGgsIHBvcyA9IDApIHtcbiAgICAgICAgdGhpcy5hdGltZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGlmIChwb3MgPj0gdGhpcy5zaXplKVxuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIGxldCBhY3R1YWxMZW4gPSBsZW47XG4gICAgICAgIGlmIChhY3R1YWxMZW4gPiBidWYuYnl0ZUxlbmd0aClcbiAgICAgICAgICAgIGFjdHVhbExlbiA9IGJ1Zi5ieXRlTGVuZ3RoO1xuICAgICAgICBpZiAoYWN0dWFsTGVuICsgcG9zID4gdGhpcy5zaXplKVxuICAgICAgICAgICAgYWN0dWFsTGVuID0gdGhpcy5zaXplIC0gcG9zO1xuICAgICAgICBpZiAoYWN0dWFsTGVuIDw9IDApXG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgY29uc3QgYnVmMiA9IGJ1ZiBpbnN0YW5jZW9mIGJ1ZmZlcl8xLkJ1ZmZlciA/IGJ1ZiA6IGJ1ZmZlcl8xLkJ1ZmZlci5mcm9tKGJ1Zi5idWZmZXIsIGJ1Zi5ieXRlT2Zmc2V0LCBidWYuYnl0ZUxlbmd0aCk7XG4gICAgICAgIHRoaXMuYnVmLmNvcHkoYnVmMiwgb2ZmLCBwb3MsIHBvcyArIGFjdHVhbExlbik7XG4gICAgICAgIHJldHVybiBhY3R1YWxMZW47XG4gICAgfVxuICAgIHRydW5jYXRlKGxlbiA9IDApIHtcbiAgICAgICAgaWYgKCFsZW4pIHtcbiAgICAgICAgICAgIHRoaXMuYnVmID0gRU1QVFlfQlVGRkVSO1xuICAgICAgICAgICAgdGhpcy5jYXBhY2l0eSA9IDA7XG4gICAgICAgICAgICB0aGlzLnNpemUgPSAwO1xuICAgICAgICAgICAgdGhpcy50b3VjaCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsZW4gPD0gdGhpcy5zaXplKVxuICAgICAgICAgICAgdGhpcy5zaXplID0gbGVuO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChsZW4gPiB0aGlzLmNhcGFjaXR5KSB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld0NhcGFjaXR5ID0gTWF0aC5tYXgodGhpcy5jYXBhY2l0eSAqIDIsIDY0KTtcbiAgICAgICAgICAgICAgICB3aGlsZSAobmV3Q2FwYWNpdHkgPCBsZW4pXG4gICAgICAgICAgICAgICAgICAgIG5ld0NhcGFjaXR5ICo9IDI7XG4gICAgICAgICAgICAgICAgY29uc3QgYnVmID0gKDAsIGJ1ZmZlcl8xLmJ1ZmZlckFsbG9jVW5zYWZlKShuZXdDYXBhY2l0eSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2l6ZSA+IDApXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnVmLmNvcHkoYnVmLCAwLCAwLCB0aGlzLnNpemUpO1xuICAgICAgICAgICAgICAgIGJ1Zi5maWxsKDAsIHRoaXMuc2l6ZSwgbGVuKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJ1ZiA9IGJ1ZjtcbiAgICAgICAgICAgICAgICB0aGlzLmNhcGFjaXR5ID0gbmV3Q2FwYWNpdHk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdGhpcy5idWYuZmlsbCgwLCB0aGlzLnNpemUsIGxlbik7XG4gICAgICAgICAgICB0aGlzLnNpemUgPSBsZW47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50b3VjaCgpO1xuICAgIH1cbiAgICBjaG1vZChwZXJtKSB7XG4gICAgICAgIHRoaXMubW9kZSA9ICh0aGlzLm1vZGUgJiBTX0lGTVQpIHwgKHBlcm0gJiB+U19JRk1UKTtcbiAgICAgICAgdGhpcy50b3VjaCgpO1xuICAgIH1cbiAgICBjaG93bih1aWQsIGdpZCkge1xuICAgICAgICB0aGlzLnVpZCA9IHVpZDtcbiAgICAgICAgdGhpcy5naWQgPSBnaWQ7XG4gICAgICAgIHRoaXMudG91Y2goKTtcbiAgICB9XG4gICAgdG91Y2goKSB7XG4gICAgICAgIHRoaXMubXRpbWUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICB0aGlzLmNoYW5nZXMuZW1pdChbJ21vZGlmeSddKTtcbiAgICB9XG4gICAgY2FuUmVhZCh1aWQgPSBnZXR1aWQoKSwgZ2lkID0gZ2V0Z2lkKCkpIHtcbiAgICAgICAgaWYgKHRoaXMucGVybSAmIDQgLyogUy5JUk9USCAqLykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGdpZCA9PT0gdGhpcy5naWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnBlcm0gJiAzMiAvKiBTLklSR1JQICovKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVpZCA9PT0gdGhpcy51aWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnBlcm0gJiAyNTYgLyogUy5JUlVTUiAqLykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY2FuV3JpdGUodWlkID0gZ2V0dWlkKCksIGdpZCA9IGdldGdpZCgpKSB7XG4gICAgICAgIGlmICh0aGlzLnBlcm0gJiAyIC8qIFMuSVdPVEggKi8pIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChnaWQgPT09IHRoaXMuZ2lkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wZXJtICYgMTYgLyogUy5JV0dSUCAqLykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh1aWQgPT09IHRoaXMudWlkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wZXJtICYgMTI4IC8qIFMuSVdVU1IgKi8pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNhbkV4ZWN1dGUodWlkID0gZ2V0dWlkKCksIGdpZCA9IGdldGdpZCgpKSB7XG4gICAgICAgIGlmICh0aGlzLnBlcm0gJiAxIC8qIFMuSVhPVEggKi8pIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChnaWQgPT09IHRoaXMuZ2lkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wZXJtICYgOCAvKiBTLklYR1JQICovKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVpZCA9PT0gdGhpcy51aWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnBlcm0gJiA2NCAvKiBTLklYVVNSICovKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBkZWwoKSB7XG4gICAgICAgIHRoaXMuY2hhbmdlcy5lbWl0KFsnZGVsZXRlJ10pO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbm86IHRoaXMuaW5vLFxuICAgICAgICAgICAgdWlkOiB0aGlzLnVpZCxcbiAgICAgICAgICAgIGdpZDogdGhpcy5naWQsXG4gICAgICAgICAgICBhdGltZTogdGhpcy5hdGltZS5nZXRUaW1lKCksXG4gICAgICAgICAgICBtdGltZTogdGhpcy5tdGltZS5nZXRUaW1lKCksXG4gICAgICAgICAgICBjdGltZTogdGhpcy5jdGltZS5nZXRUaW1lKCksXG4gICAgICAgICAgICBwZXJtOiB0aGlzLnBlcm0sXG4gICAgICAgICAgICBtb2RlOiB0aGlzLm1vZGUsXG4gICAgICAgICAgICBubGluazogdGhpcy5ubGluayxcbiAgICAgICAgICAgIHN5bWxpbms6IHRoaXMuc3ltbGluayxcbiAgICAgICAgICAgIGRhdGE6IHRoaXMuZ2V0U3RyaW5nKCksXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0cy5Ob2RlID0gTm9kZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU5vZGUuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkxpbmsgPSB2b2lkIDA7XG5jb25zdCBmc19ub2RlX3V0aWxzXzEgPSByZXF1aXJlKFwiQGpzb25qb3kuY29tL2ZzLW5vZGUtdXRpbHNcIik7XG5jb25zdCBmYW5vdXRfMSA9IHJlcXVpcmUoXCJ0aGluZ2llcy9saWIvZmFub3V0XCIpO1xuY29uc3QgeyBTX0lGUkVHIH0gPSBmc19ub2RlX3V0aWxzXzEuY29uc3RhbnRzO1xuLyoqXG4gKiBSZXByZXNlbnRzIGEgaGFyZCBsaW5rIHRoYXQgcG9pbnRzIHRvIGFuIGktbm9kZSBgbm9kZWAuXG4gKi9cbmNsYXNzIExpbmsge1xuICAgIGdldCBzdGVwcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0ZXBzO1xuICAgIH1cbiAgICAvLyBSZWN1cnNpdmVseSBzeW5jIGNoaWxkcmVuIHN0ZXBzLCBlLmcuIGluIGNhc2Ugb2YgZGlyIHJlbmFtZVxuICAgIHNldCBzdGVwcyh2YWwpIHtcbiAgICAgICAgdGhpcy5fc3RlcHMgPSB2YWw7XG4gICAgICAgIGZvciAoY29uc3QgW2NoaWxkLCBsaW5rXSBvZiB0aGlzLmNoaWxkcmVuLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgaWYgKGNoaWxkID09PSAnLicgfHwgY2hpbGQgPT09ICcuLicpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxpbms/LnN5bmNTdGVwcygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKHZvbCwgcGFyZW50LCBuYW1lKSB7XG4gICAgICAgIHRoaXMuY2hhbmdlcyA9IG5ldyBmYW5vdXRfMS5GYW5PdXQoKTtcbiAgICAgICAgdGhpcy5jaGlsZHJlbiA9IG5ldyBNYXAoKTtcbiAgICAgICAgLy8gUGF0aCB0byB0aGlzIG5vZGUgYXMgQXJyYXk6IFsndXNyJywgJ2JpbicsICdub2RlJ10uXG4gICAgICAgIHRoaXMuX3N0ZXBzID0gW107XG4gICAgICAgIC8vIFwiaS1ub2RlXCIgbnVtYmVyIG9mIHRoZSBub2RlLlxuICAgICAgICB0aGlzLmlubyA9IDA7XG4gICAgICAgIC8vIE51bWJlciBvZiBjaGlsZHJlbi5cbiAgICAgICAgdGhpcy5sZW5ndGggPSAwO1xuICAgICAgICB0aGlzLnZvbCA9IHZvbDtcbiAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuc3luY1N0ZXBzKCk7XG4gICAgfVxuICAgIHNldE5vZGUobm9kZSkge1xuICAgICAgICB0aGlzLm5vZGUgPSBub2RlO1xuICAgICAgICB0aGlzLmlubyA9IG5vZGUuaW5vO1xuICAgIH1cbiAgICBnZXROb2RlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ub2RlO1xuICAgIH1cbiAgICBjcmVhdGVDaGlsZChuYW1lLCBub2RlID0gdGhpcy52b2wuY3JlYXRlTm9kZShTX0lGUkVHIHwgMG82NjYpKSB7XG4gICAgICAgIGNvbnN0IGxpbmsgPSBuZXcgTGluayh0aGlzLnZvbCwgdGhpcywgbmFtZSk7XG4gICAgICAgIGxpbmsuc2V0Tm9kZShub2RlKTtcbiAgICAgICAgaWYgKG5vZGUuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICAgICAgbGluay5jaGlsZHJlbi5zZXQoJy4nLCBsaW5rKTtcbiAgICAgICAgICAgIGxpbmsuZ2V0Tm9kZSgpLm5saW5rKys7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRDaGlsZChuYW1lLCBsaW5rKTtcbiAgICAgICAgcmV0dXJuIGxpbms7XG4gICAgfVxuICAgIHNldENoaWxkKG5hbWUsIGxpbmsgPSBuZXcgTGluayh0aGlzLnZvbCwgdGhpcywgbmFtZSkpIHtcbiAgICAgICAgdGhpcy5jaGlsZHJlbi5zZXQobmFtZSwgbGluayk7XG4gICAgICAgIGxpbmsucGFyZW50ID0gdGhpcztcbiAgICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICAgICAgY29uc3Qgbm9kZSA9IGxpbmsuZ2V0Tm9kZSgpO1xuICAgICAgICBpZiAobm9kZS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgICBsaW5rLmNoaWxkcmVuLnNldCgnLi4nLCB0aGlzKTtcbiAgICAgICAgICAgIHRoaXMuZ2V0Tm9kZSgpLm5saW5rKys7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5nZXROb2RlKCkubXRpbWUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICB0aGlzLmNoYW5nZXMuZW1pdChbJ2NoaWxkOmFkZCcsIGxpbmssIHRoaXNdKTtcbiAgICAgICAgcmV0dXJuIGxpbms7XG4gICAgfVxuICAgIGRlbGV0ZUNoaWxkKGxpbmspIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IGxpbmsuZ2V0Tm9kZSgpO1xuICAgICAgICBpZiAobm9kZS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgICBsaW5rLmNoaWxkcmVuLmRlbGV0ZSgnLi4nKTtcbiAgICAgICAgICAgIHRoaXMuZ2V0Tm9kZSgpLm5saW5rLS07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGlsZHJlbi5kZWxldGUobGluay5nZXROYW1lKCkpO1xuICAgICAgICB0aGlzLmxlbmd0aC0tO1xuICAgICAgICB0aGlzLmdldE5vZGUoKS5tdGltZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIHRoaXMuY2hhbmdlcy5lbWl0KFsnY2hpbGQ6ZGVsJywgbGluaywgdGhpc10pO1xuICAgIH1cbiAgICBnZXRDaGlsZChuYW1lKSB7XG4gICAgICAgIHRoaXMuZ2V0Tm9kZSgpLmF0aW1lID0gbmV3IERhdGUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRyZW4uZ2V0KG5hbWUpO1xuICAgIH1cbiAgICBnZXRQYXRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy5qb2luKFwiL1wiIC8qIFBBVEguU0VQICovKTtcbiAgICB9XG4gICAgZ2V0UGFyZW50UGF0aCgpIHtcbiAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5zdGVwcy5zbGljZSgwLCAtMSkuam9pbihcIi9cIiAvKiBQQVRILlNFUCAqLyk7XG4gICAgICAgIHJldHVybiBwYXJlbnQgPyBwYXJlbnQgOiBcIi9cIiAvKiBQQVRILlNFUCAqLztcbiAgICB9XG4gICAgZ2V0TmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHNbdGhpcy5zdGVwcy5sZW5ndGggLSAxXTtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3RlcHM6IHRoaXMuc3RlcHMsXG4gICAgICAgICAgICBpbm86IHRoaXMuaW5vLFxuICAgICAgICAgICAgY2hpbGRyZW46IEFycmF5LmZyb20odGhpcy5jaGlsZHJlbi5rZXlzKCkpLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBzeW5jU3RlcHMoKSB7XG4gICAgICAgIHRoaXMuc3RlcHMgPSB0aGlzLnBhcmVudCA/IHRoaXMucGFyZW50LnN0ZXBzLmNvbmNhdChbdGhpcy5uYW1lXSkgOiBbdGhpcy5uYW1lXTtcbiAgICB9XG59XG5leHBvcnRzLkxpbmsgPSBMaW5rO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TGluay5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuRmlsZSA9IHZvaWQgMDtcbmNvbnN0IGZzX25vZGVfdXRpbHNfMSA9IHJlcXVpcmUoXCJAanNvbmpveS5jb20vZnMtbm9kZS11dGlsc1wiKTtcbmNvbnN0IHsgT19BUFBFTkQgfSA9IGZzX25vZGVfdXRpbHNfMS5jb25zdGFudHM7XG4vKipcbiAqIFJlcHJlc2VudHMgYW4gb3BlbiBmaWxlIChmaWxlIGRlc2NyaXB0b3IpIHRoYXQgcG9pbnRzIHRvIGEgYExpbmtgIChIYXJkLWxpbmspIGFuZCBhIGBOb2RlYC5cbiAqXG4gKiBAdG9kbyBSZW5hbWUgdG8gYE9wZW5GaWxlYC5cbiAqL1xuY2xhc3MgRmlsZSB7XG4gICAgLyoqXG4gICAgICogT3BlbiBhIExpbmstTm9kZSBwYWlyLiBgbm9kZWAgaXMgcHJvdmlkZWQgc2VwYXJhdGVseSBhcyB0aGF0IG1pZ2h0IGJlIGEgZGlmZmVyZW50IG5vZGVcbiAgICAgKiByYXRoZXIgdGhlIG9uZSBgbGlua2AgcG9pbnRzIHRvLCBiZWNhdXNlIGl0IG1pZ2h0IGJlIGEgc3ltbGluay5cbiAgICAgKiBAcGFyYW0gbGlua1xuICAgICAqIEBwYXJhbSBub2RlXG4gICAgICogQHBhcmFtIGZsYWdzXG4gICAgICogQHBhcmFtIGZkXG4gICAgICovXG4gICAgY29uc3RydWN0b3IobGluaywgbm9kZSwgZmxhZ3MsIGZkKSB7XG4gICAgICAgIHRoaXMubGluayA9IGxpbms7XG4gICAgICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gICAgICAgIHRoaXMuZmxhZ3MgPSBmbGFncztcbiAgICAgICAgdGhpcy5mZCA9IGZkO1xuICAgICAgICB0aGlzLnBvc2l0aW9uID0gMDtcbiAgICAgICAgaWYgKHRoaXMuZmxhZ3MgJiBPX0FQUEVORClcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24gPSB0aGlzLmdldFNpemUoKTtcbiAgICB9XG4gICAgZ2V0U3RyaW5nKGVuY29kaW5nID0gJ3V0ZjgnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5vZGUuZ2V0U3RyaW5nKCk7XG4gICAgfVxuICAgIHNldFN0cmluZyhzdHIpIHtcbiAgICAgICAgdGhpcy5ub2RlLnNldFN0cmluZyhzdHIpO1xuICAgIH1cbiAgICBnZXRCdWZmZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5vZGUuZ2V0QnVmZmVyKCk7XG4gICAgfVxuICAgIHNldEJ1ZmZlcihidWYpIHtcbiAgICAgICAgdGhpcy5ub2RlLnNldEJ1ZmZlcihidWYpO1xuICAgIH1cbiAgICBnZXRTaXplKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ub2RlLmdldFNpemUoKTtcbiAgICB9XG4gICAgdHJ1bmNhdGUobGVuKSB7XG4gICAgICAgIHRoaXMubm9kZS50cnVuY2F0ZShsZW4pO1xuICAgIH1cbiAgICBzZWVrVG8ocG9zaXRpb24pIHtcbiAgICAgICAgdGhpcy5wb3NpdGlvbiA9IHBvc2l0aW9uO1xuICAgIH1cbiAgICB3cml0ZShidWYsIG9mZnNldCA9IDAsIGxlbmd0aCA9IGJ1Zi5sZW5ndGgsIHBvc2l0aW9uKSB7XG4gICAgICAgIGlmICh0eXBlb2YgcG9zaXRpb24gIT09ICdudW1iZXInKVxuICAgICAgICAgICAgcG9zaXRpb24gPSB0aGlzLnBvc2l0aW9uO1xuICAgICAgICBjb25zdCBieXRlcyA9IHRoaXMubm9kZS53cml0ZShidWYsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbik7XG4gICAgICAgIHRoaXMucG9zaXRpb24gPSBwb3NpdGlvbiArIGJ5dGVzO1xuICAgICAgICByZXR1cm4gYnl0ZXM7XG4gICAgfVxuICAgIHJlYWQoYnVmLCBvZmZzZXQgPSAwLCBsZW5ndGggPSBidWYuYnl0ZUxlbmd0aCwgcG9zaXRpb24pIHtcbiAgICAgICAgaWYgKHR5cGVvZiBwb3NpdGlvbiAhPT0gJ251bWJlcicpXG4gICAgICAgICAgICBwb3NpdGlvbiA9IHRoaXMucG9zaXRpb247XG4gICAgICAgIGNvbnN0IGJ5dGVzID0gdGhpcy5ub2RlLnJlYWQoYnVmLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pO1xuICAgICAgICB0aGlzLnBvc2l0aW9uID0gcG9zaXRpb24gKyBieXRlcztcbiAgICAgICAgcmV0dXJuIGJ5dGVzO1xuICAgIH1cbiAgICBjaG1vZChwZXJtKSB7XG4gICAgICAgIHRoaXMubm9kZS5jaG1vZChwZXJtKTtcbiAgICB9XG4gICAgY2hvd24odWlkLCBnaWQpIHtcbiAgICAgICAgdGhpcy5ub2RlLmNob3duKHVpZCwgZ2lkKTtcbiAgICB9XG59XG5leHBvcnRzLkZpbGUgPSBGaWxlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RmlsZS5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuRU5DT0RJTkdfVVRGOCA9IHZvaWQgMDtcbmV4cG9ydHMuYXNzZXJ0RW5jb2RpbmcgPSBhc3NlcnRFbmNvZGluZztcbmV4cG9ydHMuc3RyVG9FbmNvZGluZyA9IHN0clRvRW5jb2Rpbmc7XG5jb25zdCBidWZmZXJfMSA9IHJlcXVpcmUoXCJAanNvbmpveS5jb20vZnMtbm9kZS1idWlsdGlucy9saWIvaW50ZXJuYWwvYnVmZmVyXCIpO1xuY29uc3QgZXJyb3JzID0gcmVxdWlyZShcIkBqc29uam95LmNvbS9mcy1ub2RlLWJ1aWx0aW5zL2xpYi9pbnRlcm5hbC9lcnJvcnNcIik7XG5leHBvcnRzLkVOQ09ESU5HX1VURjggPSAndXRmOCc7XG5mdW5jdGlvbiBhc3NlcnRFbmNvZGluZyhlbmNvZGluZykge1xuICAgIGlmIChlbmNvZGluZyAmJiAhYnVmZmVyXzEuQnVmZmVyLmlzRW5jb2RpbmcoZW5jb2RpbmcpKVxuICAgICAgICB0aHJvdyBuZXcgZXJyb3JzLlR5cGVFcnJvcignRVJSX0lOVkFMSURfT1BUX1ZBTFVFX0VOQ09ESU5HJywgZW5jb2RpbmcpO1xufVxuZnVuY3Rpb24gc3RyVG9FbmNvZGluZyhzdHIsIGVuY29kaW5nKSB7XG4gICAgaWYgKCFlbmNvZGluZyB8fCBlbmNvZGluZyA9PT0gZXhwb3J0cy5FTkNPRElOR19VVEY4KVxuICAgICAgICByZXR1cm4gc3RyOyAvLyBVVEYtOFxuICAgIGlmIChlbmNvZGluZyA9PT0gJ2J1ZmZlcicpXG4gICAgICAgIHJldHVybiBuZXcgYnVmZmVyXzEuQnVmZmVyKHN0cik7IC8vIGBidWZmZXJgIGVuY29kaW5nXG4gICAgcmV0dXJuIG5ldyBidWZmZXJfMS5CdWZmZXIoc3RyKS50b1N0cmluZyhlbmNvZGluZyk7IC8vIEN1c3RvbSBlbmNvZGluZ1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZW5jb2RpbmcuanMubWFwIiwiLyohIGh0dHBzOi8vbXRocy5iZS9wdW55Y29kZSB2MS40LjEgYnkgQG1hdGhpYXMgKi9cbjsoZnVuY3Rpb24ocm9vdCkge1xuXG5cdC8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZXMgKi9cblx0dmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJlxuXHRcdCFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cdHZhciBmcmVlTW9kdWxlID0gdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiZcblx0XHQhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblx0dmFyIGZyZWVHbG9iYWwgPSB0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbDtcblx0aWYgKFxuXHRcdGZyZWVHbG9iYWwuZ2xvYmFsID09PSBmcmVlR2xvYmFsIHx8XG5cdFx0ZnJlZUdsb2JhbC53aW5kb3cgPT09IGZyZWVHbG9iYWwgfHxcblx0XHRmcmVlR2xvYmFsLnNlbGYgPT09IGZyZWVHbG9iYWxcblx0KSB7XG5cdFx0cm9vdCA9IGZyZWVHbG9iYWw7XG5cdH1cblxuXHQvKipcblx0ICogVGhlIGBwdW55Y29kZWAgb2JqZWN0LlxuXHQgKiBAbmFtZSBwdW55Y29kZVxuXHQgKiBAdHlwZSBPYmplY3Rcblx0ICovXG5cdHZhciBwdW55Y29kZSxcblxuXHQvKiogSGlnaGVzdCBwb3NpdGl2ZSBzaWduZWQgMzItYml0IGZsb2F0IHZhbHVlICovXG5cdG1heEludCA9IDIxNDc0ODM2NDcsIC8vIGFrYS4gMHg3RkZGRkZGRiBvciAyXjMxLTFcblxuXHQvKiogQm9vdHN0cmluZyBwYXJhbWV0ZXJzICovXG5cdGJhc2UgPSAzNixcblx0dE1pbiA9IDEsXG5cdHRNYXggPSAyNixcblx0c2tldyA9IDM4LFxuXHRkYW1wID0gNzAwLFxuXHRpbml0aWFsQmlhcyA9IDcyLFxuXHRpbml0aWFsTiA9IDEyOCwgLy8gMHg4MFxuXHRkZWxpbWl0ZXIgPSAnLScsIC8vICdcXHgyRCdcblxuXHQvKiogUmVndWxhciBleHByZXNzaW9ucyAqL1xuXHRyZWdleFB1bnljb2RlID0gL154bi0tLyxcblx0cmVnZXhOb25BU0NJSSA9IC9bXlxceDIwLVxceDdFXS8sIC8vIHVucHJpbnRhYmxlIEFTQ0lJIGNoYXJzICsgbm9uLUFTQ0lJIGNoYXJzXG5cdHJlZ2V4U2VwYXJhdG9ycyA9IC9bXFx4MkVcXHUzMDAyXFx1RkYwRVxcdUZGNjFdL2csIC8vIFJGQyAzNDkwIHNlcGFyYXRvcnNcblxuXHQvKiogRXJyb3IgbWVzc2FnZXMgKi9cblx0ZXJyb3JzID0ge1xuXHRcdCdvdmVyZmxvdyc6ICdPdmVyZmxvdzogaW5wdXQgbmVlZHMgd2lkZXIgaW50ZWdlcnMgdG8gcHJvY2VzcycsXG5cdFx0J25vdC1iYXNpYyc6ICdJbGxlZ2FsIGlucHV0ID49IDB4ODAgKG5vdCBhIGJhc2ljIGNvZGUgcG9pbnQpJyxcblx0XHQnaW52YWxpZC1pbnB1dCc6ICdJbnZhbGlkIGlucHV0J1xuXHR9LFxuXG5cdC8qKiBDb252ZW5pZW5jZSBzaG9ydGN1dHMgKi9cblx0YmFzZU1pbnVzVE1pbiA9IGJhc2UgLSB0TWluLFxuXHRmbG9vciA9IE1hdGguZmxvb3IsXG5cdHN0cmluZ0Zyb21DaGFyQ29kZSA9IFN0cmluZy5mcm9tQ2hhckNvZGUsXG5cblx0LyoqIFRlbXBvcmFyeSB2YXJpYWJsZSAqL1xuXHRrZXk7XG5cblx0LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cblx0LyoqXG5cdCAqIEEgZ2VuZXJpYyBlcnJvciB1dGlsaXR5IGZ1bmN0aW9uLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAcGFyYW0ge1N0cmluZ30gdHlwZSBUaGUgZXJyb3IgdHlwZS5cblx0ICogQHJldHVybnMge0Vycm9yfSBUaHJvd3MgYSBgUmFuZ2VFcnJvcmAgd2l0aCB0aGUgYXBwbGljYWJsZSBlcnJvciBtZXNzYWdlLlxuXHQgKi9cblx0ZnVuY3Rpb24gZXJyb3IodHlwZSkge1xuXHRcdHRocm93IG5ldyBSYW5nZUVycm9yKGVycm9yc1t0eXBlXSk7XG5cdH1cblxuXHQvKipcblx0ICogQSBnZW5lcmljIGBBcnJheSNtYXBgIHV0aWxpdHkgZnVuY3Rpb24uXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIGZvciBldmVyeSBhcnJheVxuXHQgKiBpdGVtLlxuXHQgKiBAcmV0dXJucyB7QXJyYXl9IEEgbmV3IGFycmF5IG9mIHZhbHVlcyByZXR1cm5lZCBieSB0aGUgY2FsbGJhY2sgZnVuY3Rpb24uXG5cdCAqL1xuXHRmdW5jdGlvbiBtYXAoYXJyYXksIGZuKSB7XG5cdFx0dmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblx0XHR2YXIgcmVzdWx0ID0gW107XG5cdFx0d2hpbGUgKGxlbmd0aC0tKSB7XG5cdFx0XHRyZXN1bHRbbGVuZ3RoXSA9IGZuKGFycmF5W2xlbmd0aF0pO1xuXHRcdH1cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0LyoqXG5cdCAqIEEgc2ltcGxlIGBBcnJheSNtYXBgLWxpa2Ugd3JhcHBlciB0byB3b3JrIHdpdGggZG9tYWluIG5hbWUgc3RyaW5ncyBvciBlbWFpbFxuXHQgKiBhZGRyZXNzZXMuXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBkb21haW4gVGhlIGRvbWFpbiBuYW1lIG9yIGVtYWlsIGFkZHJlc3MuXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIGZvciBldmVyeVxuXHQgKiBjaGFyYWN0ZXIuXG5cdCAqIEByZXR1cm5zIHtBcnJheX0gQSBuZXcgc3RyaW5nIG9mIGNoYXJhY3RlcnMgcmV0dXJuZWQgYnkgdGhlIGNhbGxiYWNrXG5cdCAqIGZ1bmN0aW9uLlxuXHQgKi9cblx0ZnVuY3Rpb24gbWFwRG9tYWluKHN0cmluZywgZm4pIHtcblx0XHR2YXIgcGFydHMgPSBzdHJpbmcuc3BsaXQoJ0AnKTtcblx0XHR2YXIgcmVzdWx0ID0gJyc7XG5cdFx0aWYgKHBhcnRzLmxlbmd0aCA+IDEpIHtcblx0XHRcdC8vIEluIGVtYWlsIGFkZHJlc3Nlcywgb25seSB0aGUgZG9tYWluIG5hbWUgc2hvdWxkIGJlIHB1bnljb2RlZC4gTGVhdmVcblx0XHRcdC8vIHRoZSBsb2NhbCBwYXJ0IChpLmUuIGV2ZXJ5dGhpbmcgdXAgdG8gYEBgKSBpbnRhY3QuXG5cdFx0XHRyZXN1bHQgPSBwYXJ0c1swXSArICdAJztcblx0XHRcdHN0cmluZyA9IHBhcnRzWzFdO1xuXHRcdH1cblx0XHQvLyBBdm9pZCBgc3BsaXQocmVnZXgpYCBmb3IgSUU4IGNvbXBhdGliaWxpdHkuIFNlZSAjMTcuXG5cdFx0c3RyaW5nID0gc3RyaW5nLnJlcGxhY2UocmVnZXhTZXBhcmF0b3JzLCAnXFx4MkUnKTtcblx0XHR2YXIgbGFiZWxzID0gc3RyaW5nLnNwbGl0KCcuJyk7XG5cdFx0dmFyIGVuY29kZWQgPSBtYXAobGFiZWxzLCBmbikuam9pbignLicpO1xuXHRcdHJldHVybiByZXN1bHQgKyBlbmNvZGVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgbnVtZXJpYyBjb2RlIHBvaW50cyBvZiBlYWNoIFVuaWNvZGVcblx0ICogY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcuIFdoaWxlIEphdmFTY3JpcHQgdXNlcyBVQ1MtMiBpbnRlcm5hbGx5LFxuXHQgKiB0aGlzIGZ1bmN0aW9uIHdpbGwgY29udmVydCBhIHBhaXIgb2Ygc3Vycm9nYXRlIGhhbHZlcyAoZWFjaCBvZiB3aGljaFxuXHQgKiBVQ1MtMiBleHBvc2VzIGFzIHNlcGFyYXRlIGNoYXJhY3RlcnMpIGludG8gYSBzaW5nbGUgY29kZSBwb2ludCxcblx0ICogbWF0Y2hpbmcgVVRGLTE2LlxuXHQgKiBAc2VlIGBwdW55Y29kZS51Y3MyLmVuY29kZWBcblx0ICogQHNlZSA8aHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtZW5jb2Rpbmc+XG5cdCAqIEBtZW1iZXJPZiBwdW55Y29kZS51Y3MyXG5cdCAqIEBuYW1lIGRlY29kZVxuXHQgKiBAcGFyYW0ge1N0cmluZ30gc3RyaW5nIFRoZSBVbmljb2RlIGlucHV0IHN0cmluZyAoVUNTLTIpLlxuXHQgKiBAcmV0dXJucyB7QXJyYXl9IFRoZSBuZXcgYXJyYXkgb2YgY29kZSBwb2ludHMuXG5cdCAqL1xuXHRmdW5jdGlvbiB1Y3MyZGVjb2RlKHN0cmluZykge1xuXHRcdHZhciBvdXRwdXQgPSBbXSxcblx0XHQgICAgY291bnRlciA9IDAsXG5cdFx0ICAgIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgsXG5cdFx0ICAgIHZhbHVlLFxuXHRcdCAgICBleHRyYTtcblx0XHR3aGlsZSAoY291bnRlciA8IGxlbmd0aCkge1xuXHRcdFx0dmFsdWUgPSBzdHJpbmcuY2hhckNvZGVBdChjb3VudGVyKyspO1xuXHRcdFx0aWYgKHZhbHVlID49IDB4RDgwMCAmJiB2YWx1ZSA8PSAweERCRkYgJiYgY291bnRlciA8IGxlbmd0aCkge1xuXHRcdFx0XHQvLyBoaWdoIHN1cnJvZ2F0ZSwgYW5kIHRoZXJlIGlzIGEgbmV4dCBjaGFyYWN0ZXJcblx0XHRcdFx0ZXh0cmEgPSBzdHJpbmcuY2hhckNvZGVBdChjb3VudGVyKyspO1xuXHRcdFx0XHRpZiAoKGV4dHJhICYgMHhGQzAwKSA9PSAweERDMDApIHsgLy8gbG93IHN1cnJvZ2F0ZVxuXHRcdFx0XHRcdG91dHB1dC5wdXNoKCgodmFsdWUgJiAweDNGRikgPDwgMTApICsgKGV4dHJhICYgMHgzRkYpICsgMHgxMDAwMCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gdW5tYXRjaGVkIHN1cnJvZ2F0ZTsgb25seSBhcHBlbmQgdGhpcyBjb2RlIHVuaXQsIGluIGNhc2UgdGhlIG5leHRcblx0XHRcdFx0XHQvLyBjb2RlIHVuaXQgaXMgdGhlIGhpZ2ggc3Vycm9nYXRlIG9mIGEgc3Vycm9nYXRlIHBhaXJcblx0XHRcdFx0XHRvdXRwdXQucHVzaCh2YWx1ZSk7XG5cdFx0XHRcdFx0Y291bnRlci0tO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRvdXRwdXQucHVzaCh2YWx1ZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBvdXRwdXQ7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIHN0cmluZyBiYXNlZCBvbiBhbiBhcnJheSBvZiBudW1lcmljIGNvZGUgcG9pbnRzLlxuXHQgKiBAc2VlIGBwdW55Y29kZS51Y3MyLmRlY29kZWBcblx0ICogQG1lbWJlck9mIHB1bnljb2RlLnVjczJcblx0ICogQG5hbWUgZW5jb2RlXG5cdCAqIEBwYXJhbSB7QXJyYXl9IGNvZGVQb2ludHMgVGhlIGFycmF5IG9mIG51bWVyaWMgY29kZSBwb2ludHMuXG5cdCAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBuZXcgVW5pY29kZSBzdHJpbmcgKFVDUy0yKS5cblx0ICovXG5cdGZ1bmN0aW9uIHVjczJlbmNvZGUoYXJyYXkpIHtcblx0XHRyZXR1cm4gbWFwKGFycmF5LCBmdW5jdGlvbih2YWx1ZSkge1xuXHRcdFx0dmFyIG91dHB1dCA9ICcnO1xuXHRcdFx0aWYgKHZhbHVlID4gMHhGRkZGKSB7XG5cdFx0XHRcdHZhbHVlIC09IDB4MTAwMDA7XG5cdFx0XHRcdG91dHB1dCArPSBzdHJpbmdGcm9tQ2hhckNvZGUodmFsdWUgPj4+IDEwICYgMHgzRkYgfCAweEQ4MDApO1xuXHRcdFx0XHR2YWx1ZSA9IDB4REMwMCB8IHZhbHVlICYgMHgzRkY7XG5cdFx0XHR9XG5cdFx0XHRvdXRwdXQgKz0gc3RyaW5nRnJvbUNoYXJDb2RlKHZhbHVlKTtcblx0XHRcdHJldHVybiBvdXRwdXQ7XG5cdFx0fSkuam9pbignJyk7XG5cdH1cblxuXHQvKipcblx0ICogQ29udmVydHMgYSBiYXNpYyBjb2RlIHBvaW50IGludG8gYSBkaWdpdC9pbnRlZ2VyLlxuXHQgKiBAc2VlIGBkaWdpdFRvQmFzaWMoKWBcblx0ICogQHByaXZhdGVcblx0ICogQHBhcmFtIHtOdW1iZXJ9IGNvZGVQb2ludCBUaGUgYmFzaWMgbnVtZXJpYyBjb2RlIHBvaW50IHZhbHVlLlxuXHQgKiBAcmV0dXJucyB7TnVtYmVyfSBUaGUgbnVtZXJpYyB2YWx1ZSBvZiBhIGJhc2ljIGNvZGUgcG9pbnQgKGZvciB1c2UgaW5cblx0ICogcmVwcmVzZW50aW5nIGludGVnZXJzKSBpbiB0aGUgcmFuZ2UgYDBgIHRvIGBiYXNlIC0gMWAsIG9yIGBiYXNlYCBpZlxuXHQgKiB0aGUgY29kZSBwb2ludCBkb2VzIG5vdCByZXByZXNlbnQgYSB2YWx1ZS5cblx0ICovXG5cdGZ1bmN0aW9uIGJhc2ljVG9EaWdpdChjb2RlUG9pbnQpIHtcblx0XHRpZiAoY29kZVBvaW50IC0gNDggPCAxMCkge1xuXHRcdFx0cmV0dXJuIGNvZGVQb2ludCAtIDIyO1xuXHRcdH1cblx0XHRpZiAoY29kZVBvaW50IC0gNjUgPCAyNikge1xuXHRcdFx0cmV0dXJuIGNvZGVQb2ludCAtIDY1O1xuXHRcdH1cblx0XHRpZiAoY29kZVBvaW50IC0gOTcgPCAyNikge1xuXHRcdFx0cmV0dXJuIGNvZGVQb2ludCAtIDk3O1xuXHRcdH1cblx0XHRyZXR1cm4gYmFzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb252ZXJ0cyBhIGRpZ2l0L2ludGVnZXIgaW50byBhIGJhc2ljIGNvZGUgcG9pbnQuXG5cdCAqIEBzZWUgYGJhc2ljVG9EaWdpdCgpYFxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAcGFyYW0ge051bWJlcn0gZGlnaXQgVGhlIG51bWVyaWMgdmFsdWUgb2YgYSBiYXNpYyBjb2RlIHBvaW50LlxuXHQgKiBAcmV0dXJucyB7TnVtYmVyfSBUaGUgYmFzaWMgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSAod2hlbiB1c2VkIGZvclxuXHQgKiByZXByZXNlbnRpbmcgaW50ZWdlcnMpIGlzIGBkaWdpdGAsIHdoaWNoIG5lZWRzIHRvIGJlIGluIHRoZSByYW5nZVxuXHQgKiBgMGAgdG8gYGJhc2UgLSAxYC4gSWYgYGZsYWdgIGlzIG5vbi16ZXJvLCB0aGUgdXBwZXJjYXNlIGZvcm0gaXNcblx0ICogdXNlZDsgZWxzZSwgdGhlIGxvd2VyY2FzZSBmb3JtIGlzIHVzZWQuIFRoZSBiZWhhdmlvciBpcyB1bmRlZmluZWRcblx0ICogaWYgYGZsYWdgIGlzIG5vbi16ZXJvIGFuZCBgZGlnaXRgIGhhcyBubyB1cHBlcmNhc2UgZm9ybS5cblx0ICovXG5cdGZ1bmN0aW9uIGRpZ2l0VG9CYXNpYyhkaWdpdCwgZmxhZykge1xuXHRcdC8vICAwLi4yNSBtYXAgdG8gQVNDSUkgYS4ueiBvciBBLi5aXG5cdFx0Ly8gMjYuLjM1IG1hcCB0byBBU0NJSSAwLi45XG5cdFx0cmV0dXJuIGRpZ2l0ICsgMjIgKyA3NSAqIChkaWdpdCA8IDI2KSAtICgoZmxhZyAhPSAwKSA8PCA1KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCaWFzIGFkYXB0YXRpb24gZnVuY3Rpb24gYXMgcGVyIHNlY3Rpb24gMy40IG9mIFJGQyAzNDkyLlxuXHQgKiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzQ5MiNzZWN0aW9uLTMuNFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0ZnVuY3Rpb24gYWRhcHQoZGVsdGEsIG51bVBvaW50cywgZmlyc3RUaW1lKSB7XG5cdFx0dmFyIGsgPSAwO1xuXHRcdGRlbHRhID0gZmlyc3RUaW1lID8gZmxvb3IoZGVsdGEgLyBkYW1wKSA6IGRlbHRhID4+IDE7XG5cdFx0ZGVsdGEgKz0gZmxvb3IoZGVsdGEgLyBudW1Qb2ludHMpO1xuXHRcdGZvciAoLyogbm8gaW5pdGlhbGl6YXRpb24gKi87IGRlbHRhID4gYmFzZU1pbnVzVE1pbiAqIHRNYXggPj4gMTsgayArPSBiYXNlKSB7XG5cdFx0XHRkZWx0YSA9IGZsb29yKGRlbHRhIC8gYmFzZU1pbnVzVE1pbik7XG5cdFx0fVxuXHRcdHJldHVybiBmbG9vcihrICsgKGJhc2VNaW51c1RNaW4gKyAxKSAqIGRlbHRhIC8gKGRlbHRhICsgc2tldykpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnZlcnRzIGEgUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scyB0byBhIHN0cmluZyBvZiBVbmljb2RlXG5cdCAqIHN5bWJvbHMuXG5cdCAqIEBtZW1iZXJPZiBwdW55Y29kZVxuXHQgKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG5cdCAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSByZXN1bHRpbmcgc3RyaW5nIG9mIFVuaWNvZGUgc3ltYm9scy5cblx0ICovXG5cdGZ1bmN0aW9uIGRlY29kZShpbnB1dCkge1xuXHRcdC8vIERvbid0IHVzZSBVQ1MtMlxuXHRcdHZhciBvdXRwdXQgPSBbXSxcblx0XHQgICAgaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGgsXG5cdFx0ICAgIG91dCxcblx0XHQgICAgaSA9IDAsXG5cdFx0ICAgIG4gPSBpbml0aWFsTixcblx0XHQgICAgYmlhcyA9IGluaXRpYWxCaWFzLFxuXHRcdCAgICBiYXNpYyxcblx0XHQgICAgaixcblx0XHQgICAgaW5kZXgsXG5cdFx0ICAgIG9sZGksXG5cdFx0ICAgIHcsXG5cdFx0ICAgIGssXG5cdFx0ICAgIGRpZ2l0LFxuXHRcdCAgICB0LFxuXHRcdCAgICAvKiogQ2FjaGVkIGNhbGN1bGF0aW9uIHJlc3VsdHMgKi9cblx0XHQgICAgYmFzZU1pbnVzVDtcblxuXHRcdC8vIEhhbmRsZSB0aGUgYmFzaWMgY29kZSBwb2ludHM6IGxldCBgYmFzaWNgIGJlIHRoZSBudW1iZXIgb2YgaW5wdXQgY29kZVxuXHRcdC8vIHBvaW50cyBiZWZvcmUgdGhlIGxhc3QgZGVsaW1pdGVyLCBvciBgMGAgaWYgdGhlcmUgaXMgbm9uZSwgdGhlbiBjb3B5XG5cdFx0Ly8gdGhlIGZpcnN0IGJhc2ljIGNvZGUgcG9pbnRzIHRvIHRoZSBvdXRwdXQuXG5cblx0XHRiYXNpYyA9IGlucHV0Lmxhc3RJbmRleE9mKGRlbGltaXRlcik7XG5cdFx0aWYgKGJhc2ljIDwgMCkge1xuXHRcdFx0YmFzaWMgPSAwO1xuXHRcdH1cblxuXHRcdGZvciAoaiA9IDA7IGogPCBiYXNpYzsgKytqKSB7XG5cdFx0XHQvLyBpZiBpdCdzIG5vdCBhIGJhc2ljIGNvZGUgcG9pbnRcblx0XHRcdGlmIChpbnB1dC5jaGFyQ29kZUF0KGopID49IDB4ODApIHtcblx0XHRcdFx0ZXJyb3IoJ25vdC1iYXNpYycpO1xuXHRcdFx0fVxuXHRcdFx0b3V0cHV0LnB1c2goaW5wdXQuY2hhckNvZGVBdChqKSk7XG5cdFx0fVxuXG5cdFx0Ly8gTWFpbiBkZWNvZGluZyBsb29wOiBzdGFydCBqdXN0IGFmdGVyIHRoZSBsYXN0IGRlbGltaXRlciBpZiBhbnkgYmFzaWMgY29kZVxuXHRcdC8vIHBvaW50cyB3ZXJlIGNvcGllZDsgc3RhcnQgYXQgdGhlIGJlZ2lubmluZyBvdGhlcndpc2UuXG5cblx0XHRmb3IgKGluZGV4ID0gYmFzaWMgPiAwID8gYmFzaWMgKyAxIDogMDsgaW5kZXggPCBpbnB1dExlbmd0aDsgLyogbm8gZmluYWwgZXhwcmVzc2lvbiAqLykge1xuXG5cdFx0XHQvLyBgaW5kZXhgIGlzIHRoZSBpbmRleCBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIgdG8gYmUgY29uc3VtZWQuXG5cdFx0XHQvLyBEZWNvZGUgYSBnZW5lcmFsaXplZCB2YXJpYWJsZS1sZW5ndGggaW50ZWdlciBpbnRvIGBkZWx0YWAsXG5cdFx0XHQvLyB3aGljaCBnZXRzIGFkZGVkIHRvIGBpYC4gVGhlIG92ZXJmbG93IGNoZWNraW5nIGlzIGVhc2llclxuXHRcdFx0Ly8gaWYgd2UgaW5jcmVhc2UgYGlgIGFzIHdlIGdvLCB0aGVuIHN1YnRyYWN0IG9mZiBpdHMgc3RhcnRpbmdcblx0XHRcdC8vIHZhbHVlIGF0IHRoZSBlbmQgdG8gb2J0YWluIGBkZWx0YWAuXG5cdFx0XHRmb3IgKG9sZGkgPSBpLCB3ID0gMSwgayA9IGJhc2U7IC8qIG5vIGNvbmRpdGlvbiAqLzsgayArPSBiYXNlKSB7XG5cblx0XHRcdFx0aWYgKGluZGV4ID49IGlucHV0TGVuZ3RoKSB7XG5cdFx0XHRcdFx0ZXJyb3IoJ2ludmFsaWQtaW5wdXQnKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGRpZ2l0ID0gYmFzaWNUb0RpZ2l0KGlucHV0LmNoYXJDb2RlQXQoaW5kZXgrKykpO1xuXG5cdFx0XHRcdGlmIChkaWdpdCA+PSBiYXNlIHx8IGRpZ2l0ID4gZmxvb3IoKG1heEludCAtIGkpIC8gdykpIHtcblx0XHRcdFx0XHRlcnJvcignb3ZlcmZsb3cnKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGkgKz0gZGlnaXQgKiB3O1xuXHRcdFx0XHR0ID0gayA8PSBiaWFzID8gdE1pbiA6IChrID49IGJpYXMgKyB0TWF4ID8gdE1heCA6IGsgLSBiaWFzKTtcblxuXHRcdFx0XHRpZiAoZGlnaXQgPCB0KSB7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRiYXNlTWludXNUID0gYmFzZSAtIHQ7XG5cdFx0XHRcdGlmICh3ID4gZmxvb3IobWF4SW50IC8gYmFzZU1pbnVzVCkpIHtcblx0XHRcdFx0XHRlcnJvcignb3ZlcmZsb3cnKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHcgKj0gYmFzZU1pbnVzVDtcblxuXHRcdFx0fVxuXG5cdFx0XHRvdXQgPSBvdXRwdXQubGVuZ3RoICsgMTtcblx0XHRcdGJpYXMgPSBhZGFwdChpIC0gb2xkaSwgb3V0LCBvbGRpID09IDApO1xuXG5cdFx0XHQvLyBgaWAgd2FzIHN1cHBvc2VkIHRvIHdyYXAgYXJvdW5kIGZyb20gYG91dGAgdG8gYDBgLFxuXHRcdFx0Ly8gaW5jcmVtZW50aW5nIGBuYCBlYWNoIHRpbWUsIHNvIHdlJ2xsIGZpeCB0aGF0IG5vdzpcblx0XHRcdGlmIChmbG9vcihpIC8gb3V0KSA+IG1heEludCAtIG4pIHtcblx0XHRcdFx0ZXJyb3IoJ292ZXJmbG93Jyk7XG5cdFx0XHR9XG5cblx0XHRcdG4gKz0gZmxvb3IoaSAvIG91dCk7XG5cdFx0XHRpICU9IG91dDtcblxuXHRcdFx0Ly8gSW5zZXJ0IGBuYCBhdCBwb3NpdGlvbiBgaWAgb2YgdGhlIG91dHB1dFxuXHRcdFx0b3V0cHV0LnNwbGljZShpKyssIDAsIG4pO1xuXG5cdFx0fVxuXG5cdFx0cmV0dXJuIHVjczJlbmNvZGUob3V0cHV0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb252ZXJ0cyBhIHN0cmluZyBvZiBVbmljb2RlIHN5bWJvbHMgKGUuZy4gYSBkb21haW4gbmFtZSBsYWJlbCkgdG8gYVxuXHQgKiBQdW55Y29kZSBzdHJpbmcgb2YgQVNDSUktb25seSBzeW1ib2xzLlxuXHQgKiBAbWVtYmVyT2YgcHVueWNvZGVcblx0ICogQHBhcmFtIHtTdHJpbmd9IGlucHV0IFRoZSBzdHJpbmcgb2YgVW5pY29kZSBzeW1ib2xzLlxuXHQgKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgcmVzdWx0aW5nIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG5cdCAqL1xuXHRmdW5jdGlvbiBlbmNvZGUoaW5wdXQpIHtcblx0XHR2YXIgbixcblx0XHQgICAgZGVsdGEsXG5cdFx0ICAgIGhhbmRsZWRDUENvdW50LFxuXHRcdCAgICBiYXNpY0xlbmd0aCxcblx0XHQgICAgYmlhcyxcblx0XHQgICAgaixcblx0XHQgICAgbSxcblx0XHQgICAgcSxcblx0XHQgICAgayxcblx0XHQgICAgdCxcblx0XHQgICAgY3VycmVudFZhbHVlLFxuXHRcdCAgICBvdXRwdXQgPSBbXSxcblx0XHQgICAgLyoqIGBpbnB1dExlbmd0aGAgd2lsbCBob2xkIHRoZSBudW1iZXIgb2YgY29kZSBwb2ludHMgaW4gYGlucHV0YC4gKi9cblx0XHQgICAgaW5wdXRMZW5ndGgsXG5cdFx0ICAgIC8qKiBDYWNoZWQgY2FsY3VsYXRpb24gcmVzdWx0cyAqL1xuXHRcdCAgICBoYW5kbGVkQ1BDb3VudFBsdXNPbmUsXG5cdFx0ICAgIGJhc2VNaW51c1QsXG5cdFx0ICAgIHFNaW51c1Q7XG5cblx0XHQvLyBDb252ZXJ0IHRoZSBpbnB1dCBpbiBVQ1MtMiB0byBVbmljb2RlXG5cdFx0aW5wdXQgPSB1Y3MyZGVjb2RlKGlucHV0KTtcblxuXHRcdC8vIENhY2hlIHRoZSBsZW5ndGhcblx0XHRpbnB1dExlbmd0aCA9IGlucHV0Lmxlbmd0aDtcblxuXHRcdC8vIEluaXRpYWxpemUgdGhlIHN0YXRlXG5cdFx0biA9IGluaXRpYWxOO1xuXHRcdGRlbHRhID0gMDtcblx0XHRiaWFzID0gaW5pdGlhbEJpYXM7XG5cblx0XHQvLyBIYW5kbGUgdGhlIGJhc2ljIGNvZGUgcG9pbnRzXG5cdFx0Zm9yIChqID0gMDsgaiA8IGlucHV0TGVuZ3RoOyArK2opIHtcblx0XHRcdGN1cnJlbnRWYWx1ZSA9IGlucHV0W2pdO1xuXHRcdFx0aWYgKGN1cnJlbnRWYWx1ZSA8IDB4ODApIHtcblx0XHRcdFx0b3V0cHV0LnB1c2goc3RyaW5nRnJvbUNoYXJDb2RlKGN1cnJlbnRWYWx1ZSkpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGhhbmRsZWRDUENvdW50ID0gYmFzaWNMZW5ndGggPSBvdXRwdXQubGVuZ3RoO1xuXG5cdFx0Ly8gYGhhbmRsZWRDUENvdW50YCBpcyB0aGUgbnVtYmVyIG9mIGNvZGUgcG9pbnRzIHRoYXQgaGF2ZSBiZWVuIGhhbmRsZWQ7XG5cdFx0Ly8gYGJhc2ljTGVuZ3RoYCBpcyB0aGUgbnVtYmVyIG9mIGJhc2ljIGNvZGUgcG9pbnRzLlxuXG5cdFx0Ly8gRmluaXNoIHRoZSBiYXNpYyBzdHJpbmcgLSBpZiBpdCBpcyBub3QgZW1wdHkgLSB3aXRoIGEgZGVsaW1pdGVyXG5cdFx0aWYgKGJhc2ljTGVuZ3RoKSB7XG5cdFx0XHRvdXRwdXQucHVzaChkZWxpbWl0ZXIpO1xuXHRcdH1cblxuXHRcdC8vIE1haW4gZW5jb2RpbmcgbG9vcDpcblx0XHR3aGlsZSAoaGFuZGxlZENQQ291bnQgPCBpbnB1dExlbmd0aCkge1xuXG5cdFx0XHQvLyBBbGwgbm9uLWJhc2ljIGNvZGUgcG9pbnRzIDwgbiBoYXZlIGJlZW4gaGFuZGxlZCBhbHJlYWR5LiBGaW5kIHRoZSBuZXh0XG5cdFx0XHQvLyBsYXJnZXIgb25lOlxuXHRcdFx0Zm9yIChtID0gbWF4SW50LCBqID0gMDsgaiA8IGlucHV0TGVuZ3RoOyArK2opIHtcblx0XHRcdFx0Y3VycmVudFZhbHVlID0gaW5wdXRbal07XG5cdFx0XHRcdGlmIChjdXJyZW50VmFsdWUgPj0gbiAmJiBjdXJyZW50VmFsdWUgPCBtKSB7XG5cdFx0XHRcdFx0bSA9IGN1cnJlbnRWYWx1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBJbmNyZWFzZSBgZGVsdGFgIGVub3VnaCB0byBhZHZhbmNlIHRoZSBkZWNvZGVyJ3MgPG4saT4gc3RhdGUgdG8gPG0sMD4sXG5cdFx0XHQvLyBidXQgZ3VhcmQgYWdhaW5zdCBvdmVyZmxvd1xuXHRcdFx0aGFuZGxlZENQQ291bnRQbHVzT25lID0gaGFuZGxlZENQQ291bnQgKyAxO1xuXHRcdFx0aWYgKG0gLSBuID4gZmxvb3IoKG1heEludCAtIGRlbHRhKSAvIGhhbmRsZWRDUENvdW50UGx1c09uZSkpIHtcblx0XHRcdFx0ZXJyb3IoJ292ZXJmbG93Jyk7XG5cdFx0XHR9XG5cblx0XHRcdGRlbHRhICs9IChtIC0gbikgKiBoYW5kbGVkQ1BDb3VudFBsdXNPbmU7XG5cdFx0XHRuID0gbTtcblxuXHRcdFx0Zm9yIChqID0gMDsgaiA8IGlucHV0TGVuZ3RoOyArK2opIHtcblx0XHRcdFx0Y3VycmVudFZhbHVlID0gaW5wdXRbal07XG5cblx0XHRcdFx0aWYgKGN1cnJlbnRWYWx1ZSA8IG4gJiYgKytkZWx0YSA+IG1heEludCkge1xuXHRcdFx0XHRcdGVycm9yKCdvdmVyZmxvdycpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGN1cnJlbnRWYWx1ZSA9PSBuKSB7XG5cdFx0XHRcdFx0Ly8gUmVwcmVzZW50IGRlbHRhIGFzIGEgZ2VuZXJhbGl6ZWQgdmFyaWFibGUtbGVuZ3RoIGludGVnZXJcblx0XHRcdFx0XHRmb3IgKHEgPSBkZWx0YSwgayA9IGJhc2U7IC8qIG5vIGNvbmRpdGlvbiAqLzsgayArPSBiYXNlKSB7XG5cdFx0XHRcdFx0XHR0ID0gayA8PSBiaWFzID8gdE1pbiA6IChrID49IGJpYXMgKyB0TWF4ID8gdE1heCA6IGsgLSBiaWFzKTtcblx0XHRcdFx0XHRcdGlmIChxIDwgdCkge1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHFNaW51c1QgPSBxIC0gdDtcblx0XHRcdFx0XHRcdGJhc2VNaW51c1QgPSBiYXNlIC0gdDtcblx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKFxuXHRcdFx0XHRcdFx0XHRzdHJpbmdGcm9tQ2hhckNvZGUoZGlnaXRUb0Jhc2ljKHQgKyBxTWludXNUICUgYmFzZU1pbnVzVCwgMCkpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0cSA9IGZsb29yKHFNaW51c1QgLyBiYXNlTWludXNUKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRvdXRwdXQucHVzaChzdHJpbmdGcm9tQ2hhckNvZGUoZGlnaXRUb0Jhc2ljKHEsIDApKSk7XG5cdFx0XHRcdFx0YmlhcyA9IGFkYXB0KGRlbHRhLCBoYW5kbGVkQ1BDb3VudFBsdXNPbmUsIGhhbmRsZWRDUENvdW50ID09IGJhc2ljTGVuZ3RoKTtcblx0XHRcdFx0XHRkZWx0YSA9IDA7XG5cdFx0XHRcdFx0KytoYW5kbGVkQ1BDb3VudDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQrK2RlbHRhO1xuXHRcdFx0KytuO1xuXG5cdFx0fVxuXHRcdHJldHVybiBvdXRwdXQuam9pbignJyk7XG5cdH1cblxuXHQvKipcblx0ICogQ29udmVydHMgYSBQdW55Y29kZSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZG9tYWluIG5hbWUgb3IgYW4gZW1haWwgYWRkcmVzc1xuXHQgKiB0byBVbmljb2RlLiBPbmx5IHRoZSBQdW55Y29kZWQgcGFydHMgb2YgdGhlIGlucHV0IHdpbGwgYmUgY29udmVydGVkLCBpLmUuXG5cdCAqIGl0IGRvZXNuJ3QgbWF0dGVyIGlmIHlvdSBjYWxsIGl0IG9uIGEgc3RyaW5nIHRoYXQgaGFzIGFscmVhZHkgYmVlblxuXHQgKiBjb252ZXJ0ZWQgdG8gVW5pY29kZS5cblx0ICogQG1lbWJlck9mIHB1bnljb2RlXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBpbnB1dCBUaGUgUHVueWNvZGVkIGRvbWFpbiBuYW1lIG9yIGVtYWlsIGFkZHJlc3MgdG9cblx0ICogY29udmVydCB0byBVbmljb2RlLlxuXHQgKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgVW5pY29kZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gUHVueWNvZGVcblx0ICogc3RyaW5nLlxuXHQgKi9cblx0ZnVuY3Rpb24gdG9Vbmljb2RlKGlucHV0KSB7XG5cdFx0cmV0dXJuIG1hcERvbWFpbihpbnB1dCwgZnVuY3Rpb24oc3RyaW5nKSB7XG5cdFx0XHRyZXR1cm4gcmVnZXhQdW55Y29kZS50ZXN0KHN0cmluZylcblx0XHRcdFx0PyBkZWNvZGUoc3RyaW5nLnNsaWNlKDQpLnRvTG93ZXJDYXNlKCkpXG5cdFx0XHRcdDogc3RyaW5nO1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnZlcnRzIGEgVW5pY29kZSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZG9tYWluIG5hbWUgb3IgYW4gZW1haWwgYWRkcmVzcyB0b1xuXHQgKiBQdW55Y29kZS4gT25seSB0aGUgbm9uLUFTQ0lJIHBhcnRzIG9mIHRoZSBkb21haW4gbmFtZSB3aWxsIGJlIGNvbnZlcnRlZCxcblx0ICogaS5lLiBpdCBkb2Vzbid0IG1hdHRlciBpZiB5b3UgY2FsbCBpdCB3aXRoIGEgZG9tYWluIHRoYXQncyBhbHJlYWR5IGluXG5cdCAqIEFTQ0lJLlxuXHQgKiBAbWVtYmVyT2YgcHVueWNvZGVcblx0ICogQHBhcmFtIHtTdHJpbmd9IGlucHV0IFRoZSBkb21haW4gbmFtZSBvciBlbWFpbCBhZGRyZXNzIHRvIGNvbnZlcnQsIGFzIGFcblx0ICogVW5pY29kZSBzdHJpbmcuXG5cdCAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBQdW55Y29kZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gZG9tYWluIG5hbWUgb3Jcblx0ICogZW1haWwgYWRkcmVzcy5cblx0ICovXG5cdGZ1bmN0aW9uIHRvQVNDSUkoaW5wdXQpIHtcblx0XHRyZXR1cm4gbWFwRG9tYWluKGlucHV0LCBmdW5jdGlvbihzdHJpbmcpIHtcblx0XHRcdHJldHVybiByZWdleE5vbkFTQ0lJLnRlc3Qoc3RyaW5nKVxuXHRcdFx0XHQ/ICd4bi0tJyArIGVuY29kZShzdHJpbmcpXG5cdFx0XHRcdDogc3RyaW5nO1xuXHRcdH0pO1xuXHR9XG5cblx0LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cblx0LyoqIERlZmluZSB0aGUgcHVibGljIEFQSSAqL1xuXHRwdW55Y29kZSA9IHtcblx0XHQvKipcblx0XHQgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgUHVueWNvZGUuanMgdmVyc2lvbiBudW1iZXIuXG5cdFx0ICogQG1lbWJlck9mIHB1bnljb2RlXG5cdFx0ICogQHR5cGUgU3RyaW5nXG5cdFx0ICovXG5cdFx0J3ZlcnNpb24nOiAnMS40LjEnLFxuXHRcdC8qKlxuXHRcdCAqIEFuIG9iamVjdCBvZiBtZXRob2RzIHRvIGNvbnZlcnQgZnJvbSBKYXZhU2NyaXB0J3MgaW50ZXJuYWwgY2hhcmFjdGVyXG5cdFx0ICogcmVwcmVzZW50YXRpb24gKFVDUy0yKSB0byBVbmljb2RlIGNvZGUgcG9pbnRzLCBhbmQgYmFjay5cblx0XHQgKiBAc2VlIDxodHRwczovL21hdGhpYXNieW5lbnMuYmUvbm90ZXMvamF2YXNjcmlwdC1lbmNvZGluZz5cblx0XHQgKiBAbWVtYmVyT2YgcHVueWNvZGVcblx0XHQgKiBAdHlwZSBPYmplY3Rcblx0XHQgKi9cblx0XHQndWNzMic6IHtcblx0XHRcdCdkZWNvZGUnOiB1Y3MyZGVjb2RlLFxuXHRcdFx0J2VuY29kZSc6IHVjczJlbmNvZGVcblx0XHR9LFxuXHRcdCdkZWNvZGUnOiBkZWNvZGUsXG5cdFx0J2VuY29kZSc6IGVuY29kZSxcblx0XHQndG9BU0NJSSc6IHRvQVNDSUksXG5cdFx0J3RvVW5pY29kZSc6IHRvVW5pY29kZVxuXHR9O1xuXG5cdC8qKiBFeHBvc2UgYHB1bnljb2RlYCAqL1xuXHQvLyBTb21lIEFNRCBidWlsZCBvcHRpbWl6ZXJzLCBsaWtlIHIuanMsIGNoZWNrIGZvciBzcGVjaWZpYyBjb25kaXRpb24gcGF0dGVybnNcblx0Ly8gbGlrZSB0aGUgZm9sbG93aW5nOlxuXHRpZiAoXG5cdFx0dHlwZW9mIGRlZmluZSA9PSAnZnVuY3Rpb24nICYmXG5cdFx0dHlwZW9mIGRlZmluZS5hbWQgPT0gJ29iamVjdCcgJiZcblx0XHRkZWZpbmUuYW1kXG5cdCkge1xuXHRcdGRlZmluZSgncHVueWNvZGUnLCBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiBwdW55Y29kZTtcblx0XHR9KTtcblx0fSBlbHNlIGlmIChmcmVlRXhwb3J0cyAmJiBmcmVlTW9kdWxlKSB7XG5cdFx0aWYgKG1vZHVsZS5leHBvcnRzID09IGZyZWVFeHBvcnRzKSB7XG5cdFx0XHQvLyBpbiBOb2RlLmpzLCBpby5qcywgb3IgUmluZ29KUyB2MC44LjArXG5cdFx0XHRmcmVlTW9kdWxlLmV4cG9ydHMgPSBwdW55Y29kZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gaW4gTmFyd2hhbCBvciBSaW5nb0pTIHYwLjcuMC1cblx0XHRcdGZvciAoa2V5IGluIHB1bnljb2RlKSB7XG5cdFx0XHRcdHB1bnljb2RlLmhhc093blByb3BlcnR5KGtleSkgJiYgKGZyZWVFeHBvcnRzW2tleV0gPSBwdW55Y29kZVtrZXldKTtcblx0XHRcdH1cblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0Ly8gaW4gUmhpbm8gb3IgYSB3ZWIgYnJvd3NlclxuXHRcdHJvb3QucHVueWNvZGUgPSBwdW55Y29kZTtcblx0fVxuXG59KHRoaXMpKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4vdHlwZScpfSAqL1xubW9kdWxlLmV4cG9ydHMgPSBUeXBlRXJyb3I7XG4iLCJ2YXIgaGFzTWFwID0gdHlwZW9mIE1hcCA9PT0gJ2Z1bmN0aW9uJyAmJiBNYXAucHJvdG90eXBlO1xudmFyIG1hcFNpemVEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciAmJiBoYXNNYXAgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE1hcC5wcm90b3R5cGUsICdzaXplJykgOiBudWxsO1xudmFyIG1hcFNpemUgPSBoYXNNYXAgJiYgbWFwU2l6ZURlc2NyaXB0b3IgJiYgdHlwZW9mIG1hcFNpemVEZXNjcmlwdG9yLmdldCA9PT0gJ2Z1bmN0aW9uJyA/IG1hcFNpemVEZXNjcmlwdG9yLmdldCA6IG51bGw7XG52YXIgbWFwRm9yRWFjaCA9IGhhc01hcCAmJiBNYXAucHJvdG90eXBlLmZvckVhY2g7XG52YXIgaGFzU2V0ID0gdHlwZW9mIFNldCA9PT0gJ2Z1bmN0aW9uJyAmJiBTZXQucHJvdG90eXBlO1xudmFyIHNldFNpemVEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciAmJiBoYXNTZXQgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFNldC5wcm90b3R5cGUsICdzaXplJykgOiBudWxsO1xudmFyIHNldFNpemUgPSBoYXNTZXQgJiYgc2V0U2l6ZURlc2NyaXB0b3IgJiYgdHlwZW9mIHNldFNpemVEZXNjcmlwdG9yLmdldCA9PT0gJ2Z1bmN0aW9uJyA/IHNldFNpemVEZXNjcmlwdG9yLmdldCA6IG51bGw7XG52YXIgc2V0Rm9yRWFjaCA9IGhhc1NldCAmJiBTZXQucHJvdG90eXBlLmZvckVhY2g7XG52YXIgaGFzV2Vha01hcCA9IHR5cGVvZiBXZWFrTWFwID09PSAnZnVuY3Rpb24nICYmIFdlYWtNYXAucHJvdG90eXBlO1xudmFyIHdlYWtNYXBIYXMgPSBoYXNXZWFrTWFwID8gV2Vha01hcC5wcm90b3R5cGUuaGFzIDogbnVsbDtcbnZhciBoYXNXZWFrU2V0ID0gdHlwZW9mIFdlYWtTZXQgPT09ICdmdW5jdGlvbicgJiYgV2Vha1NldC5wcm90b3R5cGU7XG52YXIgd2Vha1NldEhhcyA9IGhhc1dlYWtTZXQgPyBXZWFrU2V0LnByb3RvdHlwZS5oYXMgOiBudWxsO1xudmFyIGhhc1dlYWtSZWYgPSB0eXBlb2YgV2Vha1JlZiA9PT0gJ2Z1bmN0aW9uJyAmJiBXZWFrUmVmLnByb3RvdHlwZTtcbnZhciB3ZWFrUmVmRGVyZWYgPSBoYXNXZWFrUmVmID8gV2Vha1JlZi5wcm90b3R5cGUuZGVyZWYgOiBudWxsO1xudmFyIGJvb2xlYW5WYWx1ZU9mID0gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZjtcbnZhciBvYmplY3RUb1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG52YXIgZnVuY3Rpb25Ub1N0cmluZyA9IEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZztcbnZhciAkbWF0Y2ggPSBTdHJpbmcucHJvdG90eXBlLm1hdGNoO1xudmFyICRzbGljZSA9IFN0cmluZy5wcm90b3R5cGUuc2xpY2U7XG52YXIgJHJlcGxhY2UgPSBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2U7XG52YXIgJHRvVXBwZXJDYXNlID0gU3RyaW5nLnByb3RvdHlwZS50b1VwcGVyQ2FzZTtcbnZhciAkdG9Mb3dlckNhc2UgPSBTdHJpbmcucHJvdG90eXBlLnRvTG93ZXJDYXNlO1xudmFyICR0ZXN0ID0gUmVnRXhwLnByb3RvdHlwZS50ZXN0O1xudmFyICRjb25jYXQgPSBBcnJheS5wcm90b3R5cGUuY29uY2F0O1xudmFyICRqb2luID0gQXJyYXkucHJvdG90eXBlLmpvaW47XG52YXIgJGFyclNsaWNlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlO1xudmFyICRmbG9vciA9IE1hdGguZmxvb3I7XG52YXIgYmlnSW50VmFsdWVPZiA9IHR5cGVvZiBCaWdJbnQgPT09ICdmdW5jdGlvbicgPyBCaWdJbnQucHJvdG90eXBlLnZhbHVlT2YgOiBudWxsO1xudmFyIGdPUFMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIHN5bVRvU3RyaW5nID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSAnc3ltYm9sJyA/IFN5bWJvbC5wcm90b3R5cGUudG9TdHJpbmcgOiBudWxsO1xudmFyIGhhc1NoYW1tZWRTeW1ib2xzID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSAnb2JqZWN0Jztcbi8vIGllLCBgaGFzLXRvc3RyaW5ndGFnL3NoYW1zXG52YXIgdG9TdHJpbmdUYWcgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbC50b1N0cmluZ1RhZyAmJiAodHlwZW9mIFN5bWJvbC50b1N0cmluZ1RhZyA9PT0gaGFzU2hhbW1lZFN5bWJvbHMgPyAnb2JqZWN0JyA6ICdzeW1ib2wnKVxuICAgID8gU3ltYm9sLnRvU3RyaW5nVGFnXG4gICAgOiBudWxsO1xudmFyIGlzRW51bWVyYWJsZSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbnZhciBnUE8gPSAodHlwZW9mIFJlZmxlY3QgPT09ICdmdW5jdGlvbicgPyBSZWZsZWN0LmdldFByb3RvdHlwZU9mIDogT2JqZWN0LmdldFByb3RvdHlwZU9mKSB8fCAoXG4gICAgW10uX19wcm90b19fID09PSBBcnJheS5wcm90b3R5cGUgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1wcm90b1xuICAgICAgICA/IGZ1bmN0aW9uIChPKSB7XG4gICAgICAgICAgICByZXR1cm4gTy5fX3Byb3RvX187IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tcHJvdG9cbiAgICAgICAgfVxuICAgICAgICA6IG51bGxcbik7XG5cbmZ1bmN0aW9uIGFkZE51bWVyaWNTZXBhcmF0b3IobnVtLCBzdHIpIHtcbiAgICBpZiAoXG4gICAgICAgIG51bSA9PT0gSW5maW5pdHlcbiAgICAgICAgfHwgbnVtID09PSAtSW5maW5pdHlcbiAgICAgICAgfHwgbnVtICE9PSBudW1cbiAgICAgICAgfHwgKG51bSAmJiBudW0gPiAtMTAwMCAmJiBudW0gPCAxMDAwKVxuICAgICAgICB8fCAkdGVzdC5jYWxsKC9lLywgc3RyKVxuICAgICkge1xuICAgICAgICByZXR1cm4gc3RyO1xuICAgIH1cbiAgICB2YXIgc2VwUmVnZXggPSAvWzAtOV0oPz0oPzpbMC05XXszfSkrKD8hWzAtOV0pKS9nO1xuICAgIGlmICh0eXBlb2YgbnVtID09PSAnbnVtYmVyJykge1xuICAgICAgICB2YXIgaW50ID0gbnVtIDwgMCA/IC0kZmxvb3IoLW51bSkgOiAkZmxvb3IobnVtKTsgLy8gdHJ1bmMobnVtKVxuICAgICAgICBpZiAoaW50ICE9PSBudW0pIHtcbiAgICAgICAgICAgIHZhciBpbnRTdHIgPSBTdHJpbmcoaW50KTtcbiAgICAgICAgICAgIHZhciBkZWMgPSAkc2xpY2UuY2FsbChzdHIsIGludFN0ci5sZW5ndGggKyAxKTtcbiAgICAgICAgICAgIHJldHVybiAkcmVwbGFjZS5jYWxsKGludFN0ciwgc2VwUmVnZXgsICckJl8nKSArICcuJyArICRyZXBsYWNlLmNhbGwoJHJlcGxhY2UuY2FsbChkZWMsIC8oWzAtOV17M30pL2csICckJl8nKSwgL18kLywgJycpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiAkcmVwbGFjZS5jYWxsKHN0ciwgc2VwUmVnZXgsICckJl8nKTtcbn1cblxudmFyIHV0aWxJbnNwZWN0ID0gcmVxdWlyZSgnLi91dGlsLmluc3BlY3QnKTtcbnZhciBpbnNwZWN0Q3VzdG9tID0gdXRpbEluc3BlY3QuY3VzdG9tO1xudmFyIGluc3BlY3RTeW1ib2wgPSBpc1N5bWJvbChpbnNwZWN0Q3VzdG9tKSA/IGluc3BlY3RDdXN0b20gOiBudWxsO1xuXG52YXIgcXVvdGVzID0ge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICAnZG91YmxlJzogJ1wiJyxcbiAgICBzaW5nbGU6IFwiJ1wiXG59O1xudmFyIHF1b3RlUkVzID0ge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICAnZG91YmxlJzogLyhbXCJcXFxcXSkvZyxcbiAgICBzaW5nbGU6IC8oWydcXFxcXSkvZ1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbnNwZWN0XyhvYmosIG9wdGlvbnMsIGRlcHRoLCBzZWVuKSB7XG4gICAgdmFyIG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgaWYgKGhhcyhvcHRzLCAncXVvdGVTdHlsZScpICYmICFoYXMocXVvdGVzLCBvcHRzLnF1b3RlU3R5bGUpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbiBcInF1b3RlU3R5bGVcIiBtdXN0IGJlIFwic2luZ2xlXCIgb3IgXCJkb3VibGVcIicpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAgIGhhcyhvcHRzLCAnbWF4U3RyaW5nTGVuZ3RoJykgJiYgKHR5cGVvZiBvcHRzLm1heFN0cmluZ0xlbmd0aCA9PT0gJ251bWJlcidcbiAgICAgICAgICAgID8gb3B0cy5tYXhTdHJpbmdMZW5ndGggPCAwICYmIG9wdHMubWF4U3RyaW5nTGVuZ3RoICE9PSBJbmZpbml0eVxuICAgICAgICAgICAgOiBvcHRzLm1heFN0cmluZ0xlbmd0aCAhPT0gbnVsbFxuICAgICAgICApXG4gICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbiBcIm1heFN0cmluZ0xlbmd0aFwiLCBpZiBwcm92aWRlZCwgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIsIEluZmluaXR5LCBvciBgbnVsbGAnKTtcbiAgICB9XG4gICAgdmFyIGN1c3RvbUluc3BlY3QgPSBoYXMob3B0cywgJ2N1c3RvbUluc3BlY3QnKSA/IG9wdHMuY3VzdG9tSW5zcGVjdCA6IHRydWU7XG4gICAgaWYgKHR5cGVvZiBjdXN0b21JbnNwZWN0ICE9PSAnYm9vbGVhbicgJiYgY3VzdG9tSW5zcGVjdCAhPT0gJ3N5bWJvbCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9uIFwiY3VzdG9tSW5zcGVjdFwiLCBpZiBwcm92aWRlZCwgbXVzdCBiZSBgdHJ1ZWAsIGBmYWxzZWAsIG9yIGBcXCdzeW1ib2xcXCdgJyk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgICBoYXMob3B0cywgJ2luZGVudCcpXG4gICAgICAgICYmIG9wdHMuaW5kZW50ICE9PSBudWxsXG4gICAgICAgICYmIG9wdHMuaW5kZW50ICE9PSAnXFx0J1xuICAgICAgICAmJiAhKHBhcnNlSW50KG9wdHMuaW5kZW50LCAxMCkgPT09IG9wdHMuaW5kZW50ICYmIG9wdHMuaW5kZW50ID4gMClcbiAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9uIFwiaW5kZW50XCIgbXVzdCBiZSBcIlxcXFx0XCIsIGFuIGludGVnZXIgPiAwLCBvciBgbnVsbGAnKTtcbiAgICB9XG4gICAgaWYgKGhhcyhvcHRzLCAnbnVtZXJpY1NlcGFyYXRvcicpICYmIHR5cGVvZiBvcHRzLm51bWVyaWNTZXBhcmF0b3IgIT09ICdib29sZWFuJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb24gXCJudW1lcmljU2VwYXJhdG9yXCIsIGlmIHByb3ZpZGVkLCBtdXN0IGJlIGB0cnVlYCBvciBgZmFsc2VgJyk7XG4gICAgfVxuICAgIHZhciBudW1lcmljU2VwYXJhdG9yID0gb3B0cy5udW1lcmljU2VwYXJhdG9yO1xuXG4gICAgaWYgKHR5cGVvZiBvYmogPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiAndW5kZWZpbmVkJztcbiAgICB9XG4gICAgaWYgKG9iaiA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gJ251bGwnO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIHJldHVybiBvYmogPyAndHJ1ZScgOiAnZmFsc2UnO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gaW5zcGVjdFN0cmluZyhvYmosIG9wdHMpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgaWYgKG9iaiA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIEluZmluaXR5IC8gb2JqID4gMCA/ICcwJyA6ICctMCc7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHN0ciA9IFN0cmluZyhvYmopO1xuICAgICAgICByZXR1cm4gbnVtZXJpY1NlcGFyYXRvciA/IGFkZE51bWVyaWNTZXBhcmF0b3Iob2JqLCBzdHIpIDogc3RyO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgdmFyIGJpZ0ludFN0ciA9IFN0cmluZyhvYmopICsgJ24nO1xuICAgICAgICByZXR1cm4gbnVtZXJpY1NlcGFyYXRvciA/IGFkZE51bWVyaWNTZXBhcmF0b3Iob2JqLCBiaWdJbnRTdHIpIDogYmlnSW50U3RyO1xuICAgIH1cblxuICAgIHZhciBtYXhEZXB0aCA9IHR5cGVvZiBvcHRzLmRlcHRoID09PSAndW5kZWZpbmVkJyA/IDUgOiBvcHRzLmRlcHRoO1xuICAgIGlmICh0eXBlb2YgZGVwdGggPT09ICd1bmRlZmluZWQnKSB7IGRlcHRoID0gMDsgfVxuICAgIGlmIChkZXB0aCA+PSBtYXhEZXB0aCAmJiBtYXhEZXB0aCA+IDAgJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIGlzQXJyYXkob2JqKSA/ICdbQXJyYXldJyA6ICdbT2JqZWN0XSc7XG4gICAgfVxuXG4gICAgdmFyIGluZGVudCA9IGdldEluZGVudChvcHRzLCBkZXB0aCk7XG5cbiAgICBpZiAodHlwZW9mIHNlZW4gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHNlZW4gPSBbXTtcbiAgICB9IGVsc2UgaWYgKGluZGV4T2Yoc2Vlbiwgb2JqKSA+PSAwKSB7XG4gICAgICAgIHJldHVybiAnW0NpcmN1bGFyXSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW5zcGVjdCh2YWx1ZSwgZnJvbSwgbm9JbmRlbnQpIHtcbiAgICAgICAgaWYgKGZyb20pIHtcbiAgICAgICAgICAgIHNlZW4gPSAkYXJyU2xpY2UuY2FsbChzZWVuKTtcbiAgICAgICAgICAgIHNlZW4ucHVzaChmcm9tKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9JbmRlbnQpIHtcbiAgICAgICAgICAgIHZhciBuZXdPcHRzID0ge1xuICAgICAgICAgICAgICAgIGRlcHRoOiBvcHRzLmRlcHRoXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKGhhcyhvcHRzLCAncXVvdGVTdHlsZScpKSB7XG4gICAgICAgICAgICAgICAgbmV3T3B0cy5xdW90ZVN0eWxlID0gb3B0cy5xdW90ZVN0eWxlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGluc3BlY3RfKHZhbHVlLCBuZXdPcHRzLCBkZXB0aCArIDEsIHNlZW4pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbnNwZWN0Xyh2YWx1ZSwgb3B0cywgZGVwdGggKyAxLCBzZWVuKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ2Z1bmN0aW9uJyAmJiAhaXNSZWdFeHAob2JqKSkgeyAvLyBpbiBvbGRlciBlbmdpbmVzLCByZWdleGVzIGFyZSBjYWxsYWJsZVxuICAgICAgICB2YXIgbmFtZSA9IG5hbWVPZihvYmopO1xuICAgICAgICB2YXIga2V5cyA9IGFyck9iaktleXMob2JqLCBpbnNwZWN0KTtcbiAgICAgICAgcmV0dXJuICdbRnVuY3Rpb24nICsgKG5hbWUgPyAnOiAnICsgbmFtZSA6ICcgKGFub255bW91cyknKSArICddJyArIChrZXlzLmxlbmd0aCA+IDAgPyAnIHsgJyArICRqb2luLmNhbGwoa2V5cywgJywgJykgKyAnIH0nIDogJycpO1xuICAgIH1cbiAgICBpZiAoaXNTeW1ib2wob2JqKSkge1xuICAgICAgICB2YXIgc3ltU3RyaW5nID0gaGFzU2hhbW1lZFN5bWJvbHMgPyAkcmVwbGFjZS5jYWxsKFN0cmluZyhvYmopLCAvXihTeW1ib2xcXCguKlxcKSlfW14pXSokLywgJyQxJykgOiBzeW1Ub1N0cmluZy5jYWxsKG9iaik7XG4gICAgICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiAhaGFzU2hhbW1lZFN5bWJvbHMgPyBtYXJrQm94ZWQoc3ltU3RyaW5nKSA6IHN5bVN0cmluZztcbiAgICB9XG4gICAgaWYgKGlzRWxlbWVudChvYmopKSB7XG4gICAgICAgIHZhciBzID0gJzwnICsgJHRvTG93ZXJDYXNlLmNhbGwoU3RyaW5nKG9iai5ub2RlTmFtZSkpO1xuICAgICAgICB2YXIgYXR0cnMgPSBvYmouYXR0cmlidXRlcyB8fCBbXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgcyArPSAnICcgKyBhdHRyc1tpXS5uYW1lICsgJz0nICsgd3JhcFF1b3RlcyhxdW90ZShhdHRyc1tpXS52YWx1ZSksICdkb3VibGUnLCBvcHRzKTtcbiAgICAgICAgfVxuICAgICAgICBzICs9ICc+JztcbiAgICAgICAgaWYgKG9iai5jaGlsZE5vZGVzICYmIG9iai5jaGlsZE5vZGVzLmxlbmd0aCkgeyBzICs9ICcuLi4nOyB9XG4gICAgICAgIHMgKz0gJzwvJyArICR0b0xvd2VyQ2FzZS5jYWxsKFN0cmluZyhvYmoubm9kZU5hbWUpKSArICc+JztcbiAgICAgICAgcmV0dXJuIHM7XG4gICAgfVxuICAgIGlmIChpc0FycmF5KG9iaikpIHtcbiAgICAgICAgaWYgKG9iai5sZW5ndGggPT09IDApIHsgcmV0dXJuICdbXSc7IH1cbiAgICAgICAgdmFyIHhzID0gYXJyT2JqS2V5cyhvYmosIGluc3BlY3QpO1xuICAgICAgICBpZiAoaW5kZW50ICYmICFzaW5nbGVMaW5lVmFsdWVzKHhzKSkge1xuICAgICAgICAgICAgcmV0dXJuICdbJyArIGluZGVudGVkSm9pbih4cywgaW5kZW50KSArICddJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJ1sgJyArICRqb2luLmNhbGwoeHMsICcsICcpICsgJyBdJztcbiAgICB9XG4gICAgaWYgKGlzRXJyb3Iob2JqKSkge1xuICAgICAgICB2YXIgcGFydHMgPSBhcnJPYmpLZXlzKG9iaiwgaW5zcGVjdCk7XG4gICAgICAgIGlmICghKCdjYXVzZScgaW4gRXJyb3IucHJvdG90eXBlKSAmJiAnY2F1c2UnIGluIG9iaiAmJiAhaXNFbnVtZXJhYmxlLmNhbGwob2JqLCAnY2F1c2UnKSkge1xuICAgICAgICAgICAgcmV0dXJuICd7IFsnICsgU3RyaW5nKG9iaikgKyAnXSAnICsgJGpvaW4uY2FsbCgkY29uY2F0LmNhbGwoJ1tjYXVzZV06ICcgKyBpbnNwZWN0KG9iai5jYXVzZSksIHBhcnRzKSwgJywgJykgKyAnIH0nO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDApIHsgcmV0dXJuICdbJyArIFN0cmluZyhvYmopICsgJ10nOyB9XG4gICAgICAgIHJldHVybiAneyBbJyArIFN0cmluZyhvYmopICsgJ10gJyArICRqb2luLmNhbGwocGFydHMsICcsICcpICsgJyB9JztcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIGN1c3RvbUluc3BlY3QpIHtcbiAgICAgICAgaWYgKGluc3BlY3RTeW1ib2wgJiYgdHlwZW9mIG9ialtpbnNwZWN0U3ltYm9sXSA9PT0gJ2Z1bmN0aW9uJyAmJiB1dGlsSW5zcGVjdCkge1xuICAgICAgICAgICAgcmV0dXJuIHV0aWxJbnNwZWN0KG9iaiwgeyBkZXB0aDogbWF4RGVwdGggLSBkZXB0aCB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChjdXN0b21JbnNwZWN0ICE9PSAnc3ltYm9sJyAmJiB0eXBlb2Ygb2JqLmluc3BlY3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiBvYmouaW5zcGVjdCgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChpc01hcChvYmopKSB7XG4gICAgICAgIHZhciBtYXBQYXJ0cyA9IFtdO1xuICAgICAgICBpZiAobWFwRm9yRWFjaCkge1xuICAgICAgICAgICAgbWFwRm9yRWFjaC5jYWxsKG9iaiwgZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICAgICAgICAgICAgICBtYXBQYXJ0cy5wdXNoKGluc3BlY3Qoa2V5LCBvYmosIHRydWUpICsgJyA9PiAnICsgaW5zcGVjdCh2YWx1ZSwgb2JqKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29sbGVjdGlvbk9mKCdNYXAnLCBtYXBTaXplLmNhbGwob2JqKSwgbWFwUGFydHMsIGluZGVudCk7XG4gICAgfVxuICAgIGlmIChpc1NldChvYmopKSB7XG4gICAgICAgIHZhciBzZXRQYXJ0cyA9IFtdO1xuICAgICAgICBpZiAoc2V0Rm9yRWFjaCkge1xuICAgICAgICAgICAgc2V0Rm9yRWFjaC5jYWxsKG9iaiwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgc2V0UGFydHMucHVzaChpbnNwZWN0KHZhbHVlLCBvYmopKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uT2YoJ1NldCcsIHNldFNpemUuY2FsbChvYmopLCBzZXRQYXJ0cywgaW5kZW50KTtcbiAgICB9XG4gICAgaWYgKGlzV2Vha01hcChvYmopKSB7XG4gICAgICAgIHJldHVybiB3ZWFrQ29sbGVjdGlvbk9mKCdXZWFrTWFwJyk7XG4gICAgfVxuICAgIGlmIChpc1dlYWtTZXQob2JqKSkge1xuICAgICAgICByZXR1cm4gd2Vha0NvbGxlY3Rpb25PZignV2Vha1NldCcpO1xuICAgIH1cbiAgICBpZiAoaXNXZWFrUmVmKG9iaikpIHtcbiAgICAgICAgcmV0dXJuIHdlYWtDb2xsZWN0aW9uT2YoJ1dlYWtSZWYnKTtcbiAgICB9XG4gICAgaWYgKGlzTnVtYmVyKG9iaikpIHtcbiAgICAgICAgcmV0dXJuIG1hcmtCb3hlZChpbnNwZWN0KE51bWJlcihvYmopKSk7XG4gICAgfVxuICAgIGlmIChpc0JpZ0ludChvYmopKSB7XG4gICAgICAgIHJldHVybiBtYXJrQm94ZWQoaW5zcGVjdChiaWdJbnRWYWx1ZU9mLmNhbGwob2JqKSkpO1xuICAgIH1cbiAgICBpZiAoaXNCb29sZWFuKG9iaikpIHtcbiAgICAgICAgcmV0dXJuIG1hcmtCb3hlZChib29sZWFuVmFsdWVPZi5jYWxsKG9iaikpO1xuICAgIH1cbiAgICBpZiAoaXNTdHJpbmcob2JqKSkge1xuICAgICAgICByZXR1cm4gbWFya0JveGVkKGluc3BlY3QoU3RyaW5nKG9iaikpKTtcbiAgICB9XG4gICAgLy8gbm90ZTogaW4gSUUgOCwgc29tZXRpbWVzIGBnbG9iYWwgIT09IHdpbmRvd2AgYnV0IGJvdGggYXJlIHRoZSBwcm90b3R5cGVzIG9mIGVhY2ggb3RoZXJcbiAgICAvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgb2JqID09PSB3aW5kb3cpIHtcbiAgICAgICAgcmV0dXJuICd7IFtvYmplY3QgV2luZG93XSB9JztcbiAgICB9XG4gICAgaWYgKFxuICAgICAgICAodHlwZW9mIGdsb2JhbFRoaXMgIT09ICd1bmRlZmluZWQnICYmIG9iaiA9PT0gZ2xvYmFsVGhpcylcbiAgICAgICAgfHwgKHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnICYmIG9iaiA9PT0gZ2xvYmFsKVxuICAgICkge1xuICAgICAgICByZXR1cm4gJ3sgW29iamVjdCBnbG9iYWxUaGlzXSB9JztcbiAgICB9XG4gICAgaWYgKCFpc0RhdGUob2JqKSAmJiAhaXNSZWdFeHAob2JqKSkge1xuICAgICAgICB2YXIgeXMgPSBhcnJPYmpLZXlzKG9iaiwgaW5zcGVjdCk7XG4gICAgICAgIHZhciBpc1BsYWluT2JqZWN0ID0gZ1BPID8gZ1BPKG9iaikgPT09IE9iamVjdC5wcm90b3R5cGUgOiBvYmogaW5zdGFuY2VvZiBPYmplY3QgfHwgb2JqLmNvbnN0cnVjdG9yID09PSBPYmplY3Q7XG4gICAgICAgIHZhciBwcm90b1RhZyA9IG9iaiBpbnN0YW5jZW9mIE9iamVjdCA/ICcnIDogJ251bGwgcHJvdG90eXBlJztcbiAgICAgICAgdmFyIHN0cmluZ1RhZyA9ICFpc1BsYWluT2JqZWN0ICYmIHRvU3RyaW5nVGFnICYmIE9iamVjdChvYmopID09PSBvYmogJiYgdG9TdHJpbmdUYWcgaW4gb2JqID8gJHNsaWNlLmNhbGwodG9TdHIob2JqKSwgOCwgLTEpIDogcHJvdG9UYWcgPyAnT2JqZWN0JyA6ICcnO1xuICAgICAgICB2YXIgY29uc3RydWN0b3JUYWcgPSBpc1BsYWluT2JqZWN0IHx8IHR5cGVvZiBvYmouY29uc3RydWN0b3IgIT09ICdmdW5jdGlvbicgPyAnJyA6IG9iai5jb25zdHJ1Y3Rvci5uYW1lID8gb2JqLmNvbnN0cnVjdG9yLm5hbWUgKyAnICcgOiAnJztcbiAgICAgICAgdmFyIHRhZyA9IGNvbnN0cnVjdG9yVGFnICsgKHN0cmluZ1RhZyB8fCBwcm90b1RhZyA/ICdbJyArICRqb2luLmNhbGwoJGNvbmNhdC5jYWxsKFtdLCBzdHJpbmdUYWcgfHwgW10sIHByb3RvVGFnIHx8IFtdKSwgJzogJykgKyAnXSAnIDogJycpO1xuICAgICAgICBpZiAoeXMubGVuZ3RoID09PSAwKSB7IHJldHVybiB0YWcgKyAne30nOyB9XG4gICAgICAgIGlmIChpbmRlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0YWcgKyAneycgKyBpbmRlbnRlZEpvaW4oeXMsIGluZGVudCkgKyAnfSc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRhZyArICd7ICcgKyAkam9pbi5jYWxsKHlzLCAnLCAnKSArICcgfSc7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcob2JqKTtcbn07XG5cbmZ1bmN0aW9uIHdyYXBRdW90ZXMocywgZGVmYXVsdFN0eWxlLCBvcHRzKSB7XG4gICAgdmFyIHN0eWxlID0gb3B0cy5xdW90ZVN0eWxlIHx8IGRlZmF1bHRTdHlsZTtcbiAgICB2YXIgcXVvdGVDaGFyID0gcXVvdGVzW3N0eWxlXTtcbiAgICByZXR1cm4gcXVvdGVDaGFyICsgcyArIHF1b3RlQ2hhcjtcbn1cblxuZnVuY3Rpb24gcXVvdGUocykge1xuICAgIHJldHVybiAkcmVwbGFjZS5jYWxsKFN0cmluZyhzKSwgL1wiL2csICcmcXVvdDsnKTtcbn1cblxuZnVuY3Rpb24gY2FuVHJ1c3RUb1N0cmluZyhvYmopIHtcbiAgICByZXR1cm4gIXRvU3RyaW5nVGFnIHx8ICEodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgJiYgKHRvU3RyaW5nVGFnIGluIG9iaiB8fCB0eXBlb2Ygb2JqW3RvU3RyaW5nVGFnXSAhPT0gJ3VuZGVmaW5lZCcpKTtcbn1cbmZ1bmN0aW9uIGlzQXJyYXkob2JqKSB7IHJldHVybiB0b1N0cihvYmopID09PSAnW29iamVjdCBBcnJheV0nICYmIGNhblRydXN0VG9TdHJpbmcob2JqKTsgfVxuZnVuY3Rpb24gaXNEYXRlKG9iaikgeyByZXR1cm4gdG9TdHIob2JqKSA9PT0gJ1tvYmplY3QgRGF0ZV0nICYmIGNhblRydXN0VG9TdHJpbmcob2JqKTsgfVxuZnVuY3Rpb24gaXNSZWdFeHAob2JqKSB7IHJldHVybiB0b1N0cihvYmopID09PSAnW29iamVjdCBSZWdFeHBdJyAmJiBjYW5UcnVzdFRvU3RyaW5nKG9iaik7IH1cbmZ1bmN0aW9uIGlzRXJyb3Iob2JqKSB7IHJldHVybiB0b1N0cihvYmopID09PSAnW29iamVjdCBFcnJvcl0nICYmIGNhblRydXN0VG9TdHJpbmcob2JqKTsgfVxuZnVuY3Rpb24gaXNTdHJpbmcob2JqKSB7IHJldHVybiB0b1N0cihvYmopID09PSAnW29iamVjdCBTdHJpbmddJyAmJiBjYW5UcnVzdFRvU3RyaW5nKG9iaik7IH1cbmZ1bmN0aW9uIGlzTnVtYmVyKG9iaikgeyByZXR1cm4gdG9TdHIob2JqKSA9PT0gJ1tvYmplY3QgTnVtYmVyXScgJiYgY2FuVHJ1c3RUb1N0cmluZyhvYmopOyB9XG5mdW5jdGlvbiBpc0Jvb2xlYW4ob2JqKSB7IHJldHVybiB0b1N0cihvYmopID09PSAnW29iamVjdCBCb29sZWFuXScgJiYgY2FuVHJ1c3RUb1N0cmluZyhvYmopOyB9XG5cbi8vIFN5bWJvbCBhbmQgQmlnSW50IGRvIGhhdmUgU3ltYm9sLnRvU3RyaW5nVGFnIGJ5IHNwZWMsIHNvIHRoYXQgY2FuJ3QgYmUgdXNlZCB0byBlbGltaW5hdGUgZmFsc2UgcG9zaXRpdmVzXG5mdW5jdGlvbiBpc1N5bWJvbChvYmopIHtcbiAgICBpZiAoaGFzU2hhbW1lZFN5bWJvbHMpIHtcbiAgICAgICAgcmV0dXJuIG9iaiAmJiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogaW5zdGFuY2VvZiBTeW1ib2w7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygb2JqID09PSAnc3ltYm9sJykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKCFvYmogfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHwgIXN5bVRvU3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgc3ltVG9TdHJpbmcuY2FsbChvYmopO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gaXNCaWdJbnQob2JqKSB7XG4gICAgaWYgKCFvYmogfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHwgIWJpZ0ludFZhbHVlT2YpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBiaWdJbnRWYWx1ZU9mLmNhbGwob2JqKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbnZhciBoYXNPd24gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5IHx8IGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuIGtleSBpbiB0aGlzOyB9O1xuZnVuY3Rpb24gaGFzKG9iaiwga2V5KSB7XG4gICAgcmV0dXJuIGhhc093bi5jYWxsKG9iaiwga2V5KTtcbn1cblxuZnVuY3Rpb24gdG9TdHIob2JqKSB7XG4gICAgcmV0dXJuIG9iamVjdFRvU3RyaW5nLmNhbGwob2JqKTtcbn1cblxuZnVuY3Rpb24gbmFtZU9mKGYpIHtcbiAgICBpZiAoZi5uYW1lKSB7IHJldHVybiBmLm5hbWU7IH1cbiAgICB2YXIgbSA9ICRtYXRjaC5jYWxsKGZ1bmN0aW9uVG9TdHJpbmcuY2FsbChmKSwgL15mdW5jdGlvblxccyooW1xcdyRdKykvKTtcbiAgICBpZiAobSkgeyByZXR1cm4gbVsxXTsgfVxuICAgIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBpbmRleE9mKHhzLCB4KSB7XG4gICAgaWYgKHhzLmluZGV4T2YpIHsgcmV0dXJuIHhzLmluZGV4T2YoeCk7IH1cbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IHhzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICBpZiAoeHNbaV0gPT09IHgpIHsgcmV0dXJuIGk7IH1cbiAgICB9XG4gICAgcmV0dXJuIC0xO1xufVxuXG5mdW5jdGlvbiBpc01hcCh4KSB7XG4gICAgaWYgKCFtYXBTaXplIHx8ICF4IHx8IHR5cGVvZiB4ICE9PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIG1hcFNpemUuY2FsbCh4KTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHNldFNpemUuY2FsbCh4KTtcbiAgICAgICAgfSBjYXRjaCAocykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHggaW5zdGFuY2VvZiBNYXA7IC8vIGNvcmUtanMgd29ya2Fyb3VuZCwgcHJlLXYyLjUuMFxuICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBpc1dlYWtNYXAoeCkge1xuICAgIGlmICghd2Vha01hcEhhcyB8fCAheCB8fCB0eXBlb2YgeCAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICB3ZWFrTWFwSGFzLmNhbGwoeCwgd2Vha01hcEhhcyk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB3ZWFrU2V0SGFzLmNhbGwoeCwgd2Vha1NldEhhcyk7XG4gICAgICAgIH0gY2F0Y2ggKHMpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB4IGluc3RhbmNlb2YgV2Vha01hcDsgLy8gY29yZS1qcyB3b3JrYXJvdW5kLCBwcmUtdjIuNS4wXG4gICAgfSBjYXRjaCAoZSkge31cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGlzV2Vha1JlZih4KSB7XG4gICAgaWYgKCF3ZWFrUmVmRGVyZWYgfHwgIXggfHwgdHlwZW9mIHggIT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgd2Vha1JlZkRlcmVmLmNhbGwoeCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBpc1NldCh4KSB7XG4gICAgaWYgKCFzZXRTaXplIHx8ICF4IHx8IHR5cGVvZiB4ICE9PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIHNldFNpemUuY2FsbCh4KTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIG1hcFNpemUuY2FsbCh4KTtcbiAgICAgICAgfSBjYXRjaCAobSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHggaW5zdGFuY2VvZiBTZXQ7IC8vIGNvcmUtanMgd29ya2Fyb3VuZCwgcHJlLXYyLjUuMFxuICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBpc1dlYWtTZXQoeCkge1xuICAgIGlmICghd2Vha1NldEhhcyB8fCAheCB8fCB0eXBlb2YgeCAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICB3ZWFrU2V0SGFzLmNhbGwoeCwgd2Vha1NldEhhcyk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB3ZWFrTWFwSGFzLmNhbGwoeCwgd2Vha01hcEhhcyk7XG4gICAgICAgIH0gY2F0Y2ggKHMpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB4IGluc3RhbmNlb2YgV2Vha1NldDsgLy8gY29yZS1qcyB3b3JrYXJvdW5kLCBwcmUtdjIuNS4wXG4gICAgfSBjYXRjaCAoZSkge31cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGlzRWxlbWVudCh4KSB7XG4gICAgaWYgKCF4IHx8IHR5cGVvZiB4ICE9PSAnb2JqZWN0JykgeyByZXR1cm4gZmFsc2U7IH1cbiAgICBpZiAodHlwZW9mIEhUTUxFbGVtZW50ICE9PSAndW5kZWZpbmVkJyAmJiB4IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiB0eXBlb2YgeC5ub2RlTmFtZSA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIHguZ2V0QXR0cmlidXRlID09PSAnZnVuY3Rpb24nO1xufVxuXG5mdW5jdGlvbiBpbnNwZWN0U3RyaW5nKHN0ciwgb3B0cykge1xuICAgIGlmIChzdHIubGVuZ3RoID4gb3B0cy5tYXhTdHJpbmdMZW5ndGgpIHtcbiAgICAgICAgdmFyIHJlbWFpbmluZyA9IHN0ci5sZW5ndGggLSBvcHRzLm1heFN0cmluZ0xlbmd0aDtcbiAgICAgICAgdmFyIHRyYWlsZXIgPSAnLi4uICcgKyByZW1haW5pbmcgKyAnIG1vcmUgY2hhcmFjdGVyJyArIChyZW1haW5pbmcgPiAxID8gJ3MnIDogJycpO1xuICAgICAgICByZXR1cm4gaW5zcGVjdFN0cmluZygkc2xpY2UuY2FsbChzdHIsIDAsIG9wdHMubWF4U3RyaW5nTGVuZ3RoKSwgb3B0cykgKyB0cmFpbGVyO1xuICAgIH1cbiAgICB2YXIgcXVvdGVSRSA9IHF1b3RlUkVzW29wdHMucXVvdGVTdHlsZSB8fCAnc2luZ2xlJ107XG4gICAgcXVvdGVSRS5sYXN0SW5kZXggPSAwO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb250cm9sLXJlZ2V4XG4gICAgdmFyIHMgPSAkcmVwbGFjZS5jYWxsKCRyZXBsYWNlLmNhbGwoc3RyLCBxdW90ZVJFLCAnXFxcXCQxJyksIC9bXFx4MDAtXFx4MWZdL2csIGxvd2J5dGUpO1xuICAgIHJldHVybiB3cmFwUXVvdGVzKHMsICdzaW5nbGUnLCBvcHRzKTtcbn1cblxuZnVuY3Rpb24gbG93Ynl0ZShjKSB7XG4gICAgdmFyIG4gPSBjLmNoYXJDb2RlQXQoMCk7XG4gICAgdmFyIHggPSB7XG4gICAgICAgIDg6ICdiJyxcbiAgICAgICAgOTogJ3QnLFxuICAgICAgICAxMDogJ24nLFxuICAgICAgICAxMjogJ2YnLFxuICAgICAgICAxMzogJ3InXG4gICAgfVtuXTtcbiAgICBpZiAoeCkgeyByZXR1cm4gJ1xcXFwnICsgeDsgfVxuICAgIHJldHVybiAnXFxcXHgnICsgKG4gPCAweDEwID8gJzAnIDogJycpICsgJHRvVXBwZXJDYXNlLmNhbGwobi50b1N0cmluZygxNikpO1xufVxuXG5mdW5jdGlvbiBtYXJrQm94ZWQoc3RyKSB7XG4gICAgcmV0dXJuICdPYmplY3QoJyArIHN0ciArICcpJztcbn1cblxuZnVuY3Rpb24gd2Vha0NvbGxlY3Rpb25PZih0eXBlKSB7XG4gICAgcmV0dXJuIHR5cGUgKyAnIHsgPyB9Jztcbn1cblxuZnVuY3Rpb24gY29sbGVjdGlvbk9mKHR5cGUsIHNpemUsIGVudHJpZXMsIGluZGVudCkge1xuICAgIHZhciBqb2luZWRFbnRyaWVzID0gaW5kZW50ID8gaW5kZW50ZWRKb2luKGVudHJpZXMsIGluZGVudCkgOiAkam9pbi5jYWxsKGVudHJpZXMsICcsICcpO1xuICAgIHJldHVybiB0eXBlICsgJyAoJyArIHNpemUgKyAnKSB7JyArIGpvaW5lZEVudHJpZXMgKyAnfSc7XG59XG5cbmZ1bmN0aW9uIHNpbmdsZUxpbmVWYWx1ZXMoeHMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHhzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChpbmRleE9mKHhzW2ldLCAnXFxuJykgPj0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBnZXRJbmRlbnQob3B0cywgZGVwdGgpIHtcbiAgICB2YXIgYmFzZUluZGVudDtcbiAgICBpZiAob3B0cy5pbmRlbnQgPT09ICdcXHQnKSB7XG4gICAgICAgIGJhc2VJbmRlbnQgPSAnXFx0JztcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvcHRzLmluZGVudCA9PT0gJ251bWJlcicgJiYgb3B0cy5pbmRlbnQgPiAwKSB7XG4gICAgICAgIGJhc2VJbmRlbnQgPSAkam9pbi5jYWxsKEFycmF5KG9wdHMuaW5kZW50ICsgMSksICcgJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGJhc2U6IGJhc2VJbmRlbnQsXG4gICAgICAgIHByZXY6ICRqb2luLmNhbGwoQXJyYXkoZGVwdGggKyAxKSwgYmFzZUluZGVudClcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBpbmRlbnRlZEpvaW4oeHMsIGluZGVudCkge1xuICAgIGlmICh4cy5sZW5ndGggPT09IDApIHsgcmV0dXJuICcnOyB9XG4gICAgdmFyIGxpbmVKb2luZXIgPSAnXFxuJyArIGluZGVudC5wcmV2ICsgaW5kZW50LmJhc2U7XG4gICAgcmV0dXJuIGxpbmVKb2luZXIgKyAkam9pbi5jYWxsKHhzLCAnLCcgKyBsaW5lSm9pbmVyKSArICdcXG4nICsgaW5kZW50LnByZXY7XG59XG5cbmZ1bmN0aW9uIGFyck9iaktleXMob2JqLCBpbnNwZWN0KSB7XG4gICAgdmFyIGlzQXJyID0gaXNBcnJheShvYmopO1xuICAgIHZhciB4cyA9IFtdO1xuICAgIGlmIChpc0Fycikge1xuICAgICAgICB4cy5sZW5ndGggPSBvYmoubGVuZ3RoO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9iai5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgeHNbaV0gPSBoYXMob2JqLCBpKSA/IGluc3BlY3Qob2JqW2ldLCBvYmopIDogJyc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIHN5bXMgPSB0eXBlb2YgZ09QUyA9PT0gJ2Z1bmN0aW9uJyA/IGdPUFMob2JqKSA6IFtdO1xuICAgIHZhciBzeW1NYXA7XG4gICAgaWYgKGhhc1NoYW1tZWRTeW1ib2xzKSB7XG4gICAgICAgIHN5bU1hcCA9IHt9O1xuICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IHN5bXMubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgICAgIHN5bU1hcFsnJCcgKyBzeW1zW2tdXSA9IHN5bXNba107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgICAgICAgaWYgKCFoYXMob2JqLCBrZXkpKSB7IGNvbnRpbnVlOyB9IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXgsIG5vLWNvbnRpbnVlXG4gICAgICAgIGlmIChpc0FyciAmJiBTdHJpbmcoTnVtYmVyKGtleSkpID09PSBrZXkgJiYga2V5IDwgb2JqLmxlbmd0aCkgeyBjb250aW51ZTsgfSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4LCBuby1jb250aW51ZVxuICAgICAgICBpZiAoaGFzU2hhbW1lZFN5bWJvbHMgJiYgc3ltTWFwWyckJyArIGtleV0gaW5zdGFuY2VvZiBTeW1ib2wpIHtcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgdG8gcHJldmVudCBzaGFtbWVkIFN5bWJvbHMsIHdoaWNoIGFyZSBzdG9yZWQgYXMgc3RyaW5ncywgZnJvbSBiZWluZyBpbmNsdWRlZCBpbiB0aGUgc3RyaW5nIGtleSBzZWN0aW9uXG4gICAgICAgICAgICBjb250aW51ZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheCwgbm8tY29udGludWVcbiAgICAgICAgfSBlbHNlIGlmICgkdGVzdC5jYWxsKC9bXlxcdyRdLywga2V5KSkge1xuICAgICAgICAgICAgeHMucHVzaChpbnNwZWN0KGtleSwgb2JqKSArICc6ICcgKyBpbnNwZWN0KG9ialtrZXldLCBvYmopKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHhzLnB1c2goa2V5ICsgJzogJyArIGluc3BlY3Qob2JqW2tleV0sIG9iaikpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZ09QUyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHN5bXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgIGlmIChpc0VudW1lcmFibGUuY2FsbChvYmosIHN5bXNbal0pKSB7XG4gICAgICAgICAgICAgICAgeHMucHVzaCgnWycgKyBpbnNwZWN0KHN5bXNbal0pICsgJ106ICcgKyBpbnNwZWN0KG9ialtzeW1zW2pdXSwgb2JqKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHhzO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaW5zcGVjdCA9IHJlcXVpcmUoJ29iamVjdC1pbnNwZWN0Jyk7XG5cbnZhciAkVHlwZUVycm9yID0gcmVxdWlyZSgnZXMtZXJyb3JzL3R5cGUnKTtcblxuLypcbiogVGhpcyBmdW5jdGlvbiB0cmF2ZXJzZXMgdGhlIGxpc3QgcmV0dXJuaW5nIHRoZSBub2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIGtleS5cbipcbiogVGhhdCBub2RlIGlzIGFsc28gbW92ZWQgdG8gdGhlIGhlYWQgb2YgdGhlIGxpc3QsIHNvIHRoYXQgaWYgaXQncyBhY2Nlc3NlZCBhZ2FpbiB3ZSBkb24ndCBuZWVkIHRvIHRyYXZlcnNlIHRoZSB3aG9sZSBsaXN0LlxuKiBCeSBkb2luZyBzbywgYWxsIHRoZSByZWNlbnRseSB1c2VkIG5vZGVzIGNhbiBiZSBhY2Nlc3NlZCByZWxhdGl2ZWx5IHF1aWNrbHkuXG4qL1xuLyoqIEB0eXBlIHtpbXBvcnQoJy4vbGlzdC5kLnRzJykubGlzdEdldE5vZGV9ICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29uc2lzdGVudC1yZXR1cm5cbnZhciBsaXN0R2V0Tm9kZSA9IGZ1bmN0aW9uIChsaXN0LCBrZXksIGlzRGVsZXRlKSB7XG5cdC8qKiBAdHlwZSB7dHlwZW9mIGxpc3QgfCBOb25OdWxsYWJsZTwodHlwZW9mIGxpc3QpWyduZXh0J10+fSAqL1xuXHR2YXIgcHJldiA9IGxpc3Q7XG5cdC8qKiBAdHlwZSB7KHR5cGVvZiBsaXN0KVsnbmV4dCddfSAqL1xuXHR2YXIgY3Vycjtcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVxZXFlcVxuXHRmb3IgKDsgKGN1cnIgPSBwcmV2Lm5leHQpICE9IG51bGw7IHByZXYgPSBjdXJyKSB7XG5cdFx0aWYgKGN1cnIua2V5ID09PSBrZXkpIHtcblx0XHRcdHByZXYubmV4dCA9IGN1cnIubmV4dDtcblx0XHRcdGlmICghaXNEZWxldGUpIHtcblx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWV4dHJhLXBhcmVuc1xuXHRcdFx0XHRjdXJyLm5leHQgPSAvKiogQHR5cGUge05vbk51bGxhYmxlPHR5cGVvZiBsaXN0Lm5leHQ+fSAqLyAobGlzdC5uZXh0KTtcblx0XHRcdFx0bGlzdC5uZXh0ID0gY3VycjsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGN1cnI7XG5cdFx0fVxuXHR9XG59O1xuXG4vKiogQHR5cGUge2ltcG9ydCgnLi9saXN0LmQudHMnKS5saXN0R2V0fSAqL1xudmFyIGxpc3RHZXQgPSBmdW5jdGlvbiAob2JqZWN0cywga2V5KSB7XG5cdGlmICghb2JqZWN0cykge1xuXHRcdHJldHVybiB2b2lkIHVuZGVmaW5lZDtcblx0fVxuXHR2YXIgbm9kZSA9IGxpc3RHZXROb2RlKG9iamVjdHMsIGtleSk7XG5cdHJldHVybiBub2RlICYmIG5vZGUudmFsdWU7XG59O1xuLyoqIEB0eXBlIHtpbXBvcnQoJy4vbGlzdC5kLnRzJykubGlzdFNldH0gKi9cbnZhciBsaXN0U2V0ID0gZnVuY3Rpb24gKG9iamVjdHMsIGtleSwgdmFsdWUpIHtcblx0dmFyIG5vZGUgPSBsaXN0R2V0Tm9kZShvYmplY3RzLCBrZXkpO1xuXHRpZiAobm9kZSkge1xuXHRcdG5vZGUudmFsdWUgPSB2YWx1ZTtcblx0fSBlbHNlIHtcblx0XHQvLyBQcmVwZW5kIHRoZSBuZXcgbm9kZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaXN0XG5cdFx0b2JqZWN0cy5uZXh0ID0gLyoqIEB0eXBlIHtpbXBvcnQoJy4vbGlzdC5kLnRzJykuTGlzdE5vZGU8dHlwZW9mIHZhbHVlLCB0eXBlb2Yga2V5Pn0gKi8gKHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1wYXJhbS1yZWFzc2lnbiwgbm8tZXh0cmEtcGFyZW5zXG5cdFx0XHRrZXk6IGtleSxcblx0XHRcdG5leHQ6IG9iamVjdHMubmV4dCxcblx0XHRcdHZhbHVlOiB2YWx1ZVxuXHRcdH0pO1xuXHR9XG59O1xuLyoqIEB0eXBlIHtpbXBvcnQoJy4vbGlzdC5kLnRzJykubGlzdEhhc30gKi9cbnZhciBsaXN0SGFzID0gZnVuY3Rpb24gKG9iamVjdHMsIGtleSkge1xuXHRpZiAoIW9iamVjdHMpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0cmV0dXJuICEhbGlzdEdldE5vZGUob2JqZWN0cywga2V5KTtcbn07XG4vKiogQHR5cGUge2ltcG9ydCgnLi9saXN0LmQudHMnKS5saXN0RGVsZXRlfSAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG52YXIgbGlzdERlbGV0ZSA9IGZ1bmN0aW9uIChvYmplY3RzLCBrZXkpIHtcblx0aWYgKG9iamVjdHMpIHtcblx0XHRyZXR1cm4gbGlzdEdldE5vZGUob2JqZWN0cywga2V5LCB0cnVlKTtcblx0fVxufTtcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4nKX0gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2V0U2lkZUNoYW5uZWxMaXN0KCkge1xuXHQvKiogQHR5cGVkZWYge1JldHVyblR5cGU8dHlwZW9mIGdldFNpZGVDaGFubmVsTGlzdD59IENoYW5uZWwgKi9cblx0LyoqIEB0eXBlZGVmIHtQYXJhbWV0ZXJzPENoYW5uZWxbJ2dldCddPlswXX0gSyAqL1xuXHQvKiogQHR5cGVkZWYge1BhcmFtZXRlcnM8Q2hhbm5lbFsnc2V0J10+WzFdfSBWICovXG5cblx0LyoqIEB0eXBlIHtpbXBvcnQoJy4vbGlzdC5kLnRzJykuUm9vdE5vZGU8ViwgSz4gfCB1bmRlZmluZWR9ICovIHZhciAkbztcblxuXHQvKiogQHR5cGUge0NoYW5uZWx9ICovXG5cdHZhciBjaGFubmVsID0ge1xuXHRcdGFzc2VydDogZnVuY3Rpb24gKGtleSkge1xuXHRcdFx0aWYgKCFjaGFubmVsLmhhcyhrZXkpKSB7XG5cdFx0XHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdTaWRlIGNoYW5uZWwgZG9lcyBub3QgY29udGFpbiAnICsgaW5zcGVjdChrZXkpKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdCdkZWxldGUnOiBmdW5jdGlvbiAoa2V5KSB7XG5cdFx0XHR2YXIgcm9vdCA9ICRvICYmICRvLm5leHQ7XG5cdFx0XHR2YXIgZGVsZXRlZE5vZGUgPSBsaXN0RGVsZXRlKCRvLCBrZXkpO1xuXHRcdFx0aWYgKGRlbGV0ZWROb2RlICYmIHJvb3QgJiYgcm9vdCA9PT0gZGVsZXRlZE5vZGUpIHtcblx0XHRcdFx0JG8gPSB2b2lkIHVuZGVmaW5lZDtcblx0XHRcdH1cblx0XHRcdHJldHVybiAhIWRlbGV0ZWROb2RlO1xuXHRcdH0sXG5cdFx0Z2V0OiBmdW5jdGlvbiAoa2V5KSB7XG5cdFx0XHRyZXR1cm4gbGlzdEdldCgkbywga2V5KTtcblx0XHR9LFxuXHRcdGhhczogZnVuY3Rpb24gKGtleSkge1xuXHRcdFx0cmV0dXJuIGxpc3RIYXMoJG8sIGtleSk7XG5cdFx0fSxcblx0XHRzZXQ6IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG5cdFx0XHRpZiAoISRvKSB7XG5cdFx0XHRcdC8vIEluaXRpYWxpemUgdGhlIGxpbmtlZCBsaXN0IGFzIGFuIGVtcHR5IG5vZGUsIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBzcGVjaWFsLWNhc2UgaGFuZGxpbmcgb2YgdGhlIGZpcnN0IG5vZGU6IHdlIGNhbiBhbHdheXMgcmVmZXIgdG8gaXQgYXMgKHByZXZpb3VzIG5vZGUpLm5leHQsIGluc3RlYWQgb2Ygc29tZXRoaW5nIGxpa2UgKGxpc3QpLmhlYWRcblx0XHRcdFx0JG8gPSB7XG5cdFx0XHRcdFx0bmV4dDogdm9pZCB1bmRlZmluZWRcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1leHRyYS1wYXJlbnNcblx0XHRcdGxpc3RTZXQoLyoqIEB0eXBlIHtOb25OdWxsYWJsZTx0eXBlb2YgJG8+fSAqLyAoJG8pLCBrZXksIHZhbHVlKTtcblx0XHR9XG5cdH07XG5cdC8vIEB0cy1leHBlY3QtZXJyb3IgVE9ETzogZmlndXJlIG91dCB3aHkgdGhpcyBpcyBlcnJvcmluZ1xuXHRyZXR1cm4gY2hhbm5lbDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuJyl9ICovXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdDtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4nKX0gKi9cbm1vZHVsZS5leHBvcnRzID0gRXJyb3I7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuL2V2YWwnKX0gKi9cbm1vZHVsZS5leHBvcnRzID0gRXZhbEVycm9yO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKiogQHR5cGUge2ltcG9ydCgnLi9yYW5nZScpfSAqL1xubW9kdWxlLmV4cG9ydHMgPSBSYW5nZUVycm9yO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKiogQHR5cGUge2ltcG9ydCgnLi9yZWYnKX0gKi9cbm1vZHVsZS5leHBvcnRzID0gUmVmZXJlbmNlRXJyb3I7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuL3N5bnRheCcpfSAqL1xubW9kdWxlLmV4cG9ydHMgPSBTeW50YXhFcnJvcjtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4vdXJpJyl9ICovXG5tb2R1bGUuZXhwb3J0cyA9IFVSSUVycm9yO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKiogQHR5cGUge2ltcG9ydCgnLi9hYnMnKX0gKi9cbm1vZHVsZS5leHBvcnRzID0gTWF0aC5hYnM7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuL2Zsb29yJyl9ICovXG5tb2R1bGUuZXhwb3J0cyA9IE1hdGguZmxvb3I7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuL21heCcpfSAqL1xubW9kdWxlLmV4cG9ydHMgPSBNYXRoLm1heDtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4vbWluJyl9ICovXG5tb2R1bGUuZXhwb3J0cyA9IE1hdGgubWluO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKiogQHR5cGUge2ltcG9ydCgnLi9wb3cnKX0gKi9cbm1vZHVsZS5leHBvcnRzID0gTWF0aC5wb3c7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuL3JvdW5kJyl9ICovXG5tb2R1bGUuZXhwb3J0cyA9IE1hdGgucm91bmQ7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuL2lzTmFOJyl9ICovXG5tb2R1bGUuZXhwb3J0cyA9IE51bWJlci5pc05hTiB8fCBmdW5jdGlvbiBpc05hTihhKSB7XG5cdHJldHVybiBhICE9PSBhO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyICRpc05hTiA9IHJlcXVpcmUoJy4vaXNOYU4nKTtcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4vc2lnbicpfSAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzaWduKG51bWJlcikge1xuXHRpZiAoJGlzTmFOKG51bWJlcikgfHwgbnVtYmVyID09PSAwKSB7XG5cdFx0cmV0dXJuIG51bWJlcjtcblx0fVxuXHRyZXR1cm4gbnVtYmVyIDwgMCA/IC0xIDogKzE7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKiogQHR5cGUge2ltcG9ydCgnLi9nT1BEJyl9ICovXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuJyl9ICovXG52YXIgJGdPUEQgPSByZXF1aXJlKCcuL2dPUEQnKTtcblxuaWYgKCRnT1BEKSB7XG5cdHRyeSB7XG5cdFx0JGdPUEQoW10sICdsZW5ndGgnKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdC8vIElFIDggaGFzIGEgYnJva2VuIGdPUERcblx0XHQkZ09QRCA9IG51bGw7XG5cdH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSAkZ09QRDtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4nKX0gKi9cbnZhciAkZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgfHwgZmFsc2U7XG5pZiAoJGRlZmluZVByb3BlcnR5KSB7XG5cdHRyeSB7XG5cdFx0JGRlZmluZVByb3BlcnR5KHt9LCAnYScsIHsgdmFsdWU6IDEgfSk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHQvLyBJRSA4IGhhcyBhIGJyb2tlbiBkZWZpbmVQcm9wZXJ0eVxuXHRcdCRkZWZpbmVQcm9wZXJ0eSA9IGZhbHNlO1xuXHR9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gJGRlZmluZVByb3BlcnR5O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKiogQHR5cGUge2ltcG9ydCgnLi9zaGFtcycpfSAqL1xuLyogZXNsaW50IGNvbXBsZXhpdHk6IFsyLCAxOF0sIG1heC1zdGF0ZW1lbnRzOiBbMiwgMzNdICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGhhc1N5bWJvbHMoKSB7XG5cdGlmICh0eXBlb2YgU3ltYm9sICE9PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzICE9PSAnZnVuY3Rpb24nKSB7IHJldHVybiBmYWxzZTsgfVxuXHRpZiAodHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gJ3N5bWJvbCcpIHsgcmV0dXJuIHRydWU7IH1cblxuXHQvKiogQHR5cGUge3sgW2sgaW4gc3ltYm9sXT86IHVua25vd24gfX0gKi9cblx0dmFyIG9iaiA9IHt9O1xuXHR2YXIgc3ltID0gU3ltYm9sKCd0ZXN0Jyk7XG5cdHZhciBzeW1PYmogPSBPYmplY3Qoc3ltKTtcblx0aWYgKHR5cGVvZiBzeW0gPT09ICdzdHJpbmcnKSB7IHJldHVybiBmYWxzZTsgfVxuXG5cdGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoc3ltKSAhPT0gJ1tvYmplY3QgU3ltYm9sXScpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoc3ltT2JqKSAhPT0gJ1tvYmplY3QgU3ltYm9sXScpIHsgcmV0dXJuIGZhbHNlOyB9XG5cblx0Ly8gdGVtcCBkaXNhYmxlZCBwZXIgaHR0cHM6Ly9naXRodWIuY29tL2xqaGFyYi9vYmplY3QuYXNzaWduL2lzc3Vlcy8xN1xuXHQvLyBpZiAoc3ltIGluc3RhbmNlb2YgU3ltYm9sKSB7IHJldHVybiBmYWxzZTsgfVxuXHQvLyB0ZW1wIGRpc2FibGVkIHBlciBodHRwczovL2dpdGh1Yi5jb20vV2ViUmVmbGVjdGlvbi9nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMvaXNzdWVzLzRcblx0Ly8gaWYgKCEoc3ltT2JqIGluc3RhbmNlb2YgU3ltYm9sKSkgeyByZXR1cm4gZmFsc2U7IH1cblxuXHQvLyBpZiAodHlwZW9mIFN5bWJvbC5wcm90b3R5cGUudG9TdHJpbmcgIT09ICdmdW5jdGlvbicpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdC8vIGlmIChTdHJpbmcoc3ltKSAhPT0gU3ltYm9sLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHN5bSkpIHsgcmV0dXJuIGZhbHNlOyB9XG5cblx0dmFyIHN5bVZhbCA9IDQyO1xuXHRvYmpbc3ltXSA9IHN5bVZhbDtcblx0Zm9yICh2YXIgXyBpbiBvYmopIHsgcmV0dXJuIGZhbHNlOyB9IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXgsIG5vLXVucmVhY2hhYmxlLWxvb3Bcblx0aWYgKHR5cGVvZiBPYmplY3Qua2V5cyA9PT0gJ2Z1bmN0aW9uJyAmJiBPYmplY3Qua2V5cyhvYmopLmxlbmd0aCAhPT0gMCkgeyByZXR1cm4gZmFsc2U7IH1cblxuXHRpZiAodHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzID09PSAnZnVuY3Rpb24nICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikubGVuZ3RoICE9PSAwKSB7IHJldHVybiBmYWxzZTsgfVxuXG5cdHZhciBzeW1zID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmopO1xuXHRpZiAoc3ltcy5sZW5ndGggIT09IDEgfHwgc3ltc1swXSAhPT0gc3ltKSB7IHJldHVybiBmYWxzZTsgfVxuXG5cdGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKG9iaiwgc3ltKSkgeyByZXR1cm4gZmFsc2U7IH1cblxuXHRpZiAodHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPT09ICdmdW5jdGlvbicpIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXh0cmEtcGFyZW5zXG5cdFx0dmFyIGRlc2NyaXB0b3IgPSAvKiogQHR5cGUge1Byb3BlcnR5RGVzY3JpcHRvcn0gKi8gKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBzeW0pKTtcblx0XHRpZiAoZGVzY3JpcHRvci52YWx1ZSAhPT0gc3ltVmFsIHx8IGRlc2NyaXB0b3IuZW51bWVyYWJsZSAhPT0gdHJ1ZSkgeyByZXR1cm4gZmFsc2U7IH1cblx0fVxuXG5cdHJldHVybiB0cnVlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIG9yaWdTeW1ib2wgPSB0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2w7XG52YXIgaGFzU3ltYm9sU2hhbSA9IHJlcXVpcmUoJy4vc2hhbXMnKTtcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4nKX0gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaGFzTmF0aXZlU3ltYm9scygpIHtcblx0aWYgKHR5cGVvZiBvcmlnU3ltYm9sICE9PSAnZnVuY3Rpb24nKSB7IHJldHVybiBmYWxzZTsgfVxuXHRpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0aW9uJykgeyByZXR1cm4gZmFsc2U7IH1cblx0aWYgKHR5cGVvZiBvcmlnU3ltYm9sKCdmb28nKSAhPT0gJ3N5bWJvbCcpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdGlmICh0eXBlb2YgU3ltYm9sKCdiYXInKSAhPT0gJ3N5bWJvbCcpIHsgcmV0dXJuIGZhbHNlOyB9XG5cblx0cmV0dXJuIGhhc1N5bWJvbFNoYW0oKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuL1JlZmxlY3QuZ2V0UHJvdG90eXBlT2YnKX0gKi9cbm1vZHVsZS5leHBvcnRzID0gKHR5cGVvZiBSZWZsZWN0ICE9PSAndW5kZWZpbmVkJyAmJiBSZWZsZWN0LmdldFByb3RvdHlwZU9mKSB8fCBudWxsO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgJE9iamVjdCA9IHJlcXVpcmUoJ2VzLW9iamVjdC1hdG9tcycpO1xuXG4vKiogQHR5cGUge2ltcG9ydCgnLi9PYmplY3QuZ2V0UHJvdG90eXBlT2YnKX0gKi9cbm1vZHVsZS5leHBvcnRzID0gJE9iamVjdC5nZXRQcm90b3R5cGVPZiB8fCBudWxsO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKiBlc2xpbnQgbm8taW52YWxpZC10aGlzOiAxICovXG5cbnZhciBFUlJPUl9NRVNTQUdFID0gJ0Z1bmN0aW9uLnByb3RvdHlwZS5iaW5kIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgJztcbnZhciB0b1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgZnVuY1R5cGUgPSAnW29iamVjdCBGdW5jdGlvbl0nO1xuXG52YXIgY29uY2F0dHkgPSBmdW5jdGlvbiBjb25jYXR0eShhLCBiKSB7XG4gICAgdmFyIGFyciA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGFycltpXSA9IGFbaV07XG4gICAgfVxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgYi5sZW5ndGg7IGogKz0gMSkge1xuICAgICAgICBhcnJbaiArIGEubGVuZ3RoXSA9IGJbal07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFycjtcbn07XG5cbnZhciBzbGljeSA9IGZ1bmN0aW9uIHNsaWN5KGFyckxpa2UsIG9mZnNldCkge1xuICAgIHZhciBhcnIgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gb2Zmc2V0IHx8IDAsIGogPSAwOyBpIDwgYXJyTGlrZS5sZW5ndGg7IGkgKz0gMSwgaiArPSAxKSB7XG4gICAgICAgIGFycltqXSA9IGFyckxpa2VbaV07XG4gICAgfVxuICAgIHJldHVybiBhcnI7XG59O1xuXG52YXIgam9pbnkgPSBmdW5jdGlvbiAoYXJyLCBqb2luZXIpIHtcbiAgICB2YXIgc3RyID0gJyc7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgc3RyICs9IGFycltpXTtcbiAgICAgICAgaWYgKGkgKyAxIDwgYXJyLmxlbmd0aCkge1xuICAgICAgICAgICAgc3RyICs9IGpvaW5lcjtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3RyO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBiaW5kKHRoYXQpIHtcbiAgICB2YXIgdGFyZ2V0ID0gdGhpcztcbiAgICBpZiAodHlwZW9mIHRhcmdldCAhPT0gJ2Z1bmN0aW9uJyB8fCB0b1N0ci5hcHBseSh0YXJnZXQpICE9PSBmdW5jVHlwZSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEVSUk9SX01FU1NBR0UgKyB0YXJnZXQpO1xuICAgIH1cbiAgICB2YXIgYXJncyA9IHNsaWN5KGFyZ3VtZW50cywgMSk7XG5cbiAgICB2YXIgYm91bmQ7XG4gICAgdmFyIGJpbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBib3VuZCkge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRhcmdldC5hcHBseShcbiAgICAgICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgICAgIGNvbmNhdHR5KGFyZ3MsIGFyZ3VtZW50cylcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoT2JqZWN0KHJlc3VsdCkgPT09IHJlc3VsdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFyZ2V0LmFwcGx5KFxuICAgICAgICAgICAgdGhhdCxcbiAgICAgICAgICAgIGNvbmNhdHR5KGFyZ3MsIGFyZ3VtZW50cylcbiAgICAgICAgKTtcblxuICAgIH07XG5cbiAgICB2YXIgYm91bmRMZW5ndGggPSBtYXgoMCwgdGFyZ2V0Lmxlbmd0aCAtIGFyZ3MubGVuZ3RoKTtcbiAgICB2YXIgYm91bmRBcmdzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBib3VuZExlbmd0aDsgaSsrKSB7XG4gICAgICAgIGJvdW5kQXJnc1tpXSA9ICckJyArIGk7XG4gICAgfVxuXG4gICAgYm91bmQgPSBGdW5jdGlvbignYmluZGVyJywgJ3JldHVybiBmdW5jdGlvbiAoJyArIGpvaW55KGJvdW5kQXJncywgJywnKSArICcpeyByZXR1cm4gYmluZGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKTsgfScpKGJpbmRlcik7XG5cbiAgICBpZiAodGFyZ2V0LnByb3RvdHlwZSkge1xuICAgICAgICB2YXIgRW1wdHkgPSBmdW5jdGlvbiBFbXB0eSgpIHt9O1xuICAgICAgICBFbXB0eS5wcm90b3R5cGUgPSB0YXJnZXQucHJvdG90eXBlO1xuICAgICAgICBib3VuZC5wcm90b3R5cGUgPSBuZXcgRW1wdHkoKTtcbiAgICAgICAgRW1wdHkucHJvdG90eXBlID0gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gYm91bmQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaW1wbGVtZW50YXRpb24gPSByZXF1aXJlKCcuL2ltcGxlbWVudGF0aW9uJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQgfHwgaW1wbGVtZW50YXRpb247XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuL2Z1bmN0aW9uQ2FsbCcpfSAqL1xubW9kdWxlLmV4cG9ydHMgPSBGdW5jdGlvbi5wcm90b3R5cGUuY2FsbDtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4vZnVuY3Rpb25BcHBseScpfSAqL1xubW9kdWxlLmV4cG9ydHMgPSBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHk7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuL3JlZmxlY3RBcHBseScpfSAqL1xubW9kdWxlLmV4cG9ydHMgPSB0eXBlb2YgUmVmbGVjdCAhPT0gJ3VuZGVmaW5lZCcgJiYgUmVmbGVjdCAmJiBSZWZsZWN0LmFwcGx5O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYmluZCA9IHJlcXVpcmUoJ2Z1bmN0aW9uLWJpbmQnKTtcblxudmFyICRhcHBseSA9IHJlcXVpcmUoJy4vZnVuY3Rpb25BcHBseScpO1xudmFyICRjYWxsID0gcmVxdWlyZSgnLi9mdW5jdGlvbkNhbGwnKTtcbnZhciAkcmVmbGVjdEFwcGx5ID0gcmVxdWlyZSgnLi9yZWZsZWN0QXBwbHknKTtcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4vYWN0dWFsQXBwbHknKX0gKi9cbm1vZHVsZS5leHBvcnRzID0gJHJlZmxlY3RBcHBseSB8fCBiaW5kLmNhbGwoJGNhbGwsICRhcHBseSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBiaW5kID0gcmVxdWlyZSgnZnVuY3Rpb24tYmluZCcpO1xudmFyICRUeXBlRXJyb3IgPSByZXF1aXJlKCdlcy1lcnJvcnMvdHlwZScpO1xuXG52YXIgJGNhbGwgPSByZXF1aXJlKCcuL2Z1bmN0aW9uQ2FsbCcpO1xudmFyICRhY3R1YWxBcHBseSA9IHJlcXVpcmUoJy4vYWN0dWFsQXBwbHknKTtcblxuLyoqIEB0eXBlIHsoYXJnczogW0Z1bmN0aW9uLCB0aGlzQXJnPzogdW5rbm93biwgLi4uYXJnczogdW5rbm93bltdXSkgPT4gRnVuY3Rpb259IFRPRE8gRklYTUUsIGZpbmQgYSB3YXkgdG8gdXNlIGltcG9ydCgnLicpICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNhbGxCaW5kQmFzaWMoYXJncykge1xuXHRpZiAoYXJncy5sZW5ndGggPCAxIHx8IHR5cGVvZiBhcmdzWzBdICE9PSAnZnVuY3Rpb24nKSB7XG5cdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ2EgZnVuY3Rpb24gaXMgcmVxdWlyZWQnKTtcblx0fVxuXHRyZXR1cm4gJGFjdHVhbEFwcGx5KGJpbmQsICRjYWxsLCBhcmdzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBjYWxsQmluZCA9IHJlcXVpcmUoJ2NhbGwtYmluZC1hcHBseS1oZWxwZXJzJyk7XG52YXIgZ09QRCA9IHJlcXVpcmUoJ2dvcGQnKTtcblxudmFyIGhhc1Byb3RvQWNjZXNzb3I7XG50cnkge1xuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXh0cmEtcGFyZW5zLCBuby1wcm90b1xuXHRoYXNQcm90b0FjY2Vzc29yID0gLyoqIEB0eXBlIHt7IF9fcHJvdG9fXz86IHR5cGVvZiBBcnJheS5wcm90b3R5cGUgfX0gKi8gKFtdKS5fX3Byb3RvX18gPT09IEFycmF5LnByb3RvdHlwZTtcbn0gY2F0Y2ggKGUpIHtcblx0aWYgKCFlIHx8IHR5cGVvZiBlICE9PSAnb2JqZWN0JyB8fCAhKCdjb2RlJyBpbiBlKSB8fCBlLmNvZGUgIT09ICdFUlJfUFJPVE9fQUNDRVNTJykge1xuXHRcdHRocm93IGU7XG5cdH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWV4dHJhLXBhcmVuc1xudmFyIGRlc2MgPSAhIWhhc1Byb3RvQWNjZXNzb3IgJiYgZ09QRCAmJiBnT1BEKE9iamVjdC5wcm90b3R5cGUsIC8qKiBAdHlwZSB7a2V5b2YgdHlwZW9mIE9iamVjdC5wcm90b3R5cGV9ICovICgnX19wcm90b19fJykpO1xuXG52YXIgJE9iamVjdCA9IE9iamVjdDtcbnZhciAkZ2V0UHJvdG90eXBlT2YgPSAkT2JqZWN0LmdldFByb3RvdHlwZU9mO1xuXG4vKiogQHR5cGUge2ltcG9ydCgnLi9nZXQnKX0gKi9cbm1vZHVsZS5leHBvcnRzID0gZGVzYyAmJiB0eXBlb2YgZGVzYy5nZXQgPT09ICdmdW5jdGlvbidcblx0PyBjYWxsQmluZChbZGVzYy5nZXRdKVxuXHQ6IHR5cGVvZiAkZ2V0UHJvdG90eXBlT2YgPT09ICdmdW5jdGlvbidcblx0XHQ/IC8qKiBAdHlwZSB7aW1wb3J0KCcuL2dldCcpfSAqLyBmdW5jdGlvbiBnZXREdW5kZXIodmFsdWUpIHtcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcblx0XHRcdHJldHVybiAkZ2V0UHJvdG90eXBlT2YodmFsdWUgPT0gbnVsbCA/IHZhbHVlIDogJE9iamVjdCh2YWx1ZSkpO1xuXHRcdH1cblx0XHQ6IGZhbHNlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgcmVmbGVjdEdldFByb3RvID0gcmVxdWlyZSgnLi9SZWZsZWN0LmdldFByb3RvdHlwZU9mJyk7XG52YXIgb3JpZ2luYWxHZXRQcm90byA9IHJlcXVpcmUoJy4vT2JqZWN0LmdldFByb3RvdHlwZU9mJyk7XG5cbnZhciBnZXREdW5kZXJQcm90byA9IHJlcXVpcmUoJ2R1bmRlci1wcm90by9nZXQnKTtcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4nKX0gKi9cbm1vZHVsZS5leHBvcnRzID0gcmVmbGVjdEdldFByb3RvXG5cdD8gZnVuY3Rpb24gZ2V0UHJvdG8oTykge1xuXHRcdC8vIEB0cy1leHBlY3QtZXJyb3IgVFMgY2FuJ3QgbmFycm93IGluc2lkZSBhIGNsb3N1cmUsIGZvciBzb21lIHJlYXNvblxuXHRcdHJldHVybiByZWZsZWN0R2V0UHJvdG8oTyk7XG5cdH1cblx0OiBvcmlnaW5hbEdldFByb3RvXG5cdFx0PyBmdW5jdGlvbiBnZXRQcm90byhPKSB7XG5cdFx0XHRpZiAoIU8gfHwgKHR5cGVvZiBPICE9PSAnb2JqZWN0JyAmJiB0eXBlb2YgTyAhPT0gJ2Z1bmN0aW9uJykpIHtcblx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignZ2V0UHJvdG86IG5vdCBhbiBvYmplY3QnKTtcblx0XHRcdH1cblx0XHRcdC8vIEB0cy1leHBlY3QtZXJyb3IgVFMgY2FuJ3QgbmFycm93IGluc2lkZSBhIGNsb3N1cmUsIGZvciBzb21lIHJlYXNvblxuXHRcdFx0cmV0dXJuIG9yaWdpbmFsR2V0UHJvdG8oTyk7XG5cdFx0fVxuXHRcdDogZ2V0RHVuZGVyUHJvdG9cblx0XHRcdD8gZnVuY3Rpb24gZ2V0UHJvdG8oTykge1xuXHRcdFx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIFRTIGNhbid0IG5hcnJvdyBpbnNpZGUgYSBjbG9zdXJlLCBmb3Igc29tZSByZWFzb25cblx0XHRcdFx0cmV0dXJuIGdldER1bmRlclByb3RvKE8pO1xuXHRcdFx0fVxuXHRcdFx0OiBudWxsO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXh0cmEtcGFyZW5zLCBuby1lbXB0eS1mdW5jdGlvblxuY29uc3QgY2FjaGVkID0gLyoqIEB0eXBlIHtpbXBvcnQoJy4nKS5Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3J9ICovIChhc3luYyBmdW5jdGlvbiAoKSB7fS5jb25zdHJ1Y3Rvcik7XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuJyl9ICovXG5tb2R1bGUuZXhwb3J0cyA9ICgpID0+IGNhY2hlZDtcblxuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXh0cmEtcGFyZW5zLCBuby1lbXB0eS1mdW5jdGlvblxuY29uc3QgY2FjaGVkID0gLyoqIEB0eXBlIHtHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yfSAqLyAoZnVuY3Rpb24qICgpIHt9LmNvbnN0cnVjdG9yKTtcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4nKX0gKi9cbm1vZHVsZS5leHBvcnRzID0gKCkgPT4gY2FjaGVkO1xuXG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1leHRyYS1wYXJlbnMsIG5vLWVtcHR5LWZ1bmN0aW9uXG5jb25zdCBjYWNoZWQgPSAvKiogQHR5cGUge2ltcG9ydCgnLicpLkFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcn0gKi8gKGFzeW5jIGZ1bmN0aW9uKiAoKSB7fS5jb25zdHJ1Y3Rvcik7XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuJyl9ICovXG5tb2R1bGUuZXhwb3J0cyA9ICgpID0+IGNhY2hlZDtcblxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY2FsbCA9IEZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsO1xudmFyICRoYXNPd24gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIGJpbmQgPSByZXF1aXJlKCdmdW5jdGlvbi1iaW5kJyk7XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuJyl9ICovXG5tb2R1bGUuZXhwb3J0cyA9IGJpbmQuY2FsbChjYWxsLCAkaGFzT3duKTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHVuZGVmaW5lZDtcblxudmFyICRPYmplY3QgPSByZXF1aXJlKCdlcy1vYmplY3QtYXRvbXMnKTtcblxudmFyICRFcnJvciA9IHJlcXVpcmUoJ2VzLWVycm9ycycpO1xudmFyICRFdmFsRXJyb3IgPSByZXF1aXJlKCdlcy1lcnJvcnMvZXZhbCcpO1xudmFyICRSYW5nZUVycm9yID0gcmVxdWlyZSgnZXMtZXJyb3JzL3JhbmdlJyk7XG52YXIgJFJlZmVyZW5jZUVycm9yID0gcmVxdWlyZSgnZXMtZXJyb3JzL3JlZicpO1xudmFyICRTeW50YXhFcnJvciA9IHJlcXVpcmUoJ2VzLWVycm9ycy9zeW50YXgnKTtcbnZhciAkVHlwZUVycm9yID0gcmVxdWlyZSgnZXMtZXJyb3JzL3R5cGUnKTtcbnZhciAkVVJJRXJyb3IgPSByZXF1aXJlKCdlcy1lcnJvcnMvdXJpJyk7XG5cbnZhciBhYnMgPSByZXF1aXJlKCdtYXRoLWludHJpbnNpY3MvYWJzJyk7XG52YXIgZmxvb3IgPSByZXF1aXJlKCdtYXRoLWludHJpbnNpY3MvZmxvb3InKTtcbnZhciBtYXggPSByZXF1aXJlKCdtYXRoLWludHJpbnNpY3MvbWF4Jyk7XG52YXIgbWluID0gcmVxdWlyZSgnbWF0aC1pbnRyaW5zaWNzL21pbicpO1xudmFyIHBvdyA9IHJlcXVpcmUoJ21hdGgtaW50cmluc2ljcy9wb3cnKTtcbnZhciByb3VuZCA9IHJlcXVpcmUoJ21hdGgtaW50cmluc2ljcy9yb3VuZCcpO1xudmFyIHNpZ24gPSByZXF1aXJlKCdtYXRoLWludHJpbnNpY3Mvc2lnbicpO1xuXG52YXIgJGdPUEQgPSByZXF1aXJlKCdnb3BkJyk7XG52YXIgJGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnZXMtZGVmaW5lLXByb3BlcnR5Jyk7XG5cbnZhciB0aHJvd1R5cGVFcnJvciA9IGZ1bmN0aW9uICgpIHtcblx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoKTtcbn07XG52YXIgVGhyb3dUeXBlRXJyb3IgPSAkZ09QRFxuXHQ/IChmdW5jdGlvbiAoKSB7XG5cdFx0dHJ5IHtcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnMsIG5vLWNhbGxlciwgbm8tcmVzdHJpY3RlZC1wcm9wZXJ0aWVzXG5cdFx0XHRhcmd1bWVudHMuY2FsbGVlOyAvLyBJRSA4IGRvZXMgbm90IHRocm93IGhlcmVcblx0XHRcdHJldHVybiB0aHJvd1R5cGVFcnJvcjtcblx0XHR9IGNhdGNoIChjYWxsZWVUaHJvd3MpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdC8vIElFIDggdGhyb3dzIG9uIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYXJndW1lbnRzLCAnJylcblx0XHRcdFx0cmV0dXJuICRnT1BEKGFyZ3VtZW50cywgJ2NhbGxlZScpLmdldDtcblx0XHRcdH0gY2F0Y2ggKGdPUER0aHJvd3MpIHtcblx0XHRcdFx0cmV0dXJuIHRocm93VHlwZUVycm9yO1xuXHRcdFx0fVxuXHRcdH1cblx0fSgpKVxuXHQ6IHRocm93VHlwZUVycm9yO1xuXG52YXIgaGFzU3ltYm9scyA9IHJlcXVpcmUoJ2hhcy1zeW1ib2xzJykoKTtcblxudmFyIGdldFByb3RvID0gcmVxdWlyZSgnZ2V0LXByb3RvJyk7XG52YXIgJE9iamVjdEdQTyA9IHJlcXVpcmUoJ2dldC1wcm90by9PYmplY3QuZ2V0UHJvdG90eXBlT2YnKTtcbnZhciAkUmVmbGVjdEdQTyA9IHJlcXVpcmUoJ2dldC1wcm90by9SZWZsZWN0LmdldFByb3RvdHlwZU9mJyk7XG5cbnZhciAkYXBwbHkgPSByZXF1aXJlKCdjYWxsLWJpbmQtYXBwbHktaGVscGVycy9mdW5jdGlvbkFwcGx5Jyk7XG52YXIgJGNhbGwgPSByZXF1aXJlKCdjYWxsLWJpbmQtYXBwbHktaGVscGVycy9mdW5jdGlvbkNhbGwnKTtcblxudmFyIG5lZWRzRXZhbCA9IHt9O1xuXG52YXIgVHlwZWRBcnJheSA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAndW5kZWZpbmVkJyB8fCAhZ2V0UHJvdG8gPyB1bmRlZmluZWQgOiBnZXRQcm90byhVaW50OEFycmF5KTtcblxudmFyIElOVFJJTlNJQ1MgPSB7XG5cdF9fcHJvdG9fXzogbnVsbCxcblx0JyVBZ2dyZWdhdGVFcnJvciUnOiB0eXBlb2YgQWdncmVnYXRlRXJyb3IgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogQWdncmVnYXRlRXJyb3IsXG5cdCclQXJyYXklJzogQXJyYXksXG5cdCclQXJyYXlCdWZmZXIlJzogdHlwZW9mIEFycmF5QnVmZmVyID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEFycmF5QnVmZmVyLFxuXHQnJUFycmF5SXRlcmF0b3JQcm90b3R5cGUlJzogaGFzU3ltYm9scyAmJiBnZXRQcm90byA/IGdldFByb3RvKFtdW1N5bWJvbC5pdGVyYXRvcl0oKSkgOiB1bmRlZmluZWQsXG5cdCclQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlJSc6IHVuZGVmaW5lZCxcblx0JyVBc3luY0Z1bmN0aW9uJSc6IG5lZWRzRXZhbCxcblx0JyVBc3luY0dlbmVyYXRvciUnOiBuZWVkc0V2YWwsXG5cdCclQXN5bmNHZW5lcmF0b3JGdW5jdGlvbiUnOiBuZWVkc0V2YWwsXG5cdCclQXN5bmNJdGVyYXRvclByb3RvdHlwZSUnOiBuZWVkc0V2YWwsXG5cdCclQXRvbWljcyUnOiB0eXBlb2YgQXRvbWljcyA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBBdG9taWNzLFxuXHQnJUJpZ0ludCUnOiB0eXBlb2YgQmlnSW50ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEJpZ0ludCxcblx0JyVCaWdJbnQ2NEFycmF5JSc6IHR5cGVvZiBCaWdJbnQ2NEFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEJpZ0ludDY0QXJyYXksXG5cdCclQmlnVWludDY0QXJyYXklJzogdHlwZW9mIEJpZ1VpbnQ2NEFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEJpZ1VpbnQ2NEFycmF5LFxuXHQnJUJvb2xlYW4lJzogQm9vbGVhbixcblx0JyVEYXRhVmlldyUnOiB0eXBlb2YgRGF0YVZpZXcgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogRGF0YVZpZXcsXG5cdCclRGF0ZSUnOiBEYXRlLFxuXHQnJWRlY29kZVVSSSUnOiBkZWNvZGVVUkksXG5cdCclZGVjb2RlVVJJQ29tcG9uZW50JSc6IGRlY29kZVVSSUNvbXBvbmVudCxcblx0JyVlbmNvZGVVUkklJzogZW5jb2RlVVJJLFxuXHQnJWVuY29kZVVSSUNvbXBvbmVudCUnOiBlbmNvZGVVUklDb21wb25lbnQsXG5cdCclRXJyb3IlJzogJEVycm9yLFxuXHQnJWV2YWwlJzogZXZhbCwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1ldmFsXG5cdCclRXZhbEVycm9yJSc6ICRFdmFsRXJyb3IsXG5cdCclRmxvYXQxNkFycmF5JSc6IHR5cGVvZiBGbG9hdDE2QXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogRmxvYXQxNkFycmF5LFxuXHQnJUZsb2F0MzJBcnJheSUnOiB0eXBlb2YgRmxvYXQzMkFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEZsb2F0MzJBcnJheSxcblx0JyVGbG9hdDY0QXJyYXklJzogdHlwZW9mIEZsb2F0NjRBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBGbG9hdDY0QXJyYXksXG5cdCclRmluYWxpemF0aW9uUmVnaXN0cnklJzogdHlwZW9mIEZpbmFsaXphdGlvblJlZ2lzdHJ5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEZpbmFsaXphdGlvblJlZ2lzdHJ5LFxuXHQnJUZ1bmN0aW9uJSc6IEZ1bmN0aW9uLFxuXHQnJUdlbmVyYXRvckZ1bmN0aW9uJSc6IG5lZWRzRXZhbCxcblx0JyVJbnQ4QXJyYXklJzogdHlwZW9mIEludDhBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBJbnQ4QXJyYXksXG5cdCclSW50MTZBcnJheSUnOiB0eXBlb2YgSW50MTZBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBJbnQxNkFycmF5LFxuXHQnJUludDMyQXJyYXklJzogdHlwZW9mIEludDMyQXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogSW50MzJBcnJheSxcblx0JyVpc0Zpbml0ZSUnOiBpc0Zpbml0ZSxcblx0JyVpc05hTiUnOiBpc05hTixcblx0JyVJdGVyYXRvclByb3RvdHlwZSUnOiBoYXNTeW1ib2xzICYmIGdldFByb3RvID8gZ2V0UHJvdG8oZ2V0UHJvdG8oW11bU3ltYm9sLml0ZXJhdG9yXSgpKSkgOiB1bmRlZmluZWQsXG5cdCclSlNPTiUnOiB0eXBlb2YgSlNPTiA9PT0gJ29iamVjdCcgPyBKU09OIDogdW5kZWZpbmVkLFxuXHQnJU1hcCUnOiB0eXBlb2YgTWFwID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IE1hcCxcblx0JyVNYXBJdGVyYXRvclByb3RvdHlwZSUnOiB0eXBlb2YgTWFwID09PSAndW5kZWZpbmVkJyB8fCAhaGFzU3ltYm9scyB8fCAhZ2V0UHJvdG8gPyB1bmRlZmluZWQgOiBnZXRQcm90byhuZXcgTWFwKClbU3ltYm9sLml0ZXJhdG9yXSgpKSxcblx0JyVNYXRoJSc6IE1hdGgsXG5cdCclTnVtYmVyJSc6IE51bWJlcixcblx0JyVPYmplY3QlJzogJE9iamVjdCxcblx0JyVPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJSc6ICRnT1BELFxuXHQnJXBhcnNlRmxvYXQlJzogcGFyc2VGbG9hdCxcblx0JyVwYXJzZUludCUnOiBwYXJzZUludCxcblx0JyVQcm9taXNlJSc6IHR5cGVvZiBQcm9taXNlID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFByb21pc2UsXG5cdCclUHJveHklJzogdHlwZW9mIFByb3h5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFByb3h5LFxuXHQnJVJhbmdlRXJyb3IlJzogJFJhbmdlRXJyb3IsXG5cdCclUmVmZXJlbmNlRXJyb3IlJzogJFJlZmVyZW5jZUVycm9yLFxuXHQnJVJlZmxlY3QlJzogdHlwZW9mIFJlZmxlY3QgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogUmVmbGVjdCxcblx0JyVSZWdFeHAlJzogUmVnRXhwLFxuXHQnJVNldCUnOiB0eXBlb2YgU2V0ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFNldCxcblx0JyVTZXRJdGVyYXRvclByb3RvdHlwZSUnOiB0eXBlb2YgU2V0ID09PSAndW5kZWZpbmVkJyB8fCAhaGFzU3ltYm9scyB8fCAhZ2V0UHJvdG8gPyB1bmRlZmluZWQgOiBnZXRQcm90byhuZXcgU2V0KClbU3ltYm9sLml0ZXJhdG9yXSgpKSxcblx0JyVTaGFyZWRBcnJheUJ1ZmZlciUnOiB0eXBlb2YgU2hhcmVkQXJyYXlCdWZmZXIgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogU2hhcmVkQXJyYXlCdWZmZXIsXG5cdCclU3RyaW5nJSc6IFN0cmluZyxcblx0JyVTdHJpbmdJdGVyYXRvclByb3RvdHlwZSUnOiBoYXNTeW1ib2xzICYmIGdldFByb3RvID8gZ2V0UHJvdG8oJydbU3ltYm9sLml0ZXJhdG9yXSgpKSA6IHVuZGVmaW5lZCxcblx0JyVTeW1ib2wlJzogaGFzU3ltYm9scyA/IFN5bWJvbCA6IHVuZGVmaW5lZCxcblx0JyVTeW50YXhFcnJvciUnOiAkU3ludGF4RXJyb3IsXG5cdCclVGhyb3dUeXBlRXJyb3IlJzogVGhyb3dUeXBlRXJyb3IsXG5cdCclVHlwZWRBcnJheSUnOiBUeXBlZEFycmF5LFxuXHQnJVR5cGVFcnJvciUnOiAkVHlwZUVycm9yLFxuXHQnJVVpbnQ4QXJyYXklJzogdHlwZW9mIFVpbnQ4QXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogVWludDhBcnJheSxcblx0JyVVaW50OENsYW1wZWRBcnJheSUnOiB0eXBlb2YgVWludDhDbGFtcGVkQXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogVWludDhDbGFtcGVkQXJyYXksXG5cdCclVWludDE2QXJyYXklJzogdHlwZW9mIFVpbnQxNkFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFVpbnQxNkFycmF5LFxuXHQnJVVpbnQzMkFycmF5JSc6IHR5cGVvZiBVaW50MzJBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBVaW50MzJBcnJheSxcblx0JyVVUklFcnJvciUnOiAkVVJJRXJyb3IsXG5cdCclV2Vha01hcCUnOiB0eXBlb2YgV2Vha01hcCA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBXZWFrTWFwLFxuXHQnJVdlYWtSZWYlJzogdHlwZW9mIFdlYWtSZWYgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogV2Vha1JlZixcblx0JyVXZWFrU2V0JSc6IHR5cGVvZiBXZWFrU2V0ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFdlYWtTZXQsXG5cblx0JyVGdW5jdGlvbi5wcm90b3R5cGUuY2FsbCUnOiAkY2FsbCxcblx0JyVGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHklJzogJGFwcGx5LFxuXHQnJU9iamVjdC5kZWZpbmVQcm9wZXJ0eSUnOiAkZGVmaW5lUHJvcGVydHksXG5cdCclT2JqZWN0LmdldFByb3RvdHlwZU9mJSc6ICRPYmplY3RHUE8sXG5cdCclTWF0aC5hYnMlJzogYWJzLFxuXHQnJU1hdGguZmxvb3IlJzogZmxvb3IsXG5cdCclTWF0aC5tYXglJzogbWF4LFxuXHQnJU1hdGgubWluJSc6IG1pbixcblx0JyVNYXRoLnBvdyUnOiBwb3csXG5cdCclTWF0aC5yb3VuZCUnOiByb3VuZCxcblx0JyVNYXRoLnNpZ24lJzogc2lnbixcblx0JyVSZWZsZWN0LmdldFByb3RvdHlwZU9mJSc6ICRSZWZsZWN0R1BPXG59O1xuXG5pZiAoZ2V0UHJvdG8pIHtcblx0dHJ5IHtcblx0XHRudWxsLmVycm9yOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC1leHByZXNzaW9uc1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0Ly8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtc2hhZG93cmVhbG0vcHVsbC8zODQjaXNzdWVjb21tZW50LTEzNjQyNjQyMjlcblx0XHR2YXIgZXJyb3JQcm90byA9IGdldFByb3RvKGdldFByb3RvKGUpKTtcblx0XHRJTlRSSU5TSUNTWyclRXJyb3IucHJvdG90eXBlJSddID0gZXJyb3JQcm90bztcblx0fVxufVxuXG52YXIgZ2V0QXN5bmNGdW5jdGlvbiA9IHJlcXVpcmUoJ2FzeW5jLWZ1bmN0aW9uJyk7XG52YXIgZ2V0R2VuZXJhdG9yRnVuY3Rpb24gPSByZXF1aXJlKCdnZW5lcmF0b3ItZnVuY3Rpb24nKTtcbnZhciBnZXRBc3luY0dlbmVyYXRvckZ1bmN0aW9uID0gcmVxdWlyZSgnYXN5bmMtZ2VuZXJhdG9yLWZ1bmN0aW9uJyk7XG5cbnZhciBkb0V2YWwgPSBmdW5jdGlvbiBkb0V2YWwobmFtZSkge1xuXHR2YXIgdmFsdWU7XG5cdGlmIChuYW1lID09PSAnJUFzeW5jRnVuY3Rpb24lJykge1xuXHRcdHZhbHVlID0gZ2V0QXN5bmNGdW5jdGlvbigpIHx8IHZvaWQgdW5kZWZpbmVkO1xuXHR9IGVsc2UgaWYgKG5hbWUgPT09ICclR2VuZXJhdG9yRnVuY3Rpb24lJykge1xuXHRcdHZhbHVlID0gZ2V0R2VuZXJhdG9yRnVuY3Rpb24oKSB8fCB2b2lkIHVuZGVmaW5lZDtcblx0fSBlbHNlIGlmIChuYW1lID09PSAnJUFzeW5jR2VuZXJhdG9yRnVuY3Rpb24lJykge1xuXHRcdHZhbHVlID0gZ2V0QXN5bmNHZW5lcmF0b3JGdW5jdGlvbigpIHx8IHZvaWQgdW5kZWZpbmVkO1xuXHR9IGVsc2UgaWYgKG5hbWUgPT09ICclQXN5bmNHZW5lcmF0b3IlJykge1xuXHRcdHZhciBmbiA9IGRvRXZhbCgnJUFzeW5jR2VuZXJhdG9yRnVuY3Rpb24lJyk7XG5cdFx0aWYgKGZuKSB7XG5cdFx0XHR2YWx1ZSA9IGZuLnByb3RvdHlwZTtcblx0XHR9XG5cdH0gZWxzZSBpZiAobmFtZSA9PT0gJyVBc3luY0l0ZXJhdG9yUHJvdG90eXBlJScpIHtcblx0XHR2YXIgZ2VuID0gZG9FdmFsKCclQXN5bmNHZW5lcmF0b3IlJyk7XG5cdFx0aWYgKGdlbiAmJiBnZXRQcm90bykge1xuXHRcdFx0dmFsdWUgPSBnZXRQcm90byhnZW4ucHJvdG90eXBlKTtcblx0XHR9XG5cdH1cblxuXHRJTlRSSU5TSUNTW25hbWVdID0gdmFsdWU7XG5cblx0cmV0dXJuIHZhbHVlO1xufTtcblxudmFyIExFR0FDWV9BTElBU0VTID0ge1xuXHRfX3Byb3RvX186IG51bGwsXG5cdCclQXJyYXlCdWZmZXJQcm90b3R5cGUlJzogWydBcnJheUJ1ZmZlcicsICdwcm90b3R5cGUnXSxcblx0JyVBcnJheVByb3RvdHlwZSUnOiBbJ0FycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJUFycmF5UHJvdG9fZW50cmllcyUnOiBbJ0FycmF5JywgJ3Byb3RvdHlwZScsICdlbnRyaWVzJ10sXG5cdCclQXJyYXlQcm90b19mb3JFYWNoJSc6IFsnQXJyYXknLCAncHJvdG90eXBlJywgJ2ZvckVhY2gnXSxcblx0JyVBcnJheVByb3RvX2tleXMlJzogWydBcnJheScsICdwcm90b3R5cGUnLCAna2V5cyddLFxuXHQnJUFycmF5UHJvdG9fdmFsdWVzJSc6IFsnQXJyYXknLCAncHJvdG90eXBlJywgJ3ZhbHVlcyddLFxuXHQnJUFzeW5jRnVuY3Rpb25Qcm90b3R5cGUlJzogWydBc3luY0Z1bmN0aW9uJywgJ3Byb3RvdHlwZSddLFxuXHQnJUFzeW5jR2VuZXJhdG9yJSc6IFsnQXN5bmNHZW5lcmF0b3JGdW5jdGlvbicsICdwcm90b3R5cGUnXSxcblx0JyVBc3luY0dlbmVyYXRvclByb3RvdHlwZSUnOiBbJ0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24nLCAncHJvdG90eXBlJywgJ3Byb3RvdHlwZSddLFxuXHQnJUJvb2xlYW5Qcm90b3R5cGUlJzogWydCb29sZWFuJywgJ3Byb3RvdHlwZSddLFxuXHQnJURhdGFWaWV3UHJvdG90eXBlJSc6IFsnRGF0YVZpZXcnLCAncHJvdG90eXBlJ10sXG5cdCclRGF0ZVByb3RvdHlwZSUnOiBbJ0RhdGUnLCAncHJvdG90eXBlJ10sXG5cdCclRXJyb3JQcm90b3R5cGUlJzogWydFcnJvcicsICdwcm90b3R5cGUnXSxcblx0JyVFdmFsRXJyb3JQcm90b3R5cGUlJzogWydFdmFsRXJyb3InLCAncHJvdG90eXBlJ10sXG5cdCclRmxvYXQzMkFycmF5UHJvdG90eXBlJSc6IFsnRmxvYXQzMkFycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJUZsb2F0NjRBcnJheVByb3RvdHlwZSUnOiBbJ0Zsb2F0NjRBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVGdW5jdGlvblByb3RvdHlwZSUnOiBbJ0Z1bmN0aW9uJywgJ3Byb3RvdHlwZSddLFxuXHQnJUdlbmVyYXRvciUnOiBbJ0dlbmVyYXRvckZ1bmN0aW9uJywgJ3Byb3RvdHlwZSddLFxuXHQnJUdlbmVyYXRvclByb3RvdHlwZSUnOiBbJ0dlbmVyYXRvckZ1bmN0aW9uJywgJ3Byb3RvdHlwZScsICdwcm90b3R5cGUnXSxcblx0JyVJbnQ4QXJyYXlQcm90b3R5cGUlJzogWydJbnQ4QXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclSW50MTZBcnJheVByb3RvdHlwZSUnOiBbJ0ludDE2QXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclSW50MzJBcnJheVByb3RvdHlwZSUnOiBbJ0ludDMyQXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclSlNPTlBhcnNlJSc6IFsnSlNPTicsICdwYXJzZSddLFxuXHQnJUpTT05TdHJpbmdpZnklJzogWydKU09OJywgJ3N0cmluZ2lmeSddLFxuXHQnJU1hcFByb3RvdHlwZSUnOiBbJ01hcCcsICdwcm90b3R5cGUnXSxcblx0JyVOdW1iZXJQcm90b3R5cGUlJzogWydOdW1iZXInLCAncHJvdG90eXBlJ10sXG5cdCclT2JqZWN0UHJvdG90eXBlJSc6IFsnT2JqZWN0JywgJ3Byb3RvdHlwZSddLFxuXHQnJU9ialByb3RvX3RvU3RyaW5nJSc6IFsnT2JqZWN0JywgJ3Byb3RvdHlwZScsICd0b1N0cmluZyddLFxuXHQnJU9ialByb3RvX3ZhbHVlT2YlJzogWydPYmplY3QnLCAncHJvdG90eXBlJywgJ3ZhbHVlT2YnXSxcblx0JyVQcm9taXNlUHJvdG90eXBlJSc6IFsnUHJvbWlzZScsICdwcm90b3R5cGUnXSxcblx0JyVQcm9taXNlUHJvdG9fdGhlbiUnOiBbJ1Byb21pc2UnLCAncHJvdG90eXBlJywgJ3RoZW4nXSxcblx0JyVQcm9taXNlX2FsbCUnOiBbJ1Byb21pc2UnLCAnYWxsJ10sXG5cdCclUHJvbWlzZV9yZWplY3QlJzogWydQcm9taXNlJywgJ3JlamVjdCddLFxuXHQnJVByb21pc2VfcmVzb2x2ZSUnOiBbJ1Byb21pc2UnLCAncmVzb2x2ZSddLFxuXHQnJVJhbmdlRXJyb3JQcm90b3R5cGUlJzogWydSYW5nZUVycm9yJywgJ3Byb3RvdHlwZSddLFxuXHQnJVJlZmVyZW5jZUVycm9yUHJvdG90eXBlJSc6IFsnUmVmZXJlbmNlRXJyb3InLCAncHJvdG90eXBlJ10sXG5cdCclUmVnRXhwUHJvdG90eXBlJSc6IFsnUmVnRXhwJywgJ3Byb3RvdHlwZSddLFxuXHQnJVNldFByb3RvdHlwZSUnOiBbJ1NldCcsICdwcm90b3R5cGUnXSxcblx0JyVTaGFyZWRBcnJheUJ1ZmZlclByb3RvdHlwZSUnOiBbJ1NoYXJlZEFycmF5QnVmZmVyJywgJ3Byb3RvdHlwZSddLFxuXHQnJVN0cmluZ1Byb3RvdHlwZSUnOiBbJ1N0cmluZycsICdwcm90b3R5cGUnXSxcblx0JyVTeW1ib2xQcm90b3R5cGUlJzogWydTeW1ib2wnLCAncHJvdG90eXBlJ10sXG5cdCclU3ludGF4RXJyb3JQcm90b3R5cGUlJzogWydTeW50YXhFcnJvcicsICdwcm90b3R5cGUnXSxcblx0JyVUeXBlZEFycmF5UHJvdG90eXBlJSc6IFsnVHlwZWRBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVUeXBlRXJyb3JQcm90b3R5cGUlJzogWydUeXBlRXJyb3InLCAncHJvdG90eXBlJ10sXG5cdCclVWludDhBcnJheVByb3RvdHlwZSUnOiBbJ1VpbnQ4QXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclVWludDhDbGFtcGVkQXJyYXlQcm90b3R5cGUlJzogWydVaW50OENsYW1wZWRBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVVaW50MTZBcnJheVByb3RvdHlwZSUnOiBbJ1VpbnQxNkFycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJVVpbnQzMkFycmF5UHJvdG90eXBlJSc6IFsnVWludDMyQXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclVVJJRXJyb3JQcm90b3R5cGUlJzogWydVUklFcnJvcicsICdwcm90b3R5cGUnXSxcblx0JyVXZWFrTWFwUHJvdG90eXBlJSc6IFsnV2Vha01hcCcsICdwcm90b3R5cGUnXSxcblx0JyVXZWFrU2V0UHJvdG90eXBlJSc6IFsnV2Vha1NldCcsICdwcm90b3R5cGUnXVxufTtcblxudmFyIGJpbmQgPSByZXF1aXJlKCdmdW5jdGlvbi1iaW5kJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnaGFzb3duJyk7XG52YXIgJGNvbmNhdCA9IGJpbmQuY2FsbCgkY2FsbCwgQXJyYXkucHJvdG90eXBlLmNvbmNhdCk7XG52YXIgJHNwbGljZUFwcGx5ID0gYmluZC5jYWxsKCRhcHBseSwgQXJyYXkucHJvdG90eXBlLnNwbGljZSk7XG52YXIgJHJlcGxhY2UgPSBiaW5kLmNhbGwoJGNhbGwsIFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSk7XG52YXIgJHN0clNsaWNlID0gYmluZC5jYWxsKCRjYWxsLCBTdHJpbmcucHJvdG90eXBlLnNsaWNlKTtcbnZhciAkZXhlYyA9IGJpbmQuY2FsbCgkY2FsbCwgUmVnRXhwLnByb3RvdHlwZS5leGVjKTtcblxuLyogYWRhcHRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sb2Rhc2gvbG9kYXNoL2Jsb2IvNC4xNy4xNS9kaXN0L2xvZGFzaC5qcyNMNjczNS1MNjc0NCAqL1xudmFyIHJlUHJvcE5hbWUgPSAvW14lLltcXF1dK3xcXFsoPzooLT9cXGQrKD86XFwuXFxkKyk/KXwoW1wiJ10pKCg/Oig/IVxcMilbXlxcXFxdfFxcXFwuKSo/KVxcMilcXF18KD89KD86XFwufFxcW1xcXSkoPzpcXC58XFxbXFxdfCUkKSkvZztcbnZhciByZUVzY2FwZUNoYXIgPSAvXFxcXChcXFxcKT8vZzsgLyoqIFVzZWQgdG8gbWF0Y2ggYmFja3NsYXNoZXMgaW4gcHJvcGVydHkgcGF0aHMuICovXG52YXIgc3RyaW5nVG9QYXRoID0gZnVuY3Rpb24gc3RyaW5nVG9QYXRoKHN0cmluZykge1xuXHR2YXIgZmlyc3QgPSAkc3RyU2xpY2Uoc3RyaW5nLCAwLCAxKTtcblx0dmFyIGxhc3QgPSAkc3RyU2xpY2Uoc3RyaW5nLCAtMSk7XG5cdGlmIChmaXJzdCA9PT0gJyUnICYmIGxhc3QgIT09ICclJykge1xuXHRcdHRocm93IG5ldyAkU3ludGF4RXJyb3IoJ2ludmFsaWQgaW50cmluc2ljIHN5bnRheCwgZXhwZWN0ZWQgY2xvc2luZyBgJWAnKTtcblx0fSBlbHNlIGlmIChsYXN0ID09PSAnJScgJiYgZmlyc3QgIT09ICclJykge1xuXHRcdHRocm93IG5ldyAkU3ludGF4RXJyb3IoJ2ludmFsaWQgaW50cmluc2ljIHN5bnRheCwgZXhwZWN0ZWQgb3BlbmluZyBgJWAnKTtcblx0fVxuXHR2YXIgcmVzdWx0ID0gW107XG5cdCRyZXBsYWNlKHN0cmluZywgcmVQcm9wTmFtZSwgZnVuY3Rpb24gKG1hdGNoLCBudW1iZXIsIHF1b3RlLCBzdWJTdHJpbmcpIHtcblx0XHRyZXN1bHRbcmVzdWx0Lmxlbmd0aF0gPSBxdW90ZSA/ICRyZXBsYWNlKHN1YlN0cmluZywgcmVFc2NhcGVDaGFyLCAnJDEnKSA6IG51bWJlciB8fCBtYXRjaDtcblx0fSk7XG5cdHJldHVybiByZXN1bHQ7XG59O1xuLyogZW5kIGFkYXB0YXRpb24gKi9cblxudmFyIGdldEJhc2VJbnRyaW5zaWMgPSBmdW5jdGlvbiBnZXRCYXNlSW50cmluc2ljKG5hbWUsIGFsbG93TWlzc2luZykge1xuXHR2YXIgaW50cmluc2ljTmFtZSA9IG5hbWU7XG5cdHZhciBhbGlhcztcblx0aWYgKGhhc093bihMRUdBQ1lfQUxJQVNFUywgaW50cmluc2ljTmFtZSkpIHtcblx0XHRhbGlhcyA9IExFR0FDWV9BTElBU0VTW2ludHJpbnNpY05hbWVdO1xuXHRcdGludHJpbnNpY05hbWUgPSAnJScgKyBhbGlhc1swXSArICclJztcblx0fVxuXG5cdGlmIChoYXNPd24oSU5UUklOU0lDUywgaW50cmluc2ljTmFtZSkpIHtcblx0XHR2YXIgdmFsdWUgPSBJTlRSSU5TSUNTW2ludHJpbnNpY05hbWVdO1xuXHRcdGlmICh2YWx1ZSA9PT0gbmVlZHNFdmFsKSB7XG5cdFx0XHR2YWx1ZSA9IGRvRXZhbChpbnRyaW5zaWNOYW1lKTtcblx0XHR9XG5cdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgJiYgIWFsbG93TWlzc2luZykge1xuXHRcdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ2ludHJpbnNpYyAnICsgbmFtZSArICcgZXhpc3RzLCBidXQgaXMgbm90IGF2YWlsYWJsZS4gUGxlYXNlIGZpbGUgYW4gaXNzdWUhJyk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHtcblx0XHRcdGFsaWFzOiBhbGlhcyxcblx0XHRcdG5hbWU6IGludHJpbnNpY05hbWUsXG5cdFx0XHR2YWx1ZTogdmFsdWVcblx0XHR9O1xuXHR9XG5cblx0dGhyb3cgbmV3ICRTeW50YXhFcnJvcignaW50cmluc2ljICcgKyBuYW1lICsgJyBkb2VzIG5vdCBleGlzdCEnKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gR2V0SW50cmluc2ljKG5hbWUsIGFsbG93TWlzc2luZykge1xuXHRpZiAodHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnIHx8IG5hbWUubGVuZ3RoID09PSAwKSB7XG5cdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ2ludHJpbnNpYyBuYW1lIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG5cdH1cblx0aWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHR5cGVvZiBhbGxvd01pc3NpbmcgIT09ICdib29sZWFuJykge1xuXHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdcImFsbG93TWlzc2luZ1wiIGFyZ3VtZW50IG11c3QgYmUgYSBib29sZWFuJyk7XG5cdH1cblxuXHRpZiAoJGV4ZWMoL14lP1teJV0qJT8kLywgbmFtZSkgPT09IG51bGwpIHtcblx0XHR0aHJvdyBuZXcgJFN5bnRheEVycm9yKCdgJWAgbWF5IG5vdCBiZSBwcmVzZW50IGFueXdoZXJlIGJ1dCBhdCB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgdGhlIGludHJpbnNpYyBuYW1lJyk7XG5cdH1cblx0dmFyIHBhcnRzID0gc3RyaW5nVG9QYXRoKG5hbWUpO1xuXHR2YXIgaW50cmluc2ljQmFzZU5hbWUgPSBwYXJ0cy5sZW5ndGggPiAwID8gcGFydHNbMF0gOiAnJztcblxuXHR2YXIgaW50cmluc2ljID0gZ2V0QmFzZUludHJpbnNpYygnJScgKyBpbnRyaW5zaWNCYXNlTmFtZSArICclJywgYWxsb3dNaXNzaW5nKTtcblx0dmFyIGludHJpbnNpY1JlYWxOYW1lID0gaW50cmluc2ljLm5hbWU7XG5cdHZhciB2YWx1ZSA9IGludHJpbnNpYy52YWx1ZTtcblx0dmFyIHNraXBGdXJ0aGVyQ2FjaGluZyA9IGZhbHNlO1xuXG5cdHZhciBhbGlhcyA9IGludHJpbnNpYy5hbGlhcztcblx0aWYgKGFsaWFzKSB7XG5cdFx0aW50cmluc2ljQmFzZU5hbWUgPSBhbGlhc1swXTtcblx0XHQkc3BsaWNlQXBwbHkocGFydHMsICRjb25jYXQoWzAsIDFdLCBhbGlhcykpO1xuXHR9XG5cblx0Zm9yICh2YXIgaSA9IDEsIGlzT3duID0gdHJ1ZTsgaSA8IHBhcnRzLmxlbmd0aDsgaSArPSAxKSB7XG5cdFx0dmFyIHBhcnQgPSBwYXJ0c1tpXTtcblx0XHR2YXIgZmlyc3QgPSAkc3RyU2xpY2UocGFydCwgMCwgMSk7XG5cdFx0dmFyIGxhc3QgPSAkc3RyU2xpY2UocGFydCwgLTEpO1xuXHRcdGlmIChcblx0XHRcdChcblx0XHRcdFx0KGZpcnN0ID09PSAnXCInIHx8IGZpcnN0ID09PSBcIidcIiB8fCBmaXJzdCA9PT0gJ2AnKVxuXHRcdFx0XHR8fCAobGFzdCA9PT0gJ1wiJyB8fCBsYXN0ID09PSBcIidcIiB8fCBsYXN0ID09PSAnYCcpXG5cdFx0XHQpXG5cdFx0XHQmJiBmaXJzdCAhPT0gbGFzdFxuXHRcdCkge1xuXHRcdFx0dGhyb3cgbmV3ICRTeW50YXhFcnJvcigncHJvcGVydHkgbmFtZXMgd2l0aCBxdW90ZXMgbXVzdCBoYXZlIG1hdGNoaW5nIHF1b3RlcycpO1xuXHRcdH1cblx0XHRpZiAocGFydCA9PT0gJ2NvbnN0cnVjdG9yJyB8fCAhaXNPd24pIHtcblx0XHRcdHNraXBGdXJ0aGVyQ2FjaGluZyA9IHRydWU7XG5cdFx0fVxuXG5cdFx0aW50cmluc2ljQmFzZU5hbWUgKz0gJy4nICsgcGFydDtcblx0XHRpbnRyaW5zaWNSZWFsTmFtZSA9ICclJyArIGludHJpbnNpY0Jhc2VOYW1lICsgJyUnO1xuXG5cdFx0aWYgKGhhc093bihJTlRSSU5TSUNTLCBpbnRyaW5zaWNSZWFsTmFtZSkpIHtcblx0XHRcdHZhbHVlID0gSU5UUklOU0lDU1tpbnRyaW5zaWNSZWFsTmFtZV07XG5cdFx0fSBlbHNlIGlmICh2YWx1ZSAhPSBudWxsKSB7XG5cdFx0XHRpZiAoIShwYXJ0IGluIHZhbHVlKSkge1xuXHRcdFx0XHRpZiAoIWFsbG93TWlzc2luZykge1xuXHRcdFx0XHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdiYXNlIGludHJpbnNpYyBmb3IgJyArIG5hbWUgKyAnIGV4aXN0cywgYnV0IHRoZSBwcm9wZXJ0eSBpcyBub3QgYXZhaWxhYmxlLicpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB2b2lkIHVuZGVmaW5lZDtcblx0XHRcdH1cblx0XHRcdGlmICgkZ09QRCAmJiAoaSArIDEpID49IHBhcnRzLmxlbmd0aCkge1xuXHRcdFx0XHR2YXIgZGVzYyA9ICRnT1BEKHZhbHVlLCBwYXJ0KTtcblx0XHRcdFx0aXNPd24gPSAhIWRlc2M7XG5cblx0XHRcdFx0Ly8gQnkgY29udmVudGlvbiwgd2hlbiBhIGRhdGEgcHJvcGVydHkgaXMgY29udmVydGVkIHRvIGFuIGFjY2Vzc29yXG5cdFx0XHRcdC8vIHByb3BlcnR5IHRvIGVtdWxhdGUgYSBkYXRhIHByb3BlcnR5IHRoYXQgZG9lcyBub3Qgc3VmZmVyIGZyb21cblx0XHRcdFx0Ly8gdGhlIG92ZXJyaWRlIG1pc3Rha2UsIHRoYXQgYWNjZXNzb3IncyBnZXR0ZXIgaXMgbWFya2VkIHdpdGhcblx0XHRcdFx0Ly8gYW4gYG9yaWdpbmFsVmFsdWVgIHByb3BlcnR5LiBIZXJlLCB3aGVuIHdlIGRldGVjdCB0aGlzLCB3ZVxuXHRcdFx0XHQvLyB1cGhvbGQgdGhlIGlsbHVzaW9uIGJ5IHByZXRlbmRpbmcgdG8gc2VlIHRoYXQgb3JpZ2luYWwgZGF0YVxuXHRcdFx0XHQvLyBwcm9wZXJ0eSwgaS5lLiwgcmV0dXJuaW5nIHRoZSB2YWx1ZSByYXRoZXIgdGhhbiB0aGUgZ2V0dGVyXG5cdFx0XHRcdC8vIGl0c2VsZi5cblx0XHRcdFx0aWYgKGlzT3duICYmICdnZXQnIGluIGRlc2MgJiYgISgnb3JpZ2luYWxWYWx1ZScgaW4gZGVzYy5nZXQpKSB7XG5cdFx0XHRcdFx0dmFsdWUgPSBkZXNjLmdldDtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR2YWx1ZSA9IHZhbHVlW3BhcnRdO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpc093biA9IGhhc093bih2YWx1ZSwgcGFydCk7XG5cdFx0XHRcdHZhbHVlID0gdmFsdWVbcGFydF07XG5cdFx0XHR9XG5cblx0XHRcdGlmIChpc093biAmJiAhc2tpcEZ1cnRoZXJDYWNoaW5nKSB7XG5cdFx0XHRcdElOVFJJTlNJQ1NbaW50cmluc2ljUmVhbE5hbWVdID0gdmFsdWU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHJldHVybiB2YWx1ZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBHZXRJbnRyaW5zaWMgPSByZXF1aXJlKCdnZXQtaW50cmluc2ljJyk7XG5cbnZhciBjYWxsQmluZEJhc2ljID0gcmVxdWlyZSgnY2FsbC1iaW5kLWFwcGx5LWhlbHBlcnMnKTtcblxuLyoqIEB0eXBlIHsodGhpc0FyZzogc3RyaW5nLCBzZWFyY2hTdHJpbmc6IHN0cmluZywgcG9zaXRpb24/OiBudW1iZXIpID0+IG51bWJlcn0gKi9cbnZhciAkaW5kZXhPZiA9IGNhbGxCaW5kQmFzaWMoW0dldEludHJpbnNpYygnJVN0cmluZy5wcm90b3R5cGUuaW5kZXhPZiUnKV0pO1xuXG4vKiogQHR5cGUge2ltcG9ydCgnLicpfSAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjYWxsQm91bmRJbnRyaW5zaWMobmFtZSwgYWxsb3dNaXNzaW5nKSB7XG5cdC8qIGVzbGludCBuby1leHRyYS1wYXJlbnM6IDAgKi9cblxuXHR2YXIgaW50cmluc2ljID0gLyoqIEB0eXBlIHsodGhpczogdW5rbm93biwgLi4uYXJnczogdW5rbm93bltdKSA9PiB1bmtub3dufSAqLyAoR2V0SW50cmluc2ljKG5hbWUsICEhYWxsb3dNaXNzaW5nKSk7XG5cdGlmICh0eXBlb2YgaW50cmluc2ljID09PSAnZnVuY3Rpb24nICYmICRpbmRleE9mKG5hbWUsICcucHJvdG90eXBlLicpID4gLTEpIHtcblx0XHRyZXR1cm4gY2FsbEJpbmRCYXNpYygvKiogQHR5cGUge2NvbnN0fSAqLyAoW2ludHJpbnNpY10pKTtcblx0fVxuXHRyZXR1cm4gaW50cmluc2ljO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEdldEludHJpbnNpYyA9IHJlcXVpcmUoJ2dldC1pbnRyaW5zaWMnKTtcbnZhciBjYWxsQm91bmQgPSByZXF1aXJlKCdjYWxsLWJvdW5kJyk7XG52YXIgaW5zcGVjdCA9IHJlcXVpcmUoJ29iamVjdC1pbnNwZWN0Jyk7XG5cbnZhciAkVHlwZUVycm9yID0gcmVxdWlyZSgnZXMtZXJyb3JzL3R5cGUnKTtcbnZhciAkTWFwID0gR2V0SW50cmluc2ljKCclTWFwJScsIHRydWUpO1xuXG4vKiogQHR5cGUgezxLLCBWPih0aGlzQXJnOiBNYXA8SywgVj4sIGtleTogSykgPT4gVn0gKi9cbnZhciAkbWFwR2V0ID0gY2FsbEJvdW5kKCdNYXAucHJvdG90eXBlLmdldCcsIHRydWUpO1xuLyoqIEB0eXBlIHs8SywgVj4odGhpc0FyZzogTWFwPEssIFY+LCBrZXk6IEssIHZhbHVlOiBWKSA9PiB2b2lkfSAqL1xudmFyICRtYXBTZXQgPSBjYWxsQm91bmQoJ01hcC5wcm90b3R5cGUuc2V0JywgdHJ1ZSk7XG4vKiogQHR5cGUgezxLLCBWPih0aGlzQXJnOiBNYXA8SywgVj4sIGtleTogSykgPT4gYm9vbGVhbn0gKi9cbnZhciAkbWFwSGFzID0gY2FsbEJvdW5kKCdNYXAucHJvdG90eXBlLmhhcycsIHRydWUpO1xuLyoqIEB0eXBlIHs8SywgVj4odGhpc0FyZzogTWFwPEssIFY+LCBrZXk6IEspID0+IGJvb2xlYW59ICovXG52YXIgJG1hcERlbGV0ZSA9IGNhbGxCb3VuZCgnTWFwLnByb3RvdHlwZS5kZWxldGUnLCB0cnVlKTtcbi8qKiBAdHlwZSB7PEssIFY+KHRoaXNBcmc6IE1hcDxLLCBWPikgPT4gbnVtYmVyfSAqL1xudmFyICRtYXBTaXplID0gY2FsbEJvdW5kKCdNYXAucHJvdG90eXBlLnNpemUnLCB0cnVlKTtcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4nKX0gKi9cbm1vZHVsZS5leHBvcnRzID0gISEkTWFwICYmIC8qKiBAdHlwZSB7RXhjbHVkZTxpbXBvcnQoJy4nKSwgZmFsc2U+fSAqLyBmdW5jdGlvbiBnZXRTaWRlQ2hhbm5lbE1hcCgpIHtcblx0LyoqIEB0eXBlZGVmIHtSZXR1cm5UeXBlPHR5cGVvZiBnZXRTaWRlQ2hhbm5lbE1hcD59IENoYW5uZWwgKi9cblx0LyoqIEB0eXBlZGVmIHtQYXJhbWV0ZXJzPENoYW5uZWxbJ2dldCddPlswXX0gSyAqL1xuXHQvKiogQHR5cGVkZWYge1BhcmFtZXRlcnM8Q2hhbm5lbFsnc2V0J10+WzFdfSBWICovXG5cblx0LyoqIEB0eXBlIHtNYXA8SywgVj4gfCB1bmRlZmluZWR9ICovIHZhciAkbTtcblxuXHQvKiogQHR5cGUge0NoYW5uZWx9ICovXG5cdHZhciBjaGFubmVsID0ge1xuXHRcdGFzc2VydDogZnVuY3Rpb24gKGtleSkge1xuXHRcdFx0aWYgKCFjaGFubmVsLmhhcyhrZXkpKSB7XG5cdFx0XHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdTaWRlIGNoYW5uZWwgZG9lcyBub3QgY29udGFpbiAnICsgaW5zcGVjdChrZXkpKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdCdkZWxldGUnOiBmdW5jdGlvbiAoa2V5KSB7XG5cdFx0XHRpZiAoJG0pIHtcblx0XHRcdFx0dmFyIHJlc3VsdCA9ICRtYXBEZWxldGUoJG0sIGtleSk7XG5cdFx0XHRcdGlmICgkbWFwU2l6ZSgkbSkgPT09IDApIHtcblx0XHRcdFx0XHQkbSA9IHZvaWQgdW5kZWZpbmVkO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSxcblx0XHRnZXQ6IGZ1bmN0aW9uIChrZXkpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBjb25zaXN0ZW50LXJldHVyblxuXHRcdFx0aWYgKCRtKSB7XG5cdFx0XHRcdHJldHVybiAkbWFwR2V0KCRtLCBrZXkpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0aGFzOiBmdW5jdGlvbiAoa2V5KSB7XG5cdFx0XHRpZiAoJG0pIHtcblx0XHRcdFx0cmV0dXJuICRtYXBIYXMoJG0sIGtleSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSxcblx0XHRzZXQ6IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG5cdFx0XHRpZiAoISRtKSB7XG5cdFx0XHRcdC8vIEB0cy1leHBlY3QtZXJyb3IgVFMgY2FuJ3QgaGFuZGxlIG5hcnJvd2luZyBhIHZhcmlhYmxlIGluc2lkZSBhIGNsb3N1cmVcblx0XHRcdFx0JG0gPSBuZXcgJE1hcCgpO1xuXHRcdFx0fVxuXHRcdFx0JG1hcFNldCgkbSwga2V5LCB2YWx1ZSk7XG5cdFx0fVxuXHR9O1xuXG5cdC8vIEB0cy1leHBlY3QtZXJyb3IgVE9ETzogZmlndXJlIG91dCB3aHkgVFMgaXMgZXJyb3JpbmcgaGVyZVxuXHRyZXR1cm4gY2hhbm5lbDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBHZXRJbnRyaW5zaWMgPSByZXF1aXJlKCdnZXQtaW50cmluc2ljJyk7XG52YXIgY2FsbEJvdW5kID0gcmVxdWlyZSgnY2FsbC1ib3VuZCcpO1xudmFyIGluc3BlY3QgPSByZXF1aXJlKCdvYmplY3QtaW5zcGVjdCcpO1xudmFyIGdldFNpZGVDaGFubmVsTWFwID0gcmVxdWlyZSgnc2lkZS1jaGFubmVsLW1hcCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IHJlcXVpcmUoJ2VzLWVycm9ycy90eXBlJyk7XG52YXIgJFdlYWtNYXAgPSBHZXRJbnRyaW5zaWMoJyVXZWFrTWFwJScsIHRydWUpO1xuXG4vKiogQHR5cGUgezxLIGV4dGVuZHMgb2JqZWN0LCBWPih0aGlzQXJnOiBXZWFrTWFwPEssIFY+LCBrZXk6IEspID0+IFZ9ICovXG52YXIgJHdlYWtNYXBHZXQgPSBjYWxsQm91bmQoJ1dlYWtNYXAucHJvdG90eXBlLmdldCcsIHRydWUpO1xuLyoqIEB0eXBlIHs8SyBleHRlbmRzIG9iamVjdCwgVj4odGhpc0FyZzogV2Vha01hcDxLLCBWPiwga2V5OiBLLCB2YWx1ZTogVikgPT4gdm9pZH0gKi9cbnZhciAkd2Vha01hcFNldCA9IGNhbGxCb3VuZCgnV2Vha01hcC5wcm90b3R5cGUuc2V0JywgdHJ1ZSk7XG4vKiogQHR5cGUgezxLIGV4dGVuZHMgb2JqZWN0LCBWPih0aGlzQXJnOiBXZWFrTWFwPEssIFY+LCBrZXk6IEspID0+IGJvb2xlYW59ICovXG52YXIgJHdlYWtNYXBIYXMgPSBjYWxsQm91bmQoJ1dlYWtNYXAucHJvdG90eXBlLmhhcycsIHRydWUpO1xuLyoqIEB0eXBlIHs8SyBleHRlbmRzIG9iamVjdCwgVj4odGhpc0FyZzogV2Vha01hcDxLLCBWPiwga2V5OiBLKSA9PiBib29sZWFufSAqL1xudmFyICR3ZWFrTWFwRGVsZXRlID0gY2FsbEJvdW5kKCdXZWFrTWFwLnByb3RvdHlwZS5kZWxldGUnLCB0cnVlKTtcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4nKX0gKi9cbm1vZHVsZS5leHBvcnRzID0gJFdlYWtNYXBcblx0PyAvKiogQHR5cGUge0V4Y2x1ZGU8aW1wb3J0KCcuJyksIGZhbHNlPn0gKi8gZnVuY3Rpb24gZ2V0U2lkZUNoYW5uZWxXZWFrTWFwKCkge1xuXHRcdC8qKiBAdHlwZWRlZiB7UmV0dXJuVHlwZTx0eXBlb2YgZ2V0U2lkZUNoYW5uZWxXZWFrTWFwPn0gQ2hhbm5lbCAqL1xuXHRcdC8qKiBAdHlwZWRlZiB7UGFyYW1ldGVyczxDaGFubmVsWydnZXQnXT5bMF19IEsgKi9cblx0XHQvKiogQHR5cGVkZWYge1BhcmFtZXRlcnM8Q2hhbm5lbFsnc2V0J10+WzFdfSBWICovXG5cblx0XHQvKiogQHR5cGUge1dlYWtNYXA8SyAmIG9iamVjdCwgVj4gfCB1bmRlZmluZWR9ICovIHZhciAkd207XG5cdFx0LyoqIEB0eXBlIHtDaGFubmVsIHwgdW5kZWZpbmVkfSAqLyB2YXIgJG07XG5cblx0XHQvKiogQHR5cGUge0NoYW5uZWx9ICovXG5cdFx0dmFyIGNoYW5uZWwgPSB7XG5cdFx0XHRhc3NlcnQ6IGZ1bmN0aW9uIChrZXkpIHtcblx0XHRcdFx0aWYgKCFjaGFubmVsLmhhcyhrZXkpKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ1NpZGUgY2hhbm5lbCBkb2VzIG5vdCBjb250YWluICcgKyBpbnNwZWN0KGtleSkpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0J2RlbGV0ZSc6IGZ1bmN0aW9uIChrZXkpIHtcblx0XHRcdFx0aWYgKCRXZWFrTWFwICYmIGtleSAmJiAodHlwZW9mIGtleSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIGtleSA9PT0gJ2Z1bmN0aW9uJykpIHtcblx0XHRcdFx0XHRpZiAoJHdtKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gJHdlYWtNYXBEZWxldGUoJHdtLCBrZXkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmIChnZXRTaWRlQ2hhbm5lbE1hcCkge1xuXHRcdFx0XHRcdGlmICgkbSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuICRtWydkZWxldGUnXShrZXkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9LFxuXHRcdFx0Z2V0OiBmdW5jdGlvbiAoa2V5KSB7XG5cdFx0XHRcdGlmICgkV2Vha01hcCAmJiBrZXkgJiYgKHR5cGVvZiBrZXkgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBrZXkgPT09ICdmdW5jdGlvbicpKSB7XG5cdFx0XHRcdFx0aWYgKCR3bSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuICR3ZWFrTWFwR2V0KCR3bSwga2V5KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuICRtICYmICRtLmdldChrZXkpO1xuXHRcdFx0fSxcblx0XHRcdGhhczogZnVuY3Rpb24gKGtleSkge1xuXHRcdFx0XHRpZiAoJFdlYWtNYXAgJiYga2V5ICYmICh0eXBlb2Yga2V5ID09PSAnb2JqZWN0JyB8fCB0eXBlb2Yga2V5ID09PSAnZnVuY3Rpb24nKSkge1xuXHRcdFx0XHRcdGlmICgkd20pIHtcblx0XHRcdFx0XHRcdHJldHVybiAkd2Vha01hcEhhcygkd20sIGtleSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiAhISRtICYmICRtLmhhcyhrZXkpO1xuXHRcdFx0fSxcblx0XHRcdHNldDogZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcblx0XHRcdFx0aWYgKCRXZWFrTWFwICYmIGtleSAmJiAodHlwZW9mIGtleSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIGtleSA9PT0gJ2Z1bmN0aW9uJykpIHtcblx0XHRcdFx0XHRpZiAoISR3bSkge1xuXHRcdFx0XHRcdFx0JHdtID0gbmV3ICRXZWFrTWFwKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCR3ZWFrTWFwU2V0KCR3bSwga2V5LCB2YWx1ZSk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoZ2V0U2lkZUNoYW5uZWxNYXApIHtcblx0XHRcdFx0XHRpZiAoISRtKSB7XG5cdFx0XHRcdFx0XHQkbSA9IGdldFNpZGVDaGFubmVsTWFwKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1leHRyYS1wYXJlbnNcblx0XHRcdFx0XHQvKiogQHR5cGUge05vbk51bGxhYmxlPHR5cGVvZiAkbT59ICovICgkbSkuc2V0KGtleSwgdmFsdWUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdC8vIEB0cy1leHBlY3QtZXJyb3IgVE9ETzogZmlndXJlIG91dCB3aHkgdGhpcyBpcyBlcnJvcmluZ1xuXHRcdHJldHVybiBjaGFubmVsO1xuXHR9XG5cdDogZ2V0U2lkZUNoYW5uZWxNYXA7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciAkVHlwZUVycm9yID0gcmVxdWlyZSgnZXMtZXJyb3JzL3R5cGUnKTtcbnZhciBpbnNwZWN0ID0gcmVxdWlyZSgnb2JqZWN0LWluc3BlY3QnKTtcbnZhciBnZXRTaWRlQ2hhbm5lbExpc3QgPSByZXF1aXJlKCdzaWRlLWNoYW5uZWwtbGlzdCcpO1xudmFyIGdldFNpZGVDaGFubmVsTWFwID0gcmVxdWlyZSgnc2lkZS1jaGFubmVsLW1hcCcpO1xudmFyIGdldFNpZGVDaGFubmVsV2Vha01hcCA9IHJlcXVpcmUoJ3NpZGUtY2hhbm5lbC13ZWFrbWFwJyk7XG5cbnZhciBtYWtlQ2hhbm5lbCA9IGdldFNpZGVDaGFubmVsV2Vha01hcCB8fCBnZXRTaWRlQ2hhbm5lbE1hcCB8fCBnZXRTaWRlQ2hhbm5lbExpc3Q7XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuJyl9ICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdldFNpZGVDaGFubmVsKCkge1xuXHQvKiogQHR5cGVkZWYge1JldHVyblR5cGU8dHlwZW9mIGdldFNpZGVDaGFubmVsPn0gQ2hhbm5lbCAqL1xuXG5cdC8qKiBAdHlwZSB7Q2hhbm5lbCB8IHVuZGVmaW5lZH0gKi8gdmFyICRjaGFubmVsRGF0YTtcblxuXHQvKiogQHR5cGUge0NoYW5uZWx9ICovXG5cdHZhciBjaGFubmVsID0ge1xuXHRcdGFzc2VydDogZnVuY3Rpb24gKGtleSkge1xuXHRcdFx0aWYgKCFjaGFubmVsLmhhcyhrZXkpKSB7XG5cdFx0XHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdTaWRlIGNoYW5uZWwgZG9lcyBub3QgY29udGFpbiAnICsgaW5zcGVjdChrZXkpKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdCdkZWxldGUnOiBmdW5jdGlvbiAoa2V5KSB7XG5cdFx0XHRyZXR1cm4gISEkY2hhbm5lbERhdGEgJiYgJGNoYW5uZWxEYXRhWydkZWxldGUnXShrZXkpO1xuXHRcdH0sXG5cdFx0Z2V0OiBmdW5jdGlvbiAoa2V5KSB7XG5cdFx0XHRyZXR1cm4gJGNoYW5uZWxEYXRhICYmICRjaGFubmVsRGF0YS5nZXQoa2V5KTtcblx0XHR9LFxuXHRcdGhhczogZnVuY3Rpb24gKGtleSkge1xuXHRcdFx0cmV0dXJuICEhJGNoYW5uZWxEYXRhICYmICRjaGFubmVsRGF0YS5oYXMoa2V5KTtcblx0XHR9LFxuXHRcdHNldDogZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcblx0XHRcdGlmICghJGNoYW5uZWxEYXRhKSB7XG5cdFx0XHRcdCRjaGFubmVsRGF0YSA9IG1ha2VDaGFubmVsKCk7XG5cdFx0XHR9XG5cblx0XHRcdCRjaGFubmVsRGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG5cdFx0fVxuXHR9O1xuXHQvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE86IGZpZ3VyZSBvdXQgd2h5IHRoaXMgaXMgZXJyb3Jpbmdcblx0cmV0dXJuIGNoYW5uZWw7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgcmVwbGFjZSA9IFN0cmluZy5wcm90b3R5cGUucmVwbGFjZTtcbnZhciBwZXJjZW50VHdlbnRpZXMgPSAvJTIwL2c7XG5cbnZhciBGb3JtYXQgPSB7XG4gICAgUkZDMTczODogJ1JGQzE3MzgnLFxuICAgIFJGQzM5ODY6ICdSRkMzOTg2J1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgJ2RlZmF1bHQnOiBGb3JtYXQuUkZDMzk4NixcbiAgICBmb3JtYXR0ZXJzOiB7XG4gICAgICAgIFJGQzE3Mzg6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2UuY2FsbCh2YWx1ZSwgcGVyY2VudFR3ZW50aWVzLCAnKycpO1xuICAgICAgICB9LFxuICAgICAgICBSRkMzOTg2OiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBSRkMxNzM4OiBGb3JtYXQuUkZDMTczOCxcbiAgICBSRkMzOTg2OiBGb3JtYXQuUkZDMzk4NlxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGZvcm1hdHMgPSByZXF1aXJlKCcuL2Zvcm1hdHMnKTtcbnZhciBnZXRTaWRlQ2hhbm5lbCA9IHJlcXVpcmUoJ3NpZGUtY2hhbm5lbCcpO1xuXG52YXIgaGFzID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcblxuLy8gVHJhY2sgb2JqZWN0cyBjcmVhdGVkIGZyb20gYXJyYXlMaW1pdCBvdmVyZmxvdyB1c2luZyBzaWRlLWNoYW5uZWxcbi8vIFN0b3JlcyB0aGUgY3VycmVudCBtYXggbnVtZXJpYyBpbmRleCBmb3IgTygxKSBsb29rdXBcbnZhciBvdmVyZmxvd0NoYW5uZWwgPSBnZXRTaWRlQ2hhbm5lbCgpO1xuXG52YXIgbWFya092ZXJmbG93ID0gZnVuY3Rpb24gbWFya092ZXJmbG93KG9iaiwgbWF4SW5kZXgpIHtcbiAgICBvdmVyZmxvd0NoYW5uZWwuc2V0KG9iaiwgbWF4SW5kZXgpO1xuICAgIHJldHVybiBvYmo7XG59O1xuXG52YXIgaXNPdmVyZmxvdyA9IGZ1bmN0aW9uIGlzT3ZlcmZsb3cob2JqKSB7XG4gICAgcmV0dXJuIG92ZXJmbG93Q2hhbm5lbC5oYXMob2JqKTtcbn07XG5cbnZhciBnZXRNYXhJbmRleCA9IGZ1bmN0aW9uIGdldE1heEluZGV4KG9iaikge1xuICAgIHJldHVybiBvdmVyZmxvd0NoYW5uZWwuZ2V0KG9iaik7XG59O1xuXG52YXIgc2V0TWF4SW5kZXggPSBmdW5jdGlvbiBzZXRNYXhJbmRleChvYmosIG1heEluZGV4KSB7XG4gICAgb3ZlcmZsb3dDaGFubmVsLnNldChvYmosIG1heEluZGV4KTtcbn07XG5cbnZhciBoZXhUYWJsZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFycmF5ID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7ICsraSkge1xuICAgICAgICBhcnJheVthcnJheS5sZW5ndGhdID0gJyUnICsgKChpIDwgMTYgPyAnMCcgOiAnJykgKyBpLnRvU3RyaW5nKDE2KSkudG9VcHBlckNhc2UoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXJyYXk7XG59KCkpO1xuXG52YXIgY29tcGFjdFF1ZXVlID0gZnVuY3Rpb24gY29tcGFjdFF1ZXVlKHF1ZXVlKSB7XG4gICAgd2hpbGUgKHF1ZXVlLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBxdWV1ZS5wb3AoKTtcbiAgICAgICAgdmFyIG9iaiA9IGl0ZW0ub2JqW2l0ZW0ucHJvcF07XG5cbiAgICAgICAgaWYgKGlzQXJyYXkob2JqKSkge1xuICAgICAgICAgICAgdmFyIGNvbXBhY3RlZCA9IFtdO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG9iai5sZW5ndGg7ICsraikge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2JqW2pdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICBjb21wYWN0ZWRbY29tcGFjdGVkLmxlbmd0aF0gPSBvYmpbal07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpdGVtLm9ialtpdGVtLnByb3BdID0gY29tcGFjdGVkO1xuICAgICAgICB9XG4gICAgfVxufTtcblxudmFyIGFycmF5VG9PYmplY3QgPSBmdW5jdGlvbiBhcnJheVRvT2JqZWN0KHNvdXJjZSwgb3B0aW9ucykge1xuICAgIHZhciBvYmogPSBvcHRpb25zICYmIG9wdGlvbnMucGxhaW5PYmplY3RzID8geyBfX3Byb3RvX186IG51bGwgfSA6IHt9O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc291cmNlLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc291cmNlW2ldICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgb2JqW2ldID0gc291cmNlW2ldO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9iajtcbn07XG5cbnZhciBtZXJnZSA9IGZ1bmN0aW9uIG1lcmdlKHRhcmdldCwgc291cmNlLCBvcHRpb25zKSB7XG4gICAgLyogZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOiAwICovXG4gICAgaWYgKCFzb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHNvdXJjZSAhPT0gJ29iamVjdCcgJiYgdHlwZW9mIHNvdXJjZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBpZiAoaXNBcnJheSh0YXJnZXQpKSB7XG4gICAgICAgICAgICB2YXIgbmV4dEluZGV4ID0gdGFyZ2V0Lmxlbmd0aDtcbiAgICAgICAgICAgIGlmIChvcHRpb25zICYmIHR5cGVvZiBvcHRpb25zLmFycmF5TGltaXQgPT09ICdudW1iZXInICYmIG5leHRJbmRleCA+IG9wdGlvbnMuYXJyYXlMaW1pdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtYXJrT3ZlcmZsb3coYXJyYXlUb09iamVjdCh0YXJnZXQuY29uY2F0KHNvdXJjZSksIG9wdGlvbnMpLCBuZXh0SW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFyZ2V0W25leHRJbmRleF0gPSBzb3VyY2U7XG4gICAgICAgIH0gZWxzZSBpZiAodGFyZ2V0ICYmIHR5cGVvZiB0YXJnZXQgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBpZiAoaXNPdmVyZmxvdyh0YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgLy8gQWRkIGF0IG5leHQgbnVtZXJpYyBpbmRleCBmb3Igb3ZlcmZsb3cgb2JqZWN0c1xuICAgICAgICAgICAgICAgIHZhciBuZXdJbmRleCA9IGdldE1heEluZGV4KHRhcmdldCkgKyAxO1xuICAgICAgICAgICAgICAgIHRhcmdldFtuZXdJbmRleF0gPSBzb3VyY2U7XG4gICAgICAgICAgICAgICAgc2V0TWF4SW5kZXgodGFyZ2V0LCBuZXdJbmRleCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5zdHJpY3RNZXJnZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbdGFyZ2V0LCBzb3VyY2VdO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAob3B0aW9ucyAmJiAob3B0aW9ucy5wbGFpbk9iamVjdHMgfHwgb3B0aW9ucy5hbGxvd1Byb3RvdHlwZXMpKVxuICAgICAgICAgICAgICAgIHx8ICFoYXMuY2FsbChPYmplY3QucHJvdG90eXBlLCBzb3VyY2UpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRbc291cmNlXSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gW3RhcmdldCwgc291cmNlXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfVxuXG4gICAgaWYgKCF0YXJnZXQgfHwgdHlwZW9mIHRhcmdldCAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKGlzT3ZlcmZsb3coc291cmNlKSkge1xuICAgICAgICAgICAgLy8gQ3JlYXRlIG5ldyBvYmplY3Qgd2l0aCB0YXJnZXQgYXQgMCwgc291cmNlIHZhbHVlcyBzaGlmdGVkIGJ5IDFcbiAgICAgICAgICAgIHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBvcHRpb25zICYmIG9wdGlvbnMucGxhaW5PYmplY3RzXG4gICAgICAgICAgICAgICAgPyB7IF9fcHJvdG9fXzogbnVsbCwgMDogdGFyZ2V0IH1cbiAgICAgICAgICAgICAgICA6IHsgMDogdGFyZ2V0IH07XG4gICAgICAgICAgICBmb3IgKHZhciBtID0gMDsgbSA8IHNvdXJjZUtleXMubGVuZ3RoOyBtKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgb2xkS2V5ID0gcGFyc2VJbnQoc291cmNlS2V5c1ttXSwgMTApO1xuICAgICAgICAgICAgICAgIHJlc3VsdFtvbGRLZXkgKyAxXSA9IHNvdXJjZVtzb3VyY2VLZXlzW21dXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBtYXJrT3ZlcmZsb3cocmVzdWx0LCBnZXRNYXhJbmRleChzb3VyY2UpICsgMSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNvbWJpbmVkID0gW3RhcmdldF0uY29uY2F0KHNvdXJjZSk7XG4gICAgICAgIGlmIChvcHRpb25zICYmIHR5cGVvZiBvcHRpb25zLmFycmF5TGltaXQgPT09ICdudW1iZXInICYmIGNvbWJpbmVkLmxlbmd0aCA+IG9wdGlvbnMuYXJyYXlMaW1pdCkge1xuICAgICAgICAgICAgcmV0dXJuIG1hcmtPdmVyZmxvdyhhcnJheVRvT2JqZWN0KGNvbWJpbmVkLCBvcHRpb25zKSwgY29tYmluZWQubGVuZ3RoIC0gMSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbWJpbmVkO1xuICAgIH1cblxuICAgIHZhciBtZXJnZVRhcmdldCA9IHRhcmdldDtcbiAgICBpZiAoaXNBcnJheSh0YXJnZXQpICYmICFpc0FycmF5KHNvdXJjZSkpIHtcbiAgICAgICAgbWVyZ2VUYXJnZXQgPSBhcnJheVRvT2JqZWN0KHRhcmdldCwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgaWYgKGlzQXJyYXkodGFyZ2V0KSAmJiBpc0FycmF5KHNvdXJjZSkpIHtcbiAgICAgICAgc291cmNlLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0sIGkpIHtcbiAgICAgICAgICAgIGlmIChoYXMuY2FsbCh0YXJnZXQsIGkpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldEl0ZW0gPSB0YXJnZXRbaV07XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldEl0ZW0gJiYgdHlwZW9mIHRhcmdldEl0ZW0gPT09ICdvYmplY3QnICYmIGl0ZW0gJiYgdHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldFtpXSA9IG1lcmdlKHRhcmdldEl0ZW0sIGl0ZW0sIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldFt0YXJnZXQubGVuZ3RoXSA9IGl0ZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRbaV0gPSBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMoc291cmNlKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywga2V5KSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHNvdXJjZVtrZXldO1xuXG4gICAgICAgIGlmIChoYXMuY2FsbChhY2MsIGtleSkpIHtcbiAgICAgICAgICAgIGFjY1trZXldID0gbWVyZ2UoYWNjW2tleV0sIHZhbHVlLCBvcHRpb25zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFjY1trZXldID0gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNPdmVyZmxvdyhzb3VyY2UpICYmICFpc092ZXJmbG93KGFjYykpIHtcbiAgICAgICAgICAgIG1hcmtPdmVyZmxvdyhhY2MsIGdldE1heEluZGV4KHNvdXJjZSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc092ZXJmbG93KGFjYykpIHtcbiAgICAgICAgICAgIHZhciBrZXlOdW0gPSBwYXJzZUludChrZXksIDEwKTtcbiAgICAgICAgICAgIGlmIChTdHJpbmcoa2V5TnVtKSA9PT0ga2V5ICYmIGtleU51bSA+PSAwICYmIGtleU51bSA+IGdldE1heEluZGV4KGFjYykpIHtcbiAgICAgICAgICAgICAgICBzZXRNYXhJbmRleChhY2MsIGtleU51bSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWNjO1xuICAgIH0sIG1lcmdlVGFyZ2V0KTtcbn07XG5cbnZhciBhc3NpZ24gPSBmdW5jdGlvbiBhc3NpZ25TaW5nbGVTb3VyY2UodGFyZ2V0LCBzb3VyY2UpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoc291cmNlKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywga2V5KSB7XG4gICAgICAgIGFjY1trZXldID0gc291cmNlW2tleV07XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgdGFyZ2V0KTtcbn07XG5cbnZhciBkZWNvZGUgPSBmdW5jdGlvbiAoc3RyLCBkZWZhdWx0RGVjb2RlciwgY2hhcnNldCkge1xuICAgIHZhciBzdHJXaXRob3V0UGx1cyA9IHN0ci5yZXBsYWNlKC9cXCsvZywgJyAnKTtcbiAgICBpZiAoY2hhcnNldCA9PT0gJ2lzby04ODU5LTEnKSB7XG4gICAgICAgIC8vIHVuZXNjYXBlIG5ldmVyIHRocm93cywgbm8gdHJ5Li4uY2F0Y2ggbmVlZGVkOlxuICAgICAgICByZXR1cm4gc3RyV2l0aG91dFBsdXMucmVwbGFjZSgvJVswLTlhLWZdezJ9L2dpLCB1bmVzY2FwZSk7XG4gICAgfVxuICAgIC8vIHV0Zi04XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChzdHJXaXRob3V0UGx1cyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gc3RyV2l0aG91dFBsdXM7XG4gICAgfVxufTtcblxudmFyIGxpbWl0ID0gMTAyNDtcblxuLyogZXNsaW50IG9wZXJhdG9yLWxpbmVicmVhazogWzIsIFwiYmVmb3JlXCJdICovXG5cbnZhciBlbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoc3RyLCBkZWZhdWx0RW5jb2RlciwgY2hhcnNldCwga2luZCwgZm9ybWF0KSB7XG4gICAgLy8gVGhpcyBjb2RlIHdhcyBvcmlnaW5hbGx5IHdyaXR0ZW4gYnkgQnJpYW4gV2hpdGUgKG1zY2RleCkgZm9yIHRoZSBpby5qcyBjb3JlIHF1ZXJ5c3RyaW5nIGxpYnJhcnkuXG4gICAgLy8gSXQgaGFzIGJlZW4gYWRhcHRlZCBoZXJlIGZvciBzdHJpY3RlciBhZGhlcmVuY2UgdG8gUkZDIDM5ODZcbiAgICBpZiAoc3RyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gc3RyO1xuICAgIH1cblxuICAgIHZhciBzdHJpbmcgPSBzdHI7XG4gICAgaWYgKHR5cGVvZiBzdHIgPT09ICdzeW1ib2wnKSB7XG4gICAgICAgIHN0cmluZyA9IFN5bWJvbC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChzdHIpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHN0ciAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgc3RyaW5nID0gU3RyaW5nKHN0cik7XG4gICAgfVxuXG4gICAgaWYgKGNoYXJzZXQgPT09ICdpc28tODg1OS0xJykge1xuICAgICAgICByZXR1cm4gZXNjYXBlKHN0cmluZykucmVwbGFjZSgvJXVbMC05YS1mXXs0fS9naSwgZnVuY3Rpb24gKCQwKSB7XG4gICAgICAgICAgICByZXR1cm4gJyUyNiUyMycgKyBwYXJzZUludCgkMC5zbGljZSgyKSwgMTYpICsgJyUzQic7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBvdXQgPSAnJztcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHN0cmluZy5sZW5ndGg7IGogKz0gbGltaXQpIHtcbiAgICAgICAgdmFyIHNlZ21lbnQgPSBzdHJpbmcubGVuZ3RoID49IGxpbWl0ID8gc3RyaW5nLnNsaWNlKGosIGogKyBsaW1pdCkgOiBzdHJpbmc7XG4gICAgICAgIHZhciBhcnIgPSBbXTtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlZ21lbnQubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIHZhciBjID0gc2VnbWVudC5jaGFyQ29kZUF0KGkpO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGMgPT09IDB4MkQgLy8gLVxuICAgICAgICAgICAgICAgIHx8IGMgPT09IDB4MkUgLy8gLlxuICAgICAgICAgICAgICAgIHx8IGMgPT09IDB4NUYgLy8gX1xuICAgICAgICAgICAgICAgIHx8IGMgPT09IDB4N0UgLy8gflxuICAgICAgICAgICAgICAgIHx8IChjID49IDB4MzAgJiYgYyA8PSAweDM5KSAvLyAwLTlcbiAgICAgICAgICAgICAgICB8fCAoYyA+PSAweDQxICYmIGMgPD0gMHg1QSkgLy8gYS16XG4gICAgICAgICAgICAgICAgfHwgKGMgPj0gMHg2MSAmJiBjIDw9IDB4N0EpIC8vIEEtWlxuICAgICAgICAgICAgICAgIHx8IChmb3JtYXQgPT09IGZvcm1hdHMuUkZDMTczOCAmJiAoYyA9PT0gMHgyOCB8fCBjID09PSAweDI5KSkgLy8gKCApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBhcnJbYXJyLmxlbmd0aF0gPSBzZWdtZW50LmNoYXJBdChpKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGMgPCAweDgwKSB7XG4gICAgICAgICAgICAgICAgYXJyW2Fyci5sZW5ndGhdID0gaGV4VGFibGVbY107XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjIDwgMHg4MDApIHtcbiAgICAgICAgICAgICAgICBhcnJbYXJyLmxlbmd0aF0gPSBoZXhUYWJsZVsweEMwIHwgKGMgPj4gNildXG4gICAgICAgICAgICAgICAgICAgICsgaGV4VGFibGVbMHg4MCB8IChjICYgMHgzRildO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYyA8IDB4RDgwMCB8fCBjID49IDB4RTAwMCkge1xuICAgICAgICAgICAgICAgIGFyclthcnIubGVuZ3RoXSA9IGhleFRhYmxlWzB4RTAgfCAoYyA+PiAxMildXG4gICAgICAgICAgICAgICAgICAgICsgaGV4VGFibGVbMHg4MCB8ICgoYyA+PiA2KSAmIDB4M0YpXVxuICAgICAgICAgICAgICAgICAgICArIGhleFRhYmxlWzB4ODAgfCAoYyAmIDB4M0YpXTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaSArPSAxO1xuICAgICAgICAgICAgYyA9IDB4MTAwMDAgKyAoKChjICYgMHgzRkYpIDw8IDEwKSB8IChzZWdtZW50LmNoYXJDb2RlQXQoaSkgJiAweDNGRikpO1xuXG4gICAgICAgICAgICBhcnJbYXJyLmxlbmd0aF0gPSBoZXhUYWJsZVsweEYwIHwgKGMgPj4gMTgpXVxuICAgICAgICAgICAgICAgICsgaGV4VGFibGVbMHg4MCB8ICgoYyA+PiAxMikgJiAweDNGKV1cbiAgICAgICAgICAgICAgICArIGhleFRhYmxlWzB4ODAgfCAoKGMgPj4gNikgJiAweDNGKV1cbiAgICAgICAgICAgICAgICArIGhleFRhYmxlWzB4ODAgfCAoYyAmIDB4M0YpXTtcbiAgICAgICAgfVxuXG4gICAgICAgIG91dCArPSBhcnIuam9pbignJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dDtcbn07XG5cbnZhciBjb21wYWN0ID0gZnVuY3Rpb24gY29tcGFjdCh2YWx1ZSkge1xuICAgIHZhciBxdWV1ZSA9IFt7IG9iajogeyBvOiB2YWx1ZSB9LCBwcm9wOiAnbycgfV07XG4gICAgdmFyIHJlZnMgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcXVldWUubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBxdWV1ZVtpXTtcbiAgICAgICAgdmFyIG9iaiA9IGl0ZW0ub2JqW2l0ZW0ucHJvcF07XG5cbiAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGtleXMubGVuZ3RoOyArK2opIHtcbiAgICAgICAgICAgIHZhciBrZXkgPSBrZXlzW2pdO1xuICAgICAgICAgICAgdmFyIHZhbCA9IG9ialtrZXldO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbCAhPT0gbnVsbCAmJiByZWZzLmluZGV4T2YodmFsKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBxdWV1ZVtxdWV1ZS5sZW5ndGhdID0geyBvYmo6IG9iaiwgcHJvcDoga2V5IH07XG4gICAgICAgICAgICAgICAgcmVmc1tyZWZzLmxlbmd0aF0gPSB2YWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb21wYWN0UXVldWUocXVldWUpO1xuXG4gICAgcmV0dXJuIHZhbHVlO1xufTtcblxudmFyIGlzUmVnRXhwID0gZnVuY3Rpb24gaXNSZWdFeHAob2JqKSB7XG4gICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopID09PSAnW29iamVjdCBSZWdFeHBdJztcbn07XG5cbnZhciBpc0J1ZmZlciA9IGZ1bmN0aW9uIGlzQnVmZmVyKG9iaikge1xuICAgIGlmICghb2JqIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gISEob2JqLmNvbnN0cnVjdG9yICYmIG9iai5jb25zdHJ1Y3Rvci5pc0J1ZmZlciAmJiBvYmouY29uc3RydWN0b3IuaXNCdWZmZXIob2JqKSk7XG59O1xuXG52YXIgY29tYmluZSA9IGZ1bmN0aW9uIGNvbWJpbmUoYSwgYiwgYXJyYXlMaW1pdCwgcGxhaW5PYmplY3RzKSB7XG4gICAgLy8gSWYgJ2EnIGlzIGFscmVhZHkgYW4gb3ZlcmZsb3cgb2JqZWN0LCBhZGQgdG8gaXRcbiAgICBpZiAoaXNPdmVyZmxvdyhhKSkge1xuICAgICAgICB2YXIgbmV3SW5kZXggPSBnZXRNYXhJbmRleChhKSArIDE7XG4gICAgICAgIGFbbmV3SW5kZXhdID0gYjtcbiAgICAgICAgc2V0TWF4SW5kZXgoYSwgbmV3SW5kZXgpO1xuICAgICAgICByZXR1cm4gYTtcbiAgICB9XG5cbiAgICB2YXIgcmVzdWx0ID0gW10uY29uY2F0KGEsIGIpO1xuICAgIGlmIChyZXN1bHQubGVuZ3RoID4gYXJyYXlMaW1pdCkge1xuICAgICAgICByZXR1cm4gbWFya092ZXJmbG93KGFycmF5VG9PYmplY3QocmVzdWx0LCB7IHBsYWluT2JqZWN0czogcGxhaW5PYmplY3RzIH0pLCByZXN1bHQubGVuZ3RoIC0gMSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG52YXIgbWF5YmVNYXAgPSBmdW5jdGlvbiBtYXliZU1hcCh2YWwsIGZuKSB7XG4gICAgaWYgKGlzQXJyYXkodmFsKSkge1xuICAgICAgICB2YXIgbWFwcGVkID0gW107XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICBtYXBwZWRbbWFwcGVkLmxlbmd0aF0gPSBmbih2YWxbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXBwZWQ7XG4gICAgfVxuICAgIHJldHVybiBmbih2YWwpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgYXJyYXlUb09iamVjdDogYXJyYXlUb09iamVjdCxcbiAgICBhc3NpZ246IGFzc2lnbixcbiAgICBjb21iaW5lOiBjb21iaW5lLFxuICAgIGNvbXBhY3Q6IGNvbXBhY3QsXG4gICAgZGVjb2RlOiBkZWNvZGUsXG4gICAgZW5jb2RlOiBlbmNvZGUsXG4gICAgaXNCdWZmZXI6IGlzQnVmZmVyLFxuICAgIGlzT3ZlcmZsb3c6IGlzT3ZlcmZsb3csXG4gICAgaXNSZWdFeHA6IGlzUmVnRXhwLFxuICAgIG1hcmtPdmVyZmxvdzogbWFya092ZXJmbG93LFxuICAgIG1heWJlTWFwOiBtYXliZU1hcCxcbiAgICBtZXJnZTogbWVyZ2Vcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBnZXRTaWRlQ2hhbm5lbCA9IHJlcXVpcmUoJ3NpZGUtY2hhbm5lbCcpO1xudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xudmFyIGZvcm1hdHMgPSByZXF1aXJlKCcuL2Zvcm1hdHMnKTtcbnZhciBoYXMgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG52YXIgYXJyYXlQcmVmaXhHZW5lcmF0b3JzID0ge1xuICAgIGJyYWNrZXRzOiBmdW5jdGlvbiBicmFja2V0cyhwcmVmaXgpIHtcbiAgICAgICAgcmV0dXJuIHByZWZpeCArICdbXSc7XG4gICAgfSxcbiAgICBjb21tYTogJ2NvbW1hJyxcbiAgICBpbmRpY2VzOiBmdW5jdGlvbiBpbmRpY2VzKHByZWZpeCwga2V5KSB7XG4gICAgICAgIHJldHVybiBwcmVmaXggKyAnWycgKyBrZXkgKyAnXSc7XG4gICAgfSxcbiAgICByZXBlYXQ6IGZ1bmN0aW9uIHJlcGVhdChwcmVmaXgpIHtcbiAgICAgICAgcmV0dXJuIHByZWZpeDtcbiAgICB9XG59O1xuXG52YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG52YXIgcHVzaCA9IEFycmF5LnByb3RvdHlwZS5wdXNoO1xudmFyIHB1c2hUb0FycmF5ID0gZnVuY3Rpb24gKGFyciwgdmFsdWVPckFycmF5KSB7XG4gICAgcHVzaC5hcHBseShhcnIsIGlzQXJyYXkodmFsdWVPckFycmF5KSA/IHZhbHVlT3JBcnJheSA6IFt2YWx1ZU9yQXJyYXldKTtcbn07XG5cbnZhciB0b0lTTyA9IERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nO1xuXG52YXIgZGVmYXVsdEZvcm1hdCA9IGZvcm1hdHNbJ2RlZmF1bHQnXTtcbnZhciBkZWZhdWx0cyA9IHtcbiAgICBhZGRRdWVyeVByZWZpeDogZmFsc2UsXG4gICAgYWxsb3dEb3RzOiBmYWxzZSxcbiAgICBhbGxvd0VtcHR5QXJyYXlzOiBmYWxzZSxcbiAgICBhcnJheUZvcm1hdDogJ2luZGljZXMnLFxuICAgIGNoYXJzZXQ6ICd1dGYtOCcsXG4gICAgY2hhcnNldFNlbnRpbmVsOiBmYWxzZSxcbiAgICBjb21tYVJvdW5kVHJpcDogZmFsc2UsXG4gICAgZGVsaW1pdGVyOiAnJicsXG4gICAgZW5jb2RlOiB0cnVlLFxuICAgIGVuY29kZURvdEluS2V5czogZmFsc2UsXG4gICAgZW5jb2RlcjogdXRpbHMuZW5jb2RlLFxuICAgIGVuY29kZVZhbHVlc09ubHk6IGZhbHNlLFxuICAgIGZpbHRlcjogdm9pZCB1bmRlZmluZWQsXG4gICAgZm9ybWF0OiBkZWZhdWx0Rm9ybWF0LFxuICAgIGZvcm1hdHRlcjogZm9ybWF0cy5mb3JtYXR0ZXJzW2RlZmF1bHRGb3JtYXRdLFxuICAgIC8vIGRlcHJlY2F0ZWRcbiAgICBpbmRpY2VzOiBmYWxzZSxcbiAgICBzZXJpYWxpemVEYXRlOiBmdW5jdGlvbiBzZXJpYWxpemVEYXRlKGRhdGUpIHtcbiAgICAgICAgcmV0dXJuIHRvSVNPLmNhbGwoZGF0ZSk7XG4gICAgfSxcbiAgICBza2lwTnVsbHM6IGZhbHNlLFxuICAgIHN0cmljdE51bGxIYW5kbGluZzogZmFsc2Vcbn07XG5cbnZhciBpc05vbk51bGxpc2hQcmltaXRpdmUgPSBmdW5jdGlvbiBpc05vbk51bGxpc2hQcmltaXRpdmUodikge1xuICAgIHJldHVybiB0eXBlb2YgdiA9PT0gJ3N0cmluZydcbiAgICAgICAgfHwgdHlwZW9mIHYgPT09ICdudW1iZXInXG4gICAgICAgIHx8IHR5cGVvZiB2ID09PSAnYm9vbGVhbidcbiAgICAgICAgfHwgdHlwZW9mIHYgPT09ICdzeW1ib2wnXG4gICAgICAgIHx8IHR5cGVvZiB2ID09PSAnYmlnaW50Jztcbn07XG5cbnZhciBzZW50aW5lbCA9IHt9O1xuXG52YXIgc3RyaW5naWZ5ID0gZnVuY3Rpb24gc3RyaW5naWZ5KFxuICAgIG9iamVjdCxcbiAgICBwcmVmaXgsXG4gICAgZ2VuZXJhdGVBcnJheVByZWZpeCxcbiAgICBjb21tYVJvdW5kVHJpcCxcbiAgICBhbGxvd0VtcHR5QXJyYXlzLFxuICAgIHN0cmljdE51bGxIYW5kbGluZyxcbiAgICBza2lwTnVsbHMsXG4gICAgZW5jb2RlRG90SW5LZXlzLFxuICAgIGVuY29kZXIsXG4gICAgZmlsdGVyLFxuICAgIHNvcnQsXG4gICAgYWxsb3dEb3RzLFxuICAgIHNlcmlhbGl6ZURhdGUsXG4gICAgZm9ybWF0LFxuICAgIGZvcm1hdHRlcixcbiAgICBlbmNvZGVWYWx1ZXNPbmx5LFxuICAgIGNoYXJzZXQsXG4gICAgc2lkZUNoYW5uZWxcbikge1xuICAgIHZhciBvYmogPSBvYmplY3Q7XG5cbiAgICB2YXIgdG1wU2MgPSBzaWRlQ2hhbm5lbDtcbiAgICB2YXIgc3RlcCA9IDA7XG4gICAgdmFyIGZpbmRGbGFnID0gZmFsc2U7XG4gICAgd2hpbGUgKCh0bXBTYyA9IHRtcFNjLmdldChzZW50aW5lbCkpICE9PSB2b2lkIHVuZGVmaW5lZCAmJiAhZmluZEZsYWcpIHtcbiAgICAgICAgLy8gV2hlcmUgb2JqZWN0IGxhc3QgYXBwZWFyZWQgaW4gdGhlIHJlZiB0cmVlXG4gICAgICAgIHZhciBwb3MgPSB0bXBTYy5nZXQob2JqZWN0KTtcbiAgICAgICAgc3RlcCArPSAxO1xuICAgICAgICBpZiAodHlwZW9mIHBvcyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGlmIChwb3MgPT09IHN0ZXApIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQ3ljbGljIG9iamVjdCB2YWx1ZScpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmaW5kRmxhZyA9IHRydWU7IC8vIEJyZWFrIHdoaWxlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB0bXBTYy5nZXQoc2VudGluZWwpID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgc3RlcCA9IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGZpbHRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBvYmogPSBmaWx0ZXIocHJlZml4LCBvYmopO1xuICAgIH0gZWxzZSBpZiAob2JqIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICBvYmogPSBzZXJpYWxpemVEYXRlKG9iaik7XG4gICAgfSBlbHNlIGlmIChnZW5lcmF0ZUFycmF5UHJlZml4ID09PSAnY29tbWEnICYmIGlzQXJyYXkob2JqKSkge1xuICAgICAgICBvYmogPSB1dGlscy5tYXliZU1hcChvYmosIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzZXJpYWxpemVEYXRlKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKG9iaiA9PT0gbnVsbCkge1xuICAgICAgICBpZiAoc3RyaWN0TnVsbEhhbmRsaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gZW5jb2RlciAmJiAhZW5jb2RlVmFsdWVzT25seSA/IGVuY29kZXIocHJlZml4LCBkZWZhdWx0cy5lbmNvZGVyLCBjaGFyc2V0LCAna2V5JywgZm9ybWF0KSA6IHByZWZpeDtcbiAgICAgICAgfVxuXG4gICAgICAgIG9iaiA9ICcnO1xuICAgIH1cblxuICAgIGlmIChpc05vbk51bGxpc2hQcmltaXRpdmUob2JqKSB8fCB1dGlscy5pc0J1ZmZlcihvYmopKSB7XG4gICAgICAgIGlmIChlbmNvZGVyKSB7XG4gICAgICAgICAgICB2YXIga2V5VmFsdWUgPSBlbmNvZGVWYWx1ZXNPbmx5ID8gcHJlZml4IDogZW5jb2RlcihwcmVmaXgsIGRlZmF1bHRzLmVuY29kZXIsIGNoYXJzZXQsICdrZXknLCBmb3JtYXQpO1xuICAgICAgICAgICAgcmV0dXJuIFtmb3JtYXR0ZXIoa2V5VmFsdWUpICsgJz0nICsgZm9ybWF0dGVyKGVuY29kZXIob2JqLCBkZWZhdWx0cy5lbmNvZGVyLCBjaGFyc2V0LCAndmFsdWUnLCBmb3JtYXQpKV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtmb3JtYXR0ZXIocHJlZml4KSArICc9JyArIGZvcm1hdHRlcihTdHJpbmcob2JqKSldO1xuICAgIH1cblxuICAgIHZhciB2YWx1ZXMgPSBbXTtcblxuICAgIGlmICh0eXBlb2Ygb2JqID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gdmFsdWVzO1xuICAgIH1cblxuICAgIHZhciBvYmpLZXlzO1xuICAgIGlmIChnZW5lcmF0ZUFycmF5UHJlZml4ID09PSAnY29tbWEnICYmIGlzQXJyYXkob2JqKSkge1xuICAgICAgICAvLyB3ZSBuZWVkIHRvIGpvaW4gZWxlbWVudHMgaW5cbiAgICAgICAgaWYgKGVuY29kZVZhbHVlc09ubHkgJiYgZW5jb2Rlcikge1xuICAgICAgICAgICAgb2JqID0gdXRpbHMubWF5YmVNYXAob2JqLCBlbmNvZGVyKTtcbiAgICAgICAgfVxuICAgICAgICBvYmpLZXlzID0gW3sgdmFsdWU6IG9iai5sZW5ndGggPiAwID8gb2JqLmpvaW4oJywnKSB8fCBudWxsIDogdm9pZCB1bmRlZmluZWQgfV07XG4gICAgfSBlbHNlIGlmIChpc0FycmF5KGZpbHRlcikpIHtcbiAgICAgICAgb2JqS2V5cyA9IGZpbHRlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG4gICAgICAgIG9iaktleXMgPSBzb3J0ID8ga2V5cy5zb3J0KHNvcnQpIDoga2V5cztcbiAgICB9XG5cbiAgICB2YXIgZW5jb2RlZFByZWZpeCA9IGVuY29kZURvdEluS2V5cyA/IFN0cmluZyhwcmVmaXgpLnJlcGxhY2UoL1xcLi9nLCAnJTJFJykgOiBTdHJpbmcocHJlZml4KTtcblxuICAgIHZhciBhZGp1c3RlZFByZWZpeCA9IGNvbW1hUm91bmRUcmlwICYmIGlzQXJyYXkob2JqKSAmJiBvYmoubGVuZ3RoID09PSAxID8gZW5jb2RlZFByZWZpeCArICdbXScgOiBlbmNvZGVkUHJlZml4O1xuXG4gICAgaWYgKGFsbG93RW1wdHlBcnJheXMgJiYgaXNBcnJheShvYmopICYmIG9iai5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGFkanVzdGVkUHJlZml4ICsgJ1tdJztcbiAgICB9XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG9iaktleXMubGVuZ3RoOyArK2opIHtcbiAgICAgICAgdmFyIGtleSA9IG9iaktleXNbal07XG4gICAgICAgIHZhciB2YWx1ZSA9IHR5cGVvZiBrZXkgPT09ICdvYmplY3QnICYmIGtleSAmJiB0eXBlb2Yga2V5LnZhbHVlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICAgICAgPyBrZXkudmFsdWVcbiAgICAgICAgICAgIDogb2JqW2tleV07XG5cbiAgICAgICAgaWYgKHNraXBOdWxscyAmJiB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZW5jb2RlZEtleSA9IGFsbG93RG90cyAmJiBlbmNvZGVEb3RJbktleXMgPyBTdHJpbmcoa2V5KS5yZXBsYWNlKC9cXC4vZywgJyUyRScpIDogU3RyaW5nKGtleSk7XG4gICAgICAgIHZhciBrZXlQcmVmaXggPSBpc0FycmF5KG9iailcbiAgICAgICAgICAgID8gdHlwZW9mIGdlbmVyYXRlQXJyYXlQcmVmaXggPT09ICdmdW5jdGlvbicgPyBnZW5lcmF0ZUFycmF5UHJlZml4KGFkanVzdGVkUHJlZml4LCBlbmNvZGVkS2V5KSA6IGFkanVzdGVkUHJlZml4XG4gICAgICAgICAgICA6IGFkanVzdGVkUHJlZml4ICsgKGFsbG93RG90cyA/ICcuJyArIGVuY29kZWRLZXkgOiAnWycgKyBlbmNvZGVkS2V5ICsgJ10nKTtcblxuICAgICAgICBzaWRlQ2hhbm5lbC5zZXQob2JqZWN0LCBzdGVwKTtcbiAgICAgICAgdmFyIHZhbHVlU2lkZUNoYW5uZWwgPSBnZXRTaWRlQ2hhbm5lbCgpO1xuICAgICAgICB2YWx1ZVNpZGVDaGFubmVsLnNldChzZW50aW5lbCwgc2lkZUNoYW5uZWwpO1xuICAgICAgICBwdXNoVG9BcnJheSh2YWx1ZXMsIHN0cmluZ2lmeShcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAga2V5UHJlZml4LFxuICAgICAgICAgICAgZ2VuZXJhdGVBcnJheVByZWZpeCxcbiAgICAgICAgICAgIGNvbW1hUm91bmRUcmlwLFxuICAgICAgICAgICAgYWxsb3dFbXB0eUFycmF5cyxcbiAgICAgICAgICAgIHN0cmljdE51bGxIYW5kbGluZyxcbiAgICAgICAgICAgIHNraXBOdWxscyxcbiAgICAgICAgICAgIGVuY29kZURvdEluS2V5cyxcbiAgICAgICAgICAgIGdlbmVyYXRlQXJyYXlQcmVmaXggPT09ICdjb21tYScgJiYgZW5jb2RlVmFsdWVzT25seSAmJiBpc0FycmF5KG9iaikgPyBudWxsIDogZW5jb2RlcixcbiAgICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICAgIHNvcnQsXG4gICAgICAgICAgICBhbGxvd0RvdHMsXG4gICAgICAgICAgICBzZXJpYWxpemVEYXRlLFxuICAgICAgICAgICAgZm9ybWF0LFxuICAgICAgICAgICAgZm9ybWF0dGVyLFxuICAgICAgICAgICAgZW5jb2RlVmFsdWVzT25seSxcbiAgICAgICAgICAgIGNoYXJzZXQsXG4gICAgICAgICAgICB2YWx1ZVNpZGVDaGFubmVsXG4gICAgICAgICkpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZXM7XG59O1xuXG52YXIgbm9ybWFsaXplU3RyaW5naWZ5T3B0aW9ucyA9IGZ1bmN0aW9uIG5vcm1hbGl6ZVN0cmluZ2lmeU9wdGlvbnMob3B0cykge1xuICAgIGlmICghb3B0cykge1xuICAgICAgICByZXR1cm4gZGVmYXVsdHM7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvcHRzLmFsbG93RW1wdHlBcnJheXMgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBvcHRzLmFsbG93RW1wdHlBcnJheXMgIT09ICdib29sZWFuJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdgYWxsb3dFbXB0eUFycmF5c2Agb3B0aW9uIGNhbiBvbmx5IGJlIGB0cnVlYCBvciBgZmFsc2VgLCB3aGVuIHByb3ZpZGVkJyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvcHRzLmVuY29kZURvdEluS2V5cyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIG9wdHMuZW5jb2RlRG90SW5LZXlzICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYGVuY29kZURvdEluS2V5c2Agb3B0aW9uIGNhbiBvbmx5IGJlIGB0cnVlYCBvciBgZmFsc2VgLCB3aGVuIHByb3ZpZGVkJyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdHMuZW5jb2RlciAhPT0gbnVsbCAmJiB0eXBlb2Ygb3B0cy5lbmNvZGVyICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygb3B0cy5lbmNvZGVyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0VuY29kZXIgaGFzIHRvIGJlIGEgZnVuY3Rpb24uJyk7XG4gICAgfVxuXG4gICAgdmFyIGNoYXJzZXQgPSBvcHRzLmNoYXJzZXQgfHwgZGVmYXVsdHMuY2hhcnNldDtcbiAgICBpZiAodHlwZW9mIG9wdHMuY2hhcnNldCAhPT0gJ3VuZGVmaW5lZCcgJiYgb3B0cy5jaGFyc2V0ICE9PSAndXRmLTgnICYmIG9wdHMuY2hhcnNldCAhPT0gJ2lzby04ODU5LTEnKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBjaGFyc2V0IG9wdGlvbiBtdXN0IGJlIGVpdGhlciB1dGYtOCwgaXNvLTg4NTktMSwgb3IgdW5kZWZpbmVkJyk7XG4gICAgfVxuXG4gICAgdmFyIGZvcm1hdCA9IGZvcm1hdHNbJ2RlZmF1bHQnXTtcbiAgICBpZiAodHlwZW9mIG9wdHMuZm9ybWF0ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBpZiAoIWhhcy5jYWxsKGZvcm1hdHMuZm9ybWF0dGVycywgb3B0cy5mb3JtYXQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGZvcm1hdCBvcHRpb24gcHJvdmlkZWQuJyk7XG4gICAgICAgIH1cbiAgICAgICAgZm9ybWF0ID0gb3B0cy5mb3JtYXQ7XG4gICAgfVxuICAgIHZhciBmb3JtYXR0ZXIgPSBmb3JtYXRzLmZvcm1hdHRlcnNbZm9ybWF0XTtcblxuICAgIHZhciBmaWx0ZXIgPSBkZWZhdWx0cy5maWx0ZXI7XG4gICAgaWYgKHR5cGVvZiBvcHRzLmZpbHRlciA9PT0gJ2Z1bmN0aW9uJyB8fCBpc0FycmF5KG9wdHMuZmlsdGVyKSkge1xuICAgICAgICBmaWx0ZXIgPSBvcHRzLmZpbHRlcjtcbiAgICB9XG5cbiAgICB2YXIgYXJyYXlGb3JtYXQ7XG4gICAgaWYgKG9wdHMuYXJyYXlGb3JtYXQgaW4gYXJyYXlQcmVmaXhHZW5lcmF0b3JzKSB7XG4gICAgICAgIGFycmF5Rm9ybWF0ID0gb3B0cy5hcnJheUZvcm1hdDtcbiAgICB9IGVsc2UgaWYgKCdpbmRpY2VzJyBpbiBvcHRzKSB7XG4gICAgICAgIGFycmF5Rm9ybWF0ID0gb3B0cy5pbmRpY2VzID8gJ2luZGljZXMnIDogJ3JlcGVhdCc7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgYXJyYXlGb3JtYXQgPSBkZWZhdWx0cy5hcnJheUZvcm1hdDtcbiAgICB9XG5cbiAgICBpZiAoJ2NvbW1hUm91bmRUcmlwJyBpbiBvcHRzICYmIHR5cGVvZiBvcHRzLmNvbW1hUm91bmRUcmlwICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYGNvbW1hUm91bmRUcmlwYCBtdXN0IGJlIGEgYm9vbGVhbiwgb3IgYWJzZW50Jyk7XG4gICAgfVxuXG4gICAgdmFyIGFsbG93RG90cyA9IHR5cGVvZiBvcHRzLmFsbG93RG90cyA9PT0gJ3VuZGVmaW5lZCcgPyBvcHRzLmVuY29kZURvdEluS2V5cyA9PT0gdHJ1ZSA/IHRydWUgOiBkZWZhdWx0cy5hbGxvd0RvdHMgOiAhIW9wdHMuYWxsb3dEb3RzO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgYWRkUXVlcnlQcmVmaXg6IHR5cGVvZiBvcHRzLmFkZFF1ZXJ5UHJlZml4ID09PSAnYm9vbGVhbicgPyBvcHRzLmFkZFF1ZXJ5UHJlZml4IDogZGVmYXVsdHMuYWRkUXVlcnlQcmVmaXgsXG4gICAgICAgIGFsbG93RG90czogYWxsb3dEb3RzLFxuICAgICAgICBhbGxvd0VtcHR5QXJyYXlzOiB0eXBlb2Ygb3B0cy5hbGxvd0VtcHR5QXJyYXlzID09PSAnYm9vbGVhbicgPyAhIW9wdHMuYWxsb3dFbXB0eUFycmF5cyA6IGRlZmF1bHRzLmFsbG93RW1wdHlBcnJheXMsXG4gICAgICAgIGFycmF5Rm9ybWF0OiBhcnJheUZvcm1hdCxcbiAgICAgICAgY2hhcnNldDogY2hhcnNldCxcbiAgICAgICAgY2hhcnNldFNlbnRpbmVsOiB0eXBlb2Ygb3B0cy5jaGFyc2V0U2VudGluZWwgPT09ICdib29sZWFuJyA/IG9wdHMuY2hhcnNldFNlbnRpbmVsIDogZGVmYXVsdHMuY2hhcnNldFNlbnRpbmVsLFxuICAgICAgICBjb21tYVJvdW5kVHJpcDogISFvcHRzLmNvbW1hUm91bmRUcmlwLFxuICAgICAgICBkZWxpbWl0ZXI6IHR5cGVvZiBvcHRzLmRlbGltaXRlciA9PT0gJ3VuZGVmaW5lZCcgPyBkZWZhdWx0cy5kZWxpbWl0ZXIgOiBvcHRzLmRlbGltaXRlcixcbiAgICAgICAgZW5jb2RlOiB0eXBlb2Ygb3B0cy5lbmNvZGUgPT09ICdib29sZWFuJyA/IG9wdHMuZW5jb2RlIDogZGVmYXVsdHMuZW5jb2RlLFxuICAgICAgICBlbmNvZGVEb3RJbktleXM6IHR5cGVvZiBvcHRzLmVuY29kZURvdEluS2V5cyA9PT0gJ2Jvb2xlYW4nID8gb3B0cy5lbmNvZGVEb3RJbktleXMgOiBkZWZhdWx0cy5lbmNvZGVEb3RJbktleXMsXG4gICAgICAgIGVuY29kZXI6IHR5cGVvZiBvcHRzLmVuY29kZXIgPT09ICdmdW5jdGlvbicgPyBvcHRzLmVuY29kZXIgOiBkZWZhdWx0cy5lbmNvZGVyLFxuICAgICAgICBlbmNvZGVWYWx1ZXNPbmx5OiB0eXBlb2Ygb3B0cy5lbmNvZGVWYWx1ZXNPbmx5ID09PSAnYm9vbGVhbicgPyBvcHRzLmVuY29kZVZhbHVlc09ubHkgOiBkZWZhdWx0cy5lbmNvZGVWYWx1ZXNPbmx5LFxuICAgICAgICBmaWx0ZXI6IGZpbHRlcixcbiAgICAgICAgZm9ybWF0OiBmb3JtYXQsXG4gICAgICAgIGZvcm1hdHRlcjogZm9ybWF0dGVyLFxuICAgICAgICBzZXJpYWxpemVEYXRlOiB0eXBlb2Ygb3B0cy5zZXJpYWxpemVEYXRlID09PSAnZnVuY3Rpb24nID8gb3B0cy5zZXJpYWxpemVEYXRlIDogZGVmYXVsdHMuc2VyaWFsaXplRGF0ZSxcbiAgICAgICAgc2tpcE51bGxzOiB0eXBlb2Ygb3B0cy5za2lwTnVsbHMgPT09ICdib29sZWFuJyA/IG9wdHMuc2tpcE51bGxzIDogZGVmYXVsdHMuc2tpcE51bGxzLFxuICAgICAgICBzb3J0OiB0eXBlb2Ygb3B0cy5zb3J0ID09PSAnZnVuY3Rpb24nID8gb3B0cy5zb3J0IDogbnVsbCxcbiAgICAgICAgc3RyaWN0TnVsbEhhbmRsaW5nOiB0eXBlb2Ygb3B0cy5zdHJpY3ROdWxsSGFuZGxpbmcgPT09ICdib29sZWFuJyA/IG9wdHMuc3RyaWN0TnVsbEhhbmRsaW5nIDogZGVmYXVsdHMuc3RyaWN0TnVsbEhhbmRsaW5nXG4gICAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwgb3B0cykge1xuICAgIHZhciBvYmogPSBvYmplY3Q7XG4gICAgdmFyIG9wdGlvbnMgPSBub3JtYWxpemVTdHJpbmdpZnlPcHRpb25zKG9wdHMpO1xuXG4gICAgdmFyIG9iaktleXM7XG4gICAgdmFyIGZpbHRlcjtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5maWx0ZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgZmlsdGVyID0gb3B0aW9ucy5maWx0ZXI7XG4gICAgICAgIG9iaiA9IGZpbHRlcignJywgb2JqKTtcbiAgICB9IGVsc2UgaWYgKGlzQXJyYXkob3B0aW9ucy5maWx0ZXIpKSB7XG4gICAgICAgIGZpbHRlciA9IG9wdGlvbnMuZmlsdGVyO1xuICAgICAgICBvYmpLZXlzID0gZmlsdGVyO1xuICAgIH1cblxuICAgIHZhciBrZXlzID0gW107XG5cbiAgICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHwgb2JqID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICB2YXIgZ2VuZXJhdGVBcnJheVByZWZpeCA9IGFycmF5UHJlZml4R2VuZXJhdG9yc1tvcHRpb25zLmFycmF5Rm9ybWF0XTtcbiAgICB2YXIgY29tbWFSb3VuZFRyaXAgPSBnZW5lcmF0ZUFycmF5UHJlZml4ID09PSAnY29tbWEnICYmIG9wdGlvbnMuY29tbWFSb3VuZFRyaXA7XG5cbiAgICBpZiAoIW9iaktleXMpIHtcbiAgICAgICAgb2JqS2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuc29ydCkge1xuICAgICAgICBvYmpLZXlzLnNvcnQob3B0aW9ucy5zb3J0KTtcbiAgICB9XG5cbiAgICB2YXIgc2lkZUNoYW5uZWwgPSBnZXRTaWRlQ2hhbm5lbCgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb2JqS2V5cy5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIga2V5ID0gb2JqS2V5c1tpXTtcbiAgICAgICAgdmFyIHZhbHVlID0gb2JqW2tleV07XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuc2tpcE51bGxzICYmIHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBwdXNoVG9BcnJheShrZXlzLCBzdHJpbmdpZnkoXG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIGdlbmVyYXRlQXJyYXlQcmVmaXgsXG4gICAgICAgICAgICBjb21tYVJvdW5kVHJpcCxcbiAgICAgICAgICAgIG9wdGlvbnMuYWxsb3dFbXB0eUFycmF5cyxcbiAgICAgICAgICAgIG9wdGlvbnMuc3RyaWN0TnVsbEhhbmRsaW5nLFxuICAgICAgICAgICAgb3B0aW9ucy5za2lwTnVsbHMsXG4gICAgICAgICAgICBvcHRpb25zLmVuY29kZURvdEluS2V5cyxcbiAgICAgICAgICAgIG9wdGlvbnMuZW5jb2RlID8gb3B0aW9ucy5lbmNvZGVyIDogbnVsbCxcbiAgICAgICAgICAgIG9wdGlvbnMuZmlsdGVyLFxuICAgICAgICAgICAgb3B0aW9ucy5zb3J0LFxuICAgICAgICAgICAgb3B0aW9ucy5hbGxvd0RvdHMsXG4gICAgICAgICAgICBvcHRpb25zLnNlcmlhbGl6ZURhdGUsXG4gICAgICAgICAgICBvcHRpb25zLmZvcm1hdCxcbiAgICAgICAgICAgIG9wdGlvbnMuZm9ybWF0dGVyLFxuICAgICAgICAgICAgb3B0aW9ucy5lbmNvZGVWYWx1ZXNPbmx5LFxuICAgICAgICAgICAgb3B0aW9ucy5jaGFyc2V0LFxuICAgICAgICAgICAgc2lkZUNoYW5uZWxcbiAgICAgICAgKSk7XG4gICAgfVxuXG4gICAgdmFyIGpvaW5lZCA9IGtleXMuam9pbihvcHRpb25zLmRlbGltaXRlcik7XG4gICAgdmFyIHByZWZpeCA9IG9wdGlvbnMuYWRkUXVlcnlQcmVmaXggPT09IHRydWUgPyAnPycgOiAnJztcblxuICAgIGlmIChvcHRpb25zLmNoYXJzZXRTZW50aW5lbCkge1xuICAgICAgICBpZiAob3B0aW9ucy5jaGFyc2V0ID09PSAnaXNvLTg4NTktMScpIHtcbiAgICAgICAgICAgIC8vIGVuY29kZVVSSUNvbXBvbmVudCgnJiMxMDAwMzsnKSwgdGhlIFwibnVtZXJpYyBlbnRpdHlcIiByZXByZXNlbnRhdGlvbiBvZiBhIGNoZWNrbWFya1xuICAgICAgICAgICAgcHJlZml4ICs9ICd1dGY4PSUyNiUyMzEwMDAzJTNCJic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBlbmNvZGVVUklDb21wb25lbnQoJ+KckycpXG4gICAgICAgICAgICBwcmVmaXggKz0gJ3V0Zjg9JUUyJTlDJTkzJic7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gam9pbmVkLmxlbmd0aCA+IDAgPyBwcmVmaXggKyBqb2luZWQgOiAnJztcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcblxudmFyIGhhcyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5cbnZhciBkZWZhdWx0cyA9IHtcbiAgICBhbGxvd0RvdHM6IGZhbHNlLFxuICAgIGFsbG93RW1wdHlBcnJheXM6IGZhbHNlLFxuICAgIGFsbG93UHJvdG90eXBlczogZmFsc2UsXG4gICAgYWxsb3dTcGFyc2U6IGZhbHNlLFxuICAgIGFycmF5TGltaXQ6IDIwLFxuICAgIGNoYXJzZXQ6ICd1dGYtOCcsXG4gICAgY2hhcnNldFNlbnRpbmVsOiBmYWxzZSxcbiAgICBjb21tYTogZmFsc2UsXG4gICAgZGVjb2RlRG90SW5LZXlzOiBmYWxzZSxcbiAgICBkZWNvZGVyOiB1dGlscy5kZWNvZGUsXG4gICAgZGVsaW1pdGVyOiAnJicsXG4gICAgZGVwdGg6IDUsXG4gICAgZHVwbGljYXRlczogJ2NvbWJpbmUnLFxuICAgIGlnbm9yZVF1ZXJ5UHJlZml4OiBmYWxzZSxcbiAgICBpbnRlcnByZXROdW1lcmljRW50aXRpZXM6IGZhbHNlLFxuICAgIHBhcmFtZXRlckxpbWl0OiAxMDAwLFxuICAgIHBhcnNlQXJyYXlzOiB0cnVlLFxuICAgIHBsYWluT2JqZWN0czogZmFsc2UsXG4gICAgc3RyaWN0RGVwdGg6IGZhbHNlLFxuICAgIHN0cmljdE1lcmdlOiB0cnVlLFxuICAgIHN0cmljdE51bGxIYW5kbGluZzogZmFsc2UsXG4gICAgdGhyb3dPbkxpbWl0RXhjZWVkZWQ6IGZhbHNlXG59O1xuXG52YXIgaW50ZXJwcmV0TnVtZXJpY0VudGl0aWVzID0gZnVuY3Rpb24gKHN0cikge1xuICAgIHJldHVybiBzdHIucmVwbGFjZSgvJiMoXFxkKyk7L2csIGZ1bmN0aW9uICgkMCwgbnVtYmVyU3RyKSB7XG4gICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KG51bWJlclN0ciwgMTApKTtcbiAgICB9KTtcbn07XG5cbnZhciBwYXJzZUFycmF5VmFsdWUgPSBmdW5jdGlvbiAodmFsLCBvcHRpb25zLCBjdXJyZW50QXJyYXlMZW5ndGgpIHtcbiAgICBpZiAodmFsICYmIHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnICYmIG9wdGlvbnMuY29tbWEgJiYgdmFsLmluZGV4T2YoJywnKSA+IC0xKSB7XG4gICAgICAgIHJldHVybiB2YWwuc3BsaXQoJywnKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy50aHJvd09uTGltaXRFeGNlZWRlZCAmJiBjdXJyZW50QXJyYXlMZW5ndGggPj0gb3B0aW9ucy5hcnJheUxpbWl0KSB7XG4gICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdBcnJheSBsaW1pdCBleGNlZWRlZC4gT25seSAnICsgb3B0aW9ucy5hcnJheUxpbWl0ICsgJyBlbGVtZW50JyArIChvcHRpb25zLmFycmF5TGltaXQgPT09IDEgPyAnJyA6ICdzJykgKyAnIGFsbG93ZWQgaW4gYW4gYXJyYXkuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbDtcbn07XG5cbi8vIFRoaXMgaXMgd2hhdCBicm93c2VycyB3aWxsIHN1Ym1pdCB3aGVuIHRoZSDinJMgY2hhcmFjdGVyIG9jY3VycyBpbiBhblxuLy8gYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIGJvZHkgYW5kIHRoZSBlbmNvZGluZyBvZiB0aGUgcGFnZSBjb250YWluaW5nXG4vLyB0aGUgZm9ybSBpcyBpc28tODg1OS0xLCBvciB3aGVuIHRoZSBzdWJtaXR0ZWQgZm9ybSBoYXMgYW4gYWNjZXB0LWNoYXJzZXRcbi8vIGF0dHJpYnV0ZSBvZiBpc28tODg1OS0xLiBQcmVzdW1hYmx5IGFsc28gd2l0aCBvdGhlciBjaGFyc2V0cyB0aGF0IGRvIG5vdCBjb250YWluXG4vLyB0aGUg4pyTIGNoYXJhY3Rlciwgc3VjaCBhcyB1cy1hc2NpaS5cbnZhciBpc29TZW50aW5lbCA9ICd1dGY4PSUyNiUyMzEwMDAzJTNCJzsgLy8gZW5jb2RlVVJJQ29tcG9uZW50KCcmIzEwMDAzOycpXG5cbi8vIFRoZXNlIGFyZSB0aGUgcGVyY2VudC1lbmNvZGVkIHV0Zi04IG9jdGV0cyByZXByZXNlbnRpbmcgYSBjaGVja21hcmssIGluZGljYXRpbmcgdGhhdCB0aGUgcmVxdWVzdCBhY3R1YWxseSBpcyB1dGYtOCBlbmNvZGVkLlxudmFyIGNoYXJzZXRTZW50aW5lbCA9ICd1dGY4PSVFMiU5QyU5Myc7IC8vIGVuY29kZVVSSUNvbXBvbmVudCgn4pyTJylcblxudmFyIHBhcnNlVmFsdWVzID0gZnVuY3Rpb24gcGFyc2VRdWVyeVN0cmluZ1ZhbHVlcyhzdHIsIG9wdGlvbnMpIHtcbiAgICB2YXIgb2JqID0geyBfX3Byb3RvX186IG51bGwgfTtcblxuICAgIHZhciBjbGVhblN0ciA9IG9wdGlvbnMuaWdub3JlUXVlcnlQcmVmaXggPyBzdHIucmVwbGFjZSgvXlxcPy8sICcnKSA6IHN0cjtcbiAgICBjbGVhblN0ciA9IGNsZWFuU3RyLnJlcGxhY2UoLyU1Qi9naSwgJ1snKS5yZXBsYWNlKC8lNUQvZ2ksICddJyk7XG5cbiAgICB2YXIgbGltaXQgPSBvcHRpb25zLnBhcmFtZXRlckxpbWl0ID09PSBJbmZpbml0eSA/IHZvaWQgdW5kZWZpbmVkIDogb3B0aW9ucy5wYXJhbWV0ZXJMaW1pdDtcbiAgICB2YXIgcGFydHMgPSBjbGVhblN0ci5zcGxpdChcbiAgICAgICAgb3B0aW9ucy5kZWxpbWl0ZXIsXG4gICAgICAgIG9wdGlvbnMudGhyb3dPbkxpbWl0RXhjZWVkZWQgPyBsaW1pdCArIDEgOiBsaW1pdFxuICAgICk7XG5cbiAgICBpZiAob3B0aW9ucy50aHJvd09uTGltaXRFeGNlZWRlZCAmJiBwYXJ0cy5sZW5ndGggPiBsaW1pdCkge1xuICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignUGFyYW1ldGVyIGxpbWl0IGV4Y2VlZGVkLiBPbmx5ICcgKyBsaW1pdCArICcgcGFyYW1ldGVyJyArIChsaW1pdCA9PT0gMSA/ICcnIDogJ3MnKSArICcgYWxsb3dlZC4nKTtcbiAgICB9XG5cbiAgICB2YXIgc2tpcEluZGV4ID0gLTE7IC8vIEtlZXAgdHJhY2sgb2Ygd2hlcmUgdGhlIHV0Zjggc2VudGluZWwgd2FzIGZvdW5kXG4gICAgdmFyIGk7XG5cbiAgICB2YXIgY2hhcnNldCA9IG9wdGlvbnMuY2hhcnNldDtcbiAgICBpZiAob3B0aW9ucy5jaGFyc2V0U2VudGluZWwpIHtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHBhcnRzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBpZiAocGFydHNbaV0uaW5kZXhPZigndXRmOD0nKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGlmIChwYXJ0c1tpXSA9PT0gY2hhcnNldFNlbnRpbmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgPSAndXRmLTgnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGFydHNbaV0gPT09IGlzb1NlbnRpbmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgPSAnaXNvLTg4NTktMSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNraXBJbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgaSA9IHBhcnRzLmxlbmd0aDsgLy8gVGhlIGVzbGludCBzZXR0aW5ncyBkbyBub3QgYWxsb3cgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgaWYgKGkgPT09IHNraXBJbmRleCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHBhcnQgPSBwYXJ0c1tpXTtcblxuICAgICAgICB2YXIgYnJhY2tldEVxdWFsc1BvcyA9IHBhcnQuaW5kZXhPZignXT0nKTtcbiAgICAgICAgdmFyIHBvcyA9IGJyYWNrZXRFcXVhbHNQb3MgPT09IC0xID8gcGFydC5pbmRleE9mKCc9JykgOiBicmFja2V0RXF1YWxzUG9zICsgMTtcblxuICAgICAgICB2YXIga2V5O1xuICAgICAgICB2YXIgdmFsO1xuICAgICAgICBpZiAocG9zID09PSAtMSkge1xuICAgICAgICAgICAga2V5ID0gb3B0aW9ucy5kZWNvZGVyKHBhcnQsIGRlZmF1bHRzLmRlY29kZXIsIGNoYXJzZXQsICdrZXknKTtcbiAgICAgICAgICAgIHZhbCA9IG9wdGlvbnMuc3RyaWN0TnVsbEhhbmRsaW5nID8gbnVsbCA6ICcnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAga2V5ID0gb3B0aW9ucy5kZWNvZGVyKHBhcnQuc2xpY2UoMCwgcG9zKSwgZGVmYXVsdHMuZGVjb2RlciwgY2hhcnNldCwgJ2tleScpO1xuXG4gICAgICAgICAgICBpZiAoa2V5ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gdXRpbHMubWF5YmVNYXAoXG4gICAgICAgICAgICAgICAgICAgIHBhcnNlQXJyYXlWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnQuc2xpY2UocG9zICsgMSksXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcnJheShvYmpba2V5XSkgPyBvYmpba2V5XS5sZW5ndGggOiAwXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChlbmNvZGVkVmFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5kZWNvZGVyKGVuY29kZWRWYWwsIGRlZmF1bHRzLmRlY29kZXIsIGNoYXJzZXQsICd2YWx1ZScpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWwgJiYgb3B0aW9ucy5pbnRlcnByZXROdW1lcmljRW50aXRpZXMgJiYgY2hhcnNldCA9PT0gJ2lzby04ODU5LTEnKSB7XG4gICAgICAgICAgICB2YWwgPSBpbnRlcnByZXROdW1lcmljRW50aXRpZXMoU3RyaW5nKHZhbCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBhcnQuaW5kZXhPZignW109JykgPiAtMSkge1xuICAgICAgICAgICAgdmFsID0gaXNBcnJheSh2YWwpID8gW3ZhbF0gOiB2YWw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5jb21tYSAmJiBpc0FycmF5KHZhbCkgJiYgdmFsLmxlbmd0aCA+IG9wdGlvbnMuYXJyYXlMaW1pdCkge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMudGhyb3dPbkxpbWl0RXhjZWVkZWQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXJyYXkgbGltaXQgZXhjZWVkZWQuIE9ubHkgJyArIG9wdGlvbnMuYXJyYXlMaW1pdCArICcgZWxlbWVudCcgKyAob3B0aW9ucy5hcnJheUxpbWl0ID09PSAxID8gJycgOiAncycpICsgJyBhbGxvd2VkIGluIGFuIGFycmF5LicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFsID0gdXRpbHMuY29tYmluZShbXSwgdmFsLCBvcHRpb25zLmFycmF5TGltaXQsIG9wdGlvbnMucGxhaW5PYmplY3RzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChrZXkgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHZhciBleGlzdGluZyA9IGhhcy5jYWxsKG9iaiwga2V5KTtcbiAgICAgICAgICAgIGlmIChleGlzdGluZyAmJiAob3B0aW9ucy5kdXBsaWNhdGVzID09PSAnY29tYmluZScgfHwgcGFydC5pbmRleE9mKCdbXT0nKSA+IC0xKSkge1xuICAgICAgICAgICAgICAgIG9ialtrZXldID0gdXRpbHMuY29tYmluZShcbiAgICAgICAgICAgICAgICAgICAgb2JqW2tleV0sXG4gICAgICAgICAgICAgICAgICAgIHZhbCxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5hcnJheUxpbWl0LFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnBsYWluT2JqZWN0c1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFleGlzdGluZyB8fCBvcHRpb25zLmR1cGxpY2F0ZXMgPT09ICdsYXN0Jykge1xuICAgICAgICAgICAgICAgIG9ialtrZXldID0gdmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9iajtcbn07XG5cbnZhciBwYXJzZU9iamVjdCA9IGZ1bmN0aW9uIChjaGFpbiwgdmFsLCBvcHRpb25zLCB2YWx1ZXNQYXJzZWQpIHtcbiAgICB2YXIgY3VycmVudEFycmF5TGVuZ3RoID0gMDtcbiAgICBpZiAoY2hhaW4ubGVuZ3RoID4gMCAmJiBjaGFpbltjaGFpbi5sZW5ndGggLSAxXSA9PT0gJ1tdJykge1xuICAgICAgICB2YXIgcGFyZW50S2V5ID0gY2hhaW4uc2xpY2UoMCwgLTEpLmpvaW4oJycpO1xuICAgICAgICBjdXJyZW50QXJyYXlMZW5ndGggPSBBcnJheS5pc0FycmF5KHZhbCkgJiYgdmFsW3BhcmVudEtleV0gPyB2YWxbcGFyZW50S2V5XS5sZW5ndGggOiAwO1xuICAgIH1cblxuICAgIHZhciBsZWFmID0gdmFsdWVzUGFyc2VkID8gdmFsIDogcGFyc2VBcnJheVZhbHVlKHZhbCwgb3B0aW9ucywgY3VycmVudEFycmF5TGVuZ3RoKTtcblxuICAgIGZvciAodmFyIGkgPSBjaGFpbi5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgb2JqO1xuICAgICAgICB2YXIgcm9vdCA9IGNoYWluW2ldO1xuXG4gICAgICAgIGlmIChyb290ID09PSAnW10nICYmIG9wdGlvbnMucGFyc2VBcnJheXMpIHtcbiAgICAgICAgICAgIGlmICh1dGlscy5pc092ZXJmbG93KGxlYWYpKSB7XG4gICAgICAgICAgICAgICAgLy8gbGVhZiBpcyBhbHJlYWR5IGFuIG92ZXJmbG93IG9iamVjdCwgcHJlc2VydmUgaXRcbiAgICAgICAgICAgICAgICBvYmogPSBsZWFmO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBvYmogPSBvcHRpb25zLmFsbG93RW1wdHlBcnJheXMgJiYgKGxlYWYgPT09ICcnIHx8IChvcHRpb25zLnN0cmljdE51bGxIYW5kbGluZyAmJiBsZWFmID09PSBudWxsKSlcbiAgICAgICAgICAgICAgICAgICAgPyBbXVxuICAgICAgICAgICAgICAgICAgICA6IHV0aWxzLmNvbWJpbmUoXG4gICAgICAgICAgICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlYWYsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmFycmF5TGltaXQsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnBsYWluT2JqZWN0c1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb2JqID0gb3B0aW9ucy5wbGFpbk9iamVjdHMgPyB7IF9fcHJvdG9fXzogbnVsbCB9IDoge307XG4gICAgICAgICAgICB2YXIgY2xlYW5Sb290ID0gcm9vdC5jaGFyQXQoMCkgPT09ICdbJyAmJiByb290LmNoYXJBdChyb290Lmxlbmd0aCAtIDEpID09PSAnXScgPyByb290LnNsaWNlKDEsIC0xKSA6IHJvb3Q7XG4gICAgICAgICAgICB2YXIgZGVjb2RlZFJvb3QgPSBvcHRpb25zLmRlY29kZURvdEluS2V5cyA/IGNsZWFuUm9vdC5yZXBsYWNlKC8lMkUvZywgJy4nKSA6IGNsZWFuUm9vdDtcbiAgICAgICAgICAgIHZhciBpbmRleCA9IHBhcnNlSW50KGRlY29kZWRSb290LCAxMCk7XG4gICAgICAgICAgICB2YXIgaXNWYWxpZEFycmF5SW5kZXggPSAhaXNOYU4oaW5kZXgpXG4gICAgICAgICAgICAgICAgJiYgcm9vdCAhPT0gZGVjb2RlZFJvb3RcbiAgICAgICAgICAgICAgICAmJiBTdHJpbmcoaW5kZXgpID09PSBkZWNvZGVkUm9vdFxuICAgICAgICAgICAgICAgICYmIGluZGV4ID49IDBcbiAgICAgICAgICAgICAgICAmJiBvcHRpb25zLnBhcnNlQXJyYXlzO1xuICAgICAgICAgICAgaWYgKCFvcHRpb25zLnBhcnNlQXJyYXlzICYmIGRlY29kZWRSb290ID09PSAnJykge1xuICAgICAgICAgICAgICAgIG9iaiA9IHsgMDogbGVhZiB9O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpc1ZhbGlkQXJyYXlJbmRleCAmJiBpbmRleCA8IG9wdGlvbnMuYXJyYXlMaW1pdCkge1xuICAgICAgICAgICAgICAgIG9iaiA9IFtdO1xuICAgICAgICAgICAgICAgIG9ialtpbmRleF0gPSBsZWFmO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpc1ZhbGlkQXJyYXlJbmRleCAmJiBvcHRpb25zLnRocm93T25MaW1pdEV4Y2VlZGVkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0FycmF5IGxpbWl0IGV4Y2VlZGVkLiBPbmx5ICcgKyBvcHRpb25zLmFycmF5TGltaXQgKyAnIGVsZW1lbnQnICsgKG9wdGlvbnMuYXJyYXlMaW1pdCA9PT0gMSA/ICcnIDogJ3MnKSArICcgYWxsb3dlZCBpbiBhbiBhcnJheS4nKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNWYWxpZEFycmF5SW5kZXgpIHtcbiAgICAgICAgICAgICAgICBvYmpbaW5kZXhdID0gbGVhZjtcbiAgICAgICAgICAgICAgICB1dGlscy5tYXJrT3ZlcmZsb3cob2JqLCBpbmRleCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRlY29kZWRSb290ICE9PSAnX19wcm90b19fJykge1xuICAgICAgICAgICAgICAgIG9ialtkZWNvZGVkUm9vdF0gPSBsZWFmO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGVhZiA9IG9iajtcbiAgICB9XG5cbiAgICByZXR1cm4gbGVhZjtcbn07XG5cbnZhciBzcGxpdEtleUludG9TZWdtZW50cyA9IGZ1bmN0aW9uIHNwbGl0S2V5SW50b1NlZ21lbnRzKGdpdmVuS2V5LCBvcHRpb25zKSB7XG4gICAgdmFyIGtleSA9IG9wdGlvbnMuYWxsb3dEb3RzID8gZ2l2ZW5LZXkucmVwbGFjZSgvXFwuKFteLltdKykvZywgJ1skMV0nKSA6IGdpdmVuS2V5O1xuXG4gICAgaWYgKG9wdGlvbnMuZGVwdGggPD0gMCkge1xuICAgICAgICBpZiAoIW9wdGlvbnMucGxhaW5PYmplY3RzICYmIGhhcy5jYWxsKE9iamVjdC5wcm90b3R5cGUsIGtleSkpIHtcbiAgICAgICAgICAgIGlmICghb3B0aW9ucy5hbGxvd1Byb3RvdHlwZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW2tleV07XG4gICAgfVxuXG4gICAgdmFyIGJyYWNrZXRzID0gLyhcXFtbXltcXF1dKl0pLztcbiAgICB2YXIgY2hpbGQgPSAvKFxcW1teW1xcXV0qXSkvZztcblxuICAgIHZhciBzZWdtZW50ID0gYnJhY2tldHMuZXhlYyhrZXkpO1xuICAgIHZhciBwYXJlbnQgPSBzZWdtZW50ID8ga2V5LnNsaWNlKDAsIHNlZ21lbnQuaW5kZXgpIDoga2V5O1xuXG4gICAgdmFyIGtleXMgPSBbXTtcblxuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgaWYgKCFvcHRpb25zLnBsYWluT2JqZWN0cyAmJiBoYXMuY2FsbChPYmplY3QucHJvdG90eXBlLCBwYXJlbnQpKSB7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuYWxsb3dQcm90b3R5cGVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAga2V5c1trZXlzLmxlbmd0aF0gPSBwYXJlbnQ7XG4gICAgfVxuXG4gICAgdmFyIGkgPSAwO1xuICAgIHdoaWxlICgoc2VnbWVudCA9IGNoaWxkLmV4ZWMoa2V5KSkgIT09IG51bGwgJiYgaSA8IG9wdGlvbnMuZGVwdGgpIHtcbiAgICAgICAgaSArPSAxO1xuXG4gICAgICAgIHZhciBzZWdtZW50Q29udGVudCA9IHNlZ21lbnRbMV0uc2xpY2UoMSwgLTEpO1xuICAgICAgICBpZiAoIW9wdGlvbnMucGxhaW5PYmplY3RzICYmIGhhcy5jYWxsKE9iamVjdC5wcm90b3R5cGUsIHNlZ21lbnRDb250ZW50KSkge1xuICAgICAgICAgICAgaWYgKCFvcHRpb25zLmFsbG93UHJvdG90eXBlcykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGtleXNba2V5cy5sZW5ndGhdID0gc2VnbWVudFsxXTtcbiAgICB9XG5cbiAgICBpZiAoc2VnbWVudCkge1xuICAgICAgICBpZiAob3B0aW9ucy5zdHJpY3REZXB0aCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0lucHV0IGRlcHRoIGV4Y2VlZGVkIGRlcHRoIG9wdGlvbiBvZiAnICsgb3B0aW9ucy5kZXB0aCArICcgYW5kIHN0cmljdERlcHRoIGlzIHRydWUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGtleXNba2V5cy5sZW5ndGhdID0gJ1snICsga2V5LnNsaWNlKHNlZ21lbnQuaW5kZXgpICsgJ10nO1xuICAgIH1cblxuICAgIHJldHVybiBrZXlzO1xufTtcblxudmFyIHBhcnNlS2V5cyA9IGZ1bmN0aW9uIHBhcnNlUXVlcnlTdHJpbmdLZXlzKGdpdmVuS2V5LCB2YWwsIG9wdGlvbnMsIHZhbHVlc1BhcnNlZCkge1xuICAgIGlmICghZ2l2ZW5LZXkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBrZXlzID0gc3BsaXRLZXlJbnRvU2VnbWVudHMoZ2l2ZW5LZXksIG9wdGlvbnMpO1xuXG4gICAgaWYgKCFrZXlzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyc2VPYmplY3Qoa2V5cywgdmFsLCBvcHRpb25zLCB2YWx1ZXNQYXJzZWQpO1xufTtcblxudmFyIG5vcm1hbGl6ZVBhcnNlT3B0aW9ucyA9IGZ1bmN0aW9uIG5vcm1hbGl6ZVBhcnNlT3B0aW9ucyhvcHRzKSB7XG4gICAgaWYgKCFvcHRzKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0cztcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9wdHMuYWxsb3dFbXB0eUFycmF5cyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIG9wdHMuYWxsb3dFbXB0eUFycmF5cyAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2BhbGxvd0VtcHR5QXJyYXlzYCBvcHRpb24gY2FuIG9ubHkgYmUgYHRydWVgIG9yIGBmYWxzZWAsIHdoZW4gcHJvdmlkZWQnKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9wdHMuZGVjb2RlRG90SW5LZXlzICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygb3B0cy5kZWNvZGVEb3RJbktleXMgIT09ICdib29sZWFuJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdgZGVjb2RlRG90SW5LZXlzYCBvcHRpb24gY2FuIG9ubHkgYmUgYHRydWVgIG9yIGBmYWxzZWAsIHdoZW4gcHJvdmlkZWQnKTtcbiAgICB9XG5cbiAgICBpZiAob3B0cy5kZWNvZGVyICE9PSBudWxsICYmIHR5cGVvZiBvcHRzLmRlY29kZXIgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBvcHRzLmRlY29kZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRGVjb2RlciBoYXMgdG8gYmUgYSBmdW5jdGlvbi4nKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9wdHMuY2hhcnNldCAhPT0gJ3VuZGVmaW5lZCcgJiYgb3B0cy5jaGFyc2V0ICE9PSAndXRmLTgnICYmIG9wdHMuY2hhcnNldCAhPT0gJ2lzby04ODU5LTEnKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBjaGFyc2V0IG9wdGlvbiBtdXN0IGJlIGVpdGhlciB1dGYtOCwgaXNvLTg4NTktMSwgb3IgdW5kZWZpbmVkJyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvcHRzLnRocm93T25MaW1pdEV4Y2VlZGVkICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygb3B0cy50aHJvd09uTGltaXRFeGNlZWRlZCAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2B0aHJvd09uTGltaXRFeGNlZWRlZGAgb3B0aW9uIG11c3QgYmUgYSBib29sZWFuJyk7XG4gICAgfVxuXG4gICAgdmFyIGNoYXJzZXQgPSB0eXBlb2Ygb3B0cy5jaGFyc2V0ID09PSAndW5kZWZpbmVkJyA/IGRlZmF1bHRzLmNoYXJzZXQgOiBvcHRzLmNoYXJzZXQ7XG5cbiAgICB2YXIgZHVwbGljYXRlcyA9IHR5cGVvZiBvcHRzLmR1cGxpY2F0ZXMgPT09ICd1bmRlZmluZWQnID8gZGVmYXVsdHMuZHVwbGljYXRlcyA6IG9wdHMuZHVwbGljYXRlcztcblxuICAgIGlmIChkdXBsaWNhdGVzICE9PSAnY29tYmluZScgJiYgZHVwbGljYXRlcyAhPT0gJ2ZpcnN0JyAmJiBkdXBsaWNhdGVzICE9PSAnbGFzdCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIGR1cGxpY2F0ZXMgb3B0aW9uIG11c3QgYmUgZWl0aGVyIGNvbWJpbmUsIGZpcnN0LCBvciBsYXN0Jyk7XG4gICAgfVxuXG4gICAgdmFyIGFsbG93RG90cyA9IHR5cGVvZiBvcHRzLmFsbG93RG90cyA9PT0gJ3VuZGVmaW5lZCcgPyBvcHRzLmRlY29kZURvdEluS2V5cyA9PT0gdHJ1ZSA/IHRydWUgOiBkZWZhdWx0cy5hbGxvd0RvdHMgOiAhIW9wdHMuYWxsb3dEb3RzO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgYWxsb3dEb3RzOiBhbGxvd0RvdHMsXG4gICAgICAgIGFsbG93RW1wdHlBcnJheXM6IHR5cGVvZiBvcHRzLmFsbG93RW1wdHlBcnJheXMgPT09ICdib29sZWFuJyA/ICEhb3B0cy5hbGxvd0VtcHR5QXJyYXlzIDogZGVmYXVsdHMuYWxsb3dFbXB0eUFycmF5cyxcbiAgICAgICAgYWxsb3dQcm90b3R5cGVzOiB0eXBlb2Ygb3B0cy5hbGxvd1Byb3RvdHlwZXMgPT09ICdib29sZWFuJyA/IG9wdHMuYWxsb3dQcm90b3R5cGVzIDogZGVmYXVsdHMuYWxsb3dQcm90b3R5cGVzLFxuICAgICAgICBhbGxvd1NwYXJzZTogdHlwZW9mIG9wdHMuYWxsb3dTcGFyc2UgPT09ICdib29sZWFuJyA/IG9wdHMuYWxsb3dTcGFyc2UgOiBkZWZhdWx0cy5hbGxvd1NwYXJzZSxcbiAgICAgICAgYXJyYXlMaW1pdDogdHlwZW9mIG9wdHMuYXJyYXlMaW1pdCA9PT0gJ251bWJlcicgPyBvcHRzLmFycmF5TGltaXQgOiBkZWZhdWx0cy5hcnJheUxpbWl0LFxuICAgICAgICBjaGFyc2V0OiBjaGFyc2V0LFxuICAgICAgICBjaGFyc2V0U2VudGluZWw6IHR5cGVvZiBvcHRzLmNoYXJzZXRTZW50aW5lbCA9PT0gJ2Jvb2xlYW4nID8gb3B0cy5jaGFyc2V0U2VudGluZWwgOiBkZWZhdWx0cy5jaGFyc2V0U2VudGluZWwsXG4gICAgICAgIGNvbW1hOiB0eXBlb2Ygb3B0cy5jb21tYSA9PT0gJ2Jvb2xlYW4nID8gb3B0cy5jb21tYSA6IGRlZmF1bHRzLmNvbW1hLFxuICAgICAgICBkZWNvZGVEb3RJbktleXM6IHR5cGVvZiBvcHRzLmRlY29kZURvdEluS2V5cyA9PT0gJ2Jvb2xlYW4nID8gb3B0cy5kZWNvZGVEb3RJbktleXMgOiBkZWZhdWx0cy5kZWNvZGVEb3RJbktleXMsXG4gICAgICAgIGRlY29kZXI6IHR5cGVvZiBvcHRzLmRlY29kZXIgPT09ICdmdW5jdGlvbicgPyBvcHRzLmRlY29kZXIgOiBkZWZhdWx0cy5kZWNvZGVyLFxuICAgICAgICBkZWxpbWl0ZXI6IHR5cGVvZiBvcHRzLmRlbGltaXRlciA9PT0gJ3N0cmluZycgfHwgdXRpbHMuaXNSZWdFeHAob3B0cy5kZWxpbWl0ZXIpID8gb3B0cy5kZWxpbWl0ZXIgOiBkZWZhdWx0cy5kZWxpbWl0ZXIsXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1pbXBsaWNpdC1jb2VyY2lvbiwgbm8tZXh0cmEtcGFyZW5zXG4gICAgICAgIGRlcHRoOiAodHlwZW9mIG9wdHMuZGVwdGggPT09ICdudW1iZXInIHx8IG9wdHMuZGVwdGggPT09IGZhbHNlKSA/ICtvcHRzLmRlcHRoIDogZGVmYXVsdHMuZGVwdGgsXG4gICAgICAgIGR1cGxpY2F0ZXM6IGR1cGxpY2F0ZXMsXG4gICAgICAgIGlnbm9yZVF1ZXJ5UHJlZml4OiBvcHRzLmlnbm9yZVF1ZXJ5UHJlZml4ID09PSB0cnVlLFxuICAgICAgICBpbnRlcnByZXROdW1lcmljRW50aXRpZXM6IHR5cGVvZiBvcHRzLmludGVycHJldE51bWVyaWNFbnRpdGllcyA9PT0gJ2Jvb2xlYW4nID8gb3B0cy5pbnRlcnByZXROdW1lcmljRW50aXRpZXMgOiBkZWZhdWx0cy5pbnRlcnByZXROdW1lcmljRW50aXRpZXMsXG4gICAgICAgIHBhcmFtZXRlckxpbWl0OiB0eXBlb2Ygb3B0cy5wYXJhbWV0ZXJMaW1pdCA9PT0gJ251bWJlcicgPyBvcHRzLnBhcmFtZXRlckxpbWl0IDogZGVmYXVsdHMucGFyYW1ldGVyTGltaXQsXG4gICAgICAgIHBhcnNlQXJyYXlzOiBvcHRzLnBhcnNlQXJyYXlzICE9PSBmYWxzZSxcbiAgICAgICAgcGxhaW5PYmplY3RzOiB0eXBlb2Ygb3B0cy5wbGFpbk9iamVjdHMgPT09ICdib29sZWFuJyA/IG9wdHMucGxhaW5PYmplY3RzIDogZGVmYXVsdHMucGxhaW5PYmplY3RzLFxuICAgICAgICBzdHJpY3REZXB0aDogdHlwZW9mIG9wdHMuc3RyaWN0RGVwdGggPT09ICdib29sZWFuJyA/ICEhb3B0cy5zdHJpY3REZXB0aCA6IGRlZmF1bHRzLnN0cmljdERlcHRoLFxuICAgICAgICBzdHJpY3RNZXJnZTogdHlwZW9mIG9wdHMuc3RyaWN0TWVyZ2UgPT09ICdib29sZWFuJyA/ICEhb3B0cy5zdHJpY3RNZXJnZSA6IGRlZmF1bHRzLnN0cmljdE1lcmdlLFxuICAgICAgICBzdHJpY3ROdWxsSGFuZGxpbmc6IHR5cGVvZiBvcHRzLnN0cmljdE51bGxIYW5kbGluZyA9PT0gJ2Jvb2xlYW4nID8gb3B0cy5zdHJpY3ROdWxsSGFuZGxpbmcgOiBkZWZhdWx0cy5zdHJpY3ROdWxsSGFuZGxpbmcsXG4gICAgICAgIHRocm93T25MaW1pdEV4Y2VlZGVkOiB0eXBlb2Ygb3B0cy50aHJvd09uTGltaXRFeGNlZWRlZCA9PT0gJ2Jvb2xlYW4nID8gb3B0cy50aHJvd09uTGltaXRFeGNlZWRlZCA6IGZhbHNlXG4gICAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHN0ciwgb3B0cykge1xuICAgIHZhciBvcHRpb25zID0gbm9ybWFsaXplUGFyc2VPcHRpb25zKG9wdHMpO1xuXG4gICAgaWYgKHN0ciA9PT0gJycgfHwgc3RyID09PSBudWxsIHx8IHR5cGVvZiBzdHIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiBvcHRpb25zLnBsYWluT2JqZWN0cyA/IHsgX19wcm90b19fOiBudWxsIH0gOiB7fTtcbiAgICB9XG5cbiAgICB2YXIgdGVtcE9iaiA9IHR5cGVvZiBzdHIgPT09ICdzdHJpbmcnID8gcGFyc2VWYWx1ZXMoc3RyLCBvcHRpb25zKSA6IHN0cjtcbiAgICB2YXIgb2JqID0gb3B0aW9ucy5wbGFpbk9iamVjdHMgPyB7IF9fcHJvdG9fXzogbnVsbCB9IDoge307XG5cbiAgICAvLyBJdGVyYXRlIG92ZXIgdGhlIGtleXMgYW5kIHNldHVwIHRoZSBuZXcgb2JqZWN0XG5cbiAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHRlbXBPYmopO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgdmFyIG5ld09iaiA9IHBhcnNlS2V5cyhrZXksIHRlbXBPYmpba2V5XSwgb3B0aW9ucywgdHlwZW9mIHN0ciA9PT0gJ3N0cmluZycpO1xuICAgICAgICBvYmogPSB1dGlscy5tZXJnZShvYmosIG5ld09iaiwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuYWxsb3dTcGFyc2UgPT09IHRydWUpIHtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG5cbiAgICByZXR1cm4gdXRpbHMuY29tcGFjdChvYmopO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHN0cmluZ2lmeSA9IHJlcXVpcmUoJy4vc3RyaW5naWZ5Jyk7XG52YXIgcGFyc2UgPSByZXF1aXJlKCcuL3BhcnNlJyk7XG52YXIgZm9ybWF0cyA9IHJlcXVpcmUoJy4vZm9ybWF0cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBmb3JtYXRzOiBmb3JtYXRzLFxuICAgIHBhcnNlOiBwYXJzZSxcbiAgICBzdHJpbmdpZnk6IHN0cmluZ2lmeVxufTtcbiIsIi8qXG4gKiBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuICogXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4gKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4gKiBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4gKiBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbiAqIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4gKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4gKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4gKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4gKiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbiAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuICogT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuICogVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBwdW55Y29kZSA9IHJlcXVpcmUoJ3B1bnljb2RlLycpO1xuXG5mdW5jdGlvbiBVcmwoKSB7XG4gIHRoaXMucHJvdG9jb2wgPSBudWxsO1xuICB0aGlzLnNsYXNoZXMgPSBudWxsO1xuICB0aGlzLmF1dGggPSBudWxsO1xuICB0aGlzLmhvc3QgPSBudWxsO1xuICB0aGlzLnBvcnQgPSBudWxsO1xuICB0aGlzLmhvc3RuYW1lID0gbnVsbDtcbiAgdGhpcy5oYXNoID0gbnVsbDtcbiAgdGhpcy5zZWFyY2ggPSBudWxsO1xuICB0aGlzLnF1ZXJ5ID0gbnVsbDtcbiAgdGhpcy5wYXRobmFtZSA9IG51bGw7XG4gIHRoaXMucGF0aCA9IG51bGw7XG4gIHRoaXMuaHJlZiA9IG51bGw7XG59XG5cbi8vIFJlZmVyZW5jZTogUkZDIDM5ODYsIFJGQyAxODA4LCBSRkMgMjM5NlxuXG4vKlxuICogZGVmaW5lIHRoZXNlIGhlcmUgc28gYXQgbGVhc3QgdGhleSBvbmx5IGhhdmUgdG8gYmVcbiAqIGNvbXBpbGVkIG9uY2Ugb24gdGhlIGZpcnN0IG1vZHVsZSBsb2FkLlxuICovXG52YXIgcHJvdG9jb2xQYXR0ZXJuID0gL14oW2EtejAtOS4rLV0rOikvaSxcbiAgcG9ydFBhdHRlcm4gPSAvOlswLTldKiQvLFxuXG4gIC8vIFNwZWNpYWwgY2FzZSBmb3IgYSBzaW1wbGUgcGF0aCBVUkxcbiAgc2ltcGxlUGF0aFBhdHRlcm4gPSAvXihcXC9cXC8/KD8hXFwvKVteP1xcc10qKShcXD9bXlxcc10qKT8kLyxcblxuICAvKlxuICAgKiBSRkMgMjM5NjogY2hhcmFjdGVycyByZXNlcnZlZCBmb3IgZGVsaW1pdGluZyBVUkxzLlxuICAgKiBXZSBhY3R1YWxseSBqdXN0IGF1dG8tZXNjYXBlIHRoZXNlLlxuICAgKi9cbiAgZGVsaW1zID0gW1xuICAgICc8JywgJz4nLCAnXCInLCAnYCcsICcgJywgJ1xccicsICdcXG4nLCAnXFx0J1xuICBdLFxuXG4gIC8vIFJGQyAyMzk2OiBjaGFyYWN0ZXJzIG5vdCBhbGxvd2VkIGZvciB2YXJpb3VzIHJlYXNvbnMuXG4gIHVud2lzZSA9IFtcbiAgICAneycsICd9JywgJ3wnLCAnXFxcXCcsICdeJywgJ2AnXG4gIF0uY29uY2F0KGRlbGltcyksXG5cbiAgLy8gQWxsb3dlZCBieSBSRkNzLCBidXQgY2F1c2Ugb2YgWFNTIGF0dGFja3MuICBBbHdheXMgZXNjYXBlIHRoZXNlLlxuICBhdXRvRXNjYXBlID0gWydcXCcnXS5jb25jYXQodW53aXNlKSxcbiAgLypcbiAgICogQ2hhcmFjdGVycyB0aGF0IGFyZSBuZXZlciBldmVyIGFsbG93ZWQgaW4gYSBob3N0bmFtZS5cbiAgICogTm90ZSB0aGF0IGFueSBpbnZhbGlkIGNoYXJzIGFyZSBhbHNvIGhhbmRsZWQsIGJ1dCB0aGVzZVxuICAgKiBhcmUgdGhlIG9uZXMgdGhhdCBhcmUgKmV4cGVjdGVkKiB0byBiZSBzZWVuLCBzbyB3ZSBmYXN0LXBhdGhcbiAgICogdGhlbS5cbiAgICovXG4gIG5vbkhvc3RDaGFycyA9IFtcbiAgICAnJScsICcvJywgJz8nLCAnOycsICcjJ1xuICBdLmNvbmNhdChhdXRvRXNjYXBlKSxcbiAgaG9zdEVuZGluZ0NoYXJzID0gW1xuICAgICcvJywgJz8nLCAnIydcbiAgXSxcbiAgaG9zdG5hbWVNYXhMZW4gPSAyNTUsXG4gIGhvc3RuYW1lUGFydFBhdHRlcm4gPSAvXlsrYS16MC05QS1aXy1dezAsNjN9JC8sXG4gIGhvc3RuYW1lUGFydFN0YXJ0ID0gL14oWythLXowLTlBLVpfLV17MCw2M30pKC4qKSQvLFxuICAvLyBwcm90b2NvbHMgdGhhdCBjYW4gYWxsb3cgXCJ1bnNhZmVcIiBhbmQgXCJ1bndpc2VcIiBjaGFycy5cbiAgdW5zYWZlUHJvdG9jb2wgPSB7XG4gICAgamF2YXNjcmlwdDogdHJ1ZSxcbiAgICAnamF2YXNjcmlwdDonOiB0cnVlXG4gIH0sXG4gIC8vIHByb3RvY29scyB0aGF0IG5ldmVyIGhhdmUgYSBob3N0bmFtZS5cbiAgaG9zdGxlc3NQcm90b2NvbCA9IHtcbiAgICBqYXZhc2NyaXB0OiB0cnVlLFxuICAgICdqYXZhc2NyaXB0Oic6IHRydWVcbiAgfSxcbiAgLy8gcHJvdG9jb2xzIHRoYXQgYWx3YXlzIGNvbnRhaW4gYSAvLyBiaXQuXG4gIHNsYXNoZWRQcm90b2NvbCA9IHtcbiAgICBodHRwOiB0cnVlLFxuICAgIGh0dHBzOiB0cnVlLFxuICAgIGZ0cDogdHJ1ZSxcbiAgICBnb3BoZXI6IHRydWUsXG4gICAgZmlsZTogdHJ1ZSxcbiAgICAnaHR0cDonOiB0cnVlLFxuICAgICdodHRwczonOiB0cnVlLFxuICAgICdmdHA6JzogdHJ1ZSxcbiAgICAnZ29waGVyOic6IHRydWUsXG4gICAgJ2ZpbGU6JzogdHJ1ZVxuICB9LFxuICBxdWVyeXN0cmluZyA9IHJlcXVpcmUoJ3FzJyk7XG5cbmZ1bmN0aW9uIHVybFBhcnNlKHVybCwgcGFyc2VRdWVyeVN0cmluZywgc2xhc2hlc0Rlbm90ZUhvc3QpIHtcbiAgaWYgKHVybCAmJiB0eXBlb2YgdXJsID09PSAnb2JqZWN0JyAmJiB1cmwgaW5zdGFuY2VvZiBVcmwpIHsgcmV0dXJuIHVybDsgfVxuXG4gIHZhciB1ID0gbmV3IFVybCgpO1xuICB1LnBhcnNlKHVybCwgcGFyc2VRdWVyeVN0cmluZywgc2xhc2hlc0Rlbm90ZUhvc3QpO1xuICByZXR1cm4gdTtcbn1cblxuVXJsLnByb3RvdHlwZS5wYXJzZSA9IGZ1bmN0aW9uICh1cmwsIHBhcnNlUXVlcnlTdHJpbmcsIHNsYXNoZXNEZW5vdGVIb3N0KSB7XG4gIGlmICh0eXBlb2YgdXJsICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQYXJhbWV0ZXIgJ3VybCcgbXVzdCBiZSBhIHN0cmluZywgbm90IFwiICsgdHlwZW9mIHVybCk7XG4gIH1cblxuICAvKlxuICAgKiBDb3B5IGNocm9tZSwgSUUsIG9wZXJhIGJhY2tzbGFzaC1oYW5kbGluZyBiZWhhdmlvci5cbiAgICogQmFjayBzbGFzaGVzIGJlZm9yZSB0aGUgcXVlcnkgc3RyaW5nIGdldCBjb252ZXJ0ZWQgdG8gZm9yd2FyZCBzbGFzaGVzXG4gICAqIFNlZTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTI1OTE2XG4gICAqL1xuICB2YXIgcXVlcnlJbmRleCA9IHVybC5pbmRleE9mKCc/JyksXG4gICAgc3BsaXR0ZXIgPSBxdWVyeUluZGV4ICE9PSAtMSAmJiBxdWVyeUluZGV4IDwgdXJsLmluZGV4T2YoJyMnKSA/ICc/JyA6ICcjJyxcbiAgICB1U3BsaXQgPSB1cmwuc3BsaXQoc3BsaXR0ZXIpLFxuICAgIHNsYXNoUmVnZXggPSAvXFxcXC9nO1xuICB1U3BsaXRbMF0gPSB1U3BsaXRbMF0ucmVwbGFjZShzbGFzaFJlZ2V4LCAnLycpO1xuICB1cmwgPSB1U3BsaXQuam9pbihzcGxpdHRlcik7XG5cbiAgdmFyIHJlc3QgPSB1cmw7XG5cbiAgLypcbiAgICogdHJpbSBiZWZvcmUgcHJvY2VlZGluZy5cbiAgICogVGhpcyBpcyB0byBzdXBwb3J0IHBhcnNlIHN0dWZmIGxpa2UgXCIgIGh0dHA6Ly9mb28uY29tICBcXG5cIlxuICAgKi9cbiAgcmVzdCA9IHJlc3QudHJpbSgpO1xuXG4gIGlmICghc2xhc2hlc0Rlbm90ZUhvc3QgJiYgdXJsLnNwbGl0KCcjJykubGVuZ3RoID09PSAxKSB7XG4gICAgLy8gVHJ5IGZhc3QgcGF0aCByZWdleHBcbiAgICB2YXIgc2ltcGxlUGF0aCA9IHNpbXBsZVBhdGhQYXR0ZXJuLmV4ZWMocmVzdCk7XG4gICAgaWYgKHNpbXBsZVBhdGgpIHtcbiAgICAgIHRoaXMucGF0aCA9IHJlc3Q7XG4gICAgICB0aGlzLmhyZWYgPSByZXN0O1xuICAgICAgdGhpcy5wYXRobmFtZSA9IHNpbXBsZVBhdGhbMV07XG4gICAgICBpZiAoc2ltcGxlUGF0aFsyXSkge1xuICAgICAgICB0aGlzLnNlYXJjaCA9IHNpbXBsZVBhdGhbMl07XG4gICAgICAgIGlmIChwYXJzZVF1ZXJ5U3RyaW5nKSB7XG4gICAgICAgICAgdGhpcy5xdWVyeSA9IHF1ZXJ5c3RyaW5nLnBhcnNlKHRoaXMuc2VhcmNoLnN1YnN0cigxKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5xdWVyeSA9IHRoaXMuc2VhcmNoLnN1YnN0cigxKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChwYXJzZVF1ZXJ5U3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoID0gJyc7XG4gICAgICAgIHRoaXMucXVlcnkgPSB7fTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIHZhciBwcm90byA9IHByb3RvY29sUGF0dGVybi5leGVjKHJlc3QpO1xuICBpZiAocHJvdG8pIHtcbiAgICBwcm90byA9IHByb3RvWzBdO1xuICAgIHZhciBsb3dlclByb3RvID0gcHJvdG8udG9Mb3dlckNhc2UoKTtcbiAgICB0aGlzLnByb3RvY29sID0gbG93ZXJQcm90bztcbiAgICByZXN0ID0gcmVzdC5zdWJzdHIocHJvdG8ubGVuZ3RoKTtcbiAgfVxuXG4gIC8qXG4gICAqIGZpZ3VyZSBvdXQgaWYgaXQncyBnb3QgYSBob3N0XG4gICAqIHVzZXJAc2VydmVyIGlzICphbHdheXMqIGludGVycHJldGVkIGFzIGEgaG9zdG5hbWUsIGFuZCB1cmxcbiAgICogcmVzb2x1dGlvbiB3aWxsIHRyZWF0IC8vZm9vL2JhciBhcyBob3N0PWZvbyxwYXRoPWJhciBiZWNhdXNlIHRoYXQnc1xuICAgKiBob3cgdGhlIGJyb3dzZXIgcmVzb2x2ZXMgcmVsYXRpdmUgVVJMcy5cbiAgICovXG4gIGlmIChzbGFzaGVzRGVub3RlSG9zdCB8fCBwcm90byB8fCByZXN0Lm1hdGNoKC9eXFwvXFwvW15AL10rQFteQC9dKy8pKSB7XG4gICAgdmFyIHNsYXNoZXMgPSByZXN0LnN1YnN0cigwLCAyKSA9PT0gJy8vJztcbiAgICBpZiAoc2xhc2hlcyAmJiAhKHByb3RvICYmIGhvc3RsZXNzUHJvdG9jb2xbcHJvdG9dKSkge1xuICAgICAgcmVzdCA9IHJlc3Quc3Vic3RyKDIpO1xuICAgICAgdGhpcy5zbGFzaGVzID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBpZiAoIWhvc3RsZXNzUHJvdG9jb2xbcHJvdG9dICYmIChzbGFzaGVzIHx8IChwcm90byAmJiAhc2xhc2hlZFByb3RvY29sW3Byb3RvXSkpKSB7XG5cbiAgICAvKlxuICAgICAqIHRoZXJlJ3MgYSBob3N0bmFtZS5cbiAgICAgKiB0aGUgZmlyc3QgaW5zdGFuY2Ugb2YgLywgPywgOywgb3IgIyBlbmRzIHRoZSBob3N0LlxuICAgICAqXG4gICAgICogSWYgdGhlcmUgaXMgYW4gQCBpbiB0aGUgaG9zdG5hbWUsIHRoZW4gbm9uLWhvc3QgY2hhcnMgKmFyZSogYWxsb3dlZFxuICAgICAqIHRvIHRoZSBsZWZ0IG9mIHRoZSBsYXN0IEAgc2lnbiwgdW5sZXNzIHNvbWUgaG9zdC1lbmRpbmcgY2hhcmFjdGVyXG4gICAgICogY29tZXMgKmJlZm9yZSogdGhlIEAtc2lnbi5cbiAgICAgKiBVUkxzIGFyZSBvYm5veGlvdXMuXG4gICAgICpcbiAgICAgKiBleDpcbiAgICAgKiBodHRwOi8vYUBiQGMvID0+IHVzZXI6YUBiIGhvc3Q6Y1xuICAgICAqIGh0dHA6Ly9hQGI/QGMgPT4gdXNlcjphIGhvc3Q6YyBwYXRoOi8/QGNcbiAgICAgKi9cblxuICAgIC8qXG4gICAgICogdjAuMTIgVE9ETyhpc2FhY3MpOiBUaGlzIGlzIG5vdCBxdWl0ZSBob3cgQ2hyb21lIGRvZXMgdGhpbmdzLlxuICAgICAqIFJldmlldyBvdXIgdGVzdCBjYXNlIGFnYWluc3QgYnJvd3NlcnMgbW9yZSBjb21wcmVoZW5zaXZlbHkuXG4gICAgICovXG5cbiAgICAvLyBmaW5kIHRoZSBmaXJzdCBpbnN0YW5jZSBvZiBhbnkgaG9zdEVuZGluZ0NoYXJzXG4gICAgdmFyIGhvc3RFbmQgPSAtMTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhvc3RFbmRpbmdDaGFycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGhlYyA9IHJlc3QuaW5kZXhPZihob3N0RW5kaW5nQ2hhcnNbaV0pO1xuICAgICAgaWYgKGhlYyAhPT0gLTEgJiYgKGhvc3RFbmQgPT09IC0xIHx8IGhlYyA8IGhvc3RFbmQpKSB7IGhvc3RFbmQgPSBoZWM7IH1cbiAgICB9XG5cbiAgICAvKlxuICAgICAqIGF0IHRoaXMgcG9pbnQsIGVpdGhlciB3ZSBoYXZlIGFuIGV4cGxpY2l0IHBvaW50IHdoZXJlIHRoZVxuICAgICAqIGF1dGggcG9ydGlvbiBjYW5ub3QgZ28gcGFzdCwgb3IgdGhlIGxhc3QgQCBjaGFyIGlzIHRoZSBkZWNpZGVyLlxuICAgICAqL1xuICAgIHZhciBhdXRoLCBhdFNpZ247XG4gICAgaWYgKGhvc3RFbmQgPT09IC0xKSB7XG4gICAgICAvLyBhdFNpZ24gY2FuIGJlIGFueXdoZXJlLlxuICAgICAgYXRTaWduID0gcmVzdC5sYXN0SW5kZXhPZignQCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvKlxuICAgICAgICogYXRTaWduIG11c3QgYmUgaW4gYXV0aCBwb3J0aW9uLlxuICAgICAgICogaHR0cDovL2FAYi9jQGQgPT4gaG9zdDpiIGF1dGg6YSBwYXRoOi9jQGRcbiAgICAgICAqL1xuICAgICAgYXRTaWduID0gcmVzdC5sYXN0SW5kZXhPZignQCcsIGhvc3RFbmQpO1xuICAgIH1cblxuICAgIC8qXG4gICAgICogTm93IHdlIGhhdmUgYSBwb3J0aW9uIHdoaWNoIGlzIGRlZmluaXRlbHkgdGhlIGF1dGguXG4gICAgICogUHVsbCB0aGF0IG9mZi5cbiAgICAgKi9cbiAgICBpZiAoYXRTaWduICE9PSAtMSkge1xuICAgICAgYXV0aCA9IHJlc3Quc2xpY2UoMCwgYXRTaWduKTtcbiAgICAgIHJlc3QgPSByZXN0LnNsaWNlKGF0U2lnbiArIDEpO1xuICAgICAgdGhpcy5hdXRoID0gZGVjb2RlVVJJQ29tcG9uZW50KGF1dGgpO1xuICAgIH1cblxuICAgIC8vIHRoZSBob3N0IGlzIHRoZSByZW1haW5pbmcgdG8gdGhlIGxlZnQgb2YgdGhlIGZpcnN0IG5vbi1ob3N0IGNoYXJcbiAgICBob3N0RW5kID0gLTE7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub25Ib3N0Q2hhcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBoZWMgPSByZXN0LmluZGV4T2Yobm9uSG9zdENoYXJzW2ldKTtcbiAgICAgIGlmIChoZWMgIT09IC0xICYmIChob3N0RW5kID09PSAtMSB8fCBoZWMgPCBob3N0RW5kKSkgeyBob3N0RW5kID0gaGVjOyB9XG4gICAgfVxuICAgIC8vIGlmIHdlIHN0aWxsIGhhdmUgbm90IGhpdCBpdCwgdGhlbiB0aGUgZW50aXJlIHRoaW5nIGlzIGEgaG9zdC5cbiAgICBpZiAoaG9zdEVuZCA9PT0gLTEpIHsgaG9zdEVuZCA9IHJlc3QubGVuZ3RoOyB9XG5cbiAgICB0aGlzLmhvc3QgPSByZXN0LnNsaWNlKDAsIGhvc3RFbmQpO1xuICAgIHJlc3QgPSByZXN0LnNsaWNlKGhvc3RFbmQpO1xuXG4gICAgLy8gcHVsbCBvdXQgcG9ydC5cbiAgICB0aGlzLnBhcnNlSG9zdCgpO1xuXG4gICAgLypcbiAgICAgKiB3ZSd2ZSBpbmRpY2F0ZWQgdGhhdCB0aGVyZSBpcyBhIGhvc3RuYW1lLFxuICAgICAqIHNvIGV2ZW4gaWYgaXQncyBlbXB0eSwgaXQgaGFzIHRvIGJlIHByZXNlbnQuXG4gICAgICovXG4gICAgdGhpcy5ob3N0bmFtZSA9IHRoaXMuaG9zdG5hbWUgfHwgJyc7XG5cbiAgICAvKlxuICAgICAqIGlmIGhvc3RuYW1lIGJlZ2lucyB3aXRoIFsgYW5kIGVuZHMgd2l0aCBdXG4gICAgICogYXNzdW1lIHRoYXQgaXQncyBhbiBJUHY2IGFkZHJlc3MuXG4gICAgICovXG4gICAgdmFyIGlwdjZIb3N0bmFtZSA9IHRoaXMuaG9zdG5hbWVbMF0gPT09ICdbJyAmJiB0aGlzLmhvc3RuYW1lW3RoaXMuaG9zdG5hbWUubGVuZ3RoIC0gMV0gPT09ICddJztcblxuICAgIC8vIHZhbGlkYXRlIGEgbGl0dGxlLlxuICAgIGlmICghaXB2Nkhvc3RuYW1lKSB7XG4gICAgICB2YXIgaG9zdHBhcnRzID0gdGhpcy5ob3N0bmFtZS5zcGxpdCgvXFwuLyk7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbCA9IGhvc3RwYXJ0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgdmFyIHBhcnQgPSBob3N0cGFydHNbaV07XG4gICAgICAgIGlmICghcGFydCkgeyBjb250aW51ZTsgfVxuICAgICAgICBpZiAoIXBhcnQubWF0Y2goaG9zdG5hbWVQYXJ0UGF0dGVybikpIHtcbiAgICAgICAgICB2YXIgbmV3cGFydCA9ICcnO1xuICAgICAgICAgIGZvciAodmFyIGogPSAwLCBrID0gcGFydC5sZW5ndGg7IGogPCBrOyBqKyspIHtcbiAgICAgICAgICAgIGlmIChwYXJ0LmNoYXJDb2RlQXQoaikgPiAxMjcpIHtcbiAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICogd2UgcmVwbGFjZSBub24tQVNDSUkgY2hhciB3aXRoIGEgdGVtcG9yYXJ5IHBsYWNlaG9sZGVyXG4gICAgICAgICAgICAgICAqIHdlIG5lZWQgdGhpcyB0byBtYWtlIHN1cmUgc2l6ZSBvZiBob3N0bmFtZSBpcyBub3RcbiAgICAgICAgICAgICAgICogYnJva2VuIGJ5IHJlcGxhY2luZyBub24tQVNDSUkgYnkgbm90aGluZ1xuICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgbmV3cGFydCArPSAneCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBuZXdwYXJ0ICs9IHBhcnRbal07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIHdlIHRlc3QgYWdhaW4gd2l0aCBBU0NJSSBjaGFyIG9ubHlcbiAgICAgICAgICBpZiAoIW5ld3BhcnQubWF0Y2goaG9zdG5hbWVQYXJ0UGF0dGVybikpIHtcbiAgICAgICAgICAgIHZhciB2YWxpZFBhcnRzID0gaG9zdHBhcnRzLnNsaWNlKDAsIGkpO1xuICAgICAgICAgICAgdmFyIG5vdEhvc3QgPSBob3N0cGFydHMuc2xpY2UoaSArIDEpO1xuICAgICAgICAgICAgdmFyIGJpdCA9IHBhcnQubWF0Y2goaG9zdG5hbWVQYXJ0U3RhcnQpO1xuICAgICAgICAgICAgaWYgKGJpdCkge1xuICAgICAgICAgICAgICB2YWxpZFBhcnRzLnB1c2goYml0WzFdKTtcbiAgICAgICAgICAgICAgbm90SG9zdC51bnNoaWZ0KGJpdFsyXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobm90SG9zdC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcmVzdCA9ICcvJyArIG5vdEhvc3Quam9pbignLicpICsgcmVzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaG9zdG5hbWUgPSB2YWxpZFBhcnRzLmpvaW4oJy4nKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmhvc3RuYW1lLmxlbmd0aCA+IGhvc3RuYW1lTWF4TGVuKSB7XG4gICAgICB0aGlzLmhvc3RuYW1lID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGhvc3RuYW1lcyBhcmUgYWx3YXlzIGxvd2VyIGNhc2UuXG4gICAgICB0aGlzLmhvc3RuYW1lID0gdGhpcy5ob3N0bmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cblxuICAgIGlmICghaXB2Nkhvc3RuYW1lKSB7XG4gICAgICAvKlxuICAgICAgICogSUROQSBTdXBwb3J0OiBSZXR1cm5zIGEgcHVueWNvZGVkIHJlcHJlc2VudGF0aW9uIG9mIFwiZG9tYWluXCIuXG4gICAgICAgKiBJdCBvbmx5IGNvbnZlcnRzIHBhcnRzIG9mIHRoZSBkb21haW4gbmFtZSB0aGF0XG4gICAgICAgKiBoYXZlIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLCBpLmUuIGl0IGRvZXNuJ3QgbWF0dGVyIGlmXG4gICAgICAgKiB5b3UgY2FsbCBpdCB3aXRoIGEgZG9tYWluIHRoYXQgYWxyZWFkeSBpcyBBU0NJSS1vbmx5LlxuICAgICAgICovXG4gICAgICB0aGlzLmhvc3RuYW1lID0gcHVueWNvZGUudG9BU0NJSSh0aGlzLmhvc3RuYW1lKTtcbiAgICB9XG5cbiAgICB2YXIgcCA9IHRoaXMucG9ydCA/ICc6JyArIHRoaXMucG9ydCA6ICcnO1xuICAgIHZhciBoID0gdGhpcy5ob3N0bmFtZSB8fCAnJztcbiAgICB0aGlzLmhvc3QgPSBoICsgcDtcbiAgICB0aGlzLmhyZWYgKz0gdGhpcy5ob3N0O1xuXG4gICAgLypcbiAgICAgKiBzdHJpcCBbIGFuZCBdIGZyb20gdGhlIGhvc3RuYW1lXG4gICAgICogdGhlIGhvc3QgZmllbGQgc3RpbGwgcmV0YWlucyB0aGVtLCB0aG91Z2hcbiAgICAgKi9cbiAgICBpZiAoaXB2Nkhvc3RuYW1lKSB7XG4gICAgICB0aGlzLmhvc3RuYW1lID0gdGhpcy5ob3N0bmFtZS5zdWJzdHIoMSwgdGhpcy5ob3N0bmFtZS5sZW5ndGggLSAyKTtcbiAgICAgIGlmIChyZXN0WzBdICE9PSAnLycpIHtcbiAgICAgICAgcmVzdCA9ICcvJyArIHJlc3Q7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLypcbiAgICogbm93IHJlc3QgaXMgc2V0IHRvIHRoZSBwb3N0LWhvc3Qgc3R1ZmYuXG4gICAqIGNob3Agb2ZmIGFueSBkZWxpbSBjaGFycy5cbiAgICovXG4gIGlmICghdW5zYWZlUHJvdG9jb2xbbG93ZXJQcm90b10pIHtcblxuICAgIC8qXG4gICAgICogRmlyc3QsIG1ha2UgMTAwJSBzdXJlIHRoYXQgYW55IFwiYXV0b0VzY2FwZVwiIGNoYXJzIGdldFxuICAgICAqIGVzY2FwZWQsIGV2ZW4gaWYgZW5jb2RlVVJJQ29tcG9uZW50IGRvZXNuJ3QgdGhpbmsgdGhleVxuICAgICAqIG5lZWQgdG8gYmUuXG4gICAgICovXG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSBhdXRvRXNjYXBlLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgdmFyIGFlID0gYXV0b0VzY2FwZVtpXTtcbiAgICAgIGlmIChyZXN0LmluZGV4T2YoYWUpID09PSAtMSkgeyBjb250aW51ZTsgfVxuICAgICAgdmFyIGVzYyA9IGVuY29kZVVSSUNvbXBvbmVudChhZSk7XG4gICAgICBpZiAoZXNjID09PSBhZSkge1xuICAgICAgICBlc2MgPSBlc2NhcGUoYWUpO1xuICAgICAgfVxuICAgICAgcmVzdCA9IHJlc3Quc3BsaXQoYWUpLmpvaW4oZXNjKTtcbiAgICB9XG4gIH1cblxuICAvLyBjaG9wIG9mZiBmcm9tIHRoZSB0YWlsIGZpcnN0LlxuICB2YXIgaGFzaCA9IHJlc3QuaW5kZXhPZignIycpO1xuICBpZiAoaGFzaCAhPT0gLTEpIHtcbiAgICAvLyBnb3QgYSBmcmFnbWVudCBzdHJpbmcuXG4gICAgdGhpcy5oYXNoID0gcmVzdC5zdWJzdHIoaGFzaCk7XG4gICAgcmVzdCA9IHJlc3Quc2xpY2UoMCwgaGFzaCk7XG4gIH1cbiAgdmFyIHFtID0gcmVzdC5pbmRleE9mKCc/Jyk7XG4gIGlmIChxbSAhPT0gLTEpIHtcbiAgICB0aGlzLnNlYXJjaCA9IHJlc3Quc3Vic3RyKHFtKTtcbiAgICB0aGlzLnF1ZXJ5ID0gcmVzdC5zdWJzdHIocW0gKyAxKTtcbiAgICBpZiAocGFyc2VRdWVyeVN0cmluZykge1xuICAgICAgdGhpcy5xdWVyeSA9IHF1ZXJ5c3RyaW5nLnBhcnNlKHRoaXMucXVlcnkpO1xuICAgIH1cbiAgICByZXN0ID0gcmVzdC5zbGljZSgwLCBxbSk7XG4gIH0gZWxzZSBpZiAocGFyc2VRdWVyeVN0cmluZykge1xuICAgIC8vIG5vIHF1ZXJ5IHN0cmluZywgYnV0IHBhcnNlUXVlcnlTdHJpbmcgc3RpbGwgcmVxdWVzdGVkXG4gICAgdGhpcy5zZWFyY2ggPSAnJztcbiAgICB0aGlzLnF1ZXJ5ID0ge307XG4gIH1cbiAgaWYgKHJlc3QpIHsgdGhpcy5wYXRobmFtZSA9IHJlc3Q7IH1cbiAgaWYgKHNsYXNoZWRQcm90b2NvbFtsb3dlclByb3RvXSAmJiB0aGlzLmhvc3RuYW1lICYmICF0aGlzLnBhdGhuYW1lKSB7XG4gICAgdGhpcy5wYXRobmFtZSA9ICcvJztcbiAgfVxuXG4gIC8vIHRvIHN1cHBvcnQgaHR0cC5yZXF1ZXN0XG4gIGlmICh0aGlzLnBhdGhuYW1lIHx8IHRoaXMuc2VhcmNoKSB7XG4gICAgdmFyIHAgPSB0aGlzLnBhdGhuYW1lIHx8ICcnO1xuICAgIHZhciBzID0gdGhpcy5zZWFyY2ggfHwgJyc7XG4gICAgdGhpcy5wYXRoID0gcCArIHM7XG4gIH1cblxuICAvLyBmaW5hbGx5LCByZWNvbnN0cnVjdCB0aGUgaHJlZiBiYXNlZCBvbiB3aGF0IGhhcyBiZWVuIHZhbGlkYXRlZC5cbiAgdGhpcy5ocmVmID0gdGhpcy5mb3JtYXQoKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vLyBmb3JtYXQgYSBwYXJzZWQgb2JqZWN0IGludG8gYSB1cmwgc3RyaW5nXG5mdW5jdGlvbiB1cmxGb3JtYXQob2JqKSB7XG4gIC8qXG4gICAqIGVuc3VyZSBpdCdzIGFuIG9iamVjdCwgYW5kIG5vdCBhIHN0cmluZyB1cmwuXG4gICAqIElmIGl0J3MgYW4gb2JqLCB0aGlzIGlzIGEgbm8tb3AuXG4gICAqIHRoaXMgd2F5LCB5b3UgY2FuIGNhbGwgdXJsX2Zvcm1hdCgpIG9uIHN0cmluZ3NcbiAgICogdG8gY2xlYW4gdXAgcG90ZW50aWFsbHkgd29ua3kgdXJscy5cbiAgICovXG4gIGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJykgeyBvYmogPSB1cmxQYXJzZShvYmopOyB9XG4gIGlmICghKG9iaiBpbnN0YW5jZW9mIFVybCkpIHsgcmV0dXJuIFVybC5wcm90b3R5cGUuZm9ybWF0LmNhbGwob2JqKTsgfVxuICByZXR1cm4gb2JqLmZvcm1hdCgpO1xufVxuXG5VcmwucHJvdG90eXBlLmZvcm1hdCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGF1dGggPSB0aGlzLmF1dGggfHwgJyc7XG4gIGlmIChhdXRoKSB7XG4gICAgYXV0aCA9IGVuY29kZVVSSUNvbXBvbmVudChhdXRoKTtcbiAgICBhdXRoID0gYXV0aC5yZXBsYWNlKC8lM0EvaSwgJzonKTtcbiAgICBhdXRoICs9ICdAJztcbiAgfVxuXG4gIHZhciBwcm90b2NvbCA9IHRoaXMucHJvdG9jb2wgfHwgJycsXG4gICAgcGF0aG5hbWUgPSB0aGlzLnBhdGhuYW1lIHx8ICcnLFxuICAgIGhhc2ggPSB0aGlzLmhhc2ggfHwgJycsXG4gICAgaG9zdCA9IGZhbHNlLFxuICAgIHF1ZXJ5ID0gJyc7XG5cbiAgaWYgKHRoaXMuaG9zdCkge1xuICAgIGhvc3QgPSBhdXRoICsgdGhpcy5ob3N0O1xuICB9IGVsc2UgaWYgKHRoaXMuaG9zdG5hbWUpIHtcbiAgICBob3N0ID0gYXV0aCArICh0aGlzLmhvc3RuYW1lLmluZGV4T2YoJzonKSA9PT0gLTEgPyB0aGlzLmhvc3RuYW1lIDogJ1snICsgdGhpcy5ob3N0bmFtZSArICddJyk7XG4gICAgaWYgKHRoaXMucG9ydCkge1xuICAgICAgaG9zdCArPSAnOicgKyB0aGlzLnBvcnQ7XG4gICAgfVxuICB9XG5cbiAgaWYgKHRoaXMucXVlcnkgJiYgdHlwZW9mIHRoaXMucXVlcnkgPT09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKHRoaXMucXVlcnkpLmxlbmd0aCkge1xuICAgIHF1ZXJ5ID0gcXVlcnlzdHJpbmcuc3RyaW5naWZ5KHRoaXMucXVlcnksIHtcbiAgICAgIGFycmF5Rm9ybWF0OiAncmVwZWF0JyxcbiAgICAgIGFkZFF1ZXJ5UHJlZml4OiBmYWxzZVxuICAgIH0pO1xuICB9XG5cbiAgdmFyIHNlYXJjaCA9IHRoaXMuc2VhcmNoIHx8IChxdWVyeSAmJiAoJz8nICsgcXVlcnkpKSB8fCAnJztcblxuICBpZiAocHJvdG9jb2wgJiYgcHJvdG9jb2wuc3Vic3RyKC0xKSAhPT0gJzonKSB7IHByb3RvY29sICs9ICc6JzsgfVxuXG4gIC8qXG4gICAqIG9ubHkgdGhlIHNsYXNoZWRQcm90b2NvbHMgZ2V0IHRoZSAvLy4gIE5vdCBtYWlsdG86LCB4bXBwOiwgZXRjLlxuICAgKiB1bmxlc3MgdGhleSBoYWQgdGhlbSB0byBiZWdpbiB3aXRoLlxuICAgKi9cbiAgaWYgKHRoaXMuc2xhc2hlcyB8fCAoIXByb3RvY29sIHx8IHNsYXNoZWRQcm90b2NvbFtwcm90b2NvbF0pICYmIGhvc3QgIT09IGZhbHNlKSB7XG4gICAgaG9zdCA9ICcvLycgKyAoaG9zdCB8fCAnJyk7XG4gICAgaWYgKHBhdGhuYW1lICYmIHBhdGhuYW1lLmNoYXJBdCgwKSAhPT0gJy8nKSB7IHBhdGhuYW1lID0gJy8nICsgcGF0aG5hbWU7IH1cbiAgfSBlbHNlIGlmICghaG9zdCkge1xuICAgIGhvc3QgPSAnJztcbiAgfVxuXG4gIGlmIChoYXNoICYmIGhhc2guY2hhckF0KDApICE9PSAnIycpIHsgaGFzaCA9ICcjJyArIGhhc2g7IH1cbiAgaWYgKHNlYXJjaCAmJiBzZWFyY2guY2hhckF0KDApICE9PSAnPycpIHsgc2VhcmNoID0gJz8nICsgc2VhcmNoOyB9XG5cbiAgcGF0aG5hbWUgPSBwYXRobmFtZS5yZXBsYWNlKC9bPyNdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQobWF0Y2gpO1xuICB9KTtcbiAgc2VhcmNoID0gc2VhcmNoLnJlcGxhY2UoJyMnLCAnJTIzJyk7XG5cbiAgcmV0dXJuIHByb3RvY29sICsgaG9zdCArIHBhdGhuYW1lICsgc2VhcmNoICsgaGFzaDtcbn07XG5cbmZ1bmN0aW9uIHVybFJlc29sdmUoc291cmNlLCByZWxhdGl2ZSkge1xuICByZXR1cm4gdXJsUGFyc2Uoc291cmNlLCBmYWxzZSwgdHJ1ZSkucmVzb2x2ZShyZWxhdGl2ZSk7XG59XG5cblVybC5wcm90b3R5cGUucmVzb2x2ZSA9IGZ1bmN0aW9uIChyZWxhdGl2ZSkge1xuICByZXR1cm4gdGhpcy5yZXNvbHZlT2JqZWN0KHVybFBhcnNlKHJlbGF0aXZlLCBmYWxzZSwgdHJ1ZSkpLmZvcm1hdCgpO1xufTtcblxuZnVuY3Rpb24gdXJsUmVzb2x2ZU9iamVjdChzb3VyY2UsIHJlbGF0aXZlKSB7XG4gIGlmICghc291cmNlKSB7IHJldHVybiByZWxhdGl2ZTsgfVxuICByZXR1cm4gdXJsUGFyc2Uoc291cmNlLCBmYWxzZSwgdHJ1ZSkucmVzb2x2ZU9iamVjdChyZWxhdGl2ZSk7XG59XG5cblVybC5wcm90b3R5cGUucmVzb2x2ZU9iamVjdCA9IGZ1bmN0aW9uIChyZWxhdGl2ZSkge1xuICBpZiAodHlwZW9mIHJlbGF0aXZlID09PSAnc3RyaW5nJykge1xuICAgIHZhciByZWwgPSBuZXcgVXJsKCk7XG4gICAgcmVsLnBhcnNlKHJlbGF0aXZlLCBmYWxzZSwgdHJ1ZSk7XG4gICAgcmVsYXRpdmUgPSByZWw7XG4gIH1cblxuICB2YXIgcmVzdWx0ID0gbmV3IFVybCgpO1xuICB2YXIgdGtleXMgPSBPYmplY3Qua2V5cyh0aGlzKTtcbiAgZm9yICh2YXIgdGsgPSAwOyB0ayA8IHRrZXlzLmxlbmd0aDsgdGsrKykge1xuICAgIHZhciB0a2V5ID0gdGtleXNbdGtdO1xuICAgIHJlc3VsdFt0a2V5XSA9IHRoaXNbdGtleV07XG4gIH1cblxuICAvKlxuICAgKiBoYXNoIGlzIGFsd2F5cyBvdmVycmlkZGVuLCBubyBtYXR0ZXIgd2hhdC5cbiAgICogZXZlbiBocmVmPVwiXCIgd2lsbCByZW1vdmUgaXQuXG4gICAqL1xuICByZXN1bHQuaGFzaCA9IHJlbGF0aXZlLmhhc2g7XG5cbiAgLy8gaWYgdGhlIHJlbGF0aXZlIHVybCBpcyBlbXB0eSwgdGhlbiB0aGVyZSdzIG5vdGhpbmcgbGVmdCB0byBkbyBoZXJlLlxuICBpZiAocmVsYXRpdmUuaHJlZiA9PT0gJycpIHtcbiAgICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gaHJlZnMgbGlrZSAvL2Zvby9iYXIgYWx3YXlzIGN1dCB0byB0aGUgcHJvdG9jb2wuXG4gIGlmIChyZWxhdGl2ZS5zbGFzaGVzICYmICFyZWxhdGl2ZS5wcm90b2NvbCkge1xuICAgIC8vIHRha2UgZXZlcnl0aGluZyBleGNlcHQgdGhlIHByb3RvY29sIGZyb20gcmVsYXRpdmVcbiAgICB2YXIgcmtleXMgPSBPYmplY3Qua2V5cyhyZWxhdGl2ZSk7XG4gICAgZm9yICh2YXIgcmsgPSAwOyByayA8IHJrZXlzLmxlbmd0aDsgcmsrKykge1xuICAgICAgdmFyIHJrZXkgPSBya2V5c1tya107XG4gICAgICBpZiAocmtleSAhPT0gJ3Byb3RvY29sJykgeyByZXN1bHRbcmtleV0gPSByZWxhdGl2ZVtya2V5XTsgfVxuICAgIH1cblxuICAgIC8vIHVybFBhcnNlIGFwcGVuZHMgdHJhaWxpbmcgLyB0byB1cmxzIGxpa2UgaHR0cDovL3d3dy5leGFtcGxlLmNvbVxuICAgIGlmIChzbGFzaGVkUHJvdG9jb2xbcmVzdWx0LnByb3RvY29sXSAmJiByZXN1bHQuaG9zdG5hbWUgJiYgIXJlc3VsdC5wYXRobmFtZSkge1xuICAgICAgcmVzdWx0LnBhdGhuYW1lID0gJy8nO1xuICAgICAgcmVzdWx0LnBhdGggPSByZXN1bHQucGF0aG5hbWU7XG4gICAgfVxuXG4gICAgcmVzdWx0LmhyZWYgPSByZXN1bHQuZm9ybWF0KCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGlmIChyZWxhdGl2ZS5wcm90b2NvbCAmJiByZWxhdGl2ZS5wcm90b2NvbCAhPT0gcmVzdWx0LnByb3RvY29sKSB7XG4gICAgLypcbiAgICAgKiBpZiBpdCdzIGEga25vd24gdXJsIHByb3RvY29sLCB0aGVuIGNoYW5naW5nXG4gICAgICogdGhlIHByb3RvY29sIGRvZXMgd2VpcmQgdGhpbmdzXG4gICAgICogZmlyc3QsIGlmIGl0J3Mgbm90IGZpbGU6LCB0aGVuIHdlIE1VU1QgaGF2ZSBhIGhvc3QsXG4gICAgICogYW5kIGlmIHRoZXJlIHdhcyBhIHBhdGhcbiAgICAgKiB0byBiZWdpbiB3aXRoLCB0aGVuIHdlIE1VU1QgaGF2ZSBhIHBhdGguXG4gICAgICogaWYgaXQgaXMgZmlsZTosIHRoZW4gdGhlIGhvc3QgaXMgZHJvcHBlZCxcbiAgICAgKiBiZWNhdXNlIHRoYXQncyBrbm93biB0byBiZSBob3N0bGVzcy5cbiAgICAgKiBhbnl0aGluZyBlbHNlIGlzIGFzc3VtZWQgdG8gYmUgYWJzb2x1dGUuXG4gICAgICovXG4gICAgaWYgKCFzbGFzaGVkUHJvdG9jb2xbcmVsYXRpdmUucHJvdG9jb2xdKSB7XG4gICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHJlbGF0aXZlKTtcbiAgICAgIGZvciAodmFyIHYgPSAwOyB2IDwga2V5cy5sZW5ndGg7IHYrKykge1xuICAgICAgICB2YXIgayA9IGtleXNbdl07XG4gICAgICAgIHJlc3VsdFtrXSA9IHJlbGF0aXZlW2tdO1xuICAgICAgfVxuICAgICAgcmVzdWx0LmhyZWYgPSByZXN1bHQuZm9ybWF0KCk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHJlc3VsdC5wcm90b2NvbCA9IHJlbGF0aXZlLnByb3RvY29sO1xuICAgIGlmICghcmVsYXRpdmUuaG9zdCAmJiAhaG9zdGxlc3NQcm90b2NvbFtyZWxhdGl2ZS5wcm90b2NvbF0pIHtcbiAgICAgIHZhciByZWxQYXRoID0gKHJlbGF0aXZlLnBhdGhuYW1lIHx8ICcnKS5zcGxpdCgnLycpO1xuICAgICAgd2hpbGUgKHJlbFBhdGgubGVuZ3RoICYmICEocmVsYXRpdmUuaG9zdCA9IHJlbFBhdGguc2hpZnQoKSkpIHsgfVxuICAgICAgaWYgKCFyZWxhdGl2ZS5ob3N0KSB7IHJlbGF0aXZlLmhvc3QgPSAnJzsgfVxuICAgICAgaWYgKCFyZWxhdGl2ZS5ob3N0bmFtZSkgeyByZWxhdGl2ZS5ob3N0bmFtZSA9ICcnOyB9XG4gICAgICBpZiAocmVsUGF0aFswXSAhPT0gJycpIHsgcmVsUGF0aC51bnNoaWZ0KCcnKTsgfVxuICAgICAgaWYgKHJlbFBhdGgubGVuZ3RoIDwgMikgeyByZWxQYXRoLnVuc2hpZnQoJycpOyB9XG4gICAgICByZXN1bHQucGF0aG5hbWUgPSByZWxQYXRoLmpvaW4oJy8nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0LnBhdGhuYW1lID0gcmVsYXRpdmUucGF0aG5hbWU7XG4gICAgfVxuICAgIHJlc3VsdC5zZWFyY2ggPSByZWxhdGl2ZS5zZWFyY2g7XG4gICAgcmVzdWx0LnF1ZXJ5ID0gcmVsYXRpdmUucXVlcnk7XG4gICAgcmVzdWx0Lmhvc3QgPSByZWxhdGl2ZS5ob3N0IHx8ICcnO1xuICAgIHJlc3VsdC5hdXRoID0gcmVsYXRpdmUuYXV0aDtcbiAgICByZXN1bHQuaG9zdG5hbWUgPSByZWxhdGl2ZS5ob3N0bmFtZSB8fCByZWxhdGl2ZS5ob3N0O1xuICAgIHJlc3VsdC5wb3J0ID0gcmVsYXRpdmUucG9ydDtcbiAgICAvLyB0byBzdXBwb3J0IGh0dHAucmVxdWVzdFxuICAgIGlmIChyZXN1bHQucGF0aG5hbWUgfHwgcmVzdWx0LnNlYXJjaCkge1xuICAgICAgdmFyIHAgPSByZXN1bHQucGF0aG5hbWUgfHwgJyc7XG4gICAgICB2YXIgcyA9IHJlc3VsdC5zZWFyY2ggfHwgJyc7XG4gICAgICByZXN1bHQucGF0aCA9IHAgKyBzO1xuICAgIH1cbiAgICByZXN1bHQuc2xhc2hlcyA9IHJlc3VsdC5zbGFzaGVzIHx8IHJlbGF0aXZlLnNsYXNoZXM7XG4gICAgcmVzdWx0LmhyZWYgPSByZXN1bHQuZm9ybWF0KCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHZhciBpc1NvdXJjZUFicyA9IHJlc3VsdC5wYXRobmFtZSAmJiByZXN1bHQucGF0aG5hbWUuY2hhckF0KDApID09PSAnLycsXG4gICAgaXNSZWxBYnMgPSByZWxhdGl2ZS5ob3N0IHx8IHJlbGF0aXZlLnBhdGhuYW1lICYmIHJlbGF0aXZlLnBhdGhuYW1lLmNoYXJBdCgwKSA9PT0gJy8nLFxuICAgIG11c3RFbmRBYnMgPSBpc1JlbEFicyB8fCBpc1NvdXJjZUFicyB8fCAocmVzdWx0Lmhvc3QgJiYgcmVsYXRpdmUucGF0aG5hbWUpLFxuICAgIHJlbW92ZUFsbERvdHMgPSBtdXN0RW5kQWJzLFxuICAgIHNyY1BhdGggPSByZXN1bHQucGF0aG5hbWUgJiYgcmVzdWx0LnBhdGhuYW1lLnNwbGl0KCcvJykgfHwgW10sXG4gICAgcmVsUGF0aCA9IHJlbGF0aXZlLnBhdGhuYW1lICYmIHJlbGF0aXZlLnBhdGhuYW1lLnNwbGl0KCcvJykgfHwgW10sXG4gICAgcHN5Y2hvdGljID0gcmVzdWx0LnByb3RvY29sICYmICFzbGFzaGVkUHJvdG9jb2xbcmVzdWx0LnByb3RvY29sXTtcblxuICAvKlxuICAgKiBpZiB0aGUgdXJsIGlzIGEgbm9uLXNsYXNoZWQgdXJsLCB0aGVuIHJlbGF0aXZlXG4gICAqIGxpbmtzIGxpa2UgLi4vLi4gc2hvdWxkIGJlIGFibGVcbiAgICogdG8gY3Jhd2wgdXAgdG8gdGhlIGhvc3RuYW1lLCBhcyB3ZWxsLiAgVGhpcyBpcyBzdHJhbmdlLlxuICAgKiByZXN1bHQucHJvdG9jb2wgaGFzIGFscmVhZHkgYmVlbiBzZXQgYnkgbm93LlxuICAgKiBMYXRlciBvbiwgcHV0IHRoZSBmaXJzdCBwYXRoIHBhcnQgaW50byB0aGUgaG9zdCBmaWVsZC5cbiAgICovXG4gIGlmIChwc3ljaG90aWMpIHtcbiAgICByZXN1bHQuaG9zdG5hbWUgPSAnJztcbiAgICByZXN1bHQucG9ydCA9IG51bGw7XG4gICAgaWYgKHJlc3VsdC5ob3N0KSB7XG4gICAgICBpZiAoc3JjUGF0aFswXSA9PT0gJycpIHsgc3JjUGF0aFswXSA9IHJlc3VsdC5ob3N0OyB9IGVsc2UgeyBzcmNQYXRoLnVuc2hpZnQocmVzdWx0Lmhvc3QpOyB9XG4gICAgfVxuICAgIHJlc3VsdC5ob3N0ID0gJyc7XG4gICAgaWYgKHJlbGF0aXZlLnByb3RvY29sKSB7XG4gICAgICByZWxhdGl2ZS5ob3N0bmFtZSA9IG51bGw7XG4gICAgICByZWxhdGl2ZS5wb3J0ID0gbnVsbDtcbiAgICAgIGlmIChyZWxhdGl2ZS5ob3N0KSB7XG4gICAgICAgIGlmIChyZWxQYXRoWzBdID09PSAnJykgeyByZWxQYXRoWzBdID0gcmVsYXRpdmUuaG9zdDsgfSBlbHNlIHsgcmVsUGF0aC51bnNoaWZ0KHJlbGF0aXZlLmhvc3QpOyB9XG4gICAgICB9XG4gICAgICByZWxhdGl2ZS5ob3N0ID0gbnVsbDtcbiAgICB9XG4gICAgbXVzdEVuZEFicyA9IG11c3RFbmRBYnMgJiYgKHJlbFBhdGhbMF0gPT09ICcnIHx8IHNyY1BhdGhbMF0gPT09ICcnKTtcbiAgfVxuXG4gIGlmIChpc1JlbEFicykge1xuICAgIC8vIGl0J3MgYWJzb2x1dGUuXG4gICAgcmVzdWx0Lmhvc3QgPSByZWxhdGl2ZS5ob3N0IHx8IHJlbGF0aXZlLmhvc3QgPT09ICcnID8gcmVsYXRpdmUuaG9zdCA6IHJlc3VsdC5ob3N0O1xuICAgIHJlc3VsdC5ob3N0bmFtZSA9IHJlbGF0aXZlLmhvc3RuYW1lIHx8IHJlbGF0aXZlLmhvc3RuYW1lID09PSAnJyA/IHJlbGF0aXZlLmhvc3RuYW1lIDogcmVzdWx0Lmhvc3RuYW1lO1xuICAgIHJlc3VsdC5zZWFyY2ggPSByZWxhdGl2ZS5zZWFyY2g7XG4gICAgcmVzdWx0LnF1ZXJ5ID0gcmVsYXRpdmUucXVlcnk7XG4gICAgc3JjUGF0aCA9IHJlbFBhdGg7XG4gICAgLy8gZmFsbCB0aHJvdWdoIHRvIHRoZSBkb3QtaGFuZGxpbmcgYmVsb3cuXG4gIH0gZWxzZSBpZiAocmVsUGF0aC5sZW5ndGgpIHtcbiAgICAvKlxuICAgICAqIGl0J3MgcmVsYXRpdmVcbiAgICAgKiB0aHJvdyBhd2F5IHRoZSBleGlzdGluZyBmaWxlLCBhbmQgdGFrZSB0aGUgbmV3IHBhdGggaW5zdGVhZC5cbiAgICAgKi9cbiAgICBpZiAoIXNyY1BhdGgpIHsgc3JjUGF0aCA9IFtdOyB9XG4gICAgc3JjUGF0aC5wb3AoKTtcbiAgICBzcmNQYXRoID0gc3JjUGF0aC5jb25jYXQocmVsUGF0aCk7XG4gICAgcmVzdWx0LnNlYXJjaCA9IHJlbGF0aXZlLnNlYXJjaDtcbiAgICByZXN1bHQucXVlcnkgPSByZWxhdGl2ZS5xdWVyeTtcbiAgfSBlbHNlIGlmIChyZWxhdGl2ZS5zZWFyY2ggIT0gbnVsbCkge1xuICAgIC8qXG4gICAgICoganVzdCBwdWxsIG91dCB0aGUgc2VhcmNoLlxuICAgICAqIGxpa2UgaHJlZj0nP2ZvbycuXG4gICAgICogUHV0IHRoaXMgYWZ0ZXIgdGhlIG90aGVyIHR3byBjYXNlcyBiZWNhdXNlIGl0IHNpbXBsaWZpZXMgdGhlIGJvb2xlYW5zXG4gICAgICovXG4gICAgaWYgKHBzeWNob3RpYykge1xuICAgICAgcmVzdWx0Lmhvc3QgPSBzcmNQYXRoLnNoaWZ0KCk7XG4gICAgICByZXN1bHQuaG9zdG5hbWUgPSByZXN1bHQuaG9zdDtcbiAgICAgIC8qXG4gICAgICAgKiBvY2NhdGlvbmFseSB0aGUgYXV0aCBjYW4gZ2V0IHN0dWNrIG9ubHkgaW4gaG9zdFxuICAgICAgICogdGhpcyBlc3BlY2lhbGx5IGhhcHBlbnMgaW4gY2FzZXMgbGlrZVxuICAgICAgICogdXJsLnJlc29sdmVPYmplY3QoJ21haWx0bzpsb2NhbDFAZG9tYWluMScsICdsb2NhbDJAZG9tYWluMicpXG4gICAgICAgKi9cbiAgICAgIHZhciBhdXRoSW5Ib3N0ID0gcmVzdWx0Lmhvc3QgJiYgcmVzdWx0Lmhvc3QuaW5kZXhPZignQCcpID4gMCA/IHJlc3VsdC5ob3N0LnNwbGl0KCdAJykgOiBmYWxzZTtcbiAgICAgIGlmIChhdXRoSW5Ib3N0KSB7XG4gICAgICAgIHJlc3VsdC5hdXRoID0gYXV0aEluSG9zdC5zaGlmdCgpO1xuICAgICAgICByZXN1bHQuaG9zdG5hbWUgPSBhdXRoSW5Ib3N0LnNoaWZ0KCk7XG4gICAgICAgIHJlc3VsdC5ob3N0ID0gcmVzdWx0Lmhvc3RuYW1lO1xuICAgICAgfVxuICAgIH1cbiAgICByZXN1bHQuc2VhcmNoID0gcmVsYXRpdmUuc2VhcmNoO1xuICAgIHJlc3VsdC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5O1xuICAgIC8vIHRvIHN1cHBvcnQgaHR0cC5yZXF1ZXN0XG4gICAgaWYgKHJlc3VsdC5wYXRobmFtZSAhPT0gbnVsbCB8fCByZXN1bHQuc2VhcmNoICE9PSBudWxsKSB7XG4gICAgICByZXN1bHQucGF0aCA9IChyZXN1bHQucGF0aG5hbWUgPyByZXN1bHQucGF0aG5hbWUgOiAnJykgKyAocmVzdWx0LnNlYXJjaCA/IHJlc3VsdC5zZWFyY2ggOiAnJyk7XG4gICAgfVxuICAgIHJlc3VsdC5ocmVmID0gcmVzdWx0LmZvcm1hdCgpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBpZiAoIXNyY1BhdGgubGVuZ3RoKSB7XG4gICAgLypcbiAgICAgKiBubyBwYXRoIGF0IGFsbC4gIGVhc3kuXG4gICAgICogd2UndmUgYWxyZWFkeSBoYW5kbGVkIHRoZSBvdGhlciBzdHVmZiBhYm92ZS5cbiAgICAgKi9cbiAgICByZXN1bHQucGF0aG5hbWUgPSBudWxsO1xuICAgIC8vIHRvIHN1cHBvcnQgaHR0cC5yZXF1ZXN0XG4gICAgaWYgKHJlc3VsdC5zZWFyY2gpIHtcbiAgICAgIHJlc3VsdC5wYXRoID0gJy8nICsgcmVzdWx0LnNlYXJjaDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0LnBhdGggPSBudWxsO1xuICAgIH1cbiAgICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLypcbiAgICogaWYgYSB1cmwgRU5EcyBpbiAuIG9yIC4uLCB0aGVuIGl0IG11c3QgZ2V0IGEgdHJhaWxpbmcgc2xhc2guXG4gICAqIGhvd2V2ZXIsIGlmIGl0IGVuZHMgaW4gYW55dGhpbmcgZWxzZSBub24tc2xhc2h5LFxuICAgKiB0aGVuIGl0IG11c3QgTk9UIGdldCBhIHRyYWlsaW5nIHNsYXNoLlxuICAgKi9cbiAgdmFyIGxhc3QgPSBzcmNQYXRoLnNsaWNlKC0xKVswXTtcbiAgdmFyIGhhc1RyYWlsaW5nU2xhc2ggPSAocmVzdWx0Lmhvc3QgfHwgcmVsYXRpdmUuaG9zdCB8fCBzcmNQYXRoLmxlbmd0aCA+IDEpICYmIChsYXN0ID09PSAnLicgfHwgbGFzdCA9PT0gJy4uJykgfHwgbGFzdCA9PT0gJyc7XG5cbiAgLypcbiAgICogc3RyaXAgc2luZ2xlIGRvdHMsIHJlc29sdmUgZG91YmxlIGRvdHMgdG8gcGFyZW50IGRpclxuICAgKiBpZiB0aGUgcGF0aCB0cmllcyB0byBnbyBhYm92ZSB0aGUgcm9vdCwgYHVwYCBlbmRzIHVwID4gMFxuICAgKi9cbiAgdmFyIHVwID0gMDtcbiAgZm9yICh2YXIgaSA9IHNyY1BhdGgubGVuZ3RoOyBpID49IDA7IGktLSkge1xuICAgIGxhc3QgPSBzcmNQYXRoW2ldO1xuICAgIGlmIChsYXN0ID09PSAnLicpIHtcbiAgICAgIHNyY1BhdGguc3BsaWNlKGksIDEpO1xuICAgIH0gZWxzZSBpZiAobGFzdCA9PT0gJy4uJykge1xuICAgICAgc3JjUGF0aC5zcGxpY2UoaSwgMSk7XG4gICAgICB1cCsrO1xuICAgIH0gZWxzZSBpZiAodXApIHtcbiAgICAgIHNyY1BhdGguc3BsaWNlKGksIDEpO1xuICAgICAgdXAtLTtcbiAgICB9XG4gIH1cblxuICAvLyBpZiB0aGUgcGF0aCBpcyBhbGxvd2VkIHRvIGdvIGFib3ZlIHRoZSByb290LCByZXN0b3JlIGxlYWRpbmcgLi5zXG4gIGlmICghbXVzdEVuZEFicyAmJiAhcmVtb3ZlQWxsRG90cykge1xuICAgIGZvciAoOyB1cC0tOyB1cCkge1xuICAgICAgc3JjUGF0aC51bnNoaWZ0KCcuLicpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChtdXN0RW5kQWJzICYmIHNyY1BhdGhbMF0gIT09ICcnICYmICghc3JjUGF0aFswXSB8fCBzcmNQYXRoWzBdLmNoYXJBdCgwKSAhPT0gJy8nKSkge1xuICAgIHNyY1BhdGgudW5zaGlmdCgnJyk7XG4gIH1cblxuICBpZiAoaGFzVHJhaWxpbmdTbGFzaCAmJiAoc3JjUGF0aC5qb2luKCcvJykuc3Vic3RyKC0xKSAhPT0gJy8nKSkge1xuICAgIHNyY1BhdGgucHVzaCgnJyk7XG4gIH1cblxuICB2YXIgaXNBYnNvbHV0ZSA9IHNyY1BhdGhbMF0gPT09ICcnIHx8IChzcmNQYXRoWzBdICYmIHNyY1BhdGhbMF0uY2hhckF0KDApID09PSAnLycpO1xuXG4gIC8vIHB1dCB0aGUgaG9zdCBiYWNrXG4gIGlmIChwc3ljaG90aWMpIHtcbiAgICByZXN1bHQuaG9zdG5hbWUgPSBpc0Fic29sdXRlID8gJycgOiBzcmNQYXRoLmxlbmd0aCA/IHNyY1BhdGguc2hpZnQoKSA6ICcnO1xuICAgIHJlc3VsdC5ob3N0ID0gcmVzdWx0Lmhvc3RuYW1lO1xuICAgIC8qXG4gICAgICogb2NjYXRpb25hbHkgdGhlIGF1dGggY2FuIGdldCBzdHVjayBvbmx5IGluIGhvc3RcbiAgICAgKiB0aGlzIGVzcGVjaWFsbHkgaGFwcGVucyBpbiBjYXNlcyBsaWtlXG4gICAgICogdXJsLnJlc29sdmVPYmplY3QoJ21haWx0bzpsb2NhbDFAZG9tYWluMScsICdsb2NhbDJAZG9tYWluMicpXG4gICAgICovXG4gICAgdmFyIGF1dGhJbkhvc3QgPSByZXN1bHQuaG9zdCAmJiByZXN1bHQuaG9zdC5pbmRleE9mKCdAJykgPiAwID8gcmVzdWx0Lmhvc3Quc3BsaXQoJ0AnKSA6IGZhbHNlO1xuICAgIGlmIChhdXRoSW5Ib3N0KSB7XG4gICAgICByZXN1bHQuYXV0aCA9IGF1dGhJbkhvc3Quc2hpZnQoKTtcbiAgICAgIHJlc3VsdC5ob3N0bmFtZSA9IGF1dGhJbkhvc3Quc2hpZnQoKTtcbiAgICAgIHJlc3VsdC5ob3N0ID0gcmVzdWx0Lmhvc3RuYW1lO1xuICAgIH1cbiAgfVxuXG4gIG11c3RFbmRBYnMgPSBtdXN0RW5kQWJzIHx8IChyZXN1bHQuaG9zdCAmJiBzcmNQYXRoLmxlbmd0aCk7XG5cbiAgaWYgKG11c3RFbmRBYnMgJiYgIWlzQWJzb2x1dGUpIHtcbiAgICBzcmNQYXRoLnVuc2hpZnQoJycpO1xuICB9XG5cbiAgaWYgKHNyY1BhdGgubGVuZ3RoID4gMCkge1xuICAgIHJlc3VsdC5wYXRobmFtZSA9IHNyY1BhdGguam9pbignLycpO1xuICB9IGVsc2Uge1xuICAgIHJlc3VsdC5wYXRobmFtZSA9IG51bGw7XG4gICAgcmVzdWx0LnBhdGggPSBudWxsO1xuICB9XG5cbiAgLy8gdG8gc3VwcG9ydCByZXF1ZXN0Lmh0dHBcbiAgaWYgKHJlc3VsdC5wYXRobmFtZSAhPT0gbnVsbCB8fCByZXN1bHQuc2VhcmNoICE9PSBudWxsKSB7XG4gICAgcmVzdWx0LnBhdGggPSAocmVzdWx0LnBhdGhuYW1lID8gcmVzdWx0LnBhdGhuYW1lIDogJycpICsgKHJlc3VsdC5zZWFyY2ggPyByZXN1bHQuc2VhcmNoIDogJycpO1xuICB9XG4gIHJlc3VsdC5hdXRoID0gcmVsYXRpdmUuYXV0aCB8fCByZXN1bHQuYXV0aDtcbiAgcmVzdWx0LnNsYXNoZXMgPSByZXN1bHQuc2xhc2hlcyB8fCByZWxhdGl2ZS5zbGFzaGVzO1xuICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblVybC5wcm90b3R5cGUucGFyc2VIb3N0ID0gZnVuY3Rpb24gKCkge1xuICB2YXIgaG9zdCA9IHRoaXMuaG9zdDtcbiAgdmFyIHBvcnQgPSBwb3J0UGF0dGVybi5leGVjKGhvc3QpO1xuICBpZiAocG9ydCkge1xuICAgIHBvcnQgPSBwb3J0WzBdO1xuICAgIGlmIChwb3J0ICE9PSAnOicpIHtcbiAgICAgIHRoaXMucG9ydCA9IHBvcnQuc3Vic3RyKDEpO1xuICAgIH1cbiAgICBob3N0ID0gaG9zdC5zdWJzdHIoMCwgaG9zdC5sZW5ndGggLSBwb3J0Lmxlbmd0aCk7XG4gIH1cbiAgaWYgKGhvc3QpIHsgdGhpcy5ob3N0bmFtZSA9IGhvc3Q7IH1cbn07XG5cbmV4cG9ydHMucGFyc2UgPSB1cmxQYXJzZTtcbmV4cG9ydHMucmVzb2x2ZSA9IHVybFJlc29sdmU7XG5leHBvcnRzLnJlc29sdmVPYmplY3QgPSB1cmxSZXNvbHZlT2JqZWN0O1xuZXhwb3J0cy5mb3JtYXQgPSB1cmxGb3JtYXQ7XG5cbmV4cG9ydHMuVXJsID0gVXJsO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmZpbGVuYW1lVG9TdGVwcyA9IGV4cG9ydHMucmVzb2x2ZSA9IGV4cG9ydHMudW5peGlmeSA9IGV4cG9ydHMuaXNXaW4gPSB2b2lkIDA7XG5leHBvcnRzLmlzRmQgPSBpc0ZkO1xuZXhwb3J0cy52YWxpZGF0ZUZkID0gdmFsaWRhdGVGZDtcbmV4cG9ydHMuZGF0YVRvQnVmZmVyID0gZGF0YVRvQnVmZmVyO1xuZXhwb3J0cy5udWxsQ2hlY2sgPSBudWxsQ2hlY2s7XG5leHBvcnRzLnBhdGhUb0ZpbGVuYW1lID0gcGF0aFRvRmlsZW5hbWU7XG5leHBvcnRzLmNyZWF0ZUVycm9yID0gY3JlYXRlRXJyb3I7XG5leHBvcnRzLmNyZWF0ZVN0YXRFcnJvciA9IGNyZWF0ZVN0YXRFcnJvcjtcbmNvbnN0IHBhdGhfMSA9IHJlcXVpcmUoXCJAanNvbmpveS5jb20vZnMtbm9kZS1idWlsdGlucy9saWIvcGF0aFwiKTtcbmNvbnN0IGJ1ZmZlcl8xID0gcmVxdWlyZShcIkBqc29uam95LmNvbS9mcy1ub2RlLWJ1aWx0aW5zL2xpYi9pbnRlcm5hbC9idWZmZXJcIik7XG5jb25zdCBlcnJvcnMgPSByZXF1aXJlKFwiQGpzb25qb3kuY29tL2ZzLW5vZGUtYnVpbHRpbnMvbGliL2ludGVybmFsL2Vycm9yc1wiKTtcbmNvbnN0IHByb2Nlc3NfMSA9IHJlcXVpcmUoXCIuL3Byb2Nlc3NcIik7XG5jb25zdCBlbmNvZGluZ18xID0gcmVxdWlyZShcIi4vZW5jb2RpbmdcIik7XG5jb25zdCBmc19ub2RlX3V0aWxzXzEgPSByZXF1aXJlKFwiQGpzb25qb3kuY29tL2ZzLW5vZGUtdXRpbHNcIik7XG5leHBvcnRzLmlzV2luID0gcHJvY2Vzc18xLmRlZmF1bHQucGxhdGZvcm0gPT09ICd3aW4zMic7XG5jb25zdCByZXNvbHZlQ3Jvc3NQbGF0Zm9ybSA9IHBhdGhfMS5yZXNvbHZlO1xuY29uc3QgcGF0aFNlcCA9IHBhdGhfMS5wb3NpeCA/IHBhdGhfMS5wb3NpeC5zZXAgOiBwYXRoXzEuc2VwO1xuY29uc3QgaXNTZXBhcmF0b3IgPSAoc3RyLCBpKSA9PiB7XG4gICAgbGV0IGNoYXIgPSBzdHJbaV07XG4gICAgcmV0dXJuIGkgPiAwICYmIChjaGFyID09PSAnLycgfHwgKGV4cG9ydHMuaXNXaW4gJiYgY2hhciA9PT0gJ1xcXFwnKSk7XG59O1xuY29uc3QgcmVtb3ZlVHJhaWxpbmdTZXBhcmF0b3IgPSAoc3RyKSA9PiB7XG4gICAgbGV0IGkgPSBzdHIubGVuZ3RoIC0gMTtcbiAgICBpZiAoaSA8IDIpXG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgd2hpbGUgKGlzU2VwYXJhdG9yKHN0ciwgaSkpXG4gICAgICAgIGktLTtcbiAgICByZXR1cm4gc3RyLnN1YnN0cigwLCBpICsgMSk7XG59O1xuY29uc3Qgbm9ybWFsaXplUGF0aCA9IChzdHIsIHN0cmlwVHJhaWxpbmcpID0+IHtcbiAgICBpZiAodHlwZW9mIHN0ciAhPT0gJ3N0cmluZycpXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2V4cGVjdGVkIGEgc3RyaW5nJyk7XG4gICAgc3RyID0gc3RyLnJlcGxhY2UoL1tcXFxcXFwvXSsvZywgJy8nKTtcbiAgICBpZiAoc3RyaXBUcmFpbGluZyAhPT0gZmFsc2UpXG4gICAgICAgIHN0ciA9IHJlbW92ZVRyYWlsaW5nU2VwYXJhdG9yKHN0cik7XG4gICAgcmV0dXJuIHN0cjtcbn07XG5jb25zdCB1bml4aWZ5ID0gKGZpbGVwYXRoLCBzdHJpcFRyYWlsaW5nID0gdHJ1ZSkgPT4ge1xuICAgIGlmIChleHBvcnRzLmlzV2luKSB7XG4gICAgICAgIGZpbGVwYXRoID0gbm9ybWFsaXplUGF0aChmaWxlcGF0aCwgc3RyaXBUcmFpbGluZyk7XG4gICAgICAgIHJldHVybiBmaWxlcGF0aC5yZXBsYWNlKC9eKFthLXpBLVpdKzp8XFwuXFwvKS8sICcnKTtcbiAgICB9XG4gICAgcmV0dXJuIGZpbGVwYXRoO1xufTtcbmV4cG9ydHMudW5peGlmeSA9IHVuaXhpZnk7XG5sZXQgcmVzb2x2ZSA9IChmaWxlbmFtZSwgYmFzZSA9IHByb2Nlc3NfMS5kZWZhdWx0LmN3ZCgpKSA9PiByZXNvbHZlQ3Jvc3NQbGF0Zm9ybShiYXNlLCBmaWxlbmFtZSk7XG5leHBvcnRzLnJlc29sdmUgPSByZXNvbHZlO1xuaWYgKGV4cG9ydHMuaXNXaW4pIHtcbiAgICBjb25zdCBfcmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgZXhwb3J0cy5yZXNvbHZlID0gcmVzb2x2ZSA9IChmaWxlbmFtZSwgYmFzZSkgPT4gKDAsIGV4cG9ydHMudW5peGlmeSkoX3Jlc29sdmUoZmlsZW5hbWUsIGJhc2UpKTtcbn1cbmNvbnN0IGZpbGVuYW1lVG9TdGVwcyA9IChmaWxlbmFtZSwgYmFzZSkgPT4ge1xuICAgIGNvbnN0IGZ1bGxQYXRoID0gcmVzb2x2ZShmaWxlbmFtZSwgYmFzZSk7XG4gICAgY29uc3QgZnVsbFBhdGhTYW5zU2xhc2ggPSBmdWxsUGF0aC5zdWJzdHJpbmcoMSk7XG4gICAgaWYgKCFmdWxsUGF0aFNhbnNTbGFzaClcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIHJldHVybiBmdWxsUGF0aFNhbnNTbGFzaC5zcGxpdChwYXRoU2VwKTtcbn07XG5leHBvcnRzLmZpbGVuYW1lVG9TdGVwcyA9IGZpbGVuYW1lVG9TdGVwcztcbmZ1bmN0aW9uIGlzRmQocGF0aCkge1xuICAgIHJldHVybiBwYXRoID4+PiAwID09PSBwYXRoO1xufVxuZnVuY3Rpb24gdmFsaWRhdGVGZChmZCkge1xuICAgIGlmICghaXNGZChmZCkpXG4gICAgICAgIHRocm93IFR5cGVFcnJvcihmc19ub2RlX3V0aWxzXzEuRVJSU1RSLkZEKTtcbn1cbmZ1bmN0aW9uIGRhdGFUb0J1ZmZlcihkYXRhLCBlbmNvZGluZyA9IGVuY29kaW5nXzEuRU5DT0RJTkdfVVRGOCkge1xuICAgIGlmIChidWZmZXJfMS5CdWZmZXIuaXNCdWZmZXIoZGF0YSkpXG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIGVsc2UgaWYgKGRhdGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KVxuICAgICAgICByZXR1cm4gKDAsIGJ1ZmZlcl8xLmJ1ZmZlckZyb20pKGRhdGEpO1xuICAgIGVsc2UgaWYgKGVuY29kaW5nID09PSAnYnVmZmVyJylcbiAgICAgICAgcmV0dXJuICgwLCBidWZmZXJfMS5idWZmZXJGcm9tKShTdHJpbmcoZGF0YSksICd1dGY4Jyk7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gKDAsIGJ1ZmZlcl8xLmJ1ZmZlckZyb20pKFN0cmluZyhkYXRhKSwgZW5jb2RpbmcpO1xufVxuZnVuY3Rpb24gbnVsbENoZWNrKHBhdGgsIGNhbGxiYWNrKSB7XG4gICAgaWYgKCgnJyArIHBhdGgpLmluZGV4T2YoJ1xcdTAwMDAnKSAhPT0gLTEpIHtcbiAgICAgICAgY29uc3QgZXIgPSBuZXcgRXJyb3IoJ1BhdGggbXVzdCBiZSBhIHN0cmluZyB3aXRob3V0IG51bGwgYnl0ZXMnKTtcbiAgICAgICAgZXIuY29kZSA9ICdFTk9FTlQnO1xuICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgdGhyb3cgZXI7XG4gICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4gY2FsbGJhY2soZXIpKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbmZ1bmN0aW9uIGdldFBhdGhGcm9tVVJMUG9zaXgodXJsKSB7XG4gICAgaWYgKHVybC5ob3N0bmFtZSAhPT0gJycpIHtcbiAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5UeXBlRXJyb3IoJ0VSUl9JTlZBTElEX0ZJTEVfVVJMX0hPU1QnLCBwcm9jZXNzXzEuZGVmYXVsdC5wbGF0Zm9ybSk7XG4gICAgfVxuICAgIGNvbnN0IHBhdGhuYW1lID0gdXJsLnBhdGhuYW1lO1xuICAgIGZvciAobGV0IG4gPSAwOyBuIDwgcGF0aG5hbWUubGVuZ3RoOyBuKyspIHtcbiAgICAgICAgaWYgKHBhdGhuYW1lW25dID09PSAnJScpIHtcbiAgICAgICAgICAgIGNvbnN0IHRoaXJkID0gcGF0aG5hbWUuY29kZVBvaW50QXQobiArIDIpIHwgMHgyMDtcbiAgICAgICAgICAgIGlmIChwYXRobmFtZVtuICsgMV0gPT09ICcyJyAmJiB0aGlyZCA9PT0gMTAyKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5UeXBlRXJyb3IoJ0VSUl9JTlZBTElEX0ZJTEVfVVJMX1BBVEgnLCAnbXVzdCBub3QgaW5jbHVkZSBlbmNvZGVkIC8gY2hhcmFjdGVycycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQocGF0aG5hbWUpO1xufVxuZnVuY3Rpb24gcGF0aFRvRmlsZW5hbWUocGF0aCkge1xuICAgIGlmIChwYXRoIGluc3RhbmNlb2YgVWludDhBcnJheSkge1xuICAgICAgICBwYXRoID0gKDAsIGJ1ZmZlcl8xLmJ1ZmZlckZyb20pKHBhdGgpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHBhdGggIT09ICdzdHJpbmcnICYmICFidWZmZXJfMS5CdWZmZXIuaXNCdWZmZXIocGF0aCkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICghKHBhdGggaW5zdGFuY2VvZiByZXF1aXJlKCd1cmwnKS5VUkwpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoZnNfbm9kZV91dGlsc18xLkVSUlNUUi5QQVRIX1NUUik7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihmc19ub2RlX3V0aWxzXzEuRVJSU1RSLlBBVEhfU1RSKTtcbiAgICAgICAgfVxuICAgICAgICBwYXRoID0gZ2V0UGF0aEZyb21VUkxQb3NpeChwYXRoKTtcbiAgICB9XG4gICAgY29uc3QgcGF0aFN0cmluZyA9IFN0cmluZyhwYXRoKTtcbiAgICBudWxsQ2hlY2socGF0aFN0cmluZyk7XG4gICAgcmV0dXJuIHBhdGhTdHJpbmc7XG59XG5jb25zdCBFTk9FTlQgPSAnRU5PRU5UJztcbmNvbnN0IEVCQURGID0gJ0VCQURGJztcbmNvbnN0IEVJTlZBTCA9ICdFSU5WQUwnO1xuY29uc3QgRVBFUk0gPSAnRVBFUk0nO1xuY29uc3QgRVBST1RPID0gJ0VQUk9UTyc7XG5jb25zdCBFRVhJU1QgPSAnRUVYSVNUJztcbmNvbnN0IEVOT1RESVIgPSAnRU5PVERJUic7XG5jb25zdCBFTUZJTEUgPSAnRU1GSUxFJztcbmNvbnN0IEVBQ0NFUyA9ICdFQUNDRVMnO1xuY29uc3QgRUlTRElSID0gJ0VJU0RJUic7XG5jb25zdCBFTk9URU1QVFkgPSAnRU5PVEVNUFRZJztcbmNvbnN0IEVOT1NZUyA9ICdFTk9TWVMnO1xuY29uc3QgRVJSX0ZTX0VJU0RJUiA9ICdFUlJfRlNfRUlTRElSJztcbmNvbnN0IEVSUl9PVVRfT0ZfUkFOR0UgPSAnRVJSX09VVF9PRl9SQU5HRSc7XG5mdW5jdGlvbiBmb3JtYXRFcnJvcihlcnJvckNvZGUsIGZ1bmMgPSAnJywgcGF0aCA9ICcnLCBwYXRoMiA9ICcnKSB7XG4gICAgbGV0IHBhdGhGb3JtYXR0ZWQgPSAnJztcbiAgICBpZiAocGF0aClcbiAgICAgICAgcGF0aEZvcm1hdHRlZCA9IGAgJyR7cGF0aH0nYDtcbiAgICBpZiAocGF0aDIpXG4gICAgICAgIHBhdGhGb3JtYXR0ZWQgKz0gYCAtPiAnJHtwYXRoMn0nYDtcbiAgICBzd2l0Y2ggKGVycm9yQ29kZSkge1xuICAgICAgICBjYXNlIEVOT0VOVDpcbiAgICAgICAgICAgIHJldHVybiBgRU5PRU5UOiBubyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5LCAke2Z1bmN9JHtwYXRoRm9ybWF0dGVkfWA7XG4gICAgICAgIGNhc2UgRUJBREY6XG4gICAgICAgICAgICByZXR1cm4gYEVCQURGOiBiYWQgZmlsZSBkZXNjcmlwdG9yLCAke2Z1bmN9JHtwYXRoRm9ybWF0dGVkfWA7XG4gICAgICAgIGNhc2UgRUlOVkFMOlxuICAgICAgICAgICAgcmV0dXJuIGBFSU5WQUw6IGludmFsaWQgYXJndW1lbnQsICR7ZnVuY30ke3BhdGhGb3JtYXR0ZWR9YDtcbiAgICAgICAgY2FzZSBFUEVSTTpcbiAgICAgICAgICAgIHJldHVybiBgRVBFUk06IG9wZXJhdGlvbiBub3QgcGVybWl0dGVkLCAke2Z1bmN9JHtwYXRoRm9ybWF0dGVkfWA7XG4gICAgICAgIGNhc2UgRVBST1RPOlxuICAgICAgICAgICAgcmV0dXJuIGBFUFJPVE86IHByb3RvY29sIGVycm9yLCAke2Z1bmN9JHtwYXRoRm9ybWF0dGVkfWA7XG4gICAgICAgIGNhc2UgRUVYSVNUOlxuICAgICAgICAgICAgcmV0dXJuIGBFRVhJU1Q6IGZpbGUgYWxyZWFkeSBleGlzdHMsICR7ZnVuY30ke3BhdGhGb3JtYXR0ZWR9YDtcbiAgICAgICAgY2FzZSBFTk9URElSOlxuICAgICAgICAgICAgcmV0dXJuIGBFTk9URElSOiBub3QgYSBkaXJlY3RvcnksICR7ZnVuY30ke3BhdGhGb3JtYXR0ZWR9YDtcbiAgICAgICAgY2FzZSBFSVNESVI6XG4gICAgICAgICAgICByZXR1cm4gYEVJU0RJUjogaWxsZWdhbCBvcGVyYXRpb24gb24gYSBkaXJlY3RvcnksICR7ZnVuY30ke3BhdGhGb3JtYXR0ZWR9YDtcbiAgICAgICAgY2FzZSBFQUNDRVM6XG4gICAgICAgICAgICByZXR1cm4gYEVBQ0NFUzogcGVybWlzc2lvbiBkZW5pZWQsICR7ZnVuY30ke3BhdGhGb3JtYXR0ZWR9YDtcbiAgICAgICAgY2FzZSBFTk9URU1QVFk6XG4gICAgICAgICAgICByZXR1cm4gYEVOT1RFTVBUWTogZGlyZWN0b3J5IG5vdCBlbXB0eSwgJHtmdW5jfSR7cGF0aEZvcm1hdHRlZH1gO1xuICAgICAgICBjYXNlIEVNRklMRTpcbiAgICAgICAgICAgIHJldHVybiBgRU1GSUxFOiB0b28gbWFueSBvcGVuIGZpbGVzLCAke2Z1bmN9JHtwYXRoRm9ybWF0dGVkfWA7XG4gICAgICAgIGNhc2UgRU5PU1lTOlxuICAgICAgICAgICAgcmV0dXJuIGBFTk9TWVM6IGZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZCwgJHtmdW5jfSR7cGF0aEZvcm1hdHRlZH1gO1xuICAgICAgICBjYXNlIEVSUl9GU19FSVNESVI6XG4gICAgICAgICAgICByZXR1cm4gYFtFUlJfRlNfRUlTRElSXTogUGF0aCBpcyBhIGRpcmVjdG9yeTogJHtmdW5jfSByZXR1cm5lZCBFSVNESVIgKGlzIGEgZGlyZWN0b3J5KSAke3BhdGh9YDtcbiAgICAgICAgY2FzZSBFUlJfT1VUX09GX1JBTkdFOlxuICAgICAgICAgICAgcmV0dXJuIGBbRVJSX09VVF9PRl9SQU5HRV06IHZhbHVlIG91dCBvZiByYW5nZSwgJHtmdW5jfSR7cGF0aEZvcm1hdHRlZH1gO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGAke2Vycm9yQ29kZX06IGVycm9yIG9jY3VycmVkLCAke2Z1bmN9JHtwYXRoRm9ybWF0dGVkfWA7XG4gICAgfVxufVxuZnVuY3Rpb24gY3JlYXRlRXJyb3IoZXJyb3JDb2RlLCBmdW5jID0gJycsIHBhdGggPSAnJywgcGF0aDIgPSAnJywgQ29uc3RydWN0b3IgPSBFcnJvcikge1xuICAgIGNvbnN0IGVycm9yID0gbmV3IENvbnN0cnVjdG9yKGZvcm1hdEVycm9yKGVycm9yQ29kZSwgZnVuYywgcGF0aCwgcGF0aDIpKTtcbiAgICBlcnJvci5jb2RlID0gZXJyb3JDb2RlO1xuICAgIGlmIChwYXRoKSB7XG4gICAgICAgIGVycm9yLnBhdGggPSBwYXRoO1xuICAgIH1cbiAgICByZXR1cm4gZXJyb3I7XG59XG5mdW5jdGlvbiBjcmVhdGVTdGF0RXJyb3IoZXJyb3JDb2RlLCBmdW5jID0gJycsIHBhdGggPSAnJywgcGF0aDIgPSAnJykge1xuICAgIHJldHVybiB7XG4gICAgICAgIGNvZGU6IGVycm9yQ29kZSxcbiAgICAgICAgbWVzc2FnZTogZm9ybWF0RXJyb3IoZXJyb3JDb2RlLCBmdW5jLCBwYXRoLCBwYXRoMiksXG4gICAgICAgIHBhdGgsXG4gICAgICAgIHRvRXJyb3IoKSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcih0aGlzLm1lc3NhZ2UpO1xuICAgICAgICAgICAgZXJyb3IuY29kZSA9IHRoaXMuY29kZTtcbiAgICAgICAgICAgIGlmICh0aGlzLnBhdGgpIHtcbiAgICAgICAgICAgICAgICBlcnJvci5wYXRoID0gdGhpcy5wYXRoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICB9LFxuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD11dGlsLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5TdXBlcmJsb2NrID0gdm9pZCAwO1xuY29uc3QgcGF0aF8xID0gcmVxdWlyZShcIkBqc29uam95LmNvbS9mcy1ub2RlLWJ1aWx0aW5zL2xpYi9wYXRoXCIpO1xuY29uc3QgTm9kZV8xID0gcmVxdWlyZShcIi4vTm9kZVwiKTtcbmNvbnN0IExpbmtfMSA9IHJlcXVpcmUoXCIuL0xpbmtcIik7XG5jb25zdCBGaWxlXzEgPSByZXF1aXJlKFwiLi9GaWxlXCIpO1xuY29uc3QgYnVmZmVyXzEgPSByZXF1aXJlKFwiQGpzb25qb3kuY29tL2ZzLW5vZGUtYnVpbHRpbnMvbGliL2ludGVybmFsL2J1ZmZlclwiKTtcbmNvbnN0IHByb2Nlc3NfMSA9IHJlcXVpcmUoXCIuL3Byb2Nlc3NcIik7XG5jb25zdCBmc19ub2RlX3V0aWxzXzEgPSByZXF1aXJlKFwiQGpzb25qb3kuY29tL2ZzLW5vZGUtdXRpbHNcIik7XG5jb25zdCBmc19ub2RlX3V0aWxzXzIgPSByZXF1aXJlKFwiQGpzb25qb3kuY29tL2ZzLW5vZGUtdXRpbHNcIik7XG5jb25zdCB1dGlsXzEgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xuY29uc3QganNvbl8xID0gcmVxdWlyZShcIi4vanNvblwiKTtcbmNvbnN0IHJlc3VsdF8xID0gcmVxdWlyZShcIi4vcmVzdWx0XCIpO1xuY29uc3QgcGF0aFNlcCA9IHBhdGhfMS5wb3NpeCA/IHBhdGhfMS5wb3NpeC5zZXAgOiBwYXRoXzEuc2VwO1xuY29uc3QgcGF0aFJlbGF0aXZlID0gcGF0aF8xLnBvc2l4ID8gcGF0aF8xLnBvc2l4LnJlbGF0aXZlIDogcGF0aF8xLnJlbGF0aXZlO1xuY29uc3QgcGF0aEpvaW4gPSBwYXRoXzEucG9zaXggPyBwYXRoXzEucG9zaXguam9pbiA6IHBhdGhfMS5qb2luO1xuY29uc3QgeyBPX1JET05MWSwgT19XUk9OTFksIE9fUkRXUiwgT19DUkVBVCwgT19FWENMLCBPX1RSVU5DLCBPX0FQUEVORCwgT19ESVJFQ1RPUlkgfSA9IGZzX25vZGVfdXRpbHNfMS5jb25zdGFudHM7XG4vKipcbiAqIFJlcHJlc2VudHMgYSBmaWxlc3lzdGVtIHN1cGVyYmxvY2ssIHdoaWNoIGlzIHRoZSByb290IG9mIGEgdmlydHVhbFxuICogZmlsZXN5c3RlbSBpbiBMaW51eC5cbiAqIEBzZWUgaHR0cHM6Ly9seHIubGludXgubm8vbGludXgrdjMuMTEuMi9pbmNsdWRlL2xpbnV4L2ZzLmgjTDEyNDJcbiAqL1xuY2xhc3MgU3VwZXJibG9jayB7XG4gICAgc3RhdGljIGZyb21KU09OKGpzb24sIGN3ZCwgb3B0cykge1xuICAgICAgICBjb25zdCB2b2wgPSBuZXcgU3VwZXJibG9jayhvcHRzKTtcbiAgICAgICAgdm9sLmZyb21KU09OKGpzb24sIGN3ZCk7XG4gICAgICAgIHJldHVybiB2b2w7XG4gICAgfVxuICAgIHN0YXRpYyBmcm9tTmVzdGVkSlNPTihqc29uLCBjd2QsIG9wdHMpIHtcbiAgICAgICAgY29uc3Qgdm9sID0gbmV3IFN1cGVyYmxvY2sob3B0cyk7XG4gICAgICAgIHZvbC5mcm9tTmVzdGVkSlNPTihqc29uLCBjd2QpO1xuICAgICAgICByZXR1cm4gdm9sO1xuICAgIH1cbiAgICBjb25zdHJ1Y3RvcihvcHRzID0ge30pIHtcbiAgICAgICAgLy8gSS1ub2RlIG51bWJlciBjb3VudGVyLlxuICAgICAgICB0aGlzLmlubyA9IDA7XG4gICAgICAgIC8vIEEgbWFwcGluZyBmb3IgaS1ub2RlIG51bWJlcnMgdG8gaS1ub2RlcyAoYE5vZGVgKTtcbiAgICAgICAgdGhpcy5pbm9kZXMgPSB7fTtcbiAgICAgICAgLy8gTGlzdCBvZiByZWxlYXNlZCBpLW5vZGUgbnVtYmVycywgZm9yIHJldXNlLlxuICAgICAgICB0aGlzLnJlbGVhc2VkSW5vcyA9IFtdO1xuICAgICAgICAvLyBBIG1hcHBpbmcgZm9yIGZpbGUgZGVzY3JpcHRvcnMgdG8gYEZpbGVgcy5cbiAgICAgICAgdGhpcy5mZHMgPSB7fTtcbiAgICAgICAgLy8gQSBsaXN0IG9mIHJldXNhYmxlIChvcGVuZWQgYW5kIGNsb3NlZCkgZmlsZSBkZXNjcmlwdG9ycywgdGhhdCBzaG91bGQgYmVcbiAgICAgICAgLy8gdXNlZCBmaXJzdCBiZWZvcmUgY3JlYXRpbmcgYSBuZXcgZmlsZSBkZXNjcmlwdG9yLlxuICAgICAgICB0aGlzLnJlbGVhc2VkRmRzID0gW107XG4gICAgICAgIC8vIE1heCBudW1iZXIgb2Ygb3BlbiBmaWxlcy5cbiAgICAgICAgdGhpcy5tYXhGaWxlcyA9IDEwMDAwO1xuICAgICAgICAvLyBDdXJyZW50IG51bWJlciBvZiBvcGVuIGZpbGVzLlxuICAgICAgICB0aGlzLm9wZW5GaWxlcyA9IDA7XG4gICAgICAgIHRoaXMub3BlbiA9IChmaWxlbmFtZSwgZmxhZ3NOdW0sIG1vZGVOdW0sIHJlc29sdmVTeW1saW5rcyA9IHRydWUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGUgPSB0aGlzLm9wZW5GaWxlKGZpbGVuYW1lLCBmbGFnc051bSwgbW9kZU51bSwgcmVzb2x2ZVN5bWxpbmtzKTtcbiAgICAgICAgICAgIGlmICghZmlsZSlcbiAgICAgICAgICAgICAgICB0aHJvdyAoMCwgdXRpbF8xLmNyZWF0ZUVycm9yKShcIkVOT0VOVFwiIC8qIEVSUk9SX0NPREUuRU5PRU5UICovLCAnb3BlbicsIGZpbGVuYW1lKTtcbiAgICAgICAgICAgIHJldHVybiBmaWxlLmZkO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLndyaXRlRmlsZSA9IChpZCwgYnVmLCBmbGFnc051bSwgbW9kZU51bSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNVc2VyRmQgPSB0eXBlb2YgaWQgPT09ICdudW1iZXInO1xuICAgICAgICAgICAgbGV0IGZkO1xuICAgICAgICAgICAgaWYgKGlzVXNlckZkKVxuICAgICAgICAgICAgICAgIGZkID0gaWQ7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZmQgPSB0aGlzLm9wZW4oKDAsIHV0aWxfMS5wYXRoVG9GaWxlbmFtZSkoaWQpLCBmbGFnc051bSwgbW9kZU51bSk7XG4gICAgICAgICAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIGxldCBsZW5ndGggPSBidWYubGVuZ3RoO1xuICAgICAgICAgICAgbGV0IHBvc2l0aW9uID0gZmxhZ3NOdW0gJiBPX0FQUEVORCA/IHVuZGVmaW5lZCA6IDA7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHdoaWxlIChsZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdyaXR0ZW4gPSB0aGlzLndyaXRlKGZkLCBidWYsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSB3cml0dGVuO1xuICAgICAgICAgICAgICAgICAgICBsZW5ndGggLT0gd3JpdHRlbjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBvc2l0aW9uICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiArPSB3cml0dGVuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIGlmICghaXNVc2VyRmQpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoZmQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJlYWQgPSAoZmQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uKSA9PiB7XG4gICAgICAgICAgICBpZiAoYnVmZmVyLmJ5dGVMZW5ndGggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyAoMCwgdXRpbF8xLmNyZWF0ZUVycm9yKShcIkVSUl9PVVRfT0ZfUkFOR0VcIiAvKiBFUlJPUl9DT0RFLkVSUl9PVVRfT0ZfUkFOR0UgKi8sICdyZWFkJywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIFJhbmdlRXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZmlsZSA9IHRoaXMuZ2V0RmlsZUJ5RmRPclRocm93KGZkKTtcbiAgICAgICAgICAgIGlmIChmaWxlLm5vZGUuaXNTeW1saW5rKCkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyAoMCwgdXRpbF8xLmNyZWF0ZUVycm9yKShcIkVQRVJNXCIgLyogRVJST1JfQ09ERS5FUEVSTSAqLywgJ3JlYWQnLCBmaWxlLmxpbmsuZ2V0UGF0aCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmaWxlLnJlYWQoYnVmZmVyLCBOdW1iZXIob2Zmc2V0KSwgTnVtYmVyKGxlbmd0aCksIHBvc2l0aW9uID09PSAtMSB8fCB0eXBlb2YgcG9zaXRpb24gIT09ICdudW1iZXInID8gdW5kZWZpbmVkIDogcG9zaXRpb24pO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJlYWR2ID0gKGZkLCBidWZmZXJzLCBwb3NpdGlvbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmlsZSA9IHRoaXMuZ2V0RmlsZUJ5RmRPclRocm93KGZkKTtcbiAgICAgICAgICAgIGxldCBwID0gcG9zaXRpb24gPz8gdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKHAgPT09IC0xKVxuICAgICAgICAgICAgICAgIHAgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBsZXQgYnl0ZXNSZWFkID0gMDtcbiAgICAgICAgICAgIGZvciAoY29uc3QgYnVmZmVyIG9mIGJ1ZmZlcnMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBieXRlcyA9IGZpbGUucmVhZChidWZmZXIsIDAsIGJ1ZmZlci5ieXRlTGVuZ3RoLCBwKTtcbiAgICAgICAgICAgICAgICBwID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGJ5dGVzUmVhZCArPSBieXRlcztcbiAgICAgICAgICAgICAgICBpZiAoYnl0ZXMgPCBidWZmZXIuYnl0ZUxlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYnl0ZXNSZWFkO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmxpbmsgPSAoZmlsZW5hbWUxLCBmaWxlbmFtZTIpID0+IHtcbiAgICAgICAgICAgIGxldCBsaW5rMTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGluazEgPSB0aGlzLmdldExpbmtPclRocm93KGZpbGVuYW1lMSwgJ2xpbmsnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyLmNvZGUpXG4gICAgICAgICAgICAgICAgICAgIGVyciA9ICgwLCB1dGlsXzEuY3JlYXRlRXJyb3IpKGVyci5jb2RlLCAnbGluaycsIGZpbGVuYW1lMSwgZmlsZW5hbWUyKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBkaXJuYW1lMiA9ICgwLCBwYXRoXzEuZGlybmFtZSkoZmlsZW5hbWUyKTtcbiAgICAgICAgICAgIGxldCBkaXIyO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBkaXIyID0gdGhpcy5nZXRMaW5rT3JUaHJvdyhkaXJuYW1lMiwgJ2xpbmsnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAvLyBBdWdtZW50IGVycm9yIHdpdGggZmlsZW5hbWUxXG4gICAgICAgICAgICAgICAgaWYgKGVyci5jb2RlKVxuICAgICAgICAgICAgICAgICAgICBlcnIgPSAoMCwgdXRpbF8xLmNyZWF0ZUVycm9yKShlcnIuY29kZSwgJ2xpbmsnLCBmaWxlbmFtZTEsIGZpbGVuYW1lMik7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbmFtZSA9ICgwLCBwYXRoXzEuYmFzZW5hbWUpKGZpbGVuYW1lMik7XG4gICAgICAgICAgICBpZiAoZGlyMi5nZXRDaGlsZChuYW1lKSlcbiAgICAgICAgICAgICAgICB0aHJvdyAoMCwgdXRpbF8xLmNyZWF0ZUVycm9yKShcIkVFWElTVFwiIC8qIEVSUk9SX0NPREUuRUVYSVNUICovLCAnbGluaycsIGZpbGVuYW1lMSwgZmlsZW5hbWUyKTtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBsaW5rMS5nZXROb2RlKCk7XG4gICAgICAgICAgICBub2RlLm5saW5rKys7XG4gICAgICAgICAgICBkaXIyLmNyZWF0ZUNoaWxkKG5hbWUsIG5vZGUpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnVubGluayA9IChmaWxlbmFtZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGluayA9IHRoaXMuZ2V0TGlua09yVGhyb3coZmlsZW5hbWUsICd1bmxpbmsnKTtcbiAgICAgICAgICAgIC8vIFRPRE86IENoZWNrIGlmIGl0IGlzIGZpbGUsIGRpciwgb3RoZXIuLi5cbiAgICAgICAgICAgIGlmIChsaW5rLmxlbmd0aClcbiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcignRGlyIG5vdCBlbXB0eS4uLicpO1xuICAgICAgICAgICAgdGhpcy5kZWxldGVMaW5rKGxpbmspO1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IGxpbmsuZ2V0Tm9kZSgpO1xuICAgICAgICAgICAgbm9kZS5ubGluay0tO1xuICAgICAgICAgICAgLy8gV2hlbiBhbGwgaGFyZCBsaW5rcyB0byBpLW5vZGUgYXJlIGRlbGV0ZWQsIHJlbW92ZSB0aGUgaS1ub2RlLCB0b28uXG4gICAgICAgICAgICBpZiAobm9kZS5ubGluayA8PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWxldGVOb2RlKG5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnN5bWxpbmsgPSAodGFyZ2V0RmlsZW5hbWUsIHBhdGhGaWxlbmFtZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGF0aFN0ZXBzID0gKDAsIHV0aWxfMS5maWxlbmFtZVRvU3RlcHMpKHBhdGhGaWxlbmFtZSk7XG4gICAgICAgICAgICAvLyBDaGVjayBpZiBkaXJlY3RvcnkgZXhpc3RzLCB3aGVyZSB3ZSBhYm91dCB0byBjcmVhdGUgYSBzeW1saW5rLlxuICAgICAgICAgICAgbGV0IGRpckxpbms7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGRpckxpbmsgPSB0aGlzLmdldExpbmtQYXJlbnRBc0Rpck9yVGhyb3cocGF0aFN0ZXBzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAvLyBDYXRjaCBlcnJvciB0byBwb3B1bGF0ZSB3aXRoIHRoZSBjb3JyZWN0IGZpZWxkcyAtIGdldExpbmtQYXJlbnRBc0Rpck9yVGhyb3cgd29uJ3QgYmUgYXdhcmUgb2YgdGhlIHNlY29uZCBwYXRoXG4gICAgICAgICAgICAgICAgaWYgKGVyci5jb2RlKVxuICAgICAgICAgICAgICAgICAgICBlcnIgPSAoMCwgdXRpbF8xLmNyZWF0ZUVycm9yKShlcnIuY29kZSwgJ3N5bWxpbmsnLCB0YXJnZXRGaWxlbmFtZSwgcGF0aEZpbGVuYW1lKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBuYW1lID0gcGF0aFN0ZXBzW3BhdGhTdGVwcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIC8vIENoZWNrIGlmIG5ldyBmaWxlIGFscmVhZHkgZXhpc3RzLlxuICAgICAgICAgICAgaWYgKGRpckxpbmsuZ2V0Q2hpbGQobmFtZSkpXG4gICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoXCJFRVhJU1RcIiAvKiBFUlJPUl9DT0RFLkVFWElTVCAqLywgJ3N5bWxpbmsnLCB0YXJnZXRGaWxlbmFtZSwgcGF0aEZpbGVuYW1lKTtcbiAgICAgICAgICAgIC8vIENoZWNrIHBlcm1pc3Npb25zIG9uIHRoZSBwYXRoIHdoZXJlIHdlIGFyZSBjcmVhdGluZyB0aGUgc3ltbGluay5cbiAgICAgICAgICAgIC8vIE5vdGUgd2UncmUgbm90IGNoZWNraW5nIHBlcm1pc3Npb25zIG9uIHRoZSB0YXJnZXQgcGF0aDogSXQgaXMgbm90IGFuIGVycm9yIHRvIGNyZWF0ZSBhIHN5bWxpbmsgdG8gYVxuICAgICAgICAgICAgLy8gbm9uLWV4aXN0ZW50IG9yIGluYWNjZXNzaWJsZSB0YXJnZXRcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBkaXJMaW5rLmdldE5vZGUoKTtcbiAgICAgICAgICAgIGlmICghbm9kZS5jYW5FeGVjdXRlKCkgfHwgIW5vZGUuY2FuV3JpdGUoKSlcbiAgICAgICAgICAgICAgICB0aHJvdyAoMCwgdXRpbF8xLmNyZWF0ZUVycm9yKShcIkVBQ0NFU1wiIC8qIEVSUk9SX0NPREUuRUFDQ0VTICovLCAnc3ltbGluaycsIHRhcmdldEZpbGVuYW1lLCBwYXRoRmlsZW5hbWUpO1xuICAgICAgICAgICAgLy8gQ3JlYXRlIHN5bWxpbmsuXG4gICAgICAgICAgICBjb25zdCBzeW1saW5rID0gZGlyTGluay5jcmVhdGVDaGlsZChuYW1lKTtcbiAgICAgICAgICAgIHN5bWxpbmsuZ2V0Tm9kZSgpLm1ha2VTeW1saW5rKHRhcmdldEZpbGVuYW1lKTtcbiAgICAgICAgICAgIHJldHVybiBzeW1saW5rO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJlbmFtZSA9IChvbGRQYXRoRmlsZW5hbWUsIG5ld1BhdGhGaWxlbmFtZSkgPT4ge1xuICAgICAgICAgICAgbGV0IGxpbms7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxpbmsgPSB0aGlzLmdldFJlc29sdmVkTGlua09yVGhyb3cob2xkUGF0aEZpbGVuYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAvLyBBdWdtZW50IGVyciB3aXRoIG5ld1BhdGhGaWxlbmFtZVxuICAgICAgICAgICAgICAgIGlmIChlcnIuY29kZSlcbiAgICAgICAgICAgICAgICAgICAgZXJyID0gKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoZXJyLmNvZGUsICdyZW5hbWUnLCBvbGRQYXRoRmlsZW5hbWUsIG5ld1BhdGhGaWxlbmFtZSk7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gVE9ETzogQ2hlY2sgaWYgaXQgaXMgZGlyZWN0b3J5LCBpZiBub24tZW1wdHksIHdlIGNhbm5vdCBtb3ZlIGl0LCByaWdodD9cbiAgICAgICAgICAgIC8vIENoZWNrIGRpcmVjdG9yeSBleGlzdHMgZm9yIHRoZSBuZXcgbG9jYXRpb24uXG4gICAgICAgICAgICBsZXQgbmV3UGF0aERpckxpbms7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIG5ld1BhdGhEaXJMaW5rID0gdGhpcy5nZXRMaW5rUGFyZW50QXNEaXJPclRocm93KG5ld1BhdGhGaWxlbmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgLy8gQXVnbWVudCBlcnJvciB3aXRoIG9sZFBhdGhGaWxlbmFtZVxuICAgICAgICAgICAgICAgIGlmIChlcnIuY29kZSlcbiAgICAgICAgICAgICAgICAgICAgZXJyID0gKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoZXJyLmNvZGUsICdyZW5hbWUnLCBvbGRQYXRoRmlsZW5hbWUsIG5ld1BhdGhGaWxlbmFtZSk7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gVE9ETzogQWxzbyB0cmVhdCBjYXNlcyB3aXRoIGRpcmVjdG9yaWVzIGFuZCBzeW1ib2xpYyBsaW5rcy5cbiAgICAgICAgICAgIC8vIFRPRE86IFNlZTogaHR0cDovL21hbjcub3JnL2xpbnV4L21hbi1wYWdlcy9tYW4yL3JlbmFtZS4yLmh0bWxcbiAgICAgICAgICAgIC8vIFJlbW92ZSBoYXJkIGxpbmsgZnJvbSBvbGQgZm9sZGVyLlxuICAgICAgICAgICAgY29uc3Qgb2xkTGlua1BhcmVudCA9IGxpbmsucGFyZW50O1xuICAgICAgICAgICAgaWYgKCFvbGRMaW5rUGFyZW50KVxuICAgICAgICAgICAgICAgIHRocm93ICgwLCB1dGlsXzEuY3JlYXRlRXJyb3IpKFwiRUlOVkFMXCIgLyogRVJST1JfQ09ERS5FSU5WQUwgKi8sICdyZW5hbWUnLCBvbGRQYXRoRmlsZW5hbWUsIG5ld1BhdGhGaWxlbmFtZSk7XG4gICAgICAgICAgICAvLyBDaGVjayB3ZSBoYXZlIGFjY2VzcyBhbmQgd3JpdGUgcGVybWlzc2lvbnMgaW4gYm90aCBwbGFjZXNcbiAgICAgICAgICAgIGNvbnN0IG9sZFBhcmVudE5vZGUgPSBvbGRMaW5rUGFyZW50LmdldE5vZGUoKTtcbiAgICAgICAgICAgIGNvbnN0IG5ld1BhdGhEaXJOb2RlID0gbmV3UGF0aERpckxpbmsuZ2V0Tm9kZSgpO1xuICAgICAgICAgICAgaWYgKCFvbGRQYXJlbnROb2RlLmNhbkV4ZWN1dGUoKSB8fFxuICAgICAgICAgICAgICAgICFvbGRQYXJlbnROb2RlLmNhbldyaXRlKCkgfHxcbiAgICAgICAgICAgICAgICAhbmV3UGF0aERpck5vZGUuY2FuRXhlY3V0ZSgpIHx8XG4gICAgICAgICAgICAgICAgIW5ld1BhdGhEaXJOb2RlLmNhbldyaXRlKCkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyAoMCwgdXRpbF8xLmNyZWF0ZUVycm9yKShcIkVBQ0NFU1wiIC8qIEVSUk9SX0NPREUuRUFDQ0VTICovLCAncmVuYW1lJywgb2xkUGF0aEZpbGVuYW1lLCBuZXdQYXRoRmlsZW5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb2xkTGlua1BhcmVudC5kZWxldGVDaGlsZChsaW5rKTtcbiAgICAgICAgICAgIC8vIFJlbmFtZSBzaG91bGQgb3ZlcndyaXRlIHRoZSBuZXcgcGF0aCwgaWYgdGhhdCBleGlzdHMuXG4gICAgICAgICAgICBjb25zdCBuYW1lID0gKDAsIHBhdGhfMS5iYXNlbmFtZSkobmV3UGF0aEZpbGVuYW1lKTtcbiAgICAgICAgICAgIGxpbmsubmFtZSA9IG5hbWU7XG4gICAgICAgICAgICBsaW5rLnN0ZXBzID0gWy4uLm5ld1BhdGhEaXJMaW5rLnN0ZXBzLCBuYW1lXTtcbiAgICAgICAgICAgIG5ld1BhdGhEaXJMaW5rLnNldENoaWxkKGxpbmsuZ2V0TmFtZSgpLCBsaW5rKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5ta2RpciA9IChmaWxlbmFtZSwgbW9kZU51bSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RlcHMgPSAoMCwgdXRpbF8xLmZpbGVuYW1lVG9TdGVwcykoZmlsZW5hbWUpO1xuICAgICAgICAgICAgLy8gVGhpcyB3aWxsIHRocm93IGlmIHVzZXIgdHJpZXMgdG8gY3JlYXRlIHJvb3QgZGlyIGBmcy5ta2RpclN5bmMoJy8nKWAuXG4gICAgICAgICAgICBpZiAoIXN0ZXBzLmxlbmd0aClcbiAgICAgICAgICAgICAgICB0aHJvdyAoMCwgdXRpbF8xLmNyZWF0ZUVycm9yKShcIkVFWElTVFwiIC8qIEVSUk9SX0NPREUuRUVYSVNUICovLCAnbWtkaXInLCBmaWxlbmFtZSk7XG4gICAgICAgICAgICBjb25zdCBkaXIgPSB0aGlzLmdldExpbmtQYXJlbnRBc0Rpck9yVGhyb3coZmlsZW5hbWUsICdta2RpcicpO1xuICAgICAgICAgICAgLy8gQ2hlY2sgcGF0aCBhbHJlYWR5IGV4aXN0cy5cbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBzdGVwc1tzdGVwcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIGlmIChkaXIuZ2V0Q2hpbGQobmFtZSkpXG4gICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoXCJFRVhJU1RcIiAvKiBFUlJPUl9DT0RFLkVFWElTVCAqLywgJ21rZGlyJywgZmlsZW5hbWUpO1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IGRpci5nZXROb2RlKCk7XG4gICAgICAgICAgICBpZiAoIW5vZGUuY2FuV3JpdGUoKSB8fCAhbm9kZS5jYW5FeGVjdXRlKCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoXCJFQUNDRVNcIiAvKiBFUlJPUl9DT0RFLkVBQ0NFUyAqLywgJ21rZGlyJywgZmlsZW5hbWUpO1xuICAgICAgICAgICAgZGlyLmNyZWF0ZUNoaWxkKG5hbWUsIHRoaXMuY3JlYXRlTm9kZShmc19ub2RlX3V0aWxzXzEuY29uc3RhbnRzLlNfSUZESVIgfCBtb2RlTnVtKSk7XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDcmVhdGVzIGRpcmVjdG9yeSB0cmVlIHJlY3Vyc2l2ZWx5LlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5ta2RpcnAgPSAoZmlsZW5hbWUsIG1vZGVOdW0pID0+IHtcbiAgICAgICAgICAgIGxldCBjcmVhdGVkID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBzdGVwcyA9ICgwLCB1dGlsXzEuZmlsZW5hbWVUb1N0ZXBzKShmaWxlbmFtZSk7XG4gICAgICAgICAgICBsZXQgY3VyciA9IG51bGw7XG4gICAgICAgICAgICBsZXQgaSA9IHN0ZXBzLmxlbmd0aDtcbiAgICAgICAgICAgIC8vIEZpbmQgdGhlIGxvbmdlc3Qgc3VicGF0aCBvZiBmaWxlbmFtZSB0aGF0IHN0aWxsIGV4aXN0czpcbiAgICAgICAgICAgIGZvciAoaSA9IHN0ZXBzLmxlbmd0aDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICBjdXJyID0gdGhpcy5nZXRSZXNvbHZlZExpbmsoc3RlcHMuc2xpY2UoMCwgaSkpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghY3Vycikge1xuICAgICAgICAgICAgICAgIGN1cnIgPSB0aGlzLnJvb3Q7XG4gICAgICAgICAgICAgICAgaSA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBjdXJyIGlzIG5vdyB0aGUgbGFzdCBkaXJlY3RvcnkgdGhhdCBzdGlsbCBleGlzdHMuXG4gICAgICAgICAgICAvLyAoSWYgbm9uZSBvZiB0aGVtIGV4aXN0ZWQsIGN1cnIgaXMgdGhlIHJvb3QuKVxuICAgICAgICAgICAgLy8gQ2hlY2sgYWNjZXNzIHRoZSBsYXp5IHdheTpcbiAgICAgICAgICAgIGN1cnIgPSB0aGlzLmdldFJlc29sdmVkTGlua09yVGhyb3cocGF0aF8xLnNlcCArIHN0ZXBzLnNsaWNlKDAsIGkpLmpvaW4ocGF0aF8xLnNlcCksICdta2RpcicpO1xuICAgICAgICAgICAgLy8gU3RhcnQgY3JlYXRpbmcgZGlyZWN0b3JpZXM6XG4gICAgICAgICAgICBmb3IgKGk7IGkgPCBzdGVwcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBjdXJyLmdldE5vZGUoKTtcbiAgICAgICAgICAgICAgICBpZiAobm9kZS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIHdlIGhhdmUgcGVybWlzc2lvbnNcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLmNhbkV4ZWN1dGUoKSB8fCAhbm9kZS5jYW5Xcml0ZSgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoXCJFQUNDRVNcIiAvKiBFUlJPUl9DT0RFLkVBQ0NFUyAqLywgJ21rZGlyJywgZmlsZW5hbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoXCJFTk9URElSXCIgLyogRVJST1JfQ09ERS5FTk9URElSICovLCAnbWtkaXInLCBmaWxlbmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNyZWF0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGN1cnIgPSBjdXJyLmNyZWF0ZUNoaWxkKHN0ZXBzW2ldLCB0aGlzLmNyZWF0ZU5vZGUoZnNfbm9kZV91dGlsc18xLmNvbnN0YW50cy5TX0lGRElSIHwgbW9kZU51bSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZWQgPyBmaWxlbmFtZSA6IHVuZGVmaW5lZDtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5ybWRpciA9IChmaWxlbmFtZSwgcmVjdXJzaXZlID0gZmFsc2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmsgPSB0aGlzLmdldExpbmtBc0Rpck9yVGhyb3coZmlsZW5hbWUsICdybWRpcicpO1xuICAgICAgICAgICAgaWYgKGxpbmsubGVuZ3RoICYmICFyZWN1cnNpdmUpXG4gICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoXCJFTk9URU1QVFlcIiAvKiBFUlJPUl9DT0RFLkVOT1RFTVBUWSAqLywgJ3JtZGlyJywgZmlsZW5hbWUpO1xuICAgICAgICAgICAgdGhpcy5kZWxldGVMaW5rKGxpbmspO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJtID0gKGZpbGVuYW1lLCBmb3JjZSA9IGZhbHNlLCByZWN1cnNpdmUgPSBmYWxzZSkgPT4ge1xuICAgICAgICAgICAgLy8gXCJzdGF0XCIgaXMgdXNlZCB0byBtYXRjaCBOb2RlJ3MgbmF0aXZlIGVycm9yIG1lc3NhZ2UuXG4gICAgICAgICAgICBsZXQgbGluaztcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGluayA9IHRoaXMuZ2V0UmVzb2x2ZWRMaW5rT3JUaHJvdyhmaWxlbmFtZSwgJ3N0YXQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAvLyBTaWxlbnRseSBpZ25vcmUgbWlzc2luZyBwYXRocyBpZiBmb3JjZSBvcHRpb24gaXMgdHJ1ZVxuICAgICAgICAgICAgICAgIGlmIChlcnIuY29kZSA9PT0gXCJFTk9FTlRcIiAvKiBFUlJPUl9DT0RFLkVOT0VOVCAqLyAmJiBmb3JjZSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxpbmsuZ2V0Tm9kZSgpLmlzRGlyZWN0b3J5KCkgJiYgIXJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICAgICB0aHJvdyAoMCwgdXRpbF8xLmNyZWF0ZUVycm9yKShcIkVSUl9GU19FSVNESVJcIiAvKiBFUlJPUl9DT0RFLkVSUl9GU19FSVNESVIgKi8sICdybScsIGZpbGVuYW1lKTtcbiAgICAgICAgICAgIGlmICghbGluay5wYXJlbnQ/LmdldE5vZGUoKS5jYW5Xcml0ZSgpKVxuICAgICAgICAgICAgICAgIHRocm93ICgwLCB1dGlsXzEuY3JlYXRlRXJyb3IpKFwiRUFDQ0VTXCIgLyogRVJST1JfQ09ERS5FQUNDRVMgKi8sICdybScsIGZpbGVuYW1lKTtcbiAgICAgICAgICAgIHRoaXMuZGVsZXRlTGluayhsaW5rKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jbG9zZSA9IChmZCkgPT4ge1xuICAgICAgICAgICAgKDAsIHV0aWxfMS52YWxpZGF0ZUZkKShmZCk7XG4gICAgICAgICAgICBjb25zdCBmaWxlID0gdGhpcy5nZXRGaWxlQnlGZE9yVGhyb3coZmQsICdjbG9zZScpO1xuICAgICAgICAgICAgdGhpcy5jbG9zZUZpbGUoZmlsZSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucHJvY2VzcyA9IG9wdHMucHJvY2VzcyA/PyBwcm9jZXNzXzEuZGVmYXVsdDtcbiAgICAgICAgY29uc3Qgcm9vdCA9IHRoaXMuY3JlYXRlTGluaygpO1xuICAgICAgICByb290LnNldE5vZGUodGhpcy5jcmVhdGVOb2RlKGZzX25vZGVfdXRpbHNfMS5jb25zdGFudHMuU19JRkRJUiB8IDBvNzc3KSk7XG4gICAgICAgIHJvb3Quc2V0Q2hpbGQoJy4nLCByb290KTtcbiAgICAgICAgcm9vdC5nZXROb2RlKCkubmxpbmsrKztcbiAgICAgICAgcm9vdC5zZXRDaGlsZCgnLi4nLCByb290KTtcbiAgICAgICAgcm9vdC5nZXROb2RlKCkubmxpbmsrKztcbiAgICAgICAgdGhpcy5yb290ID0gcm9vdDtcbiAgICB9XG4gICAgY3JlYXRlTGluayhwYXJlbnQsIG5hbWUsIGlzRGlyZWN0b3J5ID0gZmFsc2UsIG1vZGUpIHtcbiAgICAgICAgaWYgKCFwYXJlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgTGlua18xLkxpbmsodGhpcywgdm9pZCAwLCAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFuYW1lKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NyZWF0ZUxpbms6IG5hbWUgY2Fubm90IGJlIGVtcHR5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgbm8gZXhwbGljaXQgcGVybWlzc2lvbiBpcyBwcm92aWRlZCwgdXNlIGRlZmF1bHRzIGJhc2VkIG9uIHR5cGVcbiAgICAgICAgY29uc3QgZmluYWxQZXJtID0gbW9kZSA/PyAoaXNEaXJlY3RvcnkgPyAwbzc3NyA6IDBvNjY2KTtcbiAgICAgICAgLy8gVG8gcHJldmVudCBtYWtpbmcgYSBicmVha2luZyBjaGFuZ2UsIGBtb2RlYCBjYW4gYWxzbyBqdXN0IGJlIGEgcGVybWlzc2lvbiBudW1iZXJcbiAgICAgICAgLy8gYW5kIHRoZSBmaWxlIHR5cGUgaXMgc2V0IGJhc2VkIG9uIGBpc0RpcmVjdG9yeWBcbiAgICAgICAgY29uc3QgaGFzRmlsZVR5cGUgPSBtb2RlICYmIG1vZGUgJiBmc19ub2RlX3V0aWxzXzEuY29uc3RhbnRzLlNfSUZNVDtcbiAgICAgICAgY29uc3QgbW9kZVR5cGUgPSBoYXNGaWxlVHlwZSA/IG1vZGUgJiBmc19ub2RlX3V0aWxzXzEuY29uc3RhbnRzLlNfSUZNVCA6IGlzRGlyZWN0b3J5ID8gZnNfbm9kZV91dGlsc18xLmNvbnN0YW50cy5TX0lGRElSIDogZnNfbm9kZV91dGlsc18xLmNvbnN0YW50cy5TX0lGUkVHO1xuICAgICAgICBjb25zdCBmaW5hbE1vZGUgPSAoZmluYWxQZXJtICYgfmZzX25vZGVfdXRpbHNfMS5jb25zdGFudHMuU19JRk1UKSB8IG1vZGVUeXBlO1xuICAgICAgICByZXR1cm4gcGFyZW50LmNyZWF0ZUNoaWxkKG5hbWUsIHRoaXMuY3JlYXRlTm9kZShmaW5hbE1vZGUpKTtcbiAgICB9XG4gICAgZGVsZXRlTGluayhsaW5rKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IGxpbmsucGFyZW50O1xuICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICBwYXJlbnQuZGVsZXRlQ2hpbGQobGluayk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIG5ld0lub051bWJlcigpIHtcbiAgICAgICAgY29uc3QgcmVsZWFzZWRGZCA9IHRoaXMucmVsZWFzZWRJbm9zLnBvcCgpO1xuICAgICAgICBpZiAocmVsZWFzZWRGZClcbiAgICAgICAgICAgIHJldHVybiByZWxlYXNlZEZkO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW5vID0gKHRoaXMuaW5vICsgMSkgJSAweGZmZmZmZmZmO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5vO1xuICAgICAgICB9XG4gICAgfVxuICAgIG5ld0ZkTnVtYmVyKCkge1xuICAgICAgICBjb25zdCByZWxlYXNlZEZkID0gdGhpcy5yZWxlYXNlZEZkcy5wb3AoKTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiByZWxlYXNlZEZkID09PSAnbnVtYmVyJyA/IHJlbGVhc2VkRmQgOiBTdXBlcmJsb2NrLmZkLS07XG4gICAgfVxuICAgIGNyZWF0ZU5vZGUobW9kZSkge1xuICAgICAgICBjb25zdCB1aWQgPSB0aGlzLnByb2Nlc3MuZ2V0dWlkPy4oKSA/PyAwO1xuICAgICAgICBjb25zdCBnaWQgPSB0aGlzLnByb2Nlc3MuZ2V0Z2lkPy4oKSA/PyAwO1xuICAgICAgICBjb25zdCBub2RlID0gbmV3IE5vZGVfMS5Ob2RlKHRoaXMubmV3SW5vTnVtYmVyKCksIG1vZGUsIHVpZCwgZ2lkKTtcbiAgICAgICAgdGhpcy5pbm9kZXNbbm9kZS5pbm9dID0gbm9kZTtcbiAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuICAgIGRlbGV0ZU5vZGUobm9kZSkge1xuICAgICAgICBub2RlLmRlbCgpO1xuICAgICAgICBkZWxldGUgdGhpcy5pbm9kZXNbbm9kZS5pbm9dO1xuICAgICAgICB0aGlzLnJlbGVhc2VkSW5vcy5wdXNoKG5vZGUuaW5vKTtcbiAgICB9XG4gICAgd2FsayhzdGVwc09yRmlsZW5hbWVPckxpbmssIHJlc29sdmVTeW1saW5rcyA9IGZhbHNlLCBjaGVja0V4aXN0ZW5jZSA9IGZhbHNlLCBjaGVja0FjY2VzcyA9IGZhbHNlLCBmdW5jTmFtZSkge1xuICAgICAgICBsZXQgc3RlcHM7XG4gICAgICAgIGxldCBmaWxlbmFtZTtcbiAgICAgICAgaWYgKHN0ZXBzT3JGaWxlbmFtZU9yTGluayBpbnN0YW5jZW9mIExpbmtfMS5MaW5rKSB7XG4gICAgICAgICAgICBzdGVwcyA9IHN0ZXBzT3JGaWxlbmFtZU9yTGluay5zdGVwcztcbiAgICAgICAgICAgIGZpbGVuYW1lID0gcGF0aFNlcCArIHN0ZXBzLmpvaW4ocGF0aFNlcCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIHN0ZXBzT3JGaWxlbmFtZU9yTGluayA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHN0ZXBzID0gKDAsIHV0aWxfMS5maWxlbmFtZVRvU3RlcHMpKHN0ZXBzT3JGaWxlbmFtZU9yTGluayk7XG4gICAgICAgICAgICBmaWxlbmFtZSA9IHN0ZXBzT3JGaWxlbmFtZU9yTGluaztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHN0ZXBzID0gc3RlcHNPckZpbGVuYW1lT3JMaW5rO1xuICAgICAgICAgICAgZmlsZW5hbWUgPSBwYXRoU2VwICsgc3RlcHMuam9pbihwYXRoU2VwKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgY3VyciA9IHRoaXMucm9vdDtcbiAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICBjb25zdCB1aWQgPSB0aGlzLnByb2Nlc3MuZ2V0dWlkPy4oKSA/PyAwO1xuICAgICAgICBjb25zdCBnaWQgPSB0aGlzLnByb2Nlc3MuZ2V0Z2lkPy4oKSA/PyAwO1xuICAgICAgICB3aGlsZSAoaSA8IHN0ZXBzLmxlbmd0aCkge1xuICAgICAgICAgICAgbGV0IG5vZGUgPSBjdXJyLmdldE5vZGUoKTtcbiAgICAgICAgICAgIC8vIENoZWNrIGFjY2VzcyBwZXJtaXNzaW9ucyBpZiBjdXJyZW50IGxpbmsgaXMgYSBkaXJlY3RvcnlcbiAgICAgICAgICAgIGlmIChub2RlLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2hlY2tBY2Nlc3MgJiYgIW5vZGUuY2FuRXhlY3V0ZSh1aWQsIGdpZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwLCByZXN1bHRfMS5FcnIpKCgwLCB1dGlsXzEuY3JlYXRlU3RhdEVycm9yKShcIkVBQ0NFU1wiIC8qIEVSUk9SX0NPREUuRUFDQ0VTICovLCBmdW5jTmFtZSwgZmlsZW5hbWUpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoaSA8IHN0ZXBzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwLCByZXN1bHRfMS5FcnIpKCgwLCB1dGlsXzEuY3JlYXRlU3RhdEVycm9yKShcIkVOT1RESVJcIiAvKiBFUlJPUl9DT0RFLkVOT1RESVIgKi8sIGZ1bmNOYW1lLCBmaWxlbmFtZSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGN1cnIgPSBjdXJyLmdldENoaWxkKHN0ZXBzW2ldKSA/PyBudWxsO1xuICAgICAgICAgICAgLy8gQ2hlY2sgZXhpc3RlbmNlIG9mIGN1cnJlbnQgbGlua1xuICAgICAgICAgICAgaWYgKCFjdXJyKVxuICAgICAgICAgICAgICAgIGlmIChjaGVja0V4aXN0ZW5jZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDAsIHJlc3VsdF8xLkVycikoKDAsIHV0aWxfMS5jcmVhdGVTdGF0RXJyb3IpKFwiRU5PRU5UXCIgLyogRVJST1JfQ09ERS5FTk9FTlQgKi8sIGZ1bmNOYW1lLCBmaWxlbmFtZSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwLCByZXN1bHRfMS5PaykobnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgbm9kZSA9IGN1cnI/LmdldE5vZGUoKTtcbiAgICAgICAgICAgIC8vIFJlc29sdmUgc3ltbGluayBpZiB3ZSdyZSByZXNvbHZpbmcgYWxsIHN5bWxpbmtzIE9SIGlmIHRoaXMgaXMgYW4gaW50ZXJtZWRpYXRlIHBhdGggY29tcG9uZW50XG4gICAgICAgICAgICAvLyBUaGlzIGFsbG93cyBsc3RhdCB0byB0cmF2ZXJzZSB0aHJvdWdoIHN5bWxpbmtzIGluIGludGVybWVkaWF0ZSBkaXJlY3RvcmllcyB3aGlsZSBub3QgcmVzb2x2aW5nIHRoZSBmaW5hbCBjb21wb25lbnRcbiAgICAgICAgICAgIGlmIChub2RlLmlzU3ltbGluaygpICYmIChyZXNvbHZlU3ltbGlua3MgfHwgaSA8IHN0ZXBzLmxlbmd0aCAtIDEpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWRQYXRoID0gKDAsIHBhdGhfMS5pc0Fic29sdXRlKShub2RlLnN5bWxpbmspID8gbm9kZS5zeW1saW5rIDogcGF0aEpvaW4oKDAsIHBhdGhfMS5kaXJuYW1lKShjdXJyLmdldFBhdGgoKSksIG5vZGUuc3ltbGluayk7IC8vIFJlbGF0aXZlIHRvIHN5bWxpbmsncyBwYXJlbnRcbiAgICAgICAgICAgICAgICBzdGVwcyA9ICgwLCB1dGlsXzEuZmlsZW5hbWVUb1N0ZXBzKShyZXNvbHZlZFBhdGgpLmNvbmNhdChzdGVwcy5zbGljZShpICsgMSkpO1xuICAgICAgICAgICAgICAgIGN1cnIgPSB0aGlzLnJvb3Q7XG4gICAgICAgICAgICAgICAgaSA9IDA7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBBZnRlciByZXNvbHZpbmcgc3ltbGlua3MsIGNoZWNrIGlmIGl0J3Mgbm90IGEgZGlyZWN0b3J5IGFuZCB3ZSBzdGlsbCBoYXZlIG1vcmUgc3RlcHNcbiAgICAgICAgICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZSB3ZSB0cnkgdG8gdHJhdmVyc2UgdGhyb3VnaCBhIGZpbGVcbiAgICAgICAgICAgIC8vIE9ubHkgZG8gdGhpcyBjaGVjayB3aGVuIHdlJ3JlIGRvaW5nIGZpbGVzeXN0ZW0gb3BlcmF0aW9ucyAoY2hlY2tFeGlzdGVuY2UgPSB0cnVlKVxuICAgICAgICAgICAgaWYgKGNoZWNrRXhpc3RlbmNlICYmICFub2RlLmlzRGlyZWN0b3J5KCkgJiYgaSA8IHN0ZXBzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAvLyBPbiBXaW5kb3dzLCB1c2UgRU5PRU5UIGZvciBjb25zaXN0ZW5jeSB3aXRoIE5vZGUuanMgYmVoYXZpb3JcbiAgICAgICAgICAgICAgICAvLyBPbiBvdGhlciBwbGF0Zm9ybXMsIHVzZSBFTk9URElSIHdoaWNoIGlzIG1vcmUgc2VtYW50aWNhbGx5IGNvcnJlY3RcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvckNvZGUgPSB0aGlzLnByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyBcIkVOT0VOVFwiIC8qIEVSUk9SX0NPREUuRU5PRU5UICovIDogXCJFTk9URElSXCIgLyogRVJST1JfQ09ERS5FTk9URElSICovO1xuICAgICAgICAgICAgICAgIHJldHVybiAoMCwgcmVzdWx0XzEuRXJyKSgoMCwgdXRpbF8xLmNyZWF0ZVN0YXRFcnJvcikoZXJyb3JDb2RlLCBmdW5jTmFtZSwgZmlsZW5hbWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKDAsIHJlc3VsdF8xLk9rKShjdXJyKTtcbiAgICB9XG4gICAgLy8gUmV0dXJucyBhIGBMaW5rYCAoaGFyZCBsaW5rKSByZWZlcmVuY2VkIGJ5IHBhdGggXCJzcGxpdFwiIGludG8gc3RlcHMuXG4gICAgZ2V0TGluayhzdGVwcykge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLndhbGsoc3RlcHMsIGZhbHNlLCBmYWxzZSwgZmFsc2UpO1xuICAgICAgICBpZiAocmVzdWx0Lm9rKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IHJlc3VsdC5lcnIudG9FcnJvcigpO1xuICAgIH1cbiAgICAvLyBKdXN0IGxpbmsgYGdldExpbmtgLCBidXQgdGhyb3dzIGEgY29ycmVjdCB1c2VyIGVycm9yLCBpZiBsaW5rIHRvIGZvdW5kLlxuICAgIGdldExpbmtPclRocm93KGZpbGVuYW1lLCBmdW5jTmFtZSkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLndhbGsoZmlsZW5hbWUsIGZhbHNlLCB0cnVlLCB0cnVlLCBmdW5jTmFtZSk7XG4gICAgICAgIGlmIChyZXN1bHQub2spIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgcmVzdWx0LmVyci50b0Vycm9yKCk7XG4gICAgfVxuICAgIC8vIEp1c3QgbGlrZSBgZ2V0TGlua2AsIGJ1dCBhbHNvIGRlcmVmZXJlbmNlL3Jlc29sdmVzIHN5bWJvbGljIGxpbmtzLlxuICAgIGdldFJlc29sdmVkTGluayhmaWxlbmFtZU9yU3RlcHMpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy53YWxrKGZpbGVuYW1lT3JTdGVwcywgdHJ1ZSwgZmFsc2UsIGZhbHNlKTtcbiAgICAgICAgaWYgKHJlc3VsdC5vaykge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyByZXN1bHQuZXJyLnRvRXJyb3IoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSnVzdCBsaWtlIGBnZXRMaW5rT3JUaHJvd2AsIGJ1dCBhbHNvIGRlcmVmZXJlbmNlL3Jlc29sdmVzIHN5bWJvbGljIGxpbmtzLlxuICAgICAqL1xuICAgIGdldFJlc29sdmVkTGlua09yVGhyb3coZmlsZW5hbWUsIGZ1bmNOYW1lKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMud2FsayhmaWxlbmFtZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZnVuY05hbWUpO1xuICAgICAgICBpZiAocmVzdWx0Lm9rKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IHJlc3VsdC5lcnIudG9FcnJvcigpO1xuICAgIH1cbiAgICBnZXRSZXNvbHZlZExpbmtSZXN1bHQoZmlsZW5hbWUsIGZ1bmNOYW1lKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMud2FsayhmaWxlbmFtZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZnVuY05hbWUpO1xuICAgICAgICBpZiAocmVzdWx0Lm9rKSB7XG4gICAgICAgICAgICByZXR1cm4gKDAsIHJlc3VsdF8xLk9rKShyZXN1bHQudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIHJlc29sdmVTeW1saW5rcyhsaW5rKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFJlc29sdmVkTGluayhsaW5rLnN0ZXBzLnNsaWNlKDEpKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSnVzdCBsaWtlIGBnZXRMaW5rT3JUaHJvd2AsIGJ1dCBhbHNvIHZlcmlmaWVzIHRoYXQgdGhlIGxpbmsgaXMgYSBkaXJlY3RvcnkuXG4gICAgICovXG4gICAgZ2V0TGlua0FzRGlyT3JUaHJvdyhmaWxlbmFtZSwgZnVuY05hbWUpIHtcbiAgICAgICAgY29uc3QgbGluayA9IHRoaXMuZ2V0TGlua09yVGhyb3coZmlsZW5hbWUsIGZ1bmNOYW1lKTtcbiAgICAgICAgaWYgKCFsaW5rLmdldE5vZGUoKS5pc0RpcmVjdG9yeSgpKVxuICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoXCJFTk9URElSXCIgLyogRVJST1JfQ09ERS5FTk9URElSICovLCBmdW5jTmFtZSwgZmlsZW5hbWUpO1xuICAgICAgICByZXR1cm4gbGluaztcbiAgICB9XG4gICAgLy8gR2V0IHRoZSBpbW1lZGlhdGUgcGFyZW50IGRpcmVjdG9yeSBvZiB0aGUgbGluay5cbiAgICBnZXRMaW5rUGFyZW50KHN0ZXBzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldExpbmsoc3RlcHMuc2xpY2UoMCwgLTEpKTtcbiAgICB9XG4gICAgZ2V0TGlua1BhcmVudEFzRGlyT3JUaHJvdyhmaWxlbmFtZU9yU3RlcHMsIGZ1bmNOYW1lKSB7XG4gICAgICAgIGNvbnN0IHN0ZXBzID0gKGZpbGVuYW1lT3JTdGVwcyBpbnN0YW5jZW9mIEFycmF5ID8gZmlsZW5hbWVPclN0ZXBzIDogKDAsIHV0aWxfMS5maWxlbmFtZVRvU3RlcHMpKGZpbGVuYW1lT3JTdGVwcykpLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgY29uc3QgZmlsZW5hbWUgPSBwYXRoU2VwICsgc3RlcHMuam9pbihwYXRoU2VwKTtcbiAgICAgICAgY29uc3QgbGluayA9IHRoaXMuZ2V0TGlua09yVGhyb3coZmlsZW5hbWUsIGZ1bmNOYW1lKTtcbiAgICAgICAgaWYgKCFsaW5rLmdldE5vZGUoKS5pc0RpcmVjdG9yeSgpKVxuICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoXCJFTk9URElSXCIgLyogRVJST1JfQ09ERS5FTk9URElSICovLCBmdW5jTmFtZSwgZmlsZW5hbWUpO1xuICAgICAgICByZXR1cm4gbGluaztcbiAgICB9XG4gICAgZ2V0RmlsZUJ5RmQoZmQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmRzW1N0cmluZyhmZCldO1xuICAgIH1cbiAgICBnZXRGaWxlQnlGZE9yVGhyb3coZmQsIGZ1bmNOYW1lKSB7XG4gICAgICAgIGlmICghKDAsIHV0aWxfMS5pc0ZkKShmZCkpXG4gICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoZnNfbm9kZV91dGlsc18yLkVSUlNUUi5GRCk7XG4gICAgICAgIGNvbnN0IGZpbGUgPSB0aGlzLmdldEZpbGVCeUZkKGZkKTtcbiAgICAgICAgaWYgKCFmaWxlKVxuICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoXCJFQkFERlwiIC8qIEVSUk9SX0NPREUuRUJBREYgKi8sIGZ1bmNOYW1lKTtcbiAgICAgICAgcmV0dXJuIGZpbGU7XG4gICAgfVxuICAgIF90b0pTT04obGluayA9IHRoaXMucm9vdCwganNvbiA9IHt9LCBwYXRoLCBhc0J1ZmZlcikge1xuICAgICAgICBsZXQgaXNFbXB0eSA9IHRydWU7XG4gICAgICAgIGxldCBjaGlsZHJlbiA9IGxpbmsuY2hpbGRyZW47XG4gICAgICAgIGlmIChsaW5rLmdldE5vZGUoKS5pc0ZpbGUoKSkge1xuICAgICAgICAgICAgY2hpbGRyZW4gPSBuZXcgTWFwKFtbbGluay5nZXROYW1lKCksIGxpbmsucGFyZW50LmdldENoaWxkKGxpbmsuZ2V0TmFtZSgpKV1dKTtcbiAgICAgICAgICAgIGxpbmsgPSBsaW5rLnBhcmVudDtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgY2hpbGRyZW4ua2V5cygpKSB7XG4gICAgICAgICAgICBpZiAobmFtZSA9PT0gJy4nIHx8IG5hbWUgPT09ICcuLicpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlzRW1wdHkgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gbGluay5nZXRDaGlsZChuYW1lKTtcbiAgICAgICAgICAgIGlmICghY2hpbGQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ190b0pTT046IHVuZXhwZWN0ZWQgdW5kZWZpbmVkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBub2RlID0gY2hpbGQuZ2V0Tm9kZSgpO1xuICAgICAgICAgICAgaWYgKG5vZGUuaXNGaWxlKCkpIHtcbiAgICAgICAgICAgICAgICBsZXQgZmlsZW5hbWUgPSBjaGlsZC5nZXRQYXRoKCk7XG4gICAgICAgICAgICAgICAgaWYgKHBhdGgpXG4gICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gcGF0aFJlbGF0aXZlKHBhdGgsIGZpbGVuYW1lKTtcbiAgICAgICAgICAgICAgICBqc29uW2ZpbGVuYW1lXSA9IGFzQnVmZmVyID8gbm9kZS5nZXRCdWZmZXIoKSA6IG5vZGUuZ2V0U3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChub2RlLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90b0pTT04oY2hpbGQsIGpzb24sIHBhdGgsIGFzQnVmZmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgZGlyUGF0aCA9IGxpbmsuZ2V0UGF0aCgpO1xuICAgICAgICBpZiAocGF0aClcbiAgICAgICAgICAgIGRpclBhdGggPSBwYXRoUmVsYXRpdmUocGF0aCwgZGlyUGF0aCk7XG4gICAgICAgIGlmIChkaXJQYXRoICYmIGlzRW1wdHkpIHtcbiAgICAgICAgICAgIGpzb25bZGlyUGF0aF0gPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBqc29uO1xuICAgIH1cbiAgICB0b0pTT04ocGF0aHMsIGpzb24gPSB7fSwgaXNSZWxhdGl2ZSA9IGZhbHNlLCBhc0J1ZmZlciA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IGxpbmtzID0gW107XG4gICAgICAgIGlmIChwYXRocykge1xuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHBhdGhzKSlcbiAgICAgICAgICAgICAgICBwYXRocyA9IFtwYXRoc107XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBhdGggb2YgcGF0aHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlbmFtZSA9ICgwLCB1dGlsXzEucGF0aFRvRmlsZW5hbWUpKHBhdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmsgPSB0aGlzLmdldFJlc29sdmVkTGluayhmaWxlbmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKCFsaW5rKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBsaW5rcy5wdXNoKGxpbmspO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbGlua3MucHVzaCh0aGlzLnJvb3QpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghbGlua3MubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuIGpzb247XG4gICAgICAgIGZvciAoY29uc3QgbGluayBvZiBsaW5rcylcbiAgICAgICAgICAgIHRoaXMuX3RvSlNPTihsaW5rLCBqc29uLCBpc1JlbGF0aXZlID8gbGluay5nZXRQYXRoKCkgOiAnJywgYXNCdWZmZXIpO1xuICAgICAgICByZXR1cm4ganNvbjtcbiAgICB9XG4gICAgZnJvbUpTT04oanNvbiwgY3dkID0gdGhpcy5wcm9jZXNzLmN3ZCgpKSB7XG4gICAgICAgIGZvciAobGV0IGZpbGVuYW1lIGluIGpzb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBqc29uW2ZpbGVuYW1lXTtcbiAgICAgICAgICAgIGZpbGVuYW1lID0gKDAsIHV0aWxfMS5yZXNvbHZlKShmaWxlbmFtZSwgY3dkKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycgfHwgZGF0YSBpbnN0YW5jZW9mIGJ1ZmZlcl8xLkJ1ZmZlcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpciA9ICgwLCBwYXRoXzEuZGlybmFtZSkoZmlsZW5hbWUpO1xuICAgICAgICAgICAgICAgIHRoaXMubWtkaXJwKGRpciwgNTExIC8qIE1PREUuRElSICovKTtcbiAgICAgICAgICAgICAgICBjb25zdCBidWZmZXIgPSAoMCwgdXRpbF8xLmRhdGFUb0J1ZmZlcikoZGF0YSk7XG4gICAgICAgICAgICAgICAgdGhpcy53cml0ZUZpbGUoZmlsZW5hbWUsIGJ1ZmZlciwgZnNfbm9kZV91dGlsc18yLkZMQUdTLncsIDQzOCAvKiBNT0RFLkRFRkFVTFQgKi8pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ta2RpcnAoZmlsZW5hbWUsIDUxMSAvKiBNT0RFLkRJUiAqLyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnJvbU5lc3RlZEpTT04oanNvbiwgY3dkKSB7XG4gICAgICAgIHRoaXMuZnJvbUpTT04oKDAsIGpzb25fMS5mbGF0dGVuSlNPTikoanNvbiksIGN3ZCk7XG4gICAgfVxuICAgIHJlc2V0KCkge1xuICAgICAgICB0aGlzLmlubyA9IDA7XG4gICAgICAgIHRoaXMuaW5vZGVzID0ge307XG4gICAgICAgIHRoaXMucmVsZWFzZWRJbm9zID0gW107XG4gICAgICAgIHRoaXMuZmRzID0ge307XG4gICAgICAgIHRoaXMucmVsZWFzZWRGZHMgPSBbXTtcbiAgICAgICAgdGhpcy5vcGVuRmlsZXMgPSAwO1xuICAgICAgICB0aGlzLnJvb3QgPSB0aGlzLmNyZWF0ZUxpbmsoKTtcbiAgICAgICAgdGhpcy5yb290LnNldE5vZGUodGhpcy5jcmVhdGVOb2RlKGZzX25vZGVfdXRpbHNfMS5jb25zdGFudHMuU19JRkRJUiB8IDBvNzc3KSk7XG4gICAgfVxuICAgIC8vIExlZ2FjeSBpbnRlcmZhY2VcbiAgICBtb3VudFN5bmMobW91bnRwb2ludCwganNvbikge1xuICAgICAgICB0aGlzLmZyb21KU09OKGpzb24sIG1vdW50cG9pbnQpO1xuICAgIH1cbiAgICBvcGVuTGluayhsaW5rLCBmbGFnc051bSwgcmVzb2x2ZVN5bWxpbmtzID0gdHJ1ZSkge1xuICAgICAgICBpZiAodGhpcy5vcGVuRmlsZXMgPj0gdGhpcy5tYXhGaWxlcykge1xuICAgICAgICAgICAgLy8gVG9vIG1hbnkgb3BlbiBmaWxlcy5cbiAgICAgICAgICAgIHRocm93ICgwLCB1dGlsXzEuY3JlYXRlRXJyb3IpKFwiRU1GSUxFXCIgLyogRVJST1JfQ09ERS5FTUZJTEUgKi8sICdvcGVuJywgbGluay5nZXRQYXRoKCkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlc29sdmUgc3ltbGlua3MuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIEBUT0RPOiBUaGlzIHNob3VsZCBiZSBzdXBlcmZsdW91cy4gVGhpcyBtZXRob2QgaXMgb25seSBldmVyIGNhbGxlZCBieSBvcGVuRmlsZSgpLCB3aGljaCBkb2VzIGl0cyBvd24gc3ltbGluayByZXNvbHV0aW9uXG4gICAgICAgIC8vIHByaW9yIHRvIGNhbGxpbmcuXG4gICAgICAgIGxldCByZWFsTGluayA9IGxpbms7XG4gICAgICAgIGlmIChyZXNvbHZlU3ltbGlua3MpXG4gICAgICAgICAgICByZWFsTGluayA9IHRoaXMuZ2V0UmVzb2x2ZWRMaW5rT3JUaHJvdyhsaW5rLmdldFBhdGgoKSwgJ29wZW4nKTtcbiAgICAgICAgY29uc3Qgbm9kZSA9IHJlYWxMaW5rLmdldE5vZGUoKTtcbiAgICAgICAgLy8gQ2hlY2sgd2hldGhlciBub2RlIGlzIGEgZGlyZWN0b3J5XG4gICAgICAgIGlmIChub2RlLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICAgIGlmICgoZmxhZ3NOdW0gJiAoT19SRE9OTFkgfCBPX1JEV1IgfCBPX1dST05MWSkpICE9PSBPX1JET05MWSlcbiAgICAgICAgICAgICAgICB0aHJvdyAoMCwgdXRpbF8xLmNyZWF0ZUVycm9yKShcIkVJU0RJUlwiIC8qIEVSUk9SX0NPREUuRUlTRElSICovLCAnb3BlbicsIGxpbmsuZ2V0UGF0aCgpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChmbGFnc051bSAmIE9fRElSRUNUT1JZKVxuICAgICAgICAgICAgICAgIHRocm93ICgwLCB1dGlsXzEuY3JlYXRlRXJyb3IpKFwiRU5PVERJUlwiIC8qIEVSUk9SX0NPREUuRU5PVERJUiAqLywgJ29wZW4nLCBsaW5rLmdldFBhdGgoKSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ2hlY2sgbm9kZSBwZXJtaXNzaW9uc1xuICAgICAgICAvLyBGb3IgcmVhZCBhY2Nlc3M6IGNoZWNrIGlmIGZsYWdzIGFyZSBPX1JET05MWSBvciBPX1JEV1IgKGkuZS4sIG5vdCBvbmx5IE9fV1JPTkxZKVxuICAgICAgICBpZiAoKGZsYWdzTnVtICYgKE9fUkRPTkxZIHwgT19SRFdSIHwgT19XUk9OTFkpKSAhPT0gT19XUk9OTFkpIHtcbiAgICAgICAgICAgIGlmICghbm9kZS5jYW5SZWFkKCkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyAoMCwgdXRpbF8xLmNyZWF0ZUVycm9yKShcIkVBQ0NFU1wiIC8qIEVSUk9SX0NPREUuRUFDQ0VTICovLCAnb3BlbicsIGxpbmsuZ2V0UGF0aCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBGb3Igd3JpdGUgYWNjZXNzOiBjaGVjayBpZiBmbGFncyBhcmUgT19XUk9OTFkgb3IgT19SRFdSXG4gICAgICAgIGlmIChmbGFnc051bSAmIChPX1dST05MWSB8IE9fUkRXUikpIHtcbiAgICAgICAgICAgIGlmICghbm9kZS5jYW5Xcml0ZSgpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoXCJFQUNDRVNcIiAvKiBFUlJPUl9DT0RFLkVBQ0NFUyAqLywgJ29wZW4nLCBsaW5rLmdldFBhdGgoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmlsZSA9IG5ldyBGaWxlXzEuRmlsZShsaW5rLCBub2RlLCBmbGFnc051bSwgdGhpcy5uZXdGZE51bWJlcigpKTtcbiAgICAgICAgdGhpcy5mZHNbZmlsZS5mZF0gPSBmaWxlO1xuICAgICAgICB0aGlzLm9wZW5GaWxlcysrO1xuICAgICAgICBpZiAoZmxhZ3NOdW0gJiBPX1RSVU5DKVxuICAgICAgICAgICAgZmlsZS50cnVuY2F0ZSgpO1xuICAgICAgICByZXR1cm4gZmlsZTtcbiAgICB9XG4gICAgb3BlbkZpbGUoZmlsZW5hbWUsIGZsYWdzTnVtLCBtb2RlTnVtLCByZXNvbHZlU3ltbGlua3MgPSB0cnVlKSB7XG4gICAgICAgIGNvbnN0IHN0ZXBzID0gKDAsIHV0aWxfMS5maWxlbmFtZVRvU3RlcHMpKGZpbGVuYW1lKTtcbiAgICAgICAgbGV0IGxpbms7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsaW5rID0gcmVzb2x2ZVN5bWxpbmtzID8gdGhpcy5nZXRSZXNvbHZlZExpbmtPclRocm93KGZpbGVuYW1lLCAnb3BlbicpIDogdGhpcy5nZXRMaW5rT3JUaHJvdyhmaWxlbmFtZSwgJ29wZW4nKTtcbiAgICAgICAgICAgIC8vIENoZWNrIGlmIGZpbGUgYWxyZWFkeSBleGlzdGVkIHdoZW4gdHJ5aW5nIHRvIGNyZWF0ZSBpdCBleGNsdXNpdmVseSAoT19DUkVBVCBhbmQgT19FWENMIGZsYWdzIGFyZSBzZXQpLlxuICAgICAgICAgICAgLy8gVGhpcyBpcyBhbiBlcnJvciwgc2VlIGh0dHBzOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDA5Njk1Mzk5L2Z1bmN0aW9ucy9vcGVuLmh0bWw6XG4gICAgICAgICAgICAvLyBcIklmIE9fQ1JFQVQgYW5kIE9fRVhDTCBhcmUgc2V0LCBvcGVuKCkgc2hhbGwgZmFpbCBpZiB0aGUgZmlsZSBleGlzdHMuXCJcbiAgICAgICAgICAgIGlmIChsaW5rICYmIGZsYWdzTnVtICYgT19DUkVBVCAmJiBmbGFnc051bSAmIE9fRVhDTClcbiAgICAgICAgICAgICAgICB0aHJvdyAoMCwgdXRpbF8xLmNyZWF0ZUVycm9yKShcIkVFWElTVFwiIC8qIEVSUk9SX0NPREUuRUVYSVNUICovLCAnb3BlbicsIGZpbGVuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAvLyBUcnkgY3JlYXRpbmcgYSBuZXcgZmlsZSwgaWYgaXQgZG9lcyBub3QgZXhpc3QgYW5kIE9fQ1JFQVQgZmxhZyBpcyBzZXQuXG4gICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyB3aWxsIHN0aWxsIHRocm93IGlmIHRoZSBFTk9FTlQgY2FtZSBmcm9tIG9uZSBvZiB0aGVcbiAgICAgICAgICAgIC8vIGludGVybWVkaWF0ZSBkaXJlY3RvcmllcyBpbnN0ZWFkIG9mIHRoZSBmaWxlIGl0c2VsZi5cbiAgICAgICAgICAgIGlmIChlcnIuY29kZSA9PT0gXCJFTk9FTlRcIiAvKiBFUlJPUl9DT0RFLkVOT0VOVCAqLyAmJiBmbGFnc051bSAmIE9fQ1JFQVQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkaXJOYW1lID0gKDAsIHBhdGhfMS5kaXJuYW1lKShmaWxlbmFtZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlyTGluayA9IHRoaXMuZ2V0UmVzb2x2ZWRMaW5rT3JUaHJvdyhkaXJOYW1lKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkaXJOb2RlID0gZGlyTGluay5nZXROb2RlKCk7XG4gICAgICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgcGxhY2Ugd2UgY3JlYXRlIHRoZSBuZXcgZmlsZSBpcyBhY3R1YWxseSBhIGRpcmVjdG9yeSBhbmQgdGhhdCB3ZSBhcmUgYWxsb3dlZCB0byBkbyBzbzpcbiAgICAgICAgICAgICAgICBpZiAoIWRpck5vZGUuaXNEaXJlY3RvcnkoKSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoXCJFTk9URElSXCIgLyogRVJST1JfQ09ERS5FTk9URElSICovLCAnb3BlbicsIGZpbGVuYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoIWRpck5vZGUuY2FuRXhlY3V0ZSgpIHx8ICFkaXJOb2RlLmNhbldyaXRlKCkpXG4gICAgICAgICAgICAgICAgICAgIHRocm93ICgwLCB1dGlsXzEuY3JlYXRlRXJyb3IpKFwiRUFDQ0VTXCIgLyogRVJST1JfQ09ERS5FQUNDRVMgKi8sICdvcGVuJywgZmlsZW5hbWUpO1xuICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBkaWZmZXJlbmNlIHRvIHRoZSBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggd291bGQgc2ltcGx5IG5vdCBjcmVhdGUgYSBmaWxlIHVubGVzcyBtb2RlTnVtIHdhcyBzcGVjaWZpZWQuXG4gICAgICAgICAgICAgICAgLy8gSG93ZXZlciwgY3VycmVudCBOb2RlIHZlcnNpb25zIHdpbGwgZGVmYXVsdCB0byAwbzY2Ni5cbiAgICAgICAgICAgICAgICBtb2RlTnVtID8/IChtb2RlTnVtID0gMG82NjYpO1xuICAgICAgICAgICAgICAgIGxpbmsgPSB0aGlzLmNyZWF0ZUxpbmsoZGlyTGluaywgc3RlcHNbc3RlcHMubGVuZ3RoIC0gMV0sIGZhbHNlLCBtb2RlTnVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxpbmspXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcGVuTGluayhsaW5rLCBmbGFnc051bSwgcmVzb2x2ZVN5bWxpbmtzKTtcbiAgICAgICAgdGhyb3cgKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoXCJFTk9FTlRcIiAvKiBFUlJPUl9DT0RFLkVOT0VOVCAqLywgJ29wZW4nLCBmaWxlbmFtZSk7XG4gICAgfVxuICAgIGNsb3NlRmlsZShmaWxlKSB7XG4gICAgICAgIGlmICghdGhpcy5mZHNbZmlsZS5mZF0pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHRoaXMub3BlbkZpbGVzLS07XG4gICAgICAgIGRlbGV0ZSB0aGlzLmZkc1tmaWxlLmZkXTtcbiAgICAgICAgdGhpcy5yZWxlYXNlZEZkcy5wdXNoKGZpbGUuZmQpO1xuICAgIH1cbiAgICB3cml0ZShmZCwgYnVmLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pIHtcbiAgICAgICAgY29uc3QgZmlsZSA9IHRoaXMuZ2V0RmlsZUJ5RmRPclRocm93KGZkLCAnd3JpdGUnKTtcbiAgICAgICAgaWYgKGZpbGUubm9kZS5pc1N5bWxpbmsoKSkge1xuICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMS5jcmVhdGVFcnJvcikoXCJFQkFERlwiIC8qIEVSUk9SX0NPREUuRUJBREYgKi8sICd3cml0ZScsIGZpbGUubGluay5nZXRQYXRoKCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWxlLndyaXRlKGJ1Ziwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uID09PSAtMSB8fCB0eXBlb2YgcG9zaXRpb24gIT09ICdudW1iZXInID8gdW5kZWZpbmVkIDogcG9zaXRpb24pO1xuICAgIH1cbn1cbmV4cG9ydHMuU3VwZXJibG9jayA9IFN1cGVyYmxvY2s7XG4vKipcbiAqIEdsb2JhbCBmaWxlIGRlc2NyaXB0b3IgY291bnRlci4gVU5JWCBmaWxlIGRlc2NyaXB0b3JzIHN0YXJ0IGZyb20gMCBhbmQgZ28gc2VxdWVudGlhbGx5XG4gKiB1cCwgc28gaGVyZSwgaW4gb3JkZXIgbm90IHRvIGNvbmZsaWN0IHdpdGggdGhlbSwgd2UgY2hvb3NlIHNvbWUgYmlnIG51bWJlciBhbmQgZGVzY3JlYXNlXG4gKiB0aGUgZmlsZSBkZXNjcmlwdG9yIG9mIGV2ZXJ5IG5ldyBvcGVuZWQgZmlsZS5cbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAdG9kbyBUaGlzIHNob3VsZCBub3QgYmUgc3RhdGljLCByaWdodD9cbiAqL1xuU3VwZXJibG9jay5mZCA9IDB4N2ZmZmZmZmY7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TdXBlcmJsb2NrLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5yZXNvbHZlID0gZXhwb3J0cy5wYXRoVG9GaWxlbmFtZSA9IGV4cG9ydHMuY3JlYXRlU3RhdEVycm9yID0gZXhwb3J0cy5jcmVhdGVFcnJvciA9IGV4cG9ydHMudmFsaWRhdGVGZCA9IGV4cG9ydHMuaXNGZCA9IGV4cG9ydHMuZmlsZW5hbWVUb1N0ZXBzID0gZXhwb3J0cy5kYXRhVG9CdWZmZXIgPSBleHBvcnRzLlN1cGVyYmxvY2sgPSBleHBvcnRzLkZpbGUgPSBleHBvcnRzLkxpbmsgPSBleHBvcnRzLk5vZGUgPSB2b2lkIDA7XG5jb25zdCB0c2xpYl8xID0gcmVxdWlyZShcInRzbGliXCIpO1xudHNsaWJfMS5fX2V4cG9ydFN0YXIocmVxdWlyZShcIi4vdHlwZXNcIiksIGV4cG9ydHMpO1xudHNsaWJfMS5fX2V4cG9ydFN0YXIocmVxdWlyZShcIi4vanNvblwiKSwgZXhwb3J0cyk7XG50c2xpYl8xLl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9jb25zdGFudHNcIiksIGV4cG9ydHMpO1xudHNsaWJfMS5fX2V4cG9ydFN0YXIocmVxdWlyZShcIi4vcmVzdWx0XCIpLCBleHBvcnRzKTtcbnZhciBOb2RlXzEgPSByZXF1aXJlKFwiLi9Ob2RlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiTm9kZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gTm9kZV8xLk5vZGU7IH0gfSk7XG52YXIgTGlua18xID0gcmVxdWlyZShcIi4vTGlua1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkxpbmtcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIExpbmtfMS5MaW5rOyB9IH0pO1xudmFyIEZpbGVfMSA9IHJlcXVpcmUoXCIuL0ZpbGVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJGaWxlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBGaWxlXzEuRmlsZTsgfSB9KTtcbnZhciBTdXBlcmJsb2NrXzEgPSByZXF1aXJlKFwiLi9TdXBlcmJsb2NrXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiU3VwZXJibG9ja1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gU3VwZXJibG9ja18xLlN1cGVyYmxvY2s7IH0gfSk7XG52YXIgdXRpbF8xID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRhdGFUb0J1ZmZlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdXRpbF8xLmRhdGFUb0J1ZmZlcjsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImZpbGVuYW1lVG9TdGVwc1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdXRpbF8xLmZpbGVuYW1lVG9TdGVwczsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImlzRmRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHV0aWxfMS5pc0ZkOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwidmFsaWRhdGVGZFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdXRpbF8xLnZhbGlkYXRlRmQ7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJjcmVhdGVFcnJvclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdXRpbF8xLmNyZWF0ZUVycm9yOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiY3JlYXRlU3RhdEVycm9yXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB1dGlsXzEuY3JlYXRlU3RhdEVycm9yOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwicGF0aFRvRmlsZW5hbWVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHV0aWxfMS5wYXRoVG9GaWxlbmFtZTsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInJlc29sdmVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHV0aWxfMS5yZXNvbHZlOyB9IH0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlN0YXRzID0gdm9pZCAwO1xuY29uc3QgZnNfbm9kZV91dGlsc18xID0gcmVxdWlyZShcIkBqc29uam95LmNvbS9mcy1ub2RlLXV0aWxzXCIpO1xuY29uc3QgeyBTX0lGTVQsIFNfSUZESVIsIFNfSUZSRUcsIFNfSUZCTEssIFNfSUZDSFIsIFNfSUZMTkssIFNfSUZJRk8sIFNfSUZTT0NLIH0gPSBmc19ub2RlX3V0aWxzXzEuY29uc3RhbnRzO1xuLyoqXG4gKiBTdGF0aXN0aWNzIGFib3V0IGEgZmlsZS9kaXJlY3RvcnksIGxpa2UgYGZzLlN0YXRzYC5cbiAqL1xuY2xhc3MgU3RhdHMge1xuICAgIHN0YXRpYyBidWlsZChub2RlLCBiaWdpbnQgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCBzdGF0cyA9IG5ldyBTdGF0cygpO1xuICAgICAgICBjb25zdCB7IHVpZCwgZ2lkLCBhdGltZSwgbXRpbWUsIGN0aW1lIH0gPSBub2RlO1xuICAgICAgICBjb25zdCBnZXRTdGF0TnVtYmVyID0gIWJpZ2ludCA/IG51bWJlciA9PiBudW1iZXIgOiBudW1iZXIgPT4gQmlnSW50KG51bWJlcik7XG4gICAgICAgIC8vIENvcHkgYWxsIHZhbHVlcyBvbiBTdGF0cyBmcm9tIE5vZGUsIHNvIHRoYXQgaWYgTm9kZSB2YWx1ZXNcbiAgICAgICAgLy8gY2hhbmdlLCB2YWx1ZXMgb24gU3RhdHMgd291bGQgc3RpbGwgYmUgdGhlIG9sZCBvbmVzLFxuICAgICAgICAvLyBqdXN0IGxpa2UgaW4gTm9kZSBmcy5cbiAgICAgICAgc3RhdHMudWlkID0gZ2V0U3RhdE51bWJlcih1aWQpO1xuICAgICAgICBzdGF0cy5naWQgPSBnZXRTdGF0TnVtYmVyKGdpZCk7XG4gICAgICAgIHN0YXRzLnJkZXYgPSBnZXRTdGF0TnVtYmVyKG5vZGUucmRldik7XG4gICAgICAgIHN0YXRzLmJsa3NpemUgPSBnZXRTdGF0TnVtYmVyKDQwOTYpO1xuICAgICAgICBzdGF0cy5pbm8gPSBnZXRTdGF0TnVtYmVyKG5vZGUuaW5vKTtcbiAgICAgICAgc3RhdHMuc2l6ZSA9IGdldFN0YXROdW1iZXIobm9kZS5nZXRTaXplKCkpO1xuICAgICAgICBzdGF0cy5ibG9ja3MgPSBnZXRTdGF0TnVtYmVyKDEpO1xuICAgICAgICBzdGF0cy5hdGltZSA9IGF0aW1lO1xuICAgICAgICBzdGF0cy5tdGltZSA9IG10aW1lO1xuICAgICAgICBzdGF0cy5jdGltZSA9IGN0aW1lO1xuICAgICAgICBzdGF0cy5iaXJ0aHRpbWUgPSBjdGltZTtcbiAgICAgICAgc3RhdHMuYXRpbWVNcyA9IGdldFN0YXROdW1iZXIoYXRpbWUuZ2V0VGltZSgpKTtcbiAgICAgICAgc3RhdHMubXRpbWVNcyA9IGdldFN0YXROdW1iZXIobXRpbWUuZ2V0VGltZSgpKTtcbiAgICAgICAgY29uc3QgY3RpbWVNcyA9IGdldFN0YXROdW1iZXIoY3RpbWUuZ2V0VGltZSgpKTtcbiAgICAgICAgc3RhdHMuY3RpbWVNcyA9IGN0aW1lTXM7XG4gICAgICAgIHN0YXRzLmJpcnRodGltZU1zID0gY3RpbWVNcztcbiAgICAgICAgaWYgKGJpZ2ludCkge1xuICAgICAgICAgICAgc3RhdHMuYXRpbWVOcyA9IEJpZ0ludChhdGltZS5nZXRUaW1lKCkpICogQmlnSW50KDEwMDAwMDApO1xuICAgICAgICAgICAgc3RhdHMubXRpbWVOcyA9IEJpZ0ludChtdGltZS5nZXRUaW1lKCkpICogQmlnSW50KDEwMDAwMDApO1xuICAgICAgICAgICAgY29uc3QgY3RpbWVOcyA9IEJpZ0ludChjdGltZS5nZXRUaW1lKCkpICogQmlnSW50KDEwMDAwMDApO1xuICAgICAgICAgICAgc3RhdHMuY3RpbWVOcyA9IGN0aW1lTnM7XG4gICAgICAgICAgICBzdGF0cy5iaXJ0aHRpbWVOcyA9IGN0aW1lTnM7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdHMuZGV2ID0gZ2V0U3RhdE51bWJlcigwKTtcbiAgICAgICAgc3RhdHMubW9kZSA9IGdldFN0YXROdW1iZXIobm9kZS5tb2RlKTtcbiAgICAgICAgc3RhdHMubmxpbmsgPSBnZXRTdGF0TnVtYmVyKG5vZGUubmxpbmspO1xuICAgICAgICByZXR1cm4gc3RhdHM7XG4gICAgfVxuICAgIF9jaGVja01vZGVQcm9wZXJ0eShwcm9wZXJ0eSkge1xuICAgICAgICByZXR1cm4gKE51bWJlcih0aGlzLm1vZGUpICYgU19JRk1UKSA9PT0gcHJvcGVydHk7XG4gICAgfVxuICAgIGlzRGlyZWN0b3J5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2hlY2tNb2RlUHJvcGVydHkoU19JRkRJUik7XG4gICAgfVxuICAgIGlzRmlsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NoZWNrTW9kZVByb3BlcnR5KFNfSUZSRUcpO1xuICAgIH1cbiAgICBpc0Jsb2NrRGV2aWNlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2hlY2tNb2RlUHJvcGVydHkoU19JRkJMSyk7XG4gICAgfVxuICAgIGlzQ2hhcmFjdGVyRGV2aWNlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2hlY2tNb2RlUHJvcGVydHkoU19JRkNIUik7XG4gICAgfVxuICAgIGlzU3ltYm9saWNMaW5rKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2hlY2tNb2RlUHJvcGVydHkoU19JRkxOSyk7XG4gICAgfVxuICAgIGlzRklGTygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NoZWNrTW9kZVByb3BlcnR5KFNfSUZJRk8pO1xuICAgIH1cbiAgICBpc1NvY2tldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NoZWNrTW9kZVByb3BlcnR5KFNfSUZTT0NLKTtcbiAgICB9XG59XG5leHBvcnRzLlN0YXRzID0gU3RhdHM7XG5leHBvcnRzLmRlZmF1bHQgPSBTdGF0cztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVN0YXRzLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5EaXJlbnQgPSB2b2lkIDA7XG5jb25zdCBmc19ub2RlX3V0aWxzXzEgPSByZXF1aXJlKFwiQGpzb25qb3kuY29tL2ZzLW5vZGUtdXRpbHNcIik7XG5jb25zdCB7IFNfSUZNVCwgU19JRkRJUiwgU19JRlJFRywgU19JRkJMSywgU19JRkNIUiwgU19JRkxOSywgU19JRklGTywgU19JRlNPQ0sgfSA9IGZzX25vZGVfdXRpbHNfMS5jb25zdGFudHM7XG4vKipcbiAqIEEgZGlyZWN0b3J5IGVudHJ5LCBsaWtlIGBmcy5EaXJlbnRgLlxuICovXG5jbGFzcyBEaXJlbnQge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLm5hbWUgPSAnJztcbiAgICAgICAgdGhpcy5wYXJlbnRQYXRoID0gJyc7XG4gICAgICAgIHRoaXMubW9kZSA9IDA7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVwcmVjYXRlZCBXaWxsIGJlIHJlbW92ZWQgYXQgYW55IHRpbWUuXG4gICAgICAgICAqIEBzZWUgaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9kZXByZWNhdGlvbnMuaHRtbCNERVAwMTc4XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnBhdGggPSAnJztcbiAgICB9XG4gICAgc3RhdGljIGJ1aWxkKGxpbmssIGVuY29kaW5nKSB7XG4gICAgICAgIGNvbnN0IGRpcmVudCA9IG5ldyBEaXJlbnQoKTtcbiAgICAgICAgY29uc3QgeyBtb2RlIH0gPSBsaW5rLmdldE5vZGUoKTtcbiAgICAgICAgZGlyZW50Lm5hbWUgPSAoMCwgZnNfbm9kZV91dGlsc18xLnN0clRvRW5jb2RpbmcpKGxpbmsuZ2V0TmFtZSgpLCBlbmNvZGluZyk7XG4gICAgICAgIGRpcmVudC5tb2RlID0gbW9kZTtcbiAgICAgICAgZGlyZW50LnBhcmVudFBhdGggPSBsaW5rLmdldFBhcmVudFBhdGgoKTtcbiAgICAgICAgZGlyZW50LnBhdGggPSBkaXJlbnQucGFyZW50UGF0aDtcbiAgICAgICAgcmV0dXJuIGRpcmVudDtcbiAgICB9XG4gICAgX2NoZWNrTW9kZVByb3BlcnR5KHByb3BlcnR5KSB7XG4gICAgICAgIHJldHVybiAodGhpcy5tb2RlICYgU19JRk1UKSA9PT0gcHJvcGVydHk7XG4gICAgfVxuICAgIGlzRGlyZWN0b3J5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2hlY2tNb2RlUHJvcGVydHkoU19JRkRJUik7XG4gICAgfVxuICAgIGlzRmlsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NoZWNrTW9kZVByb3BlcnR5KFNfSUZSRUcpO1xuICAgIH1cbiAgICBpc0Jsb2NrRGV2aWNlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2hlY2tNb2RlUHJvcGVydHkoU19JRkJMSyk7XG4gICAgfVxuICAgIGlzQ2hhcmFjdGVyRGV2aWNlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2hlY2tNb2RlUHJvcGVydHkoU19JRkNIUik7XG4gICAgfVxuICAgIGlzU3ltYm9saWNMaW5rKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2hlY2tNb2RlUHJvcGVydHkoU19JRkxOSyk7XG4gICAgfVxuICAgIGlzRklGTygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NoZWNrTW9kZVByb3BlcnR5KFNfSUZJRk8pO1xuICAgIH1cbiAgICBpc1NvY2tldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NoZWNrTW9kZVByb3BlcnR5KFNfSUZTT0NLKTtcbiAgICB9XG59XG5leHBvcnRzLkRpcmVudCA9IERpcmVudDtcbmV4cG9ydHMuZGVmYXVsdCA9IERpcmVudDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURpcmVudC5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuU3RhdEZzID0gdm9pZCAwO1xuLyoqXG4gKiBTdGF0aXN0aWNzIGFib3V0IGEgZmlsZSBzeXN0ZW0sIGxpa2UgYGZzLlN0YXRGc2AuXG4gKi9cbmNsYXNzIFN0YXRGcyB7XG4gICAgc3RhdGljIGJ1aWxkKHN1cGVyYmxvY2ssIGJpZ2ludCA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IHN0YXRmcyA9IG5ldyBTdGF0RnMoKTtcbiAgICAgICAgY29uc3QgZ2V0U3RhdE51bWJlciA9ICFiaWdpbnQgPyBudW1iZXIgPT4gbnVtYmVyIDogbnVtYmVyID0+IEJpZ0ludChudW1iZXIpO1xuICAgICAgICAvLyBGb3IgaW4tbWVtb3J5IGZpbGVzeXN0ZW0sIHByb3ZpZGUgbW9jayBidXQgcmVhc29uYWJsZSB2YWx1ZXNcbiAgICAgICAgLy8gTWFnaWMgbnVtYmVyIGZvciBpbi1tZW1vcnkgZmlsZXN5c3RlbSB0eXBlIChzaW1pbGFyIHRvIHJhbWZzKVxuICAgICAgICBzdGF0ZnMudHlwZSA9IGdldFN0YXROdW1iZXIoMHg4NTg0NThmNik7XG4gICAgICAgIC8vIE9wdGltYWwgdHJhbnNmZXIgYmxvY2sgc2l6ZSAtIGNvbW1vbmx5IDQwOTYgYnl0ZXNcbiAgICAgICAgc3RhdGZzLmJzaXplID0gZ2V0U3RhdE51bWJlcig0MDk2KTtcbiAgICAgICAgLy8gQ2FsY3VsYXRlIGZpbGVzeXN0ZW0gc3RhdHMgYmFzZWQgb24gY3VycmVudCBzdGF0ZVxuICAgICAgICBjb25zdCB0b3RhbElub2RlcyA9IE9iamVjdC5rZXlzKHN1cGVyYmxvY2suaW5vZGVzKS5sZW5ndGg7XG4gICAgICAgIC8vIE1vY2sgbGFyZ2UgZmlsZXN5c3RlbSBjYXBhY2l0eSAoYXBwZWFycyBhcyBhIGxhcmdlIGZpbGVzeXN0ZW0gdG8gYXBwbGljYXRpb25zKVxuICAgICAgICBjb25zdCB0b3RhbEJsb2NrcyA9IDEwMDAwMDA7XG4gICAgICAgIGNvbnN0IHVzZWRCbG9ja3MgPSBNYXRoLm1pbih0b3RhbElub2RlcyAqIDIsIHRvdGFsQmxvY2tzKTsgLy8gUm91Z2ggZXN0aW1hdGlvblxuICAgICAgICBjb25zdCBmcmVlQmxvY2tzID0gdG90YWxCbG9ja3MgLSB1c2VkQmxvY2tzO1xuICAgICAgICBzdGF0ZnMuYmxvY2tzID0gZ2V0U3RhdE51bWJlcih0b3RhbEJsb2Nrcyk7IC8vIFRvdGFsIGRhdGEgYmxvY2tzXG4gICAgICAgIHN0YXRmcy5iZnJlZSA9IGdldFN0YXROdW1iZXIoZnJlZUJsb2Nrcyk7IC8vIEZyZWUgYmxvY2tzIGluIGZpbGUgc3lzdGVtXG4gICAgICAgIHN0YXRmcy5iYXZhaWwgPSBnZXRTdGF0TnVtYmVyKGZyZWVCbG9ja3MpOyAvLyBGcmVlIGJsb2NrcyBhdmFpbGFibGUgdG8gdW5wcml2aWxlZ2VkIHVzZXJzXG4gICAgICAgIC8vIEZpbGUgbm9kZSBzdGF0aXN0aWNzXG4gICAgICAgIGNvbnN0IG1heEZpbGVzID0gMTAwMDAwMDsgLy8gTW9jayBsYXJnZSBudW1iZXIgb2YgYXZhaWxhYmxlIGlub2Rlc1xuICAgICAgICBzdGF0ZnMuZmlsZXMgPSBnZXRTdGF0TnVtYmVyKG1heEZpbGVzKTsgLy8gVG90YWwgZmlsZSBub2RlcyBpbiBmaWxlIHN5c3RlbVxuICAgICAgICBzdGF0ZnMuZmZyZWUgPSBnZXRTdGF0TnVtYmVyKG1heEZpbGVzIC0gdG90YWxJbm9kZXMpOyAvLyBGcmVlIGZpbGUgbm9kZXNcbiAgICAgICAgcmV0dXJuIHN0YXRmcztcbiAgICB9XG59XG5leHBvcnRzLlN0YXRGcyA9IFN0YXRGcztcbmV4cG9ydHMuZGVmYXVsdCA9IFN0YXRGcztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVN0YXRGcy5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qKlxuICogYHNldFRpbWVvdXRVbnJlZmAgaXMganVzdCBsaWtlIGBzZXRUaW1lb3V0YCxcbiAqIG9ubHkgaW4gTm9kZSdzIGVudmlyb25tZW50IGl0IHdpbGwgXCJ1bnJlZlwiIGl0cyBtYWNybyB0YXNrLlxuICovXG5mdW5jdGlvbiBzZXRUaW1lb3V0VW5yZWYoY2FsbGJhY2ssIHRpbWUsIGFyZ3MpIHtcbiAgICBjb25zdCByZWYgPSBzZXRUaW1lb3V0LmFwcGx5KHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbFRoaXMgOiBnbG9iYWwsIGFyZ3VtZW50cyk7XG4gICAgaWYgKHJlZiAmJiB0eXBlb2YgcmVmID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgcmVmLnVucmVmID09PSAnZnVuY3Rpb24nKVxuICAgICAgICByZWYudW5yZWYoKTtcbiAgICByZXR1cm4gcmVmO1xufVxuZXhwb3J0cy5kZWZhdWx0ID0gc2V0VGltZW91dFVucmVmO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2V0VGltZW91dFVucmVmLmpzLm1hcCIsIid1c2Ugc3RyaWN0J1xuXG4vKlxuICBUaGlzIGZpbGUgaXMgYSByZWR1Y2VkIGFuZCBhZGFwdGVkIHZlcnNpb24gb2YgdGhlIG1haW4gbGliL2ludGVybmFsL3Blcl9jb250ZXh0L3ByaW1vcmRpYWxzLmpzIGZpbGUgZGVmaW5lZCBhdFxuXG4gIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL21haW4vbGliL2ludGVybmFsL3Blcl9jb250ZXh0L3ByaW1vcmRpYWxzLmpzXG5cbiAgRG9uJ3QgdHJ5IHRvIHJlcGxhY2Ugd2l0aCB0aGUgb3JpZ2luYWwgZmlsZSBhbmQga2VlcCBpdCB1cCB0byBkYXRlIHdpdGggdGhlIHVwc3RyZWFtIGZpbGUuXG4qL1xuXG4vLyBUaGlzIGlzIGEgc2ltcGxpZmllZCB2ZXJzaW9uIG9mIEFnZ3JlZ2F0ZUVycm9yXG5jbGFzcyBBZ2dyZWdhdGVFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoZXJyb3JzKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGVycm9ycykpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYEV4cGVjdGVkIGlucHV0IHRvIGJlIGFuIEFycmF5LCBnb3QgJHt0eXBlb2YgZXJyb3JzfWApXG4gICAgfVxuICAgIGxldCBtZXNzYWdlID0gJydcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVycm9ycy5sZW5ndGg7IGkrKykge1xuICAgICAgbWVzc2FnZSArPSBgICAgICR7ZXJyb3JzW2ldLnN0YWNrfVxcbmBcbiAgICB9XG4gICAgc3VwZXIobWVzc2FnZSlcbiAgICB0aGlzLm5hbWUgPSAnQWdncmVnYXRlRXJyb3InXG4gICAgdGhpcy5lcnJvcnMgPSBlcnJvcnNcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEFnZ3JlZ2F0ZUVycm9yLFxuICBBcnJheUlzQXJyYXkoc2VsZikge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHNlbGYpXG4gIH0sXG4gIEFycmF5UHJvdG90eXBlSW5jbHVkZXMoc2VsZiwgZWwpIHtcbiAgICByZXR1cm4gc2VsZi5pbmNsdWRlcyhlbClcbiAgfSxcbiAgQXJyYXlQcm90b3R5cGVJbmRleE9mKHNlbGYsIGVsKSB7XG4gICAgcmV0dXJuIHNlbGYuaW5kZXhPZihlbClcbiAgfSxcbiAgQXJyYXlQcm90b3R5cGVKb2luKHNlbGYsIHNlcCkge1xuICAgIHJldHVybiBzZWxmLmpvaW4oc2VwKVxuICB9LFxuICBBcnJheVByb3RvdHlwZU1hcChzZWxmLCBmbikge1xuICAgIHJldHVybiBzZWxmLm1hcChmbilcbiAgfSxcbiAgQXJyYXlQcm90b3R5cGVQb3Aoc2VsZiwgZWwpIHtcbiAgICByZXR1cm4gc2VsZi5wb3AoZWwpXG4gIH0sXG4gIEFycmF5UHJvdG90eXBlUHVzaChzZWxmLCBlbCkge1xuICAgIHJldHVybiBzZWxmLnB1c2goZWwpXG4gIH0sXG4gIEFycmF5UHJvdG90eXBlU2xpY2Uoc2VsZiwgc3RhcnQsIGVuZCkge1xuICAgIHJldHVybiBzZWxmLnNsaWNlKHN0YXJ0LCBlbmQpXG4gIH0sXG4gIEVycm9yLFxuICBGdW5jdGlvblByb3RvdHlwZUNhbGwoZm4sIHRoaXNBcmdzLCAuLi5hcmdzKSB7XG4gICAgcmV0dXJuIGZuLmNhbGwodGhpc0FyZ3MsIC4uLmFyZ3MpXG4gIH0sXG4gIEZ1bmN0aW9uUHJvdG90eXBlU3ltYm9sSGFzSW5zdGFuY2Uoc2VsZiwgaW5zdGFuY2UpIHtcbiAgICByZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0YW5jZV0uY2FsbChzZWxmLCBpbnN0YW5jZSlcbiAgfSxcbiAgTWF0aEZsb29yOiBNYXRoLmZsb29yLFxuICBOdW1iZXIsXG4gIE51bWJlcklzSW50ZWdlcjogTnVtYmVyLmlzSW50ZWdlcixcbiAgTnVtYmVySXNOYU46IE51bWJlci5pc05hTixcbiAgTnVtYmVyTUFYX1NBRkVfSU5URUdFUjogTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsXG4gIE51bWJlck1JTl9TQUZFX0lOVEVHRVI6IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSLFxuICBOdW1iZXJQYXJzZUludDogTnVtYmVyLnBhcnNlSW50LFxuICBPYmplY3REZWZpbmVQcm9wZXJ0aWVzKHNlbGYsIHByb3BzKSB7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHNlbGYsIHByb3BzKVxuICB9LFxuICBPYmplY3REZWZpbmVQcm9wZXJ0eShzZWxmLCBuYW1lLCBwcm9wKSB7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzZWxmLCBuYW1lLCBwcm9wKVxuICB9LFxuICBPYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc2VsZiwgbmFtZSkge1xuICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNlbGYsIG5hbWUpXG4gIH0sXG4gIE9iamVjdEtleXMob2JqKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iailcbiAgfSxcbiAgT2JqZWN0U2V0UHJvdG90eXBlT2YodGFyZ2V0LCBwcm90bykge1xuICAgIHJldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YodGFyZ2V0LCBwcm90bylcbiAgfSxcbiAgUHJvbWlzZSxcbiAgUHJvbWlzZVByb3RvdHlwZUNhdGNoKHNlbGYsIGZuKSB7XG4gICAgcmV0dXJuIHNlbGYuY2F0Y2goZm4pXG4gIH0sXG4gIFByb21pc2VQcm90b3R5cGVUaGVuKHNlbGYsIHRoZW5GbiwgY2F0Y2hGbikge1xuICAgIHJldHVybiBzZWxmLnRoZW4odGhlbkZuLCBjYXRjaEZuKVxuICB9LFxuICBQcm9taXNlUmVqZWN0KGVycikge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnIpXG4gIH0sXG4gIFByb21pc2VSZXNvbHZlKHZhbCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsKVxuICB9LFxuICBSZWZsZWN0QXBwbHk6IFJlZmxlY3QuYXBwbHksXG4gIFJlZ0V4cFByb3RvdHlwZVRlc3Qoc2VsZiwgdmFsdWUpIHtcbiAgICByZXR1cm4gc2VsZi50ZXN0KHZhbHVlKVxuICB9LFxuICBTYWZlU2V0OiBTZXQsXG4gIFN0cmluZyxcbiAgU3RyaW5nUHJvdG90eXBlU2xpY2Uoc2VsZiwgc3RhcnQsIGVuZCkge1xuICAgIHJldHVybiBzZWxmLnNsaWNlKHN0YXJ0LCBlbmQpXG4gIH0sXG4gIFN0cmluZ1Byb3RvdHlwZVRvTG93ZXJDYXNlKHNlbGYpIHtcbiAgICByZXR1cm4gc2VsZi50b0xvd2VyQ2FzZSgpXG4gIH0sXG4gIFN0cmluZ1Byb3RvdHlwZVRvVXBwZXJDYXNlKHNlbGYpIHtcbiAgICByZXR1cm4gc2VsZi50b1VwcGVyQ2FzZSgpXG4gIH0sXG4gIFN0cmluZ1Byb3RvdHlwZVRyaW0oc2VsZikge1xuICAgIHJldHVybiBzZWxmLnRyaW0oKVxuICB9LFxuICBTeW1ib2wsXG4gIFN5bWJvbEZvcjogU3ltYm9sLmZvcixcbiAgU3ltYm9sQXN5bmNJdGVyYXRvcjogU3ltYm9sLmFzeW5jSXRlcmF0b3IsXG4gIFN5bWJvbEhhc0luc3RhbmNlOiBTeW1ib2wuaGFzSW5zdGFuY2UsXG4gIFN5bWJvbEl0ZXJhdG9yOiBTeW1ib2wuaXRlcmF0b3IsXG4gIFN5bWJvbERpc3Bvc2U6IFN5bWJvbC5kaXNwb3NlIHx8IFN5bWJvbCgnU3ltYm9sLmRpc3Bvc2UnKSxcbiAgU3ltYm9sQXN5bmNEaXNwb3NlOiBTeW1ib2wuYXN5bmNEaXNwb3NlIHx8IFN5bWJvbCgnU3ltYm9sLmFzeW5jRGlzcG9zZScpLFxuICBUeXBlZEFycmF5UHJvdG90eXBlU2V0KHNlbGYsIGJ1ZiwgbGVuKSB7XG4gICAgcmV0dXJuIHNlbGYuc2V0KGJ1ZiwgbGVuKVxuICB9LFxuICBCb29sZWFuLFxuICBVaW50OEFycmF5XG59XG4iLCIndXNlIHN0cmljdCdcblxuLypcbiAgVGhpcyBmaWxlIGlzIGEgcmVkdWNlZCBhbmQgYWRhcHRlZCB2ZXJzaW9uIG9mIHRoZSBtYWluIGxpYi9pbnRlcm5hbC91dGlsL2luc3BlY3QuanMgZmlsZSBkZWZpbmVkIGF0XG5cbiAgaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvbWFpbi9saWIvaW50ZXJuYWwvdXRpbC9pbnNwZWN0LmpzXG5cbiAgRG9uJ3QgdHJ5IHRvIHJlcGxhY2Ugd2l0aCB0aGUgb3JpZ2luYWwgZmlsZSBhbmQga2VlcCBpdCB1cCB0byBkYXRlIHdpdGggdGhlIHVwc3RyZWFtIGZpbGUuXG4qL1xubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGZvcm1hdChmb3JtYXQsIC4uLmFyZ3MpIHtcbiAgICAvLyBTaW1wbGlmaWVkIHZlcnNpb24gb2YgaHR0cHM6Ly9ub2RlanMub3JnL2FwaS91dGlsLmh0bWwjdXRpbGZvcm1hdGZvcm1hdC1hcmdzXG4gICAgcmV0dXJuIGZvcm1hdC5yZXBsYWNlKC8lKFtzZGlmal0pL2csIGZ1bmN0aW9uICguLi5bX3VudXNlZCwgdHlwZV0pIHtcbiAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gYXJncy5zaGlmdCgpXG4gICAgICBpZiAodHlwZSA9PT0gJ2YnKSB7XG4gICAgICAgIHJldHVybiByZXBsYWNlbWVudC50b0ZpeGVkKDYpXG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdqJykge1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkocmVwbGFjZW1lbnQpXG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdzJyAmJiB0eXBlb2YgcmVwbGFjZW1lbnQgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGNvbnN0IGN0b3IgPSByZXBsYWNlbWVudC5jb25zdHJ1Y3RvciAhPT0gT2JqZWN0ID8gcmVwbGFjZW1lbnQuY29uc3RydWN0b3IubmFtZSA6ICcnXG4gICAgICAgIHJldHVybiBgJHtjdG9yfSB7fWAudHJpbSgpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVwbGFjZW1lbnQudG9TdHJpbmcoKVxuICAgICAgfVxuICAgIH0pXG4gIH0sXG4gIGluc3BlY3QodmFsdWUpIHtcbiAgICAvLyBWYXN0bHkgc2ltcGxpZmllZCB2ZXJzaW9uIG9mIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvdXRpbC5odG1sI3V0aWxpbnNwZWN0b2JqZWN0LW9wdGlvbnNcbiAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgaWYgKHZhbHVlLmluY2x1ZGVzKFwiJ1wiKSkge1xuICAgICAgICAgIGlmICghdmFsdWUuaW5jbHVkZXMoJ1wiJykpIHtcbiAgICAgICAgICAgIHJldHVybiBgXCIke3ZhbHVlfVwiYFxuICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlLmluY2x1ZGVzKCdgJykgJiYgIXZhbHVlLmluY2x1ZGVzKCckeycpKSB7XG4gICAgICAgICAgICByZXR1cm4gYFxcYCR7dmFsdWV9XFxgYFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYCcke3ZhbHVlfSdgXG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICBpZiAoaXNOYU4odmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuICdOYU4nXG4gICAgICAgIH0gZWxzZSBpZiAoT2JqZWN0LmlzKHZhbHVlLCAtMCkpIHtcbiAgICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgY2FzZSAnYmlnaW50JzpcbiAgICAgICAgcmV0dXJuIGAke1N0cmluZyh2YWx1ZSl9bmBcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgY2FzZSAndW5kZWZpbmVkJzpcbiAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSlcbiAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgIHJldHVybiAne30nXG4gICAgfVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxuY29uc3QgeyBmb3JtYXQsIGluc3BlY3QgfSA9IHJlcXVpcmUoJy4vdXRpbC9pbnNwZWN0JylcbmNvbnN0IHsgQWdncmVnYXRlRXJyb3I6IEN1c3RvbUFnZ3JlZ2F0ZUVycm9yIH0gPSByZXF1aXJlKCcuL3ByaW1vcmRpYWxzJylcblxuLypcbiAgVGhpcyBmaWxlIGlzIGEgcmVkdWNlZCBhbmQgYWRhcHRlZCB2ZXJzaW9uIG9mIHRoZSBtYWluIGxpYi9pbnRlcm5hbC9lcnJvcnMuanMgZmlsZSBkZWZpbmVkIGF0XG5cbiAgaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvbWFpbi9saWIvaW50ZXJuYWwvZXJyb3JzLmpzXG5cbiAgRG9uJ3QgdHJ5IHRvIHJlcGxhY2Ugd2l0aCB0aGUgb3JpZ2luYWwgZmlsZSBhbmQga2VlcCBpdCB1cCB0byBkYXRlIChzdGFydGluZyBmcm9tIEUoLi4uKSBkZWZpbml0aW9ucylcbiAgd2l0aCB0aGUgdXBzdHJlYW0gZmlsZS5cbiovXG5cbmNvbnN0IEFnZ3JlZ2F0ZUVycm9yID0gZ2xvYmFsVGhpcy5BZ2dyZWdhdGVFcnJvciB8fCBDdXN0b21BZ2dyZWdhdGVFcnJvclxuY29uc3Qga0lzTm9kZUVycm9yID0gU3ltYm9sKCdrSXNOb2RlRXJyb3InKVxuY29uc3Qga1R5cGVzID0gW1xuICAnc3RyaW5nJyxcbiAgJ2Z1bmN0aW9uJyxcbiAgJ251bWJlcicsXG4gICdvYmplY3QnLFxuICAvLyBBY2NlcHQgJ0Z1bmN0aW9uJyBhbmQgJ09iamVjdCcgYXMgYWx0ZXJuYXRpdmUgdG8gdGhlIGxvd2VyIGNhc2VkIHZlcnNpb24uXG4gICdGdW5jdGlvbicsXG4gICdPYmplY3QnLFxuICAnYm9vbGVhbicsXG4gICdiaWdpbnQnLFxuICAnc3ltYm9sJ1xuXVxuY29uc3QgY2xhc3NSZWdFeHAgPSAvXihbQS1aXVthLXowLTldKikrJC9cbmNvbnN0IG5vZGVJbnRlcm5hbFByZWZpeCA9ICdfX25vZGVfaW50ZXJuYWxfJ1xuY29uc3QgY29kZXMgPSB7fVxuZnVuY3Rpb24gYXNzZXJ0KHZhbHVlLCBtZXNzYWdlKSB7XG4gIGlmICghdmFsdWUpIHtcbiAgICB0aHJvdyBuZXcgY29kZXMuRVJSX0lOVEVSTkFMX0FTU0VSVElPTihtZXNzYWdlKVxuICB9XG59XG5cbi8vIE9ubHkgdXNlIHRoaXMgZm9yIGludGVnZXJzISBEZWNpbWFsIG51bWJlcnMgZG8gbm90IHdvcmsgd2l0aCB0aGlzIGZ1bmN0aW9uLlxuZnVuY3Rpb24gYWRkTnVtZXJpY2FsU2VwYXJhdG9yKHZhbCkge1xuICBsZXQgcmVzID0gJydcbiAgbGV0IGkgPSB2YWwubGVuZ3RoXG4gIGNvbnN0IHN0YXJ0ID0gdmFsWzBdID09PSAnLScgPyAxIDogMFxuICBmb3IgKDsgaSA+PSBzdGFydCArIDQ7IGkgLT0gMykge1xuICAgIHJlcyA9IGBfJHt2YWwuc2xpY2UoaSAtIDMsIGkpfSR7cmVzfWBcbiAgfVxuICByZXR1cm4gYCR7dmFsLnNsaWNlKDAsIGkpfSR7cmVzfWBcbn1cbmZ1bmN0aW9uIGdldE1lc3NhZ2Uoa2V5LCBtc2csIGFyZ3MpIHtcbiAgaWYgKHR5cGVvZiBtc2cgPT09ICdmdW5jdGlvbicpIHtcbiAgICBhc3NlcnQoXG4gICAgICBtc2cubGVuZ3RoIDw9IGFyZ3MubGVuZ3RoLFxuICAgICAgLy8gRGVmYXVsdCBvcHRpb25zIGRvIG5vdCBjb3VudC5cbiAgICAgIGBDb2RlOiAke2tleX07IFRoZSBwcm92aWRlZCBhcmd1bWVudHMgbGVuZ3RoICgke2FyZ3MubGVuZ3RofSkgZG9lcyBub3QgbWF0Y2ggdGhlIHJlcXVpcmVkIG9uZXMgKCR7bXNnLmxlbmd0aH0pLmBcbiAgICApXG4gICAgcmV0dXJuIG1zZyguLi5hcmdzKVxuICB9XG4gIGNvbnN0IGV4cGVjdGVkTGVuZ3RoID0gKG1zZy5tYXRjaCgvJVtkZmlqb09zXS9nKSB8fCBbXSkubGVuZ3RoXG4gIGFzc2VydChcbiAgICBleHBlY3RlZExlbmd0aCA9PT0gYXJncy5sZW5ndGgsXG4gICAgYENvZGU6ICR7a2V5fTsgVGhlIHByb3ZpZGVkIGFyZ3VtZW50cyBsZW5ndGggKCR7YXJncy5sZW5ndGh9KSBkb2VzIG5vdCBtYXRjaCB0aGUgcmVxdWlyZWQgb25lcyAoJHtleHBlY3RlZExlbmd0aH0pLmBcbiAgKVxuICBpZiAoYXJncy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbXNnXG4gIH1cbiAgcmV0dXJuIGZvcm1hdChtc2csIC4uLmFyZ3MpXG59XG5mdW5jdGlvbiBFKGNvZGUsIG1lc3NhZ2UsIEJhc2UpIHtcbiAgaWYgKCFCYXNlKSB7XG4gICAgQmFzZSA9IEVycm9yXG4gIH1cbiAgY2xhc3MgTm9kZUVycm9yIGV4dGVuZHMgQmFzZSB7XG4gICAgY29uc3RydWN0b3IoLi4uYXJncykge1xuICAgICAgc3VwZXIoZ2V0TWVzc2FnZShjb2RlLCBtZXNzYWdlLCBhcmdzKSlcbiAgICB9XG4gICAgdG9TdHJpbmcoKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5uYW1lfSBbJHtjb2RlfV06ICR7dGhpcy5tZXNzYWdlfWBcbiAgICB9XG4gIH1cbiAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoTm9kZUVycm9yLnByb3RvdHlwZSwge1xuICAgIG5hbWU6IHtcbiAgICAgIHZhbHVlOiBCYXNlLm5hbWUsXG4gICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSxcbiAgICB0b1N0cmluZzoge1xuICAgICAgdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLm5hbWV9IFske2NvZGV9XTogJHt0aGlzLm1lc3NhZ2V9YFxuICAgICAgfSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9XG4gIH0pXG4gIE5vZGVFcnJvci5wcm90b3R5cGUuY29kZSA9IGNvZGVcbiAgTm9kZUVycm9yLnByb3RvdHlwZVtrSXNOb2RlRXJyb3JdID0gdHJ1ZVxuICBjb2Rlc1tjb2RlXSA9IE5vZGVFcnJvclxufVxuZnVuY3Rpb24gaGlkZVN0YWNrRnJhbWVzKGZuKSB7XG4gIC8vIFdlIHJlbmFtZSB0aGUgZnVuY3Rpb25zIHRoYXQgd2lsbCBiZSBoaWRkZW4gdG8gY3V0IG9mZiB0aGUgc3RhY2t0cmFjZVxuICAvLyBhdCB0aGUgb3V0ZXJtb3N0IG9uZVxuICBjb25zdCBoaWRkZW4gPSBub2RlSW50ZXJuYWxQcmVmaXggKyBmbi5uYW1lXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmbiwgJ25hbWUnLCB7XG4gICAgdmFsdWU6IGhpZGRlblxuICB9KVxuICByZXR1cm4gZm5cbn1cbmZ1bmN0aW9uIGFnZ3JlZ2F0ZVR3b0Vycm9ycyhpbm5lckVycm9yLCBvdXRlckVycm9yKSB7XG4gIGlmIChpbm5lckVycm9yICYmIG91dGVyRXJyb3IgJiYgaW5uZXJFcnJvciAhPT0gb3V0ZXJFcnJvcikge1xuICAgIGlmIChBcnJheS5pc0FycmF5KG91dGVyRXJyb3IuZXJyb3JzKSkge1xuICAgICAgLy8gSWYgYG91dGVyRXJyb3JgIGlzIGFscmVhZHkgYW4gYEFnZ3JlZ2F0ZUVycm9yYC5cbiAgICAgIG91dGVyRXJyb3IuZXJyb3JzLnB1c2goaW5uZXJFcnJvcilcbiAgICAgIHJldHVybiBvdXRlckVycm9yXG4gICAgfVxuICAgIGNvbnN0IGVyciA9IG5ldyBBZ2dyZWdhdGVFcnJvcihbb3V0ZXJFcnJvciwgaW5uZXJFcnJvcl0sIG91dGVyRXJyb3IubWVzc2FnZSlcbiAgICBlcnIuY29kZSA9IG91dGVyRXJyb3IuY29kZVxuICAgIHJldHVybiBlcnJcbiAgfVxuICByZXR1cm4gaW5uZXJFcnJvciB8fCBvdXRlckVycm9yXG59XG5jbGFzcyBBYm9ydEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlID0gJ1RoZSBvcGVyYXRpb24gd2FzIGFib3J0ZWQnLCBvcHRpb25zID0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKG9wdGlvbnMgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBjb2Rlcy5FUlJfSU5WQUxJRF9BUkdfVFlQRSgnb3B0aW9ucycsICdPYmplY3QnLCBvcHRpb25zKVxuICAgIH1cbiAgICBzdXBlcihtZXNzYWdlLCBvcHRpb25zKVxuICAgIHRoaXMuY29kZSA9ICdBQk9SVF9FUlInXG4gICAgdGhpcy5uYW1lID0gJ0Fib3J0RXJyb3InXG4gIH1cbn1cbkUoJ0VSUl9BU1NFUlRJT04nLCAnJXMnLCBFcnJvcilcbkUoXG4gICdFUlJfSU5WQUxJRF9BUkdfVFlQRScsXG4gIChuYW1lLCBleHBlY3RlZCwgYWN0dWFsKSA9PiB7XG4gICAgYXNzZXJ0KHR5cGVvZiBuYW1lID09PSAnc3RyaW5nJywgXCInbmFtZScgbXVzdCBiZSBhIHN0cmluZ1wiKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShleHBlY3RlZCkpIHtcbiAgICAgIGV4cGVjdGVkID0gW2V4cGVjdGVkXVxuICAgIH1cbiAgICBsZXQgbXNnID0gJ1RoZSAnXG4gICAgaWYgKG5hbWUuZW5kc1dpdGgoJyBhcmd1bWVudCcpKSB7XG4gICAgICAvLyBGb3IgY2FzZXMgbGlrZSAnZmlyc3QgYXJndW1lbnQnXG4gICAgICBtc2cgKz0gYCR7bmFtZX0gYFxuICAgIH0gZWxzZSB7XG4gICAgICBtc2cgKz0gYFwiJHtuYW1lfVwiICR7bmFtZS5pbmNsdWRlcygnLicpID8gJ3Byb3BlcnR5JyA6ICdhcmd1bWVudCd9IGBcbiAgICB9XG4gICAgbXNnICs9ICdtdXN0IGJlICdcbiAgICBjb25zdCB0eXBlcyA9IFtdXG4gICAgY29uc3QgaW5zdGFuY2VzID0gW11cbiAgICBjb25zdCBvdGhlciA9IFtdXG4gICAgZm9yIChjb25zdCB2YWx1ZSBvZiBleHBlY3RlZCkge1xuICAgICAgYXNzZXJ0KHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycsICdBbGwgZXhwZWN0ZWQgZW50cmllcyBoYXZlIHRvIGJlIG9mIHR5cGUgc3RyaW5nJylcbiAgICAgIGlmIChrVHlwZXMuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgIHR5cGVzLnB1c2godmFsdWUudG9Mb3dlckNhc2UoKSlcbiAgICAgIH0gZWxzZSBpZiAoY2xhc3NSZWdFeHAudGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgaW5zdGFuY2VzLnB1c2godmFsdWUpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhc3NlcnQodmFsdWUgIT09ICdvYmplY3QnLCAnVGhlIHZhbHVlIFwib2JqZWN0XCIgc2hvdWxkIGJlIHdyaXR0ZW4gYXMgXCJPYmplY3RcIicpXG4gICAgICAgIG90aGVyLnB1c2godmFsdWUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU3BlY2lhbCBoYW5kbGUgYG9iamVjdGAgaW4gY2FzZSBvdGhlciBpbnN0YW5jZXMgYXJlIGFsbG93ZWQgdG8gb3V0bGluZVxuICAgIC8vIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGVhY2ggb3RoZXIuXG4gICAgaWYgKGluc3RhbmNlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBwb3MgPSB0eXBlcy5pbmRleE9mKCdvYmplY3QnKVxuICAgICAgaWYgKHBvcyAhPT0gLTEpIHtcbiAgICAgICAgdHlwZXMuc3BsaWNlKHR5cGVzLCBwb3MsIDEpXG4gICAgICAgIGluc3RhbmNlcy5wdXNoKCdPYmplY3QnKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodHlwZXMubGVuZ3RoID4gMCkge1xuICAgICAgc3dpdGNoICh0eXBlcy5sZW5ndGgpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIG1zZyArPSBgb2YgdHlwZSAke3R5cGVzWzBdfWBcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgbXNnICs9IGBvbmUgb2YgdHlwZSAke3R5cGVzWzBdfSBvciAke3R5cGVzWzFdfWBcbiAgICAgICAgICBicmVha1xuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgY29uc3QgbGFzdCA9IHR5cGVzLnBvcCgpXG4gICAgICAgICAgbXNnICs9IGBvbmUgb2YgdHlwZSAke3R5cGVzLmpvaW4oJywgJyl9LCBvciAke2xhc3R9YFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaW5zdGFuY2VzLmxlbmd0aCA+IDAgfHwgb3RoZXIubGVuZ3RoID4gMCkge1xuICAgICAgICBtc2cgKz0gJyBvciAnXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpbnN0YW5jZXMubGVuZ3RoID4gMCkge1xuICAgICAgc3dpdGNoIChpbnN0YW5jZXMubGVuZ3RoKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBtc2cgKz0gYGFuIGluc3RhbmNlIG9mICR7aW5zdGFuY2VzWzBdfWBcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgbXNnICs9IGBhbiBpbnN0YW5jZSBvZiAke2luc3RhbmNlc1swXX0gb3IgJHtpbnN0YW5jZXNbMV19YFxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICBjb25zdCBsYXN0ID0gaW5zdGFuY2VzLnBvcCgpXG4gICAgICAgICAgbXNnICs9IGBhbiBpbnN0YW5jZSBvZiAke2luc3RhbmNlcy5qb2luKCcsICcpfSwgb3IgJHtsYXN0fWBcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKG90aGVyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbXNnICs9ICcgb3IgJ1xuICAgICAgfVxuICAgIH1cbiAgICBzd2l0Y2ggKG90aGVyLmxlbmd0aCkge1xuICAgICAgY2FzZSAwOlxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAxOlxuICAgICAgICBpZiAob3RoZXJbMF0udG9Mb3dlckNhc2UoKSAhPT0gb3RoZXJbMF0pIHtcbiAgICAgICAgICBtc2cgKz0gJ2FuICdcbiAgICAgICAgfVxuICAgICAgICBtc2cgKz0gYCR7b3RoZXJbMF19YFxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyOlxuICAgICAgICBtc2cgKz0gYG9uZSBvZiAke290aGVyWzBdfSBvciAke290aGVyWzFdfWBcbiAgICAgICAgYnJlYWtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29uc3QgbGFzdCA9IG90aGVyLnBvcCgpXG4gICAgICAgIG1zZyArPSBgb25lIG9mICR7b3RoZXIuam9pbignLCAnKX0sIG9yICR7bGFzdH1gXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChhY3R1YWwgPT0gbnVsbCkge1xuICAgICAgbXNnICs9IGAuIFJlY2VpdmVkICR7YWN0dWFsfWBcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBhY3R1YWwgPT09ICdmdW5jdGlvbicgJiYgYWN0dWFsLm5hbWUpIHtcbiAgICAgIG1zZyArPSBgLiBSZWNlaXZlZCBmdW5jdGlvbiAke2FjdHVhbC5uYW1lfWBcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBhY3R1YWwgPT09ICdvYmplY3QnKSB7XG4gICAgICB2YXIgX2FjdHVhbCRjb25zdHJ1Y3RvclxuICAgICAgaWYgKFxuICAgICAgICAoX2FjdHVhbCRjb25zdHJ1Y3RvciA9IGFjdHVhbC5jb25zdHJ1Y3RvcikgIT09IG51bGwgJiZcbiAgICAgICAgX2FjdHVhbCRjb25zdHJ1Y3RvciAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIF9hY3R1YWwkY29uc3RydWN0b3IubmFtZVxuICAgICAgKSB7XG4gICAgICAgIG1zZyArPSBgLiBSZWNlaXZlZCBhbiBpbnN0YW5jZSBvZiAke2FjdHVhbC5jb25zdHJ1Y3Rvci5uYW1lfWBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGluc3BlY3RlZCA9IGluc3BlY3QoYWN0dWFsLCB7XG4gICAgICAgICAgZGVwdGg6IC0xXG4gICAgICAgIH0pXG4gICAgICAgIG1zZyArPSBgLiBSZWNlaXZlZCAke2luc3BlY3RlZH1gXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBpbnNwZWN0ZWQgPSBpbnNwZWN0KGFjdHVhbCwge1xuICAgICAgICBjb2xvcnM6IGZhbHNlXG4gICAgICB9KVxuICAgICAgaWYgKGluc3BlY3RlZC5sZW5ndGggPiAyNSkge1xuICAgICAgICBpbnNwZWN0ZWQgPSBgJHtpbnNwZWN0ZWQuc2xpY2UoMCwgMjUpfS4uLmBcbiAgICAgIH1cbiAgICAgIG1zZyArPSBgLiBSZWNlaXZlZCB0eXBlICR7dHlwZW9mIGFjdHVhbH0gKCR7aW5zcGVjdGVkfSlgXG4gICAgfVxuICAgIHJldHVybiBtc2dcbiAgfSxcbiAgVHlwZUVycm9yXG4pXG5FKFxuICAnRVJSX0lOVkFMSURfQVJHX1ZBTFVFJyxcbiAgKG5hbWUsIHZhbHVlLCByZWFzb24gPSAnaXMgaW52YWxpZCcpID0+IHtcbiAgICBsZXQgaW5zcGVjdGVkID0gaW5zcGVjdCh2YWx1ZSlcbiAgICBpZiAoaW5zcGVjdGVkLmxlbmd0aCA+IDEyOCkge1xuICAgICAgaW5zcGVjdGVkID0gaW5zcGVjdGVkLnNsaWNlKDAsIDEyOCkgKyAnLi4uJ1xuICAgIH1cbiAgICBjb25zdCB0eXBlID0gbmFtZS5pbmNsdWRlcygnLicpID8gJ3Byb3BlcnR5JyA6ICdhcmd1bWVudCdcbiAgICByZXR1cm4gYFRoZSAke3R5cGV9ICcke25hbWV9JyAke3JlYXNvbn0uIFJlY2VpdmVkICR7aW5zcGVjdGVkfWBcbiAgfSxcbiAgVHlwZUVycm9yXG4pXG5FKFxuICAnRVJSX0lOVkFMSURfUkVUVVJOX1ZBTFVFJyxcbiAgKGlucHV0LCBuYW1lLCB2YWx1ZSkgPT4ge1xuICAgIHZhciBfdmFsdWUkY29uc3RydWN0b3JcbiAgICBjb25zdCB0eXBlID1cbiAgICAgIHZhbHVlICE9PSBudWxsICYmXG4gICAgICB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAoX3ZhbHVlJGNvbnN0cnVjdG9yID0gdmFsdWUuY29uc3RydWN0b3IpICE9PSBudWxsICYmXG4gICAgICBfdmFsdWUkY29uc3RydWN0b3IgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgX3ZhbHVlJGNvbnN0cnVjdG9yLm5hbWVcbiAgICAgICAgPyBgaW5zdGFuY2Ugb2YgJHt2YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lfWBcbiAgICAgICAgOiBgdHlwZSAke3R5cGVvZiB2YWx1ZX1gXG4gICAgcmV0dXJuIGBFeHBlY3RlZCAke2lucHV0fSB0byBiZSByZXR1cm5lZCBmcm9tIHRoZSBcIiR7bmFtZX1cImAgKyBgIGZ1bmN0aW9uIGJ1dCBnb3QgJHt0eXBlfS5gXG4gIH0sXG4gIFR5cGVFcnJvclxuKVxuRShcbiAgJ0VSUl9NSVNTSU5HX0FSR1MnLFxuICAoLi4uYXJncykgPT4ge1xuICAgIGFzc2VydChhcmdzLmxlbmd0aCA+IDAsICdBdCBsZWFzdCBvbmUgYXJnIG5lZWRzIHRvIGJlIHNwZWNpZmllZCcpXG4gICAgbGV0IG1zZ1xuICAgIGNvbnN0IGxlbiA9IGFyZ3MubGVuZ3RoXG4gICAgYXJncyA9IChBcnJheS5pc0FycmF5KGFyZ3MpID8gYXJncyA6IFthcmdzXSkubWFwKChhKSA9PiBgXCIke2F9XCJgKS5qb2luKCcgb3IgJylcbiAgICBzd2l0Y2ggKGxlbikge1xuICAgICAgY2FzZSAxOlxuICAgICAgICBtc2cgKz0gYFRoZSAke2FyZ3NbMF19IGFyZ3VtZW50YFxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyOlxuICAgICAgICBtc2cgKz0gYFRoZSAke2FyZ3NbMF19IGFuZCAke2FyZ3NbMV19IGFyZ3VtZW50c2BcbiAgICAgICAgYnJlYWtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHtcbiAgICAgICAgICBjb25zdCBsYXN0ID0gYXJncy5wb3AoKVxuICAgICAgICAgIG1zZyArPSBgVGhlICR7YXJncy5qb2luKCcsICcpfSwgYW5kICR7bGFzdH0gYXJndW1lbnRzYFxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgfVxuICAgIHJldHVybiBgJHttc2d9IG11c3QgYmUgc3BlY2lmaWVkYFxuICB9LFxuICBUeXBlRXJyb3JcbilcbkUoXG4gICdFUlJfT1VUX09GX1JBTkdFJyxcbiAgKHN0ciwgcmFuZ2UsIGlucHV0KSA9PiB7XG4gICAgYXNzZXJ0KHJhbmdlLCAnTWlzc2luZyBcInJhbmdlXCIgYXJndW1lbnQnKVxuICAgIGxldCByZWNlaXZlZFxuICAgIGlmIChOdW1iZXIuaXNJbnRlZ2VyKGlucHV0KSAmJiBNYXRoLmFicyhpbnB1dCkgPiAyICoqIDMyKSB7XG4gICAgICByZWNlaXZlZCA9IGFkZE51bWVyaWNhbFNlcGFyYXRvcihTdHJpbmcoaW5wdXQpKVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGlucHV0ID09PSAnYmlnaW50Jykge1xuICAgICAgcmVjZWl2ZWQgPSBTdHJpbmcoaW5wdXQpXG4gICAgICBjb25zdCBsaW1pdCA9IEJpZ0ludCgyKSAqKiBCaWdJbnQoMzIpXG4gICAgICBpZiAoaW5wdXQgPiBsaW1pdCB8fCBpbnB1dCA8IC1saW1pdCkge1xuICAgICAgICByZWNlaXZlZCA9IGFkZE51bWVyaWNhbFNlcGFyYXRvcihyZWNlaXZlZClcbiAgICAgIH1cbiAgICAgIHJlY2VpdmVkICs9ICduJ1xuICAgIH0gZWxzZSB7XG4gICAgICByZWNlaXZlZCA9IGluc3BlY3QoaW5wdXQpXG4gICAgfVxuICAgIHJldHVybiBgVGhlIHZhbHVlIG9mIFwiJHtzdHJ9XCIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlICR7cmFuZ2V9LiBSZWNlaXZlZCAke3JlY2VpdmVkfWBcbiAgfSxcbiAgUmFuZ2VFcnJvclxuKVxuRSgnRVJSX01VTFRJUExFX0NBTExCQUNLJywgJ0NhbGxiYWNrIGNhbGxlZCBtdWx0aXBsZSB0aW1lcycsIEVycm9yKVxuRSgnRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQnLCAnVGhlICVzIG1ldGhvZCBpcyBub3QgaW1wbGVtZW50ZWQnLCBFcnJvcilcbkUoJ0VSUl9TVFJFQU1fQUxSRUFEWV9GSU5JU0hFRCcsICdDYW5ub3QgY2FsbCAlcyBhZnRlciBhIHN0cmVhbSB3YXMgZmluaXNoZWQnLCBFcnJvcilcbkUoJ0VSUl9TVFJFQU1fQ0FOTk9UX1BJUEUnLCAnQ2Fubm90IHBpcGUsIG5vdCByZWFkYWJsZScsIEVycm9yKVxuRSgnRVJSX1NUUkVBTV9ERVNUUk9ZRUQnLCAnQ2Fubm90IGNhbGwgJXMgYWZ0ZXIgYSBzdHJlYW0gd2FzIGRlc3Ryb3llZCcsIEVycm9yKVxuRSgnRVJSX1NUUkVBTV9OVUxMX1ZBTFVFUycsICdNYXkgbm90IHdyaXRlIG51bGwgdmFsdWVzIHRvIHN0cmVhbScsIFR5cGVFcnJvcilcbkUoJ0VSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFJywgJ1ByZW1hdHVyZSBjbG9zZScsIEVycm9yKVxuRSgnRVJSX1NUUkVBTV9QVVNIX0FGVEVSX0VPRicsICdzdHJlYW0ucHVzaCgpIGFmdGVyIEVPRicsIEVycm9yKVxuRSgnRVJSX1NUUkVBTV9VTlNISUZUX0FGVEVSX0VORF9FVkVOVCcsICdzdHJlYW0udW5zaGlmdCgpIGFmdGVyIGVuZCBldmVudCcsIEVycm9yKVxuRSgnRVJSX1NUUkVBTV9XUklURV9BRlRFUl9FTkQnLCAnd3JpdGUgYWZ0ZXIgZW5kJywgRXJyb3IpXG5FKCdFUlJfVU5LTk9XTl9FTkNPRElORycsICdVbmtub3duIGVuY29kaW5nOiAlcycsIFR5cGVFcnJvcilcbm1vZHVsZS5leHBvcnRzID0ge1xuICBBYm9ydEVycm9yLFxuICBhZ2dyZWdhdGVUd29FcnJvcnM6IGhpZGVTdGFja0ZyYW1lcyhhZ2dyZWdhdGVUd29FcnJvcnMpLFxuICBoaWRlU3RhY2tGcmFtZXMsXG4gIGNvZGVzXG59XG4iLCIvKmdsb2JhbHMgc2VsZiwgd2luZG93ICovXG5cInVzZSBzdHJpY3RcIlxuXG4vKmVzbGludC1kaXNhYmxlIEBteXN0aWNhdGVhL3ByZXR0aWVyICovXG5jb25zdCB7IEFib3J0Q29udHJvbGxlciwgQWJvcnRTaWduYWwgfSA9XG4gICAgdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgPyBzZWxmIDpcbiAgICB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDpcbiAgICAvKiBvdGhlcndpc2UgKi8gdW5kZWZpbmVkXG4vKmVzbGludC1lbmFibGUgQG15c3RpY2F0ZWEvcHJldHRpZXIgKi9cblxubW9kdWxlLmV4cG9ydHMgPSBBYm9ydENvbnRyb2xsZXJcbm1vZHVsZS5leHBvcnRzLkFib3J0U2lnbmFsID0gQWJvcnRTaWduYWxcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBBYm9ydENvbnRyb2xsZXJcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSID0gdHlwZW9mIFJlZmxlY3QgPT09ICdvYmplY3QnID8gUmVmbGVjdCA6IG51bGxcbnZhciBSZWZsZWN0QXBwbHkgPSBSICYmIHR5cGVvZiBSLmFwcGx5ID09PSAnZnVuY3Rpb24nXG4gID8gUi5hcHBseVxuICA6IGZ1bmN0aW9uIFJlZmxlY3RBcHBseSh0YXJnZXQsIHJlY2VpdmVyLCBhcmdzKSB7XG4gICAgcmV0dXJuIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseS5jYWxsKHRhcmdldCwgcmVjZWl2ZXIsIGFyZ3MpO1xuICB9XG5cbnZhciBSZWZsZWN0T3duS2V5c1xuaWYgKFIgJiYgdHlwZW9mIFIub3duS2V5cyA9PT0gJ2Z1bmN0aW9uJykge1xuICBSZWZsZWN0T3duS2V5cyA9IFIub3duS2V5c1xufSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gIFJlZmxlY3RPd25LZXlzID0gZnVuY3Rpb24gUmVmbGVjdE93bktleXModGFyZ2V0KSB7XG4gICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRhcmdldClcbiAgICAgIC5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0YXJnZXQpKTtcbiAgfTtcbn0gZWxzZSB7XG4gIFJlZmxlY3RPd25LZXlzID0gZnVuY3Rpb24gUmVmbGVjdE93bktleXModGFyZ2V0KSB7XG4gICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRhcmdldCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIFByb2Nlc3NFbWl0V2FybmluZyh3YXJuaW5nKSB7XG4gIGlmIChjb25zb2xlICYmIGNvbnNvbGUud2FybikgY29uc29sZS53YXJuKHdhcm5pbmcpO1xufVxuXG52YXIgTnVtYmVySXNOYU4gPSBOdW1iZXIuaXNOYU4gfHwgZnVuY3Rpb24gTnVtYmVySXNOYU4odmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9PSB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gRXZlbnRFbWl0dGVyKCkge1xuICBFdmVudEVtaXR0ZXIuaW5pdC5jYWxsKHRoaXMpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBFdmVudEVtaXR0ZXI7XG5tb2R1bGUuZXhwb3J0cy5vbmNlID0gb25jZTtcblxuLy8gQmFja3dhcmRzLWNvbXBhdCB3aXRoIG5vZGUgMC4xMC54XG5FdmVudEVtaXR0ZXIuRXZlbnRFbWl0dGVyID0gRXZlbnRFbWl0dGVyO1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLl9ldmVudHMgPSB1bmRlZmluZWQ7XG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLl9ldmVudHNDb3VudCA9IDA7XG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLl9tYXhMaXN0ZW5lcnMgPSB1bmRlZmluZWQ7XG5cbi8vIEJ5IGRlZmF1bHQgRXZlbnRFbWl0dGVycyB3aWxsIHByaW50IGEgd2FybmluZyBpZiBtb3JlIHRoYW4gMTAgbGlzdGVuZXJzIGFyZVxuLy8gYWRkZWQgdG8gaXQuIFRoaXMgaXMgYSB1c2VmdWwgZGVmYXVsdCB3aGljaCBoZWxwcyBmaW5kaW5nIG1lbW9yeSBsZWFrcy5cbnZhciBkZWZhdWx0TWF4TGlzdGVuZXJzID0gMTA7XG5cbmZ1bmN0aW9uIGNoZWNrTGlzdGVuZXIobGlzdGVuZXIpIHtcbiAgaWYgKHR5cGVvZiBsaXN0ZW5lciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImxpc3RlbmVyXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEZ1bmN0aW9uLiBSZWNlaXZlZCB0eXBlICcgKyB0eXBlb2YgbGlzdGVuZXIpO1xuICB9XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShFdmVudEVtaXR0ZXIsICdkZWZhdWx0TWF4TGlzdGVuZXJzJywge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBkZWZhdWx0TWF4TGlzdGVuZXJzO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uKGFyZykge1xuICAgIGlmICh0eXBlb2YgYXJnICE9PSAnbnVtYmVyJyB8fCBhcmcgPCAwIHx8IE51bWJlcklzTmFOKGFyZykpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgb2YgXCJkZWZhdWx0TWF4TGlzdGVuZXJzXCIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJyArIGFyZyArICcuJyk7XG4gICAgfVxuICAgIGRlZmF1bHRNYXhMaXN0ZW5lcnMgPSBhcmc7XG4gIH1cbn0pO1xuXG5FdmVudEVtaXR0ZXIuaW5pdCA9IGZ1bmN0aW9uKCkge1xuXG4gIGlmICh0aGlzLl9ldmVudHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgdGhpcy5fZXZlbnRzID09PSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykuX2V2ZW50cykge1xuICAgIHRoaXMuX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdGhpcy5fZXZlbnRzQ291bnQgPSAwO1xuICB9XG5cbiAgdGhpcy5fbWF4TGlzdGVuZXJzID0gdGhpcy5fbWF4TGlzdGVuZXJzIHx8IHVuZGVmaW5lZDtcbn07XG5cbi8vIE9idmlvdXNseSBub3QgYWxsIEVtaXR0ZXJzIHNob3VsZCBiZSBsaW1pdGVkIHRvIDEwLiBUaGlzIGZ1bmN0aW9uIGFsbG93c1xuLy8gdGhhdCB0byBiZSBpbmNyZWFzZWQuIFNldCB0byB6ZXJvIGZvciB1bmxpbWl0ZWQuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnNldE1heExpc3RlbmVycyA9IGZ1bmN0aW9uIHNldE1heExpc3RlbmVycyhuKSB7XG4gIGlmICh0eXBlb2YgbiAhPT0gJ251bWJlcicgfHwgbiA8IDAgfHwgTnVtYmVySXNOYU4obikpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIG9mIFwiblwiIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIuIFJlY2VpdmVkICcgKyBuICsgJy4nKTtcbiAgfVxuICB0aGlzLl9tYXhMaXN0ZW5lcnMgPSBuO1xuICByZXR1cm4gdGhpcztcbn07XG5cbmZ1bmN0aW9uIF9nZXRNYXhMaXN0ZW5lcnModGhhdCkge1xuICBpZiAodGhhdC5fbWF4TGlzdGVuZXJzID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIEV2ZW50RW1pdHRlci5kZWZhdWx0TWF4TGlzdGVuZXJzO1xuICByZXR1cm4gdGhhdC5fbWF4TGlzdGVuZXJzO1xufVxuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmdldE1heExpc3RlbmVycyA9IGZ1bmN0aW9uIGdldE1heExpc3RlbmVycygpIHtcbiAgcmV0dXJuIF9nZXRNYXhMaXN0ZW5lcnModGhpcyk7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmVtaXQgPSBmdW5jdGlvbiBlbWl0KHR5cGUpIHtcbiAgdmFyIGFyZ3MgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIGFyZ3MucHVzaChhcmd1bWVudHNbaV0pO1xuICB2YXIgZG9FcnJvciA9ICh0eXBlID09PSAnZXJyb3InKTtcblxuICB2YXIgZXZlbnRzID0gdGhpcy5fZXZlbnRzO1xuICBpZiAoZXZlbnRzICE9PSB1bmRlZmluZWQpXG4gICAgZG9FcnJvciA9IChkb0Vycm9yICYmIGV2ZW50cy5lcnJvciA9PT0gdW5kZWZpbmVkKTtcbiAgZWxzZSBpZiAoIWRvRXJyb3IpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIC8vIElmIHRoZXJlIGlzIG5vICdlcnJvcicgZXZlbnQgbGlzdGVuZXIgdGhlbiB0aHJvdy5cbiAgaWYgKGRvRXJyb3IpIHtcbiAgICB2YXIgZXI7XG4gICAgaWYgKGFyZ3MubGVuZ3RoID4gMClcbiAgICAgIGVyID0gYXJnc1swXTtcbiAgICBpZiAoZXIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgLy8gTm90ZTogVGhlIGNvbW1lbnRzIG9uIHRoZSBgdGhyb3dgIGxpbmVzIGFyZSBpbnRlbnRpb25hbCwgdGhleSBzaG93XG4gICAgICAvLyB1cCBpbiBOb2RlJ3Mgb3V0cHV0IGlmIHRoaXMgcmVzdWx0cyBpbiBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uLlxuICAgICAgdGhyb3cgZXI7IC8vIFVuaGFuZGxlZCAnZXJyb3InIGV2ZW50XG4gICAgfVxuICAgIC8vIEF0IGxlYXN0IGdpdmUgc29tZSBraW5kIG9mIGNvbnRleHQgdG8gdGhlIHVzZXJcbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKCdVbmhhbmRsZWQgZXJyb3IuJyArIChlciA/ICcgKCcgKyBlci5tZXNzYWdlICsgJyknIDogJycpKTtcbiAgICBlcnIuY29udGV4dCA9IGVyO1xuICAgIHRocm93IGVycjsgLy8gVW5oYW5kbGVkICdlcnJvcicgZXZlbnRcbiAgfVxuXG4gIHZhciBoYW5kbGVyID0gZXZlbnRzW3R5cGVdO1xuXG4gIGlmIChoYW5kbGVyID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIGlmICh0eXBlb2YgaGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIFJlZmxlY3RBcHBseShoYW5kbGVyLCB0aGlzLCBhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgbGVuID0gaGFuZGxlci5sZW5ndGg7XG4gICAgdmFyIGxpc3RlbmVycyA9IGFycmF5Q2xvbmUoaGFuZGxlciwgbGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKVxuICAgICAgUmVmbGVjdEFwcGx5KGxpc3RlbmVyc1tpXSwgdGhpcywgYXJncyk7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbmZ1bmN0aW9uIF9hZGRMaXN0ZW5lcih0YXJnZXQsIHR5cGUsIGxpc3RlbmVyLCBwcmVwZW5kKSB7XG4gIHZhciBtO1xuICB2YXIgZXZlbnRzO1xuICB2YXIgZXhpc3Rpbmc7XG5cbiAgY2hlY2tMaXN0ZW5lcihsaXN0ZW5lcik7XG5cbiAgZXZlbnRzID0gdGFyZ2V0Ll9ldmVudHM7XG4gIGlmIChldmVudHMgPT09IHVuZGVmaW5lZCkge1xuICAgIGV2ZW50cyA9IHRhcmdldC5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB0YXJnZXQuX2V2ZW50c0NvdW50ID0gMDtcbiAgfSBlbHNlIHtcbiAgICAvLyBUbyBhdm9pZCByZWN1cnNpb24gaW4gdGhlIGNhc2UgdGhhdCB0eXBlID09PSBcIm5ld0xpc3RlbmVyXCIhIEJlZm9yZVxuICAgIC8vIGFkZGluZyBpdCB0byB0aGUgbGlzdGVuZXJzLCBmaXJzdCBlbWl0IFwibmV3TGlzdGVuZXJcIi5cbiAgICBpZiAoZXZlbnRzLm5ld0xpc3RlbmVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRhcmdldC5lbWl0KCduZXdMaXN0ZW5lcicsIHR5cGUsXG4gICAgICAgICAgICAgICAgICBsaXN0ZW5lci5saXN0ZW5lciA/IGxpc3RlbmVyLmxpc3RlbmVyIDogbGlzdGVuZXIpO1xuXG4gICAgICAvLyBSZS1hc3NpZ24gYGV2ZW50c2AgYmVjYXVzZSBhIG5ld0xpc3RlbmVyIGhhbmRsZXIgY291bGQgaGF2ZSBjYXVzZWQgdGhlXG4gICAgICAvLyB0aGlzLl9ldmVudHMgdG8gYmUgYXNzaWduZWQgdG8gYSBuZXcgb2JqZWN0XG4gICAgICBldmVudHMgPSB0YXJnZXQuX2V2ZW50cztcbiAgICB9XG4gICAgZXhpc3RpbmcgPSBldmVudHNbdHlwZV07XG4gIH1cblxuICBpZiAoZXhpc3RpbmcgPT09IHVuZGVmaW5lZCkge1xuICAgIC8vIE9wdGltaXplIHRoZSBjYXNlIG9mIG9uZSBsaXN0ZW5lci4gRG9uJ3QgbmVlZCB0aGUgZXh0cmEgYXJyYXkgb2JqZWN0LlxuICAgIGV4aXN0aW5nID0gZXZlbnRzW3R5cGVdID0gbGlzdGVuZXI7XG4gICAgKyt0YXJnZXQuX2V2ZW50c0NvdW50O1xuICB9IGVsc2Uge1xuICAgIGlmICh0eXBlb2YgZXhpc3RpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIC8vIEFkZGluZyB0aGUgc2Vjb25kIGVsZW1lbnQsIG5lZWQgdG8gY2hhbmdlIHRvIGFycmF5LlxuICAgICAgZXhpc3RpbmcgPSBldmVudHNbdHlwZV0gPVxuICAgICAgICBwcmVwZW5kID8gW2xpc3RlbmVyLCBleGlzdGluZ10gOiBbZXhpc3RpbmcsIGxpc3RlbmVyXTtcbiAgICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkgZ290IGFuIGFycmF5LCBqdXN0IGFwcGVuZC5cbiAgICB9IGVsc2UgaWYgKHByZXBlbmQpIHtcbiAgICAgIGV4aXN0aW5nLnVuc2hpZnQobGlzdGVuZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBleGlzdGluZy5wdXNoKGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBmb3IgbGlzdGVuZXIgbGVha1xuICAgIG0gPSBfZ2V0TWF4TGlzdGVuZXJzKHRhcmdldCk7XG4gICAgaWYgKG0gPiAwICYmIGV4aXN0aW5nLmxlbmd0aCA+IG0gJiYgIWV4aXN0aW5nLndhcm5lZCkge1xuICAgICAgZXhpc3Rpbmcud2FybmVkID0gdHJ1ZTtcbiAgICAgIC8vIE5vIGVycm9yIGNvZGUgZm9yIHRoaXMgc2luY2UgaXQgaXMgYSBXYXJuaW5nXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgICAgIHZhciB3ID0gbmV3IEVycm9yKCdQb3NzaWJsZSBFdmVudEVtaXR0ZXIgbWVtb3J5IGxlYWsgZGV0ZWN0ZWQuICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZy5sZW5ndGggKyAnICcgKyBTdHJpbmcodHlwZSkgKyAnIGxpc3RlbmVycyAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FkZGVkLiBVc2UgZW1pdHRlci5zZXRNYXhMaXN0ZW5lcnMoKSB0byAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luY3JlYXNlIGxpbWl0Jyk7XG4gICAgICB3Lm5hbWUgPSAnTWF4TGlzdGVuZXJzRXhjZWVkZWRXYXJuaW5nJztcbiAgICAgIHcuZW1pdHRlciA9IHRhcmdldDtcbiAgICAgIHcudHlwZSA9IHR5cGU7XG4gICAgICB3LmNvdW50ID0gZXhpc3RpbmcubGVuZ3RoO1xuICAgICAgUHJvY2Vzc0VtaXRXYXJuaW5nKHcpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuYWRkTGlzdGVuZXIgPSBmdW5jdGlvbiBhZGRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICByZXR1cm4gX2FkZExpc3RlbmVyKHRoaXMsIHR5cGUsIGxpc3RlbmVyLCBmYWxzZSk7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLm9uID0gRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5hZGRMaXN0ZW5lcjtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5wcmVwZW5kTGlzdGVuZXIgPVxuICAgIGZ1bmN0aW9uIHByZXBlbmRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICAgICAgcmV0dXJuIF9hZGRMaXN0ZW5lcih0aGlzLCB0eXBlLCBsaXN0ZW5lciwgdHJ1ZSk7XG4gICAgfTtcblxuZnVuY3Rpb24gb25jZVdyYXBwZXIoKSB7XG4gIGlmICghdGhpcy5maXJlZCkge1xuICAgIHRoaXMudGFyZ2V0LnJlbW92ZUxpc3RlbmVyKHRoaXMudHlwZSwgdGhpcy53cmFwRm4pO1xuICAgIHRoaXMuZmlyZWQgPSB0cnVlO1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKVxuICAgICAgcmV0dXJuIHRoaXMubGlzdGVuZXIuY2FsbCh0aGlzLnRhcmdldCk7XG4gICAgcmV0dXJuIHRoaXMubGlzdGVuZXIuYXBwbHkodGhpcy50YXJnZXQsIGFyZ3VtZW50cyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gX29uY2VXcmFwKHRhcmdldCwgdHlwZSwgbGlzdGVuZXIpIHtcbiAgdmFyIHN0YXRlID0geyBmaXJlZDogZmFsc2UsIHdyYXBGbjogdW5kZWZpbmVkLCB0YXJnZXQ6IHRhcmdldCwgdHlwZTogdHlwZSwgbGlzdGVuZXI6IGxpc3RlbmVyIH07XG4gIHZhciB3cmFwcGVkID0gb25jZVdyYXBwZXIuYmluZChzdGF0ZSk7XG4gIHdyYXBwZWQubGlzdGVuZXIgPSBsaXN0ZW5lcjtcbiAgc3RhdGUud3JhcEZuID0gd3JhcHBlZDtcbiAgcmV0dXJuIHdyYXBwZWQ7XG59XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUub25jZSA9IGZ1bmN0aW9uIG9uY2UodHlwZSwgbGlzdGVuZXIpIHtcbiAgY2hlY2tMaXN0ZW5lcihsaXN0ZW5lcik7XG4gIHRoaXMub24odHlwZSwgX29uY2VXcmFwKHRoaXMsIHR5cGUsIGxpc3RlbmVyKSk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5wcmVwZW5kT25jZUxpc3RlbmVyID1cbiAgICBmdW5jdGlvbiBwcmVwZW5kT25jZUxpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gICAgICBjaGVja0xpc3RlbmVyKGxpc3RlbmVyKTtcbiAgICAgIHRoaXMucHJlcGVuZExpc3RlbmVyKHR5cGUsIF9vbmNlV3JhcCh0aGlzLCB0eXBlLCBsaXN0ZW5lcikpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcblxuLy8gRW1pdHMgYSAncmVtb3ZlTGlzdGVuZXInIGV2ZW50IGlmIGFuZCBvbmx5IGlmIHRoZSBsaXN0ZW5lciB3YXMgcmVtb3ZlZC5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIgPVxuICAgIGZ1bmN0aW9uIHJlbW92ZUxpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gICAgICB2YXIgbGlzdCwgZXZlbnRzLCBwb3NpdGlvbiwgaSwgb3JpZ2luYWxMaXN0ZW5lcjtcblxuICAgICAgY2hlY2tMaXN0ZW5lcihsaXN0ZW5lcik7XG5cbiAgICAgIGV2ZW50cyA9IHRoaXMuX2V2ZW50cztcbiAgICAgIGlmIChldmVudHMgPT09IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuIHRoaXM7XG5cbiAgICAgIGxpc3QgPSBldmVudHNbdHlwZV07XG4gICAgICBpZiAobGlzdCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm4gdGhpcztcblxuICAgICAgaWYgKGxpc3QgPT09IGxpc3RlbmVyIHx8IGxpc3QubGlzdGVuZXIgPT09IGxpc3RlbmVyKSB7XG4gICAgICAgIGlmICgtLXRoaXMuX2V2ZW50c0NvdW50ID09PSAwKVxuICAgICAgICAgIHRoaXMuX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGRlbGV0ZSBldmVudHNbdHlwZV07XG4gICAgICAgICAgaWYgKGV2ZW50cy5yZW1vdmVMaXN0ZW5lcilcbiAgICAgICAgICAgIHRoaXMuZW1pdCgncmVtb3ZlTGlzdGVuZXInLCB0eXBlLCBsaXN0Lmxpc3RlbmVyIHx8IGxpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgbGlzdCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBwb3NpdGlvbiA9IC0xO1xuXG4gICAgICAgIGZvciAoaSA9IGxpc3QubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICBpZiAobGlzdFtpXSA9PT0gbGlzdGVuZXIgfHwgbGlzdFtpXS5saXN0ZW5lciA9PT0gbGlzdGVuZXIpIHtcbiAgICAgICAgICAgIG9yaWdpbmFsTGlzdGVuZXIgPSBsaXN0W2ldLmxpc3RlbmVyO1xuICAgICAgICAgICAgcG9zaXRpb24gPSBpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBvc2l0aW9uIDwgMClcbiAgICAgICAgICByZXR1cm4gdGhpcztcblxuICAgICAgICBpZiAocG9zaXRpb24gPT09IDApXG4gICAgICAgICAgbGlzdC5zaGlmdCgpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBzcGxpY2VPbmUobGlzdCwgcG9zaXRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxpc3QubGVuZ3RoID09PSAxKVxuICAgICAgICAgIGV2ZW50c1t0eXBlXSA9IGxpc3RbMF07XG5cbiAgICAgICAgaWYgKGV2ZW50cy5yZW1vdmVMaXN0ZW5lciAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgIHRoaXMuZW1pdCgncmVtb3ZlTGlzdGVuZXInLCB0eXBlLCBvcmlnaW5hbExpc3RlbmVyIHx8IGxpc3RlbmVyKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vZmYgPSBFdmVudEVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyO1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycyA9XG4gICAgZnVuY3Rpb24gcmVtb3ZlQWxsTGlzdGVuZXJzKHR5cGUpIHtcbiAgICAgIHZhciBsaXN0ZW5lcnMsIGV2ZW50cywgaTtcblxuICAgICAgZXZlbnRzID0gdGhpcy5fZXZlbnRzO1xuICAgICAgaWYgKGV2ZW50cyA9PT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm4gdGhpcztcblxuICAgICAgLy8gbm90IGxpc3RlbmluZyBmb3IgcmVtb3ZlTGlzdGVuZXIsIG5vIG5lZWQgdG8gZW1pdFxuICAgICAgaWYgKGV2ZW50cy5yZW1vdmVMaXN0ZW5lciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgICB0aGlzLl9ldmVudHNDb3VudCA9IDA7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnRzW3R5cGVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAoLS10aGlzLl9ldmVudHNDb3VudCA9PT0gMClcbiAgICAgICAgICAgIHRoaXMuX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZGVsZXRlIGV2ZW50c1t0eXBlXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgLy8gZW1pdCByZW1vdmVMaXN0ZW5lciBmb3IgYWxsIGxpc3RlbmVycyBvbiBhbGwgZXZlbnRzXG4gICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGV2ZW50cyk7XG4gICAgICAgIHZhciBrZXk7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgICBpZiAoa2V5ID09PSAncmVtb3ZlTGlzdGVuZXInKSBjb250aW51ZTtcbiAgICAgICAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycyhrZXkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKCdyZW1vdmVMaXN0ZW5lcicpO1xuICAgICAgICB0aGlzLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICB0aGlzLl9ldmVudHNDb3VudCA9IDA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICBsaXN0ZW5lcnMgPSBldmVudHNbdHlwZV07XG5cbiAgICAgIGlmICh0eXBlb2YgbGlzdGVuZXJzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXJzKTtcbiAgICAgIH0gZWxzZSBpZiAobGlzdGVuZXJzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gTElGTyBvcmRlclxuICAgICAgICBmb3IgKGkgPSBsaXN0ZW5lcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKHR5cGUsIGxpc3RlbmVyc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcblxuZnVuY3Rpb24gX2xpc3RlbmVycyh0YXJnZXQsIHR5cGUsIHVud3JhcCkge1xuICB2YXIgZXZlbnRzID0gdGFyZ2V0Ll9ldmVudHM7XG5cbiAgaWYgKGV2ZW50cyA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBbXTtcblxuICB2YXIgZXZsaXN0ZW5lciA9IGV2ZW50c1t0eXBlXTtcbiAgaWYgKGV2bGlzdGVuZXIgPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gW107XG5cbiAgaWYgKHR5cGVvZiBldmxpc3RlbmVyID09PSAnZnVuY3Rpb24nKVxuICAgIHJldHVybiB1bndyYXAgPyBbZXZsaXN0ZW5lci5saXN0ZW5lciB8fCBldmxpc3RlbmVyXSA6IFtldmxpc3RlbmVyXTtcblxuICByZXR1cm4gdW53cmFwID9cbiAgICB1bndyYXBMaXN0ZW5lcnMoZXZsaXN0ZW5lcikgOiBhcnJheUNsb25lKGV2bGlzdGVuZXIsIGV2bGlzdGVuZXIubGVuZ3RoKTtcbn1cblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5saXN0ZW5lcnMgPSBmdW5jdGlvbiBsaXN0ZW5lcnModHlwZSkge1xuICByZXR1cm4gX2xpc3RlbmVycyh0aGlzLCB0eXBlLCB0cnVlKTtcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucmF3TGlzdGVuZXJzID0gZnVuY3Rpb24gcmF3TGlzdGVuZXJzKHR5cGUpIHtcbiAgcmV0dXJuIF9saXN0ZW5lcnModGhpcywgdHlwZSwgZmFsc2UpO1xufTtcblxuRXZlbnRFbWl0dGVyLmxpc3RlbmVyQ291bnQgPSBmdW5jdGlvbihlbWl0dGVyLCB0eXBlKSB7XG4gIGlmICh0eXBlb2YgZW1pdHRlci5saXN0ZW5lckNvdW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGVtaXR0ZXIubGlzdGVuZXJDb3VudCh0eXBlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbGlzdGVuZXJDb3VudC5jYWxsKGVtaXR0ZXIsIHR5cGUpO1xuICB9XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmxpc3RlbmVyQ291bnQgPSBsaXN0ZW5lckNvdW50O1xuZnVuY3Rpb24gbGlzdGVuZXJDb3VudCh0eXBlKSB7XG4gIHZhciBldmVudHMgPSB0aGlzLl9ldmVudHM7XG5cbiAgaWYgKGV2ZW50cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdmFyIGV2bGlzdGVuZXIgPSBldmVudHNbdHlwZV07XG5cbiAgICBpZiAodHlwZW9mIGV2bGlzdGVuZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH0gZWxzZSBpZiAoZXZsaXN0ZW5lciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZXZsaXN0ZW5lci5sZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIDA7XG59XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuZXZlbnROYW1lcyA9IGZ1bmN0aW9uIGV2ZW50TmFtZXMoKSB7XG4gIHJldHVybiB0aGlzLl9ldmVudHNDb3VudCA+IDAgPyBSZWZsZWN0T3duS2V5cyh0aGlzLl9ldmVudHMpIDogW107XG59O1xuXG5mdW5jdGlvbiBhcnJheUNsb25lKGFyciwgbikge1xuICB2YXIgY29weSA9IG5ldyBBcnJheShuKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpXG4gICAgY29weVtpXSA9IGFycltpXTtcbiAgcmV0dXJuIGNvcHk7XG59XG5cbmZ1bmN0aW9uIHNwbGljZU9uZShsaXN0LCBpbmRleCkge1xuICBmb3IgKDsgaW5kZXggKyAxIDwgbGlzdC5sZW5ndGg7IGluZGV4KyspXG4gICAgbGlzdFtpbmRleF0gPSBsaXN0W2luZGV4ICsgMV07XG4gIGxpc3QucG9wKCk7XG59XG5cbmZ1bmN0aW9uIHVud3JhcExpc3RlbmVycyhhcnIpIHtcbiAgdmFyIHJldCA9IG5ldyBBcnJheShhcnIubGVuZ3RoKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXQubGVuZ3RoOyArK2kpIHtcbiAgICByZXRbaV0gPSBhcnJbaV0ubGlzdGVuZXIgfHwgYXJyW2ldO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIG9uY2UoZW1pdHRlciwgbmFtZSkge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIGZ1bmN0aW9uIGVycm9yTGlzdGVuZXIoZXJyKSB7XG4gICAgICBlbWl0dGVyLnJlbW92ZUxpc3RlbmVyKG5hbWUsIHJlc29sdmVyKTtcbiAgICAgIHJlamVjdChlcnIpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlc29sdmVyKCkge1xuICAgICAgaWYgKHR5cGVvZiBlbWl0dGVyLnJlbW92ZUxpc3RlbmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGVtaXR0ZXIucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgZXJyb3JMaXN0ZW5lcik7XG4gICAgICB9XG4gICAgICByZXNvbHZlKFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSk7XG4gICAgfTtcblxuICAgIGV2ZW50VGFyZ2V0QWdub3N0aWNBZGRMaXN0ZW5lcihlbWl0dGVyLCBuYW1lLCByZXNvbHZlciwgeyBvbmNlOiB0cnVlIH0pO1xuICAgIGlmIChuYW1lICE9PSAnZXJyb3InKSB7XG4gICAgICBhZGRFcnJvckhhbmRsZXJJZkV2ZW50RW1pdHRlcihlbWl0dGVyLCBlcnJvckxpc3RlbmVyLCB7IG9uY2U6IHRydWUgfSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gYWRkRXJyb3JIYW5kbGVySWZFdmVudEVtaXR0ZXIoZW1pdHRlciwgaGFuZGxlciwgZmxhZ3MpIHtcbiAgaWYgKHR5cGVvZiBlbWl0dGVyLm9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZXZlbnRUYXJnZXRBZ25vc3RpY0FkZExpc3RlbmVyKGVtaXR0ZXIsICdlcnJvcicsIGhhbmRsZXIsIGZsYWdzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBldmVudFRhcmdldEFnbm9zdGljQWRkTGlzdGVuZXIoZW1pdHRlciwgbmFtZSwgbGlzdGVuZXIsIGZsYWdzKSB7XG4gIGlmICh0eXBlb2YgZW1pdHRlci5vbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGlmIChmbGFncy5vbmNlKSB7XG4gICAgICBlbWl0dGVyLm9uY2UobmFtZSwgbGlzdGVuZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbWl0dGVyLm9uKG5hbWUsIGxpc3RlbmVyKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIGVtaXR0ZXIuYWRkRXZlbnRMaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIC8vIEV2ZW50VGFyZ2V0IGRvZXMgbm90IGhhdmUgYGVycm9yYCBldmVudCBzZW1hbnRpY3MgbGlrZSBOb2RlXG4gICAgLy8gRXZlbnRFbWl0dGVycywgd2UgZG8gbm90IGxpc3RlbiBmb3IgYGVycm9yYCBldmVudHMgaGVyZS5cbiAgICBlbWl0dGVyLmFkZEV2ZW50TGlzdGVuZXIobmFtZSwgZnVuY3Rpb24gd3JhcExpc3RlbmVyKGFyZykge1xuICAgICAgLy8gSUUgZG9lcyBub3QgaGF2ZSBidWlsdGluIGB7IG9uY2U6IHRydWUgfWAgc3VwcG9ydCBzbyB3ZVxuICAgICAgLy8gaGF2ZSB0byBkbyBpdCBtYW51YWxseS5cbiAgICAgIGlmIChmbGFncy5vbmNlKSB7XG4gICAgICAgIGVtaXR0ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihuYW1lLCB3cmFwTGlzdGVuZXIpO1xuICAgICAgfVxuICAgICAgbGlzdGVuZXIoYXJnKTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJlbWl0dGVyXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEV2ZW50RW1pdHRlci4gUmVjZWl2ZWQgdHlwZSAnICsgdHlwZW9mIGVtaXR0ZXIpO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxuY29uc3QgYnVmZmVyTW9kdWxlID0gcmVxdWlyZSgnYnVmZmVyJylcbmNvbnN0IHsgZm9ybWF0LCBpbnNwZWN0IH0gPSByZXF1aXJlKCcuL3V0aWwvaW5zcGVjdCcpXG5jb25zdCB7XG4gIGNvZGVzOiB7IEVSUl9JTlZBTElEX0FSR19UWVBFIH1cbn0gPSByZXF1aXJlKCcuL2Vycm9ycycpXG5jb25zdCB7IGtSZXNpc3RTdG9wUHJvcGFnYXRpb24sIEFnZ3JlZ2F0ZUVycm9yLCBTeW1ib2xEaXNwb3NlIH0gPSByZXF1aXJlKCcuL3ByaW1vcmRpYWxzJylcbmNvbnN0IEFib3J0U2lnbmFsID0gZ2xvYmFsVGhpcy5BYm9ydFNpZ25hbCB8fCByZXF1aXJlKCdhYm9ydC1jb250cm9sbGVyJykuQWJvcnRTaWduYWxcbmNvbnN0IEFib3J0Q29udHJvbGxlciA9IGdsb2JhbFRoaXMuQWJvcnRDb250cm9sbGVyIHx8IHJlcXVpcmUoJ2Fib3J0LWNvbnRyb2xsZXInKS5BYm9ydENvbnRyb2xsZXJcbmNvbnN0IEFzeW5jRnVuY3Rpb24gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoYXN5bmMgZnVuY3Rpb24gKCkge30pLmNvbnN0cnVjdG9yXG5jb25zdCBCbG9iID0gZ2xvYmFsVGhpcy5CbG9iIHx8IGJ1ZmZlck1vZHVsZS5CbG9iXG4vKiBlc2xpbnQtZGlzYWJsZSBpbmRlbnQgKi9cbmNvbnN0IGlzQmxvYiA9XG4gIHR5cGVvZiBCbG9iICE9PSAndW5kZWZpbmVkJ1xuICAgID8gZnVuY3Rpb24gaXNCbG9iKGIpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGluZGVudFxuICAgICAgICByZXR1cm4gYiBpbnN0YW5jZW9mIEJsb2JcbiAgICAgIH1cbiAgICA6IGZ1bmN0aW9uIGlzQmxvYihiKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuLyogZXNsaW50LWVuYWJsZSBpbmRlbnQgKi9cblxuY29uc3QgdmFsaWRhdGVBYm9ydFNpZ25hbCA9IChzaWduYWwsIG5hbWUpID0+IHtcbiAgaWYgKHNpZ25hbCAhPT0gdW5kZWZpbmVkICYmIChzaWduYWwgPT09IG51bGwgfHwgdHlwZW9mIHNpZ25hbCAhPT0gJ29iamVjdCcgfHwgISgnYWJvcnRlZCcgaW4gc2lnbmFsKSkpIHtcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUobmFtZSwgJ0Fib3J0U2lnbmFsJywgc2lnbmFsKVxuICB9XG59XG5jb25zdCB2YWxpZGF0ZUZ1bmN0aW9uID0gKHZhbHVlLCBuYW1lKSA9PiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUobmFtZSwgJ0Z1bmN0aW9uJywgdmFsdWUpXG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0ge1xuICBBZ2dyZWdhdGVFcnJvcixcbiAga0VtcHR5T2JqZWN0OiBPYmplY3QuZnJlZXplKHt9KSxcbiAgb25jZShjYWxsYmFjaykge1xuICAgIGxldCBjYWxsZWQgPSBmYWxzZVxuICAgIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgaWYgKGNhbGxlZCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNhbGxlZCA9IHRydWVcbiAgICAgIGNhbGxiYWNrLmFwcGx5KHRoaXMsIGFyZ3MpXG4gICAgfVxuICB9LFxuICBjcmVhdGVEZWZlcnJlZFByb21pc2U6IGZ1bmN0aW9uICgpIHtcbiAgICBsZXQgcmVzb2x2ZVxuICAgIGxldCByZWplY3RcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcm9taXNlL3BhcmFtLW5hbWVzXG4gICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXMsIHJlaikgPT4ge1xuICAgICAgcmVzb2x2ZSA9IHJlc1xuICAgICAgcmVqZWN0ID0gcmVqXG4gICAgfSlcbiAgICByZXR1cm4ge1xuICAgICAgcHJvbWlzZSxcbiAgICAgIHJlc29sdmUsXG4gICAgICByZWplY3RcbiAgICB9XG4gIH0sXG4gIHByb21pc2lmeShmbikge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBmbigoZXJyLCAuLi5hcmdzKSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycilcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzb2x2ZSguLi5hcmdzKVxuICAgICAgfSlcbiAgICB9KVxuICB9LFxuICBkZWJ1Z2xvZygpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge31cbiAgfSxcbiAgZm9ybWF0LFxuICBpbnNwZWN0LFxuICB0eXBlczoge1xuICAgIGlzQXN5bmNGdW5jdGlvbihmbikge1xuICAgICAgcmV0dXJuIGZuIGluc3RhbmNlb2YgQXN5bmNGdW5jdGlvblxuICAgIH0sXG4gICAgaXNBcnJheUJ1ZmZlclZpZXcoYXJyKSB7XG4gICAgICByZXR1cm4gQXJyYXlCdWZmZXIuaXNWaWV3KGFycilcbiAgICB9XG4gIH0sXG4gIGlzQmxvYixcbiAgZGVwcmVjYXRlKGZuLCBtZXNzYWdlKSB7XG4gICAgcmV0dXJuIGZuXG4gIH0sXG4gIGFkZEFib3J0TGlzdGVuZXI6XG4gICAgcmVxdWlyZSgnZXZlbnRzJykuYWRkQWJvcnRMaXN0ZW5lciB8fFxuICAgIGZ1bmN0aW9uIGFkZEFib3J0TGlzdGVuZXIoc2lnbmFsLCBsaXN0ZW5lcikge1xuICAgICAgaWYgKHNpZ25hbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVFlQRSgnc2lnbmFsJywgJ0Fib3J0U2lnbmFsJywgc2lnbmFsKVxuICAgICAgfVxuICAgICAgdmFsaWRhdGVBYm9ydFNpZ25hbChzaWduYWwsICdzaWduYWwnKVxuICAgICAgdmFsaWRhdGVGdW5jdGlvbihsaXN0ZW5lciwgJ2xpc3RlbmVyJylcbiAgICAgIGxldCByZW1vdmVFdmVudExpc3RlbmVyXG4gICAgICBpZiAoc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4gbGlzdGVuZXIoKSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIGxpc3RlbmVyLCB7XG4gICAgICAgICAgX19wcm90b19fOiBudWxsLFxuICAgICAgICAgIG9uY2U6IHRydWUsXG4gICAgICAgICAgW2tSZXNpc3RTdG9wUHJvcGFnYXRpb25dOiB0cnVlXG4gICAgICAgIH0pXG4gICAgICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIgPSAoKSA9PiB7XG4gICAgICAgICAgc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgbGlzdGVuZXIpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICAgICAgW1N5bWJvbERpc3Bvc2VdKCkge1xuICAgICAgICAgIHZhciBfcmVtb3ZlRXZlbnRMaXN0ZW5lclxuICAgICAgICAgIDsoX3JlbW92ZUV2ZW50TGlzdGVuZXIgPSByZW1vdmVFdmVudExpc3RlbmVyKSA9PT0gbnVsbCB8fCBfcmVtb3ZlRXZlbnRMaXN0ZW5lciA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgICAgOiBfcmVtb3ZlRXZlbnRMaXN0ZW5lcigpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICBBYm9ydFNpZ25hbEFueTpcbiAgICBBYm9ydFNpZ25hbC5hbnkgfHxcbiAgICBmdW5jdGlvbiBBYm9ydFNpZ25hbEFueShzaWduYWxzKSB7XG4gICAgICAvLyBGYXN0IHBhdGggaWYgdGhlcmUgaXMgb25seSBvbmUgc2lnbmFsLlxuICAgICAgaWYgKHNpZ25hbHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJldHVybiBzaWduYWxzWzBdXG4gICAgICB9XG4gICAgICBjb25zdCBhYyA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuICAgICAgY29uc3QgYWJvcnQgPSAoKSA9PiBhYy5hYm9ydCgpXG4gICAgICBzaWduYWxzLmZvckVhY2goKHNpZ25hbCkgPT4ge1xuICAgICAgICB2YWxpZGF0ZUFib3J0U2lnbmFsKHNpZ25hbCwgJ3NpZ25hbHMnKVxuICAgICAgICBzaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBhYm9ydCwge1xuICAgICAgICAgIG9uY2U6IHRydWVcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgICBhYy5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgJ2Fib3J0JyxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHNpZ25hbHMuZm9yRWFjaCgoc2lnbmFsKSA9PiBzaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBhYm9ydCkpXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBvbmNlOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIClcbiAgICAgIHJldHVybiBhYy5zaWduYWxcbiAgICB9XG59XG5tb2R1bGUuZXhwb3J0cy5wcm9taXNpZnkuY3VzdG9tID0gU3ltYm9sLmZvcignbm9kZWpzLnV0aWwucHJvbWlzaWZ5LmN1c3RvbScpXG4iLCIvKiBlc2xpbnQganNkb2MvcmVxdWlyZS1qc2RvYzogXCJlcnJvclwiICovXG5cbid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7XG4gIEFycmF5SXNBcnJheSxcbiAgQXJyYXlQcm90b3R5cGVJbmNsdWRlcyxcbiAgQXJyYXlQcm90b3R5cGVKb2luLFxuICBBcnJheVByb3RvdHlwZU1hcCxcbiAgTnVtYmVySXNJbnRlZ2VyLFxuICBOdW1iZXJJc05hTixcbiAgTnVtYmVyTUFYX1NBRkVfSU5URUdFUixcbiAgTnVtYmVyTUlOX1NBRkVfSU5URUdFUixcbiAgTnVtYmVyUGFyc2VJbnQsXG4gIE9iamVjdFByb3RvdHlwZUhhc093blByb3BlcnR5LFxuICBSZWdFeHBQcm90b3R5cGVFeGVjLFxuICBTdHJpbmcsXG4gIFN0cmluZ1Byb3RvdHlwZVRvVXBwZXJDYXNlLFxuICBTdHJpbmdQcm90b3R5cGVUcmltXG59ID0gcmVxdWlyZSgnLi4vb3Vycy9wcmltb3JkaWFscycpXG5jb25zdCB7XG4gIGhpZGVTdGFja0ZyYW1lcyxcbiAgY29kZXM6IHsgRVJSX1NPQ0tFVF9CQURfUE9SVCwgRVJSX0lOVkFMSURfQVJHX1RZUEUsIEVSUl9JTlZBTElEX0FSR19WQUxVRSwgRVJSX09VVF9PRl9SQU5HRSwgRVJSX1VOS05PV05fU0lHTkFMIH1cbn0gPSByZXF1aXJlKCcuLi9vdXJzL2Vycm9ycycpXG5jb25zdCB7IG5vcm1hbGl6ZUVuY29kaW5nIH0gPSByZXF1aXJlKCcuLi9vdXJzL3V0aWwnKVxuY29uc3QgeyBpc0FzeW5jRnVuY3Rpb24sIGlzQXJyYXlCdWZmZXJWaWV3IH0gPSByZXF1aXJlKCcuLi9vdXJzL3V0aWwnKS50eXBlc1xuY29uc3Qgc2lnbmFscyA9IHt9XG5cbi8qKlxuICogQHBhcmFtIHsqfSB2YWx1ZVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzSW50MzIodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSAodmFsdWUgfCAwKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7Kn0gdmFsdWVcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc1VpbnQzMih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IHZhbHVlID4+PiAwXG59XG5jb25zdCBvY3RhbFJlZyA9IC9eWzAtN10rJC9cbmNvbnN0IG1vZGVEZXNjID0gJ211c3QgYmUgYSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlciBvciBhbiBvY3RhbCBzdHJpbmcnXG5cbi8qKlxuICogUGFyc2UgYW5kIHZhbGlkYXRlIHZhbHVlcyB0aGF0IHdpbGwgYmUgY29udmVydGVkIGludG8gbW9kZV90ICh0aGUgU18qXG4gKiBjb25zdGFudHMpLiBPbmx5IHZhbGlkIG51bWJlcnMgYW5kIG9jdGFsIHN0cmluZ3MgYXJlIGFsbG93ZWQuIFRoZXkgY291bGQgYmVcbiAqIGNvbnZlcnRlZCB0byAzMi1iaXQgdW5zaWduZWQgaW50ZWdlcnMgb3Igbm9uLW5lZ2F0aXZlIHNpZ25lZCBpbnRlZ2VycyBpbiB0aGVcbiAqIEMrKyBsYW5kLCBidXQgYW55IHZhbHVlIGhpZ2hlciB0aGFuIDBvNzc3IHdpbGwgcmVzdWx0IGluIHBsYXRmb3JtLXNwZWNpZmljXG4gKiBiZWhhdmlvcnMuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFZhbHVlcyB0byBiZSB2YWxpZGF0ZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgdGhlIGFyZ3VtZW50XG4gKiBAcGFyYW0ge251bWJlcn0gW2RlZl0gSWYgc3BlY2lmaWVkLCB3aWxsIGJlIHJldHVybmVkIGZvciBpbnZhbGlkIHZhbHVlc1xuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZnVuY3Rpb24gcGFyc2VGaWxlTW9kZSh2YWx1ZSwgbmFtZSwgZGVmKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgdmFsdWUgPSBkZWZcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIGlmIChSZWdFeHBQcm90b3R5cGVFeGVjKG9jdGFsUmVnLCB2YWx1ZSkgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVkFMVUUobmFtZSwgdmFsdWUsIG1vZGVEZXNjKVxuICAgIH1cbiAgICB2YWx1ZSA9IE51bWJlclBhcnNlSW50KHZhbHVlLCA4KVxuICB9XG4gIHZhbGlkYXRlVWludDMyKHZhbHVlLCBuYW1lKVxuICByZXR1cm4gdmFsdWVcbn1cblxuLyoqXG4gKiBAY2FsbGJhY2sgdmFsaWRhdGVJbnRlZ2VyXG4gKiBAcGFyYW0geyp9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHBhcmFtIHtudW1iZXJ9IFttaW5dXG4gKiBAcGFyYW0ge251bWJlcn0gW21heF1cbiAqIEByZXR1cm5zIHthc3NlcnRzIHZhbHVlIGlzIG51bWJlcn1cbiAqL1xuXG4vKiogQHR5cGUge3ZhbGlkYXRlSW50ZWdlcn0gKi9cbmNvbnN0IHZhbGlkYXRlSW50ZWdlciA9IGhpZGVTdGFja0ZyYW1lcygodmFsdWUsIG5hbWUsIG1pbiA9IE51bWJlck1JTl9TQUZFX0lOVEVHRVIsIG1heCA9IE51bWJlck1BWF9TQUZFX0lOVEVHRVIpID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicpIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVFlQRShuYW1lLCAnbnVtYmVyJywgdmFsdWUpXG4gIGlmICghTnVtYmVySXNJbnRlZ2VyKHZhbHVlKSkgdGhyb3cgbmV3IEVSUl9PVVRfT0ZfUkFOR0UobmFtZSwgJ2FuIGludGVnZXInLCB2YWx1ZSlcbiAgaWYgKHZhbHVlIDwgbWluIHx8IHZhbHVlID4gbWF4KSB0aHJvdyBuZXcgRVJSX09VVF9PRl9SQU5HRShuYW1lLCBgPj0gJHttaW59ICYmIDw9ICR7bWF4fWAsIHZhbHVlKVxufSlcblxuLyoqXG4gKiBAY2FsbGJhY2sgdmFsaWRhdGVJbnQzMlxuICogQHBhcmFtIHsqfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAqIEBwYXJhbSB7bnVtYmVyfSBbbWluXVxuICogQHBhcmFtIHtudW1iZXJ9IFttYXhdXG4gKiBAcmV0dXJucyB7YXNzZXJ0cyB2YWx1ZSBpcyBudW1iZXJ9XG4gKi9cblxuLyoqIEB0eXBlIHt2YWxpZGF0ZUludDMyfSAqL1xuY29uc3QgdmFsaWRhdGVJbnQzMiA9IGhpZGVTdGFja0ZyYW1lcygodmFsdWUsIG5hbWUsIG1pbiA9IC0yMTQ3NDgzNjQ4LCBtYXggPSAyMTQ3NDgzNjQ3KSA9PiB7XG4gIC8vIFRoZSBkZWZhdWx0cyBmb3IgbWluIGFuZCBtYXggY29ycmVzcG9uZCB0byB0aGUgbGltaXRzIG9mIDMyLWJpdCBpbnRlZ2Vycy5cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUobmFtZSwgJ251bWJlcicsIHZhbHVlKVxuICB9XG4gIGlmICghTnVtYmVySXNJbnRlZ2VyKHZhbHVlKSkge1xuICAgIHRocm93IG5ldyBFUlJfT1VUX09GX1JBTkdFKG5hbWUsICdhbiBpbnRlZ2VyJywgdmFsdWUpXG4gIH1cbiAgaWYgKHZhbHVlIDwgbWluIHx8IHZhbHVlID4gbWF4KSB7XG4gICAgdGhyb3cgbmV3IEVSUl9PVVRfT0ZfUkFOR0UobmFtZSwgYD49ICR7bWlufSAmJiA8PSAke21heH1gLCB2YWx1ZSlcbiAgfVxufSlcblxuLyoqXG4gKiBAY2FsbGJhY2sgdmFsaWRhdGVVaW50MzJcbiAqIEBwYXJhbSB7Kn0gdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge251bWJlcnxib29sZWFufSBbcG9zaXRpdmU9ZmFsc2VdXG4gKiBAcmV0dXJucyB7YXNzZXJ0cyB2YWx1ZSBpcyBudW1iZXJ9XG4gKi9cblxuLyoqIEB0eXBlIHt2YWxpZGF0ZVVpbnQzMn0gKi9cbmNvbnN0IHZhbGlkYXRlVWludDMyID0gaGlkZVN0YWNrRnJhbWVzKCh2YWx1ZSwgbmFtZSwgcG9zaXRpdmUgPSBmYWxzZSkgPT4ge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVFlQRShuYW1lLCAnbnVtYmVyJywgdmFsdWUpXG4gIH1cbiAgaWYgKCFOdW1iZXJJc0ludGVnZXIodmFsdWUpKSB7XG4gICAgdGhyb3cgbmV3IEVSUl9PVVRfT0ZfUkFOR0UobmFtZSwgJ2FuIGludGVnZXInLCB2YWx1ZSlcbiAgfVxuICBjb25zdCBtaW4gPSBwb3NpdGl2ZSA/IDEgOiAwXG4gIC8vIDIgKiogMzIgPT09IDQyOTQ5NjcyOTZcbiAgY29uc3QgbWF4ID0gNDI5NDk2NzI5NVxuICBpZiAodmFsdWUgPCBtaW4gfHwgdmFsdWUgPiBtYXgpIHtcbiAgICB0aHJvdyBuZXcgRVJSX09VVF9PRl9SQU5HRShuYW1lLCBgPj0gJHttaW59ICYmIDw9ICR7bWF4fWAsIHZhbHVlKVxuICB9XG59KVxuXG4vKipcbiAqIEBjYWxsYmFjayB2YWxpZGF0ZVN0cmluZ1xuICogQHBhcmFtIHsqfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAqIEByZXR1cm5zIHthc3NlcnRzIHZhbHVlIGlzIHN0cmluZ31cbiAqL1xuXG4vKiogQHR5cGUge3ZhbGlkYXRlU3RyaW5nfSAqL1xuZnVuY3Rpb24gdmFsaWRhdGVTdHJpbmcodmFsdWUsIG5hbWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVFlQRShuYW1lLCAnc3RyaW5nJywgdmFsdWUpXG59XG5cbi8qKlxuICogQGNhbGxiYWNrIHZhbGlkYXRlTnVtYmVyXG4gKiBAcGFyYW0geyp9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHBhcmFtIHtudW1iZXJ9IFttaW5dXG4gKiBAcGFyYW0ge251bWJlcn0gW21heF1cbiAqIEByZXR1cm5zIHthc3NlcnRzIHZhbHVlIGlzIG51bWJlcn1cbiAqL1xuXG4vKiogQHR5cGUge3ZhbGlkYXRlTnVtYmVyfSAqL1xuZnVuY3Rpb24gdmFsaWRhdGVOdW1iZXIodmFsdWUsIG5hbWUsIG1pbiA9IHVuZGVmaW5lZCwgbWF4KSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUobmFtZSwgJ251bWJlcicsIHZhbHVlKVxuICBpZiAoXG4gICAgKG1pbiAhPSBudWxsICYmIHZhbHVlIDwgbWluKSB8fFxuICAgIChtYXggIT0gbnVsbCAmJiB2YWx1ZSA+IG1heCkgfHxcbiAgICAoKG1pbiAhPSBudWxsIHx8IG1heCAhPSBudWxsKSAmJiBOdW1iZXJJc05hTih2YWx1ZSkpXG4gICkge1xuICAgIHRocm93IG5ldyBFUlJfT1VUX09GX1JBTkdFKFxuICAgICAgbmFtZSxcbiAgICAgIGAke21pbiAhPSBudWxsID8gYD49ICR7bWlufWAgOiAnJ30ke21pbiAhPSBudWxsICYmIG1heCAhPSBudWxsID8gJyAmJiAnIDogJyd9JHttYXggIT0gbnVsbCA/IGA8PSAke21heH1gIDogJyd9YCxcbiAgICAgIHZhbHVlXG4gICAgKVxuICB9XG59XG5cbi8qKlxuICogQGNhbGxiYWNrIHZhbGlkYXRlT25lT2ZcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAcGFyYW0ge1R9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHBhcmFtIHtUW119IG9uZU9mXG4gKi9cblxuLyoqIEB0eXBlIHt2YWxpZGF0ZU9uZU9mfSAqL1xuY29uc3QgdmFsaWRhdGVPbmVPZiA9IGhpZGVTdGFja0ZyYW1lcygodmFsdWUsIG5hbWUsIG9uZU9mKSA9PiB7XG4gIGlmICghQXJyYXlQcm90b3R5cGVJbmNsdWRlcyhvbmVPZiwgdmFsdWUpKSB7XG4gICAgY29uc3QgYWxsb3dlZCA9IEFycmF5UHJvdG90eXBlSm9pbihcbiAgICAgIEFycmF5UHJvdG90eXBlTWFwKG9uZU9mLCAodikgPT4gKHR5cGVvZiB2ID09PSAnc3RyaW5nJyA/IGAnJHt2fSdgIDogU3RyaW5nKHYpKSksXG4gICAgICAnLCAnXG4gICAgKVxuICAgIGNvbnN0IHJlYXNvbiA9ICdtdXN0IGJlIG9uZSBvZjogJyArIGFsbG93ZWRcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1ZBTFVFKG5hbWUsIHZhbHVlLCByZWFzb24pXG4gIH1cbn0pXG5cbi8qKlxuICogQGNhbGxiYWNrIHZhbGlkYXRlQm9vbGVhblxuICogQHBhcmFtIHsqfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAqIEByZXR1cm5zIHthc3NlcnRzIHZhbHVlIGlzIGJvb2xlYW59XG4gKi9cblxuLyoqIEB0eXBlIHt2YWxpZGF0ZUJvb2xlYW59ICovXG5mdW5jdGlvbiB2YWxpZGF0ZUJvb2xlYW4odmFsdWUsIG5hbWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Jvb2xlYW4nKSB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUobmFtZSwgJ2Jvb2xlYW4nLCB2YWx1ZSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2FueX0gb3B0aW9uc1xuICogQHBhcmFtIHtzdHJpbmd9IGtleVxuICogQHBhcmFtIHtib29sZWFufSBkZWZhdWx0VmFsdWVcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eVZhbHVlT3JEZWZhdWx0KG9wdGlvbnMsIGtleSwgZGVmYXVsdFZhbHVlKSB7XG4gIHJldHVybiBvcHRpb25zID09IG51bGwgfHwgIU9iamVjdFByb3RvdHlwZUhhc093blByb3BlcnR5KG9wdGlvbnMsIGtleSkgPyBkZWZhdWx0VmFsdWUgOiBvcHRpb25zW2tleV1cbn1cblxuLyoqXG4gKiBAY2FsbGJhY2sgdmFsaWRhdGVPYmplY3RcbiAqIEBwYXJhbSB7Kn0gdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge3tcbiAqICAgYWxsb3dBcnJheT86IGJvb2xlYW4sXG4gKiAgIGFsbG93RnVuY3Rpb24/OiBib29sZWFuLFxuICogICBudWxsYWJsZT86IGJvb2xlYW5cbiAqIH19IFtvcHRpb25zXVxuICovXG5cbi8qKiBAdHlwZSB7dmFsaWRhdGVPYmplY3R9ICovXG5jb25zdCB2YWxpZGF0ZU9iamVjdCA9IGhpZGVTdGFja0ZyYW1lcygodmFsdWUsIG5hbWUsIG9wdGlvbnMgPSBudWxsKSA9PiB7XG4gIGNvbnN0IGFsbG93QXJyYXkgPSBnZXRPd25Qcm9wZXJ0eVZhbHVlT3JEZWZhdWx0KG9wdGlvbnMsICdhbGxvd0FycmF5JywgZmFsc2UpXG4gIGNvbnN0IGFsbG93RnVuY3Rpb24gPSBnZXRPd25Qcm9wZXJ0eVZhbHVlT3JEZWZhdWx0KG9wdGlvbnMsICdhbGxvd0Z1bmN0aW9uJywgZmFsc2UpXG4gIGNvbnN0IG51bGxhYmxlID0gZ2V0T3duUHJvcGVydHlWYWx1ZU9yRGVmYXVsdChvcHRpb25zLCAnbnVsbGFibGUnLCBmYWxzZSlcbiAgaWYgKFxuICAgICghbnVsbGFibGUgJiYgdmFsdWUgPT09IG51bGwpIHx8XG4gICAgKCFhbGxvd0FycmF5ICYmIEFycmF5SXNBcnJheSh2YWx1ZSkpIHx8XG4gICAgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgJiYgKCFhbGxvd0Z1bmN0aW9uIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ2Z1bmN0aW9uJykpXG4gICkge1xuICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVFlQRShuYW1lLCAnT2JqZWN0JywgdmFsdWUpXG4gIH1cbn0pXG5cbi8qKlxuICogQGNhbGxiYWNrIHZhbGlkYXRlRGljdGlvbmFyeSAtIFdlIGFyZSB1c2luZyB0aGUgV2ViIElETCBTdGFuZGFyZCBkZWZpbml0aW9uXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgXCJkaWN0aW9uYXJ5XCIgaGVyZSwgd2hpY2ggbWVhbnMgYW55IHZhbHVlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hvc2UgVHlwZSBpcyBlaXRoZXIgVW5kZWZpbmVkLCBOdWxsLCBvclxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdCAod2hpY2ggaW5jbHVkZXMgZnVuY3Rpb25zKS5cbiAqIEBwYXJhbSB7Kn0gdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiBAc2VlIGh0dHBzOi8vd2ViaWRsLnNwZWMud2hhdHdnLm9yZy8jZXMtZGljdGlvbmFyeVxuICogQHNlZSBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jdGFibGUtdHlwZW9mLW9wZXJhdG9yLXJlc3VsdHNcbiAqL1xuXG4vKiogQHR5cGUge3ZhbGlkYXRlRGljdGlvbmFyeX0gKi9cbmNvbnN0IHZhbGlkYXRlRGljdGlvbmFyeSA9IGhpZGVTdGFja0ZyYW1lcygodmFsdWUsIG5hbWUpID0+IHtcbiAgaWYgKHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyAmJiB0eXBlb2YgdmFsdWUgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUobmFtZSwgJ2EgZGljdGlvbmFyeScsIHZhbHVlKVxuICB9XG59KVxuXG4vKipcbiAqIEBjYWxsYmFjayB2YWxpZGF0ZUFycmF5XG4gKiBAcGFyYW0geyp9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHBhcmFtIHtudW1iZXJ9IFttaW5MZW5ndGhdXG4gKiBAcmV0dXJucyB7YXNzZXJ0cyB2YWx1ZSBpcyBhbnlbXX1cbiAqL1xuXG4vKiogQHR5cGUge3ZhbGlkYXRlQXJyYXl9ICovXG5jb25zdCB2YWxpZGF0ZUFycmF5ID0gaGlkZVN0YWNrRnJhbWVzKCh2YWx1ZSwgbmFtZSwgbWluTGVuZ3RoID0gMCkgPT4ge1xuICBpZiAoIUFycmF5SXNBcnJheSh2YWx1ZSkpIHtcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUobmFtZSwgJ0FycmF5JywgdmFsdWUpXG4gIH1cbiAgaWYgKHZhbHVlLmxlbmd0aCA8IG1pbkxlbmd0aCkge1xuICAgIGNvbnN0IHJlYXNvbiA9IGBtdXN0IGJlIGxvbmdlciB0aGFuICR7bWluTGVuZ3RofWBcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1ZBTFVFKG5hbWUsIHZhbHVlLCByZWFzb24pXG4gIH1cbn0pXG5cbi8qKlxuICogQGNhbGxiYWNrIHZhbGlkYXRlU3RyaW5nQXJyYXlcbiAqIEBwYXJhbSB7Kn0gdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiBAcmV0dXJucyB7YXNzZXJ0cyB2YWx1ZSBpcyBzdHJpbmdbXX1cbiAqL1xuXG4vKiogQHR5cGUge3ZhbGlkYXRlU3RyaW5nQXJyYXl9ICovXG5mdW5jdGlvbiB2YWxpZGF0ZVN0cmluZ0FycmF5KHZhbHVlLCBuYW1lKSB7XG4gIHZhbGlkYXRlQXJyYXkodmFsdWUsIG5hbWUpXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICB2YWxpZGF0ZVN0cmluZyh2YWx1ZVtpXSwgYCR7bmFtZX1bJHtpfV1gKVxuICB9XG59XG5cbi8qKlxuICogQGNhbGxiYWNrIHZhbGlkYXRlQm9vbGVhbkFycmF5XG4gKiBAcGFyYW0geyp9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHJldHVybnMge2Fzc2VydHMgdmFsdWUgaXMgYm9vbGVhbltdfVxuICovXG5cbi8qKiBAdHlwZSB7dmFsaWRhdGVCb29sZWFuQXJyYXl9ICovXG5mdW5jdGlvbiB2YWxpZGF0ZUJvb2xlYW5BcnJheSh2YWx1ZSwgbmFtZSkge1xuICB2YWxpZGF0ZUFycmF5KHZhbHVlLCBuYW1lKVxuICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFsaWRhdGVCb29sZWFuKHZhbHVlW2ldLCBgJHtuYW1lfVske2l9XWApXG4gIH1cbn1cblxuLyoqXG4gKiBAY2FsbGJhY2sgdmFsaWRhdGVBYm9ydFNpZ25hbEFycmF5XG4gKiBAcGFyYW0geyp9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHJldHVybnMge2Fzc2VydHMgdmFsdWUgaXMgQWJvcnRTaWduYWxbXX1cbiAqL1xuXG4vKiogQHR5cGUge3ZhbGlkYXRlQWJvcnRTaWduYWxBcnJheX0gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlQWJvcnRTaWduYWxBcnJheSh2YWx1ZSwgbmFtZSkge1xuICB2YWxpZGF0ZUFycmF5KHZhbHVlLCBuYW1lKVxuICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3Qgc2lnbmFsID0gdmFsdWVbaV1cbiAgICBjb25zdCBpbmRleGVkTmFtZSA9IGAke25hbWV9WyR7aX1dYFxuICAgIGlmIChzaWduYWwgPT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVSUl9JTlZBTElEX0FSR19UWVBFKGluZGV4ZWROYW1lLCAnQWJvcnRTaWduYWwnLCBzaWduYWwpXG4gICAgfVxuICAgIHZhbGlkYXRlQWJvcnRTaWduYWwoc2lnbmFsLCBpbmRleGVkTmFtZSlcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7Kn0gc2lnbmFsXG4gKiBAcGFyYW0ge3N0cmluZ30gW25hbWU9J3NpZ25hbCddXG4gKiBAcmV0dXJucyB7YXNzZXJ0cyBzaWduYWwgaXMga2V5b2Ygc2lnbmFsc31cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVTaWduYWxOYW1lKHNpZ25hbCwgbmFtZSA9ICdzaWduYWwnKSB7XG4gIHZhbGlkYXRlU3RyaW5nKHNpZ25hbCwgbmFtZSlcbiAgaWYgKHNpZ25hbHNbc2lnbmFsXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHNpZ25hbHNbU3RyaW5nUHJvdG90eXBlVG9VcHBlckNhc2Uoc2lnbmFsKV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVSUl9VTktOT1dOX1NJR05BTChzaWduYWwgKyAnIChzaWduYWxzIG11c3QgdXNlIGFsbCBjYXBpdGFsIGxldHRlcnMpJylcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVSUl9VTktOT1dOX1NJR05BTChzaWduYWwpXG4gIH1cbn1cblxuLyoqXG4gKiBAY2FsbGJhY2sgdmFsaWRhdGVCdWZmZXJcbiAqIEBwYXJhbSB7Kn0gYnVmZmVyXG4gKiBAcGFyYW0ge3N0cmluZ30gW25hbWU9J2J1ZmZlciddXG4gKiBAcmV0dXJucyB7YXNzZXJ0cyBidWZmZXIgaXMgQXJyYXlCdWZmZXJWaWV3fVxuICovXG5cbi8qKiBAdHlwZSB7dmFsaWRhdGVCdWZmZXJ9ICovXG5jb25zdCB2YWxpZGF0ZUJ1ZmZlciA9IGhpZGVTdGFja0ZyYW1lcygoYnVmZmVyLCBuYW1lID0gJ2J1ZmZlcicpID0+IHtcbiAgaWYgKCFpc0FycmF5QnVmZmVyVmlldyhidWZmZXIpKSB7XG4gICAgdGhyb3cgbmV3IEVSUl9JTlZBTElEX0FSR19UWVBFKG5hbWUsIFsnQnVmZmVyJywgJ1R5cGVkQXJyYXknLCAnRGF0YVZpZXcnXSwgYnVmZmVyKVxuICB9XG59KVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhXG4gKiBAcGFyYW0ge3N0cmluZ30gZW5jb2RpbmdcbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVFbmNvZGluZyhkYXRhLCBlbmNvZGluZykge1xuICBjb25zdCBub3JtYWxpemVkRW5jb2RpbmcgPSBub3JtYWxpemVFbmNvZGluZyhlbmNvZGluZylcbiAgY29uc3QgbGVuZ3RoID0gZGF0YS5sZW5ndGhcbiAgaWYgKG5vcm1hbGl6ZWRFbmNvZGluZyA9PT0gJ2hleCcgJiYgbGVuZ3RoICUgMiAhPT0gMCkge1xuICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVkFMVUUoJ2VuY29kaW5nJywgZW5jb2RpbmcsIGBpcyBpbnZhbGlkIGZvciBkYXRhIG9mIGxlbmd0aCAke2xlbmd0aH1gKVxuICB9XG59XG5cbi8qKlxuICogQ2hlY2sgdGhhdCB0aGUgcG9ydCBudW1iZXIgaXMgbm90IE5hTiB3aGVuIGNvZXJjZWQgdG8gYSBudW1iZXIsXG4gKiBpcyBhbiBpbnRlZ2VyIGFuZCB0aGF0IGl0IGZhbGxzIHdpdGhpbiB0aGUgbGVnYWwgcmFuZ2Ugb2YgcG9ydCBudW1iZXJzLlxuICogQHBhcmFtIHsqfSBwb3J0XG4gKiBAcGFyYW0ge3N0cmluZ30gW25hbWU9J1BvcnQnXVxuICogQHBhcmFtIHtib29sZWFufSBbYWxsb3daZXJvPXRydWVdXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZVBvcnQocG9ydCwgbmFtZSA9ICdQb3J0JywgYWxsb3daZXJvID0gdHJ1ZSkge1xuICBpZiAoXG4gICAgKHR5cGVvZiBwb3J0ICE9PSAnbnVtYmVyJyAmJiB0eXBlb2YgcG9ydCAhPT0gJ3N0cmluZycpIHx8XG4gICAgKHR5cGVvZiBwb3J0ID09PSAnc3RyaW5nJyAmJiBTdHJpbmdQcm90b3R5cGVUcmltKHBvcnQpLmxlbmd0aCA9PT0gMCkgfHxcbiAgICArcG9ydCAhPT0gK3BvcnQgPj4+IDAgfHxcbiAgICBwb3J0ID4gMHhmZmZmIHx8XG4gICAgKHBvcnQgPT09IDAgJiYgIWFsbG93WmVybylcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVSUl9TT0NLRVRfQkFEX1BPUlQobmFtZSwgcG9ydCwgYWxsb3daZXJvKVxuICB9XG4gIHJldHVybiBwb3J0IHwgMFxufVxuXG4vKipcbiAqIEBjYWxsYmFjayB2YWxpZGF0ZUFib3J0U2lnbmFsXG4gKiBAcGFyYW0geyp9IHNpZ25hbFxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAqL1xuXG4vKiogQHR5cGUge3ZhbGlkYXRlQWJvcnRTaWduYWx9ICovXG5jb25zdCB2YWxpZGF0ZUFib3J0U2lnbmFsID0gaGlkZVN0YWNrRnJhbWVzKChzaWduYWwsIG5hbWUpID0+IHtcbiAgaWYgKHNpZ25hbCAhPT0gdW5kZWZpbmVkICYmIChzaWduYWwgPT09IG51bGwgfHwgdHlwZW9mIHNpZ25hbCAhPT0gJ29iamVjdCcgfHwgISgnYWJvcnRlZCcgaW4gc2lnbmFsKSkpIHtcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUobmFtZSwgJ0Fib3J0U2lnbmFsJywgc2lnbmFsKVxuICB9XG59KVxuXG4vKipcbiAqIEBjYWxsYmFjayB2YWxpZGF0ZUZ1bmN0aW9uXG4gKiBAcGFyYW0geyp9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHJldHVybnMge2Fzc2VydHMgdmFsdWUgaXMgRnVuY3Rpb259XG4gKi9cblxuLyoqIEB0eXBlIHt2YWxpZGF0ZUZ1bmN0aW9ufSAqL1xuY29uc3QgdmFsaWRhdGVGdW5jdGlvbiA9IGhpZGVTdGFja0ZyYW1lcygodmFsdWUsIG5hbWUpID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Z1bmN0aW9uJykgdGhyb3cgbmV3IEVSUl9JTlZBTElEX0FSR19UWVBFKG5hbWUsICdGdW5jdGlvbicsIHZhbHVlKVxufSlcblxuLyoqXG4gKiBAY2FsbGJhY2sgdmFsaWRhdGVQbGFpbkZ1bmN0aW9uXG4gKiBAcGFyYW0geyp9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHJldHVybnMge2Fzc2VydHMgdmFsdWUgaXMgRnVuY3Rpb259XG4gKi9cblxuLyoqIEB0eXBlIHt2YWxpZGF0ZVBsYWluRnVuY3Rpb259ICovXG5jb25zdCB2YWxpZGF0ZVBsYWluRnVuY3Rpb24gPSBoaWRlU3RhY2tGcmFtZXMoKHZhbHVlLCBuYW1lKSA9PiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdmdW5jdGlvbicgfHwgaXNBc3luY0Z1bmN0aW9uKHZhbHVlKSkgdGhyb3cgbmV3IEVSUl9JTlZBTElEX0FSR19UWVBFKG5hbWUsICdGdW5jdGlvbicsIHZhbHVlKVxufSlcblxuLyoqXG4gKiBAY2FsbGJhY2sgdmFsaWRhdGVVbmRlZmluZWRcbiAqIEBwYXJhbSB7Kn0gdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiBAcmV0dXJucyB7YXNzZXJ0cyB2YWx1ZSBpcyB1bmRlZmluZWR9XG4gKi9cblxuLyoqIEB0eXBlIHt2YWxpZGF0ZVVuZGVmaW5lZH0gKi9cbmNvbnN0IHZhbGlkYXRlVW5kZWZpbmVkID0gaGlkZVN0YWNrRnJhbWVzKCh2YWx1ZSwgbmFtZSkgPT4ge1xuICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkgdGhyb3cgbmV3IEVSUl9JTlZBTElEX0FSR19UWVBFKG5hbWUsICd1bmRlZmluZWQnLCB2YWx1ZSlcbn0pXG5cbi8qKlxuICogQHRlbXBsYXRlIFRcbiAqIEBwYXJhbSB7VH0gdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge1RbXX0gdW5pb25cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVVbmlvbih2YWx1ZSwgbmFtZSwgdW5pb24pIHtcbiAgaWYgKCFBcnJheVByb3RvdHlwZUluY2x1ZGVzKHVuaW9uLCB2YWx1ZSkpIHtcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUobmFtZSwgYCgnJHtBcnJheVByb3RvdHlwZUpvaW4odW5pb24sICd8Jyl9JylgLCB2YWx1ZSlcbiAgfVxufVxuXG4vKlxuICBUaGUgcnVsZXMgZm9yIHRoZSBMaW5rIGhlYWRlciBmaWVsZCBhcmUgZGVzY3JpYmVkIGhlcmU6XG4gIGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM4Mjg4Lmh0bWwjc2VjdGlvbi0zXG5cbiAgVGhpcyByZWdleCB2YWxpZGF0ZXMgYW55IHN0cmluZyBzdXJyb3VuZGVkIGJ5IGFuZ2xlIGJyYWNrZXRzXG4gIChub3QgbmVjZXNzYXJpbHkgYSB2YWxpZCBVUkkgcmVmZXJlbmNlKSBmb2xsb3dlZCBieSB6ZXJvIG9yIG1vcmVcbiAgbGluay1wYXJhbXMgc2VwYXJhdGVkIGJ5IHNlbWljb2xvbnMuXG4qL1xuY29uc3QgbGlua1ZhbHVlUmVnRXhwID0gL14oPzo8W14+XSo+KSg/Olxccyo7XFxzKlteO1wiXFxzXSsoPzo9KFwiKT9bXjtcIlxcc10qXFwxKT8pKiQvXG5cbi8qKlxuICogQHBhcmFtIHthbnl9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZUxpbmtIZWFkZXJGb3JtYXQodmFsdWUsIG5hbWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgIVJlZ0V4cFByb3RvdHlwZUV4ZWMobGlua1ZhbHVlUmVnRXhwLCB2YWx1ZSkpIHtcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1ZBTFVFKFxuICAgICAgbmFtZSxcbiAgICAgIHZhbHVlLFxuICAgICAgJ211c3QgYmUgYW4gYXJyYXkgb3Igc3RyaW5nIG9mIGZvcm1hdCBcIjwvc3R5bGVzLmNzcz47IHJlbD1wcmVsb2FkOyBhcz1zdHlsZVwiJ1xuICAgIClcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7YW55fSBoaW50c1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZUxpbmtIZWFkZXJWYWx1ZShoaW50cykge1xuICBpZiAodHlwZW9mIGhpbnRzID09PSAnc3RyaW5nJykge1xuICAgIHZhbGlkYXRlTGlua0hlYWRlckZvcm1hdChoaW50cywgJ2hpbnRzJylcbiAgICByZXR1cm4gaGludHNcbiAgfSBlbHNlIGlmIChBcnJheUlzQXJyYXkoaGludHMpKSB7XG4gICAgY29uc3QgaGludHNMZW5ndGggPSBoaW50cy5sZW5ndGhcbiAgICBsZXQgcmVzdWx0ID0gJydcbiAgICBpZiAoaGludHNMZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoaW50c0xlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBsaW5rID0gaGludHNbaV1cbiAgICAgIHZhbGlkYXRlTGlua0hlYWRlckZvcm1hdChsaW5rLCAnaGludHMnKVxuICAgICAgcmVzdWx0ICs9IGxpbmtcbiAgICAgIGlmIChpICE9PSBoaW50c0xlbmd0aCAtIDEpIHtcbiAgICAgICAgcmVzdWx0ICs9ICcsICdcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG4gIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVkFMVUUoXG4gICAgJ2hpbnRzJyxcbiAgICBoaW50cyxcbiAgICAnbXVzdCBiZSBhbiBhcnJheSBvciBzdHJpbmcgb2YgZm9ybWF0IFwiPC9zdHlsZXMuY3NzPjsgcmVsPXByZWxvYWQ7IGFzPXN0eWxlXCInXG4gIClcbn1cbm1vZHVsZS5leHBvcnRzID0ge1xuICBpc0ludDMyLFxuICBpc1VpbnQzMixcbiAgcGFyc2VGaWxlTW9kZSxcbiAgdmFsaWRhdGVBcnJheSxcbiAgdmFsaWRhdGVTdHJpbmdBcnJheSxcbiAgdmFsaWRhdGVCb29sZWFuQXJyYXksXG4gIHZhbGlkYXRlQWJvcnRTaWduYWxBcnJheSxcbiAgdmFsaWRhdGVCb29sZWFuLFxuICB2YWxpZGF0ZUJ1ZmZlcixcbiAgdmFsaWRhdGVEaWN0aW9uYXJ5LFxuICB2YWxpZGF0ZUVuY29kaW5nLFxuICB2YWxpZGF0ZUZ1bmN0aW9uLFxuICB2YWxpZGF0ZUludDMyLFxuICB2YWxpZGF0ZUludGVnZXIsXG4gIHZhbGlkYXRlTnVtYmVyLFxuICB2YWxpZGF0ZU9iamVjdCxcbiAgdmFsaWRhdGVPbmVPZixcbiAgdmFsaWRhdGVQbGFpbkZ1bmN0aW9uLFxuICB2YWxpZGF0ZVBvcnQsXG4gIHZhbGlkYXRlU2lnbmFsTmFtZSxcbiAgdmFsaWRhdGVTdHJpbmcsXG4gIHZhbGlkYXRlVWludDMyLFxuICB2YWxpZGF0ZVVuZGVmaW5lZCxcbiAgdmFsaWRhdGVVbmlvbixcbiAgdmFsaWRhdGVBYm9ydFNpZ25hbCxcbiAgdmFsaWRhdGVMaW5rSGVhZGVyVmFsdWVcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7IFN5bWJvbEFzeW5jSXRlcmF0b3IsIFN5bWJvbEl0ZXJhdG9yLCBTeW1ib2xGb3IgfSA9IHJlcXVpcmUoJy4uLy4uL291cnMvcHJpbW9yZGlhbHMnKVxuXG4vLyBXZSBuZWVkIHRvIHVzZSBTeW1ib2xGb3IgdG8gbWFrZSB0aGVzZSBnbG9iYWxseSBhdmFpbGFibGVcbi8vIGZvciBpbnRlcm9wdCB3aXRoIHJlYWRhYmxlLXN0cmVhbSwgaS5lLiByZWFkYWJsZS1zdHJlYW1cbi8vIGFuZCBub2RlIGNvcmUgbmVlZHMgdG8gYmUgYWJsZSB0byByZWFkL3dyaXRlIHByaXZhdGUgc3RhdGVcbi8vIGZyb20gZWFjaCBvdGhlciBmb3IgcHJvcGVyIGludGVyb3BlcmFiaWxpdHkuXG5jb25zdCBrSXNEZXN0cm95ZWQgPSBTeW1ib2xGb3IoJ25vZGVqcy5zdHJlYW0uZGVzdHJveWVkJylcbmNvbnN0IGtJc0Vycm9yZWQgPSBTeW1ib2xGb3IoJ25vZGVqcy5zdHJlYW0uZXJyb3JlZCcpXG5jb25zdCBrSXNSZWFkYWJsZSA9IFN5bWJvbEZvcignbm9kZWpzLnN0cmVhbS5yZWFkYWJsZScpXG5jb25zdCBrSXNXcml0YWJsZSA9IFN5bWJvbEZvcignbm9kZWpzLnN0cmVhbS53cml0YWJsZScpXG5jb25zdCBrSXNEaXN0dXJiZWQgPSBTeW1ib2xGb3IoJ25vZGVqcy5zdHJlYW0uZGlzdHVyYmVkJylcbmNvbnN0IGtJc0Nsb3NlZFByb21pc2UgPSBTeW1ib2xGb3IoJ25vZGVqcy53ZWJzdHJlYW0uaXNDbG9zZWRQcm9taXNlJylcbmNvbnN0IGtDb250cm9sbGVyRXJyb3JGdW5jdGlvbiA9IFN5bWJvbEZvcignbm9kZWpzLndlYnN0cmVhbS5jb250cm9sbGVyRXJyb3JGdW5jdGlvbicpXG5mdW5jdGlvbiBpc1JlYWRhYmxlTm9kZVN0cmVhbShvYmosIHN0cmljdCA9IGZhbHNlKSB7XG4gIHZhciBfb2JqJF9yZWFkYWJsZVN0YXRlXG4gIHJldHVybiAhIShcbiAgICAoXG4gICAgICBvYmogJiZcbiAgICAgIHR5cGVvZiBvYmoucGlwZSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgdHlwZW9mIG9iai5vbiA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgKCFzdHJpY3QgfHwgKHR5cGVvZiBvYmoucGF1c2UgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIG9iai5yZXN1bWUgPT09ICdmdW5jdGlvbicpKSAmJlxuICAgICAgKCFvYmouX3dyaXRhYmxlU3RhdGUgfHxcbiAgICAgICAgKChfb2JqJF9yZWFkYWJsZVN0YXRlID0gb2JqLl9yZWFkYWJsZVN0YXRlKSA9PT0gbnVsbCB8fCBfb2JqJF9yZWFkYWJsZVN0YXRlID09PSB1bmRlZmluZWRcbiAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgIDogX29iaiRfcmVhZGFibGVTdGF0ZS5yZWFkYWJsZSkgIT09IGZhbHNlKSAmJlxuICAgICAgLy8gRHVwbGV4XG4gICAgICAoIW9iai5fd3JpdGFibGVTdGF0ZSB8fCBvYmouX3JlYWRhYmxlU3RhdGUpXG4gICAgKSAvLyBXcml0YWJsZSBoYXMgLnBpcGUuXG4gIClcbn1cbmZ1bmN0aW9uIGlzV3JpdGFibGVOb2RlU3RyZWFtKG9iaikge1xuICB2YXIgX29iaiRfd3JpdGFibGVTdGF0ZVxuICByZXR1cm4gISEoXG4gICAgKFxuICAgICAgb2JqICYmXG4gICAgICB0eXBlb2Ygb2JqLndyaXRlID09PSAnZnVuY3Rpb24nICYmXG4gICAgICB0eXBlb2Ygb2JqLm9uID09PSAnZnVuY3Rpb24nICYmXG4gICAgICAoIW9iai5fcmVhZGFibGVTdGF0ZSB8fFxuICAgICAgICAoKF9vYmokX3dyaXRhYmxlU3RhdGUgPSBvYmouX3dyaXRhYmxlU3RhdGUpID09PSBudWxsIHx8IF9vYmokX3dyaXRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgOiBfb2JqJF93cml0YWJsZVN0YXRlLndyaXRhYmxlKSAhPT0gZmFsc2UpXG4gICAgKSAvLyBEdXBsZXhcbiAgKVxufVxuZnVuY3Rpb24gaXNEdXBsZXhOb2RlU3RyZWFtKG9iaikge1xuICByZXR1cm4gISEoXG4gICAgb2JqICYmXG4gICAgdHlwZW9mIG9iai5waXBlID09PSAnZnVuY3Rpb24nICYmXG4gICAgb2JqLl9yZWFkYWJsZVN0YXRlICYmXG4gICAgdHlwZW9mIG9iai5vbiA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIHR5cGVvZiBvYmoud3JpdGUgPT09ICdmdW5jdGlvbidcbiAgKVxufVxuZnVuY3Rpb24gaXNOb2RlU3RyZWFtKG9iaikge1xuICByZXR1cm4gKFxuICAgIG9iaiAmJlxuICAgIChvYmouX3JlYWRhYmxlU3RhdGUgfHxcbiAgICAgIG9iai5fd3JpdGFibGVTdGF0ZSB8fFxuICAgICAgKHR5cGVvZiBvYmoud3JpdGUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIG9iai5vbiA9PT0gJ2Z1bmN0aW9uJykgfHxcbiAgICAgICh0eXBlb2Ygb2JqLnBpcGUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIG9iai5vbiA9PT0gJ2Z1bmN0aW9uJykpXG4gIClcbn1cbmZ1bmN0aW9uIGlzUmVhZGFibGVTdHJlYW0ob2JqKSB7XG4gIHJldHVybiAhIShcbiAgICBvYmogJiZcbiAgICAhaXNOb2RlU3RyZWFtKG9iaikgJiZcbiAgICB0eXBlb2Ygb2JqLnBpcGVUaHJvdWdoID09PSAnZnVuY3Rpb24nICYmXG4gICAgdHlwZW9mIG9iai5nZXRSZWFkZXIgPT09ICdmdW5jdGlvbicgJiZcbiAgICB0eXBlb2Ygb2JqLmNhbmNlbCA9PT0gJ2Z1bmN0aW9uJ1xuICApXG59XG5mdW5jdGlvbiBpc1dyaXRhYmxlU3RyZWFtKG9iaikge1xuICByZXR1cm4gISEob2JqICYmICFpc05vZGVTdHJlYW0ob2JqKSAmJiB0eXBlb2Ygb2JqLmdldFdyaXRlciA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2Ygb2JqLmFib3J0ID09PSAnZnVuY3Rpb24nKVxufVxuZnVuY3Rpb24gaXNUcmFuc2Zvcm1TdHJlYW0ob2JqKSB7XG4gIHJldHVybiAhIShvYmogJiYgIWlzTm9kZVN0cmVhbShvYmopICYmIHR5cGVvZiBvYmoucmVhZGFibGUgPT09ICdvYmplY3QnICYmIHR5cGVvZiBvYmoud3JpdGFibGUgPT09ICdvYmplY3QnKVxufVxuZnVuY3Rpb24gaXNXZWJTdHJlYW0ob2JqKSB7XG4gIHJldHVybiBpc1JlYWRhYmxlU3RyZWFtKG9iaikgfHwgaXNXcml0YWJsZVN0cmVhbShvYmopIHx8IGlzVHJhbnNmb3JtU3RyZWFtKG9iailcbn1cbmZ1bmN0aW9uIGlzSXRlcmFibGUob2JqLCBpc0FzeW5jKSB7XG4gIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIGZhbHNlXG4gIGlmIChpc0FzeW5jID09PSB0cnVlKSByZXR1cm4gdHlwZW9mIG9ialtTeW1ib2xBc3luY0l0ZXJhdG9yXSA9PT0gJ2Z1bmN0aW9uJ1xuICBpZiAoaXNBc3luYyA9PT0gZmFsc2UpIHJldHVybiB0eXBlb2Ygb2JqW1N5bWJvbEl0ZXJhdG9yXSA9PT0gJ2Z1bmN0aW9uJ1xuICByZXR1cm4gdHlwZW9mIG9ialtTeW1ib2xBc3luY0l0ZXJhdG9yXSA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2Ygb2JqW1N5bWJvbEl0ZXJhdG9yXSA9PT0gJ2Z1bmN0aW9uJ1xufVxuZnVuY3Rpb24gaXNEZXN0cm95ZWQoc3RyZWFtKSB7XG4gIGlmICghaXNOb2RlU3RyZWFtKHN0cmVhbSkpIHJldHVybiBudWxsXG4gIGNvbnN0IHdTdGF0ZSA9IHN0cmVhbS5fd3JpdGFibGVTdGF0ZVxuICBjb25zdCByU3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGVcbiAgY29uc3Qgc3RhdGUgPSB3U3RhdGUgfHwgclN0YXRlXG4gIHJldHVybiAhIShzdHJlYW0uZGVzdHJveWVkIHx8IHN0cmVhbVtrSXNEZXN0cm95ZWRdIHx8IChzdGF0ZSAhPT0gbnVsbCAmJiBzdGF0ZSAhPT0gdW5kZWZpbmVkICYmIHN0YXRlLmRlc3Ryb3llZCkpXG59XG5cbi8vIEhhdmUgYmVlbiBlbmQoKTpkLlxuZnVuY3Rpb24gaXNXcml0YWJsZUVuZGVkKHN0cmVhbSkge1xuICBpZiAoIWlzV3JpdGFibGVOb2RlU3RyZWFtKHN0cmVhbSkpIHJldHVybiBudWxsXG4gIGlmIChzdHJlYW0ud3JpdGFibGVFbmRlZCA9PT0gdHJ1ZSkgcmV0dXJuIHRydWVcbiAgY29uc3Qgd1N0YXRlID0gc3RyZWFtLl93cml0YWJsZVN0YXRlXG4gIGlmICh3U3RhdGUgIT09IG51bGwgJiYgd1N0YXRlICE9PSB1bmRlZmluZWQgJiYgd1N0YXRlLmVycm9yZWQpIHJldHVybiBmYWxzZVxuICBpZiAodHlwZW9mICh3U3RhdGUgPT09IG51bGwgfHwgd1N0YXRlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiB3U3RhdGUuZW5kZWQpICE9PSAnYm9vbGVhbicpIHJldHVybiBudWxsXG4gIHJldHVybiB3U3RhdGUuZW5kZWRcbn1cblxuLy8gSGF2ZSBlbWl0dGVkICdmaW5pc2gnLlxuZnVuY3Rpb24gaXNXcml0YWJsZUZpbmlzaGVkKHN0cmVhbSwgc3RyaWN0KSB7XG4gIGlmICghaXNXcml0YWJsZU5vZGVTdHJlYW0oc3RyZWFtKSkgcmV0dXJuIG51bGxcbiAgaWYgKHN0cmVhbS53cml0YWJsZUZpbmlzaGVkID09PSB0cnVlKSByZXR1cm4gdHJ1ZVxuICBjb25zdCB3U3RhdGUgPSBzdHJlYW0uX3dyaXRhYmxlU3RhdGVcbiAgaWYgKHdTdGF0ZSAhPT0gbnVsbCAmJiB3U3RhdGUgIT09IHVuZGVmaW5lZCAmJiB3U3RhdGUuZXJyb3JlZCkgcmV0dXJuIGZhbHNlXG4gIGlmICh0eXBlb2YgKHdTdGF0ZSA9PT0gbnVsbCB8fCB3U3RhdGUgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHdTdGF0ZS5maW5pc2hlZCkgIT09ICdib29sZWFuJykgcmV0dXJuIG51bGxcbiAgcmV0dXJuICEhKHdTdGF0ZS5maW5pc2hlZCB8fCAoc3RyaWN0ID09PSBmYWxzZSAmJiB3U3RhdGUuZW5kZWQgPT09IHRydWUgJiYgd1N0YXRlLmxlbmd0aCA9PT0gMCkpXG59XG5cbi8vIEhhdmUgYmVlbiBwdXNoKG51bGwpOmQuXG5mdW5jdGlvbiBpc1JlYWRhYmxlRW5kZWQoc3RyZWFtKSB7XG4gIGlmICghaXNSZWFkYWJsZU5vZGVTdHJlYW0oc3RyZWFtKSkgcmV0dXJuIG51bGxcbiAgaWYgKHN0cmVhbS5yZWFkYWJsZUVuZGVkID09PSB0cnVlKSByZXR1cm4gdHJ1ZVxuICBjb25zdCByU3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGVcbiAgaWYgKCFyU3RhdGUgfHwgclN0YXRlLmVycm9yZWQpIHJldHVybiBmYWxzZVxuICBpZiAodHlwZW9mIChyU3RhdGUgPT09IG51bGwgfHwgclN0YXRlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiByU3RhdGUuZW5kZWQpICE9PSAnYm9vbGVhbicpIHJldHVybiBudWxsXG4gIHJldHVybiByU3RhdGUuZW5kZWRcbn1cblxuLy8gSGF2ZSBlbWl0dGVkICdlbmQnLlxuZnVuY3Rpb24gaXNSZWFkYWJsZUZpbmlzaGVkKHN0cmVhbSwgc3RyaWN0KSB7XG4gIGlmICghaXNSZWFkYWJsZU5vZGVTdHJlYW0oc3RyZWFtKSkgcmV0dXJuIG51bGxcbiAgY29uc3QgclN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlXG4gIGlmIChyU3RhdGUgIT09IG51bGwgJiYgclN0YXRlICE9PSB1bmRlZmluZWQgJiYgclN0YXRlLmVycm9yZWQpIHJldHVybiBmYWxzZVxuICBpZiAodHlwZW9mIChyU3RhdGUgPT09IG51bGwgfHwgclN0YXRlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiByU3RhdGUuZW5kRW1pdHRlZCkgIT09ICdib29sZWFuJykgcmV0dXJuIG51bGxcbiAgcmV0dXJuICEhKHJTdGF0ZS5lbmRFbWl0dGVkIHx8IChzdHJpY3QgPT09IGZhbHNlICYmIHJTdGF0ZS5lbmRlZCA9PT0gdHJ1ZSAmJiByU3RhdGUubGVuZ3RoID09PSAwKSlcbn1cbmZ1bmN0aW9uIGlzUmVhZGFibGUoc3RyZWFtKSB7XG4gIGlmIChzdHJlYW0gJiYgc3RyZWFtW2tJc1JlYWRhYmxlXSAhPSBudWxsKSByZXR1cm4gc3RyZWFtW2tJc1JlYWRhYmxlXVxuICBpZiAodHlwZW9mIChzdHJlYW0gPT09IG51bGwgfHwgc3RyZWFtID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBzdHJlYW0ucmVhZGFibGUpICE9PSAnYm9vbGVhbicpIHJldHVybiBudWxsXG4gIGlmIChpc0Rlc3Ryb3llZChzdHJlYW0pKSByZXR1cm4gZmFsc2VcbiAgcmV0dXJuIGlzUmVhZGFibGVOb2RlU3RyZWFtKHN0cmVhbSkgJiYgc3RyZWFtLnJlYWRhYmxlICYmICFpc1JlYWRhYmxlRmluaXNoZWQoc3RyZWFtKVxufVxuZnVuY3Rpb24gaXNXcml0YWJsZShzdHJlYW0pIHtcbiAgaWYgKHN0cmVhbSAmJiBzdHJlYW1ba0lzV3JpdGFibGVdICE9IG51bGwpIHJldHVybiBzdHJlYW1ba0lzV3JpdGFibGVdXG4gIGlmICh0eXBlb2YgKHN0cmVhbSA9PT0gbnVsbCB8fCBzdHJlYW0gPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHN0cmVhbS53cml0YWJsZSkgIT09ICdib29sZWFuJykgcmV0dXJuIG51bGxcbiAgaWYgKGlzRGVzdHJveWVkKHN0cmVhbSkpIHJldHVybiBmYWxzZVxuICByZXR1cm4gaXNXcml0YWJsZU5vZGVTdHJlYW0oc3RyZWFtKSAmJiBzdHJlYW0ud3JpdGFibGUgJiYgIWlzV3JpdGFibGVFbmRlZChzdHJlYW0pXG59XG5mdW5jdGlvbiBpc0ZpbmlzaGVkKHN0cmVhbSwgb3B0cykge1xuICBpZiAoIWlzTm9kZVN0cmVhbShzdHJlYW0pKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBpZiAoaXNEZXN0cm95ZWQoc3RyZWFtKSkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cbiAgaWYgKChvcHRzID09PSBudWxsIHx8IG9wdHMgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IG9wdHMucmVhZGFibGUpICE9PSBmYWxzZSAmJiBpc1JlYWRhYmxlKHN0cmVhbSkpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICBpZiAoKG9wdHMgPT09IG51bGwgfHwgb3B0cyA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogb3B0cy53cml0YWJsZSkgIT09IGZhbHNlICYmIGlzV3JpdGFibGUoc3RyZWFtKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHJldHVybiB0cnVlXG59XG5mdW5jdGlvbiBpc1dyaXRhYmxlRXJyb3JlZChzdHJlYW0pIHtcbiAgdmFyIF9zdHJlYW0kX3dyaXRhYmxlU3RhdCwgX3N0cmVhbSRfd3JpdGFibGVTdGF0MlxuICBpZiAoIWlzTm9kZVN0cmVhbShzdHJlYW0pKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBpZiAoc3RyZWFtLndyaXRhYmxlRXJyb3JlZCkge1xuICAgIHJldHVybiBzdHJlYW0ud3JpdGFibGVFcnJvcmVkXG4gIH1cbiAgcmV0dXJuIChfc3RyZWFtJF93cml0YWJsZVN0YXQgPVxuICAgIChfc3RyZWFtJF93cml0YWJsZVN0YXQyID0gc3RyZWFtLl93cml0YWJsZVN0YXRlKSA9PT0gbnVsbCB8fCBfc3RyZWFtJF93cml0YWJsZVN0YXQyID09PSB1bmRlZmluZWRcbiAgICAgID8gdW5kZWZpbmVkXG4gICAgICA6IF9zdHJlYW0kX3dyaXRhYmxlU3RhdDIuZXJyb3JlZCkgIT09IG51bGwgJiYgX3N0cmVhbSRfd3JpdGFibGVTdGF0ICE9PSB1bmRlZmluZWRcbiAgICA/IF9zdHJlYW0kX3dyaXRhYmxlU3RhdFxuICAgIDogbnVsbFxufVxuZnVuY3Rpb24gaXNSZWFkYWJsZUVycm9yZWQoc3RyZWFtKSB7XG4gIHZhciBfc3RyZWFtJF9yZWFkYWJsZVN0YXQsIF9zdHJlYW0kX3JlYWRhYmxlU3RhdDJcbiAgaWYgKCFpc05vZGVTdHJlYW0oc3RyZWFtKSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgaWYgKHN0cmVhbS5yZWFkYWJsZUVycm9yZWQpIHtcbiAgICByZXR1cm4gc3RyZWFtLnJlYWRhYmxlRXJyb3JlZFxuICB9XG4gIHJldHVybiAoX3N0cmVhbSRfcmVhZGFibGVTdGF0ID1cbiAgICAoX3N0cmVhbSRfcmVhZGFibGVTdGF0MiA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZSkgPT09IG51bGwgfHwgX3N0cmVhbSRfcmVhZGFibGVTdGF0MiA9PT0gdW5kZWZpbmVkXG4gICAgICA/IHVuZGVmaW5lZFxuICAgICAgOiBfc3RyZWFtJF9yZWFkYWJsZVN0YXQyLmVycm9yZWQpICE9PSBudWxsICYmIF9zdHJlYW0kX3JlYWRhYmxlU3RhdCAhPT0gdW5kZWZpbmVkXG4gICAgPyBfc3RyZWFtJF9yZWFkYWJsZVN0YXRcbiAgICA6IG51bGxcbn1cbmZ1bmN0aW9uIGlzQ2xvc2VkKHN0cmVhbSkge1xuICBpZiAoIWlzTm9kZVN0cmVhbShzdHJlYW0pKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBpZiAodHlwZW9mIHN0cmVhbS5jbG9zZWQgPT09ICdib29sZWFuJykge1xuICAgIHJldHVybiBzdHJlYW0uY2xvc2VkXG4gIH1cbiAgY29uc3Qgd1N0YXRlID0gc3RyZWFtLl93cml0YWJsZVN0YXRlXG4gIGNvbnN0IHJTdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZVxuICBpZiAoXG4gICAgdHlwZW9mICh3U3RhdGUgPT09IG51bGwgfHwgd1N0YXRlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiB3U3RhdGUuY2xvc2VkKSA9PT0gJ2Jvb2xlYW4nIHx8XG4gICAgdHlwZW9mIChyU3RhdGUgPT09IG51bGwgfHwgclN0YXRlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiByU3RhdGUuY2xvc2VkKSA9PT0gJ2Jvb2xlYW4nXG4gICkge1xuICAgIHJldHVybiAoXG4gICAgICAod1N0YXRlID09PSBudWxsIHx8IHdTdGF0ZSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogd1N0YXRlLmNsb3NlZCkgfHxcbiAgICAgIChyU3RhdGUgPT09IG51bGwgfHwgclN0YXRlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiByU3RhdGUuY2xvc2VkKVxuICAgIClcbiAgfVxuICBpZiAodHlwZW9mIHN0cmVhbS5fY2xvc2VkID09PSAnYm9vbGVhbicgJiYgaXNPdXRnb2luZ01lc3NhZ2Uoc3RyZWFtKSkge1xuICAgIHJldHVybiBzdHJlYW0uX2Nsb3NlZFxuICB9XG4gIHJldHVybiBudWxsXG59XG5mdW5jdGlvbiBpc091dGdvaW5nTWVzc2FnZShzdHJlYW0pIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2Ygc3RyZWFtLl9jbG9zZWQgPT09ICdib29sZWFuJyAmJlxuICAgIHR5cGVvZiBzdHJlYW0uX2RlZmF1bHRLZWVwQWxpdmUgPT09ICdib29sZWFuJyAmJlxuICAgIHR5cGVvZiBzdHJlYW0uX3JlbW92ZWRDb25uZWN0aW9uID09PSAnYm9vbGVhbicgJiZcbiAgICB0eXBlb2Ygc3RyZWFtLl9yZW1vdmVkQ29udExlbiA9PT0gJ2Jvb2xlYW4nXG4gIClcbn1cbmZ1bmN0aW9uIGlzU2VydmVyUmVzcG9uc2Uoc3RyZWFtKSB7XG4gIHJldHVybiB0eXBlb2Ygc3RyZWFtLl9zZW50MTAwID09PSAnYm9vbGVhbicgJiYgaXNPdXRnb2luZ01lc3NhZ2Uoc3RyZWFtKVxufVxuZnVuY3Rpb24gaXNTZXJ2ZXJSZXF1ZXN0KHN0cmVhbSkge1xuICB2YXIgX3N0cmVhbSRyZXFcbiAgcmV0dXJuIChcbiAgICB0eXBlb2Ygc3RyZWFtLl9jb25zdW1pbmcgPT09ICdib29sZWFuJyAmJlxuICAgIHR5cGVvZiBzdHJlYW0uX2R1bXBlZCA9PT0gJ2Jvb2xlYW4nICYmXG4gICAgKChfc3RyZWFtJHJlcSA9IHN0cmVhbS5yZXEpID09PSBudWxsIHx8IF9zdHJlYW0kcmVxID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBfc3RyZWFtJHJlcS51cGdyYWRlT3JDb25uZWN0KSA9PT1cbiAgICAgIHVuZGVmaW5lZFxuICApXG59XG5mdW5jdGlvbiB3aWxsRW1pdENsb3NlKHN0cmVhbSkge1xuICBpZiAoIWlzTm9kZVN0cmVhbShzdHJlYW0pKSByZXR1cm4gbnVsbFxuICBjb25zdCB3U3RhdGUgPSBzdHJlYW0uX3dyaXRhYmxlU3RhdGVcbiAgY29uc3QgclN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlXG4gIGNvbnN0IHN0YXRlID0gd1N0YXRlIHx8IHJTdGF0ZVxuICByZXR1cm4gKFxuICAgICghc3RhdGUgJiYgaXNTZXJ2ZXJSZXNwb25zZShzdHJlYW0pKSB8fCAhIShzdGF0ZSAmJiBzdGF0ZS5hdXRvRGVzdHJveSAmJiBzdGF0ZS5lbWl0Q2xvc2UgJiYgc3RhdGUuY2xvc2VkID09PSBmYWxzZSlcbiAgKVxufVxuZnVuY3Rpb24gaXNEaXN0dXJiZWQoc3RyZWFtKSB7XG4gIHZhciBfc3RyZWFtJGtJc0Rpc3R1cmJlZFxuICByZXR1cm4gISEoXG4gICAgc3RyZWFtICYmXG4gICAgKChfc3RyZWFtJGtJc0Rpc3R1cmJlZCA9IHN0cmVhbVtrSXNEaXN0dXJiZWRdKSAhPT0gbnVsbCAmJiBfc3RyZWFtJGtJc0Rpc3R1cmJlZCAhPT0gdW5kZWZpbmVkXG4gICAgICA/IF9zdHJlYW0ka0lzRGlzdHVyYmVkXG4gICAgICA6IHN0cmVhbS5yZWFkYWJsZURpZFJlYWQgfHwgc3RyZWFtLnJlYWRhYmxlQWJvcnRlZClcbiAgKVxufVxuZnVuY3Rpb24gaXNFcnJvcmVkKHN0cmVhbSkge1xuICB2YXIgX3JlZixcbiAgICBfcmVmMixcbiAgICBfcmVmMyxcbiAgICBfcmVmNCxcbiAgICBfcmVmNSxcbiAgICBfc3RyZWFtJGtJc0Vycm9yZWQsXG4gICAgX3N0cmVhbSRfcmVhZGFibGVTdGF0MyxcbiAgICBfc3RyZWFtJF93cml0YWJsZVN0YXQzLFxuICAgIF9zdHJlYW0kX3JlYWRhYmxlU3RhdDQsXG4gICAgX3N0cmVhbSRfd3JpdGFibGVTdGF0NFxuICByZXR1cm4gISEoXG4gICAgc3RyZWFtICYmXG4gICAgKChfcmVmID1cbiAgICAgIChfcmVmMiA9XG4gICAgICAgIChfcmVmMyA9XG4gICAgICAgICAgKF9yZWY0ID1cbiAgICAgICAgICAgIChfcmVmNSA9XG4gICAgICAgICAgICAgIChfc3RyZWFtJGtJc0Vycm9yZWQgPSBzdHJlYW1ba0lzRXJyb3JlZF0pICE9PSBudWxsICYmIF9zdHJlYW0ka0lzRXJyb3JlZCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgPyBfc3RyZWFtJGtJc0Vycm9yZWRcbiAgICAgICAgICAgICAgICA6IHN0cmVhbS5yZWFkYWJsZUVycm9yZWQpICE9PSBudWxsICYmIF9yZWY1ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgPyBfcmVmNVxuICAgICAgICAgICAgICA6IHN0cmVhbS53cml0YWJsZUVycm9yZWQpICE9PSBudWxsICYmIF9yZWY0ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gX3JlZjRcbiAgICAgICAgICAgIDogKF9zdHJlYW0kX3JlYWRhYmxlU3RhdDMgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGUpID09PSBudWxsIHx8IF9zdHJlYW0kX3JlYWRhYmxlU3RhdDMgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICAgIDogX3N0cmVhbSRfcmVhZGFibGVTdGF0My5lcnJvckVtaXR0ZWQpICE9PSBudWxsICYmIF9yZWYzICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IF9yZWYzXG4gICAgICAgICAgOiAoX3N0cmVhbSRfd3JpdGFibGVTdGF0MyA9IHN0cmVhbS5fd3JpdGFibGVTdGF0ZSkgPT09IG51bGwgfHwgX3N0cmVhbSRfd3JpdGFibGVTdGF0MyA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICA6IF9zdHJlYW0kX3dyaXRhYmxlU3RhdDMuZXJyb3JFbWl0dGVkKSAhPT0gbnVsbCAmJiBfcmVmMiAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gX3JlZjJcbiAgICAgICAgOiAoX3N0cmVhbSRfcmVhZGFibGVTdGF0NCA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZSkgPT09IG51bGwgfHwgX3N0cmVhbSRfcmVhZGFibGVTdGF0NCA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgIDogX3N0cmVhbSRfcmVhZGFibGVTdGF0NC5lcnJvcmVkKSAhPT0gbnVsbCAmJiBfcmVmICE9PSB1bmRlZmluZWRcbiAgICAgID8gX3JlZlxuICAgICAgOiAoX3N0cmVhbSRfd3JpdGFibGVTdGF0NCA9IHN0cmVhbS5fd3JpdGFibGVTdGF0ZSkgPT09IG51bGwgfHwgX3N0cmVhbSRfd3JpdGFibGVTdGF0NCA9PT0gdW5kZWZpbmVkXG4gICAgICA/IHVuZGVmaW5lZFxuICAgICAgOiBfc3RyZWFtJF93cml0YWJsZVN0YXQ0LmVycm9yZWQpXG4gIClcbn1cbm1vZHVsZS5leHBvcnRzID0ge1xuICBpc0Rlc3Ryb3llZCxcbiAga0lzRGVzdHJveWVkLFxuICBpc0Rpc3R1cmJlZCxcbiAga0lzRGlzdHVyYmVkLFxuICBpc0Vycm9yZWQsXG4gIGtJc0Vycm9yZWQsXG4gIGlzUmVhZGFibGUsXG4gIGtJc1JlYWRhYmxlLFxuICBrSXNDbG9zZWRQcm9taXNlLFxuICBrQ29udHJvbGxlckVycm9yRnVuY3Rpb24sXG4gIGtJc1dyaXRhYmxlLFxuICBpc0Nsb3NlZCxcbiAgaXNEdXBsZXhOb2RlU3RyZWFtLFxuICBpc0ZpbmlzaGVkLFxuICBpc0l0ZXJhYmxlLFxuICBpc1JlYWRhYmxlTm9kZVN0cmVhbSxcbiAgaXNSZWFkYWJsZVN0cmVhbSxcbiAgaXNSZWFkYWJsZUVuZGVkLFxuICBpc1JlYWRhYmxlRmluaXNoZWQsXG4gIGlzUmVhZGFibGVFcnJvcmVkLFxuICBpc05vZGVTdHJlYW0sXG4gIGlzV2ViU3RyZWFtLFxuICBpc1dyaXRhYmxlLFxuICBpc1dyaXRhYmxlTm9kZVN0cmVhbSxcbiAgaXNXcml0YWJsZVN0cmVhbSxcbiAgaXNXcml0YWJsZUVuZGVkLFxuICBpc1dyaXRhYmxlRmluaXNoZWQsXG4gIGlzV3JpdGFibGVFcnJvcmVkLFxuICBpc1NlcnZlclJlcXVlc3QsXG4gIGlzU2VydmVyUmVzcG9uc2UsXG4gIHdpbGxFbWl0Q2xvc2UsXG4gIGlzVHJhbnNmb3JtU3RyZWFtXG59XG4iLCIvLyBQb3J0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbWFmaW50b3NoL2VuZC1vZi1zdHJlYW0gd2l0aFxuLy8gcGVybWlzc2lvbiBmcm9tIHRoZSBhdXRob3IsIE1hdGhpYXMgQnV1cyAoQG1hZmludG9zaCkuXG5cbid1c2Ugc3RyaWN0J1xuXG4vKiByZXBsYWNlbWVudCBzdGFydCAqL1xuXG5jb25zdCBwcm9jZXNzID0gcmVxdWlyZSgncHJvY2Vzcy8nKVxuXG4vKiByZXBsYWNlbWVudCBlbmQgKi9cblxuY29uc3QgeyBBYm9ydEVycm9yLCBjb2RlcyB9ID0gcmVxdWlyZSgnLi4vLi4vb3Vycy9lcnJvcnMnKVxuY29uc3QgeyBFUlJfSU5WQUxJRF9BUkdfVFlQRSwgRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0UgfSA9IGNvZGVzXG5jb25zdCB7IGtFbXB0eU9iamVjdCwgb25jZSB9ID0gcmVxdWlyZSgnLi4vLi4vb3Vycy91dGlsJylcbmNvbnN0IHsgdmFsaWRhdGVBYm9ydFNpZ25hbCwgdmFsaWRhdGVGdW5jdGlvbiwgdmFsaWRhdGVPYmplY3QsIHZhbGlkYXRlQm9vbGVhbiB9ID0gcmVxdWlyZSgnLi4vdmFsaWRhdG9ycycpXG5jb25zdCB7IFByb21pc2UsIFByb21pc2VQcm90b3R5cGVUaGVuLCBTeW1ib2xEaXNwb3NlIH0gPSByZXF1aXJlKCcuLi8uLi9vdXJzL3ByaW1vcmRpYWxzJylcbmNvbnN0IHtcbiAgaXNDbG9zZWQsXG4gIGlzUmVhZGFibGUsXG4gIGlzUmVhZGFibGVOb2RlU3RyZWFtLFxuICBpc1JlYWRhYmxlU3RyZWFtLFxuICBpc1JlYWRhYmxlRmluaXNoZWQsXG4gIGlzUmVhZGFibGVFcnJvcmVkLFxuICBpc1dyaXRhYmxlLFxuICBpc1dyaXRhYmxlTm9kZVN0cmVhbSxcbiAgaXNXcml0YWJsZVN0cmVhbSxcbiAgaXNXcml0YWJsZUZpbmlzaGVkLFxuICBpc1dyaXRhYmxlRXJyb3JlZCxcbiAgaXNOb2RlU3RyZWFtLFxuICB3aWxsRW1pdENsb3NlOiBfd2lsbEVtaXRDbG9zZSxcbiAga0lzQ2xvc2VkUHJvbWlzZVxufSA9IHJlcXVpcmUoJy4vdXRpbHMnKVxubGV0IGFkZEFib3J0TGlzdGVuZXJcbmZ1bmN0aW9uIGlzUmVxdWVzdChzdHJlYW0pIHtcbiAgcmV0dXJuIHN0cmVhbS5zZXRIZWFkZXIgJiYgdHlwZW9mIHN0cmVhbS5hYm9ydCA9PT0gJ2Z1bmN0aW9uJ1xufVxuY29uc3Qgbm9wID0gKCkgPT4ge31cbmZ1bmN0aW9uIGVvcyhzdHJlYW0sIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gIHZhciBfb3B0aW9ucyRyZWFkYWJsZSwgX29wdGlvbnMkd3JpdGFibGVcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHtcbiAgICBjYWxsYmFjayA9IG9wdGlvbnNcbiAgICBvcHRpb25zID0ga0VtcHR5T2JqZWN0XG4gIH0gZWxzZSBpZiAob3B0aW9ucyA9PSBudWxsKSB7XG4gICAgb3B0aW9ucyA9IGtFbXB0eU9iamVjdFxuICB9IGVsc2Uge1xuICAgIHZhbGlkYXRlT2JqZWN0KG9wdGlvbnMsICdvcHRpb25zJylcbiAgfVxuICB2YWxpZGF0ZUZ1bmN0aW9uKGNhbGxiYWNrLCAnY2FsbGJhY2snKVxuICB2YWxpZGF0ZUFib3J0U2lnbmFsKG9wdGlvbnMuc2lnbmFsLCAnb3B0aW9ucy5zaWduYWwnKVxuICBjYWxsYmFjayA9IG9uY2UoY2FsbGJhY2spXG4gIGlmIChpc1JlYWRhYmxlU3RyZWFtKHN0cmVhbSkgfHwgaXNXcml0YWJsZVN0cmVhbShzdHJlYW0pKSB7XG4gICAgcmV0dXJuIGVvc1dlYihzdHJlYW0sIG9wdGlvbnMsIGNhbGxiYWNrKVxuICB9XG4gIGlmICghaXNOb2RlU3RyZWFtKHN0cmVhbSkpIHtcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUoJ3N0cmVhbScsIFsnUmVhZGFibGVTdHJlYW0nLCAnV3JpdGFibGVTdHJlYW0nLCAnU3RyZWFtJ10sIHN0cmVhbSlcbiAgfVxuICBjb25zdCByZWFkYWJsZSA9XG4gICAgKF9vcHRpb25zJHJlYWRhYmxlID0gb3B0aW9ucy5yZWFkYWJsZSkgIT09IG51bGwgJiYgX29wdGlvbnMkcmVhZGFibGUgIT09IHVuZGVmaW5lZFxuICAgICAgPyBfb3B0aW9ucyRyZWFkYWJsZVxuICAgICAgOiBpc1JlYWRhYmxlTm9kZVN0cmVhbShzdHJlYW0pXG4gIGNvbnN0IHdyaXRhYmxlID1cbiAgICAoX29wdGlvbnMkd3JpdGFibGUgPSBvcHRpb25zLndyaXRhYmxlKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyR3cml0YWJsZSAhPT0gdW5kZWZpbmVkXG4gICAgICA/IF9vcHRpb25zJHdyaXRhYmxlXG4gICAgICA6IGlzV3JpdGFibGVOb2RlU3RyZWFtKHN0cmVhbSlcbiAgY29uc3Qgd1N0YXRlID0gc3RyZWFtLl93cml0YWJsZVN0YXRlXG4gIGNvbnN0IHJTdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZVxuICBjb25zdCBvbmxlZ2FjeWZpbmlzaCA9ICgpID0+IHtcbiAgICBpZiAoIXN0cmVhbS53cml0YWJsZSkge1xuICAgICAgb25maW5pc2goKVxuICAgIH1cbiAgfVxuXG4gIC8vIFRPRE8gKHJvbmFnKTogSW1wcm92ZSBzb2Z0IGRldGVjdGlvbiB0byBpbmNsdWRlIGNvcmUgbW9kdWxlcyBhbmRcbiAgLy8gY29tbW9uIGVjb3N5c3RlbSBtb2R1bGVzIHRoYXQgZG8gcHJvcGVybHkgZW1pdCAnY2xvc2UnIGJ1dCBmYWlsXG4gIC8vIHRoaXMgZ2VuZXJpYyBjaGVjay5cbiAgbGV0IHdpbGxFbWl0Q2xvc2UgPVxuICAgIF93aWxsRW1pdENsb3NlKHN0cmVhbSkgJiYgaXNSZWFkYWJsZU5vZGVTdHJlYW0oc3RyZWFtKSA9PT0gcmVhZGFibGUgJiYgaXNXcml0YWJsZU5vZGVTdHJlYW0oc3RyZWFtKSA9PT0gd3JpdGFibGVcbiAgbGV0IHdyaXRhYmxlRmluaXNoZWQgPSBpc1dyaXRhYmxlRmluaXNoZWQoc3RyZWFtLCBmYWxzZSlcbiAgY29uc3Qgb25maW5pc2ggPSAoKSA9PiB7XG4gICAgd3JpdGFibGVGaW5pc2hlZCA9IHRydWVcbiAgICAvLyBTdHJlYW0gc2hvdWxkIG5vdCBiZSBkZXN0cm95ZWQgaGVyZS4gSWYgaXQgaXMgdGhhdFxuICAgIC8vIG1lYW5zIHRoYXQgdXNlciBzcGFjZSBpcyBkb2luZyBzb21ldGhpbmcgZGlmZmVyZW50bHkgYW5kXG4gICAgLy8gd2UgY2Fubm90IHRydXN0IHdpbGxFbWl0Q2xvc2UuXG4gICAgaWYgKHN0cmVhbS5kZXN0cm95ZWQpIHtcbiAgICAgIHdpbGxFbWl0Q2xvc2UgPSBmYWxzZVxuICAgIH1cbiAgICBpZiAod2lsbEVtaXRDbG9zZSAmJiAoIXN0cmVhbS5yZWFkYWJsZSB8fCByZWFkYWJsZSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoIXJlYWRhYmxlIHx8IHJlYWRhYmxlRmluaXNoZWQpIHtcbiAgICAgIGNhbGxiYWNrLmNhbGwoc3RyZWFtKVxuICAgIH1cbiAgfVxuICBsZXQgcmVhZGFibGVGaW5pc2hlZCA9IGlzUmVhZGFibGVGaW5pc2hlZChzdHJlYW0sIGZhbHNlKVxuICBjb25zdCBvbmVuZCA9ICgpID0+IHtcbiAgICByZWFkYWJsZUZpbmlzaGVkID0gdHJ1ZVxuICAgIC8vIFN0cmVhbSBzaG91bGQgbm90IGJlIGRlc3Ryb3llZCBoZXJlLiBJZiBpdCBpcyB0aGF0XG4gICAgLy8gbWVhbnMgdGhhdCB1c2VyIHNwYWNlIGlzIGRvaW5nIHNvbWV0aGluZyBkaWZmZXJlbnRseSBhbmRcbiAgICAvLyB3ZSBjYW5ub3QgdHJ1c3Qgd2lsbEVtaXRDbG9zZS5cbiAgICBpZiAoc3RyZWFtLmRlc3Ryb3llZCkge1xuICAgICAgd2lsbEVtaXRDbG9zZSA9IGZhbHNlXG4gICAgfVxuICAgIGlmICh3aWxsRW1pdENsb3NlICYmICghc3RyZWFtLndyaXRhYmxlIHx8IHdyaXRhYmxlKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmICghd3JpdGFibGUgfHwgd3JpdGFibGVGaW5pc2hlZCkge1xuICAgICAgY2FsbGJhY2suY2FsbChzdHJlYW0pXG4gICAgfVxuICB9XG4gIGNvbnN0IG9uZXJyb3IgPSAoZXJyKSA9PiB7XG4gICAgY2FsbGJhY2suY2FsbChzdHJlYW0sIGVycilcbiAgfVxuICBsZXQgY2xvc2VkID0gaXNDbG9zZWQoc3RyZWFtKVxuICBjb25zdCBvbmNsb3NlID0gKCkgPT4ge1xuICAgIGNsb3NlZCA9IHRydWVcbiAgICBjb25zdCBlcnJvcmVkID0gaXNXcml0YWJsZUVycm9yZWQoc3RyZWFtKSB8fCBpc1JlYWRhYmxlRXJyb3JlZChzdHJlYW0pXG4gICAgaWYgKGVycm9yZWQgJiYgdHlwZW9mIGVycm9yZWQgIT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrLmNhbGwoc3RyZWFtLCBlcnJvcmVkKVxuICAgIH1cbiAgICBpZiAocmVhZGFibGUgJiYgIXJlYWRhYmxlRmluaXNoZWQgJiYgaXNSZWFkYWJsZU5vZGVTdHJlYW0oc3RyZWFtLCB0cnVlKSkge1xuICAgICAgaWYgKCFpc1JlYWRhYmxlRmluaXNoZWQoc3RyZWFtLCBmYWxzZSkpIHJldHVybiBjYWxsYmFjay5jYWxsKHN0cmVhbSwgbmV3IEVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFKCkpXG4gICAgfVxuICAgIGlmICh3cml0YWJsZSAmJiAhd3JpdGFibGVGaW5pc2hlZCkge1xuICAgICAgaWYgKCFpc1dyaXRhYmxlRmluaXNoZWQoc3RyZWFtLCBmYWxzZSkpIHJldHVybiBjYWxsYmFjay5jYWxsKHN0cmVhbSwgbmV3IEVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFKCkpXG4gICAgfVxuICAgIGNhbGxiYWNrLmNhbGwoc3RyZWFtKVxuICB9XG4gIGNvbnN0IG9uY2xvc2VkID0gKCkgPT4ge1xuICAgIGNsb3NlZCA9IHRydWVcbiAgICBjb25zdCBlcnJvcmVkID0gaXNXcml0YWJsZUVycm9yZWQoc3RyZWFtKSB8fCBpc1JlYWRhYmxlRXJyb3JlZChzdHJlYW0pXG4gICAgaWYgKGVycm9yZWQgJiYgdHlwZW9mIGVycm9yZWQgIT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrLmNhbGwoc3RyZWFtLCBlcnJvcmVkKVxuICAgIH1cbiAgICBjYWxsYmFjay5jYWxsKHN0cmVhbSlcbiAgfVxuICBjb25zdCBvbnJlcXVlc3QgPSAoKSA9PiB7XG4gICAgc3RyZWFtLnJlcS5vbignZmluaXNoJywgb25maW5pc2gpXG4gIH1cbiAgaWYgKGlzUmVxdWVzdChzdHJlYW0pKSB7XG4gICAgc3RyZWFtLm9uKCdjb21wbGV0ZScsIG9uZmluaXNoKVxuICAgIGlmICghd2lsbEVtaXRDbG9zZSkge1xuICAgICAgc3RyZWFtLm9uKCdhYm9ydCcsIG9uY2xvc2UpXG4gICAgfVxuICAgIGlmIChzdHJlYW0ucmVxKSB7XG4gICAgICBvbnJlcXVlc3QoKVxuICAgIH0gZWxzZSB7XG4gICAgICBzdHJlYW0ub24oJ3JlcXVlc3QnLCBvbnJlcXVlc3QpXG4gICAgfVxuICB9IGVsc2UgaWYgKHdyaXRhYmxlICYmICF3U3RhdGUpIHtcbiAgICAvLyBsZWdhY3kgc3RyZWFtc1xuICAgIHN0cmVhbS5vbignZW5kJywgb25sZWdhY3lmaW5pc2gpXG4gICAgc3RyZWFtLm9uKCdjbG9zZScsIG9ubGVnYWN5ZmluaXNoKVxuICB9XG5cbiAgLy8gTm90IGFsbCBzdHJlYW1zIHdpbGwgZW1pdCAnY2xvc2UnIGFmdGVyICdhYm9ydGVkJy5cbiAgaWYgKCF3aWxsRW1pdENsb3NlICYmIHR5cGVvZiBzdHJlYW0uYWJvcnRlZCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgc3RyZWFtLm9uKCdhYm9ydGVkJywgb25jbG9zZSlcbiAgfVxuICBzdHJlYW0ub24oJ2VuZCcsIG9uZW5kKVxuICBzdHJlYW0ub24oJ2ZpbmlzaCcsIG9uZmluaXNoKVxuICBpZiAob3B0aW9ucy5lcnJvciAhPT0gZmFsc2UpIHtcbiAgICBzdHJlYW0ub24oJ2Vycm9yJywgb25lcnJvcilcbiAgfVxuICBzdHJlYW0ub24oJ2Nsb3NlJywgb25jbG9zZSlcbiAgaWYgKGNsb3NlZCkge1xuICAgIHByb2Nlc3MubmV4dFRpY2sob25jbG9zZSlcbiAgfSBlbHNlIGlmIChcbiAgICAod1N0YXRlICE9PSBudWxsICYmIHdTdGF0ZSAhPT0gdW5kZWZpbmVkICYmIHdTdGF0ZS5lcnJvckVtaXR0ZWQpIHx8XG4gICAgKHJTdGF0ZSAhPT0gbnVsbCAmJiByU3RhdGUgIT09IHVuZGVmaW5lZCAmJiByU3RhdGUuZXJyb3JFbWl0dGVkKVxuICApIHtcbiAgICBpZiAoIXdpbGxFbWl0Q2xvc2UpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2sob25jbG9zZWQpXG4gICAgfVxuICB9IGVsc2UgaWYgKFxuICAgICFyZWFkYWJsZSAmJlxuICAgICghd2lsbEVtaXRDbG9zZSB8fCBpc1JlYWRhYmxlKHN0cmVhbSkpICYmXG4gICAgKHdyaXRhYmxlRmluaXNoZWQgfHwgaXNXcml0YWJsZShzdHJlYW0pID09PSBmYWxzZSlcbiAgKSB7XG4gICAgcHJvY2Vzcy5uZXh0VGljayhvbmNsb3NlZClcbiAgfSBlbHNlIGlmIChcbiAgICAhd3JpdGFibGUgJiZcbiAgICAoIXdpbGxFbWl0Q2xvc2UgfHwgaXNXcml0YWJsZShzdHJlYW0pKSAmJlxuICAgIChyZWFkYWJsZUZpbmlzaGVkIHx8IGlzUmVhZGFibGUoc3RyZWFtKSA9PT0gZmFsc2UpXG4gICkge1xuICAgIHByb2Nlc3MubmV4dFRpY2sob25jbG9zZWQpXG4gIH0gZWxzZSBpZiAoclN0YXRlICYmIHN0cmVhbS5yZXEgJiYgc3RyZWFtLmFib3J0ZWQpIHtcbiAgICBwcm9jZXNzLm5leHRUaWNrKG9uY2xvc2VkKVxuICB9XG4gIGNvbnN0IGNsZWFudXAgPSAoKSA9PiB7XG4gICAgY2FsbGJhY2sgPSBub3BcbiAgICBzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2Fib3J0ZWQnLCBvbmNsb3NlKVxuICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignY29tcGxldGUnLCBvbmZpbmlzaClcbiAgICBzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2Fib3J0Jywgb25jbG9zZSlcbiAgICBzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ3JlcXVlc3QnLCBvbnJlcXVlc3QpXG4gICAgaWYgKHN0cmVhbS5yZXEpIHN0cmVhbS5yZXEucmVtb3ZlTGlzdGVuZXIoJ2ZpbmlzaCcsIG9uZmluaXNoKVxuICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignZW5kJywgb25sZWdhY3lmaW5pc2gpXG4gICAgc3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIG9ubGVnYWN5ZmluaXNoKVxuICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignZmluaXNoJywgb25maW5pc2gpXG4gICAgc3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBvbmVuZClcbiAgICBzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvcilcbiAgICBzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSlcbiAgfVxuICBpZiAob3B0aW9ucy5zaWduYWwgJiYgIWNsb3NlZCkge1xuICAgIGNvbnN0IGFib3J0ID0gKCkgPT4ge1xuICAgICAgLy8gS2VlcCBpdCBiZWNhdXNlIGNsZWFudXAgcmVtb3ZlcyBpdC5cbiAgICAgIGNvbnN0IGVuZENhbGxiYWNrID0gY2FsbGJhY2tcbiAgICAgIGNsZWFudXAoKVxuICAgICAgZW5kQ2FsbGJhY2suY2FsbChcbiAgICAgICAgc3RyZWFtLFxuICAgICAgICBuZXcgQWJvcnRFcnJvcih1bmRlZmluZWQsIHtcbiAgICAgICAgICBjYXVzZTogb3B0aW9ucy5zaWduYWwucmVhc29uXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgfVxuICAgIGlmIChvcHRpb25zLnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGFib3J0KVxuICAgIH0gZWxzZSB7XG4gICAgICBhZGRBYm9ydExpc3RlbmVyID0gYWRkQWJvcnRMaXN0ZW5lciB8fCByZXF1aXJlKCcuLi8uLi9vdXJzL3V0aWwnKS5hZGRBYm9ydExpc3RlbmVyXG4gICAgICBjb25zdCBkaXNwb3NhYmxlID0gYWRkQWJvcnRMaXN0ZW5lcihvcHRpb25zLnNpZ25hbCwgYWJvcnQpXG4gICAgICBjb25zdCBvcmlnaW5hbENhbGxiYWNrID0gY2FsbGJhY2tcbiAgICAgIGNhbGxiYWNrID0gb25jZSgoLi4uYXJncykgPT4ge1xuICAgICAgICBkaXNwb3NhYmxlW1N5bWJvbERpc3Bvc2VdKClcbiAgICAgICAgb3JpZ2luYWxDYWxsYmFjay5hcHBseShzdHJlYW0sIGFyZ3MpXG4gICAgICB9KVxuICAgIH1cbiAgfVxuICByZXR1cm4gY2xlYW51cFxufVxuZnVuY3Rpb24gZW9zV2ViKHN0cmVhbSwgb3B0aW9ucywgY2FsbGJhY2spIHtcbiAgbGV0IGlzQWJvcnRlZCA9IGZhbHNlXG4gIGxldCBhYm9ydCA9IG5vcFxuICBpZiAob3B0aW9ucy5zaWduYWwpIHtcbiAgICBhYm9ydCA9ICgpID0+IHtcbiAgICAgIGlzQWJvcnRlZCA9IHRydWVcbiAgICAgIGNhbGxiYWNrLmNhbGwoXG4gICAgICAgIHN0cmVhbSxcbiAgICAgICAgbmV3IEFib3J0RXJyb3IodW5kZWZpbmVkLCB7XG4gICAgICAgICAgY2F1c2U6IG9wdGlvbnMuc2lnbmFsLnJlYXNvblxuICAgICAgICB9KVxuICAgICAgKVxuICAgIH1cbiAgICBpZiAob3B0aW9ucy5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhhYm9ydClcbiAgICB9IGVsc2Uge1xuICAgICAgYWRkQWJvcnRMaXN0ZW5lciA9IGFkZEFib3J0TGlzdGVuZXIgfHwgcmVxdWlyZSgnLi4vLi4vb3Vycy91dGlsJykuYWRkQWJvcnRMaXN0ZW5lclxuICAgICAgY29uc3QgZGlzcG9zYWJsZSA9IGFkZEFib3J0TGlzdGVuZXIob3B0aW9ucy5zaWduYWwsIGFib3J0KVxuICAgICAgY29uc3Qgb3JpZ2luYWxDYWxsYmFjayA9IGNhbGxiYWNrXG4gICAgICBjYWxsYmFjayA9IG9uY2UoKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgZGlzcG9zYWJsZVtTeW1ib2xEaXNwb3NlXSgpXG4gICAgICAgIG9yaWdpbmFsQ2FsbGJhY2suYXBwbHkoc3RyZWFtLCBhcmdzKVxuICAgICAgfSlcbiAgICB9XG4gIH1cbiAgY29uc3QgcmVzb2x2ZXJGbiA9ICguLi5hcmdzKSA9PiB7XG4gICAgaWYgKCFpc0Fib3J0ZWQpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4gY2FsbGJhY2suYXBwbHkoc3RyZWFtLCBhcmdzKSlcbiAgICB9XG4gIH1cbiAgUHJvbWlzZVByb3RvdHlwZVRoZW4oc3RyZWFtW2tJc0Nsb3NlZFByb21pc2VdLnByb21pc2UsIHJlc29sdmVyRm4sIHJlc29sdmVyRm4pXG4gIHJldHVybiBub3Bcbn1cbmZ1bmN0aW9uIGZpbmlzaGVkKHN0cmVhbSwgb3B0cykge1xuICB2YXIgX29wdHNcbiAgbGV0IGF1dG9DbGVhbnVwID0gZmFsc2VcbiAgaWYgKG9wdHMgPT09IG51bGwpIHtcbiAgICBvcHRzID0ga0VtcHR5T2JqZWN0XG4gIH1cbiAgaWYgKChfb3B0cyA9IG9wdHMpICE9PSBudWxsICYmIF9vcHRzICE9PSB1bmRlZmluZWQgJiYgX29wdHMuY2xlYW51cCkge1xuICAgIHZhbGlkYXRlQm9vbGVhbihvcHRzLmNsZWFudXAsICdjbGVhbnVwJylcbiAgICBhdXRvQ2xlYW51cCA9IG9wdHMuY2xlYW51cFxuICB9XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgY2xlYW51cCA9IGVvcyhzdHJlYW0sIG9wdHMsIChlcnIpID0+IHtcbiAgICAgIGlmIChhdXRvQ2xlYW51cCkge1xuICAgICAgICBjbGVhbnVwKClcbiAgICAgIH1cbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmVqZWN0KGVycilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmUoKVxuICAgICAgfVxuICAgIH0pXG4gIH0pXG59XG5tb2R1bGUuZXhwb3J0cyA9IGVvc1xubW9kdWxlLmV4cG9ydHMuZmluaXNoZWQgPSBmaW5pc2hlZFxuIiwiJ3VzZSBzdHJpY3QnXG5cbi8qIHJlcGxhY2VtZW50IHN0YXJ0ICovXG5cbmNvbnN0IHByb2Nlc3MgPSByZXF1aXJlKCdwcm9jZXNzLycpXG5cbi8qIHJlcGxhY2VtZW50IGVuZCAqL1xuXG5jb25zdCB7XG4gIGFnZ3JlZ2F0ZVR3b0Vycm9ycyxcbiAgY29kZXM6IHsgRVJSX01VTFRJUExFX0NBTExCQUNLIH0sXG4gIEFib3J0RXJyb3Jcbn0gPSByZXF1aXJlKCcuLi8uLi9vdXJzL2Vycm9ycycpXG5jb25zdCB7IFN5bWJvbCB9ID0gcmVxdWlyZSgnLi4vLi4vb3Vycy9wcmltb3JkaWFscycpXG5jb25zdCB7IGtJc0Rlc3Ryb3llZCwgaXNEZXN0cm95ZWQsIGlzRmluaXNoZWQsIGlzU2VydmVyUmVxdWVzdCB9ID0gcmVxdWlyZSgnLi91dGlscycpXG5jb25zdCBrRGVzdHJveSA9IFN5bWJvbCgna0Rlc3Ryb3knKVxuY29uc3Qga0NvbnN0cnVjdCA9IFN5bWJvbCgna0NvbnN0cnVjdCcpXG5mdW5jdGlvbiBjaGVja0Vycm9yKGVyciwgdywgcikge1xuICBpZiAoZXJyKSB7XG4gICAgLy8gQXZvaWQgVjggbGVhaywgaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL3B1bGwvMzQxMDMjaXNzdWVjb21tZW50LTY1MjAwMjM2NFxuICAgIGVyci5zdGFjayAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC1leHByZXNzaW9uc1xuXG4gICAgaWYgKHcgJiYgIXcuZXJyb3JlZCkge1xuICAgICAgdy5lcnJvcmVkID0gZXJyXG4gICAgfVxuICAgIGlmIChyICYmICFyLmVycm9yZWQpIHtcbiAgICAgIHIuZXJyb3JlZCA9IGVyclxuICAgIH1cbiAgfVxufVxuXG4vLyBCYWNrd2FyZHMgY29tcGF0LiBjYigpIGlzIHVuZG9jdW1lbnRlZCBhbmQgdW51c2VkIGluIGNvcmUgYnV0XG4vLyB1bmZvcnR1bmF0ZWx5IG1pZ2h0IGJlIHVzZWQgYnkgbW9kdWxlcy5cbmZ1bmN0aW9uIGRlc3Ryb3koZXJyLCBjYikge1xuICBjb25zdCByID0gdGhpcy5fcmVhZGFibGVTdGF0ZVxuICBjb25zdCB3ID0gdGhpcy5fd3JpdGFibGVTdGF0ZVxuICAvLyBXaXRoIGR1cGxleCBzdHJlYW1zIHdlIHVzZSB0aGUgd3JpdGFibGUgc2lkZSBmb3Igc3RhdGUuXG4gIGNvbnN0IHMgPSB3IHx8IHJcbiAgaWYgKCh3ICE9PSBudWxsICYmIHcgIT09IHVuZGVmaW5lZCAmJiB3LmRlc3Ryb3llZCkgfHwgKHIgIT09IG51bGwgJiYgciAhPT0gdW5kZWZpbmVkICYmIHIuZGVzdHJveWVkKSkge1xuICAgIGlmICh0eXBlb2YgY2IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNiKClcbiAgICB9XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8vIFdlIHNldCBkZXN0cm95ZWQgdG8gdHJ1ZSBiZWZvcmUgZmlyaW5nIGVycm9yIGNhbGxiYWNrcyBpbiBvcmRlclxuICAvLyB0byBtYWtlIGl0IHJlLWVudHJhbmNlIHNhZmUgaW4gY2FzZSBkZXN0cm95KCkgaXMgY2FsbGVkIHdpdGhpbiBjYWxsYmFja3NcbiAgY2hlY2tFcnJvcihlcnIsIHcsIHIpXG4gIGlmICh3KSB7XG4gICAgdy5kZXN0cm95ZWQgPSB0cnVlXG4gIH1cbiAgaWYgKHIpIHtcbiAgICByLmRlc3Ryb3llZCA9IHRydWVcbiAgfVxuXG4gIC8vIElmIHN0aWxsIGNvbnN0cnVjdGluZyB0aGVuIGRlZmVyIGNhbGxpbmcgX2Rlc3Ryb3kuXG4gIGlmICghcy5jb25zdHJ1Y3RlZCkge1xuICAgIHRoaXMub25jZShrRGVzdHJveSwgZnVuY3Rpb24gKGVyKSB7XG4gICAgICBfZGVzdHJveSh0aGlzLCBhZ2dyZWdhdGVUd29FcnJvcnMoZXIsIGVyciksIGNiKVxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgX2Rlc3Ryb3kodGhpcywgZXJyLCBjYilcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuZnVuY3Rpb24gX2Rlc3Ryb3koc2VsZiwgZXJyLCBjYikge1xuICBsZXQgY2FsbGVkID0gZmFsc2VcbiAgZnVuY3Rpb24gb25EZXN0cm95KGVycikge1xuICAgIGlmIChjYWxsZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjYWxsZWQgPSB0cnVlXG4gICAgY29uc3QgciA9IHNlbGYuX3JlYWRhYmxlU3RhdGVcbiAgICBjb25zdCB3ID0gc2VsZi5fd3JpdGFibGVTdGF0ZVxuICAgIGNoZWNrRXJyb3IoZXJyLCB3LCByKVxuICAgIGlmICh3KSB7XG4gICAgICB3LmNsb3NlZCA9IHRydWVcbiAgICB9XG4gICAgaWYgKHIpIHtcbiAgICAgIHIuY2xvc2VkID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAodHlwZW9mIGNiID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjYihlcnIpXG4gICAgfVxuICAgIGlmIChlcnIpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZW1pdEVycm9yQ2xvc2VOVCwgc2VsZiwgZXJyKVxuICAgIH0gZWxzZSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGVtaXRDbG9zZU5ULCBzZWxmKVxuICAgIH1cbiAgfVxuICB0cnkge1xuICAgIHNlbGYuX2Rlc3Ryb3koZXJyIHx8IG51bGwsIG9uRGVzdHJveSlcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgb25EZXN0cm95KGVycilcbiAgfVxufVxuZnVuY3Rpb24gZW1pdEVycm9yQ2xvc2VOVChzZWxmLCBlcnIpIHtcbiAgZW1pdEVycm9yTlQoc2VsZiwgZXJyKVxuICBlbWl0Q2xvc2VOVChzZWxmKVxufVxuZnVuY3Rpb24gZW1pdENsb3NlTlQoc2VsZikge1xuICBjb25zdCByID0gc2VsZi5fcmVhZGFibGVTdGF0ZVxuICBjb25zdCB3ID0gc2VsZi5fd3JpdGFibGVTdGF0ZVxuICBpZiAodykge1xuICAgIHcuY2xvc2VFbWl0dGVkID0gdHJ1ZVxuICB9XG4gIGlmIChyKSB7XG4gICAgci5jbG9zZUVtaXR0ZWQgPSB0cnVlXG4gIH1cbiAgaWYgKCh3ICE9PSBudWxsICYmIHcgIT09IHVuZGVmaW5lZCAmJiB3LmVtaXRDbG9zZSkgfHwgKHIgIT09IG51bGwgJiYgciAhPT0gdW5kZWZpbmVkICYmIHIuZW1pdENsb3NlKSkge1xuICAgIHNlbGYuZW1pdCgnY2xvc2UnKVxuICB9XG59XG5mdW5jdGlvbiBlbWl0RXJyb3JOVChzZWxmLCBlcnIpIHtcbiAgY29uc3QgciA9IHNlbGYuX3JlYWRhYmxlU3RhdGVcbiAgY29uc3QgdyA9IHNlbGYuX3dyaXRhYmxlU3RhdGVcbiAgaWYgKCh3ICE9PSBudWxsICYmIHcgIT09IHVuZGVmaW5lZCAmJiB3LmVycm9yRW1pdHRlZCkgfHwgKHIgIT09IG51bGwgJiYgciAhPT0gdW5kZWZpbmVkICYmIHIuZXJyb3JFbWl0dGVkKSkge1xuICAgIHJldHVyblxuICB9XG4gIGlmICh3KSB7XG4gICAgdy5lcnJvckVtaXR0ZWQgPSB0cnVlXG4gIH1cbiAgaWYgKHIpIHtcbiAgICByLmVycm9yRW1pdHRlZCA9IHRydWVcbiAgfVxuICBzZWxmLmVtaXQoJ2Vycm9yJywgZXJyKVxufVxuZnVuY3Rpb24gdW5kZXN0cm95KCkge1xuICBjb25zdCByID0gdGhpcy5fcmVhZGFibGVTdGF0ZVxuICBjb25zdCB3ID0gdGhpcy5fd3JpdGFibGVTdGF0ZVxuICBpZiAocikge1xuICAgIHIuY29uc3RydWN0ZWQgPSB0cnVlXG4gICAgci5jbG9zZWQgPSBmYWxzZVxuICAgIHIuY2xvc2VFbWl0dGVkID0gZmFsc2VcbiAgICByLmRlc3Ryb3llZCA9IGZhbHNlXG4gICAgci5lcnJvcmVkID0gbnVsbFxuICAgIHIuZXJyb3JFbWl0dGVkID0gZmFsc2VcbiAgICByLnJlYWRpbmcgPSBmYWxzZVxuICAgIHIuZW5kZWQgPSByLnJlYWRhYmxlID09PSBmYWxzZVxuICAgIHIuZW5kRW1pdHRlZCA9IHIucmVhZGFibGUgPT09IGZhbHNlXG4gIH1cbiAgaWYgKHcpIHtcbiAgICB3LmNvbnN0cnVjdGVkID0gdHJ1ZVxuICAgIHcuZGVzdHJveWVkID0gZmFsc2VcbiAgICB3LmNsb3NlZCA9IGZhbHNlXG4gICAgdy5jbG9zZUVtaXR0ZWQgPSBmYWxzZVxuICAgIHcuZXJyb3JlZCA9IG51bGxcbiAgICB3LmVycm9yRW1pdHRlZCA9IGZhbHNlXG4gICAgdy5maW5hbENhbGxlZCA9IGZhbHNlXG4gICAgdy5wcmVmaW5pc2hlZCA9IGZhbHNlXG4gICAgdy5lbmRlZCA9IHcud3JpdGFibGUgPT09IGZhbHNlXG4gICAgdy5lbmRpbmcgPSB3LndyaXRhYmxlID09PSBmYWxzZVxuICAgIHcuZmluaXNoZWQgPSB3LndyaXRhYmxlID09PSBmYWxzZVxuICB9XG59XG5mdW5jdGlvbiBlcnJvck9yRGVzdHJveShzdHJlYW0sIGVyciwgc3luYykge1xuICAvLyBXZSBoYXZlIHRlc3RzIHRoYXQgcmVseSBvbiBlcnJvcnMgYmVpbmcgZW1pdHRlZFxuICAvLyBpbiB0aGUgc2FtZSB0aWNrLCBzbyBjaGFuZ2luZyB0aGlzIGlzIHNlbXZlciBtYWpvci5cbiAgLy8gRm9yIG5vdyB3aGVuIHlvdSBvcHQtaW4gdG8gYXV0b0Rlc3Ryb3kgd2UgYWxsb3dcbiAgLy8gdGhlIGVycm9yIHRvIGJlIGVtaXR0ZWQgbmV4dFRpY2suIEluIGEgZnV0dXJlXG4gIC8vIHNlbXZlciBtYWpvciB1cGRhdGUgd2Ugc2hvdWxkIGNoYW5nZSB0aGUgZGVmYXVsdCB0byB0aGlzLlxuXG4gIGNvbnN0IHIgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGVcbiAgY29uc3QgdyA9IHN0cmVhbS5fd3JpdGFibGVTdGF0ZVxuICBpZiAoKHcgIT09IG51bGwgJiYgdyAhPT0gdW5kZWZpbmVkICYmIHcuZGVzdHJveWVkKSB8fCAociAhPT0gbnVsbCAmJiByICE9PSB1bmRlZmluZWQgJiYgci5kZXN0cm95ZWQpKSB7XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuICBpZiAoKHIgIT09IG51bGwgJiYgciAhPT0gdW5kZWZpbmVkICYmIHIuYXV0b0Rlc3Ryb3kpIHx8ICh3ICE9PSBudWxsICYmIHcgIT09IHVuZGVmaW5lZCAmJiB3LmF1dG9EZXN0cm95KSlcbiAgICBzdHJlYW0uZGVzdHJveShlcnIpXG4gIGVsc2UgaWYgKGVycikge1xuICAgIC8vIEF2b2lkIFY4IGxlYWssIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9wdWxsLzM0MTAzI2lzc3VlY29tbWVudC02NTIwMDIzNjRcbiAgICBlcnIuc3RhY2sgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnNcblxuICAgIGlmICh3ICYmICF3LmVycm9yZWQpIHtcbiAgICAgIHcuZXJyb3JlZCA9IGVyclxuICAgIH1cbiAgICBpZiAociAmJiAhci5lcnJvcmVkKSB7XG4gICAgICByLmVycm9yZWQgPSBlcnJcbiAgICB9XG4gICAgaWYgKHN5bmMpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZW1pdEVycm9yTlQsIHN0cmVhbSwgZXJyKVxuICAgIH0gZWxzZSB7XG4gICAgICBlbWl0RXJyb3JOVChzdHJlYW0sIGVycilcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIGNvbnN0cnVjdChzdHJlYW0sIGNiKSB7XG4gIGlmICh0eXBlb2Ygc3RyZWFtLl9jb25zdHJ1Y3QgIT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm5cbiAgfVxuICBjb25zdCByID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlXG4gIGNvbnN0IHcgPSBzdHJlYW0uX3dyaXRhYmxlU3RhdGVcbiAgaWYgKHIpIHtcbiAgICByLmNvbnN0cnVjdGVkID0gZmFsc2VcbiAgfVxuICBpZiAodykge1xuICAgIHcuY29uc3RydWN0ZWQgPSBmYWxzZVxuICB9XG4gIHN0cmVhbS5vbmNlKGtDb25zdHJ1Y3QsIGNiKVxuICBpZiAoc3RyZWFtLmxpc3RlbmVyQ291bnQoa0NvbnN0cnVjdCkgPiAxKSB7XG4gICAgLy8gRHVwbGV4XG4gICAgcmV0dXJuXG4gIH1cbiAgcHJvY2Vzcy5uZXh0VGljayhjb25zdHJ1Y3ROVCwgc3RyZWFtKVxufVxuZnVuY3Rpb24gY29uc3RydWN0TlQoc3RyZWFtKSB7XG4gIGxldCBjYWxsZWQgPSBmYWxzZVxuICBmdW5jdGlvbiBvbkNvbnN0cnVjdChlcnIpIHtcbiAgICBpZiAoY2FsbGVkKSB7XG4gICAgICBlcnJvck9yRGVzdHJveShzdHJlYW0sIGVyciAhPT0gbnVsbCAmJiBlcnIgIT09IHVuZGVmaW5lZCA/IGVyciA6IG5ldyBFUlJfTVVMVElQTEVfQ0FMTEJBQ0soKSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjYWxsZWQgPSB0cnVlXG4gICAgY29uc3QgciA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZVxuICAgIGNvbnN0IHcgPSBzdHJlYW0uX3dyaXRhYmxlU3RhdGVcbiAgICBjb25zdCBzID0gdyB8fCByXG4gICAgaWYgKHIpIHtcbiAgICAgIHIuY29uc3RydWN0ZWQgPSB0cnVlXG4gICAgfVxuICAgIGlmICh3KSB7XG4gICAgICB3LmNvbnN0cnVjdGVkID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAocy5kZXN0cm95ZWQpIHtcbiAgICAgIHN0cmVhbS5lbWl0KGtEZXN0cm95LCBlcnIpXG4gICAgfSBlbHNlIGlmIChlcnIpIHtcbiAgICAgIGVycm9yT3JEZXN0cm95KHN0cmVhbSwgZXJyLCB0cnVlKVxuICAgIH0gZWxzZSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGVtaXRDb25zdHJ1Y3ROVCwgc3RyZWFtKVxuICAgIH1cbiAgfVxuICB0cnkge1xuICAgIHN0cmVhbS5fY29uc3RydWN0KChlcnIpID0+IHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2sob25Db25zdHJ1Y3QsIGVycilcbiAgICB9KVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBwcm9jZXNzLm5leHRUaWNrKG9uQ29uc3RydWN0LCBlcnIpXG4gIH1cbn1cbmZ1bmN0aW9uIGVtaXRDb25zdHJ1Y3ROVChzdHJlYW0pIHtcbiAgc3RyZWFtLmVtaXQoa0NvbnN0cnVjdClcbn1cbmZ1bmN0aW9uIGlzUmVxdWVzdChzdHJlYW0pIHtcbiAgcmV0dXJuIChzdHJlYW0gPT09IG51bGwgfHwgc3RyZWFtID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBzdHJlYW0uc2V0SGVhZGVyKSAmJiB0eXBlb2Ygc3RyZWFtLmFib3J0ID09PSAnZnVuY3Rpb24nXG59XG5mdW5jdGlvbiBlbWl0Q2xvc2VMZWdhY3koc3RyZWFtKSB7XG4gIHN0cmVhbS5lbWl0KCdjbG9zZScpXG59XG5mdW5jdGlvbiBlbWl0RXJyb3JDbG9zZUxlZ2FjeShzdHJlYW0sIGVycikge1xuICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcnIpXG4gIHByb2Nlc3MubmV4dFRpY2soZW1pdENsb3NlTGVnYWN5LCBzdHJlYW0pXG59XG5cbi8vIE5vcm1hbGl6ZSBkZXN0cm95IGZvciBsZWdhY3kuXG5mdW5jdGlvbiBkZXN0cm95ZXIoc3RyZWFtLCBlcnIpIHtcbiAgaWYgKCFzdHJlYW0gfHwgaXNEZXN0cm95ZWQoc3RyZWFtKSkge1xuICAgIHJldHVyblxuICB9XG4gIGlmICghZXJyICYmICFpc0ZpbmlzaGVkKHN0cmVhbSkpIHtcbiAgICBlcnIgPSBuZXcgQWJvcnRFcnJvcigpXG4gIH1cblxuICAvLyBUT0RPOiBSZW1vdmUgaXNSZXF1ZXN0IGJyYW5jaGVzLlxuICBpZiAoaXNTZXJ2ZXJSZXF1ZXN0KHN0cmVhbSkpIHtcbiAgICBzdHJlYW0uc29ja2V0ID0gbnVsbFxuICAgIHN0cmVhbS5kZXN0cm95KGVycilcbiAgfSBlbHNlIGlmIChpc1JlcXVlc3Qoc3RyZWFtKSkge1xuICAgIHN0cmVhbS5hYm9ydCgpXG4gIH0gZWxzZSBpZiAoaXNSZXF1ZXN0KHN0cmVhbS5yZXEpKSB7XG4gICAgc3RyZWFtLnJlcS5hYm9ydCgpXG4gIH0gZWxzZSBpZiAodHlwZW9mIHN0cmVhbS5kZXN0cm95ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgc3RyZWFtLmRlc3Ryb3koZXJyKVxuICB9IGVsc2UgaWYgKHR5cGVvZiBzdHJlYW0uY2xvc2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBUT0RPOiBEb24ndCBsb3NlIGVycj9cbiAgICBzdHJlYW0uY2xvc2UoKVxuICB9IGVsc2UgaWYgKGVycikge1xuICAgIHByb2Nlc3MubmV4dFRpY2soZW1pdEVycm9yQ2xvc2VMZWdhY3ksIHN0cmVhbSwgZXJyKVxuICB9IGVsc2Uge1xuICAgIHByb2Nlc3MubmV4dFRpY2soZW1pdENsb3NlTGVnYWN5LCBzdHJlYW0pXG4gIH1cbiAgaWYgKCFzdHJlYW0uZGVzdHJveWVkKSB7XG4gICAgc3RyZWFtW2tJc0Rlc3Ryb3llZF0gPSB0cnVlXG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0ge1xuICBjb25zdHJ1Y3QsXG4gIGRlc3Ryb3llcixcbiAgZGVzdHJveSxcbiAgdW5kZXN0cm95LFxuICBlcnJvck9yRGVzdHJveVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHsgQXJyYXlJc0FycmF5LCBPYmplY3RTZXRQcm90b3R5cGVPZiB9ID0gcmVxdWlyZSgnLi4vLi4vb3Vycy9wcmltb3JkaWFscycpXG5jb25zdCB7IEV2ZW50RW1pdHRlcjogRUUgfSA9IHJlcXVpcmUoJ2V2ZW50cycpXG5mdW5jdGlvbiBTdHJlYW0ob3B0cykge1xuICBFRS5jYWxsKHRoaXMsIG9wdHMpXG59XG5PYmplY3RTZXRQcm90b3R5cGVPZihTdHJlYW0ucHJvdG90eXBlLCBFRS5wcm90b3R5cGUpXG5PYmplY3RTZXRQcm90b3R5cGVPZihTdHJlYW0sIEVFKVxuU3RyZWFtLnByb3RvdHlwZS5waXBlID0gZnVuY3Rpb24gKGRlc3QsIG9wdGlvbnMpIHtcbiAgY29uc3Qgc291cmNlID0gdGhpc1xuICBmdW5jdGlvbiBvbmRhdGEoY2h1bmspIHtcbiAgICBpZiAoZGVzdC53cml0YWJsZSAmJiBkZXN0LndyaXRlKGNodW5rKSA9PT0gZmFsc2UgJiYgc291cmNlLnBhdXNlKSB7XG4gICAgICBzb3VyY2UucGF1c2UoKVxuICAgIH1cbiAgfVxuICBzb3VyY2Uub24oJ2RhdGEnLCBvbmRhdGEpXG4gIGZ1bmN0aW9uIG9uZHJhaW4oKSB7XG4gICAgaWYgKHNvdXJjZS5yZWFkYWJsZSAmJiBzb3VyY2UucmVzdW1lKSB7XG4gICAgICBzb3VyY2UucmVzdW1lKClcbiAgICB9XG4gIH1cbiAgZGVzdC5vbignZHJhaW4nLCBvbmRyYWluKVxuXG4gIC8vIElmIHRoZSAnZW5kJyBvcHRpb24gaXMgbm90IHN1cHBsaWVkLCBkZXN0LmVuZCgpIHdpbGwgYmUgY2FsbGVkIHdoZW5cbiAgLy8gc291cmNlIGdldHMgdGhlICdlbmQnIG9yICdjbG9zZScgZXZlbnRzLiAgT25seSBkZXN0LmVuZCgpIG9uY2UuXG4gIGlmICghZGVzdC5faXNTdGRpbyAmJiAoIW9wdGlvbnMgfHwgb3B0aW9ucy5lbmQgIT09IGZhbHNlKSkge1xuICAgIHNvdXJjZS5vbignZW5kJywgb25lbmQpXG4gICAgc291cmNlLm9uKCdjbG9zZScsIG9uY2xvc2UpXG4gIH1cbiAgbGV0IGRpZE9uRW5kID0gZmFsc2VcbiAgZnVuY3Rpb24gb25lbmQoKSB7XG4gICAgaWYgKGRpZE9uRW5kKSByZXR1cm5cbiAgICBkaWRPbkVuZCA9IHRydWVcbiAgICBkZXN0LmVuZCgpXG4gIH1cbiAgZnVuY3Rpb24gb25jbG9zZSgpIHtcbiAgICBpZiAoZGlkT25FbmQpIHJldHVyblxuICAgIGRpZE9uRW5kID0gdHJ1ZVxuICAgIGlmICh0eXBlb2YgZGVzdC5kZXN0cm95ID09PSAnZnVuY3Rpb24nKSBkZXN0LmRlc3Ryb3koKVxuICB9XG5cbiAgLy8gRG9uJ3QgbGVhdmUgZGFuZ2xpbmcgcGlwZXMgd2hlbiB0aGVyZSBhcmUgZXJyb3JzLlxuICBmdW5jdGlvbiBvbmVycm9yKGVyKSB7XG4gICAgY2xlYW51cCgpXG4gICAgaWYgKEVFLmxpc3RlbmVyQ291bnQodGhpcywgJ2Vycm9yJykgPT09IDApIHtcbiAgICAgIHRoaXMuZW1pdCgnZXJyb3InLCBlcilcbiAgICB9XG4gIH1cbiAgcHJlcGVuZExpc3RlbmVyKHNvdXJjZSwgJ2Vycm9yJywgb25lcnJvcilcbiAgcHJlcGVuZExpc3RlbmVyKGRlc3QsICdlcnJvcicsIG9uZXJyb3IpXG5cbiAgLy8gUmVtb3ZlIGFsbCB0aGUgZXZlbnQgbGlzdGVuZXJzIHRoYXQgd2VyZSBhZGRlZC5cbiAgZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2RhdGEnLCBvbmRhdGEpXG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZHJhaW4nLCBvbmRyYWluKVxuICAgIHNvdXJjZS5yZW1vdmVMaXN0ZW5lcignZW5kJywgb25lbmQpXG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIG9uY2xvc2UpXG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpXG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKVxuICAgIHNvdXJjZS5yZW1vdmVMaXN0ZW5lcignZW5kJywgY2xlYW51cClcbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgY2xlYW51cClcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIGNsZWFudXApXG4gIH1cbiAgc291cmNlLm9uKCdlbmQnLCBjbGVhbnVwKVxuICBzb3VyY2Uub24oJ2Nsb3NlJywgY2xlYW51cClcbiAgZGVzdC5vbignY2xvc2UnLCBjbGVhbnVwKVxuICBkZXN0LmVtaXQoJ3BpcGUnLCBzb3VyY2UpXG5cbiAgLy8gQWxsb3cgZm9yIHVuaXgtbGlrZSB1c2FnZTogQS5waXBlKEIpLnBpcGUoQylcbiAgcmV0dXJuIGRlc3Rcbn1cbmZ1bmN0aW9uIHByZXBlbmRMaXN0ZW5lcihlbWl0dGVyLCBldmVudCwgZm4pIHtcbiAgLy8gU2FkbHkgdGhpcyBpcyBub3QgY2FjaGVhYmxlIGFzIHNvbWUgbGlicmFyaWVzIGJ1bmRsZSB0aGVpciBvd25cbiAgLy8gZXZlbnQgZW1pdHRlciBpbXBsZW1lbnRhdGlvbiB3aXRoIHRoZW0uXG4gIGlmICh0eXBlb2YgZW1pdHRlci5wcmVwZW5kTGlzdGVuZXIgPT09ICdmdW5jdGlvbicpIHJldHVybiBlbWl0dGVyLnByZXBlbmRMaXN0ZW5lcihldmVudCwgZm4pXG5cbiAgLy8gVGhpcyBpcyBhIGhhY2sgdG8gbWFrZSBzdXJlIHRoYXQgb3VyIGVycm9yIGhhbmRsZXIgaXMgYXR0YWNoZWQgYmVmb3JlIGFueVxuICAvLyB1c2VybGFuZCBvbmVzLiAgTkVWRVIgRE8gVEhJUy4gVGhpcyBpcyBoZXJlIG9ubHkgYmVjYXVzZSB0aGlzIGNvZGUgbmVlZHNcbiAgLy8gdG8gY29udGludWUgdG8gd29yayB3aXRoIG9sZGVyIHZlcnNpb25zIG9mIE5vZGUuanMgdGhhdCBkbyBub3QgaW5jbHVkZVxuICAvLyB0aGUgcHJlcGVuZExpc3RlbmVyKCkgbWV0aG9kLiBUaGUgZ29hbCBpcyB0byBldmVudHVhbGx5IHJlbW92ZSB0aGlzIGhhY2suXG4gIGlmICghZW1pdHRlci5fZXZlbnRzIHx8ICFlbWl0dGVyLl9ldmVudHNbZXZlbnRdKSBlbWl0dGVyLm9uKGV2ZW50LCBmbilcbiAgZWxzZSBpZiAoQXJyYXlJc0FycmF5KGVtaXR0ZXIuX2V2ZW50c1tldmVudF0pKSBlbWl0dGVyLl9ldmVudHNbZXZlbnRdLnVuc2hpZnQoZm4pXG4gIGVsc2UgZW1pdHRlci5fZXZlbnRzW2V2ZW50XSA9IFtmbiwgZW1pdHRlci5fZXZlbnRzW2V2ZW50XV1cbn1cbm1vZHVsZS5leHBvcnRzID0ge1xuICBTdHJlYW0sXG4gIHByZXBlbmRMaXN0ZW5lclxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHsgU3ltYm9sRGlzcG9zZSB9ID0gcmVxdWlyZSgnLi4vLi4vb3Vycy9wcmltb3JkaWFscycpXG5jb25zdCB7IEFib3J0RXJyb3IsIGNvZGVzIH0gPSByZXF1aXJlKCcuLi8uLi9vdXJzL2Vycm9ycycpXG5jb25zdCB7IGlzTm9kZVN0cmVhbSwgaXNXZWJTdHJlYW0sIGtDb250cm9sbGVyRXJyb3JGdW5jdGlvbiB9ID0gcmVxdWlyZSgnLi91dGlscycpXG5jb25zdCBlb3MgPSByZXF1aXJlKCcuL2VuZC1vZi1zdHJlYW0nKVxuY29uc3QgeyBFUlJfSU5WQUxJRF9BUkdfVFlQRSB9ID0gY29kZXNcbmxldCBhZGRBYm9ydExpc3RlbmVyXG5cbi8vIFRoaXMgbWV0aG9kIGlzIGlubGluZWQgaGVyZSBmb3IgcmVhZGFibGUtc3RyZWFtXG4vLyBJdCBhbHNvIGRvZXMgbm90IGFsbG93IGZvciBzaWduYWwgdG8gbm90IGV4aXN0IG9uIHRoZSBzdHJlYW1cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9wdWxsLzM2MDYxI2Rpc2N1c3Npb25fcjUzMzcxODAyOVxuY29uc3QgdmFsaWRhdGVBYm9ydFNpZ25hbCA9IChzaWduYWwsIG5hbWUpID0+IHtcbiAgaWYgKHR5cGVvZiBzaWduYWwgIT09ICdvYmplY3QnIHx8ICEoJ2Fib3J0ZWQnIGluIHNpZ25hbCkpIHtcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUobmFtZSwgJ0Fib3J0U2lnbmFsJywgc2lnbmFsKVxuICB9XG59XG5tb2R1bGUuZXhwb3J0cy5hZGRBYm9ydFNpZ25hbCA9IGZ1bmN0aW9uIGFkZEFib3J0U2lnbmFsKHNpZ25hbCwgc3RyZWFtKSB7XG4gIHZhbGlkYXRlQWJvcnRTaWduYWwoc2lnbmFsLCAnc2lnbmFsJylcbiAgaWYgKCFpc05vZGVTdHJlYW0oc3RyZWFtKSAmJiAhaXNXZWJTdHJlYW0oc3RyZWFtKSkge1xuICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVFlQRSgnc3RyZWFtJywgWydSZWFkYWJsZVN0cmVhbScsICdXcml0YWJsZVN0cmVhbScsICdTdHJlYW0nXSwgc3RyZWFtKVxuICB9XG4gIHJldHVybiBtb2R1bGUuZXhwb3J0cy5hZGRBYm9ydFNpZ25hbE5vVmFsaWRhdGUoc2lnbmFsLCBzdHJlYW0pXG59XG5tb2R1bGUuZXhwb3J0cy5hZGRBYm9ydFNpZ25hbE5vVmFsaWRhdGUgPSBmdW5jdGlvbiAoc2lnbmFsLCBzdHJlYW0pIHtcbiAgaWYgKHR5cGVvZiBzaWduYWwgIT09ICdvYmplY3QnIHx8ICEoJ2Fib3J0ZWQnIGluIHNpZ25hbCkpIHtcbiAgICByZXR1cm4gc3RyZWFtXG4gIH1cbiAgY29uc3Qgb25BYm9ydCA9IGlzTm9kZVN0cmVhbShzdHJlYW0pXG4gICAgPyAoKSA9PiB7XG4gICAgICAgIHN0cmVhbS5kZXN0cm95KFxuICAgICAgICAgIG5ldyBBYm9ydEVycm9yKHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgY2F1c2U6IHNpZ25hbC5yZWFzb25cbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICB9XG4gICAgOiAoKSA9PiB7XG4gICAgICAgIHN0cmVhbVtrQ29udHJvbGxlckVycm9yRnVuY3Rpb25dKFxuICAgICAgICAgIG5ldyBBYm9ydEVycm9yKHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgY2F1c2U6IHNpZ25hbC5yZWFzb25cbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICB9XG4gIGlmIChzaWduYWwuYWJvcnRlZCkge1xuICAgIG9uQWJvcnQoKVxuICB9IGVsc2Uge1xuICAgIGFkZEFib3J0TGlzdGVuZXIgPSBhZGRBYm9ydExpc3RlbmVyIHx8IHJlcXVpcmUoJy4uLy4uL291cnMvdXRpbCcpLmFkZEFib3J0TGlzdGVuZXJcbiAgICBjb25zdCBkaXNwb3NhYmxlID0gYWRkQWJvcnRMaXN0ZW5lcihzaWduYWwsIG9uQWJvcnQpXG4gICAgZW9zKHN0cmVhbSwgZGlzcG9zYWJsZVtTeW1ib2xEaXNwb3NlXSlcbiAgfVxuICByZXR1cm4gc3RyZWFtXG59XG4iLCIndXNlIHN0cmljdCdcblxuY29uc3QgeyBTdHJpbmdQcm90b3R5cGVTbGljZSwgU3ltYm9sSXRlcmF0b3IsIFR5cGVkQXJyYXlQcm90b3R5cGVTZXQsIFVpbnQ4QXJyYXkgfSA9IHJlcXVpcmUoJy4uLy4uL291cnMvcHJpbW9yZGlhbHMnKVxuY29uc3QgeyBCdWZmZXIgfSA9IHJlcXVpcmUoJ2J1ZmZlcicpXG5jb25zdCB7IGluc3BlY3QgfSA9IHJlcXVpcmUoJy4uLy4uL291cnMvdXRpbCcpXG5tb2R1bGUuZXhwb3J0cyA9IGNsYXNzIEJ1ZmZlckxpc3Qge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmhlYWQgPSBudWxsXG4gICAgdGhpcy50YWlsID0gbnVsbFxuICAgIHRoaXMubGVuZ3RoID0gMFxuICB9XG4gIHB1c2godikge1xuICAgIGNvbnN0IGVudHJ5ID0ge1xuICAgICAgZGF0YTogdixcbiAgICAgIG5leHQ6IG51bGxcbiAgICB9XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gMCkgdGhpcy50YWlsLm5leHQgPSBlbnRyeVxuICAgIGVsc2UgdGhpcy5oZWFkID0gZW50cnlcbiAgICB0aGlzLnRhaWwgPSBlbnRyeVxuICAgICsrdGhpcy5sZW5ndGhcbiAgfVxuICB1bnNoaWZ0KHYpIHtcbiAgICBjb25zdCBlbnRyeSA9IHtcbiAgICAgIGRhdGE6IHYsXG4gICAgICBuZXh0OiB0aGlzLmhlYWRcbiAgICB9XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSB0aGlzLnRhaWwgPSBlbnRyeVxuICAgIHRoaXMuaGVhZCA9IGVudHJ5XG4gICAgKyt0aGlzLmxlbmd0aFxuICB9XG4gIHNoaWZ0KCkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuXG4gICAgY29uc3QgcmV0ID0gdGhpcy5oZWFkLmRhdGFcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEpIHRoaXMuaGVhZCA9IHRoaXMudGFpbCA9IG51bGxcbiAgICBlbHNlIHRoaXMuaGVhZCA9IHRoaXMuaGVhZC5uZXh0XG4gICAgLS10aGlzLmxlbmd0aFxuICAgIHJldHVybiByZXRcbiAgfVxuICBjbGVhcigpIHtcbiAgICB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBudWxsXG4gICAgdGhpcy5sZW5ndGggPSAwXG4gIH1cbiAgam9pbihzKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gJydcbiAgICBsZXQgcCA9IHRoaXMuaGVhZFxuICAgIGxldCByZXQgPSAnJyArIHAuZGF0YVxuICAgIHdoaWxlICgocCA9IHAubmV4dCkgIT09IG51bGwpIHJldCArPSBzICsgcC5kYXRhXG4gICAgcmV0dXJuIHJldFxuICB9XG4gIGNvbmNhdChuKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gQnVmZmVyLmFsbG9jKDApXG4gICAgY29uc3QgcmV0ID0gQnVmZmVyLmFsbG9jVW5zYWZlKG4gPj4+IDApXG4gICAgbGV0IHAgPSB0aGlzLmhlYWRcbiAgICBsZXQgaSA9IDBcbiAgICB3aGlsZSAocCkge1xuICAgICAgVHlwZWRBcnJheVByb3RvdHlwZVNldChyZXQsIHAuZGF0YSwgaSlcbiAgICAgIGkgKz0gcC5kYXRhLmxlbmd0aFxuICAgICAgcCA9IHAubmV4dFxuICAgIH1cbiAgICByZXR1cm4gcmV0XG4gIH1cblxuICAvLyBDb25zdW1lcyBhIHNwZWNpZmllZCBhbW91bnQgb2YgYnl0ZXMgb3IgY2hhcmFjdGVycyBmcm9tIHRoZSBidWZmZXJlZCBkYXRhLlxuICBjb25zdW1lKG4sIGhhc1N0cmluZ3MpIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5oZWFkLmRhdGFcbiAgICBpZiAobiA8IGRhdGEubGVuZ3RoKSB7XG4gICAgICAvLyBgc2xpY2VgIGlzIHRoZSBzYW1lIGZvciBidWZmZXJzIGFuZCBzdHJpbmdzLlxuICAgICAgY29uc3Qgc2xpY2UgPSBkYXRhLnNsaWNlKDAsIG4pXG4gICAgICB0aGlzLmhlYWQuZGF0YSA9IGRhdGEuc2xpY2UobilcbiAgICAgIHJldHVybiBzbGljZVxuICAgIH1cbiAgICBpZiAobiA9PT0gZGF0YS5sZW5ndGgpIHtcbiAgICAgIC8vIEZpcnN0IGNodW5rIGlzIGEgcGVyZmVjdCBtYXRjaC5cbiAgICAgIHJldHVybiB0aGlzLnNoaWZ0KClcbiAgICB9XG4gICAgLy8gUmVzdWx0IHNwYW5zIG1vcmUgdGhhbiBvbmUgYnVmZmVyLlxuICAgIHJldHVybiBoYXNTdHJpbmdzID8gdGhpcy5fZ2V0U3RyaW5nKG4pIDogdGhpcy5fZ2V0QnVmZmVyKG4pXG4gIH1cbiAgZmlyc3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVhZC5kYXRhXG4gIH1cbiAgKltTeW1ib2xJdGVyYXRvcl0oKSB7XG4gICAgZm9yIChsZXQgcCA9IHRoaXMuaGVhZDsgcDsgcCA9IHAubmV4dCkge1xuICAgICAgeWllbGQgcC5kYXRhXG4gICAgfVxuICB9XG5cbiAgLy8gQ29uc3VtZXMgYSBzcGVjaWZpZWQgYW1vdW50IG9mIGNoYXJhY3RlcnMgZnJvbSB0aGUgYnVmZmVyZWQgZGF0YS5cbiAgX2dldFN0cmluZyhuKSB7XG4gICAgbGV0IHJldCA9ICcnXG4gICAgbGV0IHAgPSB0aGlzLmhlYWRcbiAgICBsZXQgYyA9IDBcbiAgICBkbyB7XG4gICAgICBjb25zdCBzdHIgPSBwLmRhdGFcbiAgICAgIGlmIChuID4gc3RyLmxlbmd0aCkge1xuICAgICAgICByZXQgKz0gc3RyXG4gICAgICAgIG4gLT0gc3RyLmxlbmd0aFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKG4gPT09IHN0ci5sZW5ndGgpIHtcbiAgICAgICAgICByZXQgKz0gc3RyXG4gICAgICAgICAgKytjXG4gICAgICAgICAgaWYgKHAubmV4dCkgdGhpcy5oZWFkID0gcC5uZXh0XG4gICAgICAgICAgZWxzZSB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBudWxsXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0ICs9IFN0cmluZ1Byb3RvdHlwZVNsaWNlKHN0ciwgMCwgbilcbiAgICAgICAgICB0aGlzLmhlYWQgPSBwXG4gICAgICAgICAgcC5kYXRhID0gU3RyaW5nUHJvdG90eXBlU2xpY2Uoc3RyLCBuKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICArK2NcbiAgICB9IHdoaWxlICgocCA9IHAubmV4dCkgIT09IG51bGwpXG4gICAgdGhpcy5sZW5ndGggLT0gY1xuICAgIHJldHVybiByZXRcbiAgfVxuXG4gIC8vIENvbnN1bWVzIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBieXRlcyBmcm9tIHRoZSBidWZmZXJlZCBkYXRhLlxuICBfZ2V0QnVmZmVyKG4pIHtcbiAgICBjb25zdCByZXQgPSBCdWZmZXIuYWxsb2NVbnNhZmUobilcbiAgICBjb25zdCByZXRMZW4gPSBuXG4gICAgbGV0IHAgPSB0aGlzLmhlYWRcbiAgICBsZXQgYyA9IDBcbiAgICBkbyB7XG4gICAgICBjb25zdCBidWYgPSBwLmRhdGFcbiAgICAgIGlmIChuID4gYnVmLmxlbmd0aCkge1xuICAgICAgICBUeXBlZEFycmF5UHJvdG90eXBlU2V0KHJldCwgYnVmLCByZXRMZW4gLSBuKVxuICAgICAgICBuIC09IGJ1Zi5sZW5ndGhcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChuID09PSBidWYubGVuZ3RoKSB7XG4gICAgICAgICAgVHlwZWRBcnJheVByb3RvdHlwZVNldChyZXQsIGJ1ZiwgcmV0TGVuIC0gbilcbiAgICAgICAgICArK2NcbiAgICAgICAgICBpZiAocC5uZXh0KSB0aGlzLmhlYWQgPSBwLm5leHRcbiAgICAgICAgICBlbHNlIHRoaXMuaGVhZCA9IHRoaXMudGFpbCA9IG51bGxcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBUeXBlZEFycmF5UHJvdG90eXBlU2V0KHJldCwgbmV3IFVpbnQ4QXJyYXkoYnVmLmJ1ZmZlciwgYnVmLmJ5dGVPZmZzZXQsIG4pLCByZXRMZW4gLSBuKVxuICAgICAgICAgIHRoaXMuaGVhZCA9IHBcbiAgICAgICAgICBwLmRhdGEgPSBidWYuc2xpY2UobilcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgKytjXG4gICAgfSB3aGlsZSAoKHAgPSBwLm5leHQpICE9PSBudWxsKVxuICAgIHRoaXMubGVuZ3RoIC09IGNcbiAgICByZXR1cm4gcmV0XG4gIH1cblxuICAvLyBNYWtlIHN1cmUgdGhlIGxpbmtlZCBsaXN0IG9ubHkgc2hvd3MgdGhlIG1pbmltYWwgbmVjZXNzYXJ5IGluZm9ybWF0aW9uLlxuICBbU3ltYm9sLmZvcignbm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20nKV0oXywgb3B0aW9ucykge1xuICAgIHJldHVybiBpbnNwZWN0KHRoaXMsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAvLyBPbmx5IGluc3BlY3Qgb25lIGxldmVsLlxuICAgICAgZGVwdGg6IDAsXG4gICAgICAvLyBJdCBzaG91bGQgbm90IHJlY3Vyc2UuXG4gICAgICBjdXN0b21JbnNwZWN0OiBmYWxzZVxuICAgIH0pXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7IE1hdGhGbG9vciwgTnVtYmVySXNJbnRlZ2VyIH0gPSByZXF1aXJlKCcuLi8uLi9vdXJzL3ByaW1vcmRpYWxzJylcbmNvbnN0IHsgdmFsaWRhdGVJbnRlZ2VyIH0gPSByZXF1aXJlKCcuLi92YWxpZGF0b3JzJylcbmNvbnN0IHsgRVJSX0lOVkFMSURfQVJHX1ZBTFVFIH0gPSByZXF1aXJlKCcuLi8uLi9vdXJzL2Vycm9ycycpLmNvZGVzXG5sZXQgZGVmYXVsdEhpZ2hXYXRlck1hcmtCeXRlcyA9IDE2ICogMTAyNFxubGV0IGRlZmF1bHRIaWdoV2F0ZXJNYXJrT2JqZWN0TW9kZSA9IDE2XG5mdW5jdGlvbiBoaWdoV2F0ZXJNYXJrRnJvbShvcHRpb25zLCBpc0R1cGxleCwgZHVwbGV4S2V5KSB7XG4gIHJldHVybiBvcHRpb25zLmhpZ2hXYXRlck1hcmsgIT0gbnVsbCA/IG9wdGlvbnMuaGlnaFdhdGVyTWFyayA6IGlzRHVwbGV4ID8gb3B0aW9uc1tkdXBsZXhLZXldIDogbnVsbFxufVxuZnVuY3Rpb24gZ2V0RGVmYXVsdEhpZ2hXYXRlck1hcmsob2JqZWN0TW9kZSkge1xuICByZXR1cm4gb2JqZWN0TW9kZSA/IGRlZmF1bHRIaWdoV2F0ZXJNYXJrT2JqZWN0TW9kZSA6IGRlZmF1bHRIaWdoV2F0ZXJNYXJrQnl0ZXNcbn1cbmZ1bmN0aW9uIHNldERlZmF1bHRIaWdoV2F0ZXJNYXJrKG9iamVjdE1vZGUsIHZhbHVlKSB7XG4gIHZhbGlkYXRlSW50ZWdlcih2YWx1ZSwgJ3ZhbHVlJywgMClcbiAgaWYgKG9iamVjdE1vZGUpIHtcbiAgICBkZWZhdWx0SGlnaFdhdGVyTWFya09iamVjdE1vZGUgPSB2YWx1ZVxuICB9IGVsc2Uge1xuICAgIGRlZmF1bHRIaWdoV2F0ZXJNYXJrQnl0ZXMgPSB2YWx1ZVxuICB9XG59XG5mdW5jdGlvbiBnZXRIaWdoV2F0ZXJNYXJrKHN0YXRlLCBvcHRpb25zLCBkdXBsZXhLZXksIGlzRHVwbGV4KSB7XG4gIGNvbnN0IGh3bSA9IGhpZ2hXYXRlck1hcmtGcm9tKG9wdGlvbnMsIGlzRHVwbGV4LCBkdXBsZXhLZXkpXG4gIGlmIChod20gIT0gbnVsbCkge1xuICAgIGlmICghTnVtYmVySXNJbnRlZ2VyKGh3bSkgfHwgaHdtIDwgMCkge1xuICAgICAgY29uc3QgbmFtZSA9IGlzRHVwbGV4ID8gYG9wdGlvbnMuJHtkdXBsZXhLZXl9YCA6ICdvcHRpb25zLmhpZ2hXYXRlck1hcmsnXG4gICAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1ZBTFVFKG5hbWUsIGh3bSlcbiAgICB9XG4gICAgcmV0dXJuIE1hdGhGbG9vcihod20pXG4gIH1cblxuICAvLyBEZWZhdWx0IHZhbHVlXG4gIHJldHVybiBnZXREZWZhdWx0SGlnaFdhdGVyTWFyayhzdGF0ZS5vYmplY3RNb2RlKVxufVxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGdldEhpZ2hXYXRlck1hcmssXG4gIGdldERlZmF1bHRIaWdoV2F0ZXJNYXJrLFxuICBzZXREZWZhdWx0SGlnaFdhdGVyTWFya1xufVxuIiwiLyohIHNhZmUtYnVmZmVyLiBNSVQgTGljZW5zZS4gRmVyb3NzIEFib3VraGFkaWplaCA8aHR0cHM6Ly9mZXJvc3Mub3JnL29wZW5zb3VyY2U+ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBub2RlL25vLWRlcHJlY2F0ZWQtYXBpICovXG52YXIgYnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJylcbnZhciBCdWZmZXIgPSBidWZmZXIuQnVmZmVyXG5cbi8vIGFsdGVybmF0aXZlIHRvIHVzaW5nIE9iamVjdC5rZXlzIGZvciBvbGQgYnJvd3NlcnNcbmZ1bmN0aW9uIGNvcHlQcm9wcyAoc3JjLCBkc3QpIHtcbiAgZm9yICh2YXIga2V5IGluIHNyYykge1xuICAgIGRzdFtrZXldID0gc3JjW2tleV1cbiAgfVxufVxuaWYgKEJ1ZmZlci5mcm9tICYmIEJ1ZmZlci5hbGxvYyAmJiBCdWZmZXIuYWxsb2NVbnNhZmUgJiYgQnVmZmVyLmFsbG9jVW5zYWZlU2xvdykge1xuICBtb2R1bGUuZXhwb3J0cyA9IGJ1ZmZlclxufSBlbHNlIHtcbiAgLy8gQ29weSBwcm9wZXJ0aWVzIGZyb20gcmVxdWlyZSgnYnVmZmVyJylcbiAgY29weVByb3BzKGJ1ZmZlciwgZXhwb3J0cylcbiAgZXhwb3J0cy5CdWZmZXIgPSBTYWZlQnVmZmVyXG59XG5cbmZ1bmN0aW9uIFNhZmVCdWZmZXIgKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBCdWZmZXIoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG59XG5cblNhZmVCdWZmZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCdWZmZXIucHJvdG90eXBlKVxuXG4vLyBDb3B5IHN0YXRpYyBtZXRob2RzIGZyb20gQnVmZmVyXG5jb3B5UHJvcHMoQnVmZmVyLCBTYWZlQnVmZmVyKVxuXG5TYWZlQnVmZmVyLmZyb20gPSBmdW5jdGlvbiAoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgaWYgKHR5cGVvZiBhcmcgPT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKVxuICB9XG4gIHJldHVybiBCdWZmZXIoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG59XG5cblNhZmVCdWZmZXIuYWxsb2MgPSBmdW5jdGlvbiAoc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKVxuICB9XG4gIHZhciBidWYgPSBCdWZmZXIoc2l6ZSlcbiAgaWYgKGZpbGwgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnKSB7XG4gICAgICBidWYuZmlsbChmaWxsLCBlbmNvZGluZylcbiAgICB9IGVsc2Uge1xuICAgICAgYnVmLmZpbGwoZmlsbClcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYnVmLmZpbGwoMClcbiAgfVxuICByZXR1cm4gYnVmXG59XG5cblNhZmVCdWZmZXIuYWxsb2NVbnNhZmUgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpXG4gIH1cbiAgcmV0dXJuIEJ1ZmZlcihzaXplKVxufVxuXG5TYWZlQnVmZmVyLmFsbG9jVW5zYWZlU2xvdyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfVxuICByZXR1cm4gYnVmZmVyLlNsb3dCdWZmZXIoc2l6ZSlcbn1cbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4ndXNlIHN0cmljdCc7XG5cbi8qPHJlcGxhY2VtZW50PiovXG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlcjtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG52YXIgaXNFbmNvZGluZyA9IEJ1ZmZlci5pc0VuY29kaW5nIHx8IGZ1bmN0aW9uIChlbmNvZGluZykge1xuICBlbmNvZGluZyA9ICcnICsgZW5jb2Rpbmc7XG4gIHN3aXRjaCAoZW5jb2RpbmcgJiYgZW5jb2RpbmcudG9Mb3dlckNhc2UoKSkge1xuICAgIGNhc2UgJ2hleCc6Y2FzZSAndXRmOCc6Y2FzZSAndXRmLTgnOmNhc2UgJ2FzY2lpJzpjYXNlICdiaW5hcnknOmNhc2UgJ2Jhc2U2NCc6Y2FzZSAndWNzMic6Y2FzZSAndWNzLTInOmNhc2UgJ3V0ZjE2bGUnOmNhc2UgJ3V0Zi0xNmxlJzpjYXNlICdyYXcnOlxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcblxuZnVuY3Rpb24gX25vcm1hbGl6ZUVuY29kaW5nKGVuYykge1xuICBpZiAoIWVuYykgcmV0dXJuICd1dGY4JztcbiAgdmFyIHJldHJpZWQ7XG4gIHdoaWxlICh0cnVlKSB7XG4gICAgc3dpdGNoIChlbmMpIHtcbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gJ3V0ZjgnO1xuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuICd1dGYxNmxlJztcbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gJ2xhdGluMSc7XG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGVuYztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChyZXRyaWVkKSByZXR1cm47IC8vIHVuZGVmaW5lZFxuICAgICAgICBlbmMgPSAoJycgKyBlbmMpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHJldHJpZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxufTtcblxuLy8gRG8gbm90IGNhY2hlIGBCdWZmZXIuaXNFbmNvZGluZ2Agd2hlbiBjaGVja2luZyBlbmNvZGluZyBuYW1lcyBhcyBzb21lXG4vLyBtb2R1bGVzIG1vbmtleS1wYXRjaCBpdCB0byBzdXBwb3J0IGFkZGl0aW9uYWwgZW5jb2RpbmdzXG5mdW5jdGlvbiBub3JtYWxpemVFbmNvZGluZyhlbmMpIHtcbiAgdmFyIG5lbmMgPSBfbm9ybWFsaXplRW5jb2RpbmcoZW5jKTtcbiAgaWYgKHR5cGVvZiBuZW5jICE9PSAnc3RyaW5nJyAmJiAoQnVmZmVyLmlzRW5jb2RpbmcgPT09IGlzRW5jb2RpbmcgfHwgIWlzRW5jb2RpbmcoZW5jKSkpIHRocm93IG5ldyBFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuYyk7XG4gIHJldHVybiBuZW5jIHx8IGVuYztcbn1cblxuLy8gU3RyaW5nRGVjb2RlciBwcm92aWRlcyBhbiBpbnRlcmZhY2UgZm9yIGVmZmljaWVudGx5IHNwbGl0dGluZyBhIHNlcmllcyBvZlxuLy8gYnVmZmVycyBpbnRvIGEgc2VyaWVzIG9mIEpTIHN0cmluZ3Mgd2l0aG91dCBicmVha2luZyBhcGFydCBtdWx0aS1ieXRlXG4vLyBjaGFyYWN0ZXJzLlxuZXhwb3J0cy5TdHJpbmdEZWNvZGVyID0gU3RyaW5nRGVjb2RlcjtcbmZ1bmN0aW9uIFN0cmluZ0RlY29kZXIoZW5jb2RpbmcpIHtcbiAgdGhpcy5lbmNvZGluZyA9IG5vcm1hbGl6ZUVuY29kaW5nKGVuY29kaW5nKTtcbiAgdmFyIG5iO1xuICBzd2l0Y2ggKHRoaXMuZW5jb2RpbmcpIHtcbiAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIHRoaXMudGV4dCA9IHV0ZjE2VGV4dDtcbiAgICAgIHRoaXMuZW5kID0gdXRmMTZFbmQ7XG4gICAgICBuYiA9IDQ7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd1dGY4JzpcbiAgICAgIHRoaXMuZmlsbExhc3QgPSB1dGY4RmlsbExhc3Q7XG4gICAgICBuYiA9IDQ7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgdGhpcy50ZXh0ID0gYmFzZTY0VGV4dDtcbiAgICAgIHRoaXMuZW5kID0gYmFzZTY0RW5kO1xuICAgICAgbmIgPSAzO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRoaXMud3JpdGUgPSBzaW1wbGVXcml0ZTtcbiAgICAgIHRoaXMuZW5kID0gc2ltcGxlRW5kO1xuICAgICAgcmV0dXJuO1xuICB9XG4gIHRoaXMubGFzdE5lZWQgPSAwO1xuICB0aGlzLmxhc3RUb3RhbCA9IDA7XG4gIHRoaXMubGFzdENoYXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUobmIpO1xufVxuXG5TdHJpbmdEZWNvZGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChidWYpIHtcbiAgaWYgKGJ1Zi5sZW5ndGggPT09IDApIHJldHVybiAnJztcbiAgdmFyIHI7XG4gIHZhciBpO1xuICBpZiAodGhpcy5sYXN0TmVlZCkge1xuICAgIHIgPSB0aGlzLmZpbGxMYXN0KGJ1Zik7XG4gICAgaWYgKHIgPT09IHVuZGVmaW5lZCkgcmV0dXJuICcnO1xuICAgIGkgPSB0aGlzLmxhc3ROZWVkO1xuICAgIHRoaXMubGFzdE5lZWQgPSAwO1xuICB9IGVsc2Uge1xuICAgIGkgPSAwO1xuICB9XG4gIGlmIChpIDwgYnVmLmxlbmd0aCkgcmV0dXJuIHIgPyByICsgdGhpcy50ZXh0KGJ1ZiwgaSkgOiB0aGlzLnRleHQoYnVmLCBpKTtcbiAgcmV0dXJuIHIgfHwgJyc7XG59O1xuXG5TdHJpbmdEZWNvZGVyLnByb3RvdHlwZS5lbmQgPSB1dGY4RW5kO1xuXG4vLyBSZXR1cm5zIG9ubHkgY29tcGxldGUgY2hhcmFjdGVycyBpbiBhIEJ1ZmZlclxuU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUudGV4dCA9IHV0ZjhUZXh0O1xuXG4vLyBBdHRlbXB0cyB0byBjb21wbGV0ZSBhIHBhcnRpYWwgbm9uLVVURi04IGNoYXJhY3RlciB1c2luZyBieXRlcyBmcm9tIGEgQnVmZmVyXG5TdHJpbmdEZWNvZGVyLnByb3RvdHlwZS5maWxsTGFzdCA9IGZ1bmN0aW9uIChidWYpIHtcbiAgaWYgKHRoaXMubGFzdE5lZWQgPD0gYnVmLmxlbmd0aCkge1xuICAgIGJ1Zi5jb3B5KHRoaXMubGFzdENoYXIsIHRoaXMubGFzdFRvdGFsIC0gdGhpcy5sYXN0TmVlZCwgMCwgdGhpcy5sYXN0TmVlZCk7XG4gICAgcmV0dXJuIHRoaXMubGFzdENoYXIudG9TdHJpbmcodGhpcy5lbmNvZGluZywgMCwgdGhpcy5sYXN0VG90YWwpO1xuICB9XG4gIGJ1Zi5jb3B5KHRoaXMubGFzdENoYXIsIHRoaXMubGFzdFRvdGFsIC0gdGhpcy5sYXN0TmVlZCwgMCwgYnVmLmxlbmd0aCk7XG4gIHRoaXMubGFzdE5lZWQgLT0gYnVmLmxlbmd0aDtcbn07XG5cbi8vIENoZWNrcyB0aGUgdHlwZSBvZiBhIFVURi04IGJ5dGUsIHdoZXRoZXIgaXQncyBBU0NJSSwgYSBsZWFkaW5nIGJ5dGUsIG9yIGFcbi8vIGNvbnRpbnVhdGlvbiBieXRlLiBJZiBhbiBpbnZhbGlkIGJ5dGUgaXMgZGV0ZWN0ZWQsIC0yIGlzIHJldHVybmVkLlxuZnVuY3Rpb24gdXRmOENoZWNrQnl0ZShieXRlKSB7XG4gIGlmIChieXRlIDw9IDB4N0YpIHJldHVybiAwO2Vsc2UgaWYgKGJ5dGUgPj4gNSA9PT0gMHgwNikgcmV0dXJuIDI7ZWxzZSBpZiAoYnl0ZSA+PiA0ID09PSAweDBFKSByZXR1cm4gMztlbHNlIGlmIChieXRlID4+IDMgPT09IDB4MUUpIHJldHVybiA0O1xuICByZXR1cm4gYnl0ZSA+PiA2ID09PSAweDAyID8gLTEgOiAtMjtcbn1cblxuLy8gQ2hlY2tzIGF0IG1vc3QgMyBieXRlcyBhdCB0aGUgZW5kIG9mIGEgQnVmZmVyIGluIG9yZGVyIHRvIGRldGVjdCBhblxuLy8gaW5jb21wbGV0ZSBtdWx0aS1ieXRlIFVURi04IGNoYXJhY3Rlci4gVGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyAoMiwgMywgb3IgNClcbi8vIG5lZWRlZCB0byBjb21wbGV0ZSB0aGUgVVRGLTggY2hhcmFjdGVyIChpZiBhcHBsaWNhYmxlKSBhcmUgcmV0dXJuZWQuXG5mdW5jdGlvbiB1dGY4Q2hlY2tJbmNvbXBsZXRlKHNlbGYsIGJ1ZiwgaSkge1xuICB2YXIgaiA9IGJ1Zi5sZW5ndGggLSAxO1xuICBpZiAoaiA8IGkpIHJldHVybiAwO1xuICB2YXIgbmIgPSB1dGY4Q2hlY2tCeXRlKGJ1ZltqXSk7XG4gIGlmIChuYiA+PSAwKSB7XG4gICAgaWYgKG5iID4gMCkgc2VsZi5sYXN0TmVlZCA9IG5iIC0gMTtcbiAgICByZXR1cm4gbmI7XG4gIH1cbiAgaWYgKC0taiA8IGkgfHwgbmIgPT09IC0yKSByZXR1cm4gMDtcbiAgbmIgPSB1dGY4Q2hlY2tCeXRlKGJ1ZltqXSk7XG4gIGlmIChuYiA+PSAwKSB7XG4gICAgaWYgKG5iID4gMCkgc2VsZi5sYXN0TmVlZCA9IG5iIC0gMjtcbiAgICByZXR1cm4gbmI7XG4gIH1cbiAgaWYgKC0taiA8IGkgfHwgbmIgPT09IC0yKSByZXR1cm4gMDtcbiAgbmIgPSB1dGY4Q2hlY2tCeXRlKGJ1ZltqXSk7XG4gIGlmIChuYiA+PSAwKSB7XG4gICAgaWYgKG5iID4gMCkge1xuICAgICAgaWYgKG5iID09PSAyKSBuYiA9IDA7ZWxzZSBzZWxmLmxhc3ROZWVkID0gbmIgLSAzO1xuICAgIH1cbiAgICByZXR1cm4gbmI7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vIFZhbGlkYXRlcyBhcyBtYW55IGNvbnRpbnVhdGlvbiBieXRlcyBmb3IgYSBtdWx0aS1ieXRlIFVURi04IGNoYXJhY3RlciBhc1xuLy8gbmVlZGVkIG9yIGFyZSBhdmFpbGFibGUuIElmIHdlIHNlZSBhIG5vbi1jb250aW51YXRpb24gYnl0ZSB3aGVyZSB3ZSBleHBlY3Rcbi8vIG9uZSwgd2UgXCJyZXBsYWNlXCIgdGhlIHZhbGlkYXRlZCBjb250aW51YXRpb24gYnl0ZXMgd2UndmUgc2VlbiBzbyBmYXIgd2l0aFxuLy8gYSBzaW5nbGUgVVRGLTggcmVwbGFjZW1lbnQgY2hhcmFjdGVyICgnXFx1ZmZmZCcpLCB0byBtYXRjaCB2OCdzIFVURi04IGRlY29kaW5nXG4vLyBiZWhhdmlvci4gVGhlIGNvbnRpbnVhdGlvbiBieXRlIGNoZWNrIGlzIGluY2x1ZGVkIHRocmVlIHRpbWVzIGluIHRoZSBjYXNlXG4vLyB3aGVyZSBhbGwgb2YgdGhlIGNvbnRpbnVhdGlvbiBieXRlcyBmb3IgYSBjaGFyYWN0ZXIgZXhpc3QgaW4gdGhlIHNhbWUgYnVmZmVyLlxuLy8gSXQgaXMgYWxzbyBkb25lIHRoaXMgd2F5IGFzIGEgc2xpZ2h0IHBlcmZvcm1hbmNlIGluY3JlYXNlIGluc3RlYWQgb2YgdXNpbmcgYVxuLy8gbG9vcC5cbmZ1bmN0aW9uIHV0ZjhDaGVja0V4dHJhQnl0ZXMoc2VsZiwgYnVmLCBwKSB7XG4gIGlmICgoYnVmWzBdICYgMHhDMCkgIT09IDB4ODApIHtcbiAgICBzZWxmLmxhc3ROZWVkID0gMDtcbiAgICByZXR1cm4gJ1xcdWZmZmQnO1xuICB9XG4gIGlmIChzZWxmLmxhc3ROZWVkID4gMSAmJiBidWYubGVuZ3RoID4gMSkge1xuICAgIGlmICgoYnVmWzFdICYgMHhDMCkgIT09IDB4ODApIHtcbiAgICAgIHNlbGYubGFzdE5lZWQgPSAxO1xuICAgICAgcmV0dXJuICdcXHVmZmZkJztcbiAgICB9XG4gICAgaWYgKHNlbGYubGFzdE5lZWQgPiAyICYmIGJ1Zi5sZW5ndGggPiAyKSB7XG4gICAgICBpZiAoKGJ1ZlsyXSAmIDB4QzApICE9PSAweDgwKSB7XG4gICAgICAgIHNlbGYubGFzdE5lZWQgPSAyO1xuICAgICAgICByZXR1cm4gJ1xcdWZmZmQnO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBBdHRlbXB0cyB0byBjb21wbGV0ZSBhIG11bHRpLWJ5dGUgVVRGLTggY2hhcmFjdGVyIHVzaW5nIGJ5dGVzIGZyb20gYSBCdWZmZXIuXG5mdW5jdGlvbiB1dGY4RmlsbExhc3QoYnVmKSB7XG4gIHZhciBwID0gdGhpcy5sYXN0VG90YWwgLSB0aGlzLmxhc3ROZWVkO1xuICB2YXIgciA9IHV0ZjhDaGVja0V4dHJhQnl0ZXModGhpcywgYnVmLCBwKTtcbiAgaWYgKHIgIT09IHVuZGVmaW5lZCkgcmV0dXJuIHI7XG4gIGlmICh0aGlzLmxhc3ROZWVkIDw9IGJ1Zi5sZW5ndGgpIHtcbiAgICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCBwLCAwLCB0aGlzLmxhc3ROZWVkKTtcbiAgICByZXR1cm4gdGhpcy5sYXN0Q2hhci50b1N0cmluZyh0aGlzLmVuY29kaW5nLCAwLCB0aGlzLmxhc3RUb3RhbCk7XG4gIH1cbiAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgcCwgMCwgYnVmLmxlbmd0aCk7XG4gIHRoaXMubGFzdE5lZWQgLT0gYnVmLmxlbmd0aDtcbn1cblxuLy8gUmV0dXJucyBhbGwgY29tcGxldGUgVVRGLTggY2hhcmFjdGVycyBpbiBhIEJ1ZmZlci4gSWYgdGhlIEJ1ZmZlciBlbmRlZCBvbiBhXG4vLyBwYXJ0aWFsIGNoYXJhY3RlciwgdGhlIGNoYXJhY3RlcidzIGJ5dGVzIGFyZSBidWZmZXJlZCB1bnRpbCB0aGUgcmVxdWlyZWRcbi8vIG51bWJlciBvZiBieXRlcyBhcmUgYXZhaWxhYmxlLlxuZnVuY3Rpb24gdXRmOFRleHQoYnVmLCBpKSB7XG4gIHZhciB0b3RhbCA9IHV0ZjhDaGVja0luY29tcGxldGUodGhpcywgYnVmLCBpKTtcbiAgaWYgKCF0aGlzLmxhc3ROZWVkKSByZXR1cm4gYnVmLnRvU3RyaW5nKCd1dGY4JywgaSk7XG4gIHRoaXMubGFzdFRvdGFsID0gdG90YWw7XG4gIHZhciBlbmQgPSBidWYubGVuZ3RoIC0gKHRvdGFsIC0gdGhpcy5sYXN0TmVlZCk7XG4gIGJ1Zi5jb3B5KHRoaXMubGFzdENoYXIsIDAsIGVuZCk7XG4gIHJldHVybiBidWYudG9TdHJpbmcoJ3V0ZjgnLCBpLCBlbmQpO1xufVxuXG4vLyBGb3IgVVRGLTgsIGEgcmVwbGFjZW1lbnQgY2hhcmFjdGVyIGlzIGFkZGVkIHdoZW4gZW5kaW5nIG9uIGEgcGFydGlhbFxuLy8gY2hhcmFjdGVyLlxuZnVuY3Rpb24gdXRmOEVuZChidWYpIHtcbiAgdmFyIHIgPSBidWYgJiYgYnVmLmxlbmd0aCA/IHRoaXMud3JpdGUoYnVmKSA6ICcnO1xuICBpZiAodGhpcy5sYXN0TmVlZCkgcmV0dXJuIHIgKyAnXFx1ZmZmZCc7XG4gIHJldHVybiByO1xufVxuXG4vLyBVVEYtMTZMRSB0eXBpY2FsbHkgbmVlZHMgdHdvIGJ5dGVzIHBlciBjaGFyYWN0ZXIsIGJ1dCBldmVuIGlmIHdlIGhhdmUgYW4gZXZlblxuLy8gbnVtYmVyIG9mIGJ5dGVzIGF2YWlsYWJsZSwgd2UgbmVlZCB0byBjaGVjayBpZiB3ZSBlbmQgb24gYSBsZWFkaW5nL2hpZ2hcbi8vIHN1cnJvZ2F0ZS4gSW4gdGhhdCBjYXNlLCB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBuZXh0IHR3byBieXRlcyBpbiBvcmRlciB0b1xuLy8gZGVjb2RlIHRoZSBsYXN0IGNoYXJhY3RlciBwcm9wZXJseS5cbmZ1bmN0aW9uIHV0ZjE2VGV4dChidWYsIGkpIHtcbiAgaWYgKChidWYubGVuZ3RoIC0gaSkgJSAyID09PSAwKSB7XG4gICAgdmFyIHIgPSBidWYudG9TdHJpbmcoJ3V0ZjE2bGUnLCBpKTtcbiAgICBpZiAocikge1xuICAgICAgdmFyIGMgPSByLmNoYXJDb2RlQXQoci5sZW5ndGggLSAxKTtcbiAgICAgIGlmIChjID49IDB4RDgwMCAmJiBjIDw9IDB4REJGRikge1xuICAgICAgICB0aGlzLmxhc3ROZWVkID0gMjtcbiAgICAgICAgdGhpcy5sYXN0VG90YWwgPSA0O1xuICAgICAgICB0aGlzLmxhc3RDaGFyWzBdID0gYnVmW2J1Zi5sZW5ndGggLSAyXTtcbiAgICAgICAgdGhpcy5sYXN0Q2hhclsxXSA9IGJ1ZltidWYubGVuZ3RoIC0gMV07XG4gICAgICAgIHJldHVybiByLnNsaWNlKDAsIC0xKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cbiAgdGhpcy5sYXN0TmVlZCA9IDE7XG4gIHRoaXMubGFzdFRvdGFsID0gMjtcbiAgdGhpcy5sYXN0Q2hhclswXSA9IGJ1ZltidWYubGVuZ3RoIC0gMV07XG4gIHJldHVybiBidWYudG9TdHJpbmcoJ3V0ZjE2bGUnLCBpLCBidWYubGVuZ3RoIC0gMSk7XG59XG5cbi8vIEZvciBVVEYtMTZMRSB3ZSBkbyBub3QgZXhwbGljaXRseSBhcHBlbmQgc3BlY2lhbCByZXBsYWNlbWVudCBjaGFyYWN0ZXJzIGlmIHdlXG4vLyBlbmQgb24gYSBwYXJ0aWFsIGNoYXJhY3Rlciwgd2Ugc2ltcGx5IGxldCB2OCBoYW5kbGUgdGhhdC5cbmZ1bmN0aW9uIHV0ZjE2RW5kKGJ1Zikge1xuICB2YXIgciA9IGJ1ZiAmJiBidWYubGVuZ3RoID8gdGhpcy53cml0ZShidWYpIDogJyc7XG4gIGlmICh0aGlzLmxhc3ROZWVkKSB7XG4gICAgdmFyIGVuZCA9IHRoaXMubGFzdFRvdGFsIC0gdGhpcy5sYXN0TmVlZDtcbiAgICByZXR1cm4gciArIHRoaXMubGFzdENoYXIudG9TdHJpbmcoJ3V0ZjE2bGUnLCAwLCBlbmQpO1xuICB9XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBiYXNlNjRUZXh0KGJ1ZiwgaSkge1xuICB2YXIgbiA9IChidWYubGVuZ3RoIC0gaSkgJSAzO1xuICBpZiAobiA9PT0gMCkgcmV0dXJuIGJ1Zi50b1N0cmluZygnYmFzZTY0JywgaSk7XG4gIHRoaXMubGFzdE5lZWQgPSAzIC0gbjtcbiAgdGhpcy5sYXN0VG90YWwgPSAzO1xuICBpZiAobiA9PT0gMSkge1xuICAgIHRoaXMubGFzdENoYXJbMF0gPSBidWZbYnVmLmxlbmd0aCAtIDFdO1xuICB9IGVsc2Uge1xuICAgIHRoaXMubGFzdENoYXJbMF0gPSBidWZbYnVmLmxlbmd0aCAtIDJdO1xuICAgIHRoaXMubGFzdENoYXJbMV0gPSBidWZbYnVmLmxlbmd0aCAtIDFdO1xuICB9XG4gIHJldHVybiBidWYudG9TdHJpbmcoJ2Jhc2U2NCcsIGksIGJ1Zi5sZW5ndGggLSBuKTtcbn1cblxuZnVuY3Rpb24gYmFzZTY0RW5kKGJ1Zikge1xuICB2YXIgciA9IGJ1ZiAmJiBidWYubGVuZ3RoID8gdGhpcy53cml0ZShidWYpIDogJyc7XG4gIGlmICh0aGlzLmxhc3ROZWVkKSByZXR1cm4gciArIHRoaXMubGFzdENoYXIudG9TdHJpbmcoJ2Jhc2U2NCcsIDAsIDMgLSB0aGlzLmxhc3ROZWVkKTtcbiAgcmV0dXJuIHI7XG59XG5cbi8vIFBhc3MgYnl0ZXMgb24gdGhyb3VnaCBmb3Igc2luZ2xlLWJ5dGUgZW5jb2RpbmdzIChlLmcuIGFzY2lpLCBsYXRpbjEsIGhleClcbmZ1bmN0aW9uIHNpbXBsZVdyaXRlKGJ1Zikge1xuICByZXR1cm4gYnVmLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcpO1xufVxuXG5mdW5jdGlvbiBzaW1wbGVFbmQoYnVmKSB7XG4gIHJldHVybiBidWYgJiYgYnVmLmxlbmd0aCA/IHRoaXMud3JpdGUoYnVmKSA6ICcnO1xufSIsIid1c2Ugc3RyaWN0J1xuXG4vKiByZXBsYWNlbWVudCBzdGFydCAqL1xuXG5jb25zdCBwcm9jZXNzID0gcmVxdWlyZSgncHJvY2Vzcy8nKVxuXG4vKiByZXBsYWNlbWVudCBlbmQgKi9cblxuY29uc3QgeyBQcm9taXNlUHJvdG90eXBlVGhlbiwgU3ltYm9sQXN5bmNJdGVyYXRvciwgU3ltYm9sSXRlcmF0b3IgfSA9IHJlcXVpcmUoJy4uLy4uL291cnMvcHJpbW9yZGlhbHMnKVxuY29uc3QgeyBCdWZmZXIgfSA9IHJlcXVpcmUoJ2J1ZmZlcicpXG5jb25zdCB7IEVSUl9JTlZBTElEX0FSR19UWVBFLCBFUlJfU1RSRUFNX05VTExfVkFMVUVTIH0gPSByZXF1aXJlKCcuLi8uLi9vdXJzL2Vycm9ycycpLmNvZGVzXG5mdW5jdGlvbiBmcm9tKFJlYWRhYmxlLCBpdGVyYWJsZSwgb3B0cykge1xuICBsZXQgaXRlcmF0b3JcbiAgaWYgKHR5cGVvZiBpdGVyYWJsZSA9PT0gJ3N0cmluZycgfHwgaXRlcmFibGUgaW5zdGFuY2VvZiBCdWZmZXIpIHtcbiAgICByZXR1cm4gbmV3IFJlYWRhYmxlKHtcbiAgICAgIG9iamVjdE1vZGU6IHRydWUsXG4gICAgICAuLi5vcHRzLFxuICAgICAgcmVhZCgpIHtcbiAgICAgICAgdGhpcy5wdXNoKGl0ZXJhYmxlKVxuICAgICAgICB0aGlzLnB1c2gobnVsbClcbiAgICAgIH1cbiAgICB9KVxuICB9XG4gIGxldCBpc0FzeW5jXG4gIGlmIChpdGVyYWJsZSAmJiBpdGVyYWJsZVtTeW1ib2xBc3luY0l0ZXJhdG9yXSkge1xuICAgIGlzQXN5bmMgPSB0cnVlXG4gICAgaXRlcmF0b3IgPSBpdGVyYWJsZVtTeW1ib2xBc3luY0l0ZXJhdG9yXSgpXG4gIH0gZWxzZSBpZiAoaXRlcmFibGUgJiYgaXRlcmFibGVbU3ltYm9sSXRlcmF0b3JdKSB7XG4gICAgaXNBc3luYyA9IGZhbHNlXG4gICAgaXRlcmF0b3IgPSBpdGVyYWJsZVtTeW1ib2xJdGVyYXRvcl0oKVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVFlQRSgnaXRlcmFibGUnLCBbJ0l0ZXJhYmxlJ10sIGl0ZXJhYmxlKVxuICB9XG4gIGNvbnN0IHJlYWRhYmxlID0gbmV3IFJlYWRhYmxlKHtcbiAgICBvYmplY3RNb2RlOiB0cnVlLFxuICAgIGhpZ2hXYXRlck1hcms6IDEsXG4gICAgLy8gVE9ETyhyb25hZyk6IFdoYXQgb3B0aW9ucyBzaG91bGQgYmUgYWxsb3dlZD9cbiAgICAuLi5vcHRzXG4gIH0pXG5cbiAgLy8gRmxhZyB0byBwcm90ZWN0IGFnYWluc3QgX3JlYWRcbiAgLy8gYmVpbmcgY2FsbGVkIGJlZm9yZSBsYXN0IGl0ZXJhdGlvbiBjb21wbGV0aW9uLlxuICBsZXQgcmVhZGluZyA9IGZhbHNlXG4gIHJlYWRhYmxlLl9yZWFkID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcmVhZGluZykge1xuICAgICAgcmVhZGluZyA9IHRydWVcbiAgICAgIG5leHQoKVxuICAgIH1cbiAgfVxuICByZWFkYWJsZS5fZGVzdHJveSA9IGZ1bmN0aW9uIChlcnJvciwgY2IpIHtcbiAgICBQcm9taXNlUHJvdG90eXBlVGhlbihcbiAgICAgIGNsb3NlKGVycm9yKSxcbiAgICAgICgpID0+IHByb2Nlc3MubmV4dFRpY2soY2IsIGVycm9yKSxcbiAgICAgIC8vIG5leHRUaWNrIGlzIGhlcmUgaW4gY2FzZSBjYiB0aHJvd3NcbiAgICAgIChlKSA9PiBwcm9jZXNzLm5leHRUaWNrKGNiLCBlIHx8IGVycm9yKVxuICAgIClcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBjbG9zZShlcnJvcikge1xuICAgIGNvbnN0IGhhZEVycm9yID0gZXJyb3IgIT09IHVuZGVmaW5lZCAmJiBlcnJvciAhPT0gbnVsbFxuICAgIGNvbnN0IGhhc1Rocm93ID0gdHlwZW9mIGl0ZXJhdG9yLnRocm93ID09PSAnZnVuY3Rpb24nXG4gICAgaWYgKGhhZEVycm9yICYmIGhhc1Rocm93KSB7XG4gICAgICBjb25zdCB7IHZhbHVlLCBkb25lIH0gPSBhd2FpdCBpdGVyYXRvci50aHJvdyhlcnJvcilcbiAgICAgIGF3YWl0IHZhbHVlXG4gICAgICBpZiAoZG9uZSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cGVvZiBpdGVyYXRvci5yZXR1cm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnN0IHsgdmFsdWUgfSA9IGF3YWl0IGl0ZXJhdG9yLnJldHVybigpXG4gICAgICBhd2FpdCB2YWx1ZVxuICAgIH1cbiAgfVxuICBhc3luYyBmdW5jdGlvbiBuZXh0KCkge1xuICAgIGZvciAoOzspIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgdmFsdWUsIGRvbmUgfSA9IGlzQXN5bmMgPyBhd2FpdCBpdGVyYXRvci5uZXh0KCkgOiBpdGVyYXRvci5uZXh0KClcbiAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICByZWFkYWJsZS5wdXNoKG51bGwpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgcmVzID0gdmFsdWUgJiYgdHlwZW9mIHZhbHVlLnRoZW4gPT09ICdmdW5jdGlvbicgPyBhd2FpdCB2YWx1ZSA6IHZhbHVlXG4gICAgICAgICAgaWYgKHJlcyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmVhZGluZyA9IGZhbHNlXG4gICAgICAgICAgICB0aHJvdyBuZXcgRVJSX1NUUkVBTV9OVUxMX1ZBTFVFUygpXG4gICAgICAgICAgfSBlbHNlIGlmIChyZWFkYWJsZS5wdXNoKHJlcykpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlYWRpbmcgPSBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHJlYWRhYmxlLmRlc3Ryb3koZXJyKVxuICAgICAgfVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlYWRhYmxlXG59XG5tb2R1bGUuZXhwb3J0cyA9IGZyb21cbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4ndXNlIHN0cmljdCdcblxuLyogcmVwbGFjZW1lbnQgc3RhcnQgKi9cblxuY29uc3QgcHJvY2VzcyA9IHJlcXVpcmUoJ3Byb2Nlc3MvJylcblxuLyogcmVwbGFjZW1lbnQgZW5kICovXG5cbmNvbnN0IHtcbiAgQXJyYXlQcm90b3R5cGVJbmRleE9mLFxuICBOdW1iZXJJc0ludGVnZXIsXG4gIE51bWJlcklzTmFOLFxuICBOdW1iZXJQYXJzZUludCxcbiAgT2JqZWN0RGVmaW5lUHJvcGVydGllcyxcbiAgT2JqZWN0S2V5cyxcbiAgT2JqZWN0U2V0UHJvdG90eXBlT2YsXG4gIFByb21pc2UsXG4gIFNhZmVTZXQsXG4gIFN5bWJvbEFzeW5jRGlzcG9zZSxcbiAgU3ltYm9sQXN5bmNJdGVyYXRvcixcbiAgU3ltYm9sXG59ID0gcmVxdWlyZSgnLi4vLi4vb3Vycy9wcmltb3JkaWFscycpXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWRhYmxlXG5SZWFkYWJsZS5SZWFkYWJsZVN0YXRlID0gUmVhZGFibGVTdGF0ZVxuY29uc3QgeyBFdmVudEVtaXR0ZXI6IEVFIH0gPSByZXF1aXJlKCdldmVudHMnKVxuY29uc3QgeyBTdHJlYW0sIHByZXBlbmRMaXN0ZW5lciB9ID0gcmVxdWlyZSgnLi9sZWdhY3knKVxuY29uc3QgeyBCdWZmZXIgfSA9IHJlcXVpcmUoJ2J1ZmZlcicpXG5jb25zdCB7IGFkZEFib3J0U2lnbmFsIH0gPSByZXF1aXJlKCcuL2FkZC1hYm9ydC1zaWduYWwnKVxuY29uc3QgZW9zID0gcmVxdWlyZSgnLi9lbmQtb2Ytc3RyZWFtJylcbmxldCBkZWJ1ZyA9IHJlcXVpcmUoJy4uLy4uL291cnMvdXRpbCcpLmRlYnVnbG9nKCdzdHJlYW0nLCAoZm4pID0+IHtcbiAgZGVidWcgPSBmblxufSlcbmNvbnN0IEJ1ZmZlckxpc3QgPSByZXF1aXJlKCcuL2J1ZmZlcl9saXN0JylcbmNvbnN0IGRlc3Ryb3lJbXBsID0gcmVxdWlyZSgnLi9kZXN0cm95JylcbmNvbnN0IHsgZ2V0SGlnaFdhdGVyTWFyaywgZ2V0RGVmYXVsdEhpZ2hXYXRlck1hcmsgfSA9IHJlcXVpcmUoJy4vc3RhdGUnKVxuY29uc3Qge1xuICBhZ2dyZWdhdGVUd29FcnJvcnMsXG4gIGNvZGVzOiB7XG4gICAgRVJSX0lOVkFMSURfQVJHX1RZUEUsXG4gICAgRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQsXG4gICAgRVJSX09VVF9PRl9SQU5HRSxcbiAgICBFUlJfU1RSRUFNX1BVU0hfQUZURVJfRU9GLFxuICAgIEVSUl9TVFJFQU1fVU5TSElGVF9BRlRFUl9FTkRfRVZFTlRcbiAgfSxcbiAgQWJvcnRFcnJvclxufSA9IHJlcXVpcmUoJy4uLy4uL291cnMvZXJyb3JzJylcbmNvbnN0IHsgdmFsaWRhdGVPYmplY3QgfSA9IHJlcXVpcmUoJy4uL3ZhbGlkYXRvcnMnKVxuY29uc3Qga1BhdXNlZCA9IFN5bWJvbCgna1BhdXNlZCcpXG5jb25zdCB7IFN0cmluZ0RlY29kZXIgfSA9IHJlcXVpcmUoJ3N0cmluZ19kZWNvZGVyLycpXG5jb25zdCBmcm9tID0gcmVxdWlyZSgnLi9mcm9tJylcbk9iamVjdFNldFByb3RvdHlwZU9mKFJlYWRhYmxlLnByb3RvdHlwZSwgU3RyZWFtLnByb3RvdHlwZSlcbk9iamVjdFNldFByb3RvdHlwZU9mKFJlYWRhYmxlLCBTdHJlYW0pXG5jb25zdCBub3AgPSAoKSA9PiB7fVxuY29uc3QgeyBlcnJvck9yRGVzdHJveSB9ID0gZGVzdHJveUltcGxcbmNvbnN0IGtPYmplY3RNb2RlID0gMSA8PCAwXG5jb25zdCBrRW5kZWQgPSAxIDw8IDFcbmNvbnN0IGtFbmRFbWl0dGVkID0gMSA8PCAyXG5jb25zdCBrUmVhZGluZyA9IDEgPDwgM1xuY29uc3Qga0NvbnN0cnVjdGVkID0gMSA8PCA0XG5jb25zdCBrU3luYyA9IDEgPDwgNVxuY29uc3Qga05lZWRSZWFkYWJsZSA9IDEgPDwgNlxuY29uc3Qga0VtaXR0ZWRSZWFkYWJsZSA9IDEgPDwgN1xuY29uc3Qga1JlYWRhYmxlTGlzdGVuaW5nID0gMSA8PCA4XG5jb25zdCBrUmVzdW1lU2NoZWR1bGVkID0gMSA8PCA5XG5jb25zdCBrRXJyb3JFbWl0dGVkID0gMSA8PCAxMFxuY29uc3Qga0VtaXRDbG9zZSA9IDEgPDwgMTFcbmNvbnN0IGtBdXRvRGVzdHJveSA9IDEgPDwgMTJcbmNvbnN0IGtEZXN0cm95ZWQgPSAxIDw8IDEzXG5jb25zdCBrQ2xvc2VkID0gMSA8PCAxNFxuY29uc3Qga0Nsb3NlRW1pdHRlZCA9IDEgPDwgMTVcbmNvbnN0IGtNdWx0aUF3YWl0RHJhaW4gPSAxIDw8IDE2XG5jb25zdCBrUmVhZGluZ01vcmUgPSAxIDw8IDE3XG5jb25zdCBrRGF0YUVtaXR0ZWQgPSAxIDw8IDE4XG5cbi8vIFRPRE8oYmVuamFtaW5ncikgaXQgaXMgbGlrZWx5IHNsb3dlciB0byBkbyBpdCB0aGlzIHdheSB0aGFuIHdpdGggZnJlZSBmdW5jdGlvbnNcbmZ1bmN0aW9uIG1ha2VCaXRNYXBEZXNjcmlwdG9yKGJpdCkge1xuICByZXR1cm4ge1xuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiAodGhpcy5zdGF0ZSAmIGJpdCkgIT09IDBcbiAgICB9LFxuICAgIHNldCh2YWx1ZSkge1xuICAgICAgaWYgKHZhbHVlKSB0aGlzLnN0YXRlIHw9IGJpdFxuICAgICAgZWxzZSB0aGlzLnN0YXRlICY9IH5iaXRcbiAgICB9XG4gIH1cbn1cbk9iamVjdERlZmluZVByb3BlcnRpZXMoUmVhZGFibGVTdGF0ZS5wcm90b3R5cGUsIHtcbiAgb2JqZWN0TW9kZTogbWFrZUJpdE1hcERlc2NyaXB0b3Ioa09iamVjdE1vZGUpLFxuICBlbmRlZDogbWFrZUJpdE1hcERlc2NyaXB0b3Ioa0VuZGVkKSxcbiAgZW5kRW1pdHRlZDogbWFrZUJpdE1hcERlc2NyaXB0b3Ioa0VuZEVtaXR0ZWQpLFxuICByZWFkaW5nOiBtYWtlQml0TWFwRGVzY3JpcHRvcihrUmVhZGluZyksXG4gIC8vIFN0cmVhbSBpcyBzdGlsbCBiZWluZyBjb25zdHJ1Y3RlZCBhbmQgY2Fubm90IGJlXG4gIC8vIGRlc3Ryb3llZCB1bnRpbCBjb25zdHJ1Y3Rpb24gZmluaXNoZWQgb3IgZmFpbGVkLlxuICAvLyBBc3luYyBjb25zdHJ1Y3Rpb24gaXMgb3B0IGluLCB0aGVyZWZvcmUgd2Ugc3RhcnQgYXNcbiAgLy8gY29uc3RydWN0ZWQuXG4gIGNvbnN0cnVjdGVkOiBtYWtlQml0TWFwRGVzY3JpcHRvcihrQ29uc3RydWN0ZWQpLFxuICAvLyBBIGZsYWcgdG8gYmUgYWJsZSB0byB0ZWxsIGlmIHRoZSBldmVudCAncmVhZGFibGUnLydkYXRhJyBpcyBlbWl0dGVkXG4gIC8vIGltbWVkaWF0ZWx5LCBvciBvbiBhIGxhdGVyIHRpY2suICBXZSBzZXQgdGhpcyB0byB0cnVlIGF0IGZpcnN0LCBiZWNhdXNlXG4gIC8vIGFueSBhY3Rpb25zIHRoYXQgc2hvdWxkbid0IGhhcHBlbiB1bnRpbCBcImxhdGVyXCIgc2hvdWxkIGdlbmVyYWxseSBhbHNvXG4gIC8vIG5vdCBoYXBwZW4gYmVmb3JlIHRoZSBmaXJzdCByZWFkIGNhbGwuXG4gIHN5bmM6IG1ha2VCaXRNYXBEZXNjcmlwdG9yKGtTeW5jKSxcbiAgLy8gV2hlbmV2ZXIgd2UgcmV0dXJuIG51bGwsIHRoZW4gd2Ugc2V0IGEgZmxhZyB0byBzYXlcbiAgLy8gdGhhdCB3ZSdyZSBhd2FpdGluZyBhICdyZWFkYWJsZScgZXZlbnQgZW1pc3Npb24uXG4gIG5lZWRSZWFkYWJsZTogbWFrZUJpdE1hcERlc2NyaXB0b3Ioa05lZWRSZWFkYWJsZSksXG4gIGVtaXR0ZWRSZWFkYWJsZTogbWFrZUJpdE1hcERlc2NyaXB0b3Ioa0VtaXR0ZWRSZWFkYWJsZSksXG4gIHJlYWRhYmxlTGlzdGVuaW5nOiBtYWtlQml0TWFwRGVzY3JpcHRvcihrUmVhZGFibGVMaXN0ZW5pbmcpLFxuICByZXN1bWVTY2hlZHVsZWQ6IG1ha2VCaXRNYXBEZXNjcmlwdG9yKGtSZXN1bWVTY2hlZHVsZWQpLFxuICAvLyBUcnVlIGlmIHRoZSBlcnJvciB3YXMgYWxyZWFkeSBlbWl0dGVkIGFuZCBzaG91bGQgbm90IGJlIHRocm93biBhZ2Fpbi5cbiAgZXJyb3JFbWl0dGVkOiBtYWtlQml0TWFwRGVzY3JpcHRvcihrRXJyb3JFbWl0dGVkKSxcbiAgZW1pdENsb3NlOiBtYWtlQml0TWFwRGVzY3JpcHRvcihrRW1pdENsb3NlKSxcbiAgYXV0b0Rlc3Ryb3k6IG1ha2VCaXRNYXBEZXNjcmlwdG9yKGtBdXRvRGVzdHJveSksXG4gIC8vIEhhcyBpdCBiZWVuIGRlc3Ryb3llZC5cbiAgZGVzdHJveWVkOiBtYWtlQml0TWFwRGVzY3JpcHRvcihrRGVzdHJveWVkKSxcbiAgLy8gSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHN0cmVhbSBoYXMgZmluaXNoZWQgZGVzdHJveWluZy5cbiAgY2xvc2VkOiBtYWtlQml0TWFwRGVzY3JpcHRvcihrQ2xvc2VkKSxcbiAgLy8gVHJ1ZSBpZiBjbG9zZSBoYXMgYmVlbiBlbWl0dGVkIG9yIHdvdWxkIGhhdmUgYmVlbiBlbWl0dGVkXG4gIC8vIGRlcGVuZGluZyBvbiBlbWl0Q2xvc2UuXG4gIGNsb3NlRW1pdHRlZDogbWFrZUJpdE1hcERlc2NyaXB0b3Ioa0Nsb3NlRW1pdHRlZCksXG4gIG11bHRpQXdhaXREcmFpbjogbWFrZUJpdE1hcERlc2NyaXB0b3Ioa011bHRpQXdhaXREcmFpbiksXG4gIC8vIElmIHRydWUsIGEgbWF5YmVSZWFkTW9yZSBoYXMgYmVlbiBzY2hlZHVsZWQuXG4gIHJlYWRpbmdNb3JlOiBtYWtlQml0TWFwRGVzY3JpcHRvcihrUmVhZGluZ01vcmUpLFxuICBkYXRhRW1pdHRlZDogbWFrZUJpdE1hcERlc2NyaXB0b3Ioa0RhdGFFbWl0dGVkKVxufSlcbmZ1bmN0aW9uIFJlYWRhYmxlU3RhdGUob3B0aW9ucywgc3RyZWFtLCBpc0R1cGxleCkge1xuICAvLyBEdXBsZXggc3RyZWFtcyBhcmUgYm90aCByZWFkYWJsZSBhbmQgd3JpdGFibGUsIGJ1dCBzaGFyZVxuICAvLyB0aGUgc2FtZSBvcHRpb25zIG9iamVjdC5cbiAgLy8gSG93ZXZlciwgc29tZSBjYXNlcyByZXF1aXJlIHNldHRpbmcgb3B0aW9ucyB0byBkaWZmZXJlbnRcbiAgLy8gdmFsdWVzIGZvciB0aGUgcmVhZGFibGUgYW5kIHRoZSB3cml0YWJsZSBzaWRlcyBvZiB0aGUgZHVwbGV4IHN0cmVhbS5cbiAgLy8gVGhlc2Ugb3B0aW9ucyBjYW4gYmUgcHJvdmlkZWQgc2VwYXJhdGVseSBhcyByZWFkYWJsZVhYWCBhbmQgd3JpdGFibGVYWFguXG4gIGlmICh0eXBlb2YgaXNEdXBsZXggIT09ICdib29sZWFuJykgaXNEdXBsZXggPSBzdHJlYW0gaW5zdGFuY2VvZiByZXF1aXJlKCcuL2R1cGxleCcpXG5cbiAgLy8gQml0IG1hcCBmaWVsZCB0byBzdG9yZSBSZWFkYWJsZVN0YXRlIG1vcmUgZWZmY2llbnRseSB3aXRoIDEgYml0IHBlciBmaWVsZFxuICAvLyBpbnN0ZWFkIG9mIGEgVjggc2xvdCBwZXIgZmllbGQuXG4gIHRoaXMuc3RhdGUgPSBrRW1pdENsb3NlIHwga0F1dG9EZXN0cm95IHwga0NvbnN0cnVjdGVkIHwga1N5bmNcbiAgLy8gT2JqZWN0IHN0cmVhbSBmbGFnLiBVc2VkIHRvIG1ha2UgcmVhZChuKSBpZ25vcmUgbiBhbmQgdG9cbiAgLy8gbWFrZSBhbGwgdGhlIGJ1ZmZlciBtZXJnaW5nIGFuZCBsZW5ndGggY2hlY2tzIGdvIGF3YXkuXG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMub2JqZWN0TW9kZSkgdGhpcy5zdGF0ZSB8PSBrT2JqZWN0TW9kZVxuICBpZiAoaXNEdXBsZXggJiYgb3B0aW9ucyAmJiBvcHRpb25zLnJlYWRhYmxlT2JqZWN0TW9kZSkgdGhpcy5zdGF0ZSB8PSBrT2JqZWN0TW9kZVxuXG4gIC8vIFRoZSBwb2ludCBhdCB3aGljaCBpdCBzdG9wcyBjYWxsaW5nIF9yZWFkKCkgdG8gZmlsbCB0aGUgYnVmZmVyXG4gIC8vIE5vdGU6IDAgaXMgYSB2YWxpZCB2YWx1ZSwgbWVhbnMgXCJkb24ndCBjYWxsIF9yZWFkIHByZWVtcHRpdmVseSBldmVyXCJcbiAgdGhpcy5oaWdoV2F0ZXJNYXJrID0gb3B0aW9uc1xuICAgID8gZ2V0SGlnaFdhdGVyTWFyayh0aGlzLCBvcHRpb25zLCAncmVhZGFibGVIaWdoV2F0ZXJNYXJrJywgaXNEdXBsZXgpXG4gICAgOiBnZXREZWZhdWx0SGlnaFdhdGVyTWFyayhmYWxzZSlcblxuICAvLyBBIGxpbmtlZCBsaXN0IGlzIHVzZWQgdG8gc3RvcmUgZGF0YSBjaHVua3MgaW5zdGVhZCBvZiBhbiBhcnJheSBiZWNhdXNlIHRoZVxuICAvLyBsaW5rZWQgbGlzdCBjYW4gcmVtb3ZlIGVsZW1lbnRzIGZyb20gdGhlIGJlZ2lubmluZyBmYXN0ZXIgdGhhblxuICAvLyBhcnJheS5zaGlmdCgpLlxuICB0aGlzLmJ1ZmZlciA9IG5ldyBCdWZmZXJMaXN0KClcbiAgdGhpcy5sZW5ndGggPSAwXG4gIHRoaXMucGlwZXMgPSBbXVxuICB0aGlzLmZsb3dpbmcgPSBudWxsXG4gIHRoaXNba1BhdXNlZF0gPSBudWxsXG5cbiAgLy8gU2hvdWxkIGNsb3NlIGJlIGVtaXR0ZWQgb24gZGVzdHJveS4gRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5lbWl0Q2xvc2UgPT09IGZhbHNlKSB0aGlzLnN0YXRlICY9IH5rRW1pdENsb3NlXG5cbiAgLy8gU2hvdWxkIC5kZXN0cm95KCkgYmUgY2FsbGVkIGFmdGVyICdlbmQnIChhbmQgcG90ZW50aWFsbHkgJ2ZpbmlzaCcpLlxuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmF1dG9EZXN0cm95ID09PSBmYWxzZSkgdGhpcy5zdGF0ZSAmPSB+a0F1dG9EZXN0cm95XG5cbiAgLy8gSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHN0cmVhbSBoYXMgZXJyb3JlZC4gV2hlbiB0cnVlIG5vIGZ1cnRoZXJcbiAgLy8gX3JlYWQgY2FsbHMsICdkYXRhJyBvciAncmVhZGFibGUnIGV2ZW50cyBzaG91bGQgb2NjdXIuIFRoaXMgaXMgbmVlZGVkXG4gIC8vIHNpbmNlIHdoZW4gYXV0b0Rlc3Ryb3kgaXMgZGlzYWJsZWQgd2UgbmVlZCBhIHdheSB0byB0ZWxsIHdoZXRoZXIgdGhlXG4gIC8vIHN0cmVhbSBoYXMgZmFpbGVkLlxuICB0aGlzLmVycm9yZWQgPSBudWxsXG5cbiAgLy8gQ3J5cHRvIGlzIGtpbmQgb2Ygb2xkIGFuZCBjcnVzdHkuICBIaXN0b3JpY2FsbHksIGl0cyBkZWZhdWx0IHN0cmluZ1xuICAvLyBlbmNvZGluZyBpcyAnYmluYXJ5JyBzbyB3ZSBoYXZlIHRvIG1ha2UgdGhpcyBjb25maWd1cmFibGUuXG4gIC8vIEV2ZXJ5dGhpbmcgZWxzZSBpbiB0aGUgdW5pdmVyc2UgdXNlcyAndXRmOCcsIHRob3VnaC5cbiAgdGhpcy5kZWZhdWx0RW5jb2RpbmcgPSAob3B0aW9ucyAmJiBvcHRpb25zLmRlZmF1bHRFbmNvZGluZykgfHwgJ3V0ZjgnXG5cbiAgLy8gUmVmIHRoZSBwaXBlZCBkZXN0IHdoaWNoIHdlIG5lZWQgYSBkcmFpbiBldmVudCBvbiBpdFxuICAvLyB0eXBlOiBudWxsIHwgV3JpdGFibGUgfCBTZXQ8V3JpdGFibGU+LlxuICB0aGlzLmF3YWl0RHJhaW5Xcml0ZXJzID0gbnVsbFxuICB0aGlzLmRlY29kZXIgPSBudWxsXG4gIHRoaXMuZW5jb2RpbmcgPSBudWxsXG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuZW5jb2RpbmcpIHtcbiAgICB0aGlzLmRlY29kZXIgPSBuZXcgU3RyaW5nRGVjb2RlcihvcHRpb25zLmVuY29kaW5nKVxuICAgIHRoaXMuZW5jb2RpbmcgPSBvcHRpb25zLmVuY29kaW5nXG4gIH1cbn1cbmZ1bmN0aW9uIFJlYWRhYmxlKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFJlYWRhYmxlKSkgcmV0dXJuIG5ldyBSZWFkYWJsZShvcHRpb25zKVxuXG4gIC8vIENoZWNraW5nIGZvciBhIFN0cmVhbS5EdXBsZXggaW5zdGFuY2UgaXMgZmFzdGVyIGhlcmUgaW5zdGVhZCBvZiBpbnNpZGVcbiAgLy8gdGhlIFJlYWRhYmxlU3RhdGUgY29uc3RydWN0b3IsIGF0IGxlYXN0IHdpdGggVjggNi41LlxuICBjb25zdCBpc0R1cGxleCA9IHRoaXMgaW5zdGFuY2VvZiByZXF1aXJlKCcuL2R1cGxleCcpXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUgPSBuZXcgUmVhZGFibGVTdGF0ZShvcHRpb25zLCB0aGlzLCBpc0R1cGxleClcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMucmVhZCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fcmVhZCA9IG9wdGlvbnMucmVhZFxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5kZXN0cm95ID09PSAnZnVuY3Rpb24nKSB0aGlzLl9kZXN0cm95ID0gb3B0aW9ucy5kZXN0cm95XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmNvbnN0cnVjdCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fY29uc3RydWN0ID0gb3B0aW9ucy5jb25zdHJ1Y3RcbiAgICBpZiAob3B0aW9ucy5zaWduYWwgJiYgIWlzRHVwbGV4KSBhZGRBYm9ydFNpZ25hbChvcHRpb25zLnNpZ25hbCwgdGhpcylcbiAgfVxuICBTdHJlYW0uY2FsbCh0aGlzLCBvcHRpb25zKVxuICBkZXN0cm95SW1wbC5jb25zdHJ1Y3QodGhpcywgKCkgPT4ge1xuICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlLm5lZWRSZWFkYWJsZSkge1xuICAgICAgbWF5YmVSZWFkTW9yZSh0aGlzLCB0aGlzLl9yZWFkYWJsZVN0YXRlKVxuICAgIH1cbiAgfSlcbn1cblJlYWRhYmxlLnByb3RvdHlwZS5kZXN0cm95ID0gZGVzdHJveUltcGwuZGVzdHJveVxuUmVhZGFibGUucHJvdG90eXBlLl91bmRlc3Ryb3kgPSBkZXN0cm95SW1wbC51bmRlc3Ryb3lcblJlYWRhYmxlLnByb3RvdHlwZS5fZGVzdHJveSA9IGZ1bmN0aW9uIChlcnIsIGNiKSB7XG4gIGNiKGVycilcbn1cblJlYWRhYmxlLnByb3RvdHlwZVtFRS5jYXB0dXJlUmVqZWN0aW9uU3ltYm9sXSA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgdGhpcy5kZXN0cm95KGVycilcbn1cblJlYWRhYmxlLnByb3RvdHlwZVtTeW1ib2xBc3luY0Rpc3Bvc2VdID0gZnVuY3Rpb24gKCkge1xuICBsZXQgZXJyb3JcbiAgaWYgKCF0aGlzLmRlc3Ryb3llZCkge1xuICAgIGVycm9yID0gdGhpcy5yZWFkYWJsZUVuZGVkID8gbnVsbCA6IG5ldyBBYm9ydEVycm9yKClcbiAgICB0aGlzLmRlc3Ryb3koZXJyb3IpXG4gIH1cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IGVvcyh0aGlzLCAoZXJyKSA9PiAoZXJyICYmIGVyciAhPT0gZXJyb3IgPyByZWplY3QoZXJyKSA6IHJlc29sdmUobnVsbCkpKSlcbn1cblxuLy8gTWFudWFsbHkgc2hvdmUgc29tZXRoaW5nIGludG8gdGhlIHJlYWQoKSBidWZmZXIuXG4vLyBUaGlzIHJldHVybnMgdHJ1ZSBpZiB0aGUgaGlnaFdhdGVyTWFyayBoYXMgbm90IGJlZW4gaGl0IHlldCxcbi8vIHNpbWlsYXIgdG8gaG93IFdyaXRhYmxlLndyaXRlKCkgcmV0dXJucyB0cnVlIGlmIHlvdSBzaG91bGRcbi8vIHdyaXRlKCkgc29tZSBtb3JlLlxuUmVhZGFibGUucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nKSB7XG4gIHJldHVybiByZWFkYWJsZUFkZENodW5rKHRoaXMsIGNodW5rLCBlbmNvZGluZywgZmFsc2UpXG59XG5cbi8vIFVuc2hpZnQgc2hvdWxkICphbHdheXMqIGJlIHNvbWV0aGluZyBkaXJlY3RseSBvdXQgb2YgcmVhZCgpLlxuUmVhZGFibGUucHJvdG90eXBlLnVuc2hpZnQgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nKSB7XG4gIHJldHVybiByZWFkYWJsZUFkZENodW5rKHRoaXMsIGNodW5rLCBlbmNvZGluZywgdHJ1ZSlcbn1cbmZ1bmN0aW9uIHJlYWRhYmxlQWRkQ2h1bmsoc3RyZWFtLCBjaHVuaywgZW5jb2RpbmcsIGFkZFRvRnJvbnQpIHtcbiAgZGVidWcoJ3JlYWRhYmxlQWRkQ2h1bmsnLCBjaHVuaylcbiAgY29uc3Qgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGVcbiAgbGV0IGVyclxuICBpZiAoKHN0YXRlLnN0YXRlICYga09iamVjdE1vZGUpID09PSAwKSB7XG4gICAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVuY29kaW5nID0gZW5jb2RpbmcgfHwgc3RhdGUuZGVmYXVsdEVuY29kaW5nXG4gICAgICBpZiAoc3RhdGUuZW5jb2RpbmcgIT09IGVuY29kaW5nKSB7XG4gICAgICAgIGlmIChhZGRUb0Zyb250ICYmIHN0YXRlLmVuY29kaW5nKSB7XG4gICAgICAgICAgLy8gV2hlbiB1bnNoaWZ0aW5nLCBpZiBzdGF0ZS5lbmNvZGluZyBpcyBzZXQsIHdlIGhhdmUgdG8gc2F2ZVxuICAgICAgICAgIC8vIHRoZSBzdHJpbmcgaW4gdGhlIEJ1ZmZlckxpc3Qgd2l0aCB0aGUgc3RhdGUgZW5jb2RpbmcuXG4gICAgICAgICAgY2h1bmsgPSBCdWZmZXIuZnJvbShjaHVuaywgZW5jb2RpbmcpLnRvU3RyaW5nKHN0YXRlLmVuY29kaW5nKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNodW5rID0gQnVmZmVyLmZyb20oY2h1bmssIGVuY29kaW5nKVxuICAgICAgICAgIGVuY29kaW5nID0gJydcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2h1bmsgaW5zdGFuY2VvZiBCdWZmZXIpIHtcbiAgICAgIGVuY29kaW5nID0gJydcbiAgICB9IGVsc2UgaWYgKFN0cmVhbS5faXNVaW50OEFycmF5KGNodW5rKSkge1xuICAgICAgY2h1bmsgPSBTdHJlYW0uX3VpbnQ4QXJyYXlUb0J1ZmZlcihjaHVuaylcbiAgICAgIGVuY29kaW5nID0gJydcbiAgICB9IGVsc2UgaWYgKGNodW5rICE9IG51bGwpIHtcbiAgICAgIGVyciA9IG5ldyBFUlJfSU5WQUxJRF9BUkdfVFlQRSgnY2h1bmsnLCBbJ3N0cmluZycsICdCdWZmZXInLCAnVWludDhBcnJheSddLCBjaHVuaylcbiAgICB9XG4gIH1cbiAgaWYgKGVycikge1xuICAgIGVycm9yT3JEZXN0cm95KHN0cmVhbSwgZXJyKVxuICB9IGVsc2UgaWYgKGNodW5rID09PSBudWxsKSB7XG4gICAgc3RhdGUuc3RhdGUgJj0gfmtSZWFkaW5nXG4gICAgb25Fb2ZDaHVuayhzdHJlYW0sIHN0YXRlKVxuICB9IGVsc2UgaWYgKChzdGF0ZS5zdGF0ZSAmIGtPYmplY3RNb2RlKSAhPT0gMCB8fCAoY2h1bmsgJiYgY2h1bmsubGVuZ3RoID4gMCkpIHtcbiAgICBpZiAoYWRkVG9Gcm9udCkge1xuICAgICAgaWYgKChzdGF0ZS5zdGF0ZSAmIGtFbmRFbWl0dGVkKSAhPT0gMCkgZXJyb3JPckRlc3Ryb3koc3RyZWFtLCBuZXcgRVJSX1NUUkVBTV9VTlNISUZUX0FGVEVSX0VORF9FVkVOVCgpKVxuICAgICAgZWxzZSBpZiAoc3RhdGUuZGVzdHJveWVkIHx8IHN0YXRlLmVycm9yZWQpIHJldHVybiBmYWxzZVxuICAgICAgZWxzZSBhZGRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgdHJ1ZSlcbiAgICB9IGVsc2UgaWYgKHN0YXRlLmVuZGVkKSB7XG4gICAgICBlcnJvck9yRGVzdHJveShzdHJlYW0sIG5ldyBFUlJfU1RSRUFNX1BVU0hfQUZURVJfRU9GKCkpXG4gICAgfSBlbHNlIGlmIChzdGF0ZS5kZXN0cm95ZWQgfHwgc3RhdGUuZXJyb3JlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLnN0YXRlICY9IH5rUmVhZGluZ1xuICAgICAgaWYgKHN0YXRlLmRlY29kZXIgJiYgIWVuY29kaW5nKSB7XG4gICAgICAgIGNodW5rID0gc3RhdGUuZGVjb2Rlci53cml0ZShjaHVuaylcbiAgICAgICAgaWYgKHN0YXRlLm9iamVjdE1vZGUgfHwgY2h1bmsubGVuZ3RoICE9PSAwKSBhZGRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgZmFsc2UpXG4gICAgICAgIGVsc2UgbWF5YmVSZWFkTW9yZShzdHJlYW0sIHN0YXRlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGZhbHNlKVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmICghYWRkVG9Gcm9udCkge1xuICAgIHN0YXRlLnN0YXRlICY9IH5rUmVhZGluZ1xuICAgIG1heWJlUmVhZE1vcmUoc3RyZWFtLCBzdGF0ZSlcbiAgfVxuXG4gIC8vIFdlIGNhbiBwdXNoIG1vcmUgZGF0YSBpZiB3ZSBhcmUgYmVsb3cgdGhlIGhpZ2hXYXRlck1hcmsuXG4gIC8vIEFsc28sIGlmIHdlIGhhdmUgbm8gZGF0YSB5ZXQsIHdlIGNhbiBzdGFuZCBzb21lIG1vcmUgYnl0ZXMuXG4gIC8vIFRoaXMgaXMgdG8gd29yayBhcm91bmQgY2FzZXMgd2hlcmUgaHdtPTAsIHN1Y2ggYXMgdGhlIHJlcGwuXG4gIHJldHVybiAhc3RhdGUuZW5kZWQgJiYgKHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcmsgfHwgc3RhdGUubGVuZ3RoID09PSAwKVxufVxuZnVuY3Rpb24gYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGFkZFRvRnJvbnQpIHtcbiAgaWYgKHN0YXRlLmZsb3dpbmcgJiYgc3RhdGUubGVuZ3RoID09PSAwICYmICFzdGF0ZS5zeW5jICYmIHN0cmVhbS5saXN0ZW5lckNvdW50KCdkYXRhJykgPiAwKSB7XG4gICAgLy8gVXNlIHRoZSBndWFyZCB0byBhdm9pZCBjcmVhdGluZyBgU2V0KClgIHJlcGVhdGVkbHlcbiAgICAvLyB3aGVuIHdlIGhhdmUgbXVsdGlwbGUgcGlwZXMuXG4gICAgaWYgKChzdGF0ZS5zdGF0ZSAmIGtNdWx0aUF3YWl0RHJhaW4pICE9PSAwKSB7XG4gICAgICBzdGF0ZS5hd2FpdERyYWluV3JpdGVycy5jbGVhcigpXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLmF3YWl0RHJhaW5Xcml0ZXJzID0gbnVsbFxuICAgIH1cbiAgICBzdGF0ZS5kYXRhRW1pdHRlZCA9IHRydWVcbiAgICBzdHJlYW0uZW1pdCgnZGF0YScsIGNodW5rKVxuICB9IGVsc2Uge1xuICAgIC8vIFVwZGF0ZSB0aGUgYnVmZmVyIGluZm8uXG4gICAgc3RhdGUubGVuZ3RoICs9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoXG4gICAgaWYgKGFkZFRvRnJvbnQpIHN0YXRlLmJ1ZmZlci51bnNoaWZ0KGNodW5rKVxuICAgIGVsc2Ugc3RhdGUuYnVmZmVyLnB1c2goY2h1bmspXG4gICAgaWYgKChzdGF0ZS5zdGF0ZSAmIGtOZWVkUmVhZGFibGUpICE9PSAwKSBlbWl0UmVhZGFibGUoc3RyZWFtKVxuICB9XG4gIG1heWJlUmVhZE1vcmUoc3RyZWFtLCBzdGF0ZSlcbn1cblJlYWRhYmxlLnByb3RvdHlwZS5pc1BhdXNlZCA9IGZ1bmN0aW9uICgpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlXG4gIHJldHVybiBzdGF0ZVtrUGF1c2VkXSA9PT0gdHJ1ZSB8fCBzdGF0ZS5mbG93aW5nID09PSBmYWxzZVxufVxuXG4vLyBCYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cblJlYWRhYmxlLnByb3RvdHlwZS5zZXRFbmNvZGluZyA9IGZ1bmN0aW9uIChlbmMpIHtcbiAgY29uc3QgZGVjb2RlciA9IG5ldyBTdHJpbmdEZWNvZGVyKGVuYylcbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZWNvZGVyID0gZGVjb2RlclxuICAvLyBJZiBzZXRFbmNvZGluZyhudWxsKSwgZGVjb2Rlci5lbmNvZGluZyBlcXVhbHMgdXRmOC5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmNvZGluZyA9IHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVjb2Rlci5lbmNvZGluZ1xuICBjb25zdCBidWZmZXIgPSB0aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlclxuICAvLyBJdGVyYXRlIG92ZXIgY3VycmVudCBidWZmZXIgdG8gY29udmVydCBhbHJlYWR5IHN0b3JlZCBCdWZmZXJzOlxuICBsZXQgY29udGVudCA9ICcnXG4gIGZvciAoY29uc3QgZGF0YSBvZiBidWZmZXIpIHtcbiAgICBjb250ZW50ICs9IGRlY29kZXIud3JpdGUoZGF0YSlcbiAgfVxuICBidWZmZXIuY2xlYXIoKVxuICBpZiAoY29udGVudCAhPT0gJycpIGJ1ZmZlci5wdXNoKGNvbnRlbnQpXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUubGVuZ3RoID0gY29udGVudC5sZW5ndGhcbiAgcmV0dXJuIHRoaXNcbn1cblxuLy8gRG9uJ3QgcmFpc2UgdGhlIGh3bSA+IDFHQi5cbmNvbnN0IE1BWF9IV00gPSAweDQwMDAwMDAwXG5mdW5jdGlvbiBjb21wdXRlTmV3SGlnaFdhdGVyTWFyayhuKSB7XG4gIGlmIChuID4gTUFYX0hXTSkge1xuICAgIHRocm93IG5ldyBFUlJfT1VUX09GX1JBTkdFKCdzaXplJywgJzw9IDFHaUInLCBuKVxuICB9IGVsc2Uge1xuICAgIC8vIEdldCB0aGUgbmV4dCBoaWdoZXN0IHBvd2VyIG9mIDIgdG8gcHJldmVudCBpbmNyZWFzaW5nIGh3bSBleGNlc3NpdmVseSBpblxuICAgIC8vIHRpbnkgYW1vdW50cy5cbiAgICBuLS1cbiAgICBuIHw9IG4gPj4+IDFcbiAgICBuIHw9IG4gPj4+IDJcbiAgICBuIHw9IG4gPj4+IDRcbiAgICBuIHw9IG4gPj4+IDhcbiAgICBuIHw9IG4gPj4+IDE2XG4gICAgbisrXG4gIH1cbiAgcmV0dXJuIG5cbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5mdW5jdGlvbiBob3dNdWNoVG9SZWFkKG4sIHN0YXRlKSB7XG4gIGlmIChuIDw9IDAgfHwgKHN0YXRlLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5lbmRlZCkpIHJldHVybiAwXG4gIGlmICgoc3RhdGUuc3RhdGUgJiBrT2JqZWN0TW9kZSkgIT09IDApIHJldHVybiAxXG4gIGlmIChOdW1iZXJJc05hTihuKSkge1xuICAgIC8vIE9ubHkgZmxvdyBvbmUgYnVmZmVyIGF0IGEgdGltZS5cbiAgICBpZiAoc3RhdGUuZmxvd2luZyAmJiBzdGF0ZS5sZW5ndGgpIHJldHVybiBzdGF0ZS5idWZmZXIuZmlyc3QoKS5sZW5ndGhcbiAgICByZXR1cm4gc3RhdGUubGVuZ3RoXG4gIH1cbiAgaWYgKG4gPD0gc3RhdGUubGVuZ3RoKSByZXR1cm4gblxuICByZXR1cm4gc3RhdGUuZW5kZWQgPyBzdGF0ZS5sZW5ndGggOiAwXG59XG5cbi8vIFlvdSBjYW4gb3ZlcnJpZGUgZWl0aGVyIHRoaXMgbWV0aG9kLCBvciB0aGUgYXN5bmMgX3JlYWQobikgYmVsb3cuXG5SZWFkYWJsZS5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uIChuKSB7XG4gIGRlYnVnKCdyZWFkJywgbilcbiAgLy8gU2FtZSBhcyBwYXJzZUludCh1bmRlZmluZWQsIDEwKSwgaG93ZXZlciBWOCA3LjMgcGVyZm9ybWFuY2UgcmVncmVzc2VkXG4gIC8vIGluIHRoaXMgc2NlbmFyaW8sIHNvIHdlIGFyZSBkb2luZyBpdCBtYW51YWxseS5cbiAgaWYgKG4gPT09IHVuZGVmaW5lZCkge1xuICAgIG4gPSBOYU5cbiAgfSBlbHNlIGlmICghTnVtYmVySXNJbnRlZ2VyKG4pKSB7XG4gICAgbiA9IE51bWJlclBhcnNlSW50KG4sIDEwKVxuICB9XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZVxuICBjb25zdCBuT3JpZyA9IG5cblxuICAvLyBJZiB3ZSdyZSBhc2tpbmcgZm9yIG1vcmUgdGhhbiB0aGUgY3VycmVudCBod20sIHRoZW4gcmFpc2UgdGhlIGh3bS5cbiAgaWYgKG4gPiBzdGF0ZS5oaWdoV2F0ZXJNYXJrKSBzdGF0ZS5oaWdoV2F0ZXJNYXJrID0gY29tcHV0ZU5ld0hpZ2hXYXRlck1hcmsobilcbiAgaWYgKG4gIT09IDApIHN0YXRlLnN0YXRlICY9IH5rRW1pdHRlZFJlYWRhYmxlXG5cbiAgLy8gSWYgd2UncmUgZG9pbmcgcmVhZCgwKSB0byB0cmlnZ2VyIGEgcmVhZGFibGUgZXZlbnQsIGJ1dCB3ZVxuICAvLyBhbHJlYWR5IGhhdmUgYSBidW5jaCBvZiBkYXRhIGluIHRoZSBidWZmZXIsIHRoZW4ganVzdCB0cmlnZ2VyXG4gIC8vIHRoZSAncmVhZGFibGUnIGV2ZW50IGFuZCBtb3ZlIG9uLlxuICBpZiAoXG4gICAgbiA9PT0gMCAmJlxuICAgIHN0YXRlLm5lZWRSZWFkYWJsZSAmJlxuICAgICgoc3RhdGUuaGlnaFdhdGVyTWFyayAhPT0gMCA/IHN0YXRlLmxlbmd0aCA+PSBzdGF0ZS5oaWdoV2F0ZXJNYXJrIDogc3RhdGUubGVuZ3RoID4gMCkgfHwgc3RhdGUuZW5kZWQpXG4gICkge1xuICAgIGRlYnVnKCdyZWFkOiBlbWl0UmVhZGFibGUnLCBzdGF0ZS5sZW5ndGgsIHN0YXRlLmVuZGVkKVxuICAgIGlmIChzdGF0ZS5sZW5ndGggPT09IDAgJiYgc3RhdGUuZW5kZWQpIGVuZFJlYWRhYmxlKHRoaXMpXG4gICAgZWxzZSBlbWl0UmVhZGFibGUodGhpcylcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIG4gPSBob3dNdWNoVG9SZWFkKG4sIHN0YXRlKVxuXG4gIC8vIElmIHdlJ3ZlIGVuZGVkLCBhbmQgd2UncmUgbm93IGNsZWFyLCB0aGVuIGZpbmlzaCBpdCB1cC5cbiAgaWYgKG4gPT09IDAgJiYgc3RhdGUuZW5kZWQpIHtcbiAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSBlbmRSZWFkYWJsZSh0aGlzKVxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICAvLyBBbGwgdGhlIGFjdHVhbCBjaHVuayBnZW5lcmF0aW9uIGxvZ2ljIG5lZWRzIHRvIGJlXG4gIC8vICpiZWxvdyogdGhlIGNhbGwgdG8gX3JlYWQuICBUaGUgcmVhc29uIGlzIHRoYXQgaW4gY2VydGFpblxuICAvLyBzeW50aGV0aWMgc3RyZWFtIGNhc2VzLCBzdWNoIGFzIHBhc3N0aHJvdWdoIHN0cmVhbXMsIF9yZWFkXG4gIC8vIG1heSBiZSBhIGNvbXBsZXRlbHkgc3luY2hyb25vdXMgb3BlcmF0aW9uIHdoaWNoIG1heSBjaGFuZ2VcbiAgLy8gdGhlIHN0YXRlIG9mIHRoZSByZWFkIGJ1ZmZlciwgcHJvdmlkaW5nIGVub3VnaCBkYXRhIHdoZW5cbiAgLy8gYmVmb3JlIHRoZXJlIHdhcyAqbm90KiBlbm91Z2guXG4gIC8vXG4gIC8vIFNvLCB0aGUgc3RlcHMgYXJlOlxuICAvLyAxLiBGaWd1cmUgb3V0IHdoYXQgdGhlIHN0YXRlIG9mIHRoaW5ncyB3aWxsIGJlIGFmdGVyIHdlIGRvXG4gIC8vIGEgcmVhZCBmcm9tIHRoZSBidWZmZXIuXG4gIC8vXG4gIC8vIDIuIElmIHRoYXQgcmVzdWx0aW5nIHN0YXRlIHdpbGwgdHJpZ2dlciBhIF9yZWFkLCB0aGVuIGNhbGwgX3JlYWQuXG4gIC8vIE5vdGUgdGhhdCB0aGlzIG1heSBiZSBhc3luY2hyb25vdXMsIG9yIHN5bmNocm9ub3VzLiAgWWVzLCBpdCBpc1xuICAvLyBkZWVwbHkgdWdseSB0byB3cml0ZSBBUElzIHRoaXMgd2F5LCBidXQgdGhhdCBzdGlsbCBkb2Vzbid0IG1lYW5cbiAgLy8gdGhhdCB0aGUgUmVhZGFibGUgY2xhc3Mgc2hvdWxkIGJlaGF2ZSBpbXByb3Blcmx5LCBhcyBzdHJlYW1zIGFyZVxuICAvLyBkZXNpZ25lZCB0byBiZSBzeW5jL2FzeW5jIGFnbm9zdGljLlxuICAvLyBUYWtlIG5vdGUgaWYgdGhlIF9yZWFkIGNhbGwgaXMgc3luYyBvciBhc3luYyAoaWUsIGlmIHRoZSByZWFkIGNhbGxcbiAgLy8gaGFzIHJldHVybmVkIHlldCksIHNvIHRoYXQgd2Uga25vdyB3aGV0aGVyIG9yIG5vdCBpdCdzIHNhZmUgdG8gZW1pdFxuICAvLyAncmVhZGFibGUnIGV0Yy5cbiAgLy9cbiAgLy8gMy4gQWN0dWFsbHkgcHVsbCB0aGUgcmVxdWVzdGVkIGNodW5rcyBvdXQgb2YgdGhlIGJ1ZmZlciBhbmQgcmV0dXJuLlxuXG4gIC8vIGlmIHdlIG5lZWQgYSByZWFkYWJsZSBldmVudCwgdGhlbiB3ZSBuZWVkIHRvIGRvIHNvbWUgcmVhZGluZy5cbiAgbGV0IGRvUmVhZCA9IChzdGF0ZS5zdGF0ZSAmIGtOZWVkUmVhZGFibGUpICE9PSAwXG4gIGRlYnVnKCduZWVkIHJlYWRhYmxlJywgZG9SZWFkKVxuXG4gIC8vIElmIHdlIGN1cnJlbnRseSBoYXZlIGxlc3MgdGhhbiB0aGUgaGlnaFdhdGVyTWFyaywgdGhlbiBhbHNvIHJlYWQgc29tZS5cbiAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCB8fCBzdGF0ZS5sZW5ndGggLSBuIDwgc3RhdGUuaGlnaFdhdGVyTWFyaykge1xuICAgIGRvUmVhZCA9IHRydWVcbiAgICBkZWJ1ZygnbGVuZ3RoIGxlc3MgdGhhbiB3YXRlcm1hcmsnLCBkb1JlYWQpXG4gIH1cblxuICAvLyBIb3dldmVyLCBpZiB3ZSd2ZSBlbmRlZCwgdGhlbiB0aGVyZSdzIG5vIHBvaW50LCBpZiB3ZSdyZSBhbHJlYWR5XG4gIC8vIHJlYWRpbmcsIHRoZW4gaXQncyB1bm5lY2Vzc2FyeSwgaWYgd2UncmUgY29uc3RydWN0aW5nIHdlIGhhdmUgdG8gd2FpdCxcbiAgLy8gYW5kIGlmIHdlJ3JlIGRlc3Ryb3llZCBvciBlcnJvcmVkLCB0aGVuIGl0J3Mgbm90IGFsbG93ZWQsXG4gIGlmIChzdGF0ZS5lbmRlZCB8fCBzdGF0ZS5yZWFkaW5nIHx8IHN0YXRlLmRlc3Ryb3llZCB8fCBzdGF0ZS5lcnJvcmVkIHx8ICFzdGF0ZS5jb25zdHJ1Y3RlZCkge1xuICAgIGRvUmVhZCA9IGZhbHNlXG4gICAgZGVidWcoJ3JlYWRpbmcsIGVuZGVkIG9yIGNvbnN0cnVjdGluZycsIGRvUmVhZClcbiAgfSBlbHNlIGlmIChkb1JlYWQpIHtcbiAgICBkZWJ1ZygnZG8gcmVhZCcpXG4gICAgc3RhdGUuc3RhdGUgfD0ga1JlYWRpbmcgfCBrU3luY1xuICAgIC8vIElmIHRoZSBsZW5ndGggaXMgY3VycmVudGx5IHplcm8sIHRoZW4gd2UgKm5lZWQqIGEgcmVhZGFibGUgZXZlbnQuXG4gICAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkgc3RhdGUuc3RhdGUgfD0ga05lZWRSZWFkYWJsZVxuXG4gICAgLy8gQ2FsbCBpbnRlcm5hbCByZWFkIG1ldGhvZFxuICAgIHRyeSB7XG4gICAgICB0aGlzLl9yZWFkKHN0YXRlLmhpZ2hXYXRlck1hcmspXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBlcnJvck9yRGVzdHJveSh0aGlzLCBlcnIpXG4gICAgfVxuICAgIHN0YXRlLnN0YXRlICY9IH5rU3luY1xuXG4gICAgLy8gSWYgX3JlYWQgcHVzaGVkIGRhdGEgc3luY2hyb25vdXNseSwgdGhlbiBgcmVhZGluZ2Agd2lsbCBiZSBmYWxzZSxcbiAgICAvLyBhbmQgd2UgbmVlZCB0byByZS1ldmFsdWF0ZSBob3cgbXVjaCBkYXRhIHdlIGNhbiByZXR1cm4gdG8gdGhlIHVzZXIuXG4gICAgaWYgKCFzdGF0ZS5yZWFkaW5nKSBuID0gaG93TXVjaFRvUmVhZChuT3JpZywgc3RhdGUpXG4gIH1cbiAgbGV0IHJldFxuICBpZiAobiA+IDApIHJldCA9IGZyb21MaXN0KG4sIHN0YXRlKVxuICBlbHNlIHJldCA9IG51bGxcbiAgaWYgKHJldCA9PT0gbnVsbCkge1xuICAgIHN0YXRlLm5lZWRSZWFkYWJsZSA9IHN0YXRlLmxlbmd0aCA8PSBzdGF0ZS5oaWdoV2F0ZXJNYXJrXG4gICAgbiA9IDBcbiAgfSBlbHNlIHtcbiAgICBzdGF0ZS5sZW5ndGggLT0gblxuICAgIGlmIChzdGF0ZS5tdWx0aUF3YWl0RHJhaW4pIHtcbiAgICAgIHN0YXRlLmF3YWl0RHJhaW5Xcml0ZXJzLmNsZWFyKClcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUuYXdhaXREcmFpbldyaXRlcnMgPSBudWxsXG4gICAgfVxuICB9XG4gIGlmIChzdGF0ZS5sZW5ndGggPT09IDApIHtcbiAgICAvLyBJZiB3ZSBoYXZlIG5vdGhpbmcgaW4gdGhlIGJ1ZmZlciwgdGhlbiB3ZSB3YW50IHRvIGtub3dcbiAgICAvLyBhcyBzb29uIGFzIHdlICpkbyogZ2V0IHNvbWV0aGluZyBpbnRvIHRoZSBidWZmZXIuXG4gICAgaWYgKCFzdGF0ZS5lbmRlZCkgc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZVxuXG4gICAgLy8gSWYgd2UgdHJpZWQgdG8gcmVhZCgpIHBhc3QgdGhlIEVPRiwgdGhlbiBlbWl0IGVuZCBvbiB0aGUgbmV4dCB0aWNrLlxuICAgIGlmIChuT3JpZyAhPT0gbiAmJiBzdGF0ZS5lbmRlZCkgZW5kUmVhZGFibGUodGhpcylcbiAgfVxuICBpZiAocmV0ICE9PSBudWxsICYmICFzdGF0ZS5lcnJvckVtaXR0ZWQgJiYgIXN0YXRlLmNsb3NlRW1pdHRlZCkge1xuICAgIHN0YXRlLmRhdGFFbWl0dGVkID0gdHJ1ZVxuICAgIHRoaXMuZW1pdCgnZGF0YScsIHJldClcbiAgfVxuICByZXR1cm4gcmV0XG59XG5mdW5jdGlvbiBvbkVvZkNodW5rKHN0cmVhbSwgc3RhdGUpIHtcbiAgZGVidWcoJ29uRW9mQ2h1bmsnKVxuICBpZiAoc3RhdGUuZW5kZWQpIHJldHVyblxuICBpZiAoc3RhdGUuZGVjb2Rlcikge1xuICAgIGNvbnN0IGNodW5rID0gc3RhdGUuZGVjb2Rlci5lbmQoKVxuICAgIGlmIChjaHVuayAmJiBjaHVuay5sZW5ndGgpIHtcbiAgICAgIHN0YXRlLmJ1ZmZlci5wdXNoKGNodW5rKVxuICAgICAgc3RhdGUubGVuZ3RoICs9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoXG4gICAgfVxuICB9XG4gIHN0YXRlLmVuZGVkID0gdHJ1ZVxuICBpZiAoc3RhdGUuc3luYykge1xuICAgIC8vIElmIHdlIGFyZSBzeW5jLCB3YWl0IHVudGlsIG5leHQgdGljayB0byBlbWl0IHRoZSBkYXRhLlxuICAgIC8vIE90aGVyd2lzZSB3ZSByaXNrIGVtaXR0aW5nIGRhdGEgaW4gdGhlIGZsb3coKVxuICAgIC8vIHRoZSByZWFkYWJsZSBjb2RlIHRyaWdnZXJzIGR1cmluZyBhIHJlYWQoKSBjYWxsLlxuICAgIGVtaXRSZWFkYWJsZShzdHJlYW0pXG4gIH0gZWxzZSB7XG4gICAgLy8gRW1pdCAncmVhZGFibGUnIG5vdyB0byBtYWtlIHN1cmUgaXQgZ2V0cyBwaWNrZWQgdXAuXG4gICAgc3RhdGUubmVlZFJlYWRhYmxlID0gZmFsc2VcbiAgICBzdGF0ZS5lbWl0dGVkUmVhZGFibGUgPSB0cnVlXG4gICAgLy8gV2UgaGF2ZSB0byBlbWl0IHJlYWRhYmxlIG5vdyB0aGF0IHdlIGFyZSBFT0YuIE1vZHVsZXNcbiAgICAvLyBpbiB0aGUgZWNvc3lzdGVtIChlLmcuIGRpY2VyKSByZWx5IG9uIHRoaXMgZXZlbnQgYmVpbmcgc3luYy5cbiAgICBlbWl0UmVhZGFibGVfKHN0cmVhbSlcbiAgfVxufVxuXG4vLyBEb24ndCBlbWl0IHJlYWRhYmxlIHJpZ2h0IGF3YXkgaW4gc3luYyBtb2RlLCBiZWNhdXNlIHRoaXMgY2FuIHRyaWdnZXJcbi8vIGFub3RoZXIgcmVhZCgpIGNhbGwgPT4gc3RhY2sgb3ZlcmZsb3cuICBUaGlzIHdheSwgaXQgbWlnaHQgdHJpZ2dlclxuLy8gYSBuZXh0VGljayByZWN1cnNpb24gd2FybmluZywgYnV0IHRoYXQncyBub3Qgc28gYmFkLlxuZnVuY3Rpb24gZW1pdFJlYWRhYmxlKHN0cmVhbSkge1xuICBjb25zdCBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZVxuICBkZWJ1ZygnZW1pdFJlYWRhYmxlJywgc3RhdGUubmVlZFJlYWRhYmxlLCBzdGF0ZS5lbWl0dGVkUmVhZGFibGUpXG4gIHN0YXRlLm5lZWRSZWFkYWJsZSA9IGZhbHNlXG4gIGlmICghc3RhdGUuZW1pdHRlZFJlYWRhYmxlKSB7XG4gICAgZGVidWcoJ2VtaXRSZWFkYWJsZScsIHN0YXRlLmZsb3dpbmcpXG4gICAgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gdHJ1ZVxuICAgIHByb2Nlc3MubmV4dFRpY2soZW1pdFJlYWRhYmxlXywgc3RyZWFtKVxuICB9XG59XG5mdW5jdGlvbiBlbWl0UmVhZGFibGVfKHN0cmVhbSkge1xuICBjb25zdCBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZVxuICBkZWJ1ZygnZW1pdFJlYWRhYmxlXycsIHN0YXRlLmRlc3Ryb3llZCwgc3RhdGUubGVuZ3RoLCBzdGF0ZS5lbmRlZClcbiAgaWYgKCFzdGF0ZS5kZXN0cm95ZWQgJiYgIXN0YXRlLmVycm9yZWQgJiYgKHN0YXRlLmxlbmd0aCB8fCBzdGF0ZS5lbmRlZCkpIHtcbiAgICBzdHJlYW0uZW1pdCgncmVhZGFibGUnKVxuICAgIHN0YXRlLmVtaXR0ZWRSZWFkYWJsZSA9IGZhbHNlXG4gIH1cblxuICAvLyBUaGUgc3RyZWFtIG5lZWRzIGFub3RoZXIgcmVhZGFibGUgZXZlbnQgaWY6XG4gIC8vIDEuIEl0IGlzIG5vdCBmbG93aW5nLCBhcyB0aGUgZmxvdyBtZWNoYW5pc20gd2lsbCB0YWtlXG4gIC8vICAgIGNhcmUgb2YgaXQuXG4gIC8vIDIuIEl0IGlzIG5vdCBlbmRlZC5cbiAgLy8gMy4gSXQgaXMgYmVsb3cgdGhlIGhpZ2hXYXRlck1hcmssIHNvIHdlIGNhbiBzY2hlZHVsZVxuICAvLyAgICBhbm90aGVyIHJlYWRhYmxlIGxhdGVyLlxuICBzdGF0ZS5uZWVkUmVhZGFibGUgPSAhc3RhdGUuZmxvd2luZyAmJiAhc3RhdGUuZW5kZWQgJiYgc3RhdGUubGVuZ3RoIDw9IHN0YXRlLmhpZ2hXYXRlck1hcmtcbiAgZmxvdyhzdHJlYW0pXG59XG5cbi8vIEF0IHRoaXMgcG9pbnQsIHRoZSB1c2VyIGhhcyBwcmVzdW1hYmx5IHNlZW4gdGhlICdyZWFkYWJsZScgZXZlbnQsXG4vLyBhbmQgY2FsbGVkIHJlYWQoKSB0byBjb25zdW1lIHNvbWUgZGF0YS4gIHRoYXQgbWF5IGhhdmUgdHJpZ2dlcmVkXG4vLyBpbiB0dXJuIGFub3RoZXIgX3JlYWQobikgY2FsbCwgaW4gd2hpY2ggY2FzZSByZWFkaW5nID0gdHJ1ZSBpZlxuLy8gaXQncyBpbiBwcm9ncmVzcy5cbi8vIEhvd2V2ZXIsIGlmIHdlJ3JlIG5vdCBlbmRlZCwgb3IgcmVhZGluZywgYW5kIHRoZSBsZW5ndGggPCBod20sXG4vLyB0aGVuIGdvIGFoZWFkIGFuZCB0cnkgdG8gcmVhZCBzb21lIG1vcmUgcHJlZW1wdGl2ZWx5LlxuZnVuY3Rpb24gbWF5YmVSZWFkTW9yZShzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucmVhZGluZ01vcmUgJiYgc3RhdGUuY29uc3RydWN0ZWQpIHtcbiAgICBzdGF0ZS5yZWFkaW5nTW9yZSA9IHRydWVcbiAgICBwcm9jZXNzLm5leHRUaWNrKG1heWJlUmVhZE1vcmVfLCBzdHJlYW0sIHN0YXRlKVxuICB9XG59XG5mdW5jdGlvbiBtYXliZVJlYWRNb3JlXyhzdHJlYW0sIHN0YXRlKSB7XG4gIC8vIEF0dGVtcHQgdG8gcmVhZCBtb3JlIGRhdGEgaWYgd2Ugc2hvdWxkLlxuICAvL1xuICAvLyBUaGUgY29uZGl0aW9ucyBmb3IgcmVhZGluZyBtb3JlIGRhdGEgYXJlIChvbmUgb2YpOlxuICAvLyAtIE5vdCBlbm91Z2ggZGF0YSBidWZmZXJlZCAoc3RhdGUubGVuZ3RoIDwgc3RhdGUuaGlnaFdhdGVyTWFyaykuIFRoZSBsb29wXG4gIC8vICAgaXMgcmVzcG9uc2libGUgZm9yIGZpbGxpbmcgdGhlIGJ1ZmZlciB3aXRoIGVub3VnaCBkYXRhIGlmIHN1Y2ggZGF0YVxuICAvLyAgIGlzIGF2YWlsYWJsZS4gSWYgaGlnaFdhdGVyTWFyayBpcyAwIGFuZCB3ZSBhcmUgbm90IGluIHRoZSBmbG93aW5nIG1vZGVcbiAgLy8gICB3ZSBzaG91bGQgX25vdF8gYXR0ZW1wdCB0byBidWZmZXIgYW55IGV4dHJhIGRhdGEuIFdlJ2xsIGdldCBtb3JlIGRhdGFcbiAgLy8gICB3aGVuIHRoZSBzdHJlYW0gY29uc3VtZXIgY2FsbHMgcmVhZCgpIGluc3RlYWQuXG4gIC8vIC0gTm8gZGF0YSBpbiB0aGUgYnVmZmVyLCBhbmQgdGhlIHN0cmVhbSBpcyBpbiBmbG93aW5nIG1vZGUuIEluIHRoaXMgbW9kZVxuICAvLyAgIHRoZSBsb29wIGJlbG93IGlzIHJlc3BvbnNpYmxlIGZvciBlbnN1cmluZyByZWFkKCkgaXMgY2FsbGVkLiBGYWlsaW5nIHRvXG4gIC8vICAgY2FsbCByZWFkIGhlcmUgd291bGQgYWJvcnQgdGhlIGZsb3cgYW5kIHRoZXJlJ3Mgbm8gb3RoZXIgbWVjaGFuaXNtIGZvclxuICAvLyAgIGNvbnRpbnVpbmcgdGhlIGZsb3cgaWYgdGhlIHN0cmVhbSBjb25zdW1lciBoYXMganVzdCBzdWJzY3JpYmVkIHRvIHRoZVxuICAvLyAgICdkYXRhJyBldmVudC5cbiAgLy9cbiAgLy8gSW4gYWRkaXRpb24gdG8gdGhlIGFib3ZlIGNvbmRpdGlvbnMgdG8ga2VlcCByZWFkaW5nIGRhdGEsIHRoZSBmb2xsb3dpbmdcbiAgLy8gY29uZGl0aW9ucyBwcmV2ZW50IHRoZSBkYXRhIGZyb20gYmVpbmcgcmVhZDpcbiAgLy8gLSBUaGUgc3RyZWFtIGhhcyBlbmRlZCAoc3RhdGUuZW5kZWQpLlxuICAvLyAtIFRoZXJlIGlzIGFscmVhZHkgYSBwZW5kaW5nICdyZWFkJyBvcGVyYXRpb24gKHN0YXRlLnJlYWRpbmcpLiBUaGlzIGlzIGFcbiAgLy8gICBjYXNlIHdoZXJlIHRoZSBzdHJlYW0gaGFzIGNhbGxlZCB0aGUgaW1wbGVtZW50YXRpb24gZGVmaW5lZCBfcmVhZCgpXG4gIC8vICAgbWV0aG9kLCBidXQgdGhleSBhcmUgcHJvY2Vzc2luZyB0aGUgY2FsbCBhc3luY2hyb25vdXNseSBhbmQgaGF2ZSBfbm90X1xuICAvLyAgIGNhbGxlZCBwdXNoKCkgd2l0aCBuZXcgZGF0YS4gSW4gdGhpcyBjYXNlIHdlIHNraXAgcGVyZm9ybWluZyBtb3JlXG4gIC8vICAgcmVhZCgpcy4gVGhlIGV4ZWN1dGlvbiBlbmRzIGluIHRoaXMgbWV0aG9kIGFnYWluIGFmdGVyIHRoZSBfcmVhZCgpIGVuZHNcbiAgLy8gICB1cCBjYWxsaW5nIHB1c2goKSB3aXRoIG1vcmUgZGF0YS5cbiAgd2hpbGUgKFxuICAgICFzdGF0ZS5yZWFkaW5nICYmXG4gICAgIXN0YXRlLmVuZGVkICYmXG4gICAgKHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcmsgfHwgKHN0YXRlLmZsb3dpbmcgJiYgc3RhdGUubGVuZ3RoID09PSAwKSlcbiAgKSB7XG4gICAgY29uc3QgbGVuID0gc3RhdGUubGVuZ3RoXG4gICAgZGVidWcoJ21heWJlUmVhZE1vcmUgcmVhZCAwJylcbiAgICBzdHJlYW0ucmVhZCgwKVxuICAgIGlmIChsZW4gPT09IHN0YXRlLmxlbmd0aClcbiAgICAgIC8vIERpZG4ndCBnZXQgYW55IGRhdGEsIHN0b3Agc3Bpbm5pbmcuXG4gICAgICBicmVha1xuICB9XG4gIHN0YXRlLnJlYWRpbmdNb3JlID0gZmFsc2Vcbn1cblxuLy8gQWJzdHJhY3QgbWV0aG9kLiAgdG8gYmUgb3ZlcnJpZGRlbiBpbiBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBjbGFzc2VzLlxuLy8gY2FsbCBjYihlciwgZGF0YSkgd2hlcmUgZGF0YSBpcyA8PSBuIGluIGxlbmd0aC5cbi8vIGZvciB2aXJ0dWFsIChub24tc3RyaW5nLCBub24tYnVmZmVyKSBzdHJlYW1zLCBcImxlbmd0aFwiIGlzIHNvbWV3aGF0XG4vLyBhcmJpdHJhcnksIGFuZCBwZXJoYXBzIG5vdCB2ZXJ5IG1lYW5pbmdmdWwuXG5SZWFkYWJsZS5wcm90b3R5cGUuX3JlYWQgPSBmdW5jdGlvbiAobikge1xuICB0aHJvdyBuZXcgRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQoJ19yZWFkKCknKVxufVxuUmVhZGFibGUucHJvdG90eXBlLnBpcGUgPSBmdW5jdGlvbiAoZGVzdCwgcGlwZU9wdHMpIHtcbiAgY29uc3Qgc3JjID0gdGhpc1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGVcbiAgaWYgKHN0YXRlLnBpcGVzLmxlbmd0aCA9PT0gMSkge1xuICAgIGlmICghc3RhdGUubXVsdGlBd2FpdERyYWluKSB7XG4gICAgICBzdGF0ZS5tdWx0aUF3YWl0RHJhaW4gPSB0cnVlXG4gICAgICBzdGF0ZS5hd2FpdERyYWluV3JpdGVycyA9IG5ldyBTYWZlU2V0KHN0YXRlLmF3YWl0RHJhaW5Xcml0ZXJzID8gW3N0YXRlLmF3YWl0RHJhaW5Xcml0ZXJzXSA6IFtdKVxuICAgIH1cbiAgfVxuICBzdGF0ZS5waXBlcy5wdXNoKGRlc3QpXG4gIGRlYnVnKCdwaXBlIGNvdW50PSVkIG9wdHM9JWonLCBzdGF0ZS5waXBlcy5sZW5ndGgsIHBpcGVPcHRzKVxuICBjb25zdCBkb0VuZCA9ICghcGlwZU9wdHMgfHwgcGlwZU9wdHMuZW5kICE9PSBmYWxzZSkgJiYgZGVzdCAhPT0gcHJvY2Vzcy5zdGRvdXQgJiYgZGVzdCAhPT0gcHJvY2Vzcy5zdGRlcnJcbiAgY29uc3QgZW5kRm4gPSBkb0VuZCA/IG9uZW5kIDogdW5waXBlXG4gIGlmIChzdGF0ZS5lbmRFbWl0dGVkKSBwcm9jZXNzLm5leHRUaWNrKGVuZEZuKVxuICBlbHNlIHNyYy5vbmNlKCdlbmQnLCBlbmRGbilcbiAgZGVzdC5vbigndW5waXBlJywgb251bnBpcGUpXG4gIGZ1bmN0aW9uIG9udW5waXBlKHJlYWRhYmxlLCB1bnBpcGVJbmZvKSB7XG4gICAgZGVidWcoJ29udW5waXBlJylcbiAgICBpZiAocmVhZGFibGUgPT09IHNyYykge1xuICAgICAgaWYgKHVucGlwZUluZm8gJiYgdW5waXBlSW5mby5oYXNVbnBpcGVkID09PSBmYWxzZSkge1xuICAgICAgICB1bnBpcGVJbmZvLmhhc1VucGlwZWQgPSB0cnVlXG4gICAgICAgIGNsZWFudXAoKVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBvbmVuZCgpIHtcbiAgICBkZWJ1Zygnb25lbmQnKVxuICAgIGRlc3QuZW5kKClcbiAgfVxuICBsZXQgb25kcmFpblxuICBsZXQgY2xlYW5lZFVwID0gZmFsc2VcbiAgZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICBkZWJ1ZygnY2xlYW51cCcpXG4gICAgLy8gQ2xlYW51cCBldmVudCBoYW5kbGVycyBvbmNlIHRoZSBwaXBlIGlzIGJyb2tlbi5cbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIG9uY2xvc2UpXG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZmluaXNoJywgb25maW5pc2gpXG4gICAgaWYgKG9uZHJhaW4pIHtcbiAgICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2RyYWluJywgb25kcmFpbilcbiAgICB9XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKVxuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ3VucGlwZScsIG9udW5waXBlKVxuICAgIHNyYy5yZW1vdmVMaXN0ZW5lcignZW5kJywgb25lbmQpXG4gICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCB1bnBpcGUpXG4gICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdkYXRhJywgb25kYXRhKVxuICAgIGNsZWFuZWRVcCA9IHRydWVcblxuICAgIC8vIElmIHRoZSByZWFkZXIgaXMgd2FpdGluZyBmb3IgYSBkcmFpbiBldmVudCBmcm9tIHRoaXNcbiAgICAvLyBzcGVjaWZpYyB3cml0ZXIsIHRoZW4gaXQgd291bGQgY2F1c2UgaXQgdG8gbmV2ZXIgc3RhcnRcbiAgICAvLyBmbG93aW5nIGFnYWluLlxuICAgIC8vIFNvLCBpZiB0aGlzIGlzIGF3YWl0aW5nIGEgZHJhaW4sIHRoZW4gd2UganVzdCBjYWxsIGl0IG5vdy5cbiAgICAvLyBJZiB3ZSBkb24ndCBrbm93LCB0aGVuIGFzc3VtZSB0aGF0IHdlIGFyZSB3YWl0aW5nIGZvciBvbmUuXG4gICAgaWYgKG9uZHJhaW4gJiYgc3RhdGUuYXdhaXREcmFpbldyaXRlcnMgJiYgKCFkZXN0Ll93cml0YWJsZVN0YXRlIHx8IGRlc3QuX3dyaXRhYmxlU3RhdGUubmVlZERyYWluKSkgb25kcmFpbigpXG4gIH1cbiAgZnVuY3Rpb24gcGF1c2UoKSB7XG4gICAgLy8gSWYgdGhlIHVzZXIgdW5waXBlZCBkdXJpbmcgYGRlc3Qud3JpdGUoKWAsIGl0IGlzIHBvc3NpYmxlXG4gICAgLy8gdG8gZ2V0IHN0dWNrIGluIGEgcGVybWFuZW50bHkgcGF1c2VkIHN0YXRlIGlmIHRoYXQgd3JpdGVcbiAgICAvLyBhbHNvIHJldHVybmVkIGZhbHNlLlxuICAgIC8vID0+IENoZWNrIHdoZXRoZXIgYGRlc3RgIGlzIHN0aWxsIGEgcGlwaW5nIGRlc3RpbmF0aW9uLlxuICAgIGlmICghY2xlYW5lZFVwKSB7XG4gICAgICBpZiAoc3RhdGUucGlwZXMubGVuZ3RoID09PSAxICYmIHN0YXRlLnBpcGVzWzBdID09PSBkZXN0KSB7XG4gICAgICAgIGRlYnVnKCdmYWxzZSB3cml0ZSByZXNwb25zZSwgcGF1c2UnLCAwKVxuICAgICAgICBzdGF0ZS5hd2FpdERyYWluV3JpdGVycyA9IGRlc3RcbiAgICAgICAgc3RhdGUubXVsdGlBd2FpdERyYWluID0gZmFsc2VcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUucGlwZXMubGVuZ3RoID4gMSAmJiBzdGF0ZS5waXBlcy5pbmNsdWRlcyhkZXN0KSkge1xuICAgICAgICBkZWJ1ZygnZmFsc2Ugd3JpdGUgcmVzcG9uc2UsIHBhdXNlJywgc3RhdGUuYXdhaXREcmFpbldyaXRlcnMuc2l6ZSlcbiAgICAgICAgc3RhdGUuYXdhaXREcmFpbldyaXRlcnMuYWRkKGRlc3QpXG4gICAgICB9XG4gICAgICBzcmMucGF1c2UoKVxuICAgIH1cbiAgICBpZiAoIW9uZHJhaW4pIHtcbiAgICAgIC8vIFdoZW4gdGhlIGRlc3QgZHJhaW5zLCBpdCByZWR1Y2VzIHRoZSBhd2FpdERyYWluIGNvdW50ZXJcbiAgICAgIC8vIG9uIHRoZSBzb3VyY2UuICBUaGlzIHdvdWxkIGJlIG1vcmUgZWxlZ2FudCB3aXRoIGEgLm9uY2UoKVxuICAgICAgLy8gaGFuZGxlciBpbiBmbG93KCksIGJ1dCBhZGRpbmcgYW5kIHJlbW92aW5nIHJlcGVhdGVkbHkgaXNcbiAgICAgIC8vIHRvbyBzbG93LlxuICAgICAgb25kcmFpbiA9IHBpcGVPbkRyYWluKHNyYywgZGVzdClcbiAgICAgIGRlc3Qub24oJ2RyYWluJywgb25kcmFpbilcbiAgICB9XG4gIH1cbiAgc3JjLm9uKCdkYXRhJywgb25kYXRhKVxuICBmdW5jdGlvbiBvbmRhdGEoY2h1bmspIHtcbiAgICBkZWJ1Zygnb25kYXRhJylcbiAgICBjb25zdCByZXQgPSBkZXN0LndyaXRlKGNodW5rKVxuICAgIGRlYnVnKCdkZXN0LndyaXRlJywgcmV0KVxuICAgIGlmIChyZXQgPT09IGZhbHNlKSB7XG4gICAgICBwYXVzZSgpXG4gICAgfVxuICB9XG5cbiAgLy8gSWYgdGhlIGRlc3QgaGFzIGFuIGVycm9yLCB0aGVuIHN0b3AgcGlwaW5nIGludG8gaXQuXG4gIC8vIEhvd2V2ZXIsIGRvbid0IHN1cHByZXNzIHRoZSB0aHJvd2luZyBiZWhhdmlvciBmb3IgdGhpcy5cbiAgZnVuY3Rpb24gb25lcnJvcihlcikge1xuICAgIGRlYnVnKCdvbmVycm9yJywgZXIpXG4gICAgdW5waXBlKClcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpXG4gICAgaWYgKGRlc3QubGlzdGVuZXJDb3VudCgnZXJyb3InKSA9PT0gMCkge1xuICAgICAgY29uc3QgcyA9IGRlc3QuX3dyaXRhYmxlU3RhdGUgfHwgZGVzdC5fcmVhZGFibGVTdGF0ZVxuICAgICAgaWYgKHMgJiYgIXMuZXJyb3JFbWl0dGVkKSB7XG4gICAgICAgIC8vIFVzZXIgaW5jb3JyZWN0bHkgZW1pdHRlZCAnZXJyb3InIGRpcmVjdGx5IG9uIHRoZSBzdHJlYW0uXG4gICAgICAgIGVycm9yT3JEZXN0cm95KGRlc3QsIGVyKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVzdC5lbWl0KCdlcnJvcicsIGVyKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIE1ha2Ugc3VyZSBvdXIgZXJyb3IgaGFuZGxlciBpcyBhdHRhY2hlZCBiZWZvcmUgdXNlcmxhbmQgb25lcy5cbiAgcHJlcGVuZExpc3RlbmVyKGRlc3QsICdlcnJvcicsIG9uZXJyb3IpXG5cbiAgLy8gQm90aCBjbG9zZSBhbmQgZmluaXNoIHNob3VsZCB0cmlnZ2VyIHVucGlwZSwgYnV0IG9ubHkgb25jZS5cbiAgZnVuY3Rpb24gb25jbG9zZSgpIHtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdmaW5pc2gnLCBvbmZpbmlzaClcbiAgICB1bnBpcGUoKVxuICB9XG4gIGRlc3Qub25jZSgnY2xvc2UnLCBvbmNsb3NlKVxuICBmdW5jdGlvbiBvbmZpbmlzaCgpIHtcbiAgICBkZWJ1Zygnb25maW5pc2gnKVxuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSlcbiAgICB1bnBpcGUoKVxuICB9XG4gIGRlc3Qub25jZSgnZmluaXNoJywgb25maW5pc2gpXG4gIGZ1bmN0aW9uIHVucGlwZSgpIHtcbiAgICBkZWJ1ZygndW5waXBlJylcbiAgICBzcmMudW5waXBlKGRlc3QpXG4gIH1cblxuICAvLyBUZWxsIHRoZSBkZXN0IHRoYXQgaXQncyBiZWluZyBwaXBlZCB0by5cbiAgZGVzdC5lbWl0KCdwaXBlJywgc3JjKVxuXG4gIC8vIFN0YXJ0IHRoZSBmbG93IGlmIGl0IGhhc24ndCBiZWVuIHN0YXJ0ZWQgYWxyZWFkeS5cblxuICBpZiAoZGVzdC53cml0YWJsZU5lZWREcmFpbiA9PT0gdHJ1ZSkge1xuICAgIHBhdXNlKClcbiAgfSBlbHNlIGlmICghc3RhdGUuZmxvd2luZykge1xuICAgIGRlYnVnKCdwaXBlIHJlc3VtZScpXG4gICAgc3JjLnJlc3VtZSgpXG4gIH1cbiAgcmV0dXJuIGRlc3Rcbn1cbmZ1bmN0aW9uIHBpcGVPbkRyYWluKHNyYywgZGVzdCkge1xuICByZXR1cm4gZnVuY3Rpb24gcGlwZU9uRHJhaW5GdW5jdGlvblJlc3VsdCgpIHtcbiAgICBjb25zdCBzdGF0ZSA9IHNyYy5fcmVhZGFibGVTdGF0ZVxuXG4gICAgLy8gYG9uZHJhaW5gIHdpbGwgY2FsbCBkaXJlY3RseSxcbiAgICAvLyBgdGhpc2AgbWF5YmUgbm90IGEgcmVmZXJlbmNlIHRvIGRlc3QsXG4gICAgLy8gc28gd2UgdXNlIHRoZSByZWFsIGRlc3QgaGVyZS5cbiAgICBpZiAoc3RhdGUuYXdhaXREcmFpbldyaXRlcnMgPT09IGRlc3QpIHtcbiAgICAgIGRlYnVnKCdwaXBlT25EcmFpbicsIDEpXG4gICAgICBzdGF0ZS5hd2FpdERyYWluV3JpdGVycyA9IG51bGxcbiAgICB9IGVsc2UgaWYgKHN0YXRlLm11bHRpQXdhaXREcmFpbikge1xuICAgICAgZGVidWcoJ3BpcGVPbkRyYWluJywgc3RhdGUuYXdhaXREcmFpbldyaXRlcnMuc2l6ZSlcbiAgICAgIHN0YXRlLmF3YWl0RHJhaW5Xcml0ZXJzLmRlbGV0ZShkZXN0KVxuICAgIH1cbiAgICBpZiAoKCFzdGF0ZS5hd2FpdERyYWluV3JpdGVycyB8fCBzdGF0ZS5hd2FpdERyYWluV3JpdGVycy5zaXplID09PSAwKSAmJiBzcmMubGlzdGVuZXJDb3VudCgnZGF0YScpKSB7XG4gICAgICBzcmMucmVzdW1lKClcbiAgICB9XG4gIH1cbn1cblJlYWRhYmxlLnByb3RvdHlwZS51bnBpcGUgPSBmdW5jdGlvbiAoZGVzdCkge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGVcbiAgY29uc3QgdW5waXBlSW5mbyA9IHtcbiAgICBoYXNVbnBpcGVkOiBmYWxzZVxuICB9XG5cbiAgLy8gSWYgd2UncmUgbm90IHBpcGluZyBhbnl3aGVyZSwgdGhlbiBkbyBub3RoaW5nLlxuICBpZiAoc3RhdGUucGlwZXMubGVuZ3RoID09PSAwKSByZXR1cm4gdGhpc1xuICBpZiAoIWRlc3QpIHtcbiAgICAvLyByZW1vdmUgYWxsLlxuICAgIGNvbnN0IGRlc3RzID0gc3RhdGUucGlwZXNcbiAgICBzdGF0ZS5waXBlcyA9IFtdXG4gICAgdGhpcy5wYXVzZSgpXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZXN0cy5sZW5ndGg7IGkrKylcbiAgICAgIGRlc3RzW2ldLmVtaXQoJ3VucGlwZScsIHRoaXMsIHtcbiAgICAgICAgaGFzVW5waXBlZDogZmFsc2VcbiAgICAgIH0pXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8vIFRyeSB0byBmaW5kIHRoZSByaWdodCBvbmUuXG4gIGNvbnN0IGluZGV4ID0gQXJyYXlQcm90b3R5cGVJbmRleE9mKHN0YXRlLnBpcGVzLCBkZXN0KVxuICBpZiAoaW5kZXggPT09IC0xKSByZXR1cm4gdGhpc1xuICBzdGF0ZS5waXBlcy5zcGxpY2UoaW5kZXgsIDEpXG4gIGlmIChzdGF0ZS5waXBlcy5sZW5ndGggPT09IDApIHRoaXMucGF1c2UoKVxuICBkZXN0LmVtaXQoJ3VucGlwZScsIHRoaXMsIHVucGlwZUluZm8pXG4gIHJldHVybiB0aGlzXG59XG5cbi8vIFNldCB1cCBkYXRhIGV2ZW50cyBpZiB0aGV5IGFyZSBhc2tlZCBmb3Jcbi8vIEVuc3VyZSByZWFkYWJsZSBsaXN0ZW5lcnMgZXZlbnR1YWxseSBnZXQgc29tZXRoaW5nLlxuUmVhZGFibGUucHJvdG90eXBlLm9uID0gZnVuY3Rpb24gKGV2LCBmbikge1xuICBjb25zdCByZXMgPSBTdHJlYW0ucHJvdG90eXBlLm9uLmNhbGwodGhpcywgZXYsIGZuKVxuICBjb25zdCBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGVcbiAgaWYgKGV2ID09PSAnZGF0YScpIHtcbiAgICAvLyBVcGRhdGUgcmVhZGFibGVMaXN0ZW5pbmcgc28gdGhhdCByZXN1bWUoKSBtYXkgYmUgYSBuby1vcFxuICAgIC8vIGEgZmV3IGxpbmVzIGRvd24uIFRoaXMgaXMgbmVlZGVkIHRvIHN1cHBvcnQgb25jZSgncmVhZGFibGUnKS5cbiAgICBzdGF0ZS5yZWFkYWJsZUxpc3RlbmluZyA9IHRoaXMubGlzdGVuZXJDb3VudCgncmVhZGFibGUnKSA+IDBcblxuICAgIC8vIFRyeSBzdGFydCBmbG93aW5nIG9uIG5leHQgdGljayBpZiBzdHJlYW0gaXNuJ3QgZXhwbGljaXRseSBwYXVzZWQuXG4gICAgaWYgKHN0YXRlLmZsb3dpbmcgIT09IGZhbHNlKSB0aGlzLnJlc3VtZSgpXG4gIH0gZWxzZSBpZiAoZXYgPT09ICdyZWFkYWJsZScpIHtcbiAgICBpZiAoIXN0YXRlLmVuZEVtaXR0ZWQgJiYgIXN0YXRlLnJlYWRhYmxlTGlzdGVuaW5nKSB7XG4gICAgICBzdGF0ZS5yZWFkYWJsZUxpc3RlbmluZyA9IHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWVcbiAgICAgIHN0YXRlLmZsb3dpbmcgPSBmYWxzZVxuICAgICAgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gZmFsc2VcbiAgICAgIGRlYnVnKCdvbiByZWFkYWJsZScsIHN0YXRlLmxlbmd0aCwgc3RhdGUucmVhZGluZylcbiAgICAgIGlmIChzdGF0ZS5sZW5ndGgpIHtcbiAgICAgICAgZW1pdFJlYWRhYmxlKHRoaXMpXG4gICAgICB9IGVsc2UgaWYgKCFzdGF0ZS5yZWFkaW5nKSB7XG4gICAgICAgIHByb2Nlc3MubmV4dFRpY2soblJlYWRpbmdOZXh0VGljaywgdGhpcylcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuUmVhZGFibGUucHJvdG90eXBlLmFkZExpc3RlbmVyID0gUmVhZGFibGUucHJvdG90eXBlLm9uXG5SZWFkYWJsZS5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIgPSBmdW5jdGlvbiAoZXYsIGZuKSB7XG4gIGNvbnN0IHJlcyA9IFN0cmVhbS5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIuY2FsbCh0aGlzLCBldiwgZm4pXG4gIGlmIChldiA9PT0gJ3JlYWRhYmxlJykge1xuICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgaXMgc29tZW9uZSBzdGlsbCBsaXN0ZW5pbmcgdG9cbiAgICAvLyByZWFkYWJsZSBhbmQgcmVzZXQgdGhlIHN0YXRlLiBIb3dldmVyIHRoaXMgbmVlZHMgdG8gaGFwcGVuXG4gICAgLy8gYWZ0ZXIgcmVhZGFibGUgaGFzIGJlZW4gZW1pdHRlZCBidXQgYmVmb3JlIEkvTyAobmV4dFRpY2spIHRvXG4gICAgLy8gc3VwcG9ydCBvbmNlKCdyZWFkYWJsZScsIGZuKSBjeWNsZXMuIFRoaXMgbWVhbnMgdGhhdCBjYWxsaW5nXG4gICAgLy8gcmVzdW1lIHdpdGhpbiB0aGUgc2FtZSB0aWNrIHdpbGwgaGF2ZSBub1xuICAgIC8vIGVmZmVjdC5cbiAgICBwcm9jZXNzLm5leHRUaWNrKHVwZGF0ZVJlYWRhYmxlTGlzdGVuaW5nLCB0aGlzKVxuICB9XG4gIHJldHVybiByZXNcbn1cblJlYWRhYmxlLnByb3RvdHlwZS5vZmYgPSBSZWFkYWJsZS5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXJcblJlYWRhYmxlLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBmdW5jdGlvbiAoZXYpIHtcbiAgY29uc3QgcmVzID0gU3RyZWFtLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnMuYXBwbHkodGhpcywgYXJndW1lbnRzKVxuICBpZiAoZXYgPT09ICdyZWFkYWJsZScgfHwgZXYgPT09IHVuZGVmaW5lZCkge1xuICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgaXMgc29tZW9uZSBzdGlsbCBsaXN0ZW5pbmcgdG9cbiAgICAvLyByZWFkYWJsZSBhbmQgcmVzZXQgdGhlIHN0YXRlLiBIb3dldmVyIHRoaXMgbmVlZHMgdG8gaGFwcGVuXG4gICAgLy8gYWZ0ZXIgcmVhZGFibGUgaGFzIGJlZW4gZW1pdHRlZCBidXQgYmVmb3JlIEkvTyAobmV4dFRpY2spIHRvXG4gICAgLy8gc3VwcG9ydCBvbmNlKCdyZWFkYWJsZScsIGZuKSBjeWNsZXMuIFRoaXMgbWVhbnMgdGhhdCBjYWxsaW5nXG4gICAgLy8gcmVzdW1lIHdpdGhpbiB0aGUgc2FtZSB0aWNrIHdpbGwgaGF2ZSBub1xuICAgIC8vIGVmZmVjdC5cbiAgICBwcm9jZXNzLm5leHRUaWNrKHVwZGF0ZVJlYWRhYmxlTGlzdGVuaW5nLCB0aGlzKVxuICB9XG4gIHJldHVybiByZXNcbn1cbmZ1bmN0aW9uIHVwZGF0ZVJlYWRhYmxlTGlzdGVuaW5nKHNlbGYpIHtcbiAgY29uc3Qgc3RhdGUgPSBzZWxmLl9yZWFkYWJsZVN0YXRlXG4gIHN0YXRlLnJlYWRhYmxlTGlzdGVuaW5nID0gc2VsZi5saXN0ZW5lckNvdW50KCdyZWFkYWJsZScpID4gMFxuICBpZiAoc3RhdGUucmVzdW1lU2NoZWR1bGVkICYmIHN0YXRlW2tQYXVzZWRdID09PSBmYWxzZSkge1xuICAgIC8vIEZsb3dpbmcgbmVlZHMgdG8gYmUgc2V0IHRvIHRydWUgbm93LCBvdGhlcndpc2VcbiAgICAvLyB0aGUgdXBjb21pbmcgcmVzdW1lIHdpbGwgbm90IGZsb3cuXG4gICAgc3RhdGUuZmxvd2luZyA9IHRydWVcblxuICAgIC8vIENydWRlIHdheSB0byBjaGVjayBpZiB3ZSBzaG91bGQgcmVzdW1lLlxuICB9IGVsc2UgaWYgKHNlbGYubGlzdGVuZXJDb3VudCgnZGF0YScpID4gMCkge1xuICAgIHNlbGYucmVzdW1lKClcbiAgfSBlbHNlIGlmICghc3RhdGUucmVhZGFibGVMaXN0ZW5pbmcpIHtcbiAgICBzdGF0ZS5mbG93aW5nID0gbnVsbFxuICB9XG59XG5mdW5jdGlvbiBuUmVhZGluZ05leHRUaWNrKHNlbGYpIHtcbiAgZGVidWcoJ3JlYWRhYmxlIG5leHR0aWNrIHJlYWQgMCcpXG4gIHNlbGYucmVhZCgwKVxufVxuXG4vLyBwYXVzZSgpIGFuZCByZXN1bWUoKSBhcmUgcmVtbmFudHMgb2YgdGhlIGxlZ2FjeSByZWFkYWJsZSBzdHJlYW0gQVBJXG4vLyBJZiB0aGUgdXNlciB1c2VzIHRoZW0sIHRoZW4gc3dpdGNoIGludG8gb2xkIG1vZGUuXG5SZWFkYWJsZS5wcm90b3R5cGUucmVzdW1lID0gZnVuY3Rpb24gKCkge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGVcbiAgaWYgKCFzdGF0ZS5mbG93aW5nKSB7XG4gICAgZGVidWcoJ3Jlc3VtZScpXG4gICAgLy8gV2UgZmxvdyBvbmx5IGlmIHRoZXJlIGlzIG5vIG9uZSBsaXN0ZW5pbmdcbiAgICAvLyBmb3IgcmVhZGFibGUsIGJ1dCB3ZSBzdGlsbCBoYXZlIHRvIGNhbGxcbiAgICAvLyByZXN1bWUoKS5cbiAgICBzdGF0ZS5mbG93aW5nID0gIXN0YXRlLnJlYWRhYmxlTGlzdGVuaW5nXG4gICAgcmVzdW1lKHRoaXMsIHN0YXRlKVxuICB9XG4gIHN0YXRlW2tQYXVzZWRdID0gZmFsc2VcbiAgcmV0dXJuIHRoaXNcbn1cbmZ1bmN0aW9uIHJlc3VtZShzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucmVzdW1lU2NoZWR1bGVkKSB7XG4gICAgc3RhdGUucmVzdW1lU2NoZWR1bGVkID0gdHJ1ZVxuICAgIHByb2Nlc3MubmV4dFRpY2socmVzdW1lXywgc3RyZWFtLCBzdGF0ZSlcbiAgfVxufVxuZnVuY3Rpb24gcmVzdW1lXyhzdHJlYW0sIHN0YXRlKSB7XG4gIGRlYnVnKCdyZXN1bWUnLCBzdGF0ZS5yZWFkaW5nKVxuICBpZiAoIXN0YXRlLnJlYWRpbmcpIHtcbiAgICBzdHJlYW0ucmVhZCgwKVxuICB9XG4gIHN0YXRlLnJlc3VtZVNjaGVkdWxlZCA9IGZhbHNlXG4gIHN0cmVhbS5lbWl0KCdyZXN1bWUnKVxuICBmbG93KHN0cmVhbSlcbiAgaWYgKHN0YXRlLmZsb3dpbmcgJiYgIXN0YXRlLnJlYWRpbmcpIHN0cmVhbS5yZWFkKDApXG59XG5SZWFkYWJsZS5wcm90b3R5cGUucGF1c2UgPSBmdW5jdGlvbiAoKSB7XG4gIGRlYnVnKCdjYWxsIHBhdXNlIGZsb3dpbmc9JWonLCB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcpXG4gIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcgIT09IGZhbHNlKSB7XG4gICAgZGVidWcoJ3BhdXNlJylcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcgPSBmYWxzZVxuICAgIHRoaXMuZW1pdCgncGF1c2UnKVxuICB9XG4gIHRoaXMuX3JlYWRhYmxlU3RhdGVba1BhdXNlZF0gPSB0cnVlXG4gIHJldHVybiB0aGlzXG59XG5mdW5jdGlvbiBmbG93KHN0cmVhbSkge1xuICBjb25zdCBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZVxuICBkZWJ1ZygnZmxvdycsIHN0YXRlLmZsb3dpbmcpXG4gIHdoaWxlIChzdGF0ZS5mbG93aW5nICYmIHN0cmVhbS5yZWFkKCkgIT09IG51bGwpO1xufVxuXG4vLyBXcmFwIGFuIG9sZC1zdHlsZSBzdHJlYW0gYXMgdGhlIGFzeW5jIGRhdGEgc291cmNlLlxuLy8gVGhpcyBpcyAqbm90KiBwYXJ0IG9mIHRoZSByZWFkYWJsZSBzdHJlYW0gaW50ZXJmYWNlLlxuLy8gSXQgaXMgYW4gdWdseSB1bmZvcnR1bmF0ZSBtZXNzIG9mIGhpc3RvcnkuXG5SZWFkYWJsZS5wcm90b3R5cGUud3JhcCA9IGZ1bmN0aW9uIChzdHJlYW0pIHtcbiAgbGV0IHBhdXNlZCA9IGZhbHNlXG5cbiAgLy8gVE9ETyAocm9uYWcpOiBTaG91bGQgdGhpcy5kZXN0cm95KGVycikgZW1pdFxuICAvLyAnZXJyb3InIG9uIHRoZSB3cmFwcGVkIHN0cmVhbT8gV291bGQgcmVxdWlyZVxuICAvLyBhIHN0YXRpYyBmYWN0b3J5IG1ldGhvZCwgZS5nLiBSZWFkYWJsZS53cmFwKHN0cmVhbSkuXG5cbiAgc3RyZWFtLm9uKCdkYXRhJywgKGNodW5rKSA9PiB7XG4gICAgaWYgKCF0aGlzLnB1c2goY2h1bmspICYmIHN0cmVhbS5wYXVzZSkge1xuICAgICAgcGF1c2VkID0gdHJ1ZVxuICAgICAgc3RyZWFtLnBhdXNlKClcbiAgICB9XG4gIH0pXG4gIHN0cmVhbS5vbignZW5kJywgKCkgPT4ge1xuICAgIHRoaXMucHVzaChudWxsKVxuICB9KVxuICBzdHJlYW0ub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgIGVycm9yT3JEZXN0cm95KHRoaXMsIGVycilcbiAgfSlcbiAgc3RyZWFtLm9uKCdjbG9zZScsICgpID0+IHtcbiAgICB0aGlzLmRlc3Ryb3koKVxuICB9KVxuICBzdHJlYW0ub24oJ2Rlc3Ryb3knLCAoKSA9PiB7XG4gICAgdGhpcy5kZXN0cm95KClcbiAgfSlcbiAgdGhpcy5fcmVhZCA9ICgpID0+IHtcbiAgICBpZiAocGF1c2VkICYmIHN0cmVhbS5yZXN1bWUpIHtcbiAgICAgIHBhdXNlZCA9IGZhbHNlXG4gICAgICBzdHJlYW0ucmVzdW1lKClcbiAgICB9XG4gIH1cblxuICAvLyBQcm94eSBhbGwgdGhlIG90aGVyIG1ldGhvZHMuIEltcG9ydGFudCB3aGVuIHdyYXBwaW5nIGZpbHRlcnMgYW5kIGR1cGxleGVzLlxuICBjb25zdCBzdHJlYW1LZXlzID0gT2JqZWN0S2V5cyhzdHJlYW0pXG4gIGZvciAobGV0IGogPSAxOyBqIDwgc3RyZWFtS2V5cy5sZW5ndGg7IGorKykge1xuICAgIGNvbnN0IGkgPSBzdHJlYW1LZXlzW2pdXG4gICAgaWYgKHRoaXNbaV0gPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygc3RyZWFtW2ldID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzW2ldID0gc3RyZWFtW2ldLmJpbmQoc3RyZWFtKVxuICAgIH1cbiAgfVxuICByZXR1cm4gdGhpc1xufVxuUmVhZGFibGUucHJvdG90eXBlW1N5bWJvbEFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gc3RyZWFtVG9Bc3luY0l0ZXJhdG9yKHRoaXMpXG59XG5SZWFkYWJsZS5wcm90b3R5cGUuaXRlcmF0b3IgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdmFsaWRhdGVPYmplY3Qob3B0aW9ucywgJ29wdGlvbnMnKVxuICB9XG4gIHJldHVybiBzdHJlYW1Ub0FzeW5jSXRlcmF0b3IodGhpcywgb3B0aW9ucylcbn1cbmZ1bmN0aW9uIHN0cmVhbVRvQXN5bmNJdGVyYXRvcihzdHJlYW0sIG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiBzdHJlYW0ucmVhZCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHN0cmVhbSA9IFJlYWRhYmxlLndyYXAoc3RyZWFtLCB7XG4gICAgICBvYmplY3RNb2RlOiB0cnVlXG4gICAgfSlcbiAgfVxuICBjb25zdCBpdGVyID0gY3JlYXRlQXN5bmNJdGVyYXRvcihzdHJlYW0sIG9wdGlvbnMpXG4gIGl0ZXIuc3RyZWFtID0gc3RyZWFtXG4gIHJldHVybiBpdGVyXG59XG5hc3luYyBmdW5jdGlvbiogY3JlYXRlQXN5bmNJdGVyYXRvcihzdHJlYW0sIG9wdGlvbnMpIHtcbiAgbGV0IGNhbGxiYWNrID0gbm9wXG4gIGZ1bmN0aW9uIG5leHQocmVzb2x2ZSkge1xuICAgIGlmICh0aGlzID09PSBzdHJlYW0pIHtcbiAgICAgIGNhbGxiYWNrKClcbiAgICAgIGNhbGxiYWNrID0gbm9wXG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbGxiYWNrID0gcmVzb2x2ZVxuICAgIH1cbiAgfVxuICBzdHJlYW0ub24oJ3JlYWRhYmxlJywgbmV4dClcbiAgbGV0IGVycm9yXG4gIGNvbnN0IGNsZWFudXAgPSBlb3MoXG4gICAgc3RyZWFtLFxuICAgIHtcbiAgICAgIHdyaXRhYmxlOiBmYWxzZVxuICAgIH0sXG4gICAgKGVycikgPT4ge1xuICAgICAgZXJyb3IgPSBlcnIgPyBhZ2dyZWdhdGVUd29FcnJvcnMoZXJyb3IsIGVycikgOiBudWxsXG4gICAgICBjYWxsYmFjaygpXG4gICAgICBjYWxsYmFjayA9IG5vcFxuICAgIH1cbiAgKVxuICB0cnkge1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBjb25zdCBjaHVuayA9IHN0cmVhbS5kZXN0cm95ZWQgPyBudWxsIDogc3RyZWFtLnJlYWQoKVxuICAgICAgaWYgKGNodW5rICE9PSBudWxsKSB7XG4gICAgICAgIHlpZWxkIGNodW5rXG4gICAgICB9IGVsc2UgaWYgKGVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yXG4gICAgICB9IGVsc2UgaWYgKGVycm9yID09PSBudWxsKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UobmV4dClcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGVycm9yID0gYWdncmVnYXRlVHdvRXJyb3JzKGVycm9yLCBlcnIpXG4gICAgdGhyb3cgZXJyb3JcbiAgfSBmaW5hbGx5IHtcbiAgICBpZiAoXG4gICAgICAoZXJyb3IgfHwgKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogb3B0aW9ucy5kZXN0cm95T25SZXR1cm4pICE9PSBmYWxzZSkgJiZcbiAgICAgIChlcnJvciA9PT0gdW5kZWZpbmVkIHx8IHN0cmVhbS5fcmVhZGFibGVTdGF0ZS5hdXRvRGVzdHJveSlcbiAgICApIHtcbiAgICAgIGRlc3Ryb3lJbXBsLmRlc3Ryb3llcihzdHJlYW0sIG51bGwpXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0cmVhbS5vZmYoJ3JlYWRhYmxlJywgbmV4dClcbiAgICAgIGNsZWFudXAoKVxuICAgIH1cbiAgfVxufVxuXG4vLyBNYWtpbmcgaXQgZXhwbGljaXQgdGhlc2UgcHJvcGVydGllcyBhcmUgbm90IGVudW1lcmFibGVcbi8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuLy8gdXNlcmxhbmQgd2lsbCBmYWlsLlxuT2JqZWN0RGVmaW5lUHJvcGVydGllcyhSZWFkYWJsZS5wcm90b3R5cGUsIHtcbiAgcmVhZGFibGU6IHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgZ2V0KCkge1xuICAgICAgY29uc3QgciA9IHRoaXMuX3JlYWRhYmxlU3RhdGVcbiAgICAgIC8vIHIucmVhZGFibGUgPT09IGZhbHNlIG1lYW5zIHRoYXQgdGhpcyBpcyBwYXJ0IG9mIGEgRHVwbGV4IHN0cmVhbVxuICAgICAgLy8gd2hlcmUgdGhlIHJlYWRhYmxlIHNpZGUgd2FzIGRpc2FibGVkIHVwb24gY29uc3RydWN0aW9uLlxuICAgICAgLy8gQ29tcGF0LiBUaGUgdXNlciBtaWdodCBtYW51YWxseSBkaXNhYmxlIHJlYWRhYmxlIHNpZGUgdGhyb3VnaFxuICAgICAgLy8gZGVwcmVjYXRlZCBzZXR0ZXIuXG4gICAgICByZXR1cm4gISFyICYmIHIucmVhZGFibGUgIT09IGZhbHNlICYmICFyLmRlc3Ryb3llZCAmJiAhci5lcnJvckVtaXR0ZWQgJiYgIXIuZW5kRW1pdHRlZFxuICAgIH0sXG4gICAgc2V0KHZhbCkge1xuICAgICAgLy8gQmFja3dhcmRzIGNvbXBhdC5cbiAgICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlKSB7XG4gICAgICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUucmVhZGFibGUgPSAhIXZhbFxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgcmVhZGFibGVEaWRSZWFkOiB7XG4gICAgX19wcm90b19fOiBudWxsLFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGF0YUVtaXR0ZWRcbiAgICB9XG4gIH0sXG4gIHJlYWRhYmxlQWJvcnRlZDoge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiAhIShcbiAgICAgICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5yZWFkYWJsZSAhPT0gZmFsc2UgJiZcbiAgICAgICAgKHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkIHx8IHRoaXMuX3JlYWRhYmxlU3RhdGUuZXJyb3JlZCkgJiZcbiAgICAgICAgIXRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZFxuICAgICAgKVxuICAgIH1cbiAgfSxcbiAgcmVhZGFibGVIaWdoV2F0ZXJNYXJrOiB7XG4gICAgX19wcm90b19fOiBudWxsLFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya1xuICAgIH1cbiAgfSxcbiAgcmVhZGFibGVCdWZmZXI6IHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZSAmJiB0aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlclxuICAgIH1cbiAgfSxcbiAgcmVhZGFibGVGbG93aW5nOiB7XG4gICAgX19wcm90b19fOiBudWxsLFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZ1xuICAgIH0sXG4gICAgc2V0OiBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlKSB7XG4gICAgICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyA9IHN0YXRlXG4gICAgICB9XG4gICAgfVxuICB9LFxuICByZWFkYWJsZUxlbmd0aDoge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICBnZXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5sZW5ndGhcbiAgICB9XG4gIH0sXG4gIHJlYWRhYmxlT2JqZWN0TW9kZToge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICBnZXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZSA/IHRoaXMuX3JlYWRhYmxlU3RhdGUub2JqZWN0TW9kZSA6IGZhbHNlXG4gICAgfVxuICB9LFxuICByZWFkYWJsZUVuY29kaW5nOiB7XG4gICAgX19wcm90b19fOiBudWxsLFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlID8gdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmNvZGluZyA6IG51bGxcbiAgICB9XG4gIH0sXG4gIGVycm9yZWQ6IHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUgPyB0aGlzLl9yZWFkYWJsZVN0YXRlLmVycm9yZWQgOiBudWxsXG4gICAgfVxuICB9LFxuICBjbG9zZWQ6IHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUgPyB0aGlzLl9yZWFkYWJsZVN0YXRlLmNsb3NlZCA6IGZhbHNlXG4gICAgfVxuICB9LFxuICBkZXN0cm95ZWQ6IHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUgPyB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCA6IGZhbHNlXG4gICAgfSxcbiAgICBzZXQodmFsdWUpIHtcbiAgICAgIC8vIFdlIGlnbm9yZSB0aGUgdmFsdWUgaWYgdGhlIHN0cmVhbVxuICAgICAgLy8gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldC5cbiAgICAgIGlmICghdGhpcy5fcmVhZGFibGVTdGF0ZSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gQmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdGhlIHVzZXIgaXMgZXhwbGljaXRseVxuICAgICAgLy8gbWFuYWdpbmcgZGVzdHJveWVkLlxuICAgICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB2YWx1ZVxuICAgIH1cbiAgfSxcbiAgcmVhZGFibGVFbmRlZDoge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICBnZXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZSA/IHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZCA6IGZhbHNlXG4gICAgfVxuICB9XG59KVxuT2JqZWN0RGVmaW5lUHJvcGVydGllcyhSZWFkYWJsZVN0YXRlLnByb3RvdHlwZSwge1xuICAvLyBMZWdhY3kgZ2V0dGVyIGZvciBgcGlwZXNDb3VudGAuXG4gIHBpcGVzQ291bnQ6IHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMucGlwZXMubGVuZ3RoXG4gICAgfVxuICB9LFxuICAvLyBMZWdhY3kgcHJvcGVydHkgZm9yIGBwYXVzZWRgLlxuICBwYXVzZWQ6IHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXNba1BhdXNlZF0gIT09IGZhbHNlXG4gICAgfSxcbiAgICBzZXQodmFsdWUpIHtcbiAgICAgIHRoaXNba1BhdXNlZF0gPSAhIXZhbHVlXG4gICAgfVxuICB9XG59KVxuXG4vLyBFeHBvc2VkIGZvciB0ZXN0aW5nIHB1cnBvc2VzIG9ubHkuXG5SZWFkYWJsZS5fZnJvbUxpc3QgPSBmcm9tTGlzdFxuXG4vLyBQbHVjayBvZmYgbiBieXRlcyBmcm9tIGFuIGFycmF5IG9mIGJ1ZmZlcnMuXG4vLyBMZW5ndGggaXMgdGhlIGNvbWJpbmVkIGxlbmd0aHMgb2YgYWxsIHRoZSBidWZmZXJzIGluIHRoZSBsaXN0LlxuLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5mdW5jdGlvbiBmcm9tTGlzdChuLCBzdGF0ZSkge1xuICAvLyBub3RoaW5nIGJ1ZmZlcmVkLlxuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbFxuICBsZXQgcmV0XG4gIGlmIChzdGF0ZS5vYmplY3RNb2RlKSByZXQgPSBzdGF0ZS5idWZmZXIuc2hpZnQoKVxuICBlbHNlIGlmICghbiB8fCBuID49IHN0YXRlLmxlbmd0aCkge1xuICAgIC8vIFJlYWQgaXQgYWxsLCB0cnVuY2F0ZSB0aGUgbGlzdC5cbiAgICBpZiAoc3RhdGUuZGVjb2RlcikgcmV0ID0gc3RhdGUuYnVmZmVyLmpvaW4oJycpXG4gICAgZWxzZSBpZiAoc3RhdGUuYnVmZmVyLmxlbmd0aCA9PT0gMSkgcmV0ID0gc3RhdGUuYnVmZmVyLmZpcnN0KClcbiAgICBlbHNlIHJldCA9IHN0YXRlLmJ1ZmZlci5jb25jYXQoc3RhdGUubGVuZ3RoKVxuICAgIHN0YXRlLmJ1ZmZlci5jbGVhcigpXG4gIH0gZWxzZSB7XG4gICAgLy8gcmVhZCBwYXJ0IG9mIGxpc3QuXG4gICAgcmV0ID0gc3RhdGUuYnVmZmVyLmNvbnN1bWUobiwgc3RhdGUuZGVjb2RlcilcbiAgfVxuICByZXR1cm4gcmV0XG59XG5mdW5jdGlvbiBlbmRSZWFkYWJsZShzdHJlYW0pIHtcbiAgY29uc3Qgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGVcbiAgZGVidWcoJ2VuZFJlYWRhYmxlJywgc3RhdGUuZW5kRW1pdHRlZClcbiAgaWYgKCFzdGF0ZS5lbmRFbWl0dGVkKSB7XG4gICAgc3RhdGUuZW5kZWQgPSB0cnVlXG4gICAgcHJvY2Vzcy5uZXh0VGljayhlbmRSZWFkYWJsZU5ULCBzdGF0ZSwgc3RyZWFtKVxuICB9XG59XG5mdW5jdGlvbiBlbmRSZWFkYWJsZU5UKHN0YXRlLCBzdHJlYW0pIHtcbiAgZGVidWcoJ2VuZFJlYWRhYmxlTlQnLCBzdGF0ZS5lbmRFbWl0dGVkLCBzdGF0ZS5sZW5ndGgpXG5cbiAgLy8gQ2hlY2sgdGhhdCB3ZSBkaWRuJ3QgZ2V0IG9uZSBsYXN0IHVuc2hpZnQuXG4gIGlmICghc3RhdGUuZXJyb3JlZCAmJiAhc3RhdGUuY2xvc2VFbWl0dGVkICYmICFzdGF0ZS5lbmRFbWl0dGVkICYmIHN0YXRlLmxlbmd0aCA9PT0gMCkge1xuICAgIHN0YXRlLmVuZEVtaXR0ZWQgPSB0cnVlXG4gICAgc3RyZWFtLmVtaXQoJ2VuZCcpXG4gICAgaWYgKHN0cmVhbS53cml0YWJsZSAmJiBzdHJlYW0uYWxsb3dIYWxmT3BlbiA9PT0gZmFsc2UpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZW5kV3JpdGFibGVOVCwgc3RyZWFtKVxuICAgIH0gZWxzZSBpZiAoc3RhdGUuYXV0b0Rlc3Ryb3kpIHtcbiAgICAgIC8vIEluIGNhc2Ugb2YgZHVwbGV4IHN0cmVhbXMgd2UgbmVlZCBhIHdheSB0byBkZXRlY3RcbiAgICAgIC8vIGlmIHRoZSB3cml0YWJsZSBzaWRlIGlzIHJlYWR5IGZvciBhdXRvRGVzdHJveSBhcyB3ZWxsLlxuICAgICAgY29uc3Qgd1N0YXRlID0gc3RyZWFtLl93cml0YWJsZVN0YXRlXG4gICAgICBjb25zdCBhdXRvRGVzdHJveSA9XG4gICAgICAgICF3U3RhdGUgfHxcbiAgICAgICAgKHdTdGF0ZS5hdXRvRGVzdHJveSAmJlxuICAgICAgICAgIC8vIFdlIGRvbid0IGV4cGVjdCB0aGUgd3JpdGFibGUgdG8gZXZlciAnZmluaXNoJ1xuICAgICAgICAgIC8vIGlmIHdyaXRhYmxlIGlzIGV4cGxpY2l0bHkgc2V0IHRvIGZhbHNlLlxuICAgICAgICAgICh3U3RhdGUuZmluaXNoZWQgfHwgd1N0YXRlLndyaXRhYmxlID09PSBmYWxzZSkpXG4gICAgICBpZiAoYXV0b0Rlc3Ryb3kpIHtcbiAgICAgICAgc3RyZWFtLmRlc3Ryb3koKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gZW5kV3JpdGFibGVOVChzdHJlYW0pIHtcbiAgY29uc3Qgd3JpdGFibGUgPSBzdHJlYW0ud3JpdGFibGUgJiYgIXN0cmVhbS53cml0YWJsZUVuZGVkICYmICFzdHJlYW0uZGVzdHJveWVkXG4gIGlmICh3cml0YWJsZSkge1xuICAgIHN0cmVhbS5lbmQoKVxuICB9XG59XG5SZWFkYWJsZS5mcm9tID0gZnVuY3Rpb24gKGl0ZXJhYmxlLCBvcHRzKSB7XG4gIHJldHVybiBmcm9tKFJlYWRhYmxlLCBpdGVyYWJsZSwgb3B0cylcbn1cbmxldCB3ZWJTdHJlYW1zQWRhcHRlcnNcblxuLy8gTGF6eSB0byBhdm9pZCBjaXJjdWxhciByZWZlcmVuY2VzXG5mdW5jdGlvbiBsYXp5V2ViU3RyZWFtcygpIHtcbiAgaWYgKHdlYlN0cmVhbXNBZGFwdGVycyA9PT0gdW5kZWZpbmVkKSB3ZWJTdHJlYW1zQWRhcHRlcnMgPSB7fVxuICByZXR1cm4gd2ViU3RyZWFtc0FkYXB0ZXJzXG59XG5SZWFkYWJsZS5mcm9tV2ViID0gZnVuY3Rpb24gKHJlYWRhYmxlU3RyZWFtLCBvcHRpb25zKSB7XG4gIHJldHVybiBsYXp5V2ViU3RyZWFtcygpLm5ld1N0cmVhbVJlYWRhYmxlRnJvbVJlYWRhYmxlU3RyZWFtKHJlYWRhYmxlU3RyZWFtLCBvcHRpb25zKVxufVxuUmVhZGFibGUudG9XZWIgPSBmdW5jdGlvbiAoc3RyZWFtUmVhZGFibGUsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGxhenlXZWJTdHJlYW1zKCkubmV3UmVhZGFibGVTdHJlYW1Gcm9tU3RyZWFtUmVhZGFibGUoc3RyZWFtUmVhZGFibGUsIG9wdGlvbnMpXG59XG5SZWFkYWJsZS53cmFwID0gZnVuY3Rpb24gKHNyYywgb3B0aW9ucykge1xuICB2YXIgX3JlZiwgX3NyYyRyZWFkYWJsZU9iamVjdE1vXG4gIHJldHVybiBuZXcgUmVhZGFibGUoe1xuICAgIG9iamVjdE1vZGU6XG4gICAgICAoX3JlZiA9XG4gICAgICAgIChfc3JjJHJlYWRhYmxlT2JqZWN0TW8gPSBzcmMucmVhZGFibGVPYmplY3RNb2RlKSAhPT0gbnVsbCAmJiBfc3JjJHJlYWRhYmxlT2JqZWN0TW8gIT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gX3NyYyRyZWFkYWJsZU9iamVjdE1vXG4gICAgICAgICAgOiBzcmMub2JqZWN0TW9kZSkgIT09IG51bGwgJiYgX3JlZiAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gX3JlZlxuICAgICAgICA6IHRydWUsXG4gICAgLi4ub3B0aW9ucyxcbiAgICBkZXN0cm95KGVyciwgY2FsbGJhY2spIHtcbiAgICAgIGRlc3Ryb3lJbXBsLmRlc3Ryb3llcihzcmMsIGVycilcbiAgICAgIGNhbGxiYWNrKGVycilcbiAgICB9XG4gIH0pLndyYXAoc3JjKVxufVxuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbi8vIEEgYml0IHNpbXBsZXIgdGhhbiByZWFkYWJsZSBzdHJlYW1zLlxuLy8gSW1wbGVtZW50IGFuIGFzeW5jIC5fd3JpdGUoY2h1bmssIGVuY29kaW5nLCBjYiksIGFuZCBpdCdsbCBoYW5kbGUgYWxsXG4vLyB0aGUgZHJhaW4gZXZlbnQgZW1pc3Npb24gYW5kIGJ1ZmZlcmluZy5cblxuJ3VzZSBzdHJpY3QnXG5cbi8qIHJlcGxhY2VtZW50IHN0YXJ0ICovXG5cbmNvbnN0IHByb2Nlc3MgPSByZXF1aXJlKCdwcm9jZXNzLycpXG5cbi8qIHJlcGxhY2VtZW50IGVuZCAqL1xuXG5jb25zdCB7XG4gIEFycmF5UHJvdG90eXBlU2xpY2UsXG4gIEVycm9yLFxuICBGdW5jdGlvblByb3RvdHlwZVN5bWJvbEhhc0luc3RhbmNlLFxuICBPYmplY3REZWZpbmVQcm9wZXJ0eSxcbiAgT2JqZWN0RGVmaW5lUHJvcGVydGllcyxcbiAgT2JqZWN0U2V0UHJvdG90eXBlT2YsXG4gIFN0cmluZ1Byb3RvdHlwZVRvTG93ZXJDYXNlLFxuICBTeW1ib2wsXG4gIFN5bWJvbEhhc0luc3RhbmNlXG59ID0gcmVxdWlyZSgnLi4vLi4vb3Vycy9wcmltb3JkaWFscycpXG5tb2R1bGUuZXhwb3J0cyA9IFdyaXRhYmxlXG5Xcml0YWJsZS5Xcml0YWJsZVN0YXRlID0gV3JpdGFibGVTdGF0ZVxuY29uc3QgeyBFdmVudEVtaXR0ZXI6IEVFIH0gPSByZXF1aXJlKCdldmVudHMnKVxuY29uc3QgU3RyZWFtID0gcmVxdWlyZSgnLi9sZWdhY3knKS5TdHJlYW1cbmNvbnN0IHsgQnVmZmVyIH0gPSByZXF1aXJlKCdidWZmZXInKVxuY29uc3QgZGVzdHJveUltcGwgPSByZXF1aXJlKCcuL2Rlc3Ryb3knKVxuY29uc3QgeyBhZGRBYm9ydFNpZ25hbCB9ID0gcmVxdWlyZSgnLi9hZGQtYWJvcnQtc2lnbmFsJylcbmNvbnN0IHsgZ2V0SGlnaFdhdGVyTWFyaywgZ2V0RGVmYXVsdEhpZ2hXYXRlck1hcmsgfSA9IHJlcXVpcmUoJy4vc3RhdGUnKVxuY29uc3Qge1xuICBFUlJfSU5WQUxJRF9BUkdfVFlQRSxcbiAgRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQsXG4gIEVSUl9NVUxUSVBMRV9DQUxMQkFDSyxcbiAgRVJSX1NUUkVBTV9DQU5OT1RfUElQRSxcbiAgRVJSX1NUUkVBTV9ERVNUUk9ZRUQsXG4gIEVSUl9TVFJFQU1fQUxSRUFEWV9GSU5JU0hFRCxcbiAgRVJSX1NUUkVBTV9OVUxMX1ZBTFVFUyxcbiAgRVJSX1NUUkVBTV9XUklURV9BRlRFUl9FTkQsXG4gIEVSUl9VTktOT1dOX0VOQ09ESU5HXG59ID0gcmVxdWlyZSgnLi4vLi4vb3Vycy9lcnJvcnMnKS5jb2Rlc1xuY29uc3QgeyBlcnJvck9yRGVzdHJveSB9ID0gZGVzdHJveUltcGxcbk9iamVjdFNldFByb3RvdHlwZU9mKFdyaXRhYmxlLnByb3RvdHlwZSwgU3RyZWFtLnByb3RvdHlwZSlcbk9iamVjdFNldFByb3RvdHlwZU9mKFdyaXRhYmxlLCBTdHJlYW0pXG5mdW5jdGlvbiBub3AoKSB7fVxuY29uc3Qga09uRmluaXNoZWQgPSBTeW1ib2woJ2tPbkZpbmlzaGVkJylcbmZ1bmN0aW9uIFdyaXRhYmxlU3RhdGUob3B0aW9ucywgc3RyZWFtLCBpc0R1cGxleCkge1xuICAvLyBEdXBsZXggc3RyZWFtcyBhcmUgYm90aCByZWFkYWJsZSBhbmQgd3JpdGFibGUsIGJ1dCBzaGFyZVxuICAvLyB0aGUgc2FtZSBvcHRpb25zIG9iamVjdC5cbiAgLy8gSG93ZXZlciwgc29tZSBjYXNlcyByZXF1aXJlIHNldHRpbmcgb3B0aW9ucyB0byBkaWZmZXJlbnRcbiAgLy8gdmFsdWVzIGZvciB0aGUgcmVhZGFibGUgYW5kIHRoZSB3cml0YWJsZSBzaWRlcyBvZiB0aGUgZHVwbGV4IHN0cmVhbSxcbiAgLy8gZS5nLiBvcHRpb25zLnJlYWRhYmxlT2JqZWN0TW9kZSB2cy4gb3B0aW9ucy53cml0YWJsZU9iamVjdE1vZGUsIGV0Yy5cbiAgaWYgKHR5cGVvZiBpc0R1cGxleCAhPT0gJ2Jvb2xlYW4nKSBpc0R1cGxleCA9IHN0cmVhbSBpbnN0YW5jZW9mIHJlcXVpcmUoJy4vZHVwbGV4JylcblxuICAvLyBPYmplY3Qgc3RyZWFtIGZsYWcgdG8gaW5kaWNhdGUgd2hldGhlciBvciBub3QgdGhpcyBzdHJlYW1cbiAgLy8gY29udGFpbnMgYnVmZmVycyBvciBvYmplY3RzLlxuICB0aGlzLm9iamVjdE1vZGUgPSAhIShvcHRpb25zICYmIG9wdGlvbnMub2JqZWN0TW9kZSlcbiAgaWYgKGlzRHVwbGV4KSB0aGlzLm9iamVjdE1vZGUgPSB0aGlzLm9iamVjdE1vZGUgfHwgISEob3B0aW9ucyAmJiBvcHRpb25zLndyaXRhYmxlT2JqZWN0TW9kZSlcblxuICAvLyBUaGUgcG9pbnQgYXQgd2hpY2ggd3JpdGUoKSBzdGFydHMgcmV0dXJuaW5nIGZhbHNlXG4gIC8vIE5vdGU6IDAgaXMgYSB2YWxpZCB2YWx1ZSwgbWVhbnMgdGhhdCB3ZSBhbHdheXMgcmV0dXJuIGZhbHNlIGlmXG4gIC8vIHRoZSBlbnRpcmUgYnVmZmVyIGlzIG5vdCBmbHVzaGVkIGltbWVkaWF0ZWx5IG9uIHdyaXRlKCkuXG4gIHRoaXMuaGlnaFdhdGVyTWFyayA9IG9wdGlvbnNcbiAgICA/IGdldEhpZ2hXYXRlck1hcmsodGhpcywgb3B0aW9ucywgJ3dyaXRhYmxlSGlnaFdhdGVyTWFyaycsIGlzRHVwbGV4KVxuICAgIDogZ2V0RGVmYXVsdEhpZ2hXYXRlck1hcmsoZmFsc2UpXG5cbiAgLy8gaWYgX2ZpbmFsIGhhcyBiZWVuIGNhbGxlZC5cbiAgdGhpcy5maW5hbENhbGxlZCA9IGZhbHNlXG5cbiAgLy8gZHJhaW4gZXZlbnQgZmxhZy5cbiAgdGhpcy5uZWVkRHJhaW4gPSBmYWxzZVxuICAvLyBBdCB0aGUgc3RhcnQgb2YgY2FsbGluZyBlbmQoKVxuICB0aGlzLmVuZGluZyA9IGZhbHNlXG4gIC8vIFdoZW4gZW5kKCkgaGFzIGJlZW4gY2FsbGVkLCBhbmQgcmV0dXJuZWQuXG4gIHRoaXMuZW5kZWQgPSBmYWxzZVxuICAvLyBXaGVuICdmaW5pc2gnIGlzIGVtaXR0ZWQuXG4gIHRoaXMuZmluaXNoZWQgPSBmYWxzZVxuXG4gIC8vIEhhcyBpdCBiZWVuIGRlc3Ryb3llZFxuICB0aGlzLmRlc3Ryb3llZCA9IGZhbHNlXG5cbiAgLy8gU2hvdWxkIHdlIGRlY29kZSBzdHJpbmdzIGludG8gYnVmZmVycyBiZWZvcmUgcGFzc2luZyB0byBfd3JpdGU/XG4gIC8vIHRoaXMgaXMgaGVyZSBzbyB0aGF0IHNvbWUgbm9kZS1jb3JlIHN0cmVhbXMgY2FuIG9wdGltaXplIHN0cmluZ1xuICAvLyBoYW5kbGluZyBhdCBhIGxvd2VyIGxldmVsLlxuICBjb25zdCBub0RlY29kZSA9ICEhKG9wdGlvbnMgJiYgb3B0aW9ucy5kZWNvZGVTdHJpbmdzID09PSBmYWxzZSlcbiAgdGhpcy5kZWNvZGVTdHJpbmdzID0gIW5vRGVjb2RlXG5cbiAgLy8gQ3J5cHRvIGlzIGtpbmQgb2Ygb2xkIGFuZCBjcnVzdHkuICBIaXN0b3JpY2FsbHksIGl0cyBkZWZhdWx0IHN0cmluZ1xuICAvLyBlbmNvZGluZyBpcyAnYmluYXJ5JyBzbyB3ZSBoYXZlIHRvIG1ha2UgdGhpcyBjb25maWd1cmFibGUuXG4gIC8vIEV2ZXJ5dGhpbmcgZWxzZSBpbiB0aGUgdW5pdmVyc2UgdXNlcyAndXRmOCcsIHRob3VnaC5cbiAgdGhpcy5kZWZhdWx0RW5jb2RpbmcgPSAob3B0aW9ucyAmJiBvcHRpb25zLmRlZmF1bHRFbmNvZGluZykgfHwgJ3V0ZjgnXG5cbiAgLy8gTm90IGFuIGFjdHVhbCBidWZmZXIgd2Uga2VlcCB0cmFjayBvZiwgYnV0IGEgbWVhc3VyZW1lbnRcbiAgLy8gb2YgaG93IG11Y2ggd2UncmUgd2FpdGluZyB0byBnZXQgcHVzaGVkIHRvIHNvbWUgdW5kZXJseWluZ1xuICAvLyBzb2NrZXQgb3IgZmlsZS5cbiAgdGhpcy5sZW5ndGggPSAwXG5cbiAgLy8gQSBmbGFnIHRvIHNlZSB3aGVuIHdlJ3JlIGluIHRoZSBtaWRkbGUgb2YgYSB3cml0ZS5cbiAgdGhpcy53cml0aW5nID0gZmFsc2VcblxuICAvLyBXaGVuIHRydWUgYWxsIHdyaXRlcyB3aWxsIGJlIGJ1ZmZlcmVkIHVudGlsIC51bmNvcmsoKSBjYWxsLlxuICB0aGlzLmNvcmtlZCA9IDBcblxuICAvLyBBIGZsYWcgdG8gYmUgYWJsZSB0byB0ZWxsIGlmIHRoZSBvbndyaXRlIGNiIGlzIGNhbGxlZCBpbW1lZGlhdGVseSxcbiAgLy8gb3Igb24gYSBsYXRlciB0aWNrLiAgV2Ugc2V0IHRoaXMgdG8gdHJ1ZSBhdCBmaXJzdCwgYmVjYXVzZSBhbnlcbiAgLy8gYWN0aW9ucyB0aGF0IHNob3VsZG4ndCBoYXBwZW4gdW50aWwgXCJsYXRlclwiIHNob3VsZCBnZW5lcmFsbHkgYWxzb1xuICAvLyBub3QgaGFwcGVuIGJlZm9yZSB0aGUgZmlyc3Qgd3JpdGUgY2FsbC5cbiAgdGhpcy5zeW5jID0gdHJ1ZVxuXG4gIC8vIEEgZmxhZyB0byBrbm93IGlmIHdlJ3JlIHByb2Nlc3NpbmcgcHJldmlvdXNseSBidWZmZXJlZCBpdGVtcywgd2hpY2hcbiAgLy8gbWF5IGNhbGwgdGhlIF93cml0ZSgpIGNhbGxiYWNrIGluIHRoZSBzYW1lIHRpY2ssIHNvIHRoYXQgd2UgZG9uJ3RcbiAgLy8gZW5kIHVwIGluIGFuIG92ZXJsYXBwZWQgb253cml0ZSBzaXR1YXRpb24uXG4gIHRoaXMuYnVmZmVyUHJvY2Vzc2luZyA9IGZhbHNlXG5cbiAgLy8gVGhlIGNhbGxiYWNrIHRoYXQncyBwYXNzZWQgdG8gX3dyaXRlKGNodW5rLCBjYikuXG4gIHRoaXMub253cml0ZSA9IG9ud3JpdGUuYmluZCh1bmRlZmluZWQsIHN0cmVhbSlcblxuICAvLyBUaGUgY2FsbGJhY2sgdGhhdCB0aGUgdXNlciBzdXBwbGllcyB0byB3cml0ZShjaHVuaywgZW5jb2RpbmcsIGNiKS5cbiAgdGhpcy53cml0ZWNiID0gbnVsbFxuXG4gIC8vIFRoZSBhbW91bnQgdGhhdCBpcyBiZWluZyB3cml0dGVuIHdoZW4gX3dyaXRlIGlzIGNhbGxlZC5cbiAgdGhpcy53cml0ZWxlbiA9IDBcblxuICAvLyBTdG9yYWdlIGZvciBkYXRhIHBhc3NlZCB0byB0aGUgYWZ0ZXJXcml0ZSgpIGNhbGxiYWNrIGluIGNhc2Ugb2ZcbiAgLy8gc3luY2hyb25vdXMgX3dyaXRlKCkgY29tcGxldGlvbi5cbiAgdGhpcy5hZnRlcldyaXRlVGlja0luZm8gPSBudWxsXG4gIHJlc2V0QnVmZmVyKHRoaXMpXG5cbiAgLy8gTnVtYmVyIG9mIHBlbmRpbmcgdXNlci1zdXBwbGllZCB3cml0ZSBjYWxsYmFja3NcbiAgLy8gdGhpcyBtdXN0IGJlIDAgYmVmb3JlICdmaW5pc2gnIGNhbiBiZSBlbWl0dGVkLlxuICB0aGlzLnBlbmRpbmdjYiA9IDBcblxuICAvLyBTdHJlYW0gaXMgc3RpbGwgYmVpbmcgY29uc3RydWN0ZWQgYW5kIGNhbm5vdCBiZVxuICAvLyBkZXN0cm95ZWQgdW50aWwgY29uc3RydWN0aW9uIGZpbmlzaGVkIG9yIGZhaWxlZC5cbiAgLy8gQXN5bmMgY29uc3RydWN0aW9uIGlzIG9wdCBpbiwgdGhlcmVmb3JlIHdlIHN0YXJ0IGFzXG4gIC8vIGNvbnN0cnVjdGVkLlxuICB0aGlzLmNvbnN0cnVjdGVkID0gdHJ1ZVxuXG4gIC8vIEVtaXQgcHJlZmluaXNoIGlmIHRoZSBvbmx5IHRoaW5nIHdlJ3JlIHdhaXRpbmcgZm9yIGlzIF93cml0ZSBjYnNcbiAgLy8gVGhpcyBpcyByZWxldmFudCBmb3Igc3luY2hyb25vdXMgVHJhbnNmb3JtIHN0cmVhbXMuXG4gIHRoaXMucHJlZmluaXNoZWQgPSBmYWxzZVxuXG4gIC8vIFRydWUgaWYgdGhlIGVycm9yIHdhcyBhbHJlYWR5IGVtaXR0ZWQgYW5kIHNob3VsZCBub3QgYmUgdGhyb3duIGFnYWluLlxuICB0aGlzLmVycm9yRW1pdHRlZCA9IGZhbHNlXG5cbiAgLy8gU2hvdWxkIGNsb3NlIGJlIGVtaXR0ZWQgb24gZGVzdHJveS4gRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgdGhpcy5lbWl0Q2xvc2UgPSAhb3B0aW9ucyB8fCBvcHRpb25zLmVtaXRDbG9zZSAhPT0gZmFsc2VcblxuICAvLyBTaG91bGQgLmRlc3Ryb3koKSBiZSBjYWxsZWQgYWZ0ZXIgJ2ZpbmlzaCcgKGFuZCBwb3RlbnRpYWxseSAnZW5kJykuXG4gIHRoaXMuYXV0b0Rlc3Ryb3kgPSAhb3B0aW9ucyB8fCBvcHRpb25zLmF1dG9EZXN0cm95ICE9PSBmYWxzZVxuXG4gIC8vIEluZGljYXRlcyB3aGV0aGVyIHRoZSBzdHJlYW0gaGFzIGVycm9yZWQuIFdoZW4gdHJ1ZSBhbGwgd3JpdGUoKSBjYWxsc1xuICAvLyBzaG91bGQgcmV0dXJuIGZhbHNlLiBUaGlzIGlzIG5lZWRlZCBzaW5jZSB3aGVuIGF1dG9EZXN0cm95XG4gIC8vIGlzIGRpc2FibGVkIHdlIG5lZWQgYSB3YXkgdG8gdGVsbCB3aGV0aGVyIHRoZSBzdHJlYW0gaGFzIGZhaWxlZC5cbiAgdGhpcy5lcnJvcmVkID0gbnVsbFxuXG4gIC8vIEluZGljYXRlcyB3aGV0aGVyIHRoZSBzdHJlYW0gaGFzIGZpbmlzaGVkIGRlc3Ryb3lpbmcuXG4gIHRoaXMuY2xvc2VkID0gZmFsc2VcblxuICAvLyBUcnVlIGlmIGNsb3NlIGhhcyBiZWVuIGVtaXR0ZWQgb3Igd291bGQgaGF2ZSBiZWVuIGVtaXR0ZWRcbiAgLy8gZGVwZW5kaW5nIG9uIGVtaXRDbG9zZS5cbiAgdGhpcy5jbG9zZUVtaXR0ZWQgPSBmYWxzZVxuICB0aGlzW2tPbkZpbmlzaGVkXSA9IFtdXG59XG5mdW5jdGlvbiByZXNldEJ1ZmZlcihzdGF0ZSkge1xuICBzdGF0ZS5idWZmZXJlZCA9IFtdXG4gIHN0YXRlLmJ1ZmZlcmVkSW5kZXggPSAwXG4gIHN0YXRlLmFsbEJ1ZmZlcnMgPSB0cnVlXG4gIHN0YXRlLmFsbE5vb3AgPSB0cnVlXG59XG5Xcml0YWJsZVN0YXRlLnByb3RvdHlwZS5nZXRCdWZmZXIgPSBmdW5jdGlvbiBnZXRCdWZmZXIoKSB7XG4gIHJldHVybiBBcnJheVByb3RvdHlwZVNsaWNlKHRoaXMuYnVmZmVyZWQsIHRoaXMuYnVmZmVyZWRJbmRleClcbn1cbk9iamVjdERlZmluZVByb3BlcnR5KFdyaXRhYmxlU3RhdGUucHJvdG90eXBlLCAnYnVmZmVyZWRSZXF1ZXN0Q291bnQnLCB7XG4gIF9fcHJvdG9fXzogbnVsbCxcbiAgZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLmJ1ZmZlcmVkLmxlbmd0aCAtIHRoaXMuYnVmZmVyZWRJbmRleFxuICB9XG59KVxuZnVuY3Rpb24gV3JpdGFibGUob3B0aW9ucykge1xuICAvLyBXcml0YWJsZSBjdG9yIGlzIGFwcGxpZWQgdG8gRHVwbGV4ZXMsIHRvby5cbiAgLy8gYHJlYWxIYXNJbnN0YW5jZWAgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgdXNpbmcgcGxhaW4gYGluc3RhbmNlb2ZgXG4gIC8vIHdvdWxkIHJldHVybiBmYWxzZSwgYXMgbm8gYF93cml0YWJsZVN0YXRlYCBwcm9wZXJ0eSBpcyBhdHRhY2hlZC5cblxuICAvLyBUcnlpbmcgdG8gdXNlIHRoZSBjdXN0b20gYGluc3RhbmNlb2ZgIGZvciBXcml0YWJsZSBoZXJlIHdpbGwgYWxzbyBicmVhayB0aGVcbiAgLy8gTm9kZS5qcyBMYXp5VHJhbnNmb3JtIGltcGxlbWVudGF0aW9uLCB3aGljaCBoYXMgYSBub24tdHJpdmlhbCBnZXR0ZXIgZm9yXG4gIC8vIGBfd3JpdGFibGVTdGF0ZWAgdGhhdCB3b3VsZCBsZWFkIHRvIGluZmluaXRlIHJlY3Vyc2lvbi5cblxuICAvLyBDaGVja2luZyBmb3IgYSBTdHJlYW0uRHVwbGV4IGluc3RhbmNlIGlzIGZhc3RlciBoZXJlIGluc3RlYWQgb2YgaW5zaWRlXG4gIC8vIHRoZSBXcml0YWJsZVN0YXRlIGNvbnN0cnVjdG9yLCBhdCBsZWFzdCB3aXRoIFY4IDYuNS5cbiAgY29uc3QgaXNEdXBsZXggPSB0aGlzIGluc3RhbmNlb2YgcmVxdWlyZSgnLi9kdXBsZXgnKVxuICBpZiAoIWlzRHVwbGV4ICYmICFGdW5jdGlvblByb3RvdHlwZVN5bWJvbEhhc0luc3RhbmNlKFdyaXRhYmxlLCB0aGlzKSkgcmV0dXJuIG5ldyBXcml0YWJsZShvcHRpb25zKVxuICB0aGlzLl93cml0YWJsZVN0YXRlID0gbmV3IFdyaXRhYmxlU3RhdGUob3B0aW9ucywgdGhpcywgaXNEdXBsZXgpXG4gIGlmIChvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLndyaXRlID09PSAnZnVuY3Rpb24nKSB0aGlzLl93cml0ZSA9IG9wdGlvbnMud3JpdGVcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMud3JpdGV2ID09PSAnZnVuY3Rpb24nKSB0aGlzLl93cml0ZXYgPSBvcHRpb25zLndyaXRldlxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5kZXN0cm95ID09PSAnZnVuY3Rpb24nKSB0aGlzLl9kZXN0cm95ID0gb3B0aW9ucy5kZXN0cm95XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmZpbmFsID09PSAnZnVuY3Rpb24nKSB0aGlzLl9maW5hbCA9IG9wdGlvbnMuZmluYWxcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuY29uc3RydWN0ID09PSAnZnVuY3Rpb24nKSB0aGlzLl9jb25zdHJ1Y3QgPSBvcHRpb25zLmNvbnN0cnVjdFxuICAgIGlmIChvcHRpb25zLnNpZ25hbCkgYWRkQWJvcnRTaWduYWwob3B0aW9ucy5zaWduYWwsIHRoaXMpXG4gIH1cbiAgU3RyZWFtLmNhbGwodGhpcywgb3B0aW9ucylcbiAgZGVzdHJveUltcGwuY29uc3RydWN0KHRoaXMsICgpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGVcbiAgICBpZiAoIXN0YXRlLndyaXRpbmcpIHtcbiAgICAgIGNsZWFyQnVmZmVyKHRoaXMsIHN0YXRlKVxuICAgIH1cbiAgICBmaW5pc2hNYXliZSh0aGlzLCBzdGF0ZSlcbiAgfSlcbn1cbk9iamVjdERlZmluZVByb3BlcnR5KFdyaXRhYmxlLCBTeW1ib2xIYXNJbnN0YW5jZSwge1xuICBfX3Byb3RvX186IG51bGwsXG4gIHZhbHVlOiBmdW5jdGlvbiAob2JqZWN0KSB7XG4gICAgaWYgKEZ1bmN0aW9uUHJvdG90eXBlU3ltYm9sSGFzSW5zdGFuY2UodGhpcywgb2JqZWN0KSkgcmV0dXJuIHRydWVcbiAgICBpZiAodGhpcyAhPT0gV3JpdGFibGUpIHJldHVybiBmYWxzZVxuICAgIHJldHVybiBvYmplY3QgJiYgb2JqZWN0Ll93cml0YWJsZVN0YXRlIGluc3RhbmNlb2YgV3JpdGFibGVTdGF0ZVxuICB9XG59KVxuXG4vLyBPdGhlcndpc2UgcGVvcGxlIGNhbiBwaXBlIFdyaXRhYmxlIHN0cmVhbXMsIHdoaWNoIGlzIGp1c3Qgd3JvbmcuXG5Xcml0YWJsZS5wcm90b3R5cGUucGlwZSA9IGZ1bmN0aW9uICgpIHtcbiAgZXJyb3JPckRlc3Ryb3kodGhpcywgbmV3IEVSUl9TVFJFQU1fQ0FOTk9UX1BJUEUoKSlcbn1cbmZ1bmN0aW9uIF93cml0ZShzdHJlYW0sIGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgY29uc3Qgc3RhdGUgPSBzdHJlYW0uX3dyaXRhYmxlU3RhdGVcbiAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gZW5jb2RpbmdcbiAgICBlbmNvZGluZyA9IHN0YXRlLmRlZmF1bHRFbmNvZGluZ1xuICB9IGVsc2Uge1xuICAgIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gc3RhdGUuZGVmYXVsdEVuY29kaW5nXG4gICAgZWxzZSBpZiAoZW5jb2RpbmcgIT09ICdidWZmZXInICYmICFCdWZmZXIuaXNFbmNvZGluZyhlbmNvZGluZykpIHRocm93IG5ldyBFUlJfVU5LTk9XTl9FTkNPRElORyhlbmNvZGluZylcbiAgICBpZiAodHlwZW9mIGNiICE9PSAnZnVuY3Rpb24nKSBjYiA9IG5vcFxuICB9XG4gIGlmIChjaHVuayA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFUlJfU1RSRUFNX05VTExfVkFMVUVTKClcbiAgfSBlbHNlIGlmICghc3RhdGUub2JqZWN0TW9kZSkge1xuICAgIGlmICh0eXBlb2YgY2h1bmsgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoc3RhdGUuZGVjb2RlU3RyaW5ncyAhPT0gZmFsc2UpIHtcbiAgICAgICAgY2h1bmsgPSBCdWZmZXIuZnJvbShjaHVuaywgZW5jb2RpbmcpXG4gICAgICAgIGVuY29kaW5nID0gJ2J1ZmZlcidcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNodW5rIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgICBlbmNvZGluZyA9ICdidWZmZXInXG4gICAgfSBlbHNlIGlmIChTdHJlYW0uX2lzVWludDhBcnJheShjaHVuaykpIHtcbiAgICAgIGNodW5rID0gU3RyZWFtLl91aW50OEFycmF5VG9CdWZmZXIoY2h1bmspXG4gICAgICBlbmNvZGluZyA9ICdidWZmZXInXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVFlQRSgnY2h1bmsnLCBbJ3N0cmluZycsICdCdWZmZXInLCAnVWludDhBcnJheSddLCBjaHVuaylcbiAgICB9XG4gIH1cbiAgbGV0IGVyclxuICBpZiAoc3RhdGUuZW5kaW5nKSB7XG4gICAgZXJyID0gbmV3IEVSUl9TVFJFQU1fV1JJVEVfQUZURVJfRU5EKClcbiAgfSBlbHNlIGlmIChzdGF0ZS5kZXN0cm95ZWQpIHtcbiAgICBlcnIgPSBuZXcgRVJSX1NUUkVBTV9ERVNUUk9ZRUQoJ3dyaXRlJylcbiAgfVxuICBpZiAoZXJyKSB7XG4gICAgcHJvY2Vzcy5uZXh0VGljayhjYiwgZXJyKVxuICAgIGVycm9yT3JEZXN0cm95KHN0cmVhbSwgZXJyLCB0cnVlKVxuICAgIHJldHVybiBlcnJcbiAgfVxuICBzdGF0ZS5wZW5kaW5nY2IrK1xuICByZXR1cm4gd3JpdGVPckJ1ZmZlcihzdHJlYW0sIHN0YXRlLCBjaHVuaywgZW5jb2RpbmcsIGNiKVxufVxuV3JpdGFibGUucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgcmV0dXJuIF93cml0ZSh0aGlzLCBjaHVuaywgZW5jb2RpbmcsIGNiKSA9PT0gdHJ1ZVxufVxuV3JpdGFibGUucHJvdG90eXBlLmNvcmsgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX3dyaXRhYmxlU3RhdGUuY29ya2VkKytcbn1cbldyaXRhYmxlLnByb3RvdHlwZS51bmNvcmsgPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZVxuICBpZiAoc3RhdGUuY29ya2VkKSB7XG4gICAgc3RhdGUuY29ya2VkLS1cbiAgICBpZiAoIXN0YXRlLndyaXRpbmcpIGNsZWFyQnVmZmVyKHRoaXMsIHN0YXRlKVxuICB9XG59XG5Xcml0YWJsZS5wcm90b3R5cGUuc2V0RGVmYXVsdEVuY29kaW5nID0gZnVuY3Rpb24gc2V0RGVmYXVsdEVuY29kaW5nKGVuY29kaW5nKSB7XG4gIC8vIG5vZGU6OlBhcnNlRW5jb2RpbmcoKSByZXF1aXJlcyBsb3dlciBjYXNlLlxuICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJykgZW5jb2RpbmcgPSBTdHJpbmdQcm90b3R5cGVUb0xvd2VyQ2FzZShlbmNvZGluZylcbiAgaWYgKCFCdWZmZXIuaXNFbmNvZGluZyhlbmNvZGluZykpIHRocm93IG5ldyBFUlJfVU5LTk9XTl9FTkNPRElORyhlbmNvZGluZylcbiAgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZWZhdWx0RW5jb2RpbmcgPSBlbmNvZGluZ1xuICByZXR1cm4gdGhpc1xufVxuXG4vLyBJZiB3ZSdyZSBhbHJlYWR5IHdyaXRpbmcgc29tZXRoaW5nLCB0aGVuIGp1c3QgcHV0IHRoaXNcbi8vIGluIHRoZSBxdWV1ZSwgYW5kIHdhaXQgb3VyIHR1cm4uICBPdGhlcndpc2UsIGNhbGwgX3dyaXRlXG4vLyBJZiB3ZSByZXR1cm4gZmFsc2UsIHRoZW4gd2UgbmVlZCBhIGRyYWluIGV2ZW50LCBzbyBzZXQgdGhhdCBmbGFnLlxuZnVuY3Rpb24gd3JpdGVPckJ1ZmZlcihzdHJlYW0sIHN0YXRlLCBjaHVuaywgZW5jb2RpbmcsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGxlbiA9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoXG4gIHN0YXRlLmxlbmd0aCArPSBsZW5cblxuICAvLyBzdHJlYW0uX3dyaXRlIHJlc2V0cyBzdGF0ZS5sZW5ndGhcbiAgY29uc3QgcmV0ID0gc3RhdGUubGVuZ3RoIDwgc3RhdGUuaGlnaFdhdGVyTWFya1xuICAvLyBXZSBtdXN0IGVuc3VyZSB0aGF0IHByZXZpb3VzIG5lZWREcmFpbiB3aWxsIG5vdCBiZSByZXNldCB0byBmYWxzZS5cbiAgaWYgKCFyZXQpIHN0YXRlLm5lZWREcmFpbiA9IHRydWVcbiAgaWYgKHN0YXRlLndyaXRpbmcgfHwgc3RhdGUuY29ya2VkIHx8IHN0YXRlLmVycm9yZWQgfHwgIXN0YXRlLmNvbnN0cnVjdGVkKSB7XG4gICAgc3RhdGUuYnVmZmVyZWQucHVzaCh7XG4gICAgICBjaHVuayxcbiAgICAgIGVuY29kaW5nLFxuICAgICAgY2FsbGJhY2tcbiAgICB9KVxuICAgIGlmIChzdGF0ZS5hbGxCdWZmZXJzICYmIGVuY29kaW5nICE9PSAnYnVmZmVyJykge1xuICAgICAgc3RhdGUuYWxsQnVmZmVycyA9IGZhbHNlXG4gICAgfVxuICAgIGlmIChzdGF0ZS5hbGxOb29wICYmIGNhbGxiYWNrICE9PSBub3ApIHtcbiAgICAgIHN0YXRlLmFsbE5vb3AgPSBmYWxzZVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBzdGF0ZS53cml0ZWxlbiA9IGxlblxuICAgIHN0YXRlLndyaXRlY2IgPSBjYWxsYmFja1xuICAgIHN0YXRlLndyaXRpbmcgPSB0cnVlXG4gICAgc3RhdGUuc3luYyA9IHRydWVcbiAgICBzdHJlYW0uX3dyaXRlKGNodW5rLCBlbmNvZGluZywgc3RhdGUub253cml0ZSlcbiAgICBzdGF0ZS5zeW5jID0gZmFsc2VcbiAgfVxuXG4gIC8vIFJldHVybiBmYWxzZSBpZiBlcnJvcmVkIG9yIGRlc3Ryb3llZCBpbiBvcmRlciB0byBicmVha1xuICAvLyBhbnkgc3luY2hyb25vdXMgd2hpbGUoc3RyZWFtLndyaXRlKGRhdGEpKSBsb29wcy5cbiAgcmV0dXJuIHJldCAmJiAhc3RhdGUuZXJyb3JlZCAmJiAhc3RhdGUuZGVzdHJveWVkXG59XG5mdW5jdGlvbiBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIHdyaXRldiwgbGVuLCBjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHN0YXRlLndyaXRlbGVuID0gbGVuXG4gIHN0YXRlLndyaXRlY2IgPSBjYlxuICBzdGF0ZS53cml0aW5nID0gdHJ1ZVxuICBzdGF0ZS5zeW5jID0gdHJ1ZVxuICBpZiAoc3RhdGUuZGVzdHJveWVkKSBzdGF0ZS5vbndyaXRlKG5ldyBFUlJfU1RSRUFNX0RFU1RST1lFRCgnd3JpdGUnKSlcbiAgZWxzZSBpZiAod3JpdGV2KSBzdHJlYW0uX3dyaXRldihjaHVuaywgc3RhdGUub253cml0ZSlcbiAgZWxzZSBzdHJlYW0uX3dyaXRlKGNodW5rLCBlbmNvZGluZywgc3RhdGUub253cml0ZSlcbiAgc3RhdGUuc3luYyA9IGZhbHNlXG59XG5mdW5jdGlvbiBvbndyaXRlRXJyb3Ioc3RyZWFtLCBzdGF0ZSwgZXIsIGNiKSB7XG4gIC0tc3RhdGUucGVuZGluZ2NiXG4gIGNiKGVyKVxuICAvLyBFbnN1cmUgY2FsbGJhY2tzIGFyZSBpbnZva2VkIGV2ZW4gd2hlbiBhdXRvRGVzdHJveSBpc1xuICAvLyBub3QgZW5hYmxlZC4gUGFzc2luZyBgZXJgIGhlcmUgZG9lc24ndCBtYWtlIHNlbnNlIHNpbmNlXG4gIC8vIGl0J3MgcmVsYXRlZCB0byBvbmUgc3BlY2lmaWMgd3JpdGUsIG5vdCB0byB0aGUgYnVmZmVyZWRcbiAgLy8gd3JpdGVzLlxuICBlcnJvckJ1ZmZlcihzdGF0ZSlcbiAgLy8gVGhpcyBjYW4gZW1pdCBlcnJvciwgYnV0IGVycm9yIG11c3QgYWx3YXlzIGZvbGxvdyBjYi5cbiAgZXJyb3JPckRlc3Ryb3koc3RyZWFtLCBlcilcbn1cbmZ1bmN0aW9uIG9ud3JpdGUoc3RyZWFtLCBlcikge1xuICBjb25zdCBzdGF0ZSA9IHN0cmVhbS5fd3JpdGFibGVTdGF0ZVxuICBjb25zdCBzeW5jID0gc3RhdGUuc3luY1xuICBjb25zdCBjYiA9IHN0YXRlLndyaXRlY2JcbiAgaWYgKHR5cGVvZiBjYiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIGVycm9yT3JEZXN0cm95KHN0cmVhbSwgbmV3IEVSUl9NVUxUSVBMRV9DQUxMQkFDSygpKVxuICAgIHJldHVyblxuICB9XG4gIHN0YXRlLndyaXRpbmcgPSBmYWxzZVxuICBzdGF0ZS53cml0ZWNiID0gbnVsbFxuICBzdGF0ZS5sZW5ndGggLT0gc3RhdGUud3JpdGVsZW5cbiAgc3RhdGUud3JpdGVsZW4gPSAwXG4gIGlmIChlcikge1xuICAgIC8vIEF2b2lkIFY4IGxlYWssIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9wdWxsLzM0MTAzI2lzc3VlY29tbWVudC02NTIwMDIzNjRcbiAgICBlci5zdGFjayAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC1leHByZXNzaW9uc1xuXG4gICAgaWYgKCFzdGF0ZS5lcnJvcmVkKSB7XG4gICAgICBzdGF0ZS5lcnJvcmVkID0gZXJcbiAgICB9XG5cbiAgICAvLyBJbiBjYXNlIG9mIGR1cGxleCBzdHJlYW1zIHdlIG5lZWQgdG8gbm90aWZ5IHRoZSByZWFkYWJsZSBzaWRlIG9mIHRoZVxuICAgIC8vIGVycm9yLlxuICAgIGlmIChzdHJlYW0uX3JlYWRhYmxlU3RhdGUgJiYgIXN0cmVhbS5fcmVhZGFibGVTdGF0ZS5lcnJvcmVkKSB7XG4gICAgICBzdHJlYW0uX3JlYWRhYmxlU3RhdGUuZXJyb3JlZCA9IGVyXG4gICAgfVxuICAgIGlmIChzeW5jKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKG9ud3JpdGVFcnJvciwgc3RyZWFtLCBzdGF0ZSwgZXIsIGNiKVxuICAgIH0gZWxzZSB7XG4gICAgICBvbndyaXRlRXJyb3Ioc3RyZWFtLCBzdGF0ZSwgZXIsIGNiKVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoc3RhdGUuYnVmZmVyZWQubGVuZ3RoID4gc3RhdGUuYnVmZmVyZWRJbmRleCkge1xuICAgICAgY2xlYXJCdWZmZXIoc3RyZWFtLCBzdGF0ZSlcbiAgICB9XG4gICAgaWYgKHN5bmMpIHtcbiAgICAgIC8vIEl0IGlzIGEgY29tbW9uIGNhc2UgdGhhdCB0aGUgY2FsbGJhY2sgcGFzc2VkIHRvIC53cml0ZSgpIGlzIGFsd2F5c1xuICAgICAgLy8gdGhlIHNhbWUuIEluIHRoYXQgY2FzZSwgd2UgZG8gbm90IHNjaGVkdWxlIGEgbmV3IG5leHRUaWNrKCksIGJ1dFxuICAgICAgLy8gcmF0aGVyIGp1c3QgaW5jcmVhc2UgYSBjb3VudGVyLCB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIGFuZCBhdm9pZFxuICAgICAgLy8gbWVtb3J5IGFsbG9jYXRpb25zLlxuICAgICAgaWYgKHN0YXRlLmFmdGVyV3JpdGVUaWNrSW5mbyAhPT0gbnVsbCAmJiBzdGF0ZS5hZnRlcldyaXRlVGlja0luZm8uY2IgPT09IGNiKSB7XG4gICAgICAgIHN0YXRlLmFmdGVyV3JpdGVUaWNrSW5mby5jb3VudCsrXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGF0ZS5hZnRlcldyaXRlVGlja0luZm8gPSB7XG4gICAgICAgICAgY291bnQ6IDEsXG4gICAgICAgICAgY2IsXG4gICAgICAgICAgc3RyZWFtLFxuICAgICAgICAgIHN0YXRlXG4gICAgICAgIH1cbiAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhhZnRlcldyaXRlVGljaywgc3RhdGUuYWZ0ZXJXcml0ZVRpY2tJbmZvKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhZnRlcldyaXRlKHN0cmVhbSwgc3RhdGUsIDEsIGNiKVxuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gYWZ0ZXJXcml0ZVRpY2soeyBzdHJlYW0sIHN0YXRlLCBjb3VudCwgY2IgfSkge1xuICBzdGF0ZS5hZnRlcldyaXRlVGlja0luZm8gPSBudWxsXG4gIHJldHVybiBhZnRlcldyaXRlKHN0cmVhbSwgc3RhdGUsIGNvdW50LCBjYilcbn1cbmZ1bmN0aW9uIGFmdGVyV3JpdGUoc3RyZWFtLCBzdGF0ZSwgY291bnQsIGNiKSB7XG4gIGNvbnN0IG5lZWREcmFpbiA9ICFzdGF0ZS5lbmRpbmcgJiYgIXN0cmVhbS5kZXN0cm95ZWQgJiYgc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLm5lZWREcmFpblxuICBpZiAobmVlZERyYWluKSB7XG4gICAgc3RhdGUubmVlZERyYWluID0gZmFsc2VcbiAgICBzdHJlYW0uZW1pdCgnZHJhaW4nKVxuICB9XG4gIHdoaWxlIChjb3VudC0tID4gMCkge1xuICAgIHN0YXRlLnBlbmRpbmdjYi0tXG4gICAgY2IoKVxuICB9XG4gIGlmIChzdGF0ZS5kZXN0cm95ZWQpIHtcbiAgICBlcnJvckJ1ZmZlcihzdGF0ZSlcbiAgfVxuICBmaW5pc2hNYXliZShzdHJlYW0sIHN0YXRlKVxufVxuXG4vLyBJZiB0aGVyZSdzIHNvbWV0aGluZyBpbiB0aGUgYnVmZmVyIHdhaXRpbmcsIHRoZW4gaW52b2tlIGNhbGxiYWNrcy5cbmZ1bmN0aW9uIGVycm9yQnVmZmVyKHN0YXRlKSB7XG4gIGlmIChzdGF0ZS53cml0aW5nKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgZm9yIChsZXQgbiA9IHN0YXRlLmJ1ZmZlcmVkSW5kZXg7IG4gPCBzdGF0ZS5idWZmZXJlZC5sZW5ndGg7ICsrbikge1xuICAgIHZhciBfc3RhdGUkZXJyb3JlZFxuICAgIGNvbnN0IHsgY2h1bmssIGNhbGxiYWNrIH0gPSBzdGF0ZS5idWZmZXJlZFtuXVxuICAgIGNvbnN0IGxlbiA9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoXG4gICAgc3RhdGUubGVuZ3RoIC09IGxlblxuICAgIGNhbGxiYWNrKFxuICAgICAgKF9zdGF0ZSRlcnJvcmVkID0gc3RhdGUuZXJyb3JlZCkgIT09IG51bGwgJiYgX3N0YXRlJGVycm9yZWQgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IF9zdGF0ZSRlcnJvcmVkXG4gICAgICAgIDogbmV3IEVSUl9TVFJFQU1fREVTVFJPWUVEKCd3cml0ZScpXG4gICAgKVxuICB9XG4gIGNvbnN0IG9uZmluaXNoQ2FsbGJhY2tzID0gc3RhdGVba09uRmluaXNoZWRdLnNwbGljZSgwKVxuICBmb3IgKGxldCBpID0gMDsgaSA8IG9uZmluaXNoQ2FsbGJhY2tzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIF9zdGF0ZSRlcnJvcmVkMlxuICAgIG9uZmluaXNoQ2FsbGJhY2tzW2ldKFxuICAgICAgKF9zdGF0ZSRlcnJvcmVkMiA9IHN0YXRlLmVycm9yZWQpICE9PSBudWxsICYmIF9zdGF0ZSRlcnJvcmVkMiAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gX3N0YXRlJGVycm9yZWQyXG4gICAgICAgIDogbmV3IEVSUl9TVFJFQU1fREVTVFJPWUVEKCdlbmQnKVxuICAgIClcbiAgfVxuICByZXNldEJ1ZmZlcihzdGF0ZSlcbn1cblxuLy8gSWYgdGhlcmUncyBzb21ldGhpbmcgaW4gdGhlIGJ1ZmZlciB3YWl0aW5nLCB0aGVuIHByb2Nlc3MgaXQuXG5mdW5jdGlvbiBjbGVhckJ1ZmZlcihzdHJlYW0sIHN0YXRlKSB7XG4gIGlmIChzdGF0ZS5jb3JrZWQgfHwgc3RhdGUuYnVmZmVyUHJvY2Vzc2luZyB8fCBzdGF0ZS5kZXN0cm95ZWQgfHwgIXN0YXRlLmNvbnN0cnVjdGVkKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgY29uc3QgeyBidWZmZXJlZCwgYnVmZmVyZWRJbmRleCwgb2JqZWN0TW9kZSB9ID0gc3RhdGVcbiAgY29uc3QgYnVmZmVyZWRMZW5ndGggPSBidWZmZXJlZC5sZW5ndGggLSBidWZmZXJlZEluZGV4XG4gIGlmICghYnVmZmVyZWRMZW5ndGgpIHtcbiAgICByZXR1cm5cbiAgfVxuICBsZXQgaSA9IGJ1ZmZlcmVkSW5kZXhcbiAgc3RhdGUuYnVmZmVyUHJvY2Vzc2luZyA9IHRydWVcbiAgaWYgKGJ1ZmZlcmVkTGVuZ3RoID4gMSAmJiBzdHJlYW0uX3dyaXRldikge1xuICAgIHN0YXRlLnBlbmRpbmdjYiAtPSBidWZmZXJlZExlbmd0aCAtIDFcbiAgICBjb25zdCBjYWxsYmFjayA9IHN0YXRlLmFsbE5vb3BcbiAgICAgID8gbm9wXG4gICAgICA6IChlcnIpID0+IHtcbiAgICAgICAgICBmb3IgKGxldCBuID0gaTsgbiA8IGJ1ZmZlcmVkLmxlbmd0aDsgKytuKSB7XG4gICAgICAgICAgICBidWZmZXJlZFtuXS5jYWxsYmFjayhlcnIpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgLy8gTWFrZSBhIGNvcHkgb2YgYGJ1ZmZlcmVkYCBpZiBpdCdzIGdvaW5nIHRvIGJlIHVzZWQgYnkgYGNhbGxiYWNrYCBhYm92ZSxcbiAgICAvLyBzaW5jZSBgZG9Xcml0ZWAgd2lsbCBtdXRhdGUgdGhlIGFycmF5LlxuICAgIGNvbnN0IGNodW5rcyA9IHN0YXRlLmFsbE5vb3AgJiYgaSA9PT0gMCA/IGJ1ZmZlcmVkIDogQXJyYXlQcm90b3R5cGVTbGljZShidWZmZXJlZCwgaSlcbiAgICBjaHVua3MuYWxsQnVmZmVycyA9IHN0YXRlLmFsbEJ1ZmZlcnNcbiAgICBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIHRydWUsIHN0YXRlLmxlbmd0aCwgY2h1bmtzLCAnJywgY2FsbGJhY2spXG4gICAgcmVzZXRCdWZmZXIoc3RhdGUpXG4gIH0gZWxzZSB7XG4gICAgZG8ge1xuICAgICAgY29uc3QgeyBjaHVuaywgZW5jb2RpbmcsIGNhbGxiYWNrIH0gPSBidWZmZXJlZFtpXVxuICAgICAgYnVmZmVyZWRbaSsrXSA9IG51bGxcbiAgICAgIGNvbnN0IGxlbiA9IG9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoXG4gICAgICBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIGZhbHNlLCBsZW4sIGNodW5rLCBlbmNvZGluZywgY2FsbGJhY2spXG4gICAgfSB3aGlsZSAoaSA8IGJ1ZmZlcmVkLmxlbmd0aCAmJiAhc3RhdGUud3JpdGluZylcbiAgICBpZiAoaSA9PT0gYnVmZmVyZWQubGVuZ3RoKSB7XG4gICAgICByZXNldEJ1ZmZlcihzdGF0ZSlcbiAgICB9IGVsc2UgaWYgKGkgPiAyNTYpIHtcbiAgICAgIGJ1ZmZlcmVkLnNwbGljZSgwLCBpKVxuICAgICAgc3RhdGUuYnVmZmVyZWRJbmRleCA9IDBcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUuYnVmZmVyZWRJbmRleCA9IGlcbiAgICB9XG4gIH1cbiAgc3RhdGUuYnVmZmVyUHJvY2Vzc2luZyA9IGZhbHNlXG59XG5Xcml0YWJsZS5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgaWYgKHRoaXMuX3dyaXRldikge1xuICAgIHRoaXMuX3dyaXRldihcbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIGNodW5rLFxuICAgICAgICAgIGVuY29kaW5nXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBjYlxuICAgIClcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQoJ193cml0ZSgpJylcbiAgfVxufVxuV3JpdGFibGUucHJvdG90eXBlLl93cml0ZXYgPSBudWxsXG5Xcml0YWJsZS5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl93cml0YWJsZVN0YXRlXG4gIGlmICh0eXBlb2YgY2h1bmsgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IGNodW5rXG4gICAgY2h1bmsgPSBudWxsXG4gICAgZW5jb2RpbmcgPSBudWxsXG4gIH0gZWxzZSBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2IgPSBlbmNvZGluZ1xuICAgIGVuY29kaW5nID0gbnVsbFxuICB9XG4gIGxldCBlcnJcbiAgaWYgKGNodW5rICE9PSBudWxsICYmIGNodW5rICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCByZXQgPSBfd3JpdGUodGhpcywgY2h1bmssIGVuY29kaW5nKVxuICAgIGlmIChyZXQgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgZXJyID0gcmV0XG4gICAgfVxuICB9XG5cbiAgLy8gLmVuZCgpIGZ1bGx5IHVuY29ya3MuXG4gIGlmIChzdGF0ZS5jb3JrZWQpIHtcbiAgICBzdGF0ZS5jb3JrZWQgPSAxXG4gICAgdGhpcy51bmNvcmsoKVxuICB9XG4gIGlmIChlcnIpIHtcbiAgICAvLyBEbyBub3RoaW5nLi4uXG4gIH0gZWxzZSBpZiAoIXN0YXRlLmVycm9yZWQgJiYgIXN0YXRlLmVuZGluZykge1xuICAgIC8vIFRoaXMgaXMgZm9yZ2l2aW5nIGluIHRlcm1zIG9mIHVubmVjZXNzYXJ5IGNhbGxzIHRvIGVuZCgpIGFuZCBjYW4gaGlkZVxuICAgIC8vIGxvZ2ljIGVycm9ycy4gSG93ZXZlciwgdXN1YWxseSBzdWNoIGVycm9ycyBhcmUgaGFybWxlc3MgYW5kIGNhdXNpbmcgYVxuICAgIC8vIGhhcmQgZXJyb3IgY2FuIGJlIGRpc3Byb3BvcnRpb25hdGVseSBkZXN0cnVjdGl2ZS4gSXQgaXMgbm90IGFsd2F5c1xuICAgIC8vIHRyaXZpYWwgZm9yIHRoZSB1c2VyIHRvIGRldGVybWluZSB3aGV0aGVyIGVuZCgpIG5lZWRzIHRvIGJlIGNhbGxlZFxuICAgIC8vIG9yIG5vdC5cblxuICAgIHN0YXRlLmVuZGluZyA9IHRydWVcbiAgICBmaW5pc2hNYXliZSh0aGlzLCBzdGF0ZSwgdHJ1ZSlcbiAgICBzdGF0ZS5lbmRlZCA9IHRydWVcbiAgfSBlbHNlIGlmIChzdGF0ZS5maW5pc2hlZCkge1xuICAgIGVyciA9IG5ldyBFUlJfU1RSRUFNX0FMUkVBRFlfRklOSVNIRUQoJ2VuZCcpXG4gIH0gZWxzZSBpZiAoc3RhdGUuZGVzdHJveWVkKSB7XG4gICAgZXJyID0gbmV3IEVSUl9TVFJFQU1fREVTVFJPWUVEKCdlbmQnKVxuICB9XG4gIGlmICh0eXBlb2YgY2IgPT09ICdmdW5jdGlvbicpIHtcbiAgICBpZiAoZXJyIHx8IHN0YXRlLmZpbmlzaGVkKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGNiLCBlcnIpXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlW2tPbkZpbmlzaGVkXS5wdXNoKGNiKVxuICAgIH1cbiAgfVxuICByZXR1cm4gdGhpc1xufVxuZnVuY3Rpb24gbmVlZEZpbmlzaChzdGF0ZSkge1xuICByZXR1cm4gKFxuICAgIHN0YXRlLmVuZGluZyAmJlxuICAgICFzdGF0ZS5kZXN0cm95ZWQgJiZcbiAgICBzdGF0ZS5jb25zdHJ1Y3RlZCAmJlxuICAgIHN0YXRlLmxlbmd0aCA9PT0gMCAmJlxuICAgICFzdGF0ZS5lcnJvcmVkICYmXG4gICAgc3RhdGUuYnVmZmVyZWQubGVuZ3RoID09PSAwICYmXG4gICAgIXN0YXRlLmZpbmlzaGVkICYmXG4gICAgIXN0YXRlLndyaXRpbmcgJiZcbiAgICAhc3RhdGUuZXJyb3JFbWl0dGVkICYmXG4gICAgIXN0YXRlLmNsb3NlRW1pdHRlZFxuICApXG59XG5mdW5jdGlvbiBjYWxsRmluYWwoc3RyZWFtLCBzdGF0ZSkge1xuICBsZXQgY2FsbGVkID0gZmFsc2VcbiAgZnVuY3Rpb24gb25GaW5pc2goZXJyKSB7XG4gICAgaWYgKGNhbGxlZCkge1xuICAgICAgZXJyb3JPckRlc3Ryb3koc3RyZWFtLCBlcnIgIT09IG51bGwgJiYgZXJyICE9PSB1bmRlZmluZWQgPyBlcnIgOiBFUlJfTVVMVElQTEVfQ0FMTEJBQ0soKSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjYWxsZWQgPSB0cnVlXG4gICAgc3RhdGUucGVuZGluZ2NiLS1cbiAgICBpZiAoZXJyKSB7XG4gICAgICBjb25zdCBvbmZpbmlzaENhbGxiYWNrcyA9IHN0YXRlW2tPbkZpbmlzaGVkXS5zcGxpY2UoMClcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb25maW5pc2hDYWxsYmFja3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgb25maW5pc2hDYWxsYmFja3NbaV0oZXJyKVxuICAgICAgfVxuICAgICAgZXJyb3JPckRlc3Ryb3koc3RyZWFtLCBlcnIsIHN0YXRlLnN5bmMpXG4gICAgfSBlbHNlIGlmIChuZWVkRmluaXNoKHN0YXRlKSkge1xuICAgICAgc3RhdGUucHJlZmluaXNoZWQgPSB0cnVlXG4gICAgICBzdHJlYW0uZW1pdCgncHJlZmluaXNoJylcbiAgICAgIC8vIEJhY2t3YXJkcyBjb21wYXQuIERvbid0IGNoZWNrIHN0YXRlLnN5bmMgaGVyZS5cbiAgICAgIC8vIFNvbWUgc3RyZWFtcyBhc3N1bWUgJ2ZpbmlzaCcgd2lsbCBiZSBlbWl0dGVkXG4gICAgICAvLyBhc3luY2hyb25vdXNseSByZWxhdGl2ZSB0byBfZmluYWwgY2FsbGJhY2suXG4gICAgICBzdGF0ZS5wZW5kaW5nY2IrK1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhmaW5pc2gsIHN0cmVhbSwgc3RhdGUpXG4gICAgfVxuICB9XG4gIHN0YXRlLnN5bmMgPSB0cnVlXG4gIHN0YXRlLnBlbmRpbmdjYisrXG4gIHRyeSB7XG4gICAgc3RyZWFtLl9maW5hbChvbkZpbmlzaClcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgb25GaW5pc2goZXJyKVxuICB9XG4gIHN0YXRlLnN5bmMgPSBmYWxzZVxufVxuZnVuY3Rpb24gcHJlZmluaXNoKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5wcmVmaW5pc2hlZCAmJiAhc3RhdGUuZmluYWxDYWxsZWQpIHtcbiAgICBpZiAodHlwZW9mIHN0cmVhbS5fZmluYWwgPT09ICdmdW5jdGlvbicgJiYgIXN0YXRlLmRlc3Ryb3llZCkge1xuICAgICAgc3RhdGUuZmluYWxDYWxsZWQgPSB0cnVlXG4gICAgICBjYWxsRmluYWwoc3RyZWFtLCBzdGF0ZSlcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUucHJlZmluaXNoZWQgPSB0cnVlXG4gICAgICBzdHJlYW0uZW1pdCgncHJlZmluaXNoJylcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIGZpbmlzaE1heWJlKHN0cmVhbSwgc3RhdGUsIHN5bmMpIHtcbiAgaWYgKG5lZWRGaW5pc2goc3RhdGUpKSB7XG4gICAgcHJlZmluaXNoKHN0cmVhbSwgc3RhdGUpXG4gICAgaWYgKHN0YXRlLnBlbmRpbmdjYiA9PT0gMCkge1xuICAgICAgaWYgKHN5bmMpIHtcbiAgICAgICAgc3RhdGUucGVuZGluZ2NiKytcbiAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhcbiAgICAgICAgICAoc3RyZWFtLCBzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKG5lZWRGaW5pc2goc3RhdGUpKSB7XG4gICAgICAgICAgICAgIGZpbmlzaChzdHJlYW0sIHN0YXRlKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc3RhdGUucGVuZGluZ2NiLS1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0cmVhbSxcbiAgICAgICAgICBzdGF0ZVxuICAgICAgICApXG4gICAgICB9IGVsc2UgaWYgKG5lZWRGaW5pc2goc3RhdGUpKSB7XG4gICAgICAgIHN0YXRlLnBlbmRpbmdjYisrXG4gICAgICAgIGZpbmlzaChzdHJlYW0sIHN0YXRlKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gZmluaXNoKHN0cmVhbSwgc3RhdGUpIHtcbiAgc3RhdGUucGVuZGluZ2NiLS1cbiAgc3RhdGUuZmluaXNoZWQgPSB0cnVlXG4gIGNvbnN0IG9uZmluaXNoQ2FsbGJhY2tzID0gc3RhdGVba09uRmluaXNoZWRdLnNwbGljZSgwKVxuICBmb3IgKGxldCBpID0gMDsgaSA8IG9uZmluaXNoQ2FsbGJhY2tzLmxlbmd0aDsgaSsrKSB7XG4gICAgb25maW5pc2hDYWxsYmFja3NbaV0oKVxuICB9XG4gIHN0cmVhbS5lbWl0KCdmaW5pc2gnKVxuICBpZiAoc3RhdGUuYXV0b0Rlc3Ryb3kpIHtcbiAgICAvLyBJbiBjYXNlIG9mIGR1cGxleCBzdHJlYW1zIHdlIG5lZWQgYSB3YXkgdG8gZGV0ZWN0XG4gICAgLy8gaWYgdGhlIHJlYWRhYmxlIHNpZGUgaXMgcmVhZHkgZm9yIGF1dG9EZXN0cm95IGFzIHdlbGwuXG4gICAgY29uc3QgclN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlXG4gICAgY29uc3QgYXV0b0Rlc3Ryb3kgPVxuICAgICAgIXJTdGF0ZSB8fFxuICAgICAgKHJTdGF0ZS5hdXRvRGVzdHJveSAmJlxuICAgICAgICAvLyBXZSBkb24ndCBleHBlY3QgdGhlIHJlYWRhYmxlIHRvIGV2ZXIgJ2VuZCdcbiAgICAgICAgLy8gaWYgcmVhZGFibGUgaXMgZXhwbGljaXRseSBzZXQgdG8gZmFsc2UuXG4gICAgICAgIChyU3RhdGUuZW5kRW1pdHRlZCB8fCByU3RhdGUucmVhZGFibGUgPT09IGZhbHNlKSlcbiAgICBpZiAoYXV0b0Rlc3Ryb3kpIHtcbiAgICAgIHN0cmVhbS5kZXN0cm95KClcbiAgICB9XG4gIH1cbn1cbk9iamVjdERlZmluZVByb3BlcnRpZXMoV3JpdGFibGUucHJvdG90eXBlLCB7XG4gIGNsb3NlZDoge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICBnZXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZSA/IHRoaXMuX3dyaXRhYmxlU3RhdGUuY2xvc2VkIDogZmFsc2VcbiAgICB9XG4gIH0sXG4gIGRlc3Ryb3llZDoge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICBnZXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZSA/IHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkIDogZmFsc2VcbiAgICB9LFxuICAgIHNldCh2YWx1ZSkge1xuICAgICAgLy8gQmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdGhlIHVzZXIgaXMgZXhwbGljaXRseSBtYW5hZ2luZyBkZXN0cm95ZWQuXG4gICAgICBpZiAodGhpcy5fd3JpdGFibGVTdGF0ZSkge1xuICAgICAgICB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZCA9IHZhbHVlXG4gICAgICB9XG4gICAgfVxuICB9LFxuICB3cml0YWJsZToge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICBnZXQoKSB7XG4gICAgICBjb25zdCB3ID0gdGhpcy5fd3JpdGFibGVTdGF0ZVxuICAgICAgLy8gdy53cml0YWJsZSA9PT0gZmFsc2UgbWVhbnMgdGhhdCB0aGlzIGlzIHBhcnQgb2YgYSBEdXBsZXggc3RyZWFtXG4gICAgICAvLyB3aGVyZSB0aGUgd3JpdGFibGUgc2lkZSB3YXMgZGlzYWJsZWQgdXBvbiBjb25zdHJ1Y3Rpb24uXG4gICAgICAvLyBDb21wYXQuIFRoZSB1c2VyIG1pZ2h0IG1hbnVhbGx5IGRpc2FibGUgd3JpdGFibGUgc2lkZSB0aHJvdWdoXG4gICAgICAvLyBkZXByZWNhdGVkIHNldHRlci5cbiAgICAgIHJldHVybiAhIXcgJiYgdy53cml0YWJsZSAhPT0gZmFsc2UgJiYgIXcuZGVzdHJveWVkICYmICF3LmVycm9yZWQgJiYgIXcuZW5kaW5nICYmICF3LmVuZGVkXG4gICAgfSxcbiAgICBzZXQodmFsKSB7XG4gICAgICAvLyBCYWNrd2FyZHMgY29tcGF0aWJsZS5cbiAgICAgIGlmICh0aGlzLl93cml0YWJsZVN0YXRlKSB7XG4gICAgICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUud3JpdGFibGUgPSAhIXZhbFxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgd3JpdGFibGVGaW5pc2hlZDoge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICBnZXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZSA/IHRoaXMuX3dyaXRhYmxlU3RhdGUuZmluaXNoZWQgOiBmYWxzZVxuICAgIH1cbiAgfSxcbiAgd3JpdGFibGVPYmplY3RNb2RlOiB7XG4gICAgX19wcm90b19fOiBudWxsLFxuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlID8gdGhpcy5fd3JpdGFibGVTdGF0ZS5vYmplY3RNb2RlIDogZmFsc2VcbiAgICB9XG4gIH0sXG4gIHdyaXRhYmxlQnVmZmVyOiB7XG4gICAgX19wcm90b19fOiBudWxsLFxuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlICYmIHRoaXMuX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyKClcbiAgICB9XG4gIH0sXG4gIHdyaXRhYmxlRW5kZWQ6IHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUgPyB0aGlzLl93cml0YWJsZVN0YXRlLmVuZGluZyA6IGZhbHNlXG4gICAgfVxuICB9LFxuICB3cml0YWJsZU5lZWREcmFpbjoge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICBnZXQoKSB7XG4gICAgICBjb25zdCB3U3RhdGUgPSB0aGlzLl93cml0YWJsZVN0YXRlXG4gICAgICBpZiAoIXdTdGF0ZSkgcmV0dXJuIGZhbHNlXG4gICAgICByZXR1cm4gIXdTdGF0ZS5kZXN0cm95ZWQgJiYgIXdTdGF0ZS5lbmRpbmcgJiYgd1N0YXRlLm5lZWREcmFpblxuICAgIH1cbiAgfSxcbiAgd3JpdGFibGVIaWdoV2F0ZXJNYXJrOiB7XG4gICAgX19wcm90b19fOiBudWxsLFxuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlICYmIHRoaXMuX3dyaXRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya1xuICAgIH1cbiAgfSxcbiAgd3JpdGFibGVDb3JrZWQ6IHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUgPyB0aGlzLl93cml0YWJsZVN0YXRlLmNvcmtlZCA6IDBcbiAgICB9XG4gIH0sXG4gIHdyaXRhYmxlTGVuZ3RoOiB7XG4gICAgX19wcm90b19fOiBudWxsLFxuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlICYmIHRoaXMuX3dyaXRhYmxlU3RhdGUubGVuZ3RoXG4gICAgfVxuICB9LFxuICBlcnJvcmVkOiB7XG4gICAgX19wcm90b19fOiBudWxsLFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlID8gdGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvcmVkIDogbnVsbFxuICAgIH1cbiAgfSxcbiAgd3JpdGFibGVBYm9ydGVkOiB7XG4gICAgX19wcm90b19fOiBudWxsLFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuICEhKFxuICAgICAgICB0aGlzLl93cml0YWJsZVN0YXRlLndyaXRhYmxlICE9PSBmYWxzZSAmJlxuICAgICAgICAodGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQgfHwgdGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvcmVkKSAmJlxuICAgICAgICAhdGhpcy5fd3JpdGFibGVTdGF0ZS5maW5pc2hlZFxuICAgICAgKVxuICAgIH1cbiAgfVxufSlcbmNvbnN0IGRlc3Ryb3kgPSBkZXN0cm95SW1wbC5kZXN0cm95XG5Xcml0YWJsZS5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uIChlcnIsIGNiKSB7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZVxuXG4gIC8vIEludm9rZSBwZW5kaW5nIGNhbGxiYWNrcy5cbiAgaWYgKCFzdGF0ZS5kZXN0cm95ZWQgJiYgKHN0YXRlLmJ1ZmZlcmVkSW5kZXggPCBzdGF0ZS5idWZmZXJlZC5sZW5ndGggfHwgc3RhdGVba09uRmluaXNoZWRdLmxlbmd0aCkpIHtcbiAgICBwcm9jZXNzLm5leHRUaWNrKGVycm9yQnVmZmVyLCBzdGF0ZSlcbiAgfVxuICBkZXN0cm95LmNhbGwodGhpcywgZXJyLCBjYilcbiAgcmV0dXJuIHRoaXNcbn1cbldyaXRhYmxlLnByb3RvdHlwZS5fdW5kZXN0cm95ID0gZGVzdHJveUltcGwudW5kZXN0cm95XG5Xcml0YWJsZS5wcm90b3R5cGUuX2Rlc3Ryb3kgPSBmdW5jdGlvbiAoZXJyLCBjYikge1xuICBjYihlcnIpXG59XG5Xcml0YWJsZS5wcm90b3R5cGVbRUUuY2FwdHVyZVJlamVjdGlvblN5bWJvbF0gPSBmdW5jdGlvbiAoZXJyKSB7XG4gIHRoaXMuZGVzdHJveShlcnIpXG59XG5sZXQgd2ViU3RyZWFtc0FkYXB0ZXJzXG5cbi8vIExhenkgdG8gYXZvaWQgY2lyY3VsYXIgcmVmZXJlbmNlc1xuZnVuY3Rpb24gbGF6eVdlYlN0cmVhbXMoKSB7XG4gIGlmICh3ZWJTdHJlYW1zQWRhcHRlcnMgPT09IHVuZGVmaW5lZCkgd2ViU3RyZWFtc0FkYXB0ZXJzID0ge31cbiAgcmV0dXJuIHdlYlN0cmVhbXNBZGFwdGVyc1xufVxuV3JpdGFibGUuZnJvbVdlYiA9IGZ1bmN0aW9uICh3cml0YWJsZVN0cmVhbSwgb3B0aW9ucykge1xuICByZXR1cm4gbGF6eVdlYlN0cmVhbXMoKS5uZXdTdHJlYW1Xcml0YWJsZUZyb21Xcml0YWJsZVN0cmVhbSh3cml0YWJsZVN0cmVhbSwgb3B0aW9ucylcbn1cbldyaXRhYmxlLnRvV2ViID0gZnVuY3Rpb24gKHN0cmVhbVdyaXRhYmxlKSB7XG4gIHJldHVybiBsYXp5V2ViU3RyZWFtcygpLm5ld1dyaXRhYmxlU3RyZWFtRnJvbVN0cmVhbVdyaXRhYmxlKHN0cmVhbVdyaXRhYmxlKVxufVxuIiwiLyogcmVwbGFjZW1lbnQgc3RhcnQgKi9cblxuY29uc3QgcHJvY2VzcyA9IHJlcXVpcmUoJ3Byb2Nlc3MvJylcblxuLyogcmVwbGFjZW1lbnQgZW5kICovXG5cbjsoJ3VzZSBzdHJpY3QnKVxuY29uc3QgYnVmZmVyTW9kdWxlID0gcmVxdWlyZSgnYnVmZmVyJylcbmNvbnN0IHtcbiAgaXNSZWFkYWJsZSxcbiAgaXNXcml0YWJsZSxcbiAgaXNJdGVyYWJsZSxcbiAgaXNOb2RlU3RyZWFtLFxuICBpc1JlYWRhYmxlTm9kZVN0cmVhbSxcbiAgaXNXcml0YWJsZU5vZGVTdHJlYW0sXG4gIGlzRHVwbGV4Tm9kZVN0cmVhbSxcbiAgaXNSZWFkYWJsZVN0cmVhbSxcbiAgaXNXcml0YWJsZVN0cmVhbVxufSA9IHJlcXVpcmUoJy4vdXRpbHMnKVxuY29uc3QgZW9zID0gcmVxdWlyZSgnLi9lbmQtb2Ytc3RyZWFtJylcbmNvbnN0IHtcbiAgQWJvcnRFcnJvcixcbiAgY29kZXM6IHsgRVJSX0lOVkFMSURfQVJHX1RZUEUsIEVSUl9JTlZBTElEX1JFVFVSTl9WQUxVRSB9XG59ID0gcmVxdWlyZSgnLi4vLi4vb3Vycy9lcnJvcnMnKVxuY29uc3QgeyBkZXN0cm95ZXIgfSA9IHJlcXVpcmUoJy4vZGVzdHJveScpXG5jb25zdCBEdXBsZXggPSByZXF1aXJlKCcuL2R1cGxleCcpXG5jb25zdCBSZWFkYWJsZSA9IHJlcXVpcmUoJy4vcmVhZGFibGUnKVxuY29uc3QgV3JpdGFibGUgPSByZXF1aXJlKCcuL3dyaXRhYmxlJylcbmNvbnN0IHsgY3JlYXRlRGVmZXJyZWRQcm9taXNlIH0gPSByZXF1aXJlKCcuLi8uLi9vdXJzL3V0aWwnKVxuY29uc3QgZnJvbSA9IHJlcXVpcmUoJy4vZnJvbScpXG5jb25zdCBCbG9iID0gZ2xvYmFsVGhpcy5CbG9iIHx8IGJ1ZmZlck1vZHVsZS5CbG9iXG5jb25zdCBpc0Jsb2IgPVxuICB0eXBlb2YgQmxvYiAhPT0gJ3VuZGVmaW5lZCdcbiAgICA/IGZ1bmN0aW9uIGlzQmxvYihiKSB7XG4gICAgICAgIHJldHVybiBiIGluc3RhbmNlb2YgQmxvYlxuICAgICAgfVxuICAgIDogZnVuY3Rpb24gaXNCbG9iKGIpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG5jb25zdCBBYm9ydENvbnRyb2xsZXIgPSBnbG9iYWxUaGlzLkFib3J0Q29udHJvbGxlciB8fCByZXF1aXJlKCdhYm9ydC1jb250cm9sbGVyJykuQWJvcnRDb250cm9sbGVyXG5jb25zdCB7IEZ1bmN0aW9uUHJvdG90eXBlQ2FsbCB9ID0gcmVxdWlyZSgnLi4vLi4vb3Vycy9wcmltb3JkaWFscycpXG5cbi8vIFRoaXMgaXMgbmVlZGVkIGZvciBwcmUgbm9kZSAxNy5cbmNsYXNzIER1cGxleGlmeSBleHRlbmRzIER1cGxleCB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICBzdXBlcihvcHRpb25zKVxuXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL3B1bGwvMzQzODVcblxuICAgIGlmICgob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBvcHRpb25zLnJlYWRhYmxlKSA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUucmVhZGFibGUgPSBmYWxzZVxuICAgICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmRlZCA9IHRydWVcbiAgICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZCA9IHRydWVcbiAgICB9XG4gICAgaWYgKChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IG9wdGlvbnMud3JpdGFibGUpID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5fd3JpdGFibGVTdGF0ZS53cml0YWJsZSA9IGZhbHNlXG4gICAgICB0aGlzLl93cml0YWJsZVN0YXRlLmVuZGluZyA9IHRydWVcbiAgICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWQgPSB0cnVlXG4gICAgICB0aGlzLl93cml0YWJsZVN0YXRlLmZpbmlzaGVkID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBkdXBsZXhpZnkoYm9keSwgbmFtZSkge1xuICBpZiAoaXNEdXBsZXhOb2RlU3RyZWFtKGJvZHkpKSB7XG4gICAgcmV0dXJuIGJvZHlcbiAgfVxuICBpZiAoaXNSZWFkYWJsZU5vZGVTdHJlYW0oYm9keSkpIHtcbiAgICByZXR1cm4gX2R1cGxleGlmeSh7XG4gICAgICByZWFkYWJsZTogYm9keVxuICAgIH0pXG4gIH1cbiAgaWYgKGlzV3JpdGFibGVOb2RlU3RyZWFtKGJvZHkpKSB7XG4gICAgcmV0dXJuIF9kdXBsZXhpZnkoe1xuICAgICAgd3JpdGFibGU6IGJvZHlcbiAgICB9KVxuICB9XG4gIGlmIChpc05vZGVTdHJlYW0oYm9keSkpIHtcbiAgICByZXR1cm4gX2R1cGxleGlmeSh7XG4gICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICByZWFkYWJsZTogZmFsc2VcbiAgICB9KVxuICB9XG4gIGlmIChpc1JlYWRhYmxlU3RyZWFtKGJvZHkpKSB7XG4gICAgcmV0dXJuIF9kdXBsZXhpZnkoe1xuICAgICAgcmVhZGFibGU6IFJlYWRhYmxlLmZyb21XZWIoYm9keSlcbiAgICB9KVxuICB9XG4gIGlmIChpc1dyaXRhYmxlU3RyZWFtKGJvZHkpKSB7XG4gICAgcmV0dXJuIF9kdXBsZXhpZnkoe1xuICAgICAgd3JpdGFibGU6IFdyaXRhYmxlLmZyb21XZWIoYm9keSlcbiAgICB9KVxuICB9XG4gIGlmICh0eXBlb2YgYm9keSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNvbnN0IHsgdmFsdWUsIHdyaXRlLCBmaW5hbCwgZGVzdHJveSB9ID0gZnJvbUFzeW5jR2VuKGJvZHkpXG4gICAgaWYgKGlzSXRlcmFibGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gZnJvbShEdXBsZXhpZnksIHZhbHVlLCB7XG4gICAgICAgIC8vIFRPRE8gKHJvbmFnKTogaGlnaFdhdGVyTWFyaz9cbiAgICAgICAgb2JqZWN0TW9kZTogdHJ1ZSxcbiAgICAgICAgd3JpdGUsXG4gICAgICAgIGZpbmFsLFxuICAgICAgICBkZXN0cm95XG4gICAgICB9KVxuICAgIH1cbiAgICBjb25zdCB0aGVuID0gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHZhbHVlLnRoZW5cbiAgICBpZiAodHlwZW9mIHRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGxldCBkXG4gICAgICBjb25zdCBwcm9taXNlID0gRnVuY3Rpb25Qcm90b3R5cGVDYWxsKFxuICAgICAgICB0aGVuLFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgKHZhbCkgPT4ge1xuICAgICAgICAgIGlmICh2YWwgIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVSUl9JTlZBTElEX1JFVFVSTl9WQUxVRSgnbnVsbHknLCAnYm9keScsIHZhbClcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICBkZXN0cm95ZXIoZCwgZXJyKVxuICAgICAgICB9XG4gICAgICApXG4gICAgICByZXR1cm4gKGQgPSBuZXcgRHVwbGV4aWZ5KHtcbiAgICAgICAgLy8gVE9ETyAocm9uYWcpOiBoaWdoV2F0ZXJNYXJrP1xuICAgICAgICBvYmplY3RNb2RlOiB0cnVlLFxuICAgICAgICByZWFkYWJsZTogZmFsc2UsXG4gICAgICAgIHdyaXRlLFxuICAgICAgICBmaW5hbChjYikge1xuICAgICAgICAgIGZpbmFsKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGF3YWl0IHByb21pc2VcbiAgICAgICAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhjYiwgbnVsbClcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKGNiLCBlcnIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgZGVzdHJveVxuICAgICAgfSkpXG4gICAgfVxuICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9SRVRVUk5fVkFMVUUoJ0l0ZXJhYmxlLCBBc3luY0l0ZXJhYmxlIG9yIEFzeW5jRnVuY3Rpb24nLCBuYW1lLCB2YWx1ZSlcbiAgfVxuICBpZiAoaXNCbG9iKGJvZHkpKSB7XG4gICAgcmV0dXJuIGR1cGxleGlmeShib2R5LmFycmF5QnVmZmVyKCkpXG4gIH1cbiAgaWYgKGlzSXRlcmFibGUoYm9keSkpIHtcbiAgICByZXR1cm4gZnJvbShEdXBsZXhpZnksIGJvZHksIHtcbiAgICAgIC8vIFRPRE8gKHJvbmFnKTogaGlnaFdhdGVyTWFyaz9cbiAgICAgIG9iamVjdE1vZGU6IHRydWUsXG4gICAgICB3cml0YWJsZTogZmFsc2VcbiAgICB9KVxuICB9XG4gIGlmIChcbiAgICBpc1JlYWRhYmxlU3RyZWFtKGJvZHkgPT09IG51bGwgfHwgYm9keSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogYm9keS5yZWFkYWJsZSkgJiZcbiAgICBpc1dyaXRhYmxlU3RyZWFtKGJvZHkgPT09IG51bGwgfHwgYm9keSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogYm9keS53cml0YWJsZSlcbiAgKSB7XG4gICAgcmV0dXJuIER1cGxleGlmeS5mcm9tV2ViKGJvZHkpXG4gIH1cbiAgaWYgKFxuICAgIHR5cGVvZiAoYm9keSA9PT0gbnVsbCB8fCBib2R5ID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBib2R5LndyaXRhYmxlKSA9PT0gJ29iamVjdCcgfHxcbiAgICB0eXBlb2YgKGJvZHkgPT09IG51bGwgfHwgYm9keSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogYm9keS5yZWFkYWJsZSkgPT09ICdvYmplY3QnXG4gICkge1xuICAgIGNvbnN0IHJlYWRhYmxlID1cbiAgICAgIGJvZHkgIT09IG51bGwgJiYgYm9keSAhPT0gdW5kZWZpbmVkICYmIGJvZHkucmVhZGFibGVcbiAgICAgICAgPyBpc1JlYWRhYmxlTm9kZVN0cmVhbShib2R5ID09PSBudWxsIHx8IGJvZHkgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGJvZHkucmVhZGFibGUpXG4gICAgICAgICAgPyBib2R5ID09PSBudWxsIHx8IGJvZHkgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICAgIDogYm9keS5yZWFkYWJsZVxuICAgICAgICAgIDogZHVwbGV4aWZ5KGJvZHkucmVhZGFibGUpXG4gICAgICAgIDogdW5kZWZpbmVkXG4gICAgY29uc3Qgd3JpdGFibGUgPVxuICAgICAgYm9keSAhPT0gbnVsbCAmJiBib2R5ICE9PSB1bmRlZmluZWQgJiYgYm9keS53cml0YWJsZVxuICAgICAgICA/IGlzV3JpdGFibGVOb2RlU3RyZWFtKGJvZHkgPT09IG51bGwgfHwgYm9keSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogYm9keS53cml0YWJsZSlcbiAgICAgICAgICA/IGJvZHkgPT09IG51bGwgfHwgYm9keSA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgICAgOiBib2R5LndyaXRhYmxlXG4gICAgICAgICAgOiBkdXBsZXhpZnkoYm9keS53cml0YWJsZSlcbiAgICAgICAgOiB1bmRlZmluZWRcbiAgICByZXR1cm4gX2R1cGxleGlmeSh7XG4gICAgICByZWFkYWJsZSxcbiAgICAgIHdyaXRhYmxlXG4gICAgfSlcbiAgfVxuICBjb25zdCB0aGVuID0gYm9keSA9PT0gbnVsbCB8fCBib2R5ID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBib2R5LnRoZW5cbiAgaWYgKHR5cGVvZiB0aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgbGV0IGRcbiAgICBGdW5jdGlvblByb3RvdHlwZUNhbGwoXG4gICAgICB0aGVuLFxuICAgICAgYm9keSxcbiAgICAgICh2YWwpID0+IHtcbiAgICAgICAgaWYgKHZhbCAhPSBudWxsKSB7XG4gICAgICAgICAgZC5wdXNoKHZhbClcbiAgICAgICAgfVxuICAgICAgICBkLnB1c2gobnVsbClcbiAgICAgIH0sXG4gICAgICAoZXJyKSA9PiB7XG4gICAgICAgIGRlc3Ryb3llcihkLCBlcnIpXG4gICAgICB9XG4gICAgKVxuICAgIHJldHVybiAoZCA9IG5ldyBEdXBsZXhpZnkoe1xuICAgICAgb2JqZWN0TW9kZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgIHJlYWQoKSB7fVxuICAgIH0pKVxuICB9XG4gIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVFlQRShcbiAgICBuYW1lLFxuICAgIFtcbiAgICAgICdCbG9iJyxcbiAgICAgICdSZWFkYWJsZVN0cmVhbScsXG4gICAgICAnV3JpdGFibGVTdHJlYW0nLFxuICAgICAgJ1N0cmVhbScsXG4gICAgICAnSXRlcmFibGUnLFxuICAgICAgJ0FzeW5jSXRlcmFibGUnLFxuICAgICAgJ0Z1bmN0aW9uJyxcbiAgICAgICd7IHJlYWRhYmxlLCB3cml0YWJsZSB9IHBhaXInLFxuICAgICAgJ1Byb21pc2UnXG4gICAgXSxcbiAgICBib2R5XG4gIClcbn1cbmZ1bmN0aW9uIGZyb21Bc3luY0dlbihmbikge1xuICBsZXQgeyBwcm9taXNlLCByZXNvbHZlIH0gPSBjcmVhdGVEZWZlcnJlZFByb21pc2UoKVxuICBjb25zdCBhYyA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuICBjb25zdCBzaWduYWwgPSBhYy5zaWduYWxcbiAgY29uc3QgdmFsdWUgPSBmbihcbiAgICAoYXN5bmMgZnVuY3Rpb24qICgpIHtcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIGNvbnN0IF9wcm9taXNlID0gcHJvbWlzZVxuICAgICAgICBwcm9taXNlID0gbnVsbFxuICAgICAgICBjb25zdCB7IGNodW5rLCBkb25lLCBjYiB9ID0gYXdhaXQgX3Byb21pc2VcbiAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhjYilcbiAgICAgICAgaWYgKGRvbmUpIHJldHVyblxuICAgICAgICBpZiAoc2lnbmFsLmFib3J0ZWQpXG4gICAgICAgICAgdGhyb3cgbmV3IEFib3J0RXJyb3IodW5kZWZpbmVkLCB7XG4gICAgICAgICAgICBjYXVzZTogc2lnbmFsLnJlYXNvblxuICAgICAgICAgIH0pXG4gICAgICAgIDsoeyBwcm9taXNlLCByZXNvbHZlIH0gPSBjcmVhdGVEZWZlcnJlZFByb21pc2UoKSlcbiAgICAgICAgeWllbGQgY2h1bmtcbiAgICAgIH1cbiAgICB9KSgpLFxuICAgIHtcbiAgICAgIHNpZ25hbFxuICAgIH1cbiAgKVxuICByZXR1cm4ge1xuICAgIHZhbHVlLFxuICAgIHdyaXRlKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgICAgIGNvbnN0IF9yZXNvbHZlID0gcmVzb2x2ZVxuICAgICAgcmVzb2x2ZSA9IG51bGxcbiAgICAgIF9yZXNvbHZlKHtcbiAgICAgICAgY2h1bmssXG4gICAgICAgIGRvbmU6IGZhbHNlLFxuICAgICAgICBjYlxuICAgICAgfSlcbiAgICB9LFxuICAgIGZpbmFsKGNiKSB7XG4gICAgICBjb25zdCBfcmVzb2x2ZSA9IHJlc29sdmVcbiAgICAgIHJlc29sdmUgPSBudWxsXG4gICAgICBfcmVzb2x2ZSh7XG4gICAgICAgIGRvbmU6IHRydWUsXG4gICAgICAgIGNiXG4gICAgICB9KVxuICAgIH0sXG4gICAgZGVzdHJveShlcnIsIGNiKSB7XG4gICAgICBhYy5hYm9ydCgpXG4gICAgICBjYihlcnIpXG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBfZHVwbGV4aWZ5KHBhaXIpIHtcbiAgY29uc3QgciA9IHBhaXIucmVhZGFibGUgJiYgdHlwZW9mIHBhaXIucmVhZGFibGUucmVhZCAhPT0gJ2Z1bmN0aW9uJyA/IFJlYWRhYmxlLndyYXAocGFpci5yZWFkYWJsZSkgOiBwYWlyLnJlYWRhYmxlXG4gIGNvbnN0IHcgPSBwYWlyLndyaXRhYmxlXG4gIGxldCByZWFkYWJsZSA9ICEhaXNSZWFkYWJsZShyKVxuICBsZXQgd3JpdGFibGUgPSAhIWlzV3JpdGFibGUodylcbiAgbGV0IG9uZHJhaW5cbiAgbGV0IG9uZmluaXNoXG4gIGxldCBvbnJlYWRhYmxlXG4gIGxldCBvbmNsb3NlXG4gIGxldCBkXG4gIGZ1bmN0aW9uIG9uZmluaXNoZWQoZXJyKSB7XG4gICAgY29uc3QgY2IgPSBvbmNsb3NlXG4gICAgb25jbG9zZSA9IG51bGxcbiAgICBpZiAoY2IpIHtcbiAgICAgIGNiKGVycilcbiAgICB9IGVsc2UgaWYgKGVycikge1xuICAgICAgZC5kZXN0cm95KGVycilcbiAgICB9XG4gIH1cblxuICAvLyBUT0RPKHJvbmFnKTogQXZvaWQgZG91YmxlIGJ1ZmZlcmluZy5cbiAgLy8gSW1wbGVtZW50IFdyaXRhYmxlL1JlYWRhYmxlL0R1cGxleCB0cmFpdHMuXG4gIC8vIFNlZSwgaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL3B1bGwvMzM1MTUuXG4gIGQgPSBuZXcgRHVwbGV4aWZ5KHtcbiAgICAvLyBUT0RPIChyb25hZyk6IGhpZ2hXYXRlck1hcms/XG4gICAgcmVhZGFibGVPYmplY3RNb2RlOiAhIShyICE9PSBudWxsICYmIHIgIT09IHVuZGVmaW5lZCAmJiByLnJlYWRhYmxlT2JqZWN0TW9kZSksXG4gICAgd3JpdGFibGVPYmplY3RNb2RlOiAhISh3ICE9PSBudWxsICYmIHcgIT09IHVuZGVmaW5lZCAmJiB3LndyaXRhYmxlT2JqZWN0TW9kZSksXG4gICAgcmVhZGFibGUsXG4gICAgd3JpdGFibGVcbiAgfSlcbiAgaWYgKHdyaXRhYmxlKSB7XG4gICAgZW9zKHcsIChlcnIpID0+IHtcbiAgICAgIHdyaXRhYmxlID0gZmFsc2VcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgZGVzdHJveWVyKHIsIGVycilcbiAgICAgIH1cbiAgICAgIG9uZmluaXNoZWQoZXJyKVxuICAgIH0pXG4gICAgZC5fd3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYWxsYmFjaykge1xuICAgICAgaWYgKHcud3JpdGUoY2h1bmssIGVuY29kaW5nKSkge1xuICAgICAgICBjYWxsYmFjaygpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbmRyYWluID0gY2FsbGJhY2tcbiAgICAgIH1cbiAgICB9XG4gICAgZC5fZmluYWwgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgICAgIHcuZW5kKClcbiAgICAgIG9uZmluaXNoID0gY2FsbGJhY2tcbiAgICB9XG4gICAgdy5vbignZHJhaW4nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAob25kcmFpbikge1xuICAgICAgICBjb25zdCBjYiA9IG9uZHJhaW5cbiAgICAgICAgb25kcmFpbiA9IG51bGxcbiAgICAgICAgY2IoKVxuICAgICAgfVxuICAgIH0pXG4gICAgdy5vbignZmluaXNoJywgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKG9uZmluaXNoKSB7XG4gICAgICAgIGNvbnN0IGNiID0gb25maW5pc2hcbiAgICAgICAgb25maW5pc2ggPSBudWxsXG4gICAgICAgIGNiKClcbiAgICAgIH1cbiAgICB9KVxuICB9XG4gIGlmIChyZWFkYWJsZSkge1xuICAgIGVvcyhyLCAoZXJyKSA9PiB7XG4gICAgICByZWFkYWJsZSA9IGZhbHNlXG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIGRlc3Ryb3llcihyLCBlcnIpXG4gICAgICB9XG4gICAgICBvbmZpbmlzaGVkKGVycilcbiAgICB9KVxuICAgIHIub24oJ3JlYWRhYmxlJywgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKG9ucmVhZGFibGUpIHtcbiAgICAgICAgY29uc3QgY2IgPSBvbnJlYWRhYmxlXG4gICAgICAgIG9ucmVhZGFibGUgPSBudWxsXG4gICAgICAgIGNiKClcbiAgICAgIH1cbiAgICB9KVxuICAgIHIub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGQucHVzaChudWxsKVxuICAgIH0pXG4gICAgZC5fcmVhZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIGNvbnN0IGJ1ZiA9IHIucmVhZCgpXG4gICAgICAgIGlmIChidWYgPT09IG51bGwpIHtcbiAgICAgICAgICBvbnJlYWRhYmxlID0gZC5fcmVhZFxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGlmICghZC5wdXNoKGJ1ZikpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBkLl9kZXN0cm95ID0gZnVuY3Rpb24gKGVyciwgY2FsbGJhY2spIHtcbiAgICBpZiAoIWVyciAmJiBvbmNsb3NlICE9PSBudWxsKSB7XG4gICAgICBlcnIgPSBuZXcgQWJvcnRFcnJvcigpXG4gICAgfVxuICAgIG9ucmVhZGFibGUgPSBudWxsXG4gICAgb25kcmFpbiA9IG51bGxcbiAgICBvbmZpbmlzaCA9IG51bGxcbiAgICBpZiAob25jbG9zZSA9PT0gbnVsbCkge1xuICAgICAgY2FsbGJhY2soZXJyKVxuICAgIH0gZWxzZSB7XG4gICAgICBvbmNsb3NlID0gY2FsbGJhY2tcbiAgICAgIGRlc3Ryb3llcih3LCBlcnIpXG4gICAgICBkZXN0cm95ZXIociwgZXJyKVxuICAgIH1cbiAgfVxuICByZXR1cm4gZFxufVxuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbi8vIGEgZHVwbGV4IHN0cmVhbSBpcyBqdXN0IGEgc3RyZWFtIHRoYXQgaXMgYm90aCByZWFkYWJsZSBhbmQgd3JpdGFibGUuXG4vLyBTaW5jZSBKUyBkb2Vzbid0IGhhdmUgbXVsdGlwbGUgcHJvdG90eXBlIGluaGVyaXRhbmNlLCB0aGlzIGNsYXNzXG4vLyBwcm90b3R5cGljYWxseSBpbmhlcml0cyBmcm9tIFJlYWRhYmxlLCBhbmQgdGhlbiBwYXJhc2l0aWNhbGx5IGZyb21cbi8vIFdyaXRhYmxlLlxuXG4ndXNlIHN0cmljdCdcblxuY29uc3Qge1xuICBPYmplY3REZWZpbmVQcm9wZXJ0aWVzLFxuICBPYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsXG4gIE9iamVjdEtleXMsXG4gIE9iamVjdFNldFByb3RvdHlwZU9mXG59ID0gcmVxdWlyZSgnLi4vLi4vb3Vycy9wcmltb3JkaWFscycpXG5tb2R1bGUuZXhwb3J0cyA9IER1cGxleFxuY29uc3QgUmVhZGFibGUgPSByZXF1aXJlKCcuL3JlYWRhYmxlJylcbmNvbnN0IFdyaXRhYmxlID0gcmVxdWlyZSgnLi93cml0YWJsZScpXG5PYmplY3RTZXRQcm90b3R5cGVPZihEdXBsZXgucHJvdG90eXBlLCBSZWFkYWJsZS5wcm90b3R5cGUpXG5PYmplY3RTZXRQcm90b3R5cGVPZihEdXBsZXgsIFJlYWRhYmxlKVxue1xuICBjb25zdCBrZXlzID0gT2JqZWN0S2V5cyhXcml0YWJsZS5wcm90b3R5cGUpXG4gIC8vIEFsbG93IHRoZSBrZXlzIGFycmF5IHRvIGJlIEdDJ2VkLlxuICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBtZXRob2QgPSBrZXlzW2ldXG4gICAgaWYgKCFEdXBsZXgucHJvdG90eXBlW21ldGhvZF0pIER1cGxleC5wcm90b3R5cGVbbWV0aG9kXSA9IFdyaXRhYmxlLnByb3RvdHlwZVttZXRob2RdXG4gIH1cbn1cbmZ1bmN0aW9uIER1cGxleChvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBEdXBsZXgpKSByZXR1cm4gbmV3IER1cGxleChvcHRpb25zKVxuICBSZWFkYWJsZS5jYWxsKHRoaXMsIG9wdGlvbnMpXG4gIFdyaXRhYmxlLmNhbGwodGhpcywgb3B0aW9ucylcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICB0aGlzLmFsbG93SGFsZk9wZW4gPSBvcHRpb25zLmFsbG93SGFsZk9wZW4gIT09IGZhbHNlXG4gICAgaWYgKG9wdGlvbnMucmVhZGFibGUgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLnJlYWRhYmxlID0gZmFsc2VcbiAgICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kZWQgPSB0cnVlXG4gICAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQgPSB0cnVlXG4gICAgfVxuICAgIGlmIChvcHRpb25zLndyaXRhYmxlID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5fd3JpdGFibGVTdGF0ZS53cml0YWJsZSA9IGZhbHNlXG4gICAgICB0aGlzLl93cml0YWJsZVN0YXRlLmVuZGluZyA9IHRydWVcbiAgICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWQgPSB0cnVlXG4gICAgICB0aGlzLl93cml0YWJsZVN0YXRlLmZpbmlzaGVkID0gdHJ1ZVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aGlzLmFsbG93SGFsZk9wZW4gPSB0cnVlXG4gIH1cbn1cbk9iamVjdERlZmluZVByb3BlcnRpZXMoRHVwbGV4LnByb3RvdHlwZSwge1xuICB3cml0YWJsZToge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICAuLi5PYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoV3JpdGFibGUucHJvdG90eXBlLCAnd3JpdGFibGUnKVxuICB9LFxuICB3cml0YWJsZUhpZ2hXYXRlck1hcms6IHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgLi4uT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFdyaXRhYmxlLnByb3RvdHlwZSwgJ3dyaXRhYmxlSGlnaFdhdGVyTWFyaycpXG4gIH0sXG4gIHdyaXRhYmxlT2JqZWN0TW9kZToge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICAuLi5PYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoV3JpdGFibGUucHJvdG90eXBlLCAnd3JpdGFibGVPYmplY3RNb2RlJylcbiAgfSxcbiAgd3JpdGFibGVCdWZmZXI6IHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgLi4uT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFdyaXRhYmxlLnByb3RvdHlwZSwgJ3dyaXRhYmxlQnVmZmVyJylcbiAgfSxcbiAgd3JpdGFibGVMZW5ndGg6IHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgLi4uT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFdyaXRhYmxlLnByb3RvdHlwZSwgJ3dyaXRhYmxlTGVuZ3RoJylcbiAgfSxcbiAgd3JpdGFibGVGaW5pc2hlZDoge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICAuLi5PYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoV3JpdGFibGUucHJvdG90eXBlLCAnd3JpdGFibGVGaW5pc2hlZCcpXG4gIH0sXG4gIHdyaXRhYmxlQ29ya2VkOiB7XG4gICAgX19wcm90b19fOiBudWxsLFxuICAgIC4uLk9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcihXcml0YWJsZS5wcm90b3R5cGUsICd3cml0YWJsZUNvcmtlZCcpXG4gIH0sXG4gIHdyaXRhYmxlRW5kZWQ6IHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgLi4uT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFdyaXRhYmxlLnByb3RvdHlwZSwgJ3dyaXRhYmxlRW5kZWQnKVxuICB9LFxuICB3cml0YWJsZU5lZWREcmFpbjoge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICAuLi5PYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoV3JpdGFibGUucHJvdG90eXBlLCAnd3JpdGFibGVOZWVkRHJhaW4nKVxuICB9LFxuICBkZXN0cm95ZWQ6IHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgZ2V0KCkge1xuICAgICAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZCB8fCB0aGlzLl93cml0YWJsZVN0YXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgJiYgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWRcbiAgICB9LFxuICAgIHNldCh2YWx1ZSkge1xuICAgICAgLy8gQmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdGhlIHVzZXIgaXMgZXhwbGljaXRseVxuICAgICAgLy8gbWFuYWdpbmcgZGVzdHJveWVkLlxuICAgICAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUgJiYgdGhpcy5fd3JpdGFibGVTdGF0ZSkge1xuICAgICAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCA9IHZhbHVlXG4gICAgICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkID0gdmFsdWVcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0pXG5sZXQgd2ViU3RyZWFtc0FkYXB0ZXJzXG5cbi8vIExhenkgdG8gYXZvaWQgY2lyY3VsYXIgcmVmZXJlbmNlc1xuZnVuY3Rpb24gbGF6eVdlYlN0cmVhbXMoKSB7XG4gIGlmICh3ZWJTdHJlYW1zQWRhcHRlcnMgPT09IHVuZGVmaW5lZCkgd2ViU3RyZWFtc0FkYXB0ZXJzID0ge31cbiAgcmV0dXJuIHdlYlN0cmVhbXNBZGFwdGVyc1xufVxuRHVwbGV4LmZyb21XZWIgPSBmdW5jdGlvbiAocGFpciwgb3B0aW9ucykge1xuICByZXR1cm4gbGF6eVdlYlN0cmVhbXMoKS5uZXdTdHJlYW1EdXBsZXhGcm9tUmVhZGFibGVXcml0YWJsZVBhaXIocGFpciwgb3B0aW9ucylcbn1cbkR1cGxleC50b1dlYiA9IGZ1bmN0aW9uIChkdXBsZXgpIHtcbiAgcmV0dXJuIGxhenlXZWJTdHJlYW1zKCkubmV3UmVhZGFibGVXcml0YWJsZVBhaXJGcm9tRHVwbGV4KGR1cGxleClcbn1cbmxldCBkdXBsZXhpZnlcbkR1cGxleC5mcm9tID0gZnVuY3Rpb24gKGJvZHkpIHtcbiAgaWYgKCFkdXBsZXhpZnkpIHtcbiAgICBkdXBsZXhpZnkgPSByZXF1aXJlKCcuL2R1cGxleGlmeScpXG4gIH1cbiAgcmV0dXJuIGR1cGxleGlmeShib2R5LCAnYm9keScpXG59XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gYSB0cmFuc2Zvcm0gc3RyZWFtIGlzIGEgcmVhZGFibGUvd3JpdGFibGUgc3RyZWFtIHdoZXJlIHlvdSBkb1xuLy8gc29tZXRoaW5nIHdpdGggdGhlIGRhdGEuICBTb21ldGltZXMgaXQncyBjYWxsZWQgYSBcImZpbHRlclwiLFxuLy8gYnV0IHRoYXQncyBub3QgYSBncmVhdCBuYW1lIGZvciBpdCwgc2luY2UgdGhhdCBpbXBsaWVzIGEgdGhpbmcgd2hlcmVcbi8vIHNvbWUgYml0cyBwYXNzIHRocm91Z2gsIGFuZCBvdGhlcnMgYXJlIHNpbXBseSBpZ25vcmVkLiAgKFRoYXQgd291bGRcbi8vIGJlIGEgdmFsaWQgZXhhbXBsZSBvZiBhIHRyYW5zZm9ybSwgb2YgY291cnNlLilcbi8vXG4vLyBXaGlsZSB0aGUgb3V0cHV0IGlzIGNhdXNhbGx5IHJlbGF0ZWQgdG8gdGhlIGlucHV0LCBpdCdzIG5vdCBhXG4vLyBuZWNlc3NhcmlseSBzeW1tZXRyaWMgb3Igc3luY2hyb25vdXMgdHJhbnNmb3JtYXRpb24uICBGb3IgZXhhbXBsZSxcbi8vIGEgemxpYiBzdHJlYW0gbWlnaHQgdGFrZSBtdWx0aXBsZSBwbGFpbi10ZXh0IHdyaXRlcygpLCBhbmQgdGhlblxuLy8gZW1pdCBhIHNpbmdsZSBjb21wcmVzc2VkIGNodW5rIHNvbWUgdGltZSBpbiB0aGUgZnV0dXJlLlxuLy9cbi8vIEhlcmUncyBob3cgdGhpcyB3b3Jrczpcbi8vXG4vLyBUaGUgVHJhbnNmb3JtIHN0cmVhbSBoYXMgYWxsIHRoZSBhc3BlY3RzIG9mIHRoZSByZWFkYWJsZSBhbmQgd3JpdGFibGVcbi8vIHN0cmVhbSBjbGFzc2VzLiAgV2hlbiB5b3Ugd3JpdGUoY2h1bmspLCB0aGF0IGNhbGxzIF93cml0ZShjaHVuayxjYilcbi8vIGludGVybmFsbHksIGFuZCByZXR1cm5zIGZhbHNlIGlmIHRoZXJlJ3MgYSBsb3Qgb2YgcGVuZGluZyB3cml0ZXNcbi8vIGJ1ZmZlcmVkIHVwLiAgV2hlbiB5b3UgY2FsbCByZWFkKCksIHRoYXQgY2FsbHMgX3JlYWQobikgdW50aWxcbi8vIHRoZXJlJ3MgZW5vdWdoIHBlbmRpbmcgcmVhZGFibGUgZGF0YSBidWZmZXJlZCB1cC5cbi8vXG4vLyBJbiBhIHRyYW5zZm9ybSBzdHJlYW0sIHRoZSB3cml0dGVuIGRhdGEgaXMgcGxhY2VkIGluIGEgYnVmZmVyLiAgV2hlblxuLy8gX3JlYWQobikgaXMgY2FsbGVkLCBpdCB0cmFuc2Zvcm1zIHRoZSBxdWV1ZWQgdXAgZGF0YSwgY2FsbGluZyB0aGVcbi8vIGJ1ZmZlcmVkIF93cml0ZSBjYidzIGFzIGl0IGNvbnN1bWVzIGNodW5rcy4gIElmIGNvbnN1bWluZyBhIHNpbmdsZVxuLy8gd3JpdHRlbiBjaHVuayB3b3VsZCByZXN1bHQgaW4gbXVsdGlwbGUgb3V0cHV0IGNodW5rcywgdGhlbiB0aGUgZmlyc3Rcbi8vIG91dHB1dHRlZCBiaXQgY2FsbHMgdGhlIHJlYWRjYiwgYW5kIHN1YnNlcXVlbnQgY2h1bmtzIGp1c3QgZ28gaW50b1xuLy8gdGhlIHJlYWQgYnVmZmVyLCBhbmQgd2lsbCBjYXVzZSBpdCB0byBlbWl0ICdyZWFkYWJsZScgaWYgbmVjZXNzYXJ5LlxuLy9cbi8vIFRoaXMgd2F5LCBiYWNrLXByZXNzdXJlIGlzIGFjdHVhbGx5IGRldGVybWluZWQgYnkgdGhlIHJlYWRpbmcgc2lkZSxcbi8vIHNpbmNlIF9yZWFkIGhhcyB0byBiZSBjYWxsZWQgdG8gc3RhcnQgcHJvY2Vzc2luZyBhIG5ldyBjaHVuay4gIEhvd2V2ZXIsXG4vLyBhIHBhdGhvbG9naWNhbCBpbmZsYXRlIHR5cGUgb2YgdHJhbnNmb3JtIGNhbiBjYXVzZSBleGNlc3NpdmUgYnVmZmVyaW5nXG4vLyBoZXJlLiAgRm9yIGV4YW1wbGUsIGltYWdpbmUgYSBzdHJlYW0gd2hlcmUgZXZlcnkgYnl0ZSBvZiBpbnB1dCBpc1xuLy8gaW50ZXJwcmV0ZWQgYXMgYW4gaW50ZWdlciBmcm9tIDAtMjU1LCBhbmQgdGhlbiByZXN1bHRzIGluIHRoYXQgbWFueVxuLy8gYnl0ZXMgb2Ygb3V0cHV0LiAgV3JpdGluZyB0aGUgNCBieXRlcyB7ZmYsZmYsZmYsZmZ9IHdvdWxkIHJlc3VsdCBpblxuLy8gMWtiIG9mIGRhdGEgYmVpbmcgb3V0cHV0LiAgSW4gdGhpcyBjYXNlLCB5b3UgY291bGQgd3JpdGUgYSB2ZXJ5IHNtYWxsXG4vLyBhbW91bnQgb2YgaW5wdXQsIGFuZCBlbmQgdXAgd2l0aCBhIHZlcnkgbGFyZ2UgYW1vdW50IG9mIG91dHB1dC4gIEluXG4vLyBzdWNoIGEgcGF0aG9sb2dpY2FsIGluZmxhdGluZyBtZWNoYW5pc20sIHRoZXJlJ2QgYmUgbm8gd2F5IHRvIHRlbGxcbi8vIHRoZSBzeXN0ZW0gdG8gc3RvcCBkb2luZyB0aGUgdHJhbnNmb3JtLiAgQSBzaW5nbGUgNE1CIHdyaXRlIGNvdWxkXG4vLyBjYXVzZSB0aGUgc3lzdGVtIHRvIHJ1biBvdXQgb2YgbWVtb3J5LlxuLy9cbi8vIEhvd2V2ZXIsIGV2ZW4gaW4gc3VjaCBhIHBhdGhvbG9naWNhbCBjYXNlLCBvbmx5IGEgc2luZ2xlIHdyaXR0ZW4gY2h1bmtcbi8vIHdvdWxkIGJlIGNvbnN1bWVkLCBhbmQgdGhlbiB0aGUgcmVzdCB3b3VsZCB3YWl0ICh1bi10cmFuc2Zvcm1lZCkgdW50aWxcbi8vIHRoZSByZXN1bHRzIG9mIHRoZSBwcmV2aW91cyB0cmFuc2Zvcm1lZCBjaHVuayB3ZXJlIGNvbnN1bWVkLlxuXG4ndXNlIHN0cmljdCdcblxuY29uc3QgeyBPYmplY3RTZXRQcm90b3R5cGVPZiwgU3ltYm9sIH0gPSByZXF1aXJlKCcuLi8uLi9vdXJzL3ByaW1vcmRpYWxzJylcbm1vZHVsZS5leHBvcnRzID0gVHJhbnNmb3JtXG5jb25zdCB7IEVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVEIH0gPSByZXF1aXJlKCcuLi8uLi9vdXJzL2Vycm9ycycpLmNvZGVzXG5jb25zdCBEdXBsZXggPSByZXF1aXJlKCcuL2R1cGxleCcpXG5jb25zdCB7IGdldEhpZ2hXYXRlck1hcmsgfSA9IHJlcXVpcmUoJy4vc3RhdGUnKVxuT2JqZWN0U2V0UHJvdG90eXBlT2YoVHJhbnNmb3JtLnByb3RvdHlwZSwgRHVwbGV4LnByb3RvdHlwZSlcbk9iamVjdFNldFByb3RvdHlwZU9mKFRyYW5zZm9ybSwgRHVwbGV4KVxuY29uc3Qga0NhbGxiYWNrID0gU3ltYm9sKCdrQ2FsbGJhY2snKVxuZnVuY3Rpb24gVHJhbnNmb3JtKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFRyYW5zZm9ybSkpIHJldHVybiBuZXcgVHJhbnNmb3JtKG9wdGlvbnMpXG5cbiAgLy8gVE9ETyAocm9uYWcpOiBUaGlzIHNob3VsZCBwcmVmZXJhYmx5IGFsd2F5cyBiZVxuICAvLyBhcHBsaWVkIGJ1dCB3b3VsZCBiZSBzZW12ZXItbWFqb3IuIE9yIGV2ZW4gYmV0dGVyO1xuICAvLyBtYWtlIFRyYW5zZm9ybSBhIFJlYWRhYmxlIHdpdGggdGhlIFdyaXRhYmxlIGludGVyZmFjZS5cbiAgY29uc3QgcmVhZGFibGVIaWdoV2F0ZXJNYXJrID0gb3B0aW9ucyA/IGdldEhpZ2hXYXRlck1hcmsodGhpcywgb3B0aW9ucywgJ3JlYWRhYmxlSGlnaFdhdGVyTWFyaycsIHRydWUpIDogbnVsbFxuICBpZiAocmVhZGFibGVIaWdoV2F0ZXJNYXJrID09PSAwKSB7XG4gICAgLy8gQSBEdXBsZXggd2lsbCBidWZmZXIgYm90aCBvbiB0aGUgd3JpdGFibGUgYW5kIHJlYWRhYmxlIHNpZGUgd2hpbGVcbiAgICAvLyBhIFRyYW5zZm9ybSBqdXN0IHdhbnRzIHRvIGJ1ZmZlciBod20gbnVtYmVyIG9mIGVsZW1lbnRzLiBUbyBhdm9pZFxuICAgIC8vIGJ1ZmZlcmluZyB0d2ljZSB3ZSBkaXNhYmxlIGJ1ZmZlcmluZyBvbiB0aGUgd3JpdGFibGUgc2lkZS5cbiAgICBvcHRpb25zID0ge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGhpZ2hXYXRlck1hcms6IG51bGwsXG4gICAgICByZWFkYWJsZUhpZ2hXYXRlck1hcmssXG4gICAgICAvLyBUT0RPIChyb25hZyk6IDAgaXMgbm90IG9wdGltYWwgc2luY2Ugd2UgaGF2ZVxuICAgICAgLy8gYSBcImJ1Z1wiIHdoZXJlIHdlIGNoZWNrIG5lZWREcmFpbiBiZWZvcmUgY2FsbGluZyBfd3JpdGUgYW5kIG5vdCBhZnRlci5cbiAgICAgIC8vIFJlZnM6IGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9wdWxsLzMyODg3XG4gICAgICAvLyBSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvcHVsbC8zNTk0MVxuICAgICAgd3JpdGFibGVIaWdoV2F0ZXJNYXJrOiBvcHRpb25zLndyaXRhYmxlSGlnaFdhdGVyTWFyayB8fCAwXG4gICAgfVxuICB9XG4gIER1cGxleC5jYWxsKHRoaXMsIG9wdGlvbnMpXG5cbiAgLy8gV2UgaGF2ZSBpbXBsZW1lbnRlZCB0aGUgX3JlYWQgbWV0aG9kLCBhbmQgZG9uZSB0aGUgb3RoZXIgdGhpbmdzXG4gIC8vIHRoYXQgUmVhZGFibGUgd2FudHMgYmVmb3JlIHRoZSBmaXJzdCBfcmVhZCBjYWxsLCBzbyB1bnNldCB0aGVcbiAgLy8gc3luYyBndWFyZCBmbGFnLlxuICB0aGlzLl9yZWFkYWJsZVN0YXRlLnN5bmMgPSBmYWxzZVxuICB0aGlzW2tDYWxsYmFja10gPSBudWxsXG4gIGlmIChvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLnRyYW5zZm9ybSA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fdHJhbnNmb3JtID0gb3B0aW9ucy50cmFuc2Zvcm1cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuZmx1c2ggPT09ICdmdW5jdGlvbicpIHRoaXMuX2ZsdXNoID0gb3B0aW9ucy5mbHVzaFxuICB9XG5cbiAgLy8gV2hlbiB0aGUgd3JpdGFibGUgc2lkZSBmaW5pc2hlcywgdGhlbiBmbHVzaCBvdXQgYW55dGhpbmcgcmVtYWluaW5nLlxuICAvLyBCYWNrd2FyZHMgY29tcGF0LiBTb21lIFRyYW5zZm9ybSBzdHJlYW1zIGluY29ycmVjdGx5IGltcGxlbWVudCBfZmluYWxcbiAgLy8gaW5zdGVhZCBvZiBvciBpbiBhZGRpdGlvbiB0byBfZmx1c2guIEJ5IHVzaW5nICdwcmVmaW5pc2gnIGluc3RlYWQgb2ZcbiAgLy8gaW1wbGVtZW50aW5nIF9maW5hbCB3ZSBjb250aW51ZSBzdXBwb3J0aW5nIHRoaXMgdW5mb3J0dW5hdGUgdXNlIGNhc2UuXG4gIHRoaXMub24oJ3ByZWZpbmlzaCcsIHByZWZpbmlzaClcbn1cbmZ1bmN0aW9uIGZpbmFsKGNiKSB7XG4gIGlmICh0eXBlb2YgdGhpcy5fZmx1c2ggPT09ICdmdW5jdGlvbicgJiYgIXRoaXMuZGVzdHJveWVkKSB7XG4gICAgdGhpcy5fZmx1c2goKGVyLCBkYXRhKSA9PiB7XG4gICAgICBpZiAoZXIpIHtcbiAgICAgICAgaWYgKGNiKSB7XG4gICAgICAgICAgY2IoZXIpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5kZXN0cm95KGVyKVxuICAgICAgICB9XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKGRhdGEgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLnB1c2goZGF0YSlcbiAgICAgIH1cbiAgICAgIHRoaXMucHVzaChudWxsKVxuICAgICAgaWYgKGNiKSB7XG4gICAgICAgIGNiKClcbiAgICAgIH1cbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIHRoaXMucHVzaChudWxsKVxuICAgIGlmIChjYikge1xuICAgICAgY2IoKVxuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gcHJlZmluaXNoKCkge1xuICBpZiAodGhpcy5fZmluYWwgIT09IGZpbmFsKSB7XG4gICAgZmluYWwuY2FsbCh0aGlzKVxuICB9XG59XG5UcmFuc2Zvcm0ucHJvdG90eXBlLl9maW5hbCA9IGZpbmFsXG5UcmFuc2Zvcm0ucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYWxsYmFjaykge1xuICB0aHJvdyBuZXcgRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQoJ190cmFuc2Zvcm0oKScpXG59XG5UcmFuc2Zvcm0ucHJvdG90eXBlLl93cml0ZSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IHJTdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGVcbiAgY29uc3Qgd1N0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZVxuICBjb25zdCBsZW5ndGggPSByU3RhdGUubGVuZ3RoXG4gIHRoaXMuX3RyYW5zZm9ybShjaHVuaywgZW5jb2RpbmcsIChlcnIsIHZhbCkgPT4ge1xuICAgIGlmIChlcnIpIHtcbiAgICAgIGNhbGxiYWNrKGVycilcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAodmFsICE9IG51bGwpIHtcbiAgICAgIHRoaXMucHVzaCh2YWwpXG4gICAgfVxuICAgIGlmIChcbiAgICAgIHdTdGF0ZS5lbmRlZCB8fFxuICAgICAgLy8gQmFja3dhcmRzIGNvbXBhdC5cbiAgICAgIGxlbmd0aCA9PT0gclN0YXRlLmxlbmd0aCB8fFxuICAgICAgLy8gQmFja3dhcmRzIGNvbXBhdC5cbiAgICAgIHJTdGF0ZS5sZW5ndGggPCByU3RhdGUuaGlnaFdhdGVyTWFya1xuICAgICkge1xuICAgICAgY2FsbGJhY2soKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzW2tDYWxsYmFja10gPSBjYWxsYmFja1xuICAgIH1cbiAgfSlcbn1cblRyYW5zZm9ybS5wcm90b3R5cGUuX3JlYWQgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzW2tDYWxsYmFja10pIHtcbiAgICBjb25zdCBjYWxsYmFjayA9IHRoaXNba0NhbGxiYWNrXVxuICAgIHRoaXNba0NhbGxiYWNrXSA9IG51bGxcbiAgICBjYWxsYmFjaygpXG4gIH1cbn1cbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4vLyBhIHBhc3N0aHJvdWdoIHN0cmVhbS5cbi8vIGJhc2ljYWxseSBqdXN0IHRoZSBtb3N0IG1pbmltYWwgc29ydCBvZiBUcmFuc2Zvcm0gc3RyZWFtLlxuLy8gRXZlcnkgd3JpdHRlbiBjaHVuayBnZXRzIG91dHB1dCBhcy1pcy5cblxuJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHsgT2JqZWN0U2V0UHJvdG90eXBlT2YgfSA9IHJlcXVpcmUoJy4uLy4uL291cnMvcHJpbW9yZGlhbHMnKVxubW9kdWxlLmV4cG9ydHMgPSBQYXNzVGhyb3VnaFxuY29uc3QgVHJhbnNmb3JtID0gcmVxdWlyZSgnLi90cmFuc2Zvcm0nKVxuT2JqZWN0U2V0UHJvdG90eXBlT2YoUGFzc1Rocm91Z2gucHJvdG90eXBlLCBUcmFuc2Zvcm0ucHJvdG90eXBlKVxuT2JqZWN0U2V0UHJvdG90eXBlT2YoUGFzc1Rocm91Z2gsIFRyYW5zZm9ybSlcbmZ1bmN0aW9uIFBhc3NUaHJvdWdoKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFBhc3NUaHJvdWdoKSkgcmV0dXJuIG5ldyBQYXNzVGhyb3VnaChvcHRpb25zKVxuICBUcmFuc2Zvcm0uY2FsbCh0aGlzLCBvcHRpb25zKVxufVxuUGFzc1Rocm91Z2gucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBjYihudWxsLCBjaHVuaylcbn1cbiIsIi8qIHJlcGxhY2VtZW50IHN0YXJ0ICovXG5cbmNvbnN0IHByb2Nlc3MgPSByZXF1aXJlKCdwcm9jZXNzLycpXG5cbi8qIHJlcGxhY2VtZW50IGVuZCAqL1xuLy8gUG9ydGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL21hZmludG9zaC9wdW1wIHdpdGhcbi8vIHBlcm1pc3Npb24gZnJvbSB0aGUgYXV0aG9yLCBNYXRoaWFzIEJ1dXMgKEBtYWZpbnRvc2gpLlxuXG47KCd1c2Ugc3RyaWN0JylcbmNvbnN0IHsgQXJyYXlJc0FycmF5LCBQcm9taXNlLCBTeW1ib2xBc3luY0l0ZXJhdG9yLCBTeW1ib2xEaXNwb3NlIH0gPSByZXF1aXJlKCcuLi8uLi9vdXJzL3ByaW1vcmRpYWxzJylcbmNvbnN0IGVvcyA9IHJlcXVpcmUoJy4vZW5kLW9mLXN0cmVhbScpXG5jb25zdCB7IG9uY2UgfSA9IHJlcXVpcmUoJy4uLy4uL291cnMvdXRpbCcpXG5jb25zdCBkZXN0cm95SW1wbCA9IHJlcXVpcmUoJy4vZGVzdHJveScpXG5jb25zdCBEdXBsZXggPSByZXF1aXJlKCcuL2R1cGxleCcpXG5jb25zdCB7XG4gIGFnZ3JlZ2F0ZVR3b0Vycm9ycyxcbiAgY29kZXM6IHtcbiAgICBFUlJfSU5WQUxJRF9BUkdfVFlQRSxcbiAgICBFUlJfSU5WQUxJRF9SRVRVUk5fVkFMVUUsXG4gICAgRVJSX01JU1NJTkdfQVJHUyxcbiAgICBFUlJfU1RSRUFNX0RFU1RST1lFRCxcbiAgICBFUlJfU1RSRUFNX1BSRU1BVFVSRV9DTE9TRVxuICB9LFxuICBBYm9ydEVycm9yXG59ID0gcmVxdWlyZSgnLi4vLi4vb3Vycy9lcnJvcnMnKVxuY29uc3QgeyB2YWxpZGF0ZUZ1bmN0aW9uLCB2YWxpZGF0ZUFib3J0U2lnbmFsIH0gPSByZXF1aXJlKCcuLi92YWxpZGF0b3JzJylcbmNvbnN0IHtcbiAgaXNJdGVyYWJsZSxcbiAgaXNSZWFkYWJsZSxcbiAgaXNSZWFkYWJsZU5vZGVTdHJlYW0sXG4gIGlzTm9kZVN0cmVhbSxcbiAgaXNUcmFuc2Zvcm1TdHJlYW0sXG4gIGlzV2ViU3RyZWFtLFxuICBpc1JlYWRhYmxlU3RyZWFtLFxuICBpc1JlYWRhYmxlRmluaXNoZWRcbn0gPSByZXF1aXJlKCcuL3V0aWxzJylcbmNvbnN0IEFib3J0Q29udHJvbGxlciA9IGdsb2JhbFRoaXMuQWJvcnRDb250cm9sbGVyIHx8IHJlcXVpcmUoJ2Fib3J0LWNvbnRyb2xsZXInKS5BYm9ydENvbnRyb2xsZXJcbmxldCBQYXNzVGhyb3VnaFxubGV0IFJlYWRhYmxlXG5sZXQgYWRkQWJvcnRMaXN0ZW5lclxuZnVuY3Rpb24gZGVzdHJveWVyKHN0cmVhbSwgcmVhZGluZywgd3JpdGluZykge1xuICBsZXQgZmluaXNoZWQgPSBmYWxzZVxuICBzdHJlYW0ub24oJ2Nsb3NlJywgKCkgPT4ge1xuICAgIGZpbmlzaGVkID0gdHJ1ZVxuICB9KVxuICBjb25zdCBjbGVhbnVwID0gZW9zKFxuICAgIHN0cmVhbSxcbiAgICB7XG4gICAgICByZWFkYWJsZTogcmVhZGluZyxcbiAgICAgIHdyaXRhYmxlOiB3cml0aW5nXG4gICAgfSxcbiAgICAoZXJyKSA9PiB7XG4gICAgICBmaW5pc2hlZCA9ICFlcnJcbiAgICB9XG4gIClcbiAgcmV0dXJuIHtcbiAgICBkZXN0cm95OiAoZXJyKSA9PiB7XG4gICAgICBpZiAoZmluaXNoZWQpIHJldHVyblxuICAgICAgZmluaXNoZWQgPSB0cnVlXG4gICAgICBkZXN0cm95SW1wbC5kZXN0cm95ZXIoc3RyZWFtLCBlcnIgfHwgbmV3IEVSUl9TVFJFQU1fREVTVFJPWUVEKCdwaXBlJykpXG4gICAgfSxcbiAgICBjbGVhbnVwXG4gIH1cbn1cbmZ1bmN0aW9uIHBvcENhbGxiYWNrKHN0cmVhbXMpIHtcbiAgLy8gU3RyZWFtcyBzaG91bGQgbmV2ZXIgYmUgYW4gZW1wdHkgYXJyYXkuIEl0IHNob3VsZCBhbHdheXMgY29udGFpbiBhdCBsZWFzdFxuICAvLyBhIHNpbmdsZSBzdHJlYW0uIFRoZXJlZm9yZSBvcHRpbWl6ZSBmb3IgdGhlIGF2ZXJhZ2UgY2FzZSBpbnN0ZWFkIG9mXG4gIC8vIGNoZWNraW5nIGZvciBsZW5ndGggPT09IDAgYXMgd2VsbC5cbiAgdmFsaWRhdGVGdW5jdGlvbihzdHJlYW1zW3N0cmVhbXMubGVuZ3RoIC0gMV0sICdzdHJlYW1zW3N0cmVhbS5sZW5ndGggLSAxXScpXG4gIHJldHVybiBzdHJlYW1zLnBvcCgpXG59XG5mdW5jdGlvbiBtYWtlQXN5bmNJdGVyYWJsZSh2YWwpIHtcbiAgaWYgKGlzSXRlcmFibGUodmFsKSkge1xuICAgIHJldHVybiB2YWxcbiAgfSBlbHNlIGlmIChpc1JlYWRhYmxlTm9kZVN0cmVhbSh2YWwpKSB7XG4gICAgLy8gTGVnYWN5IHN0cmVhbXMgYXJlIG5vdCBJdGVyYWJsZS5cbiAgICByZXR1cm4gZnJvbVJlYWRhYmxlKHZhbClcbiAgfVxuICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUoJ3ZhbCcsIFsnUmVhZGFibGUnLCAnSXRlcmFibGUnLCAnQXN5bmNJdGVyYWJsZSddLCB2YWwpXG59XG5hc3luYyBmdW5jdGlvbiogZnJvbVJlYWRhYmxlKHZhbCkge1xuICBpZiAoIVJlYWRhYmxlKSB7XG4gICAgUmVhZGFibGUgPSByZXF1aXJlKCcuL3JlYWRhYmxlJylcbiAgfVxuICB5aWVsZCogUmVhZGFibGUucHJvdG90eXBlW1N5bWJvbEFzeW5jSXRlcmF0b3JdLmNhbGwodmFsKVxufVxuYXN5bmMgZnVuY3Rpb24gcHVtcFRvTm9kZShpdGVyYWJsZSwgd3JpdGFibGUsIGZpbmlzaCwgeyBlbmQgfSkge1xuICBsZXQgZXJyb3JcbiAgbGV0IG9ucmVzb2x2ZSA9IG51bGxcbiAgY29uc3QgcmVzdW1lID0gKGVycikgPT4ge1xuICAgIGlmIChlcnIpIHtcbiAgICAgIGVycm9yID0gZXJyXG4gICAgfVxuICAgIGlmIChvbnJlc29sdmUpIHtcbiAgICAgIGNvbnN0IGNhbGxiYWNrID0gb25yZXNvbHZlXG4gICAgICBvbnJlc29sdmUgPSBudWxsXG4gICAgICBjYWxsYmFjaygpXG4gICAgfVxuICB9XG4gIGNvbnN0IHdhaXQgPSAoKSA9PlxuICAgIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICByZWplY3QoZXJyb3IpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbnJlc29sdmUgPSAoKSA9PiB7XG4gICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICByZWplY3QoZXJyb3IpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc29sdmUoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIHdyaXRhYmxlLm9uKCdkcmFpbicsIHJlc3VtZSlcbiAgY29uc3QgY2xlYW51cCA9IGVvcyhcbiAgICB3cml0YWJsZSxcbiAgICB7XG4gICAgICByZWFkYWJsZTogZmFsc2VcbiAgICB9LFxuICAgIHJlc3VtZVxuICApXG4gIHRyeSB7XG4gICAgaWYgKHdyaXRhYmxlLndyaXRhYmxlTmVlZERyYWluKSB7XG4gICAgICBhd2FpdCB3YWl0KClcbiAgICB9XG4gICAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBpdGVyYWJsZSkge1xuICAgICAgaWYgKCF3cml0YWJsZS53cml0ZShjaHVuaykpIHtcbiAgICAgICAgYXdhaXQgd2FpdCgpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChlbmQpIHtcbiAgICAgIHdyaXRhYmxlLmVuZCgpXG4gICAgICBhd2FpdCB3YWl0KClcbiAgICB9XG4gICAgZmluaXNoKClcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgZmluaXNoKGVycm9yICE9PSBlcnIgPyBhZ2dyZWdhdGVUd29FcnJvcnMoZXJyb3IsIGVycikgOiBlcnIpXG4gIH0gZmluYWxseSB7XG4gICAgY2xlYW51cCgpXG4gICAgd3JpdGFibGUub2ZmKCdkcmFpbicsIHJlc3VtZSlcbiAgfVxufVxuYXN5bmMgZnVuY3Rpb24gcHVtcFRvV2ViKHJlYWRhYmxlLCB3cml0YWJsZSwgZmluaXNoLCB7IGVuZCB9KSB7XG4gIGlmIChpc1RyYW5zZm9ybVN0cmVhbSh3cml0YWJsZSkpIHtcbiAgICB3cml0YWJsZSA9IHdyaXRhYmxlLndyaXRhYmxlXG4gIH1cbiAgLy8gaHR0cHM6Ly9zdHJlYW1zLnNwZWMud2hhdHdnLm9yZy8jZXhhbXBsZS1tYW51YWwtd3JpdGUtd2l0aC1iYWNrcHJlc3N1cmVcbiAgY29uc3Qgd3JpdGVyID0gd3JpdGFibGUuZ2V0V3JpdGVyKClcbiAgdHJ5IHtcbiAgICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIHJlYWRhYmxlKSB7XG4gICAgICBhd2FpdCB3cml0ZXIucmVhZHlcbiAgICAgIHdyaXRlci53cml0ZShjaHVuaykuY2F0Y2goKCkgPT4ge30pXG4gICAgfVxuICAgIGF3YWl0IHdyaXRlci5yZWFkeVxuICAgIGlmIChlbmQpIHtcbiAgICAgIGF3YWl0IHdyaXRlci5jbG9zZSgpXG4gICAgfVxuICAgIGZpbmlzaCgpXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB3cml0ZXIuYWJvcnQoZXJyKVxuICAgICAgZmluaXNoKGVycilcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGZpbmlzaChlcnIpXG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBwaXBlbGluZSguLi5zdHJlYW1zKSB7XG4gIHJldHVybiBwaXBlbGluZUltcGwoc3RyZWFtcywgb25jZShwb3BDYWxsYmFjayhzdHJlYW1zKSkpXG59XG5mdW5jdGlvbiBwaXBlbGluZUltcGwoc3RyZWFtcywgY2FsbGJhY2ssIG9wdHMpIHtcbiAgaWYgKHN0cmVhbXMubGVuZ3RoID09PSAxICYmIEFycmF5SXNBcnJheShzdHJlYW1zWzBdKSkge1xuICAgIHN0cmVhbXMgPSBzdHJlYW1zWzBdXG4gIH1cbiAgaWYgKHN0cmVhbXMubGVuZ3RoIDwgMikge1xuICAgIHRocm93IG5ldyBFUlJfTUlTU0lOR19BUkdTKCdzdHJlYW1zJylcbiAgfVxuICBjb25zdCBhYyA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuICBjb25zdCBzaWduYWwgPSBhYy5zaWduYWxcbiAgY29uc3Qgb3V0ZXJTaWduYWwgPSBvcHRzID09PSBudWxsIHx8IG9wdHMgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IG9wdHMuc2lnbmFsXG5cbiAgLy8gTmVlZCB0byBjbGVhbnVwIGV2ZW50IGxpc3RlbmVycyBpZiBsYXN0IHN0cmVhbSBpcyByZWFkYWJsZVxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvaXNzdWVzLzM1NDUyXG4gIGNvbnN0IGxhc3RTdHJlYW1DbGVhbnVwID0gW11cbiAgdmFsaWRhdGVBYm9ydFNpZ25hbChvdXRlclNpZ25hbCwgJ29wdGlvbnMuc2lnbmFsJylcbiAgZnVuY3Rpb24gYWJvcnQoKSB7XG4gICAgZmluaXNoSW1wbChuZXcgQWJvcnRFcnJvcigpKVxuICB9XG4gIGFkZEFib3J0TGlzdGVuZXIgPSBhZGRBYm9ydExpc3RlbmVyIHx8IHJlcXVpcmUoJy4uLy4uL291cnMvdXRpbCcpLmFkZEFib3J0TGlzdGVuZXJcbiAgbGV0IGRpc3Bvc2FibGVcbiAgaWYgKG91dGVyU2lnbmFsKSB7XG4gICAgZGlzcG9zYWJsZSA9IGFkZEFib3J0TGlzdGVuZXIob3V0ZXJTaWduYWwsIGFib3J0KVxuICB9XG4gIGxldCBlcnJvclxuICBsZXQgdmFsdWVcbiAgY29uc3QgZGVzdHJveXMgPSBbXVxuICBsZXQgZmluaXNoQ291bnQgPSAwXG4gIGZ1bmN0aW9uIGZpbmlzaChlcnIpIHtcbiAgICBmaW5pc2hJbXBsKGVyciwgLS1maW5pc2hDb3VudCA9PT0gMClcbiAgfVxuICBmdW5jdGlvbiBmaW5pc2hJbXBsKGVyciwgZmluYWwpIHtcbiAgICB2YXIgX2Rpc3Bvc2FibGVcbiAgICBpZiAoZXJyICYmICghZXJyb3IgfHwgZXJyb3IuY29kZSA9PT0gJ0VSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFJykpIHtcbiAgICAgIGVycm9yID0gZXJyXG4gICAgfVxuICAgIGlmICghZXJyb3IgJiYgIWZpbmFsKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgd2hpbGUgKGRlc3Ryb3lzLmxlbmd0aCkge1xuICAgICAgZGVzdHJveXMuc2hpZnQoKShlcnJvcilcbiAgICB9XG4gICAgOyhfZGlzcG9zYWJsZSA9IGRpc3Bvc2FibGUpID09PSBudWxsIHx8IF9kaXNwb3NhYmxlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBfZGlzcG9zYWJsZVtTeW1ib2xEaXNwb3NlXSgpXG4gICAgYWMuYWJvcnQoKVxuICAgIGlmIChmaW5hbCkge1xuICAgICAgaWYgKCFlcnJvcikge1xuICAgICAgICBsYXN0U3RyZWFtQ2xlYW51cC5mb3JFYWNoKChmbikgPT4gZm4oKSlcbiAgICAgIH1cbiAgICAgIHByb2Nlc3MubmV4dFRpY2soY2FsbGJhY2ssIGVycm9yLCB2YWx1ZSlcbiAgICB9XG4gIH1cbiAgbGV0IHJldFxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0cmVhbXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBzdHJlYW0gPSBzdHJlYW1zW2ldXG4gICAgY29uc3QgcmVhZGluZyA9IGkgPCBzdHJlYW1zLmxlbmd0aCAtIDFcbiAgICBjb25zdCB3cml0aW5nID0gaSA+IDBcbiAgICBjb25zdCBlbmQgPSByZWFkaW5nIHx8IChvcHRzID09PSBudWxsIHx8IG9wdHMgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IG9wdHMuZW5kKSAhPT0gZmFsc2VcbiAgICBjb25zdCBpc0xhc3RTdHJlYW0gPSBpID09PSBzdHJlYW1zLmxlbmd0aCAtIDFcbiAgICBpZiAoaXNOb2RlU3RyZWFtKHN0cmVhbSkpIHtcbiAgICAgIGlmIChlbmQpIHtcbiAgICAgICAgY29uc3QgeyBkZXN0cm95LCBjbGVhbnVwIH0gPSBkZXN0cm95ZXIoc3RyZWFtLCByZWFkaW5nLCB3cml0aW5nKVxuICAgICAgICBkZXN0cm95cy5wdXNoKGRlc3Ryb3kpXG4gICAgICAgIGlmIChpc1JlYWRhYmxlKHN0cmVhbSkgJiYgaXNMYXN0U3RyZWFtKSB7XG4gICAgICAgICAgbGFzdFN0cmVhbUNsZWFudXAucHVzaChjbGVhbnVwKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIENhdGNoIHN0cmVhbSBlcnJvcnMgdGhhdCBvY2N1ciBhZnRlciBwaXBlL3B1bXAgaGFzIGNvbXBsZXRlZC5cbiAgICAgIGZ1bmN0aW9uIG9uRXJyb3IoZXJyKSB7XG4gICAgICAgIGlmIChlcnIgJiYgZXJyLm5hbWUgIT09ICdBYm9ydEVycm9yJyAmJiBlcnIuY29kZSAhPT0gJ0VSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFJykge1xuICAgICAgICAgIGZpbmlzaChlcnIpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHN0cmVhbS5vbignZXJyb3InLCBvbkVycm9yKVxuICAgICAgaWYgKGlzUmVhZGFibGUoc3RyZWFtKSAmJiBpc0xhc3RTdHJlYW0pIHtcbiAgICAgICAgbGFzdFN0cmVhbUNsZWFudXAucHVzaCgoKSA9PiB7XG4gICAgICAgICAgc3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uRXJyb3IpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpID09PSAwKSB7XG4gICAgICBpZiAodHlwZW9mIHN0cmVhbSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXQgPSBzdHJlYW0oe1xuICAgICAgICAgIHNpZ25hbFxuICAgICAgICB9KVxuICAgICAgICBpZiAoIWlzSXRlcmFibGUocmV0KSkge1xuICAgICAgICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9SRVRVUk5fVkFMVUUoJ0l0ZXJhYmxlLCBBc3luY0l0ZXJhYmxlIG9yIFN0cmVhbScsICdzb3VyY2UnLCByZXQpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXNJdGVyYWJsZShzdHJlYW0pIHx8IGlzUmVhZGFibGVOb2RlU3RyZWFtKHN0cmVhbSkgfHwgaXNUcmFuc2Zvcm1TdHJlYW0oc3RyZWFtKSkge1xuICAgICAgICByZXQgPSBzdHJlYW1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldCA9IER1cGxleC5mcm9tKHN0cmVhbSlcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBzdHJlYW0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGlmIChpc1RyYW5zZm9ybVN0cmVhbShyZXQpKSB7XG4gICAgICAgIHZhciBfcmV0XG4gICAgICAgIHJldCA9IG1ha2VBc3luY0l0ZXJhYmxlKChfcmV0ID0gcmV0KSA9PT0gbnVsbCB8fCBfcmV0ID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBfcmV0LnJlYWRhYmxlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0ID0gbWFrZUFzeW5jSXRlcmFibGUocmV0KVxuICAgICAgfVxuICAgICAgcmV0ID0gc3RyZWFtKHJldCwge1xuICAgICAgICBzaWduYWxcbiAgICAgIH0pXG4gICAgICBpZiAocmVhZGluZykge1xuICAgICAgICBpZiAoIWlzSXRlcmFibGUocmV0LCB0cnVlKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9SRVRVUk5fVkFMVUUoJ0FzeW5jSXRlcmFibGUnLCBgdHJhbnNmb3JtWyR7aSAtIDF9XWAsIHJldClcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIF9yZXQyXG4gICAgICAgIGlmICghUGFzc1Rocm91Z2gpIHtcbiAgICAgICAgICBQYXNzVGhyb3VnaCA9IHJlcXVpcmUoJy4vcGFzc3Rocm91Z2gnKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgdGhlIGxhc3QgYXJndW1lbnQgdG8gcGlwZWxpbmUgaXMgbm90IGEgc3RyZWFtXG4gICAgICAgIC8vIHdlIG11c3QgY3JlYXRlIGEgcHJveHkgc3RyZWFtIHNvIHRoYXQgcGlwZWxpbmUoLi4uKVxuICAgICAgICAvLyBhbHdheXMgcmV0dXJucyBhIHN0cmVhbSB3aGljaCBjYW4gYmUgZnVydGhlclxuICAgICAgICAvLyBjb21wb3NlZCB0aHJvdWdoIGAucGlwZShzdHJlYW0pYC5cblxuICAgICAgICBjb25zdCBwdCA9IG5ldyBQYXNzVGhyb3VnaCh7XG4gICAgICAgICAgb2JqZWN0TW9kZTogdHJ1ZVxuICAgICAgICB9KVxuXG4gICAgICAgIC8vIEhhbmRsZSBQcm9taXNlcy9BKyBzcGVjLCBgdGhlbmAgY291bGQgYmUgYSBnZXR0ZXIgdGhhdCB0aHJvd3Mgb25cbiAgICAgICAgLy8gc2Vjb25kIHVzZS5cbiAgICAgICAgY29uc3QgdGhlbiA9IChfcmV0MiA9IHJldCkgPT09IG51bGwgfHwgX3JldDIgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IF9yZXQyLnRoZW5cbiAgICAgICAgaWYgKHR5cGVvZiB0aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgZmluaXNoQ291bnQrK1xuICAgICAgICAgIHRoZW4uY2FsbChcbiAgICAgICAgICAgIHJldCxcbiAgICAgICAgICAgICh2YWwpID0+IHtcbiAgICAgICAgICAgICAgdmFsdWUgPSB2YWxcbiAgICAgICAgICAgICAgaWYgKHZhbCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcHQud3JpdGUodmFsKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChlbmQpIHtcbiAgICAgICAgICAgICAgICBwdC5lbmQoKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soZmluaXNoKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgcHQuZGVzdHJveShlcnIpXG4gICAgICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soZmluaXNoLCBlcnIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2UgaWYgKGlzSXRlcmFibGUocmV0LCB0cnVlKSkge1xuICAgICAgICAgIGZpbmlzaENvdW50KytcbiAgICAgICAgICBwdW1wVG9Ob2RlKHJldCwgcHQsIGZpbmlzaCwge1xuICAgICAgICAgICAgZW5kXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIGlmIChpc1JlYWRhYmxlU3RyZWFtKHJldCkgfHwgaXNUcmFuc2Zvcm1TdHJlYW0ocmV0KSkge1xuICAgICAgICAgIGNvbnN0IHRvUmVhZCA9IHJldC5yZWFkYWJsZSB8fCByZXRcbiAgICAgICAgICBmaW5pc2hDb3VudCsrXG4gICAgICAgICAgcHVtcFRvTm9kZSh0b1JlYWQsIHB0LCBmaW5pc2gsIHtcbiAgICAgICAgICAgIGVuZFxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVSUl9JTlZBTElEX1JFVFVSTl9WQUxVRSgnQXN5bmNJdGVyYWJsZSBvciBQcm9taXNlJywgJ2Rlc3RpbmF0aW9uJywgcmV0KVxuICAgICAgICB9XG4gICAgICAgIHJldCA9IHB0XG4gICAgICAgIGNvbnN0IHsgZGVzdHJveSwgY2xlYW51cCB9ID0gZGVzdHJveWVyKHJldCwgZmFsc2UsIHRydWUpXG4gICAgICAgIGRlc3Ryb3lzLnB1c2goZGVzdHJveSlcbiAgICAgICAgaWYgKGlzTGFzdFN0cmVhbSkge1xuICAgICAgICAgIGxhc3RTdHJlYW1DbGVhbnVwLnB1c2goY2xlYW51cClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNOb2RlU3RyZWFtKHN0cmVhbSkpIHtcbiAgICAgIGlmIChpc1JlYWRhYmxlTm9kZVN0cmVhbShyZXQpKSB7XG4gICAgICAgIGZpbmlzaENvdW50ICs9IDJcbiAgICAgICAgY29uc3QgY2xlYW51cCA9IHBpcGUocmV0LCBzdHJlYW0sIGZpbmlzaCwge1xuICAgICAgICAgIGVuZFxuICAgICAgICB9KVxuICAgICAgICBpZiAoaXNSZWFkYWJsZShzdHJlYW0pICYmIGlzTGFzdFN0cmVhbSkge1xuICAgICAgICAgIGxhc3RTdHJlYW1DbGVhbnVwLnB1c2goY2xlYW51cClcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpc1RyYW5zZm9ybVN0cmVhbShyZXQpIHx8IGlzUmVhZGFibGVTdHJlYW0ocmV0KSkge1xuICAgICAgICBjb25zdCB0b1JlYWQgPSByZXQucmVhZGFibGUgfHwgcmV0XG4gICAgICAgIGZpbmlzaENvdW50KytcbiAgICAgICAgcHVtcFRvTm9kZSh0b1JlYWQsIHN0cmVhbSwgZmluaXNoLCB7XG4gICAgICAgICAgZW5kXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2UgaWYgKGlzSXRlcmFibGUocmV0KSkge1xuICAgICAgICBmaW5pc2hDb3VudCsrXG4gICAgICAgIHB1bXBUb05vZGUocmV0LCBzdHJlYW0sIGZpbmlzaCwge1xuICAgICAgICAgIGVuZFxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVSUl9JTlZBTElEX0FSR19UWVBFKFxuICAgICAgICAgICd2YWwnLFxuICAgICAgICAgIFsnUmVhZGFibGUnLCAnSXRlcmFibGUnLCAnQXN5bmNJdGVyYWJsZScsICdSZWFkYWJsZVN0cmVhbScsICdUcmFuc2Zvcm1TdHJlYW0nXSxcbiAgICAgICAgICByZXRcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgcmV0ID0gc3RyZWFtXG4gICAgfSBlbHNlIGlmIChpc1dlYlN0cmVhbShzdHJlYW0pKSB7XG4gICAgICBpZiAoaXNSZWFkYWJsZU5vZGVTdHJlYW0ocmV0KSkge1xuICAgICAgICBmaW5pc2hDb3VudCsrXG4gICAgICAgIHB1bXBUb1dlYihtYWtlQXN5bmNJdGVyYWJsZShyZXQpLCBzdHJlYW0sIGZpbmlzaCwge1xuICAgICAgICAgIGVuZFxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIGlmIChpc1JlYWRhYmxlU3RyZWFtKHJldCkgfHwgaXNJdGVyYWJsZShyZXQpKSB7XG4gICAgICAgIGZpbmlzaENvdW50KytcbiAgICAgICAgcHVtcFRvV2ViKHJldCwgc3RyZWFtLCBmaW5pc2gsIHtcbiAgICAgICAgICBlbmRcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSBpZiAoaXNUcmFuc2Zvcm1TdHJlYW0ocmV0KSkge1xuICAgICAgICBmaW5pc2hDb3VudCsrXG4gICAgICAgIHB1bXBUb1dlYihyZXQucmVhZGFibGUsIHN0cmVhbSwgZmluaXNoLCB7XG4gICAgICAgICAgZW5kXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUoXG4gICAgICAgICAgJ3ZhbCcsXG4gICAgICAgICAgWydSZWFkYWJsZScsICdJdGVyYWJsZScsICdBc3luY0l0ZXJhYmxlJywgJ1JlYWRhYmxlU3RyZWFtJywgJ1RyYW5zZm9ybVN0cmVhbSddLFxuICAgICAgICAgIHJldFxuICAgICAgICApXG4gICAgICB9XG4gICAgICByZXQgPSBzdHJlYW1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0gRHVwbGV4LmZyb20oc3RyZWFtKVxuICAgIH1cbiAgfVxuICBpZiAoXG4gICAgKHNpZ25hbCAhPT0gbnVsbCAmJiBzaWduYWwgIT09IHVuZGVmaW5lZCAmJiBzaWduYWwuYWJvcnRlZCkgfHxcbiAgICAob3V0ZXJTaWduYWwgIT09IG51bGwgJiYgb3V0ZXJTaWduYWwgIT09IHVuZGVmaW5lZCAmJiBvdXRlclNpZ25hbC5hYm9ydGVkKVxuICApIHtcbiAgICBwcm9jZXNzLm5leHRUaWNrKGFib3J0KVxuICB9XG4gIHJldHVybiByZXRcbn1cbmZ1bmN0aW9uIHBpcGUoc3JjLCBkc3QsIGZpbmlzaCwgeyBlbmQgfSkge1xuICBsZXQgZW5kZWQgPSBmYWxzZVxuICBkc3Qub24oJ2Nsb3NlJywgKCkgPT4ge1xuICAgIGlmICghZW5kZWQpIHtcbiAgICAgIC8vIEZpbmlzaCBpZiB0aGUgZGVzdGluYXRpb24gY2xvc2VzIGJlZm9yZSB0aGUgc291cmNlIGhhcyBjb21wbGV0ZWQuXG4gICAgICBmaW5pc2gobmV3IEVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFKCkpXG4gICAgfVxuICB9KVxuICBzcmMucGlwZShkc3QsIHtcbiAgICBlbmQ6IGZhbHNlXG4gIH0pIC8vIElmIGVuZCBpcyB0cnVlIHdlIGFscmVhZHkgd2lsbCBoYXZlIGEgbGlzdGVuZXIgdG8gZW5kIGRzdC5cblxuICBpZiAoZW5kKSB7XG4gICAgLy8gQ29tcGF0LiBCZWZvcmUgbm9kZSB2MTAuMTIuMCBzdGRpbyB1c2VkIHRvIHRocm93IGFuIGVycm9yIHNvXG4gICAgLy8gcGlwZSgpIGRpZC9kb2VzIG5vdCBlbmQoKSBzdGRpbyBkZXN0aW5hdGlvbnMuXG4gICAgLy8gTm93IHRoZXkgYWxsb3cgaXQgYnV0IFwic2VjcmV0bHlcIiBkb24ndCBjbG9zZSB0aGUgdW5kZXJseWluZyBmZC5cblxuICAgIGZ1bmN0aW9uIGVuZEZuKCkge1xuICAgICAgZW5kZWQgPSB0cnVlXG4gICAgICBkc3QuZW5kKClcbiAgICB9XG4gICAgaWYgKGlzUmVhZGFibGVGaW5pc2hlZChzcmMpKSB7XG4gICAgICAvLyBFbmQgdGhlIGRlc3RpbmF0aW9uIGlmIHRoZSBzb3VyY2UgaGFzIGFscmVhZHkgZW5kZWQuXG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGVuZEZuKVxuICAgIH0gZWxzZSB7XG4gICAgICBzcmMub25jZSgnZW5kJywgZW5kRm4pXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZpbmlzaCgpXG4gIH1cbiAgZW9zKFxuICAgIHNyYyxcbiAgICB7XG4gICAgICByZWFkYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiBmYWxzZVxuICAgIH0sXG4gICAgKGVycikgPT4ge1xuICAgICAgY29uc3QgclN0YXRlID0gc3JjLl9yZWFkYWJsZVN0YXRlXG4gICAgICBpZiAoXG4gICAgICAgIGVyciAmJlxuICAgICAgICBlcnIuY29kZSA9PT0gJ0VSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFJyAmJlxuICAgICAgICByU3RhdGUgJiZcbiAgICAgICAgclN0YXRlLmVuZGVkICYmXG4gICAgICAgICFyU3RhdGUuZXJyb3JlZCAmJlxuICAgICAgICAhclN0YXRlLmVycm9yRW1pdHRlZFxuICAgICAgKSB7XG4gICAgICAgIC8vIFNvbWUgcmVhZGFibGUgc3RyZWFtcyB3aWxsIGVtaXQgJ2Nsb3NlJyBiZWZvcmUgJ2VuZCcuIEhvd2V2ZXIsIHNpbmNlXG4gICAgICAgIC8vIHRoaXMgaXMgb24gdGhlIHJlYWRhYmxlIHNpZGUgJ2VuZCcgc2hvdWxkIHN0aWxsIGJlIGVtaXR0ZWQgaWYgdGhlXG4gICAgICAgIC8vIHN0cmVhbSBoYXMgYmVlbiBlbmRlZCBhbmQgbm8gZXJyb3IgZW1pdHRlZC4gVGhpcyBzaG91bGQgYmUgYWxsb3dlZCBpblxuICAgICAgICAvLyBmYXZvciBvZiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4gU2luY2UgdGhlIHN0cmVhbSBpcyBwaXBlZCB0byBhXG4gICAgICAgIC8vIGRlc3RpbmF0aW9uIHRoaXMgc2hvdWxkIG5vdCByZXN1bHQgaW4gYW55IG9ic2VydmFibGUgZGlmZmVyZW5jZS5cbiAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjaGVjayBpZiB0aGlzIGlzIGEgd3JpdGFibGUgcHJlbWF0dXJlIGNsb3NlIHNpbmNlXG4gICAgICAgIC8vIGVvcyB3aWxsIG9ubHkgZmFpbCB3aXRoIHByZW1hdHVyZSBjbG9zZSBvbiB0aGUgcmVhZGluZyBzaWRlIGZvclxuICAgICAgICAvLyBkdXBsZXggc3RyZWFtcy5cbiAgICAgICAgc3JjLm9uY2UoJ2VuZCcsIGZpbmlzaCkub25jZSgnZXJyb3InLCBmaW5pc2gpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaW5pc2goZXJyKVxuICAgICAgfVxuICAgIH1cbiAgKVxuICByZXR1cm4gZW9zKFxuICAgIGRzdCxcbiAgICB7XG4gICAgICByZWFkYWJsZTogZmFsc2UsXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0sXG4gICAgZmluaXNoXG4gIClcbn1cbm1vZHVsZS5leHBvcnRzID0ge1xuICBwaXBlbGluZUltcGwsXG4gIHBpcGVsaW5lXG59XG4iLCIndXNlIHN0cmljdCdcblxuY29uc3QgeyBwaXBlbGluZSB9ID0gcmVxdWlyZSgnLi9waXBlbGluZScpXG5jb25zdCBEdXBsZXggPSByZXF1aXJlKCcuL2R1cGxleCcpXG5jb25zdCB7IGRlc3Ryb3llciB9ID0gcmVxdWlyZSgnLi9kZXN0cm95JylcbmNvbnN0IHtcbiAgaXNOb2RlU3RyZWFtLFxuICBpc1JlYWRhYmxlLFxuICBpc1dyaXRhYmxlLFxuICBpc1dlYlN0cmVhbSxcbiAgaXNUcmFuc2Zvcm1TdHJlYW0sXG4gIGlzV3JpdGFibGVTdHJlYW0sXG4gIGlzUmVhZGFibGVTdHJlYW1cbn0gPSByZXF1aXJlKCcuL3V0aWxzJylcbmNvbnN0IHtcbiAgQWJvcnRFcnJvcixcbiAgY29kZXM6IHsgRVJSX0lOVkFMSURfQVJHX1ZBTFVFLCBFUlJfTUlTU0lOR19BUkdTIH1cbn0gPSByZXF1aXJlKCcuLi8uLi9vdXJzL2Vycm9ycycpXG5jb25zdCBlb3MgPSByZXF1aXJlKCcuL2VuZC1vZi1zdHJlYW0nKVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjb21wb3NlKC4uLnN0cmVhbXMpIHtcbiAgaWYgKHN0cmVhbXMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVSUl9NSVNTSU5HX0FSR1MoJ3N0cmVhbXMnKVxuICB9XG4gIGlmIChzdHJlYW1zLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiBEdXBsZXguZnJvbShzdHJlYW1zWzBdKVxuICB9XG4gIGNvbnN0IG9yZ1N0cmVhbXMgPSBbLi4uc3RyZWFtc11cbiAgaWYgKHR5cGVvZiBzdHJlYW1zWzBdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgc3RyZWFtc1swXSA9IER1cGxleC5mcm9tKHN0cmVhbXNbMF0pXG4gIH1cbiAgaWYgKHR5cGVvZiBzdHJlYW1zW3N0cmVhbXMubGVuZ3RoIC0gMV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICBjb25zdCBpZHggPSBzdHJlYW1zLmxlbmd0aCAtIDFcbiAgICBzdHJlYW1zW2lkeF0gPSBEdXBsZXguZnJvbShzdHJlYW1zW2lkeF0pXG4gIH1cbiAgZm9yIChsZXQgbiA9IDA7IG4gPCBzdHJlYW1zLmxlbmd0aDsgKytuKSB7XG4gICAgaWYgKCFpc05vZGVTdHJlYW0oc3RyZWFtc1tuXSkgJiYgIWlzV2ViU3RyZWFtKHN0cmVhbXNbbl0pKSB7XG4gICAgICAvLyBUT0RPKHJvbmFnKTogQWRkIGNoZWNrcyBmb3Igbm9uIHN0cmVhbXMuXG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBuIDwgc3RyZWFtcy5sZW5ndGggLSAxICYmXG4gICAgICAhKGlzUmVhZGFibGUoc3RyZWFtc1tuXSkgfHwgaXNSZWFkYWJsZVN0cmVhbShzdHJlYW1zW25dKSB8fCBpc1RyYW5zZm9ybVN0cmVhbShzdHJlYW1zW25dKSlcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVkFMVUUoYHN0cmVhbXNbJHtufV1gLCBvcmdTdHJlYW1zW25dLCAnbXVzdCBiZSByZWFkYWJsZScpXG4gICAgfVxuICAgIGlmIChuID4gMCAmJiAhKGlzV3JpdGFibGUoc3RyZWFtc1tuXSkgfHwgaXNXcml0YWJsZVN0cmVhbShzdHJlYW1zW25dKSB8fCBpc1RyYW5zZm9ybVN0cmVhbShzdHJlYW1zW25dKSkpIHtcbiAgICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVkFMVUUoYHN0cmVhbXNbJHtufV1gLCBvcmdTdHJlYW1zW25dLCAnbXVzdCBiZSB3cml0YWJsZScpXG4gICAgfVxuICB9XG4gIGxldCBvbmRyYWluXG4gIGxldCBvbmZpbmlzaFxuICBsZXQgb25yZWFkYWJsZVxuICBsZXQgb25jbG9zZVxuICBsZXQgZFxuICBmdW5jdGlvbiBvbmZpbmlzaGVkKGVycikge1xuICAgIGNvbnN0IGNiID0gb25jbG9zZVxuICAgIG9uY2xvc2UgPSBudWxsXG4gICAgaWYgKGNiKSB7XG4gICAgICBjYihlcnIpXG4gICAgfSBlbHNlIGlmIChlcnIpIHtcbiAgICAgIGQuZGVzdHJveShlcnIpXG4gICAgfSBlbHNlIGlmICghcmVhZGFibGUgJiYgIXdyaXRhYmxlKSB7XG4gICAgICBkLmRlc3Ryb3koKVxuICAgIH1cbiAgfVxuICBjb25zdCBoZWFkID0gc3RyZWFtc1swXVxuICBjb25zdCB0YWlsID0gcGlwZWxpbmUoc3RyZWFtcywgb25maW5pc2hlZClcbiAgY29uc3Qgd3JpdGFibGUgPSAhIShpc1dyaXRhYmxlKGhlYWQpIHx8IGlzV3JpdGFibGVTdHJlYW0oaGVhZCkgfHwgaXNUcmFuc2Zvcm1TdHJlYW0oaGVhZCkpXG4gIGNvbnN0IHJlYWRhYmxlID0gISEoaXNSZWFkYWJsZSh0YWlsKSB8fCBpc1JlYWRhYmxlU3RyZWFtKHRhaWwpIHx8IGlzVHJhbnNmb3JtU3RyZWFtKHRhaWwpKVxuXG4gIC8vIFRPRE8ocm9uYWcpOiBBdm9pZCBkb3VibGUgYnVmZmVyaW5nLlxuICAvLyBJbXBsZW1lbnQgV3JpdGFibGUvUmVhZGFibGUvRHVwbGV4IHRyYWl0cy5cbiAgLy8gU2VlLCBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvcHVsbC8zMzUxNS5cbiAgZCA9IG5ldyBEdXBsZXgoe1xuICAgIC8vIFRPRE8gKHJvbmFnKTogaGlnaFdhdGVyTWFyaz9cbiAgICB3cml0YWJsZU9iamVjdE1vZGU6ICEhKGhlYWQgIT09IG51bGwgJiYgaGVhZCAhPT0gdW5kZWZpbmVkICYmIGhlYWQud3JpdGFibGVPYmplY3RNb2RlKSxcbiAgICByZWFkYWJsZU9iamVjdE1vZGU6ICEhKHRhaWwgIT09IG51bGwgJiYgdGFpbCAhPT0gdW5kZWZpbmVkICYmIHRhaWwucmVhZGFibGVPYmplY3RNb2RlKSxcbiAgICB3cml0YWJsZSxcbiAgICByZWFkYWJsZVxuICB9KVxuICBpZiAod3JpdGFibGUpIHtcbiAgICBpZiAoaXNOb2RlU3RyZWFtKGhlYWQpKSB7XG4gICAgICBkLl93cml0ZSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNhbGxiYWNrKSB7XG4gICAgICAgIGlmIChoZWFkLndyaXRlKGNodW5rLCBlbmNvZGluZykpIHtcbiAgICAgICAgICBjYWxsYmFjaygpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb25kcmFpbiA9IGNhbGxiYWNrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGQuX2ZpbmFsID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgICAgIGhlYWQuZW5kKClcbiAgICAgICAgb25maW5pc2ggPSBjYWxsYmFja1xuICAgICAgfVxuICAgICAgaGVhZC5vbignZHJhaW4nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChvbmRyYWluKSB7XG4gICAgICAgICAgY29uc3QgY2IgPSBvbmRyYWluXG4gICAgICAgICAgb25kcmFpbiA9IG51bGxcbiAgICAgICAgICBjYigpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSBlbHNlIGlmIChpc1dlYlN0cmVhbShoZWFkKSkge1xuICAgICAgY29uc3Qgd3JpdGFibGUgPSBpc1RyYW5zZm9ybVN0cmVhbShoZWFkKSA/IGhlYWQud3JpdGFibGUgOiBoZWFkXG4gICAgICBjb25zdCB3cml0ZXIgPSB3cml0YWJsZS5nZXRXcml0ZXIoKVxuICAgICAgZC5fd3JpdGUgPSBhc3luYyBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYWxsYmFjaykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHdyaXRlci5yZWFkeVxuICAgICAgICAgIHdyaXRlci53cml0ZShjaHVuaykuY2F0Y2goKCkgPT4ge30pXG4gICAgICAgICAgY2FsbGJhY2soKVxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBjYWxsYmFjayhlcnIpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGQuX2ZpbmFsID0gYXN5bmMgZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgd3JpdGVyLnJlYWR5XG4gICAgICAgICAgd3JpdGVyLmNsb3NlKCkuY2F0Y2goKCkgPT4ge30pXG4gICAgICAgICAgb25maW5pc2ggPSBjYWxsYmFja1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBjYWxsYmFjayhlcnIpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgdG9SZWFkID0gaXNUcmFuc2Zvcm1TdHJlYW0odGFpbCkgPyB0YWlsLnJlYWRhYmxlIDogdGFpbFxuICAgIGVvcyh0b1JlYWQsICgpID0+IHtcbiAgICAgIGlmIChvbmZpbmlzaCkge1xuICAgICAgICBjb25zdCBjYiA9IG9uZmluaXNoXG4gICAgICAgIG9uZmluaXNoID0gbnVsbFxuICAgICAgICBjYigpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuICBpZiAocmVhZGFibGUpIHtcbiAgICBpZiAoaXNOb2RlU3RyZWFtKHRhaWwpKSB7XG4gICAgICB0YWlsLm9uKCdyZWFkYWJsZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKG9ucmVhZGFibGUpIHtcbiAgICAgICAgICBjb25zdCBjYiA9IG9ucmVhZGFibGVcbiAgICAgICAgICBvbnJlYWRhYmxlID0gbnVsbFxuICAgICAgICAgIGNiKClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIHRhaWwub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZC5wdXNoKG51bGwpXG4gICAgICB9KVxuICAgICAgZC5fcmVhZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICBjb25zdCBidWYgPSB0YWlsLnJlYWQoKVxuICAgICAgICAgIGlmIChidWYgPT09IG51bGwpIHtcbiAgICAgICAgICAgIG9ucmVhZGFibGUgPSBkLl9yZWFkXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFkLnB1c2goYnVmKSkge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1dlYlN0cmVhbSh0YWlsKSkge1xuICAgICAgY29uc3QgcmVhZGFibGUgPSBpc1RyYW5zZm9ybVN0cmVhbSh0YWlsKSA/IHRhaWwucmVhZGFibGUgOiB0YWlsXG4gICAgICBjb25zdCByZWFkZXIgPSByZWFkYWJsZS5nZXRSZWFkZXIoKVxuICAgICAgZC5fcmVhZCA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgeyB2YWx1ZSwgZG9uZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKVxuICAgICAgICAgICAgaWYgKCFkLnB1c2godmFsdWUpKSB7XG4gICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICAgICAgZC5wdXNoKG51bGwpXG4gICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGQuX2Rlc3Ryb3kgPSBmdW5jdGlvbiAoZXJyLCBjYWxsYmFjaykge1xuICAgIGlmICghZXJyICYmIG9uY2xvc2UgIT09IG51bGwpIHtcbiAgICAgIGVyciA9IG5ldyBBYm9ydEVycm9yKClcbiAgICB9XG4gICAgb25yZWFkYWJsZSA9IG51bGxcbiAgICBvbmRyYWluID0gbnVsbFxuICAgIG9uZmluaXNoID0gbnVsbFxuICAgIGlmIChvbmNsb3NlID09PSBudWxsKSB7XG4gICAgICBjYWxsYmFjayhlcnIpXG4gICAgfSBlbHNlIHtcbiAgICAgIG9uY2xvc2UgPSBjYWxsYmFja1xuICAgICAgaWYgKGlzTm9kZVN0cmVhbSh0YWlsKSkge1xuICAgICAgICBkZXN0cm95ZXIodGFpbCwgZXJyKVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZFxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IEFib3J0Q29udHJvbGxlciA9IGdsb2JhbFRoaXMuQWJvcnRDb250cm9sbGVyIHx8IHJlcXVpcmUoJ2Fib3J0LWNvbnRyb2xsZXInKS5BYm9ydENvbnRyb2xsZXJcbmNvbnN0IHtcbiAgY29kZXM6IHsgRVJSX0lOVkFMSURfQVJHX1ZBTFVFLCBFUlJfSU5WQUxJRF9BUkdfVFlQRSwgRVJSX01JU1NJTkdfQVJHUywgRVJSX09VVF9PRl9SQU5HRSB9LFxuICBBYm9ydEVycm9yXG59ID0gcmVxdWlyZSgnLi4vLi4vb3Vycy9lcnJvcnMnKVxuY29uc3QgeyB2YWxpZGF0ZUFib3J0U2lnbmFsLCB2YWxpZGF0ZUludGVnZXIsIHZhbGlkYXRlT2JqZWN0IH0gPSByZXF1aXJlKCcuLi92YWxpZGF0b3JzJylcbmNvbnN0IGtXZWFrSGFuZGxlciA9IHJlcXVpcmUoJy4uLy4uL291cnMvcHJpbW9yZGlhbHMnKS5TeW1ib2woJ2tXZWFrJylcbmNvbnN0IGtSZXNpc3RTdG9wUHJvcGFnYXRpb24gPSByZXF1aXJlKCcuLi8uLi9vdXJzL3ByaW1vcmRpYWxzJykuU3ltYm9sKCdrUmVzaXN0U3RvcFByb3BhZ2F0aW9uJylcbmNvbnN0IHsgZmluaXNoZWQgfSA9IHJlcXVpcmUoJy4vZW5kLW9mLXN0cmVhbScpXG5jb25zdCBzdGF0aWNDb21wb3NlID0gcmVxdWlyZSgnLi9jb21wb3NlJylcbmNvbnN0IHsgYWRkQWJvcnRTaWduYWxOb1ZhbGlkYXRlIH0gPSByZXF1aXJlKCcuL2FkZC1hYm9ydC1zaWduYWwnKVxuY29uc3QgeyBpc1dyaXRhYmxlLCBpc05vZGVTdHJlYW0gfSA9IHJlcXVpcmUoJy4vdXRpbHMnKVxuY29uc3QgeyBkZXByZWNhdGUgfSA9IHJlcXVpcmUoJy4uLy4uL291cnMvdXRpbCcpXG5jb25zdCB7XG4gIEFycmF5UHJvdG90eXBlUHVzaCxcbiAgQm9vbGVhbixcbiAgTWF0aEZsb29yLFxuICBOdW1iZXIsXG4gIE51bWJlcklzTmFOLFxuICBQcm9taXNlLFxuICBQcm9taXNlUmVqZWN0LFxuICBQcm9taXNlUmVzb2x2ZSxcbiAgUHJvbWlzZVByb3RvdHlwZVRoZW4sXG4gIFN5bWJvbFxufSA9IHJlcXVpcmUoJy4uLy4uL291cnMvcHJpbW9yZGlhbHMnKVxuY29uc3Qga0VtcHR5ID0gU3ltYm9sKCdrRW1wdHknKVxuY29uc3Qga0VvZiA9IFN5bWJvbCgna0VvZicpXG5mdW5jdGlvbiBjb21wb3NlKHN0cmVhbSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyAhPSBudWxsKSB7XG4gICAgdmFsaWRhdGVPYmplY3Qob3B0aW9ucywgJ29wdGlvbnMnKVxuICB9XG4gIGlmICgob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBvcHRpb25zLnNpZ25hbCkgIT0gbnVsbCkge1xuICAgIHZhbGlkYXRlQWJvcnRTaWduYWwob3B0aW9ucy5zaWduYWwsICdvcHRpb25zLnNpZ25hbCcpXG4gIH1cbiAgaWYgKGlzTm9kZVN0cmVhbShzdHJlYW0pICYmICFpc1dyaXRhYmxlKHN0cmVhbSkpIHtcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1ZBTFVFKCdzdHJlYW0nLCBzdHJlYW0sICdtdXN0IGJlIHdyaXRhYmxlJylcbiAgfVxuICBjb25zdCBjb21wb3NlZFN0cmVhbSA9IHN0YXRpY0NvbXBvc2UodGhpcywgc3RyZWFtKVxuICBpZiAob3B0aW9ucyAhPT0gbnVsbCAmJiBvcHRpb25zICE9PSB1bmRlZmluZWQgJiYgb3B0aW9ucy5zaWduYWwpIHtcbiAgICAvLyBOb3QgdmFsaWRhdGluZyBhcyB3ZSBhbHJlYWR5IHZhbGlkYXRlZCBiZWZvcmVcbiAgICBhZGRBYm9ydFNpZ25hbE5vVmFsaWRhdGUob3B0aW9ucy5zaWduYWwsIGNvbXBvc2VkU3RyZWFtKVxuICB9XG4gIHJldHVybiBjb21wb3NlZFN0cmVhbVxufVxuZnVuY3Rpb24gbWFwKGZuLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUoJ2ZuJywgWydGdW5jdGlvbicsICdBc3luY0Z1bmN0aW9uJ10sIGZuKVxuICB9XG4gIGlmIChvcHRpb25zICE9IG51bGwpIHtcbiAgICB2YWxpZGF0ZU9iamVjdChvcHRpb25zLCAnb3B0aW9ucycpXG4gIH1cbiAgaWYgKChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IG9wdGlvbnMuc2lnbmFsKSAhPSBudWxsKSB7XG4gICAgdmFsaWRhdGVBYm9ydFNpZ25hbChvcHRpb25zLnNpZ25hbCwgJ29wdGlvbnMuc2lnbmFsJylcbiAgfVxuICBsZXQgY29uY3VycmVuY3kgPSAxXG4gIGlmICgob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBvcHRpb25zLmNvbmN1cnJlbmN5KSAhPSBudWxsKSB7XG4gICAgY29uY3VycmVuY3kgPSBNYXRoRmxvb3Iob3B0aW9ucy5jb25jdXJyZW5jeSlcbiAgfVxuICBsZXQgaGlnaFdhdGVyTWFyayA9IGNvbmN1cnJlbmN5IC0gMVxuICBpZiAoKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogb3B0aW9ucy5oaWdoV2F0ZXJNYXJrKSAhPSBudWxsKSB7XG4gICAgaGlnaFdhdGVyTWFyayA9IE1hdGhGbG9vcihvcHRpb25zLmhpZ2hXYXRlck1hcmspXG4gIH1cbiAgdmFsaWRhdGVJbnRlZ2VyKGNvbmN1cnJlbmN5LCAnb3B0aW9ucy5jb25jdXJyZW5jeScsIDEpXG4gIHZhbGlkYXRlSW50ZWdlcihoaWdoV2F0ZXJNYXJrLCAnb3B0aW9ucy5oaWdoV2F0ZXJNYXJrJywgMClcbiAgaGlnaFdhdGVyTWFyayArPSBjb25jdXJyZW5jeVxuICByZXR1cm4gYXN5bmMgZnVuY3Rpb24qIG1hcCgpIHtcbiAgICBjb25zdCBzaWduYWwgPSByZXF1aXJlKCcuLi8uLi9vdXJzL3V0aWwnKS5BYm9ydFNpZ25hbEFueShcbiAgICAgIFtvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IG9wdGlvbnMuc2lnbmFsXS5maWx0ZXIoQm9vbGVhbilcbiAgICApXG4gICAgY29uc3Qgc3RyZWFtID0gdGhpc1xuICAgIGNvbnN0IHF1ZXVlID0gW11cbiAgICBjb25zdCBzaWduYWxPcHQgPSB7XG4gICAgICBzaWduYWxcbiAgICB9XG4gICAgbGV0IG5leHRcbiAgICBsZXQgcmVzdW1lXG4gICAgbGV0IGRvbmUgPSBmYWxzZVxuICAgIGxldCBjbnQgPSAwXG4gICAgZnVuY3Rpb24gb25DYXRjaCgpIHtcbiAgICAgIGRvbmUgPSB0cnVlXG4gICAgICBhZnRlckl0ZW1Qcm9jZXNzZWQoKVxuICAgIH1cbiAgICBmdW5jdGlvbiBhZnRlckl0ZW1Qcm9jZXNzZWQoKSB7XG4gICAgICBjbnQgLT0gMVxuICAgICAgbWF5YmVSZXN1bWUoKVxuICAgIH1cbiAgICBmdW5jdGlvbiBtYXliZVJlc3VtZSgpIHtcbiAgICAgIGlmIChyZXN1bWUgJiYgIWRvbmUgJiYgY250IDwgY29uY3VycmVuY3kgJiYgcXVldWUubGVuZ3RoIDwgaGlnaFdhdGVyTWFyaykge1xuICAgICAgICByZXN1bWUoKVxuICAgICAgICByZXN1bWUgPSBudWxsXG4gICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGZ1bmN0aW9uIHB1bXAoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBmb3IgYXdhaXQgKGxldCB2YWwgb2Ygc3RyZWFtKSB7XG4gICAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBBYm9ydEVycm9yKClcbiAgICAgICAgICB9XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhbCA9IGZuKHZhbCwgc2lnbmFsT3B0KVxuICAgICAgICAgICAgaWYgKHZhbCA9PT0ga0VtcHR5KSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YWwgPSBQcm9taXNlUmVzb2x2ZSh2YWwpXG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICB2YWwgPSBQcm9taXNlUmVqZWN0KGVycilcbiAgICAgICAgICB9XG4gICAgICAgICAgY250ICs9IDFcbiAgICAgICAgICBQcm9taXNlUHJvdG90eXBlVGhlbih2YWwsIGFmdGVySXRlbVByb2Nlc3NlZCwgb25DYXRjaClcbiAgICAgICAgICBxdWV1ZS5wdXNoKHZhbClcbiAgICAgICAgICBpZiAobmV4dCkge1xuICAgICAgICAgICAgbmV4dCgpXG4gICAgICAgICAgICBuZXh0ID0gbnVsbFxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIWRvbmUgJiYgKHF1ZXVlLmxlbmd0aCA+PSBoaWdoV2F0ZXJNYXJrIHx8IGNudCA+PSBjb25jdXJyZW5jeSkpIHtcbiAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICAgIHJlc3VtZSA9IHJlc29sdmVcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlLnB1c2goa0VvZilcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBjb25zdCB2YWwgPSBQcm9taXNlUmVqZWN0KGVycilcbiAgICAgICAgUHJvbWlzZVByb3RvdHlwZVRoZW4odmFsLCBhZnRlckl0ZW1Qcm9jZXNzZWQsIG9uQ2F0Y2gpXG4gICAgICAgIHF1ZXVlLnB1c2godmFsKVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgZG9uZSA9IHRydWVcbiAgICAgICAgaWYgKG5leHQpIHtcbiAgICAgICAgICBuZXh0KClcbiAgICAgICAgICBuZXh0ID0gbnVsbFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHB1bXAoKVxuICAgIHRyeSB7XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICB3aGlsZSAocXVldWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IHZhbCA9IGF3YWl0IHF1ZXVlWzBdXG4gICAgICAgICAgaWYgKHZhbCA9PT0ga0VvZikge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzaWduYWwuYWJvcnRlZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFib3J0RXJyb3IoKVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodmFsICE9PSBrRW1wdHkpIHtcbiAgICAgICAgICAgIHlpZWxkIHZhbFxuICAgICAgICAgIH1cbiAgICAgICAgICBxdWV1ZS5zaGlmdCgpXG4gICAgICAgICAgbWF5YmVSZXN1bWUoKVxuICAgICAgICB9XG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgbmV4dCA9IHJlc29sdmVcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgZG9uZSA9IHRydWVcbiAgICAgIGlmIChyZXN1bWUpIHtcbiAgICAgICAgcmVzdW1lKClcbiAgICAgICAgcmVzdW1lID0gbnVsbFxuICAgICAgfVxuICAgIH1cbiAgfS5jYWxsKHRoaXMpXG59XG5mdW5jdGlvbiBhc0luZGV4ZWRQYWlycyhvcHRpb25zID0gdW5kZWZpbmVkKSB7XG4gIGlmIChvcHRpb25zICE9IG51bGwpIHtcbiAgICB2YWxpZGF0ZU9iamVjdChvcHRpb25zLCAnb3B0aW9ucycpXG4gIH1cbiAgaWYgKChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IG9wdGlvbnMuc2lnbmFsKSAhPSBudWxsKSB7XG4gICAgdmFsaWRhdGVBYm9ydFNpZ25hbChvcHRpb25zLnNpZ25hbCwgJ29wdGlvbnMuc2lnbmFsJylcbiAgfVxuICByZXR1cm4gYXN5bmMgZnVuY3Rpb24qIGFzSW5kZXhlZFBhaXJzKCkge1xuICAgIGxldCBpbmRleCA9IDBcbiAgICBmb3IgYXdhaXQgKGNvbnN0IHZhbCBvZiB0aGlzKSB7XG4gICAgICB2YXIgX29wdGlvbnMkc2lnbmFsXG4gICAgICBpZiAoXG4gICAgICAgIG9wdGlvbnMgIT09IG51bGwgJiZcbiAgICAgICAgb3B0aW9ucyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIChfb3B0aW9ucyRzaWduYWwgPSBvcHRpb25zLnNpZ25hbCkgIT09IG51bGwgJiZcbiAgICAgICAgX29wdGlvbnMkc2lnbmFsICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgX29wdGlvbnMkc2lnbmFsLmFib3J0ZWRcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgQWJvcnRFcnJvcih7XG4gICAgICAgICAgY2F1c2U6IG9wdGlvbnMuc2lnbmFsLnJlYXNvblxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgeWllbGQgW2luZGV4KyssIHZhbF1cbiAgICB9XG4gIH0uY2FsbCh0aGlzKVxufVxuYXN5bmMgZnVuY3Rpb24gc29tZShmbiwgb3B0aW9ucyA9IHVuZGVmaW5lZCkge1xuICBmb3IgYXdhaXQgKGNvbnN0IHVudXNlZCBvZiBmaWx0ZXIuY2FsbCh0aGlzLCBmbiwgb3B0aW9ucykpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuYXN5bmMgZnVuY3Rpb24gZXZlcnkoZm4sIG9wdGlvbnMgPSB1bmRlZmluZWQpIHtcbiAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVFlQRSgnZm4nLCBbJ0Z1bmN0aW9uJywgJ0FzeW5jRnVuY3Rpb24nXSwgZm4pXG4gIH1cbiAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVfTW9yZ2FuJTI3c19sYXdzXG4gIHJldHVybiAhKGF3YWl0IHNvbWUuY2FsbChcbiAgICB0aGlzLFxuICAgIGFzeW5jICguLi5hcmdzKSA9PiB7XG4gICAgICByZXR1cm4gIShhd2FpdCBmbiguLi5hcmdzKSlcbiAgICB9LFxuICAgIG9wdGlvbnNcbiAgKSlcbn1cbmFzeW5jIGZ1bmN0aW9uIGZpbmQoZm4sIG9wdGlvbnMpIHtcbiAgZm9yIGF3YWl0IChjb25zdCByZXN1bHQgb2YgZmlsdGVyLmNhbGwodGhpcywgZm4sIG9wdGlvbnMpKSB7XG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG4gIHJldHVybiB1bmRlZmluZWRcbn1cbmFzeW5jIGZ1bmN0aW9uIGZvckVhY2goZm4sIG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVFlQRSgnZm4nLCBbJ0Z1bmN0aW9uJywgJ0FzeW5jRnVuY3Rpb24nXSwgZm4pXG4gIH1cbiAgYXN5bmMgZnVuY3Rpb24gZm9yRWFjaEZuKHZhbHVlLCBvcHRpb25zKSB7XG4gICAgYXdhaXQgZm4odmFsdWUsIG9wdGlvbnMpXG4gICAgcmV0dXJuIGtFbXB0eVxuICB9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBmb3IgYXdhaXQgKGNvbnN0IHVudXNlZCBvZiBtYXAuY2FsbCh0aGlzLCBmb3JFYWNoRm4sIG9wdGlvbnMpKTtcbn1cbmZ1bmN0aW9uIGZpbHRlcihmbiwgb3B0aW9ucykge1xuICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IEVSUl9JTlZBTElEX0FSR19UWVBFKCdmbicsIFsnRnVuY3Rpb24nLCAnQXN5bmNGdW5jdGlvbiddLCBmbilcbiAgfVxuICBhc3luYyBmdW5jdGlvbiBmaWx0ZXJGbih2YWx1ZSwgb3B0aW9ucykge1xuICAgIGlmIChhd2FpdCBmbih2YWx1ZSwgb3B0aW9ucykpIHtcbiAgICAgIHJldHVybiB2YWx1ZVxuICAgIH1cbiAgICByZXR1cm4ga0VtcHR5XG4gIH1cbiAgcmV0dXJuIG1hcC5jYWxsKHRoaXMsIGZpbHRlckZuLCBvcHRpb25zKVxufVxuXG4vLyBTcGVjaWZpYyB0byBwcm92aWRlIGJldHRlciBlcnJvciB0byByZWR1Y2Ugc2luY2UgdGhlIGFyZ3VtZW50IGlzIG9ubHlcbi8vIG1pc3NpbmcgaWYgdGhlIHN0cmVhbSBoYXMgbm8gaXRlbXMgaW4gaXQgLSBidXQgdGhlIGNvZGUgaXMgc3RpbGwgYXBwcm9wcmlhdGVcbmNsYXNzIFJlZHVjZUF3YXJlRXJyTWlzc2luZ0FyZ3MgZXh0ZW5kcyBFUlJfTUlTU0lOR19BUkdTIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoJ3JlZHVjZScpXG4gICAgdGhpcy5tZXNzYWdlID0gJ1JlZHVjZSBvZiBhbiBlbXB0eSBzdHJlYW0gcmVxdWlyZXMgYW4gaW5pdGlhbCB2YWx1ZSdcbiAgfVxufVxuYXN5bmMgZnVuY3Rpb24gcmVkdWNlKHJlZHVjZXIsIGluaXRpYWxWYWx1ZSwgb3B0aW9ucykge1xuICB2YXIgX29wdGlvbnMkc2lnbmFsMlxuICBpZiAodHlwZW9mIHJlZHVjZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUoJ3JlZHVjZXInLCBbJ0Z1bmN0aW9uJywgJ0FzeW5jRnVuY3Rpb24nXSwgcmVkdWNlcilcbiAgfVxuICBpZiAob3B0aW9ucyAhPSBudWxsKSB7XG4gICAgdmFsaWRhdGVPYmplY3Qob3B0aW9ucywgJ29wdGlvbnMnKVxuICB9XG4gIGlmICgob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBvcHRpb25zLnNpZ25hbCkgIT0gbnVsbCkge1xuICAgIHZhbGlkYXRlQWJvcnRTaWduYWwob3B0aW9ucy5zaWduYWwsICdvcHRpb25zLnNpZ25hbCcpXG4gIH1cbiAgbGV0IGhhc0luaXRpYWxWYWx1ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxXG4gIGlmIChcbiAgICBvcHRpb25zICE9PSBudWxsICYmXG4gICAgb3B0aW9ucyAhPT0gdW5kZWZpbmVkICYmXG4gICAgKF9vcHRpb25zJHNpZ25hbDIgPSBvcHRpb25zLnNpZ25hbCkgIT09IG51bGwgJiZcbiAgICBfb3B0aW9ucyRzaWduYWwyICE9PSB1bmRlZmluZWQgJiZcbiAgICBfb3B0aW9ucyRzaWduYWwyLmFib3J0ZWRcbiAgKSB7XG4gICAgY29uc3QgZXJyID0gbmV3IEFib3J0RXJyb3IodW5kZWZpbmVkLCB7XG4gICAgICBjYXVzZTogb3B0aW9ucy5zaWduYWwucmVhc29uXG4gICAgfSlcbiAgICB0aGlzLm9uY2UoJ2Vycm9yJywgKCkgPT4ge30pIC8vIFRoZSBlcnJvciBpcyBhbHJlYWR5IHByb3BhZ2F0ZWRcbiAgICBhd2FpdCBmaW5pc2hlZCh0aGlzLmRlc3Ryb3koZXJyKSlcbiAgICB0aHJvdyBlcnJcbiAgfVxuICBjb25zdCBhYyA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuICBjb25zdCBzaWduYWwgPSBhYy5zaWduYWxcbiAgaWYgKG9wdGlvbnMgIT09IG51bGwgJiYgb3B0aW9ucyAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbnMuc2lnbmFsKSB7XG4gICAgY29uc3Qgb3B0cyA9IHtcbiAgICAgIG9uY2U6IHRydWUsXG4gICAgICBba1dlYWtIYW5kbGVyXTogdGhpcyxcbiAgICAgIFtrUmVzaXN0U3RvcFByb3BhZ2F0aW9uXTogdHJ1ZVxuICAgIH1cbiAgICBvcHRpb25zLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsICgpID0+IGFjLmFib3J0KCksIG9wdHMpXG4gIH1cbiAgbGV0IGdvdEFueUl0ZW1Gcm9tU3RyZWFtID0gZmFsc2VcbiAgdHJ5IHtcbiAgICBmb3IgYXdhaXQgKGNvbnN0IHZhbHVlIG9mIHRoaXMpIHtcbiAgICAgIHZhciBfb3B0aW9ucyRzaWduYWwzXG4gICAgICBnb3RBbnlJdGVtRnJvbVN0cmVhbSA9IHRydWVcbiAgICAgIGlmIChcbiAgICAgICAgb3B0aW9ucyAhPT0gbnVsbCAmJlxuICAgICAgICBvcHRpb25zICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgKF9vcHRpb25zJHNpZ25hbDMgPSBvcHRpb25zLnNpZ25hbCkgIT09IG51bGwgJiZcbiAgICAgICAgX29wdGlvbnMkc2lnbmFsMyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIF9vcHRpb25zJHNpZ25hbDMuYWJvcnRlZFxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBBYm9ydEVycm9yKClcbiAgICAgIH1cbiAgICAgIGlmICghaGFzSW5pdGlhbFZhbHVlKSB7XG4gICAgICAgIGluaXRpYWxWYWx1ZSA9IHZhbHVlXG4gICAgICAgIGhhc0luaXRpYWxWYWx1ZSA9IHRydWVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluaXRpYWxWYWx1ZSA9IGF3YWl0IHJlZHVjZXIoaW5pdGlhbFZhbHVlLCB2YWx1ZSwge1xuICAgICAgICAgIHNpZ25hbFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIWdvdEFueUl0ZW1Gcm9tU3RyZWFtICYmICFoYXNJbml0aWFsVmFsdWUpIHtcbiAgICAgIHRocm93IG5ldyBSZWR1Y2VBd2FyZUVyck1pc3NpbmdBcmdzKClcbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgYWMuYWJvcnQoKVxuICB9XG4gIHJldHVybiBpbml0aWFsVmFsdWVcbn1cbmFzeW5jIGZ1bmN0aW9uIHRvQXJyYXkob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyAhPSBudWxsKSB7XG4gICAgdmFsaWRhdGVPYmplY3Qob3B0aW9ucywgJ29wdGlvbnMnKVxuICB9XG4gIGlmICgob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBvcHRpb25zLnNpZ25hbCkgIT0gbnVsbCkge1xuICAgIHZhbGlkYXRlQWJvcnRTaWduYWwob3B0aW9ucy5zaWduYWwsICdvcHRpb25zLnNpZ25hbCcpXG4gIH1cbiAgY29uc3QgcmVzdWx0ID0gW11cbiAgZm9yIGF3YWl0IChjb25zdCB2YWwgb2YgdGhpcykge1xuICAgIHZhciBfb3B0aW9ucyRzaWduYWw0XG4gICAgaWYgKFxuICAgICAgb3B0aW9ucyAhPT0gbnVsbCAmJlxuICAgICAgb3B0aW9ucyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAoX29wdGlvbnMkc2lnbmFsNCA9IG9wdGlvbnMuc2lnbmFsKSAhPT0gbnVsbCAmJlxuICAgICAgX29wdGlvbnMkc2lnbmFsNCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBfb3B0aW9ucyRzaWduYWw0LmFib3J0ZWRcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBBYm9ydEVycm9yKHVuZGVmaW5lZCwge1xuICAgICAgICBjYXVzZTogb3B0aW9ucy5zaWduYWwucmVhc29uXG4gICAgICB9KVxuICAgIH1cbiAgICBBcnJheVByb3RvdHlwZVB1c2gocmVzdWx0LCB2YWwpXG4gIH1cbiAgcmV0dXJuIHJlc3VsdFxufVxuZnVuY3Rpb24gZmxhdE1hcChmbiwgb3B0aW9ucykge1xuICBjb25zdCB2YWx1ZXMgPSBtYXAuY2FsbCh0aGlzLCBmbiwgb3B0aW9ucylcbiAgcmV0dXJuIGFzeW5jIGZ1bmN0aW9uKiBmbGF0TWFwKCkge1xuICAgIGZvciBhd2FpdCAoY29uc3QgdmFsIG9mIHZhbHVlcykge1xuICAgICAgeWllbGQqIHZhbFxuICAgIH1cbiAgfS5jYWxsKHRoaXMpXG59XG5mdW5jdGlvbiB0b0ludGVnZXJPckluZmluaXR5KG51bWJlcikge1xuICAvLyBXZSBjb2VyY2UgaGVyZSB0byBhbGlnbiB3aXRoIHRoZSBzcGVjXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWl0ZXJhdG9yLWhlbHBlcnMvaXNzdWVzLzE2OVxuICBudW1iZXIgPSBOdW1iZXIobnVtYmVyKVxuICBpZiAoTnVtYmVySXNOYU4obnVtYmVyKSkge1xuICAgIHJldHVybiAwXG4gIH1cbiAgaWYgKG51bWJlciA8IDApIHtcbiAgICB0aHJvdyBuZXcgRVJSX09VVF9PRl9SQU5HRSgnbnVtYmVyJywgJz49IDAnLCBudW1iZXIpXG4gIH1cbiAgcmV0dXJuIG51bWJlclxufVxuZnVuY3Rpb24gZHJvcChudW1iZXIsIG9wdGlvbnMgPSB1bmRlZmluZWQpIHtcbiAgaWYgKG9wdGlvbnMgIT0gbnVsbCkge1xuICAgIHZhbGlkYXRlT2JqZWN0KG9wdGlvbnMsICdvcHRpb25zJylcbiAgfVxuICBpZiAoKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogb3B0aW9ucy5zaWduYWwpICE9IG51bGwpIHtcbiAgICB2YWxpZGF0ZUFib3J0U2lnbmFsKG9wdGlvbnMuc2lnbmFsLCAnb3B0aW9ucy5zaWduYWwnKVxuICB9XG4gIG51bWJlciA9IHRvSW50ZWdlck9ySW5maW5pdHkobnVtYmVyKVxuICByZXR1cm4gYXN5bmMgZnVuY3Rpb24qIGRyb3AoKSB7XG4gICAgdmFyIF9vcHRpb25zJHNpZ25hbDVcbiAgICBpZiAoXG4gICAgICBvcHRpb25zICE9PSBudWxsICYmXG4gICAgICBvcHRpb25zICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIChfb3B0aW9ucyRzaWduYWw1ID0gb3B0aW9ucy5zaWduYWwpICE9PSBudWxsICYmXG4gICAgICBfb3B0aW9ucyRzaWduYWw1ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIF9vcHRpb25zJHNpZ25hbDUuYWJvcnRlZFxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEFib3J0RXJyb3IoKVxuICAgIH1cbiAgICBmb3IgYXdhaXQgKGNvbnN0IHZhbCBvZiB0aGlzKSB7XG4gICAgICB2YXIgX29wdGlvbnMkc2lnbmFsNlxuICAgICAgaWYgKFxuICAgICAgICBvcHRpb25zICE9PSBudWxsICYmXG4gICAgICAgIG9wdGlvbnMgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAoX29wdGlvbnMkc2lnbmFsNiA9IG9wdGlvbnMuc2lnbmFsKSAhPT0gbnVsbCAmJlxuICAgICAgICBfb3B0aW9ucyRzaWduYWw2ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgX29wdGlvbnMkc2lnbmFsNi5hYm9ydGVkXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEFib3J0RXJyb3IoKVxuICAgICAgfVxuICAgICAgaWYgKG51bWJlci0tIDw9IDApIHtcbiAgICAgICAgeWllbGQgdmFsXG4gICAgICB9XG4gICAgfVxuICB9LmNhbGwodGhpcylcbn1cbmZ1bmN0aW9uIHRha2UobnVtYmVyLCBvcHRpb25zID0gdW5kZWZpbmVkKSB7XG4gIGlmIChvcHRpb25zICE9IG51bGwpIHtcbiAgICB2YWxpZGF0ZU9iamVjdChvcHRpb25zLCAnb3B0aW9ucycpXG4gIH1cbiAgaWYgKChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IG9wdGlvbnMuc2lnbmFsKSAhPSBudWxsKSB7XG4gICAgdmFsaWRhdGVBYm9ydFNpZ25hbChvcHRpb25zLnNpZ25hbCwgJ29wdGlvbnMuc2lnbmFsJylcbiAgfVxuICBudW1iZXIgPSB0b0ludGVnZXJPckluZmluaXR5KG51bWJlcilcbiAgcmV0dXJuIGFzeW5jIGZ1bmN0aW9uKiB0YWtlKCkge1xuICAgIHZhciBfb3B0aW9ucyRzaWduYWw3XG4gICAgaWYgKFxuICAgICAgb3B0aW9ucyAhPT0gbnVsbCAmJlxuICAgICAgb3B0aW9ucyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAoX29wdGlvbnMkc2lnbmFsNyA9IG9wdGlvbnMuc2lnbmFsKSAhPT0gbnVsbCAmJlxuICAgICAgX29wdGlvbnMkc2lnbmFsNyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBfb3B0aW9ucyRzaWduYWw3LmFib3J0ZWRcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBBYm9ydEVycm9yKClcbiAgICB9XG4gICAgZm9yIGF3YWl0IChjb25zdCB2YWwgb2YgdGhpcykge1xuICAgICAgdmFyIF9vcHRpb25zJHNpZ25hbDhcbiAgICAgIGlmIChcbiAgICAgICAgb3B0aW9ucyAhPT0gbnVsbCAmJlxuICAgICAgICBvcHRpb25zICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgKF9vcHRpb25zJHNpZ25hbDggPSBvcHRpb25zLnNpZ25hbCkgIT09IG51bGwgJiZcbiAgICAgICAgX29wdGlvbnMkc2lnbmFsOCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIF9vcHRpb25zJHNpZ25hbDguYWJvcnRlZFxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBBYm9ydEVycm9yKClcbiAgICAgIH1cbiAgICAgIGlmIChudW1iZXItLSA+IDApIHtcbiAgICAgICAgeWllbGQgdmFsXG4gICAgICB9XG5cbiAgICAgIC8vIERvbid0IGdldCBhbm90aGVyIGl0ZW0gZnJvbSBpdGVyYXRvciBpbiBjYXNlIHdlIHJlYWNoZWQgdGhlIGVuZFxuICAgICAgaWYgKG51bWJlciA8PSAwKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgfS5jYWxsKHRoaXMpXG59XG5tb2R1bGUuZXhwb3J0cy5zdHJlYW1SZXR1cm5pbmdPcGVyYXRvcnMgPSB7XG4gIGFzSW5kZXhlZFBhaXJzOiBkZXByZWNhdGUoYXNJbmRleGVkUGFpcnMsICdyZWFkYWJsZS5hc0luZGV4ZWRQYWlycyB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi4nKSxcbiAgZHJvcCxcbiAgZmlsdGVyLFxuICBmbGF0TWFwLFxuICBtYXAsXG4gIHRha2UsXG4gIGNvbXBvc2Vcbn1cbm1vZHVsZS5leHBvcnRzLnByb21pc2VSZXR1cm5pbmdPcGVyYXRvcnMgPSB7XG4gIGV2ZXJ5LFxuICBmb3JFYWNoLFxuICByZWR1Y2UsXG4gIHRvQXJyYXksXG4gIHNvbWUsXG4gIGZpbmRcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7IEFycmF5UHJvdG90eXBlUG9wLCBQcm9taXNlIH0gPSByZXF1aXJlKCcuLi9vdXJzL3ByaW1vcmRpYWxzJylcbmNvbnN0IHsgaXNJdGVyYWJsZSwgaXNOb2RlU3RyZWFtLCBpc1dlYlN0cmVhbSB9ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWwvc3RyZWFtcy91dGlscycpXG5jb25zdCB7IHBpcGVsaW5lSW1wbDogcGwgfSA9IHJlcXVpcmUoJy4uL2ludGVybmFsL3N0cmVhbXMvcGlwZWxpbmUnKVxuY29uc3QgeyBmaW5pc2hlZCB9ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWwvc3RyZWFtcy9lbmQtb2Ytc3RyZWFtJylcbnJlcXVpcmUoJy4uLy4uL2xpYi9zdHJlYW0uanMnKVxuZnVuY3Rpb24gcGlwZWxpbmUoLi4uc3RyZWFtcykge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGxldCBzaWduYWxcbiAgICBsZXQgZW5kXG4gICAgY29uc3QgbGFzdEFyZyA9IHN0cmVhbXNbc3RyZWFtcy5sZW5ndGggLSAxXVxuICAgIGlmIChcbiAgICAgIGxhc3RBcmcgJiZcbiAgICAgIHR5cGVvZiBsYXN0QXJnID09PSAnb2JqZWN0JyAmJlxuICAgICAgIWlzTm9kZVN0cmVhbShsYXN0QXJnKSAmJlxuICAgICAgIWlzSXRlcmFibGUobGFzdEFyZykgJiZcbiAgICAgICFpc1dlYlN0cmVhbShsYXN0QXJnKVxuICAgICkge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IEFycmF5UHJvdG90eXBlUG9wKHN0cmVhbXMpXG4gICAgICBzaWduYWwgPSBvcHRpb25zLnNpZ25hbFxuICAgICAgZW5kID0gb3B0aW9ucy5lbmRcbiAgICB9XG4gICAgcGwoXG4gICAgICBzdHJlYW1zLFxuICAgICAgKGVyciwgdmFsdWUpID0+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJlamVjdChlcnIpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZSh2YWx1ZSlcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc2lnbmFsLFxuICAgICAgICBlbmRcbiAgICAgIH1cbiAgICApXG4gIH0pXG59XG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZmluaXNoZWQsXG4gIHBpcGVsaW5lXG59XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuJ3VzZSBzdHJpY3QnXG5cbi8qIHJlcGxhY2VtZW50IHN0YXJ0ICovXG5cbmNvbnN0IHsgQnVmZmVyIH0gPSByZXF1aXJlKCdidWZmZXInKVxuXG4vKiByZXBsYWNlbWVudCBlbmQgKi9cblxuY29uc3QgeyBPYmplY3REZWZpbmVQcm9wZXJ0eSwgT2JqZWN0S2V5cywgUmVmbGVjdEFwcGx5IH0gPSByZXF1aXJlKCcuL291cnMvcHJpbW9yZGlhbHMnKVxuY29uc3Qge1xuICBwcm9taXNpZnk6IHsgY3VzdG9tOiBjdXN0b21Qcm9taXNpZnkgfVxufSA9IHJlcXVpcmUoJy4vb3Vycy91dGlsJylcbmNvbnN0IHsgc3RyZWFtUmV0dXJuaW5nT3BlcmF0b3JzLCBwcm9taXNlUmV0dXJuaW5nT3BlcmF0b3JzIH0gPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvb3BlcmF0b3JzJylcbmNvbnN0IHtcbiAgY29kZXM6IHsgRVJSX0lMTEVHQUxfQ09OU1RSVUNUT1IgfVxufSA9IHJlcXVpcmUoJy4vb3Vycy9lcnJvcnMnKVxuY29uc3QgY29tcG9zZSA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9jb21wb3NlJylcbmNvbnN0IHsgc2V0RGVmYXVsdEhpZ2hXYXRlck1hcmssIGdldERlZmF1bHRIaWdoV2F0ZXJNYXJrIH0gPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvc3RhdGUnKVxuY29uc3QgeyBwaXBlbGluZSB9ID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL3BpcGVsaW5lJylcbmNvbnN0IHsgZGVzdHJveWVyIH0gPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvZGVzdHJveScpXG5jb25zdCBlb3MgPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvZW5kLW9mLXN0cmVhbScpXG5jb25zdCBpbnRlcm5hbEJ1ZmZlciA9IHt9XG5jb25zdCBwcm9taXNlcyA9IHJlcXVpcmUoJy4vc3RyZWFtL3Byb21pc2VzJylcbmNvbnN0IHV0aWxzID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL3V0aWxzJylcbmNvbnN0IFN0cmVhbSA9IChtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9sZWdhY3knKS5TdHJlYW0pXG5TdHJlYW0uaXNEZXN0cm95ZWQgPSB1dGlscy5pc0Rlc3Ryb3llZFxuU3RyZWFtLmlzRGlzdHVyYmVkID0gdXRpbHMuaXNEaXN0dXJiZWRcblN0cmVhbS5pc0Vycm9yZWQgPSB1dGlscy5pc0Vycm9yZWRcblN0cmVhbS5pc1JlYWRhYmxlID0gdXRpbHMuaXNSZWFkYWJsZVxuU3RyZWFtLmlzV3JpdGFibGUgPSB1dGlscy5pc1dyaXRhYmxlXG5TdHJlYW0uUmVhZGFibGUgPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvcmVhZGFibGUnKVxuZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0S2V5cyhzdHJlYW1SZXR1cm5pbmdPcGVyYXRvcnMpKSB7XG4gIGNvbnN0IG9wID0gc3RyZWFtUmV0dXJuaW5nT3BlcmF0b3JzW2tleV1cbiAgZnVuY3Rpb24gZm4oLi4uYXJncykge1xuICAgIGlmIChuZXcudGFyZ2V0KSB7XG4gICAgICB0aHJvdyBFUlJfSUxMRUdBTF9DT05TVFJVQ1RPUigpXG4gICAgfVxuICAgIHJldHVybiBTdHJlYW0uUmVhZGFibGUuZnJvbShSZWZsZWN0QXBwbHkob3AsIHRoaXMsIGFyZ3MpKVxuICB9XG4gIE9iamVjdERlZmluZVByb3BlcnR5KGZuLCAnbmFtZScsIHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgdmFsdWU6IG9wLm5hbWVcbiAgfSlcbiAgT2JqZWN0RGVmaW5lUHJvcGVydHkoZm4sICdsZW5ndGgnLCB7XG4gICAgX19wcm90b19fOiBudWxsLFxuICAgIHZhbHVlOiBvcC5sZW5ndGhcbiAgfSlcbiAgT2JqZWN0RGVmaW5lUHJvcGVydHkoU3RyZWFtLlJlYWRhYmxlLnByb3RvdHlwZSwga2V5LCB7XG4gICAgX19wcm90b19fOiBudWxsLFxuICAgIHZhbHVlOiBmbixcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgd3JpdGFibGU6IHRydWVcbiAgfSlcbn1cbmZvciAoY29uc3Qga2V5IG9mIE9iamVjdEtleXMocHJvbWlzZVJldHVybmluZ09wZXJhdG9ycykpIHtcbiAgY29uc3Qgb3AgPSBwcm9taXNlUmV0dXJuaW5nT3BlcmF0b3JzW2tleV1cbiAgZnVuY3Rpb24gZm4oLi4uYXJncykge1xuICAgIGlmIChuZXcudGFyZ2V0KSB7XG4gICAgICB0aHJvdyBFUlJfSUxMRUdBTF9DT05TVFJVQ1RPUigpXG4gICAgfVxuICAgIHJldHVybiBSZWZsZWN0QXBwbHkob3AsIHRoaXMsIGFyZ3MpXG4gIH1cbiAgT2JqZWN0RGVmaW5lUHJvcGVydHkoZm4sICduYW1lJywge1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICB2YWx1ZTogb3AubmFtZVxuICB9KVxuICBPYmplY3REZWZpbmVQcm9wZXJ0eShmbiwgJ2xlbmd0aCcsIHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgdmFsdWU6IG9wLmxlbmd0aFxuICB9KVxuICBPYmplY3REZWZpbmVQcm9wZXJ0eShTdHJlYW0uUmVhZGFibGUucHJvdG90eXBlLCBrZXksIHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgdmFsdWU6IGZuLFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB3cml0YWJsZTogdHJ1ZVxuICB9KVxufVxuU3RyZWFtLldyaXRhYmxlID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL3dyaXRhYmxlJylcblN0cmVhbS5EdXBsZXggPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvZHVwbGV4JylcblN0cmVhbS5UcmFuc2Zvcm0gPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvdHJhbnNmb3JtJylcblN0cmVhbS5QYXNzVGhyb3VnaCA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9wYXNzdGhyb3VnaCcpXG5TdHJlYW0ucGlwZWxpbmUgPSBwaXBlbGluZVxuY29uc3QgeyBhZGRBYm9ydFNpZ25hbCB9ID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL2FkZC1hYm9ydC1zaWduYWwnKVxuU3RyZWFtLmFkZEFib3J0U2lnbmFsID0gYWRkQWJvcnRTaWduYWxcblN0cmVhbS5maW5pc2hlZCA9IGVvc1xuU3RyZWFtLmRlc3Ryb3kgPSBkZXN0cm95ZXJcblN0cmVhbS5jb21wb3NlID0gY29tcG9zZVxuU3RyZWFtLnNldERlZmF1bHRIaWdoV2F0ZXJNYXJrID0gc2V0RGVmYXVsdEhpZ2hXYXRlck1hcmtcblN0cmVhbS5nZXREZWZhdWx0SGlnaFdhdGVyTWFyayA9IGdldERlZmF1bHRIaWdoV2F0ZXJNYXJrXG5PYmplY3REZWZpbmVQcm9wZXJ0eShTdHJlYW0sICdwcm9taXNlcycsIHtcbiAgX19wcm90b19fOiBudWxsLFxuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldCgpIHtcbiAgICByZXR1cm4gcHJvbWlzZXNcbiAgfVxufSlcbk9iamVjdERlZmluZVByb3BlcnR5KHBpcGVsaW5lLCBjdXN0b21Qcm9taXNpZnksIHtcbiAgX19wcm90b19fOiBudWxsLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQoKSB7XG4gICAgcmV0dXJuIHByb21pc2VzLnBpcGVsaW5lXG4gIH1cbn0pXG5PYmplY3REZWZpbmVQcm9wZXJ0eShlb3MsIGN1c3RvbVByb21pc2lmeSwge1xuICBfX3Byb3RvX186IG51bGwsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldCgpIHtcbiAgICByZXR1cm4gcHJvbWlzZXMuZmluaXNoZWRcbiAgfVxufSlcblxuLy8gQmFja3dhcmRzLWNvbXBhdCB3aXRoIG5vZGUgMC40LnhcblN0cmVhbS5TdHJlYW0gPSBTdHJlYW1cblN0cmVhbS5faXNVaW50OEFycmF5ID0gZnVuY3Rpb24gaXNVaW50OEFycmF5KHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXlcbn1cblN0cmVhbS5fdWludDhBcnJheVRvQnVmZmVyID0gZnVuY3Rpb24gX3VpbnQ4QXJyYXlUb0J1ZmZlcihjaHVuaykge1xuICByZXR1cm4gQnVmZmVyLmZyb20oY2h1bmsuYnVmZmVyLCBjaHVuay5ieXRlT2Zmc2V0LCBjaHVuay5ieXRlTGVuZ3RoKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IEN1c3RvbVN0cmVhbSA9IHJlcXVpcmUoJy4uL3N0cmVhbScpXG5jb25zdCBwcm9taXNlcyA9IHJlcXVpcmUoJy4uL3N0cmVhbS9wcm9taXNlcycpXG5jb25zdCBvcmlnaW5hbERlc3Ryb3kgPSBDdXN0b21TdHJlYW0uUmVhZGFibGUuZGVzdHJveVxubW9kdWxlLmV4cG9ydHMgPSBDdXN0b21TdHJlYW0uUmVhZGFibGVcblxuLy8gRXhwbGljaXQgZXhwb3J0IG5hbWluZyBpcyBuZWVkZWQgZm9yIEVTTVxubW9kdWxlLmV4cG9ydHMuX3VpbnQ4QXJyYXlUb0J1ZmZlciA9IEN1c3RvbVN0cmVhbS5fdWludDhBcnJheVRvQnVmZmVyXG5tb2R1bGUuZXhwb3J0cy5faXNVaW50OEFycmF5ID0gQ3VzdG9tU3RyZWFtLl9pc1VpbnQ4QXJyYXlcbm1vZHVsZS5leHBvcnRzLmlzRGlzdHVyYmVkID0gQ3VzdG9tU3RyZWFtLmlzRGlzdHVyYmVkXG5tb2R1bGUuZXhwb3J0cy5pc0Vycm9yZWQgPSBDdXN0b21TdHJlYW0uaXNFcnJvcmVkXG5tb2R1bGUuZXhwb3J0cy5pc1JlYWRhYmxlID0gQ3VzdG9tU3RyZWFtLmlzUmVhZGFibGVcbm1vZHVsZS5leHBvcnRzLlJlYWRhYmxlID0gQ3VzdG9tU3RyZWFtLlJlYWRhYmxlXG5tb2R1bGUuZXhwb3J0cy5Xcml0YWJsZSA9IEN1c3RvbVN0cmVhbS5Xcml0YWJsZVxubW9kdWxlLmV4cG9ydHMuRHVwbGV4ID0gQ3VzdG9tU3RyZWFtLkR1cGxleFxubW9kdWxlLmV4cG9ydHMuVHJhbnNmb3JtID0gQ3VzdG9tU3RyZWFtLlRyYW5zZm9ybVxubW9kdWxlLmV4cG9ydHMuUGFzc1Rocm91Z2ggPSBDdXN0b21TdHJlYW0uUGFzc1Rocm91Z2hcbm1vZHVsZS5leHBvcnRzLmFkZEFib3J0U2lnbmFsID0gQ3VzdG9tU3RyZWFtLmFkZEFib3J0U2lnbmFsXG5tb2R1bGUuZXhwb3J0cy5maW5pc2hlZCA9IEN1c3RvbVN0cmVhbS5maW5pc2hlZFxubW9kdWxlLmV4cG9ydHMuZGVzdHJveSA9IEN1c3RvbVN0cmVhbS5kZXN0cm95XG5tb2R1bGUuZXhwb3J0cy5kZXN0cm95ID0gb3JpZ2luYWxEZXN0cm95XG5tb2R1bGUuZXhwb3J0cy5waXBlbGluZSA9IEN1c3RvbVN0cmVhbS5waXBlbGluZVxubW9kdWxlLmV4cG9ydHMuY29tcG9zZSA9IEN1c3RvbVN0cmVhbS5jb21wb3NlXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoQ3VzdG9tU3RyZWFtLCAncHJvbWlzZXMnLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0KCkge1xuICAgIHJldHVybiBwcm9taXNlc1xuICB9XG59KVxubW9kdWxlLmV4cG9ydHMuU3RyZWFtID0gQ3VzdG9tU3RyZWFtLlN0cmVhbVxuXG4vLyBBbGxvdyBkZWZhdWx0IGltcG9ydGluZ1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IG1vZHVsZS5leHBvcnRzXG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuV3JpdGFibGUgPSBleHBvcnRzLlJlYWRhYmxlID0gdm9pZCAwO1xudmFyIG5vZGVfc3RyZWFtXzEgPSByZXF1aXJlKFwibm9kZTpzdHJlYW1cIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZWFkYWJsZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gbm9kZV9zdHJlYW1fMS5SZWFkYWJsZTsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIldyaXRhYmxlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBub2RlX3N0cmVhbV8xLldyaXRhYmxlOyB9IH0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3RyZWFtLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5FdmVudEVtaXR0ZXIgPSB2b2lkIDA7XG52YXIgbm9kZV9ldmVudHNfMSA9IHJlcXVpcmUoXCJub2RlOmV2ZW50c1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkV2ZW50RW1pdHRlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gbm9kZV9ldmVudHNfMS5FdmVudEVtaXR0ZXI7IH0gfSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1ldmVudHMuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmdldFdyaXRlU3luY0FyZ3MgPSBleHBvcnRzLmdldFdyaXRlQXJncyA9IGV4cG9ydHMuYnVmVG9VaW50OCA9IHZvaWQgMDtcbmV4cG9ydHMucHJvbWlzaWZ5ID0gcHJvbWlzaWZ5O1xuZXhwb3J0cy52YWxpZGF0ZUNhbGxiYWNrID0gdmFsaWRhdGVDYWxsYmFjaztcbmV4cG9ydHMubW9kZVRvTnVtYmVyID0gbW9kZVRvTnVtYmVyO1xuZXhwb3J0cy5udWxsQ2hlY2sgPSBudWxsQ2hlY2s7XG5leHBvcnRzLnBhdGhUb0ZpbGVuYW1lID0gcGF0aFRvRmlsZW5hbWU7XG5leHBvcnRzLmNyZWF0ZUVycm9yID0gY3JlYXRlRXJyb3I7XG5leHBvcnRzLmNyZWF0ZVN0YXRFcnJvciA9IGNyZWF0ZVN0YXRFcnJvcjtcbmV4cG9ydHMuZ2VuUm5kU3RyNiA9IGdlblJuZFN0cjY7XG5leHBvcnRzLmZsYWdzVG9OdW1iZXIgPSBmbGFnc1RvTnVtYmVyO1xuZXhwb3J0cy5zdHJlYW1Ub0J1ZmZlciA9IHN0cmVhbVRvQnVmZmVyO1xuZXhwb3J0cy5idWZmZXJUb0VuY29kaW5nID0gYnVmZmVyVG9FbmNvZGluZztcbmV4cG9ydHMuaXNSZWFkYWJsZVN0cmVhbSA9IGlzUmVhZGFibGVTdHJlYW07XG5jb25zdCBmc19ub2RlX3V0aWxzXzEgPSByZXF1aXJlKFwiQGpzb25qb3kuY29tL2ZzLW5vZGUtdXRpbHNcIik7XG5jb25zdCBlcnJvcnMgPSByZXF1aXJlKFwiQGpzb25qb3kuY29tL2ZzLW5vZGUtYnVpbHRpbnMvbGliL2ludGVybmFsL2Vycm9yc1wiKTtcbmNvbnN0IGJ1ZmZlcl8xID0gcmVxdWlyZShcIkBqc29uam95LmNvbS9mcy1ub2RlLWJ1aWx0aW5zL2xpYi9pbnRlcm5hbC9idWZmZXJcIik7XG5jb25zdCBmc19jb3JlXzEgPSByZXF1aXJlKFwiQGpzb25qb3kuY29tL2ZzLWNvcmVcIik7XG5mdW5jdGlvbiBwcm9taXNpZnkoZnMsIGZuLCBnZXRSZXN1bHQgPSBpbnB1dCA9PiBpbnB1dCkge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBmc1tmbl0uYmluZChmcykoLi4uYXJncywgKGVycm9yLCByZXN1bHQpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnJvcilcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKGdldFJlc3VsdChyZXN1bHQpKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiB2YWxpZGF0ZUNhbGxiYWNrKGNhbGxiYWNrKSB7XG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgdGhyb3cgVHlwZUVycm9yKGZzX25vZGVfdXRpbHNfMS5FUlJTVFIuQ0IpO1xuICAgIHJldHVybiBjYWxsYmFjaztcbn1cbmZ1bmN0aW9uIF9tb2RlVG9OdW1iZXIobW9kZSwgZGVmKSB7XG4gICAgaWYgKHR5cGVvZiBtb2RlID09PSAnbnVtYmVyJylcbiAgICAgICAgcmV0dXJuIG1vZGU7XG4gICAgaWYgKHR5cGVvZiBtb2RlID09PSAnc3RyaW5nJylcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KG1vZGUsIDgpO1xuICAgIGlmIChkZWYpXG4gICAgICAgIHJldHVybiBtb2RlVG9OdW1iZXIoZGVmKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuZnVuY3Rpb24gbW9kZVRvTnVtYmVyKG1vZGUsIGRlZikge1xuICAgIGNvbnN0IHJlc3VsdCA9IF9tb2RlVG9OdW1iZXIobW9kZSwgZGVmKTtcbiAgICBpZiAodHlwZW9mIHJlc3VsdCAhPT0gJ251bWJlcicgfHwgaXNOYU4ocmVzdWx0KSlcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihmc19ub2RlX3V0aWxzXzEuRVJSU1RSLk1PREVfSU5UKTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gbnVsbENoZWNrKHBhdGgsIGNhbGxiYWNrKSB7XG4gICAgaWYgKCgnJyArIHBhdGgpLmluZGV4T2YoJ1xcdTAwMDAnKSAhPT0gLTEpIHtcbiAgICAgICAgY29uc3QgZXIgPSBuZXcgRXJyb3IoJ1BhdGggbXVzdCBiZSBhIHN0cmluZyB3aXRob3V0IG51bGwgYnl0ZXMnKTtcbiAgICAgICAgZXIuY29kZSA9ICdFTk9FTlQnO1xuICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgdGhyb3cgZXI7XG4gICAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgICAgICAgIGNhbGxiYWNrKGVyKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5mdW5jdGlvbiBnZXRQYXRoRnJvbVVSTFBvc2l4KHVybCkge1xuICAgIGlmICh1cmwuaG9zdG5hbWUgIT09ICcnKSB7XG4gICAgICAgIHRocm93IG5ldyBlcnJvcnMuVHlwZUVycm9yKCdFUlJfSU5WQUxJRF9GSUxFX1VSTF9IT1NUJywgcHJvY2Vzcy5wbGF0Zm9ybSk7XG4gICAgfVxuICAgIGNvbnN0IHBhdGhuYW1lID0gdXJsLnBhdGhuYW1lO1xuICAgIGZvciAobGV0IG4gPSAwOyBuIDwgcGF0aG5hbWUubGVuZ3RoOyBuKyspIHtcbiAgICAgICAgaWYgKHBhdGhuYW1lW25dID09PSAnJScpIHtcbiAgICAgICAgICAgIGNvbnN0IHRoaXJkID0gcGF0aG5hbWUuY29kZVBvaW50QXQobiArIDIpIHwgMHgyMDtcbiAgICAgICAgICAgIGlmIChwYXRobmFtZVtuICsgMV0gPT09ICcyJyAmJiB0aGlyZCA9PT0gMTAyKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5UeXBlRXJyb3IoJ0VSUl9JTlZBTElEX0ZJTEVfVVJMX1BBVEgnLCAnbXVzdCBub3QgaW5jbHVkZSBlbmNvZGVkIC8gY2hhcmFjdGVycycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQocGF0aG5hbWUpO1xufVxuZnVuY3Rpb24gcGF0aFRvRmlsZW5hbWUocGF0aCkge1xuICAgIGlmIChwYXRoIGluc3RhbmNlb2YgVWludDhBcnJheSkge1xuICAgICAgICBwYXRoID0gKDAsIGJ1ZmZlcl8xLmJ1ZmZlckZyb20pKHBhdGgpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHBhdGggIT09ICdzdHJpbmcnICYmICFidWZmZXJfMS5CdWZmZXIuaXNCdWZmZXIocGF0aCkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICghKHBhdGggaW5zdGFuY2VvZiByZXF1aXJlKCd1cmwnKS5VUkwpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoZnNfbm9kZV91dGlsc18xLkVSUlNUUi5QQVRIX1NUUik7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihmc19ub2RlX3V0aWxzXzEuRVJSU1RSLlBBVEhfU1RSKTtcbiAgICAgICAgfVxuICAgICAgICBwYXRoID0gZ2V0UGF0aEZyb21VUkxQb3NpeChwYXRoKTtcbiAgICB9XG4gICAgY29uc3QgcGF0aFN0cmluZyA9IFN0cmluZyhwYXRoKTtcbiAgICBudWxsQ2hlY2socGF0aFN0cmluZyk7XG4gICAgLy8gcmV0dXJuIHNsYXNoKHBhdGhTdHJpbmcpO1xuICAgIHJldHVybiBwYXRoU3RyaW5nO1xufVxuY29uc3QgRU5PRU5UID0gJ0VOT0VOVCc7XG5jb25zdCBFQkFERiA9ICdFQkFERic7XG5jb25zdCBFSU5WQUwgPSAnRUlOVkFMJztcbmNvbnN0IEVQRVJNID0gJ0VQRVJNJztcbmNvbnN0IEVQUk9UTyA9ICdFUFJPVE8nO1xuY29uc3QgRUVYSVNUID0gJ0VFWElTVCc7XG5jb25zdCBFTk9URElSID0gJ0VOT1RESVInO1xuY29uc3QgRU1GSUxFID0gJ0VNRklMRSc7XG5jb25zdCBFQUNDRVMgPSAnRUFDQ0VTJztcbmNvbnN0IEVJU0RJUiA9ICdFSVNESVInO1xuY29uc3QgRU5PVEVNUFRZID0gJ0VOT1RFTVBUWSc7XG5jb25zdCBFTk9TWVMgPSAnRU5PU1lTJztcbmNvbnN0IEVSUl9GU19FSVNESVIgPSAnRVJSX0ZTX0VJU0RJUic7XG5jb25zdCBFUlJfT1VUX09GX1JBTkdFID0gJ0VSUl9PVVRfT0ZfUkFOR0UnO1xuZnVuY3Rpb24gZm9ybWF0RXJyb3IoZXJyb3JDb2RlLCBmdW5jID0gJycsIHBhdGggPSAnJywgcGF0aDIgPSAnJykge1xuICAgIGxldCBwYXRoRm9ybWF0dGVkID0gJyc7XG4gICAgaWYgKHBhdGgpXG4gICAgICAgIHBhdGhGb3JtYXR0ZWQgPSBgICcke3BhdGh9J2A7XG4gICAgaWYgKHBhdGgyKVxuICAgICAgICBwYXRoRm9ybWF0dGVkICs9IGAgLT4gJyR7cGF0aDJ9J2A7XG4gICAgc3dpdGNoIChlcnJvckNvZGUpIHtcbiAgICAgICAgY2FzZSBFTk9FTlQ6XG4gICAgICAgICAgICByZXR1cm4gYEVOT0VOVDogbm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSwgJHtmdW5jfSR7cGF0aEZvcm1hdHRlZH1gO1xuICAgICAgICBjYXNlIEVCQURGOlxuICAgICAgICAgICAgcmV0dXJuIGBFQkFERjogYmFkIGZpbGUgZGVzY3JpcHRvciwgJHtmdW5jfSR7cGF0aEZvcm1hdHRlZH1gO1xuICAgICAgICBjYXNlIEVJTlZBTDpcbiAgICAgICAgICAgIHJldHVybiBgRUlOVkFMOiBpbnZhbGlkIGFyZ3VtZW50LCAke2Z1bmN9JHtwYXRoRm9ybWF0dGVkfWA7XG4gICAgICAgIGNhc2UgRVBFUk06XG4gICAgICAgICAgICByZXR1cm4gYEVQRVJNOiBvcGVyYXRpb24gbm90IHBlcm1pdHRlZCwgJHtmdW5jfSR7cGF0aEZvcm1hdHRlZH1gO1xuICAgICAgICBjYXNlIEVQUk9UTzpcbiAgICAgICAgICAgIHJldHVybiBgRVBST1RPOiBwcm90b2NvbCBlcnJvciwgJHtmdW5jfSR7cGF0aEZvcm1hdHRlZH1gO1xuICAgICAgICBjYXNlIEVFWElTVDpcbiAgICAgICAgICAgIHJldHVybiBgRUVYSVNUOiBmaWxlIGFscmVhZHkgZXhpc3RzLCAke2Z1bmN9JHtwYXRoRm9ybWF0dGVkfWA7XG4gICAgICAgIGNhc2UgRU5PVERJUjpcbiAgICAgICAgICAgIHJldHVybiBgRU5PVERJUjogbm90IGEgZGlyZWN0b3J5LCAke2Z1bmN9JHtwYXRoRm9ybWF0dGVkfWA7XG4gICAgICAgIGNhc2UgRUlTRElSOlxuICAgICAgICAgICAgcmV0dXJuIGBFSVNESVI6IGlsbGVnYWwgb3BlcmF0aW9uIG9uIGEgZGlyZWN0b3J5LCAke2Z1bmN9JHtwYXRoRm9ybWF0dGVkfWA7XG4gICAgICAgIGNhc2UgRUFDQ0VTOlxuICAgICAgICAgICAgcmV0dXJuIGBFQUNDRVM6IHBlcm1pc3Npb24gZGVuaWVkLCAke2Z1bmN9JHtwYXRoRm9ybWF0dGVkfWA7XG4gICAgICAgIGNhc2UgRU5PVEVNUFRZOlxuICAgICAgICAgICAgcmV0dXJuIGBFTk9URU1QVFk6IGRpcmVjdG9yeSBub3QgZW1wdHksICR7ZnVuY30ke3BhdGhGb3JtYXR0ZWR9YDtcbiAgICAgICAgY2FzZSBFTUZJTEU6XG4gICAgICAgICAgICByZXR1cm4gYEVNRklMRTogdG9vIG1hbnkgb3BlbiBmaWxlcywgJHtmdW5jfSR7cGF0aEZvcm1hdHRlZH1gO1xuICAgICAgICBjYXNlIEVOT1NZUzpcbiAgICAgICAgICAgIHJldHVybiBgRU5PU1lTOiBmdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQsICR7ZnVuY30ke3BhdGhGb3JtYXR0ZWR9YDtcbiAgICAgICAgY2FzZSBFUlJfRlNfRUlTRElSOlxuICAgICAgICAgICAgcmV0dXJuIGBbRVJSX0ZTX0VJU0RJUl06IFBhdGggaXMgYSBkaXJlY3Rvcnk6ICR7ZnVuY30gcmV0dXJuZWQgRUlTRElSIChpcyBhIGRpcmVjdG9yeSkgJHtwYXRofWA7XG4gICAgICAgIGNhc2UgRVJSX09VVF9PRl9SQU5HRTpcbiAgICAgICAgICAgIHJldHVybiBgW0VSUl9PVVRfT0ZfUkFOR0VdOiB2YWx1ZSBvdXQgb2YgcmFuZ2UsICR7ZnVuY30ke3BhdGhGb3JtYXR0ZWR9YDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBgJHtlcnJvckNvZGV9OiBlcnJvciBvY2N1cnJlZCwgJHtmdW5jfSR7cGF0aEZvcm1hdHRlZH1gO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGNyZWF0ZUVycm9yKGVycm9yQ29kZSwgZnVuYyA9ICcnLCBwYXRoID0gJycsIHBhdGgyID0gJycsIENvbnN0cnVjdG9yID0gRXJyb3IpIHtcbiAgICBjb25zdCBlcnJvciA9IG5ldyBDb25zdHJ1Y3Rvcihmb3JtYXRFcnJvcihlcnJvckNvZGUsIGZ1bmMsIHBhdGgsIHBhdGgyKSk7XG4gICAgZXJyb3IuY29kZSA9IGVycm9yQ29kZTtcbiAgICBpZiAocGF0aCkge1xuICAgICAgICBlcnJvci5wYXRoID0gcGF0aDtcbiAgICB9XG4gICAgcmV0dXJuIGVycm9yO1xufVxuZnVuY3Rpb24gY3JlYXRlU3RhdEVycm9yKGVycm9yQ29kZSwgZnVuYyA9ICcnLCBwYXRoID0gJycsIHBhdGgyID0gJycpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBjb2RlOiBlcnJvckNvZGUsXG4gICAgICAgIG1lc3NhZ2U6IGZvcm1hdEVycm9yKGVycm9yQ29kZSwgZnVuYywgcGF0aCwgcGF0aDIpLFxuICAgICAgICBwYXRoLFxuICAgICAgICB0b0Vycm9yKCkge1xuICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IodGhpcy5tZXNzYWdlKTtcbiAgICAgICAgICAgIGVycm9yLmNvZGUgPSB0aGlzLmNvZGU7XG4gICAgICAgICAgICBpZiAodGhpcy5wYXRoKSB7XG4gICAgICAgICAgICAgICAgZXJyb3IucGF0aCA9IHRoaXMucGF0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgfSxcbiAgICB9O1xufVxuZnVuY3Rpb24gZ2VuUm5kU3RyNigpIHtcbiAgICByZXR1cm4gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiwgOCkucGFkRW5kKDYsICcwJyk7XG59XG5mdW5jdGlvbiBmbGFnc1RvTnVtYmVyKGZsYWdzKSB7XG4gICAgaWYgKHR5cGVvZiBmbGFncyA9PT0gJ251bWJlcicpXG4gICAgICAgIHJldHVybiBmbGFncztcbiAgICBpZiAodHlwZW9mIGZsYWdzID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCBmbGFnc051bSA9IGZzX25vZGVfdXRpbHNfMS5GTEFHU1tmbGFnc107XG4gICAgICAgIGlmICh0eXBlb2YgZmxhZ3NOdW0gIT09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgcmV0dXJuIGZsYWdzTnVtO1xuICAgIH1cbiAgICAvLyB0aHJvdyBuZXcgVHlwZUVycm9yKGZvcm1hdEVycm9yKEVSUlNUUl9GTEFHKGZsYWdzKSkpO1xuICAgIHRocm93IG5ldyBlcnJvcnMuVHlwZUVycm9yKCdFUlJfSU5WQUxJRF9PUFRfVkFMVUUnLCAnZmxhZ3MnLCBmbGFncyk7XG59XG5mdW5jdGlvbiBzdHJlYW1Ub0J1ZmZlcihzdHJlYW0pIHtcbiAgICBjb25zdCBjaHVua3MgPSBbXTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBzdHJlYW0ub24oJ2RhdGEnLCBjaHVuayA9PiBjaHVua3MucHVzaChjaHVuaykpO1xuICAgICAgICBzdHJlYW0ub24oJ2VuZCcsICgpID0+IHJlc29sdmUoYnVmZmVyXzEuQnVmZmVyLmNvbmNhdChjaHVua3MpKSk7XG4gICAgICAgIHN0cmVhbS5vbignZXJyb3InLCByZWplY3QpO1xuICAgIH0pO1xufVxuY29uc3QgYnVmVG9VaW50OCA9IChidWYpID0+IG5ldyBVaW50OEFycmF5KGJ1Zi5idWZmZXIsIGJ1Zi5ieXRlT2Zmc2V0LCBidWYuYnl0ZUxlbmd0aCk7XG5leHBvcnRzLmJ1ZlRvVWludDggPSBidWZUb1VpbnQ4O1xuY29uc3QgZ2V0V3JpdGVBcmdzID0gKGZkLCBhLCBiLCBjLCBkLCBlKSA9PiB7XG4gICAgKDAsIGZzX2NvcmVfMS52YWxpZGF0ZUZkKShmZCk7XG4gICAgbGV0IG9mZnNldCA9IDA7XG4gICAgbGV0IGxlbmd0aDtcbiAgICBsZXQgcG9zaXRpb24gPSBudWxsO1xuICAgIGxldCBlbmNvZGluZztcbiAgICBsZXQgY2FsbGJhY2s7XG4gICAgY29uc3QgdGlwYSA9IHR5cGVvZiBhO1xuICAgIGNvbnN0IHRpcGIgPSB0eXBlb2YgYjtcbiAgICBjb25zdCB0aXBjID0gdHlwZW9mIGM7XG4gICAgY29uc3QgdGlwZCA9IHR5cGVvZiBkO1xuICAgIGlmICh0aXBhICE9PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAodGlwYiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FsbGJhY2sgPSBiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRpcGMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IGIgfCAwO1xuICAgICAgICAgICAgY2FsbGJhY2sgPSBjO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRpcGQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IGIgfCAwO1xuICAgICAgICAgICAgbGVuZ3RoID0gYztcbiAgICAgICAgICAgIGNhbGxiYWNrID0gZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG9mZnNldCA9IGIgfCAwO1xuICAgICAgICAgICAgbGVuZ3RoID0gYztcbiAgICAgICAgICAgIHBvc2l0aW9uID0gZDtcbiAgICAgICAgICAgIGNhbGxiYWNrID0gZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgaWYgKHRpcGIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhbGxiYWNrID0gYjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aXBjID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwb3NpdGlvbiA9IGI7XG4gICAgICAgICAgICBjYWxsYmFjayA9IGM7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGlwZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcG9zaXRpb24gPSBiO1xuICAgICAgICAgICAgZW5jb2RpbmcgPSBjO1xuICAgICAgICAgICAgY2FsbGJhY2sgPSBkO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGJ1ZiA9ICgwLCBmc19jb3JlXzEuZGF0YVRvQnVmZmVyKShhLCBlbmNvZGluZyk7XG4gICAgaWYgKHRpcGEgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbGVuZ3RoID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgIGxlbmd0aCA9IGJ1Zi5sZW5ndGg7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBvZmZzZXQgPSAwO1xuICAgICAgICBsZW5ndGggPSBidWYubGVuZ3RoO1xuICAgIH1cbiAgICBjb25zdCBjYiA9IHZhbGlkYXRlQ2FsbGJhY2soY2FsbGJhY2spO1xuICAgIHJldHVybiBbZmQsIHRpcGEgPT09ICdzdHJpbmcnLCBidWYsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbiwgY2JdO1xufTtcbmV4cG9ydHMuZ2V0V3JpdGVBcmdzID0gZ2V0V3JpdGVBcmdzO1xuY29uc3QgZ2V0V3JpdGVTeW5jQXJncyA9IChmZCwgYSwgYiwgYywgZCkgPT4ge1xuICAgICgwLCBmc19jb3JlXzEudmFsaWRhdGVGZCkoZmQpO1xuICAgIGxldCBlbmNvZGluZztcbiAgICBsZXQgb2Zmc2V0O1xuICAgIGxldCBsZW5ndGg7XG4gICAgbGV0IHBvc2l0aW9uO1xuICAgIGNvbnN0IGlzQnVmZmVyID0gdHlwZW9mIGEgIT09ICdzdHJpbmcnO1xuICAgIGlmIChpc0J1ZmZlcikge1xuICAgICAgICBvZmZzZXQgPSAoYiB8fCAwKSB8IDA7XG4gICAgICAgIGxlbmd0aCA9IGM7XG4gICAgICAgIHBvc2l0aW9uID0gZDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHBvc2l0aW9uID0gYjtcbiAgICAgICAgZW5jb2RpbmcgPSBjO1xuICAgIH1cbiAgICBjb25zdCBidWYgPSAoMCwgZnNfY29yZV8xLmRhdGFUb0J1ZmZlcikoYSwgZW5jb2RpbmcpO1xuICAgIGlmIChpc0J1ZmZlcikge1xuICAgICAgICBpZiAodHlwZW9mIGxlbmd0aCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGxlbmd0aCA9IGJ1Zi5sZW5ndGg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIG9mZnNldCA9IDA7XG4gICAgICAgIGxlbmd0aCA9IGJ1Zi5sZW5ndGg7XG4gICAgfVxuICAgIHJldHVybiBbZmQsIGJ1Ziwgb2Zmc2V0IHx8IDAsIGxlbmd0aCwgcG9zaXRpb25dO1xufTtcbmV4cG9ydHMuZ2V0V3JpdGVTeW5jQXJncyA9IGdldFdyaXRlU3luY0FyZ3M7XG5mdW5jdGlvbiBidWZmZXJUb0VuY29kaW5nKGJ1ZmZlciwgZW5jb2RpbmcpIHtcbiAgICBpZiAoIWVuY29kaW5nIHx8IGVuY29kaW5nID09PSAnYnVmZmVyJylcbiAgICAgICAgcmV0dXJuIGJ1ZmZlcjtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiBidWZmZXIudG9TdHJpbmcoZW5jb2RpbmcpO1xufVxuZnVuY3Rpb24gaXNSZWFkYWJsZVN0cmVhbShzdHJlYW0pIHtcbiAgICByZXR1cm4gKHN0cmVhbSAhPT0gbnVsbCAmJlxuICAgICAgICB0eXBlb2Ygc3RyZWFtID09PSAnb2JqZWN0JyAmJlxuICAgICAgICB0eXBlb2Ygc3RyZWFtLnBpcGUgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgICAgdHlwZW9mIHN0cmVhbS5vbiA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgICBzdHJlYW0ucmVhZGFibGUgPT09IHRydWUpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRpbC5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuRmlsZUhhbmRsZSA9IHZvaWQgMDtcbmNvbnN0IHV0aWxfMSA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5jb25zdCBldmVudHNfMSA9IHJlcXVpcmUoXCJAanNvbmpveS5jb20vZnMtbm9kZS1idWlsdGlucy9saWIvZXZlbnRzXCIpO1xuY2xhc3MgRmlsZUhhbmRsZSBleHRlbmRzIGV2ZW50c18xLkV2ZW50RW1pdHRlciB7XG4gICAgY29uc3RydWN0b3IoZnMsIGZkKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMucmVmcyA9IDE7XG4gICAgICAgIHRoaXMuY2xvc2VQcm9taXNlID0gbnVsbDtcbiAgICAgICAgdGhpcy5wb3NpdGlvbiA9IDA7XG4gICAgICAgIHRoaXMucmVhZGFibGVXZWJTdHJlYW1Mb2NrZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5mcyA9IGZzO1xuICAgICAgICB0aGlzLmZkID0gZmQ7XG4gICAgfVxuICAgIGdldEFzeW5jSWQoKSB7XG4gICAgICAgIC8vIFJldHVybiBhIHVuaXF1ZSBhc3luYyBJRCBmb3IgdGhpcyBmaWxlIGhhbmRsZVxuICAgICAgICAvLyBJbiBhIHJlYWwgaW1wbGVtZW50YXRpb24sIHRoaXMgd291bGQgYmUgcHJvdmlkZWQgYnkgdGhlIHVuZGVybHlpbmcgc3lzdGVtXG4gICAgICAgIHJldHVybiB0aGlzLmZkO1xuICAgIH1cbiAgICBhcHBlbmRGaWxlKGRhdGEsIG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuICgwLCB1dGlsXzEucHJvbWlzaWZ5KSh0aGlzLmZzLCAnYXBwZW5kRmlsZScpKHRoaXMuZmQsIGRhdGEsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBjaG1vZChtb2RlKSB7XG4gICAgICAgIHJldHVybiAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ2ZjaG1vZCcpKHRoaXMuZmQsIG1vZGUpO1xuICAgIH1cbiAgICBjaG93bih1aWQsIGdpZCkge1xuICAgICAgICByZXR1cm4gKDAsIHV0aWxfMS5wcm9taXNpZnkpKHRoaXMuZnMsICdmY2hvd24nKSh0aGlzLmZkLCB1aWQsIGdpZCk7XG4gICAgfVxuICAgIGNsb3NlKCkge1xuICAgICAgICBpZiAodGhpcy5mZCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jbG9zZVByb21pc2UpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNsb3NlUHJvbWlzZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlZnMtLTtcbiAgICAgICAgaWYgKHRoaXMucmVmcyA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudEZkID0gdGhpcy5mZDtcbiAgICAgICAgICAgIHRoaXMuZmQgPSAtMTtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VQcm9taXNlID0gKDAsIHV0aWxfMS5wcm9taXNpZnkpKHRoaXMuZnMsICdjbG9zZScpKGN1cnJlbnRGZCkuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZVByb21pc2UgPSBudWxsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlUmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZVJlamVjdCA9IHJlamVjdDtcbiAgICAgICAgICAgIH0pLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VQcm9taXNlID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlUmVqZWN0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VSZXNvbHZlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbWl0KCdjbG9zZScpO1xuICAgICAgICByZXR1cm4gdGhpcy5jbG9zZVByb21pc2U7XG4gICAgfVxuICAgIGRhdGFzeW5jKCkge1xuICAgICAgICByZXR1cm4gKDAsIHV0aWxfMS5wcm9taXNpZnkpKHRoaXMuZnMsICdmZGF0YXN5bmMnKSh0aGlzLmZkKTtcbiAgICB9XG4gICAgY3JlYXRlUmVhZFN0cmVhbShvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZzLmNyZWF0ZVJlYWRTdHJlYW0oJycsIHsgLi4ub3B0aW9ucywgZmQ6IHRoaXMgfSk7XG4gICAgfVxuICAgIGNyZWF0ZVdyaXRlU3RyZWFtKG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnMuY3JlYXRlV3JpdGVTdHJlYW0oJycsIHsgLi4ub3B0aW9ucywgZmQ6IHRoaXMgfSk7XG4gICAgfVxuICAgIHJlYWRhYmxlV2ViU3RyZWFtKG9wdGlvbnMgPSB7fSkge1xuICAgICAgICBjb25zdCB7IHR5cGUgPSAnYnl0ZXMnLCBhdXRvQ2xvc2UgPSBmYWxzZSB9ID0gb3B0aW9ucztcbiAgICAgICAgbGV0IHBvc2l0aW9uID0gMDtcbiAgICAgICAgaWYgKHRoaXMuZmQgPT09IC0xKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBGaWxlSGFuZGxlIGlzIGNsb3NlZCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmNsb3NlUHJvbWlzZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgRmlsZUhhbmRsZSBpcyBjbG9zaW5nJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmVhZGFibGVXZWJTdHJlYW1Mb2NrZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQW4gZXJyb3Igd2lsbCBiZSB0aHJvd24gaWYgdGhpcyBtZXRob2QgaXMgY2FsbGVkIG1vcmUgdGhhbiBvbmNlIG9yIGlzIGNhbGxlZCBhZnRlciB0aGUgRmlsZUhhbmRsZSBpcyBjbG9zZWQgb3IgY2xvc2luZy4nKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlYWRhYmxlV2ViU3RyZWFtTG9ja2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5yZWYoKTtcbiAgICAgICAgY29uc3QgdW5sb2NrQW5kQ2xlYW51cCA9ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVhZGFibGVXZWJTdHJlYW1Mb2NrZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudW5yZWYoKTtcbiAgICAgICAgICAgIGlmIChhdXRvQ2xvc2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBJZ25vcmUgY2xvc2UgZXJyb3JzIGluIGNsZWFudXBcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7XG4gICAgICAgICAgICB0eXBlOiB0eXBlID09PSAnYnl0ZXMnID8gJ2J5dGVzJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGF1dG9BbGxvY2F0ZUNodW5rU2l6ZTogMTYzODQsXG4gICAgICAgICAgICBwdWxsOiBhc3luYyAoY29udHJvbGxlcikgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZpZXcgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0Py52aWV3O1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXZpZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZhbGxiYWNrIGZvciB3aGVuIEJZT0IgaXMgbm90IGF2YWlsYWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoMTYzODQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5yZWFkKGJ1ZmZlciwgMCwgYnVmZmVyLmxlbmd0aCwgcG9zaXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5ieXRlc1JlYWQgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5sb2NrQW5kQ2xlYW51cCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uICs9IHJlc3VsdC5ieXRlc1JlYWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoYnVmZmVyLnNsaWNlKDAsIHJlc3VsdC5ieXRlc1JlYWQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJlYWQodmlldywgdmlldy5ieXRlT2Zmc2V0LCB2aWV3LmJ5dGVMZW5ndGgsIHBvc2l0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5ieXRlc1JlYWQgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVubG9ja0FuZENsZWFudXAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiArPSByZXN1bHQuYnl0ZXNSZWFkO1xuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0LnJlc3BvbmQocmVzdWx0LmJ5dGVzUmVhZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgdW5sb2NrQW5kQ2xlYW51cCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjYW5jZWw6IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICB1bmxvY2tBbmRDbGVhbnVwKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgcmVhZChidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbikge1xuICAgICAgICBjb25zdCByZWFkUG9zaXRpb24gPSBwb3NpdGlvbiAhPT0gbnVsbCAmJiBwb3NpdGlvbiAhPT0gdW5kZWZpbmVkID8gcG9zaXRpb24gOiB0aGlzLnBvc2l0aW9uO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ3JlYWQnLCBieXRlc1JlYWQgPT4gKHsgYnl0ZXNSZWFkLCBidWZmZXIgfSkpKHRoaXMuZmQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHJlYWRQb3NpdGlvbik7XG4gICAgICAgIC8vIFVwZGF0ZSBpbnRlcm5hbCBwb3NpdGlvbiBvbmx5IGlmIHBvc2l0aW9uIHdhcyBudWxsL3VuZGVmaW5lZFxuICAgICAgICBpZiAocG9zaXRpb24gPT09IG51bGwgfHwgcG9zaXRpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiArPSByZXN1bHQuYnl0ZXNSZWFkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIHJlYWR2KGJ1ZmZlcnMsIHBvc2l0aW9uKSB7XG4gICAgICAgIHJldHVybiAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ3JlYWR2JywgYnl0ZXNSZWFkID0+ICh7IGJ5dGVzUmVhZCwgYnVmZmVycyB9KSkodGhpcy5mZCwgYnVmZmVycywgcG9zaXRpb24pO1xuICAgIH1cbiAgICByZWFkRmlsZShvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ3JlYWRGaWxlJykodGhpcy5mZCwgb3B0aW9ucyk7XG4gICAgfVxuICAgIHN0YXQob3B0aW9ucykge1xuICAgICAgICByZXR1cm4gKDAsIHV0aWxfMS5wcm9taXNpZnkpKHRoaXMuZnMsICdmc3RhdCcpKHRoaXMuZmQsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBzeW5jKCkge1xuICAgICAgICByZXR1cm4gKDAsIHV0aWxfMS5wcm9taXNpZnkpKHRoaXMuZnMsICdmc3luYycpKHRoaXMuZmQpO1xuICAgIH1cbiAgICB0cnVuY2F0ZShsZW4pIHtcbiAgICAgICAgcmV0dXJuICgwLCB1dGlsXzEucHJvbWlzaWZ5KSh0aGlzLmZzLCAnZnRydW5jYXRlJykodGhpcy5mZCwgbGVuKTtcbiAgICB9XG4gICAgdXRpbWVzKGF0aW1lLCBtdGltZSkge1xuICAgICAgICByZXR1cm4gKDAsIHV0aWxfMS5wcm9taXNpZnkpKHRoaXMuZnMsICdmdXRpbWVzJykodGhpcy5mZCwgYXRpbWUsIG10aW1lKTtcbiAgICB9XG4gICAgYXN5bmMgd3JpdGUoYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pIHtcbiAgICAgICAgY29uc3QgdXNlSW50ZXJuYWxQb3NpdGlvbiA9IHR5cGVvZiBwb3NpdGlvbiAhPT0gJ251bWJlcic7XG4gICAgICAgIGNvbnN0IHdyaXRlUG9zaXRpb24gPSB1c2VJbnRlcm5hbFBvc2l0aW9uID8gdGhpcy5wb3NpdGlvbiA6IHBvc2l0aW9uO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ3dyaXRlJywgYnl0ZXNXcml0dGVuID0+ICh7IGJ5dGVzV3JpdHRlbiwgYnVmZmVyIH0pKSh0aGlzLmZkLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCB3cml0ZVBvc2l0aW9uKTtcbiAgICAgICAgLy8gVXBkYXRlIGludGVybmFsIHBvc2l0aW9uIG9ubHkgaWYgcG9zaXRpb24gd2FzIG51bGwvdW5kZWZpbmVkXG4gICAgICAgIGlmICh1c2VJbnRlcm5hbFBvc2l0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uICs9IHJlc3VsdC5ieXRlc1dyaXR0ZW47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgd3JpdGV2KGJ1ZmZlcnMsIHBvc2l0aW9uKSB7XG4gICAgICAgIHJldHVybiAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ3dyaXRldicsIGJ5dGVzV3JpdHRlbiA9PiAoeyBieXRlc1dyaXR0ZW4sIGJ1ZmZlcnMgfSkpKHRoaXMuZmQsIGJ1ZmZlcnMsIHBvc2l0aW9uKTtcbiAgICB9XG4gICAgd3JpdGVGaWxlKGRhdGEsIG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuICgwLCB1dGlsXzEucHJvbWlzaWZ5KSh0aGlzLmZzLCAnd3JpdGVGaWxlJykodGhpcy5mZCwgZGF0YSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIEltcGxlbWVudCBTeW1ib2wuYXN5bmNEaXNwb3NlIGlmIGF2YWlsYWJsZSAoRVMyMDIzKylcbiAgICBhc3luYyBbU3ltYm9sLmFzeW5jRGlzcG9zZV0oKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gICAgcmVmKCkge1xuICAgICAgICB0aGlzLnJlZnMrKztcbiAgICB9XG4gICAgdW5yZWYoKSB7XG4gICAgICAgIHRoaXMucmVmcy0tO1xuICAgICAgICBpZiAodGhpcy5yZWZzID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmZkID0gLTE7XG4gICAgICAgICAgICBpZiAodGhpcy5jbG9zZVJlc29sdmUpIHtcbiAgICAgICAgICAgICAgICAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ2Nsb3NlJykodGhpcy5mZCkudGhlbih0aGlzLmNsb3NlUmVzb2x2ZSwgdGhpcy5jbG9zZVJlamVjdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnRzLkZpbGVIYW5kbGUgPSBGaWxlSGFuZGxlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RmlsZUhhbmRsZS5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuRnNQcm9taXNlcyA9IHZvaWQgMDtcbmNvbnN0IHV0aWxfMSA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5jb25zdCBmc19ub2RlX3V0aWxzXzEgPSByZXF1aXJlKFwiQGpzb25qb3kuY29tL2ZzLW5vZGUtdXRpbHNcIik7XG4vLyBBc3luY0l0ZXJhdG9yIGltcGxlbWVudGF0aW9uIGZvciBwcm9taXNlcy53YXRjaFxuY2xhc3MgRlNXYXRjaEFzeW5jSXRlcmF0b3Ige1xuICAgIGNvbnN0cnVjdG9yKGZzLCBwYXRoLCBvcHRpb25zID0ge30pIHtcbiAgICAgICAgdGhpcy5mcyA9IGZzO1xuICAgICAgICB0aGlzLnBhdGggPSBwYXRoO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICB0aGlzLmV2ZW50UXVldWUgPSBbXTtcbiAgICAgICAgdGhpcy5yZXNvbHZlUXVldWUgPSBbXTtcbiAgICAgICAgdGhpcy5maW5pc2hlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm1heFF1ZXVlID0gb3B0aW9ucy5tYXhRdWV1ZSB8fCAyMDQ4O1xuICAgICAgICB0aGlzLm92ZXJmbG93ID0gb3B0aW9ucy5vdmVyZmxvdyB8fCAnaWdub3JlJztcbiAgICAgICAgdGhpcy5zdGFydFdhdGNoaW5nKCk7XG4gICAgICAgIC8vIEhhbmRsZSBBYm9ydFNpZ25hbFxuICAgICAgICBpZiAob3B0aW9ucy5zaWduYWwpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maW5pc2goKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcHRpb25zLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbmlzaCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc3RhcnRXYXRjaGluZygpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMud2F0Y2hlciA9IHRoaXMuZnMud2F0Y2godGhpcy5wYXRoLCB0aGlzLm9wdGlvbnMsIChldmVudFR5cGUsIGZpbGVuYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbnF1ZXVlRXZlbnQoeyBldmVudFR5cGUsIGZpbGVuYW1lIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAvLyBJZiB3ZSBjYW4ndCBzdGFydCB3YXRjaGluZywgZmluaXNoIGltbWVkaWF0ZWx5XG4gICAgICAgICAgICB0aGlzLmZpbmlzaCgpO1xuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZW5xdWV1ZUV2ZW50KGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmZpbmlzaGVkKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAvLyBIYW5kbGUgcXVldWUgb3ZlcmZsb3dcbiAgICAgICAgaWYgKHRoaXMuZXZlbnRRdWV1ZS5sZW5ndGggPj0gdGhpcy5tYXhRdWV1ZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMub3ZlcmZsb3cgPT09ICd0aHJvdycpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihgV2F0Y2ggcXVldWUgb3ZlcmZsb3c6IG1vcmUgdGhhbiAke3RoaXMubWF4UXVldWV9IGV2ZW50cyBxdWV1ZWRgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbmlzaChlcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gJ2lnbm9yZScgLSBkcm9wIHRoZSBvbGRlc3QgZXZlbnRcbiAgICAgICAgICAgICAgICB0aGlzLmV2ZW50UXVldWUuc2hpZnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmV2ZW50UXVldWUucHVzaChldmVudCk7XG4gICAgICAgIC8vIElmIHRoZXJlJ3MgYSB3YWl0aW5nIHByb21pc2UsIHJlc29sdmUgaXRcbiAgICAgICAgaWYgKHRoaXMucmVzb2x2ZVF1ZXVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHsgcmVzb2x2ZSB9ID0gdGhpcy5yZXNvbHZlUXVldWUuc2hpZnQoKTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRFdmVudCA9IHRoaXMuZXZlbnRRdWV1ZS5zaGlmdCgpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7IHZhbHVlOiBuZXh0RXZlbnQsIGRvbmU6IGZhbHNlIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZpbmlzaChlcnJvcikge1xuICAgICAgICBpZiAodGhpcy5maW5pc2hlZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdGhpcy5maW5pc2hlZCA9IHRydWU7XG4gICAgICAgIGlmICh0aGlzLndhdGNoZXIpIHtcbiAgICAgICAgICAgIHRoaXMud2F0Y2hlci5jbG9zZSgpO1xuICAgICAgICAgICAgdGhpcy53YXRjaGVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZXNvbHZlIG9yIHJlamVjdCBhbGwgcGVuZGluZyBwcm9taXNlc1xuICAgICAgICB3aGlsZSAodGhpcy5yZXNvbHZlUXVldWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgeyByZXNvbHZlLCByZWplY3QgfSA9IHRoaXMucmVzb2x2ZVF1ZXVlLnNoaWZ0KCk7XG4gICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgbmV4dCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZmluaXNoZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiB3ZSBoYXZlIHF1ZXVlZCBldmVudHMsIHJldHVybiBvbmVcbiAgICAgICAgaWYgKHRoaXMuZXZlbnRRdWV1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBldmVudCA9IHRoaXMuZXZlbnRRdWV1ZS5zaGlmdCgpO1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IGV2ZW50LCBkb25lOiBmYWxzZSB9O1xuICAgICAgICB9XG4gICAgICAgIC8vIE90aGVyd2lzZSwgd2FpdCBmb3IgdGhlIG5leHQgZXZlbnRcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVzb2x2ZVF1ZXVlLnB1c2goeyByZXNvbHZlLCByZWplY3QgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyByZXR1cm4oKSB7XG4gICAgICAgIHRoaXMuZmluaXNoKCk7XG4gICAgICAgIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgICB9XG4gICAgYXN5bmMgdGhyb3coZXJyb3IpIHtcbiAgICAgICAgdGhpcy5maW5pc2goZXJyb3IpO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxufVxuY2xhc3MgRnNQcm9taXNlcyB7XG4gICAgY29uc3RydWN0b3IoZnMsIEZpbGVIYW5kbGUpIHtcbiAgICAgICAgdGhpcy5mcyA9IGZzO1xuICAgICAgICB0aGlzLkZpbGVIYW5kbGUgPSBGaWxlSGFuZGxlO1xuICAgICAgICB0aGlzLmNvbnN0YW50cyA9IGZzX25vZGVfdXRpbHNfMS5jb25zdGFudHM7XG4gICAgICAgIHRoaXMuY3AgPSAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ2NwJyk7XG4gICAgICAgIHRoaXMub3BlbmRpciA9ICgwLCB1dGlsXzEucHJvbWlzaWZ5KSh0aGlzLmZzLCAnb3BlbmRpcicpO1xuICAgICAgICB0aGlzLnN0YXRmcyA9ICgwLCB1dGlsXzEucHJvbWlzaWZ5KSh0aGlzLmZzLCAnc3RhdGZzJyk7XG4gICAgICAgIHRoaXMubHV0aW1lcyA9ICgwLCB1dGlsXzEucHJvbWlzaWZ5KSh0aGlzLmZzLCAnbHV0aW1lcycpO1xuICAgICAgICB0aGlzLmdsb2IgPSAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ2dsb2InKTtcbiAgICAgICAgdGhpcy5hY2Nlc3MgPSAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ2FjY2VzcycpO1xuICAgICAgICB0aGlzLmNobW9kID0gKDAsIHV0aWxfMS5wcm9taXNpZnkpKHRoaXMuZnMsICdjaG1vZCcpO1xuICAgICAgICB0aGlzLmNob3duID0gKDAsIHV0aWxfMS5wcm9taXNpZnkpKHRoaXMuZnMsICdjaG93bicpO1xuICAgICAgICB0aGlzLmNvcHlGaWxlID0gKDAsIHV0aWxfMS5wcm9taXNpZnkpKHRoaXMuZnMsICdjb3B5RmlsZScpO1xuICAgICAgICB0aGlzLmxjaG1vZCA9ICgwLCB1dGlsXzEucHJvbWlzaWZ5KSh0aGlzLmZzLCAnbGNobW9kJyk7XG4gICAgICAgIHRoaXMubGNob3duID0gKDAsIHV0aWxfMS5wcm9taXNpZnkpKHRoaXMuZnMsICdsY2hvd24nKTtcbiAgICAgICAgdGhpcy5saW5rID0gKDAsIHV0aWxfMS5wcm9taXNpZnkpKHRoaXMuZnMsICdsaW5rJyk7XG4gICAgICAgIHRoaXMubHN0YXQgPSAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ2xzdGF0Jyk7XG4gICAgICAgIHRoaXMubWtkaXIgPSAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ21rZGlyJyk7XG4gICAgICAgIHRoaXMubWtkdGVtcCA9ICgwLCB1dGlsXzEucHJvbWlzaWZ5KSh0aGlzLmZzLCAnbWtkdGVtcCcpO1xuICAgICAgICB0aGlzLnJlYWRkaXIgPSAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ3JlYWRkaXInKTtcbiAgICAgICAgdGhpcy5yZWFkbGluayA9ICgwLCB1dGlsXzEucHJvbWlzaWZ5KSh0aGlzLmZzLCAncmVhZGxpbmsnKTtcbiAgICAgICAgdGhpcy5yZWFscGF0aCA9ICgwLCB1dGlsXzEucHJvbWlzaWZ5KSh0aGlzLmZzLCAncmVhbHBhdGgnKTtcbiAgICAgICAgdGhpcy5yZW5hbWUgPSAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ3JlbmFtZScpO1xuICAgICAgICB0aGlzLnJtZGlyID0gKDAsIHV0aWxfMS5wcm9taXNpZnkpKHRoaXMuZnMsICdybWRpcicpO1xuICAgICAgICB0aGlzLnJtID0gKDAsIHV0aWxfMS5wcm9taXNpZnkpKHRoaXMuZnMsICdybScpO1xuICAgICAgICB0aGlzLnN0YXQgPSAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ3N0YXQnKTtcbiAgICAgICAgdGhpcy5zeW1saW5rID0gKDAsIHV0aWxfMS5wcm9taXNpZnkpKHRoaXMuZnMsICdzeW1saW5rJyk7XG4gICAgICAgIHRoaXMudHJ1bmNhdGUgPSAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ3RydW5jYXRlJyk7XG4gICAgICAgIHRoaXMudW5saW5rID0gKDAsIHV0aWxfMS5wcm9taXNpZnkpKHRoaXMuZnMsICd1bmxpbmsnKTtcbiAgICAgICAgdGhpcy51dGltZXMgPSAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ3V0aW1lcycpO1xuICAgICAgICB0aGlzLnJlYWRGaWxlID0gKGlkLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKDAsIHV0aWxfMS5wcm9taXNpZnkpKHRoaXMuZnMsICdyZWFkRmlsZScpKGlkIGluc3RhbmNlb2YgdGhpcy5GaWxlSGFuZGxlID8gaWQuZmQgOiBpZCwgb3B0aW9ucyk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuYXBwZW5kRmlsZSA9IChwYXRoLCBkYXRhLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKDAsIHV0aWxfMS5wcm9taXNpZnkpKHRoaXMuZnMsICdhcHBlbmRGaWxlJykocGF0aCBpbnN0YW5jZW9mIHRoaXMuRmlsZUhhbmRsZSA/IHBhdGguZmQgOiBwYXRoLCBkYXRhLCBvcHRpb25zKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5vcGVuID0gKHBhdGgsIGZsYWdzID0gJ3InLCBtb2RlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKDAsIHV0aWxfMS5wcm9taXNpZnkpKHRoaXMuZnMsICdvcGVuJywgZmQgPT4gbmV3IHRoaXMuRmlsZUhhbmRsZSh0aGlzLmZzLCBmZCkpKHBhdGgsIGZsYWdzLCBtb2RlKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy53cml0ZUZpbGUgPSAoaWQsIGRhdGEsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGFQcm9taXNlID0gKDAsIHV0aWxfMS5pc1JlYWRhYmxlU3RyZWFtKShkYXRhKSA/ICgwLCB1dGlsXzEuc3RyZWFtVG9CdWZmZXIpKGRhdGEpIDogUHJvbWlzZS5yZXNvbHZlKGRhdGEpO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGFQcm9taXNlLnRoZW4oZGF0YSA9PiAoMCwgdXRpbF8xLnByb21pc2lmeSkodGhpcy5mcywgJ3dyaXRlRmlsZScpKGlkIGluc3RhbmNlb2YgdGhpcy5GaWxlSGFuZGxlID8gaWQuZmQgOiBpZCwgZGF0YSwgb3B0aW9ucykpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLndhdGNoID0gKGZpbGVuYW1lLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB3YXRjaE9wdGlvbnMgPSB0eXBlb2Ygb3B0aW9ucyA9PT0gJ3N0cmluZycgPyB7IGVuY29kaW5nOiBvcHRpb25zIH0gOiBvcHRpb25zIHx8IHt9O1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBGU1dhdGNoQXN5bmNJdGVyYXRvcih0aGlzLmZzLCBmaWxlbmFtZSwgd2F0Y2hPcHRpb25zKTtcbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnRzLkZzUHJvbWlzZXMgPSBGc1Byb21pc2VzO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RnNQcm9taXNlcy5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMucHJpbnRUcmVlID0gdm9pZCAwO1xuY29uc3QgcHJpbnRUcmVlID0gKHRhYiA9ICcnLCBjaGlsZHJlbikgPT4ge1xuICAgIGxldCBzdHIgPSAnJztcbiAgICBsZXQgbGFzdCA9IGNoaWxkcmVuLmxlbmd0aCAtIDE7XG4gICAgZm9yICg7IGxhc3QgPj0gMDsgbGFzdC0tKVxuICAgICAgICBpZiAoY2hpbGRyZW5bbGFzdF0pXG4gICAgICAgICAgICBicmVhaztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBsYXN0OyBpKyspIHtcbiAgICAgICAgY29uc3QgZm4gPSBjaGlsZHJlbltpXTtcbiAgICAgICAgaWYgKCFmbilcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjb25zdCBpc0xhc3QgPSBpID09PSBsYXN0O1xuICAgICAgICBjb25zdCBjaGlsZCA9IGZuKHRhYiArIChpc0xhc3QgPyAnICcgOiAn4pSCJykgKyAnICAnKTtcbiAgICAgICAgY29uc3QgYnJhbmNoID0gY2hpbGQgPyAoaXNMYXN0ID8gJ+KUlOKUgCcgOiAn4pSc4pSAJykgOiAn4pSCJztcbiAgICAgICAgc3RyICs9ICdcXG4nICsgdGFiICsgYnJhbmNoICsgKGNoaWxkID8gJyAnICsgY2hpbGQgOiAnJyk7XG4gICAgfVxuICAgIHJldHVybiBzdHI7XG59O1xuZXhwb3J0cy5wcmludFRyZWUgPSBwcmludFRyZWU7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMucHJpbnRCaW5hcnkgPSB2b2lkIDA7XG5jb25zdCBwcmludEJpbmFyeSA9ICh0YWIgPSAnJywgY2hpbGRyZW4pID0+IHtcbiAgICBjb25zdCBsZWZ0ID0gY2hpbGRyZW5bMF0sIHJpZ2h0ID0gY2hpbGRyZW5bMV07XG4gICAgbGV0IHN0ciA9ICcnO1xuICAgIGlmIChsZWZ0KVxuICAgICAgICBzdHIgKz0gJ1xcbicgKyB0YWIgKyAn4oaQICcgKyBsZWZ0KHRhYiArICcgICcpO1xuICAgIGlmIChyaWdodClcbiAgICAgICAgc3RyICs9ICdcXG4nICsgdGFiICsgJ+KGkiAnICsgcmlnaHQodGFiICsgJyAgJyk7XG4gICAgcmV0dXJuIHN0cjtcbn07XG5leHBvcnRzLnByaW50QmluYXJ5ID0gcHJpbnRCaW5hcnk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMucHJpbnRKc29uID0gdm9pZCAwO1xuY29uc3QgcHJpbnRKc29uID0gKHRhYiA9ICcnLCBqc29uLCBzcGFjZSA9IDIpID0+IChKU09OLnN0cmluZ2lmeShqc29uLCBudWxsLCBzcGFjZSkgfHwgJ25pbCcpLnNwbGl0KCdcXG4nKS5qb2luKCdcXG4nICsgdGFiKTtcbmV4cG9ydHMucHJpbnRKc29uID0gcHJpbnRKc29uO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5jb25zdCB0c2xpYl8xID0gcmVxdWlyZShcInRzbGliXCIpO1xudHNsaWJfMS5fX2V4cG9ydFN0YXIocmVxdWlyZShcIi4vcHJpbnRUcmVlXCIpLCBleHBvcnRzKTtcbnRzbGliXzEuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL3ByaW50QmluYXJ5XCIpLCBleHBvcnRzKTtcbnRzbGliXzEuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL3ByaW50SnNvblwiKSwgZXhwb3J0cyk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMudG9UcmVlU3luYyA9IHZvaWQgMDtcbmNvbnN0IHRyZWVfZHVtcF8xID0gcmVxdWlyZShcInRyZWUtZHVtcFwiKTtcbmNvbnN0IGZzX25vZGVfdXRpbHNfMSA9IHJlcXVpcmUoXCJAanNvbmpveS5jb20vZnMtbm9kZS11dGlsc1wiKTtcbmNvbnN0IHRvVHJlZVN5bmMgPSAoZnMsIG9wdHMgPSB7fSkgPT4ge1xuICAgIGNvbnN0IHNlcGFyYXRvciA9IG9wdHMuc2VwYXJhdG9yIHx8ICcvJztcbiAgICBsZXQgZGlyID0gb3B0cy5kaXIgfHwgc2VwYXJhdG9yO1xuICAgIGlmIChkaXJbZGlyLmxlbmd0aCAtIDFdICE9PSBzZXBhcmF0b3IpXG4gICAgICAgIGRpciArPSBzZXBhcmF0b3I7XG4gICAgY29uc3QgdGFiID0gb3B0cy50YWIgfHwgJyc7XG4gICAgY29uc3QgZGVwdGggPSBvcHRzLmRlcHRoID8/IDEwO1xuICAgIGNvbnN0IHNvcnQgPSBvcHRzLnNvcnQgPz8gdHJ1ZTtcbiAgICBsZXQgc3VidHJlZSA9ICcgKC4uLiknO1xuICAgIGlmIChkZXB0aCA+IDApIHtcbiAgICAgICAgY29uc3QgbGlzdCA9IGZzLnJlYWRkaXJTeW5jKGRpciwgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pO1xuICAgICAgICBpZiAoc29ydCkge1xuICAgICAgICAgICAgbGlzdC5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGEuaXNEaXJlY3RvcnkoKSAmJiBiLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEubmFtZS50b1N0cmluZygpLmxvY2FsZUNvbXBhcmUoYi5uYW1lLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChhLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChiLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5uYW1lLnRvU3RyaW5nKCkubG9jYWxlQ29tcGFyZShiLm5hbWUudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgc3VidHJlZSA9ICgwLCB0cmVlX2R1bXBfMS5wcmludFRyZWUpKHRhYiwgbGlzdC5tYXAoZW50cnkgPT4gdGFiID0+IHtcbiAgICAgICAgICAgIGlmIChlbnRyeS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICgwLCBleHBvcnRzLnRvVHJlZVN5bmMpKGZzLCB7IGRpcjogZGlyICsgZW50cnkubmFtZSwgZGVwdGg6IGRlcHRoIC0gMSwgdGFiIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZW50cnkuaXNTeW1ib2xpY0xpbmsoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnJyArIGVudHJ5Lm5hbWUgKyAnIOKGkiAnICsgZnMucmVhZGxpbmtTeW5jKGRpciArIGVudHJ5Lm5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcnICsgZW50cnkubmFtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkpO1xuICAgIH1cbiAgICBjb25zdCBiYXNlID0gKDAsIGZzX25vZGVfdXRpbHNfMS5iYXNlbmFtZSkoZGlyLCBzZXBhcmF0b3IpICsgc2VwYXJhdG9yO1xuICAgIHJldHVybiBiYXNlICsgc3VidHJlZTtcbn07XG5leHBvcnRzLnRvVHJlZVN5bmMgPSB0b1RyZWVTeW5jO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb25zdGFudHMuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmZyb21TbmFwc2hvdFN5bmMgPSBleHBvcnRzLnRvU25hcHNob3RTeW5jID0gdm9pZCAwO1xuY29uc3QgdG9TbmFwc2hvdFN5bmMgPSAoeyBmcywgcGF0aCA9ICcvJywgc2VwYXJhdG9yID0gJy8nIH0pID0+IHtcbiAgICBjb25zdCBzdGF0cyA9IGZzLmxzdGF0U3luYyhwYXRoKTtcbiAgICBpZiAoc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICBjb25zdCBsaXN0ID0gZnMucmVhZGRpclN5bmMocGF0aCk7XG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSB7fTtcbiAgICAgICAgY29uc3QgZGlyID0gcGF0aC5lbmRzV2l0aChzZXBhcmF0b3IpID8gcGF0aCA6IHBhdGggKyBzZXBhcmF0b3I7XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgbGlzdCkge1xuICAgICAgICAgICAgY29uc3QgY2hpbGRTbmFwc2hvdCA9ICgwLCBleHBvcnRzLnRvU25hcHNob3RTeW5jKSh7IGZzLCBwYXRoOiBgJHtkaXJ9JHtjaGlsZH1gLCBzZXBhcmF0b3IgfSk7XG4gICAgICAgICAgICBpZiAoY2hpbGRTbmFwc2hvdClcbiAgICAgICAgICAgICAgICBlbnRyaWVzWycnICsgY2hpbGRdID0gY2hpbGRTbmFwc2hvdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gWzAgLyogU25hcHNob3ROb2RlVHlwZS5Gb2xkZXIgKi8sIHt9LCBlbnRyaWVzXTtcbiAgICB9XG4gICAgZWxzZSBpZiAoc3RhdHMuaXNGaWxlKCkpIHtcbiAgICAgICAgY29uc3QgYnVmID0gZnMucmVhZEZpbGVTeW5jKHBhdGgpO1xuICAgICAgICBjb25zdCB1aW50OCA9IG5ldyBVaW50OEFycmF5KGJ1Zi5idWZmZXIsIGJ1Zi5ieXRlT2Zmc2V0LCBidWYuYnl0ZUxlbmd0aCk7XG4gICAgICAgIHJldHVybiBbMSAvKiBTbmFwc2hvdE5vZGVUeXBlLkZpbGUgKi8sIHt9LCB1aW50OF07XG4gICAgfVxuICAgIGVsc2UgaWYgKHN0YXRzLmlzU3ltYm9saWNMaW5rKCkpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIDIgLyogU25hcHNob3ROb2RlVHlwZS5TeW1saW5rICovLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRhcmdldDogZnMucmVhZGxpbmtTeW5jKHBhdGgpLnRvU3RyaW5nKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn07XG5leHBvcnRzLnRvU25hcHNob3RTeW5jID0gdG9TbmFwc2hvdFN5bmM7XG5jb25zdCBmcm9tU25hcHNob3RTeW5jID0gKHNuYXBzaG90LCB7IGZzLCBwYXRoID0gJy8nLCBzZXBhcmF0b3IgPSAnLycgfSkgPT4ge1xuICAgIGlmICghc25hcHNob3QpXG4gICAgICAgIHJldHVybjtcbiAgICBzd2l0Y2ggKHNuYXBzaG90WzBdKSB7XG4gICAgICAgIGNhc2UgMCAvKiBTbmFwc2hvdE5vZGVUeXBlLkZvbGRlciAqLzoge1xuICAgICAgICAgICAgaWYgKCFwYXRoLmVuZHNXaXRoKHNlcGFyYXRvcikpXG4gICAgICAgICAgICAgICAgcGF0aCA9IHBhdGggKyBzZXBhcmF0b3I7XG4gICAgICAgICAgICBjb25zdCBbLCAsIGVudHJpZXNdID0gc25hcHNob3Q7XG4gICAgICAgICAgICBmcy5ta2RpclN5bmMocGF0aCwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtuYW1lLCBjaGlsZF0gb2YgT2JqZWN0LmVudHJpZXMoZW50cmllcykpXG4gICAgICAgICAgICAgICAgKDAsIGV4cG9ydHMuZnJvbVNuYXBzaG90U3luYykoY2hpbGQsIHsgZnMsIHBhdGg6IGAke3BhdGh9JHtuYW1lfWAsIHNlcGFyYXRvciB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMSAvKiBTbmFwc2hvdE5vZGVUeXBlLkZpbGUgKi86IHtcbiAgICAgICAgICAgIGNvbnN0IFssICwgZGF0YV0gPSBzbmFwc2hvdDtcbiAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMocGF0aCwgZGF0YSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIDIgLyogU25hcHNob3ROb2RlVHlwZS5TeW1saW5rICovOiB7XG4gICAgICAgICAgICBjb25zdCBbLCB7IHRhcmdldCB9XSA9IHNuYXBzaG90O1xuICAgICAgICAgICAgZnMuc3ltbGlua1N5bmModGFyZ2V0LCBwYXRoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxufTtcbmV4cG9ydHMuZnJvbVNuYXBzaG90U3luYyA9IGZyb21TbmFwc2hvdFN5bmM7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zeW5jLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5pc0Zsb2F0MzIgPSB2b2lkIDA7XG5jb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcig0KSk7XG5jb25zdCBpc0Zsb2F0MzIgPSAobikgPT4ge1xuICAgIHZpZXcuc2V0RmxvYXQzMigwLCBuKTtcbiAgICByZXR1cm4gbiA9PT0gdmlldy5nZXRGbG9hdDMyKDApO1xufTtcbmV4cG9ydHMuaXNGbG9hdDMyID0gaXNGbG9hdDMyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXNGbG9hdDMyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Kc29uUGFja0V4dGVuc2lvbiA9IHZvaWQgMDtcbi8qKlxuICogQSB3cmFwcGluZyBmb3IgTWVzc2FnZVBhY2sgZXh0ZW5zaW9uIG9yIENCT1IgdGFnIHZhbHVlLiBXaGVuIGVuY29kZXJcbiAqIGVuY291bnRlcnMge0BsaW5rIEpzb25QYWNrRXh0ZW5zaW9ufSBpdCB3aWxsIGVuY29kZSBpdCBhcyBhIE1lc3NhZ2VQYWNrXG4gKiBleHRlbnNpb24gb3IgQ0JPUiB0YWcuIExpa2V3aXNlLCB0aGUgZGVjb2RlciB3aWxsXG4gKiBkZWNvZGUgZXh0ZW5zaW9ucyBpbnRvIHtAbGluayBKc29uUGFja0V4dGVuc2lvbn0uXG4gKlxuICogQGNhdGVnb3J5IFZhbHVlXG4gKi9cbmNsYXNzIEpzb25QYWNrRXh0ZW5zaW9uIHtcbiAgICBjb25zdHJ1Y3Rvcih0YWcsIHZhbCkge1xuICAgICAgICB0aGlzLnRhZyA9IHRhZztcbiAgICAgICAgdGhpcy52YWwgPSB2YWw7XG4gICAgfVxufVxuZXhwb3J0cy5Kc29uUGFja0V4dGVuc2lvbiA9IEpzb25QYWNrRXh0ZW5zaW9uO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SnNvblBhY2tFeHRlbnNpb24uanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlNsaWNlID0gdm9pZCAwO1xuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2Uge0BsaW5rIFJlYWRlcn0gaW5zdGVhZC5cbiAqL1xuY2xhc3MgU2xpY2Uge1xuICAgIGNvbnN0cnVjdG9yKHVpbnQ4LCB2aWV3LCBzdGFydCwgZW5kKSB7XG4gICAgICAgIHRoaXMudWludDggPSB1aW50ODtcbiAgICAgICAgdGhpcy52aWV3ID0gdmlldztcbiAgICAgICAgdGhpcy5zdGFydCA9IHN0YXJ0O1xuICAgICAgICB0aGlzLmVuZCA9IGVuZDtcbiAgICB9XG4gICAgc3ViYXJyYXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVpbnQ4LnN1YmFycmF5KHRoaXMuc3RhcnQsIHRoaXMuZW5kKTtcbiAgICB9XG59XG5leHBvcnRzLlNsaWNlID0gU2xpY2U7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TbGljZS5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuV3JpdGVyID0gdm9pZCAwO1xuY29uc3QgU2xpY2VfMSA9IHJlcXVpcmUoXCIuL1NsaWNlXCIpO1xuY29uc3QgRU1QVFlfVUlOVDggPSBuZXcgVWludDhBcnJheShbXSk7XG5jb25zdCBFTVBUWV9WSUVXID0gbmV3IERhdGFWaWV3KEVNUFRZX1VJTlQ4LmJ1ZmZlcik7XG5jb25zdCBoYXNCdWZmZXIgPSB0eXBlb2YgQnVmZmVyID09PSAnZnVuY3Rpb24nO1xuY29uc3QgdXRmOFdyaXRlID0gaGFzQnVmZmVyXG4gICAgPyBCdWZmZXIucHJvdG90eXBlLnV0ZjhXcml0ZVxuICAgIDogbnVsbDtcbmNvbnN0IGZyb20gPSBoYXNCdWZmZXIgPyBCdWZmZXIuZnJvbSA6IG51bGw7XG5jb25zdCB0ZXh0RW5jb2RlciA9IHR5cGVvZiBUZXh0RW5jb2RlciAhPT0gJ3VuZGVmaW5lZCcgPyBuZXcgVGV4dEVuY29kZXIoKSA6IG51bGw7XG4vKipcbiAqIFdyaXRlciBjbGFzcyBwcm92aWRlcyBhbiBlZmZpY2llbnQgd2F5IHRvIGVuY29kZSBiaW5hcnkgZGF0YS4gSXQgZ3Jvd3MgdGhlXG4gKiBpbnRlcm5hbCBtZW1vcnkgYnVmZmVyIGF1dG9tYXRpY2FsbHkgYXMgbW9yZSBzcGFjZSBpcyByZXF1aXJlZC4gSXQgaXMgdXNlZnVsXG4gKiBpbiBjYXNlcyB3aGVuIGl0IGlzIG5vdCBrbm93biBpbiBhZHZhbmNlIHRoZSBzaXplIG9mIG1lbW9yeSBuZWVkZWQuXG4gKi9cbmNsYXNzIFdyaXRlciB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIGFsbG9jU2l6ZSBOdW1iZXIgb2YgYnl0ZXMgdG8gYWxsb2NhdGUgYXQgYSB0aW1lIHdoZW4gYnVmZmVyIGVuZHMuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoYWxsb2NTaXplID0gNjQgKiAxMDI0KSB7XG4gICAgICAgIHRoaXMuYWxsb2NTaXplID0gYWxsb2NTaXplO1xuICAgICAgICAvKiogQGlnbm9yZSAqL1xuICAgICAgICB0aGlzLnZpZXcgPSBFTVBUWV9WSUVXO1xuICAgICAgICAvKiogQGlnbm9yZSAqL1xuICAgICAgICB0aGlzLngwID0gMDtcbiAgICAgICAgLyoqIEBpZ25vcmUgKi9cbiAgICAgICAgdGhpcy54ID0gMDtcbiAgICAgICAgdGhpcy51aW50OCA9IG5ldyBVaW50OEFycmF5KGFsbG9jU2l6ZSk7XG4gICAgICAgIHRoaXMuc2l6ZSA9IGFsbG9jU2l6ZTtcbiAgICAgICAgdGhpcy52aWV3ID0gbmV3IERhdGFWaWV3KHRoaXMudWludDguYnVmZmVyKTtcbiAgICB9XG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBncm93KHNpemUpIHtcbiAgICAgICAgY29uc3QgeDAgPSB0aGlzLngwO1xuICAgICAgICBjb25zdCB4ID0gdGhpcy54O1xuICAgICAgICBjb25zdCBvbGRVaW50OCA9IHRoaXMudWludDg7XG4gICAgICAgIGNvbnN0IG5ld1VpbnQ4ID0gbmV3IFVpbnQ4QXJyYXkoc2l6ZSk7XG4gICAgICAgIGNvbnN0IHZpZXcgPSBuZXcgRGF0YVZpZXcobmV3VWludDguYnVmZmVyKTtcbiAgICAgICAgY29uc3QgYWN0aXZlU2xpY2UgPSBvbGRVaW50OC5zdWJhcnJheSh4MCwgeCk7XG4gICAgICAgIG5ld1VpbnQ4LnNldChhY3RpdmVTbGljZSwgMCk7XG4gICAgICAgIHRoaXMueCA9IHggLSB4MDtcbiAgICAgICAgdGhpcy54MCA9IDA7XG4gICAgICAgIHRoaXMudWludDggPSBuZXdVaW50ODtcbiAgICAgICAgdGhpcy5zaXplID0gc2l6ZTtcbiAgICAgICAgdGhpcy52aWV3ID0gdmlldztcbiAgICB9XG4gICAgLyoqXG4gICAgICogTWFrZSBzdXJlIHRoZSBpbnRlcm5hbCBidWZmZXIgaGFzIGVub3VnaCBzcGFjZSB0byB3cml0ZSB0aGUgc3BlY2lmaWVkIG51bWJlclxuICAgICAqIG9mIGJ5dGVzLCBvdGhlcndpc2UgcmVzaXplIHRoZSBpbnRlcm5hbCBidWZmZXIgdG8gYWNjb21tb2RhdGUgZm9yIG1vcmUgc2l6ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXBhY2l0eSBOdW1iZXIgb2YgYnl0ZXMuXG4gICAgICovXG4gICAgZW5zdXJlQ2FwYWNpdHkoY2FwYWNpdHkpIHtcbiAgICAgICAgY29uc3QgYnl0ZUxlbmd0aCA9IHRoaXMuc2l6ZTtcbiAgICAgICAgY29uc3QgcmVtYWluaW5nID0gYnl0ZUxlbmd0aCAtIHRoaXMueDtcbiAgICAgICAgaWYgKHJlbWFpbmluZyA8IGNhcGFjaXR5KSB7XG4gICAgICAgICAgICBjb25zdCB0b3RhbCA9IGJ5dGVMZW5ndGggLSB0aGlzLngwO1xuICAgICAgICAgICAgY29uc3QgcmVxdWlyZWQgPSBjYXBhY2l0eSAtIHJlbWFpbmluZztcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsUmVxdWlyZWQgPSB0b3RhbCArIHJlcXVpcmVkO1xuICAgICAgICAgICAgdGhpcy5ncm93KHRvdGFsUmVxdWlyZWQgPD0gdGhpcy5hbGxvY1NpemUgPyB0aGlzLmFsbG9jU2l6ZSA6IHRvdGFsUmVxdWlyZWQgKiAyKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKiogQHRvZG8gQ29uc2lkZXIgcmVuYW1pbmcgdG8gXCJza2lwXCI/ICovXG4gICAgbW92ZShjYXBhY2l0eSkge1xuICAgICAgICB0aGlzLmVuc3VyZUNhcGFjaXR5KGNhcGFjaXR5KTtcbiAgICAgICAgdGhpcy54ICs9IGNhcGFjaXR5O1xuICAgIH1cbiAgICByZXNldCgpIHtcbiAgICAgICAgdGhpcy54MCA9IHRoaXMueDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQWxsb2NhdGVzIGEgbmV3IHtAbGluayBBcnJheUJ1ZmZlcn0sIHVzZWZ1bCB3aGVuIHRoZSB1bmRlcmx5aW5nXG4gICAgICoge0BsaW5rIEFycmF5QnVmZmVyfSBjYW5ub3QgYmUgc2hhcmVkIGJldHdlZW4gdGhyZWFkcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzaXplIFNpemUgb2YgbWVtb3J5IHRvIGFsbG9jYXRlLlxuICAgICAqL1xuICAgIG5ld0J1ZmZlcihzaXplKSB7XG4gICAgICAgIGNvbnN0IHVpbnQ4ID0gKHRoaXMudWludDggPSBuZXcgVWludDhBcnJheShzaXplKSk7XG4gICAgICAgIHRoaXMuc2l6ZSA9IHNpemU7XG4gICAgICAgIHRoaXMudmlldyA9IG5ldyBEYXRhVmlldyh1aW50OC5idWZmZXIpO1xuICAgICAgICB0aGlzLnggPSB0aGlzLngwID0gMDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHJldHVybnMgRW5jb2RlZCBtZW1vcnkgYnVmZmVyIGNvbnRlbnRzLlxuICAgICAqL1xuICAgIGZsdXNoKCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLnVpbnQ4LnN1YmFycmF5KHRoaXMueDAsIHRoaXMueCk7XG4gICAgICAgIHRoaXMueDAgPSB0aGlzLng7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGZsdXNoU2xpY2UoKSB7XG4gICAgICAgIGNvbnN0IHNsaWNlID0gbmV3IFNsaWNlXzEuU2xpY2UodGhpcy51aW50OCwgdGhpcy52aWV3LCB0aGlzLngwLCB0aGlzLngpO1xuICAgICAgICB0aGlzLngwID0gdGhpcy54O1xuICAgICAgICByZXR1cm4gc2xpY2U7XG4gICAgfVxuICAgIHU4KGNoYXIpIHtcbiAgICAgICAgdGhpcy5lbnN1cmVDYXBhY2l0eSgxKTtcbiAgICAgICAgdGhpcy51aW50OFt0aGlzLngrK10gPSBjaGFyO1xuICAgIH1cbiAgICB1MTYod29yZCkge1xuICAgICAgICB0aGlzLmVuc3VyZUNhcGFjaXR5KDIpO1xuICAgICAgICB0aGlzLnZpZXcuc2V0VWludDE2KHRoaXMueCwgd29yZCk7XG4gICAgICAgIHRoaXMueCArPSAyO1xuICAgIH1cbiAgICB1MzIoZHdvcmQpIHtcbiAgICAgICAgdGhpcy5lbnN1cmVDYXBhY2l0eSg0KTtcbiAgICAgICAgdGhpcy52aWV3LnNldFVpbnQzMih0aGlzLngsIGR3b3JkKTtcbiAgICAgICAgdGhpcy54ICs9IDQ7XG4gICAgfVxuICAgIGkzMihkd29yZCkge1xuICAgICAgICB0aGlzLmVuc3VyZUNhcGFjaXR5KDQpO1xuICAgICAgICB0aGlzLnZpZXcuc2V0SW50MzIodGhpcy54LCBkd29yZCk7XG4gICAgICAgIHRoaXMueCArPSA0O1xuICAgIH1cbiAgICB1NjQocXdvcmQpIHtcbiAgICAgICAgdGhpcy5lbnN1cmVDYXBhY2l0eSg4KTtcbiAgICAgICAgdGhpcy52aWV3LnNldEJpZ1VpbnQ2NCh0aGlzLngsIEJpZ0ludChxd29yZCkpO1xuICAgICAgICB0aGlzLnggKz0gODtcbiAgICB9XG4gICAgZjY0KGZsb2F0KSB7XG4gICAgICAgIHRoaXMuZW5zdXJlQ2FwYWNpdHkoOCk7XG4gICAgICAgIHRoaXMudmlldy5zZXRGbG9hdDY0KHRoaXMueCwgZmxvYXQpO1xuICAgICAgICB0aGlzLnggKz0gODtcbiAgICB9XG4gICAgdTh1MTYodTgsIHUxNikge1xuICAgICAgICB0aGlzLmVuc3VyZUNhcGFjaXR5KDMpO1xuICAgICAgICBsZXQgeCA9IHRoaXMueDtcbiAgICAgICAgdGhpcy51aW50OFt4KytdID0gdTg7XG4gICAgICAgIHRoaXMudWludDhbeCsrXSA9IHUxNiA+Pj4gODtcbiAgICAgICAgdGhpcy51aW50OFt4KytdID0gdTE2ICYgMHhmZjtcbiAgICAgICAgdGhpcy54ID0geDtcbiAgICB9XG4gICAgdTh1MzIodTgsIHUzMikge1xuICAgICAgICB0aGlzLmVuc3VyZUNhcGFjaXR5KDUpO1xuICAgICAgICBsZXQgeCA9IHRoaXMueDtcbiAgICAgICAgdGhpcy51aW50OFt4KytdID0gdTg7XG4gICAgICAgIHRoaXMudmlldy5zZXRVaW50MzIoeCwgdTMyKTtcbiAgICAgICAgdGhpcy54ID0geCArIDQ7XG4gICAgfVxuICAgIHU4dTY0KHU4LCB1NjQpIHtcbiAgICAgICAgdGhpcy5lbnN1cmVDYXBhY2l0eSg5KTtcbiAgICAgICAgbGV0IHggPSB0aGlzLng7XG4gICAgICAgIHRoaXMudWludDhbeCsrXSA9IHU4O1xuICAgICAgICB0aGlzLnZpZXcuc2V0QmlnVWludDY0KHgsIEJpZ0ludCh1NjQpKTtcbiAgICAgICAgdGhpcy54ID0geCArIDg7XG4gICAgfVxuICAgIHU4ZjMyKHU4LCBmMzIpIHtcbiAgICAgICAgdGhpcy5lbnN1cmVDYXBhY2l0eSg1KTtcbiAgICAgICAgbGV0IHggPSB0aGlzLng7XG4gICAgICAgIHRoaXMudWludDhbeCsrXSA9IHU4O1xuICAgICAgICB0aGlzLnZpZXcuc2V0RmxvYXQzMih4LCBmMzIpO1xuICAgICAgICB0aGlzLnggPSB4ICsgNDtcbiAgICB9XG4gICAgdThmNjQodTgsIGY2NCkge1xuICAgICAgICB0aGlzLmVuc3VyZUNhcGFjaXR5KDkpO1xuICAgICAgICBsZXQgeCA9IHRoaXMueDtcbiAgICAgICAgdGhpcy51aW50OFt4KytdID0gdTg7XG4gICAgICAgIHRoaXMudmlldy5zZXRGbG9hdDY0KHgsIGY2NCk7XG4gICAgICAgIHRoaXMueCA9IHggKyA4O1xuICAgIH1cbiAgICBidWYoYnVmLCBsZW5ndGgpIHtcbiAgICAgICAgdGhpcy5lbnN1cmVDYXBhY2l0eShsZW5ndGgpO1xuICAgICAgICBjb25zdCB4ID0gdGhpcy54O1xuICAgICAgICB0aGlzLnVpbnQ4LnNldChidWYsIHgpO1xuICAgICAgICB0aGlzLnggPSB4ICsgbGVuZ3RoO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFbmNvZGVzIHN0cmluZyBhcyBVVEYtOC4gWW91IG5lZWQgdG8gY2FsbCAuZW5zdXJlQ2FwYWNpdHkoc3RyLmxlbmd0aCAqIDQpXG4gICAgICogYmVmb3JlIGNhbGxpbmdcbiAgICAgKlxuICAgICAqIEBwYXJhbSBzdHIgU3RyaW5nIHRvIGVuY29kZSBhcyBVVEYtOC5cbiAgICAgKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW5cbiAgICAgKi9cbiAgICB1dGY4KHN0cikge1xuICAgICAgICBjb25zdCB0aGVvcmV0aWNhbE1heExlbmd0aCA9IHN0ci5sZW5ndGggKiA0O1xuICAgICAgICBpZiAodGhlb3JldGljYWxNYXhMZW5ndGggPCAxNjgpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy51dGY4TmF0aXZlKHN0cik7XG4gICAgICAgIHRoaXMuZW5zdXJlQ2FwYWNpdHkodGhlb3JldGljYWxNYXhMZW5ndGgpO1xuICAgICAgICBjb25zdCBtYXhMZW5ndGggPSB0aGlzLnNpemUgLSB0aGlzLng7XG4gICAgICAgIGlmICh1dGY4V3JpdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHdyaXRlTGVuZ3RoID0gdXRmOFdyaXRlLmNhbGwodGhpcy51aW50OCwgc3RyLCB0aGlzLngsIG1heExlbmd0aCk7XG4gICAgICAgICAgICB0aGlzLnggKz0gd3JpdGVMZW5ndGg7XG4gICAgICAgICAgICByZXR1cm4gd3JpdGVMZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZnJvbSkge1xuICAgICAgICAgICAgY29uc3QgdWludDggPSB0aGlzLnVpbnQ4O1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gdWludDguYnl0ZU9mZnNldCArIHRoaXMueDtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZiA9IGZyb20odWludDguYnVmZmVyKS5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIG1heExlbmd0aCk7XG4gICAgICAgICAgICBjb25zdCB3cml0ZUxlbmd0aCA9IGJ1Zi53cml0ZShzdHIsIDAsIG1heExlbmd0aCwgJ3V0ZjgnKTtcbiAgICAgICAgICAgIHRoaXMueCArPSB3cml0ZUxlbmd0aDtcbiAgICAgICAgICAgIHJldHVybiB3cml0ZUxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGVvcmV0aWNhbE1heExlbmd0aCA+IDEwMjQgJiYgdGV4dEVuY29kZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHdyaXRlTGVuZ3RoID0gdGV4dEVuY29kZXIuZW5jb2RlSW50byhzdHIsIHRoaXMudWludDguc3ViYXJyYXkodGhpcy54LCB0aGlzLnggKyBtYXhMZW5ndGgpKS53cml0dGVuO1xuICAgICAgICAgICAgdGhpcy54ICs9IHdyaXRlTGVuZ3RoO1xuICAgICAgICAgICAgcmV0dXJuIHdyaXRlTGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnV0ZjhOYXRpdmUoc3RyKTtcbiAgICB9XG4gICAgdXRmOE5hdGl2ZShzdHIpIHtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gc3RyLmxlbmd0aDtcbiAgICAgICAgY29uc3QgdWludDggPSB0aGlzLnVpbnQ4O1xuICAgICAgICBsZXQgb2Zmc2V0ID0gdGhpcy54O1xuICAgICAgICBsZXQgcG9zID0gMDtcbiAgICAgICAgd2hpbGUgKHBvcyA8IGxlbmd0aCkge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gc3RyLmNoYXJDb2RlQXQocG9zKyspO1xuICAgICAgICAgICAgaWYgKCh2YWx1ZSAmIDB4ZmZmZmZmODApID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdWludDhbb2Zmc2V0KytdID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICgodmFsdWUgJiAweGZmZmZmODAwKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHVpbnQ4W29mZnNldCsrXSA9ICgodmFsdWUgPj4gNikgJiAweDFmKSB8IDB4YzA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPj0gMHhkODAwICYmIHZhbHVlIDw9IDB4ZGJmZikge1xuICAgICAgICAgICAgICAgICAgICBpZiAocG9zIDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBleHRyYSA9IHN0ci5jaGFyQ29kZUF0KHBvcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGV4dHJhICYgMHhmYzAwKSA9PT0gMHhkYzAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAoKHZhbHVlICYgMHgzZmYpIDw8IDEwKSArIChleHRyYSAmIDB4M2ZmKSArIDB4MTAwMDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCh2YWx1ZSAmIDB4ZmZmZjAwMDApID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHVpbnQ4W29mZnNldCsrXSA9ICgodmFsdWUgPj4gMTIpICYgMHgwZikgfCAweGUwO1xuICAgICAgICAgICAgICAgICAgICB1aW50OFtvZmZzZXQrK10gPSAoKHZhbHVlID4+IDYpICYgMHgzZikgfCAweDgwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdWludDhbb2Zmc2V0KytdID0gKCh2YWx1ZSA+PiAxOCkgJiAweDA3KSB8IDB4ZjA7XG4gICAgICAgICAgICAgICAgICAgIHVpbnQ4W29mZnNldCsrXSA9ICgodmFsdWUgPj4gMTIpICYgMHgzZikgfCAweDgwO1xuICAgICAgICAgICAgICAgICAgICB1aW50OFtvZmZzZXQrK10gPSAoKHZhbHVlID4+IDYpICYgMHgzZikgfCAweDgwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVpbnQ4W29mZnNldCsrXSA9ICh2YWx1ZSAmIDB4M2YpIHwgMHg4MDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB3cml0ZUxlbmd0aCA9IG9mZnNldCAtIHRoaXMueDtcbiAgICAgICAgdGhpcy54ID0gb2Zmc2V0O1xuICAgICAgICByZXR1cm4gd3JpdGVMZW5ndGg7XG4gICAgfVxuICAgIGFzY2lpKHN0cikge1xuICAgICAgICBjb25zdCBsZW5ndGggPSBzdHIubGVuZ3RoO1xuICAgICAgICB0aGlzLmVuc3VyZUNhcGFjaXR5KGxlbmd0aCk7XG4gICAgICAgIGNvbnN0IHVpbnQ4ID0gdGhpcy51aW50ODtcbiAgICAgICAgbGV0IHggPSB0aGlzLng7XG4gICAgICAgIGxldCBwb3MgPSAwO1xuICAgICAgICB3aGlsZSAocG9zIDwgbGVuZ3RoKVxuICAgICAgICAgICAgdWludDhbeCsrXSA9IHN0ci5jaGFyQ29kZUF0KHBvcysrKTtcbiAgICAgICAgdGhpcy54ID0geDtcbiAgICB9XG59XG5leHBvcnRzLldyaXRlciA9IFdyaXRlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVdyaXRlci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQ2JvckVuY29kZXJGYXN0ID0gdm9pZCAwO1xuY29uc3QgV3JpdGVyXzEgPSByZXF1aXJlKFwiQGpzb25qb3kuY29tL2J1ZmZlcnMvbGliL1dyaXRlclwiKTtcbmNvbnN0IGlzU2FmZUludGVnZXIgPSBOdW1iZXIuaXNTYWZlSW50ZWdlcjtcbi8qKlxuICogRmFzdCBDQk9SIGVuY29kZXIgc3VwcG9ydHMgb25seSBKU09OIHZhbHVlcy4gVXNlIHJlZ3VsYXIgYENib3JFbmNvZGVyYCBpZlxuICogeW91IG5lZWQgYWJpbGl0eSB0byBlbmNvZGUgYWxsIENCT1IgdmFsdWUgdHlwZXMuXG4gKi9cbmNsYXNzIENib3JFbmNvZGVyRmFzdCB7XG4gICAgY29uc3RydWN0b3Iod3JpdGVyID0gbmV3IFdyaXRlcl8xLldyaXRlcigpKSB7XG4gICAgICAgIHRoaXMud3JpdGVyID0gd3JpdGVyO1xuICAgIH1cbiAgICBlbmNvZGUodmFsdWUpIHtcbiAgICAgICAgdGhpcy53cml0ZUFueSh2YWx1ZSk7XG4gICAgICAgIHJldHVybiB0aGlzLndyaXRlci5mbHVzaCgpO1xuICAgIH1cbiAgICB3cml0ZUFueSh2YWx1ZSkge1xuICAgICAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53cml0ZU51bWJlcih2YWx1ZSk7XG4gICAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLndyaXRlU3RyKHZhbHVlKTtcbiAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLndyaXRlci51OCgweGY0ICsgK3ZhbHVlKTtcbiAgICAgICAgICAgIGNhc2UgJ29iamVjdCc6IHtcbiAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53cml0ZXIudTgoMHhmNik7XG4gICAgICAgICAgICAgICAgY29uc3QgY29uc3RyID0gdmFsdWUuY29uc3RydWN0b3I7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChjb25zdHIpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBBcnJheTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLndyaXRlQXJyKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLndyaXRlT2JqKHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgd3JpdGVDYm9yKCkge1xuICAgICAgICB0aGlzLndyaXRlci51OHUxNigweGQ5LCAweGQ5ZjcpO1xuICAgIH1cbiAgICB3cml0ZUVuZCgpIHtcbiAgICAgICAgdGhpcy53cml0ZXIudTgoMjU1IC8qIENPTlNULkVORCAqLyk7XG4gICAgfVxuICAgIHdyaXRlTnVsbCgpIHtcbiAgICAgICAgdGhpcy53cml0ZXIudTgoMHhmNik7XG4gICAgfVxuICAgIHdyaXRlQm9vbGVhbihib29sKSB7XG4gICAgICAgIGlmIChib29sKVxuICAgICAgICAgICAgdGhpcy53cml0ZXIudTgoMHhmNSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMud3JpdGVyLnU4KDB4ZjQpO1xuICAgIH1cbiAgICB3cml0ZU51bWJlcihudW0pIHtcbiAgICAgICAgaWYgKGlzU2FmZUludGVnZXIobnVtKSlcbiAgICAgICAgICAgIHRoaXMud3JpdGVJbnRlZ2VyKG51bSk7XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBudW0gPT09ICdiaWdpbnQnKVxuICAgICAgICAgICAgdGhpcy53cml0ZUJpZ0ludChudW0pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLndyaXRlRmxvYXQobnVtKTtcbiAgICB9XG4gICAgd3JpdGVCaWdJbnQoaW50KSB7XG4gICAgICAgIGlmIChpbnQgPj0gMClcbiAgICAgICAgICAgIHRoaXMud3JpdGVCaWdVaW50KGludCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMud3JpdGVCaWdTaW50KGludCk7XG4gICAgfVxuICAgIHdyaXRlQmlnVWludCh1aW50KSB7XG4gICAgICAgIGlmICh1aW50IDw9IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMud3JpdGVVSW50ZWdlcihOdW1iZXIodWludCkpO1xuICAgICAgICB0aGlzLndyaXRlci51OHU2NCgweDFiLCB1aW50KTtcbiAgICB9XG4gICAgd3JpdGVCaWdTaW50KGludCkge1xuICAgICAgICBpZiAoaW50ID49IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZW5jb2RlTmludChOdW1iZXIoaW50KSk7XG4gICAgICAgIGNvbnN0IHVpbnQgPSAtQmlnSW50KDEpIC0gaW50O1xuICAgICAgICB0aGlzLndyaXRlci51OHU2NCgweDNiLCB1aW50KTtcbiAgICB9XG4gICAgd3JpdGVJbnRlZ2VyKGludCkge1xuICAgICAgICBpZiAoaW50ID49IDApXG4gICAgICAgICAgICB0aGlzLndyaXRlVUludGVnZXIoaW50KTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5lbmNvZGVOaW50KGludCk7XG4gICAgfVxuICAgIHdyaXRlVUludGVnZXIodWludCkge1xuICAgICAgICBjb25zdCB3cml0ZXIgPSB0aGlzLndyaXRlcjtcbiAgICAgICAgd3JpdGVyLmVuc3VyZUNhcGFjaXR5KDkpO1xuICAgICAgICBjb25zdCB1aW50OCA9IHdyaXRlci51aW50ODtcbiAgICAgICAgbGV0IHggPSB3cml0ZXIueDtcbiAgICAgICAgaWYgKHVpbnQgPD0gMjMpIHtcbiAgICAgICAgICAgIHVpbnQ4W3grK10gPSAwIC8qIE1BSk9SX09WRVJMQVkuVUlOICovICsgdWludDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh1aW50IDw9IDB4ZmYpIHtcbiAgICAgICAgICAgIHVpbnQ4W3grK10gPSAweDE4O1xuICAgICAgICAgICAgdWludDhbeCsrXSA9IHVpbnQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodWludCA8PSAweGZmZmYpIHtcbiAgICAgICAgICAgIHVpbnQ4W3grK10gPSAweDE5O1xuICAgICAgICAgICAgd3JpdGVyLnZpZXcuc2V0VWludDE2KHgsIHVpbnQpO1xuICAgICAgICAgICAgeCArPSAyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHVpbnQgPD0gMHhmZmZmZmZmZikge1xuICAgICAgICAgICAgdWludDhbeCsrXSA9IDB4MWE7XG4gICAgICAgICAgICB3cml0ZXIudmlldy5zZXRVaW50MzIoeCwgdWludCk7XG4gICAgICAgICAgICB4ICs9IDQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB1aW50OFt4KytdID0gMHgxYjtcbiAgICAgICAgICAgIHdyaXRlci52aWV3LnNldEJpZ1VpbnQ2NCh4LCBCaWdJbnQodWludCkpO1xuICAgICAgICAgICAgeCArPSA4O1xuICAgICAgICB9XG4gICAgICAgIHdyaXRlci54ID0geDtcbiAgICB9XG4gICAgLyoqIEBkZXByZWNhdGVkIFJlbW92ZSBhbmQgdXNlIGB3cml0ZU51bWJlcmAgaW5zdGVhZC4gKi9cbiAgICBlbmNvZGVOdW1iZXIobnVtKSB7XG4gICAgICAgIHRoaXMud3JpdGVOdW1iZXIobnVtKTtcbiAgICB9XG4gICAgLyoqIEBkZXByZWNhdGVkIFJlbW92ZSBhbmQgdXNlIGB3cml0ZUludGVnZXJgIGluc3RlYWQuICovXG4gICAgZW5jb2RlSW50ZWdlcihpbnQpIHtcbiAgICAgICAgdGhpcy53cml0ZUludGVnZXIoaW50KTtcbiAgICB9XG4gICAgLyoqIEBkZXByZWNhdGVkICovXG4gICAgZW5jb2RlVWludCh1aW50KSB7XG4gICAgICAgIHRoaXMud3JpdGVVSW50ZWdlcih1aW50KTtcbiAgICB9XG4gICAgZW5jb2RlTmludChpbnQpIHtcbiAgICAgICAgY29uc3QgdWludCA9IC0xIC0gaW50O1xuICAgICAgICBjb25zdCB3cml0ZXIgPSB0aGlzLndyaXRlcjtcbiAgICAgICAgd3JpdGVyLmVuc3VyZUNhcGFjaXR5KDkpO1xuICAgICAgICBjb25zdCB1aW50OCA9IHdyaXRlci51aW50ODtcbiAgICAgICAgbGV0IHggPSB3cml0ZXIueDtcbiAgICAgICAgaWYgKHVpbnQgPCAyNCkge1xuICAgICAgICAgICAgdWludDhbeCsrXSA9IDMyIC8qIE1BSk9SX09WRVJMQVkuTklOICovICsgdWludDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh1aW50IDw9IDB4ZmYpIHtcbiAgICAgICAgICAgIHVpbnQ4W3grK10gPSAweDM4O1xuICAgICAgICAgICAgdWludDhbeCsrXSA9IHVpbnQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodWludCA8PSAweGZmZmYpIHtcbiAgICAgICAgICAgIHVpbnQ4W3grK10gPSAweDM5O1xuICAgICAgICAgICAgd3JpdGVyLnZpZXcuc2V0VWludDE2KHgsIHVpbnQpO1xuICAgICAgICAgICAgeCArPSAyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHVpbnQgPD0gMHhmZmZmZmZmZikge1xuICAgICAgICAgICAgdWludDhbeCsrXSA9IDB4M2E7XG4gICAgICAgICAgICB3cml0ZXIudmlldy5zZXRVaW50MzIoeCwgdWludCk7XG4gICAgICAgICAgICB4ICs9IDQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB1aW50OFt4KytdID0gMHgzYjtcbiAgICAgICAgICAgIHdyaXRlci52aWV3LnNldEJpZ1VpbnQ2NCh4LCBCaWdJbnQodWludCkpO1xuICAgICAgICAgICAgeCArPSA4O1xuICAgICAgICB9XG4gICAgICAgIHdyaXRlci54ID0geDtcbiAgICB9XG4gICAgd3JpdGVGbG9hdChmbG9hdCkge1xuICAgICAgICB0aGlzLndyaXRlci51OGY2NCgweGZiLCBmbG9hdCk7XG4gICAgfVxuICAgIHdyaXRlQmluKGJ1Zikge1xuICAgICAgICBjb25zdCBsZW5ndGggPSBidWYubGVuZ3RoO1xuICAgICAgICB0aGlzLndyaXRlQmluSGRyKGxlbmd0aCk7XG4gICAgICAgIHRoaXMud3JpdGVyLmJ1ZihidWYsIGxlbmd0aCk7XG4gICAgfVxuICAgIHdyaXRlQmluSGRyKGxlbmd0aCkge1xuICAgICAgICBjb25zdCB3cml0ZXIgPSB0aGlzLndyaXRlcjtcbiAgICAgICAgaWYgKGxlbmd0aCA8PSAyMylcbiAgICAgICAgICAgIHdyaXRlci51OCg2NCAvKiBNQUpPUl9PVkVSTEFZLkJJTiAqLyArIGxlbmd0aCk7XG4gICAgICAgIGVsc2UgaWYgKGxlbmd0aCA8PSAweGZmKVxuICAgICAgICAgICAgd3JpdGVyLnUxNigoMHg1OCA8PCA4KSArIGxlbmd0aCk7XG4gICAgICAgIGVsc2UgaWYgKGxlbmd0aCA8PSAweGZmZmYpXG4gICAgICAgICAgICB3cml0ZXIudTh1MTYoMHg1OSwgbGVuZ3RoKTtcbiAgICAgICAgZWxzZSBpZiAobGVuZ3RoIDw9IDB4ZmZmZmZmZmYpXG4gICAgICAgICAgICB3cml0ZXIudTh1MzIoMHg1YSwgbGVuZ3RoKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgd3JpdGVyLnU4dTY0KDB4NWIsIGxlbmd0aCk7XG4gICAgfVxuICAgIHdyaXRlU3RyKHN0cikge1xuICAgICAgICBjb25zdCB3cml0ZXIgPSB0aGlzLndyaXRlcjtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gc3RyLmxlbmd0aDtcbiAgICAgICAgY29uc3QgbWF4U2l6ZSA9IGxlbmd0aCAqIDQ7XG4gICAgICAgIHdyaXRlci5lbnN1cmVDYXBhY2l0eSg1ICsgbWF4U2l6ZSk7XG4gICAgICAgIGNvbnN0IHVpbnQ4ID0gd3JpdGVyLnVpbnQ4O1xuICAgICAgICBsZXQgbGVuZ3RoT2Zmc2V0ID0gd3JpdGVyLng7XG4gICAgICAgIGlmIChtYXhTaXplIDw9IDIzKVxuICAgICAgICAgICAgd3JpdGVyLngrKztcbiAgICAgICAgZWxzZSBpZiAobWF4U2l6ZSA8PSAweGZmKSB7XG4gICAgICAgICAgICB1aW50OFt3cml0ZXIueCsrXSA9IDB4Nzg7XG4gICAgICAgICAgICBsZW5ndGhPZmZzZXQgPSB3cml0ZXIueDtcbiAgICAgICAgICAgIHdyaXRlci54Kys7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobWF4U2l6ZSA8PSAweGZmZmYpIHtcbiAgICAgICAgICAgIHVpbnQ4W3dyaXRlci54KytdID0gMHg3OTtcbiAgICAgICAgICAgIGxlbmd0aE9mZnNldCA9IHdyaXRlci54O1xuICAgICAgICAgICAgd3JpdGVyLnggKz0gMjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHVpbnQ4W3dyaXRlci54KytdID0gMHg3YTtcbiAgICAgICAgICAgIGxlbmd0aE9mZnNldCA9IHdyaXRlci54O1xuICAgICAgICAgICAgd3JpdGVyLnggKz0gNDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBieXRlc1dyaXR0ZW4gPSB3cml0ZXIudXRmOChzdHIpO1xuICAgICAgICBpZiAobWF4U2l6ZSA8PSAyMylcbiAgICAgICAgICAgIHVpbnQ4W2xlbmd0aE9mZnNldF0gPSA5NiAvKiBNQUpPUl9PVkVSTEFZLlNUUiAqLyArIGJ5dGVzV3JpdHRlbjtcbiAgICAgICAgZWxzZSBpZiAobWF4U2l6ZSA8PSAweGZmKVxuICAgICAgICAgICAgdWludDhbbGVuZ3RoT2Zmc2V0XSA9IGJ5dGVzV3JpdHRlbjtcbiAgICAgICAgZWxzZSBpZiAobWF4U2l6ZSA8PSAweGZmZmYpXG4gICAgICAgICAgICB3cml0ZXIudmlldy5zZXRVaW50MTYobGVuZ3RoT2Zmc2V0LCBieXRlc1dyaXR0ZW4pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB3cml0ZXIudmlldy5zZXRVaW50MzIobGVuZ3RoT2Zmc2V0LCBieXRlc1dyaXR0ZW4pO1xuICAgIH1cbiAgICB3cml0ZVN0ckhkcihsZW5ndGgpIHtcbiAgICAgICAgY29uc3Qgd3JpdGVyID0gdGhpcy53cml0ZXI7XG4gICAgICAgIGlmIChsZW5ndGggPD0gMjMpXG4gICAgICAgICAgICB3cml0ZXIudTgoOTYgLyogTUFKT1JfT1ZFUkxBWS5TVFIgKi8gKyBsZW5ndGgpO1xuICAgICAgICBlbHNlIGlmIChsZW5ndGggPD0gMHhmZilcbiAgICAgICAgICAgIHdyaXRlci51MTYoKDB4NzggPDwgOCkgKyBsZW5ndGgpO1xuICAgICAgICBlbHNlIGlmIChsZW5ndGggPD0gMHhmZmZmKVxuICAgICAgICAgICAgd3JpdGVyLnU4dTE2KDB4NzksIGxlbmd0aCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHdyaXRlci51OHUzMigweDdhLCBsZW5ndGgpO1xuICAgIH1cbiAgICB3cml0ZUFzY2lpU3RyKHN0cikge1xuICAgICAgICB0aGlzLndyaXRlU3RySGRyKHN0ci5sZW5ndGgpO1xuICAgICAgICB0aGlzLndyaXRlci5hc2NpaShzdHIpO1xuICAgIH1cbiAgICB3cml0ZUFycihhcnIpIHtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gYXJyLmxlbmd0aDtcbiAgICAgICAgdGhpcy53cml0ZUFyckhkcihsZW5ndGgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgdGhpcy53cml0ZUFueShhcnJbaV0pO1xuICAgIH1cbiAgICB3cml0ZUFyckhkcihsZW5ndGgpIHtcbiAgICAgICAgY29uc3Qgd3JpdGVyID0gdGhpcy53cml0ZXI7XG4gICAgICAgIGlmIChsZW5ndGggPD0gMjMpXG4gICAgICAgICAgICB3cml0ZXIudTgoMTI4IC8qIE1BSk9SX09WRVJMQVkuQVJSICovICsgbGVuZ3RoKTtcbiAgICAgICAgZWxzZSBpZiAobGVuZ3RoIDw9IDB4ZmYpXG4gICAgICAgICAgICB3cml0ZXIudTE2KCgweDk4IDw8IDgpICsgbGVuZ3RoKTtcbiAgICAgICAgZWxzZSBpZiAobGVuZ3RoIDw9IDB4ZmZmZilcbiAgICAgICAgICAgIHdyaXRlci51OHUxNigweDk5LCBsZW5ndGgpO1xuICAgICAgICBlbHNlIGlmIChsZW5ndGggPD0gMHhmZmZmZmZmZilcbiAgICAgICAgICAgIHdyaXRlci51OHUzMigweDlhLCBsZW5ndGgpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB3cml0ZXIudTh1NjQoMHg5YiwgbGVuZ3RoKTtcbiAgICB9XG4gICAgd3JpdGVPYmoob2JqKSB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICAgICAgICBjb25zdCBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICAgICAgdGhpcy53cml0ZU9iakhkcihsZW5ndGgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBrZXlzW2ldO1xuICAgICAgICAgICAgdGhpcy53cml0ZVN0cihrZXkpO1xuICAgICAgICAgICAgdGhpcy53cml0ZUFueShvYmpba2V5XSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgd3JpdGVPYmpIZHIobGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHdyaXRlciA9IHRoaXMud3JpdGVyO1xuICAgICAgICBpZiAobGVuZ3RoIDw9IDIzKVxuICAgICAgICAgICAgd3JpdGVyLnU4KDE2MCAvKiBNQUpPUl9PVkVSTEFZLk1BUCAqLyArIGxlbmd0aCk7XG4gICAgICAgIGVsc2UgaWYgKGxlbmd0aCA8PSAweGZmKVxuICAgICAgICAgICAgd3JpdGVyLnUxNigoMHhiOCA8PCA4KSArIGxlbmd0aCk7XG4gICAgICAgIGVsc2UgaWYgKGxlbmd0aCA8PSAweGZmZmYpXG4gICAgICAgICAgICB3cml0ZXIudTh1MTYoMHhiOSwgbGVuZ3RoKTtcbiAgICAgICAgZWxzZSBpZiAobGVuZ3RoIDw9IDB4ZmZmZmZmZmYpXG4gICAgICAgICAgICB3cml0ZXIudTh1MzIoMHhiYSwgbGVuZ3RoKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgd3JpdGVyLnU4dTY0KDB4YmIsIGxlbmd0aCk7XG4gICAgfVxuICAgIHdyaXRlTWFwSGRyKGxlbmd0aCkge1xuICAgICAgICB0aGlzLndyaXRlT2JqSGRyKGxlbmd0aCk7XG4gICAgfVxuICAgIHdyaXRlU3RhcnRNYXAoKSB7XG4gICAgICAgIHRoaXMud3JpdGVyLnU4KDB4YmYpO1xuICAgIH1cbiAgICB3cml0ZVRhZyh0YWcsIHZhbHVlKSB7XG4gICAgICAgIHRoaXMud3JpdGVUYWdIZHIodGFnKTtcbiAgICAgICAgdGhpcy53cml0ZUFueSh2YWx1ZSk7XG4gICAgfVxuICAgIHdyaXRlVGFnSGRyKHRhZykge1xuICAgICAgICBjb25zdCB3cml0ZXIgPSB0aGlzLndyaXRlcjtcbiAgICAgICAgaWYgKHRhZyA8PSAyMylcbiAgICAgICAgICAgIHdyaXRlci51OCgxOTIgLyogTUFKT1JfT1ZFUkxBWS5UQUcgKi8gKyB0YWcpO1xuICAgICAgICBlbHNlIGlmICh0YWcgPD0gMHhmZilcbiAgICAgICAgICAgIHdyaXRlci51MTYoKDB4ZDggPDwgOCkgKyB0YWcpO1xuICAgICAgICBlbHNlIGlmICh0YWcgPD0gMHhmZmZmKVxuICAgICAgICAgICAgd3JpdGVyLnU4dTE2KDB4ZDksIHRhZyk7XG4gICAgICAgIGVsc2UgaWYgKHRhZyA8PSAweGZmZmZmZmZmKVxuICAgICAgICAgICAgd3JpdGVyLnU4dTMyKDB4ZGEsIHRhZyk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHdyaXRlci51OHU2NCgweGRiLCB0YWcpO1xuICAgIH1cbiAgICB3cml0ZVRrbih2YWx1ZSkge1xuICAgICAgICBjb25zdCB3cml0ZXIgPSB0aGlzLndyaXRlcjtcbiAgICAgICAgaWYgKHZhbHVlIDw9IDIzKVxuICAgICAgICAgICAgd3JpdGVyLnU4KDIyNCAvKiBNQUpPUl9PVkVSTEFZLlRLTiAqLyArIHZhbHVlKTtcbiAgICAgICAgZWxzZSBpZiAodmFsdWUgPD0gMHhmZilcbiAgICAgICAgICAgIHdyaXRlci51MTYoKDB4ZjggPDwgOCkgKyB2YWx1ZSk7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU3RyZWFtaW5nIGVuY29kaW5nXG4gICAgd3JpdGVTdGFydFN0cigpIHtcbiAgICAgICAgdGhpcy53cml0ZXIudTgoMHg3Zik7XG4gICAgfVxuICAgIHdyaXRlU3RyQ2h1bmsoc3RyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxuICAgIHdyaXRlRW5kU3RyKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgIH1cbiAgICB3cml0ZVN0YXJ0QmluKCkge1xuICAgICAgICB0aGlzLndyaXRlci51OCgweDVmKTtcbiAgICB9XG4gICAgd3JpdGVCaW5DaHVuayhidWYpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9XG4gICAgd3JpdGVFbmRCaW4oKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxuICAgIHdyaXRlU3RhcnRBcnIoKSB7XG4gICAgICAgIHRoaXMud3JpdGVyLnU4KDB4OWYpO1xuICAgIH1cbiAgICB3cml0ZUFyckNodW5rKGl0ZW0pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9XG4gICAgd3JpdGVFbmRBcnIoKSB7XG4gICAgICAgIHRoaXMud3JpdGVyLnU4KDI1NSAvKiBDT05TVC5FTkQgKi8pO1xuICAgIH1cbiAgICB3cml0ZVN0YXJ0T2JqKCkge1xuICAgICAgICB0aGlzLndyaXRlci51OCgweGJmKTtcbiAgICB9XG4gICAgd3JpdGVPYmpDaHVuayhrZXksIHZhbHVlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxuICAgIHdyaXRlRW5kT2JqKCkge1xuICAgICAgICB0aGlzLndyaXRlci51OCgyNTUgLyogQ09OU1QuRU5EICovKTtcbiAgICB9XG59XG5leHBvcnRzLkNib3JFbmNvZGVyRmFzdCA9IENib3JFbmNvZGVyRmFzdDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUNib3JFbmNvZGVyRmFzdC5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuSnNvblBhY2tWYWx1ZSA9IHZvaWQgMDtcbi8qKlxuICogVXNlIHRoaXMgd3JhcHBlciBpcyB5b3UgaGF2ZSBhIHByZS1lbmNvZGVkIE1lc3NhZ2VQYWNrIG9yIENCT1IgdmFsdWUgYW5kIHlvdSB3b3VsZFxuICogbGlrZSB0byBkdW1wIGl0IGludG8gYSB0aGUgZG9jdW1lbnQgYXMtaXMuIFRoZSBjb250ZW50cyBvZiBgYnVmYCB3aWxsXG4gKiBiZSB3cml0dGVuIGFzIGlzIHRvIHRoZSBkb2N1bWVudC5cbiAqXG4gKiBJdCBhbHNvIHNlcnZlcyBhcyBDQk9SIHNpbXBsZSB2YWx1ZSBjb250YWluZXIuIEluIHdoaWNoIGNhc2UgdGhlIHR5cGUgb2YgdmFsdWVcbiAqIGB2YWxgIGZpZWxkIGlzIFwibnVtYmVyXCIuXG4gKlxuICogQGNhdGVnb3J5IFZhbHVlXG4gKi9cbmNsYXNzIEpzb25QYWNrVmFsdWUge1xuICAgIGNvbnN0cnVjdG9yKHZhbCkge1xuICAgICAgICB0aGlzLnZhbCA9IHZhbDtcbiAgICB9XG59XG5leHBvcnRzLkpzb25QYWNrVmFsdWUgPSBKc29uUGFja1ZhbHVlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SnNvblBhY2tWYWx1ZS5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQ2JvckVuY29kZXIgPSB2b2lkIDA7XG5jb25zdCBpc0Zsb2F0MzJfMSA9IHJlcXVpcmUoXCJAanNvbmpveS5jb20vYnVmZmVycy9saWIvaXNGbG9hdDMyXCIpO1xuY29uc3QgSnNvblBhY2tFeHRlbnNpb25fMSA9IHJlcXVpcmUoXCIuLi9Kc29uUGFja0V4dGVuc2lvblwiKTtcbmNvbnN0IENib3JFbmNvZGVyRmFzdF8xID0gcmVxdWlyZShcIi4vQ2JvckVuY29kZXJGYXN0XCIpO1xuY29uc3QgSnNvblBhY2tWYWx1ZV8xID0gcmVxdWlyZShcIi4uL0pzb25QYWNrVmFsdWVcIik7XG5jbGFzcyBDYm9yRW5jb2RlciBleHRlbmRzIENib3JFbmNvZGVyRmFzdF8xLkNib3JFbmNvZGVyRmFzdCB7XG4gICAgLyoqXG4gICAgICogQ2FsbGVkIHdoZW4gdGhlIGVuY29kZXIgZW5jb3VudGVycyBhIHZhbHVlIHRoYXQgaXQgZG9lcyBub3Qga25vdyBob3cgdG8gZW5jb2RlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlIFNvbWUgSmF2YVNjcmlwdCB2YWx1ZS5cbiAgICAgKi9cbiAgICB3cml0ZVVua25vd24odmFsdWUpIHtcbiAgICAgICAgdGhpcy53cml0ZU51bGwoKTtcbiAgICB9XG4gICAgd3JpdGVBbnkodmFsdWUpIHtcbiAgICAgICAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMud3JpdGVOdW1iZXIodmFsdWUpO1xuICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53cml0ZVN0cih2YWx1ZSk7XG4gICAgICAgICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53cml0ZXIudTgoMHhmNCArICt2YWx1ZSk7XG4gICAgICAgICAgICBjYXNlICdvYmplY3QnOiB7XG4gICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMud3JpdGVyLnU4KDB4ZjYpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnN0ciA9IHZhbHVlLmNvbnN0cnVjdG9yO1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoY29uc3RyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgT2JqZWN0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMud3JpdGVPYmoodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIEFycmF5OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMud3JpdGVBcnIodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFVpbnQ4QXJyYXk6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53cml0ZUJpbih2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgTWFwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMud3JpdGVNYXAodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIEpzb25QYWNrRXh0ZW5zaW9uXzEuSnNvblBhY2tFeHRlbnNpb246XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53cml0ZVRhZyh2YWx1ZS50YWcsIHZhbHVlLnZhbCk7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgSnNvblBhY2tWYWx1ZV8xLkpzb25QYWNrVmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ1ZiA9IHZhbHVlLnZhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLndyaXRlci5idWYoYnVmLCBidWYubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgVWludDhBcnJheSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53cml0ZUJpbih2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMud3JpdGVBcnIodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTWFwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLndyaXRlTWFwKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLndyaXRlVW5rbm93bih2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAndW5kZWZpbmVkJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53cml0ZVVuZGVmKCk7XG4gICAgICAgICAgICBjYXNlICdiaWdpbnQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLndyaXRlQmlnSW50KHZhbHVlKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMud3JpdGVVbmtub3duKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB3cml0ZUZsb2F0KGZsb2F0KSB7XG4gICAgICAgIGlmICgoMCwgaXNGbG9hdDMyXzEuaXNGbG9hdDMyKShmbG9hdCkpXG4gICAgICAgICAgICB0aGlzLndyaXRlci51OGYzMigweGZhLCBmbG9hdCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMud3JpdGVyLnU4ZjY0KDB4ZmIsIGZsb2F0KTtcbiAgICB9XG4gICAgd3JpdGVNYXAobWFwKSB7XG4gICAgICAgIHRoaXMud3JpdGVNYXBIZHIobWFwLnNpemUpO1xuICAgICAgICBtYXAuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgICAgICAgdGhpcy53cml0ZUFueShrZXkpO1xuICAgICAgICAgICAgdGhpcy53cml0ZUFueSh2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB3cml0ZVVuZGVmKCkge1xuICAgICAgICB0aGlzLndyaXRlci51OCgweGY3KTtcbiAgICB9XG59XG5leHBvcnRzLkNib3JFbmNvZGVyID0gQ2JvckVuY29kZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1DYm9yRW5jb2Rlci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuZGVjb2RlRjE2ID0gdm9pZCAwO1xuY29uc3QgcG93ID0gTWF0aC5wb3c7XG5jb25zdCBkZWNvZGVGMTYgPSAoYmluYXJ5KSA9PiB7XG4gICAgY29uc3QgZXhwb25lbnQgPSAoYmluYXJ5ICYgMHg3YzAwKSA+PiAxMDtcbiAgICBjb25zdCBmcmFjdGlvbiA9IGJpbmFyeSAmIDB4MDNmZjtcbiAgICByZXR1cm4gKChiaW5hcnkgPj4gMTUgPyAtMSA6IDEpICpcbiAgICAgICAgKGV4cG9uZW50XG4gICAgICAgICAgICA/IGV4cG9uZW50ID09PSAweDFmXG4gICAgICAgICAgICAgICAgPyBmcmFjdGlvblxuICAgICAgICAgICAgICAgICAgICA/IE5hTlxuICAgICAgICAgICAgICAgICAgICA6IEluZmluaXR5XG4gICAgICAgICAgICAgICAgOiBwb3coMiwgZXhwb25lbnQgLSAxNSkgKiAoMSArIGZyYWN0aW9uIC8gMHg0MDApXG4gICAgICAgICAgICA6IDYuMTAzNTE1NjI1ZS01ICogKGZyYWN0aW9uIC8gMHg0MDApKSk7XG59O1xuZXhwb3J0cy5kZWNvZGVGMTYgPSBkZWNvZGVGMTY7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1mMTYuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmRlY29kZUFzY2lpTWF4MTUgPSBleHBvcnRzLmRlY29kZUFzY2lpID0gdm9pZCAwO1xuY29uc3QgZnJvbUNoYXJDb2RlID0gU3RyaW5nLmZyb21DaGFyQ29kZTtcbi8qKiBUaGlzIGNvZGUgd2FzIGJvcnJvd2VkIGZvcm0gY2Jvci14IHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gKi9cbi8vIE1JVCBMaWNlbnNlXG4vLyBDb3B5cmlnaHQgKGMpIDIwMjAgS3JpcyBaeXBcbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuLy8gY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbi8vIFNPRlRXQVJFLlxuY29uc3QgZGVjb2RlQXNjaWkgPSAoc3JjLCBwb3NpdGlvbiwgbGVuZ3RoKSA9PiB7XG4gICAgY29uc3QgYnl0ZXMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGJ5dGUgPSBzcmNbcG9zaXRpb24rK107XG4gICAgICAgIGlmIChieXRlICYgMHg4MClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgYnl0ZXMucHVzaChieXRlKTtcbiAgICB9XG4gICAgcmV0dXJuIGZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIGJ5dGVzKTtcbn07XG5leHBvcnRzLmRlY29kZUFzY2lpID0gZGVjb2RlQXNjaWk7XG5jb25zdCBkZWNvZGVBc2NpaU1heDE1ID0gKHNyYywgcG9zaXRpb24sIGxlbmd0aCkgPT4ge1xuICAgIGlmIChsZW5ndGggPCA0KSB7XG4gICAgICAgIGlmIChsZW5ndGggPCAyKSB7XG4gICAgICAgICAgICBpZiAobGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGEgPSBzcmNbcG9zaXRpb24rK107XG4gICAgICAgICAgICAgICAgaWYgKChhICYgMHg4MCkgPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uIC09IDE7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZyb21DaGFyQ29kZShhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGEgPSBzcmNbcG9zaXRpb24rK107XG4gICAgICAgICAgICBjb25zdCBiID0gc3JjW3Bvc2l0aW9uKytdO1xuICAgICAgICAgICAgaWYgKChhICYgMHg4MCkgPiAwIHx8IChiICYgMHg4MCkgPiAwKSB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb24gLT0gMjtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGVuZ3RoIDwgMylcbiAgICAgICAgICAgICAgICByZXR1cm4gZnJvbUNoYXJDb2RlKGEsIGIpO1xuICAgICAgICAgICAgY29uc3QgYyA9IHNyY1twb3NpdGlvbisrXTtcbiAgICAgICAgICAgIGlmICgoYyAmIDB4ODApID4gMCkge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uIC09IDM7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZyb21DaGFyQ29kZShhLCBiLCBjKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgY29uc3QgYSA9IHNyY1twb3NpdGlvbisrXTtcbiAgICAgICAgY29uc3QgYiA9IHNyY1twb3NpdGlvbisrXTtcbiAgICAgICAgY29uc3QgYyA9IHNyY1twb3NpdGlvbisrXTtcbiAgICAgICAgY29uc3QgZCA9IHNyY1twb3NpdGlvbisrXTtcbiAgICAgICAgaWYgKChhICYgMHg4MCkgPiAwIHx8IChiICYgMHg4MCkgPiAwIHx8IChjICYgMHg4MCkgPiAwIHx8IChkICYgMHg4MCkgPiAwKSB7XG4gICAgICAgICAgICBwb3NpdGlvbiAtPSA0O1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsZW5ndGggPCA2KSB7XG4gICAgICAgICAgICBpZiAobGVuZ3RoID09PSA0KVxuICAgICAgICAgICAgICAgIHJldHVybiBmcm9tQ2hhckNvZGUoYSwgYiwgYywgZCk7XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlID0gc3JjW3Bvc2l0aW9uKytdO1xuICAgICAgICAgICAgICAgIGlmICgoZSAmIDB4ODApID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiAtPSA1O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBmcm9tQ2hhckNvZGUoYSwgYiwgYywgZCwgZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobGVuZ3RoIDwgOCkge1xuICAgICAgICAgICAgY29uc3QgZSA9IHNyY1twb3NpdGlvbisrXTtcbiAgICAgICAgICAgIGNvbnN0IGYgPSBzcmNbcG9zaXRpb24rK107XG4gICAgICAgICAgICBpZiAoKGUgJiAweDgwKSA+IDAgfHwgKGYgJiAweDgwKSA+IDApIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbiAtPSA2O1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsZW5ndGggPCA3KVxuICAgICAgICAgICAgICAgIHJldHVybiBmcm9tQ2hhckNvZGUoYSwgYiwgYywgZCwgZSwgZik7XG4gICAgICAgICAgICBjb25zdCBnID0gc3JjW3Bvc2l0aW9uKytdO1xuICAgICAgICAgICAgaWYgKChnICYgMHg4MCkgPiAwKSB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb24gLT0gNztcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZnJvbUNoYXJDb2RlKGEsIGIsIGMsIGQsIGUsIGYsIGcpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZSA9IHNyY1twb3NpdGlvbisrXTtcbiAgICAgICAgICAgIGNvbnN0IGYgPSBzcmNbcG9zaXRpb24rK107XG4gICAgICAgICAgICBjb25zdCBnID0gc3JjW3Bvc2l0aW9uKytdO1xuICAgICAgICAgICAgY29uc3QgaCA9IHNyY1twb3NpdGlvbisrXTtcbiAgICAgICAgICAgIGlmICgoZSAmIDB4ODApID4gMCB8fCAoZiAmIDB4ODApID4gMCB8fCAoZyAmIDB4ODApID4gMCB8fCAoaCAmIDB4ODApID4gMCkge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uIC09IDg7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxlbmd0aCA8IDEwKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxlbmd0aCA9PT0gOClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZyb21DaGFyQ29kZShhLCBiLCBjLCBkLCBlLCBmLCBnLCBoKTtcbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IHNyY1twb3NpdGlvbisrXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKChpICYgMHg4MCkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiAtPSA5O1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmcm9tQ2hhckNvZGUoYSwgYiwgYywgZCwgZSwgZiwgZywgaCwgaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAobGVuZ3RoIDwgMTIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpID0gc3JjW3Bvc2l0aW9uKytdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGogPSBzcmNbcG9zaXRpb24rK107XG4gICAgICAgICAgICAgICAgaWYgKChpICYgMHg4MCkgPiAwIHx8IChqICYgMHg4MCkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uIC09IDEwO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPCAxMSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZyb21DaGFyQ29kZShhLCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpLCBqKTtcbiAgICAgICAgICAgICAgICBjb25zdCBrID0gc3JjW3Bvc2l0aW9uKytdO1xuICAgICAgICAgICAgICAgIGlmICgoayAmIDB4ODApID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiAtPSAxMTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZnJvbUNoYXJDb2RlKGEsIGIsIGMsIGQsIGUsIGYsIGcsIGgsIGksIGosIGspO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaSA9IHNyY1twb3NpdGlvbisrXTtcbiAgICAgICAgICAgICAgICBjb25zdCBqID0gc3JjW3Bvc2l0aW9uKytdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGsgPSBzcmNbcG9zaXRpb24rK107XG4gICAgICAgICAgICAgICAgY29uc3QgbCA9IHNyY1twb3NpdGlvbisrXTtcbiAgICAgICAgICAgICAgICBpZiAoKGkgJiAweDgwKSA+IDAgfHwgKGogJiAweDgwKSA+IDAgfHwgKGsgJiAweDgwKSA+IDAgfHwgKGwgJiAweDgwKSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gLT0gMTI7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGxlbmd0aCA8IDE0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPT09IDEyKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZyb21DaGFyQ29kZShhLCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpLCBqLCBrLCBsKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtID0gc3JjW3Bvc2l0aW9uKytdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChtICYgMHg4MCkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gLT0gMTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZyb21DaGFyQ29kZShhLCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpLCBqLCBrLCBsLCBtKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbSA9IHNyY1twb3NpdGlvbisrXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IHNyY1twb3NpdGlvbisrXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKChtICYgMHg4MCkgPiAwIHx8IChuICYgMHg4MCkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiAtPSAxNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAobGVuZ3RoIDwgMTUpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnJvbUNoYXJDb2RlKGEsIGIsIGMsIGQsIGUsIGYsIGcsIGgsIGksIGosIGssIGwsIG0sIG4pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvID0gc3JjW3Bvc2l0aW9uKytdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoKG8gJiAweDgwKSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uIC09IDE1O1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmcm9tQ2hhckNvZGUoYSwgYiwgYywgZCwgZSwgZiwgZywgaCwgaSwgaiwgaywgbCwgbSwgbiwgbyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufTtcbmV4cG9ydHMuZGVjb2RlQXNjaWlNYXgxNSA9IGRlY29kZUFzY2lpTWF4MTU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kZWNvZGVBc2NpaS5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmNvbnN0IGZyb21DaGFyQ29kZSA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG5leHBvcnRzLmRlZmF1bHQgPSAoYnVmLCBzdGFydCwgbGVuZ3RoKSA9PiB7XG4gICAgbGV0IG9mZnNldCA9IHN0YXJ0O1xuICAgIGNvbnN0IGVuZCA9IG9mZnNldCArIGxlbmd0aDtcbiAgICBjb25zdCBwb2ludHMgPSBbXTtcbiAgICB3aGlsZSAob2Zmc2V0IDwgZW5kKSB7XG4gICAgICAgIGxldCBjb2RlID0gYnVmW29mZnNldCsrXTtcbiAgICAgICAgaWYgKChjb2RlICYgMHg4MCkgIT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IG9jdGV0MiA9IGJ1ZltvZmZzZXQrK10gJiAweDNmO1xuICAgICAgICAgICAgaWYgKChjb2RlICYgMHhlMCkgPT09IDB4YzApIHtcbiAgICAgICAgICAgICAgICBjb2RlID0gKChjb2RlICYgMHgxZikgPDwgNikgfCBvY3RldDI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvY3RldDMgPSBidWZbb2Zmc2V0KytdICYgMHgzZjtcbiAgICAgICAgICAgICAgICBpZiAoKGNvZGUgJiAweGYwKSA9PT0gMHhlMCkge1xuICAgICAgICAgICAgICAgICAgICBjb2RlID0gKChjb2RlICYgMHgxZikgPDwgMTIpIHwgKG9jdGV0MiA8PCA2KSB8IG9jdGV0MztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgoY29kZSAmIDB4ZjgpID09PSAweGYwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvY3RldDQgPSBidWZbb2Zmc2V0KytdICYgMHgzZjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1bml0ID0gKChjb2RlICYgMHgwNykgPDwgMHgxMikgfCAob2N0ZXQyIDw8IDB4MGMpIHwgKG9jdGV0MyA8PCAweDA2KSB8IG9jdGV0NDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bml0ID4gMHhmZmZmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdCAtPSAweDEwMDAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuaXQwID0gKCh1bml0ID4+PiAxMCkgJiAweDNmZikgfCAweGQ4MDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZSA9IDB4ZGMwMCB8ICh1bml0ICYgMHgzZmYpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cy5wdXNoKHVuaXQwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPSB1bml0O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBvaW50cy5wdXNoKGNvZGUpO1xuICAgIH1cbiAgICByZXR1cm4gZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZywgcG9pbnRzKTtcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD12MTguanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5jb25zdCB0c2xpYl8xID0gcmVxdWlyZShcInRzbGliXCIpO1xuY29uc3QgZGVjb2RlQXNjaWlfMSA9IHJlcXVpcmUoXCIuLi9kZWNvZGVBc2NpaVwiKTtcbmNvbnN0IHYxOF8xID0gdHNsaWJfMS5fX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vdjE4XCIpKTtcbmNvbnN0IGhhc0J1ZmZlciA9IHR5cGVvZiBCdWZmZXIgIT09ICd1bmRlZmluZWQnO1xuY29uc3QgdXRmOFNsaWNlID0gaGFzQnVmZmVyID8gQnVmZmVyLnByb3RvdHlwZS51dGY4U2xpY2UgOiBudWxsO1xuY29uc3QgZnJvbSA9IGhhc0J1ZmZlciA/IEJ1ZmZlci5mcm9tIDogbnVsbDtcbmNvbnN0IHNob3J0RGVjb2RlciA9IChidWYsIHN0YXJ0LCBsZW5ndGgpID0+ICgwLCBkZWNvZGVBc2NpaV8xLmRlY29kZUFzY2lpTWF4MTUpKGJ1Ziwgc3RhcnQsIGxlbmd0aCkgPz8gKDAsIHYxOF8xLmRlZmF1bHQpKGJ1Ziwgc3RhcnQsIGxlbmd0aCk7XG5jb25zdCBtaWREZWNvZGVyID0gKGJ1Ziwgc3RhcnQsIGxlbmd0aCkgPT4gKDAsIGRlY29kZUFzY2lpXzEuZGVjb2RlQXNjaWkpKGJ1Ziwgc3RhcnQsIGxlbmd0aCkgPz8gKDAsIHYxOF8xLmRlZmF1bHQpKGJ1Ziwgc3RhcnQsIGxlbmd0aCk7XG5jb25zdCBsb25nRGVjb2RlciA9IHV0ZjhTbGljZVxuICAgID8gKGJ1Ziwgc3RhcnQsIGxlbmd0aCkgPT4gdXRmOFNsaWNlLmNhbGwoYnVmLCBzdGFydCwgc3RhcnQgKyBsZW5ndGgpXG4gICAgOiBmcm9tXG4gICAgICAgID8gKGJ1Ziwgc3RhcnQsIGxlbmd0aCkgPT4gZnJvbShidWYpXG4gICAgICAgICAgICAuc3ViYXJyYXkoc3RhcnQsIHN0YXJ0ICsgbGVuZ3RoKVxuICAgICAgICAgICAgLnRvU3RyaW5nKCd1dGY4JylcbiAgICAgICAgOiB2MThfMS5kZWZhdWx0O1xuY29uc3QgZGVjb2RlciA9IChidWYsIHN0YXJ0LCBsZW5ndGgpID0+IHtcbiAgICBpZiAobGVuZ3RoIDwgMTYpXG4gICAgICAgIHJldHVybiBzaG9ydERlY29kZXIoYnVmLCBzdGFydCwgbGVuZ3RoKTtcbiAgICBpZiAobGVuZ3RoIDwgMzIpXG4gICAgICAgIHJldHVybiBtaWREZWNvZGVyKGJ1Ziwgc3RhcnQsIGxlbmd0aCk7XG4gICAgcmV0dXJuIGxvbmdEZWNvZGVyKGJ1Ziwgc3RhcnQsIGxlbmd0aCk7XG59O1xuZXhwb3J0cy5kZWZhdWx0ID0gZGVjb2Rlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXYxNi5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuZGVjb2RlVXRmOCA9IHZvaWQgMDtcbmNvbnN0IHRzbGliXzEgPSByZXF1aXJlKFwidHNsaWJcIik7XG5jb25zdCB2MTZfMSA9IHRzbGliXzEuX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL3YxNlwiKSk7XG5leHBvcnRzLmRlY29kZVV0ZjggPSB2MTZfMS5kZWZhdWx0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlJlYWRlciA9IHZvaWQgMDtcbmNvbnN0IGRlY29kZVV0ZjhfMSA9IHJlcXVpcmUoXCIuL3V0ZjgvZGVjb2RlVXRmOFwiKTtcbmNsYXNzIFJlYWRlciB7XG4gICAgY29uc3RydWN0b3IodWludDggPSBuZXcgVWludDhBcnJheShbXSksIHZpZXcgPSBuZXcgRGF0YVZpZXcodWludDguYnVmZmVyLCB1aW50OC5ieXRlT2Zmc2V0LCB1aW50OC5sZW5ndGgpLCB4ID0gMCwgZW5kID0gdWludDgubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMudWludDggPSB1aW50ODtcbiAgICAgICAgdGhpcy52aWV3ID0gdmlldztcbiAgICAgICAgdGhpcy54ID0geDtcbiAgICAgICAgdGhpcy5lbmQgPSBlbmQ7XG4gICAgfVxuICAgIHJlc2V0KHVpbnQ4KSB7XG4gICAgICAgIHRoaXMueCA9IDA7XG4gICAgICAgIHRoaXMudWludDggPSB1aW50ODtcbiAgICAgICAgdGhpcy52aWV3ID0gbmV3IERhdGFWaWV3KHVpbnQ4LmJ1ZmZlciwgdWludDguYnl0ZU9mZnNldCwgdWludDgubGVuZ3RoKTtcbiAgICB9XG4gICAgc2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW5kIC0gdGhpcy54O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXQgY3VycmVudCBieXRlIHZhbHVlIHdpdGhvdXQgYWR2YW5jaW5nIHRoZSBjdXJzb3IuXG4gICAgICovXG4gICAgcGVlaygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlldy5nZXRVaW50OCh0aGlzLngpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBVc2UgcGVlaygpIGluc3RlYWQuXG4gICAgICovXG4gICAgcGVhaygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGVlaygpO1xuICAgIH1cbiAgICBza2lwKGxlbmd0aCkge1xuICAgICAgICB0aGlzLnggKz0gbGVuZ3RoO1xuICAgIH1cbiAgICBidWYoc2l6ZSA9IHRoaXMuc2l6ZSgpKSB7XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLng7XG4gICAgICAgIGNvbnN0IGVuZCA9IHggKyBzaXplO1xuICAgICAgICBjb25zdCBiaW4gPSB0aGlzLnVpbnQ4LnN1YmFycmF5KHgsIGVuZCk7XG4gICAgICAgIHRoaXMueCA9IGVuZDtcbiAgICAgICAgcmV0dXJuIGJpbjtcbiAgICB9XG4gICAgc3ViYXJyYXkoc3RhcnQgPSAwLCBlbmQpIHtcbiAgICAgICAgY29uc3QgeCA9IHRoaXMueDtcbiAgICAgICAgY29uc3QgYWN0dWFsU3RhcnQgPSB4ICsgc3RhcnQ7XG4gICAgICAgIGNvbnN0IGFjdHVhbEVuZCA9IHR5cGVvZiBlbmQgPT09ICdudW1iZXInID8geCArIGVuZCA6IHRoaXMuZW5kO1xuICAgICAgICByZXR1cm4gdGhpcy51aW50OC5zdWJhcnJheShhY3R1YWxTdGFydCwgYWN0dWFsRW5kKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgUmVhZGVyfSB0aGF0IHJlZmVyZW5jZXMgdGhlIHNhbWUgdW5kZXJseWluZyBtZW1vcnlcbiAgICAgKiBidWZmZXIuIEJ1dCB3aXRoIGluZGVwZW5kZW50IGN1cnNvciBhbmQgZW5kLlxuICAgICAqXG4gICAgICogUHJlZmVycmVkIG92ZXIge0BsaW5rIGJ1Zn0gc2luY2UgaXQgYWxzbyBwcm92aWRlcyBhIERhdGFWaWV3IGFuZCBpcyBtdWNoXG4gICAgICogZmFzdGVyIHRvIGFsbG9jYXRlIGEgbmV3IHtAbGluayBTbGljZX0gdGhhbiBhIG5ldyB7QGxpbmsgVWludDhBcnJheX0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3RhcnQgU3RhcnQgb2Zmc2V0IHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGN1cnNvciBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0gZW5kIEVuZCBvZmZzZXQgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uLlxuICAgICAqIEByZXR1cm5zIEEgbmV3IHtAbGluayBSZWFkZXJ9IGluc3RhbmNlLlxuICAgICAqL1xuICAgIHNsaWNlKHN0YXJ0ID0gMCwgZW5kKSB7XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLng7XG4gICAgICAgIGNvbnN0IGFjdHVhbFN0YXJ0ID0geCArIHN0YXJ0O1xuICAgICAgICBjb25zdCBhY3R1YWxFbmQgPSB0eXBlb2YgZW5kID09PSAnbnVtYmVyJyA/IHggKyBlbmQgOiB0aGlzLmVuZDtcbiAgICAgICAgcmV0dXJuIG5ldyBSZWFkZXIodGhpcy51aW50OCwgdGhpcy52aWV3LCBhY3R1YWxTdGFydCwgYWN0dWFsRW5kKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2ltaWxhciB0byB7QGxpbmsgc2xpY2V9IGJ1dCBhbHNvIGFkdmFuY2VzIHRoZSBjdXJzb3IuIFJldHVybnMgYSBuZXdcbiAgICAgKiB7QGxpbmsgUmVhZGVyfSB0aGF0IHJlZmVyZW5jZXMgdGhlIHNhbWUgdW5kZXJseWluZyBtZW1vcnkgYnVmZmVyLCBzdGFydGluZ1xuICAgICAqIGZyb20gdGhlIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHNpemUgTnVtYmVyIG9mIGJ5dGVzIHRvIGN1dCBmcm9tIHRoZSBjdXJyZW50IHBvc2l0aW9uLlxuICAgICAqIEByZXR1cm5zIEEgbmV3IHtAbGluayBSZWFkZXJ9IGluc3RhbmNlLlxuICAgICAqL1xuICAgIGN1dChzaXplID0gdGhpcy5zaXplKCkpIHtcbiAgICAgICAgY29uc3Qgc2xpY2UgPSB0aGlzLnNsaWNlKDAsIHNpemUpO1xuICAgICAgICB0aGlzLnNraXAoc2l6ZSk7XG4gICAgICAgIHJldHVybiBzbGljZTtcbiAgICB9XG4gICAgdTgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVpbnQ4W3RoaXMueCsrXTtcbiAgICAgICAgLy8gcmV0dXJuIHRoaXMudmlldy5nZXRVaW50OCh0aGlzLngrKyk7XG4gICAgfVxuICAgIGk4KCkge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3LmdldEludDgodGhpcy54KyspO1xuICAgIH1cbiAgICB1MTYoKSB7XG4gICAgICAgIC8vIGNvbnN0IG51bSA9IHRoaXMudmlldy5nZXRVaW50MTYodGhpcy54KTtcbiAgICAgICAgLy8gdGhpcy54ICs9IDI7XG4gICAgICAgIC8vIHJldHVybiBudW07XG4gICAgICAgIGxldCB4ID0gdGhpcy54O1xuICAgICAgICBjb25zdCBudW0gPSAodGhpcy51aW50OFt4KytdIDw8IDgpICsgdGhpcy51aW50OFt4KytdO1xuICAgICAgICB0aGlzLnggPSB4O1xuICAgICAgICByZXR1cm4gbnVtO1xuICAgIH1cbiAgICBpMTYoKSB7XG4gICAgICAgIGNvbnN0IG51bSA9IHRoaXMudmlldy5nZXRJbnQxNih0aGlzLngpO1xuICAgICAgICB0aGlzLnggKz0gMjtcbiAgICAgICAgcmV0dXJuIG51bTtcbiAgICB9XG4gICAgdTMyKCkge1xuICAgICAgICBjb25zdCBudW0gPSB0aGlzLnZpZXcuZ2V0VWludDMyKHRoaXMueCk7XG4gICAgICAgIHRoaXMueCArPSA0O1xuICAgICAgICByZXR1cm4gbnVtO1xuICAgIH1cbiAgICBpMzIoKSB7XG4gICAgICAgIGNvbnN0IG51bSA9IHRoaXMudmlldy5nZXRJbnQzMih0aGlzLngpO1xuICAgICAgICB0aGlzLnggKz0gNDtcbiAgICAgICAgcmV0dXJuIG51bTtcbiAgICB9XG4gICAgdTY0KCkge1xuICAgICAgICBjb25zdCBudW0gPSB0aGlzLnZpZXcuZ2V0QmlnVWludDY0KHRoaXMueCk7XG4gICAgICAgIHRoaXMueCArPSA4O1xuICAgICAgICByZXR1cm4gbnVtO1xuICAgIH1cbiAgICBpNjQoKSB7XG4gICAgICAgIGNvbnN0IG51bSA9IHRoaXMudmlldy5nZXRCaWdJbnQ2NCh0aGlzLngpO1xuICAgICAgICB0aGlzLnggKz0gODtcbiAgICAgICAgcmV0dXJuIG51bTtcbiAgICB9XG4gICAgZjMyKCkge1xuICAgICAgICBjb25zdCBwb3MgPSB0aGlzLng7XG4gICAgICAgIHRoaXMueCArPSA0O1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3LmdldEZsb2F0MzIocG9zKTtcbiAgICB9XG4gICAgZjY0KCkge1xuICAgICAgICBjb25zdCBwb3MgPSB0aGlzLng7XG4gICAgICAgIHRoaXMueCArPSA4O1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3LmdldEZsb2F0NjQocG9zKTtcbiAgICB9XG4gICAgdXRmOChzaXplKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy54O1xuICAgICAgICB0aGlzLnggKz0gc2l6ZTtcbiAgICAgICAgcmV0dXJuICgwLCBkZWNvZGVVdGY4XzEuZGVjb2RlVXRmOCkodGhpcy51aW50OCwgc3RhcnQsIHNpemUpO1xuICAgIH1cbiAgICBhc2NpaShsZW5ndGgpIHtcbiAgICAgICAgY29uc3QgdWludDggPSB0aGlzLnVpbnQ4O1xuICAgICAgICBsZXQgc3RyID0gJyc7XG4gICAgICAgIGNvbnN0IGVuZCA9IHRoaXMueCArIGxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMueDsgaSA8IGVuZDsgaSsrKVxuICAgICAgICAgICAgc3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUodWludDhbaV0pO1xuICAgICAgICB0aGlzLnggPSBlbmQ7XG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgfVxufVxuZXhwb3J0cy5SZWFkZXIgPSBSZWFkZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SZWFkZXIuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5jb25zdCBmcm9tQ2hhckNvZGUgPSBTdHJpbmcuZnJvbUNoYXJDb2RlO1xuZXhwb3J0cy5kZWZhdWx0ID0gKGJ1Ziwgc3RhcnQsIGxlbmd0aCkgPT4ge1xuICAgIGxldCBvZmZzZXQgPSBzdGFydDtcbiAgICBjb25zdCBlbmQgPSBvZmZzZXQgKyBsZW5ndGg7XG4gICAgbGV0IHN0ciA9ICcnO1xuICAgIHdoaWxlIChvZmZzZXQgPCBlbmQpIHtcbiAgICAgICAgY29uc3Qgb2N0ZXQxID0gYnVmW29mZnNldCsrXTtcbiAgICAgICAgaWYgKChvY3RldDEgJiAweDgwKSA9PT0gMCkge1xuICAgICAgICAgICAgc3RyICs9IGZyb21DaGFyQ29kZShvY3RldDEpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb2N0ZXQyID0gYnVmW29mZnNldCsrXSAmIDB4M2Y7XG4gICAgICAgIGlmICgob2N0ZXQxICYgMHhlMCkgPT09IDB4YzApIHtcbiAgICAgICAgICAgIHN0ciArPSBmcm9tQ2hhckNvZGUoKChvY3RldDEgJiAweDFmKSA8PCA2KSB8IG9jdGV0Mik7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvY3RldDMgPSBidWZbb2Zmc2V0KytdICYgMHgzZjtcbiAgICAgICAgaWYgKChvY3RldDEgJiAweGYwKSA9PT0gMHhlMCkge1xuICAgICAgICAgICAgc3RyICs9IGZyb21DaGFyQ29kZSgoKG9jdGV0MSAmIDB4MWYpIDw8IDEyKSB8IChvY3RldDIgPDwgNikgfCBvY3RldDMpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChvY3RldDEgJiAweGY4KSA9PT0gMHhmMCkge1xuICAgICAgICAgICAgY29uc3Qgb2N0ZXQ0ID0gYnVmW29mZnNldCsrXSAmIDB4M2Y7XG4gICAgICAgICAgICBsZXQgdW5pdCA9ICgob2N0ZXQxICYgMHgwNykgPDwgMHgxMikgfCAob2N0ZXQyIDw8IDB4MGMpIHwgKG9jdGV0MyA8PCAweDA2KSB8IG9jdGV0NDtcbiAgICAgICAgICAgIGlmICh1bml0ID4gMHhmZmZmKSB7XG4gICAgICAgICAgICAgICAgdW5pdCAtPSAweDEwMDAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IHVuaXQwID0gKCh1bml0ID4+PiAxMCkgJiAweDNmZikgfCAweGQ4MDA7XG4gICAgICAgICAgICAgICAgdW5pdCA9IDB4ZGMwMCB8ICh1bml0ICYgMHgzZmYpO1xuICAgICAgICAgICAgICAgIHN0ciArPSBmcm9tQ2hhckNvZGUodW5pdDAsIHVuaXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc3RyICs9IGZyb21DaGFyQ29kZSh1bml0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHN0ciArPSBmcm9tQ2hhckNvZGUob2N0ZXQxKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3RyO1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXYxMC5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQ2FjaGVkVXRmOERlY29kZXIgPSB2b2lkIDA7XG5jb25zdCB0c2xpYl8xID0gcmVxdWlyZShcInRzbGliXCIpO1xuY29uc3QgdjEwXzEgPSB0c2xpYl8xLl9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9kZWNvZGVVdGY4L3YxMFwiKSk7XG5sZXQgeCA9IDEgKyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAoKC0xID4+PiAwKSAtIDEpKTtcbi8qKiBHZW5lcmF0ZSBhIHJhbmRvbSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlciBpbiB0aGUgc3BlY2lmaWVkIFttaW4sIG1heF0gcmFuZ2UuICovXG5mdW5jdGlvbiByYW5kb21VMzIobWluLCBtYXgpIHtcbiAgICB4IF49IHggPDwgMTM7XG4gICAgeCBePSB4ID4+PiAxNztcbiAgICB4IF49IHggPDwgNTtcbiAgICByZXR1cm4gKCh4ID4+PiAwKSAlIChtYXggLSBtaW4gKyAxKSkgKyBtaW47XG59XG5jbGFzcyBDYWNoZUl0ZW0ge1xuICAgIGNvbnN0cnVjdG9yKGJ5dGVzLCB2YWx1ZSkge1xuICAgICAgICB0aGlzLmJ5dGVzID0gYnl0ZXM7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG59XG5jbGFzcyBDYWNoZWRVdGY4RGVjb2RlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuY2FjaGVzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzEgLyogQ09OU1QuTUFYX0NBQ0hFRF9TVFJfTEVOICovOyBpKyspXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy5wdXNoKFtdKTtcbiAgICB9XG4gICAgZ2V0KGJ5dGVzLCBvZmZzZXQsIHNpemUpIHtcbiAgICAgICAgY29uc3QgcmVjb3JkcyA9IHRoaXMuY2FjaGVzW3NpemUgLSAxXTtcbiAgICAgICAgY29uc3QgbGVuID0gcmVjb3Jkcy5sZW5ndGg7XG4gICAgICAgIEZJTkRfQ0hVTks6IGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHJlY29yZCA9IHJlY29yZHNbaV07XG4gICAgICAgICAgICBjb25zdCByZWNvcmRCeXRlcyA9IHJlY29yZC5ieXRlcztcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgc2l6ZTsgaisrKVxuICAgICAgICAgICAgICAgIGlmIChyZWNvcmRCeXRlc1tqXSAhPT0gYnl0ZXNbb2Zmc2V0ICsgal0pXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIEZJTkRfQ0hVTks7XG4gICAgICAgICAgICByZXR1cm4gcmVjb3JkLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBzdG9yZShieXRlcywgdmFsdWUpIHtcbiAgICAgICAgY29uc3QgcmVjb3JkcyA9IHRoaXMuY2FjaGVzW2J5dGVzLmxlbmd0aCAtIDFdO1xuICAgICAgICBjb25zdCByZWNvcmQgPSBuZXcgQ2FjaGVJdGVtKGJ5dGVzLCB2YWx1ZSk7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IHJlY29yZHMubGVuZ3RoO1xuICAgICAgICBpZiAobGVuZ3RoID49IDE2IC8qIENPTlNULk1BWF9SRUNPUkRTX1BFUl9TSVpFICovKVxuICAgICAgICAgICAgcmVjb3Jkc1tyYW5kb21VMzIoMCwgMTYgLyogQ09OU1QuTUFYX1JFQ09SRFNfUEVSX1NJWkUgKi8gLSAxKV0gPSByZWNvcmQ7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJlY29yZHMucHVzaChyZWNvcmQpO1xuICAgIH1cbiAgICBkZWNvZGUoYnl0ZXMsIG9mZnNldCwgc2l6ZSkge1xuICAgICAgICBpZiAoIXNpemUpXG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIGNvbnN0IGNhY2hlZFZhbHVlID0gdGhpcy5nZXQoYnl0ZXMsIG9mZnNldCwgc2l6ZSk7XG4gICAgICAgIGlmIChjYWNoZWRWYWx1ZSAhPT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRWYWx1ZTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSAoMCwgdjEwXzEuZGVmYXVsdCkoYnl0ZXMsIG9mZnNldCwgc2l6ZSk7XG4gICAgICAgIC8vIEVuc3VyZSB0byBjb3B5IGEgc2xpY2Ugb2YgYnl0ZXMgYmVjYXVzZSB0aGUgYnl0ZSBtYXkgYmUgTm9kZUpTIEJ1ZmZlciBhbmQgQnVmZmVyI3NsaWNlKCkgcmV0dXJucyBhIHJlZmVyZW5jZSB0byBpdHMgaW50ZXJuYWwgQXJyYXlCdWZmZXIuXG4gICAgICAgIGNvbnN0IGNvcHkgPSBVaW50OEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGJ5dGVzLCBvZmZzZXQsIG9mZnNldCArIHNpemUpO1xuICAgICAgICB0aGlzLnN0b3JlKGNvcHksIHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbn1cbmV4cG9ydHMuQ2FjaGVkVXRmOERlY29kZXIgPSBDYWNoZWRVdGY4RGVjb2Rlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUNhY2hlZFV0ZjhEZWNvZGVyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuY29uc3QgQ2FjaGVkVXRmOERlY29kZXJfMSA9IHJlcXVpcmUoXCIuL0NhY2hlZFV0ZjhEZWNvZGVyXCIpO1xuZXhwb3J0cy5kZWZhdWx0ID0gbmV3IENhY2hlZFV0ZjhEZWNvZGVyXzEuQ2FjaGVkVXRmOERlY29kZXIoKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNoYXJlZENhY2hlZFV0ZjhEZWNvZGVyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5DYm9yRGVjb2RlckJhc2UgPSB2b2lkIDA7XG5jb25zdCB0c2xpYl8xID0gcmVxdWlyZShcInRzbGliXCIpO1xuY29uc3QgZjE2XzEgPSByZXF1aXJlKFwiQGpzb25qb3kuY29tL2J1ZmZlcnMvbGliL2YxNlwiKTtcbmNvbnN0IEpzb25QYWNrRXh0ZW5zaW9uXzEgPSByZXF1aXJlKFwiLi4vSnNvblBhY2tFeHRlbnNpb25cIik7XG5jb25zdCBKc29uUGFja1ZhbHVlXzEgPSByZXF1aXJlKFwiLi4vSnNvblBhY2tWYWx1ZVwiKTtcbmNvbnN0IFJlYWRlcl8xID0gcmVxdWlyZShcIkBqc29uam95LmNvbS9idWZmZXJzL2xpYi9SZWFkZXJcIik7XG5jb25zdCBzaGFyZWRDYWNoZWRVdGY4RGVjb2Rlcl8xID0gdHNsaWJfMS5fX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIkBqc29uam95LmNvbS9idWZmZXJzL2xpYi91dGY4L3NoYXJlZENhY2hlZFV0ZjhEZWNvZGVyXCIpKTtcbmNsYXNzIENib3JEZWNvZGVyQmFzZSB7XG4gICAgY29uc3RydWN0b3IocmVhZGVyID0gbmV3IFJlYWRlcl8xLlJlYWRlcigpLCBrZXlEZWNvZGVyID0gc2hhcmVkQ2FjaGVkVXRmOERlY29kZXJfMS5kZWZhdWx0KSB7XG4gICAgICAgIHRoaXMucmVhZGVyID0gcmVhZGVyO1xuICAgICAgICB0aGlzLmtleURlY29kZXIgPSBrZXlEZWNvZGVyO1xuICAgIH1cbiAgICByZWFkKHVpbnQ4KSB7XG4gICAgICAgIHRoaXMucmVhZGVyLnJlc2V0KHVpbnQ4KTtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZEFueSgpO1xuICAgIH1cbiAgICBkZWNvZGUodWludDgpIHtcbiAgICAgICAgdGhpcy5yZWFkZXIucmVzZXQodWludDgpO1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFkQW55KCk7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFueSB2YWx1ZSByZWFkaW5nXG4gICAgdmFsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFkQW55KCk7XG4gICAgfVxuICAgIHJlYWRBbnkoKSB7XG4gICAgICAgIGNvbnN0IHJlYWRlciA9IHRoaXMucmVhZGVyO1xuICAgICAgICBjb25zdCBvY3RldCA9IHJlYWRlci51OCgpO1xuICAgICAgICBjb25zdCBtYWpvciA9IG9jdGV0ID4+IDU7XG4gICAgICAgIGNvbnN0IG1pbm9yID0gb2N0ZXQgJiAzMSAvKiBDT05TVC5NSU5PUl9NQVNLICovO1xuICAgICAgICBpZiAobWFqb3IgPCA0IC8qIE1BSk9SLkFSUiAqLykge1xuICAgICAgICAgICAgaWYgKG1ham9yIDwgMiAvKiBNQUpPUi5CSU4gKi8pXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1ham9yID09PSAwIC8qIE1BSk9SLlVJTiAqLyA/IHRoaXMucmVhZFVpbnQobWlub3IpIDogdGhpcy5yZWFkTmludChtaW5vcik7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1ham9yID09PSAyIC8qIE1BSk9SLkJJTiAqLyA/IHRoaXMucmVhZEJpbihtaW5vcikgOiB0aGlzLnJlYWRTdHIobWlub3IpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKG1ham9yIDwgNiAvKiBNQUpPUi5UQUcgKi8pXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1ham9yID09PSA0IC8qIE1BSk9SLkFSUiAqLyA/IHRoaXMucmVhZEFycihtaW5vcikgOiB0aGlzLnJlYWRPYmoobWlub3IpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJldHVybiBtYWpvciA9PT0gNiAvKiBNQUpPUi5UQUcgKi8gPyB0aGlzLnJlYWRUYWcobWlub3IpIDogdGhpcy5yZWFkVGtuKG1pbm9yKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWFkQW55UmF3KG9jdGV0KSB7XG4gICAgICAgIGNvbnN0IG1ham9yID0gb2N0ZXQgPj4gNTtcbiAgICAgICAgY29uc3QgbWlub3IgPSBvY3RldCAmIDMxIC8qIENPTlNULk1JTk9SX01BU0sgKi87XG4gICAgICAgIGlmIChtYWpvciA8IDQgLyogTUFKT1IuQVJSICovKSB7XG4gICAgICAgICAgICBpZiAobWFqb3IgPCAyIC8qIE1BSk9SLkJJTiAqLylcbiAgICAgICAgICAgICAgICByZXR1cm4gbWFqb3IgPT09IDAgLyogTUFKT1IuVUlOICovID8gdGhpcy5yZWFkVWludChtaW5vcikgOiB0aGlzLnJlYWROaW50KG1pbm9yKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByZXR1cm4gbWFqb3IgPT09IDIgLyogTUFKT1IuQklOICovID8gdGhpcy5yZWFkQmluKG1pbm9yKSA6IHRoaXMucmVhZFN0cihtaW5vcik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAobWFqb3IgPCA2IC8qIE1BSk9SLlRBRyAqLylcbiAgICAgICAgICAgICAgICByZXR1cm4gbWFqb3IgPT09IDQgLyogTUFKT1IuQVJSICovID8gdGhpcy5yZWFkQXJyKG1pbm9yKSA6IHRoaXMucmVhZE9iaihtaW5vcik7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1ham9yID09PSA2IC8qIE1BSk9SLlRBRyAqLyA/IHRoaXMucmVhZFRhZyhtaW5vcikgOiB0aGlzLnJlYWRUa24obWlub3IpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJlYWRNaW5vckxlbihtaW5vcikge1xuICAgICAgICBpZiAobWlub3IgPCAyNClcbiAgICAgICAgICAgIHJldHVybiBtaW5vcjtcbiAgICAgICAgc3dpdGNoIChtaW5vcikge1xuICAgICAgICAgICAgY2FzZSAyNDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkZXIudTgoKTtcbiAgICAgICAgICAgIGNhc2UgMjU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVhZGVyLnUxNigpO1xuICAgICAgICAgICAgY2FzZSAyNjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkZXIudTMyKCk7XG4gICAgICAgICAgICBjYXNlIDI3OlxuICAgICAgICAgICAgICAgIHJldHVybiBOdW1iZXIodGhpcy5yZWFkZXIudTY0KCkpO1xuICAgICAgICAgICAgY2FzZSAzMTpcbiAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IDEgLyogRVJST1IuVU5FWFBFQ1RFRF9NSU5PUiAqLztcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBVbnNpZ25lZCBpbnQgcmVhZGluZ1xuICAgIHJlYWRVaW50KG1pbm9yKSB7XG4gICAgICAgIGlmIChtaW5vciA8IDI1KSB7XG4gICAgICAgICAgICByZXR1cm4gbWlub3IgPT09IDI0ID8gdGhpcy5yZWFkZXIudTgoKSA6IG1pbm9yO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKG1pbm9yIDwgMjcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWlub3IgPT09IDI1ID8gdGhpcy5yZWFkZXIudTE2KCkgOiB0aGlzLnJlYWRlci51MzIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IG51bSA9IHRoaXMucmVhZGVyLnU2NCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBudW0gPiA5MDA3MTk5MjU0NzQwOTkxIC8qIENPTlNULk1BWF9VSU5UICovID8gbnVtIDogTnVtYmVyKG51bSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTmVnYXRpdmUgaW50IHJlYWRpbmdcbiAgICByZWFkTmludChtaW5vcikge1xuICAgICAgICBpZiAobWlub3IgPCAyNSkge1xuICAgICAgICAgICAgcmV0dXJuIG1pbm9yID09PSAyNCA/IC10aGlzLnJlYWRlci51OCgpIC0gMSA6IC1taW5vciAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAobWlub3IgPCAyNykge1xuICAgICAgICAgICAgICAgIHJldHVybiBtaW5vciA9PT0gMjUgPyAtdGhpcy5yZWFkZXIudTE2KCkgLSAxIDogLXRoaXMucmVhZGVyLnUzMigpIC0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IG51bSA9IHRoaXMucmVhZGVyLnU2NCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBudW0gPiA5MDA3MTk5MjU0NzQwOTkxIC8qIENPTlNULk1BWF9VSU5UICovIC0gMSA/IC1udW0gLSBCaWdJbnQoMSkgOiAtTnVtYmVyKG51bSkgLSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEJpbmFyeSByZWFkaW5nXG4gICAgcmVhZEJpbihtaW5vcikge1xuICAgICAgICBjb25zdCByZWFkZXIgPSB0aGlzLnJlYWRlcjtcbiAgICAgICAgaWYgKG1pbm9yIDw9IDIzKVxuICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5idWYobWlub3IpO1xuICAgICAgICBzd2l0Y2ggKG1pbm9yKSB7XG4gICAgICAgICAgICBjYXNlIDI0OlxuICAgICAgICAgICAgICAgIHJldHVybiByZWFkZXIuYnVmKHJlYWRlci51OCgpKTtcbiAgICAgICAgICAgIGNhc2UgMjU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5idWYocmVhZGVyLnUxNigpKTtcbiAgICAgICAgICAgIGNhc2UgMjY6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5idWYocmVhZGVyLnUzMigpKTtcbiAgICAgICAgICAgIGNhc2UgMjc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5idWYoTnVtYmVyKHJlYWRlci51NjQoKSkpO1xuICAgICAgICAgICAgY2FzZSAzMToge1xuICAgICAgICAgICAgICAgIGxldCBzaXplID0gMDtcbiAgICAgICAgICAgICAgICBjb25zdCBsaXN0ID0gW107XG4gICAgICAgICAgICAgICAgd2hpbGUgKHRoaXMucmVhZGVyLnBlYWsoKSAhPT0gMjU1IC8qIENPTlNULkVORCAqLykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OCA9IHRoaXMucmVhZEJpbkNodW5rKCk7XG4gICAgICAgICAgICAgICAgICAgIHNpemUgKz0gdWludDgubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBsaXN0LnB1c2godWludDgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnJlYWRlci54Kys7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzID0gbmV3IFVpbnQ4QXJyYXkoc2l6ZSk7XG4gICAgICAgICAgICAgICAgbGV0IG9mZnNldCA9IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0gbGlzdC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhcnIgPSBsaXN0W2ldO1xuICAgICAgICAgICAgICAgICAgICByZXMuc2V0KGFyciwgb2Zmc2V0KTtcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IGFyci5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IDEgLyogRVJST1IuVU5FWFBFQ1RFRF9NSU5PUiAqLztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWFkQmluQ2h1bmsoKSB7XG4gICAgICAgIGNvbnN0IG9jdGV0ID0gdGhpcy5yZWFkZXIudTgoKTtcbiAgICAgICAgY29uc3QgbWFqb3IgPSBvY3RldCA+PiA1O1xuICAgICAgICBjb25zdCBtaW5vciA9IG9jdGV0ICYgMzEgLyogQ09OU1QuTUlOT1JfTUFTSyAqLztcbiAgICAgICAgaWYgKG1ham9yICE9PSAyIC8qIE1BSk9SLkJJTiAqLylcbiAgICAgICAgICAgIHRocm93IDIgLyogRVJST1IuVU5FWFBFQ1RFRF9CSU5fQ0hVTktfTUFKT1IgKi87XG4gICAgICAgIGlmIChtaW5vciA+IDI3KVxuICAgICAgICAgICAgdGhyb3cgMyAvKiBFUlJPUi5VTkVYUEVDVEVEX0JJTl9DSFVOS19NSU5PUiAqLztcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZEJpbihtaW5vcik7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN0cmluZyByZWFkaW5nXG4gICAgcmVhZEFzU3RyKCkge1xuICAgICAgICBjb25zdCByZWFkZXIgPSB0aGlzLnJlYWRlcjtcbiAgICAgICAgY29uc3Qgb2N0ZXQgPSByZWFkZXIudTgoKTtcbiAgICAgICAgY29uc3QgbWFqb3IgPSBvY3RldCA+PiA1O1xuICAgICAgICBjb25zdCBtaW5vciA9IG9jdGV0ICYgMzEgLyogQ09OU1QuTUlOT1JfTUFTSyAqLztcbiAgICAgICAgaWYgKG1ham9yICE9PSAzIC8qIE1BSk9SLlNUUiAqLylcbiAgICAgICAgICAgIHRocm93IDExIC8qIEVSUk9SLlVORVhQRUNURURfU1RSX01BSk9SICovO1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFkU3RyKG1pbm9yKTtcbiAgICB9XG4gICAgcmVhZFN0cihtaW5vcikge1xuICAgICAgICBjb25zdCByZWFkZXIgPSB0aGlzLnJlYWRlcjtcbiAgICAgICAgaWYgKG1pbm9yIDw9IDIzKVxuICAgICAgICAgICAgcmV0dXJuIHJlYWRlci51dGY4KG1pbm9yKTtcbiAgICAgICAgc3dpdGNoIChtaW5vcikge1xuICAgICAgICAgICAgY2FzZSAyNDpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVhZGVyLnV0ZjgocmVhZGVyLnU4KCkpO1xuICAgICAgICAgICAgY2FzZSAyNTpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVhZGVyLnV0ZjgocmVhZGVyLnUxNigpKTtcbiAgICAgICAgICAgIGNhc2UgMjY6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlYWRlci51dGY4KHJlYWRlci51MzIoKSk7XG4gICAgICAgICAgICBjYXNlIDI3OlxuICAgICAgICAgICAgICAgIHJldHVybiByZWFkZXIudXRmOChOdW1iZXIocmVhZGVyLnU2NCgpKSk7XG4gICAgICAgICAgICBjYXNlIDMxOiB7XG4gICAgICAgICAgICAgICAgbGV0IHN0ciA9ICcnO1xuICAgICAgICAgICAgICAgIHdoaWxlIChyZWFkZXIucGVhaygpICE9PSAyNTUgLyogQ09OU1QuRU5EICovKVxuICAgICAgICAgICAgICAgICAgICBzdHIgKz0gdGhpcy5yZWFkU3RyQ2h1bmsoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlYWRlci54Kys7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0cjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgMSAvKiBFUlJPUi5VTkVYUEVDVEVEX01JTk9SICovO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJlYWRTdHJMZW4obWlub3IpIHtcbiAgICAgICAgaWYgKG1pbm9yIDw9IDIzKVxuICAgICAgICAgICAgcmV0dXJuIG1pbm9yO1xuICAgICAgICBzd2l0Y2ggKG1pbm9yKSB7XG4gICAgICAgICAgICBjYXNlIDI0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlYWRlci51OCgpO1xuICAgICAgICAgICAgY2FzZSAyNTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkZXIudTE2KCk7XG4gICAgICAgICAgICBjYXNlIDI2OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlYWRlci51MzIoKTtcbiAgICAgICAgICAgIGNhc2UgMjc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIE51bWJlcih0aGlzLnJlYWRlci51NjQoKSk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IDEgLyogRVJST1IuVU5FWFBFQ1RFRF9NSU5PUiAqLztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWFkU3RyQ2h1bmsoKSB7XG4gICAgICAgIGNvbnN0IG9jdGV0ID0gdGhpcy5yZWFkZXIudTgoKTtcbiAgICAgICAgY29uc3QgbWFqb3IgPSBvY3RldCA+PiA1O1xuICAgICAgICBjb25zdCBtaW5vciA9IG9jdGV0ICYgMzEgLyogQ09OU1QuTUlOT1JfTUFTSyAqLztcbiAgICAgICAgaWYgKG1ham9yICE9PSAzIC8qIE1BSk9SLlNUUiAqLylcbiAgICAgICAgICAgIHRocm93IDQgLyogRVJST1IuVU5FWFBFQ1RFRF9TVFJfQ0hVTktfTUFKT1IgKi87XG4gICAgICAgIGlmIChtaW5vciA+IDI3KVxuICAgICAgICAgICAgdGhyb3cgNSAvKiBFUlJPUi5VTkVYUEVDVEVEX1NUUl9DSFVOS19NSU5PUiAqLztcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZFN0cihtaW5vcik7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBcnJheSByZWFkaW5nXG4gICAgcmVhZEFycihtaW5vcikge1xuICAgICAgICBjb25zdCBsZW5ndGggPSB0aGlzLnJlYWRNaW5vckxlbihtaW5vcik7XG4gICAgICAgIGlmIChsZW5ndGggPj0gMClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlYWRBcnJSYXcobGVuZ3RoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZEFyckluZGVmKCk7XG4gICAgfVxuICAgIHJlYWRBcnJSYXcobGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGFyciA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgYXJyLnB1c2godGhpcy5yZWFkQW55KCkpO1xuICAgICAgICByZXR1cm4gYXJyO1xuICAgIH1cbiAgICByZWFkQXJySW5kZWYoKSB7XG4gICAgICAgIGNvbnN0IGFyciA9IFtdO1xuICAgICAgICB3aGlsZSAodGhpcy5yZWFkZXIucGVhaygpICE9PSAyNTUgLyogQ09OU1QuRU5EICovKVxuICAgICAgICAgICAgYXJyLnB1c2godGhpcy5yZWFkQW55KCkpO1xuICAgICAgICB0aGlzLnJlYWRlci54Kys7XG4gICAgICAgIHJldHVybiBhcnI7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE9iamVjdCByZWFkaW5nXG4gICAgcmVhZE9iaihtaW5vcikge1xuICAgICAgICBpZiAobWlub3IgPCAyOCkge1xuICAgICAgICAgICAgbGV0IGxlbmd0aCA9IG1pbm9yO1xuICAgICAgICAgICAgc3dpdGNoIChtaW5vcikge1xuICAgICAgICAgICAgICAgIGNhc2UgMjQ6XG4gICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IHRoaXMucmVhZGVyLnU4KCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMjU6XG4gICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IHRoaXMucmVhZGVyLnUxNigpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDI2OlxuICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSB0aGlzLnJlYWRlci51MzIoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAyNzpcbiAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gTnVtYmVyKHRoaXMucmVhZGVyLnU2NCgpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBvYmogPSB7fTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSB0aGlzLmtleSgpO1xuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09ICdfX3Byb3RvX18nKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyA2IC8qIEVSUk9SLlVORVhQRUNURURfT0JKX0tFWSAqLztcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMucmVhZEFueSgpO1xuICAgICAgICAgICAgICAgIG9ialtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG1pbm9yID09PSAzMSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlYWRPYmpJbmRlZigpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aHJvdyAxIC8qIEVSUk9SLlVORVhQRUNURURfTUlOT1IgKi87XG4gICAgfVxuICAgIC8qKiBSZW1vdmUgdGhpcz8gKi9cbiAgICByZWFkT2JqUmF3KGxlbmd0aCkge1xuICAgICAgICBjb25zdCBvYmogPSB7fTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5rZXkoKTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5yZWFkQW55KCk7XG4gICAgICAgICAgICBvYmpba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICAgIHJlYWRPYmpJbmRlZigpIHtcbiAgICAgICAgY29uc3Qgb2JqID0ge307XG4gICAgICAgIHdoaWxlICh0aGlzLnJlYWRlci5wZWFrKCkgIT09IDI1NSAvKiBDT05TVC5FTkQgKi8pIHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IHRoaXMua2V5KCk7XG4gICAgICAgICAgICBpZiAodGhpcy5yZWFkZXIucGVhaygpID09PSAyNTUgLyogQ09OU1QuRU5EICovKVxuICAgICAgICAgICAgICAgIHRocm93IDcgLyogRVJST1IuVU5FWFBFQ1RFRF9PQkpfQlJFQUsgKi87XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMucmVhZEFueSgpO1xuICAgICAgICAgICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlYWRlci54Kys7XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICAgIGtleSgpIHtcbiAgICAgICAgY29uc3Qgb2N0ZXQgPSB0aGlzLnJlYWRlci51OCgpO1xuICAgICAgICBjb25zdCBtYWpvciA9IG9jdGV0ID4+IDU7XG4gICAgICAgIGNvbnN0IG1pbm9yID0gb2N0ZXQgJiAzMSAvKiBDT05TVC5NSU5PUl9NQVNLICovO1xuICAgICAgICBpZiAobWFqb3IgIT09IDMgLyogTUFKT1IuU1RSICovKVxuICAgICAgICAgICAgcmV0dXJuIFN0cmluZyh0aGlzLnJlYWRBbnlSYXcob2N0ZXQpKTtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gdGhpcy5yZWFkU3RyTGVuKG1pbm9yKTtcbiAgICAgICAgaWYgKGxlbmd0aCA+IDMxKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVhZGVyLnV0ZjgobGVuZ3RoKTtcbiAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5rZXlEZWNvZGVyLmRlY29kZSh0aGlzLnJlYWRlci51aW50OCwgdGhpcy5yZWFkZXIueCwgbGVuZ3RoKTtcbiAgICAgICAgdGhpcy5yZWFkZXIuc2tpcChsZW5ndGgpO1xuICAgICAgICByZXR1cm4ga2V5O1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBUYWcgcmVhZGluZ1xuICAgIHJlYWRUYWcobWlub3IpIHtcbiAgICAgICAgaWYgKG1pbm9yIDw9IDIzKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVhZFRhZ1JhdyhtaW5vcik7XG4gICAgICAgIHN3aXRjaCAobWlub3IpIHtcbiAgICAgICAgICAgIGNhc2UgMjQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVhZFRhZ1Jhdyh0aGlzLnJlYWRlci51OCgpKTtcbiAgICAgICAgICAgIGNhc2UgMjU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVhZFRhZ1Jhdyh0aGlzLnJlYWRlci51MTYoKSk7XG4gICAgICAgICAgICBjYXNlIDI2OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlYWRUYWdSYXcodGhpcy5yZWFkZXIudTMyKCkpO1xuICAgICAgICAgICAgY2FzZSAyNzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkVGFnUmF3KE51bWJlcih0aGlzLnJlYWRlci51NjQoKSkpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyAxIC8qIEVSUk9SLlVORVhQRUNURURfTUlOT1IgKi87XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVhZFRhZ1Jhdyh0YWcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBKc29uUGFja0V4dGVuc2lvbl8xLkpzb25QYWNrRXh0ZW5zaW9uKHRhZywgdGhpcy5yZWFkQW55KCkpO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVG9rZW4gcmVhZGluZ1xuICAgIHJlYWRUa24obWlub3IpIHtcbiAgICAgICAgc3dpdGNoIChtaW5vcikge1xuICAgICAgICAgICAgY2FzZSAweGY0ICYgMzEgLyogQ09OU1QuTUlOT1JfTUFTSyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICBjYXNlIDB4ZjUgJiAzMSAvKiBDT05TVC5NSU5PUl9NQVNLICovOlxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgY2FzZSAweGY2ICYgMzEgLyogQ09OU1QuTUlOT1JfTUFTSyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGNhc2UgMHhmNyAmIDMxIC8qIENPTlNULk1JTk9SX01BU0sgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNhc2UgMHhmOCAmIDMxIC8qIENPTlNULk1JTk9SX01BU0sgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBKc29uUGFja1ZhbHVlXzEuSnNvblBhY2tWYWx1ZSh0aGlzLnJlYWRlci51OCgpKTtcbiAgICAgICAgICAgIGNhc2UgMHhmOSAmIDMxIC8qIENPTlNULk1JTk9SX01BU0sgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZjE2KCk7XG4gICAgICAgICAgICBjYXNlIDB4ZmEgJiAzMSAvKiBDT05TVC5NSU5PUl9NQVNLICovOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlYWRlci5mMzIoKTtcbiAgICAgICAgICAgIGNhc2UgMHhmYiAmIDMxIC8qIENPTlNULk1JTk9SX01BU0sgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVhZGVyLmY2NCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtaW5vciA8PSAyMylcbiAgICAgICAgICAgIHJldHVybiBuZXcgSnNvblBhY2tWYWx1ZV8xLkpzb25QYWNrVmFsdWUobWlub3IpO1xuICAgICAgICB0aHJvdyAxIC8qIEVSUk9SLlVORVhQRUNURURfTUlOT1IgKi87XG4gICAgfVxuICAgIGYxNigpIHtcbiAgICAgICAgcmV0dXJuICgwLCBmMTZfMS5kZWNvZGVGMTYpKHRoaXMucmVhZGVyLnUxNigpKTtcbiAgICB9XG59XG5leHBvcnRzLkNib3JEZWNvZGVyQmFzZSA9IENib3JEZWNvZGVyQmFzZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUNib3JEZWNvZGVyQmFzZS5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQ2JvckRlY29kZXIgPSB2b2lkIDA7XG5jb25zdCBDYm9yRGVjb2RlckJhc2VfMSA9IHJlcXVpcmUoXCIuL0Nib3JEZWNvZGVyQmFzZVwiKTtcbmNvbnN0IEpzb25QYWNrVmFsdWVfMSA9IHJlcXVpcmUoXCIuLi9Kc29uUGFja1ZhbHVlXCIpO1xuY2xhc3MgQ2JvckRlY29kZXIgZXh0ZW5kcyBDYm9yRGVjb2RlckJhc2VfMS5DYm9yRGVjb2RlckJhc2Uge1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE1hcCByZWFkaW5nXG4gICAgcmVhZEFzTWFwKCkge1xuICAgICAgICBjb25zdCBvY3RldCA9IHRoaXMucmVhZGVyLnU4KCk7XG4gICAgICAgIGNvbnN0IG1ham9yID0gb2N0ZXQgPj4gNTtcbiAgICAgICAgY29uc3QgbWlub3IgPSBvY3RldCAmIDMxIC8qIENPTlNULk1JTk9SX01BU0sgKi87XG4gICAgICAgIHN3aXRjaCAobWFqb3IpIHtcbiAgICAgICAgICAgIGNhc2UgNSAvKiBNQUpPUi5NQVAgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVhZE1hcChtaW5vcik7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IDAgLyogRVJST1IuVU5FWFBFQ1RFRF9NQUpPUiAqLztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWFkTWFwKG1pbm9yKSB7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMucmVhZE1pbm9yTGVuKG1pbm9yKTtcbiAgICAgICAgaWYgKGxlbmd0aCA+PSAwKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVhZE1hcFJhdyhsZW5ndGgpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkTWFwSW5kZWYoKTtcbiAgICB9XG4gICAgcmVhZE1hcFJhdyhsZW5ndGgpIHtcbiAgICAgICAgY29uc3QgbWFwID0gbmV3IE1hcCgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSB0aGlzLnJlYWRBbnkoKTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5yZWFkQW55KCk7XG4gICAgICAgICAgICBtYXAuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXA7XG4gICAgfVxuICAgIHJlYWRNYXBJbmRlZigpIHtcbiAgICAgICAgY29uc3QgbWFwID0gbmV3IE1hcCgpO1xuICAgICAgICB3aGlsZSAodGhpcy5yZWFkZXIucGVhaygpICE9PSAyNTUgLyogQ09OU1QuRU5EICovKSB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSB0aGlzLnJlYWRBbnkoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlYWRlci5wZWFrKCkgPT09IDI1NSAvKiBDT05TVC5FTkQgKi8pXG4gICAgICAgICAgICAgICAgdGhyb3cgNyAvKiBFUlJPUi5VTkVYUEVDVEVEX09CSl9CUkVBSyAqLztcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5yZWFkQW55KCk7XG4gICAgICAgICAgICBtYXAuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVhZGVyLngrKztcbiAgICAgICAgcmV0dXJuIG1hcDtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVmFsdWUgc2tpcHBpbmdcbiAgICBza2lwTihuKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKVxuICAgICAgICAgICAgdGhpcy5za2lwQW55KCk7XG4gICAgfVxuICAgIHNraXBBbnkoKSB7XG4gICAgICAgIHRoaXMuc2tpcEFueVJhdyh0aGlzLnJlYWRlci51OCgpKTtcbiAgICB9XG4gICAgc2tpcEFueVJhdyhvY3RldCkge1xuICAgICAgICBjb25zdCBtYWpvciA9IG9jdGV0ID4+IDU7XG4gICAgICAgIGNvbnN0IG1pbm9yID0gb2N0ZXQgJiAzMSAvKiBDT05TVC5NSU5PUl9NQVNLICovO1xuICAgICAgICBzd2l0Y2ggKG1ham9yKSB7XG4gICAgICAgICAgICBjYXNlIDAgLyogTUFKT1IuVUlOICovOlxuICAgICAgICAgICAgY2FzZSAxIC8qIE1BSk9SLk5JTiAqLzpcbiAgICAgICAgICAgICAgICB0aGlzLnNraXBVTmludChtaW5vcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDIgLyogTUFKT1IuQklOICovOlxuICAgICAgICAgICAgICAgIHRoaXMuc2tpcEJpbihtaW5vcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDMgLyogTUFKT1IuU1RSICovOlxuICAgICAgICAgICAgICAgIHRoaXMuc2tpcFN0cihtaW5vcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDQgLyogTUFKT1IuQVJSICovOlxuICAgICAgICAgICAgICAgIHRoaXMuc2tpcEFycihtaW5vcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDUgLyogTUFKT1IuTUFQICovOlxuICAgICAgICAgICAgICAgIHRoaXMuc2tpcE9iaihtaW5vcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDcgLyogTUFKT1IuVEtOICovOlxuICAgICAgICAgICAgICAgIHRoaXMuc2tpcFRrbihtaW5vcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDYgLyogTUFKT1IuVEFHICovOlxuICAgICAgICAgICAgICAgIHRoaXMuc2tpcFRhZyhtaW5vcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc2tpcE1pbm9yTGVuKG1pbm9yKSB7XG4gICAgICAgIGlmIChtaW5vciA8PSAyMylcbiAgICAgICAgICAgIHJldHVybiBtaW5vcjtcbiAgICAgICAgc3dpdGNoIChtaW5vcikge1xuICAgICAgICAgICAgY2FzZSAyNDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkZXIudTgoKTtcbiAgICAgICAgICAgIGNhc2UgMjU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVhZGVyLnUxNigpO1xuICAgICAgICAgICAgY2FzZSAyNjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkZXIudTMyKCk7XG4gICAgICAgICAgICBjYXNlIDI3OlxuICAgICAgICAgICAgICAgIHJldHVybiBOdW1iZXIodGhpcy5yZWFkZXIudTY0KCkpO1xuICAgICAgICAgICAgY2FzZSAzMTpcbiAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IDEgLyogRVJST1IuVU5FWFBFQ1RFRF9NSU5PUiAqLztcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gSW50ZWdlciBza2lwcGluZ1xuICAgIHNraXBVTmludChtaW5vcikge1xuICAgICAgICBpZiAobWlub3IgPD0gMjMpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHN3aXRjaCAobWlub3IpIHtcbiAgICAgICAgICAgIGNhc2UgMjQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVhZGVyLnNraXAoMSk7XG4gICAgICAgICAgICBjYXNlIDI1OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlYWRlci5za2lwKDIpO1xuICAgICAgICAgICAgY2FzZSAyNjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkZXIuc2tpcCg0KTtcbiAgICAgICAgICAgIGNhc2UgMjc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVhZGVyLnNraXAoOCk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IDEgLyogRVJST1IuVU5FWFBFQ1RFRF9NSU5PUiAqLztcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEJpbmFyeSBza2lwcGluZ1xuICAgIHNraXBCaW4obWlub3IpIHtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gdGhpcy5za2lwTWlub3JMZW4obWlub3IpO1xuICAgICAgICBpZiAobGVuZ3RoID49IDApXG4gICAgICAgICAgICB0aGlzLnJlYWRlci5za2lwKGxlbmd0aCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgd2hpbGUgKHRoaXMucmVhZGVyLnBlYWsoKSAhPT0gMjU1IC8qIENPTlNULkVORCAqLylcbiAgICAgICAgICAgICAgICB0aGlzLnNraXBCaW5DaHVuaygpO1xuICAgICAgICAgICAgdGhpcy5yZWFkZXIueCsrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHNraXBCaW5DaHVuaygpIHtcbiAgICAgICAgY29uc3Qgb2N0ZXQgPSB0aGlzLnJlYWRlci51OCgpO1xuICAgICAgICBjb25zdCBtYWpvciA9IG9jdGV0ID4+IDU7XG4gICAgICAgIGNvbnN0IG1pbm9yID0gb2N0ZXQgJiAzMSAvKiBDT05TVC5NSU5PUl9NQVNLICovO1xuICAgICAgICBpZiAobWFqb3IgIT09IDIgLyogTUFKT1IuQklOICovKVxuICAgICAgICAgICAgdGhyb3cgMiAvKiBFUlJPUi5VTkVYUEVDVEVEX0JJTl9DSFVOS19NQUpPUiAqLztcbiAgICAgICAgaWYgKG1pbm9yID4gMjcpXG4gICAgICAgICAgICB0aHJvdyAzIC8qIEVSUk9SLlVORVhQRUNURURfQklOX0NIVU5LX01JTk9SICovO1xuICAgICAgICB0aGlzLnNraXBCaW4obWlub3IpO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN0cmluZyBza2lwcGluZ1xuICAgIHNraXBTdHIobWlub3IpIHtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gdGhpcy5za2lwTWlub3JMZW4obWlub3IpO1xuICAgICAgICBpZiAobGVuZ3RoID49IDApXG4gICAgICAgICAgICB0aGlzLnJlYWRlci5za2lwKGxlbmd0aCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgd2hpbGUgKHRoaXMucmVhZGVyLnBlYWsoKSAhPT0gMjU1IC8qIENPTlNULkVORCAqLylcbiAgICAgICAgICAgICAgICB0aGlzLnNraXBTdHJDaHVuaygpO1xuICAgICAgICAgICAgdGhpcy5yZWFkZXIueCsrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHNraXBTdHJDaHVuaygpIHtcbiAgICAgICAgY29uc3Qgb2N0ZXQgPSB0aGlzLnJlYWRlci51OCgpO1xuICAgICAgICBjb25zdCBtYWpvciA9IG9jdGV0ID4+IDU7XG4gICAgICAgIGNvbnN0IG1pbm9yID0gb2N0ZXQgJiAzMSAvKiBDT05TVC5NSU5PUl9NQVNLICovO1xuICAgICAgICBpZiAobWFqb3IgIT09IDMgLyogTUFKT1IuU1RSICovKVxuICAgICAgICAgICAgdGhyb3cgNCAvKiBFUlJPUi5VTkVYUEVDVEVEX1NUUl9DSFVOS19NQUpPUiAqLztcbiAgICAgICAgaWYgKG1pbm9yID4gMjcpXG4gICAgICAgICAgICB0aHJvdyA1IC8qIEVSUk9SLlVORVhQRUNURURfU1RSX0NIVU5LX01JTk9SICovO1xuICAgICAgICB0aGlzLnNraXBTdHIobWlub3IpO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBcnJheSBza2lwcGluZ1xuICAgIHNraXBBcnIobWlub3IpIHtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gdGhpcy5za2lwTWlub3JMZW4obWlub3IpO1xuICAgICAgICBpZiAobGVuZ3RoID49IDApXG4gICAgICAgICAgICB0aGlzLnNraXBOKGxlbmd0aCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgd2hpbGUgKHRoaXMucmVhZGVyLnBlYWsoKSAhPT0gMjU1IC8qIENPTlNULkVORCAqLylcbiAgICAgICAgICAgICAgICB0aGlzLnNraXBBbnkoKTtcbiAgICAgICAgICAgIHRoaXMucmVhZGVyLngrKztcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE9iamVjdCBza2lwcGluZ1xuICAgIHNraXBPYmoobWlub3IpIHtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gdGhpcy5yZWFkTWlub3JMZW4obWlub3IpO1xuICAgICAgICBpZiAobGVuZ3RoID49IDApXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5za2lwTihsZW5ndGggKiAyKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB3aGlsZSAodGhpcy5yZWFkZXIucGVhaygpICE9PSAyNTUgLyogQ09OU1QuRU5EICovKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5za2lwQW55KCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucmVhZGVyLnBlYWsoKSA9PT0gMjU1IC8qIENPTlNULkVORCAqLylcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgNyAvKiBFUlJPUi5VTkVYUEVDVEVEX09CSl9CUkVBSyAqLztcbiAgICAgICAgICAgICAgICB0aGlzLnNraXBBbnkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucmVhZGVyLngrKztcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFRhZyBza2lwcGluZ1xuICAgIHNraXBUYWcobWlub3IpIHtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gdGhpcy5za2lwTWlub3JMZW4obWlub3IpO1xuICAgICAgICBpZiAobGVuZ3RoIDwgMClcbiAgICAgICAgICAgIHRocm93IDEgLyogRVJST1IuVU5FWFBFQ1RFRF9NSU5PUiAqLztcbiAgICAgICAgdGhpcy5za2lwQW55KCk7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFRva2VuIHNraXBwaW5nXG4gICAgc2tpcFRrbihtaW5vcikge1xuICAgICAgICBzd2l0Y2ggKG1pbm9yKSB7XG4gICAgICAgICAgICBjYXNlIDB4ZjggJiAzMSAvKiBDT05TVC5NSU5PUl9NQVNLICovOlxuICAgICAgICAgICAgICAgIHRoaXMucmVhZGVyLnNraXAoMSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgY2FzZSAweGY5ICYgMzEgLyogQ09OU1QuTUlOT1JfTUFTSyAqLzpcbiAgICAgICAgICAgICAgICB0aGlzLnJlYWRlci5za2lwKDIpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNhc2UgMHhmYSAmIDMxIC8qIENPTlNULk1JTk9SX01BU0sgKi86XG4gICAgICAgICAgICAgICAgdGhpcy5yZWFkZXIuc2tpcCg0KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjYXNlIDB4ZmIgJiAzMSAvKiBDT05TVC5NSU5PUl9NQVNLICovOlxuICAgICAgICAgICAgICAgIHRoaXMucmVhZGVyLnNraXAoOCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtaW5vciA8PSAyMylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdGhyb3cgMSAvKiBFUlJPUi5VTkVYUEVDVEVEX01JTk9SICovO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVmFsaWRhdGlvblxuICAgIC8qKlxuICAgICAqIFRocm93cyBpZiBhdCBnaXZlbiBvZmZzZXQgaW4gYSBidWZmZXIgdGhlcmUgaXMgYW4gaW52YWxpZCBDQk9SIHZhbHVlLCBvclxuICAgICAqIGlmIHRoZSB2YWx1ZSBkb2VzIG5vdCBzcGFuIHRoZSBleGFjdCBsZW5ndGggc3BlY2lmaWVkIGluIGBzaXplYC4gSS5lLlxuICAgICAqIHRocm93cyBpZjpcbiAgICAgKlxuICAgICAqIC0gVGhlIHZhbHVlIGlzIG5vdCBhIHZhbGlkIENCT1IgdmFsdWUuXG4gICAgICogLSBUaGUgdmFsdWUgaXMgc2hvcnRlciB0aGFuIGBzaXplYC5cbiAgICAgKiAtIFRoZSB2YWx1ZSBpcyBsb25nZXIgdGhhbiBgc2l6ZWAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsdWUgQnVmZmVyIGluIHdoaWNoIHRvIHZhbGlkYXRlIENCT1IgdmFsdWUuXG4gICAgICogQHBhcmFtIG9mZnNldCBPZmZzZXQgYXQgd2hpY2ggdGhlIHZhbHVlIHN0YXJ0cy5cbiAgICAgKiBAcGFyYW0gc2l6ZSBFeHBlY3RlZCBzaXplIG9mIHRoZSB2YWx1ZS5cbiAgICAgKi9cbiAgICB2YWxpZGF0ZSh2YWx1ZSwgb2Zmc2V0ID0gMCwgc2l6ZSA9IHZhbHVlLmxlbmd0aCkge1xuICAgICAgICB0aGlzLnJlYWRlci5yZXNldCh2YWx1ZSk7XG4gICAgICAgIHRoaXMucmVhZGVyLnggPSBvZmZzZXQ7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gb2Zmc2V0O1xuICAgICAgICB0aGlzLnNraXBBbnkoKTtcbiAgICAgICAgY29uc3QgZW5kID0gdGhpcy5yZWFkZXIueDtcbiAgICAgICAgaWYgKGVuZCAtIHN0YXJ0ICE9PSBzaXplKVxuICAgICAgICAgICAgdGhyb3cgOCAvKiBFUlJPUi5JTlZBTElEX1NJWkUgKi87XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE9uZSBsZXZlbCByZWFkaW5nIC0gYW55IHZhbHVlXG4gICAgZGVjb2RlTGV2ZWwodmFsdWUpIHtcbiAgICAgICAgdGhpcy5yZWFkZXIucmVzZXQodmFsdWUpO1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFkTGV2ZWwoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRGVjb2RlcyBvbmx5IG9uZSBsZXZlbCBvZiBvYmplY3RzIGFuZCBhcnJheXMuIE90aGVyIHZhbHVlcyBhcmUgZGVjb2RlZFxuICAgICAqIGNvbXBsZXRlbHkuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBPbmUgbGV2ZWwgb2YgZGVjb2RlZCBDQk9SIHZhbHVlLlxuICAgICAqL1xuICAgIHJlYWRMZXZlbCgpIHtcbiAgICAgICAgY29uc3Qgb2N0ZXQgPSB0aGlzLnJlYWRlci51OCgpO1xuICAgICAgICBjb25zdCBtYWpvciA9IG9jdGV0ID4+IDU7XG4gICAgICAgIGNvbnN0IG1pbm9yID0gb2N0ZXQgJiAzMSAvKiBDT05TVC5NSU5PUl9NQVNLICovO1xuICAgICAgICBzd2l0Y2ggKG1ham9yKSB7XG4gICAgICAgICAgICBjYXNlIDQgLyogTUFKT1IuQVJSICovOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlYWRBcnJMZXZlbChtaW5vcik7XG4gICAgICAgICAgICBjYXNlIDUgLyogTUFKT1IuTUFQICovOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlYWRPYmpMZXZlbChtaW5vcik7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBzdXBlci5yZWFkQW55UmF3KG9jdGV0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZWNvZGVzIHByaW1pdGl2ZSB2YWx1ZXMsIHJldHVybnMgY29udGFpbmVyIHZhbHVlcyBhcyBgSnNvblBhY2tWYWx1ZWAuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBIHByaW1pdGl2ZSB2YWx1ZSwgb3IgQ0JPUiBjb250YWluZXIgdmFsdWUgYXMgYSBibG9iLlxuICAgICAqL1xuICAgIHJlYWRQcmltaXRpdmVPclZhbCgpIHtcbiAgICAgICAgY29uc3Qgb2N0ZXQgPSB0aGlzLnJlYWRlci5wZWFrKCk7XG4gICAgICAgIGNvbnN0IG1ham9yID0gb2N0ZXQgPj4gNTtcbiAgICAgICAgc3dpdGNoIChtYWpvcikge1xuICAgICAgICAgICAgY2FzZSA0IC8qIE1BSk9SLkFSUiAqLzpcbiAgICAgICAgICAgIGNhc2UgNSAvKiBNQUpPUi5NQVAgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVhZEFzVmFsdWUoKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVhZEFueSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJlYWRBc1ZhbHVlKCkge1xuICAgICAgICBjb25zdCByZWFkZXIgPSB0aGlzLnJlYWRlcjtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSByZWFkZXIueDtcbiAgICAgICAgdGhpcy5za2lwQW55KCk7XG4gICAgICAgIGNvbnN0IGVuZCA9IHJlYWRlci54O1xuICAgICAgICByZXR1cm4gbmV3IEpzb25QYWNrVmFsdWVfMS5Kc29uUGFja1ZhbHVlKHJlYWRlci51aW50OC5zdWJhcnJheShzdGFydCwgZW5kKSk7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE9uZSBsZXZlbCByZWFkaW5nIC0gb2JqZWN0XG4gICAgcmVhZE9iakxldmVsKG1pbm9yKSB7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMucmVhZE1pbm9yTGVuKG1pbm9yKTtcbiAgICAgICAgaWYgKGxlbmd0aCA+PSAwKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVhZE9ialJhd0xldmVsKGxlbmd0aCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlYWRPYmpJbmRlZkxldmVsKCk7XG4gICAgfVxuICAgIHJlYWRPYmpSYXdMZXZlbChsZW5ndGgpIHtcbiAgICAgICAgY29uc3Qgb2JqID0ge307XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IHRoaXMua2V5KCk7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMucmVhZFByaW1pdGl2ZU9yVmFsKCk7XG4gICAgICAgICAgICBvYmpba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICAgIHJlYWRPYmpJbmRlZkxldmVsKCkge1xuICAgICAgICBjb25zdCBvYmogPSB7fTtcbiAgICAgICAgd2hpbGUgKHRoaXMucmVhZGVyLnBlYWsoKSAhPT0gMjU1IC8qIENPTlNULkVORCAqLykge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5rZXkoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlYWRlci5wZWFrKCkgPT09IDI1NSAvKiBDT05TVC5FTkQgKi8pXG4gICAgICAgICAgICAgICAgdGhyb3cgNyAvKiBFUlJPUi5VTkVYUEVDVEVEX09CSl9CUkVBSyAqLztcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5yZWFkUHJpbWl0aXZlT3JWYWwoKTtcbiAgICAgICAgICAgIG9ialtrZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZWFkZXIueCsrO1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gT25lIGxldmVsIHJlYWRpbmcgLSBhcnJheVxuICAgIHJlYWRBcnJMZXZlbChtaW5vcikge1xuICAgICAgICBjb25zdCBsZW5ndGggPSB0aGlzLnJlYWRNaW5vckxlbihtaW5vcik7XG4gICAgICAgIGlmIChsZW5ndGggPj0gMClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlYWRBcnJSYXdMZXZlbChsZW5ndGgpO1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFkQXJySW5kZWZMZXZlbCgpO1xuICAgIH1cbiAgICByZWFkQXJyUmF3TGV2ZWwobGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGFyciA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgYXJyLnB1c2godGhpcy5yZWFkUHJpbWl0aXZlT3JWYWwoKSk7XG4gICAgICAgIHJldHVybiBhcnI7XG4gICAgfVxuICAgIHJlYWRBcnJJbmRlZkxldmVsKCkge1xuICAgICAgICBjb25zdCBhcnIgPSBbXTtcbiAgICAgICAgd2hpbGUgKHRoaXMucmVhZGVyLnBlYWsoKSAhPT0gMjU1IC8qIENPTlNULkVORCAqLylcbiAgICAgICAgICAgIGFyci5wdXNoKHRoaXMucmVhZFByaW1pdGl2ZU9yVmFsKCkpO1xuICAgICAgICB0aGlzLnJlYWRlci54Kys7XG4gICAgICAgIHJldHVybiBhcnI7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU2hhbGxvdyByZWFkaW5nXG4gICAgcmVhZEhkcihleHBlY3RlZE1ham9yKSB7XG4gICAgICAgIGNvbnN0IG9jdGV0ID0gdGhpcy5yZWFkZXIudTgoKTtcbiAgICAgICAgY29uc3QgbWFqb3IgPSBvY3RldCA+PiA1O1xuICAgICAgICBpZiAobWFqb3IgIT09IGV4cGVjdGVkTWFqb3IpXG4gICAgICAgICAgICB0aHJvdyAwIC8qIEVSUk9SLlVORVhQRUNURURfTUFKT1IgKi87XG4gICAgICAgIGNvbnN0IG1pbm9yID0gb2N0ZXQgJiAzMSAvKiBDT05TVC5NSU5PUl9NQVNLICovO1xuICAgICAgICBpZiAobWlub3IgPCAyNClcbiAgICAgICAgICAgIHJldHVybiBtaW5vcjtcbiAgICAgICAgc3dpdGNoIChtaW5vcikge1xuICAgICAgICAgICAgY2FzZSAyNDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkZXIudTgoKTtcbiAgICAgICAgICAgIGNhc2UgMjU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVhZGVyLnUxNigpO1xuICAgICAgICAgICAgY2FzZSAyNjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkZXIudTMyKCk7XG4gICAgICAgICAgICBjYXNlIDI3OlxuICAgICAgICAgICAgICAgIHJldHVybiBOdW1iZXIodGhpcy5yZWFkZXIudTY0KCkpO1xuICAgICAgICAgICAgY2FzZSAzMTpcbiAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgMSAvKiBFUlJPUi5VTkVYUEVDVEVEX01JTk9SICovO1xuICAgIH1cbiAgICByZWFkU3RySGRyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFkSGRyKDMgLyogTUFKT1IuU1RSICovKTtcbiAgICB9XG4gICAgcmVhZE9iakhkcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZEhkcig1IC8qIE1BSk9SLk1BUCAqLyk7XG4gICAgfVxuICAgIHJlYWRBcnJIZHIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRIZHIoNCAvKiBNQUpPUi5BUlIgKi8pO1xuICAgIH1cbiAgICBmaW5kS2V5KGtleSkge1xuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5yZWFkT2JqSGRyKCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBrID0gdGhpcy5rZXkoKTtcbiAgICAgICAgICAgIGlmIChrID09PSBrZXkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICB0aGlzLnNraXBBbnkoKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyA5IC8qIEVSUk9SLktFWV9OT1RfRk9VTkQgKi87XG4gICAgfVxuICAgIGZpbmRJbmRleChpbmRleCkge1xuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5yZWFkQXJySGRyKCk7XG4gICAgICAgIGlmIChpbmRleCA+PSBzaXplKVxuICAgICAgICAgICAgdGhyb3cgMTAgLyogRVJST1IuSU5ERVhfT1VUX09GX0JPVU5EUyAqLztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbmRleDsgaSsrKVxuICAgICAgICAgICAgdGhpcy5za2lwQW55KCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBmaW5kKHBhdGgpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXRoLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBzZWdtZW50ID0gcGF0aFtpXTtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc2VnbWVudCA9PT0gJ3N0cmluZycpXG4gICAgICAgICAgICAgICAgdGhpcy5maW5kS2V5KHNlZ21lbnQpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHRoaXMuZmluZEluZGV4KHNlZ21lbnQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbn1cbmV4cG9ydHMuQ2JvckRlY29kZXIgPSBDYm9yRGVjb2Rlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUNib3JEZWNvZGVyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5mcm9tU25hcHNob3QgPSBleHBvcnRzLnRvU25hcHNob3QgPSB2b2lkIDA7XG5jb25zdCB0b1NuYXBzaG90ID0gYXN5bmMgKHsgZnMsIHBhdGggPSAnLycsIHNlcGFyYXRvciA9ICcvJyB9KSA9PiB7XG4gICAgY29uc3Qgc3RhdHMgPSBhd2FpdCBmcy5sc3RhdChwYXRoKTtcbiAgICBpZiAoc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICBjb25zdCBsaXN0ID0gYXdhaXQgZnMucmVhZGRpcihwYXRoKTtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IHt9O1xuICAgICAgICBjb25zdCBkaXIgPSBwYXRoLmVuZHNXaXRoKHNlcGFyYXRvcikgPyBwYXRoIDogcGF0aCArIHNlcGFyYXRvcjtcbiAgICAgICAgY29uc3Qgc25hcHNob3RzID0gYXdhaXQgUHJvbWlzZS5hbGwobGlzdC5tYXAoY2hpbGQgPT4gKDAsIGV4cG9ydHMudG9TbmFwc2hvdCkoeyBmcywgcGF0aDogYCR7ZGlyfSR7Y2hpbGR9YCwgc2VwYXJhdG9yIH0pKSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHNuYXBzaG90c1tpXSlcbiAgICAgICAgICAgICAgICBlbnRyaWVzWycnICsgbGlzdFtpXV0gPSBzbmFwc2hvdHNbaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFswIC8qIFNuYXBzaG90Tm9kZVR5cGUuRm9sZGVyICovLCB7fSwgZW50cmllc107XG4gICAgfVxuICAgIGVsc2UgaWYgKHN0YXRzLmlzRmlsZSgpKSB7XG4gICAgICAgIGNvbnN0IGJ1ZiA9IChhd2FpdCBmcy5yZWFkRmlsZShwYXRoKSk7XG4gICAgICAgIGNvbnN0IHVpbnQ4ID0gbmV3IFVpbnQ4QXJyYXkoYnVmLmJ1ZmZlciwgYnVmLmJ5dGVPZmZzZXQsIGJ1Zi5ieXRlTGVuZ3RoKTtcbiAgICAgICAgcmV0dXJuIFsxIC8qIFNuYXBzaG90Tm9kZVR5cGUuRmlsZSAqLywge30sIHVpbnQ4XTtcbiAgICB9XG4gICAgZWxzZSBpZiAoc3RhdHMuaXNTeW1ib2xpY0xpbmsoKSkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgMiAvKiBTbmFwc2hvdE5vZGVUeXBlLlN5bWxpbmsgKi8sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0OiAoYXdhaXQgZnMucmVhZGxpbmsocGF0aCwgeyBlbmNvZGluZzogJ3V0ZjgnIH0pKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcbmV4cG9ydHMudG9TbmFwc2hvdCA9IHRvU25hcHNob3Q7XG5jb25zdCBmcm9tU25hcHNob3QgPSBhc3luYyAoc25hcHNob3QsIHsgZnMsIHBhdGggPSAnLycsIHNlcGFyYXRvciA9ICcvJyB9KSA9PiB7XG4gICAgaWYgKCFzbmFwc2hvdClcbiAgICAgICAgcmV0dXJuO1xuICAgIHN3aXRjaCAoc25hcHNob3RbMF0pIHtcbiAgICAgICAgY2FzZSAwIC8qIFNuYXBzaG90Tm9kZVR5cGUuRm9sZGVyICovOiB7XG4gICAgICAgICAgICBpZiAoIXBhdGguZW5kc1dpdGgoc2VwYXJhdG9yKSlcbiAgICAgICAgICAgICAgICBwYXRoID0gcGF0aCArIHNlcGFyYXRvcjtcbiAgICAgICAgICAgIGNvbnN0IFssICwgZW50cmllc10gPSBzbmFwc2hvdDtcbiAgICAgICAgICAgIGF3YWl0IGZzLm1rZGlyKHBhdGgsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgICAgICAgZm9yIChjb25zdCBbbmFtZSwgY2hpbGRdIG9mIE9iamVjdC5lbnRyaWVzKGVudHJpZXMpKVxuICAgICAgICAgICAgICAgIGF3YWl0ICgwLCBleHBvcnRzLmZyb21TbmFwc2hvdCkoY2hpbGQsIHsgZnMsIHBhdGg6IGAke3BhdGh9JHtuYW1lfWAsIHNlcGFyYXRvciB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMSAvKiBTbmFwc2hvdE5vZGVUeXBlLkZpbGUgKi86IHtcbiAgICAgICAgICAgIGNvbnN0IFssICwgZGF0YV0gPSBzbmFwc2hvdDtcbiAgICAgICAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShwYXRoLCBkYXRhKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMiAvKiBTbmFwc2hvdE5vZGVUeXBlLlN5bWxpbmsgKi86IHtcbiAgICAgICAgICAgIGNvbnN0IFssIHsgdGFyZ2V0IH1dID0gc25hcHNob3Q7XG4gICAgICAgICAgICBhd2FpdCBmcy5zeW1saW5rKHRhcmdldCwgcGF0aCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbn07XG5leHBvcnRzLmZyb21TbmFwc2hvdCA9IGZyb21TbmFwc2hvdDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFzeW5jLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy53cml0ZXIgPSB2b2lkIDA7XG5jb25zdCBXcml0ZXJfMSA9IHJlcXVpcmUoXCJAanNvbmpveS5jb20vYnVmZmVycy9saWIvV3JpdGVyXCIpO1xuZXhwb3J0cy53cml0ZXIgPSBuZXcgV3JpdGVyXzEuV3JpdGVyKDEwMjQgKiAzMik7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zaGFyZWQuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmZyb21CaW5hcnlTbmFwc2hvdCA9IGV4cG9ydHMudG9CaW5hcnlTbmFwc2hvdCA9IGV4cG9ydHMuZnJvbUJpbmFyeVNuYXBzaG90U3luYyA9IGV4cG9ydHMudG9CaW5hcnlTbmFwc2hvdFN5bmMgPSB2b2lkIDA7XG5jb25zdCBDYm9yRW5jb2Rlcl8xID0gcmVxdWlyZShcIkBqc29uam95LmNvbS9qc29uLXBhY2svbGliL2Nib3IvQ2JvckVuY29kZXJcIik7XG5jb25zdCBDYm9yRGVjb2Rlcl8xID0gcmVxdWlyZShcIkBqc29uam95LmNvbS9qc29uLXBhY2svbGliL2Nib3IvQ2JvckRlY29kZXJcIik7XG5jb25zdCBzeW5jXzEgPSByZXF1aXJlKFwiLi9zeW5jXCIpO1xuY29uc3QgYXN5bmNfMSA9IHJlcXVpcmUoXCIuL2FzeW5jXCIpO1xuY29uc3Qgc2hhcmVkXzEgPSByZXF1aXJlKFwiLi9zaGFyZWRcIik7XG5jb25zdCBlbmNvZGVyID0gbmV3IENib3JFbmNvZGVyXzEuQ2JvckVuY29kZXIoc2hhcmVkXzEud3JpdGVyKTtcbmNvbnN0IGRlY29kZXIgPSBuZXcgQ2JvckRlY29kZXJfMS5DYm9yRGVjb2RlcigpO1xuY29uc3QgdG9CaW5hcnlTbmFwc2hvdFN5bmMgPSAob3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IHNuYXBzaG90ID0gKDAsIHN5bmNfMS50b1NuYXBzaG90U3luYykob3B0aW9ucyk7XG4gICAgcmV0dXJuIGVuY29kZXIuZW5jb2RlKHNuYXBzaG90KTtcbn07XG5leHBvcnRzLnRvQmluYXJ5U25hcHNob3RTeW5jID0gdG9CaW5hcnlTbmFwc2hvdFN5bmM7XG5jb25zdCBmcm9tQmluYXJ5U25hcHNob3RTeW5jID0gKHVpbnQ4LCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3Qgc25hcHNob3QgPSBkZWNvZGVyLmRlY29kZSh1aW50OCk7XG4gICAgKDAsIHN5bmNfMS5mcm9tU25hcHNob3RTeW5jKShzbmFwc2hvdCwgb3B0aW9ucyk7XG59O1xuZXhwb3J0cy5mcm9tQmluYXJ5U25hcHNob3RTeW5jID0gZnJvbUJpbmFyeVNuYXBzaG90U3luYztcbmNvbnN0IHRvQmluYXJ5U25hcHNob3QgPSBhc3luYyAob3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IHNuYXBzaG90ID0gYXdhaXQgKDAsIGFzeW5jXzEudG9TbmFwc2hvdCkob3B0aW9ucyk7XG4gICAgcmV0dXJuIGVuY29kZXIuZW5jb2RlKHNuYXBzaG90KTtcbn07XG5leHBvcnRzLnRvQmluYXJ5U25hcHNob3QgPSB0b0JpbmFyeVNuYXBzaG90O1xuY29uc3QgZnJvbUJpbmFyeVNuYXBzaG90ID0gYXN5bmMgKHVpbnQ4LCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3Qgc25hcHNob3QgPSBkZWNvZGVyLmRlY29kZSh1aW50OCk7XG4gICAgYXdhaXQgKDAsIGFzeW5jXzEuZnJvbVNuYXBzaG90KShzbmFwc2hvdCwgb3B0aW9ucyk7XG59O1xuZXhwb3J0cy5mcm9tQmluYXJ5U25hcHNob3QgPSBmcm9tQmluYXJ5U25hcHNob3Q7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1iaW5hcnkuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmhhc0J1ZmZlciA9IGV4cG9ydHMuYWxwaGFiZXQgPSB2b2lkIDA7XG5leHBvcnRzLmFscGhhYmV0ID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8nO1xuZXhwb3J0cy5oYXNCdWZmZXIgPSB0eXBlb2YgQnVmZmVyID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBCdWZmZXIuZnJvbSA9PT0gJ2Z1bmN0aW9uJztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbnN0YW50cy5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuY3JlYXRlVG9CYXNlNjRCaW4gPSB2b2lkIDA7XG5jb25zdCBjb25zdGFudHNfMSA9IHJlcXVpcmUoXCIuL2NvbnN0YW50c1wiKTtcbmNvbnN0IGNyZWF0ZVRvQmFzZTY0QmluID0gKGNoYXJzID0gY29uc3RhbnRzXzEuYWxwaGFiZXQsIHBhZCA9ICc9JykgPT4ge1xuICAgIGlmIChjaGFycy5sZW5ndGggIT09IDY0KVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NoYXJzIG11c3QgYmUgNjQgY2hhcmFjdGVycyBsb25nJyk7XG4gICAgY29uc3QgdGFibGUgPSBjaGFycy5zcGxpdCgnJykubWFwKChjKSA9PiBjLmNoYXJDb2RlQXQoMCkpO1xuICAgIGNvbnN0IHRhYmxlMiA9IFtdO1xuICAgIGZvciAoY29uc3QgYzEgb2YgdGFibGUpIHtcbiAgICAgICAgZm9yIChjb25zdCBjMiBvZiB0YWJsZSkge1xuICAgICAgICAgICAgY29uc3QgdHdvID0gKGMxIDw8IDgpICsgYzI7XG4gICAgICAgICAgICB0YWJsZTIucHVzaCh0d28pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGRvQWRkUGFkZGluZyA9IHBhZC5sZW5ndGggPT09IDE7XG4gICAgY29uc3QgRSA9IGRvQWRkUGFkZGluZyA/IHBhZC5jaGFyQ29kZUF0KDApIDogMDtcbiAgICBjb25zdCBFRSA9IGRvQWRkUGFkZGluZyA/IChFIDw8IDgpIHwgRSA6IDA7XG4gICAgcmV0dXJuICh1aW50OCwgc3RhcnQsIGxlbmd0aCwgZGVzdCwgb2Zmc2V0KSA9PiB7XG4gICAgICAgIGNvbnN0IGV4dHJhTGVuZ3RoID0gbGVuZ3RoICUgMztcbiAgICAgICAgY29uc3QgYmFzZUxlbmd0aCA9IGxlbmd0aCAtIGV4dHJhTGVuZ3RoO1xuICAgICAgICBmb3IgKDsgc3RhcnQgPCBiYXNlTGVuZ3RoOyBzdGFydCArPSAzKSB7XG4gICAgICAgICAgICBjb25zdCBvMSA9IHVpbnQ4W3N0YXJ0XTtcbiAgICAgICAgICAgIGNvbnN0IG8yID0gdWludDhbc3RhcnQgKyAxXTtcbiAgICAgICAgICAgIGNvbnN0IG8zID0gdWludDhbc3RhcnQgKyAyXTtcbiAgICAgICAgICAgIGNvbnN0IHYxID0gKG8xIDw8IDQpIHwgKG8yID4+IDQpO1xuICAgICAgICAgICAgY29uc3QgdjIgPSAoKG8yICYgMGIxMTExKSA8PCA4KSB8IG8zO1xuICAgICAgICAgICAgZGVzdC5zZXRJbnQzMihvZmZzZXQsICh0YWJsZTJbdjFdIDw8IDE2KSArIHRhYmxlMlt2Ml0pO1xuICAgICAgICAgICAgb2Zmc2V0ICs9IDQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV4dHJhTGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBvMSA9IHVpbnQ4W2Jhc2VMZW5ndGhdO1xuICAgICAgICAgICAgaWYgKGRvQWRkUGFkZGluZykge1xuICAgICAgICAgICAgICAgIGRlc3Quc2V0SW50MzIob2Zmc2V0LCAodGFibGUyW28xIDw8IDRdIDw8IDE2KSArIEVFKTtcbiAgICAgICAgICAgICAgICBvZmZzZXQgKz0gNDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGRlc3Quc2V0SW50MTYob2Zmc2V0LCB0YWJsZTJbbzEgPDwgNF0pO1xuICAgICAgICAgICAgICAgIG9mZnNldCArPSAyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV4dHJhTGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBvMSA9IHVpbnQ4W2Jhc2VMZW5ndGhdO1xuICAgICAgICAgICAgY29uc3QgbzIgPSB1aW50OFtiYXNlTGVuZ3RoICsgMV07XG4gICAgICAgICAgICBjb25zdCB2MSA9IChvMSA8PCA0KSB8IChvMiA+PiA0KTtcbiAgICAgICAgICAgIGNvbnN0IHYyID0gKG8yICYgMGIxMTExKSA8PCAyO1xuICAgICAgICAgICAgaWYgKGRvQWRkUGFkZGluZykge1xuICAgICAgICAgICAgICAgIGRlc3Quc2V0SW50MzIob2Zmc2V0LCAodGFibGUyW3YxXSA8PCAxNikgKyAodGFibGVbdjJdIDw8IDgpICsgRSk7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBkZXN0LnNldEludDE2KG9mZnNldCwgdGFibGUyW3YxXSk7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDI7XG4gICAgICAgICAgICAgICAgZGVzdC5zZXRJbnQ4KG9mZnNldCwgdGFibGVbdjJdKTtcbiAgICAgICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2Zmc2V0O1xuICAgIH07XG59O1xuZXhwb3J0cy5jcmVhdGVUb0Jhc2U2NEJpbiA9IGNyZWF0ZVRvQmFzZTY0QmluO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y3JlYXRlVG9CYXNlNjRCaW4uanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnRvQmFzZTY0QmluID0gdm9pZCAwO1xuY29uc3QgY3JlYXRlVG9CYXNlNjRCaW5fMSA9IHJlcXVpcmUoXCIuL2NyZWF0ZVRvQmFzZTY0QmluXCIpO1xuZXhwb3J0cy50b0Jhc2U2NEJpbiA9ICgwLCBjcmVhdGVUb0Jhc2U2NEJpbl8xLmNyZWF0ZVRvQmFzZTY0QmluKSgpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dG9CYXNlNjRCaW4uanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkpzb25FbmNvZGVyID0gdm9pZCAwO1xuY29uc3QgdG9CYXNlNjRCaW5fMSA9IHJlcXVpcmUoXCJAanNvbmpveS5jb20vYmFzZTY0L2xpYi90b0Jhc2U2NEJpblwiKTtcbmNsYXNzIEpzb25FbmNvZGVyIHtcbiAgICBjb25zdHJ1Y3Rvcih3cml0ZXIpIHtcbiAgICAgICAgdGhpcy53cml0ZXIgPSB3cml0ZXI7XG4gICAgfVxuICAgIGVuY29kZSh2YWx1ZSkge1xuICAgICAgICBjb25zdCB3cml0ZXIgPSB0aGlzLndyaXRlcjtcbiAgICAgICAgd3JpdGVyLnJlc2V0KCk7XG4gICAgICAgIHRoaXMud3JpdGVBbnkodmFsdWUpO1xuICAgICAgICByZXR1cm4gd3JpdGVyLmZsdXNoKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENhbGxlZCB3aGVuIHRoZSBlbmNvZGVyIGVuY291bnRlcnMgYSB2YWx1ZSB0aGF0IGl0IGRvZXMgbm90IGtub3cgaG93IHRvIGVuY29kZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWx1ZSBTb21lIEphdmFTY3JpcHQgdmFsdWUuXG4gICAgICovXG4gICAgd3JpdGVVbmtub3duKHZhbHVlKSB7XG4gICAgICAgIHRoaXMud3JpdGVOdWxsKCk7XG4gICAgfVxuICAgIHdyaXRlQW55KHZhbHVlKSB7XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIHZhbHVlKSB7XG4gICAgICAgICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53cml0ZUJvb2xlYW4odmFsdWUpO1xuICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53cml0ZU51bWJlcih2YWx1ZSk7XG4gICAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLndyaXRlU3RyKHZhbHVlKTtcbiAgICAgICAgICAgIGNhc2UgJ29iamVjdCc6IHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLndyaXRlTnVsbCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnN0ciA9IHZhbHVlLmNvbnN0cnVjdG9yO1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoY29uc3RyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgT2JqZWN0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMud3JpdGVPYmoodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIEFycmF5OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMud3JpdGVBcnIodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFVpbnQ4QXJyYXk6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53cml0ZUJpbih2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBVaW50OEFycmF5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLndyaXRlQmluKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53cml0ZUFycih2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53cml0ZVVua25vd24odmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ3VuZGVmaW5lZCc6IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53cml0ZVVuZGVmKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLndyaXRlVW5rbm93bih2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgd3JpdGVOdWxsKCkge1xuICAgICAgICB0aGlzLndyaXRlci51MzIoMHg2ZTc1NmM2Yyk7IC8vIG51bGxcbiAgICB9XG4gICAgd3JpdGVVbmRlZigpIHtcbiAgICAgICAgY29uc3Qgd3JpdGVyID0gdGhpcy53cml0ZXI7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IDM1O1xuICAgICAgICB3cml0ZXIuZW5zdXJlQ2FwYWNpdHkobGVuZ3RoKTtcbiAgICAgICAgLy8gV3JpdGU6IFwiZGF0YTphcHBsaWNhdGlvbi9jYm9yLGJhc2U2NDs5dz09XCJcbiAgICAgICAgY29uc3QgdmlldyA9IHdyaXRlci52aWV3O1xuICAgICAgICBsZXQgeCA9IHdyaXRlci54O1xuICAgICAgICB2aWV3LnNldFVpbnQzMih4LCA1NzcwMDM4OTIpOyAvLyBcImRhdFxuICAgICAgICB4ICs9IDQ7XG4gICAgICAgIHZpZXcuc2V0VWludDMyKHgsIDE2MzEyMTU5ODQpOyAvLyBhOmFwXG4gICAgICAgIHggKz0gNDtcbiAgICAgICAgdmlldy5zZXRVaW50MzIoeCwgMTg4NjE1MzA1OSk7IC8vIHBsaWNcbiAgICAgICAgeCArPSA0O1xuICAgICAgICB2aWV3LnNldFVpbnQzMih4LCAxNjM1MDE5MTE5KTsgLy8gYXRpb1xuICAgICAgICB4ICs9IDQ7XG4gICAgICAgIHZpZXcuc2V0VWludDMyKHgsIDE4NDg1OTkzOTQpOyAvLyBuL2NiXG4gICAgICAgIHggKz0gNDtcbiAgICAgICAgdmlldy5zZXRVaW50MzIoeCwgMTg2OTc1MzQ0Mik7IC8vIG9yLGJcbiAgICAgICAgeCArPSA0O1xuICAgICAgICB2aWV3LnNldFVpbnQzMih4LCAxNjM0OTUyNTAyKTsgLy8gYXNlNlxuICAgICAgICB4ICs9IDQ7XG4gICAgICAgIHZpZXcuc2V0VWludDMyKHgsIDg3NjI5NjU2Nyk7IC8vIDQ7OXdcbiAgICAgICAgeCArPSA0O1xuICAgICAgICB2aWV3LnNldFVpbnQxNih4LCAxNTY3Nyk7IC8vID09XG4gICAgICAgIHggKz0gMjtcbiAgICAgICAgd3JpdGVyLnVpbnQ4W3grK10gPSAweDIyOyAvLyBcIlxuICAgICAgICB3cml0ZXIueCA9IHg7XG4gICAgfVxuICAgIHdyaXRlQm9vbGVhbihib29sKSB7XG4gICAgICAgIGlmIChib29sKVxuICAgICAgICAgICAgdGhpcy53cml0ZXIudTMyKDB4NzQ3Mjc1NjUpOyAvLyB0cnVlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMud3JpdGVyLnU4dTMyKDB4NjYsIDB4NjE2YzczNjUpOyAvLyBmYWxzZVxuICAgIH1cbiAgICB3cml0ZU51bWJlcihudW0pIHtcbiAgICAgICAgY29uc3Qgc3RyID0gbnVtLnRvU3RyaW5nKCk7XG4gICAgICAgIHRoaXMud3JpdGVyLmFzY2lpKHN0cik7XG4gICAgfVxuICAgIHdyaXRlSW50ZWdlcihpbnQpIHtcbiAgICAgICAgdGhpcy53cml0ZU51bWJlcihpbnQgPj4gMCA9PT0gaW50ID8gaW50IDogTWF0aC50cnVuYyhpbnQpKTtcbiAgICB9XG4gICAgd3JpdGVVSW50ZWdlcih1aW50KSB7XG4gICAgICAgIHRoaXMud3JpdGVJbnRlZ2VyKHVpbnQgPCAwID8gLXVpbnQgOiB1aW50KTtcbiAgICB9XG4gICAgd3JpdGVGbG9hdChmbG9hdCkge1xuICAgICAgICB0aGlzLndyaXRlTnVtYmVyKGZsb2F0KTtcbiAgICB9XG4gICAgd3JpdGVCaW4oYnVmKSB7XG4gICAgICAgIGNvbnN0IHdyaXRlciA9IHRoaXMud3JpdGVyO1xuICAgICAgICBjb25zdCBsZW5ndGggPSBidWYubGVuZ3RoO1xuICAgICAgICB3cml0ZXIuZW5zdXJlQ2FwYWNpdHkoMzggKyAzICsgKGxlbmd0aCA8PCAxKSk7XG4gICAgICAgIC8vIFdyaXRlOiBcImRhdGE6YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtO2Jhc2U2NCwgLSAyMiA2NCA2MSA3NCA2MSAzYSA2MSA3MCA3MCA2YyA2OSA2MyA2MSA3NCA2OSA2ZiA2ZSAyZiA2ZiA2MyA3NCA2NSA3NCAyZCA3MyA3NCA3MiA2NSA2MSA2ZCAzYiA2MiA2MSA3MyA2NSAzNiAzNCAyY1xuICAgICAgICBjb25zdCB2aWV3ID0gd3JpdGVyLnZpZXc7XG4gICAgICAgIGxldCB4ID0gd3JpdGVyLng7XG4gICAgICAgIHZpZXcuc2V0VWludDMyKHgsIDU3NzAwMzg5Mik7IC8vIFwiZGF0XG4gICAgICAgIHggKz0gNDtcbiAgICAgICAgdmlldy5zZXRVaW50MzIoeCwgMTYzMTIxNTk4NCk7IC8vIGE6YXBcbiAgICAgICAgeCArPSA0O1xuICAgICAgICB2aWV3LnNldFVpbnQzMih4LCAxODg2MTUzMDU5KTsgLy8gcGxpY1xuICAgICAgICB4ICs9IDQ7XG4gICAgICAgIHZpZXcuc2V0VWludDMyKHgsIDE2MzUwMTkxMTkpOyAvLyBhdGlvXG4gICAgICAgIHggKz0gNDtcbiAgICAgICAgdmlldy5zZXRVaW50MzIoeCwgMTg0ODYwMjQ2Nyk7IC8vIG4vb2NcbiAgICAgICAgeCArPSA0O1xuICAgICAgICB2aWV3LnNldFVpbnQzMih4LCAxOTUyODA1OTMzKTsgLy8gdGV0LVxuICAgICAgICB4ICs9IDQ7XG4gICAgICAgIHZpZXcuc2V0VWludDMyKHgsIDE5MzcwMTEzMDEpOyAvLyBzdHJlXG4gICAgICAgIHggKz0gNDtcbiAgICAgICAgdmlldy5zZXRVaW50MzIoeCwgMTYzNDU0ODU3OCk7IC8vIGFtO2JcbiAgICAgICAgeCArPSA0O1xuICAgICAgICB2aWV3LnNldFVpbnQzMih4LCAxNjM0OTUyNTAyKTsgLy8gYXNlNlxuICAgICAgICB4ICs9IDQ7XG4gICAgICAgIHZpZXcuc2V0VWludDE2KHgsIDEzMzU2KTsgLy8gNCxcbiAgICAgICAgeCArPSAyO1xuICAgICAgICB4ID0gKDAsIHRvQmFzZTY0QmluXzEudG9CYXNlNjRCaW4pKGJ1ZiwgMCwgbGVuZ3RoLCB2aWV3LCB4KTtcbiAgICAgICAgd3JpdGVyLnVpbnQ4W3grK10gPSAweDIyOyAvLyBcIlxuICAgICAgICB3cml0ZXIueCA9IHg7XG4gICAgfVxuICAgIHdyaXRlU3RyKHN0cikge1xuICAgICAgICBjb25zdCB3cml0ZXIgPSB0aGlzLndyaXRlcjtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gc3RyLmxlbmd0aDtcbiAgICAgICAgd3JpdGVyLmVuc3VyZUNhcGFjaXR5KGxlbmd0aCAqIDQgKyAyKTtcbiAgICAgICAgaWYgKGxlbmd0aCA8IDI1Nikge1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRYID0gd3JpdGVyLng7XG4gICAgICAgICAgICBsZXQgeCA9IHN0YXJ0WDtcbiAgICAgICAgICAgIGNvbnN0IHVpbnQ4ID0gd3JpdGVyLnVpbnQ4O1xuICAgICAgICAgICAgdWludDhbeCsrXSA9IDB4MjI7IC8vIFwiXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM0OiAvLyBcIlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDkyOiAvLyBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdWludDhbeCsrXSA9IDB4NWM7IC8vIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNvZGUgPCAzMiB8fCBjb2RlID4gMTI2KSB7XG4gICAgICAgICAgICAgICAgICAgIHdyaXRlci54ID0gc3RhcnRYO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBqc29uU3RyID0gSlNPTi5zdHJpbmdpZnkoc3RyKTtcbiAgICAgICAgICAgICAgICAgICAgd3JpdGVyLmVuc3VyZUNhcGFjaXR5KGpzb25TdHIubGVuZ3RoICogNCArIDQpO1xuICAgICAgICAgICAgICAgICAgICB3cml0ZXIudXRmOChqc29uU3RyKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHVpbnQ4W3grK10gPSBjb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdWludDhbeCsrXSA9IDB4MjI7IC8vIFwiXG4gICAgICAgICAgICB3cml0ZXIueCA9IHg7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QganNvblN0ciA9IEpTT04uc3RyaW5naWZ5KHN0cik7XG4gICAgICAgIHdyaXRlci5lbnN1cmVDYXBhY2l0eShqc29uU3RyLmxlbmd0aCAqIDQgKyA0KTtcbiAgICAgICAgd3JpdGVyLnV0ZjgoanNvblN0cik7XG4gICAgfVxuICAgIHdyaXRlQXNjaWlTdHIoc3RyKSB7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IHN0ci5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHdyaXRlciA9IHRoaXMud3JpdGVyO1xuICAgICAgICB3cml0ZXIuZW5zdXJlQ2FwYWNpdHkobGVuZ3RoICogMiArIDIpO1xuICAgICAgICBjb25zdCB1aW50OCA9IHdyaXRlci51aW50ODtcbiAgICAgICAgbGV0IHggPSB3cml0ZXIueDtcbiAgICAgICAgdWludDhbeCsrXSA9IDB4MjI7IC8vIFwiXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNvZGUgPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgICAgICAgICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMzQ6IC8vIFwiXG4gICAgICAgICAgICAgICAgY2FzZSA5MjogLy8gXFxcbiAgICAgICAgICAgICAgICAgICAgdWludDhbeCsrXSA9IDB4NWM7IC8vIFxcXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdWludDhbeCsrXSA9IGNvZGU7XG4gICAgICAgIH1cbiAgICAgICAgdWludDhbeCsrXSA9IDB4MjI7IC8vIFwiXG4gICAgICAgIHdyaXRlci54ID0geDtcbiAgICB9XG4gICAgd3JpdGVBcnIoYXJyKSB7XG4gICAgICAgIGNvbnN0IHdyaXRlciA9IHRoaXMud3JpdGVyO1xuICAgICAgICB3cml0ZXIudTgoMHg1Yik7IC8vIFtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gYXJyLmxlbmd0aDtcbiAgICAgICAgY29uc3QgbGFzdCA9IGxlbmd0aCAtIDE7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGFzdDsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLndyaXRlQW55KGFycltpXSk7XG4gICAgICAgICAgICB3cml0ZXIudTgoMHgyYyk7IC8vICxcbiAgICAgICAgfVxuICAgICAgICBpZiAobGFzdCA+PSAwKVxuICAgICAgICAgICAgdGhpcy53cml0ZUFueShhcnJbbGFzdF0pO1xuICAgICAgICB3cml0ZXIudTgoMHg1ZCk7IC8vIF1cbiAgICB9XG4gICAgd3JpdGVBcnJTZXBhcmF0b3IoKSB7XG4gICAgICAgIHRoaXMud3JpdGVyLnU4KDB4MmMpOyAvLyAsXG4gICAgfVxuICAgIHdyaXRlT2JqKG9iaikge1xuICAgICAgICBjb25zdCB3cml0ZXIgPSB0aGlzLndyaXRlcjtcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICAgICAgICBpZiAoIWxlbmd0aClcbiAgICAgICAgICAgIHJldHVybiB3cml0ZXIudTE2KDB4N2I3ZCk7IC8vIHt9XG4gICAgICAgIHdyaXRlci51OCgweDdiKTsgLy8ge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBrZXlzW2ldO1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBvYmpba2V5XTtcbiAgICAgICAgICAgIHRoaXMud3JpdGVTdHIoa2V5KTtcbiAgICAgICAgICAgIHdyaXRlci51OCgweDNhKTsgLy8gOlxuICAgICAgICAgICAgdGhpcy53cml0ZUFueSh2YWx1ZSk7XG4gICAgICAgICAgICB3cml0ZXIudTgoMHgyYyk7IC8vICxcbiAgICAgICAgfVxuICAgICAgICB3cml0ZXIudWludDhbd3JpdGVyLnggLSAxXSA9IDB4N2Q7IC8vIH1cbiAgICB9XG4gICAgd3JpdGVPYmpTZXBhcmF0b3IoKSB7XG4gICAgICAgIHRoaXMud3JpdGVyLnU4KDB4MmMpOyAvLyAsXG4gICAgfVxuICAgIHdyaXRlT2JqS2V5U2VwYXJhdG9yKCkge1xuICAgICAgICB0aGlzLndyaXRlci51OCgweDNhKTsgLy8gOlxuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN0cmVhbWluZyBlbmNvZGluZ1xuICAgIHdyaXRlU3RhcnRTdHIoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgICB9XG4gICAgd3JpdGVTdHJDaHVuayhzdHIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICAgIH1cbiAgICB3cml0ZUVuZFN0cigpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICAgIH1cbiAgICB3cml0ZVN0YXJ0QmluKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gICAgfVxuICAgIHdyaXRlQmluQ2h1bmsoYnVmKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgICB9XG4gICAgd3JpdGVFbmRCaW4oKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgICB9XG4gICAgd3JpdGVTdGFydEFycigpIHtcbiAgICAgICAgdGhpcy53cml0ZXIudTgoMHg1Yik7IC8vIFtcbiAgICB9XG4gICAgd3JpdGVBcnJDaHVuayhpdGVtKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgICB9XG4gICAgd3JpdGVFbmRBcnIoKSB7XG4gICAgICAgIHRoaXMud3JpdGVyLnU4KDB4NWQpOyAvLyBdXG4gICAgfVxuICAgIHdyaXRlU3RhcnRPYmooKSB7XG4gICAgICAgIHRoaXMud3JpdGVyLnU4KDB4N2IpOyAvLyB7XG4gICAgfVxuICAgIHdyaXRlT2JqQ2h1bmsoa2V5LCB2YWx1ZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gICAgfVxuICAgIHdyaXRlRW5kT2JqKCkge1xuICAgICAgICB0aGlzLndyaXRlci51OCgweDdkKTsgLy8gfVxuICAgIH1cbn1cbmV4cG9ydHMuSnNvbkVuY29kZXIgPSBKc29uRW5jb2Rlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUpzb25FbmNvZGVyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5jcmVhdGVGcm9tQmFzZTY0QmluID0gdm9pZCAwO1xuY29uc3QgY29uc3RhbnRzXzEgPSByZXF1aXJlKFwiLi9jb25zdGFudHNcIik7XG5jb25zdCBjcmVhdGVGcm9tQmFzZTY0QmluID0gKGNoYXJzID0gY29uc3RhbnRzXzEuYWxwaGFiZXQsIHBhZCA9ICc9JykgPT4ge1xuICAgIGlmIChjaGFycy5sZW5ndGggIT09IDY0KVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NoYXJzIG11c3QgYmUgNjQgY2hhcmFjdGVycyBsb25nJyk7XG4gICAgbGV0IG1heCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGFycy5sZW5ndGg7IGkrKylcbiAgICAgICAgbWF4ID0gTWF0aC5tYXgobWF4LCBjaGFycy5jaGFyQ29kZUF0KGkpKTtcbiAgICBjb25zdCB0YWJsZSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IG1heDsgaSArPSAxKVxuICAgICAgICB0YWJsZVtpXSA9IC0xO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hhcnMubGVuZ3RoOyBpKyspXG4gICAgICAgIHRhYmxlW2NoYXJzLmNoYXJDb2RlQXQoaSldID0gaTtcbiAgICBjb25zdCBkb0V4cGVjdFBhZGRpbmcgPSBwYWQubGVuZ3RoID09PSAxO1xuICAgIGNvbnN0IFBBRCA9IGRvRXhwZWN0UGFkZGluZyA/IHBhZC5jaGFyQ29kZUF0KDApIDogMDtcbiAgICByZXR1cm4gKHZpZXcsIG9mZnNldCwgbGVuZ3RoKSA9PiB7XG4gICAgICAgIGlmICghbGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO1xuICAgICAgICBsZXQgcGFkZGluZyA9IDA7XG4gICAgICAgIGlmIChsZW5ndGggJSA0ICE9PSAwKSB7XG4gICAgICAgICAgICBwYWRkaW5nID0gNCAtIChsZW5ndGggJSA0KTtcbiAgICAgICAgICAgIGxlbmd0aCArPSBwYWRkaW5nO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZW5kID0gb2Zmc2V0ICsgbGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgbGFzdCA9IGVuZCAtIDE7XG4gICAgICAgICAgICBpZiAodmlldy5nZXRVaW50OChsYXN0KSA9PT0gUEFEKSB7XG4gICAgICAgICAgICAgICAgcGFkZGluZyA9IDE7XG4gICAgICAgICAgICAgICAgaWYgKGxlbmd0aCA+IDEgJiYgdmlldy5nZXRVaW50OChsYXN0IC0gMSkgPT09IFBBRClcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZyA9IDI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxlbmd0aCAlIDQgIT09IDApXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Jhc2U2NCBzdHJpbmcgbGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0Jyk7XG4gICAgICAgIGNvbnN0IG1haW5FbmQgPSBvZmZzZXQgKyBsZW5ndGggLSAocGFkZGluZyA/IDQgOiAwKTtcbiAgICAgICAgY29uc3QgYnVmZmVyTGVuZ3RoID0gKGxlbmd0aCA+PiAyKSAqIDMgLSBwYWRkaW5nO1xuICAgICAgICBjb25zdCBidWYgPSBuZXcgVWludDhBcnJheShidWZmZXJMZW5ndGgpO1xuICAgICAgICBsZXQgaiA9IDA7XG4gICAgICAgIGxldCBpID0gb2Zmc2V0O1xuICAgICAgICBmb3IgKDsgaSA8IG1haW5FbmQ7IGkgKz0gNCkge1xuICAgICAgICAgICAgY29uc3Qgd29yZCA9IHZpZXcuZ2V0VWludDMyKGkpO1xuICAgICAgICAgICAgY29uc3Qgb2N0ZXQwID0gd29yZCA+Pj4gMjQ7XG4gICAgICAgICAgICBjb25zdCBvY3RldDEgPSAod29yZCA+Pj4gMTYpICYgMHhmZjtcbiAgICAgICAgICAgIGNvbnN0IG9jdGV0MiA9ICh3b3JkID4+PiA4KSAmIDB4ZmY7XG4gICAgICAgICAgICBjb25zdCBvY3RldDMgPSB3b3JkICYgMHhmZjtcbiAgICAgICAgICAgIGNvbnN0IHNleHRldDAgPSB0YWJsZVtvY3RldDBdO1xuICAgICAgICAgICAgY29uc3Qgc2V4dGV0MSA9IHRhYmxlW29jdGV0MV07XG4gICAgICAgICAgICBjb25zdCBzZXh0ZXQyID0gdGFibGVbb2N0ZXQyXTtcbiAgICAgICAgICAgIGNvbnN0IHNleHRldDMgPSB0YWJsZVtvY3RldDNdO1xuICAgICAgICAgICAgaWYgKHNleHRldDAgPCAwIHx8IHNleHRldDEgPCAwIHx8IHNleHRldDIgPCAwIHx8IHNleHRldDMgPCAwKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSU5WQUxJRF9CQVNFNjRfU0VRJyk7XG4gICAgICAgICAgICBidWZbal0gPSAoc2V4dGV0MCA8PCAyKSB8IChzZXh0ZXQxID4+IDQpO1xuICAgICAgICAgICAgYnVmW2ogKyAxXSA9IChzZXh0ZXQxIDw8IDQpIHwgKHNleHRldDIgPj4gMik7XG4gICAgICAgICAgICBidWZbaiArIDJdID0gKHNleHRldDIgPDwgNikgfCBzZXh0ZXQzO1xuICAgICAgICAgICAgaiArPSAzO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcGFkZGluZylcbiAgICAgICAgICAgIHJldHVybiBidWY7XG4gICAgICAgIGlmIChwYWRkaW5nID09PSAxKSB7XG4gICAgICAgICAgICBjb25zdCB3b3JkID0gdmlldy5nZXRVaW50MTYobWFpbkVuZCk7XG4gICAgICAgICAgICBjb25zdCBvY3RldDAgPSB3b3JkID4+IDg7XG4gICAgICAgICAgICBjb25zdCBvY3RldDEgPSB3b3JkICYgMHhmZjtcbiAgICAgICAgICAgIGNvbnN0IG9jdGV0MiA9IHZpZXcuZ2V0VWludDgobWFpbkVuZCArIDIpO1xuICAgICAgICAgICAgY29uc3Qgc2V4dGV0MCA9IHRhYmxlW29jdGV0MF07XG4gICAgICAgICAgICBjb25zdCBzZXh0ZXQxID0gdGFibGVbb2N0ZXQxXTtcbiAgICAgICAgICAgIGNvbnN0IHNleHRldDIgPSB0YWJsZVtvY3RldDJdO1xuICAgICAgICAgICAgaWYgKHNleHRldDAgPCAwIHx8IHNleHRldDEgPCAwIHx8IHNleHRldDIgPCAwKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSU5WQUxJRF9CQVNFNjRfU0VRJyk7XG4gICAgICAgICAgICBidWZbal0gPSAoc2V4dGV0MCA8PCAyKSB8IChzZXh0ZXQxID4+IDQpO1xuICAgICAgICAgICAgYnVmW2ogKyAxXSA9IChzZXh0ZXQxIDw8IDQpIHwgKHNleHRldDIgPj4gMik7XG4gICAgICAgICAgICByZXR1cm4gYnVmO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHdvcmQgPSB2aWV3LmdldFVpbnQxNihtYWluRW5kKTtcbiAgICAgICAgY29uc3Qgb2N0ZXQwID0gd29yZCA+PiA4O1xuICAgICAgICBjb25zdCBvY3RldDEgPSB3b3JkICYgMHhmZjtcbiAgICAgICAgY29uc3Qgc2V4dGV0MCA9IHRhYmxlW29jdGV0MF07XG4gICAgICAgIGNvbnN0IHNleHRldDEgPSB0YWJsZVtvY3RldDFdO1xuICAgICAgICBpZiAoc2V4dGV0MCA8IDAgfHwgc2V4dGV0MSA8IDApXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0lOVkFMSURfQkFTRTY0X1NFUScpO1xuICAgICAgICBidWZbal0gPSAoc2V4dGV0MCA8PCAyKSB8IChzZXh0ZXQxID4+IDQpO1xuICAgICAgICByZXR1cm4gYnVmO1xuICAgIH07XG59O1xuZXhwb3J0cy5jcmVhdGVGcm9tQmFzZTY0QmluID0gY3JlYXRlRnJvbUJhc2U2NEJpbjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNyZWF0ZUZyb21CYXNlNjRCaW4uanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmZyb21CYXNlNjRCaW4gPSB2b2lkIDA7XG5jb25zdCBjcmVhdGVGcm9tQmFzZTY0QmluXzEgPSByZXF1aXJlKFwiLi9jcmVhdGVGcm9tQmFzZTY0QmluXCIpO1xuZXhwb3J0cy5mcm9tQmFzZTY0QmluID0gKDAsIGNyZWF0ZUZyb21CYXNlNjRCaW5fMS5jcmVhdGVGcm9tQmFzZTY0QmluKSgpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZnJvbUJhc2U2NEJpbi5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuZmluZEVuZGluZ1F1b3RlID0gdm9pZCAwO1xuY29uc3QgZmluZEVuZGluZ1F1b3RlID0gKHVpbnQ4LCB4KSA9PiB7XG4gICAgY29uc3QgbGVuID0gdWludDgubGVuZ3RoO1xuICAgIGxldCBjaGFyID0gdWludDhbeF07XG4gICAgbGV0IHByZXYgPSAwO1xuICAgIHdoaWxlICh4IDwgbGVuKSB7XG4gICAgICAgIGlmIChjaGFyID09PSAzNCAmJiBwcmV2ICE9PSA5MilcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBpZiAoY2hhciA9PT0gOTIgJiYgcHJldiA9PT0gOTIpXG4gICAgICAgICAgICBwcmV2ID0gMDtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcHJldiA9IGNoYXI7XG4gICAgICAgIGNoYXIgPSB1aW50OFsrK3hdO1xuICAgIH1cbiAgICBpZiAoeCA9PT0gbGVuKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSlNPTicpO1xuICAgIHJldHVybiB4O1xufTtcbmV4cG9ydHMuZmluZEVuZGluZ1F1b3RlID0gZmluZEVuZGluZ1F1b3RlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRpbC5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuSnNvbkRlY29kZXIgPSBleHBvcnRzLnJlYWRLZXkgPSB2b2lkIDA7XG5jb25zdCBkZWNvZGVVdGY4XzEgPSByZXF1aXJlKFwiQGpzb25qb3kuY29tL2J1ZmZlcnMvbGliL3V0ZjgvZGVjb2RlVXRmOFwiKTtcbmNvbnN0IFJlYWRlcl8xID0gcmVxdWlyZShcIkBqc29uam95LmNvbS9idWZmZXJzL2xpYi9SZWFkZXJcIik7XG5jb25zdCBmcm9tQmFzZTY0QmluXzEgPSByZXF1aXJlKFwiQGpzb25qb3kuY29tL2Jhc2U2NC9saWIvZnJvbUJhc2U2NEJpblwiKTtcbmNvbnN0IHV0aWxfMSA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5jb25zdCBSRUdFWF9SRVBMQUNFX0VTQ0FQRURfQ0hBUlMgPSAvXFxcXChifGZ8bnxyfHR8XCJ8XFwvfFxcXFwpL2c7XG5jb25zdCBlc2NhcGVkQ2hhclJlcGxhY2VyID0gKGNoYXIpID0+IHtcbiAgICBzd2l0Y2ggKGNoYXIpIHtcbiAgICAgICAgY2FzZSAnXFxcXGInOlxuICAgICAgICAgICAgcmV0dXJuICdcXGInO1xuICAgICAgICBjYXNlICdcXFxcZic6XG4gICAgICAgICAgICByZXR1cm4gJ1xcZic7XG4gICAgICAgIGNhc2UgJ1xcXFxuJzpcbiAgICAgICAgICAgIHJldHVybiAnXFxuJztcbiAgICAgICAgY2FzZSAnXFxcXHInOlxuICAgICAgICAgICAgcmV0dXJuICdcXHInO1xuICAgICAgICBjYXNlICdcXFxcdCc6XG4gICAgICAgICAgICByZXR1cm4gJ1xcdCc7XG4gICAgICAgIGNhc2UgJ1xcXFxcIic6XG4gICAgICAgICAgICByZXR1cm4gJ1wiJztcbiAgICAgICAgY2FzZSAnXFxcXC8nOlxuICAgICAgICAgICAgcmV0dXJuICcvJztcbiAgICAgICAgY2FzZSAnXFxcXFxcXFwnOlxuICAgICAgICAgICAgcmV0dXJuICdcXFxcJztcbiAgICB9XG4gICAgcmV0dXJuIGNoYXI7XG59O1xuLy8gU3RhcnRzIHdpdGggZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LCAtIDY0IDYxIDc0IDYxIDNhIDYxIDcwIDcwIDZjIDY5IDYzIDYxIDc0IDY5IDZmIDZlIDJmIDZmIDYzIDc0IDY1IDc0IDJkIDczIDc0IDcyIDY1IDYxIDZkIDNiIDYyIDYxIDczIDY1IDM2IDM0IDJjXG5jb25zdCBoYXNCaW5hcnlQcmVmaXggPSAodTgsIHgpID0+IHU4W3hdID09PSAweDY0ICYmXG4gICAgdThbeCArIDFdID09PSAweDYxICYmXG4gICAgdThbeCArIDJdID09PSAweDc0ICYmXG4gICAgdThbeCArIDNdID09PSAweDYxICYmXG4gICAgdThbeCArIDRdID09PSAweDNhICYmXG4gICAgdThbeCArIDVdID09PSAweDYxICYmXG4gICAgdThbeCArIDZdID09PSAweDcwICYmXG4gICAgdThbeCArIDddID09PSAweDcwICYmXG4gICAgdThbeCArIDhdID09PSAweDZjICYmXG4gICAgdThbeCArIDldID09PSAweDY5ICYmXG4gICAgdThbeCArIDEwXSA9PT0gMHg2MyAmJlxuICAgIHU4W3ggKyAxMV0gPT09IDB4NjEgJiZcbiAgICB1OFt4ICsgMTJdID09PSAweDc0ICYmXG4gICAgdThbeCArIDEzXSA9PT0gMHg2OSAmJlxuICAgIHU4W3ggKyAxNF0gPT09IDB4NmYgJiZcbiAgICB1OFt4ICsgMTVdID09PSAweDZlICYmXG4gICAgdThbeCArIDE2XSA9PT0gMHgyZiAmJlxuICAgIHU4W3ggKyAxN10gPT09IDB4NmYgJiZcbiAgICB1OFt4ICsgMThdID09PSAweDYzICYmXG4gICAgdThbeCArIDE5XSA9PT0gMHg3NCAmJlxuICAgIHU4W3ggKyAyMF0gPT09IDB4NjUgJiZcbiAgICB1OFt4ICsgMjFdID09PSAweDc0ICYmXG4gICAgdThbeCArIDIyXSA9PT0gMHgyZCAmJlxuICAgIHU4W3ggKyAyM10gPT09IDB4NzMgJiZcbiAgICB1OFt4ICsgMjRdID09PSAweDc0ICYmXG4gICAgdThbeCArIDI1XSA9PT0gMHg3MiAmJlxuICAgIHU4W3ggKyAyNl0gPT09IDB4NjUgJiZcbiAgICB1OFt4ICsgMjddID09PSAweDYxICYmXG4gICAgdThbeCArIDI4XSA9PT0gMHg2ZCAmJlxuICAgIHU4W3ggKyAyOV0gPT09IDB4M2IgJiZcbiAgICB1OFt4ICsgMzBdID09PSAweDYyICYmXG4gICAgdThbeCArIDMxXSA9PT0gMHg2MSAmJlxuICAgIHU4W3ggKyAzMl0gPT09IDB4NzMgJiZcbiAgICB1OFt4ICsgMzNdID09PSAweDY1ICYmXG4gICAgdThbeCArIDM0XSA9PT0gMHgzNiAmJlxuICAgIHU4W3ggKyAzNV0gPT09IDB4MzQgJiZcbiAgICB1OFt4ICsgMzZdID09PSAweDJjO1xuLy8gTWF0Y2hlcyBcImRhdGE6YXBwbGljYXRpb24vY2JvcixiYXNlNjQ7OXc9PVwiXG5jb25zdCBpc1VuZGVmaW5lZCA9ICh1OCwgeCkgPT4gXG4vLyB1OFt4KytdID09PSAweDIyICYmICAvLyBcIlxuLy8gdThbeCsrXSA9PT0gMHg2NCAmJiAgLy8gZFxudThbeCsrXSA9PT0gMHg2MSAmJiAvLyBhXG4gICAgdThbeCsrXSA9PT0gMHg3NCAmJiAvLyB0XG4gICAgdThbeCsrXSA9PT0gMHg2MSAmJiAvLyBhXG4gICAgdThbeCsrXSA9PT0gMHgzYSAmJiAvLyA6XG4gICAgdThbeCsrXSA9PT0gMHg2MSAmJiAvLyBhXG4gICAgdThbeCsrXSA9PT0gMHg3MCAmJiAvLyBwXG4gICAgdThbeCsrXSA9PT0gMHg3MCAmJiAvLyBwXG4gICAgdThbeCsrXSA9PT0gMHg2YyAmJiAvLyBsXG4gICAgdThbeCsrXSA9PT0gMHg2OSAmJiAvLyBpXG4gICAgdThbeCsrXSA9PT0gMHg2MyAmJiAvLyBjXG4gICAgdThbeCsrXSA9PT0gMHg2MSAmJiAvLyBhXG4gICAgdThbeCsrXSA9PT0gMHg3NCAmJiAvLyB0XG4gICAgdThbeCsrXSA9PT0gMHg2OSAmJiAvLyBpXG4gICAgdThbeCsrXSA9PT0gMHg2ZiAmJiAvLyBvXG4gICAgdThbeCsrXSA9PT0gMHg2ZSAmJiAvLyBuXG4gICAgdThbeCsrXSA9PT0gMHgyZiAmJiAvLyAvXG4gICAgdThbeCsrXSA9PT0gMHg2MyAmJiAvLyBjXG4gICAgdThbeCsrXSA9PT0gMHg2MiAmJiAvLyBiXG4gICAgdThbeCsrXSA9PT0gMHg2ZiAmJiAvLyBvXG4gICAgdThbeCsrXSA9PT0gMHg3MiAmJiAvLyByXG4gICAgdThbeCsrXSA9PT0gMHgyYyAmJiAvLyAsXG4gICAgdThbeCsrXSA9PT0gMHg2MiAmJiAvLyBiXG4gICAgdThbeCsrXSA9PT0gMHg2MSAmJiAvLyBhXG4gICAgdThbeCsrXSA9PT0gMHg3MyAmJiAvLyBzXG4gICAgdThbeCsrXSA9PT0gMHg2NSAmJiAvLyBlXG4gICAgdThbeCsrXSA9PT0gMHgzNiAmJiAvLyA2XG4gICAgdThbeCsrXSA9PT0gMHgzNCAmJiAvLyA0XG4gICAgdThbeCsrXSA9PT0gMHgzYiAmJiAvLyA7XG4gICAgdThbeCsrXSA9PT0gMHgzOSAmJiAvLyA5XG4gICAgdThbeCsrXSA9PT0gMHg3NyAmJiAvLyB3XG4gICAgdThbeCsrXSA9PT0gMHgzZCAmJiAvLyA9XG4gICAgdThbeCsrXSA9PT0gMHgzZCAmJiAvLyA9XG4gICAgdThbeCsrXSA9PT0gMHgyMjsgLy8gXCJcbmNvbnN0IGZyb21DaGFyQ29kZSA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG5jb25zdCByZWFkS2V5ID0gKHJlYWRlcikgPT4ge1xuICAgIGNvbnN0IGJ1ZiA9IHJlYWRlci51aW50ODtcbiAgICBjb25zdCBsZW4gPSBidWYubGVuZ3RoO1xuICAgIGNvbnN0IHBvaW50cyA9IFtdO1xuICAgIGxldCB4ID0gcmVhZGVyLng7XG4gICAgbGV0IHByZXYgPSAwO1xuICAgIHdoaWxlICh4IDwgbGVuKSB7XG4gICAgICAgIGxldCBjb2RlID0gYnVmW3grK107XG4gICAgICAgIGlmICgoY29kZSAmIDB4ODApID09PSAwKSB7XG4gICAgICAgICAgICBpZiAocHJldiA9PT0gOTIpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA5ODogLy8gXFxiXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlID0gODtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDEwMjogLy8gXFxmXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlID0gMTI7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTA6IC8vIFxcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZSA9IDEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTE0OiAvLyBcXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPSAxMztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDExNjogLy8gXFx0XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlID0gOTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM0OiAvLyBcXFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlID0gMzQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0NzogLy8gXFwvXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlID0gNDc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA5MjogLy8gXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZSA9IDkyO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSlNPTicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwcmV2ID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChjb2RlID09PSAzNClcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgcHJldiA9IGNvZGU7XG4gICAgICAgICAgICAgICAgaWYgKHByZXYgPT09IDkyKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG9jdGV0MiA9IGJ1Zlt4KytdICYgMHgzZjtcbiAgICAgICAgICAgIGlmICgoY29kZSAmIDB4ZTApID09PSAweGMwKSB7XG4gICAgICAgICAgICAgICAgY29kZSA9ICgoY29kZSAmIDB4MWYpIDw8IDYpIHwgb2N0ZXQyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2N0ZXQzID0gYnVmW3grK10gJiAweDNmO1xuICAgICAgICAgICAgICAgIGlmICgoY29kZSAmIDB4ZjApID09PSAweGUwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvZGUgPSAoKGNvZGUgJiAweDFmKSA8PCAxMikgfCAob2N0ZXQyIDw8IDYpIHwgb2N0ZXQzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKChjb2RlICYgMHhmOCkgPT09IDB4ZjApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9jdGV0NCA9IGJ1Zlt4KytdICYgMHgzZjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1bml0ID0gKChjb2RlICYgMHgwNykgPDwgMHgxMikgfCAob2N0ZXQyIDw8IDB4MGMpIHwgKG9jdGV0MyA8PCAweDA2KSB8IG9jdGV0NDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bml0ID4gMHhmZmZmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdCAtPSAweDEwMDAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuaXQwID0gKCh1bml0ID4+PiAxMCkgJiAweDNmZikgfCAweGQ4MDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdCA9IDB4ZGMwMCB8ICh1bml0ICYgMHgzZmYpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cy5wdXNoKHVuaXQwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlID0gdW5pdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPSB1bml0O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBvaW50cy5wdXNoKGNvZGUpO1xuICAgIH1cbiAgICByZWFkZXIueCA9IHg7XG4gICAgcmV0dXJuIGZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIHBvaW50cyk7XG59O1xuZXhwb3J0cy5yZWFkS2V5ID0gcmVhZEtleTtcbmNsYXNzIEpzb25EZWNvZGVyIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5yZWFkZXIgPSBuZXcgUmVhZGVyXzEuUmVhZGVyKCk7XG4gICAgfVxuICAgIHJlYWQodWludDgpIHtcbiAgICAgICAgdGhpcy5yZWFkZXIucmVzZXQodWludDgpO1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFkQW55KCk7XG4gICAgfVxuICAgIGRlY29kZSh1aW50OCkge1xuICAgICAgICB0aGlzLnJlYWRlci5yZXNldCh1aW50OCk7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRBbnkoKTtcbiAgICB9XG4gICAgcmVhZEFueSgpIHtcbiAgICAgICAgdGhpcy5za2lwV2hpdGVzcGFjZSgpO1xuICAgICAgICBjb25zdCByZWFkZXIgPSB0aGlzLnJlYWRlcjtcbiAgICAgICAgY29uc3QgeCA9IHJlYWRlci54O1xuICAgICAgICBjb25zdCB1aW50OCA9IHJlYWRlci51aW50ODtcbiAgICAgICAgY29uc3QgY2hhciA9IHVpbnQ4W3hdO1xuICAgICAgICBzd2l0Y2ggKGNoYXIpIHtcbiAgICAgICAgICAgIGNhc2UgMzQgLyogXCIgKi86IHtcbiAgICAgICAgICAgICAgICBpZiAodWludDhbeCArIDFdID09PSAweDY0IC8qIGQgKi8pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmluID0gdGhpcy50cnlSZWFkQmluKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChiaW4pXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYmluO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQodWludDgsIHggKyAyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGVyLnggPSB4ICsgMzU7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlYWRTdHIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgOTEgLyogWyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkQXJyKCk7XG4gICAgICAgICAgICBjYXNlIDEwMiAvKiBmICovOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlYWRGYWxzZSgpO1xuICAgICAgICAgICAgY2FzZSAxMTAgLyogbiAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkTnVsbCgpO1xuICAgICAgICAgICAgY2FzZSAxMTYgLyogdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkVHJ1ZSgpO1xuICAgICAgICAgICAgY2FzZSAxMjMgLyogeyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkT2JqKCk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGlmICgoY2hhciA+PSA0OCAvKiAwICovICYmIGNoYXIgPD0gNTcpIC8qIDkgKi8gfHwgY2hhciA9PT0gNDUgLyogLSAqLylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVhZE51bSgpO1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKU09OJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc2tpcFdoaXRlc3BhY2UoKSB7XG4gICAgICAgIGNvbnN0IHJlYWRlciA9IHRoaXMucmVhZGVyO1xuICAgICAgICBjb25zdCB1aW50OCA9IHJlYWRlci51aW50ODtcbiAgICAgICAgbGV0IHggPSByZWFkZXIueDtcbiAgICAgICAgbGV0IGNoYXIgPSAwO1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgY2hhciA9IHVpbnQ4W3hdO1xuICAgICAgICAgICAgc3dpdGNoIChjaGFyKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAzMiAvKiA8c3BhY2U+ICovOlxuICAgICAgICAgICAgICAgIGNhc2UgOSAvKiA8dGFiPiAqLzpcbiAgICAgICAgICAgICAgICBjYXNlIDEwIC8qIDxsaW5lIGZlZWQ+ICovOlxuICAgICAgICAgICAgICAgIGNhc2UgMTMgLyogPGNhcnJpYWdlIHJldHVybj4gKi86XG4gICAgICAgICAgICAgICAgICAgIHgrKztcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmVhZGVyLnggPSB4O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVhZE51bGwoKSB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRlci51MzIoKSAhPT0gMHg2ZTc1NmM2YyAvKiBudWxsICovKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEpTT04nKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJlYWRUcnVlKCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkZXIudTMyKCkgIT09IDB4NzQ3Mjc1NjUgLyogdHJ1ZSAqLylcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKU09OJyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZWFkRmFsc2UoKSB7XG4gICAgICAgIGNvbnN0IHJlYWRlciA9IHRoaXMucmVhZGVyO1xuICAgICAgICBpZiAocmVhZGVyLnU4KCkgIT09IDB4NjYgLyogZiAqLyB8fCByZWFkZXIudTMyKCkgIT09IDB4NjE2YzczNjUgLyogYWxzZSAqLylcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKU09OJyk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmVhZEJvb2woKSB7XG4gICAgICAgIGNvbnN0IHJlYWRlciA9IHRoaXMucmVhZGVyO1xuICAgICAgICBzd2l0Y2ggKHJlYWRlci51aW50OFtyZWFkZXIueF0pIHtcbiAgICAgICAgICAgIGNhc2UgMTAyIC8qIGYgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVhZEZhbHNlKCk7XG4gICAgICAgICAgICBjYXNlIDExNiAvKiB0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlYWRUcnVlKCk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKU09OJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVhZE51bSgpIHtcbiAgICAgICAgY29uc3QgcmVhZGVyID0gdGhpcy5yZWFkZXI7XG4gICAgICAgIGNvbnN0IHVpbnQ4ID0gcmVhZGVyLnVpbnQ4O1xuICAgICAgICBsZXQgeCA9IHJlYWRlci54O1xuICAgICAgICBsZXQgYyA9IHVpbnQ4W3grK107XG4gICAgICAgIGNvbnN0IGMxID0gYztcbiAgICAgICAgYyA9IHVpbnQ4W3grK107XG4gICAgICAgIGlmICghYyB8fCAoKGMgPCA0NSB8fCBjID4gNTcpICYmIGMgIT09IDQzICYmIGMgIT09IDY5ICYmIGMgIT09IDEwMSkpIHtcbiAgICAgICAgICAgIHJlYWRlci54ID0geCAtIDE7XG4gICAgICAgICAgICBjb25zdCBudW0gPSArZnJvbUNoYXJDb2RlKGMxKTtcbiAgICAgICAgICAgIGlmIChudW0gIT09IG51bSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSlNPTicpO1xuICAgICAgICAgICAgcmV0dXJuIG51bTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjMiA9IGM7XG4gICAgICAgIGMgPSB1aW50OFt4KytdO1xuICAgICAgICBpZiAoIWMgfHwgKChjIDwgNDUgfHwgYyA+IDU3KSAmJiBjICE9PSA0MyAmJiBjICE9PSA2OSAmJiBjICE9PSAxMDEpKSB7XG4gICAgICAgICAgICByZWFkZXIueCA9IHggLSAxO1xuICAgICAgICAgICAgY29uc3QgbnVtID0gK2Zyb21DaGFyQ29kZShjMSwgYzIpO1xuICAgICAgICAgICAgaWYgKG51bSAhPT0gbnVtKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKU09OJyk7XG4gICAgICAgICAgICByZXR1cm4gbnVtO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGMzID0gYztcbiAgICAgICAgYyA9IHVpbnQ4W3grK107XG4gICAgICAgIGlmICghYyB8fCAoKGMgPCA0NSB8fCBjID4gNTcpICYmIGMgIT09IDQzICYmIGMgIT09IDY5ICYmIGMgIT09IDEwMSkpIHtcbiAgICAgICAgICAgIHJlYWRlci54ID0geCAtIDE7XG4gICAgICAgICAgICBjb25zdCBudW0gPSArZnJvbUNoYXJDb2RlKGMxLCBjMiwgYzMpO1xuICAgICAgICAgICAgaWYgKG51bSAhPT0gbnVtKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKU09OJyk7XG4gICAgICAgICAgICByZXR1cm4gbnVtO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGM0ID0gYztcbiAgICAgICAgYyA9IHVpbnQ4W3grK107XG4gICAgICAgIGlmICghYyB8fCAoKGMgPCA0NSB8fCBjID4gNTcpICYmIGMgIT09IDQzICYmIGMgIT09IDY5ICYmIGMgIT09IDEwMSkpIHtcbiAgICAgICAgICAgIHJlYWRlci54ID0geCAtIDE7XG4gICAgICAgICAgICBjb25zdCBudW0gPSArZnJvbUNoYXJDb2RlKGMxLCBjMiwgYzMsIGM0KTtcbiAgICAgICAgICAgIGlmIChudW0gIT09IG51bSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSlNPTicpO1xuICAgICAgICAgICAgcmV0dXJuIG51bTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjNSA9IGM7XG4gICAgICAgIGMgPSB1aW50OFt4KytdO1xuICAgICAgICBpZiAoIWMgfHwgKChjIDwgNDUgfHwgYyA+IDU3KSAmJiBjICE9PSA0MyAmJiBjICE9PSA2OSAmJiBjICE9PSAxMDEpKSB7XG4gICAgICAgICAgICByZWFkZXIueCA9IHggLSAxO1xuICAgICAgICAgICAgY29uc3QgbnVtID0gK2Zyb21DaGFyQ29kZShjMSwgYzIsIGMzLCBjNCwgYzUpO1xuICAgICAgICAgICAgaWYgKG51bSAhPT0gbnVtKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKU09OJyk7XG4gICAgICAgICAgICByZXR1cm4gbnVtO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGM2ID0gYztcbiAgICAgICAgYyA9IHVpbnQ4W3grK107XG4gICAgICAgIGlmICghYyB8fCAoKGMgPCA0NSB8fCBjID4gNTcpICYmIGMgIT09IDQzICYmIGMgIT09IDY5ICYmIGMgIT09IDEwMSkpIHtcbiAgICAgICAgICAgIHJlYWRlci54ID0geCAtIDE7XG4gICAgICAgICAgICBjb25zdCBudW0gPSArZnJvbUNoYXJDb2RlKGMxLCBjMiwgYzMsIGM0LCBjNSwgYzYpO1xuICAgICAgICAgICAgaWYgKG51bSAhPT0gbnVtKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKU09OJyk7XG4gICAgICAgICAgICByZXR1cm4gbnVtO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGM3ID0gYztcbiAgICAgICAgYyA9IHVpbnQ4W3grK107XG4gICAgICAgIGlmICghYyB8fCAoKGMgPCA0NSB8fCBjID4gNTcpICYmIGMgIT09IDQzICYmIGMgIT09IDY5ICYmIGMgIT09IDEwMSkpIHtcbiAgICAgICAgICAgIHJlYWRlci54ID0geCAtIDE7XG4gICAgICAgICAgICBjb25zdCBudW0gPSArZnJvbUNoYXJDb2RlKGMxLCBjMiwgYzMsIGM0LCBjNSwgYzYsIGM3KTtcbiAgICAgICAgICAgIGlmIChudW0gIT09IG51bSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSlNPTicpO1xuICAgICAgICAgICAgcmV0dXJuIG51bTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjOCA9IGM7XG4gICAgICAgIGMgPSB1aW50OFt4KytdO1xuICAgICAgICBpZiAoIWMgfHwgKChjIDwgNDUgfHwgYyA+IDU3KSAmJiBjICE9PSA0MyAmJiBjICE9PSA2OSAmJiBjICE9PSAxMDEpKSB7XG4gICAgICAgICAgICByZWFkZXIueCA9IHggLSAxO1xuICAgICAgICAgICAgY29uc3QgbnVtID0gK2Zyb21DaGFyQ29kZShjMSwgYzIsIGMzLCBjNCwgYzUsIGM2LCBjNywgYzgpO1xuICAgICAgICAgICAgaWYgKG51bSAhPT0gbnVtKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKU09OJyk7XG4gICAgICAgICAgICByZXR1cm4gbnVtO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGM5ID0gYztcbiAgICAgICAgYyA9IHVpbnQ4W3grK107XG4gICAgICAgIGlmICghYyB8fCAoKGMgPCA0NSB8fCBjID4gNTcpICYmIGMgIT09IDQzICYmIGMgIT09IDY5ICYmIGMgIT09IDEwMSkpIHtcbiAgICAgICAgICAgIHJlYWRlci54ID0geCAtIDE7XG4gICAgICAgICAgICBjb25zdCBudW0gPSArZnJvbUNoYXJDb2RlKGMxLCBjMiwgYzMsIGM0LCBjNSwgYzYsIGM3LCBjOCwgYzkpO1xuICAgICAgICAgICAgaWYgKG51bSAhPT0gbnVtKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKU09OJyk7XG4gICAgICAgICAgICByZXR1cm4gbnVtO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGMxMCA9IGM7XG4gICAgICAgIGMgPSB1aW50OFt4KytdO1xuICAgICAgICBpZiAoIWMgfHwgKChjIDwgNDUgfHwgYyA+IDU3KSAmJiBjICE9PSA0MyAmJiBjICE9PSA2OSAmJiBjICE9PSAxMDEpKSB7XG4gICAgICAgICAgICByZWFkZXIueCA9IHggLSAxO1xuICAgICAgICAgICAgY29uc3QgbnVtID0gK2Zyb21DaGFyQ29kZShjMSwgYzIsIGMzLCBjNCwgYzUsIGM2LCBjNywgYzgsIGM5LCBjMTApO1xuICAgICAgICAgICAgaWYgKG51bSAhPT0gbnVtKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKU09OJyk7XG4gICAgICAgICAgICByZXR1cm4gbnVtO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGMxMSA9IGM7XG4gICAgICAgIGMgPSB1aW50OFt4KytdO1xuICAgICAgICBpZiAoIWMgfHwgKChjIDwgNDUgfHwgYyA+IDU3KSAmJiBjICE9PSA0MyAmJiBjICE9PSA2OSAmJiBjICE9PSAxMDEpKSB7XG4gICAgICAgICAgICByZWFkZXIueCA9IHggLSAxO1xuICAgICAgICAgICAgY29uc3QgbnVtID0gK2Zyb21DaGFyQ29kZShjMSwgYzIsIGMzLCBjNCwgYzUsIGM2LCBjNywgYzgsIGM5LCBjMTAsIGMxMSk7XG4gICAgICAgICAgICBpZiAobnVtICE9PSBudW0pXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEpTT04nKTtcbiAgICAgICAgICAgIHJldHVybiBudW07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYzEyID0gYztcbiAgICAgICAgYyA9IHVpbnQ4W3grK107XG4gICAgICAgIGlmICghYyB8fCAoKGMgPCA0NSB8fCBjID4gNTcpICYmIGMgIT09IDQzICYmIGMgIT09IDY5ICYmIGMgIT09IDEwMSkpIHtcbiAgICAgICAgICAgIHJlYWRlci54ID0geCAtIDE7XG4gICAgICAgICAgICBjb25zdCBudW0gPSArZnJvbUNoYXJDb2RlKGMxLCBjMiwgYzMsIGM0LCBjNSwgYzYsIGM3LCBjOCwgYzksIGMxMCwgYzExLCBjMTIpO1xuICAgICAgICAgICAgaWYgKG51bSAhPT0gbnVtKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKU09OJyk7XG4gICAgICAgICAgICByZXR1cm4gbnVtO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGMxMyA9IGM7XG4gICAgICAgIGMgPSB1aW50OFt4KytdO1xuICAgICAgICBpZiAoIWMgfHwgKChjIDwgNDUgfHwgYyA+IDU3KSAmJiBjICE9PSA0MyAmJiBjICE9PSA2OSAmJiBjICE9PSAxMDEpKSB7XG4gICAgICAgICAgICByZWFkZXIueCA9IHggLSAxO1xuICAgICAgICAgICAgY29uc3QgbnVtID0gK2Zyb21DaGFyQ29kZShjMSwgYzIsIGMzLCBjNCwgYzUsIGM2LCBjNywgYzgsIGM5LCBjMTAsIGMxMSwgYzEyLCBjMTMpO1xuICAgICAgICAgICAgaWYgKG51bSAhPT0gbnVtKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKU09OJyk7XG4gICAgICAgICAgICByZXR1cm4gbnVtO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGMxNCA9IGM7XG4gICAgICAgIGMgPSB1aW50OFt4KytdO1xuICAgICAgICBpZiAoIWMgfHwgKChjIDwgNDUgfHwgYyA+IDU3KSAmJiBjICE9PSA0MyAmJiBjICE9PSA2OSAmJiBjICE9PSAxMDEpKSB7XG4gICAgICAgICAgICByZWFkZXIueCA9IHggLSAxO1xuICAgICAgICAgICAgY29uc3QgbnVtID0gK2Zyb21DaGFyQ29kZShjMSwgYzIsIGMzLCBjNCwgYzUsIGM2LCBjNywgYzgsIGM5LCBjMTAsIGMxMSwgYzEyLCBjMTMsIGMxNCk7XG4gICAgICAgICAgICBpZiAobnVtICE9PSBudW0pXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEpTT04nKTtcbiAgICAgICAgICAgIHJldHVybiBudW07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYzE1ID0gYztcbiAgICAgICAgYyA9IHVpbnQ4W3grK107XG4gICAgICAgIGlmICghYyB8fCAoKGMgPCA0NSB8fCBjID4gNTcpICYmIGMgIT09IDQzICYmIGMgIT09IDY5ICYmIGMgIT09IDEwMSkpIHtcbiAgICAgICAgICAgIHJlYWRlci54ID0geCAtIDE7XG4gICAgICAgICAgICBjb25zdCBudW0gPSArZnJvbUNoYXJDb2RlKGMxLCBjMiwgYzMsIGM0LCBjNSwgYzYsIGM3LCBjOCwgYzksIGMxMCwgYzExLCBjMTIsIGMxMywgYzE0LCBjMTUpO1xuICAgICAgICAgICAgaWYgKG51bSAhPT0gbnVtKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKU09OJyk7XG4gICAgICAgICAgICByZXR1cm4gbnVtO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGMxNiA9IGM7XG4gICAgICAgIGMgPSB1aW50OFt4KytdO1xuICAgICAgICBpZiAoIWMgfHwgKChjIDwgNDUgfHwgYyA+IDU3KSAmJiBjICE9PSA0MyAmJiBjICE9PSA2OSAmJiBjICE9PSAxMDEpKSB7XG4gICAgICAgICAgICByZWFkZXIueCA9IHggLSAxO1xuICAgICAgICAgICAgY29uc3QgbnVtID0gK2Zyb21DaGFyQ29kZShjMSwgYzIsIGMzLCBjNCwgYzUsIGM2LCBjNywgYzgsIGM5LCBjMTAsIGMxMSwgYzEyLCBjMTMsIGMxNCwgYzE1LCBjMTYpO1xuICAgICAgICAgICAgaWYgKG51bSAhPT0gbnVtKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKU09OJyk7XG4gICAgICAgICAgICByZXR1cm4gbnVtO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGMxNyA9IGM7XG4gICAgICAgIGMgPSB1aW50OFt4KytdO1xuICAgICAgICBpZiAoIWMgfHwgKChjIDwgNDUgfHwgYyA+IDU3KSAmJiBjICE9PSA0MyAmJiBjICE9PSA2OSAmJiBjICE9PSAxMDEpKSB7XG4gICAgICAgICAgICByZWFkZXIueCA9IHggLSAxO1xuICAgICAgICAgICAgY29uc3QgbnVtID0gK2Zyb21DaGFyQ29kZShjMSwgYzIsIGMzLCBjNCwgYzUsIGM2LCBjNywgYzgsIGM5LCBjMTAsIGMxMSwgYzEyLCBjMTMsIGMxNCwgYzE1LCBjMTYsIGMxNyk7XG4gICAgICAgICAgICBpZiAobnVtICE9PSBudW0pXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEpTT04nKTtcbiAgICAgICAgICAgIHJldHVybiBudW07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYzE4ID0gYztcbiAgICAgICAgYyA9IHVpbnQ4W3grK107XG4gICAgICAgIGlmICghYyB8fCAoKGMgPCA0NSB8fCBjID4gNTcpICYmIGMgIT09IDQzICYmIGMgIT09IDY5ICYmIGMgIT09IDEwMSkpIHtcbiAgICAgICAgICAgIHJlYWRlci54ID0geCAtIDE7XG4gICAgICAgICAgICBjb25zdCBudW0gPSArZnJvbUNoYXJDb2RlKGMxLCBjMiwgYzMsIGM0LCBjNSwgYzYsIGM3LCBjOCwgYzksIGMxMCwgYzExLCBjMTIsIGMxMywgYzE0LCBjMTUsIGMxNiwgYzE3LCBjMTgpO1xuICAgICAgICAgICAgaWYgKG51bSAhPT0gbnVtKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKU09OJyk7XG4gICAgICAgICAgICByZXR1cm4gbnVtO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGMxOSA9IGM7XG4gICAgICAgIGMgPSB1aW50OFt4KytdO1xuICAgICAgICBpZiAoIWMgfHwgKChjIDwgNDUgfHwgYyA+IDU3KSAmJiBjICE9PSA0MyAmJiBjICE9PSA2OSAmJiBjICE9PSAxMDEpKSB7XG4gICAgICAgICAgICByZWFkZXIueCA9IHggLSAxO1xuICAgICAgICAgICAgY29uc3QgbnVtID0gK2Zyb21DaGFyQ29kZShjMSwgYzIsIGMzLCBjNCwgYzUsIGM2LCBjNywgYzgsIGM5LCBjMTAsIGMxMSwgYzEyLCBjMTMsIGMxNCwgYzE1LCBjMTYsIGMxNywgYzE4LCBjMTkpO1xuICAgICAgICAgICAgaWYgKG51bSAhPT0gbnVtKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKU09OJyk7XG4gICAgICAgICAgICByZXR1cm4gbnVtO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGMyMCA9IGM7XG4gICAgICAgIGMgPSB1aW50OFt4KytdO1xuICAgICAgICBpZiAoIWMgfHwgKChjIDwgNDUgfHwgYyA+IDU3KSAmJiBjICE9PSA0MyAmJiBjICE9PSA2OSAmJiBjICE9PSAxMDEpKSB7XG4gICAgICAgICAgICByZWFkZXIueCA9IHggLSAxO1xuICAgICAgICAgICAgY29uc3QgbnVtID0gK2Zyb21DaGFyQ29kZShjMSwgYzIsIGMzLCBjNCwgYzUsIGM2LCBjNywgYzgsIGM5LCBjMTAsIGMxMSwgYzEyLCBjMTMsIGMxNCwgYzE1LCBjMTYsIGMxNywgYzE4LCBjMTksIGMyMCk7XG4gICAgICAgICAgICBpZiAobnVtICE9PSBudW0pXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEpTT04nKTtcbiAgICAgICAgICAgIHJldHVybiBudW07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYzIxID0gYztcbiAgICAgICAgYyA9IHVpbnQ4W3grK107XG4gICAgICAgIGlmICghYyB8fCAoKGMgPCA0NSB8fCBjID4gNTcpICYmIGMgIT09IDQzICYmIGMgIT09IDY5ICYmIGMgIT09IDEwMSkpIHtcbiAgICAgICAgICAgIHJlYWRlci54ID0geCAtIDE7XG4gICAgICAgICAgICBjb25zdCBudW0gPSArZnJvbUNoYXJDb2RlKGMxLCBjMiwgYzMsIGM0LCBjNSwgYzYsIGM3LCBjOCwgYzksIGMxMCwgYzExLCBjMTIsIGMxMywgYzE0LCBjMTUsIGMxNiwgYzE3LCBjMTgsIGMxOSwgYzIwLCBjMjEpO1xuICAgICAgICAgICAgaWYgKG51bSAhPT0gbnVtKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKU09OJyk7XG4gICAgICAgICAgICByZXR1cm4gbnVtO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGMyMiA9IGM7XG4gICAgICAgIGMgPSB1aW50OFt4KytdO1xuICAgICAgICBpZiAoIWMgfHwgKChjIDwgNDUgfHwgYyA+IDU3KSAmJiBjICE9PSA0MyAmJiBjICE9PSA2OSAmJiBjICE9PSAxMDEpKSB7XG4gICAgICAgICAgICByZWFkZXIueCA9IHggLSAxO1xuICAgICAgICAgICAgY29uc3QgbnVtID0gK2Zyb21DaGFyQ29kZShjMSwgYzIsIGMzLCBjNCwgYzUsIGM2LCBjNywgYzgsIGM5LCBjMTAsIGMxMSwgYzEyLCBjMTMsIGMxNCwgYzE1LCBjMTYsIGMxNywgYzE4LCBjMTksIGMyMCwgYzIxLCBjMjIpO1xuICAgICAgICAgICAgaWYgKG51bSAhPT0gbnVtKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKU09OJyk7XG4gICAgICAgICAgICByZXR1cm4gbnVtO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGMyMyA9IGM7XG4gICAgICAgIGMgPSB1aW50OFt4KytdO1xuICAgICAgICBpZiAoIWMgfHwgKChjIDwgNDUgfHwgYyA+IDU3KSAmJiBjICE9PSA0MyAmJiBjICE9PSA2OSAmJiBjICE9PSAxMDEpKSB7XG4gICAgICAgICAgICByZWFkZXIueCA9IHggLSAxO1xuICAgICAgICAgICAgY29uc3QgbnVtID0gK2Zyb21DaGFyQ29kZShjMSwgYzIsIGMzLCBjNCwgYzUsIGM2LCBjNywgYzgsIGM5LCBjMTAsIGMxMSwgYzEyLCBjMTMsIGMxNCwgYzE1LCBjMTYsIGMxNywgYzE4LCBjMTksIGMyMCwgYzIxLCBjMjIsIGMyMyk7XG4gICAgICAgICAgICBpZiAobnVtICE9PSBudW0pXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEpTT04nKTtcbiAgICAgICAgICAgIHJldHVybiBudW07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYzI0ID0gYztcbiAgICAgICAgYyA9IHVpbnQ4W3grK107XG4gICAgICAgIGlmICghYyB8fCAoKGMgPCA0NSB8fCBjID4gNTcpICYmIGMgIT09IDQzICYmIGMgIT09IDY5ICYmIGMgIT09IDEwMSkpIHtcbiAgICAgICAgICAgIHJlYWRlci54ID0geCAtIDE7XG4gICAgICAgICAgICBjb25zdCBudW0gPSArZnJvbUNoYXJDb2RlKGMxLCBjMiwgYzMsIGM0LCBjNSwgYzYsIGM3LCBjOCwgYzksIGMxMCwgYzExLCBjMTIsIGMxMywgYzE0LCBjMTUsIGMxNiwgYzE3LCBjMTgsIGMxOSwgYzIwLCBjMjEsIGMyMiwgYzIzLCBjMjQpO1xuICAgICAgICAgICAgaWYgKG51bSAhPT0gbnVtKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKU09OJyk7XG4gICAgICAgICAgICByZXR1cm4gbnVtO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKU09OJyk7XG4gICAgfVxuICAgIHJlYWRTdHIoKSB7XG4gICAgICAgIGNvbnN0IHJlYWRlciA9IHRoaXMucmVhZGVyO1xuICAgICAgICBjb25zdCB1aW50OCA9IHJlYWRlci51aW50ODtcbiAgICAgICAgY29uc3QgY2hhciA9IHVpbnQ4W3JlYWRlci54KytdO1xuICAgICAgICBpZiAoY2hhciAhPT0gMHgyMilcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKU09OJyk7XG4gICAgICAgIGNvbnN0IHgwID0gcmVhZGVyLng7XG4gICAgICAgIGNvbnN0IHgxID0gKDAsIHV0aWxfMS5maW5kRW5kaW5nUXVvdGUpKHVpbnQ4LCB4MCk7XG4gICAgICAgIGxldCBzdHIgPSAoMCwgZGVjb2RlVXRmOF8xLmRlY29kZVV0ZjgpKHVpbnQ4LCB4MCwgeDEgLSB4MCk7XG4gICAgICAgIC8qKiBAdG9kbyBwZXJmOiBtYXliZSBmYXN0ZXIgaXMgdG8gZmlyc3QgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBlc2NhcGVkIGNoYXJzLiAqL1xuICAgICAgICBzdHIgPSBzdHIucmVwbGFjZShSRUdFWF9SRVBMQUNFX0VTQ0FQRURfQ0hBUlMsIGVzY2FwZWRDaGFyUmVwbGFjZXIpO1xuICAgICAgICByZWFkZXIueCA9IHgxICsgMTtcbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG4gICAgdHJ5UmVhZEJpbigpIHtcbiAgICAgICAgY29uc3QgcmVhZGVyID0gdGhpcy5yZWFkZXI7XG4gICAgICAgIGNvbnN0IHU4ID0gcmVhZGVyLnVpbnQ4O1xuICAgICAgICBsZXQgeCA9IHJlYWRlci54O1xuICAgICAgICBpZiAodThbeCsrXSAhPT0gMHgyMilcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGhhc0RhdGFVcmxQcmVmaXggPSBoYXNCaW5hcnlQcmVmaXgodTgsIHgpO1xuICAgICAgICBpZiAoIWhhc0RhdGFVcmxQcmVmaXgpXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB4ICs9IDM3O1xuICAgICAgICBjb25zdCB4MCA9IHg7XG4gICAgICAgIHggPSAoMCwgdXRpbF8xLmZpbmRFbmRpbmdRdW90ZSkodTgsIHgpO1xuICAgICAgICByZWFkZXIueCA9IHgwO1xuICAgICAgICBjb25zdCBiaW4gPSAoMCwgZnJvbUJhc2U2NEJpbl8xLmZyb21CYXNlNjRCaW4pKHJlYWRlci52aWV3LCB4MCwgeCAtIHgwKTtcbiAgICAgICAgcmVhZGVyLnggPSB4ICsgMTtcbiAgICAgICAgcmV0dXJuIGJpbjtcbiAgICB9XG4gICAgcmVhZEJpbigpIHtcbiAgICAgICAgY29uc3QgcmVhZGVyID0gdGhpcy5yZWFkZXI7XG4gICAgICAgIGNvbnN0IHU4ID0gcmVhZGVyLnVpbnQ4O1xuICAgICAgICBsZXQgeCA9IHJlYWRlci54O1xuICAgICAgICBpZiAodThbeCsrXSAhPT0gMHgyMilcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKU09OJyk7XG4gICAgICAgIGNvbnN0IGhhc0RhdGFVcmxQcmVmaXggPSBoYXNCaW5hcnlQcmVmaXgodTgsIHgpO1xuICAgICAgICBpZiAoIWhhc0RhdGFVcmxQcmVmaXgpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSlNPTicpO1xuICAgICAgICB4ICs9IDM3O1xuICAgICAgICBjb25zdCB4MCA9IHg7XG4gICAgICAgIHggPSAoMCwgdXRpbF8xLmZpbmRFbmRpbmdRdW90ZSkodTgsIHgpO1xuICAgICAgICByZWFkZXIueCA9IHgwO1xuICAgICAgICBjb25zdCBiaW4gPSAoMCwgZnJvbUJhc2U2NEJpbl8xLmZyb21CYXNlNjRCaW4pKHJlYWRlci52aWV3LCB4MCwgeCAtIHgwKTtcbiAgICAgICAgcmVhZGVyLnggPSB4ICsgMTtcbiAgICAgICAgcmV0dXJuIGJpbjtcbiAgICB9XG4gICAgcmVhZEFycigpIHtcbiAgICAgICAgY29uc3QgcmVhZGVyID0gdGhpcy5yZWFkZXI7XG4gICAgICAgIGlmIChyZWFkZXIudTgoKSAhPT0gMHg1YiAvKiBbICovKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEpTT04nKTtcbiAgICAgICAgY29uc3QgYXJyID0gW107XG4gICAgICAgIGNvbnN0IHVpbnQ4ID0gcmVhZGVyLnVpbnQ4O1xuICAgICAgICBsZXQgZmlyc3QgPSB0cnVlO1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgdGhpcy5za2lwV2hpdGVzcGFjZSgpO1xuICAgICAgICAgICAgY29uc3QgY2hhciA9IHVpbnQ4W3JlYWRlci54XTtcbiAgICAgICAgICAgIGlmIChjaGFyID09PSAweDVkIC8qIF0gKi8pXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlYWRlci54KyssIGFycjtcbiAgICAgICAgICAgIGlmIChjaGFyID09PSAweDJjIC8qICwgKi8pXG4gICAgICAgICAgICAgICAgcmVhZGVyLngrKztcbiAgICAgICAgICAgIGVsc2UgaWYgKCFmaXJzdClcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSlNPTicpO1xuICAgICAgICAgICAgdGhpcy5za2lwV2hpdGVzcGFjZSgpO1xuICAgICAgICAgICAgYXJyLnB1c2godGhpcy5yZWFkQW55KCkpO1xuICAgICAgICAgICAgZmlyc3QgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWFkT2JqKCkge1xuICAgICAgICBjb25zdCByZWFkZXIgPSB0aGlzLnJlYWRlcjtcbiAgICAgICAgaWYgKHJlYWRlci51OCgpICE9PSAweDdiIC8qIHsgKi8pXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSlNPTicpO1xuICAgICAgICBjb25zdCBvYmogPSB7fTtcbiAgICAgICAgY29uc3QgdWludDggPSByZWFkZXIudWludDg7XG4gICAgICAgIGxldCBmaXJzdCA9IHRydWU7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICB0aGlzLnNraXBXaGl0ZXNwYWNlKCk7XG4gICAgICAgICAgICBsZXQgY2hhciA9IHVpbnQ4W3JlYWRlci54XTtcbiAgICAgICAgICAgIGlmIChjaGFyID09PSAweDdkIC8qIH0gKi8pXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlYWRlci54KyssIG9iajtcbiAgICAgICAgICAgIGlmIChjaGFyID09PSAweDJjIC8qICwgKi8pXG4gICAgICAgICAgICAgICAgcmVhZGVyLngrKztcbiAgICAgICAgICAgIGVsc2UgaWYgKCFmaXJzdClcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSlNPTicpO1xuICAgICAgICAgICAgdGhpcy5za2lwV2hpdGVzcGFjZSgpO1xuICAgICAgICAgICAgY2hhciA9IHVpbnQ4W3JlYWRlci54KytdO1xuICAgICAgICAgICAgaWYgKGNoYXIgIT09IDB4MjIgLyogXCIgKi8pXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEpTT04nKTtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9ICgwLCBleHBvcnRzLnJlYWRLZXkpKHJlYWRlcik7XG4gICAgICAgICAgICBpZiAoa2V5ID09PSAnX19wcm90b19fJylcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSlNPTicpO1xuICAgICAgICAgICAgdGhpcy5za2lwV2hpdGVzcGFjZSgpO1xuICAgICAgICAgICAgaWYgKHJlYWRlci51OCgpICE9PSAweDNhIC8qIDogKi8pXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEpTT04nKTtcbiAgICAgICAgICAgIHRoaXMuc2tpcFdoaXRlc3BhY2UoKTtcbiAgICAgICAgICAgIG9ialtrZXldID0gdGhpcy5yZWFkQW55KCk7XG4gICAgICAgICAgICBmaXJzdCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5Kc29uRGVjb2RlciA9IEpzb25EZWNvZGVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SnNvbkRlY29kZXIuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmZyb21Kc29uU25hcHNob3QgPSBleHBvcnRzLnRvSnNvblNuYXBzaG90ID0gZXhwb3J0cy5mcm9tSnNvblNuYXBzaG90U3luYyA9IGV4cG9ydHMudG9Kc29uU25hcHNob3RTeW5jID0gdm9pZCAwO1xuY29uc3QgSnNvbkVuY29kZXJfMSA9IHJlcXVpcmUoXCJAanNvbmpveS5jb20vanNvbi1wYWNrL2xpYi9qc29uL0pzb25FbmNvZGVyXCIpO1xuY29uc3QgSnNvbkRlY29kZXJfMSA9IHJlcXVpcmUoXCJAanNvbmpveS5jb20vanNvbi1wYWNrL2xpYi9qc29uL0pzb25EZWNvZGVyXCIpO1xuY29uc3Qgc3luY18xID0gcmVxdWlyZShcIi4vc3luY1wiKTtcbmNvbnN0IGFzeW5jXzEgPSByZXF1aXJlKFwiLi9hc3luY1wiKTtcbmNvbnN0IHNoYXJlZF8xID0gcmVxdWlyZShcIi4vc2hhcmVkXCIpO1xuY29uc3QgZW5jb2RlciA9IG5ldyBKc29uRW5jb2Rlcl8xLkpzb25FbmNvZGVyKHNoYXJlZF8xLndyaXRlcik7XG5jb25zdCBkZWNvZGVyID0gbmV3IEpzb25EZWNvZGVyXzEuSnNvbkRlY29kZXIoKTtcbmNvbnN0IHRvSnNvblNuYXBzaG90U3luYyA9IChvcHRpb25zKSA9PiB7XG4gICAgY29uc3Qgc25hcHNob3QgPSAoMCwgc3luY18xLnRvU25hcHNob3RTeW5jKShvcHRpb25zKTtcbiAgICByZXR1cm4gZW5jb2Rlci5lbmNvZGUoc25hcHNob3QpO1xufTtcbmV4cG9ydHMudG9Kc29uU25hcHNob3RTeW5jID0gdG9Kc29uU25hcHNob3RTeW5jO1xuY29uc3QgZnJvbUpzb25TbmFwc2hvdFN5bmMgPSAodWludDgsIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBzbmFwc2hvdCA9IGRlY29kZXIucmVhZCh1aW50OCk7XG4gICAgKDAsIHN5bmNfMS5mcm9tU25hcHNob3RTeW5jKShzbmFwc2hvdCwgb3B0aW9ucyk7XG59O1xuZXhwb3J0cy5mcm9tSnNvblNuYXBzaG90U3luYyA9IGZyb21Kc29uU25hcHNob3RTeW5jO1xuY29uc3QgdG9Kc29uU25hcHNob3QgPSBhc3luYyAob3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IHNuYXBzaG90ID0gYXdhaXQgKDAsIGFzeW5jXzEudG9TbmFwc2hvdCkob3B0aW9ucyk7XG4gICAgcmV0dXJuIGVuY29kZXIuZW5jb2RlKHNuYXBzaG90KTtcbn07XG5leHBvcnRzLnRvSnNvblNuYXBzaG90ID0gdG9Kc29uU25hcHNob3Q7XG5jb25zdCBmcm9tSnNvblNuYXBzaG90ID0gYXN5bmMgKHVpbnQ4LCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3Qgc25hcHNob3QgPSBkZWNvZGVyLnJlYWQodWludDgpO1xuICAgIGF3YWl0ICgwLCBhc3luY18xLmZyb21TbmFwc2hvdCkoc25hcHNob3QsIG9wdGlvbnMpO1xufTtcbmV4cG9ydHMuZnJvbUpzb25TbmFwc2hvdCA9IGZyb21Kc29uU25hcHNob3Q7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1qc29uLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuY29uc3QgdHNsaWJfMSA9IHJlcXVpcmUoXCJ0c2xpYlwiKTtcbnRzbGliXzEuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL2NvbnN0YW50c1wiKSwgZXhwb3J0cyk7XG50c2xpYl8xLl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9zeW5jXCIpLCBleHBvcnRzKTtcbnRzbGliXzEuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL2JpbmFyeVwiKSwgZXhwb3J0cyk7XG50c2xpYl8xLl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9qc29uXCIpLCBleHBvcnRzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5nZXRXcml0ZUZpbGVPcHRpb25zID0gZXhwb3J0cy53cml0ZUZpbGVEZWZhdWx0cyA9IGV4cG9ydHMuZ2V0UmVhbHBhdGhPcHRzQW5kQ2IgPSBleHBvcnRzLmdldFJlYWxwYXRoT3B0aW9ucyA9IGV4cG9ydHMuZ2V0U3RhdGZzT3B0c0FuZENiID0gZXhwb3J0cy5nZXRTdGF0ZnNPcHRpb25zID0gZXhwb3J0cy5nZXRTdGF0T3B0c0FuZENiID0gZXhwb3J0cy5nZXRTdGF0T3B0aW9ucyA9IGV4cG9ydHMuZ2V0QXBwZW5kRmlsZU9wdHNBbmRDYiA9IGV4cG9ydHMuZ2V0QXBwZW5kRmlsZU9wdHMgPSBleHBvcnRzLmdldE9wZW5kaXJPcHRzQW5kQ2IgPSBleHBvcnRzLmdldE9wZW5kaXJPcHRpb25zID0gZXhwb3J0cy5nZXRSZWFkZGlyT3B0c0FuZENiID0gZXhwb3J0cy5nZXRSZWFkZGlyT3B0aW9ucyA9IGV4cG9ydHMuZ2V0UmVhZEZpbGVPcHRpb25zID0gZXhwb3J0cy5nZXRSbU9wdHNBbmRDYiA9IGV4cG9ydHMuZ2V0Um1kaXJPcHRpb25zID0gZXhwb3J0cy5nZXREZWZhdWx0T3B0c0FuZENiID0gZXhwb3J0cy5nZXREZWZhdWx0T3B0cyA9IGV4cG9ydHMub3B0c0RlZmF1bHRzID0gZXhwb3J0cy5nZXRNa2Rpck9wdGlvbnMgPSB2b2lkIDA7XG5leHBvcnRzLmdldE9wdGlvbnMgPSBnZXRPcHRpb25zO1xuZXhwb3J0cy5vcHRzR2VuZXJhdG9yID0gb3B0c0dlbmVyYXRvcjtcbmV4cG9ydHMub3B0c0FuZENiR2VuZXJhdG9yID0gb3B0c0FuZENiR2VuZXJhdG9yO1xuY29uc3QgZnNfbm9kZV91dGlsc18xID0gcmVxdWlyZShcIkBqc29uam95LmNvbS9mcy1ub2RlLXV0aWxzXCIpO1xuY29uc3QgdXRpbF8xID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcbmNvbnN0IG1rZGlyRGVmYXVsdHMgPSB7XG4gICAgbW9kZTogNTExIC8qIE1PREUuRElSICovLFxuICAgIHJlY3Vyc2l2ZTogZmFsc2UsXG59O1xuY29uc3QgZ2V0TWtkaXJPcHRpb25zID0gKG9wdGlvbnMpID0+IHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdudW1iZXInKVxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgbWtkaXJEZWZhdWx0cywgeyBtb2RlOiBvcHRpb25zIH0pO1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBta2RpckRlZmF1bHRzLCBvcHRpb25zKTtcbn07XG5leHBvcnRzLmdldE1rZGlyT3B0aW9ucyA9IGdldE1rZGlyT3B0aW9ucztcbmNvbnN0IEVSUlNUUl9PUFRTID0gdGlwZW9mID0+IGBFeHBlY3RlZCBvcHRpb25zIHRvIGJlIGVpdGhlciBhbiBvYmplY3Qgb3IgYSBzdHJpbmcsIGJ1dCBnb3QgJHt0aXBlb2Z9IGluc3RlYWRgO1xuZnVuY3Rpb24gZ2V0T3B0aW9ucyhkZWZhdWx0cywgb3B0aW9ucykge1xuICAgIGxldCBvcHRzO1xuICAgIGlmICghb3B0aW9ucylcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRzO1xuICAgIGVsc2Uge1xuICAgICAgICBjb25zdCB0aXBlb2YgPSB0eXBlb2Ygb3B0aW9ucztcbiAgICAgICAgc3dpdGNoICh0aXBlb2YpIHtcbiAgICAgICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICAgICAgb3B0cyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRzLCB7IGVuY29kaW5nOiBvcHRpb25zIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgICAgICAgICBvcHRzID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdHMsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoRVJSU1RSX09QVFModGlwZW9mKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKG9wdHMuZW5jb2RpbmcgIT09ICdidWZmZXInKVxuICAgICAgICAoMCwgZnNfbm9kZV91dGlsc18xLmFzc2VydEVuY29kaW5nKShvcHRzLmVuY29kaW5nKTtcbiAgICByZXR1cm4gb3B0cztcbn1cbmZ1bmN0aW9uIG9wdHNHZW5lcmF0b3IoZGVmYXVsdHMpIHtcbiAgICByZXR1cm4gb3B0aW9ucyA9PiBnZXRPcHRpb25zKGRlZmF1bHRzLCBvcHRpb25zKTtcbn1cbmZ1bmN0aW9uIG9wdHNBbmRDYkdlbmVyYXRvcihnZXRPcHRzKSB7XG4gICAgcmV0dXJuIChvcHRpb25zLCBjYWxsYmFjaykgPT4gdHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicgPyBbZ2V0T3B0cygpLCBvcHRpb25zXSA6IFtnZXRPcHRzKG9wdGlvbnMpLCAoMCwgdXRpbF8xLnZhbGlkYXRlQ2FsbGJhY2spKGNhbGxiYWNrKV07XG59XG5leHBvcnRzLm9wdHNEZWZhdWx0cyA9IHtcbiAgICBlbmNvZGluZzogJ3V0ZjgnLFxufTtcbmV4cG9ydHMuZ2V0RGVmYXVsdE9wdHMgPSBvcHRzR2VuZXJhdG9yKGV4cG9ydHMub3B0c0RlZmF1bHRzKTtcbmV4cG9ydHMuZ2V0RGVmYXVsdE9wdHNBbmRDYiA9IG9wdHNBbmRDYkdlbmVyYXRvcihleHBvcnRzLmdldERlZmF1bHRPcHRzKTtcbmNvbnN0IHJtZGlyRGVmYXVsdHMgPSB7XG4gICAgcmVjdXJzaXZlOiBmYWxzZSxcbn07XG5jb25zdCBnZXRSbWRpck9wdGlvbnMgPSAob3B0aW9ucykgPT4ge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBybWRpckRlZmF1bHRzLCBvcHRpb25zKTtcbn07XG5leHBvcnRzLmdldFJtZGlyT3B0aW9ucyA9IGdldFJtZGlyT3B0aW9ucztcbmNvbnN0IGdldFJtT3B0cyA9IG9wdHNHZW5lcmF0b3IoZXhwb3J0cy5vcHRzRGVmYXVsdHMpO1xuZXhwb3J0cy5nZXRSbU9wdHNBbmRDYiA9IG9wdHNBbmRDYkdlbmVyYXRvcihnZXRSbU9wdHMpO1xuY29uc3QgcmVhZEZpbGVPcHRzRGVmYXVsdHMgPSB7XG4gICAgZmxhZzogJ3InLFxufTtcbmV4cG9ydHMuZ2V0UmVhZEZpbGVPcHRpb25zID0gb3B0c0dlbmVyYXRvcihyZWFkRmlsZU9wdHNEZWZhdWx0cyk7XG5jb25zdCByZWFkZGlyRGVmYXVsdHMgPSB7XG4gICAgZW5jb2Rpbmc6ICd1dGY4JyxcbiAgICByZWN1cnNpdmU6IGZhbHNlLFxuICAgIHdpdGhGaWxlVHlwZXM6IGZhbHNlLFxufTtcbmV4cG9ydHMuZ2V0UmVhZGRpck9wdGlvbnMgPSBvcHRzR2VuZXJhdG9yKHJlYWRkaXJEZWZhdWx0cyk7XG5leHBvcnRzLmdldFJlYWRkaXJPcHRzQW5kQ2IgPSBvcHRzQW5kQ2JHZW5lcmF0b3IoZXhwb3J0cy5nZXRSZWFkZGlyT3B0aW9ucyk7XG5jb25zdCBvcGVuZGlyRGVmYXVsdHMgPSB7XG4gICAgZW5jb2Rpbmc6ICd1dGY4JyxcbiAgICBidWZmZXJTaXplOiAzMixcbiAgICByZWN1cnNpdmU6IGZhbHNlLFxufTtcbmV4cG9ydHMuZ2V0T3BlbmRpck9wdGlvbnMgPSBvcHRzR2VuZXJhdG9yKG9wZW5kaXJEZWZhdWx0cyk7XG5leHBvcnRzLmdldE9wZW5kaXJPcHRzQW5kQ2IgPSBvcHRzQW5kQ2JHZW5lcmF0b3IoZXhwb3J0cy5nZXRPcGVuZGlyT3B0aW9ucyk7XG5jb25zdCBhcHBlbmRGaWxlRGVmYXVsdHMgPSB7XG4gICAgZW5jb2Rpbmc6ICd1dGY4JyxcbiAgICBtb2RlOiA0MzggLyogTU9ERS5ERUZBVUxUICovLFxuICAgIGZsYWc6IGZzX25vZGVfdXRpbHNfMS5GTEFHU1tmc19ub2RlX3V0aWxzXzEuRkxBR1MuYV0sXG59O1xuZXhwb3J0cy5nZXRBcHBlbmRGaWxlT3B0cyA9IG9wdHNHZW5lcmF0b3IoYXBwZW5kRmlsZURlZmF1bHRzKTtcbmV4cG9ydHMuZ2V0QXBwZW5kRmlsZU9wdHNBbmRDYiA9IG9wdHNBbmRDYkdlbmVyYXRvcihleHBvcnRzLmdldEFwcGVuZEZpbGVPcHRzKTtcbmNvbnN0IHN0YXREZWZhdWx0cyA9IHtcbiAgICBiaWdpbnQ6IGZhbHNlLFxufTtcbmNvbnN0IGdldFN0YXRPcHRpb25zID0gKG9wdGlvbnMgPSB7fSkgPT4gT2JqZWN0LmFzc2lnbih7fSwgc3RhdERlZmF1bHRzLCBvcHRpb25zKTtcbmV4cG9ydHMuZ2V0U3RhdE9wdGlvbnMgPSBnZXRTdGF0T3B0aW9ucztcbmNvbnN0IGdldFN0YXRPcHRzQW5kQ2IgPSAob3B0aW9ucywgY2FsbGJhY2spID0+IHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nID8gWygwLCBleHBvcnRzLmdldFN0YXRPcHRpb25zKSgpLCBvcHRpb25zXSA6IFsoMCwgZXhwb3J0cy5nZXRTdGF0T3B0aW9ucykob3B0aW9ucyksICgwLCB1dGlsXzEudmFsaWRhdGVDYWxsYmFjaykoY2FsbGJhY2spXTtcbmV4cG9ydHMuZ2V0U3RhdE9wdHNBbmRDYiA9IGdldFN0YXRPcHRzQW5kQ2I7XG5jb25zdCBzdGF0ZnNEZWZhdWx0cyA9IHtcbiAgICBiaWdpbnQ6IGZhbHNlLFxufTtcbmNvbnN0IGdldFN0YXRmc09wdGlvbnMgPSAob3B0aW9ucyA9IHt9KSA9PiBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZnNEZWZhdWx0cywgb3B0aW9ucyk7XG5leHBvcnRzLmdldFN0YXRmc09wdGlvbnMgPSBnZXRTdGF0ZnNPcHRpb25zO1xuY29uc3QgZ2V0U3RhdGZzT3B0c0FuZENiID0gKG9wdGlvbnMsIGNhbGxiYWNrKSA9PiB0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJ1xuICAgID8gWygwLCBleHBvcnRzLmdldFN0YXRmc09wdGlvbnMpKCksIG9wdGlvbnNdXG4gICAgOiBbKDAsIGV4cG9ydHMuZ2V0U3RhdGZzT3B0aW9ucykob3B0aW9ucyksICgwLCB1dGlsXzEudmFsaWRhdGVDYWxsYmFjaykoY2FsbGJhY2spXTtcbmV4cG9ydHMuZ2V0U3RhdGZzT3B0c0FuZENiID0gZ2V0U3RhdGZzT3B0c0FuZENiO1xuY29uc3QgcmVhbHBhdGhEZWZhdWx0cyA9IGV4cG9ydHMub3B0c0RlZmF1bHRzO1xuZXhwb3J0cy5nZXRSZWFscGF0aE9wdGlvbnMgPSBvcHRzR2VuZXJhdG9yKHJlYWxwYXRoRGVmYXVsdHMpO1xuZXhwb3J0cy5nZXRSZWFscGF0aE9wdHNBbmRDYiA9IG9wdHNBbmRDYkdlbmVyYXRvcihleHBvcnRzLmdldFJlYWxwYXRoT3B0aW9ucyk7XG5leHBvcnRzLndyaXRlRmlsZURlZmF1bHRzID0ge1xuICAgIGVuY29kaW5nOiAndXRmOCcsXG4gICAgbW9kZTogNDM4IC8qIE1PREUuREVGQVVMVCAqLyxcbiAgICBmbGFnOiBmc19ub2RlX3V0aWxzXzEuRkxBR1NbZnNfbm9kZV91dGlsc18xLkZMQUdTLnddLFxufTtcbmV4cG9ydHMuZ2V0V3JpdGVGaWxlT3B0aW9ucyA9IG9wdHNHZW5lcmF0b3IoZXhwb3J0cy53cml0ZUZpbGVEZWZhdWx0cyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1vcHRpb25zLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5EaXIgPSB2b2lkIDA7XG5jb25zdCB1dGlsXzEgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xuY29uc3QgRGlyZW50XzEgPSByZXF1aXJlKFwiLi9EaXJlbnRcIik7XG5jb25zdCBlcnJvcnMgPSByZXF1aXJlKFwiQGpzb25qb3kuY29tL2ZzLW5vZGUtYnVpbHRpbnMvbGliL2ludGVybmFsL2Vycm9yc1wiKTtcbi8qKlxuICogQSBkaXJlY3Rvcnkgc3RyZWFtLCBsaWtlIGBmcy5EaXJgLlxuICovXG5jbGFzcyBEaXIge1xuICAgIGNvbnN0cnVjdG9yKGxpbmssIG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5saW5rID0gbGluaztcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICAgICAgdGhpcy5pdGVyYXRvckluZm8gPSBbXTtcbiAgICAgICAgdGhpcy5jbG9zZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vcGVyYXRpb25RdWV1ZSA9IG51bGw7XG4gICAgICAgIHRoaXMucGF0aCA9IGxpbmsuZ2V0UGF0aCgpO1xuICAgICAgICB0aGlzLml0ZXJhdG9ySW5mby5wdXNoKGxpbmsuY2hpbGRyZW5bU3ltYm9sLml0ZXJhdG9yXSgpKTtcbiAgICB9XG4gICAgY2xvc2VCYXNlKCkge1xuICAgICAgICAvLyBJbiBhIHJlYWwgZmlsZXN5c3RlbSBpbXBsZW1lbnRhdGlvbiwgdGhpcyB3b3VsZCBjbG9zZSBmaWxlIGRlc2NyaXB0b3JzXG4gICAgICAgIC8vIEZvciBtZW1mcywgd2UganVzdCBuZWVkIHRvIG1hcmsgYXMgY2xvc2VkXG4gICAgfVxuICAgIHJlYWRCYXNlKGl0ZXJhdG9ySW5mbykge1xuICAgICAgICBsZXQgZG9uZTtcbiAgICAgICAgbGV0IHZhbHVlO1xuICAgICAgICBsZXQgbmFtZTtcbiAgICAgICAgbGV0IGxpbms7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAoeyBkb25lLCB2YWx1ZSB9ID0gaXRlcmF0b3JJbmZvW2l0ZXJhdG9ySW5mby5sZW5ndGggLSAxXS5uZXh0KCkpO1xuICAgICAgICAgICAgICAgIGlmICghZG9uZSkge1xuICAgICAgICAgICAgICAgICAgICBbbmFtZSwgbGlua10gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gd2hpbGUgKG5hbWUgPT09ICcuJyB8fCBuYW1lID09PSAnLi4nKTtcbiAgICAgICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgICAgICAgaXRlcmF0b3JJbmZvLnBvcCgpO1xuICAgICAgICAgICAgICAgIGlmIChpdGVyYXRvckluZm8ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZG9uZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmVjdXJzaXZlICYmIGxpbmsuY2hpbGRyZW4uc2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICBpdGVyYXRvckluZm8ucHVzaChsaW5rLmNoaWxkcmVuW1N5bWJvbC5pdGVyYXRvcl0oKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBEaXJlbnRfMS5kZWZhdWx0LmJ1aWxkKGxpbmssIHRoaXMub3B0aW9ucy5lbmNvZGluZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gd2hpbGUgKCFkb25lKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNsb3NlKGNhbGxiYWNrKSB7XG4gICAgICAgIC8vIFByb21pc2UtYmFzZWQgY2xvc2VcbiAgICAgICAgaWYgKGNhbGxiYWNrID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgZXJyb3JzLkVycm9yKCdFUlJfRElSX0NMT1NFRCcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZShlcnIgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIENhbGxiYWNrLWJhc2VkIGNsb3NlXG4gICAgICAgICgwLCB1dGlsXzEudmFsaWRhdGVDYWxsYmFjaykoY2FsbGJhY2spO1xuICAgICAgICBpZiAodGhpcy5jbG9zZWQpIHtcbiAgICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soY2FsbGJhY2ssIG5ldyBlcnJvcnMuRXJyb3IoJ0VSUl9ESVJfQ0xPU0VEJykpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9wZXJhdGlvblF1ZXVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLm9wZXJhdGlvblF1ZXVlLnB1c2goKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoY2FsbGJhY2spO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jbG9zZWQgPSB0cnVlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZUJhc2UoKTtcbiAgICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soY2FsbGJhY2ssIGVycik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2xvc2VTeW5jKCkge1xuICAgICAgICBpZiAodGhpcy5jbG9zZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBlcnJvcnMuRXJyb3IoJ0VSUl9ESVJfQ0xPU0VEJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub3BlcmF0aW9uUXVldWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBlcnJvcnMuRXJyb3IoJ0VSUl9ESVJfQ09OQ1VSUkVOVF9PUEVSQVRJT04nKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNsb3NlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuY2xvc2VCYXNlKCk7XG4gICAgfVxuICAgIHJlYWQoY2FsbGJhY2spIHtcbiAgICAgICAgLy8gUHJvbWlzZS1iYXNlZCByZWFkXG4gICAgICAgIGlmIChjYWxsYmFjayA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVhZCgoZXJyLCByZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycilcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCA/PyBudWxsKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIENhbGxiYWNrLWJhc2VkIHJlYWRcbiAgICAgICAgKDAsIHV0aWxfMS52YWxpZGF0ZUNhbGxiYWNrKShjYWxsYmFjayk7XG4gICAgICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhjYWxsYmFjaywgbmV3IGVycm9ycy5FcnJvcignRVJSX0RJUl9DTE9TRUQnKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub3BlcmF0aW9uUXVldWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMub3BlcmF0aW9uUXVldWUucHVzaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWFkKGNhbGxiYWNrKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3BlcmF0aW9uUXVldWUgPSBbXTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMucmVhZEJhc2UodGhpcy5pdGVyYXRvckluZm8pO1xuICAgICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcXVldWUgPSB0aGlzLm9wZXJhdGlvblF1ZXVlO1xuICAgICAgICAgICAgICAgIHRoaXMub3BlcmF0aW9uUXVldWUgPSBudWxsO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgb3Agb2YgcXVldWUpXG4gICAgICAgICAgICAgICAgICAgIG9wKCk7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgcmVzdWx0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHF1ZXVlID0gdGhpcy5vcGVyYXRpb25RdWV1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZXJhdGlvblF1ZXVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG9wIG9mIHF1ZXVlKVxuICAgICAgICAgICAgICAgICAgICBvcCgpO1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWFkU3luYygpIHtcbiAgICAgICAgaWYgKHRoaXMuY2xvc2VkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgZXJyb3JzLkVycm9yKCdFUlJfRElSX0NMT1NFRCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9wZXJhdGlvblF1ZXVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgZXJyb3JzLkVycm9yKCdFUlJfRElSX0NPTkNVUlJFTlRfT1BFUkFUSU9OJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZEJhc2UodGhpcy5pdGVyYXRvckluZm8pO1xuICAgIH1cbiAgICBbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmV4dDogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpckVudCA9IGF3YWl0IHRoaXMucmVhZCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGlyRW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBkb25lOiBmYWxzZSwgdmFsdWU6IGRpckVudCB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSwgdmFsdWU6IHVuZGVmaW5lZCB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgW1N5bWJvbC5hc3luY0Rpc3Bvc2VdKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgICBbU3ltYm9sLmRpc3Bvc2VdKCkge1xuICAgICAgICB0aGlzLmNsb3NlU3luYygpO1xuICAgIH1cbn1cbmV4cG9ydHMuRGlyID0gRGlyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGlyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy50b01hdGNoZXIgPSBleHBvcnRzLnRvUmVnZXggPSB2b2lkIDA7XG5jb25zdCBlc2NhcGVSZSA9IChjaCkgPT4gKC9bLl4kK3t9KCl8XFxcXF0vLnRlc3QoY2gpID8gYFxcXFwke2NofWAgOiBjaCk7XG4vKipcbiAqIFBhcnNlIGFuIGV4dGVuZGVkIGdsb2IgcGF0dGVybiBsaWtlID8oYXxifGMpXG4gKiBSZXR1cm5zIHRoZSByZWdleCBzdHJpbmcgZXF1aXZhbGVudCBhbmQgdGhlIG5ldyBpbmRleCBwb3NpdGlvblxuICovXG5jb25zdCBwYXJzZUV4dEdsb2IgPSAocGF0dGVybiwgc3RhcnRJZHgsIHByZWZpeCwgb3B0aW9ucykgPT4ge1xuICAgIGxldCBpID0gc3RhcnRJZHg7IC8vIHN0YXJ0SWR4IHNob3VsZCBiZSBwb2ludGluZyBhdCB0aGUgY2hhcmFjdGVyIGFmdGVyICcoJ1xuICAgIGNvbnN0IHBhcnRzID0gW107XG4gICAgbGV0IGN1ciA9ICcnO1xuICAgIGxldCBkZXB0aCA9IDE7IC8vIFRyYWNrIHBhcmVudGhlc2lzIGRlcHRoIGZvciBuZXN0ZWQgcGF0dGVybnNcbiAgICB3aGlsZSAoaSA8IHBhdHRlcm4ubGVuZ3RoICYmIGRlcHRoID4gMCkge1xuICAgICAgICBjb25zdCBjaCA9IHBhdHRlcm5baV07XG4gICAgICAgIGlmIChjaCA9PT0gJygnKSB7XG4gICAgICAgICAgICBkZXB0aCsrO1xuICAgICAgICAgICAgY3VyICs9IGNoO1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNoID09PSAnKScpIHtcbiAgICAgICAgICAgIGRlcHRoLS07XG4gICAgICAgICAgICBpZiAoZGVwdGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAvLyBGb3VuZCB0aGUgY2xvc2luZyBwYXJlbnRoZXNpc1xuICAgICAgICAgICAgICAgIHBhcnRzLnB1c2goY3VyKTtcbiAgICAgICAgICAgICAgICBpKys7IC8vIGNvbnN1bWUgJyknXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjdXIgKz0gY2g7XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNoID09PSAnfCcgJiYgZGVwdGggPT09IDEpIHtcbiAgICAgICAgICAgIC8vIFBpcGUgc2VwYXJhdG9yIGF0IHRvcCBsZXZlbCBvZiB0aGlzIGV4dGdsb2JcbiAgICAgICAgICAgIHBhcnRzLnB1c2goY3VyKTtcbiAgICAgICAgICAgIGN1ciA9ICcnO1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY3VyICs9IGNoO1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChkZXB0aCAhPT0gMClcbiAgICAgICAgcmV0dXJuOyAvLyBVbmNsb3NlZCBwYXJlbnRoZXNpc1xuICAgIGxldCBhbHRlcm5hdGl2ZXMgPSAnJztcbiAgICBjb25zdCBsZW5ndGggPSBwYXJ0cy5sZW5ndGg7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBsZW5ndGg7IGorKylcbiAgICAgICAgYWx0ZXJuYXRpdmVzICs9IChhbHRlcm5hdGl2ZXMgPyAnfCcgOiAnJykgKyAoMCwgZXhwb3J0cy50b1JlZ2V4KShwYXJ0c1tqXSwgb3B0aW9ucykuc291cmNlLnJlcGxhY2UoL15cXF4vLCAnJykucmVwbGFjZSgvXFwkJC8sICcnKTtcbiAgICBzd2l0Y2ggKHByZWZpeCkge1xuICAgICAgICBjYXNlICc/JzogLy8gemVybyBvciBvbmVcbiAgICAgICAgICAgIHJldHVybiBbYCg/OiR7YWx0ZXJuYXRpdmVzfSk/YCwgaV07XG4gICAgICAgIGNhc2UgJyonOiAvLyB6ZXJvIG9yIG1vcmVcbiAgICAgICAgICAgIHJldHVybiBbYCg/OiR7YWx0ZXJuYXRpdmVzfSkqYCwgaV07XG4gICAgICAgIGNhc2UgJysnOiAvLyBvbmUgb3IgbW9yZVxuICAgICAgICAgICAgcmV0dXJuIFtgKD86JHthbHRlcm5hdGl2ZXN9KStgLCBpXTtcbiAgICAgICAgY2FzZSAnQCc6IC8vIGV4YWN0bHkgb25lXG4gICAgICAgICAgICByZXR1cm4gW2AoPzoke2FsdGVybmF0aXZlc30pYCwgaV07XG4gICAgICAgIGNhc2UgJyEnOiAvLyBub25lIG9mIChuZWdhdGl2ZSBtYXRjaClcbiAgICAgICAgICAgIC8vIEZvciBuZWdhdGlvbiwgd2UgbmVlZCB0byBtYXRjaCBhbnl0aGluZyB0aGF0IGRvZXNuJ3QgbWF0Y2ggdGhlIHBhdHRlcm5cbiAgICAgICAgICAgIC8vIFVzZSBuZWdhdGl2ZSBsb29rYWhlYWQgd2l0aG91dCBjb25zdW1pbmcgY2hhcmFjdGVycyBhZnRlclxuICAgICAgICAgICAgcmV0dXJuIFtgKD8hJHthbHRlcm5hdGl2ZXN9KVteL10qYCwgaV07XG4gICAgfVxuICAgIHJldHVybjtcbn07XG4vKipcbiAqIENvbnZlcnQgYSBnbG9iIHBhdHRlcm4gdG8gYSByZWd1bGFyIGV4cHJlc3Npb25cbiAqXG4gKiBTdXBwb3J0czpcbiAqIC0gYC9gIHRvIHNlcGFyYXRlIHBhdGggc2VnbWVudHNcbiAqIC0gYCpgIHRvIG1hdGNoIHplcm8gb3IgbW9yZSBjaGFyYWN0ZXJzIGluIGEgcGF0aCBzZWdtZW50XG4gKiAtIGA/YCB0byBtYXRjaCBvbmUgY2hhcmFjdGVyIGluIGEgcGF0aCBzZWdtZW50XG4gKiAtIGAqKmAgdG8gbWF0Y2ggYW55IG51bWJlciBvZiBwYXRoIHNlZ21lbnRzLCBpbmNsdWRpbmcgbm9uZVxuICogLSBge31gIHRvIGdyb3VwIGNvbmRpdGlvbnMgKGUuZy4gYHtodG1sLHR4dH1gKVxuICogLSBgW2FiY11gLCBgW2Etel1gLCBgWyFhLXpdYCwgYFshYWJjXWAgY2hhcmFjdGVyIGNsYXNzZXNcbiAqIC0gRXh0ZW5kZWQgZ2xvYmJpbmcgKHdoZW4gYGV4dGdsb2I6IHRydWVgIG9wdGlvbiBpcyBzZXQpOlxuICogICAtIGA/KHBhdHRlcm4tbGlzdClgIHplcm8gb3Igb25lIG9jY3VycmVuY2VcbiAqICAgLSBgKihwYXR0ZXJuLWxpc3QpYCB6ZXJvIG9yIG1vcmUgb2NjdXJyZW5jZXNcbiAqICAgLSBgKyhwYXR0ZXJuLWxpc3QpYCBvbmUgb3IgbW9yZSBvY2N1cnJlbmNlc1xuICogICAtIGBAKHBhdHRlcm4tbGlzdClgIGV4YWN0bHkgb25lIG9mIHRoZSBwYXR0ZXJuc1xuICogICAtIGAhKHBhdHRlcm4tbGlzdClgIGFueXRoaW5nIGV4Y2VwdCB0aGUgcGF0dGVybnNcbiAqL1xuY29uc3QgdG9SZWdleCA9IChwYXR0ZXJuLCBvcHRpb25zKSA9PiB7XG4gICAgbGV0IHJlZ2V4U3RyID0gJyc7XG4gICAgbGV0IGkgPSAwO1xuICAgIC8vIEhlbHBlciB0byBwYXJzZSBhIGJyYWNlIGdyb3VwIGxpa2Uge2EsYixjfS4gTm8gbmVzdGluZyBzdXBwb3J0LlxuICAgIGNvbnN0IHBhcnNlQnJhY2VHcm91cCA9ICgpID0+IHtcbiAgICAgICAgLy8gQXNzdW1lIGN1cnJlbnQgY2hhciBpcyAneydcbiAgICAgICAgaSsrOyAvLyBza2lwICd7J1xuICAgICAgICBjb25zdCBwYXJ0cyA9IFtdO1xuICAgICAgICBsZXQgY3VyID0gJyc7XG4gICAgICAgIGxldCBjbG9zZWQgPSBmYWxzZTtcbiAgICAgICAgd2hpbGUgKGkgPCBwYXR0ZXJuLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgY2ggPSBwYXR0ZXJuW2ldO1xuICAgICAgICAgICAgaWYgKGNoID09PSAnfScpIHtcbiAgICAgICAgICAgICAgICBwYXJ0cy5wdXNoKGN1cik7XG4gICAgICAgICAgICAgICAgaSsrOyAvLyBjb25zdW1lICd9J1xuICAgICAgICAgICAgICAgIGNsb3NlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2ggPT09ICcsJykge1xuICAgICAgICAgICAgICAgIHBhcnRzLnB1c2goY3VyKTtcbiAgICAgICAgICAgICAgICBjdXIgPSAnJztcbiAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjdXIgKz0gY2g7XG4gICAgICAgICAgICBpKys7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjbG9zZWQpIHtcbiAgICAgICAgICAgIC8vIHRyZWF0IGFzIGxpdGVyYWwgJ3suLi4nXG4gICAgICAgICAgICByZXR1cm4gJ1xcXFx7JyArIGVzY2FwZVJlKGN1cik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ29udmVydCBlYWNoIHBhcnQgcmVjdXJzaXZlbHkgdG8gc3VwcG9ydCBnbG9icyBpbnNpZGUgYnJhY2VzXG4gICAgICAgIGNvbnN0IGFsdCA9IHBhcnRzLm1hcCgocCkgPT4gKDAsIGV4cG9ydHMudG9SZWdleCkocCwgb3B0aW9ucykuc291cmNlLnJlcGxhY2UoL15cXF4vLCAnJykucmVwbGFjZSgvXFwkJC8sICcnKSkuam9pbignfCcpO1xuICAgICAgICByZXR1cm4gYCg/OiR7YWx0fSlgO1xuICAgIH07XG4gICAgY29uc3QgZXh0Z2xvYiA9ICEhb3B0aW9ucz8uZXh0Z2xvYjtcbiAgICB3aGlsZSAoaSA8IHBhdHRlcm4ubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGNoYXIgPSBwYXR0ZXJuW2ldO1xuICAgICAgICAvLyBDaGVjayBmb3IgZXh0ZW5kZWQgZ2xvYiBwYXR0ZXJucyB3aGVuIGV4dGdsb2IgaXMgZW5hYmxlZFxuICAgICAgICBpZiAoZXh0Z2xvYiAmJiBwYXR0ZXJuW2kgKyAxXSA9PT0gJygnKSB7XG4gICAgICAgICAgICBpZiAoY2hhciA9PT0gJz8nIHx8IGNoYXIgPT09ICcqJyB8fCBjaGFyID09PSAnKycgfHwgY2hhciA9PT0gJ0AnIHx8IGNoYXIgPT09ICchJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHBhcnNlRXh0R2xvYihwYXR0ZXJuLCBpICsgMiwgY2hhciwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICByZWdleFN0ciArPSByZXN1bHRbMF07XG4gICAgICAgICAgICAgICAgICAgIGkgPSByZXN1bHRbMV07XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBJZiBwYXJzZSBmYWlsZWQsIGZhbGwgdGhyb3VnaCB0byBub3JtYWwgaGFuZGxpbmdcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKGNoYXIpIHtcbiAgICAgICAgICAgIGNhc2UgJyonOiB7XG4gICAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGRvdWJsZSBzdGFyICoqXG4gICAgICAgICAgICAgICAgaWYgKHBhdHRlcm5baSArIDFdID09PSAnKicpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ29sbGFwc2UgY29uc2VjdXRpdmUgKiBiZXlvbmQgdHdvIChlLmcuLCAqKiogLT4gKiopXG4gICAgICAgICAgICAgICAgICAgIGxldCBqID0gaSArIDI7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChwYXR0ZXJuW2pdID09PSAnKicpXG4gICAgICAgICAgICAgICAgICAgICAgICBqKys7XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIGZvbGxvd2VkIGJ5IGEgc2xhc2gsIG1ha2UgaXQgb3B0aW9uYWwgdG8gYWxsb3cgemVybyBzZWdtZW50c1xuICAgICAgICAgICAgICAgICAgICBpZiAocGF0dGVybltqXSA9PT0gJy8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWdleFN0ciArPSAnKD86LiovKT8nO1xuICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGogKyAxOyAvLyBjb25zdW1lICoqL1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVnZXhTdHIgKz0gJy4qJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBqOyAvLyBjb25zdW1lICoqXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZ2V4U3RyICs9ICdbXi9dKic7XG4gICAgICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICc/JzpcbiAgICAgICAgICAgICAgICByZWdleFN0ciArPSAnW14vXSc7XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnWyc6IHtcbiAgICAgICAgICAgICAgICAvLyBDb3B5IGNoYXJhY3RlciBjbGFzcyBhcy1pcyB3aXRoIHN1cHBvcnQgZm9yIGxlYWRpbmcgJyEnXG4gICAgICAgICAgICAgICAgbGV0IGNscyA9ICdbJztcbiAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgaWYgKGkgPCBwYXR0ZXJuLmxlbmd0aCAmJiBwYXR0ZXJuW2ldID09PSAnIScpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xzICs9ICdeJztcbiAgICAgICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBpZiBmaXJzdCBhZnRlciBbIG9yIFteIGlzICddJyBpbmNsdWRlIGl0IGxpdGVyYWxseVxuICAgICAgICAgICAgICAgIGlmIChpIDwgcGF0dGVybi5sZW5ndGggJiYgcGF0dGVybltpXSA9PT0gJ10nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNscyArPSAnXSc7XG4gICAgICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgd2hpbGUgKGkgPCBwYXR0ZXJuLmxlbmd0aCAmJiBwYXR0ZXJuW2ldICE9PSAnXScpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2ggPSBwYXR0ZXJuW2ldO1xuICAgICAgICAgICAgICAgICAgICAvLyBFc2NhcGUgYmFja3NsYXNoIGluc2lkZSBjbGFzc1xuICAgICAgICAgICAgICAgICAgICBjbHMgKz0gY2ggPT09ICdcXFxcJyA/ICdcXFxcXFxcXCcgOiBjaDtcbiAgICAgICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaSA8IHBhdHRlcm4ubGVuZ3RoICYmIHBhdHRlcm5baV0gPT09ICddJykge1xuICAgICAgICAgICAgICAgICAgICBjbHMgKz0gJ10nO1xuICAgICAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBVbmNsb3NlZCBjbGFzcyAtPiB0cmVhdCAnWycgbGl0ZXJhbGx5XG4gICAgICAgICAgICAgICAgICAgIHJlZ2V4U3RyICs9ICdcXFxcWyc7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZWdleFN0ciArPSBjbHM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICd7Jzoge1xuICAgICAgICAgICAgICAgIHJlZ2V4U3RyICs9IHBhcnNlQnJhY2VHcm91cCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnLyc6XG4gICAgICAgICAgICAgICAgcmVnZXhTdHIgKz0gJy8nO1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJy4nOlxuICAgICAgICAgICAgY2FzZSAnXic6XG4gICAgICAgICAgICBjYXNlICckJzpcbiAgICAgICAgICAgIGNhc2UgJysnOlxuICAgICAgICAgICAgY2FzZSAnKCc6XG4gICAgICAgICAgICBjYXNlICcpJzpcbiAgICAgICAgICAgIGNhc2UgJ3wnOlxuICAgICAgICAgICAgY2FzZSAnXFxcXCc6XG4gICAgICAgICAgICAgICAgcmVnZXhTdHIgKz0gYFxcXFwke2NoYXJ9YDtcbiAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJlZ2V4U3RyICs9IGNoYXI7XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGZsYWdzID0gb3B0aW9ucz8ubm9jYXNlID8gJ2knIDogJyc7XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoJ14nICsgcmVnZXhTdHIgKyAnJCcsIGZsYWdzKTtcbn07XG5leHBvcnRzLnRvUmVnZXggPSB0b1JlZ2V4O1xuY29uc3QgaXNSZWdFeHAgPSAvXlxcLyguezEsNDA5Nn0pXFwvKFtnaW1zdXldezAsNn0pJC87XG5jb25zdCB0b01hdGNoZXIgPSAocGF0dGVybiwgb3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IHJlZ2V4ZXMgPSBbXTtcbiAgICBjb25zdCBwYXR0ZXJucyA9IEFycmF5LmlzQXJyYXkocGF0dGVybikgPyBwYXR0ZXJuIDogW3BhdHRlcm5dO1xuICAgIGZvciAoY29uc3QgcGF0IG9mIHBhdHRlcm5zKSB7XG4gICAgICAgIGlmICh0eXBlb2YgcGF0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBpc1JlZ0V4cC5leGVjKHBhdCk7XG4gICAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBbLCBleHByLCBmbGFnc10gPSBtYXRjaDtcbiAgICAgICAgICAgICAgICByZWdleGVzLnB1c2gobmV3IFJlZ0V4cChleHByLCBmbGFncykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVnZXhlcy5wdXNoKCgwLCBleHBvcnRzLnRvUmVnZXgpKHBhdCwgb3B0aW9ucykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVnZXhlcy5wdXNoKHBhdCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlZ2V4ZXMubGVuZ3RoXG4gICAgICAgID8gbmV3IEZ1bmN0aW9uKCdwJywgJ3JldHVybiAnICsgcmVnZXhlcy5tYXAoKHIpID0+IHIgKyAnLnRlc3QocCknKS5qb2luKCd8fCcpKVxuICAgICAgICA6ICgpID0+IGZhbHNlO1xufTtcbmV4cG9ydHMudG9NYXRjaGVyID0gdG9NYXRjaGVyO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmdsb2JTeW5jID0gZ2xvYlN5bmM7XG5jb25zdCBwYXRoXzEgPSByZXF1aXJlKFwiQGpzb25qb3kuY29tL2ZzLW5vZGUtYnVpbHRpbnMvbGliL3BhdGhcIik7XG5jb25zdCBnbG9iX3RvX3JlZ2V4X2pzXzEgPSByZXF1aXJlKFwiZ2xvYi10by1yZWdleC5qc1wiKTtcbmNvbnN0IHV0aWxfMSA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5jb25zdCBwYXRoSm9pbiA9IHBhdGhfMS5wb3NpeC5qb2luO1xuY29uc3QgcGF0aFJlbGF0aXZlID0gcGF0aF8xLnBvc2l4LnJlbGF0aXZlO1xuY29uc3QgcGF0aFJlc29sdmUgPSBwYXRoXzEucG9zaXgucmVzb2x2ZTtcbi8qKlxuICogQ2hlY2sgaWYgYSBwYXRoIG1hdGNoZXMgYSBnbG9iIHBhdHRlcm5cbiAqL1xuZnVuY3Rpb24gbWF0Y2hlc1BhdHRlcm4ocGF0aCwgcGF0dGVybikge1xuICAgIGNvbnN0IHJlZ2V4ID0gKDAsIGdsb2JfdG9fcmVnZXhfanNfMS50b1JlZ2V4KShwYXR0ZXJuKTtcbiAgICByZXR1cm4gcmVnZXgudGVzdChwYXRoKTtcbn1cbi8qKlxuICogQ2hlY2sgaWYgYSBwYXRoIHNob3VsZCBiZSBleGNsdWRlZCBiYXNlZCBvbiBleGNsdWRlIHBhdHRlcm5zXG4gKi9cbmZ1bmN0aW9uIGlzRXhjbHVkZWQocGF0aCwgZXhjbHVkZSkge1xuICAgIGlmICghZXhjbHVkZSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGlmICh0eXBlb2YgZXhjbHVkZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gZXhjbHVkZShwYXRoKTtcbiAgICB9XG4gICAgY29uc3QgcGF0dGVybnMgPSBBcnJheS5pc0FycmF5KGV4Y2x1ZGUpID8gZXhjbHVkZSA6IFtleGNsdWRlXTtcbiAgICByZXR1cm4gcGF0dGVybnMuc29tZShwYXR0ZXJuID0+IG1hdGNoZXNQYXR0ZXJuKHBhdGgsIHBhdHRlcm4pKTtcbn1cbi8qKlxuICogV2FsayBkaXJlY3RvcnkgdHJlZSBhbmQgY29sbGVjdCBtYXRjaGluZyBwYXRoc1xuICovXG5mdW5jdGlvbiB3YWxrRGlyZWN0b3J5KGZzLCBkaXIsIHBhdHRlcm5zLCBvcHRpb25zLCBjdXJyZW50RGVwdGggPSAwKSB7XG4gICAgY29uc3QgcmVzdWx0cyA9IFtdO1xuICAgIGNvbnN0IG1heERlcHRoID0gb3B0aW9ucy5tYXhkZXB0aCA/PyBJbmZpbml0eTtcbiAgICBjb25zdCBiYXNlQ3dkID0gb3B0aW9ucy5jd2QgPyAoMCwgdXRpbF8xLnBhdGhUb0ZpbGVuYW1lKShvcHRpb25zLmN3ZCkgOiBwcm9jZXNzLmN3ZCgpO1xuICAgIGlmIChjdXJyZW50RGVwdGggPiBtYXhEZXB0aCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IGZzLnJlYWRkaXJTeW5jKGRpciwgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pO1xuICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aEpvaW4oZGlyLCBlbnRyeS5uYW1lLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gcGF0aFJlbGF0aXZlKGJhc2VDd2QsIGZ1bGxQYXRoKTtcbiAgICAgICAgICAgIC8vIFNraXAgaWYgZXhjbHVkZWRcbiAgICAgICAgICAgIGlmIChpc0V4Y2x1ZGVkKHJlbGF0aXZlUGF0aCwgb3B0aW9ucy5leGNsdWRlKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBwYXRoIG1hdGNoZXMgYW55IHBhdHRlcm5cbiAgICAgICAgICAgIGNvbnN0IG1hdGNoZXMgPSBwYXR0ZXJucy5zb21lKHBhdHRlcm4gPT4gbWF0Y2hlc1BhdHRlcm4ocmVsYXRpdmVQYXRoLCBwYXR0ZXJuKSk7XG4gICAgICAgICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaChyZWxhdGl2ZVBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gUmVjdXJzZSBpbnRvIGRpcmVjdG9yaWVzXG4gICAgICAgICAgICBpZiAoZW50cnkuaXNEaXJlY3RvcnkoKSAmJiBjdXJyZW50RGVwdGggPCBtYXhEZXB0aCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN1YlJlc3VsdHMgPSB3YWxrRGlyZWN0b3J5KGZzLCBmdWxsUGF0aCwgcGF0dGVybnMsIG9wdGlvbnMsIGN1cnJlbnREZXB0aCArIDEpO1xuICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaCguLi5zdWJSZXN1bHRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIC8vIFNraXAgZGlyZWN0b3JpZXMgd2UgY2FuJ3QgcmVhZFxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0cztcbn1cbi8qKlxuICogTWFpbiBnbG9iIGltcGxlbWVudGF0aW9uXG4gKi9cbmZ1bmN0aW9uIGdsb2JTeW5jKGZzLCBwYXR0ZXJuLCBvcHRpb25zID0ge30pIHtcbiAgICBjb25zdCBjd2QgPSBvcHRpb25zLmN3ZCA/ICgwLCB1dGlsXzEucGF0aFRvRmlsZW5hbWUpKG9wdGlvbnMuY3dkKSA6IHByb2Nlc3MuY3dkKCk7XG4gICAgY29uc3QgcmVzb2x2ZWRDd2QgPSBwYXRoUmVzb2x2ZShjd2QpO1xuICAgIGNvbnN0IGdsb2JPcHRpb25zID0ge1xuICAgICAgICBjd2Q6IHJlc29sdmVkQ3dkLFxuICAgICAgICBleGNsdWRlOiBvcHRpb25zLmV4Y2x1ZGUsXG4gICAgICAgIG1heGRlcHRoOiBvcHRpb25zLm1heGRlcHRoLFxuICAgICAgICB3aXRoRmlsZVR5cGVzOiBvcHRpb25zLndpdGhGaWxlVHlwZXMgfHwgZmFsc2UsXG4gICAgfTtcbiAgICBsZXQgcmVzdWx0cyA9IFtdO1xuICAgIC8vIEhhbmRsZSBhYnNvbHV0ZSBwYXR0ZXJuc1xuICAgIGlmIChwYXRoXzEucG9zaXguaXNBYnNvbHV0ZShwYXR0ZXJuKSkge1xuICAgICAgICBjb25zdCBkaXIgPSBwYXRoXzEucG9zaXguZGlybmFtZShwYXR0ZXJuKTtcbiAgICAgICAgY29uc3QgcGF0dGVybkJhc2VuYW1lID0gcGF0aF8xLnBvc2l4LmJhc2VuYW1lKHBhdHRlcm4pO1xuICAgICAgICBjb25zdCBkaXJSZXN1bHRzID0gd2Fsa0RpcmVjdG9yeShmcywgZGlyLCBbcGF0dGVybkJhc2VuYW1lXSwgeyAuLi5nbG9iT3B0aW9ucywgY3dkOiBkaXIgfSk7XG4gICAgICAgIHJlc3VsdHMucHVzaCguLi5kaXJSZXN1bHRzLm1hcChyID0+IHBhdGhfMS5wb3NpeC5yZXNvbHZlKGRpciwgcikpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIC8vIEhhbmRsZSByZWxhdGl2ZSBwYXR0ZXJucyAtIG5vcm1hbGl6ZSBieSBzdHJpcHBpbmcgbGVhZGluZyAnLi8nXG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRQYXR0ZXJuID0gcGF0dGVybi5yZXBsYWNlKC9eXFwuXFwvLywgJycpO1xuICAgICAgICBjb25zdCBkaXJSZXN1bHRzID0gd2Fsa0RpcmVjdG9yeShmcywgcmVzb2x2ZWRDd2QsIFtub3JtYWxpemVkUGF0dGVybl0sIGdsb2JPcHRpb25zKTtcbiAgICAgICAgcmVzdWx0cy5wdXNoKC4uLmRpclJlc3VsdHMpO1xuICAgIH1cbiAgICAvLyBSZW1vdmUgZHVwbGljYXRlcyBhbmQgc29ydFxuICAgIHJlc3VsdHMgPSBbLi4ubmV3IFNldChyZXN1bHRzKV0uc29ydCgpO1xuICAgIHJldHVybiByZXN1bHRzO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2xvYi5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuRlNXYXRjaGVyID0gZXhwb3J0cy5TdGF0V2F0Y2hlciA9IGV4cG9ydHMuVm9sdW1lID0gdm9pZCAwO1xuZXhwb3J0cy5wYXRoVG9TdGVwcyA9IHBhdGhUb1N0ZXBzO1xuZXhwb3J0cy5kYXRhVG9TdHIgPSBkYXRhVG9TdHI7XG5leHBvcnRzLnRvVW5peFRpbWVzdGFtcCA9IHRvVW5peFRpbWVzdGFtcDtcbmNvbnN0IHBhdGhfMSA9IHJlcXVpcmUoXCJAanNvbmpveS5jb20vZnMtbm9kZS1idWlsdGlucy9saWIvcGF0aFwiKTtcbmNvbnN0IGZzX2NvcmVfMSA9IHJlcXVpcmUoXCJAanNvbmpveS5jb20vZnMtY29yZVwiKTtcbmNvbnN0IHV0aWxfMSA9IHJlcXVpcmUoXCJAanNvbmpveS5jb20vZnMtY29yZS9saWIvdXRpbFwiKTtcbmNvbnN0IFN0YXRzXzEgPSByZXF1aXJlKFwiLi9TdGF0c1wiKTtcbmNvbnN0IERpcmVudF8xID0gcmVxdWlyZShcIi4vRGlyZW50XCIpO1xuY29uc3QgU3RhdEZzXzEgPSByZXF1aXJlKFwiLi9TdGF0RnNcIik7XG5jb25zdCBidWZmZXJfMSA9IHJlcXVpcmUoXCJAanNvbmpveS5jb20vZnMtbm9kZS1idWlsdGlucy9saWIvaW50ZXJuYWwvYnVmZmVyXCIpO1xuY29uc3Qgc2V0VGltZW91dFVucmVmXzEgPSByZXF1aXJlKFwiQGpzb25qb3kuY29tL2ZzLW5vZGUtdXRpbHMvbGliL3NldFRpbWVvdXRVbnJlZlwiKTtcbmNvbnN0IHN0cmVhbV8xID0gcmVxdWlyZShcIkBqc29uam95LmNvbS9mcy1ub2RlLWJ1aWx0aW5zL2xpYi9zdHJlYW1cIik7XG5jb25zdCBmc19ub2RlX3V0aWxzXzEgPSByZXF1aXJlKFwiQGpzb25qb3kuY29tL2ZzLW5vZGUtdXRpbHNcIik7XG5jb25zdCBldmVudHNfMSA9IHJlcXVpcmUoXCJAanNvbmpveS5jb20vZnMtbm9kZS1idWlsdGlucy9saWIvZXZlbnRzXCIpO1xuY29uc3QgRmlsZUhhbmRsZV8xID0gcmVxdWlyZShcIi4vRmlsZUhhbmRsZVwiKTtcbmNvbnN0IHV0aWxfMiA9IHJlcXVpcmUoXCJAanNvbmpveS5jb20vZnMtbm9kZS1idWlsdGlucy9saWIvdXRpbFwiKTtcbmNvbnN0IEZzUHJvbWlzZXNfMSA9IHJlcXVpcmUoXCIuL0ZzUHJvbWlzZXNcIik7XG5jb25zdCBmc19wcmludF8xID0gcmVxdWlyZShcIkBqc29uam95LmNvbS9mcy1wcmludFwiKTtcbmNvbnN0IGZzU25hcHNob3QgPSByZXF1aXJlKFwiQGpzb25qb3kuY29tL2ZzLXNuYXBzaG90XCIpO1xuY29uc3QgZnNfbm9kZV91dGlsc18yID0gcmVxdWlyZShcIkBqc29uam95LmNvbS9mcy1ub2RlLXV0aWxzXCIpO1xuY29uc3QgZXJyb3JzID0gcmVxdWlyZShcIkBqc29uam95LmNvbS9mcy1ub2RlLWJ1aWx0aW5zL2xpYi9pbnRlcm5hbC9lcnJvcnNcIik7XG5jb25zdCBvcHRpb25zXzEgPSByZXF1aXJlKFwiLi9vcHRpb25zXCIpO1xuY29uc3QgdXRpbF8zID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcbmNvbnN0IERpcl8xID0gcmVxdWlyZShcIi4vRGlyXCIpO1xuY29uc3QgcmVzb2x2ZUNyb3NzUGxhdGZvcm0gPSBwYXRoXzEucmVzb2x2ZTtcbmNvbnN0IHsgT19TWU1MSU5LLCBGX09LLCBSX09LLCBXX09LLCBYX09LLCBDT1BZRklMRV9FWENMLCBDT1BZRklMRV9GSUNMT05FX0ZPUkNFIH0gPSBmc19ub2RlX3V0aWxzXzEuY29uc3RhbnRzO1xuY29uc3QgcGF0aFNlcCA9IHBhdGhfMS5wb3NpeCA/IHBhdGhfMS5wb3NpeC5zZXAgOiBwYXRoXzEuc2VwO1xuY29uc3QgcGF0aFJlbGF0aXZlID0gcGF0aF8xLnBvc2l4ID8gcGF0aF8xLnBvc2l4LnJlbGF0aXZlIDogcGF0aF8xLnJlbGF0aXZlO1xuY29uc3QgcGF0aEpvaW4gPSBwYXRoXzEucG9zaXggPyBwYXRoXzEucG9zaXguam9pbiA6IHBhdGhfMS5qb2luO1xuY29uc3QgcGF0aERpcm5hbWUgPSBwYXRoXzEucG9zaXggPyBwYXRoXzEucG9zaXguZGlybmFtZSA6IHBhdGhfMS5kaXJuYW1lO1xuY29uc3QgcGF0aE5vcm1hbGl6ZSA9IHBhdGhfMS5wb3NpeCA/IHBhdGhfMS5wb3NpeC5ub3JtYWxpemUgOiBwYXRoXzEubm9ybWFsaXplO1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0YW50c1xuY29uc3Qga01pblBvb2xTcGFjZSA9IDEyODtcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVXRpbGl0eSBmdW5jdGlvbnNcbmZ1bmN0aW9uIHBhdGhUb1N0ZXBzKHBhdGgpIHtcbiAgICByZXR1cm4gKDAsIGZzX2NvcmVfMS5maWxlbmFtZVRvU3RlcHMpKCgwLCB1dGlsXzMucGF0aFRvRmlsZW5hbWUpKHBhdGgpKTtcbn1cbmZ1bmN0aW9uIGRhdGFUb1N0cihkYXRhLCBlbmNvZGluZyA9IGZzX25vZGVfdXRpbHNfMS5FTkNPRElOR19VVEY4KSB7XG4gICAgaWYgKGJ1ZmZlcl8xLkJ1ZmZlci5pc0J1ZmZlcihkYXRhKSlcbiAgICAgICAgcmV0dXJuIGRhdGEudG9TdHJpbmcoZW5jb2RpbmcpO1xuICAgIGVsc2UgaWYgKGRhdGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KVxuICAgICAgICByZXR1cm4gKDAsIGJ1ZmZlcl8xLmJ1ZmZlckZyb20pKGRhdGEpLnRvU3RyaW5nKGVuY29kaW5nKTtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiBTdHJpbmcoZGF0YSk7XG59XG4vLyBjb252ZXJ0cyBEYXRlIG9yIG51bWJlciB0byBhIGZyYWN0aW9uYWwgVU5JWCB0aW1lc3RhbXBcbmZ1bmN0aW9uIHRvVW5peFRpbWVzdGFtcCh0aW1lKSB7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIHRyaXBsZS1lcXVhbHNcbiAgICBpZiAodHlwZW9mIHRpbWUgPT09ICdzdHJpbmcnICYmICt0aW1lID09IHRpbWUpIHtcbiAgICAgICAgcmV0dXJuICt0aW1lO1xuICAgIH1cbiAgICBpZiAodGltZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgcmV0dXJuIHRpbWUuZ2V0VGltZSgpIC8gMTAwMDtcbiAgICB9XG4gICAgaWYgKGlzRmluaXRlKHRpbWUpKSB7XG4gICAgICAgIGlmICh0aW1lIDwgMCkge1xuICAgICAgICAgICAgcmV0dXJuIERhdGUubm93KCkgLyAxMDAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aW1lO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBwYXJzZSB0aW1lOiAnICsgdGltZSk7XG59XG5mdW5jdGlvbiB2YWxpZGF0ZVVpZCh1aWQpIHtcbiAgICBpZiAodHlwZW9mIHVpZCAhPT0gJ251bWJlcicpXG4gICAgICAgIHRocm93IFR5cGVFcnJvcihmc19ub2RlX3V0aWxzXzIuRVJSU1RSLlVJRCk7XG59XG5mdW5jdGlvbiB2YWxpZGF0ZUdpZChnaWQpIHtcbiAgICBpZiAodHlwZW9mIGdpZCAhPT0gJ251bWJlcicpXG4gICAgICAgIHRocm93IFR5cGVFcnJvcihmc19ub2RlX3V0aWxzXzIuRVJSU1RSLkdJRCk7XG59XG4vKipcbiAqIGBWb2x1bWVgIHJlcHJlc2VudHMgYSBmaWxlIHN5c3RlbS5cbiAqL1xuY2xhc3MgVm9sdW1lIHtcbiAgICBnZXQgcHJvbWlzZXMoKSB7XG4gICAgICAgIGlmICh0aGlzLnByb21pc2VzQXBpID09PSBudWxsKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm9taXNlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBlbnZpcm9ubWVudC4nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvbWlzZXNBcGk7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKF9jb3JlID0gbmV3IGZzX2NvcmVfMS5TdXBlcmJsb2NrKCkpIHtcbiAgICAgICAgdGhpcy5fY29yZSA9IF9jb3JlO1xuICAgICAgICB0aGlzLnByb21pc2VzQXBpID0gbmV3IEZzUHJvbWlzZXNfMS5Gc1Byb21pc2VzKHRoaXMsIEZpbGVIYW5kbGVfMS5GaWxlSGFuZGxlKTtcbiAgICAgICAgdGhpcy5vcGVuU3luYyA9IChwYXRoLCBmbGFncywgbW9kZSA9IDQzOCAvKiBNT0RFLkRFRkFVTFQgKi8pID0+IHtcbiAgICAgICAgICAgIC8vIFZhbGlkYXRlICgxKSBtb2RlOyAoMikgcGF0aDsgKDMpIGZsYWdzIC0gaW4gdGhhdCBvcmRlci5cbiAgICAgICAgICAgIGNvbnN0IG1vZGVOdW0gPSAoMCwgdXRpbF8zLm1vZGVUb051bWJlcikobW9kZSk7XG4gICAgICAgICAgICBjb25zdCBmaWxlTmFtZSA9ICgwLCB1dGlsXzMucGF0aFRvRmlsZW5hbWUpKHBhdGgpO1xuICAgICAgICAgICAgY29uc3QgZmxhZ3NOdW0gPSAoMCwgdXRpbF8zLmZsYWdzVG9OdW1iZXIpKGZsYWdzKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb3JlLm9wZW4oZmlsZU5hbWUsIGZsYWdzTnVtLCBtb2RlTnVtLCAhKGZsYWdzTnVtICYgT19TWU1MSU5LKSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMub3BlbiA9IChwYXRoLCBmbGFncywgYSwgYikgPT4ge1xuICAgICAgICAgICAgbGV0IG1vZGUgPSBhO1xuICAgICAgICAgICAgbGV0IGNhbGxiYWNrID0gYjtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgYSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIG1vZGUgPSA0MzggLyogTU9ERS5ERUZBVUxUICovO1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gYTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG1vZGUgPSBtb2RlIHx8IDQzOCAvKiBNT0RFLkRFRkFVTFQgKi87XG4gICAgICAgICAgICBjb25zdCBtb2RlTnVtID0gKDAsIHV0aWxfMy5tb2RlVG9OdW1iZXIpKG1vZGUpO1xuICAgICAgICAgICAgY29uc3QgZmlsZU5hbWUgPSAoMCwgdXRpbF8zLnBhdGhUb0ZpbGVuYW1lKShwYXRoKTtcbiAgICAgICAgICAgIGNvbnN0IGZsYWdzTnVtID0gKDAsIHV0aWxfMy5mbGFnc1RvTnVtYmVyKShmbGFncyk7XG4gICAgICAgICAgICB0aGlzLndyYXBBc3luYyh0aGlzLl9jb3JlLm9wZW4sIFtmaWxlTmFtZSwgZmxhZ3NOdW0sIG1vZGVOdW0sICEoZmxhZ3NOdW0gJiBPX1NZTUxJTkspXSwgY2FsbGJhY2spO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNsb3NlU3luYyA9IChmZCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY29yZS5jbG9zZShmZCk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuY2xvc2UgPSAoZmQsIGNhbGxiYWNrKSA9PiB7XG4gICAgICAgICAgICAoMCwgZnNfY29yZV8xLnZhbGlkYXRlRmQpKGZkKTtcbiAgICAgICAgICAgIGNvbnN0IGZpbGUgPSB0aGlzLl9jb3JlLmdldEZpbGVCeUZkT3JUaHJvdyhmZCwgJ2Nsb3NlJyk7XG4gICAgICAgICAgICB0aGlzLndyYXBBc3luYyh0aGlzLl9jb3JlLmNsb3NlLCBbZmlsZS5mZF0sIGNhbGxiYWNrKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5yZWFkU3luYyA9IChmZCwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pID0+IHtcbiAgICAgICAgICAgICgwLCBmc19jb3JlXzEudmFsaWRhdGVGZCkoZmQpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvcmUucmVhZChmZCwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJlYWQgPSAoZmQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uLCBjYWxsYmFjaykgPT4ge1xuICAgICAgICAgICAgKDAsIHV0aWxfMy52YWxpZGF0ZUNhbGxiYWNrKShjYWxsYmFjayk7XG4gICAgICAgICAgICBpZiAobGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgLy8gVGhpcyBgaWZgIGJyYW5jaCBpcyBmcm9tIE5vZGUuanNcbiAgICAgICAgICAgICAgICByZXR1cm4gcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2spXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCAwLCBidWZmZXIpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYnl0ZXMgPSB0aGlzLl9jb3JlLnJlYWQoZmQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgYnl0ZXMsIGJ1ZmZlcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5yZWFkdiA9IChmZCwgYnVmZmVycywgYSwgYikgPT4ge1xuICAgICAgICAgICAgbGV0IHBvc2l0aW9uID0gYTtcbiAgICAgICAgICAgIGxldCBjYWxsYmFjayA9IGI7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGEgPT09ICdmdW5jdGlvbicpXG4gICAgICAgICAgICAgICAgW3Bvc2l0aW9uLCBjYWxsYmFja10gPSBbbnVsbCwgYV07XG4gICAgICAgICAgICAoMCwgdXRpbF8zLnZhbGlkYXRlQ2FsbGJhY2spKGNhbGxiYWNrKTtcbiAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ5dGVzID0gdGhpcy5fY29yZS5yZWFkdihmZCwgYnVmZmVycywgcG9zaXRpb24pO1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCBieXRlcywgYnVmZmVycyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5yZWFkdlN5bmMgPSAoZmQsIGJ1ZmZlcnMsIHBvc2l0aW9uKSA9PiB7XG4gICAgICAgICAgICAoMCwgZnNfY29yZV8xLnZhbGlkYXRlRmQpKGZkKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb3JlLnJlYWR2KGZkLCBidWZmZXJzLCBwb3NpdGlvbiA/PyBudWxsKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5fcmVhZGZpbGUgPSAoaWQsIGZsYWdzTnVtLCBlbmNvZGluZykgPT4ge1xuICAgICAgICAgICAgbGV0IHJlc3VsdDtcbiAgICAgICAgICAgIGNvbnN0IGlzVXNlckZkID0gdHlwZW9mIGlkID09PSAnbnVtYmVyJztcbiAgICAgICAgICAgIGNvbnN0IHVzZXJPd25zRmQgPSBpc1VzZXJGZCAmJiAoMCwgZnNfY29yZV8xLmlzRmQpKGlkKTtcbiAgICAgICAgICAgIGxldCBmZDtcbiAgICAgICAgICAgIGlmICh1c2VyT3duc0ZkKVxuICAgICAgICAgICAgICAgIGZkID0gaWQ7XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlbmFtZSA9ICgwLCB1dGlsXzMucGF0aFRvRmlsZW5hbWUpKGlkKTtcbiAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiBvcmlnaW5hbCBwYXRoIGhhZCB0cmFpbGluZyBzbGFzaCAoaW5kaWNhdGVzIGRpcmVjdG9yeSBpbnRlbnQpXG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxQYXRoID0gU3RyaW5nKGlkKTtcbiAgICAgICAgICAgICAgICBjb25zdCBoYXNUcmFpbGluZ1NsYXNoID0gb3JpZ2luYWxQYXRoLmxlbmd0aCA+IDEgJiYgb3JpZ2luYWxQYXRoLmVuZHNXaXRoKCcvJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgbGluayA9IHRoaXMuX2NvcmUuZ2V0UmVzb2x2ZWRMaW5rT3JUaHJvdyhmaWxlbmFtZSwgJ29wZW4nKTtcbiAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gbGluay5nZXROb2RlKCk7XG4gICAgICAgICAgICAgICAgaWYgKG5vZGUuaXNEaXJlY3RvcnkoKSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMy5jcmVhdGVFcnJvcikoXCJFSVNESVJcIiAvKiBFUlJPUl9DT0RFLkVJU0RJUiAqLywgJ29wZW4nLCBsaW5rLmdldFBhdGgoKSk7XG4gICAgICAgICAgICAgICAgLy8gSWYgcGF0aCBoYWQgdHJhaWxpbmcgc2xhc2ggYnV0IHJlc29sdmVkIHRvIGEgZmlsZSwgdGhyb3cgRU5PVERJUlxuICAgICAgICAgICAgICAgIGlmIChoYXNUcmFpbGluZ1NsYXNoICYmIG5vZGUuaXNGaWxlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMy5jcmVhdGVFcnJvcikoXCJFTk9URElSXCIgLyogRVJST1JfQ09ERS5FTk9URElSICovLCAnb3BlbicsIG9yaWdpbmFsUGF0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZkID0gdGhpcy5vcGVuU3luYyhpZCwgZmxhZ3NOdW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSAoMCwgdXRpbF8zLmJ1ZmZlclRvRW5jb2RpbmcpKHRoaXMuX2NvcmUuZ2V0RmlsZUJ5RmRPclRocm93KGZkKS5nZXRCdWZmZXIoKSwgZW5jb2RpbmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgaWYgKCF1c2VyT3duc0ZkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VTeW5jKGZkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJlYWRGaWxlU3luYyA9IChmaWxlLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvcHRzID0gKDAsIG9wdGlvbnNfMS5nZXRSZWFkRmlsZU9wdGlvbnMpKG9wdGlvbnMpO1xuICAgICAgICAgICAgY29uc3QgZmxhZ3NOdW0gPSAoMCwgdXRpbF8zLmZsYWdzVG9OdW1iZXIpKG9wdHMuZmxhZyk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcmVhZGZpbGUoZmlsZSwgZmxhZ3NOdW0sIG9wdHMuZW5jb2RpbmcpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJlYWRGaWxlID0gKGlkLCBhLCBiKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBbb3B0cywgY2FsbGJhY2tdID0gKDAsIG9wdGlvbnNfMS5vcHRzQW5kQ2JHZW5lcmF0b3IpKG9wdGlvbnNfMS5nZXRSZWFkRmlsZU9wdGlvbnMpKGEsIGIpO1xuICAgICAgICAgICAgY29uc3QgZmxhZ3NOdW0gPSAoMCwgdXRpbF8zLmZsYWdzVG9OdW1iZXIpKG9wdHMuZmxhZyk7XG4gICAgICAgICAgICB0aGlzLndyYXBBc3luYyh0aGlzLl9yZWFkZmlsZSwgW2lkLCBmbGFnc051bSwgb3B0cy5lbmNvZGluZ10sIGNhbGxiYWNrKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy53cml0ZVN5bmMgPSAoZmQsIGEsIGIsIGMsIGQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IFssIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uXSA9ICgwLCB1dGlsXzMuZ2V0V3JpdGVTeW5jQXJncykoZmQsIGEsIGIsIGMsIGQpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dyaXRlKGZkLCBidWYsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbik7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMud3JpdGUgPSAoZmQsIGEsIGIsIGMsIGQsIGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IFssIGFzU3RyLCBidWYsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbiwgY2JdID0gKDAsIHV0aWxfMy5nZXRXcml0ZUFyZ3MpKGZkLCBhLCBiLCBjLCBkLCBlKTtcbiAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ5dGVzID0gdGhpcy5fd3JpdGUoZmQsIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhc1N0cikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2IobnVsbCwgYnl0ZXMsIGJ1Zik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYihudWxsLCBieXRlcywgYSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICBjYihlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLndyaXRldiA9IChmZCwgYnVmZmVycywgYSwgYikgPT4ge1xuICAgICAgICAgICAgbGV0IHBvc2l0aW9uID0gYTtcbiAgICAgICAgICAgIGxldCBjYWxsYmFjayA9IGI7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGEgPT09ICdmdW5jdGlvbicpXG4gICAgICAgICAgICAgICAgW3Bvc2l0aW9uLCBjYWxsYmFja10gPSBbbnVsbCwgYV07XG4gICAgICAgICAgICAoMCwgdXRpbF8zLnZhbGlkYXRlQ2FsbGJhY2spKGNhbGxiYWNrKTtcbiAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ5dGVzID0gdGhpcy53cml0ZXZCYXNlKGZkLCBidWZmZXJzLCBwb3NpdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIGJ5dGVzLCBidWZmZXJzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLndyaXRldlN5bmMgPSAoZmQsIGJ1ZmZlcnMsIHBvc2l0aW9uKSA9PiB7XG4gICAgICAgICAgICAoMCwgZnNfY29yZV8xLnZhbGlkYXRlRmQpKGZkKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLndyaXRldkJhc2UoZmQsIGJ1ZmZlcnMsIHBvc2l0aW9uID8/IG51bGwpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLndyaXRlRmlsZVN5bmMgPSAoaWQsIGRhdGEsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9wdHMgPSAoMCwgb3B0aW9uc18xLmdldFdyaXRlRmlsZU9wdGlvbnMpKG9wdGlvbnMpO1xuICAgICAgICAgICAgY29uc3QgZmxhZ3NOdW0gPSAoMCwgdXRpbF8zLmZsYWdzVG9OdW1iZXIpKG9wdHMuZmxhZyk7XG4gICAgICAgICAgICBjb25zdCBtb2RlTnVtID0gKDAsIHV0aWxfMy5tb2RlVG9OdW1iZXIpKG9wdHMubW9kZSk7XG4gICAgICAgICAgICBjb25zdCBidWYgPSAoMCwgZnNfY29yZV8xLmRhdGFUb0J1ZmZlcikoZGF0YSwgb3B0cy5lbmNvZGluZyk7XG4gICAgICAgICAgICB0aGlzLl9jb3JlLndyaXRlRmlsZShpZCwgYnVmLCBmbGFnc051bSwgbW9kZU51bSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMud3JpdGVGaWxlID0gKGlkLCBkYXRhLCBhLCBiKSA9PiB7XG4gICAgICAgICAgICBsZXQgb3B0aW9ucyA9IGE7XG4gICAgICAgICAgICBsZXQgY2FsbGJhY2sgPSBiO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBhID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgICAgIFtvcHRpb25zLCBjYWxsYmFja10gPSBbb3B0aW9uc18xLndyaXRlRmlsZURlZmF1bHRzLCBhXTtcbiAgICAgICAgICAgIGNvbnN0IGNiID0gKDAsIHV0aWxfMy52YWxpZGF0ZUNhbGxiYWNrKShjYWxsYmFjayk7XG4gICAgICAgICAgICBjb25zdCBvcHRzID0gKDAsIG9wdGlvbnNfMS5nZXRXcml0ZUZpbGVPcHRpb25zKShvcHRpb25zKTtcbiAgICAgICAgICAgIGNvbnN0IGZsYWdzTnVtID0gKDAsIHV0aWxfMy5mbGFnc1RvTnVtYmVyKShvcHRzLmZsYWcpO1xuICAgICAgICAgICAgY29uc3QgbW9kZU51bSA9ICgwLCB1dGlsXzMubW9kZVRvTnVtYmVyKShvcHRzLm1vZGUpO1xuICAgICAgICAgICAgY29uc3QgYnVmID0gKDAsIGZzX2NvcmVfMS5kYXRhVG9CdWZmZXIpKGRhdGEsIG9wdHMuZW5jb2RpbmcpO1xuICAgICAgICAgICAgdGhpcy53cmFwQXN5bmModGhpcy5fY29yZS53cml0ZUZpbGUsIFtpZCwgYnVmLCBmbGFnc051bSwgbW9kZU51bV0sIGNiKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jb3B5RmlsZVN5bmMgPSAoc3JjLCBkZXN0LCBmbGFncykgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3JjRmlsZW5hbWUgPSAoMCwgdXRpbF8zLnBhdGhUb0ZpbGVuYW1lKShzcmMpO1xuICAgICAgICAgICAgY29uc3QgZGVzdEZpbGVuYW1lID0gKDAsIHV0aWxfMy5wYXRoVG9GaWxlbmFtZSkoZGVzdCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29weUZpbGUoc3JjRmlsZW5hbWUsIGRlc3RGaWxlbmFtZSwgKGZsYWdzIHx8IDApIHwgMCk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuY29weUZpbGUgPSAoc3JjLCBkZXN0LCBhLCBiKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzcmNGaWxlbmFtZSA9ICgwLCB1dGlsXzMucGF0aFRvRmlsZW5hbWUpKHNyYyk7XG4gICAgICAgICAgICBjb25zdCBkZXN0RmlsZW5hbWUgPSAoMCwgdXRpbF8zLnBhdGhUb0ZpbGVuYW1lKShkZXN0KTtcbiAgICAgICAgICAgIGxldCBmbGFncztcbiAgICAgICAgICAgIGxldCBjYWxsYmFjaztcbiAgICAgICAgICAgIGlmICh0eXBlb2YgYSA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAgICAgICBbZmxhZ3MsIGNhbGxiYWNrXSA9IFswLCBhXTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBbZmxhZ3MsIGNhbGxiYWNrXSA9IFthLCBiXTtcbiAgICAgICAgICAgICgwLCB1dGlsXzMudmFsaWRhdGVDYWxsYmFjaykoY2FsbGJhY2spO1xuICAgICAgICAgICAgdGhpcy53cmFwQXN5bmModGhpcy5fY29weUZpbGUsIFtzcmNGaWxlbmFtZSwgZGVzdEZpbGVuYW1lLCBmbGFnc10sIGNhbGxiYWNrKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5fY3AgPSAoc3JjLCBkZXN0LCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5maWx0ZXIgJiYgIW9wdGlvbnMuZmlsdGVyKHNyYywgZGVzdCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgY29uc3Qgc3JjU3RhdCA9IG9wdGlvbnMuZGVyZWZlcmVuY2UgPyB0aGlzLnN0YXRTeW5jKHNyYykgOiB0aGlzLmxzdGF0U3luYyhzcmMpO1xuICAgICAgICAgICAgbGV0IGRlc3RTdGF0ID0gbnVsbDtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZGVzdFN0YXQgPSB0aGlzLmxzdGF0U3luYyhkZXN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyLmNvZGUgIT09ICdFTk9FTlQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBDaGVjayBpZiBzcmMgYW5kIGRlc3QgYXJlIHRoZSBzYW1lIChib3RoIGV4aXN0IGFuZCBoYXZlIHNhbWUgaW5vZGUpXG4gICAgICAgICAgICBpZiAoZGVzdFN0YXQgJiYgc3JjU3RhdC5pbm8gPT09IGRlc3RTdGF0LmlubyAmJiBzcmNTdGF0LmRldiA9PT0gZGVzdFN0YXQuZGV2KVxuICAgICAgICAgICAgICAgIHRocm93ICgwLCB1dGlsXzMuY3JlYXRlRXJyb3IpKFwiRUlOVkFMXCIgLyogRVJST1JfQ09ERS5FSU5WQUwgKi8sICdjcCcsIHNyYywgZGVzdCk7XG4gICAgICAgICAgICAvLyBDaGVjayB0eXBlIGNvbXBhdGliaWxpdHlcbiAgICAgICAgICAgIGlmIChkZXN0U3RhdCkge1xuICAgICAgICAgICAgICAgIGlmIChzcmNTdGF0LmlzRGlyZWN0b3J5KCkgJiYgIWRlc3RTdGF0LmlzRGlyZWN0b3J5KCkpXG4gICAgICAgICAgICAgICAgICAgIHRocm93ICgwLCB1dGlsXzMuY3JlYXRlRXJyb3IpKFwiRUlTRElSXCIgLyogRVJST1JfQ09ERS5FSVNESVIgKi8sICdjcCcsIHNyYywgZGVzdCk7XG4gICAgICAgICAgICAgICAgaWYgKCFzcmNTdGF0LmlzRGlyZWN0b3J5KCkgJiYgZGVzdFN0YXQuaXNEaXJlY3RvcnkoKSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMy5jcmVhdGVFcnJvcikoXCJFTk9URElSXCIgLyogRVJST1JfQ09ERS5FTk9URElSICovLCAnY3AnLCBzcmMsIGRlc3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdHJ5aW5nIHRvIGNvcHkgZGlyZWN0b3J5IHRvIHN1YmRpcmVjdG9yeSBvZiBpdHNlbGZcbiAgICAgICAgICAgIGlmIChzcmNTdGF0LmlzRGlyZWN0b3J5KCkgJiYgdGhpcy5pc1NyY1N1YmRpcihzcmMsIGRlc3QpKVxuICAgICAgICAgICAgICAgIHRocm93ICgwLCB1dGlsXzMuY3JlYXRlRXJyb3IpKFwiRUlOVkFMXCIgLyogRVJST1JfQ09ERS5FSU5WQUwgKi8sICdjcCcsIHNyYywgZGVzdCk7XG4gICAgICAgICAgICBFTkRVUkVfUEFSRU5UX0RJUl9FWElTVFM6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBwYXRoRGlybmFtZShkZXN0KTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZXhpc3RzU3luYyhwYXJlbnQpKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1rZGlyU3luYyhwYXJlbnQsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSGFuZGxlIGRpZmZlcmVudCBmaWxlIHR5cGVzXG4gICAgICAgICAgICBpZiAoc3JjU3RhdC5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFvcHRpb25zLnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMy5jcmVhdGVFcnJvcikoXCJFSVNESVJcIiAvKiBFUlJPUl9DT0RFLkVJU0RJUiAqLywgJ2NwJywgc3JjKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNwRGlyU3luYyhzcmNTdGF0LCBkZXN0U3RhdCwgc3JjLCBkZXN0LCBvcHRpb25zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHNyY1N0YXQuaXNGaWxlKCkgfHwgc3JjU3RhdC5pc0NoYXJhY3RlckRldmljZSgpIHx8IHNyY1N0YXQuaXNCbG9ja0RldmljZSgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jcEZpbGVTeW5jKHNyY1N0YXQsIGRlc3RTdGF0LCBzcmMsIGRlc3QsIG9wdGlvbnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoc3JjU3RhdC5pc1N5bWJvbGljTGluaygpICYmICFvcHRpb25zLmRlcmVmZXJlbmNlKSB7XG4gICAgICAgICAgICAgICAgLy8gT25seSBoYW5kbGUgYXMgc3ltbGluayBpZiBub3QgZGVyZWZlcmVuY2luZ1xuICAgICAgICAgICAgICAgIHRoaXMuY3BTeW1saW5rU3luYyhkZXN0U3RhdCwgc3JjLCBkZXN0LCBvcHRpb25zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93ICgwLCB1dGlsXzMuY3JlYXRlRXJyb3IpKFwiRUlOVkFMXCIgLyogRVJST1JfQ09ERS5FSU5WQUwgKi8sICdjcCcsIHNyYyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMubGlua1N5bmMgPSAoZXhpc3RpbmdQYXRoLCBuZXdQYXRoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBleGlzdGluZ1BhdGhGaWxlbmFtZSA9ICgwLCB1dGlsXzMucGF0aFRvRmlsZW5hbWUpKGV4aXN0aW5nUGF0aCk7XG4gICAgICAgICAgICBjb25zdCBuZXdQYXRoRmlsZW5hbWUgPSAoMCwgdXRpbF8zLnBhdGhUb0ZpbGVuYW1lKShuZXdQYXRoKTtcbiAgICAgICAgICAgIHRoaXMuX2NvcmUubGluayhleGlzdGluZ1BhdGhGaWxlbmFtZSwgbmV3UGF0aEZpbGVuYW1lKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5saW5rID0gKGV4aXN0aW5nUGF0aCwgbmV3UGF0aCwgY2FsbGJhY2spID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nUGF0aEZpbGVuYW1lID0gKDAsIHV0aWxfMy5wYXRoVG9GaWxlbmFtZSkoZXhpc3RpbmdQYXRoKTtcbiAgICAgICAgICAgIGNvbnN0IG5ld1BhdGhGaWxlbmFtZSA9ICgwLCB1dGlsXzMucGF0aFRvRmlsZW5hbWUpKG5ld1BhdGgpO1xuICAgICAgICAgICAgdGhpcy53cmFwQXN5bmModGhpcy5fY29yZS5saW5rLCBbZXhpc3RpbmdQYXRoRmlsZW5hbWUsIG5ld1BhdGhGaWxlbmFtZV0sIGNhbGxiYWNrKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy51bmxpbmtTeW5jID0gKHBhdGgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gKDAsIHV0aWxfMy5wYXRoVG9GaWxlbmFtZSkocGF0aCk7XG4gICAgICAgICAgICB0aGlzLl9jb3JlLnVubGluayhmaWxlbmFtZSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudW5saW5rID0gKHBhdGgsIGNhbGxiYWNrKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWxlbmFtZSA9ICgwLCB1dGlsXzMucGF0aFRvRmlsZW5hbWUpKHBhdGgpO1xuICAgICAgICAgICAgdGhpcy53cmFwQXN5bmModGhpcy5fY29yZS51bmxpbmssIFtmaWxlbmFtZV0sIGNhbGxiYWNrKTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGB0eXBlYCBhcmd1bWVudCB3b3JrcyBvbmx5IG9uIFdpbmRvd3MuXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXRcbiAgICAgICAgICogQHBhcmFtIHBhdGhcbiAgICAgICAgICogQHBhcmFtIHR5cGVcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuc3ltbGlua1N5bmMgPSAodGFyZ2V0LCBwYXRoLCB0eXBlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXRGaWxlbmFtZSA9ICgwLCB1dGlsXzMucGF0aFRvRmlsZW5hbWUpKHRhcmdldCk7XG4gICAgICAgICAgICBjb25zdCBwYXRoRmlsZW5hbWUgPSAoMCwgdXRpbF8zLnBhdGhUb0ZpbGVuYW1lKShwYXRoKTtcbiAgICAgICAgICAgIHRoaXMuX2NvcmUuc3ltbGluayh0YXJnZXRGaWxlbmFtZSwgcGF0aEZpbGVuYW1lKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zeW1saW5rID0gKHRhcmdldCwgcGF0aCwgYSwgYikgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2FsbGJhY2sgPSAoMCwgdXRpbF8zLnZhbGlkYXRlQ2FsbGJhY2spKHR5cGVvZiBhID09PSAnZnVuY3Rpb24nID8gYSA6IGIpO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0RmlsZW5hbWUgPSAoMCwgdXRpbF8zLnBhdGhUb0ZpbGVuYW1lKSh0YXJnZXQpO1xuICAgICAgICAgICAgY29uc3QgcGF0aEZpbGVuYW1lID0gKDAsIHV0aWxfMy5wYXRoVG9GaWxlbmFtZSkocGF0aCk7XG4gICAgICAgICAgICB0aGlzLndyYXBBc3luYyh0aGlzLl9jb3JlLnN5bWxpbmssIFt0YXJnZXRGaWxlbmFtZSwgcGF0aEZpbGVuYW1lXSwgY2FsbGJhY2spO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9sc3RhdCA9IChmaWxlbmFtZSwgYmlnaW50ID0gZmFsc2UsIHRocm93SWZOb0VudHJ5ID0gZmFsc2UpID0+IHtcbiAgICAgICAgICAgIGxldCBsaW5rO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsaW5rID0gdGhpcy5fY29yZS5nZXRMaW5rT3JUaHJvdyhmaWxlbmFtZSwgJ2xzdGF0Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVyci5jb2RlID09PSBcIkVOT0VOVFwiIC8qIEVSUk9SX0NPREUuRU5PRU5UICovICYmICF0aHJvd0lmTm9FbnRyeSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBTdGF0c18xLmRlZmF1bHQuYnVpbGQobGluay5nZXROb2RlKCksIGJpZ2ludCk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMubHN0YXRTeW5jID0gKHBhdGgsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgdGhyb3dJZk5vRW50cnkgPSB0cnVlLCBiaWdpbnQgPSBmYWxzZSB9ID0gKDAsIG9wdGlvbnNfMS5nZXRTdGF0T3B0aW9ucykob3B0aW9ucyk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbHN0YXQoKDAsIHV0aWxfMy5wYXRoVG9GaWxlbmFtZSkocGF0aCksIGJpZ2ludCwgdGhyb3dJZk5vRW50cnkpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJlbmFtZVN5bmMgPSAob2xkUGF0aCwgbmV3UGF0aCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb2xkUGF0aEZpbGVuYW1lID0gKDAsIHV0aWxfMy5wYXRoVG9GaWxlbmFtZSkob2xkUGF0aCk7XG4gICAgICAgICAgICBjb25zdCBuZXdQYXRoRmlsZW5hbWUgPSAoMCwgdXRpbF8zLnBhdGhUb0ZpbGVuYW1lKShuZXdQYXRoKTtcbiAgICAgICAgICAgIHRoaXMuX2NvcmUucmVuYW1lKG9sZFBhdGhGaWxlbmFtZSwgbmV3UGF0aEZpbGVuYW1lKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5yZW5hbWUgPSAob2xkUGF0aCwgbmV3UGF0aCwgY2FsbGJhY2spID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9sZFBhdGhGaWxlbmFtZSA9ICgwLCB1dGlsXzMucGF0aFRvRmlsZW5hbWUpKG9sZFBhdGgpO1xuICAgICAgICAgICAgY29uc3QgbmV3UGF0aEZpbGVuYW1lID0gKDAsIHV0aWxfMy5wYXRoVG9GaWxlbmFtZSkobmV3UGF0aCk7XG4gICAgICAgICAgICB0aGlzLndyYXBBc3luYyh0aGlzLl9jb3JlLnJlbmFtZSwgW29sZFBhdGhGaWxlbmFtZSwgbmV3UGF0aEZpbGVuYW1lXSwgY2FsbGJhY2spO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmV4aXN0c1N5bmMgPSAocGF0aCkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZXhpc3RzKCgwLCB1dGlsXzMucGF0aFRvRmlsZW5hbWUpKHBhdGgpKS5vaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZXhpc3RzID0gKHBhdGgsIGNhbGxiYWNrKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWxlbmFtZSA9ICgwLCB1dGlsXzMucGF0aFRvRmlsZW5hbWUpKHBhdGgpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihmc19ub2RlX3V0aWxzXzIuRVJSU1RSLkNCKTtcbiAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMuX2V4aXN0cyhmaWxlbmFtZSkub2spO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5hY2Nlc3NTeW5jID0gKHBhdGgsIG1vZGUgPSBGX09LKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWxlbmFtZSA9ICgwLCB1dGlsXzMucGF0aFRvRmlsZW5hbWUpKHBhdGgpO1xuICAgICAgICAgICAgbW9kZSA9IG1vZGUgfCAwO1xuICAgICAgICAgICAgdGhpcy5fYWNjZXNzKGZpbGVuYW1lLCBtb2RlKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5hY2Nlc3MgPSAocGF0aCwgYSwgYikgPT4ge1xuICAgICAgICAgICAgbGV0IG1vZGUgPSBGX09LO1xuICAgICAgICAgICAgbGV0IGNhbGxiYWNrO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBhICE9PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgICAgIFttb2RlLCBjYWxsYmFja10gPSBbYSB8IDAsICgwLCB1dGlsXzMudmFsaWRhdGVDYWxsYmFjaykoYildO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gYTtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gKDAsIHV0aWxfMy5wYXRoVG9GaWxlbmFtZSkocGF0aCk7XG4gICAgICAgICAgICB0aGlzLndyYXBBc3luYyh0aGlzLl9hY2Nlc3MsIFtmaWxlbmFtZSwgbW9kZV0sIGNhbGxiYWNrKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5hcHBlbmRGaWxlU3luYyA9IChpZCwgZGF0YSwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb3B0cyA9ICgwLCBvcHRpb25zXzEuZ2V0QXBwZW5kRmlsZU9wdHMpKG9wdGlvbnMpO1xuICAgICAgICAgICAgLy8gRm9yY2UgYXBwZW5kIGJlaGF2aW9yIHdoZW4gdXNpbmcgYSBzdXBwbGllZCBmaWxlIGRlc2NyaXB0b3IuXG4gICAgICAgICAgICBpZiAoIW9wdHMuZmxhZyB8fCAoMCwgZnNfY29yZV8xLmlzRmQpKGlkKSlcbiAgICAgICAgICAgICAgICBvcHRzLmZsYWcgPSAnYSc7XG4gICAgICAgICAgICB0aGlzLndyaXRlRmlsZVN5bmMoaWQsIGRhdGEsIG9wdHMpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmFwcGVuZEZpbGUgPSAoaWQsIGRhdGEsIGEsIGIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IFtvcHRzLCBjYWxsYmFja10gPSAoMCwgb3B0aW9uc18xLmdldEFwcGVuZEZpbGVPcHRzQW5kQ2IpKGEsIGIpO1xuICAgICAgICAgICAgLy8gRm9yY2UgYXBwZW5kIGJlaGF2aW9yIHdoZW4gdXNpbmcgYSBzdXBwbGllZCBmaWxlIGRlc2NyaXB0b3IuXG4gICAgICAgICAgICBpZiAoIW9wdHMuZmxhZyB8fCAoMCwgZnNfY29yZV8xLmlzRmQpKGlkKSlcbiAgICAgICAgICAgICAgICBvcHRzLmZsYWcgPSAnYSc7XG4gICAgICAgICAgICB0aGlzLndyaXRlRmlsZShpZCwgZGF0YSwgb3B0cywgY2FsbGJhY2spO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9yZWFkZGlyID0gKGZpbGVuYW1lLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdGVwcyA9ICgwLCBmc19jb3JlXzEuZmlsZW5hbWVUb1N0ZXBzKShmaWxlbmFtZSk7XG4gICAgICAgICAgICBjb25zdCBsaW5rID0gdGhpcy5fY29yZS5nZXRSZXNvbHZlZExpbmtPclRocm93KGZpbGVuYW1lLCAnc2NhbmRpcicpO1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IGxpbmsuZ2V0Tm9kZSgpO1xuICAgICAgICAgICAgaWYgKCFub2RlLmlzRGlyZWN0b3J5KCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMy5jcmVhdGVFcnJvcikoXCJFTk9URElSXCIgLyogRVJST1JfQ09ERS5FTk9URElSICovLCAnc2NhbmRpcicsIGZpbGVuYW1lKTtcbiAgICAgICAgICAgIC8vIENoZWNrIHdlIGhhdmUgcGVybWlzc2lvbnNcbiAgICAgICAgICAgIGlmICghbm9kZS5jYW5SZWFkKCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMy5jcmVhdGVFcnJvcikoXCJFQUNDRVNcIiAvKiBFUlJPUl9DT0RFLkVBQ0NFUyAqLywgJ3NjYW5kaXInLCBmaWxlbmFtZSk7XG4gICAgICAgICAgICBjb25zdCBsaXN0ID0gW107IC8vIG91dHB1dCBsaXN0XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgbGluay5jaGlsZHJlbi5rZXlzKCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZCA9IGxpbmsuZ2V0Q2hpbGQobmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKCFjaGlsZCB8fCBuYW1lID09PSAnLicgfHwgbmFtZSA9PT0gJy4uJylcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgbGlzdC5wdXNoKERpcmVudF8xLmRlZmF1bHQuYnVpbGQoY2hpbGQsIG9wdGlvbnMuZW5jb2RpbmcpKTtcbiAgICAgICAgICAgICAgICAvLyByZWN1cnNpb25cbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5yZWN1cnNpdmUgJiYgY2hpbGQuY2hpbGRyZW4uc2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWN1cnNlT3B0aW9ucyA9IHsgLi4ub3B0aW9ucywgcmVjdXJzaXZlOiB0cnVlLCB3aXRoRmlsZVR5cGVzOiB0cnVlIH07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkTGlzdCA9IHRoaXMuX3JlYWRkaXIoY2hpbGQuZ2V0UGF0aCgpLCByZWN1cnNlT3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIGxpc3QucHVzaCguLi5jaGlsZExpc3QpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdXRpbF8xLmlzV2luICYmIG9wdGlvbnMuZW5jb2RpbmcgIT09ICdidWZmZXInKVxuICAgICAgICAgICAgICAgIGxpc3Quc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYS5uYW1lIDwgYi5uYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYS5uYW1lID4gYi5uYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMud2l0aEZpbGVUeXBlcylcbiAgICAgICAgICAgICAgICByZXR1cm4gbGlzdDtcbiAgICAgICAgICAgIGxldCBmaWxlbmFtZTIgPSBmaWxlbmFtZTtcbiAgICAgICAgICAgIGlmICh1dGlsXzEuaXNXaW4pXG4gICAgICAgICAgICAgICAgZmlsZW5hbWUyID0gZmlsZW5hbWUyLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcbiAgICAgICAgICAgIHJldHVybiBsaXN0Lm1hcChkaXJlbnQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnJlY3Vyc2l2ZSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZnVsbFBhdGggPSBwYXRoSm9pbihkaXJlbnQucGFyZW50UGF0aCwgZGlyZW50Lm5hbWUudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh1dGlsXzEuaXNXaW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxQYXRoID0gZnVsbFBhdGgucmVwbGFjZSgvXFxcXC9nLCAnLycpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmdWxsUGF0aC5yZXBsYWNlKGZpbGVuYW1lMiArIHBhdGhfMS5wb3NpeC5zZXAsICcnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRpcmVudC5uYW1lO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucmVhZGRpclN5bmMgPSAocGF0aCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb3B0cyA9ICgwLCBvcHRpb25zXzEuZ2V0UmVhZGRpck9wdGlvbnMpKG9wdGlvbnMpO1xuICAgICAgICAgICAgY29uc3QgZmlsZW5hbWUgPSAoMCwgdXRpbF8zLnBhdGhUb0ZpbGVuYW1lKShwYXRoKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZWFkZGlyKGZpbGVuYW1lLCBvcHRzKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5yZWFkZGlyID0gKHBhdGgsIGEsIGIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IFtvcHRpb25zLCBjYWxsYmFja10gPSAoMCwgb3B0aW9uc18xLmdldFJlYWRkaXJPcHRzQW5kQ2IpKGEsIGIpO1xuICAgICAgICAgICAgY29uc3QgZmlsZW5hbWUgPSAoMCwgdXRpbF8zLnBhdGhUb0ZpbGVuYW1lKShwYXRoKTtcbiAgICAgICAgICAgIHRoaXMud3JhcEFzeW5jKHRoaXMuX3JlYWRkaXIsIFtmaWxlbmFtZSwgb3B0aW9uc10sIGNhbGxiYWNrKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5fcmVhZGxpbmsgPSAoZmlsZW5hbWUsIGVuY29kaW5nKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsaW5rID0gdGhpcy5fY29yZS5nZXRMaW5rT3JUaHJvdyhmaWxlbmFtZSwgJ3JlYWRsaW5rJyk7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gbGluay5nZXROb2RlKCk7XG4gICAgICAgICAgICBpZiAoIW5vZGUuaXNTeW1saW5rKCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMy5jcmVhdGVFcnJvcikoXCJFSU5WQUxcIiAvKiBFUlJPUl9DT0RFLkVJTlZBTCAqLywgJ3JlYWRsaW5rJywgZmlsZW5hbWUpO1xuICAgICAgICAgICAgcmV0dXJuICgwLCBmc19ub2RlX3V0aWxzXzEuc3RyVG9FbmNvZGluZykobm9kZS5zeW1saW5rLCBlbmNvZGluZyk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucmVhZGxpbmtTeW5jID0gKHBhdGgsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9wdHMgPSAoMCwgb3B0aW9uc18xLmdldERlZmF1bHRPcHRzKShvcHRpb25zKTtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gKDAsIHV0aWxfMy5wYXRoVG9GaWxlbmFtZSkocGF0aCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcmVhZGxpbmsoZmlsZW5hbWUsIG9wdHMuZW5jb2RpbmcpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJlYWRsaW5rID0gKHBhdGgsIGEsIGIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IFtvcHRzLCBjYWxsYmFja10gPSAoMCwgb3B0aW9uc18xLmdldERlZmF1bHRPcHRzQW5kQ2IpKGEsIGIpO1xuICAgICAgICAgICAgY29uc3QgZmlsZW5hbWUgPSAoMCwgdXRpbF8zLnBhdGhUb0ZpbGVuYW1lKShwYXRoKTtcbiAgICAgICAgICAgIHRoaXMud3JhcEFzeW5jKHRoaXMuX3JlYWRsaW5rLCBbZmlsZW5hbWUsIG9wdHMuZW5jb2RpbmddLCBjYWxsYmFjayk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX2ZzeW5jID0gKGZkKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jb3JlLmdldEZpbGVCeUZkT3JUaHJvdyhmZCwgJ2ZzeW5jJyk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZnN5bmNTeW5jID0gKGZkKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9mc3luYyhmZCk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZnN5bmMgPSAoZmQsIGNhbGxiYWNrKSA9PiB7XG4gICAgICAgICAgICB0aGlzLndyYXBBc3luYyh0aGlzLl9mc3luYywgW2ZkXSwgY2FsbGJhY2spO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9mZGF0YXN5bmMgPSAoZmQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2NvcmUuZ2V0RmlsZUJ5RmRPclRocm93KGZkLCAnZmRhdGFzeW5jJyk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZmRhdGFzeW5jU3luYyA9IChmZCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fZmRhdGFzeW5jKGZkKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5mZGF0YXN5bmMgPSAoZmQsIGNhbGxiYWNrKSA9PiB7XG4gICAgICAgICAgICB0aGlzLndyYXBBc3luYyh0aGlzLl9mZGF0YXN5bmMsIFtmZF0sIGNhbGxiYWNrKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5fZnRydW5jYXRlID0gKGZkLCBsZW4pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGUgPSB0aGlzLl9jb3JlLmdldEZpbGVCeUZkT3JUaHJvdyhmZCwgJ2Z0cnVuY2F0ZScpO1xuICAgICAgICAgICAgZmlsZS50cnVuY2F0ZShsZW4pO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmZ0cnVuY2F0ZVN5bmMgPSAoZmQsIGxlbikgPT4ge1xuICAgICAgICAgICAgdGhpcy5fZnRydW5jYXRlKGZkLCBsZW4pO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmZ0cnVuY2F0ZSA9IChmZCwgYSwgYikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGVuID0gdHlwZW9mIGEgPT09ICdudW1iZXInID8gYSA6IDA7XG4gICAgICAgICAgICBjb25zdCBjYWxsYmFjayA9ICgwLCB1dGlsXzMudmFsaWRhdGVDYWxsYmFjaykodHlwZW9mIGEgPT09ICdudW1iZXInID8gYiA6IGEpO1xuICAgICAgICAgICAgdGhpcy53cmFwQXN5bmModGhpcy5fZnRydW5jYXRlLCBbZmQsIGxlbl0sIGNhbGxiYWNrKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5fdHJ1bmNhdGUgPSAocGF0aCwgbGVuKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmZCA9IHRoaXMub3BlblN5bmMocGF0aCwgJ3IrJyk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHRoaXMuZnRydW5jYXRlU3luYyhmZCwgbGVuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VTeW5jKGZkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGBpZGAgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9yIGEgcGF0aC4gYGlkYCBhcyBmaWxlIGRlc2NyaXB0b3Igd2lsbFxuICAgICAgICAgKiBub3QgYmUgc3VwcG9ydGVkIHNvb24uXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnRydW5jYXRlU3luYyA9IChpZCwgbGVuKSA9PiB7XG4gICAgICAgICAgICBpZiAoKDAsIGZzX2NvcmVfMS5pc0ZkKShpZCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZnRydW5jYXRlU3luYyhpZCwgbGVuKTtcbiAgICAgICAgICAgIHRoaXMuX3RydW5jYXRlKGlkLCBsZW4pO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnRydW5jYXRlID0gKGlkLCBhLCBiKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsZW4gPSB0eXBlb2YgYSA9PT0gJ251bWJlcicgPyBhIDogMDtcbiAgICAgICAgICAgIGNvbnN0IGNhbGxiYWNrID0gKDAsIHV0aWxfMy52YWxpZGF0ZUNhbGxiYWNrKSh0eXBlb2YgYSA9PT0gJ251bWJlcicgPyBiIDogYSk7XG4gICAgICAgICAgICBpZiAoKDAsIGZzX2NvcmVfMS5pc0ZkKShpZCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZnRydW5jYXRlKGlkLCBsZW4sIGNhbGxiYWNrKTtcbiAgICAgICAgICAgIHRoaXMud3JhcEFzeW5jKHRoaXMuX3RydW5jYXRlLCBbaWQsIGxlbl0sIGNhbGxiYWNrKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5fZnV0aW1lcyA9IChmZCwgYXRpbWUsIG10aW1lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWxlID0gdGhpcy5fY29yZS5nZXRGaWxlQnlGZE9yVGhyb3coZmQsICdmdXRpbWVzJyk7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gZmlsZS5ub2RlO1xuICAgICAgICAgICAgbm9kZS5hdGltZSA9IG5ldyBEYXRlKGF0aW1lICogMTAwMCk7XG4gICAgICAgICAgICBub2RlLm10aW1lID0gbmV3IERhdGUobXRpbWUgKiAxMDAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5mdXRpbWVzU3luYyA9IChmZCwgYXRpbWUsIG10aW1lKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9mdXRpbWVzKGZkLCB0b1VuaXhUaW1lc3RhbXAoYXRpbWUpLCB0b1VuaXhUaW1lc3RhbXAobXRpbWUpKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5mdXRpbWVzID0gKGZkLCBhdGltZSwgbXRpbWUsIGNhbGxiYWNrKSA9PiB7XG4gICAgICAgICAgICB0aGlzLndyYXBBc3luYyh0aGlzLl9mdXRpbWVzLCBbZmQsIHRvVW5peFRpbWVzdGFtcChhdGltZSksIHRvVW5peFRpbWVzdGFtcChtdGltZSldLCBjYWxsYmFjayk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX3V0aW1lcyA9IChmaWxlbmFtZSwgYXRpbWUsIG10aW1lLCBmb2xsb3dTeW1saW5rcyA9IHRydWUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvcmUgPSB0aGlzLl9jb3JlO1xuICAgICAgICAgICAgY29uc3QgbGluayA9IGZvbGxvd1N5bWxpbmtzXG4gICAgICAgICAgICAgICAgPyBjb3JlLmdldFJlc29sdmVkTGlua09yVGhyb3coZmlsZW5hbWUsICd1dGltZXMnKVxuICAgICAgICAgICAgICAgIDogY29yZS5nZXRMaW5rT3JUaHJvdyhmaWxlbmFtZSwgJ2x1dGltZXMnKTtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBsaW5rLmdldE5vZGUoKTtcbiAgICAgICAgICAgIG5vZGUuYXRpbWUgPSBuZXcgRGF0ZShhdGltZSAqIDEwMDApO1xuICAgICAgICAgICAgbm9kZS5tdGltZSA9IG5ldyBEYXRlKG10aW1lICogMTAwMCk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudXRpbWVzU3luYyA9IChwYXRoLCBhdGltZSwgbXRpbWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3V0aW1lcygoMCwgdXRpbF8zLnBhdGhUb0ZpbGVuYW1lKShwYXRoKSwgdG9Vbml4VGltZXN0YW1wKGF0aW1lKSwgdG9Vbml4VGltZXN0YW1wKG10aW1lKSwgdHJ1ZSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudXRpbWVzID0gKHBhdGgsIGF0aW1lLCBtdGltZSwgY2FsbGJhY2spID0+IHtcbiAgICAgICAgICAgIHRoaXMud3JhcEFzeW5jKHRoaXMuX3V0aW1lcywgWygwLCB1dGlsXzMucGF0aFRvRmlsZW5hbWUpKHBhdGgpLCB0b1VuaXhUaW1lc3RhbXAoYXRpbWUpLCB0b1VuaXhUaW1lc3RhbXAobXRpbWUpLCB0cnVlXSwgY2FsbGJhY2spO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmx1dGltZXNTeW5jID0gKHBhdGgsIGF0aW1lLCBtdGltZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdXRpbWVzKCgwLCB1dGlsXzMucGF0aFRvRmlsZW5hbWUpKHBhdGgpLCB0b1VuaXhUaW1lc3RhbXAoYXRpbWUpLCB0b1VuaXhUaW1lc3RhbXAobXRpbWUpLCBmYWxzZSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMubHV0aW1lcyA9IChwYXRoLCBhdGltZSwgbXRpbWUsIGNhbGxiYWNrKSA9PiB7XG4gICAgICAgICAgICB0aGlzLndyYXBBc3luYyh0aGlzLl91dGltZXMsIFsoMCwgdXRpbF8zLnBhdGhUb0ZpbGVuYW1lKShwYXRoKSwgdG9Vbml4VGltZXN0YW1wKGF0aW1lKSwgdG9Vbml4VGltZXN0YW1wKG10aW1lKSwgZmFsc2VdLCBjYWxsYmFjayk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMubWtkaXJTeW5jID0gKHBhdGgsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9wdHMgPSAoMCwgb3B0aW9uc18xLmdldE1rZGlyT3B0aW9ucykob3B0aW9ucyk7XG4gICAgICAgICAgICBjb25zdCBtb2RlTnVtID0gKDAsIHV0aWxfMy5tb2RlVG9OdW1iZXIpKG9wdHMubW9kZSwgMG83NzcpO1xuICAgICAgICAgICAgY29uc3QgZmlsZW5hbWUgPSAoMCwgdXRpbF8zLnBhdGhUb0ZpbGVuYW1lKShwYXRoKTtcbiAgICAgICAgICAgIGlmIChvcHRzLnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY29yZS5ta2RpcnAoZmlsZW5hbWUsIG1vZGVOdW0pO1xuICAgICAgICAgICAgdGhpcy5fY29yZS5ta2RpcihmaWxlbmFtZSwgbW9kZU51bSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMubWtkaXIgPSAocGF0aCwgYSwgYikgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb3B0cyA9ICgwLCBvcHRpb25zXzEuZ2V0TWtkaXJPcHRpb25zKShhKTtcbiAgICAgICAgICAgIGNvbnN0IGNhbGxiYWNrID0gKDAsIHV0aWxfMy52YWxpZGF0ZUNhbGxiYWNrKSh0eXBlb2YgYSA9PT0gJ2Z1bmN0aW9uJyA/IGEgOiBiKTtcbiAgICAgICAgICAgIGNvbnN0IG1vZGVOdW0gPSAoMCwgdXRpbF8zLm1vZGVUb051bWJlcikob3B0cy5tb2RlLCAwbzc3Nyk7XG4gICAgICAgICAgICBjb25zdCBmaWxlbmFtZSA9ICgwLCB1dGlsXzMucGF0aFRvRmlsZW5hbWUpKHBhdGgpO1xuICAgICAgICAgICAgaWYgKG9wdHMucmVjdXJzaXZlKVxuICAgICAgICAgICAgICAgIHRoaXMud3JhcEFzeW5jKHRoaXMuX2NvcmUubWtkaXJwLCBbZmlsZW5hbWUsIG1vZGVOdW1dLCBjYWxsYmFjayk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdGhpcy53cmFwQXN5bmModGhpcy5fY29yZS5ta2RpciwgW2ZpbGVuYW1lLCBtb2RlTnVtXSwgY2FsbGJhY2spO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9ta2R0ZW1wID0gKHByZWZpeCwgZW5jb2RpbmcsIHJldHJ5ID0gNSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmlsZW5hbWUgPSBwcmVmaXggKyAoMCwgdXRpbF8zLmdlblJuZFN0cjYpKCk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NvcmUubWtkaXIoZmlsZW5hbWUsIDUxMSAvKiBNT0RFLkRJUiAqLyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuICgwLCBmc19ub2RlX3V0aWxzXzEuc3RyVG9FbmNvZGluZykoZmlsZW5hbWUsIGVuY29kaW5nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyLmNvZGUgPT09IFwiRUVYSVNUXCIgLyogRVJST1JfQ09ERS5FRVhJU1QgKi8pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJldHJ5ID4gMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9ta2R0ZW1wKHByZWZpeCwgZW5jb2RpbmcsIHJldHJ5IC0gMSk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCdDb3VsZCBub3QgY3JlYXRlIHRlbXAgZGlyLicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5ta2R0ZW1wU3luYyA9IChwcmVmaXgsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgZW5jb2RpbmcgfSA9ICgwLCBvcHRpb25zXzEuZ2V0RGVmYXVsdE9wdHMpKG9wdGlvbnMpO1xuICAgICAgICAgICAgaWYgKCFwcmVmaXggfHwgdHlwZW9mIHByZWZpeCAhPT0gJ3N0cmluZycpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZmlsZW5hbWUgcHJlZml4IGlzIHJlcXVpcmVkJyk7XG4gICAgICAgICAgICAoMCwgdXRpbF8zLm51bGxDaGVjaykocHJlZml4KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9ta2R0ZW1wKHByZWZpeCwgZW5jb2RpbmcpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLm1rZHRlbXAgPSAocHJlZml4LCBhLCBiKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBbeyBlbmNvZGluZyB9LCBjYWxsYmFja10gPSAoMCwgb3B0aW9uc18xLmdldERlZmF1bHRPcHRzQW5kQ2IpKGEsIGIpO1xuICAgICAgICAgICAgaWYgKCFwcmVmaXggfHwgdHlwZW9mIHByZWZpeCAhPT0gJ3N0cmluZycpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZmlsZW5hbWUgcHJlZml4IGlzIHJlcXVpcmVkJyk7XG4gICAgICAgICAgICBpZiAoISgwLCB1dGlsXzMubnVsbENoZWNrKShwcmVmaXgpKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIHRoaXMud3JhcEFzeW5jKHRoaXMuX21rZHRlbXAsIFtwcmVmaXgsIGVuY29kaW5nXSwgY2FsbGJhY2spO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJtZGlyU3luYyA9IChwYXRoLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvcHRzID0gKDAsIG9wdGlvbnNfMS5nZXRSbWRpck9wdGlvbnMpKG9wdGlvbnMpO1xuICAgICAgICAgICAgdGhpcy5fY29yZS5ybWRpcigoMCwgdXRpbF8zLnBhdGhUb0ZpbGVuYW1lKShwYXRoKSwgb3B0cy5yZWN1cnNpdmUpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJtZGlyID0gKHBhdGgsIGEsIGIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9wdHMgPSAoMCwgb3B0aW9uc18xLmdldFJtZGlyT3B0aW9ucykoYSk7XG4gICAgICAgICAgICBjb25zdCBjYWxsYmFjayA9ICgwLCB1dGlsXzMudmFsaWRhdGVDYWxsYmFjaykodHlwZW9mIGEgPT09ICdmdW5jdGlvbicgPyBhIDogYik7XG4gICAgICAgICAgICB0aGlzLndyYXBBc3luYyh0aGlzLl9jb3JlLnJtZGlyLCBbKDAsIHV0aWxfMy5wYXRoVG9GaWxlbmFtZSkocGF0aCksIG9wdHMucmVjdXJzaXZlXSwgY2FsbGJhY2spO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJtU3luYyA9IChwYXRoLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jb3JlLnJtKCgwLCB1dGlsXzMucGF0aFRvRmlsZW5hbWUpKHBhdGgpLCBvcHRpb25zPy5mb3JjZSwgb3B0aW9ucz8ucmVjdXJzaXZlKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5ybSA9IChwYXRoLCBhLCBiKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBbb3B0cywgY2FsbGJhY2tdID0gKDAsIG9wdGlvbnNfMS5nZXRSbU9wdHNBbmRDYikoYSwgYik7XG4gICAgICAgICAgICB0aGlzLndyYXBBc3luYyh0aGlzLl9jb3JlLnJtLCBbKDAsIHV0aWxfMy5wYXRoVG9GaWxlbmFtZSkocGF0aCksIG9wdHM/LmZvcmNlLCBvcHRzPy5yZWN1cnNpdmVdLCBjYWxsYmFjayk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX2ZjaG1vZCA9IChmZCwgbW9kZU51bSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmlsZSA9IHRoaXMuX2NvcmUuZ2V0RmlsZUJ5RmRPclRocm93KGZkLCAnZmNobW9kJyk7XG4gICAgICAgICAgICBmaWxlLmNobW9kKG1vZGVOdW0pO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmZjaG1vZFN5bmMgPSAoZmQsIG1vZGUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2ZjaG1vZChmZCwgKDAsIHV0aWxfMy5tb2RlVG9OdW1iZXIpKG1vZGUpKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5mY2htb2QgPSAoZmQsIG1vZGUsIGNhbGxiYWNrKSA9PiB7XG4gICAgICAgICAgICB0aGlzLndyYXBBc3luYyh0aGlzLl9mY2htb2QsIFtmZCwgKDAsIHV0aWxfMy5tb2RlVG9OdW1iZXIpKG1vZGUpXSwgY2FsbGJhY2spO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9jaG1vZCA9IChmaWxlbmFtZSwgbW9kZU51bSwgZm9sbG93U3ltbGlua3MgPSB0cnVlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsaW5rID0gZm9sbG93U3ltbGlua3NcbiAgICAgICAgICAgICAgICA/IHRoaXMuX2NvcmUuZ2V0UmVzb2x2ZWRMaW5rT3JUaHJvdyhmaWxlbmFtZSwgJ2NobW9kJylcbiAgICAgICAgICAgICAgICA6IHRoaXMuX2NvcmUuZ2V0TGlua09yVGhyb3coZmlsZW5hbWUsICdjaG1vZCcpO1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IGxpbmsuZ2V0Tm9kZSgpO1xuICAgICAgICAgICAgbm9kZS5jaG1vZChtb2RlTnVtKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jaG1vZFN5bmMgPSAocGF0aCwgbW9kZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbW9kZU51bSA9ICgwLCB1dGlsXzMubW9kZVRvTnVtYmVyKShtb2RlKTtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gKDAsIHV0aWxfMy5wYXRoVG9GaWxlbmFtZSkocGF0aCk7XG4gICAgICAgICAgICB0aGlzLl9jaG1vZChmaWxlbmFtZSwgbW9kZU51bSwgdHJ1ZSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuY2htb2QgPSAocGF0aCwgbW9kZSwgY2FsbGJhY2spID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1vZGVOdW0gPSAoMCwgdXRpbF8zLm1vZGVUb051bWJlcikobW9kZSk7XG4gICAgICAgICAgICBjb25zdCBmaWxlbmFtZSA9ICgwLCB1dGlsXzMucGF0aFRvRmlsZW5hbWUpKHBhdGgpO1xuICAgICAgICAgICAgdGhpcy53cmFwQXN5bmModGhpcy5fY2htb2QsIFtmaWxlbmFtZSwgbW9kZU51bV0sIGNhbGxiYWNrKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5fbGNobW9kID0gKGZpbGVuYW1lLCBtb2RlTnVtKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jaG1vZChmaWxlbmFtZSwgbW9kZU51bSwgZmFsc2UpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmxjaG1vZFN5bmMgPSAocGF0aCwgbW9kZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbW9kZU51bSA9ICgwLCB1dGlsXzMubW9kZVRvTnVtYmVyKShtb2RlKTtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gKDAsIHV0aWxfMy5wYXRoVG9GaWxlbmFtZSkocGF0aCk7XG4gICAgICAgICAgICB0aGlzLl9sY2htb2QoZmlsZW5hbWUsIG1vZGVOdW0pO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmxjaG1vZCA9IChwYXRoLCBtb2RlLCBjYWxsYmFjaykgPT4ge1xuICAgICAgICAgICAgY29uc3QgbW9kZU51bSA9ICgwLCB1dGlsXzMubW9kZVRvTnVtYmVyKShtb2RlKTtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gKDAsIHV0aWxfMy5wYXRoVG9GaWxlbmFtZSkocGF0aCk7XG4gICAgICAgICAgICB0aGlzLndyYXBBc3luYyh0aGlzLl9sY2htb2QsIFtmaWxlbmFtZSwgbW9kZU51bV0sIGNhbGxiYWNrKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5fZmNob3duID0gKGZkLCB1aWQsIGdpZCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY29yZS5nZXRGaWxlQnlGZE9yVGhyb3coZmQsICdmY2hvd24nKS5jaG93bih1aWQsIGdpZCk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZmNob3duU3luYyA9IChmZCwgdWlkLCBnaWQpID0+IHtcbiAgICAgICAgICAgIHZhbGlkYXRlVWlkKHVpZCk7XG4gICAgICAgICAgICB2YWxpZGF0ZUdpZChnaWQpO1xuICAgICAgICAgICAgdGhpcy5fZmNob3duKGZkLCB1aWQsIGdpZCk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZmNob3duID0gKGZkLCB1aWQsIGdpZCwgY2FsbGJhY2spID0+IHtcbiAgICAgICAgICAgIHZhbGlkYXRlVWlkKHVpZCk7XG4gICAgICAgICAgICB2YWxpZGF0ZUdpZChnaWQpO1xuICAgICAgICAgICAgdGhpcy53cmFwQXN5bmModGhpcy5fZmNob3duLCBbZmQsIHVpZCwgZ2lkXSwgY2FsbGJhY2spO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9jaG93biA9IChmaWxlbmFtZSwgdWlkLCBnaWQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmsgPSB0aGlzLl9jb3JlLmdldFJlc29sdmVkTGlua09yVGhyb3coZmlsZW5hbWUsICdjaG93bicpO1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IGxpbmsuZ2V0Tm9kZSgpO1xuICAgICAgICAgICAgbm9kZS5jaG93bih1aWQsIGdpZCk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuY2hvd25TeW5jID0gKHBhdGgsIHVpZCwgZ2lkKSA9PiB7XG4gICAgICAgICAgICB2YWxpZGF0ZVVpZCh1aWQpO1xuICAgICAgICAgICAgdmFsaWRhdGVHaWQoZ2lkKTtcbiAgICAgICAgICAgIHRoaXMuX2Nob3duKCgwLCB1dGlsXzMucGF0aFRvRmlsZW5hbWUpKHBhdGgpLCB1aWQsIGdpZCk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuY2hvd24gPSAocGF0aCwgdWlkLCBnaWQsIGNhbGxiYWNrKSA9PiB7XG4gICAgICAgICAgICB2YWxpZGF0ZVVpZCh1aWQpO1xuICAgICAgICAgICAgdmFsaWRhdGVHaWQoZ2lkKTtcbiAgICAgICAgICAgIHRoaXMud3JhcEFzeW5jKHRoaXMuX2Nob3duLCBbKDAsIHV0aWxfMy5wYXRoVG9GaWxlbmFtZSkocGF0aCksIHVpZCwgZ2lkXSwgY2FsbGJhY2spO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9sY2hvd24gPSAoZmlsZW5hbWUsIHVpZCwgZ2lkKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jb3JlLmdldExpbmtPclRocm93KGZpbGVuYW1lLCAnbGNob3duJykuZ2V0Tm9kZSgpLmNob3duKHVpZCwgZ2lkKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5sY2hvd25TeW5jID0gKHBhdGgsIHVpZCwgZ2lkKSA9PiB7XG4gICAgICAgICAgICB2YWxpZGF0ZVVpZCh1aWQpO1xuICAgICAgICAgICAgdmFsaWRhdGVHaWQoZ2lkKTtcbiAgICAgICAgICAgIHRoaXMuX2xjaG93bigoMCwgdXRpbF8zLnBhdGhUb0ZpbGVuYW1lKShwYXRoKSwgdWlkLCBnaWQpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmxjaG93biA9IChwYXRoLCB1aWQsIGdpZCwgY2FsbGJhY2spID0+IHtcbiAgICAgICAgICAgIHZhbGlkYXRlVWlkKHVpZCk7XG4gICAgICAgICAgICB2YWxpZGF0ZUdpZChnaWQpO1xuICAgICAgICAgICAgdGhpcy53cmFwQXN5bmModGhpcy5fbGNob3duLCBbKDAsIHV0aWxfMy5wYXRoVG9GaWxlbmFtZSkocGF0aCksIHVpZCwgZ2lkXSwgY2FsbGJhY2spO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnN0YXRXYXRjaGVycyA9IHt9O1xuICAgICAgICB0aGlzLmNwU3luYyA9IChzcmMsIGRlc3QsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNyY0ZpbGVuYW1lID0gKDAsIHV0aWxfMy5wYXRoVG9GaWxlbmFtZSkoc3JjKTtcbiAgICAgICAgICAgIGNvbnN0IGRlc3RGaWxlbmFtZSA9ICgwLCB1dGlsXzMucGF0aFRvRmlsZW5hbWUpKGRlc3QpO1xuICAgICAgICAgICAgY29uc3Qgb3B0c18gPSB7XG4gICAgICAgICAgICAgICAgZGVyZWZlcmVuY2U6IG9wdGlvbnM/LmRlcmVmZXJlbmNlID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIGVycm9yT25FeGlzdDogb3B0aW9ucz8uZXJyb3JPbkV4aXN0ID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIGZpbHRlcjogb3B0aW9ucz8uZmlsdGVyLFxuICAgICAgICAgICAgICAgIGZvcmNlOiBvcHRpb25zPy5mb3JjZSA/PyB0cnVlLFxuICAgICAgICAgICAgICAgIG1vZGU6IG9wdGlvbnM/Lm1vZGUgPz8gMCxcbiAgICAgICAgICAgICAgICBwcmVzZXJ2ZVRpbWVzdGFtcHM6IG9wdGlvbnM/LnByZXNlcnZlVGltZXN0YW1wcyA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICByZWN1cnNpdmU6IG9wdGlvbnM/LnJlY3Vyc2l2ZSA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICB2ZXJiYXRpbVN5bWxpbmtzOiBvcHRpb25zPy52ZXJiYXRpbVN5bWxpbmtzID8/IGZhbHNlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jcChzcmNGaWxlbmFtZSwgZGVzdEZpbGVuYW1lLCBvcHRzXyk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuY3AgPSAoc3JjLCBkZXN0LCBhLCBiKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzcmNGaWxlbmFtZSA9ICgwLCB1dGlsXzMucGF0aFRvRmlsZW5hbWUpKHNyYyk7XG4gICAgICAgICAgICBjb25zdCBkZXN0RmlsZW5hbWUgPSAoMCwgdXRpbF8zLnBhdGhUb0ZpbGVuYW1lKShkZXN0KTtcbiAgICAgICAgICAgIGxldCBvcHRpb25zO1xuICAgICAgICAgICAgbGV0IGNhbGxiYWNrO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBhID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgICAgIFtvcHRpb25zLCBjYWxsYmFja10gPSBbe30sIGFdO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIFtvcHRpb25zLCBjYWxsYmFja10gPSBbYSB8fCB7fSwgYl07XG4gICAgICAgICAgICAoMCwgdXRpbF8zLnZhbGlkYXRlQ2FsbGJhY2spKGNhbGxiYWNrKTtcbiAgICAgICAgICAgIGNvbnN0IG9wdHNfID0ge1xuICAgICAgICAgICAgICAgIGRlcmVmZXJlbmNlOiBvcHRpb25zPy5kZXJlZmVyZW5jZSA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICBlcnJvck9uRXhpc3Q6IG9wdGlvbnM/LmVycm9yT25FeGlzdCA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICBmaWx0ZXI6IG9wdGlvbnM/LmZpbHRlcixcbiAgICAgICAgICAgICAgICBmb3JjZTogb3B0aW9ucz8uZm9yY2UgPz8gdHJ1ZSxcbiAgICAgICAgICAgICAgICBtb2RlOiBvcHRpb25zPy5tb2RlID8/IDAsXG4gICAgICAgICAgICAgICAgcHJlc2VydmVUaW1lc3RhbXBzOiBvcHRpb25zPy5wcmVzZXJ2ZVRpbWVzdGFtcHMgPz8gZmFsc2UsXG4gICAgICAgICAgICAgICAgcmVjdXJzaXZlOiBvcHRpb25zPy5yZWN1cnNpdmUgPz8gZmFsc2UsXG4gICAgICAgICAgICAgICAgdmVyYmF0aW1TeW1saW5rczogb3B0aW9ucz8udmVyYmF0aW1TeW1saW5rcyA/PyBmYWxzZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLndyYXBBc3luYyh0aGlzLl9jcCwgW3NyY0ZpbGVuYW1lLCBkZXN0RmlsZW5hbWUsIG9wdHNfXSwgY2FsbGJhY2spO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLm9wZW5Bc0Jsb2IgPSBhc3luYyAocGF0aCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmlsZW5hbWUgPSAoMCwgdXRpbF8zLnBhdGhUb0ZpbGVuYW1lKShwYXRoKTtcbiAgICAgICAgICAgIGxldCBsaW5rO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsaW5rID0gdGhpcy5fY29yZS5nZXRSZXNvbHZlZExpbmtPclRocm93KGZpbGVuYW1lLCAnb3BlbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgLy8gQ29udmVydCBFTk9FTlQgdG8gTm9kZS5qcy1jb21wYXRpYmxlIGVycm9yIGZvciBvcGVuQXNCbG9iXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yICYmIHR5cGVvZiBlcnJvciA9PT0gJ29iamVjdCcgJiYgZXJyb3IuY29kZSA9PT0gJ0VOT0VOVCcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZUVycm9yID0gbmV3IGVycm9ycy5UeXBlRXJyb3IoJ0VSUl9JTlZBTElEX0FSR19WQUxVRScpO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBub2RlRXJyb3I7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IGxpbmsuZ2V0Tm9kZSgpO1xuICAgICAgICAgICAgLy8gTm90ZTogTm9kZS5qcyBhbGxvd3Mgb3BlbmluZyBkaXJlY3RvcmllcyBhcyBibG9icywgc28gd2UgZG9uJ3QgdGhyb3cgRUlTRElSXG4gICAgICAgICAgICBjb25zdCBidWZmZXIgPSBub2RlLmdldEJ1ZmZlcigpO1xuICAgICAgICAgICAgY29uc3QgdHlwZSA9IG9wdGlvbnM/LnR5cGUgfHwgJyc7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEJsb2IoW2J1ZmZlcl0sIHsgdHlwZSB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5nbG9iID0gKHBhdHRlcm4sIC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IFtvcHRpb25zLCBjYWxsYmFja10gPSBhcmdzLmxlbmd0aCA9PT0gMSA/IFt7fSwgYXJnc1swXV0gOiBbYXJnc1swXSwgYXJnc1sxXV07XG4gICAgICAgICAgICB0aGlzLndyYXBBc3luYyh0aGlzLl9nbG9iU3luYywgW3BhdHRlcm4sIG9wdGlvbnMgfHwge31dLCBjYWxsYmFjayk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZ2xvYlN5bmMgPSAocGF0dGVybiwgb3B0aW9ucyA9IHt9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZ2xvYlN5bmMocGF0dGVybiwgb3B0aW9ucyk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX2dsb2JTeW5jID0gKHBhdHRlcm4sIG9wdGlvbnMgPSB7fSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBnbG9iU3luYyB9ID0gcmVxdWlyZSgnLi9nbG9iJyk7XG4gICAgICAgICAgICByZXR1cm4gZ2xvYlN5bmModGhpcywgcGF0dGVybiwgb3B0aW9ucyk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX29wZW5kaXIgPSAoZmlsZW5hbWUsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmsgPSB0aGlzLl9jb3JlLmdldFJlc29sdmVkTGlua09yVGhyb3coZmlsZW5hbWUsICdzY2FuZGlyJyk7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gbGluay5nZXROb2RlKCk7XG4gICAgICAgICAgICBpZiAoIW5vZGUuaXNEaXJlY3RvcnkoKSlcbiAgICAgICAgICAgICAgICB0aHJvdyAoMCwgdXRpbF8zLmNyZWF0ZUVycm9yKShcIkVOT1RESVJcIiAvKiBFUlJPUl9DT0RFLkVOT1RESVIgKi8sICdzY2FuZGlyJywgZmlsZW5hbWUpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEaXJfMS5EaXIobGluaywgb3B0aW9ucyk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMub3BlbmRpclN5bmMgPSAocGF0aCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb3B0cyA9ICgwLCBvcHRpb25zXzEuZ2V0T3BlbmRpck9wdGlvbnMpKG9wdGlvbnMpO1xuICAgICAgICAgICAgY29uc3QgZmlsZW5hbWUgPSAoMCwgdXRpbF8zLnBhdGhUb0ZpbGVuYW1lKShwYXRoKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9vcGVuZGlyKGZpbGVuYW1lLCBvcHRzKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5vcGVuZGlyID0gKHBhdGgsIGEsIGIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IFtvcHRpb25zLCBjYWxsYmFja10gPSAoMCwgb3B0aW9uc18xLmdldE9wZW5kaXJPcHRzQW5kQ2IpKGEsIGIpO1xuICAgICAgICAgICAgY29uc3QgZmlsZW5hbWUgPSAoMCwgdXRpbF8zLnBhdGhUb0ZpbGVuYW1lKShwYXRoKTtcbiAgICAgICAgICAgIHRoaXMud3JhcEFzeW5jKHRoaXMuX29wZW5kaXIsIFtmaWxlbmFtZSwgb3B0aW9uc10sIGNhbGxiYWNrKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7IC8vIHRzbGludDpkaXNhYmxlLWxpbmUgbm8tdGhpcy1hc3NpZ25tZW50XG4gICAgICAgIHRoaXMuU3RhdFdhdGNoZXIgPSBjbGFzcyBleHRlbmRzIFN0YXRXYXRjaGVyIHtcbiAgICAgICAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAgICAgICAgIHN1cGVyKHNlbGYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBfUmVhZFN0cmVhbSA9IEZzUmVhZFN0cmVhbTtcbiAgICAgICAgdGhpcy5SZWFkU3RyZWFtID0gY2xhc3MgZXh0ZW5kcyBfUmVhZFN0cmVhbSB7XG4gICAgICAgICAgICBjb25zdHJ1Y3RvciguLi5hcmdzKSB7XG4gICAgICAgICAgICAgICAgc3VwZXIoc2VsZiwgLi4uYXJncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IF9Xcml0ZVN0cmVhbSA9IEZzV3JpdGVTdHJlYW07XG4gICAgICAgIHRoaXMuV3JpdGVTdHJlYW0gPSBjbGFzcyBleHRlbmRzIF9Xcml0ZVN0cmVhbSB7XG4gICAgICAgICAgICBjb25zdHJ1Y3RvciguLi5hcmdzKSB7XG4gICAgICAgICAgICAgICAgc3VwZXIoc2VsZiwgLi4uYXJncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuRlNXYXRjaGVyID0gY2xhc3MgZXh0ZW5kcyBGU1dhdGNoZXIge1xuICAgICAgICAgICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgICAgICAgICAgc3VwZXIoc2VsZik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IF9yZWFscGF0aCA9IChmaWxlbmFtZSwgZW5jb2RpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlYWxMaW5rID0gdGhpcy5fY29yZS5nZXRSZXNvbHZlZExpbmtPclRocm93KGZpbGVuYW1lLCAncmVhbHBhdGgnKTtcbiAgICAgICAgICAgIHJldHVybiAoMCwgZnNfbm9kZV91dGlsc18xLnN0clRvRW5jb2RpbmcpKHJlYWxMaW5rLmdldFBhdGgoKSB8fCAnLycsIGVuY29kaW5nKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVhbHBhdGhJbXBsID0gKHBhdGgsIGEsIGIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IFtvcHRzLCBjYWxsYmFja10gPSAoMCwgb3B0aW9uc18xLmdldFJlYWxwYXRoT3B0c0FuZENiKShhLCBiKTtcbiAgICAgICAgICAgIGNvbnN0IHBhdGhGaWxlbmFtZSA9ICgwLCB1dGlsXzMucGF0aFRvRmlsZW5hbWUpKHBhdGgpO1xuICAgICAgICAgICAgc2VsZi53cmFwQXN5bmMoX3JlYWxwYXRoLCBbcGF0aEZpbGVuYW1lLCBvcHRzLmVuY29kaW5nXSwgY2FsbGJhY2spO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCByZWFscGF0aFN5bmNJbXBsID0gKHBhdGgsIG9wdGlvbnMpID0+IF9yZWFscGF0aCgoMCwgdXRpbF8zLnBhdGhUb0ZpbGVuYW1lKShwYXRoKSwgKDAsIG9wdGlvbnNfMS5nZXRSZWFscGF0aE9wdGlvbnMpKG9wdGlvbnMpLmVuY29kaW5nKTtcbiAgICAgICAgdGhpcy5yZWFscGF0aCA9IHJlYWxwYXRoSW1wbDtcbiAgICAgICAgdGhpcy5yZWFscGF0aC5uYXRpdmUgPSByZWFscGF0aEltcGw7XG4gICAgICAgIHRoaXMucmVhbHBhdGhTeW5jID0gcmVhbHBhdGhTeW5jSW1wbDtcbiAgICAgICAgdGhpcy5yZWFscGF0aFN5bmMubmF0aXZlID0gcmVhbHBhdGhTeW5jSW1wbDtcbiAgICB9XG4gICAgd3JhcEFzeW5jKG1ldGhvZCwgYXJncywgY2FsbGJhY2spIHtcbiAgICAgICAgKDAsIHV0aWxfMy52YWxpZGF0ZUNhbGxiYWNrKShjYWxsYmFjayk7XG4gICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgbGV0IHJlc3VsdDtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gbWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgcmVzdWx0KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJlc2V0KCkge1xuICAgICAgICB0aGlzLl9jb3JlLnJlc2V0KCk7XG4gICAgfVxuICAgIHRvSlNPTihwYXRocywganNvbiA9IHt9LCBpc1JlbGF0aXZlID0gZmFsc2UsIGFzQnVmZmVyID0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvcmUudG9KU09OKHBhdGhzLCBqc29uLCBpc1JlbGF0aXZlLCBhc0J1ZmZlcik7XG4gICAgfVxuICAgIGZyb21KU09OKGpzb24sIGN3ZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29yZS5mcm9tSlNPTihqc29uLCBjd2QpO1xuICAgIH1cbiAgICBmcm9tTmVzdGVkSlNPTihqc29uLCBjd2QpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvcmUuZnJvbU5lc3RlZEpTT04oanNvbiwgY3dkKTtcbiAgICB9XG4gICAgLy8gTGVnYWN5IGludGVyZmFjZVxuICAgIG1vdW50U3luYyhtb3VudHBvaW50LCBqc29uKSB7XG4gICAgICAgIHRoaXMuX2NvcmUuZnJvbUpTT04oanNvbiwgbW91bnRwb2ludCk7XG4gICAgfVxuICAgIF93cml0ZShmZCwgYnVmLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pIHtcbiAgICAgICAgY29uc3QgZmlsZSA9IHRoaXMuX2NvcmUuZ2V0RmlsZUJ5RmRPclRocm93KGZkLCAnd3JpdGUnKTtcbiAgICAgICAgaWYgKGZpbGUubm9kZS5pc1N5bWxpbmsoKSkge1xuICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMy5jcmVhdGVFcnJvcikoXCJFQkFERlwiIC8qIEVSUk9SX0NPREUuRUJBREYgKi8sICd3cml0ZScsIGZpbGUubGluay5nZXRQYXRoKCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWxlLndyaXRlKGJ1Ziwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uID09PSAtMSB8fCB0eXBlb2YgcG9zaXRpb24gIT09ICdudW1iZXInID8gdW5kZWZpbmVkIDogcG9zaXRpb24pO1xuICAgIH1cbiAgICB3cml0ZXZCYXNlKGZkLCBidWZmZXJzLCBwb3NpdGlvbikge1xuICAgICAgICBjb25zdCBmaWxlID0gdGhpcy5fY29yZS5nZXRGaWxlQnlGZE9yVGhyb3coZmQpO1xuICAgICAgICBsZXQgcCA9IHBvc2l0aW9uID8/IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHAgPT09IC0xKSB7XG4gICAgICAgICAgICBwID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGxldCBieXRlc1dyaXR0ZW4gPSAwO1xuICAgICAgICBmb3IgKGNvbnN0IGJ1ZmZlciBvZiBidWZmZXJzKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlQnVmID0gYnVmZmVyXzEuQnVmZmVyLmZyb20oYnVmZmVyLmJ1ZmZlciwgYnVmZmVyLmJ5dGVPZmZzZXQsIGJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgICAgICAgICAgIGNvbnN0IGJ5dGVzID0gZmlsZS53cml0ZShub2RlQnVmLCAwLCBub2RlQnVmLmJ5dGVMZW5ndGgsIHApO1xuICAgICAgICAgICAgcCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGJ5dGVzV3JpdHRlbiArPSBieXRlcztcbiAgICAgICAgICAgIGlmIChieXRlcyA8IG5vZGVCdWYuYnl0ZUxlbmd0aClcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYnl0ZXNXcml0dGVuO1xuICAgIH1cbiAgICBfY29weUZpbGUoc3JjLCBkZXN0LCBmbGFncykge1xuICAgICAgICBjb25zdCBidWYgPSB0aGlzLnJlYWRGaWxlU3luYyhzcmMpO1xuICAgICAgICBpZiAoZmxhZ3MgJiBDT1BZRklMRV9FWENMICYmIHRoaXMuZXhpc3RzU3luYyhkZXN0KSlcbiAgICAgICAgICAgIHRocm93ICgwLCB1dGlsXzMuY3JlYXRlRXJyb3IpKFwiRUVYSVNUXCIgLyogRVJST1JfQ09ERS5FRVhJU1QgKi8sICdjb3B5RmlsZScsIHNyYywgZGVzdCk7XG4gICAgICAgIGlmIChmbGFncyAmIENPUFlGSUxFX0ZJQ0xPTkVfRk9SQ0UpXG4gICAgICAgICAgICB0aHJvdyAoMCwgdXRpbF8zLmNyZWF0ZUVycm9yKShcIkVOT1NZU1wiIC8qIEVSUk9SX0NPREUuRU5PU1lTICovLCAnY29weUZpbGUnLCBzcmMsIGRlc3QpO1xuICAgICAgICB0aGlzLl9jb3JlLndyaXRlRmlsZShkZXN0LCBidWYsIGZzX25vZGVfdXRpbHNfMi5GTEFHUy53LCA0MzggLyogTU9ERS5ERUZBVUxUICovKTtcbiAgICB9XG4gICAgaXNTcmNTdWJkaXIoc3JjLCBkZXN0KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBub3JtYWxpemVkU3JjID0gcGF0aE5vcm1hbGl6ZShzcmMuc3RhcnRzV2l0aCgnLycpID8gc3JjIDogJy8nICsgc3JjKTtcbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWREZXN0ID0gcGF0aE5vcm1hbGl6ZShkZXN0LnN0YXJ0c1dpdGgoJy8nKSA/IGRlc3QgOiAnLycgKyBkZXN0KTtcbiAgICAgICAgICAgIGlmIChub3JtYWxpemVkU3JjID09PSBub3JtYWxpemVkRGVzdClcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIC8vIENoZWNrIGlmIGRlc3QgaXMgdW5kZXIgc3JjIGJ5IHVzaW5nIHJlbGF0aXZlIHBhdGhcbiAgICAgICAgICAgIC8vIElmIGRlc3QgaXMgdW5kZXIgc3JjLCB0aGUgcmVsYXRpdmUgcGF0aCBmcm9tIHNyYyB0byBkZXN0IHdvbid0IHN0YXJ0IHdpdGggJy4uJ1xuICAgICAgICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gcGF0aFJlbGF0aXZlKG5vcm1hbGl6ZWRTcmMsIG5vcm1hbGl6ZWREZXN0KTtcbiAgICAgICAgICAgIC8vIElmIHJlbGF0aXZlIHBhdGggaXMgZW1wdHkgb3IgZG9lc24ndCBzdGFydCB3aXRoICcuLicsIGRlc3QgaXMgdW5kZXIgc3JjXG4gICAgICAgICAgICByZXR1cm4gcmVsYXRpdmVQYXRoID09PSAnJyB8fCAoIXJlbGF0aXZlUGF0aC5zdGFydHNXaXRoKCcuLicpICYmICEoMCwgcGF0aF8xLmlzQWJzb2x1dGUpKHJlbGF0aXZlUGF0aCkpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgLy8gSWYgcGF0aCBvcGVyYXRpb25zIGZhaWwsIGFzc3VtZSBpdCdzIHNhZmUgKGRvbid0IGJsb2NrIHRoZSBjb3B5KVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNwRmlsZVN5bmMoc3JjU3RhdCwgZGVzdFN0YXQsIHNyYywgZGVzdCwgb3B0aW9ucykge1xuICAgICAgICBpZiAoZGVzdFN0YXQpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmVycm9yT25FeGlzdClcbiAgICAgICAgICAgICAgICB0aHJvdyAoMCwgdXRpbF8zLmNyZWF0ZUVycm9yKShcIkVFWElTVFwiIC8qIEVSUk9SX0NPREUuRUVYSVNUICovLCAnY3AnLCBkZXN0KTtcbiAgICAgICAgICAgIGlmICghb3B0aW9ucy5mb3JjZSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB0aGlzLnVubGlua1N5bmMoZGVzdCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ29weSB0aGUgZmlsZVxuICAgICAgICB0aGlzLmNvcHlGaWxlU3luYyhzcmMsIGRlc3QsIG9wdGlvbnMubW9kZSk7XG4gICAgICAgIC8vIFByZXNlcnZlIHRpbWVzdGFtcHMgaWYgcmVxdWVzdGVkXG4gICAgICAgIGlmIChvcHRpb25zLnByZXNlcnZlVGltZXN0YW1wcylcbiAgICAgICAgICAgIHRoaXMudXRpbWVzU3luYyhkZXN0LCBzcmNTdGF0LmF0aW1lLCBzcmNTdGF0Lm10aW1lKTtcbiAgICAgICAgLy8gU2V0IGZpbGUgbW9kZVxuICAgICAgICB0aGlzLmNobW9kU3luYyhkZXN0LCBOdW1iZXIoc3JjU3RhdC5tb2RlKSk7XG4gICAgfVxuICAgIGNwRGlyU3luYyhzcmNTdGF0LCBkZXN0U3RhdCwgc3JjLCBkZXN0LCBvcHRpb25zKSB7XG4gICAgICAgIGlmICghZGVzdFN0YXQpIHtcbiAgICAgICAgICAgIHRoaXMubWtkaXJTeW5jKGRlc3QpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlYWQgZGlyZWN0b3J5IGNvbnRlbnRzXG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSB0aGlzLnJlYWRkaXJTeW5jKHNyYyk7XG4gICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgICAgY29uc3Qgc3JjSXRlbSA9IHBhdGhKb2luKHNyYywgU3RyaW5nKGVudHJ5KSk7XG4gICAgICAgICAgICBjb25zdCBkZXN0SXRlbSA9IHBhdGhKb2luKGRlc3QsIFN0cmluZyhlbnRyeSkpO1xuICAgICAgICAgICAgLy8gQXBwbHkgZmlsdGVyIHRvIGVhY2ggaXRlbVxuICAgICAgICAgICAgaWYgKG9wdGlvbnMuZmlsdGVyICYmICFvcHRpb25zLmZpbHRlcihzcmNJdGVtLCBkZXN0SXRlbSkpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2NwKHNyY0l0ZW0sIGRlc3RJdGVtLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBTZXQgZGlyZWN0b3J5IG1vZGVcbiAgICAgICAgdGhpcy5jaG1vZFN5bmMoZGVzdCwgTnVtYmVyKHNyY1N0YXQubW9kZSkpO1xuICAgIH1cbiAgICBjcFN5bWxpbmtTeW5jKGRlc3RTdGF0LCBzcmMsIGRlc3QsIG9wdGlvbnMpIHtcbiAgICAgICAgbGV0IGxpbmtUYXJnZXQgPSBTdHJpbmcodGhpcy5yZWFkbGlua1N5bmMoc3JjKSk7XG4gICAgICAgIGlmICghb3B0aW9ucy52ZXJiYXRpbVN5bWxpbmtzICYmICEoMCwgcGF0aF8xLmlzQWJzb2x1dGUpKGxpbmtUYXJnZXQpKVxuICAgICAgICAgICAgbGlua1RhcmdldCA9IHJlc29sdmVDcm9zc1BsYXRmb3JtKHBhdGhEaXJuYW1lKHNyYyksIGxpbmtUYXJnZXQpO1xuICAgICAgICBpZiAoZGVzdFN0YXQpXG4gICAgICAgICAgICB0aGlzLnVubGlua1N5bmMoZGVzdCk7XG4gICAgICAgIHRoaXMuc3ltbGlua1N5bmMobGlua1RhcmdldCwgZGVzdCk7XG4gICAgfVxuICAgIGxzdGF0KHBhdGgsIGEsIGIpIHtcbiAgICAgICAgY29uc3QgW3sgdGhyb3dJZk5vRW50cnkgPSB0cnVlLCBiaWdpbnQgPSBmYWxzZSB9LCBjYWxsYmFja10gPSAoMCwgb3B0aW9uc18xLmdldFN0YXRPcHRzQW5kQ2IpKGEsIGIpO1xuICAgICAgICB0aGlzLndyYXBBc3luYyh0aGlzLl9sc3RhdCwgWygwLCB1dGlsXzMucGF0aFRvRmlsZW5hbWUpKHBhdGgpLCBiaWdpbnQsIHRocm93SWZOb0VudHJ5XSwgY2FsbGJhY2spO1xuICAgIH1cbiAgICBfc3RhdChmaWxlbmFtZSwgYmlnaW50ID0gZmFsc2UsIHRocm93SWZOb0VudHJ5ID0gdHJ1ZSkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9jb3JlLmdldFJlc29sdmVkTGlua1Jlc3VsdChmaWxlbmFtZSwgJ3N0YXQnKTtcbiAgICAgICAgaWYgKHJlc3VsdC5vaykge1xuICAgICAgICAgICAgcmV0dXJuICgwLCBmc19jb3JlXzEuT2spKFN0YXRzXzEuZGVmYXVsdC5idWlsZChyZXN1bHQudmFsdWUuZ2V0Tm9kZSgpLCBiaWdpbnQpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzdWx0LmVyci5jb2RlID09PSBcIkVOT0VOVFwiIC8qIEVSUk9SX0NPREUuRU5PRU5UICovICYmICF0aHJvd0lmTm9FbnRyeSkge1xuICAgICAgICAgICAgcmV0dXJuICgwLCBmc19jb3JlXzEuT2spKHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgfVxuICAgIF9zdGF0T3JUaHJvdyhmaWxlbmFtZSwgYmlnaW50ID0gZmFsc2UsIHRocm93SWZOb0VudHJ5ID0gdHJ1ZSkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9zdGF0KGZpbGVuYW1lLCBiaWdpbnQsIHRocm93SWZOb0VudHJ5KTtcbiAgICAgICAgaWYgKHJlc3VsdC5vaykge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IHJlc3VsdC5lcnIudG9FcnJvcigpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHN0YXRTeW5jKHBhdGgsIG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgeyBiaWdpbnQgPSB0cnVlLCB0aHJvd0lmTm9FbnRyeSA9IHRydWUgfSA9ICgwLCBvcHRpb25zXzEuZ2V0U3RhdE9wdGlvbnMpKG9wdGlvbnMpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9zdGF0KCgwLCB1dGlsXzMucGF0aFRvRmlsZW5hbWUpKHBhdGgpLCBiaWdpbnQsIHRocm93SWZOb0VudHJ5KTtcbiAgICAgICAgaWYgKHJlc3VsdC5vaykge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IHJlc3VsdC5lcnIudG9FcnJvcigpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHN0YXQocGF0aCwgYSwgYikge1xuICAgICAgICBjb25zdCBbeyBiaWdpbnQgPSBmYWxzZSwgdGhyb3dJZk5vRW50cnkgPSB0cnVlIH0sIGNhbGxiYWNrXSA9ICgwLCBvcHRpb25zXzEuZ2V0U3RhdE9wdHNBbmRDYikoYSwgYik7XG4gICAgICAgIHRoaXMud3JhcEFzeW5jKHRoaXMuX3N0YXRPclRocm93LCBbKDAsIHV0aWxfMy5wYXRoVG9GaWxlbmFtZSkocGF0aCksIGJpZ2ludCwgdGhyb3dJZk5vRW50cnldLCBjYWxsYmFjayk7XG4gICAgfVxuICAgIGZzdGF0QmFzZShmZCwgYmlnaW50ID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgZmlsZSA9IHRoaXMuX2NvcmUuZ2V0RmlsZUJ5RmQoZmQpO1xuICAgICAgICBpZiAoIWZpbGUpXG4gICAgICAgICAgICB0aHJvdyAoMCwgdXRpbF8zLmNyZWF0ZUVycm9yKShcIkVCQURGXCIgLyogRVJST1JfQ09ERS5FQkFERiAqLywgJ2ZzdGF0Jyk7XG4gICAgICAgIHJldHVybiBTdGF0c18xLmRlZmF1bHQuYnVpbGQoZmlsZS5ub2RlLCBiaWdpbnQpO1xuICAgIH1cbiAgICBmc3RhdFN5bmMoZmQsIG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnN0YXRCYXNlKGZkLCAoMCwgb3B0aW9uc18xLmdldFN0YXRPcHRpb25zKShvcHRpb25zKS5iaWdpbnQpO1xuICAgIH1cbiAgICBmc3RhdChmZCwgYSwgYikge1xuICAgICAgICBjb25zdCBbb3B0cywgY2FsbGJhY2tdID0gKDAsIG9wdGlvbnNfMS5nZXRTdGF0T3B0c0FuZENiKShhLCBiKTtcbiAgICAgICAgdGhpcy53cmFwQXN5bmModGhpcy5mc3RhdEJhc2UsIFtmZCwgb3B0cy5iaWdpbnRdLCBjYWxsYmFjayk7XG4gICAgfVxuICAgIF9leGlzdHMoZmlsZW5hbWUpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fc3RhdChmaWxlbmFtZSk7XG4gICAgICAgIHJldHVybiByZXN1bHQub2sgPyAoMCwgZnNfY29yZV8xLk9rKSh0cnVlKSA6IHJlc3VsdDtcbiAgICB9XG4gICAgX2FjY2VzcyhmaWxlbmFtZSwgbW9kZSkge1xuICAgICAgICBjb25zdCBsaW5rID0gdGhpcy5fY29yZS5nZXRMaW5rT3JUaHJvdyhmaWxlbmFtZSwgJ2FjY2VzcycpO1xuICAgICAgICBjb25zdCBub2RlID0gbGluay5nZXROb2RlKCk7XG4gICAgICAgIC8vIEZfT0sgKDApIGp1c3QgY2hlY2tzIGZvciBleGlzdGVuY2UsIHdoaWNoIHdlIGFscmVhZHkgY29uZmlybWVkIGFib3ZlXG4gICAgICAgIGlmIChtb2RlID09PSBGX09LKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ2hlY2sgcmVhZCBwZXJtaXNzaW9uXG4gICAgICAgIGlmIChtb2RlICYgUl9PSyAmJiAhbm9kZS5jYW5SZWFkKCkpIHtcbiAgICAgICAgICAgIHRocm93ICgwLCB1dGlsXzMuY3JlYXRlRXJyb3IpKFwiRUFDQ0VTXCIgLyogRVJST1JfQ09ERS5FQUNDRVMgKi8sICdhY2Nlc3MnLCBmaWxlbmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ2hlY2sgd3JpdGUgcGVybWlzc2lvblxuICAgICAgICBpZiAobW9kZSAmIFdfT0sgJiYgIW5vZGUuY2FuV3JpdGUoKSkge1xuICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMy5jcmVhdGVFcnJvcikoXCJFQUNDRVNcIiAvKiBFUlJPUl9DT0RFLkVBQ0NFUyAqLywgJ2FjY2VzcycsIGZpbGVuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDaGVjayBleGVjdXRlIHBlcm1pc3Npb25cbiAgICAgICAgaWYgKG1vZGUgJiBYX09LICYmICFub2RlLmNhbkV4ZWN1dGUoKSkge1xuICAgICAgICAgICAgdGhyb3cgKDAsIHV0aWxfMy5jcmVhdGVFcnJvcikoXCJFQUNDRVNcIiAvKiBFUlJPUl9DT0RFLkVBQ0NFUyAqLywgJ2FjY2VzcycsIGZpbGVuYW1lKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB3YXRjaEZpbGUocGF0aCwgYSwgYikge1xuICAgICAgICBjb25zdCBmaWxlbmFtZSA9ICgwLCB1dGlsXzMucGF0aFRvRmlsZW5hbWUpKHBhdGgpO1xuICAgICAgICBsZXQgb3B0aW9ucyA9IGE7XG4gICAgICAgIGxldCBsaXN0ZW5lciA9IGI7XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgbGlzdGVuZXIgPSBhO1xuICAgICAgICAgICAgb3B0aW9ucyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBsaXN0ZW5lciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ1wid2F0Y2hGaWxlKClcIiByZXF1aXJlcyBhIGxpc3RlbmVyIGZ1bmN0aW9uJyk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGludGVydmFsID0gNTAwNztcbiAgICAgICAgbGV0IHBlcnNpc3RlbnQgPSB0cnVlO1xuICAgICAgICBpZiAob3B0aW9ucyAmJiB0eXBlb2Ygb3B0aW9ucyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5pbnRlcnZhbCA9PT0gJ251bWJlcicpXG4gICAgICAgICAgICAgICAgaW50ZXJ2YWwgPSBvcHRpb25zLmludGVydmFsO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLnBlcnNpc3RlbnQgPT09ICdib29sZWFuJylcbiAgICAgICAgICAgICAgICBwZXJzaXN0ZW50ID0gb3B0aW9ucy5wZXJzaXN0ZW50O1xuICAgICAgICB9XG4gICAgICAgIGxldCB3YXRjaGVyID0gdGhpcy5zdGF0V2F0Y2hlcnNbZmlsZW5hbWVdO1xuICAgICAgICBpZiAoIXdhdGNoZXIpIHtcbiAgICAgICAgICAgIHdhdGNoZXIgPSBuZXcgdGhpcy5TdGF0V2F0Y2hlcigpO1xuICAgICAgICAgICAgd2F0Y2hlci5zdGFydChmaWxlbmFtZSwgcGVyc2lzdGVudCwgaW50ZXJ2YWwpO1xuICAgICAgICAgICAgdGhpcy5zdGF0V2F0Y2hlcnNbZmlsZW5hbWVdID0gd2F0Y2hlcjtcbiAgICAgICAgfVxuICAgICAgICB3YXRjaGVyLmFkZExpc3RlbmVyKCdjaGFuZ2UnLCBsaXN0ZW5lcik7XG4gICAgICAgIHJldHVybiB3YXRjaGVyO1xuICAgIH1cbiAgICB1bndhdGNoRmlsZShwYXRoLCBsaXN0ZW5lcikge1xuICAgICAgICBjb25zdCBmaWxlbmFtZSA9ICgwLCB1dGlsXzMucGF0aFRvRmlsZW5hbWUpKHBhdGgpO1xuICAgICAgICBjb25zdCB3YXRjaGVyID0gdGhpcy5zdGF0V2F0Y2hlcnNbZmlsZW5hbWVdO1xuICAgICAgICBpZiAoIXdhdGNoZXIpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh0eXBlb2YgbGlzdGVuZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHdhdGNoZXIucmVtb3ZlTGlzdGVuZXIoJ2NoYW5nZScsIGxpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHdhdGNoZXIucmVtb3ZlQWxsTGlzdGVuZXJzKCdjaGFuZ2UnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAod2F0Y2hlci5saXN0ZW5lckNvdW50KCdjaGFuZ2UnKSA9PT0gMCkge1xuICAgICAgICAgICAgd2F0Y2hlci5zdG9wKCk7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5zdGF0V2F0Y2hlcnNbZmlsZW5hbWVdO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNyZWF0ZVJlYWRTdHJlYW0ocGF0aCwgb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gbmV3IHRoaXMuUmVhZFN0cmVhbShwYXRoLCBvcHRpb25zKTtcbiAgICB9XG4gICAgY3JlYXRlV3JpdGVTdHJlYW0ocGF0aCwgb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gbmV3IHRoaXMuV3JpdGVTdHJlYW0ocGF0aCwgb3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIHdhdGNoKHBhdGg6IFBhdGhMaWtlKTogRlNXYXRjaGVyO1xuICAgIC8vIHdhdGNoKHBhdGg6IFBhdGhMaWtlLCBvcHRpb25zPzogSVdhdGNoT3B0aW9ucyB8IHN0cmluZyk6IEZTV2F0Y2hlcjtcbiAgICB3YXRjaChwYXRoLCBvcHRpb25zLCBsaXN0ZW5lcikge1xuICAgICAgICBjb25zdCBmaWxlbmFtZSA9ICgwLCB1dGlsXzMucGF0aFRvRmlsZW5hbWUpKHBhdGgpO1xuICAgICAgICBsZXQgZ2l2ZW5PcHRpb25zID0gb3B0aW9ucztcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBsaXN0ZW5lciA9IG9wdGlvbnM7XG4gICAgICAgICAgICBnaXZlbk9wdGlvbnMgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICAgICAgbGV0IHsgcGVyc2lzdGVudCwgcmVjdXJzaXZlLCBlbmNvZGluZyB9ID0gKDAsIG9wdGlvbnNfMS5nZXREZWZhdWx0T3B0cykoZ2l2ZW5PcHRpb25zKTtcbiAgICAgICAgaWYgKHBlcnNpc3RlbnQgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHBlcnNpc3RlbnQgPSB0cnVlO1xuICAgICAgICBpZiAocmVjdXJzaXZlID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICByZWN1cnNpdmUgPSBmYWxzZTtcbiAgICAgICAgY29uc3Qgd2F0Y2hlciA9IG5ldyB0aGlzLkZTV2F0Y2hlcigpO1xuICAgICAgICB3YXRjaGVyLnN0YXJ0KGZpbGVuYW1lLCBwZXJzaXN0ZW50LCByZWN1cnNpdmUsIGVuY29kaW5nKTtcbiAgICAgICAgaWYgKGxpc3RlbmVyKSB7XG4gICAgICAgICAgICB3YXRjaGVyLmFkZExpc3RlbmVyKCdjaGFuZ2UnLCBsaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHdhdGNoZXI7XG4gICAgfVxuICAgIF9zdGF0ZnMoZmlsZW5hbWUsIGJpZ2ludCA9IGZhbHNlKSB7XG4gICAgICAgIC8vIFZlcmlmeSB0aGUgcGF0aCBleGlzdHMgdG8gbWF0Y2ggTm9kZS5qcyBiZWhhdmlvclxuICAgICAgICB0aGlzLl9jb3JlLmdldFJlc29sdmVkTGlua09yVGhyb3coZmlsZW5hbWUsICdzdGF0ZnMnKTtcbiAgICAgICAgcmV0dXJuIFN0YXRGc18xLmRlZmF1bHQuYnVpbGQodGhpcy5fY29yZSwgYmlnaW50KTtcbiAgICB9XG4gICAgc3RhdGZzU3luYyhwYXRoLCBvcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IHsgYmlnaW50ID0gZmFsc2UgfSA9ICgwLCBvcHRpb25zXzEuZ2V0U3RhdGZzT3B0aW9ucykob3B0aW9ucyk7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGF0ZnMoKDAsIHV0aWxfMy5wYXRoVG9GaWxlbmFtZSkocGF0aCksIGJpZ2ludCk7XG4gICAgfVxuICAgIHN0YXRmcyhwYXRoLCBhLCBiKSB7XG4gICAgICAgIGNvbnN0IFt7IGJpZ2ludCA9IGZhbHNlIH0sIGNhbGxiYWNrXSA9ICgwLCBvcHRpb25zXzEuZ2V0U3RhdGZzT3B0c0FuZENiKShhLCBiKTtcbiAgICAgICAgdGhpcy53cmFwQXN5bmModGhpcy5fc3RhdGZzLCBbKDAsIHV0aWxfMy5wYXRoVG9GaWxlbmFtZSkocGF0aCksIGJpZ2ludF0sIGNhbGxiYWNrKTtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBUcmVlIFZpZXdcbiAgICB0b1RyZWUob3B0cyA9IHsgc2VwYXJhdG9yOiBwYXRoXzEuc2VwIH0pIHtcbiAgICAgICAgcmV0dXJuICgwLCBmc19wcmludF8xLnRvVHJlZVN5bmMpKHRoaXMsIG9wdHMpO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNuYXBzaG90c1xuICAgIHRvU25hcHNob3QocGF0aCA9ICcvJykge1xuICAgICAgICByZXR1cm4gZnNTbmFwc2hvdC50b1NuYXBzaG90U3luYyh7IGZzOiB0aGlzLCBwYXRoIH0pO1xuICAgIH1cbiAgICBmcm9tU25hcHNob3Qoc25hcHNob3QsIHBhdGggPSAnLycpIHtcbiAgICAgICAgcmV0dXJuIGZzU25hcHNob3QuZnJvbVNuYXBzaG90U3luYyhzbmFwc2hvdCwgeyBmczogdGhpcywgcGF0aCB9KTtcbiAgICB9XG4gICAgdG9CaW5hcnlTbmFwc2hvdChwYXRoID0gJy8nKSB7XG4gICAgICAgIHJldHVybiBmc1NuYXBzaG90LnRvQmluYXJ5U25hcHNob3RTeW5jKHsgZnM6IHRoaXMsIHBhdGggfSk7XG4gICAgfVxuICAgIGZyb21CaW5hcnlTbmFwc2hvdChiaW5hcnksIHBhdGggPSAnLycpIHtcbiAgICAgICAgcmV0dXJuIGZzU25hcHNob3QuZnJvbUJpbmFyeVNuYXBzaG90U3luYyhiaW5hcnksIHsgZnM6IHRoaXMsIHBhdGggfSk7XG4gICAgfVxuICAgIHRvSnNvblNuYXBzaG90KHBhdGggPSAnLycpIHtcbiAgICAgICAgY29uc3QgdWludDggPSBmc1NuYXBzaG90LnRvSnNvblNuYXBzaG90U3luYyh7IGZzOiB0aGlzLCBwYXRoIH0pO1xuICAgICAgICByZXR1cm4gYnVmZmVyXzEuQnVmZmVyLmZyb20odWludDgpLnRvU3RyaW5nKCd1dGY4Jyk7XG4gICAgfVxuICAgIGZyb21Kc29uU25hcHNob3QoanNvbiwgcGF0aCA9ICcvJykge1xuICAgICAgICBjb25zdCB1aW50OCA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcl8xLkJ1ZmZlci5mcm9tKGpzb24sICd1dGY4JykpO1xuICAgICAgICByZXR1cm4gZnNTbmFwc2hvdC5mcm9tSnNvblNuYXBzaG90U3luYyh1aW50OCwgeyBmczogdGhpcywgcGF0aCB9KTtcbiAgICB9XG59XG5leHBvcnRzLlZvbHVtZSA9IFZvbHVtZTtcblZvbHVtZS5mcm9tSlNPTiA9IChqc29uLCBjd2QsIG9wdHMpID0+IG5ldyBWb2x1bWUoZnNfY29yZV8xLlN1cGVyYmxvY2suZnJvbUpTT04oanNvbiwgY3dkLCBvcHRzKSk7XG5Wb2x1bWUuZnJvbU5lc3RlZEpTT04gPSAoanNvbiwgY3dkLCBvcHRzKSA9PiBuZXcgVm9sdW1lKGZzX2NvcmVfMS5TdXBlcmJsb2NrLmZyb21OZXN0ZWRKU09OKGpzb24sIGN3ZCwgb3B0cykpO1xuZnVuY3Rpb24gZW1pdFN0b3Aoc2VsZikge1xuICAgIHNlbGYuZW1pdCgnc3RvcCcpO1xufVxuY2xhc3MgU3RhdFdhdGNoZXIgZXh0ZW5kcyBldmVudHNfMS5FdmVudEVtaXR0ZXIge1xuICAgIGNvbnN0cnVjdG9yKHZvbCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm9uSW50ZXJ2YWwgPSAoKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXRzID0gdGhpcy52b2wuc3RhdFN5bmModGhpcy5maWxlbmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaGFzQ2hhbmdlZChzdGF0cykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0KCdjaGFuZ2UnLCBzdGF0cywgdGhpcy5wcmV2KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmV2ID0gc3RhdHM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb29wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudm9sID0gdm9sO1xuICAgIH1cbiAgICBsb29wKCkge1xuICAgICAgICB0aGlzLnRpbWVvdXRSZWYgPSB0aGlzLnNldFRpbWVvdXQodGhpcy5vbkludGVydmFsLCB0aGlzLmludGVydmFsKTtcbiAgICB9XG4gICAgaGFzQ2hhbmdlZChzdGF0cykge1xuICAgICAgICAvLyBpZighdGhpcy5wcmV2KSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChzdGF0cy5tdGltZU1zID4gdGhpcy5wcmV2Lm10aW1lTXMpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKHN0YXRzLm5saW5rICE9PSB0aGlzLnByZXYubmxpbmspXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBzdGFydChwYXRoLCBwZXJzaXN0ZW50ID0gdHJ1ZSwgaW50ZXJ2YWwgPSA1MDA3KSB7XG4gICAgICAgIHRoaXMuZmlsZW5hbWUgPSAoMCwgdXRpbF8zLnBhdGhUb0ZpbGVuYW1lKShwYXRoKTtcbiAgICAgICAgdGhpcy5zZXRUaW1lb3V0ID0gcGVyc2lzdGVudFxuICAgICAgICAgICAgPyBzZXRUaW1lb3V0LmJpbmQodHlwZW9mIGdsb2JhbFRoaXMgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsVGhpcyA6IGdsb2JhbClcbiAgICAgICAgICAgIDogc2V0VGltZW91dFVucmVmXzEuZGVmYXVsdDtcbiAgICAgICAgdGhpcy5pbnRlcnZhbCA9IGludGVydmFsO1xuICAgICAgICB0aGlzLnByZXYgPSB0aGlzLnZvbC5zdGF0U3luYyh0aGlzLmZpbGVuYW1lKTtcbiAgICAgICAgdGhpcy5sb29wKCk7XG4gICAgfVxuICAgIHN0b3AoKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRSZWYpO1xuICAgICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgICAgICBlbWl0U3RvcC5jYWxsKHRoaXMsIHRoaXMpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5leHBvcnRzLlN0YXRXYXRjaGVyID0gU3RhdFdhdGNoZXI7XG4vKiB0c2xpbnQ6ZGlzYWJsZSBuby12YXIta2V5d29yZCBwcmVmZXItY29uc3QgKi9cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUmVhZFN0cmVhbVxudmFyIHBvb2w7XG5mdW5jdGlvbiBhbGxvY05ld1Bvb2wocG9vbFNpemUpIHtcbiAgICBwb29sID0gKDAsIGJ1ZmZlcl8xLmJ1ZmZlckFsbG9jVW5zYWZlKShwb29sU2l6ZSk7XG4gICAgcG9vbC51c2VkID0gMDtcbn1cbigwLCB1dGlsXzIuaW5oZXJpdHMpKEZzUmVhZFN0cmVhbSwgc3RyZWFtXzEuUmVhZGFibGUpO1xuZXhwb3J0cy5SZWFkU3RyZWFtID0gRnNSZWFkU3RyZWFtO1xuZnVuY3Rpb24gRnNSZWFkU3RyZWFtKHZvbCwgcGF0aCwgb3B0aW9ucykge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBGc1JlYWRTdHJlYW0pKVxuICAgICAgICByZXR1cm4gbmV3IEZzUmVhZFN0cmVhbSh2b2wsIHBhdGgsIG9wdGlvbnMpO1xuICAgIHRoaXMuX3ZvbCA9IHZvbDtcbiAgICAvLyBhIGxpdHRsZSBiaXQgYmlnZ2VyIGJ1ZmZlciBhbmQgd2F0ZXIgbWFya3MgYnkgZGVmYXVsdFxuICAgIG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCAoMCwgb3B0aW9uc18xLmdldE9wdGlvbnMpKG9wdGlvbnMsIHt9KSk7XG4gICAgaWYgKG9wdGlvbnMuaGlnaFdhdGVyTWFyayA9PT0gdW5kZWZpbmVkKVxuICAgICAgICBvcHRpb25zLmhpZ2hXYXRlck1hcmsgPSA2NCAqIDEwMjQ7XG4gICAgc3RyZWFtXzEuUmVhZGFibGUuY2FsbCh0aGlzLCBvcHRpb25zKTtcbiAgICB0aGlzLnBhdGggPSAoMCwgdXRpbF8zLnBhdGhUb0ZpbGVuYW1lKShwYXRoKTtcbiAgICB0aGlzLl9maWxlSGFuZGxlID0gb3B0aW9ucy5mZCAmJiB0eXBlb2Ygb3B0aW9ucy5mZCAhPT0gJ251bWJlcicgPyBvcHRpb25zLmZkIDogbnVsbDtcbiAgICB0aGlzLmZkID0gb3B0aW9ucy5mZCA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IHR5cGVvZiBvcHRpb25zLmZkICE9PSAnbnVtYmVyJyA/IG9wdGlvbnMuZmQuZmQgOiBvcHRpb25zLmZkO1xuICAgIHRoaXMuZmxhZ3MgPSBvcHRpb25zLmZsYWdzID09PSB1bmRlZmluZWQgPyAncicgOiBvcHRpb25zLmZsYWdzO1xuICAgIHRoaXMubW9kZSA9IG9wdGlvbnMubW9kZSA9PT0gdW5kZWZpbmVkID8gMG82NjYgOiBvcHRpb25zLm1vZGU7XG4gICAgdGhpcy5zdGFydCA9IG9wdGlvbnMuc3RhcnQ7XG4gICAgdGhpcy5lbmQgPSBvcHRpb25zLmVuZDtcbiAgICB0aGlzLmF1dG9DbG9zZSA9IG9wdGlvbnMuYXV0b0Nsb3NlID09PSB1bmRlZmluZWQgPyB0cnVlIDogb3B0aW9ucy5hdXRvQ2xvc2U7XG4gICAgdGhpcy5wb3MgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5ieXRlc1JlYWQgPSAwO1xuICAgIGlmICh0aGlzLnN0YXJ0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN0YXJ0ICE9PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJzdGFydFwiIG9wdGlvbiBtdXN0IGJlIGEgTnVtYmVyJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZW5kID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZW5kID0gSW5maW5pdHk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIHRoaXMuZW5kICE9PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJlbmRcIiBvcHRpb24gbXVzdCBiZSBhIE51bWJlcicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnN0YXJ0ID4gdGhpcy5lbmQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignXCJzdGFydFwiIG9wdGlvbiBtdXN0IGJlIDw9IFwiZW5kXCIgb3B0aW9uJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wb3MgPSB0aGlzLnN0YXJ0O1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHRoaXMuZmQgIT09ICdudW1iZXInKVxuICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICB0aGlzLm9uKCdlbmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmF1dG9DbG9zZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGVzdHJveSlcbiAgICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuRnNSZWFkU3RyZWFtLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpczsgLy8gdHNsaW50OmRpc2FibGUtbGluZSBuby10aGlzLWFzc2lnbm1lbnRcbiAgICB0aGlzLl92b2wub3Blbih0aGlzLnBhdGgsIHRoaXMuZmxhZ3MsIHRoaXMubW9kZSwgKGVyLCBmZCkgPT4ge1xuICAgICAgICBpZiAoZXIpIHtcbiAgICAgICAgICAgIGlmIChzZWxmLmF1dG9DbG9zZSkge1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLmRlc3Ryb3kpXG4gICAgICAgICAgICAgICAgICAgIHNlbGYuZGVzdHJveSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZi5lbWl0KCdlcnJvcicsIGVyKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZWxmLmZkID0gZmQ7XG4gICAgICAgIHNlbGYuZW1pdCgnb3BlbicsIGZkKTtcbiAgICAgICAgLy8gc3RhcnQgdGhlIGZsb3cgb2YgZGF0YS5cbiAgICAgICAgc2VsZi5yZWFkKCk7XG4gICAgfSk7XG59O1xuRnNSZWFkU3RyZWFtLnByb3RvdHlwZS5fcmVhZCA9IGZ1bmN0aW9uIChuKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLmZkICE9PSAnbnVtYmVyJykge1xuICAgICAgICByZXR1cm4gdGhpcy5vbmNlKCdvcGVuJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy5fcmVhZChuKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmRlc3Ryb3llZClcbiAgICAgICAgcmV0dXJuO1xuICAgIGlmICghcG9vbCB8fCBwb29sLmxlbmd0aCAtIHBvb2wudXNlZCA8IGtNaW5Qb29sU3BhY2UpIHtcbiAgICAgICAgLy8gZGlzY2FyZCB0aGUgb2xkIHBvb2wuXG4gICAgICAgIGFsbG9jTmV3UG9vbCh0aGlzLl9yZWFkYWJsZVN0YXRlLmhpZ2hXYXRlck1hcmspO1xuICAgIH1cbiAgICAvLyBHcmFiIGFub3RoZXIgcmVmZXJlbmNlIHRvIHRoZSBwb29sIGluIHRoZSBjYXNlIHRoYXQgd2hpbGUgd2UncmVcbiAgICAvLyBpbiB0aGUgdGhyZWFkIHBvb2wgYW5vdGhlciByZWFkKCkgZmluaXNoZXMgdXAgdGhlIHBvb2wsIGFuZFxuICAgIC8vIGFsbG9jYXRlcyBhIG5ldyBvbmUuXG4gICAgdmFyIHRoaXNQb29sID0gcG9vbDtcbiAgICB2YXIgdG9SZWFkID0gTWF0aC5taW4ocG9vbC5sZW5ndGggLSBwb29sLnVzZWQsIG4pO1xuICAgIHZhciBzdGFydCA9IHBvb2wudXNlZDtcbiAgICBpZiAodGhpcy5wb3MgIT09IHVuZGVmaW5lZClcbiAgICAgICAgdG9SZWFkID0gTWF0aC5taW4odGhpcy5lbmQgLSB0aGlzLnBvcyArIDEsIHRvUmVhZCk7XG4gICAgLy8gYWxyZWFkeSByZWFkIGV2ZXJ5dGhpbmcgd2Ugd2VyZSBzdXBwb3NlZCB0byByZWFkIVxuICAgIC8vIHRyZWF0IGFzIEVPRi5cbiAgICBpZiAodG9SZWFkIDw9IDApXG4gICAgICAgIHJldHVybiB0aGlzLnB1c2gobnVsbCk7XG4gICAgLy8gdGhlIGFjdHVhbCByZWFkLlxuICAgIHZhciBzZWxmID0gdGhpczsgLy8gdHNsaW50OmRpc2FibGUtbGluZSBuby10aGlzLWFzc2lnbm1lbnRcbiAgICB0aGlzLl92b2wucmVhZCh0aGlzLmZkLCBwb29sLCBwb29sLnVzZWQsIHRvUmVhZCwgdGhpcy5wb3MsIG9ucmVhZCk7XG4gICAgLy8gbW92ZSB0aGUgcG9vbCBwb3NpdGlvbnMsIGFuZCBpbnRlcm5hbCBwb3NpdGlvbiBmb3IgcmVhZGluZy5cbiAgICBpZiAodGhpcy5wb3MgIT09IHVuZGVmaW5lZClcbiAgICAgICAgdGhpcy5wb3MgKz0gdG9SZWFkO1xuICAgIHBvb2wudXNlZCArPSB0b1JlYWQ7XG4gICAgZnVuY3Rpb24gb25yZWFkKGVyLCBieXRlc1JlYWQpIHtcbiAgICAgICAgaWYgKGVyKSB7XG4gICAgICAgICAgICBpZiAoc2VsZi5hdXRvQ2xvc2UgJiYgc2VsZi5kZXN0cm95KSB7XG4gICAgICAgICAgICAgICAgc2VsZi5kZXN0cm95KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxmLmVtaXQoJ2Vycm9yJywgZXIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIGIgPSBudWxsO1xuICAgICAgICAgICAgaWYgKGJ5dGVzUmVhZCA+IDApIHtcbiAgICAgICAgICAgICAgICBzZWxmLmJ5dGVzUmVhZCArPSBieXRlc1JlYWQ7XG4gICAgICAgICAgICAgICAgYiA9IHRoaXNQb29sLnNsaWNlKHN0YXJ0LCBzdGFydCArIGJ5dGVzUmVhZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxmLnB1c2goYik7XG4gICAgICAgIH1cbiAgICB9XG59O1xuRnNSZWFkU3RyZWFtLnByb3RvdHlwZS5fZGVzdHJveSA9IGZ1bmN0aW9uIChlcnIsIGNiKSB7XG4gICAgdGhpcy5jbG9zZShlcnIyID0+IHtcbiAgICAgICAgY2IoZXJyIHx8IGVycjIpO1xuICAgIH0pO1xufTtcbkZzUmVhZFN0cmVhbS5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoY2IpIHtcbiAgICBpZiAoY2IpXG4gICAgICAgIHRoaXMub25jZSgnY2xvc2UnLCBjYik7XG4gICAgaWYgKHRoaXMuY2xvc2VkIHx8IHR5cGVvZiB0aGlzLmZkICE9PSAnbnVtYmVyJykge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZmQgIT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICB0aGlzLm9uY2UoJ29wZW4nLCBjbG9zZU9uT3Blbik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHF1ZXVlTWljcm90YXNrKCgpID0+IHRoaXMuZW1pdCgnY2xvc2UnKSk7XG4gICAgfVxuICAgIC8vIFNpbmNlIE5vZGUgMTgsIHRoZXJlIGlzIG9ubHkgYSBnZXR0ZXIgZm9yICcuY2xvc2VkJy5cbiAgICAvLyBUaGUgZmlyc3QgYnJhbmNoIG1pbWljcyBvdGhlciBzZXR0ZXJzIGZyb20gUmVhZGFibGUuXG4gICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL3YxOC4wLjAvbGliL2ludGVybmFsL3N0cmVhbXMvcmVhZGFibGUuanMjTDEyNDNcbiAgICBpZiAodHlwZW9mIHRoaXMuX3JlYWRhYmxlU3RhdGU/LmNsb3NlZCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuY2xvc2VkID0gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2ZpbGVIYW5kbGUpIHtcbiAgICAgICAgdGhpcy5fZmlsZUhhbmRsZS5jbG9zZSgpLnRoZW4oKCkgPT4gdGhpcy5lbWl0KCdjbG9zZScpLCBlciA9PiB0aGlzLmVtaXQoJ2Vycm9yJywgZXIpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRoaXMuX3ZvbC5jbG9zZSh0aGlzLmZkLCBlciA9PiB7XG4gICAgICAgICAgICBpZiAoZXIpXG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIGVyKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXQoJ2Nsb3NlJyk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmZkID0gbnVsbDtcbn07XG4vLyBuZWVkZWQgYmVjYXVzZSBhcyBpdCB3aWxsIGJlIGNhbGxlZCB3aXRoIGFyZ3VtZW50c1xuLy8gdGhhdCBkb2VzIG5vdCBtYXRjaCB0aGlzLmNsb3NlKCkgc2lnbmF0dXJlXG5mdW5jdGlvbiBjbG9zZU9uT3BlbihmZCkge1xuICAgIHRoaXMuY2xvc2UoKTtcbn1cbigwLCB1dGlsXzIuaW5oZXJpdHMpKEZzV3JpdGVTdHJlYW0sIHN0cmVhbV8xLldyaXRhYmxlKTtcbmV4cG9ydHMuV3JpdGVTdHJlYW0gPSBGc1dyaXRlU3RyZWFtO1xuZnVuY3Rpb24gRnNXcml0ZVN0cmVhbSh2b2wsIHBhdGgsIG9wdGlvbnMpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRnNXcml0ZVN0cmVhbSkpXG4gICAgICAgIHJldHVybiBuZXcgRnNXcml0ZVN0cmVhbSh2b2wsIHBhdGgsIG9wdGlvbnMpO1xuICAgIHRoaXMuX3ZvbCA9IHZvbDtcbiAgICBvcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgKDAsIG9wdGlvbnNfMS5nZXRPcHRpb25zKShvcHRpb25zLCB7fSkpO1xuICAgIHN0cmVhbV8xLldyaXRhYmxlLmNhbGwodGhpcywgb3B0aW9ucyk7XG4gICAgdGhpcy5wYXRoID0gKDAsIHV0aWxfMy5wYXRoVG9GaWxlbmFtZSkocGF0aCk7XG4gICAgdGhpcy5fZmlsZUhhbmRsZSA9IG9wdGlvbnMuZmQgJiYgdHlwZW9mIG9wdGlvbnMuZmQgIT09ICdudW1iZXInID8gb3B0aW9ucy5mZCA6IG51bGw7XG4gICAgdGhpcy5mZCA9IG9wdGlvbnMuZmQgPT09IHVuZGVmaW5lZCA/IG51bGwgOiB0eXBlb2Ygb3B0aW9ucy5mZCAhPT0gJ251bWJlcicgPyBvcHRpb25zLmZkLmZkIDogb3B0aW9ucy5mZDtcbiAgICB0aGlzLmZsYWdzID0gb3B0aW9ucy5mbGFncyA9PT0gdW5kZWZpbmVkID8gJ3cnIDogb3B0aW9ucy5mbGFncztcbiAgICB0aGlzLm1vZGUgPSBvcHRpb25zLm1vZGUgPT09IHVuZGVmaW5lZCA/IDBvNjY2IDogb3B0aW9ucy5tb2RlO1xuICAgIHRoaXMuc3RhcnQgPSBvcHRpb25zLnN0YXJ0O1xuICAgIHRoaXMuYXV0b0Nsb3NlID0gb3B0aW9ucy5hdXRvQ2xvc2UgPT09IHVuZGVmaW5lZCA/IHRydWUgOiAhIW9wdGlvbnMuYXV0b0Nsb3NlO1xuICAgIHRoaXMucG9zID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYnl0ZXNXcml0dGVuID0gMDtcbiAgICB0aGlzLnBlbmRpbmcgPSB0cnVlO1xuICAgIGlmICh0aGlzLnN0YXJ0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN0YXJ0ICE9PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJzdGFydFwiIG9wdGlvbiBtdXN0IGJlIGEgTnVtYmVyJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc3RhcnQgPCAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1wic3RhcnRcIiBtdXN0IGJlID49IHplcm8nKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBvcyA9IHRoaXMuc3RhcnQ7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmVuY29kaW5nKVxuICAgICAgICB0aGlzLnNldERlZmF1bHRFbmNvZGluZyhvcHRpb25zLmVuY29kaW5nKTtcbiAgICBpZiAodHlwZW9mIHRoaXMuZmQgIT09ICdudW1iZXInKVxuICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAvLyBkaXNwb3NlIG9uIGZpbmlzaC5cbiAgICB0aGlzLm9uY2UoJ2ZpbmlzaCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuYXV0b0Nsb3NlKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbkZzV3JpdGVTdHJlYW0ucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5fdm9sLm9wZW4odGhpcy5wYXRoLCB0aGlzLmZsYWdzLCB0aGlzLm1vZGUsIGZ1bmN0aW9uIChlciwgZmQpIHtcbiAgICAgICAgaWYgKGVyKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hdXRvQ2xvc2UgJiYgdGhpcy5kZXN0cm95KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgZXIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmQgPSBmZDtcbiAgICAgICAgdGhpcy5wZW5kaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZW1pdCgnb3BlbicsIGZkKTtcbiAgICB9LmJpbmQodGhpcykpO1xufTtcbkZzV3JpdGVTdHJlYW0ucHJvdG90eXBlLl93cml0ZSA9IGZ1bmN0aW9uIChkYXRhLCBlbmNvZGluZywgY2IpIHtcbiAgICBpZiAoIShkYXRhIGluc3RhbmNlb2YgYnVmZmVyXzEuQnVmZmVyIHx8IGRhdGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSlcbiAgICAgICAgcmV0dXJuIHRoaXMuZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoJ0ludmFsaWQgZGF0YScpKTtcbiAgICBpZiAodHlwZW9mIHRoaXMuZmQgIT09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9uY2UoJ29wZW4nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0aGlzLl93cml0ZShkYXRhLCBlbmNvZGluZywgY2IpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgdmFyIHNlbGYgPSB0aGlzOyAvLyB0c2xpbnQ6ZGlzYWJsZS1saW5lIG5vLXRoaXMtYXNzaWdubWVudFxuICAgIHRoaXMuX3ZvbC53cml0ZSh0aGlzLmZkLCBkYXRhLCAwLCBkYXRhLmxlbmd0aCwgdGhpcy5wb3MsIChlciwgYnl0ZXMpID0+IHtcbiAgICAgICAgaWYgKGVyKSB7XG4gICAgICAgICAgICBpZiAoc2VsZi5hdXRvQ2xvc2UgJiYgc2VsZi5kZXN0cm95KSB7XG4gICAgICAgICAgICAgICAgc2VsZi5kZXN0cm95KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY2IoZXIpO1xuICAgICAgICB9XG4gICAgICAgIHNlbGYuYnl0ZXNXcml0dGVuICs9IGJ5dGVzO1xuICAgICAgICBjYigpO1xuICAgIH0pO1xuICAgIGlmICh0aGlzLnBvcyAhPT0gdW5kZWZpbmVkKVxuICAgICAgICB0aGlzLnBvcyArPSBkYXRhLmxlbmd0aDtcbn07XG5Gc1dyaXRlU3RyZWFtLnByb3RvdHlwZS5fd3JpdGV2ID0gZnVuY3Rpb24gKGRhdGEsIGNiKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLmZkICE9PSAnbnVtYmVyJykge1xuICAgICAgICByZXR1cm4gdGhpcy5vbmNlKCdvcGVuJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy5fd3JpdGV2KGRhdGEsIGNiKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHNlbGYgPSB0aGlzOyAvLyB0c2xpbnQ6ZGlzYWJsZS1saW5lIG5vLXRoaXMtYXNzaWdubWVudFxuICAgIGNvbnN0IGxlbiA9IGRhdGEubGVuZ3RoO1xuICAgIGNvbnN0IGNodW5rcyA9IG5ldyBBcnJheShsZW4pO1xuICAgIHZhciBzaXplID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIHZhciBjaHVuayA9IGRhdGFbaV0uY2h1bms7XG4gICAgICAgIGNodW5rc1tpXSA9IGNodW5rO1xuICAgICAgICBzaXplICs9IGNodW5rLmxlbmd0aDtcbiAgICB9XG4gICAgY29uc3QgYnVmID0gYnVmZmVyXzEuQnVmZmVyLmNvbmNhdChjaHVua3MpO1xuICAgIHRoaXMuX3ZvbC53cml0ZSh0aGlzLmZkLCBidWYsIDAsIGJ1Zi5sZW5ndGgsIHRoaXMucG9zLCAoZXIsIGJ5dGVzKSA9PiB7XG4gICAgICAgIGlmIChlcikge1xuICAgICAgICAgICAgaWYgKHNlbGYuZGVzdHJveSlcbiAgICAgICAgICAgICAgICBzZWxmLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHJldHVybiBjYihlcik7XG4gICAgICAgIH1cbiAgICAgICAgc2VsZi5ieXRlc1dyaXR0ZW4gKz0gYnl0ZXM7XG4gICAgICAgIGNiKCk7XG4gICAgfSk7XG4gICAgaWYgKHRoaXMucG9zICE9PSB1bmRlZmluZWQpXG4gICAgICAgIHRoaXMucG9zICs9IHNpemU7XG59O1xuRnNXcml0ZVN0cmVhbS5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoY2IpIHtcbiAgICBpZiAoY2IpXG4gICAgICAgIHRoaXMub25jZSgnY2xvc2UnLCBjYik7XG4gICAgaWYgKHRoaXMuY2xvc2VkIHx8IHR5cGVvZiB0aGlzLmZkICE9PSAnbnVtYmVyJykge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZmQgIT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICB0aGlzLm9uY2UoJ29wZW4nLCBjbG9zZU9uT3Blbik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHF1ZXVlTWljcm90YXNrKCgpID0+IHRoaXMuZW1pdCgnY2xvc2UnKSk7XG4gICAgfVxuICAgIC8vIFNpbmNlIE5vZGUgMTgsIHRoZXJlIGlzIG9ubHkgYSBnZXR0ZXIgZm9yICcuY2xvc2VkJy5cbiAgICAvLyBUaGUgZmlyc3QgYnJhbmNoIG1pbWljcyBvdGhlciBzZXR0ZXJzIGZyb20gV3JpdGFibGUuXG4gICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL3YxOC4wLjAvbGliL2ludGVybmFsL3N0cmVhbXMvd3JpdGFibGUuanMjTDc2NlxuICAgIGlmICh0eXBlb2YgdGhpcy5fd3JpdGFibGVTdGF0ZT8uY2xvc2VkID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5jbG9zZWQgPSB0cnVlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5jbG9zZWQgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAodGhpcy5fZmlsZUhhbmRsZSkge1xuICAgICAgICB0aGlzLl9maWxlSGFuZGxlLmNsb3NlKCkudGhlbigoKSA9PiB0aGlzLmVtaXQoJ2Nsb3NlJyksIGVyID0+IHRoaXMuZW1pdCgnZXJyb3InLCBlcikpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5fdm9sLmNsb3NlKHRoaXMuZmQsIGVyID0+IHtcbiAgICAgICAgICAgIGlmIChlcilcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgZXIpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHRoaXMuZW1pdCgnY2xvc2UnKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuZmQgPSBudWxsO1xufTtcbkZzV3JpdGVTdHJlYW0ucHJvdG90eXBlLl9kZXN0cm95ID0gRnNSZWFkU3RyZWFtLnByb3RvdHlwZS5fZGVzdHJveTtcbi8vIFRoZXJlIGlzIG5vIHNodXRkb3duKCkgZm9yIGZpbGVzLlxuRnNXcml0ZVN0cmVhbS5wcm90b3R5cGUuZGVzdHJveVNvb24gPSBGc1dyaXRlU3RyZWFtLnByb3RvdHlwZS5lbmQ7XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZTV2F0Y2hlclxuY2xhc3MgRlNXYXRjaGVyIGV4dGVuZHMgZXZlbnRzXzEuRXZlbnRFbWl0dGVyIHtcbiAgICBjb25zdHJ1Y3Rvcih2b2wpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5fZmlsZW5hbWUgPSAnJztcbiAgICAgICAgdGhpcy5fZmlsZW5hbWVFbmNvZGVkID0gJyc7XG4gICAgICAgIC8vIF9wZXJzaXN0ZW50OiBib29sZWFuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fcmVjdXJzaXZlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2VuY29kaW5nID0gZnNfbm9kZV91dGlsc18xLkVOQ09ESU5HX1VURjg7XG4gICAgICAgIC8vIGlub2RlIC0+IHJlbW92ZXJzXG4gICAgICAgIHRoaXMuX2xpc3RlbmVyUmVtb3ZlcnMgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMuX29uUGFyZW50Q2hpbGQgPSAobGluaykgPT4ge1xuICAgICAgICAgICAgaWYgKGxpbmsuZ2V0TmFtZSgpID09PSB0aGlzLl9nZXROYW1lKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0KCdyZW5hbWUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5fZW1pdCA9ICh0eXBlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVtaXQoJ2NoYW5nZScsIHR5cGUsIHRoaXMuX2ZpbGVuYW1lRW5jb2RlZCk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX3BlcnNpc3QgPSAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl90aW1lciA9IHNldFRpbWVvdXQodGhpcy5fcGVyc2lzdCwgMWU2KTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5fdm9sID0gdm9sO1xuICAgICAgICAvLyBUT0RPOiBFbWl0IFwiZXJyb3JcIiBtZXNzYWdlcyB3aGVuIHdhdGNoaW5nLlxuICAgICAgICAvLyB0aGlzLl9oYW5kbGUub25jaGFuZ2UgPSBmdW5jdGlvbihzdGF0dXMsIGV2ZW50VHlwZSwgZmlsZW5hbWUpIHtcbiAgICAgICAgLy8gICAgIGlmIChzdGF0dXMgPCAwKSB7XG4gICAgICAgIC8vICAgICAgICAgc2VsZi5faGFuZGxlLmNsb3NlKCk7XG4gICAgICAgIC8vICAgICAgICAgY29uc3QgZXJyb3IgPSAhZmlsZW5hbWUgP1xuICAgICAgICAvLyAgICAgICAgICAgICBlcnJub0V4Y2VwdGlvbihzdGF0dXMsICdFcnJvciB3YXRjaGluZyBmaWxlIGZvciBjaGFuZ2VzOicpIDpcbiAgICAgICAgLy8gICAgICAgICAgICAgZXJybm9FeGNlcHRpb24oc3RhdHVzLCBgRXJyb3Igd2F0Y2hpbmcgZmlsZSAke2ZpbGVuYW1lfSBmb3IgY2hhbmdlczpgKTtcbiAgICAgICAgLy8gICAgICAgICBlcnJvci5maWxlbmFtZSA9IGZpbGVuYW1lO1xuICAgICAgICAvLyAgICAgICAgIHNlbGYuZW1pdCgnZXJyb3InLCBlcnJvcik7XG4gICAgICAgIC8vICAgICB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgICAgIHNlbGYuZW1pdCgnY2hhbmdlJywgZXZlbnRUeXBlLCBmaWxlbmFtZSk7XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vIH07XG4gICAgfVxuICAgIF9nZXROYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3RlcHNbdGhpcy5fc3RlcHMubGVuZ3RoIC0gMV07XG4gICAgfVxuICAgIHN0YXJ0KHBhdGgsIHBlcnNpc3RlbnQgPSB0cnVlLCByZWN1cnNpdmUgPSBmYWxzZSwgZW5jb2RpbmcgPSBmc19ub2RlX3V0aWxzXzEuRU5DT0RJTkdfVVRGOCkge1xuICAgICAgICB0aGlzLl9maWxlbmFtZSA9ICgwLCB1dGlsXzMucGF0aFRvRmlsZW5hbWUpKHBhdGgpO1xuICAgICAgICB0aGlzLl9zdGVwcyA9ICgwLCBmc19jb3JlXzEuZmlsZW5hbWVUb1N0ZXBzKSh0aGlzLl9maWxlbmFtZSk7XG4gICAgICAgIHRoaXMuX2ZpbGVuYW1lRW5jb2RlZCA9ICgwLCBmc19ub2RlX3V0aWxzXzEuc3RyVG9FbmNvZGluZykodGhpcy5fZmlsZW5hbWUpO1xuICAgICAgICAvLyB0aGlzLl9wZXJzaXN0ZW50ID0gcGVyc2lzdGVudDtcbiAgICAgICAgdGhpcy5fcmVjdXJzaXZlID0gcmVjdXJzaXZlO1xuICAgICAgICB0aGlzLl9lbmNvZGluZyA9IGVuY29kaW5nO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5fbGluayA9IHRoaXMuX3ZvbC5fY29yZS5nZXRMaW5rT3JUaHJvdyh0aGlzLl9maWxlbmFtZSwgJ0ZTV2F0Y2hlcicpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGB3YXRjaCAke3RoaXMuX2ZpbGVuYW1lfSAke2Vyci5jb2RlfWApO1xuICAgICAgICAgICAgZXJyb3IuY29kZSA9IGVyci5jb2RlO1xuICAgICAgICAgICAgZXJyb3IuZXJybm8gPSBlcnIuY29kZTtcbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHdhdGNoTGlua05vZGVDaGFuZ2VkID0gKGxpbmspID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVwYXRoID0gbGluay5nZXRQYXRoKCk7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gbGluay5nZXROb2RlKCk7XG4gICAgICAgICAgICBjb25zdCBvbk5vZGVDaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGZpbGVuYW1lID0gcGF0aFJlbGF0aXZlKHRoaXMuX2ZpbGVuYW1lLCBmaWxlcGF0aCk7XG4gICAgICAgICAgICAgICAgaWYgKCFmaWxlbmFtZSlcbiAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSB0aGlzLl9nZXROYW1lKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZW1pdCgnY2hhbmdlJywgJ2NoYW5nZScsIGZpbGVuYW1lKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCB1bnN1YiA9IG5vZGUuY2hhbmdlcy5saXN0ZW4oKFt0eXBlXSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSAnbW9kaWZ5JylcbiAgICAgICAgICAgICAgICAgICAgb25Ob2RlQ2hhbmdlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IHJlbW92ZXJzID0gdGhpcy5fbGlzdGVuZXJSZW1vdmVycy5nZXQobm9kZS5pbm8pID8/IFtdO1xuICAgICAgICAgICAgcmVtb3ZlcnMucHVzaCgoKSA9PiB1bnN1YigpKTtcbiAgICAgICAgICAgIHRoaXMuX2xpc3RlbmVyUmVtb3ZlcnMuc2V0KG5vZGUuaW5vLCByZW1vdmVycyk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHdhdGNoTGlua0NoaWxkcmVuQ2hhbmdlZCA9IChsaW5rKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gbGluay5nZXROb2RlKCk7XG4gICAgICAgICAgICAvLyB3aGVuIGEgbmV3IGxpbmsgYWRkZWRcbiAgICAgICAgICAgIGNvbnN0IG9uTGlua0NoaWxkQWRkID0gKGwpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXQoJ2NoYW5nZScsICdyZW5hbWUnLCBwYXRoUmVsYXRpdmUodGhpcy5fZmlsZW5hbWUsIGwuZ2V0UGF0aCgpKSk7XG4gICAgICAgICAgICAgICAgLy8gMS4gd2F0Y2ggY2hhbmdlcyBvZiB0aGUgbmV3IGxpbmstbm9kZVxuICAgICAgICAgICAgICAgIHdhdGNoTGlua05vZGVDaGFuZ2VkKGwpO1xuICAgICAgICAgICAgICAgIC8vIDIuIHdhdGNoIGNoYW5nZXMgb2YgdGhlIG5ldyBsaW5rLW5vZGUncyBjaGlsZHJlblxuICAgICAgICAgICAgICAgIHdhdGNoTGlua0NoaWxkcmVuQ2hhbmdlZChsKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICAvLyB3aGVuIGEgbmV3IGxpbmsgZGVsZXRlZFxuICAgICAgICAgICAgY29uc3Qgb25MaW5rQ2hpbGREZWxldGUgPSAobCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIHJlbW92ZSB0aGUgbGlzdGVuZXJzIG9mIHRoZSBjaGlsZHJlbiBub2Rlc1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlbW92ZUxpbmtOb2RlTGlzdGVuZXJzID0gKGN1ckxpbmspID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5vID0gY3VyTGluay5nZXROb2RlKCkuaW5vO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZW1vdmVycyA9IHRoaXMuX2xpc3RlbmVyUmVtb3ZlcnMuZ2V0KGlubyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZW1vdmVycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlcnMuZm9yRWFjaChyID0+IHIoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9saXN0ZW5lclJlbW92ZXJzLmRlbGV0ZShpbm8pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW25hbWUsIGNoaWxkTGlua10gb2YgY3VyTGluay5jaGlsZHJlbi5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZExpbmsgJiYgbmFtZSAhPT0gJy4nICYmIG5hbWUgIT09ICcuLicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMaW5rTm9kZUxpc3RlbmVycyhjaGlsZExpbmspO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZW1vdmVMaW5rTm9kZUxpc3RlbmVycyhsKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXQoJ2NoYW5nZScsICdyZW5hbWUnLCBwYXRoUmVsYXRpdmUodGhpcy5fZmlsZW5hbWUsIGwuZ2V0UGF0aCgpKSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgLy8gY2hpbGRyZW4gbm9kZXMgY2hhbmdlZFxuICAgICAgICAgICAgZm9yIChjb25zdCBbbmFtZSwgY2hpbGRMaW5rXSBvZiBsaW5rLmNoaWxkcmVuLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgICAgIGlmIChjaGlsZExpbmsgJiYgbmFtZSAhPT0gJy4nICYmIG5hbWUgIT09ICcuLicpIHtcbiAgICAgICAgICAgICAgICAgICAgd2F0Y2hMaW5rTm9kZUNoYW5nZWQoY2hpbGRMaW5rKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBsaW5rIGNoaWxkcmVuIGFkZC9yZW1vdmVcbiAgICAgICAgICAgIGNvbnN0IHVuc3Vic2NyaWJlTGlua0NoYW5nZXMgPSBsaW5rLmNoYW5nZXMubGlzdGVuKChbdHlwZSwgbGlua10pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2NoaWxkOmFkZCcpXG4gICAgICAgICAgICAgICAgICAgIG9uTGlua0NoaWxkQWRkKGxpbmspO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT09ICdjaGlsZDpkZWwnKVxuICAgICAgICAgICAgICAgICAgICBvbkxpbmtDaGlsZERlbGV0ZShsaW5rKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgcmVtb3ZlcnMgPSB0aGlzLl9saXN0ZW5lclJlbW92ZXJzLmdldChub2RlLmlubykgPz8gW107XG4gICAgICAgICAgICByZW1vdmVycy5wdXNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICB1bnN1YnNjcmliZUxpbmtDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChyZWN1cnNpdmUpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtuYW1lLCBjaGlsZExpbmtdIG9mIGxpbmsuY2hpbGRyZW4uZW50cmllcygpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZExpbmsgJiYgbmFtZSAhPT0gJy4nICYmIG5hbWUgIT09ICcuLicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhdGNoTGlua0NoaWxkcmVuQ2hhbmdlZChjaGlsZExpbmspO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB3YXRjaExpbmtOb2RlQ2hhbmdlZCh0aGlzLl9saW5rKTtcbiAgICAgICAgd2F0Y2hMaW5rQ2hpbGRyZW5DaGFuZ2VkKHRoaXMuX2xpbmspO1xuICAgICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLl9saW5rLnBhcmVudDtcbiAgICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICAgICAgLy8gcGFyZW50Lm9uKCdjaGlsZDpkZWxldGUnLCB0aGlzLl9vblBhcmVudENoaWxkKTtcbiAgICAgICAgICAgIHBhcmVudC5jaGFuZ2VzLmxpc3RlbigoW3R5cGUsIGxpbmtdKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdjaGlsZDpkZWwnKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vblBhcmVudENoaWxkKGxpbmspO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBlcnNpc3RlbnQpXG4gICAgICAgICAgICB0aGlzLl9wZXJzaXN0KCk7XG4gICAgfVxuICAgIGNsb3NlKCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fdGltZXIpO1xuICAgICAgICB0aGlzLl9saXN0ZW5lclJlbW92ZXJzLmZvckVhY2gocmVtb3ZlcnMgPT4ge1xuICAgICAgICAgICAgcmVtb3ZlcnMuZm9yRWFjaChyID0+IHIoKSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9saXN0ZW5lclJlbW92ZXJzLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuX3BhcmVudENoYW5nZXNVbnN1Yj8uKCk7XG4gICAgfVxufVxuZXhwb3J0cy5GU1dhdGNoZXIgPSBGU1dhdGNoZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD12b2x1bWUuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmZzQ2FsbGJhY2tBcGlMaXN0ID0gdm9pZCAwO1xuZXhwb3J0cy5mc0NhbGxiYWNrQXBpTGlzdCA9IFtcbiAgICAnYWNjZXNzJyxcbiAgICAnYXBwZW5kRmlsZScsXG4gICAgJ2NobW9kJyxcbiAgICAnY2hvd24nLFxuICAgICdjbG9zZScsXG4gICAgJ2NvcHlGaWxlJyxcbiAgICAnY3AnLFxuICAgICdjcmVhdGVSZWFkU3RyZWFtJyxcbiAgICAnY3JlYXRlV3JpdGVTdHJlYW0nLFxuICAgICdleGlzdHMnLFxuICAgICdmY2htb2QnLFxuICAgICdmY2hvd24nLFxuICAgICdmZGF0YXN5bmMnLFxuICAgICdmc3RhdCcsXG4gICAgJ2ZzeW5jJyxcbiAgICAnZnRydW5jYXRlJyxcbiAgICAnZnV0aW1lcycsXG4gICAgJ2dsb2InLFxuICAgICdsY2htb2QnLFxuICAgICdsY2hvd24nLFxuICAgICdsaW5rJyxcbiAgICAnbHN0YXQnLFxuICAgICdta2RpcicsXG4gICAgJ21rZHRlbXAnLFxuICAgICdvcGVuJyxcbiAgICAnb3BlbkFzQmxvYicsXG4gICAgJ29wZW5kaXInLFxuICAgICdyZWFkJyxcbiAgICAncmVhZHYnLFxuICAgICdyZWFkZGlyJyxcbiAgICAncmVhZEZpbGUnLFxuICAgICdyZWFkbGluaycsXG4gICAgJ3JlYWxwYXRoJyxcbiAgICAncmVuYW1lJyxcbiAgICAncm0nLFxuICAgICdybWRpcicsXG4gICAgJ3N0YXQnLFxuICAgICdzdGF0ZnMnLFxuICAgICdzeW1saW5rJyxcbiAgICAndHJ1bmNhdGUnLFxuICAgICd1bmxpbmsnLFxuICAgICd1bndhdGNoRmlsZScsXG4gICAgJ3V0aW1lcycsXG4gICAgJ2x1dGltZXMnLFxuICAgICd3YXRjaCcsXG4gICAgJ3dhdGNoRmlsZScsXG4gICAgJ3dyaXRlJyxcbiAgICAnd3JpdGV2JyxcbiAgICAnd3JpdGVGaWxlJyxcbl07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1mc0NhbGxiYWNrQXBpTGlzdC5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuZnNTeW5jaHJvbm91c0FwaUxpc3QgPSB2b2lkIDA7XG5leHBvcnRzLmZzU3luY2hyb25vdXNBcGlMaXN0ID0gW1xuICAgICdhY2Nlc3NTeW5jJyxcbiAgICAnYXBwZW5kRmlsZVN5bmMnLFxuICAgICdjaG1vZFN5bmMnLFxuICAgICdjaG93blN5bmMnLFxuICAgICdjbG9zZVN5bmMnLFxuICAgICdjb3B5RmlsZVN5bmMnLFxuICAgICdleGlzdHNTeW5jJyxcbiAgICAnZmNobW9kU3luYycsXG4gICAgJ2ZjaG93blN5bmMnLFxuICAgICdmZGF0YXN5bmNTeW5jJyxcbiAgICAnZnN0YXRTeW5jJyxcbiAgICAnZnN5bmNTeW5jJyxcbiAgICAnZnRydW5jYXRlU3luYycsXG4gICAgJ2Z1dGltZXNTeW5jJyxcbiAgICAnZ2xvYlN5bmMnLFxuICAgICdsY2htb2RTeW5jJyxcbiAgICAnbGNob3duU3luYycsXG4gICAgJ2xpbmtTeW5jJyxcbiAgICAnbHN0YXRTeW5jJyxcbiAgICAnbWtkaXJTeW5jJyxcbiAgICAnbWtkdGVtcFN5bmMnLFxuICAgICdvcGVuU3luYycsXG4gICAgJ29wZW5kaXJTeW5jJyxcbiAgICAncmVhZGRpclN5bmMnLFxuICAgICdyZWFkRmlsZVN5bmMnLFxuICAgICdyZWFkbGlua1N5bmMnLFxuICAgICdyZWFkU3luYycsXG4gICAgJ3JlYWR2U3luYycsXG4gICAgJ3JlYWxwYXRoU3luYycsXG4gICAgJ3JlbmFtZVN5bmMnLFxuICAgICdybWRpclN5bmMnLFxuICAgICdybVN5bmMnLFxuICAgICdzdGF0U3luYycsXG4gICAgJ3N5bWxpbmtTeW5jJyxcbiAgICAndHJ1bmNhdGVTeW5jJyxcbiAgICAndW5saW5rU3luYycsXG4gICAgJ3V0aW1lc1N5bmMnLFxuICAgICdsdXRpbWVzU3luYycsXG4gICAgJ3dyaXRlRmlsZVN5bmMnLFxuICAgICd3cml0ZVN5bmMnLFxuICAgICd3cml0ZXZTeW5jJyxcbiAgICAvLyAnY3BTeW5jJyxcbiAgICAvLyAnc3RhdGZzU3luYycsXG5dO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZnNTeW5jaHJvbm91c0FwaUxpc3QuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmZzQ29tbW9uT2JqZWN0c0xpc3QgPSB2b2lkIDA7XG5leHBvcnRzLmZzQ29tbW9uT2JqZWN0c0xpc3QgPSBbXG4gICAgJ0ZfT0snLFxuICAgICdSX09LJyxcbiAgICAnV19PSycsXG4gICAgJ1hfT0snLFxuICAgICdjb25zdGFudHMnLFxuICAgICdTdGF0cycsXG4gICAgJ1N0YXRGcycsXG4gICAgJ0RpcicsXG4gICAgJ0RpcmVudCcsXG4gICAgJ1N0YXRzV2F0Y2hlcicsXG4gICAgJ0ZTV2F0Y2hlcicsXG4gICAgJ1JlYWRTdHJlYW0nLFxuICAgICdXcml0ZVN0cmVhbScsXG5dO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZnNDb21tb25PYmplY3RzTGlzdC5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuZnNDb21tb25PYmplY3RzTGlzdCA9IGV4cG9ydHMuZnNTeW5jaHJvbm91c0FwaUxpc3QgPSBleHBvcnRzLmZzQ2FsbGJhY2tBcGlMaXN0ID0gZXhwb3J0cy5Gc1Byb21pc2VzID0gZXhwb3J0cy5EaXIgPSBleHBvcnRzLkZpbGVIYW5kbGUgPSBleHBvcnRzLlN0YXRGcyA9IGV4cG9ydHMuRGlyZW50ID0gZXhwb3J0cy5TdGF0cyA9IGV4cG9ydHMudG9Vbml4VGltZXN0YW1wID0gZXhwb3J0cy5GU1dhdGNoZXIgPSBleHBvcnRzLlN0YXRXYXRjaGVyID0gZXhwb3J0cy5Wb2x1bWUgPSB2b2lkIDA7XG5jb25zdCB0c2xpYl8xID0gcmVxdWlyZShcInRzbGliXCIpO1xudmFyIHZvbHVtZV8xID0gcmVxdWlyZShcIi4vdm9sdW1lXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVm9sdW1lXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB2b2x1bWVfMS5Wb2x1bWU7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJTdGF0V2F0Y2hlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdm9sdW1lXzEuU3RhdFdhdGNoZXI7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJGU1dhdGNoZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHZvbHVtZV8xLkZTV2F0Y2hlcjsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInRvVW5peFRpbWVzdGFtcFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdm9sdW1lXzEudG9Vbml4VGltZXN0YW1wOyB9IH0pO1xudmFyIFN0YXRzXzEgPSByZXF1aXJlKFwiLi9TdGF0c1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlN0YXRzXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBTdGF0c18xLmRlZmF1bHQ7IH0gfSk7XG52YXIgRGlyZW50XzEgPSByZXF1aXJlKFwiLi9EaXJlbnRcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJEaXJlbnRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIERpcmVudF8xLmRlZmF1bHQ7IH0gfSk7XG52YXIgU3RhdEZzXzEgPSByZXF1aXJlKFwiLi9TdGF0RnNcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJTdGF0RnNcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFN0YXRGc18xLmRlZmF1bHQ7IH0gfSk7XG52YXIgRmlsZUhhbmRsZV8xID0gcmVxdWlyZShcIi4vRmlsZUhhbmRsZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkZpbGVIYW5kbGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEZpbGVIYW5kbGVfMS5GaWxlSGFuZGxlOyB9IH0pO1xudmFyIERpcl8xID0gcmVxdWlyZShcIi4vRGlyXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiRGlyXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBEaXJfMS5EaXI7IH0gfSk7XG52YXIgRnNQcm9taXNlc18xID0gcmVxdWlyZShcIi4vRnNQcm9taXNlc1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkZzUHJvbWlzZXNcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEZzUHJvbWlzZXNfMS5Gc1Byb21pc2VzOyB9IH0pO1xudHNsaWJfMS5fX2V4cG9ydFN0YXIocmVxdWlyZShcIi4vb3B0aW9uc1wiKSwgZXhwb3J0cyk7XG50c2xpYl8xLl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi91dGlsXCIpLCBleHBvcnRzKTtcbnRzbGliXzEuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL2dsb2JcIiksIGV4cG9ydHMpO1xudmFyIGZzQ2FsbGJhY2tBcGlMaXN0XzEgPSByZXF1aXJlKFwiLi9saXN0cy9mc0NhbGxiYWNrQXBpTGlzdFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImZzQ2FsbGJhY2tBcGlMaXN0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBmc0NhbGxiYWNrQXBpTGlzdF8xLmZzQ2FsbGJhY2tBcGlMaXN0OyB9IH0pO1xudmFyIGZzU3luY2hyb25vdXNBcGlMaXN0XzEgPSByZXF1aXJlKFwiLi9saXN0cy9mc1N5bmNocm9ub3VzQXBpTGlzdFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImZzU3luY2hyb25vdXNBcGlMaXN0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBmc1N5bmNocm9ub3VzQXBpTGlzdF8xLmZzU3luY2hyb25vdXNBcGlMaXN0OyB9IH0pO1xudmFyIGZzQ29tbW9uT2JqZWN0c0xpc3RfMSA9IHJlcXVpcmUoXCIuL2xpc3RzL2ZzQ29tbW9uT2JqZWN0c0xpc3RcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJmc0NvbW1vbk9iamVjdHNMaXN0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBmc0NvbW1vbk9iamVjdHNMaXN0XzEuZnNDb21tb25PYmplY3RzTGlzdDsgfSB9KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5tZW1mcyA9IGV4cG9ydHMuZnMgPSBleHBvcnRzLnZvbCA9IGV4cG9ydHMuVm9sdW1lID0gdm9pZCAwO1xuZXhwb3J0cy5jcmVhdGVGc0Zyb21Wb2x1bWUgPSBjcmVhdGVGc0Zyb21Wb2x1bWU7XG5jb25zdCBmc19ub2RlXzEgPSByZXF1aXJlKFwiQGpzb25qb3kuY29tL2ZzLW5vZGVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJWb2x1bWVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZzX25vZGVfMS5Wb2x1bWU7IH0gfSk7XG5jb25zdCBmc19ub2RlX3V0aWxzXzEgPSByZXF1aXJlKFwiQGpzb25qb3kuY29tL2ZzLW5vZGUtdXRpbHNcIik7XG5jb25zdCB7IEZfT0ssIFJfT0ssIFdfT0ssIFhfT0sgfSA9IGZzX25vZGVfdXRpbHNfMS5jb25zdGFudHM7XG4vLyBEZWZhdWx0IHZvbHVtZS5cbmV4cG9ydHMudm9sID0gbmV3IGZzX25vZGVfMS5Wb2x1bWUoKTtcbmZ1bmN0aW9uIGNyZWF0ZUZzRnJvbVZvbHVtZSh2b2wpIHtcbiAgICBjb25zdCBmcyA9IHsgRl9PSywgUl9PSywgV19PSywgWF9PSywgY29uc3RhbnRzOiBmc19ub2RlX3V0aWxzXzEuY29uc3RhbnRzLCBTdGF0czogZnNfbm9kZV8xLlN0YXRzLCBEaXJlbnQ6IGZzX25vZGVfMS5EaXJlbnQgfTtcbiAgICAvLyBCaW5kIEZTIG1ldGhvZHMuXG4gICAgZm9yIChjb25zdCBtZXRob2Qgb2YgZnNfbm9kZV8xLmZzU3luY2hyb25vdXNBcGlMaXN0KVxuICAgICAgICBpZiAodHlwZW9mIHZvbFttZXRob2RdID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgZnNbbWV0aG9kXSA9IHZvbFttZXRob2RdLmJpbmQodm9sKTtcbiAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBmc19ub2RlXzEuZnNDYWxsYmFja0FwaUxpc3QpXG4gICAgICAgIGlmICh0eXBlb2Ygdm9sW21ldGhvZF0gPT09ICdmdW5jdGlvbicpXG4gICAgICAgICAgICBmc1ttZXRob2RdID0gdm9sW21ldGhvZF0uYmluZCh2b2wpO1xuICAgIGZzLlN0YXRXYXRjaGVyID0gdm9sLlN0YXRXYXRjaGVyO1xuICAgIGZzLkZTV2F0Y2hlciA9IHZvbC5GU1dhdGNoZXI7XG4gICAgZnMuV3JpdGVTdHJlYW0gPSB2b2wuV3JpdGVTdHJlYW07XG4gICAgZnMuUmVhZFN0cmVhbSA9IHZvbC5SZWFkU3RyZWFtO1xuICAgIGZzLnByb21pc2VzID0gdm9sLnByb21pc2VzO1xuICAgIC8vIEhhbmRsZSByZWFscGF0aCBhbmQgcmVhbHBhdGhTeW5jIHdpdGggdGhlaXIgLm5hdGl2ZSBwcm9wZXJ0aWVzXG4gICAgaWYgKHR5cGVvZiB2b2wucmVhbHBhdGggPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgZnMucmVhbHBhdGggPSB2b2wucmVhbHBhdGguYmluZCh2b2wpO1xuICAgICAgICBpZiAodHlwZW9mIHZvbC5yZWFscGF0aC5uYXRpdmUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGZzLnJlYWxwYXRoLm5hdGl2ZSA9IHZvbC5yZWFscGF0aC5uYXRpdmUuYmluZCh2b2wpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygdm9sLnJlYWxwYXRoU3luYyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBmcy5yZWFscGF0aFN5bmMgPSB2b2wucmVhbHBhdGhTeW5jLmJpbmQodm9sKTtcbiAgICAgICAgaWYgKHR5cGVvZiB2b2wucmVhbHBhdGhTeW5jLm5hdGl2ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgZnMucmVhbHBhdGhTeW5jLm5hdGl2ZSA9IHZvbC5yZWFscGF0aFN5bmMubmF0aXZlLmJpbmQodm9sKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmcy5fdG9Vbml4VGltZXN0YW1wID0gZnNfbm9kZV8xLnRvVW5peFRpbWVzdGFtcDtcbiAgICBmcy5fX3ZvbCA9IHZvbDtcbiAgICByZXR1cm4gZnM7XG59XG5leHBvcnRzLmZzID0gY3JlYXRlRnNGcm9tVm9sdW1lKGV4cG9ydHMudm9sKTtcbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBmaWxlIHN5c3RlbSBpbnN0YW5jZS5cbiAqXG4gKiBAcGFyYW0ganNvbiBGaWxlIHN5c3RlbSBzdHJ1Y3R1cmUgZXhwcmVzc2VkIGFzIGEgSlNPTiBvYmplY3QuXG4gKiAgICAgICAgVXNlIGBudWxsYCBmb3IgZW1wdHkgZGlyZWN0b3JpZXMgYW5kIGVtcHR5IHN0cmluZyBmb3IgZW1wdHkgZmlsZXMuXG4gKiBAcGFyYW0gY3dkT3JPcHRzIEN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgKHN0cmluZykgb3Igb3B0aW9ucyBvYmplY3QuXG4gKiAgICAgICAgVGhlIEpTT04gc3RydWN0dXJlIHdpbGwgYmUgY3JlYXRlZCByZWxhdGl2ZSB0byB0aGUgY3dkIHBhdGguXG4gKiBAcmV0dXJucyBBIGBtZW1mc2AgZmlsZSBzeXN0ZW0gaW5zdGFuY2UsIHdoaWNoIGlzIGEgZHJvcC1pbiByZXBsYWNlbWVudCBmb3JcbiAqICAgICAgICAgIHRoZSBgZnNgIG1vZHVsZS5cbiAqL1xuY29uc3QgbWVtZnMgPSAoanNvbiA9IHt9LCBjd2RPck9wdHMgPSAnLycpID0+IHtcbiAgICBjb25zdCBvcHRzID0gdHlwZW9mIGN3ZE9yT3B0cyA9PT0gJ3N0cmluZycgPyB7IGN3ZDogY3dkT3JPcHRzIH0gOiBjd2RPck9wdHM7XG4gICAgLy8gV2hlbiBubyBleHBsaWNpdCBjd2QgaXMgZ2l2ZW4gYnV0IGEgY3VzdG9tIHByb2Nlc3MgaXMgcHJvdmlkZWQsIGxldCB0aGVcbiAgICAvLyBTdXBlcmJsb2NrIHVzZSB0aGF0IHByb2Nlc3MncyBjd2QoKS4gT3RoZXJ3aXNlIGRlZmF1bHQgdG8gJy8nIHNvIHRoZVxuICAgIC8vIGNvbnZlbmllbmNlIGZ1bmN0aW9uIGtlZXBzIGl0cyBvcGluaW9uYXRlZCB2aXJ0dWFsLXJvb3QgZGVmYXVsdC5cbiAgICBjb25zdCBjd2QgPSBvcHRzLmN3ZCA/PyAob3B0cy5wcm9jZXNzID8gdW5kZWZpbmVkIDogJy8nKTtcbiAgICBjb25zdCB2b2wgPSBmc19ub2RlXzEuVm9sdW1lLmZyb21OZXN0ZWRKU09OKGpzb24sIGN3ZCwgeyBwcm9jZXNzOiBvcHRzLnByb2Nlc3MgfSk7XG4gICAgY29uc3QgZnMgPSBjcmVhdGVGc0Zyb21Wb2x1bWUodm9sKTtcbiAgICByZXR1cm4geyBmcywgdm9sIH07XG59O1xuZXhwb3J0cy5tZW1mcyA9IG1lbWZzO1xubW9kdWxlLmV4cG9ydHMgPSB7IC4uLm1vZHVsZS5leHBvcnRzLCAuLi5leHBvcnRzLmZzIH07XG5tb2R1bGUuZXhwb3J0cy5zZW1hbnRpYyA9IHRydWU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCJpbXBvcnQgKiBhcyBtZW1mc0V4cG9ydGVkIGZyb20gJ21lbWZzJ1xuaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSAnYnVmZmVyJ1xuXG5jb25zdCB7IGNyZWF0ZUZzRnJvbVZvbHVtZSwgVm9sdW1lLCBmcywgbWVtZnMgfSA9IG1lbWZzRXhwb3J0ZWRcblxuZXhwb3J0IHsgY3JlYXRlRnNGcm9tVm9sdW1lLCBWb2x1bWUsIGZzLCBtZW1mcywgbWVtZnNFeHBvcnRlZCwgQnVmZmVyIH1cbiJdLCJuYW1lcyI6WyJicm93c2VyTW9kdWxlIiwicHJvY2VzcyIsImV4cG9ydHMiLCJyZXF1aXJlJCQwIiwidHlwZXMiLCJiYXNlNjQuZnJvbUJ5dGVBcnJheSIsImllZWU3NTQucmVhZCIsImllZWU3NTQud3JpdGUiLCJlcnJvcnMiLCJiYXNlNjQudG9CeXRlQXJyYXkiLCJqc29uIiwicmVxdWlyZSQkMSIsImNvbnN0YW50cyIsInByb2Nlc3NfMSIsIkZMQUdfMSIsIkZMQUciLCJ1dGlsIiwiZ2xvYmFsIiwicmVxdWlyZSQkMiIsInJlcXVpcmUkJDMiLCJyZXF1aXJlJCQ0IiwicmVxdWlyZSQkNSIsInJlcXVpcmUkJDYiLCJOb2RlXzEiLCJOb2RlIiwiTGlua18xIiwiTGluayIsIkZpbGVfMSIsIkZpbGUiLCJ0aGlzIiwidW5kZWZpbmVkIiwicmVxdWlyZSQkNyIsInJlcXVpcmUkJDgiLCJyZXF1aXJlJCQ5IiwicmVxdWlyZSQkMTAiLCJyZXF1aXJlJCQxMSIsInJlcXVpcmUkJDEyIiwicmVxdWlyZSQkMTMiLCJyZXF1aXJlJCQxNCIsInJlcXVpcmUkJDE1IiwicmVxdWlyZSQkMTYiLCJyZXF1aXJlJCQxNyIsInJlcXVpcmUkJDE4IiwicmVxdWlyZSQkMTkiLCJyZXF1aXJlJCQyMCIsInJlcXVpcmUkJDIxIiwicmVxdWlyZSQkMjIiLCJyZXF1aXJlJCQyMyIsInJlcXVpcmUkJDI0IiwicmVxdWlyZSQkMjUiLCJyZXF1aXJlJCQyNiIsInJlcXVpcmUkJDI3IiwidXRpbHMiLCJsaWIiLCJTdXBlcmJsb2NrXzEiLCJTdXBlcmJsb2NrIiwiU3RhdHNfMSIsIlN0YXRzIiwiRGlyZW50XzEiLCJEaXJlbnQiLCJTdGF0RnNfMSIsIlN0YXRGcyIsInNldFRpbWVvdXRVbnJlZl8xIiwic2V0VGltZW91dFVucmVmIiwiZXZlbnRzTW9kdWxlIiwiZW5kT2ZTdHJlYW1Nb2R1bGUiLCJzdHJlYW1Nb2R1bGUiLCJGaWxlSGFuZGxlXzEiLCJGaWxlSGFuZGxlIiwiRnNQcm9taXNlc18xIiwiRnNQcm9taXNlcyIsInByaW50VHJlZV8xIiwicHJpbnRUcmVlIiwicHJpbnRCaW5hcnlfMSIsInByaW50QmluYXJ5IiwicHJpbnRKc29uXzEiLCJwcmludEpzb24iLCJpc0Zsb2F0MzJfMSIsImlzRmxvYXQzMiIsIkpzb25QYWNrRXh0ZW5zaW9uXzEiLCJKc29uUGFja0V4dGVuc2lvbiIsIlNsaWNlXzEiLCJTbGljZSIsIldyaXRlcl8xIiwiV3JpdGVyIiwiQ2JvckVuY29kZXJGYXN0XzEiLCJDYm9yRW5jb2RlckZhc3QiLCJKc29uUGFja1ZhbHVlXzEiLCJKc29uUGFja1ZhbHVlIiwiQ2JvckVuY29kZXJfMSIsIkNib3JFbmNvZGVyIiwiZGVjb2RlQXNjaWlfMSIsImRlY29kZUFzY2lpIiwiUmVhZGVyXzEiLCJSZWFkZXIiLCJDYWNoZWRVdGY4RGVjb2Rlcl8xIiwiQ2FjaGVkVXRmOERlY29kZXIiLCJDYm9yRGVjb2RlckJhc2VfMSIsIkNib3JEZWNvZGVyQmFzZSIsIkNib3JEZWNvZGVyXzEiLCJDYm9yRGVjb2RlciIsImNyZWF0ZVRvQmFzZTY0QmluXzEiLCJjcmVhdGVUb0Jhc2U2NEJpbiIsIkpzb25FbmNvZGVyXzEiLCJKc29uRW5jb2RlciIsImNyZWF0ZUZyb21CYXNlNjRCaW5fMSIsImNyZWF0ZUZyb21CYXNlNjRCaW4iLCJEaXJfMSIsIkRpciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFJLGFBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLFNBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUE7QUFDbEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sVUFBVSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RyxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQzVCLENBQUM7O0FBRU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBK0IsQ0FBQztBQUMvRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUNyQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztBQUN0Rjs7QUFFTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUNqQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBRTtBQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUM7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFDO0FBQ2QsQ0FBQSxDQUFFLENBQUE7QUFDRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsU0FBUyxDQUFDO0FBQ3hDLENBQUE7O0FBRU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNaLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDckYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ3JFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUM5RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ04sQ0FBQSxDQUFFLE9BQU8sQ0FBQztBQUNWOztBQUVPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDMUQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzlILENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNoSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7QUFDbkosQ0FBQSxDQUFFLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQy9EOztBQUVPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxTQUFTLENBQUEsQ0FBRTtBQUMvQyxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUM7QUFDdEU7O0FBRU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxpQkFBaUIsQ0FBQSxDQUFFO0FBQ3pHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQztBQUN4SCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNsRyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3pGLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsWUFBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLHdCQUF3QixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFDO0FBQzFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDckIsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBRTtBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQztBQUM5RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQztBQUM3RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLFVBQVUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3RCxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25MLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLE9BQU8sQ0FBQztBQUNwSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsaUJBQWlCLENBQUM7QUFDbkcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUM7QUFDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUM7QUFDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQztBQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxZQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQztBQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUM7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDTixDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxVQUFVLENBQUM7QUFDdkUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2I7QUFFTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxpQkFBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFO0FBQ2hFLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDO0FBQ3JDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBRTtBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7QUFDN0YsQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2xDO0FBRU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ2pEO0FBRU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFO0FBQ25ELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxXQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNoRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUN0SDtBQUVPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLGFBQWEsQ0FBQSxDQUFFO0FBQ3ZELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQztBQUNoSTs7QUFFTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLFVBQVUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtBQUM3RCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRTtBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25HLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUM7QUFDbkgsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLFVBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDM0UsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUNKOztBQUVPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0FBQzNDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsU0FBUyxDQUFDO0FBQ2xNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDO0FBQzdKLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25FLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxpQ0FBaUMsQ0FBQztBQUNuRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxPQUFPLENBQUM7QUFDdEssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ3JFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDN0gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO0FBQ3ZHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUN0RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUNwRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUM7QUFDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUU7QUFDdEYsQ0FBQSxDQUFFO0FBQ0Y7O0FBRU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRTtBQUNwRSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFNBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHLENBQUM7QUFDOUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUNsRCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFFO0FBQ3JGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLFVBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsV0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUNuRSxDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNwQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxTQUFTLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxTQUFTLENBQUEsQ0FBRSxDQUFBLENBQUUsR0FBRyxDQUFDO0FBQzlCLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2QsQ0FBQyxDQUFDOztBQUVLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDL0c7O0FBRU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUMvRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxPQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNOLENBQUEsQ0FBQSxDQUFHO0FBQ0gsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQyxDQUFDO0FBQ3hGOztBQUVPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsUUFBUSxDQUFDO0FBQzVELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsT0FBTyxDQUFDO0FBQ2xCLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsRUFBRSxDQUFDO0FBQ2xDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNoRixDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUM7QUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQztBQUN0QyxDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7QUFDWDs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxRQUFRLENBQUEsQ0FBQSxDQUFHO0FBQzNCLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQyxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7QUFDWDs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxjQUFjLENBQUEsQ0FBQSxDQUFHO0FBQ2pDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNyRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQ3ZFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckIsQ0FBQSxDQUFFLE9BQU8sQ0FBQztBQUNWOztBQUVPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLGFBQWEsQ0FBQyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRTtBQUM5QyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUU7QUFDdkYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsSUFBSSxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUM7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDTixDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsT0FBTyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQztBQUMxRDs7QUFFTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUU7QUFDM0IsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUM7QUFDdEU7O0FBRU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsZ0JBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLFNBQVMsQ0FBQSxDQUFFO0FBQ2pFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQyxDQUFDO0FBQ3hGLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFBLENBQUU7QUFDL0QsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQztBQUN6TixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRyxDQUFBLENBQUUsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6SyxDQUFBLENBQUUsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRixDQUFBLENBQUUsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssWUFBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6SCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQztBQUNuRCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQztBQUNuRCxDQUFBLENBQUUsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25GOztBQUVPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQyxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQztBQUNWLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxZQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUM7QUFDN0ksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdkk7O0FBRU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUMsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQyxDQUFDO0FBQ3hGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFFLENBQUM7QUFDcEMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQ2xOLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLE9BQU8sQ0FBQyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQztBQUM3SDs7QUFFTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFO0FBQ2xELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQ2hILENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2Y7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDekQsQ0FBQSxDQUFFLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUM7QUFDckUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxHQUFHLENBQUM7QUFDbEIsQ0FBQzs7QUFFRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLG1CQUFtQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUU7QUFDdkQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDdEYsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBRTtBQUNiLENBQUEsQ0FBRSxDQUFDO0FBQ0gsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQztBQUNuQixDQUFDOztBQUVNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDdkMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2pCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsR0FBRyxDQUFDO0FBQ2pDLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2Y7O0FBRU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFO0FBQ3pEOztBQUVPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUNqRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLCtDQUErQyxDQUFDO0FBQzlGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEUsQ0FBQztBQUNwTCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsUUFBUSxDQUFDO0FBQy9GOztBQUVPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDeEUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0MsQ0FBQztBQUN6RSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLCtDQUErQyxDQUFDO0FBQzlGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlFLENBQUM7QUFDbkwsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzNHOztBQUVPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDdkQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQyxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0MsQ0FBQztBQUMxSixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsUUFBUSxDQUFDO0FBQy9FOztBQUVPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLHVCQUF1QixDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtBQUMzRCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxNQUFNLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLGtCQUFrQixDQUFDO0FBQ3pHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFFO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQyxDQUFDO0FBQzFGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxZQUFZLENBQUM7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0MsQ0FBQztBQUNoRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsT0FBTyxDQUFDO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUM7QUFDcEYsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQztBQUNwRSxDQUFBLENBQUU7QUFDRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUU7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDO0FBQ25DLENBQUEsQ0FBRTtBQUNGLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNkOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsVUFBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFO0FBQ3ZILENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxPQUFPLENBQUM7QUFDNUIsQ0FBQSxDQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFDO0FBQ2xGLENBQUM7O0FBRU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUMsQ0FBQSxDQUFFLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEMsQ0FBQyxHQUFHLENBQUM7QUFDakgsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3ZCLENBQUEsQ0FBRTtBQUNGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFDO0FBQ2QsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLElBQUksQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQztBQUM5RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLElBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsSUFBSSxDQUFDO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQztBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0FBQ3BGLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDckMsQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFBLENBQUU7QUFDZjs7QUFFTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsV0FBVyxDQUFBLENBQUU7QUFDcEUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLGtEQUFrRCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFO0FBQzVHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQztBQUN4SCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUM7QUFDUixDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2I7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZTtBQUNmLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNYLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDVixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDUixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNaLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1QsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ2QsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUI7QUFDbkIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ1gsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUI7QUFDbkIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDWixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDWCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ2IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlO0FBQ2pCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNkLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDVixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDUixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ1YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztBQUNoQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtBQUNmLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1QsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQ2xCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUNsQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtBQUNmLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CO0FBQ3RCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNkLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZTtBQUNqQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0I7QUFDeEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCO0FBQ3hCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUI7QUFDdkIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUI7QUFDekIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQjtBQUNwQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQztBQUNsQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDaFpELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUdBLFNBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEdBQUcsQ0FBQSxDQUFFOztBQUVqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7QUFDcEIsQ0FBQSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQjs7QUFFdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxnQkFBZ0IsQ0FBQSxDQUFBLENBQUc7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsaUNBQWlDLENBQUM7QUFDdEQsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsbUJBQW1CLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsbUNBQW1DLENBQUM7QUFDeEQsQ0FBQTtBQUNBLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO2FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO2FBQ0gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFO1NBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7YUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTthQUNILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0EsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUU7U0FDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQjtBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtDQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUU7U0FDNUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFDO0tBQ3ZDLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUM7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUM7U0FDdEQsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7OztBQUdBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRTtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUU7U0FDckYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQztLQUN6QyxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUM7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sa0JBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLE1BQU0sQ0FBQztTQUN4RCxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUM7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxrQkFBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsTUFBTSxDQUFDO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOzs7O0FBSUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtDQUNkLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNwQixDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7Q0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTs7QUFFbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxlQUFlLENBQUEsQ0FBQSxDQUFHO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxZQUFZLENBQUEsQ0FBRTtTQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxLQUFLLENBQUM7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07U0FDSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEdBQUcsQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxVQUFVLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsVUFBVSxDQUFBLENBQUEsQ0FBRztLQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFFO1NBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxlQUFlLENBQUM7S0FDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTs7QUFFbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07S0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUU7U0FDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztTQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUU7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBRTthQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFJLFlBQVksQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQSxDQUFFO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsR0FBRyxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztBQUM1QixDQUFBOztBQUVBLENBQUEsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEdBQUcsQ0FBQSxDQUFFO0tBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUU7YUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQztLQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7U0FDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFDOztBQUVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN0QixDQUFBO0FBQ0EsQ0FBQSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0tBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztDQUNwQyxDQUFDO0NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztDQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0NBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7Q0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTs7QUFFckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUE7O0NBRWhCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtDQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7Q0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtDQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtDQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7Q0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0NBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7Q0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7Q0FDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7O0NBRWxDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUE7O0FBRS9DLENBQUEsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxJQUFJLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxrQ0FBa0MsQ0FBQztDQUN2RCxDQUFDOztBQUVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLFlBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3hDLENBQUEsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEdBQUcsQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLGdDQUFnQyxDQUFDO0NBQ3JELENBQUM7Q0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBRTs7Ozs7Ozs7Ozs7Ozs7Q0M3SnhDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQztBQUNsRixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLGNBQWMsQ0FBQSxDQUFFO0dBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0dBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDM0IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7R0FDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDZCxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDVixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUM7VUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ00sQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7T0FDckIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBRXRDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3JKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7YUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxjQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsR0FBRyxDQUFDO2FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUksY0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRTtpQkFDekIsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUU7aUJBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixHQUFHLENBQUM7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtpQkFDTCxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxHQUFHLENBQUM7QUFDekUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7ZUFDYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxHQUFHLENBQUM7ZUFDYixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQztlQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTthQUMvQyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBRTthQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsR0FBRyxDQUFDO2FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEdBQUcsQ0FBQzthQUNiLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFDO2FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFJLGNBQWMsQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDO2FBQ2hCLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtXQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsR0FBRyxDQUFDO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQztBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1dBQ1UsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxpQkFBaUIsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxHQUFHLENBQUM7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEdBQUcsQ0FBQztPQUNiLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFDO0tBQ2QsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07T0FDTCxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ1osQ0FBQTs7QUFFQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxVQUFVLENBQUEsQ0FBRTtHQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDN0MsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztHQUM5RSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNmLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLElBQUksQ0FBQSxDQUFFO0tBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNyQixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3pCLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUc7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUc7S0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7S0FDckIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUc7O0tBRVAsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxnQkFBZ0IsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUU7QUFDMUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7T0FDUixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUM7WUFDaEI7U0FDSCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQyxHQUFHLENBQUEsQ0FBRTtTQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7T0FFTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDOztBQUV0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO1NBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxZQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtPQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLFlBQVksQ0FBQSxDQUFFLENBQUMsZ0JBQWdCLENBQUM7O0tBRXBFLENBQUEsQ0FBQSxDQUFBLENBQUksZ0JBQWdCLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUM7U0FDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBRztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0EsQ0FBRzs7QUFFSCxDQUFBLENBQUEsQ0FBRSxTQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLElBQUksQ0FBQSxDQUFFO0tBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7O0tBRWhCLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQyxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBRzs7S0FFakMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRW5FLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLElBQUksQ0FBQSxDQUFFLENBQUMsVUFBVSxDQUFDOztBQUVsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7S0FDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRzs7QUFFekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtHQUNmLENBQUc7O0FBRUgsQ0FBQSxDQUFBLENBQUUsVUFBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLElBQUksQ0FBQSxDQUFFO0tBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ3ZELENBQUc7O0FBRUgsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUM7T0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7U0FDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7V0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBRztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxNQUFNLENBQUM7R0FDbEMsQ0FBRzs7R0FFRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRTtLQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0tBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUUsQ0FBQzs7QUFFbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRTs7QUFFOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLElBQUksQ0FBQztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsRUFBRSxDQUFDOztBQUUxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFOztBQUU5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUM7S0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtPQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUzs7QUFFckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUM7S0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtPQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTzs7QUFFL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7S0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO1dBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUEsQ0FBRTtXQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQzNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxHQUFHLENBQUM7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLEdBQUcsQ0FBQztBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztPQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztPQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07U0FDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1lBQ0csQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLEdBQUcsQ0FBQztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0tBRUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQztXQUNsQixDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7V0FDVSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDO09BQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDO1VBQzNDO09BQ0gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWE7T0FDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE9BQU8sQ0FBQztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDQSxDQUFHOztBQUVILENBQUEsQ0FBQSxDQUFFLFNBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsSUFBSSxDQUFBLENBQUU7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtHQUNmLENBQUc7O0FBRUgsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLElBQUksQ0FBQSxDQUFFO0tBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7S0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFDLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFHO0tBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0tBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUM7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7V0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRTthQUNqQixDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUM7YUFDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0tBRUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7S0FDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFDLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUUsR0FBRyxDQUFDO0dBQzdCLENBQUc7O0dBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLGlDQUFpQyxDQUFDO0tBQ3hHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7O0tBRWhCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0tBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUM7O0FBRVQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFBLENBQUU7QUFDMUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7QUFDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUM7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO1NBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7ZUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBRTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2lCQUNnQixDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUM7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7ZUFDYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBRTtlQUNYLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7T0FFTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07T0FDaEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxHQUFHLENBQUM7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO1NBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7ZUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7V0FDVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7T0FDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxHQUFHLENBQUM7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0EsQ0FBRzs7QUFFSCxDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsSUFBSSxDQUFBLENBQUU7S0FDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0tBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7S0FDWixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtPQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUM7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1dBQ1UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQzthQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7V0FDVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO2FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUM7Z0JBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7YUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEdBQUcsQ0FBQztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEdBQUcsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0tBRUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUE7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxLQUFLLENBQUMsQ0FBQSxDQUFBO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDakYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBRTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsR0FBRyxDQUFDO0dBQ3BDLENBQUc7O0FBRUgsQ0FBQSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxVQUFVLENBQUEsQ0FBRTtLQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7T0FDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLGtFQUFrRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLFVBQVUsQ0FBQztBQUNqSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLFVBQVUsQ0FBQztHQUNuQyxDQUFHOztBQUVILENBQUEsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLElBQUksQ0FBQSxDQUFFO0tBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7O0tBRWhCLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRTtLQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUMsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUc7S0FDakMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDVCxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO09BQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQztBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO09BQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQztBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7S0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtLQUNaLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUM7O0FBRTNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQzs7QUFFdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUM7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1dBQ1UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQzthQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7V0FDVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxHQUFHLENBQUM7QUFDdkYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsR0FBRyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7S0FFSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxLQUFLLENBQUMsQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUM3RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxHQUFHLENBQUM7QUFDekksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFBLENBQUU7U0FDakMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztTQUNsQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO1NBQ0wsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7U0FDMUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ00sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHOztBQUVoRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRztHQUNkLENBQUc7O0dBRUQsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBRztHQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUc7R0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2IsQ0FBQSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUE7RUFDUjs7Q0FFRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLOztBQUVuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzs7Ozs7Ozs7OztFQy9nQnRCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUFDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztFQUM3REEsU0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUJBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQkEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsY0FBb0JBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQWtCQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQkEsaUJBQWVBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsQ0FBY0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBa0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07RUFDdEssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFvQjtFQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDRCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUM7RUFDakgsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUM7RUFDekcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztFQUM3RyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUM7RUFDM0csQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztFQUNuSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUM7RUFDakgsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUM7RUFDckgsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0VBQ3ZILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUM7QUFDbkgsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7QUNaQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNFLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM3RDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUV4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7Q0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sVUFBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUUzRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNYLENBQUEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQ2pELENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQTtHQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNsQyxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7Q0FDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7O0NBRS9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRWhCLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0Q7QUFDcEUsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUE7O0FBRWxDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUE7T0FDL0I7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBOztBQUV2QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZTtBQUNuQyxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQTtHQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsZUFBZSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsRCxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsV0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLGVBQWUsQ0FBQSxDQUFFO0dBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxlQUFlLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xELENBQUE7O0NBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDM0IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQTs7QUFFOUIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsZUFBZSxDQUFDLENBQUE7O0dBRTdELENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBOztBQUVoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUc7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHO09BQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVOLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQTtPQUNELENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUE7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFBO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQTtPQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUE7S0FDakMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDL0IsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBO09BQ0QsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUE7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQTtPQUNELENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUE7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUE7S0FDeEMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ1QsQ0FBQTs7Q0FFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0dBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNyQixDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsV0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtBQUN6QyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBO0dBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUE7T0FDRCxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQTtRQUMzQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNwQyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQ3ZCLENBQUE7O0NBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7R0FDWixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksY0FBYyxDQUFBLENBQUU7S0FDdEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUMsQ0FBQTtBQUMvRixDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDLENBQUE7S0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBO09BQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQTtPQUN6QixDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDLENBQUE7S0FDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFBO09BQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQTtPQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUE7T0FDekIsQ0FBQSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDdEIsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7O0FDcEpBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsVUFBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFO0dBQzNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQTtHQUNQLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNuQyxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7R0FDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtHQUNaLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3RCLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDLENBQUE7O0FBRTNCLENBQUEsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBOztHQUVMLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQTtHQUM1QixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDZixDQUFBLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBOztHQUUxRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUE7R0FDNUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQTs7QUFFNUUsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtLQUNYLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0tBQ0wsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtLQUN4QixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNoRCxDQUFBLENBQUE7O0FBRUEsQ0FBQSxPQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFO0FBQ3JFLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQTtHQUNWLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNuQyxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7R0FDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBO0dBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQTtBQUNoQyxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBOztBQUU1RCxDQUFBLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBOztHQUV0QixDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtLQUN0QyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBO0FBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7T0FDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQTtBQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtPQUN4QyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07T0FDTCxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBOztHQUVFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUE7O0FBRWhGLENBQUEsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQTs7R0FFN0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTtBQUNoQyxDQUFBLENBQUE7Ozs7OztBQ3BGQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFNQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBO0FBQ3pCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsNEJBQTRCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRU4sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0saUJBQWlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTs7QUFFMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sWUFBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRW5CLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBOztBQUU5QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQTtBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7QUFDekMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyRSxDQUFBO0FBQy9FLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDSixDQUFBLENBQUEsQ0FBQTtBQUNBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLGlCQUFpQixDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQTtBQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDekIsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUU7QUFDRjs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLGNBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUNsRCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUU7QUFDRixDQUFDLENBQUE7O0FBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDbEQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2xCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUU7QUFDRixDQUFDLENBQUE7O0FBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxhQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQztBQUNsRixDQUFBLENBQUU7QUFDRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDbkMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBO0FBQzdDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUNUOztBQUVBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRTtBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUc7QUFDMUIsQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDM0M7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRXRCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRTtBQUNoRCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUM3QyxDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM5QixDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNkUsQ0FBQTtBQUNuRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxXQUFXLENBQUMsQ0FBQSxDQUFBO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzFELENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUE7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxpQkFBaUIsQ0FBQyxDQUFBLENBQUE7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFO0FBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDMUQsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ2hELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssS0FBSyxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3hELENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDNUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTzs7QUFFaEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRTtBQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNwRixDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTZFLENBQUE7QUFDakYsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDMUQsQ0FBQSxDQUFBO0FBQ0E7O0FBRUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDekQsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDN0MsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLGNBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQTtBQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBOztBQUV4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUMzQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdDO0FBQ2hFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLGFBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0M7QUFDaEYsQ0FBQSxDQUFFO0FBQ0Y7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ2pCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzVCLENBQUEsQ0FBRTtBQUNGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3BDLENBQUEsQ0FBRTtBQUNGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMxQjs7QUFFQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQy9DLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDbkMsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ2pCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQztBQUN0RDs7QUFFQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsSUFBSSxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN6QixDQUFBO0FBQ0EsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLElBQUksQ0FBQSxDQUFFO0FBQ3pDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDekIsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDdkQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUN2RCxDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ2hELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTs7QUFFL0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7O0FBRTNDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUM3QixDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ1Q7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ2hFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDakMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUE7QUFDeEIsQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ1Q7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxTQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFFO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUE7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDeEUsQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ2hDOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLGVBQWUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFO0FBQ3JELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQztBQUMvRCxDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFFO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQztBQUMvRCxDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxTQUFTLENBQUEsQ0FBRTtBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQzlCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFNBQVMsQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUE7QUFDMUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ2xELENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQTs7QUFFN0MsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ1Q7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7O0FBRWhDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUk7O0FBRUosQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxTQUFTLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7QUFDbkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUM7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUc7QUFDNUIsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDakMsQ0FBQSxDQUFFO0FBQ0Y7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpRCxDQUFBO0FBQzFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDMUUsQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFBLENBQUEsQ0FBRztBQUNsQjs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ2IsQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzdCOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUN4QyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMxQixDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxPQUFPLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUN6QyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUE7QUFDMUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBO0FBQzFFLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTzs7QUFFdEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFWixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDSixDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQ3BCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDcEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDVCxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQ25ELENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNiLENBQUEsQ0FBQTtBQUNBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUMvQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE2QztBQUNyRSxDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDO0FBQ3pCLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ04sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDSixDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDMUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ1osQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFFO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUc7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE2QztBQUN2RSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZixDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVCxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBRTtBQUNyRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBRTtBQUNGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE0RSxDQUFBO0FBQ2xGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNsRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87O0FBRXRDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUEsQ0FBRTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLFdBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxXQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRTtBQUNGO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRXBCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLFlBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7QUFDN0MsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRXBCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNaLENBQUEsQ0FBRTtBQUNGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQ1gsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQ1gsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUNYLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7O0FBRWIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQ1gsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUU1QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUEsQ0FBRTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFHOztBQUV4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFHOztBQUV6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFHOztBQUUxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBRzs7QUFFM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUc7O0FBRTNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUc7O0FBRTVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDNUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUE7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFdBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFO0FBQ0Y7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUU3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxJQUFJLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUNmLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDWixDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ1Q7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzdDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkIsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQztBQUNwRSxDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUN2QixDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUNULENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzdDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkIsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQztBQUNwRSxDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUE7QUFDM0IsQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUE7QUFDVCxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUM3QyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25CLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkM7QUFDcEUsQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUE7QUFDM0IsQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUE7QUFDVCxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNqRCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3RCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQzNCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzlELENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUMzQyxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDOUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQjtBQUMxRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUN6QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDckMsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDL0MsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDWixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUMsQ0FBQSxDQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7QUFDbkUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQzVCLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFJLG1CQUFtQixDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzNEOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFO0FBQ3JGLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBO0FBQ2pFLENBQUEsQ0FBRTtBQUNGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrRSxDQUFBO0FBQ3hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ1osQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNuQyxDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ2hCLENBQUEsQ0FBRTtBQUNGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25CLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUEsQ0FBRTtBQUNsRixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0I7QUFDN0MsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1gsQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUNYLENBQUEsQ0FBRTtBQUNGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDWCxDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUNiLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDWCxDQUFBLENBQUUsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ2pCLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7O0FBRWYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPOztBQUU5QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBOztBQUUzQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUNoRCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQTs7QUFFNUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDSixDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQ3BCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDcEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDVCxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3ZFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7O0FBRWxDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ2pCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxVQUFVLENBQUEsQ0FBRTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsV0FBVyxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDMUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQTtBQUM3QyxDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25ELENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE1BQU0sQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDdEMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUNoQixDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7QUFDbkMsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHO0FBQzlELENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFO0FBQzVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUU7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDeEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQzVFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFHO0FBQ2hFLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0M7QUFDNUQ7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDNUQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ2xCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFdEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0FBQzNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sVUFBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNKLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ0osQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDTixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFFO0FBQzlFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUUsVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ0osQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUU7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDSixDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUNUOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDMUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDckQsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDeEUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkUsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQ2hGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDcEUsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUNoRCxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQzdCLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNiLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNKLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFeEIsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3RCLENBQUEsQ0FBRTtBQUNGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDTixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUE7QUFDdkQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN0QixDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNUOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDakQsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLFdBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2pGOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUNsRCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzdEOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ25ELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUM5RDs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ2pELENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNwRjs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDM0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDSixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUUzRCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDakYsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QztBQUNqRSxDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRTVCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTs7QUFFcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNOztBQUVyRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNOztBQUV0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLFdBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTs7QUFFdkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNOztBQUVyRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQzVFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxXQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRTtBQUNGLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzdDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUN6RCxDQUFBLENBQUE7QUFDQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLFdBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU9DLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUc7QUFDbkMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU9BLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3JELENBQUEsQ0FBRTtBQUNGOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLFNBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtBQUNyQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNoQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7O0FBRWQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQTs7QUFFaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxVQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUU3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFDO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUM7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFFO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQzFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUM7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUU7QUFDM0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksYUFBYSxDQUFBLENBQUEsQ0FBRyxDQUFDLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDckcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7QUFDN0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFDO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDM0csQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNuSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLGFBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLFFBQVEsQ0FBQSxDQUFFO0FBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFJOztBQUVKLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sZ0JBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUk7O0FBRUosQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVCxDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUMsQ0FBQSxDQUFBLENBQUc7QUFDbEM7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLG9CQUFvQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRTtBQUM1QyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3pCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hELENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ1YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQjtBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDVDs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxVQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7QUFDdEMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDWixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQTs7QUFFaEMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDNUMsQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ1Q7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsV0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFO0FBQ3ZDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUE7O0FBRWhDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ3JDLENBQUEsQ0FBRTtBQUNGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUNUOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFbEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ25DLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUE7O0FBRTFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ3JDLENBQUEsQ0FBRTtBQUNGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUNUOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLFlBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtBQUN4QyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNwQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUMsQ0FBQTtBQUM5RCxDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDVDs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDckQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNuQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUE7O0FBRXBDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQzNCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUN2QixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTtBQUNWLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUV6QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBOztBQUVoRCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVCxDQUFBOztBQUVBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxXQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQjtBQUNqRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVDO0FBQ3pGOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQ2pGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQzlCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7O0FBRTVELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ3ZCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNaLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNWLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0FBQzlCLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDVCxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQ2pGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQzlCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxVQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUMvQyxDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUE7QUFDdEMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ1osQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUE7QUFDekMsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUNULENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUNuRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDdEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUNuRCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDcEIsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ3pFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ25ELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDOUMsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ3pFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ25ELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQztBQUM5QyxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDekUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3RCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7O0FBRW5ELENBQUEsQ0FBRSxPQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQSxDQUFBO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDbkMsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ3pFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBOztBQUVuRCxDQUFBLENBQUUsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDcEIsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUN4RixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDdEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUNqQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQzNCLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQyxDQUFBO0FBQzlCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssU0FBUyxDQUFBLENBQUU7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQyxDQUFBO0FBQ3ZDLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBRSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTs7QUFFMUIsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUUsTUFBTSxDQUFDLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7O0FBRWhCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxFQUFFLENBQUM7QUFDL0MsQ0FBQyxDQUFBOztBQUVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ3hGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0FBQ2pDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDM0IsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDLENBQUE7QUFDOUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxTQUFTLENBQUEsQ0FBRTtBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDLENBQUE7QUFDdkMsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTs7QUFFakIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFSixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0FBQy9DLENBQUMsQ0FBQTs7QUFFRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUMvRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDdEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUM5QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBOztBQUU1RCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUN2QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDWixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDVixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTtBQUM5QixDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRVQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBOztBQUVuRCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDVCxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQy9FLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQzlCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7O0FBRTVELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNWLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNaLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQyxDQUFBO0FBQzdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0FBQ2hDLENBQUEsQ0FBRTtBQUNGLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFVCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUE7O0FBRW5ELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUNULENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ2pFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ25ELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUM7QUFDbEQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUN4QyxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUN2RSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDdEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUNuRCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQ25ELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQzdDLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ3ZFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ25ELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7QUFDbkQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDN0MsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDdkUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3RCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7O0FBRW5ELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFBLENBQUU7QUFDM0IsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDdkUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3RCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7O0FBRW5ELENBQUEsQ0FBRSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztBQUNyQixDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDdEYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3RCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7QUFDakMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUMzQixDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUMsQ0FBQTtBQUM5QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFNBQVMsQ0FBQSxDQUFFO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUMsQ0FBQTtBQUN2QyxDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUE7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFaEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBRTtBQUM1QixDQUFDLENBQUE7O0FBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUN0RixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDdEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUNqQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQzNCLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQyxDQUFBO0FBQzlCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssU0FBUyxDQUFBLENBQUU7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQyxDQUFBO0FBQ3ZDLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7O0FBRWpCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUE7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDUixDQUFDLENBQUE7O0FBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ3ZFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ25ELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztBQUMvQyxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUN2RSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDdEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUNuRCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBT0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztBQUNoRCxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDekUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3RCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDbkQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU9BLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0FBQy9DLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUN6RSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDdEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUNuRCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBT0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztBQUNoRCxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7QUFDdEQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNkM7QUFDOUYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1DO0FBQzFGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0I7QUFDMUU7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUMxRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDdEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUM5QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQyxDQUFBO0FBQ3pELENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDWixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDVixDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3pCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZDLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUMxRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDdEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUM5QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQyxDQUFBO0FBQ3pELENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUN2QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDWixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDN0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2QyxDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDNUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3RCLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUE7QUFDekQsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQzlCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQ2xGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QixDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUMsQ0FBQTtBQUMzRCxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDOUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQTtBQUNqQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUEsQ0FBQSxDQUFHO0FBQ2xCLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUNsRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDdEIsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFDLENBQUE7QUFDM0QsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEtBQUssQ0FBQyxDQUFBO0FBQzdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNsQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUEsQ0FBQSxDQUFHO0FBQ2xCLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUNsRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDdEIsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUMsQ0FBQTtBQUMvRCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUE7QUFDbEMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBO0FBQ2xDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUE7QUFDakMsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQzlCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQ2xGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QixDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQyxDQUFBO0FBQy9ELENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxLQUFLLENBQUEsQ0FBRSxDQUFBO0FBQzlCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQTtBQUNsQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBO0FBQ2pDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNsQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUEsQ0FBQSxDQUFHO0FBQ2xCLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN2RCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQTs7QUFFNUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBO0FBQzVDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDYixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ2IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNiLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0FBQzFELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDYixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ2IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNiLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVDs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3ZELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBOztBQUU1QyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUE7QUFDNUMsQ0FBQSxDQUFFLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNiLENBQUEsQ0FBRSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDYixDQUFBLENBQUUsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ2IsQ0FBQSxDQUFFLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7QUFDMUQsQ0FBQSxDQUFFLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNiLENBQUEsQ0FBRSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDYixDQUFBLENBQUUsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ2IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFBLENBQUEsQ0FBRztBQUNsQjs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDckcsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxvQkFBb0IsQ0FBQztBQUNwRixDQUFDLENBQUE7O0FBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ3JHLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsb0JBQW9CLENBQUM7QUFDcEYsQ0FBQyxDQUFBOztBQUVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQ3hGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsSUFBSSxDQUFDLENBQUE7O0FBRWxELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUMvRCxDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ1YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ1osQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ1osQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN6QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BELENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDeEYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3RCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxJQUFJLENBQUMsQ0FBQTs7QUFFbEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQy9ELENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUN2QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDWixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDWixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDN0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BELENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUMxRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDdEIsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUM3RCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3hDLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUM5QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUEsQ0FBQSxDQUFHO0FBQ2xCLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUNoRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDdEIsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQ2pFLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUM5QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBO0FBQ2pDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQ2hGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QixDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDakUsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEtBQUssQ0FBQyxDQUFBO0FBQzdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNsQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUEsQ0FBQSxDQUFHO0FBQ2xCLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUNoRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDdEIsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBO0FBQ3pFLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUM5QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBO0FBQ2pDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQTtBQUNsQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUE7QUFDbEMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFBLENBQUEsQ0FBRztBQUNsQixDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDaEYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3RCLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQTtBQUN6RSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQzlDLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxLQUFLLENBQUEsQ0FBRSxDQUFBO0FBQzlCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQTtBQUNsQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBO0FBQ2pDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNsQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUEsQ0FBQSxDQUFHO0FBQ2xCLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ25HLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxvQkFBb0IsQ0FBQztBQUN4RyxDQUFDLENBQUE7O0FBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ25HLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxvQkFBb0IsQ0FBQztBQUN4RyxDQUFDLENBQUE7O0FBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFO0FBQzFELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0I7QUFDMUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQjtBQUMzRDs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDakUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3RCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBa0QsQ0FBQTtBQUN2RixDQUFBLENBQUU7QUFDRixDQUFBLENBQUVDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBO0FBQ3ZELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQSxDQUFBLENBQUc7QUFDbEI7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUNoRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3ZELENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUNoRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDeEQsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUNsRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDdEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFvRCxDQUFBO0FBQ3pGLENBQUEsQ0FBRTtBQUNGLENBQUEsQ0FBRUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUE7QUFDdkQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFBLENBQUEsQ0FBRztBQUNsQjs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUNsRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDeEQsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUNsRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUN6RCxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtBQUN4RSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNkI7QUFDakYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUN0QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3pELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxXQUFXLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDbEMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRXBDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUM1QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTzs7QUFFdkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTJCO0FBQ3BELENBQUEsQ0FBRTtBQUNGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0I7QUFDbEYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUI7O0FBRTdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLFdBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxXQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4QyxDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFcEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0FBQ2hGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsV0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUMzQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsR0FBRyxDQUFDO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ1QsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDbEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQjtBQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBRTtBQUN0RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFBO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUE7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ0osQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssU0FBUyxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDcEIsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUU7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CO0FBQzdDLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFFOztBQUVGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3BCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBOztBQUVsRCxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUE7O0FBRWxCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDTixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNKLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUc7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1DO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDSixDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUE7QUFDVCxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU1DLFFBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRTtBQUNuQyxDQUFBLENBQUVBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUc7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQTs7QUFFWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsU0FBUyxDQUFBLENBQUU7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQztBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsWUFBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBOztBQUVQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBSTs7QUFFSixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBSTs7QUFFSixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsS0FBSyxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBSTs7QUFFSixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUM7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNKLENBQUEsQ0FBQSxDQUFBO0FBQ0E7O0FBRUEsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEI7QUFDNUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsSUFBSSxDQUFBLENBQUU7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFFO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNEI7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBSTs7QUFFSixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUE7QUFDZixDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0I7QUFDeEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7QUFDekYsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBO0FBQ2QsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQjtBQUNwQixDQUFBLENBQUUsVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLGNBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUE7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFFO0FBQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFFO0FBQ2pGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQTs7QUFFZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNyQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNkLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNyQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLEdBQUcsQ0FBQyxDQUFBO0FBQ3hDLENBQUEsQ0FBRTtBQUNGLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLEdBQUcsQ0FBQztBQUNsQzs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsV0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsVUFBVSxDQUFBLENBQUU7QUFDL0MsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUNqQyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFNBQVMsQ0FBQSxDQUFFO0FBQzNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBO0FBQ3JELENBQUEsQ0FBRTtBQUNGOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFVBQVUsQ0FBQSxDQUFFO0FBQy9ELENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBd0I7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUU7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUMsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFDLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUE7QUFDcEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBO0FBQzVFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUdKLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDM0QsQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFFLFdBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUE7QUFDckM7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUlBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDL0QsQ0FBQSxDQUFFO0FBQ0Y7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsV0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0FBQzNDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzNFLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUlBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQTtBQUM3QyxDQUFBLENBQUU7O0FBRUYsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQyxDQUFDLEdBQUcsQ0FBQSxDQUFhLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQztBQUN6RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3pDOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0saUJBQWlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRTFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUE7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ1Q7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxhQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBOztBQUVoQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQTs7QUFFbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFBLENBQUU7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxNQUFNLENBQUEsQ0FBRTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFROztBQUVSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxhQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUV4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNOztBQUVOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsYUFBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNOztBQUVOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUk7O0FBRUosQ0FBQSxDQUFBLENBQUEsQ0FBSSxhQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRXBCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxRQUFRLENBQUEsQ0FBRTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0I7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNKLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1Q7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUM1QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDM0MsQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1Q7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUE7QUFDYixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRTFCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUE7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBO0FBQ3JCLENBQUEsQ0FBRTs7QUFFRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVDs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFFLE9BQU9DLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsR0FBRyxDQUFDO0FBQzVDOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUMvQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ04sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQTtBQUMzQixDQUFBLENBQUU7QUFDRixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNUOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUU7QUFDaEMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtBQUMzRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3hDO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQjs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUN6QyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNuQixDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQzdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQTtBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ0osQ0FBQSxDQUFFO0FBQ0YsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNULENBQUMsQ0FBQSxDQUFBLENBQUE7O0FBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsc0JBQXNCLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDbEU7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsc0JBQXNCLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0I7QUFDeEM7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQ3RqRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQVAsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtFQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQXNCO0VBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztBQUNqSCxDQUFBOzs7Ozs7Ozs7OztFQ0pBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztFQUM3REEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE0QkEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtFQUN4RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFvQjtFQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDRCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztBQUM1RyxDQUFBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFFO01BQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUM3QyxDQUFBLENBQUE7RUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxpQkFBaUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQjtBQUM1RSxDQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTRCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUI7RUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQjtBQUM5RCxDQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQy9CLENBQUE7Ozs7Ozs7Ozs7QUNYQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNRLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM3RCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtDQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUdQLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUE0RDtDQUM3RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBR1EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWlEO0FBQ2hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUMsVUFBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLElBQUksQ0FBQzthQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDL0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUE7aUJBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBO2lCQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxhQUFhLENBQUM7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtrQkFDaUI7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsVUFBVSxDQUFDO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtDQUNuQixDQUFDO0FBQ0QsQ0FBQUQsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ2pDOzs7Ozs7Ozs7OztBQ2pDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNFLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM3RDs7Ozs7Ozs7Ozs7QUNEQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztDQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBRSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtBQUM5QixDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFFLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7QUFDN0IsQ0FBQTtBQUNBOzs7Ozs7Ozs7Ozs7O0FDVEEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFDO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQztBQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxRQUFRLENBQUM7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsUUFBUSxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07Ozs7Ozs7Ozs7O0FDZnZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWE7QUFDckMsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBT1osQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssV0FBVyxDQUFBLENBQUU7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBT0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU9FLGdCQUFBLENBQUEsQ0FBa0I7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFDO0FBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxhQUFhLENBQUEsQ0FBQSxDQUFHO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRztBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUEsQ0FBQSxDQUFHO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztTQUNkLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUM7U0FDaEUsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFDO0FBQ1osQ0FBQTtBQUNBLENBQUFVLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHLGFBQWEsQ0FBQSxDQUFFO0FBQ2pDOzs7Ozs7Ozs7Ozs7O0FDdENBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM3RDs7Ozs7Ozs7Ozs7O0VDREEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQVgsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUEsQ0FBQUEsU0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0JBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUJBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxTQUFBLENBQUEsQ0FBQSxDQUFvQkEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDekUsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUc7RUFDakJBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0I7TUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQztNQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUM7TUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUM7TUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztNQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7TUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO01BQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7TUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO01BQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7TUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO01BQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO01BQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBRTtNQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUc7TUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBRztNQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBRztNQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7TUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7TUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtNQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07TUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO01BQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO01BQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztNQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO01BQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBRztNQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBRztNQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBRztNQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUU7TUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFFO01BQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBRTtNQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUU7TUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQztNQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFDO01BQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUM7TUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQztNQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFDO01BQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7TUFDUCxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztNQUNQLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO01BQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7TUFDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLEVBQUUsQ0FBQztNQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixFQUFFLENBQUM7TUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsRUFBRSxDQUFDO01BQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLEVBQUUsQ0FBQztNQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE0QixFQUFFLENBQUM7TUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxFQUFFLENBQUM7TUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsRUFBRSxDQUFDO01BQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLEVBQUUsQ0FBQztHQUM1QjtFQUNEQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCO01BQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBOEM7QUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtNQUNJLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE4QjtNQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUI7TUFDL0IsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE2QjtNQUNqQyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNkI7TUFDbEMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTZCO01BQ2xDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCO01BQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEI7TUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQjtNQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNkI7TUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0Q7TUFDOUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkI7TUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkI7TUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE2QjtHQUMxQztFQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDcEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0VBQ1QsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7TUFDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO01BQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFHO0FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDckUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNyRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFHO0FBQzNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN0RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDdEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztFQUM5QyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUN6QyxDQUFBOzs7Ozs7Ozs7Ozs7QUN4R0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdEOzs7Ozs7Ozs7OztBQ0RBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ1ksQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3JCLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsSUFBSUMsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBSTtDQUNSLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtLQUNiLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0tBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0tBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtLQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7S0FDekMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0tBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7S0FDckMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0tBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0tBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0tBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7S0FDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztLQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7S0FDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtLQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtLQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhO0tBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0tBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7S0FDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztLQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7S0FDekMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7Q0FDOUMsQ0FBQyxDQUFBLENBQUVBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLRCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQ3RDOzs7Ozs7Ozs7OztBQ2xDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDekIsQ0FBQSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7U0FDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUM7S0FDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sY0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsU0FBUyxDQUFDO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztDQUN4RSxDQUFDO0FBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDM0I7Ozs7Ozs7Ozs7Ozs7OztBQ1RBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUMzQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQzdCLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDekIsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLFNBQVMsQ0FBQSxDQUFFO0tBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBRTtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsZ0RBQWdELENBQUM7QUFDN0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBRTtBQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsc0RBQXNELENBQUM7QUFDbkYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztLQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFdBQVcsQ0FBQSxDQUFFO2FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTthQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTthQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtVQUNyQjtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7QUFDTixDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsa0RBQWtELENBQUM7QUFDL0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtTQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7aUJBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUU7cUJBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtzQkFDcUI7cUJBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUM7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7S0FDVixDQUFLO0FBQ0wsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7S0FDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtLQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQztLQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxFQUFFLENBQUM7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztjQUMvQixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUM7Y0FDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEVBQUUsQ0FBQztBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQ3hCLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUM7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7S0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7S0FDckIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFDO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQSxDQUFFO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxHQUFHLENBQUM7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE9BQU8sQ0FBQSxDQUFBLENBQUc7YUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFBLENBQUU7U0FDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNqQixDQUFBO0FBQ0E7Ozs7Ozs7Ozs7QUM5R0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0VBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQWQsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUEsQ0FBQUEsU0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUJBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQkEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLFNBQUEsQ0FBQSxDQUFBLENBQW9CQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3hGLENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDekIsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDO0VBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFrQjtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxNQUFNLENBQUM7RUFDdkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtFQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxJQUFJLENBQUM7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxXQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFFO2NBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFHO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUMsQ0FBQSxDQUFFLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ0s7QUFDTCxDQUFBLENBQUE7RUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHYyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFNO0FBQ2pFLENBQUEsQ0FBQSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDO01BQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO1VBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7Y0FDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSWYsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUNwRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLE9BQU8sQ0FBQztBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2VBQ2E7Y0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdDO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO1VBQ2hDQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQztBQUN6RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQ3ZDLENBQUEsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUlBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxvQ0FBb0MsQ0FBQztBQUNyRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEdBQUcsQ0FBQztNQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUc7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUlBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtVQUMzQixDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1dBQ1M7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07VUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBRztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsR0FBRyxDQUFDO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO01BQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUM7QUFDeEMsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsU0FBUyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxHQUFHLENBQUM7QUFDakUsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQ3RDLENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDOUMsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUM7QUFDaEQsQ0FBQSxDQUFBLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUUsNkJBQTZCLENBQUM7QUFDbEQsQ0FBQSxDQUFBLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBOEIsQ0FBQSxDQUFFLHdGQUF3RixDQUFDO0FBQzNILENBQUEsQ0FBQSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTJCLENBQUEsQ0FBRSxrREFBa0QsQ0FBQztBQUNsRixDQUFBLENBQUEsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQixDQUFBLENBQUUsa0JBQWtCLENBQUM7QUFDbEQsQ0FBQSxDQUFBLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3pFLENBQUEsQ0FBQSxDQUFDLENBQUM7QUFDRixDQUFBLENBQUEsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0MsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0MsQ0FBQyxDQUFDO0FBQzdHLENBQUEsQ0FBQSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixDQUFBLENBQUUsNkJBQTZCLENBQUM7QUFDekQsQ0FBQTs7Ozs7Ozs7Ozs7RUMzRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzlCLENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQ3ZDLENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWE7RUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBNEQ7RUFDN0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUdRLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUE0RDtBQUMzRSxDQUFBLENBQUFULENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtFQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO01BQzlCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztVQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0MsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQzlFLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7TUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtVQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7TUFDZixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO1VBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2RCxDQUFBLENBQUE7QUFDQSxDQUFBOzs7Ozs7Ozs7OztFQ2xCQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7RUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBZ0I7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDUSxZQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFFVCxTQUFPLENBQUM7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDZ0Isa0JBQUEsQ0FBQSxDQUFzQixDQUFBLENBQUVoQixTQUFPLENBQUM7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDaUIsWUFBQSxDQUFBLENBQXlCLENBQUEsQ0FBRWpCLFNBQU8sQ0FBQztBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUNrQixXQUFBLENBQUEsQ0FBd0IsQ0FBQSxDQUFFbEIsU0FBTyxDQUFDO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQ21CLFdBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUVuQixTQUFPLENBQUM7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDb0IsaUJBQUEsQ0FBQSxDQUFxQixDQUFBLENBQUVwQixTQUFPLENBQUM7QUFDcEQsQ0FBQTs7Ozs7Ozs7OztBQ1JBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ3FCLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM3RCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtDQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUdwQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBOEI7Q0FDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUdRLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFvQjtDQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUE0RDtDQUM3RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXFDO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztDQUNoRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztDQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztDQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxZQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUN2RCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQztBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFFO1NBQzNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsTUFBTSxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUc7U0FDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHO1NBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHO1NBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFHO1NBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUc7U0FDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUc7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLE1BQU0sQ0FBQztBQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUc7U0FDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFFO1NBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQztBQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFBLENBQUEsQ0FBRztBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBRSxDQUFDLENBQUM7U0FDakQsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsSUFBSSxDQUFDO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtTQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRztTQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRztTQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQSxDQUFBLENBQUc7U0FDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBQSxDQUFHO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksaUJBQWlCLENBQUEsQ0FBQSxDQUFHO1NBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztTQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUM7YUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7aUJBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxJQUFJLENBQUM7YUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQztBQUN2RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFDO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQztBQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsR0FBRyxDQUFDO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtTQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFDO1NBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUc7U0FDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUM7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDO0FBQzVILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUM7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7U0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQzthQUNiLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO2FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO2NBQ2Q7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQSxDQUFFO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUM7aUJBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO3FCQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsSUFBSSxDQUFDO2lCQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDO0FBQ3hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUM7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUM7aUJBQ3ZDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsR0FBRyxDQUFDO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxNQUFNLENBQUM7U0FDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO1NBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUc7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7U0FDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUc7U0FDRixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUM7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUc7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUc7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsU0FBUyxDQUFBLENBQUU7VUFDekI7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7QUFDQSxDQUFBSSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBSTtBQUNuQjs7Ozs7Ozs7Ozs7QUMvUkEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07Q0FDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUd0QixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBcUM7Q0FDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHUSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBOEI7QUFDL0MsQ0FBQSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUM3QyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUM7S0FDUCxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUc7U0FDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUU7YUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUU7aUJBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRTtTQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLE1BQU0sQ0FBQSxDQUFFO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7U0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHO1NBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDbkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLElBQUksQ0FBQztBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLElBQUksQ0FBQztBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsRUFBRSxDQUFBLENBQUU7YUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsS0FBSyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsSUFBSSxDQUFDO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7U0FDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7U0FDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBRTthQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLEtBQUssQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLElBQUksQ0FBQztBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLEtBQUssQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUM7U0FDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtTQUNiLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQztBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtTQUNYLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO1NBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFDO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHO1NBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLGFBQWEsQ0FBQSxDQUFBLENBQUc7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQ3ZFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRztBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUc7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUM7VUFDN0M7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFBLENBQUEsQ0FBRztTQUNSLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQ3RGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTtBQUNBLENBQUFjLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFJO0FBQ25COzs7Ozs7Ozs7OztBQ3ZHQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNDLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM3RCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtDQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBR3hCLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFxQztBQUM3RCxDQUFBLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDOUMsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUM7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxTQUFTLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsR0FBRyxDQUFDO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBQSxDQUFHO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxTQUFTLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsR0FBRyxDQUFDO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEdBQUcsQ0FBQztBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsUUFBUSxDQUFDO0FBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDbkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxJQUFJLENBQUM7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtTQUNaLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTtBQUNBLENBQUF3QixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBSTtBQUNuQjs7Ozs7Ozs7Ozs7Ozs7OztFQ3RFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBMUIsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzlCLENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQ3ZDLENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWE7RUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBNEQ7RUFDN0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUdRLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUE0RDtBQUMzRSxDQUFBLENBQUFULENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtFQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO01BQzlCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztVQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0MsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQzlFLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7TUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtVQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7TUFDZixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO1VBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2RCxDQUFBLENBQUE7QUFDQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsQkMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxJQUFJLENBQUEsQ0FBRTs7QUFFakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBaUNBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBQ0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPO0FBQzlCLENBQUEsQ0FBQSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBZ0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0dBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPZSxjQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUlBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU07R0FDcEQsQ0FBQSxDQUFBLENBQUE7QUFDRCxDQUFBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUE7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBO0lBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNuQjtJQUNELENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ25CLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFROztBQUViLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFO0dBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUM7R0FDUixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFO0dBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTtHQUNULENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRztHQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxHQUFHLENBQUEsQ0FBRTtHQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRWhCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztHQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTJCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRztJQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpRDtJQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0Q7QUFDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBRSxlQUFlLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7SUFDakI7O0FBRUYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUM1QixDQUFBLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNuQixDQUFBLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTs7QUFFekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBRzs7QUFFSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7SUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDO0FBQ3BDLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUMsU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0lBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0lBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFO0tBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUM7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNmLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQyxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFO0lBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEdBQUcsQ0FBQztJQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBRztBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQztJQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxHQUFHLENBQUM7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUN6QixDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7SUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7UUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQztBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtLQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQztBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO01BQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUM7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUM7QUFDckUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUM7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxPQUFPLENBQUEsQ0FBRTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUM7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNmLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEtBQUssQ0FBQSxDQUFFO0tBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7TUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztNQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO0FBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLEtBQUssQ0FBQztBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxFQUFFLENBQUM7QUFDYixDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBRTtLQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBRTtLQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBRTtLQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDYixDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFDLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQztBQUM1RCxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLFNBQVMsQ0FBQSxDQUFFO0lBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFDO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUM7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBOEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUM5RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsYUFBYSxDQUFDO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUM7QUFDaEUsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUc7UUFDSCxDQUFDLEdBQUcsQ0FBQztRQUNMLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7UUFDWixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQztBQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO0FBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7QUFDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7QUFDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7O0FBRWhCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLFNBQVMsQ0FBQztBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0tBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQztBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUE7O0lBRUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0csQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO01BQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxXQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNkI7O0FBRTFGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7O0FBRWxFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRTtPQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztNQUVJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUMsQ0FBQzs7QUFFbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUU7T0FDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQzs7QUFFL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7T0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQztNQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBRTtPQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUM7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O01BRUksQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7O0FBRW5CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQztBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDOztBQUV6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0csQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7TUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDO0tBQ25CLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBRzs7QUFFWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7O0FBRTNCLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO0FBQzNCLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQztBQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQztBQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO0FBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7QUFDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQztBQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO0FBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO1FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUU7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPOztBQUViLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsS0FBSyxDQUFDOztBQUUzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07O0FBRTVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNFLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7SUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFDO0lBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVzs7QUFFcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQztBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtNQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUM7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFFLGNBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07O0FBRTlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFNBQVMsQ0FBQztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUU7O0FBRXZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQztNQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFJLFlBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7T0FDMUMsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFDLENBQUEsQ0FBRTtNQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUM7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUI7S0FDeEMsQ0FBQyxHQUFHLENBQUM7O0tBRUwsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUM7O01BRXZCLENBQUEsQ0FBQSxDQUFBLENBQUksWUFBWSxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7T0FDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUM7QUFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtTQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUM7UUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO1NBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQyxDQUFDO1NBQzVEO0FBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxVQUFVLENBQUM7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztPQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQztPQUN6RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFDO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFDOztBQUVOLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsRUFBRSxDQUFDO0FBQ3hCLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsTUFBTSxDQUFBLENBQUU7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtRQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNKLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxNQUFNLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ0osQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUMsUUFBUSxDQUFBLENBQUEsQ0FBRztBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRTtLQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ1Y7SUFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtJQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtJQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBRSxXQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7SUFDYjs7QUFFRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQVNRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQSxDQUFFO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDdEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUMxQixDQUFBLENBQUEsQ0FBQTs7RUFFQSxDQUFDLENBQUNZLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUksQ0FBQyxDQUFBLENBQUE7Ozs7Ozs7Ozs7OztBQ2xoQlAsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NDSDFCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxpQkFBaUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDakksQ0FBQSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsaUJBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0NBQ3ZILENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0NBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxpQkFBaUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDakksQ0FBQSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsaUJBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0NBQ3ZILENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0NBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0NBQ25FLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7Q0FDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7Q0FDbkUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtDQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztDQUNuRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDOUQsQ0FBQSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQzlDLENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQzlDLENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDbEQsQ0FBQSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNuQyxDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ25DLENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUN2QyxDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQy9DLENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDL0MsQ0FBQSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2pDLENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3BDLENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNoQyxDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUI7Q0FDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3hILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQzNGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFdBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUM5SSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ1YsQ0FBQSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0I7O0FBRXhELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN6RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1dBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7V0FDVSxDQUFBLENBQUEsQ0FBQTtFQUNUOztBQUVELENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtLQUNuQyxDQUFBLENBQUEsQ0FBQTtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7WUFDTCxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUE7YUFDUCxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLElBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFHO09BQ3hCO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBRztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQztBQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEdBQUcsQ0FBQztBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxFQUFFLENBQUM7QUFDbkksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQzlDLENBQUE7O0NBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUI7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07Q0FDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLGFBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7O0FBRWxFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHO0tBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUc7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQTtFQUNYO0FBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUc7S0FDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtFQUNYOztBQUVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFBLENBQUU7O0FBRTVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBRTtBQUNsRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsa0RBQWtELENBQUM7QUFDL0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUE7U0FDSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7ZUFDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7ZUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNNO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLHdGQUF3RixDQUFDO0FBQ3JILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUMxRSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDMUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLCtFQUErRSxDQUFDO0FBQzVHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7S0FFSSxDQUFBLENBQUEsQ0FBQTtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO1lBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQTtZQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUM7T0FDbkU7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsMERBQTBELENBQUM7QUFDdkYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssU0FBUyxDQUFBLENBQUU7QUFDckYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLG1FQUFtRSxDQUFDO0FBQ2hHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjs7QUFFaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssV0FBVyxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssU0FBUyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxJQUFJLENBQUM7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7YUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsR0FBRyxDQUFDO1NBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ3JFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO1NBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBRztTQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNqRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUE7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtTQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0tBRUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsS0FBSyxDQUFDOztBQUV2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFdBQVcsQ0FBQSxDQUFFO1NBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUU7S0FDakIsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0tBRUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO1NBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQztBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBRTthQUNWLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRztpQkFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBO2NBQ2Y7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBRTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQzVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztLQUVJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsR0FBRyxDQUFDO1NBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLE9BQU8sQ0FBQztBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsY0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUM7QUFDekksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7U0FDZixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUcsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLFdBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUM5SCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDL0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLElBQUksQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBRTtBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDOUYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUc7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBO0FBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBRztBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUM7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO1NBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQTtTQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxPQUFPLENBQUM7U0FDakMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7YUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7QUFDdkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO1NBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsT0FBTyxDQUFDO1NBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRTtBQUNqRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxLQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDOUgsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUE7QUFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxhQUFhLENBQUEsQ0FBRTtBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRTtBQUN0RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUM7QUFDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtBQUNwRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO1NBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO1NBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFBLENBQUU7YUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtpQkFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDckYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUM7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxNQUFNLENBQUM7QUFDdkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7U0FDWixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7U0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUEsQ0FBRTthQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxLQUFLLENBQUEsQ0FBRTtpQkFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQztBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLE1BQU0sQ0FBQztBQUN2RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQztBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtTQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQztBQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO1NBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7U0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQztBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFdBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBO1NBQ0ksQ0FBQyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFdBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPWixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxXQUFXLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsS0FBS0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTTtPQUNyRDtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUI7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO1NBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLE9BQU8sQ0FBQztTQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFJLGFBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtTQUM3RyxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsWUFBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7QUFDcEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFBLENBQUU7QUFDOUosQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2pKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQztBQUNsSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQTtTQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0NBQ3RCLENBQUM7O0FBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEtBQUssQ0FBQztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDcEMsQ0FBQTs7Q0FFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUNuRCxDQUFBOztDQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0tBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsV0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFDO0FBQ3hILENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssZ0JBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQTtBQUN4RixDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLGVBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBO0FBQ3RGLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLGlCQUFpQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUE7QUFDMUYsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLGdCQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUE7QUFDeEYsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssaUJBQWlCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQTtBQUMxRixDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxpQkFBaUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBO0FBQzFGLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssa0JBQWtCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQTs7QUFFNUYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0tBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUksaUJBQWlCLENBQUEsQ0FBRTtTQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3RFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUU7QUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUNuQixDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEVBQUUsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDaEIsQ0FBQTs7Q0FFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7S0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRTtBQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUNuQixDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEVBQUUsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDaEIsQ0FBQTs7QUFFQSxDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtBQUN0RixDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7S0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUM7QUFDaEMsQ0FBQTs7Q0FFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQztBQUNuQyxDQUFBOztDQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUU7S0FDZixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLHNCQUFzQixDQUFDO0tBQ3JFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNmLENBQUE7O0FBRUEsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFFO1NBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxPQUFPLENBQUEsQ0FBRTtBQUNiLENBQUE7O0NBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUU7S0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDO1NBQzNCLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDaEMsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxFQUFFLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2hCLENBQUE7O0NBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUEsQ0FBRTtLQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsVUFBVSxDQUFDO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsVUFBVSxDQUFDO1NBQzFDLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNwQyxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEVBQUUsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDaEIsQ0FBQTs7Q0FFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQSxDQUFFO0tBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQztBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDbkIsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxFQUFFLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2hCLENBQUE7O0NBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUU7S0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDO1NBQzNCLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDaEMsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxFQUFFLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2hCLENBQUE7O0NBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUEsQ0FBRTtLQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsVUFBVSxDQUFDO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsVUFBVSxDQUFDO1NBQzFDLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNwQyxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEVBQUUsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDaEIsQ0FBQTs7Q0FFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBO0tBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFdBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUU7QUFDeEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ2pGLENBQUE7O0FBRUEsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUU7S0FDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsZUFBZSxDQUFBLENBQUU7U0FDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFDO0FBQ3pGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUN2RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0tBQ25GLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLElBQUksQ0FBQztBQUN4QyxDQUFBOztDQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBRTtLQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUM7S0FDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHO1NBQ0osQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFHO1NBQ04sQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFHO1NBQ04sQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUc7U0FDUCxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBRztBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQTtNQUNQLENBQUMsQ0FBQyxDQUFDO0tBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBO0tBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDNUUsQ0FBQTs7Q0FFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ2hDLENBQUE7O0NBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtLQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQzFCLENBQUE7O0NBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsSUFBSSxDQUFDO0tBQ3RGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7QUFDM0QsQ0FBQTs7Q0FFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBRTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2YsQ0FBQTs7QUFFQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUU7U0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ25FLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUUsR0FBRyxDQUFDO0FBQzVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO1NBQ0gsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO01BQ2hEO0FBQ0wsQ0FBQTs7QUFFQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFO0tBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLENBQUE7S0FDakMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDN0UsQ0FBQTs7QUFFQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEdBQUcsQ0FBQztLQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7S0FDWCxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFFO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUU7YUFDakMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQzNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFBLENBQUU7QUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07S0FDVixDQUFBLENBQUEsQ0FBQSxDQUFJLGlCQUFpQixDQUFBLENBQUU7U0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBRTtBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUM7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQzNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDdEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDckIsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO2FBQ2xDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztBQUN0RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBRTtBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUU7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDcEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFFO0FBQ2IsQ0FBQTs7Ozs7Ozs7Ozs7Q0M3aEJBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdkLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUF5Qjs7Q0FFdkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBR1EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXlCOztBQUUxQyxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtFQUNDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFFO0FBQ2pELENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0lBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxpREFBaUQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQztBQUN4RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2QsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7Q0FDQSxDQUFDOztBQUVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLFVBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7RUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0dBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3ZCLENBQUEsQ0FBQTtFQUNDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxHQUFHLENBQUM7QUFDckMsQ0FBQSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7Q0FDMUIsQ0FBQztBQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLE9BQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0VBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxHQUFHLENBQUM7RUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRTtBQUNYLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3BCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE0RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ3ZGLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUc7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNKLENBQUEsQ0FBQTtDQUNBLENBQUM7QUFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxVQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFO0VBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUNmLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2QsQ0FBQSxDQUFBO0VBQ0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsR0FBRyxDQUFDO0NBQ25DLENBQUM7QUFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLFVBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7RUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBRTtHQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sV0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsSUFBSSxDQUFDO0FBQ3hDLENBQUEsQ0FBQTtDQUNBLENBQUM7O0FBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUc7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUUsSUFBSSxDQUFBLENBQUU7O0FBRXZFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtFQUNDLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRztBQUNmLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtJQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtLQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztBQUN6RSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0EsQ0FBRztBQUNILENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7SUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLEdBQUcsQ0FBQztJQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssV0FBVyxDQUFBLENBQUU7S0FDaEQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0csQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0dBQ3ZCLENBQUc7QUFDSCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLEdBQUcsQ0FBQztHQUMxQixDQUFHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHLENBQUM7R0FDMUIsQ0FBRztBQUNILENBQUEsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFO0lBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUc7TUFDSixDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtNQUNYO0FBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0MsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEtBQUssQ0FBQztBQUNsRSxDQUFBLENBQUEsQ0FBQTtHQUNFO0FBQ0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87Q0FDZixDQUFDOzs7Ozs7Ozs7OztBQzlHRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTs7Ozs7Ozs7Ozs7QUNEdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7Ozs7Ozs7Ozs7O0FDRHRCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTOzs7Ozs7Ozs7OztBQ0QxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7Ozs7Ozs7Ozs7O0FDRDNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBYyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYzs7Ozs7Ozs7Ozs7QUNEL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXOzs7Ozs7Ozs7OztBQ0Q1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQWMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7Ozs7Ozs7Ozs7O0FDRHpCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUc7Ozs7Ozs7Ozs7O0FDRHpCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7Ozs7Ozs7Ozs7O0FDRDNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUc7Ozs7Ozs7Ozs7O0FDRHpCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUc7Ozs7Ozs7Ozs7O0FDRHpCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUc7Ozs7Ozs7Ozs7O0FDRHpCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7Ozs7Ozs7Ozs7O0FDRDNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRTtFQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7Q0FDZixDQUFDOzs7Ozs7Ozs7OztDQ0hELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHUixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBa0I7O0FBRS9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLElBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQSxDQUFFO0VBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNmLENBQUEsQ0FBQTtFQUNDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFFO0NBQzVCLENBQUM7Ozs7Ozs7Ozs7O0FDUkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3Qjs7Ozs7Ozs7Ozs7QUNEaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBaUI7O0FBRTdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBRTtBQUNYLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ0wsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxRQUFRLENBQUM7RUFDckIsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUU7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDZCxDQUFBLENBQUE7QUFDQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzs7Ozs7Ozs7Ozs7QUNadEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLGVBQWUsQ0FBQSxDQUFFO0FBQ3JCLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0dBQ0gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDO0VBQ3hDLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3pCLENBQUEsQ0FBQTtBQUNBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWU7Ozs7Ozs7Ozs7O0FDWGhDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRztBQUN2QyxDQUFBLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBO0VBQ3ZHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQTs7QUFFeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtFQUNDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2IsQ0FBQSxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxNQUFNLENBQUM7QUFDekIsQ0FBQSxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxHQUFHLENBQUM7RUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBOztBQUU3QyxDQUFBLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBO0FBQy9FLENBQUEsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUE7O0FBRWxGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztFQUVDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2hCLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtFQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0VBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBOztFQUV2RixDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxtQkFBbUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQTs7RUFFckgsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUMsR0FBRyxDQUFDO0FBQzdDLENBQUEsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQTs7QUFFMUQsQ0FBQSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsb0JBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBOztBQUUzRSxDQUFBLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtBQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztBQUNoRyxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBO0FBQ3BGLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUMsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0NBQ1osQ0FBQzs7Ozs7Ozs7Ozs7QUMxQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtDQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFrQjs7QUFFdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHO0VBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQTtFQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBO0FBQ2xELENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUE7QUFDM0QsQ0FBQSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUE7O0VBRXRELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sYUFBYSxDQUFBLENBQUU7Q0FDdkIsQ0FBQzs7Ozs7Ozs7Ozs7QUNYRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJOzs7Ozs7Ozs7OztDQ0RuRixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBMEI7O0FBRXhDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxxQkFBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTs7Ozs7Ozs7Ozs7QUNIL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7Q0FFQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUQ7QUFDckUsQ0FBQSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRztDQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQjs7Q0FFbEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLFFBQVEsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtLQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTs7QUFFaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtTQUNsQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUc7Q0FDZCxDQUFDOztDQUVELENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0tBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0tBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxNQUFXLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7U0FDakUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHO0NBQ2QsQ0FBQzs7QUFFRCxDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFO0tBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUM7U0FDYixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsTUFBTSxDQUFBLENBQUU7YUFDcEIsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHO0NBQ2QsQ0FBQzs7QUFFRCxDQUFBLGNBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQSxDQUFFO0tBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7QUFDMUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUM7QUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFDLENBQUM7O0FBRWxDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUNULENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO2NBQzNCO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxNQUFNLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztVQUMzQjs7S0FFVCxDQUFLOztBQUVMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQztLQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLG1CQUFtQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLDJDQUEyQyxDQUFDLENBQUMsTUFBTSxDQUFDOztBQUVqSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0NBQ2hCLENBQUM7Ozs7Ozs7Ozs7O0NDakZELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBMkI7O0FBRWhELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYzs7Ozs7Ozs7Ozs7QUNGMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLFlBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJOzs7Ozs7Ozs7OztBQ0R4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxhQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLOzs7Ozs7Ozs7OztBQ0R6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzs7Ozs7Ozs7Ozs7Q0NEM0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBd0I7O0NBRW5DLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUdRLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUEwQjtDQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBR08sQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXlCO0NBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXlCOztBQUU3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7Ozs7Ozs7Ozs7O0NDUDFELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBR2hCLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUF3QjtDQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHUSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBeUI7O0NBRTFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBeUI7Q0FDckMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXdCOztBQUUzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsb0JBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLElBQUksQ0FBQSxDQUFFO0FBQzlDLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0FBQ3ZELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLHdCQUF3QixDQUFDO0FBQ2hELENBQUEsQ0FBQTtFQUNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLElBQUksQ0FBQztDQUN2QyxDQUFDOzs7Ozs7Ozs7OztDQ1pELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHaEIsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWtDO0NBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdRLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFlOztBQUUxQixDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7Q0FDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0VBQ0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IseURBQXlELENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0NBQzVHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFO0VBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxrQkFBa0IsQ0FBQSxDQUFFO0FBQ3JGLENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQztBQUNULENBQUEsQ0FBQTtBQUNBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdELFdBQVcsQ0FBQSxDQUFFOztDQUUzSCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWM7O0FBRTVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBYyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUM7SUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxlQUFlLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQztBQUNqRSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7Ozs7Ozs7Ozs7O0NDM0JULENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUdSLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFtQztDQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHUSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBa0M7O0NBRXpELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBR08sQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQTJCOztBQUVoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLFFBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUMsQ0FBQztBQUMzQixDQUFBLENBQUE7SUFDRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBRTtBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLHlCQUF5QixDQUFDO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUMsQ0FBQztBQUM3QixDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQyxDQUFDO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJOzs7Ozs7Ozs7OztBQ3hCVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFFLENBQUMsV0FBVyxDQUFDOztBQUVyRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07Ozs7Ozs7Ozs7O0FDSjdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUUsQ0FBQyxXQUFXLENBQUM7O0FBRXhGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNOzs7Ozs7Ozs7OztBQ0o3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUUsQ0FBQyxXQUFXLENBQUM7O0FBRS9HLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTs7Ozs7Ozs7Ozs7QUNKN0IsQ0FBQSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNsQyxDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWM7Q0FDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHZixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBd0I7O0FBRW5DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQzs7Ozs7Ozs7Ozs7QUNMekMsQ0FBQSxJQUFJMkIsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBUzs7Q0FFYixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHM0IsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQTBCOztDQUV4QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBR1EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQW9CO0NBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUF5QjtDQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUEwQjtDQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXdCO0NBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBMkI7Q0FDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXlCO0NBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHUyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBd0I7O0NBRXhDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBOEI7Q0FDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBZ0M7Q0FDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUE4QjtDQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQThCO0NBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBOEI7Q0FDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBZ0M7Q0FDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQStCOztDQUUxQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFlO0NBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBNkI7O0NBRW5ELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0VBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUU7Q0FDdkIsQ0FBQztBQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxjQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ2hCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7SUFDRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztHQUN4QixDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHO0lBQ3pDLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYzs7Q0FFakIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLEVBQXNCLENBQUEsQ0FBRTs7Q0FFekMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFvQjtDQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUEwQztDQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQTJDOztDQUU3RCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBZ0Q7Q0FDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUErQzs7Q0FFM0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7O0FBRWxCLENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUdoQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLFVBQVUsQ0FBQzs7QUFFbEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFBLENBQUc7RUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0VBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0VBQ3RGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0VBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQzlFLENBQUEsQ0FBQywwQkFBMEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFLENBQUMsR0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBUztFQUNoRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQyxFQUFFQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFTO0VBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztFQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztFQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7RUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0VBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0VBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0VBQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtFQUNuRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWM7RUFDdEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztFQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtFQUNwRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0VBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0VBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCO0VBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztFQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQjtFQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0VBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtFQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0VBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtFQUNoRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7RUFDaEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0VBQ2hGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CO0VBQ3hHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0VBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0VBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0VBQ3ZFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0VBQzFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0VBQzFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0VBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0VBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVM7RUFDckcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVM7RUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7RUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBR0EsV0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFLENBQUM7RUFDckksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtFQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtFQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztFQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1DLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0VBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7RUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7RUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87RUFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7RUFDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0VBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlO0VBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0VBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtFQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztFQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHQSxXQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUUsQ0FBQztFQUNySSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQjtFQUMvRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDbkIsQ0FBQSxDQUFDLDJCQUEyQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBRSxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUUsQ0FBQyxHQUFHQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFTO0FBQ2xHLENBQUEsQ0FBQyxVQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVM7RUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtFQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWM7RUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtFQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtFQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtFQUMxRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQjtFQUMvRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztFQUM3RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztFQUM3RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0VBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0VBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0VBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPOztFQUVqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkIsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7RUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNEIsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtFQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF5QixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlO0VBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtFQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxFQUFFLENBQUEsQ0FBQSxDQUFHO0VBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztFQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxFQUFFLENBQUEsQ0FBQSxDQUFHO0VBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEVBQUUsQ0FBQSxDQUFBLENBQUc7RUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksRUFBRSxDQUFBLENBQUEsQ0FBRztFQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7RUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDcEIsQ0FBQSxDQUFDLDBCQUEwQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtFQUM1Qjs7QUFFRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUU7QUFDZCxDQUFBLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtHQUNILENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7RUFDYixDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQzlDLENBQUEsQ0FBQTtBQUNBLENBQUE7O0NBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBR2lCLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUF5QjtDQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBNkI7Q0FDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF5QixDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQW1DOztBQUVuRSxDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLElBQUksQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNWLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBS25CLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVM7QUFDOUMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxxQkFBcUIsQ0FBQSxDQUFFO0FBQzVDLENBQUEsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFTO0FBQ2xELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssMEJBQTBCLENBQUEsQ0FBRTtBQUNqRCxDQUFBLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUtBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVM7QUFDdkQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxrQkFBa0IsQ0FBQSxDQUFFO0FBQ3pDLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsMEJBQTBCLENBQUM7R0FDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBRTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSywwQkFBMEIsQ0FBQSxDQUFFO0FBQ2pELENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxrQkFBa0IsQ0FBQztBQUN0QyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxTQUFTLENBQUM7QUFDbEMsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7O0FBRXpCLENBQUEsQ0FBQyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztDQUNiLENBQUM7O0FBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLGNBQWMsQ0FBQSxDQUFBLENBQUc7RUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2hCLENBQUEsQ0FBQyx3QkFBd0IsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUUsV0FBVyxDQUFDO0FBQ3ZELENBQUEsQ0FBQyxrQkFBa0IsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsV0FBVyxDQUFDO0VBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxTQUFTLENBQUM7RUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLFNBQVMsQ0FBQztFQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsTUFBTSxDQUFDO0VBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsUUFBUSxDQUFDO0FBQ3hELENBQUEsQ0FBQywwQkFBMEIsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLFdBQVcsQ0FBQztBQUMzRCxDQUFBLENBQUMsa0JBQWtCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBLENBQUUsV0FBVyxDQUFDO0VBQzNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQixFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxXQUFXLENBQUM7QUFDbEYsQ0FBQSxDQUFDLG9CQUFvQixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsV0FBVyxDQUFDO0FBQy9DLENBQUEsQ0FBQyxxQkFBcUIsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsV0FBVyxDQUFDO0FBQ2pELENBQUEsQ0FBQyxpQkFBaUIsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFdBQVcsQ0FBQztBQUN6QyxDQUFBLENBQUMsa0JBQWtCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLFdBQVcsQ0FBQztBQUMzQyxDQUFBLENBQUMsc0JBQXNCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsV0FBVyxDQUFDO0FBQ25ELENBQUEsQ0FBQyx5QkFBeUIsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxXQUFXLENBQUM7QUFDekQsQ0FBQSxDQUFDLHlCQUF5QixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLFdBQVcsQ0FBQztBQUN6RCxDQUFBLENBQUMscUJBQXFCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLFdBQVcsQ0FBQztBQUNqRCxDQUFBLENBQUMsYUFBYSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUUsV0FBVyxDQUFDO0VBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsV0FBVyxDQUFDO0FBQ3hFLENBQUEsQ0FBQyxzQkFBc0IsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxXQUFXLENBQUM7QUFDbkQsQ0FBQSxDQUFDLHVCQUF1QixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsV0FBVyxDQUFDO0FBQ3JELENBQUEsQ0FBQyx1QkFBdUIsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLFdBQVcsQ0FBQztBQUNyRCxDQUFBLENBQUMsYUFBYSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsT0FBTyxDQUFDO0FBQ2pDLENBQUEsQ0FBQyxpQkFBaUIsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFdBQVcsQ0FBQztBQUN6QyxDQUFBLENBQUMsZ0JBQWdCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsV0FBVyxDQUFDO0FBQ3ZDLENBQUEsQ0FBQyxtQkFBbUIsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxXQUFXLENBQUM7QUFDN0MsQ0FBQSxDQUFDLG1CQUFtQixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLFdBQVcsQ0FBQztFQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsVUFBVSxDQUFDO0VBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsU0FBUyxDQUFDO0FBQ3pELENBQUEsQ0FBQyxvQkFBb0IsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLFdBQVcsQ0FBQztFQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxNQUFNLENBQUM7QUFDeEQsQ0FBQSxDQUFDLGVBQWUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLEtBQUssQ0FBQztBQUNwQyxDQUFBLENBQUMsa0JBQWtCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDMUMsQ0FBQSxDQUFDLG1CQUFtQixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsU0FBUyxDQUFDO0FBQzVDLENBQUEsQ0FBQyx1QkFBdUIsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLFdBQVcsQ0FBQztBQUNyRCxDQUFBLENBQUMsMkJBQTJCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxXQUFXLENBQUM7QUFDN0QsQ0FBQSxDQUFDLG1CQUFtQixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLFdBQVcsQ0FBQztBQUM3QyxDQUFBLENBQUMsZ0JBQWdCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsV0FBVyxDQUFDO0FBQ3ZDLENBQUEsQ0FBQyw4QkFBOEIsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFFLFdBQVcsQ0FBQztBQUNuRSxDQUFBLENBQUMsbUJBQW1CLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsV0FBVyxDQUFDO0FBQzdDLENBQUEsQ0FBQyxtQkFBbUIsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxXQUFXLENBQUM7QUFDN0MsQ0FBQSxDQUFDLHdCQUF3QixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxXQUFXLENBQUM7QUFDdkQsQ0FBQSxDQUFDLHVCQUF1QixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsV0FBVyxDQUFDO0FBQ3JELENBQUEsQ0FBQyxzQkFBc0IsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxXQUFXLENBQUM7QUFDbkQsQ0FBQSxDQUFDLHVCQUF1QixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsV0FBVyxDQUFDO0FBQ3JELENBQUEsQ0FBQyw4QkFBOEIsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFFLFdBQVcsQ0FBQztBQUNuRSxDQUFBLENBQUMsd0JBQXdCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFLFdBQVcsQ0FBQztBQUN2RCxDQUFBLENBQUMsd0JBQXdCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFLFdBQVcsQ0FBQztBQUN2RCxDQUFBLENBQUMscUJBQXFCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLFdBQVcsQ0FBQztBQUNqRCxDQUFBLENBQUMsb0JBQW9CLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxXQUFXLENBQUM7QUFDL0MsQ0FBQSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7RUFDN0M7O0NBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHb0IsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXdCO0NBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBaUI7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsTUFBTSxDQUFDO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLE1BQU0sQ0FBQztBQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsT0FBTyxDQUFDO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLEtBQUssQ0FBQztBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsSUFBSSxDQUFDOztBQUVuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9HO0NBQ3JILENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzlCLENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsTUFBTSxDQUFBLENBQUU7RUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxNQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7RUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLEVBQUUsQ0FBQztFQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLGdEQUFnRCxDQUFDO0VBQzFFLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDM0MsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLGdEQUFnRCxDQUFDO0FBQzFFLENBQUEsQ0FBQTtFQUNDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2hCLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsVUFBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLFNBQVMsQ0FBQSxDQUFFO0dBQ3ZFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsWUFBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzNGLENBQUEsQ0FBQSxDQUFFLENBQUM7QUFDSCxDQUFBLENBQUMsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtDQUNkLENBQUM7QUFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0NBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxnQkFBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsZ0JBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFO0VBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3pCLENBQUEsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNWLENBQUEsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsY0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBRTtBQUM1QyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsYUFBYSxDQUFDO0dBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ3RDLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFVBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUU7QUFDeEMsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLGFBQWEsQ0FBQztBQUN2QyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsYUFBYSxDQUFDO0FBQ2hDLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssV0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsWUFBWSxDQUFBLENBQUU7SUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsWUFBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzRCxDQUFDO0FBQ3JHLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87SUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7SUFDWixDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUE7SUFDUDtBQUNILENBQUEsQ0FBQTs7RUFFQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsWUFBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDO0NBQ2pFLENBQUM7O0FBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsWUFBWSxDQUFBLENBQUU7RUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDcEQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsMkNBQTJDLENBQUM7QUFDbkUsQ0FBQSxDQUFBO0VBQ0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7QUFDaEUsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsMkNBQTJDLENBQUM7QUFDbkUsQ0FBQSxDQUFBOztFQUVDLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxvRkFBb0YsQ0FBQztBQUM5RyxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxJQUFJLENBQUM7QUFDL0IsQ0FBQSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBRTs7QUFFekQsQ0FBQSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDO0FBQzlFLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3ZDLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztFQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7O0FBRS9CLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztFQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFFO0FBQ1osQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUM7QUFDOUIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQztBQUM3QyxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDekQsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQztHQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQztHQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxFQUFFLENBQUM7R0FDOUIsQ0FBQSxDQUFBLENBQUE7SUFDQztLQUNDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHO1NBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUc7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUE7S0FDWjtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLHNEQUFzRCxDQUFDO0FBQ2pGLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxhQUFhLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUEsQ0FBRTtJQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzVCLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2pDLENBQUEsQ0FBQSxDQUFFLGlCQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLEdBQUcsQ0FBQSxDQUFBLENBQUc7O0FBRW5ELENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxVQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFFO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxpQkFBaUIsQ0FBQztBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0tBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUU7TUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMscUJBQXFCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTZDLENBQUM7QUFDdkcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLckIsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBUztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0csQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0tBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLElBQUksQ0FBQztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJOztBQUVsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDbEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxJQUFJLENBQUM7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLElBQUksQ0FBQztBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLElBQUksQ0FBQztBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLGtCQUFrQixDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0NBQ2IsQ0FBQzs7Ozs7Ozs7Ozs7Q0NsWEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUczQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBd0I7O0NBRTNDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBR1EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWtDOztBQUV0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTRCLENBQUMsQ0FBQyxDQUFDOztBQUUxRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsWUFBWSxDQUFBLENBQUU7QUFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztFQUVDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQztBQUNuSCxDQUFBLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFFO0FBQzVFLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUU7QUFDMUQsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7Q0FDakIsQ0FBQzs7Ozs7Ozs7Ozs7Q0NoQkQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdSLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUF3QjtDQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBR1EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXFCO0NBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUF5Qjs7Q0FFdkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXlCO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsSUFBSSxDQUFDOztBQUV0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFFLElBQUksQ0FBQztBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUUsSUFBSSxDQUFDO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUUsSUFBSSxDQUFDO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFBLENBQUUsSUFBSSxDQUFDO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBRSxJQUFJLENBQUM7O0FBRXBELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUErQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxpQkFBaUIsQ0FBQSxDQUFBLENBQUc7QUFDbkcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNDLElBQUksQ0FBQSxDQUFFOztBQUU1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7RUFDQyxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDZixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7SUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7S0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDekUsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNBLENBQUc7QUFDSCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0lBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUU7S0FDUCxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsR0FBRyxDQUFDO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7TUFDdkIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztHQUNmLENBQUc7QUFDSCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUU7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHLENBQUM7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNBLENBQUc7QUFDSCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7SUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBRTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLEdBQUcsQ0FBQztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztHQUNmLENBQUc7QUFDSCxDQUFBLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtJQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEtBQUssQ0FBQztBQUMxQixDQUFBLENBQUEsQ0FBQTtHQUNFOztBQUVGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUMsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0NBQ2YsQ0FBQzs7Ozs7Ozs7Ozs7Q0NqRUQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdoQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBd0I7Q0FDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdRLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFxQjtDQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBeUI7Q0FDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBMkI7O0NBRW5ELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUF5QjtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsSUFBSSxDQUFDOztBQUU5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUEsQ0FBRSxJQUFJLENBQUM7QUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUEsQ0FBRSxJQUFJLENBQUM7QUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixDQUFBLENBQUUsSUFBSSxDQUFDO0FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksY0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFFLElBQUksQ0FBQzs7QUFFaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxrQkFBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOytDQUM2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxxQkFBcUIsQ0FBQSxDQUFBLENBQUc7QUFDL0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9ELElBQUksQ0FBQSxDQUFBLENBQUc7QUFDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQyxJQUFJLENBQUEsQ0FBRTs7QUFFM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7S0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7TUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDMUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0EsQ0FBSTtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUU7TUFDOUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFDO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0EsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFFO01BQzdCLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUU7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0lBQ2hCLENBQUk7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUU7TUFDOUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFDO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUM7SUFDNUIsQ0FBSTtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBRTtNQUM5RSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUM7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0lBQzlCLENBQUk7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBRTtNQUM5RSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxXQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsS0FBSyxDQUFDO0tBQ2pDLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBRTtNQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRTtPQUNSLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOzRDQUMyQyxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEtBQUssQ0FBQztBQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0c7O0FBRUgsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2hCLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQjs7Ozs7Ozs7Ozs7Q0NqRnBCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdqQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBeUI7Q0FDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBR1EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXlCO0NBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBNEI7Q0FDckQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBMkI7Q0FDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUErQjs7QUFFM0QsQ0FBQSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxxQkFBcUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCOztBQUVsRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUc7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0MsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTs7QUFFcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0VBQ0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ2YsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0lBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0tBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0MsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQ3pFLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDQSxDQUFHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtJQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0dBQ3ZELENBQUc7QUFDSCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7SUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxZQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQztHQUMvQyxDQUFHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0lBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztHQUNqRCxDQUFHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUU7SUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRTtLQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBRyxZQUFZLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsS0FBSyxDQUFDO0FBQy9CLENBQUEsQ0FBQSxDQUFBO0dBQ0U7QUFDRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztDQUNmLENBQUM7Ozs7Ozs7Ozs7O0FDeENELENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87Q0FDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTs7QUFFNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUc7S0FDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtFQUNaOztBQUVELENBQUEsT0FBYyxDQUFBLENBQUEsQ0FBRztBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFBLENBQUU7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO2FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQztTQUM1RCxDQUFTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO01BQ0s7QUFDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0tBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7RUFDbkI7Ozs7Ozs7Ozs7O0NDcEJELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdqQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBb0I7Q0FDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUdRLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUF1Qjs7QUFFNUMsQ0FBQSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPOztBQUUzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFOztDQUV0QyxDQUFBLENBQUEsQ0FBQSxDQUFJLFlBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxlQUFlLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsUUFBUSxDQUFDO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHO0NBQ2QsQ0FBQzs7QUFFRCxDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxHQUFHLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFDO0NBQ25DLENBQUM7O0FBRUQsQ0FBQSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLEdBQUcsQ0FBQSxDQUFFO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUM7Q0FDbkMsQ0FBQzs7Q0FFRCxDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsV0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxlQUFlLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsUUFBUSxDQUFDO0NBQ3RDLENBQUM7O0NBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtLQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO1NBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRTtBQUN4RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2hCLENBQUEsQ0FBQyxFQUFFLENBQUM7O0FBRUosQ0FBQSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxLQUFLLENBQUEsQ0FBRTtBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsR0FBRyxDQUFBLENBQUU7U0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7O0FBRXJDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO2FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7O0FBRTlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtpQkFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxXQUFXLENBQUEsQ0FBRTtxQkFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUM7QUFDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7YUFFWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQzs7Q0FFRCxDQUFBLENBQUEsQ0FBQSxDQUFJLGFBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsYUFBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFO0FBQ3hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO1NBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssV0FBVyxDQUFBLENBQUU7YUFDbEMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRztDQUNkLENBQUM7O0NBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7S0FFSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFO0FBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLFVBQVUsQ0FBQSxDQUFFO0FBQ3JHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLFNBQVMsQ0FBQztBQUM3RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtTQUN0QyxDQUFTLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7aUJBQ2dCLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEdBQUcsQ0FBQztBQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLFdBQVcsQ0FBQSxDQUFFO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxNQUFNLENBQUM7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBO2lCQUNILENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLFlBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQztvQkFDMUQsQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO2VBQ3ZDO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLE1BQU0sQ0FBQztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7S0FFSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFDO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBRTtpQkFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQ2hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxVQUFVLENBQUEsQ0FBRTtBQUN2RyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDdEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0tBRUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07S0FDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFdBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxPQUFPLENBQUM7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztLQUVJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7U0FDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsVUFBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTthQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUM7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLFVBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0FBQ3RHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7QUFDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQztBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFO0FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsR0FBRyxDQUFDOztTQUV2QixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsT0FBTyxDQUFDO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7U0FFUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7YUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsV0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQztBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO2FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsRUFBRSxDQUFDO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLFdBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUNwRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxNQUFNLENBQUM7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUc7S0FDbEIsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUM7Q0FDbkIsQ0FBQzs7Q0FFRCxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsa0JBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtTQUNsRCxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEdBQUcsQ0FBQztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFHO0tBQ2xCLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7Q0FDZCxDQUFDOztDQUVELENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7S0FDakQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLGNBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQztLQUNqRCxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFDOztDQUVELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7O0FBRWhCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUU7QUFDekUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBRztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0tBRUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtTQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEdBQUcsQ0FBQztBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUN2RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztLQUVJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFFO1NBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO1NBQzFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFOztBQUVwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7YUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFDO2FBQzdCLENBQUEsQ0FBQSxDQUFBO2lCQUNJLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUE7b0JBQ1AsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQTtvQkFDVixDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBO29CQUNWLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2VBQy9EO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUM7aUJBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO2lCQUNWLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQztpQkFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUM7dUJBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDO2lCQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7YUFFWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUU7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO3VCQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQzt1QkFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUM7aUJBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOzthQUVZLENBQUMsSUFBSSxDQUFDO2FBQ04sQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQzs7QUFFakYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO21CQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO21CQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQzttQkFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUM7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEVBQUUsQ0FBQztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUc7Q0FDZCxDQUFDOztBQUVELENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEtBQUssQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQztLQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFOztBQUVqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQztTQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQzs7U0FFN0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUM7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFDO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBRTtBQUNyRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBRztBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0tBRUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQzs7QUFFdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0NBQ2hCLENBQUM7O0FBRUQsQ0FBQSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEdBQUcsQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQjtDQUNwRSxDQUFDOztBQUVELENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxHQUFHLENBQUEsQ0FBRTtLQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0tBRUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0NBQzNGLENBQUM7O0FBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLFlBQVksQ0FBQSxDQUFFO0FBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUU7U0FDZixDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsR0FBRyxDQUFDO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUMsQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUM7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztLQUVJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLFVBQVUsQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDckcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07Q0FDakIsQ0FBQzs7Q0FFRCxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtTQUNkLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0NBQ2xCLENBQUM7O0FBRUQsQ0FBQXlDLE9BQWMsQ0FBQSxDQUFBLENBQUc7S0FDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtLQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0tBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87S0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87S0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtLQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07S0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7S0FDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7S0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0tBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7S0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBO0VBQ1Y7Ozs7Ozs7Ozs7O0NDblZELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHakQsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXVCO0NBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBR1EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWtCO0NBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFvQjtBQUNsQyxDQUFBLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjOztBQUV6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUkscUJBQXFCLENBQUEsQ0FBQSxDQUFHO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxNQUFNLENBQUEsQ0FBRTtTQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDNUIsQ0FBSztLQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87S0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBRztLQUN2QyxDQUFLO0FBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsTUFBTSxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7RUFDQzs7QUFFRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQzNCLENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDL0IsQ0FBQSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxZQUFZLENBQUEsQ0FBRTtBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQztDQUMxRSxDQUFDOztBQUVELENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXOztBQUV0QyxDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsU0FBUyxDQUFDO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHO0tBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0tBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0tBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFHO0tBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0tBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7S0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLGFBQWEsQ0FBQztBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxhQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsSUFBSSxDQUFBLENBQUU7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDO0tBQy9CLENBQUs7S0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksa0JBQWtCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBO0VBQ3ZCOztBQUVELENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQSxDQUFBLENBQUcsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQyxDQUFDLENBQUEsQ0FBRTtLQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtZQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtZQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1lBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1lBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7Q0FDaEMsQ0FBQzs7Q0FFRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7O0NBRWpCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWM7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0I7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87S0FDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0Y7S0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNOztLQUVoQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7S0FDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUM7S0FDWixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsUUFBUSxDQUFBLENBQUU7QUFDMUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsTUFBTSxDQUFDO1NBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssV0FBVyxDQUFBLENBQUU7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLHFCQUFxQixDQUFDO0FBQzNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtpQkFDSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRTthQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLEdBQUcsQ0FBQztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxHQUFHLENBQUM7S0FDaEMsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO1NBQ3hELENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQztBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7U0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFJLGtCQUFrQixDQUFBLENBQUU7YUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxnQkFBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDcEgsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O1NBRVEsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUU7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtTQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFFO2FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsT0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsTUFBTSxDQUFDO2FBQ3BHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3BILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUM7QUFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztLQUVJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFOztBQUVuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxXQUFXLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0tBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBSSxtQkFBbUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO2FBQzdCLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQztBQUN0RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtTQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07U0FDSCxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDO1NBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7S0FFSSxDQUFBLENBQUEsQ0FBQSxDQUFJLGFBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsTUFBTSxDQUFDOztLQUUzRixDQUFBLENBQUEsQ0FBQSxDQUFJLGNBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsYUFBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTs7QUFFbEgsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO1NBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMzRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtlQUNKLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQzs7QUFFdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUU7YUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O1NBRVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUN2RyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRztlQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM1RyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDOztBQUV0RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxXQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsSUFBSSxDQUFDO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRTtBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxnQkFBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsV0FBVyxDQUFDO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUI7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWM7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQjtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWU7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDaEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWE7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO2FBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07Q0FDakIsQ0FBQzs7QUFFRCxDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUIsQ0FBQSxDQUFBLENBQUcsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF5QixDQUFDLElBQUksQ0FBQSxDQUFFO0tBQ3JFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxnQkFBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxTQUFTLENBQUEsQ0FBRTtBQUNwRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsd0VBQXdFLENBQUM7QUFDckcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLGVBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxTQUFTLENBQUEsQ0FBRTtBQUNsRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsdUVBQXVFLENBQUM7QUFDcEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztLQUVJLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7QUFDNUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLCtCQUErQixDQUFDO0FBQzVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7S0FFSSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFdBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxZQUFZLENBQUEsQ0FBRTtBQUMxRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsbUVBQW1FLENBQUM7QUFDaEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxTQUFTLENBQUM7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFdBQVcsQ0FBQSxDQUFFO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLGlDQUFpQyxDQUFDO0FBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLE1BQU0sQ0FBQzs7QUFFOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7QUFDbkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFJLHFCQUFxQixDQUFBLENBQUU7QUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFFO1NBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0tBRUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtBQUM5RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsK0NBQStDLENBQUM7QUFDNUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztLQUVJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUzs7QUFFeEksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWM7U0FDeEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxnQkFBZ0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLGdCQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxnQkFBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7U0FDbEgsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO1NBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlO0FBQ3BILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLGNBQWMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDOUYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDaEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWU7QUFDcEgsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ3JGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO1NBQ2hILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07U0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO1NBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWE7QUFDN0csQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDNUYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUcsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtNQUN6RztDQUNMLENBQUM7O0FBRUQsQ0FBQSxXQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0tBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF5QixDQUFDLElBQUksQ0FBQzs7QUFFakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNOztBQUVkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsR0FBRyxDQUFDO0tBQzdCLENBQUssTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO1NBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0tBRUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTs7S0FFYixDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUU7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztLQUVJLENBQUEsQ0FBQSxDQUFBLENBQUksbUJBQW1CLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxXQUFXLENBQUM7S0FDcEUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxjQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWM7O0tBRTlFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQztBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLElBQUksQ0FBQztBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUU7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUM7O1NBRXBCLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBRTthQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUc7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO2FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO2FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0I7YUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO2FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZTthQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO2FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTthQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO2FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO2FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhO2FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTthQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUzthQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7YUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87YUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztLQUVJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQztLQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFOztBQUUzRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFlBQVksQ0FBQSxDQUFFO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUI7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0tBRUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0NBQ25ELENBQUM7Ozs7Ozs7Ozs7O0NDaldELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBR2YsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWtCOztBQUU5QixDQUFBLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87O0FBRTNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHO0tBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUU7S0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztLQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07S0FDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBRztLQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUM7S0FDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7S0FDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksb0JBQW9CLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBO0VBQ3pCOztBQUVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxHQUFHLENBQUEsQ0FBRTtLQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtTQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0NBQ04sQ0FBQzs7Q0FFRCxDQUFBLENBQUEsQ0FBQSxDQUFJLGVBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFFO0tBQzlELENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUU7QUFDbEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEdBQUcsQ0FBQztBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0tBRUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFJLGtCQUFrQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRTtTQUMxRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTZCLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixDQUFDO0FBQy9KLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRztDQUNkLENBQUM7O0FBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRXhDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7Q0FFdkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLHNCQUFzQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUNoRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRTs7QUFFakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxpQkFBaUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFHO0FBQzNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLEdBQUcsQ0FBQzs7QUFFbkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztBQUM3RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO1NBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7TUFDOUM7O0tBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO1NBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLGlDQUFpQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLFdBQVcsQ0FBQztBQUMvSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUM7O0FBRVQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssZUFBZSxDQUFBLENBQUU7cUJBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO2lCQUNyQyxDQUFpQixNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFO3FCQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2lCQUNnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxHQUFHLENBQUM7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTthQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUM7O1NBRW5CLENBQUEsQ0FBQSxDQUFBLENBQUksZ0JBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsSUFBSSxDQUFDO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEdBQUcsQ0FBQzs7QUFFcEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBRztBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUc7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxLQUFLLENBQUM7YUFDN0QsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsa0JBQWtCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUU7QUFDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTthQUNILENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxPQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQzs7QUFFdkYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUc7c0JBQ3pDO3FCQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsVUFBVSxDQUFBLENBQUU7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLE9BQU8sQ0FBQztBQUM5RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtrQkFDaUI7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztTQUVRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsd0JBQXdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFO2FBQ3JFLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztBQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7U0FFUSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRTthQUMxQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsVUFBVSxDQUFBLENBQUU7QUFDOUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBRTtpQkFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE2QixHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsQ0FBQztBQUN2SyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxZQUFZLENBQUM7QUFDbEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7YUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDNUYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO3FCQUNwQixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFHO3FCQUNILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2tCQUNYO2FBQ2pCLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDbkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBRztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUc7Q0FDZCxDQUFDOztDQUVELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFO0tBQzNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUU7QUFDOUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsRUFBRSxDQUFDO1NBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQzdGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsa0JBQWtCLENBQUM7O0FBRXJGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUc7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFDOztTQUVuQixDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsV0FBVyxDQUFBLENBQUU7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2lCQUNnQixDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUM7dUJBQ3pGLENBQUE7dUJBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQSxDQUFBLENBQUEsQ0FBSTt5QkFDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO3NCQUNYO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDckgsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsZUFBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO2FBQ3RGLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLEVBQUUsQ0FBQztBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJO29CQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7YUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxXQUFXLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQzVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUU7YUFDakMsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRTtpQkFDeEQsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsb0JBQW9CLENBQUEsQ0FBRTtpQkFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE2QixHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsQ0FBQzthQUN2SyxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUU7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxLQUFLLENBQUM7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxXQUFXLENBQUEsQ0FBRTtBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7U0FFUSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7Q0FDZixDQUFDOztDQUVELENBQUEsQ0FBQSxDQUFBLENBQUksb0JBQW9CLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLG9CQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7QUFDNUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7O0FBRXBGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUN0RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsZUFBZSxDQUFBLENBQUU7aUJBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7U0FFUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0tBRUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0tBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlOztLQUUzQixDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQztBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUc7O0tBRXhELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7O0tBRWIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBRTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtBQUN6RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsZUFBZSxDQUFBLENBQUU7aUJBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0tBRUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxLQUFLLENBQUEsQ0FBRTtTQUM5RCxDQUFDLElBQUksQ0FBQzs7QUFFZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUUsRUFBRSxDQUFDO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBRTtBQUNqRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsZUFBZSxDQUFBLENBQUU7aUJBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7U0FFUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQztBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0tBRUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBRTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFFO2FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQztBQUN0SCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBRztBQUNoRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtDQUNmLENBQUM7O0FBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxZQUFZLENBQUEsQ0FBRTtLQUNoRixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtTQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztLQUVJLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxPQUFPLENBQUM7O0tBRWxELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtTQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztLQUVJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQztDQUN4RCxDQUFDOztBQUVELENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQSxDQUFBLENBQUcsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQyxJQUFJLENBQUEsQ0FBRTtLQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsZ0JBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssU0FBUyxDQUFBLENBQUU7QUFDcEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLHdFQUF3RSxDQUFDO0FBQ3JHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxlQUFlLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssU0FBUyxDQUFBLENBQUU7QUFDbEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLHVFQUF1RSxDQUFDO0FBQ3BHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7S0FFSSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0FBQzVHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQywrQkFBK0IsQ0FBQztBQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssV0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFlBQVksQ0FBQSxDQUFFO0FBQzFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxtRUFBbUUsQ0FBQztBQUNoRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsb0JBQW9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxTQUFTLENBQUEsQ0FBRTtBQUM1RyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsaURBQWlELENBQUM7QUFDOUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPOztBQUV2RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTs7QUFFbkcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ3JGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyw4REFBOEQsQ0FBQztBQUMzRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0tBRUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTOztBQUV4SSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztTQUNILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsZ0JBQWdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxnQkFBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsZ0JBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQzFILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlO0FBQ3BILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUNwRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtTQUN2RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZTtBQUNwSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDNUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWU7QUFDcEgsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO1NBQzdFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDN0gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO1NBQzlGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLGlCQUFpQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QjtBQUN4SixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQy9HLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFdBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDeEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsV0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsV0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxXQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUN0RyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxXQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxXQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFdBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ3RHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQjtBQUNoSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO01BQ3RHO0NBQ0wsQ0FBQzs7QUFFRCxDQUFBLEtBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUU7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQyxJQUFJLENBQUM7O0FBRTdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFdBQVcsQ0FBQSxDQUFFO1NBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBRztBQUMzRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTs7QUFFN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztLQUVJLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUM7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUM7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQztTQUMzRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUU7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBRztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEdBQUcsQ0FBQztDQUM3QixDQUFDOzs7Ozs7Ozs7OztDQ2xYRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXNCO0NBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBR1EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWtCO0NBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFvQjs7QUFFbEMsQ0FBQW1DLEtBQWMsQ0FBQSxDQUFBLENBQUc7S0FDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztLQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtFQUNkOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0NlRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBR2xELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFvQjs7QUFFbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxHQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ2YsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3RCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDckIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNsQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2xCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3RCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDcEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN0QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2xCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbEIsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQjtHQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVOztBQUUxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1DOztBQUV6RCxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFHO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUE7SUFDdEM7O0FBRUgsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUc7S0FDUCxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7O0FBRWxCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsWUFBWSxDQUFBLENBQUEsQ0FBRztBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQztBQUN0QixDQUFBLENBQUEsQ0FBRSxlQUFlLENBQUEsQ0FBQSxDQUFHO0tBQ2hCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBO0lBQ1g7R0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsR0FBRyxDQUFBLENBQUEsQ0FBRztHQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QjtHQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQThCO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxjQUFjLENBQUEsQ0FBQSxDQUFHO0tBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLGFBQWEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBO0lBQ2hCO0FBQ0gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxnQkFBZ0IsQ0FBQSxDQUFBLENBQUc7S0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLGFBQWEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBO0lBQ2hCO0FBQ0gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsZUFBZSxDQUFBLENBQUEsQ0FBRztLQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDWCxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDWixDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUE7SUFDVjtHQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUdRLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFhOztBQUU3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxpQkFBaUIsQ0FBQSxDQUFFO0FBQzVELENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBOztBQUV6RSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTtHQUNqQixDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQztBQUNuRCxDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUM7QUFDVixDQUFBOztDQUVBLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFFO0FBQzFFLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7S0FDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLHdDQUF3QyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQztBQUM5RSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxHQUFHLENBQUM7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUc7QUFDN0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxRQUFRLENBQUM7S0FDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN0QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLEdBQUcsQ0FBQztBQUNoRCxDQUFBLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQzs7R0FFM0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHOztBQUVoQixDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFBLENBQUU7O0FBRXBCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUM7S0FDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUM7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUM7U0FDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxnQkFBZ0IsQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO1dBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQztBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7O0dBRUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQztHQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFFO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUM7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxXQUFXLENBQUEsQ0FBRTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0tBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7QUFDcEMsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUU7QUFDdEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUU7QUFDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUU7O0FBRW5GLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFFO09BQy9DLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO09BQzFDLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBO0FBQzNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLEdBQUcsQ0FBQztBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRTtPQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO09BQzVCLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsSUFBSSxDQUFDO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFFO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBRTtPQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztPQUN2QyxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQTtBQUMzRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUE7O0tBRTVDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE9BQU8sQ0FBQzs7QUFFOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFOztBQUVwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFFOztBQUV2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRzs7QUFFbEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUU7T0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFFO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQztBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFFLFNBQVMsQ0FBQTtTQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFDLENBQUEsQ0FBRTtXQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFFO2FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2VBQ2MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUEsQ0FBQSxDQUFHO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1dBQ1UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxDQUFBLENBQUU7YUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQzthQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7YUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxpQkFBaUIsQ0FBQzthQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFO2VBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7ZUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO2VBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO2FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7S0FFSSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxjQUFjLENBQUEsQ0FBRTtBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ00sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRTtBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0tBRUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFDO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJOztBQUUxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksWUFBWSxDQUFBLENBQUU7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDdkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUU7O0FBRW5DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUU7QUFDdkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFDO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxFQUFFLENBQUM7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsRUFBRSxDQUFDO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEdBQUcsQ0FBQztBQUM5QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0tBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUM5QixDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEdBQUcsQ0FBQztBQUM1QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRTtLQUNiLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQztLQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7S0FDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxnQkFBZ0IsQ0FBQSxDQUFFO09BQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0dBQzVCLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBO0FBQ25DLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsUUFBUSxDQUFBLENBQUU7QUFDdEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7QUFDdkIsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFDO0FBQ3JCLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtDQUNiLENBQUM7O0FBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBO0FBQ3JELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxHQUFHLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQTtBQUNyRSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ3JCLENBQUE7O0FBRUEsQ0FBQSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ25DLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRTtHQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFFO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsSUFBSSxDQUFDO0tBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDO0tBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRztBQUNmLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRTtLQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFFOztBQUVkLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxRQUFRLENBQUEsQ0FBRTtLQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDakcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBOztHQUVFLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0tBQ2xGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtPQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxjQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7QUFDTixDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsSUFBSSxDQUFBLENBQUU7O0FBRTVELENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQTs7QUFFakUsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxLQUFLLENBQUEsQ0FBRTtBQUNsRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBO0FBQzVFLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQSxDQUFFO0tBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUU7QUFDYixDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUE7QUFDMUQsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBOztHQUVoRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUM7R0FDRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQzs7R0FFbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtDQUNuRCxDQUFDOztBQUVELENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLFFBQVEsQ0FBQztBQUN4RCxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxRQUFRLENBQUEsQ0FBRTtBQUM1QyxDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUEsQ0FBRTtDQUNyRSxDQUFDOztBQUVELENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUM1QyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBO0FBQ2pDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLFFBQVEsQ0FBQztBQUM5RCxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLGFBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxRQUFRLENBQUEsQ0FBRTtBQUNsRCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFO0tBQ25CLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7S0FDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFO0dBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUM7QUFDL0IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsRUFBRSxDQUFDO0tBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQztBQUM3QixDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJOztBQUU3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxNQUFNLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNqQixDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxRQUFRLENBQUM7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRTtBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxFQUFFLENBQUM7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBO0FBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxRQUFRLENBQUEsQ0FBRTtBQUNqRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsTUFBTSxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDakIsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUNsRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBRTtPQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsUUFBUSxDQUFDO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBRTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQztTQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFDO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxNQUFNLENBQUEsQ0FBRTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFO0FBQ2hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxHQUFHLENBQUM7QUFDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFBO0FBQ25FLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUE7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUE7QUFDdkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQTtBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBO09BQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFFO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE1BQU0sQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUM7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDdkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxNQUFNLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNqQixDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUc7QUFDeEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBRztBQUN4RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLFFBQVEsQ0FBQztLQUMxRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUU7QUFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUU7QUFDckUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7O0FBRXBFLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBRTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBO0FBQy9GLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUE7QUFDckcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQztBQUN2RSxDQUFBLENBQUEsQ0FBQTs7R0FFRSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFFO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDakYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDekcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsTUFBTSxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQTtLQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE9BQU8sQ0FBQztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxLQUFLLENBQUEsQ0FBRTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ00sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7T0FDN0YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxLQUFLLENBQUEsQ0FBRTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLEtBQUssQ0FBQSxDQUFFO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7T0FDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUM7QUFDbkcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxNQUFNLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNqQixDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLE1BQU0sQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtPQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE1BQU0sQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2pCLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBRTs7QUFFL0gsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDWixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFFO0tBQ1YsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBRTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLGFBQWEsQ0FBQSxDQUFFO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxJQUFJLENBQUM7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ3hGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEVBQUUsQ0FBQztBQUN2QixDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEVBQUUsQ0FBQztBQUNwQixDQUFBLENBQUEsQ0FBQTs7R0FFRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDOztBQUVwRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBRTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFO0FBQzdFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUM3RixDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsS0FBSyxDQUFBLENBQUU7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLEtBQUssQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7O0dBRUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQzs7QUFFNUQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxVQUFVLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxFQUFFLENBQUM7QUFDdkIsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7S0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdEIsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtLQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQztBQUNqRyxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0dBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ3JELENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxNQUFNLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0NBQ2YsQ0FBQzs7QUFFRCxDQUFBLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDdEMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0dBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDO0dBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtPQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUM7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQztBQUNwRCxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUE7Q0FDbkMsQ0FBQzs7QUFFRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7O0FBRTFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRzs7Ozs7Ozs7OztFQ3R3QmpCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUFULENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM3RCxDQUFBLENBQUFBLFNBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEJBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQkEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLE9BQUEsQ0FBQSxDQUFBLENBQWtCQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3BGLENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQy9CLENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNuQyxDQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDN0IsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWM7QUFDdkMsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDakMsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlO0VBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBaUQ7RUFDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHUSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBNEQ7RUFDN0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUE0RDtFQUMzRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQW9CO0VBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFxQjtFQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXFDO0FBQzdELENBQUEsQ0FBQW5CLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRztBQUM1RCxDQUFBLENBQUEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUtBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQztFQUN0RSxDQUFDO0FBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQztNQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBRztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBRTtNQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0VBQy9CLENBQUM7QUFDRCxDQUFBLENBQUEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLGFBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLG1CQUFtQixDQUFDO01BQzVDLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQztNQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsQ0FBQyxHQUFHLENBQUM7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRztFQUNkLENBQUM7RUFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsYUFBYSxDQUFDO1VBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBRSxFQUFFLENBQUM7QUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtFQUNuQixDQUFDO0FBQ0QsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDaEcsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztFQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFJQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtNQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO01BQ3hCQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFDLE9BQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUM7QUFDbEcsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO01BQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsSUFBSSxDQUFDO01BQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGlCQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQztNQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQjtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFFO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE9BQU8sQ0FBQztFQUMzQyxDQUFDO0FBQ0QsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlO0VBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzlCLENBQUEsQ0FBQTtFQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsRUFBRSxDQUFDO1VBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxFQUFFLENBQUM7QUFDbEQsQ0FBQSxDQUFBO0VBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRTtNQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLElBQUksQ0FBQztBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtXQUNWLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO1VBQy9CLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxJQUFJLENBQUM7V0FDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQztBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUMvRCxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQywwQ0FBMEMsQ0FBQztBQUN4RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2YsQ0FBQSxDQUFBO0VBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLFFBQVEsQ0FBQztBQUMzRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUU7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUU7a0JBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTJCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUMsQ0FBQztBQUNoSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQ3ZDLENBQUEsQ0FBQTtFQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRTtVQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxJQUFJLENBQUM7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDckUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZb0IsVUFBQSxDQUFBLENBQWMsQ0FBQyxHQUFHLENBQUM7a0JBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUNwRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1VBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBRTtjQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUNoRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsSUFBSSxDQUFDO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsSUFBSSxDQUFDO01BQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNyQixDQUFBLENBQUE7RUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7RUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87RUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0VBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0VBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtFQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7RUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztFQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7RUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0VBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtFQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7RUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0VBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWU7RUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCO0FBQzNDLENBQUEsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFFO01BQzlELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO1VBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxHQUFHLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQztBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztVQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQztBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07Y0FDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQztBQUMvRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2NBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTRCLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFDO0FBQ3hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtjQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFDO0FBQ3RFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7Y0FDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQztBQUM1RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07Y0FDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFDO0FBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtjQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTZCLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFDO0FBQ3pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO2NBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUM7QUFDdEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO2NBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQztBQUN0RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07Y0FDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTJCLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFDO0FBQ3ZFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztjQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdDLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFDO0FBQzVFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtjQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTZCLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFDO0FBQ3pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtjQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQztBQUM5RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtjQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0MsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDO0FBQzNHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtjQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0MsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUM7VUFDNUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFDO0FBQzFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLFdBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUU7QUFDdkYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQztBQUM1RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO01BQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2hCLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUU7QUFDdEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztVQUNILENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztVQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztBQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUc7Y0FDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO1VBQ3hCLENBQVM7T0FDSjtBQUNMLENBQUEsQ0FBQTtBQUNBLENBQUE7Ozs7Ozs7Ozs7QUNyTUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDZ0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtDQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBR25ELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFpRDtDQUNoRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBR1EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWlCO0NBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBaUI7Q0FDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFpQjtDQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUE0RDtDQUM3RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQW9CO0NBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBcUM7Q0FDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFxQztDQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBR1MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWlCO0NBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBaUI7Q0FDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBbUI7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUc7QUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDM0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7Q0FDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsV0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNqSCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFVBQVUsQ0FBQztLQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxJQUFJLENBQUM7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEdBQUcsQ0FBQztBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sY0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUU7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxJQUFJLENBQUM7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEdBQUcsQ0FBQztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzdFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLGVBQWUsQ0FBQzthQUN4RSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQzthQUNyRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7U0FDMUIsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFFO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7aUJBQ1IsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEVBQUUsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLE9BQU8sQ0FBQzthQUNyRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07YUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFFBQVEsQ0FBQztxQkFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO3FCQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87cUJBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUzt5QkFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO3FCQUNvQjtpQkFDSixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsRUFBRSxDQUFDO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDQSxDQUFTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsV0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsVUFBVSxDQUFDO0FBQzdJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxFQUFFLENBQUM7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFDO0FBQzFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxRQUFRLENBQUM7U0FDNUksQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLEVBQUUsQ0FBQztBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO2lCQUNSLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUzthQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUMsQ0FBQztpQkFDeEQsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO2lCQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO3FCQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztTQUM1QixDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUk7aUJBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQztBQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBRTtpQkFDUixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsV0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxTQUFTLENBQUM7QUFDekYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixNQUFNLENBQUEsQ0FBQSxDQUFHO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJO2lCQUNBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsY0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQztBQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7aUJBQ2dCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxXQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLFNBQVMsQ0FBQztBQUN6RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE1BQU0sQ0FBQSxDQUFBLENBQUc7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsSUFBSSxDQUFDO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxTQUFTLENBQUM7QUFDN0csQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsT0FBTyxDQUFBLENBQUU7YUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsSUFBSSxDQUFDO1NBQ3hDLENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUNoRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsSUFBSSxDQUFDO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUEsQ0FBRTthQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLElBQUksQ0FBQztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ0EsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxZQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDO0FBQ3ZFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLENBQUMsU0FBUyxDQUFDO0FBQ25FLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtpQkFDZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFdBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLFlBQVksQ0FBQztBQUNwRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE1BQU0sQ0FBQSxDQUFBLENBQUc7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxJQUFJLENBQUM7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxZQUFZLENBQUM7QUFDeEgsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLE9BQU8sQ0FBQSxDQUFFO2FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsWUFBWSxDQUFDO0FBQ3hILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsSUFBSSxDQUFDO2FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLGNBQWMsQ0FBQztBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztTQUMxQixDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLGVBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUMsZUFBZSxDQUFDO0FBQ25FLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2lCQUNnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsV0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsZUFBZSxDQUFDO0FBQ3ZHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsTUFBTSxDQUFBLENBQUEsQ0FBRztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixjQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF5QixDQUFDLGVBQWUsQ0FBQztBQUNoRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7aUJBQ2dCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxXQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRSxlQUFlLENBQUM7QUFDdkcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixNQUFNLENBQUEsQ0FBQSxDQUFHO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO2FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsZUFBZSxDQUFDO0FBQzNILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLE9BQU8sQ0FBQSxDQUFFO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLFVBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUE7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBRTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLGVBQWUsQ0FBQztBQUMzSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsSUFBSSxDQUFDO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDO0FBQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTthQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7YUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7U0FDekQsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQzthQUN0RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7QUFDekUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLElBQUksQ0FBQztBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQ2xHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsT0FBTyxDQUFBLENBQUU7YUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUU7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUNsRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDO1NBQy9GLENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO2FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBRTtBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLGVBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQztBQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtxQkFDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7aUJBQ2hCLENBQUMsR0FBRyxDQUFDO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztBQUN4RyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQSxDQUFFO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEVBQUUsQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO3FCQUNvQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUMxRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7c0JBQ3FCO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDeEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2lCQUNnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtpQkFDZCxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUM7QUFDL0csQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO1NBQ2pELENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztBQUNwRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQ3hHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxJQUFJLENBQUM7U0FDakMsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUk7aUJBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7QUFDcEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsNEJBQTRCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztxQkFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLE1BQU0sQ0FBQSxDQUFBLENBQUc7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7YUFDakcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQy9GLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxJQUFJLENBQUM7U0FDakMsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUNqQixJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsRUFBRSxDQUFDO2FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLGtCQUFrQixDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsSUFBSSxDQUFDO1NBQ2hDLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFVBQVUsQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUM7QUFDaEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxJQUFJLENBQUM7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsS0FBSyxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLElBQUksQ0FBQztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7U0FDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUM7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLGtDQUFrQyxDQUFDO0FBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFdBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtTQUNuRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ3BLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDcEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDO0FBQ25FLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07U0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsSUFBSSxDQUFDO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFlBQVksQ0FBQSxDQUFBLENBQUc7U0FDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLEdBQUcsQ0FBQSxDQUFFO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtjQUNoQjthQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTthQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUEsQ0FBQSxDQUFHO1NBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsR0FBRyxDQUFBLENBQUU7U0FDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQzVFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtTQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7U0FDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUM7U0FDakUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO1NBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtTQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQztTQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUNoSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLElBQUksQ0FBQSxDQUFFO0FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO2FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUscUJBQXFCLENBQUM7YUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2NBQ2E7YUFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUI7YUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtTQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztTQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7U0FDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsTUFBTSxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQSxDQUFFO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtxQkFDM0MsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQztBQUMvSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2tCQUNpQjtpQkFDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7cUJBQ3RCLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQixRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDO0FBQ2pJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7aUJBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBSSxjQUFjLENBQUEsQ0FBRTtxQkFDaEIsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQztBQUMvSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7c0JBQ3FCO3FCQUNELE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLElBQUksQ0FBQztBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUMvRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7aUJBQ3ZJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUM7QUFDNUYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO2lCQUNoQixDQUFDLEdBQUcsQ0FBQztpQkFDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDL0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSwyQkFBMkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtpQkFDbEcsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUM7QUFDcEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUU7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLElBQUksQ0FBQztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLEtBQUssQ0FBQztBQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRTthQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxPQUFPLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUN2RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRTthQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxPQUFPLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxLQUFLLENBQUM7QUFDckUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUU7YUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDdEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUU7YUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUN0RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRTthQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7U0FDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsY0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7U0FDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUEsQ0FBRSxDQUFDLFdBQVcsQ0FBQSxDQUFFO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTJCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDakcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO1NBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxlQUFlLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO1NBQzlILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO1NBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO1NBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsT0FBTyxDQUFBLENBQUUsQ0FBQyxXQUFXLENBQUEsQ0FBRTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQ2pHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFO1NBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7U0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxFQUFFLENBQUM7YUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxFQUFFLENBQUM7U0FDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsRUFBRSxDQUFDO1NBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO2FBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFdBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDbkYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7U0FDakQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtTQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBRTthQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUU7YUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFFO2lCQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxJQUFJLENBQUM7YUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLCtCQUErQixDQUFDO0FBQ2hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxPQUFPLENBQUEsQ0FBRTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFNBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxTQUFTLENBQUEsQ0FBRTtBQUMvRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBRTtpQkFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLE9BQU8sQ0FBQztBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBRTtTQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO1NBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEtBQUssQ0FBQztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBRTtpQkFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztpQkFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxRQUFRLENBQUM7aUJBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO3FCQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUM7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2NBQ2E7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUNoRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsUUFBUSxDQUFDO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxPQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUM7YUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO2lCQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7aUJBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQjtBQUNqRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2tCQUNpQjtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsR0FBRyxDQUFDO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFHO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsVUFBVSxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDO0FBQ3JGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxVQUFVLENBQUM7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7U0FDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsUUFBUSxDQUFBLENBQUU7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsV0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQztBQUNuRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWU7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO0FBQzFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxPQUFPLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsRUFBRSxDQUFBLENBQUU7YUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDeEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsV0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQztBQUN2RyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtjQUNhO2FBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFdBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFDO0FBQ3pHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ3RFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFdBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUM7QUFDdkcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxXQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFDO0FBQ3ZHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsRUFBRSxDQUFDO1NBQ3RFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO1NBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7U0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTzthQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO1NBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQzNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJO2FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLE1BQU0sQ0FBQztBQUMxSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsUUFBUSxDQUFDO0FBQ2pHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO2lCQUNyRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO2lCQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFDLE9BQU8sQ0FBQztBQUNwRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsV0FBVyxDQUFBLENBQUU7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7aUJBQ3ZGLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ2hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDckcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUM7aUJBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLE9BQU8sQ0FBQztBQUN4RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsTUFBTSxDQUFBLENBQUEsQ0FBRztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTthQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQztBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDekYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtTQUNaLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQzthQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7U0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsRUFBRSxDQUFDO1NBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFDO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtTQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUM7QUFDdkcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUN0SCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7QUFDQSxDQUFBcUIsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFVO0FBQy9CLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtDQUNBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFVLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDMUI7Ozs7Ozs7Ozs7RUNsckJBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUFyRCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0JBLFNBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBMEJBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxXQUFBLENBQUEsQ0FBQSxDQUFzQkEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZUEsU0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQTBCQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsWUFBQSxDQUFBLENBQUEsQ0FBdUJBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQkEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWVBLFNBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQWVBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0VBQ3hQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQWdCO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQ1EsY0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBRVQsU0FBTyxDQUFDO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQ2dCLGFBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUVoQixTQUFPLENBQUM7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDaUIsa0JBQUEsQ0FBQSxDQUFzQixDQUFBLENBQUVqQixTQUFPLENBQUM7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDa0IsYUFBQSxDQUFBLENBQW1CLENBQUEsQ0FBRWxCLFNBQU8sQ0FBQztFQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHbUIsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWlCO0VBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNuQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztFQUN0RyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHb0IsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWlCO0VBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNwQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztFQUN0RyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHNkIsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWlCO0VBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUM3QixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztFQUN0RyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHOEIsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXVCO0VBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUM5QixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztFQUN4SCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHK0IsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWlCO0VBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMvQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0VBQ3RILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0VBQzVILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0VBQ3RHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0VBQ2xILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztFQUNwSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztFQUM1SCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0VBQzFILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0FBQzVHLENBQUE7Ozs7Ozs7Ozs7OztBQ3hCQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNzRCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtDQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBR3JELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFxQztDQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDNUcsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFDO0tBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFFO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE1BQU0sQ0FBQztBQUNuRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLEdBQUcsQ0FBQztBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsR0FBRyxDQUFDO1NBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsYUFBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsSUFBSSxDQUFDO1NBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLGFBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztTQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQztBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztTQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDO1NBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUM7U0FDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQztBQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87U0FDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsT0FBTyxDQUFDO0FBQ3JFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxPQUFPLENBQUM7QUFDckUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE9BQU8sQ0FBQztBQUNyRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUMsQ0FBQztTQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLGFBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO1NBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxhQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7U0FDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsT0FBTyxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsT0FBTyxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxhQUFhLENBQUEsQ0FBQSxDQUFHO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLE9BQU8sQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksaUJBQWlCLENBQUEsQ0FBQSxDQUFHO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLE9BQU8sQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksY0FBYyxDQUFBLENBQUEsQ0FBRztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxPQUFPLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUc7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxPQUFPLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUc7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxRQUFRLENBQUM7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBO0FBQ0EsQ0FBQXFELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUs7QUFDckIsQ0FBQUQsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUs7QUFDdkI7Ozs7Ozs7Ozs7O0FDdEVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtDQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBR3ZELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFxQztDQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDNUcsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUM7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFBLENBQUEsQ0FBRztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUU7U0FDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUUsUUFBUSxDQUFDO0FBQ2xGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLGFBQWEsQ0FBQSxDQUFFO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7U0FDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUEsQ0FBQSxDQUFHO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLE9BQU8sQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRztBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLE9BQU8sQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksYUFBYSxDQUFBLENBQUEsQ0FBRztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxPQUFPLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLGlCQUFpQixDQUFBLENBQUEsQ0FBRztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxPQUFPLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLGNBQWMsQ0FBQSxDQUFBLENBQUc7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsT0FBTyxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsT0FBTyxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsUUFBUSxDQUFDO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTtBQUNBLENBQUF1RCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU07QUFDdkIsQ0FBQUQsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU07QUFDeEI7Ozs7Ozs7Ozs7O0FDdERBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN2QixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFDO0tBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFFO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxNQUFNLENBQUM7QUFDbkYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxVQUFVLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLElBQUksQ0FBQztBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7U0FDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxhQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsYUFBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLGFBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsYUFBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7QUFDQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU07QUFDdkIsQ0FBQUQsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU07QUFDeEI7Ozs7Ozs7Ozs7O0FDaENBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBU0MsaUJBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRTtBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssV0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEdBQUc5QyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFNLENBQUEsQ0FBRSxTQUFTLENBQUM7QUFDcEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtTQUNqRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDZCxDQUFBO0FBQ0EsQ0FBQTZDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFlO0FBQ2pDOzs7Ozs7Ozs7Ozs7Ozs7OztBQ1hBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztHQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7S0FDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtPQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQyxtQ0FBbUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDO0FBQy9FLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFFO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7S0FDYixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtBQUNBLENBQUEsV0FBYyxDQUFBLENBQUEsQ0FBRztBQUNqQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWM7R0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0dBQzdCLENBQUc7QUFDSCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUU7R0FDM0IsQ0FBRztBQUNILENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFO0dBQzFCLENBQUc7QUFDSCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHO0dBQ3hCLENBQUc7QUFDSCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0dBQ3RCLENBQUc7QUFDSCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0dBQ3RCLENBQUc7QUFDSCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtHQUN2QixDQUFHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsbUJBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBRztHQUNoQyxDQUFHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0dBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBRTtLQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7R0FDcEMsQ0FBRztBQUNILENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7R0FDckUsQ0FBRztBQUNILENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3ZCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDbkMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMzQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUNqRCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUNqRCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ2pDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUU7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0dBQzlDLENBQUc7QUFDSCxDQUFBLENBQUEsQ0FBRSxvQkFBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUU7S0FDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtHQUNqRCxDQUFHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQThCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUU7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtHQUNyRCxDQUFHO0dBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRztHQUMxQixDQUFHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLGNBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztHQUM5QyxDQUFHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNULENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7R0FDeEIsQ0FBRztBQUNILENBQUEsQ0FBQSxDQUFFLG9CQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87R0FDcEMsQ0FBRztHQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUc7R0FDN0IsQ0FBRztHQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHO0dBQzlCLENBQUc7QUFDSCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM3QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0dBQzFCLENBQUc7R0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUc7QUFDZCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNSLENBQUEsQ0FBQSxDQUFFLG9CQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUc7R0FDaEMsQ0FBRztHQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtLQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQTtHQUMzQixDQUFHO0dBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0tBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBO0dBQzNCLENBQUc7R0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0tBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtHQUNwQixDQUFHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDUixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRztBQUN2QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhO0FBQzNDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ3ZDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7R0FDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQztHQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFlBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFDO0FBQzFFLENBQUEsQ0FBQSxDQUFFLHNCQUFzQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFHO0dBQzVCLENBQUc7QUFDSCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0dBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDRixDQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7QUN6SEEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7QUFDQSxDQUFBLE9BQWMsQ0FBQSxDQUFBLENBQUc7QUFDakIsQ0FBQSxDQUFBLENBQUUsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtBQUN2RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUM7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7T0FDekMsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDbEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO1NBQ2pGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO1NBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0EsQ0FBSztHQUNMLENBQUc7R0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO1dBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUM7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ2pCLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO1dBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO1NBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztTQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7O0FDcERBLENBQUEsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxHQUFHNUQsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDNUIsQ0FBQSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBRSxHQUFHUSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTs7QUFFakQsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxjQUFjLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUc7QUFDZixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDVixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ1osQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ1YsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ1osQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ1YsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDWCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7R0FDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0YsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxXQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sa0JBQWtCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDZCxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFO0dBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDbEQsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0dBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0dBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLEdBQUcsQ0FBQyxDQUFBO0FBQ3hDLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxHQUFHLENBQUM7QUFDbEMsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLGlDQUFpQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9DLENBQUEsQ0FBRSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7QUFDckgsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdEIsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDMUQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFFO0FBQ3ZILENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUM1QixDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0dBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtPQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUE7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUc7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQztBQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsU0FBUyxDQUFBLENBQUU7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFFO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO09BQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7T0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sWUFBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUE7TUFDZjtBQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBRTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBRztBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQztPQUN2RCxDQUFPO09BQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtPQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxZQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7SUFDRyxDQUFBO0FBQ0gsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM3QixDQUFBLENBQUEsQ0FBRSxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3pDLENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7SUFDUixDQUFBO0FBQ0gsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQ1QsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxVQUFVLENBQUEsQ0FBRTtHQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7S0FDekQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUE7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksY0FBYyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQy9FLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLFVBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2QixDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztHQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLDJCQUEyQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7S0FDdEUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtPQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ3ZFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7S0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0FBQ0EsQ0FBQSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtDQUM5QixDQUFDO0FBQ0QsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0I7QUFDeEIsQ0FBQSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF5QixDQUFBO0tBQzFELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFO09BQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO09BQ0wsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUE7QUFDeEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7S0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtLQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdELENBQUE7QUFDeEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLFdBQVcsQ0FBQSxDQUFFLENBQUE7T0FDdEMsQ0FBTyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtELENBQUE7QUFDckYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRTtTQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFDLENBQUE7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO09BQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFDO1dBQ0osQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7V0FDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQztBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7V0FDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUE7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO09BQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUM7V0FDSixDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7V0FDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQztBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtXQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUE7QUFDcEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFDO1NBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFDO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtTQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUM7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtTQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUE7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLE1BQU0sQ0FBQyxDQUFBO0tBQ2xDLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtPQUN0RCxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNKLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7U0FDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUE7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsbUJBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUE7U0FDcEI7U0FDQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixDQUFBLENBQUUsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBO0FBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLE1BQU0sQ0FBQSxDQUFFO1dBQ2hDLEtBQUssQ0FBQSxDQUFFLENBQUE7VUFDUixDQUFBO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxTQUFTLENBQUMsQ0FBQTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLE1BQU0sQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUE7UUFDVCxDQUFBO0FBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQTtBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7R0FDWCxDQUFHO0dBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0YsQ0FBQSxDQUFBO0NBQ0EsQ0FBQztBQUNELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUI7R0FDdkIsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxZQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBRTtPQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxTQUFTLENBQUM7R0FDbEUsQ0FBRztHQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNGLENBQUEsQ0FBQTtDQUNBLENBQUM7QUFDRCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCO0FBQzVCLENBQUEsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtPQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO09BQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO09BQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGtCQUFrQixDQUFDLENBQUEsQ0FBQSxDQUFBO1dBQ2YsQ0FBQyxZQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxJQUFJLENBQUM7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQyxDQUFBO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQywwQkFBMEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxrQkFBa0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDO0dBQzlGLENBQUc7R0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDRixDQUFBLENBQUE7Q0FDQSxDQUFDO0FBQ0QsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCO0dBQ2xCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QyxDQUFBO0FBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDakYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUM7U0FDSixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUE7U0FDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFDO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUE7U0FDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDRTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUE7QUFDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0I7R0FDcEMsQ0FBRztHQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNGLENBQUEsQ0FBQTtDQUNBLENBQUM7QUFDRCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0I7QUFDcEIsQ0FBQSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFFO0FBQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7T0FDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQTtPQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE4QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxRQUFRLENBQUM7R0FDNUYsQ0FBRztHQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0YsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ2xFLENBQUEsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTRCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3pFLENBQUEsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNkIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNEMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUNwRixDQUFBLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQzlELENBQUEsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNkMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUM5RSxDQUFBLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQTtBQUM1RSxDQUFBLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE0QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3hELENBQUEsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUIsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUMvRCxDQUFBLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0MsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDakYsQ0FBQSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN4RCxDQUFBLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBO0FBQzNELENBQUEsTUFBYyxDQUFBLENBQUEsQ0FBRztBQUNqQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ1osQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLGtCQUFrQixDQUFDO0FBQ3pELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlO0dBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNGLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7QUNuVkEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRSxXQUFXLENBQUEsQ0FBRSxDQUFBO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtxQkFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQVgsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakIsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxXQUEwQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDN0IsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxPQUFzQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7O0NDV3pCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxZQUFZLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUU7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsSUFBSSxDQUFDO0FBQ2hFLENBQUEsQ0FBQSxDQUFBLENBQUE7O0NBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDSixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRTtHQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckIsQ0FBQSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxxQkFBcUIsQ0FBQSxDQUFFO0FBQ3pDLENBQUEsQ0FBQSxDQUFFLGNBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsTUFBTSxDQUFBLENBQUU7QUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO1FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUM7R0FDbkQsQ0FBRztBQUNILENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNQLENBQUEsQ0FBQSxDQUFFLGNBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsTUFBTSxDQUFBLENBQUU7QUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFDLE1BQU0sQ0FBQztHQUM3QyxDQUFHO0FBQ0gsQ0FBQTs7Q0FFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUNyQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7QUFDcEQsQ0FBQTs7Q0FFQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7R0FDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN4QixDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxZQUFZLENBQUEsQ0FBQSxDQUFHO0FBQ3hCLENBQUEsQ0FBQSxDQUFFLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQztBQUM5QixDQUFBO0FBQ0EsQ0FBQWdFLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQzdCLENBQUFBLFFBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJOztBQUUxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7O0FBRXhDLENBQUEsWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQzFDLENBQUEsWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksR0FBRyxDQUFDO0FBQ3ZDLENBQUEsWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTOztBQUVoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFOztDQUU1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtLQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsa0VBQWtFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sUUFBUSxDQUFDO0FBQzdHLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTs7QUFFQSxDQUFBLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUscUJBQXFCLENBQUEsQ0FBRTtHQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtHQUNoQixDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQjtHQUM5QixDQUFHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO09BQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLGlHQUFpRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3pJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLEdBQUcsQ0FBQSxDQUFBLENBQUc7QUFDN0IsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUMsQ0FBQzs7Q0FFRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXOztBQUUvQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7S0FDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUN6QixDQUFBLENBQUEsQ0FBQTs7R0FFRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0NBQ3RELENBQUM7O0FBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQyxDQUFBLENBQUU7QUFDckUsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFO0tBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLCtFQUErRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDbkgsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3hCLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtDQUNiLENBQUM7O0NBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7S0FDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CO0dBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWE7QUFDM0IsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxlQUFlLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLGVBQWUsQ0FBQSxDQUFBLENBQUc7QUFDcEUsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztDQUMvQixDQUFDOztDQUVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0dBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7R0FDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEUsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssT0FBTyxDQUFDOztBQUVsQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0dBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0tBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQztRQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7O0FBRWhCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBRTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUM7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDakYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7S0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLElBQUksQ0FBQzs7R0FFMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7O0FBRWhCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxJQUFJLENBQUM7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtLQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLEdBQUcsQ0FBQztLQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO09BQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUM1QyxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7Q0FDYixDQUFDOztDQUVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7QUFDdkQsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDO0FBQ1AsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNaLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFROztHQUVaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQzs7QUFFekIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ3pCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtLQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssU0FBUyxDQUFBLENBQUU7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO21CQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQzs7QUFFbkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsSUFBSSxDQUFDO0FBQzNCLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0tBQ2xDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0EsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLFFBQVEsQ0FBQztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQztBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLE1BQU0sQ0FBQztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxNQUFNLENBQUEsQ0FBRTtBQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQThDLENBQUE7MkJBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQTtBQUM5RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBDLENBQUE7QUFDcEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLGdCQUFnQixDQUFDO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE2QjtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07T0FDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQyxDQUFDO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDZixDQUFBOztDQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtHQUN4RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztDQUNsRCxDQUFDOztDQUVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXOztDQUU5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO09BQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztLQUNyRCxDQUFLOztBQUVMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsV0FBVyxDQUFBLENBQUEsQ0FBRztBQUN2QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQztBQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFDO09BQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQztBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDO0FBQ3RELENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0dBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtHQUMvRixDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQztBQUN2QyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUM3QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ3hCLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNoQixDQUFBOztDQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0dBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUN6QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDO0FBQ2hELENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtDQUNiLENBQUM7O0NBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUE7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtPQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUM7QUFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDakIsQ0FBSzs7QUFFTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUE7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7T0FDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7O09BRS9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQzs7QUFFN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztPQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7O0FBRW5CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLElBQUksQ0FBQztPQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTs7T0FFYixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQztXQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7Y0FDL0I7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztXQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQztBQUN4RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7U0FDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFFOztBQUVyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUU7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0FBQ3JFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksZ0JBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7YUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQzthQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztTQUVRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTs7U0FFYixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztXQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtjQUNUO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsUUFBUSxDQUFDO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQztXQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUM7O0FBRWhDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztXQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQ3pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDakIsQ0FBSzs7Q0FFTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjOztDQUVsRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUE7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFDOztBQUU5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO09BQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTs7QUFFbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssU0FBUyxDQUFBLENBQUU7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtXQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFDO1NBQy9CLENBQVMsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUM7YUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO1NBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUM7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBRztBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUM7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxHQUFHLENBQUM7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsZ0JBQWdCLENBQUM7U0FDekMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxJQUFJLENBQUM7O0FBRTlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsU0FBUyxDQUFDO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxTQUFTLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUU7V0FDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUNqQixDQUFLOztBQUVMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUU7QUFDMUMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87O0dBRTNCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBRTs7QUFFYixDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxJQUFJLENBQUM7R0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUU7O0FBRWIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsVUFBVSxDQUFDOztBQUV0RSxDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO0FBQzNFLENBQUE7O0NBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtHQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsSUFBSSxDQUFDO0NBQ3JDLENBQUM7O0NBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtHQUNoRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsS0FBSyxDQUFDO0NBQ3RDLENBQUM7O0FBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRTtBQUNyRCxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsSUFBSSxDQUFDO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07S0FDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLGFBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsSUFBSSxDQUFDO0FBQzVDLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQzs7QUFFRCxDQUFBLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhO0NBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPOztBQUUzQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLElBQUksQ0FBQzs7QUFFakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQztBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssU0FBUyxDQUFBLENBQUU7T0FDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFDO0FBQ1YsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLFVBQVUsQ0FBQSxDQUFBLENBQUc7QUFDMUQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsR0FBRyxDQUFBLENBQUU7Q0FDbEUsQ0FBQzs7QUFFRCxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUM1QixDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUM7R0FDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0tBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQztBQUNwQixDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDYixDQUFBOztBQUVBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFO0dBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0tBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztHQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ1osQ0FBQTs7Q0FFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtHQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO0FBQ2pDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQztBQUN0QyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDWixDQUFBOztBQUVBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUU7R0FDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxVQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLFFBQVEsQ0FBQztPQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztLQUVJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLFFBQVEsQ0FBQSxDQUFBLENBQUc7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7QUFDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLGFBQWEsQ0FBQztBQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ00sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUM7S0FDdkM7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQThCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDM0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7T0FDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE2QixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDO0FBQzNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNKLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyw2QkFBNkIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUU7QUFDaEUsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0tBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE4QixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQ3BFLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTs7Q0FFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBOEIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDeEUsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0EsQ0FBRyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDOUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxZQUFZLENBQUM7QUFDdkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07S0FDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMscUVBQXFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sT0FBTyxDQUFDO0FBQy9HLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTs7Ozs7Ozs7Ozs7QUM5ZUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFlBQVksQ0FBQSxDQUFBLENBQUc3RCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQTtBQUNyQixDQUFBLENBQUEsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxHQUFHUSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtFQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtJQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQTtBQUMvQixDQUFBLENBQUEsQ0FBQyxHQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUEsQ0FBRSxjQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFdBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFJQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxHQUEyQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMxRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sZUFBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBSUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsR0FBMkIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtFQUNsRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7SUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtVQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7SUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFFO01BQ3JHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtNQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtFQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUI7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWM7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBRSxZQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsRUFBRSxDQUFDO0lBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO01BQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7UUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBRTtVQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7SUFDQSxDQUFHO0lBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO01BQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUE7TUFDZixDQUFLLENBQUE7QUFDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztRQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0EsQ0FBRztJQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRTtNQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7VUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTtZQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO1FBQzlCLENBQU8sQ0FBQTtNQUNQLENBQUs7SUFDTCxDQUFHO0FBQ0gsQ0FBQSxDQUFBLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBQSxDQUFHO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxZQUFZLENBQUE7SUFDdkIsQ0FBRztBQUNILENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFO01BQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFO1FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtNQUMzQixDQUFLO01BQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0c7QUFDSCxDQUFBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0lBQ1gsQ0FBRztBQUNILENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7TUFDZEMsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtVQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDdEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtZQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7WUFDZixDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtZQUNWLENBQUMsc0JBQXNCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO1dBQzNCLENBQUE7VUFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztVQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtVQUNmLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFHO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNILENBQUMsb0JBQW9CLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLG9CQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2dCQUMvRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7TUFDQSxDQUFLO0FBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWM7TUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO1VBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUM7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQTtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBO1dBQ1AsQ0FBQTtRQUNULENBQU8sQ0FBQTtBQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxLQUFLLENBQUMsQ0FBQTtVQUNoRixDQUFTO1VBQ0Q7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7UUFDTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtFQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLDhCQUE4QixDQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Q0MvSTNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ04sQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDZCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQjtBQUN4QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0I7QUFDcEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQjtBQUNuQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZTtBQUNqQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDYixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQjtBQUN4QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQjtBQUN4QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWM7QUFDaEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE2QjtBQUMvQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQjtBQUNyQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNSLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEI7R0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDRixDQUFBLENBQUMsR0FBR2xCLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDTixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZTtHQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQTtBQUNqSCxDQUFBLENBQUMsR0FBR1EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUUsR0FBR08sQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRSxpQkFBaUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxHQUF1QixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBOztBQUVoQixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQztBQUM3QixDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzdCLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRWpCLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsYUFBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFO0FBQ3pDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFdBQVcsQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtLQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFJLG1CQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtPQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFDLENBQUE7QUFDbkMsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVCxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxzQkFBc0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3JILENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNyRixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksZ0JBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7R0FDakYsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0NBQ2xHLENBQUMsQ0FBQTs7QUFFRCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLFVBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzVGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7S0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3hELENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0tBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN4RCxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDcEUsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFDLENBQUE7O0FBRUQsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMxRSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtLQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDeEQsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7S0FDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3hELENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNwRSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUMsQ0FBQTs7QUFFRCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRTtBQUNyQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDckYsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQzNELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztHQUNuRixDQUFBLENBQUEsQ0FBQTtBQUNGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQyxDQUFBLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0tBQ25EO0tBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFDLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQztPQUMvRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztHQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQyxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7S0FDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0I7T0FDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7T0FDL0UsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3ZELENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQyxDQUFBOztBQUVELENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUU7QUFDdEMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssU0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDdkYsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyw0QkFBNEIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLFlBQVksQ0FBQSxDQUFFO0FBQ2xFLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNkIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsWUFBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUc7QUFDckcsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0dBQ3RFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNEIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7R0FDNUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sYUFBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE0QixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtHQUNsRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTRCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7R0FDeEUsQ0FBQSxDQUFBLENBQUE7QUFDRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFBO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUM7S0FDN0U7S0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDeEQsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFDLENBQUE7O0FBRUQsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGtCQUFrQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM1RCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0tBQzdFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM5RCxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUMsQ0FBQTs7QUFFRCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN0RSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7S0FDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN2RCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsU0FBUyxDQUFBLENBQUU7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBRSxTQUFTLENBQUMsQ0FBQTtLQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3ZELENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQyxDQUFBOztBQUVELENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUU7QUFDMUMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBRTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksY0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUM1QyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0FBQzNDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUU7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLGVBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDN0MsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0FBQy9DLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUU7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQTtLQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtPQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxXQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDdkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBO0FBQzNDLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxrQkFBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsUUFBUSxDQUFBLENBQUU7QUFDckQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUM3QixDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFNBQVMsQ0FBQSxDQUFFO0tBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQ25FLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF5QztBQUNyRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN2QyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDcEUsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNyRixDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUMsQ0FBQTs7QUFFRCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0FBQ3ZELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQThCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUM7QUFDbkcsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0dBQzNELENBQUEsQ0FBQSxDQUFBO0tBQ0UsQ0FBQyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQTtBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUE7QUFDeEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUE7S0FDckIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztLQUN6QjtLQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDdkQsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFBLENBQUc7QUFDaEIsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxtQkFBbUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztHQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUU7S0FDckcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzlELENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQyxDQUFBOztBQUVELENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGdCQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMxRCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0NBQ3pGLENBQUMsQ0FBQTs7QUFFRCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLHFCQUFxQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMvRCxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLGVBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztDQUNuSCxDQUFDLENBQUE7O0FBRUQsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0saUJBQWlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzNELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0NBQ2xGLENBQUMsQ0FBQTs7QUFFRCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxhQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUU7R0FDekMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUMsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxrQkFBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDdkYsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBOztBQUVBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sZUFBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUV4QixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRTtBQUMvQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtLQUNoRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQjtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztPQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUI7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNKLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtBQUNBLENBQUEsVUFBYyxDQUFBLENBQUEsQ0FBRztBQUNqQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1QsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ1YsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtBQUNmLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWE7QUFDZixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQjtBQUNyQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CO0FBQ3RCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QjtBQUMxQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZTtBQUNqQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWM7QUFDaEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCO0FBQ3BCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQ2xCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQ2xCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWE7QUFDZixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZTtBQUNqQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWM7QUFDaEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQ2hCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWE7QUFDZixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUI7QUFDdkIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDZCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0I7QUFDcEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQ2hCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztBQUNoQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCO0FBQ25CLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWE7QUFDZixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQjtHQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0YsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7O0FDL2dCQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFFLGNBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBR2YsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRTNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUIsQ0FBQTtBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUE7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQTtBQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF5QixDQUFBO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQyxDQUFBO0FBQ3JFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBDLENBQUE7QUFDckYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxvQkFBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFFO0FBQ25ELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQyxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUE7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUE7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQSxDQUFBO1FBQ2pGLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBO1NBQ2xCLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUM1RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQyxDQUFBLENBQUE7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLGNBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNuQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUMsQ0FBQTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUE7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUE7UUFDM0IsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUE7U0FDbEIsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQzVFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQyxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBO0tBQzlCLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN6QixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtHQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtNQUNGLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQTtPQUNqQixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUE7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUMsQ0FBQSxDQUFBO0FBQ3ZFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQztBQUN0RSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUMsQ0FBQTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUE7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0dBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDL0csQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7R0FDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQzdHLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUc7QUFDaEYsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDakUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMvRCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDMUYsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUNwQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDO0FBQ2xILENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQzVDLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxhQUFhLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUM1QyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hFLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUE7R0FDdEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFO0FBQzVDLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUE7QUFDNUMsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLGdCQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUE7QUFDL0MsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4RSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0dBQ3pHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDO0FBQ2pHLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUM1QyxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsYUFBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUE7QUFDNUMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEMsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtHQUN0RyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUM1QyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hFLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0dBQzNHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQztBQUNuRyxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUM1QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDdEUsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUMzRyxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN0RixDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUM1QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDdEUsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUMzRyxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ25GLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtBQUN6RyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0FBQ3pHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUE7QUFDVCxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtHQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFJLHFCQUFxQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM3QixDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRTtLQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUE7S0FDM0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLGNBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDcEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsc0JBQXNCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxxQkFBcUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUN4RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0dBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUkscUJBQXFCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzdCLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFO0tBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQTtLQUMzQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsY0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNwRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxzQkFBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLHFCQUFxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ3hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFNBQVMsQ0FBQSxDQUFFO0tBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ3RCLENBQUEsQ0FBQSxDQUFBO0FBQ0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQTtBQUM5RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDakY7S0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUE7QUFDMUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDMUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtLQUNwRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUE7QUFDVCxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtHQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQTtBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQTtBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEMsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7R0FDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDekUsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUE7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUMxRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQ3BDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDdEgsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFDLENBQUE7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBO01BQ0wsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ2hGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlO0FBQ3hELENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQjtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0I7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCO0tBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDSixDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUMsQ0FBQTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUE7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7ZUFDSixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7bUJBQ3pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2lCQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtlQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBO2VBQ0EsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLGNBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7ZUFDeEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsc0JBQXNCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDQSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsY0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUN4RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLHNCQUFzQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtXQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBO1dBQ0EsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLGNBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7V0FDeEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLHNCQUFzQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ3ZELENBQUEsQ0FBQSxDQUFBO1NBQ0EsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLGNBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDeEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ3RDLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtBQUNBLENBQUEsS0FBYyxDQUFBLENBQUEsQ0FBRztBQUNqQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDYixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNkLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUNiLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ2QsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDWCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ1osQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNaLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUNiLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQ2xCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QjtBQUMxQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDYixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDVixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0I7QUFDcEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNaLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDWixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CO0FBQ3RCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQ2xCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlO0FBQ2pCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQjtBQUNwQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCO0FBQ25CLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ2QsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ2IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNaLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0I7QUFDdEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7QUFDbEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWU7QUFDakIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCO0FBQ3BCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUI7QUFDbkIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWU7QUFDakIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7QUFDbEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtHQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDRixDQUFBLENBQUE7Ozs7Ozs7Ozs7QUNqVUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRWhCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsR0FBR1EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDOUIsQ0FBQSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzdELENBQUEsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxHQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtDQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLG9CQUFvQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ04sQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ1YsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNaLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0I7QUFDdEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7QUFDbEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCO0FBQ3BCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUI7QUFDbkIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNaLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0I7QUFDdEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7QUFDbEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCO0FBQ3BCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUI7QUFDbkIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7R0FDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0dBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0YsQ0FBQSxDQUFDLEdBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7R0FDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNyRCxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7R0FDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxpQkFBaUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN6QixDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUE7QUFDckMsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBO0FBQ3ZDLENBQUEsQ0FBQSxDQUFFLG1CQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUE7QUFDdEQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtHQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7QUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQzNDLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLFFBQVEsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ25HLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtLQUNaLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ3JFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUNuQyxDQUFBLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0tBQ1osQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDckUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ25DLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsUUFBUSxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLGNBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksb0JBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDNUcsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxrQkFBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0dBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksZ0JBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGFBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBRTtPQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLGdCQUFnQixDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxrQkFBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0dBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksZ0JBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGFBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBRTtPQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLGdCQUFnQixDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0dBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ3pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFNBQVMsQ0FBQSxDQUFFO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDN0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLEtBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSwwQkFBMEIsQ0FBQSxDQUFFO0FBQzNHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsZ0JBQWdCLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsS0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLDBCQUEwQixDQUFBLENBQUU7QUFDM0csQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ3pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFNBQVMsQ0FBQSxDQUFFO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07S0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0tBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUE7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQTtBQUNyQyxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUNoQyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBRSxNQUFNLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7QUFDOUIsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxLQUFLLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDOUIsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxNQUFNLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtHQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFFO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQTtLQUNMLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBO01BQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7S0FDL0Q7S0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQTtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUE7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxnQkFBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUNqRDtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQTtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUE7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxnQkFBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUNqRDtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7R0FDN0IsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUM3QixDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUE7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQTtBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7QUFDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQTtBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQTtBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFBLENBQUU7S0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFdBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7T0FDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1VBQ3ZCO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxPQUFPLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sZ0JBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUlILENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLEdBQTBCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNsRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtPQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxnQkFBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztTQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxnQkFBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtPQUMzQyxDQUFPLENBQUE7QUFDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVCxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtHQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtLQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7VUFDdkI7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE9BQU8sQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxnQkFBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsR0FBMEIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO09BQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGdCQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO1NBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLGdCQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO09BQzNDLENBQU8sQ0FBQTtBQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUE7QUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUE7QUFDL0UsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDVCxDQUFBO0FBQ0EsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE9BQU8sQ0FBQSxDQUFFO0FBQ3ZFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxlQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBO0tBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO09BQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ00sQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTtTQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDQSxDQUFLLENBQUE7R0FDTCxDQUFHO0FBQ0gsQ0FBQTtBQUNBLENBQUErQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLFFBQXVCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7QUMzUjFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUc5RCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTs7QUFFaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0NBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDTixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0I7QUFDcEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUEsQ0FBRTtHQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNGLENBQUEsQ0FBQyxHQUFHUSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtDQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsR0FBR08sQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUE7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0dBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUU7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFBLENBQUU7T0FDbkIsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQSxDQUFFO09BQ25CLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtHQUNmLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUU7QUFDeEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0dBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7S0FDTCxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7S0FDTCxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUEsQ0FBRTtLQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUU7T0FDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQTtLQUNwRCxDQUFLLENBQUE7QUFDTCxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBRSxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUNULENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFO0dBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtLQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFFO09BQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0tBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7T0FDTCxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO09BQ0wsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO09BQzVCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFO09BQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLGdCQUFnQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ0YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQTtHQUN4QyxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7S0FDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0FBQ0EsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQTtHQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDbEIsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDZixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0tBQ0wsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckIsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0tBQ0wsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckIsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFFO0FBQ3hHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7QUFDaEMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNmLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUU7S0FDMUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0osQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0tBQ0wsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckIsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0tBQ0wsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckIsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3hCLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLFNBQVMsQ0FBQSxDQUFBLENBQUc7QUFDckIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNmLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7S0FDTCxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDaEIsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNYLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDakIsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNkLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDWixDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ2pCLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQyxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7S0FDTCxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDaEIsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNkLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDWCxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ2pCLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDWixDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ2pCLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ2hCLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxjQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUU7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUU7QUFDeEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsV0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUM7QUFDMUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7UUFDZixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUViLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUEsQ0FBRTtPQUNuQixDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFBLENBQUU7T0FDbkIsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRTtPQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxXQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtLQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDSixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0tBQ0wsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0tBQ0wsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUUsQ0FBQTtHQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDSixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ3RDLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7R0FDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtLQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFFO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sY0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLHFCQUFxQixDQUFBLENBQUUsQ0FBQTtPQUM1RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7S0FDZixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO09BQ0wsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7T0FDTCxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQTtLQUMvQixDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sY0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUE7S0FDdkMsQ0FBSyxDQUFBO0dBQ0wsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNyQyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUE7QUFDeEIsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0dBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDN0csQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUNyQixDQUFBO0FBQ0EsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7QUFDM0MsQ0FBQSxDQUFBLENBQUUsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQzFDLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFO0dBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtLQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDSixDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0tBQy9CLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUE7QUFDeEIsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtLQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtLQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUE7R0FDaEIsQ0FBRyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQTtHQUNwQixDQUFHLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRTtBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtHQUN0QixDQUFHLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUE7R0FDaEIsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtLQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxvQkFBb0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDNUMsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxTQUFTLENBQUEsQ0FBRTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0FBQ0EsQ0FBQSxTQUFjLENBQUEsQ0FBQSxDQUFHO0FBQ2pCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ1gsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDWCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1QsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7R0FDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0YsQ0FBQSxDQUFBOzs7Ozs7Ozs7OztBQy9SQSxDQUFBLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUUsR0FBR2hCLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQy9DLENBQUEsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLEdBQUdRLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0NBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDdEIsQ0FBQSxDQUFBLENBQUUsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ3BCLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFNBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUE7Q0FDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQTtDQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7R0FDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEtBQUssQ0FBQSxDQUFFO09BQ2hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7R0FDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsT0FBTyxDQUFBLENBQUEsQ0FBRztLQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE1BQU0sQ0FBQSxDQUFFO09BQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7O0FBRTFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUM5QixDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxLQUFLLENBQUEsQ0FBQSxDQUFHO0tBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNYLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLE9BQU8sQ0FBQSxDQUFBLENBQUc7S0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNYLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUN4RCxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtLQUNQLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUUsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLGVBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUMxQyxDQUFBLENBQUEsQ0FBRSxlQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTs7QUFFeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUN4QyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUUsTUFBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7O0FBRTFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQ1QsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxlQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUU7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsZUFBZSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUU7O0FBRTdGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFFLENBQUE7UUFDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxZQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLENBQUE7QUFDbEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUMzRCxDQUFBO0FBQ0EsQ0FBQSxNQUFjLENBQUEsQ0FBQSxDQUFHO0FBQ2pCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0dBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0YsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7O0VDdEZBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxHQUFHUixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUMxQixDQUFBLENBQUEsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsR0FBR1EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLFdBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7RUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0VBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7SUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtNQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDOUQsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUN4RSxDQUFBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsUUFBUSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDbkcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDL0QsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBMEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0lBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7QUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO1VBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtjQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ2Y7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07VUFDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFDO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtjQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ2Y7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksZ0JBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUlDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLEdBQTBCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN0RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsZ0JBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDdkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7O0NDakRBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBR2pCLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ3JGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUdRLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBO0NBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxHQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUM7QUFDbEMsQ0FBQSxDQUFBLENBQUUsV0FBVyxDQUFBLENBQUEsQ0FBRztLQUNaLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDWixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUU7S0FDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFHO09BQ1osQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtVQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ1osQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFFO0tBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBRztPQUNaLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO09BQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDWixDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFHO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUMzQixDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFHO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUM7S0FDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7S0FDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFO09BQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUE7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNaLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFFLFVBQVUsQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQTtPQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQztBQUM5RCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUc7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFHO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsSUFBSSxDQUFBLENBQUU7T0FDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQSxDQUFFO0tBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDYixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRztBQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxNQUFNLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUE7U0FDUCxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsTUFBTSxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUE7V0FDRixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO1dBQ0wsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtXQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBO1dBQ1osQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsb0JBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFDLENBQUE7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUE7S0FDUixDQUFLLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQyxDQUFBO0tBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUc7QUFDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsTUFBTSxDQUFBLENBQUU7U0FDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDLENBQUE7U0FDM0MsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLE1BQU0sQ0FBQSxDQUFFO1dBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQyxDQUFBO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQTtXQUNGLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07V0FDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLFVBQVUsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDLENBQUE7V0FDckYsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQTtXQUNaLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUE7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUE7S0FDUixDQUFLLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE0QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ00sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQztBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGFBQWEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUE7TUFDaEI7QUFDTCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7QUMxSkEsQ0FBQSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRSxHQUFHZixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtDQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLEdBQUdRLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzVCLENBQUEsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLEVBQUUsQ0FBQSxDQUFBLENBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLEdBQTRCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLDhCQUE4QixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxpQkFBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxTQUFTLENBQUEsQ0FBRTtBQUN6RCxDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTtBQUNqRyxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFO0FBQzdDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBOEIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkQsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUU7QUFDcEQsQ0FBQSxDQUFBLENBQUUsZUFBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUMsQ0FBQTtHQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFFO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSw4QkFBOEIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUkseUJBQXlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7R0FDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBO0FBQzVELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtLQUNmLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtPQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUc7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHO0FBQ3hCLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNqRCxDQUFBO0FBQ0EsQ0FBQSxLQUFjLENBQUEsQ0FBQSxDQUFHO0FBQ2pCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQ2xCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUI7R0FDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNGLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7OztBQ3JDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHZixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQTtFQUNiLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLGVBQWUsQ0FBQSxDQUFFO0FBQ2pGLENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUVELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFFQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkIsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxVQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRTtBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzdDLENBQUEsQ0FBQTs7RUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQTs7QUFFckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0VBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBOztFQUU1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUErQjtBQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUM3QyxDQUFBLENBQUEsQ0FBQTs7RUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTJCO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUNULENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsSUFBSSxDQUFBLENBQUU7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQjtBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDcEIsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLElBQUksQ0FBQSxDQUFFO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkI7QUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7O0FDekNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztDQUVBLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDMUQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDMUIsQ0FBQSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxXQUFXLENBQUEsQ0FBRSxDQUFBLENBQUE7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNuSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2xCLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQzs7Q0FFRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3pCLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztHQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFBLENBQUU7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFHO09BQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNwQixDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUMsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLFdBQVcsQ0FBQSxDQUFFO1NBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0NBQ0E7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxHQUFHLENBQUM7R0FDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQztHQUNuSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRztBQUNwQixDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtDQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLFFBQVEsQ0FBQztBQUM3QyxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRTtHQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtPQUNuQixDQUFBLENBQUUsR0FBRyxDQUFDO09BQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7T0FDNUIsQ0FBQSxDQUFFLEdBQUcsQ0FBQztPQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7T0FDcEIsQ0FBQSxDQUFFLEdBQUcsQ0FBQztPQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO09BQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDbkIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUM7R0FDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFFLENBQUM7QUFDeEMsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxHQUFHLENBQUEsQ0FBRTtHQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUMsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQztBQUNQLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQztBQUNQLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEdBQUcsQ0FBQztBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07S0FDTCxDQUFDLEdBQUcsQ0FBQztBQUNULENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUM7R0FDeEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0NBQ2hCLENBQUM7O0FBRUQsQ0FBQSxhQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87O0FBRXJDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsYUFBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTs7QUFFdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEdBQUcsQ0FBQSxDQUFFO0dBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsTUFBTSxDQUFBLENBQUU7S0FDL0IsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUM3RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsU0FBUyxDQUFDO0FBQ25FLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQztBQUN4RSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtDQUM3QixDQUFDOztBQUVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxPQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxPQUFPLENBQUM7R0FDNUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNyQyxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLG1CQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDM0MsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUM7QUFDeEIsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLE9BQU8sQ0FBQztHQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtLQUNYLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFFO0FBQ2IsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0dBQ2xDLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtLQUNYLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFFO0FBQ2IsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0dBQ2xDLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFDO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBRTtBQUNiLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFDO0FBQ1YsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsbUJBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtHQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNuQixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtLQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7T0FDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0dBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtHQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxHQUFNLENBQUM7QUFDM0MsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsT0FBTyxDQUFDO0dBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsTUFBTSxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsUUFBUSxDQUFDO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxTQUFTLENBQUM7QUFDbkUsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxNQUFNLENBQUM7QUFDM0MsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDN0IsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0dBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQ3BELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDeEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztHQUM5QyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDO0dBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxNQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3JDLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDdEIsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQSxDQUFFO0dBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUN4QyxDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUM7QUFDVixDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0dBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtLQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUMsQ0FBQztLQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO09BQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO1NBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQztBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQztBQUNaLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ25CLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3BCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztBQUN4QyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQ25ELENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQSxDQUFFO0FBQ2xELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7S0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxHQUFHLENBQUM7QUFDeEQsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUM7QUFDVixDQUFBOztBQUVBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0dBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDOUIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQztBQUN2QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNwQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQzFDLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDbEQsQ0FBQTs7Q0FFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFBLENBQUU7R0FDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQ3RGLENBQUEsQ0FBQSxDQUFFLE9BQU8sQ0FBQztBQUNWLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtHQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsUUFBUSxDQUFDO0FBQ3BDLENBQUE7O0NBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFBLENBQUU7QUFDakQsQ0FBQTs7Ozs7Ozs7Ozs7QUNyU0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRWhCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBRSxtQkFBbUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUdRLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ3RFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBRSxzQkFBc0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxHQUE0QixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN0RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7S0FDOUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO09BQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFHO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO01BQ0s7QUFDTCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsQ0FBQSxDQUFFO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLG1CQUFtQixDQUFDLENBQUEsQ0FBQTtHQUM1QyxDQUFHLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUU7QUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQSxDQUFBO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07S0FDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNyRSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQztLQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLEVBQUUsQ0FBQztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTtJQUNKLENBQUE7O0FBRUgsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7S0FDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLFVBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQjtPQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztPQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLEtBQUssQ0FBQztBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ00sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7S0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDTixDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFFO1NBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO09BQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQTtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsSUFBSSxDQUFBLENBQUEsQ0FBRztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7U0FDdkUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQTtXQUM1QyxDQUFXLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7YUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNNLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNULENBQUE7QUFDQSxDQUFBLE1BQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7QUMxRWpCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUdoQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTs7QUFFaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0NBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDTixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUI7QUFDdkIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWU7QUFDakIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ2IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQ2hCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCO0FBQ3hCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDWixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CO0FBQ3RCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDVCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1QsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCO0FBQ3BCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CO0dBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNGLENBQUEsQ0FBQyxHQUFHUSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNKLENBQUEsUUFBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3pCLENBQUEsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLEdBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzdCLENBQUEsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsR0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUE7Q0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsR0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDWixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBR1MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDbEUsQ0FBQSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7Q0FDVixDQUFDLENBQUE7QUFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixDQUFBLENBQUUsR0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDTixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0I7QUFDcEIsQ0FBQSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUU7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQjtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQjtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCO0tBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0Q7R0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNGLENBQUEsQ0FBQyxHQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtDQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLEdBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUE7Q0FDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFLEdBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxTQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUE7Q0FDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtDQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUE7Q0FDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtDQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtDQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7Q0FDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0NBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0NBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtDQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0NBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0NBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtDQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtDQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7Q0FDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO0NBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7Q0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO0NBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtDQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7Q0FDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtDQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO0NBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7O0FBRTFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87S0FDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0tBQ3BDLENBQUs7S0FDRCxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsU0FBUyxDQUFBLENBQUU7QUFDaEQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLFdBQVcsQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxNQUFNLENBQUM7QUFDckMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLFdBQVcsQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsUUFBUSxDQUFDO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxZQUFZLENBQUM7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxLQUFLLENBQUM7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsYUFBYSxDQUFDO0FBQ25ELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsZ0JBQWdCLENBQUM7QUFDekQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLGtCQUFrQixDQUFDO0FBQzdELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsZ0JBQWdCLENBQUM7QUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxhQUFhLENBQUM7QUFDbkQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxVQUFVLENBQUM7QUFDN0MsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsWUFBWSxDQUFDO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxVQUFVLENBQUM7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsT0FBTyxDQUFDO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLGFBQWEsQ0FBQztBQUNuRCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLGdCQUFnQixDQUFDO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxZQUFZLENBQUM7QUFDakQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7RUFDL0MsQ0FBQTtBQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsYUFBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVlDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVsRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLFVBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFdkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7T0FDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBOztBQUVuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQTtHQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQTtHQUNkLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0dBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRWxCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUUvRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRWpCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDZixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLFFBQVEsQ0FBQSxDQUFFO0tBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0dBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPOztBQUU5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksWUFBWUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7R0FDakMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtHQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFFO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDM0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUN4RSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBRSxXQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLFlBQVksQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sYUFBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQTtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDQSxDQUFHLENBQUE7QUFDSCxDQUFBO0FBQ0EsQ0FBQSxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLFdBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3pDLENBQUEsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxXQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFO0dBQy9DLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDUixDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDL0QsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ2xCLENBQUEsQ0FBQTtBQUNBLENBQUEsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNyRCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsU0FBUyxDQUFBLENBQUU7S0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLGFBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3RCLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ2xILENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7R0FDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxnQkFBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN0RCxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtHQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLGdCQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNyRCxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFO0FBQy9ELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDakMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUE7R0FDSixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxRQUFRLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0FBQ3RFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07V0FDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUU7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtLQUNqQixDQUFLLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3ZGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBRTtLQUMzRSxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxjQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksa0NBQWtDLENBQUEsQ0FBRSxDQUFBO1lBQ2pHLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBO1lBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxLQUFLLENBQUEsQ0FBRTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGNBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSx5QkFBeUIsQ0FBQSxDQUFFLENBQUE7S0FDNUQsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsUUFBUSxDQUFBLENBQUU7U0FDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsVUFBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDeEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO1NBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxVQUFVLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDL0IsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFDO0FBQ2xGLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRTtHQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUM5RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUE7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07T0FDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ2hFLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUM3QixDQUFBO0FBQ0EsQ0FBQSxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUMxQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEQsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLFdBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxHQUFHLENBQUEsQ0FBRTtBQUNoRCxDQUFBLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUN2QyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDN0QsQ0FBQSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsY0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ2pDLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBO0dBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDekMsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2QyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQ1QsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7S0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFDO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBO0tBQ0QsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7S0FDWCxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtLQUNYLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0tBQ1gsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7S0FDWCxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBO0FBQ0wsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1QsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUMsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztHQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDaEQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztHQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHO0FBQ3RDLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUE7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQTs7QUFFaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixDQUFDLENBQUMsQ0FBQTtHQUM1RSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRS9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQTtLQUNFLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQTtLQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQTtNQUNqQixDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ3BHO0tBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7VUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTs7QUFFNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxLQUFLLENBQUEsQ0FBRTtLQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ2pELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBOztBQUUvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsYUFBYSxDQUFBLENBQUU7QUFDcEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE0QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUM5QyxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUU7QUFDOUYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0MsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7R0FDbEQsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtLQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRTNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBO0tBQ3BDLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0RCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUE7R0FDSixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNiLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0tBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07S0FDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUE7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07T0FDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRTNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDcEQsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsWUFBWSxDQUFBLENBQUU7S0FDOUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3pCLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDVCxDQUFBLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtHQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsTUFBTSxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7T0FDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBO0dBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsZUFBZSxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtLQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDMUMsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ25FLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQzNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUE7S0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDN0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDYixDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtHQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsV0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUU7S0FDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLGNBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDbEQsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0FBQ0EsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7S0FDZCxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDO0tBQzVFO0FBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ00sQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN0QixDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ2hELENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtHQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxlQUFlLENBQUEsQ0FBRTtPQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUE7QUFDcEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtHQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7R0FDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNyRyxDQUFBLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBRSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsVUFBVSxDQUFBLENBQUU7S0FDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO09BQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxLQUFLLENBQUEsQ0FBRTtTQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsS0FBSyxDQUFBLENBQUEsQ0FBRztLQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtLQUNiLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsT0FBTyxDQUFBLENBQUEsQ0FBRztLQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7S0FDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBRTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRWhCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDOUcsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxLQUFLLENBQUEsQ0FBQSxDQUFHO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFFO0FBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNkIsQ0FBQSxDQUFFLENBQUMsQ0FBQTtTQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7U0FDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE2QixDQUFBLENBQUUsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDekUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ00sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxHQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtLQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0tBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO09BQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUE7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFFLENBQUE7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsZUFBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7O0FBRXhDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQTtBQUNWLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0dBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLFFBQVEsQ0FBQSxDQUFBLENBQUc7S0FDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0dBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLE1BQU0sQ0FBQSxDQUFBLENBQUc7S0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUE7O0FBRXZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFFO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsT0FBTyxDQUFBLENBQUU7S0FDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBO0tBQ25CLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQ1QsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRTtHQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLENBQUEsQ0FBQSxDQUFHO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRXRCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFLENBQUMsQ0FBQTtPQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxlQUFlLENBQUEsQ0FBRTtPQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7T0FDakcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxJQUFJLENBQUEsQ0FBRTtBQUM1QyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxVQUFVLENBQUEsQ0FBQSxDQUFHO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtHQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7S0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO09BQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFVBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUE7UUFDYixDQUFBO0FBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUN2RCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtHQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQyxDQUFBO0dBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBO0dBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQTtBQUN0QyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQ1QsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDMUMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBRSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUUsQ0FBQTtBQUNuRCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBOztBQUUvRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUE7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7S0FDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFFO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxZQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtTQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE9BQU8sQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUNULENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsV0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQTtDQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ3RELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFLENBQUE7QUFDL0QsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ2xELENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDVCxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLGtCQUFrQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFFO0FBQ3RELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQTtHQUNyRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFNBQVMsQ0FBQSxDQUFFO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ2xELENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDVCxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0dBQzNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0EsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtLQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsaUJBQWlCLENBQUEsQ0FBRTtLQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtHQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUE7QUFDbEMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUE7QUFDYixDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ3hDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxPQUFPLENBQUEsQ0FBRTtLQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUNULENBQUEsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsZUFBZSxDQUFBLENBQUU7S0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsT0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUMzQyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBRSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDL0IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE9BQU8sQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7R0FDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDYixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQTtBQUNwRCxDQUFBO0FBQ0EsQ0FBQSxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtHQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0dBQzFELENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEtBQUssQ0FBQSxDQUFFO0tBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQ1QsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUUsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7R0FDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQ2pELENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxNQUFNLENBQUEsQ0FBRTtHQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztHQUVFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUMsTUFBTSxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0EsQ0FBRyxDQUFBO0FBQ0gsQ0FBQSxDQUFBLENBQUUsTUFBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtHQUNsQixDQUFHLENBQUE7R0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLE9BQU8sQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUE7R0FDNUIsQ0FBRyxDQUFBO0FBQ0gsQ0FBQSxDQUFBLENBQUUsTUFBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtLQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7R0FDaEIsQ0FBRyxDQUFBO0FBQ0gsQ0FBQSxDQUFBLENBQUUsTUFBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07S0FDekIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0dBQ2hCLENBQUcsQ0FBQTtBQUNILENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE1BQU0sQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ3RDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUU7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7QUFDbEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQ1QsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7R0FDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25DLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsT0FBTyxDQUFBLENBQUU7QUFDakQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUE7QUFDckMsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQzVDLENBQUEsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7QUFDaEQsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sVUFBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUE7TUFDYixDQUFBO0FBQ0wsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsbUJBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7R0FDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUE7QUFDVCxDQUFBO0FBQ0EsQ0FBQSxnQkFBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7R0FDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxNQUFNLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0tBQ047QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUE7TUFDWDtLQUNELENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7T0FDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUEsQ0FBRTtPQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDZCxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBRTtTQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztLQUNSLENBQUEsQ0FBQSxDQUFBO0FBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBO1FBQ3BHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztPQUN6RDtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sV0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxTQUFTLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtLQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRztBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDbEYsQ0FBSztLQUNELENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7SUFDRztBQUNILENBQUEsQ0FBQSxDQUFFLGVBQWUsQ0FBQSxDQUFFO0tBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUNqQixDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7SUFDRztBQUNILENBQUEsQ0FBQSxDQUFFLGVBQWUsQ0FBQSxDQUFFO0tBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUNqQixDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFDLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQTtVQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQTtBQUN0RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0c7QUFDSCxDQUFBLENBQUEsQ0FBRSxxQkFBcUIsQ0FBQSxDQUFFO0tBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDakIsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsY0FBYyxDQUFBLENBQUU7S0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ2pCLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7T0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsY0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7SUFDRztBQUNILENBQUEsQ0FBQSxDQUFFLGVBQWUsQ0FBQSxDQUFFO0tBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUNqQixDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDakMsQ0FBSztBQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsY0FBYyxDQUFBLENBQUU7S0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0c7QUFDSCxDQUFBLENBQUEsQ0FBRSxrQkFBa0IsQ0FBQSxDQUFFO0tBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUc7T0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7SUFDRztBQUNILENBQUEsQ0FBQSxDQUFFLGdCQUFnQixDQUFBLENBQUU7S0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRztPQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0FBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7S0FDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHO09BQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUU7S0FDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUc7T0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0c7QUFDSCxDQUFBLENBQUEsQ0FBRSxTQUFTLENBQUEsQ0FBRTtLQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUc7T0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDbkUsQ0FBSztLQUNELENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLGNBQWMsQ0FBQSxDQUFFO1NBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7SUFDRztBQUNILENBQUEsQ0FBQSxDQUFFLGFBQWEsQ0FBQSxDQUFFO0tBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRztPQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0VBQ0MsQ0FBQTtBQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsU0FBUyxDQUFBLENBQUU7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxVQUFVLENBQUEsQ0FBRTtLQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRztBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNHO0FBQ0gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFO0tBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDL0IsQ0FBSztLQUNELENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0VBQ0MsQ0FBQTs7QUFFRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQ2pDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUE7R0FDSixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQTtRQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUE7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBO1VBQ3ZELENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQy9DLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDVCxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBRSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBO0FBQ3ZDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxVQUFVLENBQUEsQ0FBRTtLQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxhQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ2pELENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRTtHQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTs7QUFFdkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7S0FDcEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtLQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxXQUFXLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQTtVQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtZQUNXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQTtPQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQSxDQUFFO1NBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ3JFLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUU7S0FDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxVQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUU7QUFDMUMsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN0QyxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxjQUFjLENBQUEsQ0FBQSxDQUFHO0FBQzFCLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsa0JBQWtCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUM3RCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNULENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsVUFBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFO0dBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sY0FBYyxDQUFBLENBQUUsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ3JGLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLFVBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRTtHQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLGNBQWMsQ0FBQSxDQUFFLENBQUMsbUNBQW1DLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNyRixDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7R0FDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7U0FDSCxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLGtCQUFrQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDbkYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7V0FDdkMsQ0FBQSxDQUFBLENBQUE7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFdBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQTtPQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRztBQUNiLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7QUM5dUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUdwQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTs7QUFFaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0NBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDTixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQjtBQUNyQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDUCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQztBQUNwQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CO0FBQ3RCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCO0FBQ3hCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0I7QUFDdEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQjtBQUM1QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtHQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDRixDQUFBLENBQUMsR0FBR1EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDSixDQUFBLFFBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN6QixDQUFBLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtDQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxFQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtDQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxHQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUMzQixDQUFBLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixDQUFBLENBQUUsR0FBR1MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDTixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CO0FBQ3RCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEI7QUFDNUIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCO0FBQ3ZCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCO0FBQ3hCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0I7QUFDdEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTJCO0FBQzdCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCO0FBQ3hCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEI7R0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtFQUNELENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxHQUE0QixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsU0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBO0NBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUE7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxhQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVlDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVsRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQTtBQUNwRCxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsSUFBSSxDQUFDLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBOztBQUU3RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO09BQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTs7QUFFbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDaEUsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRXhCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQTs7QUFFaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBOztBQUVoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRWQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTs7QUFFL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUE7O0FBRWxCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBOztBQUVsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQTs7QUFFbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUMsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRWpCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ3RCLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0dBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7R0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBO0dBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxTQUFTLENBQUEsQ0FBQSxDQUFHO0dBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sbUJBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWE7QUFDOUQsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxvQkFBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLHNCQUFzQixDQUFBLENBQUU7R0FDcEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2pCLENBQUEsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUc7S0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkMsQ0FBQSxDQUFBLENBQUE7RUFDQyxDQUFBO0NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLFlBQVlBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25DLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLGtDQUFrQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztHQUNqRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0dBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUU7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25FLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25FLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDdkUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQzNELENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFFLFdBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxPQUFPLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtHQUMzQixDQUFHLENBQUE7QUFDSCxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxpQkFBaUIsQ0FBQSxDQUFFO0dBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNqQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0tBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUksa0NBQWtDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsY0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN0RCxDQUFBLENBQUEsQ0FBQTtFQUNDLENBQUE7O0FBRUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ3RDLENBQUEsQ0FBQSxDQUFFLGNBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLHNCQUFzQixDQUFBLENBQUUsQ0FBQTtBQUNuRCxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDN0MsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUMzRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUE7QUFDdkMsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7S0FDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFBO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLFVBQVUsQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssS0FBSyxDQUFBLENBQUU7U0FDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDakIsQ0FBSyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsT0FBTyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN2RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtLQUNoQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFBO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxTQUFTLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQzFDLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksY0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQTtHQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDekQsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUU7R0FDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUE7QUFDL0MsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDdEMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQTtBQUM1QixDQUFBLENBQUE7QUFDQSxDQUFBLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDeEMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7S0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBO0tBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUMvQyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUM5RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0FBQ2xGLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQzNFLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxlQUFlLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4QyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQ1QsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0dBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBOztBQUVsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM5QixDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxXQUFXLENBQUEsQ0FBRTtBQUM1RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsSUFBSSxDQUFDO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7T0FDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO01BQ0QsQ0FBQTtLQUNELENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO09BQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFFO09BQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07S0FDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUE7S0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtLQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDekMsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRTtHQUNoRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUE7R0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7R0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtRQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7R0FDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZixDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFO0dBQzNDLENBQUEsQ0FBRSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDUixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQTtBQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBO0FBQzNCLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxjQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUkscUJBQXFCLENBQUEsQ0FBRSxDQUFBO0tBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNKLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQTtHQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFFO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsT0FBTyxDQUFBLENBQUU7T0FDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7QUFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQTtBQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtPQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRSxDQUFBO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07S0FDTCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUU7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFFO0FBQ25GLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUE7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO1NBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFHO1dBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUM7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtXQUNOLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLGNBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtPQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFBO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFO0dBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUM1QyxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUU7R0FDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDcEYsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBRTtLQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0tBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7S0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDckIsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDM0IsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtLQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDSixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsYUFBYSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDcEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUE7S0FDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtPQUNOLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1dBQzVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7V0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBO0FBQ3ZELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUU7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQyxDQUFDO09BQ2xCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtXQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7V0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ25CLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsV0FBVyxDQUFBLENBQUU7S0FDbkYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0osQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsYUFBYSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsRCxDQUFBLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDekMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUU7S0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0osQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDekIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxjQUFjLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE9BQU8sQ0FBQSxDQUFFO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLGNBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ25CLENBQUEsQ0FBQTtTQUNBLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxtQkFBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFDLENBQUE7QUFDeEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7S0FDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRztPQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUE7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUE7S0FDbEUsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxNQUFNLENBQUEsQ0FBRTtPQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBO09BQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtPQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMzQixDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQzNELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0tBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO09BQ1Y7U0FDRTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7V0FDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7UUFDTztPQUNELENBQUE7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNuRCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ3hELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBO0dBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxTQUFTLENBQUEsQ0FBRTtLQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0tBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUE7S0FDZixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUVSLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE1BQU0sQ0FBQSxDQUFFO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0tBRUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtLQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsUUFBUSxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTJCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLFNBQVMsQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN4QyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsUUFBUSxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQTtBQUNULENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0dBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUE7S0FDWixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQTtLQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUE7S0FDbEIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQyxDQUFBLENBQUE7S0FDM0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBO0tBQ2YsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtLQUNkLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBO0tBQ25CLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtHQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0tBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUU7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcscUJBQXFCLENBQUEsQ0FBRSxDQUFBO09BQ3hGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUE7S0FDZixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFO09BQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQTtBQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUU7QUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO09BQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUE7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUE7T0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtHQUMxQixDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7S0FDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZixDQUFBO0FBQ0EsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFO0dBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUU7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7T0FDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtPQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUE7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxXQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO09BQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7U0FDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUE7U0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtlQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1dBQ0EsQ0FBVztBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtXQUNOLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtTQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtHQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUE7R0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBO0FBQ3ZELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUU7S0FDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUE7QUFDeEIsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBO1FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtVQUNTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUE7S0FDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUEsQ0FBRTtPQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLFNBQVMsQ0FBQSxDQUFFO0FBQzNDLENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFO0tBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHO09BQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsU0FBUyxDQUFBLENBQUU7S0FDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUc7T0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDbkUsQ0FBSztLQUNELENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0c7QUFDSCxDQUFBLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtLQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRztBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUMxRixDQUFLO0tBQ0QsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0c7QUFDSCxDQUFBLENBQUEsQ0FBRSxnQkFBZ0IsQ0FBQSxDQUFFO0tBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRztPQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0c7QUFDSCxDQUFBLENBQUEsQ0FBRSxrQkFBa0IsQ0FBQSxDQUFFO0tBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRztPQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsY0FBYyxDQUFBLENBQUU7S0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUc7T0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQTtBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7SUFDRztBQUNILENBQUEsQ0FBQSxDQUFFLGFBQWEsQ0FBQSxDQUFFO0tBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHO09BQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsaUJBQWlCLENBQUEsQ0FBRTtLQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUc7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0c7QUFDSCxDQUFBLENBQUEsQ0FBRSxxQkFBcUIsQ0FBQSxDQUFFO0tBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRztPQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0c7QUFDSCxDQUFBLENBQUEsQ0FBRSxjQUFjLENBQUEsQ0FBRTtLQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRztPQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUc7QUFDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0c7QUFDSCxDQUFBLENBQUEsQ0FBRSxjQUFjLENBQUEsQ0FBRTtLQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRztPQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7S0FDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHO09BQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNHO0FBQ0gsQ0FBQSxDQUFBLENBQUUsZUFBZSxDQUFBLENBQUU7S0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ2pCLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUMsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBO1VBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBO0FBQ3RFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0VBQ0MsQ0FBQTtDQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ2hELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7QUFDdEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN2QyxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUUsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQ1QsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLFdBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUU7R0FDL0MsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNSLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUMvRCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDbEIsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsY0FBYyxDQUFBLENBQUEsQ0FBRztBQUMxQixDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLGtCQUFrQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDN0QsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVCxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLFVBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRTtHQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLGNBQWMsQ0FBQSxDQUFFLENBQUMsbUNBQW1DLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNyRixDQUFBLENBQUE7QUFDQSxDQUFBLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxjQUFjLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1DLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQzVFLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7O0FDaHpCQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUc5QixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUE7O0FBRWhCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHUSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQTtDQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNOLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDWixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ1osQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNaLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ2QsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQjtBQUN0QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CO0FBQ3RCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQjtBQUNwQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtHQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNGLENBQUEsQ0FBQyxHQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDTixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ1osQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBO0FBQ3pELENBQUEsQ0FBQyxHQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtDQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsR0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBR1MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQSxDQUFFLEdBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxZQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM3QyxDQUFBLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtHQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUU7U0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxlQUFlLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBQSxDQUFJQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxHQUEyQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ2xGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQSxDQUFFLEdBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQztHQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtLQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7O0FBRWpCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBRTtBQUM5RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBRTtBQUM5RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRTtBQUNoRCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7S0FDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQTtNQUNYO0FBQ0wsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0tBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sVUFBVSxDQUFDO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUE7TUFDWDtBQUNMLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7S0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxVQUFVLENBQUM7T0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQTtNQUNYO0FBQ0wsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtLQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLFVBQVUsQ0FBQztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO01BQ2hDO0FBQ0wsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtLQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLFVBQVUsQ0FBQztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO01BQ2hDO0FBQ0wsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO1NBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7UUFDRDtBQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7T0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQjtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO1NBQ0wsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO2FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQyxPQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFHO0FBQ25FLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNBLENBQVM7U0FDRCxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFDO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7U0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztTQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUU7V0FDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO2FBQ3ZDLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1dBQ0EsQ0FBVyxDQUFBO1NBQ1gsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFDLDBDQUEwQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM5RixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFdBQVcsQ0FBQSxDQUFFO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUE7TUFDWDtBQUNMLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUE7QUFDRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQTtBQUNyRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtLQUNoRjtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDakMsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQTtBQUNGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUE7QUFDekYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDN0U7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtPQUNaLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQzlGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtlQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtXQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO09BQ1osQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDOUYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2VBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO1dBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7T0FDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO01BQ0Q7QUFDTCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN0RSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUI7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJO09BQ0osQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7T0FDbkIsQ0FBTztPQUNELENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFDO09BQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO09BQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztBQUNOLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ0o7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE2QjtPQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7TUFDRDtLQUNELENBQUEsQ0FBQSxDQUFBO0FBQ0osQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUEsQ0FBQTtBQUNsRCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQjtPQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFFO1NBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFLENBQUE7U0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDVixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsU0FBUyxDQUFBLENBQUU7YUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtZQUNmO1VBQ0YsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLHFCQUFxQixDQUFBLENBQUUsQ0FBQTtBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUc7S0FDSjtPQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRTtPQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUM7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7U0FDTCxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO1NBQ1gsQ0FBQTtRQUNELENBQUE7S0FDUCxDQUFLO0tBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRTtPQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQztTQUNQLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO1NBQ1YsQ0FBQTtRQUNELENBQUE7S0FDUCxDQUFLO0FBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUU7T0FDZixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBO09BQ1IsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtHQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDNUcsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFBO0FBQy9CLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFBO0FBQy9CLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtLQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBRTtPQUNOLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7S0FDWixDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLGtCQUFrQixDQUFDO0FBQ2pGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsa0JBQWtCLENBQUM7QUFDakYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtLQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7SUFDRCxDQUFBO0dBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBRTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNYLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUU7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0tBQ3BCLENBQUssQ0FBQTtLQUNELENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtPQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxRQUFRLENBQUEsQ0FBRTtPQUM3QixDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO09BQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUU7U0FDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUE7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0EsQ0FBSyxDQUFBO0FBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtPQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFFO1NBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUE7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0EsQ0FBSyxDQUFBO0FBQ0wsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFFO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ00sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7S0FDcEIsQ0FBSyxDQUFBO0FBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7T0FDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUEsQ0FBRTtTQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDQSxDQUFLLENBQUE7QUFDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7S0FDakIsQ0FBSyxDQUFBO0FBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7T0FDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUEsQ0FBRTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7V0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1dBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtXQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUU7T0FDNUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7T0FDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDVCxDQUFBOzs7Ozs7Ozs7OztDQzdWQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNOLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCO0FBQ3hCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE4QjtBQUNoQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0dBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNGLENBQUEsQ0FBQyxHQUFHakMsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDSixDQUFBLE1BQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUdRLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFNBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUE7Q0FDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUNyQyxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUU7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUE7S0FDckIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUN2RixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0dBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUMxRCxDQUFBLENBQUEsQ0FBRSxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDN0IsQ0FBQSxDQUFBLENBQUUsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0dBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUU7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsYUFBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEtBQUssQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssS0FBSyxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtLQUNMLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDekIsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsU0FBUyxDQUFBLENBQUU7QUFDekMsQ0FBQSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7S0FDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQThCLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtJQUNqRTtBQUNILENBQUEsQ0FBQSxDQUFFLHFCQUFxQixDQUFBLENBQUU7S0FDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE4QixDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUI7SUFDOUU7QUFDSCxDQUFBLENBQUEsQ0FBRSxrQkFBa0IsQ0FBQSxDQUFFO0tBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBOEIsQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CO0lBQzNFO0FBQ0gsQ0FBQSxDQUFBLENBQUUsY0FBYyxDQUFBLENBQUU7S0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQThCLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7SUFDdkU7QUFDSCxDQUFBLENBQUEsQ0FBRSxjQUFjLENBQUEsQ0FBRTtLQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBOEIsQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtJQUN2RTtBQUNILENBQUEsQ0FBQSxDQUFFLGdCQUFnQixDQUFBLENBQUU7S0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE4QixDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQjtJQUN6RTtBQUNILENBQUEsQ0FBQSxDQUFFLGNBQWMsQ0FBQSxDQUFFO0tBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE4QixDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0lBQ3ZFO0FBQ0gsQ0FBQSxDQUFBLENBQUUsYUFBYSxDQUFBLENBQUU7S0FDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQThCLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWU7SUFDdEU7QUFDSCxDQUFBLENBQUEsQ0FBRSxpQkFBaUIsQ0FBQSxDQUFFO0tBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBOEIsQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQjtJQUMxRTtBQUNILENBQUEsQ0FBQSxDQUFFLFNBQVMsQ0FBQSxDQUFFO0tBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQ2xGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNsRSxDQUFLO0tBQ0QsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDTSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsY0FBYyxDQUFBLENBQUU7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7RUFDQyxDQUFBO0NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsY0FBYyxDQUFBLENBQUEsQ0FBRztBQUMxQixDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLGtCQUFrQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDN0QsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVCxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsVUFBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRTtHQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLGNBQWMsQ0FBQSxDQUFFLENBQUMsdUNBQXVDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDL0UsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsTUFBTSxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDbEUsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNKLENBQUEsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxJQUFJLENBQUEsQ0FBRTtHQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxHQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDL0IsQ0FBQSxDQUFBOzs7Ozs7Ozs7OztBQzdFQSxDQUFBLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsR0FBR2hCLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3pDLENBQUEsU0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsRUFBRSxDQUFBLENBQUEsQ0FBR1EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsR0FBNEIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBR08sQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLEdBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsU0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBO0NBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUE7Q0FDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtHQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87O0FBRWhFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMzRyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87T0FDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQjtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMscUJBQXFCLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDOUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTs7QUFFM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM3QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUU7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkUsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUE7QUFDaEMsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtLQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7T0FDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBRTtTQUNOLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUU7V0FDTixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO09BQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBRTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUE7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0EsQ0FBSyxDQUFBO0FBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtLQUNkLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUU7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUE7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLFNBQVMsQ0FBQSxDQUFBLENBQUc7QUFDckIsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEtBQUssQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDdEUsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQ3JELENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ2xFLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFO09BQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtPQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUE7T0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUE7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUN2QjtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0EsQ0FBRyxDQUFBO0FBQ0gsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUN4QyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7O0NDeEpBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBRSxHQUFHaEIsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakMsQ0FBQSxXQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHUSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxTQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUE7Q0FDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQTtDQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtHQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNwRSxDQUFBLENBQUEsQ0FBRSxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDOUIsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ2xFLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ2hCLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7O0FDcENBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBR1IsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBOztBQUVoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsRUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBR1EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBR08sQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsR0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDTixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0I7QUFDcEIsQ0FBQSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUU7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQjtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQjtLQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0Q7R0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNGLENBQUEsQ0FBQyxHQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNKLENBQUEsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUUsR0FBR1MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDTixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ1osQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNaLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0I7QUFDdEIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDZCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCO0FBQ25CLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUNiLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0dBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNGLENBQUEsQ0FBQyxHQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sZUFBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBSUMsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsR0FBMkIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNsRixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRTtHQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNmLENBQUcsQ0FBQTtHQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0tBQ047T0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7TUFDWDtLQUNELENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7T0FDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO09BQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUE7S0FDM0UsQ0FBSztLQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0osQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNEIsQ0FBQTtHQUMxRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3BCLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxvQkFBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBRztBQUMzQixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLEtBQUssQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFHO0FBQ3RGLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtHQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUN6RCxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDL0QsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDSixDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUU7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQSxDQUFFO09BQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7T0FDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBRTtTQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO1NBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtXQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFFO2FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0EsQ0FBSyxDQUFBO0FBQ0wsQ0FBQSxDQUFBLENBQUUsUUFBUSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0dBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtLQUNSO0FBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBO01BQ1g7S0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFFO09BQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUU7T0FDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUE7R0FDVixDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQzlELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBRTtLQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQTtBQUNuQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBRTtPQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDYixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFO09BQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUE7R0FDVixDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtPQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7S0FDaEIsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO09BQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFBLENBQUU7R0FDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQztBQUN6RCxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxZQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUU7QUFDL0MsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3hDLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFN0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGlCQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUE7R0FDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsS0FBSyxDQUFBLENBQUEsQ0FBRztBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQTtBQUMvQixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLGdCQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJZixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxHQUEwQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEUsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUEsQ0FBRTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBO0FBQ3BELENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0dBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEtBQUssQ0FBQyxDQUFBO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTRCLENBQUMsQ0FBQSxDQUFFO0FBQ3hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUEsQ0FBRTtPQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0ssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFBLENBQUE7S0FDMUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQTtLQUNSLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUU7T0FDVCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtTQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFFLENBQUE7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQTtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFFO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBO0tBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ3hGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFlBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtPQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDdkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxZQUFZLENBQUEsQ0FBRTtBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLDRCQUE0QixDQUFBLENBQUU7V0FDakYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxZQUFZLENBQUEsQ0FBRTtBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtTQUNoRCxDQUFTLENBQUE7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO1NBQ2hDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7V0FDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7VUFDRCxDQUFBO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtXQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFDLG1DQUFtQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUc7QUFDL0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLGlCQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0FBQ2xHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0FBQ3ZHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsR0FBRyxDQUFBLENBQUU7U0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1FBQ0QsQ0FBQTtPQUNELENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUU7U0FDWCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBRztBQUN4RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxHQUFHZ0IsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUM7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLFVBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBO1VBQ2IsQ0FBQTs7QUFFVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUE7V0FDWCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHO2FBQ0gsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7ZUFDYyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFO2lCQUNQLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO2FBQ3JDLENBQWE7YUFDRCxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ0EsQ0FBUyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFO2FBQzFCLENBQUEsQ0FBQTtZQUNELENBQUE7U0FDWCxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFO2FBQzdCLENBQUEsQ0FBQTtZQUNELENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO1dBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQywwQkFBMEIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsRUFBRSxDQUFBLENBQUEsQ0FBRztBQUMzRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO1NBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUksWUFBWSxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsV0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7U0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO1dBQ3hDLENBQUEsQ0FBQTtVQUNELENBQUE7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxZQUFZLENBQUEsQ0FBRTtBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUE7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUU7V0FDakMsQ0FBQSxDQUFBO1VBQ0QsQ0FBQTtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRTtXQUM5QixDQUFBLENBQUE7VUFDRCxDQUFBO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO1NBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7V0FDTCxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLGVBQWUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUM7V0FDOUUsQ0FBQSxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBO1NBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtXQUNoRCxDQUFBLENBQUE7VUFDRCxDQUFBO09BQ1QsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRTtXQUM3QixDQUFBLENBQUE7VUFDRCxDQUFBO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksaUJBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQTtTQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO1dBQ3RDLENBQUEsQ0FBQTtVQUNELENBQUE7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07U0FDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0I7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztXQUNMLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsZUFBZSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQztXQUM5RSxDQUFBLENBQUE7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUE7S0FDRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO01BQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztLQUN6RTtBQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUNULENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUU7R0FDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFFLEdBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07S0FDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixDQUFBLENBQUUsQ0FBQTtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7R0FDQSxDQUFHLENBQUE7QUFDSCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUEsQ0FBRTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0dBRUYsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTtBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7S0FFSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxLQUFLLENBQUEsQ0FBQSxDQUFHO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ1IsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUE7QUFDVixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHO0FBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHO0tBQ0g7T0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQTtNQUNYO0tBQ0QsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDbkIsQ0FBQSxDQUFBLENBQUE7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTRCLENBQUEsQ0FBQTtBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUE7U0FDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUE7U0FDWixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUE7U0FDZixDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUjtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07U0FDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHO0tBQ0g7T0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQTtNQUNYO0tBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0osQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0FBQ0EsQ0FBQSxVQUFjLENBQUEsQ0FBQSxDQUFHO0FBQ2pCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0dBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNGLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Q0NwZEEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsR0FBR2hDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUdRLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxHQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtDQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNOLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ2QsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNaLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDWixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDYixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCO0FBQ25CLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0dBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0YsQ0FBQSxDQUFDLEdBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDTixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ1osQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQTtBQUNsRCxDQUFBLENBQUMsR0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsT0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFBLENBQUU7QUFDOUMsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDeEMsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7S0FDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUM7QUFDakMsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7R0FDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUN2QyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUU7QUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQTtBQUMzQyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ00sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBO0FBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUMsQ0FBQSxDQUFBO09BQ3RCLENBQUEsQ0FBRSxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO09BQ3pGO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUMsQ0FBQyxRQUFRLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCO0FBQ3hGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFO0FBQzdHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFDLENBQUMsUUFBUSxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQjtBQUN4RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtLQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBRTtPQUNOLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7S0FDWixDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQSxDQUFFO09BQ2pDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQTtBQUMzQyxDQUFBLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsSUFBSSxDQUFDLENBQUE7QUFDM0YsQ0FBQSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLElBQUksQ0FBQyxDQUFBOztBQUUzRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxrQkFBa0IsQ0FBQztBQUMxRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLGtCQUFrQixDQUFDO0FBQzFGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7S0FDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0QsQ0FBQTtHQUNELENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUU7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO09BQ3RCLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtTQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBRTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxRQUFRLENBQUEsQ0FBRTtTQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtTQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFFO1dBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNBLENBQU8sQ0FBQTtBQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7T0FDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBO09BQ2pDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSTtXQUNGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7V0FDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUE7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUE7U0FDbEIsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO1dBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLFFBQVEsQ0FBQSxDQUFFO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUk7V0FDRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1dBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUE7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ3JCLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtXQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07T0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBRTtTQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNBLENBQUssQ0FBQTtBQUNMLENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBRTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO1NBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFBLENBQUU7V0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ0EsQ0FBTyxDQUFBO0FBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7T0FDbkIsQ0FBTyxDQUFBO0FBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO1NBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7YUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1dBQ1UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7YUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO09BQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCO1NBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUk7YUFDRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTthQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7ZUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7ZUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTthQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBRTtPQUM1QixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtPQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDVCxDQUFBLENBQUE7Ozs7Ozs7Ozs7QUMvTEEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxlQUFlLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBQSxDQUFJbEIsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsR0FBMkIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNsRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtHQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFBLENBQUUsb0JBQW9CLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFO0dBQzFGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0YsQ0FBQSxDQUFDLEdBQUdRLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUEsQ0FBRSxlQUFlLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFlBQVksQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsRUFBaUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUNyRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLHNCQUFzQixDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxFQUFpQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUE7Q0FDaEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsR0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtDQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUEsQ0FBRSxHQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNyQyxDQUFBLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsR0FBR1MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxHQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtDQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNOLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQjtBQUNwQixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1QsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDWCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNSLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUNiLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDVCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhO0FBQ2YsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQ2hCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0I7R0FDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0YsQ0FBQSxDQUFDLEdBQUdiLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUE7QUFDMUIsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUE7QUFDckMsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBRTtBQUN4RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksbUJBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQTtBQUN4RCxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7S0FDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQyxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQjtBQUN4RSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLGFBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQTtBQUNuRCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDbkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSx3QkFBd0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQTtBQUMzRCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNULENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUMxRSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBO0FBQ3JDLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUU7QUFDeEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLG1CQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUE7QUFDeEQsQ0FBQSxDQUFBLENBQUE7R0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUU7QUFDN0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUE7QUFDL0MsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDcEMsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBRTtBQUMvRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksYUFBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUE7QUFDbkQsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxlQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsRUFBRSxDQUFDLENBQUE7QUFDdkQsQ0FBQSxDQUFBLENBQUUsZUFBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsRUFBRSxDQUFDLENBQUE7QUFDM0QsQ0FBQSxDQUFBLENBQUUsYUFBYSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHYSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWM7QUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDN0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQTtLQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFNBQVMsQ0FBQSxDQUFBLENBQUc7T0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSixDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUE7S0FDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLGtCQUFrQixDQUFBLENBQUEsQ0FBRztBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLFdBQVcsQ0FBQSxDQUFBLENBQUc7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsYUFBYSxDQUFBLENBQUU7QUFDaEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxJQUFJLENBQUEsQ0FBQSxDQUFHO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUU7V0FDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRTthQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7YUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO2VBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO1dBQ3BDLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsb0JBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7V0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUU7QUFDOUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ3ZCLENBQWEsQ0FBQTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtPQUN2QixDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsb0JBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO09BQ0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUEsQ0FBRTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7YUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTthQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1dBQ1UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ2pCLENBQVMsQ0FBQTtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBRTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNiLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUEsQ0FBRTtBQUM3QyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQTtBQUNyQyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFFO0FBQ3hGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxtQkFBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBO0FBQ3hELENBQUEsQ0FBQSxDQUFBO0dBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUc7S0FDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNKLENBQUEsQ0FBQSxDQUFBO1NBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO1NBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUE7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtTQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxlQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDaEI7U0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQztBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtVQUN2QjtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0EsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2IsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsSUFBSSxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsU0FBUyxDQUFBLENBQUU7QUFDN0MsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUU7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNULENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLEtBQUssQ0FBQyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQSxDQUFFO0FBQzlDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUMxRSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUM7S0FDaEMsQ0FBSztLQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ0Q7QUFDSCxDQUFBO0FBQ0EsQ0FBQSxlQUFlLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVCxDQUFBO0FBQ0EsQ0FBQSxlQUFlLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFVBQVUsQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUMxRSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLGVBQWUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1gsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQztBQUNoRSxDQUFBO0FBQ0EsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDMUUsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxlQUFlLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7S0FDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBRSxDQUFDLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDekMsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDO0FBQ3pELENBQUEsQ0FBQSxDQUFFLFdBQVcsQ0FBQSxDQUFBLENBQUc7S0FDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtLQUNkLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFO0FBQ3RELENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNOLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNwRixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBO0FBQ3JDLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUU7QUFDeEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLG1CQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUE7QUFDeEQsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBO0dBQ3pDLENBQUEsQ0FBQSxDQUFBO0tBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO0tBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUE7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7S0FDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUE7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLGdCQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ2pCO0FBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsU0FBUyxDQUFBLENBQUU7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO01BQ3ZCLENBQUE7S0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQTtBQUNWLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBO0FBQ2hDLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtLQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFHO09BQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7T0FDVixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7T0FDcEIsQ0FBQyxzQkFBc0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNuRSxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUksb0JBQW9CLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM3QixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sb0JBQW9CLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDdkIsQ0FBQSxDQUFBLENBQUE7U0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7U0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO1NBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLGdCQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ2pCO1NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsWUFBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsZUFBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtTQUNMLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtXQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7VUFDRCxDQUFBO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsZUFBZSxDQUFBLENBQUU7T0FDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF5QixDQUFBO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7S0FDUixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNULENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7QUFDaEMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUE7QUFDckMsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBRTtBQUN4RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksbUJBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQTtBQUN4RCxDQUFBLENBQUEsQ0FBQTtHQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSixDQUFBLENBQUEsQ0FBQTtPQUNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtPQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtPQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGdCQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ2pCO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxTQUFTLENBQUEsQ0FBRTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1FBQ3ZCO0FBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ2xDLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDVCxDQUFBO0FBQ0EsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFO0dBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBO0dBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0EsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2IsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDWCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7S0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN2RCxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1QsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQTtBQUNyQyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFFO0FBQ3hGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxtQkFBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBO0FBQ3hELENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0dBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0osQ0FBQSxDQUFBLENBQUE7T0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7T0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7T0FDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUE7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxnQkFBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNqQjtPQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNKLENBQUEsQ0FBQSxDQUFBO1NBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO1NBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUE7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtTQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxnQkFBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNqQjtTQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUE7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0EsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2IsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQTtBQUNyQyxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFFO0FBQ3hGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxtQkFBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBO0FBQ3hELENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0dBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0osQ0FBQSxDQUFBLENBQUE7T0FDRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7T0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7T0FDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUE7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxnQkFBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNqQjtPQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtPQUNKLENBQUEsQ0FBQSxDQUFBO1NBQ0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO1NBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUE7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtTQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxnQkFBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNqQjtTQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO1NBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNiLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVDLENBQUEsQ0FBQSxDQUFHO0FBQzFDLENBQUEsQ0FBQSxDQUFFLGNBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSw4REFBOEQsQ0FBQztBQUMzRyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ04sQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDUixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1QsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUc7QUFDTCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0dBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDRixDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0MsQ0FBQSxDQUFBLENBQUc7QUFDM0MsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ1AsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNULENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1IsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNULENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7R0FDSixDQUFBLENBQUEsQ0FBQTtBQUNGLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7QUN0Y0EsQ0FBQSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsR0FBRzdCLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxZQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHUSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNsRCxDQUFBLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtDQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxHQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNyQixDQUFBQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFBLENBQUU7R0FDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUE7S0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBO0tBQzFDLENBQUEsQ0FBQSxDQUFBO0FBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQTtPQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQTtPQUNwQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87T0FDcEI7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQTtPQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDakIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7U0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFO1dBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07V0FDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7T0FDQSxDQUFPO09BQ0Q7QUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtTQUNOLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtHQUNBLENBQUc7QUFDSCxDQUFBO0FBQ0EsQ0FBQSxRQUFjLENBQUEsQ0FBQSxDQUFHO0FBQ2pCLENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtHQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDRixDQUFBLENBQUE7Ozs7Ozs7Ozs7QUNuQkEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOztDQUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUdqQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQTs7QUFFbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFFLFVBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBR1EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDTixDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQTtBQUN0QyxDQUFBLENBQUMsR0FBR08sQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDSixDQUFBLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLENBQUEsQ0FBRSxHQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtDQUNoRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtHQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsQ0FBQTtBQUNsQyxDQUFBLENBQUMsR0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsQ0FBQSxDQUFFLEdBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0NBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLEdBQUdTLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsR0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFFWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJK0IsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLE9BQWMsQ0FBQSxDQUFBLENBQUc5QixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBb0MsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBO0FBQzVFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQyxDQUFBLENBQUU7QUFDeEQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUE7QUFDekMsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsQ0FBQTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsSUFBSSxDQUFDO0FBQzVELENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUU7S0FDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQTtJQUNYLENBQUE7QUFDSCxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtLQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtJQUNYLENBQUE7R0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtLQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUU7S0FDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUE7SUFDWCxDQUFBO0FBQ0gsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUIsQ0FBQyxDQUFBLENBQUU7QUFDekQsQ0FBQSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQTtBQUMxQyxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixDQUFBO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdEMsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRTtLQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBO0lBQ1gsQ0FBQTtBQUNILENBQUEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO0tBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0lBQ1gsQ0FBQTtHQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0tBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtLQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBRTtLQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQTtJQUNYLENBQUE7QUFDSCxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQTtDQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsR0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBO0NBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFVBQVUsQ0FBQSxDQUFFO0dBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtHQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtHQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNsQixDQUFBLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNYLENBQUEsQ0FBQSxDQUFBO0VBQ0MsQ0FBQTtBQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsZUFBZSxDQUFBLENBQUU7R0FDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0dBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbEIsQ0FBQSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBRztLQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUE7RUFDQyxDQUFBO0FBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLGVBQWUsQ0FBQSxDQUFFO0dBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtHQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2xCLENBQUEsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUc7S0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBO0VBQ0MsQ0FBQTs7QUFFRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxLQUFLLENBQUEsQ0FBRTtHQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDMUIsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxLQUFLLENBQUEsQ0FBRTtBQUNqRSxDQUFBLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNyRSxDQUFBLENBQUE7Ozs7Ozs7Ozs7O0FDNUlBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBR3ZDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUdRLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2pCLENBQUEsQ0FBQSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLE1BQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUMsWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEQsQ0FBQSxDQUFBLE1BQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBK0IsWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDNUMsQ0FBQSxDQUFBLE1BQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE2QixZQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzFDLENBQUEsQ0FBQSxNQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQixZQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEMsQ0FBQSxDQUFBLE1BQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNEIsWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDekMsQ0FBQSxDQUFBLE1BQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixZQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZDLENBQUEsQ0FBQSxNQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2QyxDQUFBLENBQUEsTUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JDLENBQUEsQ0FBQSxNQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQixZQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEMsQ0FBQSxDQUFBLE1BQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE2QixZQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzFDLENBQUEsQ0FBQSxNQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0MsWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM3QyxDQUFBLENBQUEsTUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkMsQ0FBQSxDQUFBLE1BQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUIsWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7RUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsT0FBQSxDQUFBLENBQUEsQ0FBeUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDekIsQ0FBQSxDQUFBLE1BQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixZQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZDLENBQUEsQ0FBQSxNQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3RDLENBQUEsQ0FBQSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLFVBQVUsQ0FBQSxDQUFFO0lBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtJQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUc7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBQ0MsQ0FBQTtBQUNELENBQUEsQ0FBQSxNQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixZQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7O0FBRXJDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLE9BQUEsQ0FBQSxDQUFBLENBQXlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7OztFQ2pDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQVQsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0VBQzdEQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQkEsU0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFtQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtFQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFzQjtFQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDRCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztFQUNySCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztBQUNySCxDQUFBOzs7Ozs7Ozs7Ozs7O0VDTEEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtFQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFzQjtFQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDRCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUM7QUFDN0gsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7QUNKQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNjLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM3RCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQSxDQUFBLENBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUM3RSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQzdCLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUMzQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ25DLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDN0IsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQ3ZDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUNqQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlO0FBQ3pDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQy9CLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhO0FBQ3JDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztBQUN2QyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7QUFDM0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0NBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHYixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBcUM7Q0FDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUdRLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUE0RDtDQUMzRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUE0RDtDQUM3RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQStCO0NBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDdkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQztBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQ04sQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtTQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEVBQUUsQ0FBQztBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDbkIsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDcEIsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFO0tBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEdBQUcsQ0FBQztLQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO1NBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNqQixDQUFBO0FBQ0EsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsMENBQTBDLENBQUM7QUFDeEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFFO1NBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07YUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFLENBQUM7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNmLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUU7U0FDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTJCLENBQUEsQ0FBRWxCLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUNqRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUU7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUU7aUJBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTJCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUMsQ0FBQztBQUNoSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUN2QyxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRTtTQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxJQUFJLENBQUM7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtBQUNyRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWW1CLFVBQUEsQ0FBQSxDQUFjLENBQUMsR0FBRyxDQUFDO2lCQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsZUFBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDcEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFFO2FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQ2hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFDLElBQUksQ0FBQztBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsSUFBSSxDQUFDO0tBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDckIsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtDQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztDQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7Q0FDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87Q0FDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0NBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtDQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0NBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtDQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7Q0FDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0NBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztDQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7Q0FDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZTtDQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0I7QUFDM0MsQ0FBQSxTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFFO0tBQzlELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtTQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsR0FBRyxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUM7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO1NBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO2FBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUMsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUM7QUFDL0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNEIsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUM7QUFDeEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTthQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFDO0FBQ3RFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0MsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUM7QUFDNUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTthQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUM7QUFDcEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTthQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTZCLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFDO0FBQ3pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTzthQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFDO0FBQ3RFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07YUFDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBDLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFDO0FBQ3RGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07YUFDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTJCLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFDO0FBQ3ZFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7YUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQztBQUM1RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO2FBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNkIsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUM7QUFDekUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTthQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQztBQUM5RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWE7YUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQztBQUMzRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO2FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQztTQUM1RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFDO0FBQzFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLFdBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUU7QUFDdkYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUM7QUFDNUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7S0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDaEIsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFFO0FBQ3RFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO1NBQ0gsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO1NBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFHO2FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO1NBQ3hCLENBQVM7TUFDSjtBQUNMLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLFVBQVUsQ0FBQSxDQUFBLENBQUc7S0FDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ2hFLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtTQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsS0FBSyxDQUFDO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7QUFDdkUsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtLQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7S0FDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUMsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQztBQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQztBQUN2RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsTUFBTSxDQUFDO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7QUFDTixDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLFVBQVUsQ0FBQztBQUN0RixDQUFBSixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ3hDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxFQUFFLENBQUM7S0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0tBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUU7YUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO2FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO2FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDO2FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtjQUNhO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7YUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUM7YUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFDO2FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtVQUNTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRTthQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFDO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUU7YUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQzthQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUM7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRTthQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFDO2FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQzthQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUM7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7VUFDUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLFFBQVEsQ0FBQztBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxFQUFFLENBQUM7Q0FDckUsQ0FBQztBQUNELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDekMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLEVBQUUsQ0FBQztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0tBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUU7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQztTQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUM7U0FDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFDO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtVQUNTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQztTQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUM7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7S0FDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBRTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFdBQVcsQ0FBQSxDQUFFO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtVQUNTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUM7Q0FDbkQsQ0FBQztBQUNELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUMzQyxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsUUFBUSxDQUFDO0FBQ3hDLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtLQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO1NBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUE7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUE7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQTtBQUNoQyxDQUFBO0FBQ0E7Ozs7Ozs7OztBQ3RTQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNtRCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0NBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHaEUsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWlCO0NBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBR1EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQW1EO0FBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsWUFBWSxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFFO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUEsQ0FBQSxDQUFHO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7U0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsU0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLE9BQU8sQ0FBQztBQUNuRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtTQUNSLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLElBQUksQ0FBQztBQUN0RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFO1NBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsU0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUM7QUFDMUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUc7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUU7YUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7YUFDWixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFNBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNqRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Y0FDYTthQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQztBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUM7U0FDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUc7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxFQUFFLENBQUM7QUFDbkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQ3JFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQ3RFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBRTtTQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87U0FDckQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQywwQkFBMEIsQ0FBQztBQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsMkJBQTJCLENBQUM7QUFDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMseUhBQXlILENBQUM7QUFDdEosQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO1NBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7U0FDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTthQUNaLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFBLENBQUU7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ0EsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQzthQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7YUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtxQkFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxLQUFLLENBQUM7QUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDMUYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTs2QkFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE0QixnQkFBZ0IsQ0FBQSxDQUFFOzZCQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQzt5QkFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxVQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsUUFBUSxDQUFDO0FBQ3BHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO3lCQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixnQkFBZ0IsQ0FBQSxDQUFFO3lCQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO3FCQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQztBQUNwRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7aUJBQ2dCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sS0FBSyxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxLQUFLLENBQUM7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLGdCQUFnQixDQUFBLENBQUU7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ0EsQ0FBYTthQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixnQkFBZ0IsQ0FBQSxDQUFFO2FBQ2xDLENBQWE7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDbkcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFlBQVksQ0FBQztBQUN4SixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFNBQVMsQ0FBQSxDQUFFO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsUUFBUSxDQUFDO0FBQ3pILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO1NBQ2QsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLE9BQU8sQ0FBQztBQUMzRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7U0FDVixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsT0FBTyxDQUFDO0FBQ3hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxPQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsRUFBRSxDQUFDO0FBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtTQUNWLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLEdBQUcsQ0FBQztBQUN4RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFO1NBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFNBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLEtBQUssQ0FBQztBQUMvRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtTQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxhQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDNUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsWUFBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsYUFBYSxDQUFDO0FBQ2hLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUksbUJBQW1CLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDaEksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7U0FDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsU0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLE9BQU8sQ0FBQztBQUNsRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUc7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUc7U0FDRixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUc7U0FDSixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDO0FBQzFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTtBQUNBLENBQUF3RCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVU7QUFDL0I7Ozs7Ozs7Ozs7O0FDM0xBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtDQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBR2xFLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFpQjtDQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBR1EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXFDO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sb0JBQW9CLENBQUM7S0FDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO1NBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7U0FDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO1NBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLE9BQU8sQ0FBQSxDQUFFO2lCQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO2lCQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07aUJBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUM7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxhQUFhLENBQUEsQ0FBQSxDQUFHO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUk7YUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztpQkFDM0UsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFDO0FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7U0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO2FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxPQUFPLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0MsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFDO0FBQ3pHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsS0FBSyxDQUFDO2lCQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2tCQUNpQjtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxLQUFLLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUM7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO2FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO2FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxLQUFLLENBQUEsQ0FBRTthQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQztBQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtTQUNWLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTthQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxLQUFLLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTthQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFFO2lCQUNQLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtrQkFDaUI7aUJBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUc7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTthQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLFNBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO2FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxLQUFLLENBQUEsQ0FBRTthQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQztBQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFHO1NBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtTQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLFNBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEtBQUssQ0FBQztBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBRztBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxVQUFVLENBQUM7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsVUFBVSxDQUFBLENBQUU7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsSUFBSSxDQUFDO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsU0FBUyxDQUFDO0FBQ2hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLFNBQVMsQ0FBQztBQUNoRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLE1BQU0sQ0FBQztBQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDOUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLE9BQU8sQ0FBQztBQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsT0FBTyxDQUFDO0FBQzVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxVQUFVLENBQUM7QUFDbEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsUUFBUSxDQUFDO0FBQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLE1BQU0sQ0FBQztBQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsT0FBTyxDQUFDO0FBQzVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxPQUFPLENBQUM7QUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxTQUFTLENBQUM7QUFDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxTQUFTLENBQUM7QUFDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLFVBQVUsQ0FBQztBQUNsRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsVUFBVSxDQUFDO0FBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsT0FBTyxDQUFDO0FBQzVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxJQUFJLENBQUM7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxNQUFNLENBQUM7QUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxTQUFTLENBQUM7QUFDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLFVBQVUsQ0FBQztBQUNsRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDOUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsUUFBUSxDQUFDO1NBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO1NBQ2xILENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO1NBQ2hJLENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxTQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxJQUFJLENBQUM7U0FDcEgsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQzdILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxHQUFHLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQztTQUNuSixDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUEsQ0FBRTthQUN4RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQztTQUM1RSxDQUFTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTBELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBVTtBQUMvQjs7Ozs7Ozs7Ozs7Ozs7O0FDOUpBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07Q0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU1DLFdBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUM7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO2FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUM7U0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTthQUNILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUM7U0FDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUc7QUFDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFDO0FBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHO0NBQ2QsQ0FBQztBQUNELENBQUFELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVM7Ozs7Ozs7Ozs7O0FDbkI3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM3RCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtDQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTUMsYUFBVyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQztLQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQztBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUM7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUc7Q0FDZCxDQUFDO0FBQ0QsQ0FBQUQsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVc7Ozs7Ozs7Ozs7O0FDWGpDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDMUIsQ0FBQSxNQUFNQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUM7QUFDMUgsQ0FBQUQsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBUzs7Ozs7Ozs7OztFQ0g3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBMUUsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0VBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQWdCO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQ1EsZ0JBQUEsQ0FBQSxDQUFzQixDQUFBLENBQUVULFNBQU8sQ0FBQztBQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUNnQixrQkFBQSxDQUFBLENBQXdCLENBQUEsQ0FBRWhCLFNBQU8sQ0FBQztBQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUNpQixnQkFBQSxDQUFBLENBQXNCLENBQUEsQ0FBRWpCLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQyxDQUFBOzs7Ozs7Ozs7OztFQ0pyRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07RUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBb0I7RUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUdRLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFxQztFQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLElBQUksQ0FBQSxDQUFBLENBQUc7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztNQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7VUFDakMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7TUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztVQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFFO2NBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2tCQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLE9BQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxRQUFRLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUM7QUFDN0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBRTtzQkFDdEIsT0FBTyxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixPQUFPLENBQUM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7dUJBQ3FCO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLE9BQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxRQUFRLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUM7QUFDN0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLFNBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDM0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEVBQUUsQ0FBQSxDQUFFO2tCQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUlULENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUM7QUFDcEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsRUFBRSxDQUFBLENBQUU7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE9BQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLElBQUksQ0FBQztBQUNsRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7bUJBQ2lCO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUM7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztNQUN0RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztFQUN6QixDQUFDO0FBQ0QsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUMvQixDQUFBOzs7Ozs7Ozs7Ozs7OztBQy9DQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNVLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM3RDs7Ozs7Ozs7Ozs7O0VDREEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQVYsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0VBQzdEQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkJBLFNBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBeUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO01BQzVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxJQUFJLENBQUM7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsRUFBRSxDQUFBLENBQUU7VUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxJQUFJLENBQUM7VUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUN0RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBRTtjQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUlBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQztBQUN4RyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixPQUFPLENBQUMsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQyxDQUFDLGdDQUFnQyxDQUFBLENBQUUsQ0FBQSxDQUFFLE9BQU8sQ0FBQztBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFFO1VBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxJQUFJLENBQUM7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsVUFBVSxDQUFDO0FBQ2hGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFDLENBQUMsOEJBQThCLENBQUEsQ0FBRSxDQUFBLENBQUUsS0FBSyxDQUFDO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEVBQUUsQ0FBQSxDQUFFO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Y0FDRDtrQkFDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO2VBQzNDO1dBQ0o7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtFQUNmLENBQUM7QUFDRCxDQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztBQUN2QyxDQUFBLENBQUEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztNQUN4RSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO1VBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQTtVQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0M7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsU0FBUyxDQUFDO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7Y0FDOUIsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUM7QUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsT0FBTyxDQUFDO2tCQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFJQSxTQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQztjQUNuRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1VBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQThCO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLElBQUksQ0FBQztjQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1VBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLElBQUksQ0FBQztjQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7RUFDQSxDQUFDO0FBQ0QsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7QUFDM0MsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7OztBQ3pEQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMyRSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtDQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDO0tBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUM7Q0FDbkMsQ0FBQztBQUNELENBQUFELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQVM7QUFDN0I7Ozs7Ozs7Ozs7O0FDUkEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDbEMsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxpQkFBaUIsQ0FBQztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBO0FBQ0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUIsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQWlCO0FBQzdDOzs7Ozs7Ozs7Ozs7Ozs7QUNqQkEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN0QixDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUM7S0FDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQztBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7QUFDQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFLO0FBQ3JCOzs7Ozs7Ozs7QUNqQkEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0NBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUdoRixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBa0I7QUFDbEMsQ0FBQSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxFQUFFLENBQUM7Q0FDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO0FBQ25ELENBQUEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO09BQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUk7Q0FDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7Q0FDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDakYsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUM7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFFO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO1NBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxTQUFTLENBQUM7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQztBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUM7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsSUFBSSxDQUFDO1NBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQztTQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQzNGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsUUFBUSxDQUFDO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFHO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQztBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO1NBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7U0FDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBRSxHQUFHLENBQUM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRztBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUM7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFBLENBQUEsQ0FBRztTQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQztBQUMvRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUMsQ0FBQztTQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUMsQ0FBQztTQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUMsQ0FBQztTQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQyxDQUFDO1NBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQyxDQUFDO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUM7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFDLENBQUM7U0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQyxDQUFDO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQztTQUNkLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLEdBQUcsQ0FBQSxDQUFFO1NBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztTQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFDLENBQUM7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDO1NBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFBLENBQUU7U0FDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQyxDQUFDO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQztTQUNkLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLEdBQUcsQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQyxDQUFDO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQztTQUNkLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLEdBQUcsQ0FBQSxDQUFFO1NBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUM7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUMsQ0FBQztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUM7U0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxHQUFHLENBQUEsQ0FBRTtTQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFDO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBRTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsTUFBTSxDQUFDO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUM7U0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDO1NBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxHQUFHLENBQUM7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLG9CQUFvQixDQUFDO1NBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUM7U0FDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFFLFNBQVMsQ0FBQztBQUNsRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Y0FDYSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUM7QUFDL0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLE1BQU0sQ0FBQztBQUNwRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUEsQ0FBRTthQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDcEgsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLEdBQUcsQ0FBQztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQztTQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7YUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7aUJBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2tCQUNpQjtpQkFDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFFO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTt5QkFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLEdBQUcsQ0FBQztBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUU7QUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE0QixHQUFHLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTRCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDdkYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25FLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtzQkFDcUI7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25FLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUM7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsTUFBTSxDQUFDO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQztTQUNkLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQztTQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBO0FBQ0EsQ0FBQWdGLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTTtBQUN2Qjs7Ozs7Ozs7O0FDNVBBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07Q0FDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHbEYsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQTBDO0FBQzNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWE7QUFDMUMsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sZUFBZSxDQUFDO0tBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxLQUFLLENBQUM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxLQUFLLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO1NBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsS0FBSyxDQUFDO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxLQUFLLENBQUM7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO2lCQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO2FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtpQkFDWCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO3FCQUNOLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUMsSUFBSSxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUE7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEtBQUssQ0FBQztxQkFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxLQUFLLENBQUM7QUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQSxDQUFBLENBQUc7U0FDUixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQztBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUEsQ0FBRztBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQjtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFBLENBQUEsQ0FBRztBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxJQUFJLENBQUM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxJQUFJLENBQUM7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLElBQUksQ0FBQztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLEdBQUcsQ0FBQztBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsR0FBRyxDQUFDO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLEdBQUcsQ0FBQztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7U0FDYixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLEdBQUcsQ0FBQztBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsR0FBRyxDQUFDO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjthQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQztTQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO2FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztTQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztTQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO1NBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLEdBQUcsQ0FBQztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxHQUFHLENBQUM7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUMsQ0FBQztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFFO2FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLDJCQUEyQixDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTthQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO2FBQzlCLENBQUMsSUFBSSxDQUFDO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO2FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7YUFDOUIsQ0FBQyxJQUFJLENBQUM7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Y0FDYTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDO2FBQ3pDLENBQUMsSUFBSSxDQUFDO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsR0FBRyxDQUFDO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLEdBQUcsQ0FBQztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsSUFBSSxDQUFDO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBRztBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFDLENBQUM7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUM7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUU7YUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSwyQkFBMkIsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7YUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQzthQUM5QixDQUFDLElBQUksQ0FBQztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTthQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO2FBQzlCLENBQUMsSUFBSSxDQUFDO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2NBQ2E7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQzthQUN6QyxDQUFDLElBQUksQ0FBQztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO1NBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxNQUFNLENBQUM7U0FDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07U0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTJCLE1BQU0sQ0FBQztjQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTthQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7Y0FDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLE1BQU0sQ0FBQztjQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxNQUFNLENBQUM7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxNQUFNLENBQUM7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQztBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUM7U0FDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO2FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7YUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQzthQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTthQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtjQUNhO2FBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxZQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQztTQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsMkJBQTJCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO2NBQzlELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7Y0FDakMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07YUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07U0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTJCLE1BQU0sQ0FBQztjQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTthQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7Y0FDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLE1BQU0sQ0FBQztBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLE1BQU0sQ0FBQztBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLE1BQU0sQ0FBQztBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxHQUFHLENBQUM7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLE1BQU0sQ0FBQztTQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO2FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtTQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQixNQUFNLENBQUM7Y0FDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7YUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO2NBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxNQUFNLENBQUM7Y0FDekIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsTUFBTSxDQUFDO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsTUFBTSxDQUFDO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtTQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsTUFBTSxDQUFDO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEdBQUcsQ0FBQzthQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07U0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkIsTUFBTSxDQUFDO2NBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO2FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQztjQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsTUFBTSxDQUFDO2NBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLE1BQU0sQ0FBQztBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLE1BQU0sQ0FBQztBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLE1BQU0sQ0FBQztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksYUFBYSxDQUFBLENBQUEsQ0FBRztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxJQUFJLENBQUM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsR0FBRyxDQUFDO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxLQUFLLENBQUM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtTQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQixHQUFHLENBQUM7Y0FDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7YUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDO2NBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxHQUFHLENBQUM7Y0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsR0FBRyxDQUFDO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsR0FBRyxDQUFDO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO1NBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQixLQUFLLENBQUM7Y0FDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO2FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksYUFBYSxDQUFBLENBQUEsQ0FBRztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxJQUFJLENBQUM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLGlCQUFpQixDQUFDO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUEsQ0FBQSxDQUFHO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsaUJBQWlCLENBQUM7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLGFBQWEsQ0FBQSxDQUFBLENBQUc7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUMsSUFBSSxDQUFDO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxpQkFBaUIsQ0FBQztBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFBLENBQUEsQ0FBRztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLGlCQUFpQixDQUFDO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxhQUFhLENBQUEsQ0FBQSxDQUFHO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLElBQUksQ0FBQztBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxpQkFBaUIsQ0FBQztBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFBLENBQUEsQ0FBRztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUI7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLGFBQWEsQ0FBQSxDQUFBLENBQUc7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUMsSUFBSSxDQUFDO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsaUJBQWlCLENBQUM7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTtBQUNBLENBQUFrRixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFlO0FBQ3pDOzs7Ozs7Ozs7OztBQy9VQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM3RCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDOUIsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGFBQWEsQ0FBQztLQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTtBQUNBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBYTtBQUNyQzs7Ozs7Ozs7O0FDbEJBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0NBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR3RGLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUE2QztDQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUEsQ0FBR1EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQStCO0NBQzNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUE0QjtDQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQTJCO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxlQUFlLENBQUM7QUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO1NBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtTQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUE7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLEtBQUssQ0FBQztBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsS0FBSyxDQUFDO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztpQkFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQzthQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7aUJBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztxQkFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLElBQUksQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEtBQUssQ0FBQztBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsS0FBSyxDQUFDO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsS0FBSyxDQUFDO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixLQUFLLENBQUEsQ0FBQSxDQUFHO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEtBQUssQ0FBQztxQkFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQjtBQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNsRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUU7QUFDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUc7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7QUFDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7cUJBQ29CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7eUJBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTRCLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEtBQUssQ0FBQztBQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxLQUFLLENBQUM7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE0QixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxLQUFLLENBQUM7eUJBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNEIsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsS0FBSyxDQUFDO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsS0FBSyxDQUFDO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUU7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLEtBQUssQ0FBQzthQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLEtBQUssQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO1NBQ2QsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxLQUFLLENBQUM7YUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUM7U0FDMUIsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEdBQUcsQ0FBQztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxLQUFLLENBQUM7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFBLENBQUc7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUMsSUFBSSxDQUFDO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTtBQUNBLENBQUFzRSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBVztBQUNqQzs7Ozs7Ozs7Ozs7Ozs7O0FDOUVBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUc7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFFO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtLQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQyxDQUFBLENBQUE7VUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBO21CQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7dUJBQ0ksQ0FBQSxDQUFBO3VCQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxjQUFjLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQTtDQUNsRCxDQUFDO0FBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUM3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNoQkEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUEsQ0FBQSxDQUFHQSxXQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNQyxhQUFXLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFDO1NBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO2FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxLQUFLLENBQUM7Q0FDNUMsQ0FBQztBQUNELENBQUFELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFXO0NBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGdCQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7YUFDWixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUU7a0JBQ1I7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUM7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtxQkFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQztxQkFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFDLENBQUM7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2NBQ2E7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtpQkFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQztpQkFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO2lCQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDO2lCQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1VBQ1M7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUM7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFDO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUM7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO2FBQ3RFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUM7YUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTthQUNaLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7aUJBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQztrQkFDOUI7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUM7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTtxQkFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQztxQkFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUM7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUM7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7aUJBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUM7aUJBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFDO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7aUJBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUM7aUJBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Y0FDYTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFDO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFDO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFDO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFDO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO2lCQUN0RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDO2lCQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRTtpQkFDYixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7c0JBQzFDO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUM7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO3lCQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDO3lCQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO3FCQUNvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDbEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUM7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUM7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7cUJBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBRTtxQkFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7aUJBQ2dCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO3FCQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQ3JFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFDO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUU7cUJBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBRTtxQkFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7aUJBQ2dCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7a0JBQ2lCO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFDO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFDO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFDO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFDO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO3FCQUN0RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUU7cUJBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUU7cUJBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO3lCQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7MEJBQ3REO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQztBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTs2QkFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFFOzZCQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQ2xGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO3NCQUNxQjtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFDO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUM7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTt5QkFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFFO3lCQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO3FCQUNvQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUNyRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFDO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRTt5QkFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFFO3lCQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUNwRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFDO0FBQ0QsQ0FBQUQsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQzNDOzs7Ozs7Ozs7OztBQ25MQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtLQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFDO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTthQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBRTtpQkFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2tCQUNpQjtpQkFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBRTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtzQkFDcUI7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBRTt5QkFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7eUJBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3pHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7NkJBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87NkJBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUMxRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTRCLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQztBQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTRCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQztBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOzhCQUM2Qjs2QkFDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUM7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxZQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLE1BQU0sQ0FBQztDQUM3QyxDQUFDO0FBQ0Q7Ozs7Ozs7OztBQ3ZDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztDQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHeEYsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBZ0I7Q0FDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBR1EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXlCO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQ08sQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsR0FBZ0IsQ0FBQztBQUN2RCxDQUFBLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztDQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtDQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLGdCQUFnQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsTUFBTSxDQUFDO0FBQzlJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLFdBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLE1BQU0sQ0FBQztBQUN2SSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFdBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07T0FDakUsQ0FBQSxDQUFBLENBQUE7V0FDSSxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUc7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO2NBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO1dBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87Q0FDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO1NBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxZQUFZLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLE1BQU0sQ0FBQztLQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtTQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxNQUFNLENBQUM7S0FDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxXQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLE1BQU0sQ0FBQztDQUMxQyxDQUFDO0FBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUN6Qjs7Ozs7Ozs7O0FDeEJBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07Q0FDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBR2YsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBZ0I7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDUSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxHQUFnQixDQUFDO0FBQ3ZELENBQUEsVUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDbEM7Ozs7Ozs7OztBQ0xBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ2tGLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM3RCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07Q0FDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcxRixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBNEI7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUM7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsTUFBTSxDQUFBLENBQUU7QUFDMUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE1BQU0sQ0FBQztBQUM5RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRztBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUM7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRztTQUNILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQztBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBRTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFDLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHO1NBQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRztBQUN0RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxTQUFTLENBQUM7QUFDeEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBRTtTQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUM7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUc7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUM7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUc7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUM7U0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUc7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUM7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUc7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBRztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRztBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQztBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBRztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRztBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO1NBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxHQUFHLENBQUM7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUc7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQztBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7U0FDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLEdBQUcsQ0FBQztBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsSUFBSSxDQUFDO0FBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztTQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7YUFDN0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBRztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7QUFDQSxDQUFBMEYsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFNO0FBQ3ZCOzs7Ozs7Ozs7Ozs7Ozs7QUMvSUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07S0FDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQztBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLE1BQU0sQ0FBQzthQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUU7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUM7YUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDO2FBQ3JFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBRTthQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTthQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDL0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO2lCQUNmLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO2lCQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDOUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUM7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLElBQUksQ0FBQztBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2tCQUNpQjtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxJQUFJLENBQUM7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2NBQ2E7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxNQUFNLENBQUM7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRztDQUNkLENBQUM7QUFDRDs7Ozs7Ozs7O0FDekNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0NBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUc1RixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFnQjtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUNRLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLEdBQTJCLENBQUM7Q0FDbEUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBRSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQztBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFHO0FBQzlDLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFNBQVMsQ0FBQztBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0saUJBQWlCLENBQUM7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtTQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQyxDQUFDLENBQUEsQ0FBRTtBQUNsRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxFQUFFLENBQUM7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUU7U0FDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUU7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUM7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO2lCQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixTQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7YUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztTQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO1NBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9DLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ25GLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRTtTQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFFO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7U0FDakQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxJQUFJLENBQUM7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxVQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUM7QUFDbEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEtBQUssQ0FBQztBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7QUFDQSxDQUFBb0YsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUIsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQWlCO0FBQzdDOzs7Ozs7Ozs7QUM1REEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0NBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUEsQ0FBQSxDQUFHN0YsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQThCO0FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsaUJBQWlCLENBQUEsQ0FBRTtBQUM3RDs7Ozs7Ozs7O0FDSEEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDOEYsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07Q0FDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRzlGLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQWdCO0NBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBR1EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXVDO0NBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUEsQ0FBQSxDQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBK0I7Q0FDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUEyQjtDQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUEwQztBQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLHlCQUF5QixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQ0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsR0FBZ0UsQ0FBQztBQUMzSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGVBQWUsQ0FBQztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDaEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsS0FBSyxDQUFDO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxLQUFLLENBQUM7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRztBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsRUFBRSxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUM7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0I7YUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxLQUFLLENBQUM7QUFDaEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEtBQUssQ0FBQztBQUM5RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtjQUNhO2FBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEtBQUssQ0FBQztBQUM5RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsS0FBSyxDQUFDO0FBQzlGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUM7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0I7YUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxLQUFLLENBQUM7QUFDaEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEtBQUssQ0FBQztBQUM5RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtjQUNhO2FBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEtBQUssQ0FBQztBQUM5RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsS0FBSyxDQUFDO0FBQzlGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO1NBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxFQUFFLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxHQUFHLENBQUEsQ0FBRTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxHQUFHLENBQUEsQ0FBRTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQSxDQUFFO2lCQUNILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUU7aUJBQ0gsT0FBTyxDQUFBLENBQUU7YUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2NBQ2E7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsR0FBRyxDQUFBLENBQUU7QUFDM0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtrQkFDaUI7aUJBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxHQUFHLENBQUEsQ0FBRTtpQkFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDdEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUM7QUFDcEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Y0FDYTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRTtpQkFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNyRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2tCQUNpQjtpQkFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEdBQUcsQ0FBQSxDQUFFO2lCQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0Isd0JBQXdCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUM1RyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtTQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEtBQUssQ0FBQztBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUE7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBRTtpQkFDSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUU7aUJBQ0gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUU7aUJBQ0gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQzthQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUU7aUJBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUM7aUJBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7aUJBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCO0FBQ25FLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsWUFBWSxDQUFBLENBQUU7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUM7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsSUFBSSxDQUFDO2lCQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsTUFBTSxDQUFDO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFlBQVksQ0FBQSxDQUFBLENBQUc7U0FDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEVBQUUsQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFDO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDWCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEtBQUssQ0FBQztBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBQSxDQUFHO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEVBQUUsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFDO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsS0FBSyxDQUFDO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtTQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsS0FBSyxDQUFDO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQSxDQUFFO2lCQUNILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQSxDQUFFO2lCQUNILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUU7aUJBQ0gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUM7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBRTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUM7YUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFFO2lCQUNMLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsWUFBWSxDQUFBLENBQUU7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtTQUNkLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEVBQUUsQ0FBQSxDQUFFO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEdBQUcsQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEdBQUcsQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUU7aUJBQ0gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUM7YUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxZQUFZLENBQUEsQ0FBQSxDQUFHO1NBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxFQUFFLENBQUEsQ0FBRTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxLQUFLLENBQUM7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtTQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsS0FBSyxDQUFDO1NBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLE1BQU0sQ0FBQztBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTtTQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtTQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7YUFDM0IsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFDO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFlBQVksQ0FBQSxDQUFBLENBQUc7U0FDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7U0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUM3QixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUM7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBRztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUU7YUFDWixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEtBQUssQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEVBQUUsQ0FBQSxDQUFFO3FCQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixLQUFLLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxHQUFHLENBQUEsQ0FBRTtxQkFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsS0FBSyxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsR0FBRyxDQUFBLENBQUU7cUJBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEtBQUssQ0FBQSxDQUFFO3FCQUNILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUM7cUJBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUEsQ0FBRTtpQkFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUEsQ0FBRTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2NBQ2EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO1NBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxZQUFZLENBQUEsQ0FBQSxDQUFHO1NBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO1NBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCO0FBQzNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFBLENBQUU7YUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHO1NBQ0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxFQUFFLENBQUEsQ0FBRTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDO1NBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxLQUFLLENBQUM7U0FDckMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7YUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUM7U0FDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7QUFDcEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7U0FDWCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxLQUFLLENBQUM7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUU7aUJBQ0gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQSxDQUFFO2lCQUNILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQztBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQSxDQUFFO2lCQUNILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQztBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQzthQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDO0FBQzdFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBO2FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7YUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO2FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7YUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUM7YUFDOUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTthQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxHQUFHLENBQUEsQ0FBRTthQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxHQUFHLENBQUEsQ0FBRTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLEtBQUssQ0FBQztBQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUc7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTtBQUNBLENBQUE0RSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFlO0FBQ3pDOzs7Ozs7Ozs7QUMvVkEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07Q0FDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBR2hHLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUE0QjtDQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBR1EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQTJCO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxlQUFlLENBQUM7QUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFBLENBQUEsQ0FBRztTQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsRUFBRSxDQUFBLENBQUU7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUM7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsS0FBSyxDQUFDO2FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtTQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsS0FBSyxDQUFDO1NBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLE1BQU0sQ0FBQztBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEtBQUssQ0FBQztBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFlBQVksQ0FBQSxDQUFBLENBQUc7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTtTQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0I7QUFDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUEsQ0FBRTthQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUEsQ0FBRTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxLQUFLLENBQUM7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUU7U0FDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7YUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHO1NBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUM7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUM7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLEtBQUssQ0FBQztpQkFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEtBQUssQ0FBQztpQkFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEtBQUssQ0FBQztpQkFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEtBQUssQ0FBQztpQkFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEtBQUssQ0FBQztpQkFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEtBQUssQ0FBQztpQkFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEtBQUssQ0FBQztpQkFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO1NBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEVBQUUsQ0FBQSxDQUFFO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEdBQUcsQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEdBQUcsQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUU7aUJBQ0gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUM7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBRTtpQkFDSCxPQUFPLENBQUEsQ0FBRTthQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtTQUNiLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO2FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUE7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBRTtpQkFDSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUM7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBRTtpQkFDSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUM7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBRTtpQkFDSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUM7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBRTtpQkFDSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUM7YUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7U0FDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLEtBQUssQ0FBQztTQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUM7Y0FDdkI7YUFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtpQkFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFlBQVksQ0FBQSxDQUFBLENBQUc7U0FDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEVBQUUsQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFDO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDWCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxLQUFLLENBQUM7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtTQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsS0FBSyxDQUFDO1NBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQztjQUN2QjthQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2lCQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUU7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksWUFBWSxDQUFBLENBQUEsQ0FBRztTQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsRUFBRSxDQUFBLENBQUU7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUM7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNYLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEtBQUssQ0FBQztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO1NBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxLQUFLLENBQUM7U0FDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsTUFBTSxDQUFDO2NBQ2pCO2FBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7aUJBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtTQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsS0FBSyxDQUFDO1NBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO2FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO2NBQzVCO2FBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCO2lCQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7aUJBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtpQkFDWCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUU7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO1NBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxLQUFLLENBQUM7U0FDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNYLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQTthQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDO2lCQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDO2lCQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDO2lCQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDO2lCQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO2FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE1BQU0sQ0FBQSxDQUFFO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEtBQUssQ0FBQztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07U0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO1NBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUM7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEtBQUssQ0FBQztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFBLENBQUEsQ0FBRztTQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsRUFBRSxDQUFBLENBQUU7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUM7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLEtBQUssQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxLQUFLLENBQUM7YUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsS0FBSyxDQUFDO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLGtCQUFrQixDQUFBLENBQUEsQ0FBRztTQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLElBQUksQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFDO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFO2FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFdBQVcsQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUM7U0FDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQztBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDbkYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7U0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxLQUFLLENBQUM7U0FDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLE1BQU0sQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUU7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7U0FDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsa0JBQWtCLENBQUEsQ0FBRTtBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLGlCQUFpQixDQUFBLENBQUEsQ0FBRztTQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7U0FDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0I7QUFDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUEsQ0FBRTthQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxrQkFBa0IsQ0FBQSxDQUFFO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBRztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtTQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLEtBQUssQ0FBQztTQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsTUFBTSxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFFO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO1NBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtTQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7YUFDM0IsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixFQUFFLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBRztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksaUJBQWlCLENBQUEsQ0FBQSxDQUFHO1NBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtTQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQzdCLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsRUFBRSxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUU7U0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxFQUFFLENBQUEsQ0FBRTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQztTQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEVBQUUsQ0FBQSxDQUFFO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEdBQUcsQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEdBQUcsQ0FBQSxDQUFFO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUU7aUJBQ0gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUM7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBRTtpQkFDSCxPQUFPLENBQUEsQ0FBRTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFBLENBQUEsQ0FBRztBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUEsQ0FBQSxDQUFHO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUI7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFVBQVUsQ0FBQSxDQUFBLENBQUc7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQjtBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsVUFBVSxDQUFBLENBQUU7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFBLENBQUU7YUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTthQUNmLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxVQUFVLENBQUEsQ0FBRTtTQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTthQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUU7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLE9BQU8sQ0FBQztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxPQUFPLENBQUM7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBO0FBQ0EsQ0FBQXdGLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFXO0FBQ2pDOzs7Ozs7Ozs7Ozs7RUN4WUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQWxHLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztFQUM3REEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QkEsU0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBcUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztNQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsRUFBRSxDQUFBLENBQUU7VUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztVQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3RFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUlBLFNBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLFNBQVMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBRTtBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQztBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFDLENBQUMsZ0NBQWdDLENBQUEsQ0FBRSxDQUFBLENBQUUsT0FBTyxDQUFDO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUU7VUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQztBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxVQUFVLENBQUM7QUFDaEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUMsQ0FBQyw4QkFBOEIsQ0FBQSxDQUFFLENBQUEsQ0FBRSxLQUFLLENBQUM7QUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsRUFBRSxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtjQUNEO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFDO2VBQzFEO1dBQ0o7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtFQUNmLENBQUM7QUFDRCxDQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQy9CLENBQUEsQ0FBQSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxTQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO01BQzFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7VUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBO1VBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQztBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxTQUFTLENBQUM7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLE9BQU8sQ0FBQztrQkFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUM7Y0FDckYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtVQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE4QjtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtjQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxJQUFJLENBQUM7Y0FDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtVQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUUsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtjQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxJQUFJLENBQUM7Y0FDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0VBQ0EsQ0FBQztBQUNELENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNuQyxDQUFBOzs7Ozs7Ozs7Ozs7QUN6REEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0NBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQTBDO0FBQzNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQztBQUMvQzs7Ozs7Ozs7O0FDSkEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQSxNQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxrQkFBd0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxzQkFBOEIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTRCLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07Q0FDOUgsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXNEO0NBQzVFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUdRLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFzRDtDQUM1RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBR08sQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWlCO0NBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFrQjtDQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFtQjtDQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7QUFDOUQsQ0FBQSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsV0FBVyxDQUFBLENBQUU7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFHLENBQUMsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxRQUFRLENBQUM7Q0FDbkMsQ0FBQztBQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTRCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0I7QUFDbkQsQ0FBQSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEtBQUssQ0FBQztLQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsT0FBTyxDQUFDO0NBQ25ELENBQUM7QUFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBOEIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0I7QUFDdkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0FBQzNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFFBQVEsQ0FBQztDQUNuQyxDQUFDO0FBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQzNDLENBQUEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0tBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsS0FBSyxDQUFDO0tBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLFlBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0NBQ3RELENBQUM7QUFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQjtBQUMvQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzdCQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFHLFNBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtFO0FBQ3JGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNyRjs7Ozs7Ozs7O0FDSkEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDaUYsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0NBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBR2xHLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFzQjtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNbUcsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN2RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBRTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLGtDQUFrQyxDQUFDO0tBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBRTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUU7YUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQztBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7S0FDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUM7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztTQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsS0FBSyxDQUFDO2FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQzthQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7YUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDO2FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQzthQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUM7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxVQUFVLENBQUM7YUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxZQUFZLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7aUJBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2tCQUNpQjtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQztpQkFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFDO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtjQUNhLENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxVQUFVLENBQUM7YUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQzthQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUM7YUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFDO2FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUksWUFBWSxDQUFBLENBQUU7aUJBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLE1BQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO2lCQUNoRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUM7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtrQkFDaUI7aUJBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDO2lCQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUM7aUJBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7aUJBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0tBQ3JCLENBQUs7Q0FDTCxDQUFDO0FBQ0QsQ0FBQUQsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUIsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQWlCO0FBQzdDOzs7Ozs7Ozs7QUM1REEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtDQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUEsQ0FBR25HLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUE4QjtBQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFDLGlCQUFpQixDQUFBLENBQUEsQ0FBRztBQUNsRTs7Ozs7Ozs7O0FDSkEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDb0csQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0NBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUdwRyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBOEM7QUFDcEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sV0FBVyxDQUFDO0tBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO1NBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsS0FBSyxDQUFDO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtTQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7U0FDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsS0FBSyxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxLQUFLLENBQUM7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEtBQUssQ0FBQzthQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7aUJBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEtBQUssQ0FBQztBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsS0FBSyxDQUFDO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsS0FBSyxDQUFDO3FCQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO3lCQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDdkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE0QixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxLQUFLLENBQUM7QUFDdkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsS0FBSyxDQUFDO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNEIsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsS0FBSyxDQUFDO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsS0FBSyxDQUFDO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssV0FBVyxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxLQUFLLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFBLENBQUEsQ0FBRztTQUNSLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUEsQ0FBQSxDQUFHO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtTQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxNQUFNLENBQUM7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQztTQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUM3QixDQUFDLElBQUksQ0FBQztTQUNOLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDOUIsQ0FBQyxJQUFJLENBQUM7U0FDTixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQzlCLENBQUMsSUFBSSxDQUFDO1NBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUM5QixDQUFDLElBQUksQ0FBQztTQUNOLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDOUIsQ0FBQyxJQUFJLENBQUM7U0FDTixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQzlCLENBQUMsSUFBSSxDQUFDO1NBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUM5QixDQUFDLElBQUksQ0FBQztTQUNOLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQzdCLENBQUMsSUFBSSxDQUFDO1NBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDekIsQ0FBQyxJQUFJLENBQUM7U0FDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7YUFDSixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLFFBQVEsQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEdBQUcsQ0FBQztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsS0FBSyxDQUFDO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQztBQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQztTQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUM3QixDQUFDLElBQUksQ0FBQztTQUNOLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDOUIsQ0FBQyxJQUFJLENBQUM7U0FDTixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQzlCLENBQUMsSUFBSSxDQUFDO1NBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUM5QixDQUFDLElBQUksQ0FBQztTQUNOLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDOUIsQ0FBQyxJQUFJLENBQUM7U0FDTixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQzlCLENBQUMsSUFBSSxDQUFDO1NBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUM5QixDQUFDLElBQUksQ0FBQztTQUNOLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDOUIsQ0FBQyxJQUFJLENBQUM7U0FDTixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQzlCLENBQUMsSUFBSSxDQUFDO1NBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDekIsQ0FBQyxJQUFJLENBQUM7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLFdBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQztTQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO1NBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQzthQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRTtpQkFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUM7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO3FCQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTt5QkFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtpQkFDZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUU7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtxQkFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxHQUFHLENBQUM7cUJBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUM7cUJBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixLQUFLLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7YUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxHQUFHLENBQUM7U0FDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsT0FBTyxDQUFDO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07U0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRTthQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUMsQ0FBQztBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7aUJBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7cUJBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFDO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUU7YUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQzthQUNULENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUM7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLGlCQUFpQixDQUFBLENBQUEsQ0FBRztTQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO1NBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtTQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUM7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQztBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxHQUFHLENBQUM7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxLQUFLLENBQUM7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksaUJBQWlCLENBQUEsQ0FBQSxDQUFHO1NBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxvQkFBb0IsQ0FBQSxDQUFBLENBQUc7U0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksYUFBYSxDQUFBLENBQUEsQ0FBRztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLHlCQUF5QixDQUFDO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyx5QkFBeUIsQ0FBQztBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFBLENBQUEsQ0FBRztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLHlCQUF5QixDQUFDO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxhQUFhLENBQUEsQ0FBQSxDQUFHO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMseUJBQXlCLENBQUM7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLHlCQUF5QixDQUFDO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxXQUFXLENBQUEsQ0FBQSxDQUFHO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMseUJBQXlCLENBQUM7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLGFBQWEsQ0FBQSxDQUFBLENBQUc7U0FDWixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyx5QkFBeUIsQ0FBQztBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFBLENBQUEsQ0FBRztTQUNWLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxhQUFhLENBQUEsQ0FBQSxDQUFHO1NBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyx5QkFBeUIsQ0FBQztBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFBLENBQUEsQ0FBRztTQUNWLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQTtBQUNBLENBQUFvRyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBVztBQUNqQzs7Ozs7Ozs7Ozs7Ozs7O0FDN1FBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEyQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtDQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUd0RyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBc0I7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTXVHLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQW1CLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDekUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUU7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxrQ0FBa0MsQ0FBQztLQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBRTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtTQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFDO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7U0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFDLENBQUM7U0FDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQzthQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Y0FDYTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDO2FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO2lCQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFHO3FCQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQztBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsS0FBSyxDQUFDO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyw4Q0FBOEMsQ0FBQztBQUMzRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztTQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLFlBQVksQ0FBQztTQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztTQUNULENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtTQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO2FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQyxDQUFDO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBRTthQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTthQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxNQUFNLENBQUM7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsTUFBTSxDQUFDO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE1BQU0sQ0FBQztBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxNQUFNLENBQUM7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFDO0FBQ3hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxvQkFBb0IsQ0FBQztBQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUM7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUM7QUFDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO2FBQ3JDLENBQUMsSUFBSSxDQUFDO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7YUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLE9BQU8sQ0FBQztBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7YUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztBQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxNQUFNLENBQUM7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsTUFBTSxDQUFDO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE1BQU0sQ0FBQzthQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsb0JBQW9CLENBQUM7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBRztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsT0FBTyxDQUFDO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxNQUFNLENBQUM7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE1BQU0sQ0FBQztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFDO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxvQkFBb0IsQ0FBQztBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUc7S0FDbEIsQ0FBSztDQUNMLENBQUM7QUFDRCxDQUFBRCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkIsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQW1CO0FBQ2pEOzs7Ozs7Ozs7QUNyRkEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtDQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQSxDQUFBLENBQUd2RyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBZ0M7QUFDOUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQyxtQkFBbUIsQ0FBQSxDQUFBLENBQUc7QUFDeEU7Ozs7Ozs7Ozs7O0FDSkEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDaEMsQ0FBQSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUM7S0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBRTthQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFFO2FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFDO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUc7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxjQUFjLENBQUM7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQztDQUNaLENBQUM7QUFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWU7QUFDekM7Ozs7Ozs7Ozs7RUNwQkEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQUQsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0VBQzdEQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQkEsU0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBa0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07RUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFtRDtFQUN4RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUdRLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUEwQztFQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBR08sQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWdEO0VBQ3hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBaUI7RUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTJCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QjtBQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBRztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0VBQ2YsQ0FBQztBQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUE7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtNQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQztNQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOzBCQUNILENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFDOzBCQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOzBCQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUU7MEJBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7MEJBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBRTswQkFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTswQkFDSixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFOzBCQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOzBCQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFDOzBCQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTswQkFDSCxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFOzBCQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTswQkFDSCxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFOzBCQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTswQkFDSCxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFFOzBCQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtzQkFDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxjQUFjLENBQUM7QUFDdkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7a0JBQ2dCLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFDO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTttQkFDaUI7a0JBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7c0JBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2tCQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO2tCQUNYLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO3NCQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2VBQ2E7Y0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUU7a0JBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO21CQUNpQjtrQkFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO3VCQUNxQjtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUU7MEJBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7MEJBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3pHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRTs4QkFDZixDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTzs4QkFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE0QixJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUM7QUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTRCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQzs4QkFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOytCQUM2Qjs4QkFDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUM7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztNQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxNQUFNLENBQUM7RUFDN0MsQ0FBQztBQUNELENBQUEsQ0FBQWpCLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxXQUFXLENBQUM7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFBLENBQUEsQ0FBRztVQUNWLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLE1BQU0sQ0FBQSxDQUFFO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO01BQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxLQUFLLENBQUM7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtNQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEtBQUssQ0FBQztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRztVQUNOLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUM7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtjQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7a0JBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFVBQVUsQ0FBQSxDQUFFO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLElBQUksQ0FBQSxDQUFBLENBQUc7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixPQUFPLENBQUEsQ0FBQSxDQUFHO3NCQUNkLENBQUEsQ0FBQSxDQUFBLENBQUksV0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLE1BQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFBLENBQUU7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7Y0FDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM3RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxjQUFjLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksY0FBYyxDQUFBLENBQUEsQ0FBRztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUM7VUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUM7VUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFFO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBRTtzQkFDSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7a0JBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztzQkFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHO1VBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxjQUFjLENBQUM7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHO1VBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxjQUFjLENBQUM7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBQSxDQUFHO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN2RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxjQUFjLENBQUM7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUc7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtVQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7Y0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLGNBQWMsQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztVQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7VUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDN0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFDO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxFQUFFLENBQUM7Y0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUc7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsY0FBYyxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7VUFDUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7VUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDN0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFDO2NBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztjQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxjQUFjLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtVQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztVQUNkLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUM3RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUM7Y0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztjQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxjQUFjLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtVQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztVQUNkLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUM3RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxFQUFFLENBQUM7Y0FDekMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUc7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsY0FBYyxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7VUFDUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7VUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDN0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFDO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxFQUFFLENBQUM7Y0FDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUc7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsY0FBYyxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7VUFDUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7VUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDN0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFDO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxFQUFFLENBQUM7Y0FDakQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUc7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsY0FBYyxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7VUFDUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7VUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDN0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFDO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsRUFBRSxDQUFDO2NBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLGNBQWMsQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBRztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1VBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1VBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQzdFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQztjQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsWUFBWSxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO2NBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLGNBQWMsQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBRztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1VBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1VBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQzdFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQztjQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsWUFBWSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO2NBQzdELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLGNBQWMsQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBRztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1VBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7VUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDN0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFDO2NBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQztjQUNsRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxjQUFjLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtVQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1VBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQzdFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQztjQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUM7Y0FDdkUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUc7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsY0FBYyxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7VUFDUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztVQUNkLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUM3RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQztjQUM1RSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxjQUFjLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtVQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1VBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQzdFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQztBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFDO2NBQ2pGLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLGNBQWMsQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBRztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1VBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7VUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDN0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFDO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFDO2NBQ3RGLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLGNBQWMsQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBRztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1VBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7VUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDN0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFDO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQztjQUMzRixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxjQUFjLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtVQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1VBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQzdFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQztBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQztjQUNoRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxjQUFjLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtVQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1VBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQzdFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQztBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUM7Y0FDckcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUc7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsY0FBYyxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7VUFDUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztVQUNkLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUM3RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFDO2NBQzFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLGNBQWMsQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBRztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1VBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7VUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDN0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFDO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUM7Y0FDL0csQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUc7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsY0FBYyxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7VUFDUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztVQUNkLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUM3RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUM7Y0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQztjQUNwSCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxjQUFjLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtVQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1VBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFO0FBQzdFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQztjQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsWUFBWSxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUM7Y0FDekgsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUc7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsY0FBYyxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7VUFDUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztVQUNkLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUM3RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUM7Y0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUM7Y0FDOUgsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUc7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsY0FBYyxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7VUFDUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztVQUNkLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUM3RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUM7Y0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDO2NBQ25JLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLGNBQWMsQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBRztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1VBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7VUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDN0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFDO2NBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDO2NBQ3hJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLGNBQWMsQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBRztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLGNBQWMsQ0FBQztBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztVQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQztVQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsY0FBYyxDQUFDO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUM7QUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksWUFBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQztBQUNsRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtVQUNRLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTJCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFDO0FBQzNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUEsQ0FBQSxDQUFHO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7VUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sZ0JBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUM7VUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO1VBQ3BCLENBQUMsSUFBSSxDQUFBLENBQUU7VUFDUCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLGVBQWUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFFLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUM7QUFDL0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQztBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUc7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxjQUFjLENBQUM7VUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sZ0JBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUM7VUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLGNBQWMsQ0FBQztVQUNuQyxDQUFDLElBQUksQ0FBQSxDQUFFO1VBQ1AsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxlQUFlLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBRSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFDO0FBQy9FLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUM7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFHO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRztBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxjQUFjLENBQUM7VUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO1VBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7VUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUEsQ0FBRTtjQUNULENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFO2NBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUM7Y0FDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUc7Y0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtrQkFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFFO21CQUNULENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsY0FBYyxDQUFDO2NBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFO2NBQ3JCLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQztjQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRztBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxjQUFjLENBQUM7VUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO1VBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7VUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUEsQ0FBRTtjQUNULENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFO2NBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQztjQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBRztjQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2tCQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFBLENBQUU7bUJBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxjQUFjLENBQUM7Y0FDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUU7Y0FDckIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQztjQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLGNBQWMsQ0FBQztjQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUlBLFNBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO2NBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxjQUFjLENBQUM7Y0FDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsY0FBYyxDQUFDO2NBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFO2NBQ3JCLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUEsQ0FBRTtjQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDakMsQ0FBQTs7Ozs7Ozs7OztBQzdsQkEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM3RCxDQUFBLElBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxnQkFBc0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLG9CQUE0QixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07Q0FDdEgsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXNEO0NBQzVFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUdRLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFzRDtDQUM1RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBR08sQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWlCO0NBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFrQjtDQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFtQjtDQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7QUFDOUQsQ0FBQSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsV0FBVyxDQUFBLENBQUU7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUcsQ0FBQyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztLQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFFBQVEsQ0FBQztDQUNuQyxDQUFDO0FBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQjtBQUMvQyxDQUFBLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQztLQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsT0FBTyxDQUFDO0NBQ25ELENBQUM7QUFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTRCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0I7QUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztBQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxRQUFRLENBQUM7Q0FDbkMsQ0FBQztBQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQ3ZDLENBQUEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7S0FDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQztLQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxZQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztDQUN0RCxDQUFDO0FBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7QUFDM0M7Ozs7Ozs7Ozs7RUM3QkEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQWxCLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztFQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFnQjtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUNRLGtCQUFBLENBQUEsQ0FBc0IsQ0FBQSxDQUFFVCxTQUFPLENBQUM7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDZ0IsV0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBRWhCLFNBQU8sQ0FBQztBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUNpQixhQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFFakIsU0FBTyxDQUFDO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQ2tCLFdBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUVsQixTQUFPLENBQUM7QUFDaEQsQ0FBQTs7Ozs7Ozs7Ozs7OztFQ05BLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztFQUM3REEsU0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBOEJBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxpQkFBQSxDQUFBLENBQUEsQ0FBNEJBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLHlCQUErQkEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLGtCQUFBLENBQUEsQ0FBQSxDQUE2QkEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE2QkEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEscUJBQTJCQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkJBLFNBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSwyQkFBaUNBLFNBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBNEJBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE4QkEsOEJBQTRCQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsbUJBQUEsQ0FBQSxDQUFBLENBQThCQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQTRCQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSx1QkFBNkJBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsZUFBQSxDQUFBLENBQUEsQ0FBMEJBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLHdCQUE4QkEsU0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUJBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUJBLFNBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUEwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNqbEIsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUMvQixDQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhO0FBQ3JDLENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0I7RUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFxQztFQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBR1EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWlCO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxhQUFhLENBQUEsQ0FBQSxDQUFHO01BQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtNQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0dBQ25CO0FBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHLENBQUMsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFDO01BQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztFQUNwRCxDQUFDO0FBQ0QsQ0FBQSxDQUFBVCxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlO0VBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNkQsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDOUcsQ0FBQSxDQUFBLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO01BQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtXQUNkO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQztrQkFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtrQkFDVCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO2tCQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Y0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtVQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFJLGVBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsUUFBUSxDQUFDO0FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNmLENBQUEsQ0FBQTtFQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO01BQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLE9BQU8sQ0FBQztBQUNuRCxDQUFBLENBQUE7RUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxPQUFPLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDO0FBQ25KLENBQUEsQ0FBQTtFQUNBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCO01BQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0dBQ25CO0FBQ0QsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF5QixhQUFhLENBQUNBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDO0FBQzVELENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQThCLGtCQUFrQixDQUFDQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUM7QUFDeEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGFBQWEsQ0FBQSxDQUFBLENBQUc7TUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7R0FDbkI7QUFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztNQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7RUFDcEQsQ0FBQztBQUNELENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sU0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUNBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQyxZQUFZLENBQUM7RUFDckRBLFNBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBeUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsU0FBUyxDQUFDO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxvQkFBb0IsQ0FBQSxDQUFBLENBQUc7TUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFHO0dBQ1o7RUFDREEsU0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQTZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxvQkFBb0IsQ0FBQztBQUNoRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sZUFBZSxDQUFBLENBQUEsQ0FBRztNQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtNQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztNQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0dBQ3ZCO0VBQ0RBLFNBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBNEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLGVBQWUsQ0FBQztBQUMxRCxDQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE4QixrQkFBa0IsQ0FBQ0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQztBQUMzRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sZUFBZSxDQUFBLENBQUEsQ0FBRztNQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtNQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEVBQUUsQ0FBQSxDQUFFO01BQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7R0FDbkI7RUFDREEsU0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUE0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsZUFBZSxDQUFDO0FBQzFELENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQThCLGtCQUFrQixDQUFDQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDO0FBQzNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxrQkFBa0IsQ0FBQSxDQUFBLENBQUc7TUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07TUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7TUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFDO0dBQ3ZEO0VBQ0RBLFNBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBNEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLGtCQUFrQixDQUFDO0FBQzdELENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlDLGtCQUFrQixDQUFDQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDO0FBQzlFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxZQUFZLENBQUEsQ0FBQSxDQUFHO01BQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0dBQ2hCO0FBQ0QsQ0FBQSxDQUFBLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLE9BQU8sQ0FBQztBQUNqRixDQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztFQUN2QyxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUlBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUlBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQyxjQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxnQkFBZ0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUM7QUFDek0sQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGNBQWMsQ0FBQSxDQUFBLENBQUc7TUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7R0FDaEI7QUFDRCxDQUFBLENBQUEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsT0FBTyxDQUFDO0FBQ3JGLENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTJCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0VBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7UUFDL0QsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO1FBQ3pDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQztBQUN0RixDQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBR0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0VBQzdDQSxTQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBNkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLGdCQUFnQixDQUFDO0FBQzVELENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBK0Isa0JBQWtCLENBQUNBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQztFQUM3RUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNEI7TUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07TUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7TUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQyxDQUFDO0dBQ3ZEO0FBQ0QsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBOEIsYUFBYSxDQUFDQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDO0FBQ3RFLENBQUE7Ozs7Ozs7Ozs7OztBQzdHQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUN5RyxDQUFBQSxDQUFBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0NBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHeEcsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWlCO0NBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBR1EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQW1CO0NBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBNEQ7QUFDM0UsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQztBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsRUFBRSxDQUFDO0FBQ2hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBQSxDQUFHO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRztBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUc7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBO2lCQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtzQkFDcUI7cUJBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBO2FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUU7aUJBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO3FCQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO3NCQUNxQjtxQkFDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7a0JBQ2lCO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxFQUFFLENBQUM7QUFDdkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLFFBQVEsQ0FBQztBQUMxRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ0EsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUE7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFDO0FBQ3pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixJQUFJLENBQUEsQ0FBQSxDQUFHO3lCQUNILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLE9BQU8sQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVlqQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFDO2FBQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxRQUFRLENBQUM7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUM7YUFDRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSTthQUNBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLFFBQVEsQ0FBQztBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWUEsU0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsR0FBRyxDQUFDO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQSxDQUFBLENBQUc7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsZ0JBQWdCLENBQUM7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsOEJBQThCLENBQUM7QUFDbEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtTQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7YUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2lCQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixJQUFJLENBQUEsQ0FBQSxDQUFHO3lCQUNILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQztBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQzthQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQzthQUNGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJO2FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQztBQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLEVBQUUsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsTUFBTSxDQUFDO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVlBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsRUFBRSxDQUFBLENBQUU7aUJBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQztBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUc7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxnQkFBZ0IsQ0FBQztBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssSUFBSSxDQUFBLENBQUU7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyw4QkFBOEIsQ0FBQztBQUNsRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxZQUFZLENBQUM7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUc7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTzthQUNILENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFBLENBQUU7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO3lCQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7MEJBQ3lCO3lCQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtBQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtpQkFDZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBRTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsTUFBTSxDQUFBLENBQUEsQ0FBRztBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDQSxDQUFhO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFHO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO2FBQzNCLENBQWE7VUFDSjtBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBRztBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHO1NBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUE7QUFDQSxDQUFBMEcsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFHO0FBQ2pCOzs7Ozs7Ozs7Ozs7OztFQ3hMQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBMUcsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0VBQzdEQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CQSxTQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFrQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtFQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDO0FBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtFQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO01BQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7TUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7TUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUU7Y0FDUCxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBRTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUU7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUM7a0JBQ2YsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2tCQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7bUJBQ2lCO2tCQUNELENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBRTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2VBQ2EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUM7Y0FDZixDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUU7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2VBQ2E7Y0FDRCxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBRTtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUU7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7TUFDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO01BQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07TUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFlBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSUEsU0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLEVBQUUsQ0FBQztBQUN4SSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Y0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2NBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Y0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtjQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Y0FDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7TUFDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtFQUNKLENBQUM7QUFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztNQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7TUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7TUFDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7VUFDUSxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7VUFDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO1VBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO1VBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLE1BQU0sQ0FBQSxDQUFFO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDO2tCQUNmLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtrQkFDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7a0JBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDO2tCQUNmLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBRTtrQkFDSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2NBQ1ksQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFFO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtVQUNRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsR0FBRyxDQUFDO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUlBLFNBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQyxDQUFBLENBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEVBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUM7QUFDN0gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQztNQUMzQixDQUFLO0FBQ0wsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLE1BQU0sQ0FBQSxDQUFFO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUM7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1VBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7Y0FDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFFO0FBQzlGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsT0FBTyxDQUFDO2tCQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFFO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUM7c0JBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQTtjQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7a0JBQ2dCLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUcsQ0FBQztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBRztBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUMsQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBRTswQkFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7MkJBQ3lCOzBCQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7MEJBQ2hCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO3VCQUNxQjtzQkFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2tCQUNnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEtBQUssQ0FBQSxDQUFBLENBQUc7a0JBQ0osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFFO2tCQUNILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtjQUNKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtrQkFDZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBRTtzQkFDMUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBRztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFFO3NCQUMxQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFHO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBRTtBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtzQkFDb0IsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUU7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFFO3NCQUMxQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFHO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFFO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO3VCQUNxQjtBQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO3NCQUNvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7c0JBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtrQkFDZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUc7a0JBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtjQUNZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxHQUFHLENBQUEsQ0FBRTtrQkFDTixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUU7a0JBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFBLENBQUEsQ0FBRztrQkFDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBRztBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUU7a0JBQ0gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBQSxDQUFHO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBQSxDQUFHO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBQSxDQUFHO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBQSxDQUFHO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBQSxDQUFHO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBQSxDQUFHO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBQSxDQUFHO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBRTtrQkFDSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Y0FDSixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2tCQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFFO2tCQUNILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7TUFDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7TUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztFQUNsRCxDQUFDO0FBQ0QsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztFQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0M7QUFDbkQsQ0FBQSxDQUFBLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztNQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsT0FBTyxDQUFDO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtjQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUM7Y0FDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBRTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7a0JBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUM7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO21CQUNpQjtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDO0FBQ2hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7ZUFDYTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQztBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7TUFDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7WUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQ3JGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0VBQ3JCLENBQUM7QUFDRCxDQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsU0FBUyxDQUFBOzs7Ozs7Ozs7O0FDblA3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0NBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBaUQ7Q0FDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBQSxDQUFHUSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBMkI7Q0FDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFpQjtBQUNoQyxDQUFBLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2xDLENBQUEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQzFDLENBQUEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDeEMsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRTtLQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksa0JBQWtCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUM7QUFDM0IsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7S0FDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxPQUFPLENBQUM7QUFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQztBQUNsRSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtLQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtLQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsY0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBR2pCLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQyxHQUFHLENBQUEsQ0FBRTtBQUN6RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUNwRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFDO2FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFlBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUksVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUU7aUJBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksY0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQzthQUMvRSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFFO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxZQUFZLENBQUM7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQ2hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztBQUNuRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsVUFBVSxDQUFDO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUU7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNsQixDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUU7S0FDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLGNBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLEdBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQyxHQUFHLENBQUEsQ0FBRTtBQUNyRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsR0FBRyxDQUFDO0tBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFdBQVcsQ0FBQSxDQUFBLENBQUc7U0FDaEIsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLGFBQWEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO01BQ2hEO0tBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUU7U0FDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztTQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7U0FDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRSxDQUFDLGVBQWUsQ0FBQyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUM7U0FDMUYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEdBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1VBQ1M7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0FBQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUUsV0FBVyxDQUFDO0FBQzNGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsVUFBVSxDQUFDO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2xCLENBQUE7QUFDQTs7Ozs7Ozs7O0FDN0ZBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZTtDQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBR0UsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWlEO0NBQ2hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHUSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBK0I7Q0FDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUdPLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUF3QztDQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBa0I7Q0FDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBbUI7Q0FDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBbUI7Q0FDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBNEQ7Q0FDN0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBR1MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXlEO0NBQ25GLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQW1EO0NBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBcUM7Q0FDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBbUQ7Q0FDcEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUF1QjtDQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWlEO0NBQ2hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBdUI7Q0FDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWdDO0NBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFtQztDQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUEsQ0FBR04sQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXFDO0NBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHTyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBNEQ7Q0FDM0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUdDLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFvQjtDQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWlCO0NBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDM0MsQ0FBQSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxhQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDOUcsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQzNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ3hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQzlFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDO0FBQzNFLENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRTtLQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLElBQUksQ0FBQztBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxRQUFRLENBQUM7VUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQ2hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDM0IsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtTQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBcUIsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDO0FBQ2pELENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO1NBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsR0FBRyxDQUFDO0FBQ25ELENBQUE7Q0FDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO1NBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsR0FBRyxDQUFDO0FBQ25ELENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sTUFBTSxDQUFDO0tBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQSxDQUFHO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLCtDQUErQyxDQUFDO1NBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBRTtBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxVQUFVLENBQUM7QUFDckYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0I7QUFDeEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQzthQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO2FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUM7U0FDeEYsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQzthQUNaLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7aUJBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2lCQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7YUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQzthQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO2FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO1NBQzdHLENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxFQUFFLENBQUM7U0FDaEMsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQzNCLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxFQUFFLENBQUM7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztBQUNuRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUUsUUFBUSxDQUFDO1NBQ2pFLENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUN0RCxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsRUFBRSxDQUFDO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFFBQVEsQ0FBQztTQUN4RSxDQUFTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUM1RCxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2lCQUNnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQSxDQUFFLE1BQU0sQ0FBQztBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUN2RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLE1BQU0sQ0FBQztBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7aUJBQ2dCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUU7cUJBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQztTQUNkLENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDO2FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtpQkFDdkIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUM7YUFDcEMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUN6RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLE9BQU8sQ0FBQztBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7aUJBQ2dCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUU7cUJBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQztTQUNkLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ3hDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxFQUFFLENBQUM7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQztTQUNsRSxDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUM7QUFDbEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBRTtBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtpQkFDVixDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7a0JBQ047aUJBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0FBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEVBQUUsQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsR0FBRyxDQUFDO0FBQzlGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7QUFDaEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQSxDQUFFO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFdBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUM7QUFDM0csQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFFO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUM7QUFDM0csQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2lCQUNnQixDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSTtpQkFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQzlHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7cUJBQ29CO2lCQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsRUFBRSxDQUFDO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07U0FDekIsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7QUFDbkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDakUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO1NBQ2hFLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLGtCQUFrQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUMxRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxTQUFTLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFFLFFBQVEsQ0FBQztTQUNuRixDQUFTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQ2xHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFFBQVEsQ0FBQztTQUNqRSxDQUFTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsRUFBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDNUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUM7cUJBQzVELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxHQUFHLENBQUM7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7MEJBQ3lCO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7aUJBQ2dCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUU7cUJBQ1IsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQztTQUNkLENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUM7YUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO2lCQUN2QixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQzthQUNwQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQ3hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsT0FBTyxDQUFDO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtpQkFDZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBRTtxQkFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDO1NBQ2QsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUN6QyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsRUFBRSxDQUFDO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO1NBQ2pFLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztBQUNwRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsUUFBUSxDQUFDO0FBQ3hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxPQUFPLENBQUM7U0FDNUQsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUM7YUFDZixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBRSxDQUFDLENBQUM7YUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7YUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0FBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxRQUFRLENBQUM7YUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztTQUNsRixDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUMsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxXQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQzthQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxZQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUM7U0FDOUUsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sV0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUM7YUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sWUFBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtpQkFDdkIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtpQkFDZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7YUFDOUIsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLEtBQUssQ0FBQyxDQUFBLENBQUUsUUFBUSxDQUFDO1NBQ3hGLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsSUFBSSxDQUFDO2lCQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLEdBQUcsQ0FBQzthQUM5RSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsSUFBSSxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixNQUFNLENBQUEsQ0FBQSxDQUFHO0FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRztBQUN4RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxJQUFJLENBQUM7QUFDaEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFFO2lCQUNWLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUU7QUFDcEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTBCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxJQUFJLENBQUM7aUJBQ3BGLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFO0FBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLElBQUksQ0FBQztBQUN0RyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxJQUFJLENBQUM7QUFDcEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsSUFBSSxDQUFDO0FBQ2hHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNDO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxJQUFJLENBQUM7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxNQUFNLENBQUM7cUJBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUM7QUFDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsRUFBRSxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQzlGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsT0FBTyxDQUFDO0FBQ3JFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxFQUFFLENBQUEsQ0FBRTtBQUNqRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsT0FBTyxDQUFDO0FBQ3RFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7a0JBQ2lCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFO0FBQ3ZFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtpQkFDZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7QUFDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtrQkFDaUI7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQzFGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDQSxDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxvQkFBb0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDO2FBQ3JFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGVBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7YUFDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDO1NBQ2xFLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLFlBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sb0JBQW9CLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQzthQUNyRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxlQUFlLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0FBQ3ZFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUUsZUFBZSxDQUFDLENBQUEsQ0FBRSxRQUFRLENBQUM7U0FDOUYsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLFFBQVEsQ0FBQztTQUN2QyxDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFLFFBQVEsQ0FBQztTQUNuRSxDQUFTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUMsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sY0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7YUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sWUFBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQzthQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQztTQUM1RCxDQUFTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7YUFDOUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sY0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7YUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sWUFBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsWUFBWSxDQUFDLENBQUEsQ0FBRSxRQUFRLENBQUM7U0FDeEYsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDNUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJO2lCQUNBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0FBQ25FLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFFO2lCQUNSLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNEIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWM7QUFDcEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLE1BQU0sQ0FBQSxDQUFBLENBQUc7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUUsTUFBTSxDQUFDO1NBQ2hFLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLE9BQU8sQ0FBQztBQUNwRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsY0FBYyxDQUFDO1NBQ3hGLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGVBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7YUFDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sZUFBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQzthQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDO1NBQy9ELENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxPQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLGVBQWUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7YUFDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sZUFBZSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztBQUN2RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsZUFBZSxDQUFDLENBQUEsQ0FBRSxRQUFRLENBQUM7U0FDM0YsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxjQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRTtBQUN4RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDQSxDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7aUJBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsRUFBRSxDQUFDO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUk7cUJBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtpQkFDZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBRTtxQkFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQztTQUNkLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLElBQUksQ0FBQztTQUN4QyxDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO2lCQUN2QixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLGdCQUFnQixDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUM7QUFDM0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtpQkFDZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQzthQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxRQUFRLENBQUM7U0FDcEUsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztBQUNsRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUc7YUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7U0FDOUMsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQ2hGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUM7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRzthQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO1NBQ3BELENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQTtBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDO0FBQy9FLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsV0FBVyxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQ3RHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDcEcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUU7aUJBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLElBQUksQ0FBQztpQkFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUk7cUJBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFDO0FBQzFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7aUJBQ2dCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0FBQy9GLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFFLGNBQWMsQ0FBQztBQUNwRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxTQUFTLENBQUM7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtpQkFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO3lCQUNmLE9BQU8sQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLE9BQU8sQ0FBQztBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsT0FBTyxDQUFDO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDO2FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSTthQUNmLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO2FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7aUJBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDekQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUM7QUFDdEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFO3lCQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsRUFBRSxDQUFDO0FBQzdFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtpQkFDZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUM7U0FDZCxDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO2FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7YUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxJQUFJLENBQUM7U0FDaEQsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQzthQUNwRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQyxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLFFBQVEsQ0FBQztTQUN4RSxDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDO0FBQ3hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsU0FBUyxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUNyRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztTQUM3RSxDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQzthQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO2FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO1NBQzFELENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQzthQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFFLFFBQVEsQ0FBQztTQUMvRSxDQUFTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO1NBQ3RELENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLEVBQUUsQ0FBQztTQUMzQixDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLFFBQVEsQ0FBQztTQUN2RCxDQUFTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQztTQUMxRCxDQUFTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsRUFBRSxDQUFDO1NBQy9CLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLFFBQVEsQ0FBQztTQUMzRCxDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQztBQUN2RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxHQUFHLENBQUM7U0FDOUIsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHLENBQUM7U0FDcEMsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztBQUN4RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLFFBQVEsQ0FBQztTQUNoRSxDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHLENBQUM7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtxQkFDb0I7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxFQUFFLENBQUM7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNBLENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDN0IsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsRUFBRSxDQUFDO2lCQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHLENBQUM7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLEdBQUcsQ0FBQztTQUNuQyxDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQzthQUM1RSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxFQUFFLENBQUM7aUJBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLFFBQVEsQ0FBQztTQUMvRCxDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQztBQUNyRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7YUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO2FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztTQUMvQyxDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUM7U0FDN0UsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsZUFBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztTQUN6RyxDQUFTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDMUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNoRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxTQUFTLENBQUM7QUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQSxDQUFFO2FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQzthQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7U0FDL0MsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ3RDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO1NBQ2hILENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxjQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLFFBQVEsQ0FBQztTQUM1SSxDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO1NBQ2pILENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLGNBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRSxRQUFRLENBQUM7U0FDN0ksQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztBQUNoRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsS0FBSyxDQUFDO2FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7YUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7aUJBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO2FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7U0FDL0MsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDMUYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEtBQUssQ0FBQzthQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO2FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsT0FBTyxDQUFDLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDaEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLE9BQU8sQ0FBQyxDQUFBLENBQUUsUUFBUSxDQUFDO1NBQy9FLENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRztBQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUk7aUJBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO2lCQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQzdFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7YUFDWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFFO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQjtxQkFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQ3pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNEIsQ0FBQztBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsTUFBTSxDQUFBLENBQUEsQ0FBRztBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ0EsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7QUFDdkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLDZCQUE2QixDQUFDO2FBQ3RELElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsTUFBTSxDQUFDO2FBQzdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxRQUFRLENBQUM7U0FDbEQsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsTUFBTSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixFQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUNyRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsNkJBQTZCLENBQUM7YUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsTUFBTSxDQUFDO2lCQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUMsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFLFFBQVEsQ0FBQztTQUN2RSxDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0FBQ2hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsU0FBUyxDQUFDO1NBQzlFLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO2FBQzlFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztTQUMxRyxDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDO1NBQy9GLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDeEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBRSxRQUFRLENBQUM7U0FDckgsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDcEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsT0FBTyxDQUFDO1NBQy9CLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQztTQUM1RCxDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7U0FDeEYsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTttQkFDUCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTzttQkFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQztBQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsT0FBTyxDQUFDO1NBQy9CLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7YUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQzthQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7U0FDaEQsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQzthQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsUUFBUSxDQUFDO1NBQ3RFLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7U0FDakQsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO2FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsT0FBTyxDQUFDO1NBQzNDLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQzthQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxRQUFRLENBQUM7U0FDdkUsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQztTQUN2RSxDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7YUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQzthQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDO1NBQ3RDLENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO2FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFDLENBQUEsQ0FBRSxRQUFRLENBQUM7U0FDbEUsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFDLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0FBQzdFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFDO1NBQ2hDLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7YUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQztTQUNuRSxDQUFTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO2FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7YUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztTQUMvRixDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxRQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLEdBQUcsQ0FBQztTQUNuRixDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7YUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFDO1NBQ3BFLENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQzthQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO2FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztTQUNoRyxDQUFTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtTQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxXQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQzthQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxZQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO2FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBLENBQUc7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixXQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixZQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM1RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEtBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixJQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQztBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLGtCQUFrQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWtCLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3hFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsU0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixnQkFBZ0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2NBQ3ZEO2FBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxXQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7U0FDN0QsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sV0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUM7YUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sWUFBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNqRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7aUJBQ3ZCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUM7YUFDdEMsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxRQUFRLENBQUM7YUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sS0FBSyxDQUFBLENBQUEsQ0FBRztBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLFdBQVcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLFlBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsS0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLElBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0Isa0JBQWtCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDeEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixTQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLGdCQUFnQixDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7Y0FDdkQ7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsS0FBSyxDQUFDLENBQUEsQ0FBRSxRQUFRLENBQUM7U0FDbEYsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUk7aUJBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7QUFDMUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sS0FBSyxDQUFBLENBQUU7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7cUJBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFNBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXVCLENBQUM7QUFDbkYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQSxDQUFFO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxTQUFTLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFFO2FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQztTQUMvQyxDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUEsQ0FBRSxRQUFRLENBQUM7U0FDOUUsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQyxPQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxPQUFPLENBQUM7U0FDbkQsQ0FBUztTQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLE9BQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUdDLFdBQUEsQ0FBQSxDQUFpQjthQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsT0FBTyxDQUFDO1NBQ25ELENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDO0FBQy9FLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsV0FBVyxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO2FBQzFGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO1NBQy9DLENBQVM7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7YUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7YUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQzthQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLElBQUksQ0FBQztTQUNoRCxDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFtQixDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDO2FBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFDLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsUUFBUSxDQUFDO1NBQ3hFLENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsV0FBVyxDQUFDO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksV0FBVyxDQUFBLENBQUEsQ0FBRztpQkFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtVQUNTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ3hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxXQUFXLENBQUM7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUM7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtVQUNTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxZQUFZLENBQUM7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUM7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtVQUNTO0FBQ1QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxTQUFTLENBQUM7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxXQUFXLENBQUEsQ0FBQSxDQUFHO2lCQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1VBQ1M7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxRQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQztBQUNwRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLGFBQWEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLFFBQVEsQ0FBQztTQUMxRixDQUFTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sWUFBWSxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQzthQUNsRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxZQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsU0FBUyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBRSxRQUFRLENBQUM7U0FDOUUsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQ3BKLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0I7QUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO1NBQzlCLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUUsUUFBUSxDQUFDO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSTtpQkFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBRTtpQkFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO2lCQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLE1BQU0sQ0FBQztBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRztBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxLQUFLLENBQUEsQ0FBRTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUU7QUFDbkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUNuRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUU7U0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFFO1NBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO1NBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFO0FBQzlDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0FBQy9ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxFQUFFLENBQUEsQ0FBRTtBQUNuQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQztBQUN2RyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQ3RILENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxVQUFVLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7U0FDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLENBQUEsQ0FBRSxDQUFDO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUU7YUFDVixDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUU7YUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsVUFBVSxDQUFDO0FBQ3JHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUMsQ0FBQzthQUMzRCxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7YUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO2lCQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBRTtTQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLEdBQUcsQ0FBQztTQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsSUFBSSxDQUFDO1NBQzFGLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLElBQUksQ0FBQztBQUNsRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsZUFBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFFLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQjtBQUN4RixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLElBQUksQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFDO0FBQ3RGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDO2FBQzlFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFlBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxjQUFjLENBQUM7QUFDNUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2FBQ1ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxZQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQztBQUNuSCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sS0FBSyxDQUFBLENBQUU7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7U0FDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBRTthQUNWLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQzNGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7aUJBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLElBQUksQ0FBQztBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQjtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEtBQUssQ0FBQztBQUMvRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7U0FDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxJQUFJLENBQUM7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsR0FBRyxDQUFDO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBRTthQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUM7YUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQztBQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFFO2lCQUN0RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUNZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLE9BQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUM7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7U0FDeEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxVQUFVLENBQUM7YUFDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDO0FBQzNFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxJQUFJLENBQUM7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLElBQUksQ0FBQztBQUMxQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtTQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsZ0JBQWdCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7U0FDbkcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDekcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUMzRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO0FBQ3pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFO2FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsRUFBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxPQUFPLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDO0FBQzNGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTRCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRTthQUN6RSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLFNBQVMsQ0FBQztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtjQUNhO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQztBQUNuRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRTthQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Y0FDYTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLE9BQU8sQ0FBQztTQUN2RixNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLGNBQWMsQ0FBQztBQUMzRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRTthQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Y0FDYTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRTtTQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsZ0JBQWdCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7U0FDbkcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7QUFDL0csQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQyxDQUFBLENBQUUsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBRTtTQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFFLENBQUM7U0FDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7YUFDTCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsV0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7QUFDbEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsY0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQ2hGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFFLEVBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDdEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFFLFFBQVEsQ0FBQztBQUNuRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtTQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLFFBQVEsQ0FBQztBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQzNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxJQUFJLENBQUEsQ0FBRTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7YUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ1EsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQy9GLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUMvRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUMvRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxTQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO1NBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7U0FDakQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUM7U0FDZixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTthQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFDO2FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNEMsQ0FBQztBQUNyRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7U0FDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUNwRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsUUFBUSxDQUFDO1NBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsV0FBVyxDQUFBLENBQUU7YUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsUUFBUSxDQUFDO0FBQy9DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUU7U0FDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sUUFBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztTQUNqRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLFFBQVEsQ0FBQztTQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTzthQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Y0FDYTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFDLFFBQVEsQ0FBQztBQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUU7YUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxRQUFRLENBQUM7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRTtTQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7QUFDakQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRTtTQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7QUFDbEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFO1NBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLFFBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7U0FDakQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxVQUFVLENBQUEsQ0FBRTthQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO2FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsU0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBRSxZQUFZLENBQUM7U0FDckYsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUzthQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtTQUNyQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUzthQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsU0FBUyxDQUFBLENBQUU7U0FDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO1NBQ3hELENBQUEsQ0FBQSxDQUFBLENBQUksUUFBUSxDQUFBLENBQUU7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBRTtBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO0FBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsT0FBTyxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBRSxPQUFPLENBQUM7QUFDM0UsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsTUFBTSxDQUFDO0FBQ3JFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFO1NBQ2YsTUFBTSxDQUFDLENBQUEsQ0FBRSxNQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLFNBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsRUFBRSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUM7U0FDOUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQzFGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFFO1NBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsVUFBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFFO0FBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUM7QUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFFO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUN4RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQSxDQUFFO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDO0FBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxrQkFBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUU7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDNUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsR0FBRyxDQUFBLENBQUU7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUN2RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsTUFBTSxDQUFDO0FBQzNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxnQkFBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUEsQ0FBRTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUM7QUFDeEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDekUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtDQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDO0NBQ2pHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUM7Q0FDN0csQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsTUFBTSxDQUFDO0FBQ3JCLENBQUE7QUFDQSxDQUFBLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLFlBQVksQ0FBQztLQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsS0FBSyxDQUFBLENBQUU7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsVUFBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBRTtxQkFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7cUJBQ29CO2lCQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ0EsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztBQUN0QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBRztBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxRQUFRLENBQUM7QUFDekUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJO1NBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDM0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztTQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtlQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBRzNCLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU07ZUFDdkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQztTQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUc7QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxVQUFVLENBQUM7U0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxRQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLElBQUksQ0FBQztBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtDQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRTtLQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBRSxRQUFRLENBQUM7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDakIsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLFlBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQ3JELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLFlBQVksQ0FBQztTQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7QUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLE9BQU8sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDdkUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0tBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE9BQU8sQ0FBQyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFDLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDbkYsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRTtBQUMzRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUc7QUFDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQy9FLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFNBQVMsQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxRQUFRLENBQUEsQ0FBRTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxpQ0FBaUMsQ0FBQztBQUNsRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxTQUFTLENBQUEsQ0FBRTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7QUFDL0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsK0JBQStCLENBQUM7QUFDaEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFBLENBQUU7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLHdDQUF3QyxDQUFDO0FBQ3JFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO1NBQzNCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTthQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO2lCQUNaLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7QUFDTixDQUFBO0FBQ0EsQ0FBQSxZQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO1NBQ3pELENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUU7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7aUJBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87cUJBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsRUFBRSxDQUFDO2FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxFQUFFLENBQUM7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0NBQ04sQ0FBQztBQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBRTtBQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0FBQ3JDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQzdDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUMsQ0FBQztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztTQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLGFBQWEsQ0FBQSxDQUFFO0FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUMsYUFBYSxDQUFDO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxHQUFHLENBQUMsQ0FBQSxDQUFFLE1BQU0sQ0FBQztBQUMxRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUM7QUFDdEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsU0FBUyxDQUFBLENBQUU7U0FDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBRTthQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQSxDQUFFO2lCQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxFQUFFLENBQUM7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Y0FDYTthQUNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRTtBQUMvQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO2lCQUMzQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFDLENBQUM7QUFDeEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Q0FDQSxDQUFDO0NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUU7QUFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUM7QUFDdkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQztDQUNOLENBQUM7QUFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUU7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFFO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxFQUFFLENBQUM7S0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsV0FBVyxDQUFDO2FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUM7QUFDdkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFJLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLGNBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUU7QUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7VUFDUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFFO1NBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDN0YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1VBQ1M7U0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFBLENBQUU7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLEVBQUUsQ0FBQztBQUN0QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQztBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJO0NBQ2xCLENBQUM7QUFDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUU7S0FDckIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUU7QUFDaEIsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLGFBQWEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWE7QUFDbkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxhQUFhLENBQUMsQ0FBQSxDQUFBLENBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxhQUFhLENBQUM7U0FDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxHQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxPQUFPLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFDO0tBQ25FLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUM7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQ2hELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLE9BQU8sQ0FBQyxDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsT0FBTyxDQUFDLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7S0FDbkYsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBRTtBQUMzRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxPQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLElBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNqRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQztBQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxTQUFTLENBQUEsQ0FBRTtBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsaUNBQWlDLENBQUM7QUFDbEUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUU7QUFDNUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLHlCQUF5QixDQUFDO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ3hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsUUFBUSxDQUFDO0FBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtTQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUU7QUFDbkIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRTthQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRTtBQUN4QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUM7QUFDTixDQUFBO0FBQ0EsQ0FBQSxhQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7S0FDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUU7U0FDL0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBRTthQUNKLENBQUEsQ0FBQSxDQUFBLENBQUksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLE9BQU8sQ0FBQSxDQUFFO2lCQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUU7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxFQUFFLENBQUM7YUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3BCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxFQUFFLENBQUM7QUFDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUM7Q0FDakIsQ0FBQztDQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFO0tBQzNELENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQztBQUN4RSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFDO0FBQzVELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7YUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsSUFBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO1NBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUU7YUFDSixDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUEsQ0FBRTtpQkFDaEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFO0FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUM7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUU7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0NBQy9CLENBQUM7Q0FDRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ3RELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssUUFBUSxDQUFBLENBQUU7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsT0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLEVBQUUsQ0FBQztBQUNsQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3RCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxHQUFHLENBQUM7S0FDN0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFO1NBQzFCLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQ3pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUM1QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FDSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDO0tBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO1NBQ2xFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUU7YUFDSixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO2lCQUNaLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRTtBQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFFLENBQUM7QUFDekIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsRUFBRSxDQUFBLENBQUU7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDO0FBQ04sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtDQUN4QixDQUFDO0FBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsRUFBRSxDQUFBLENBQUU7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFFO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxFQUFFLENBQUM7S0FDMUIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDcEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLFFBQVEsQ0FBQSxDQUFFO0FBQ3pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUUsV0FBVyxDQUFDO2FBQzlCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7U0FDUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUM7QUFDdkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0tBQ0ksQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxjQUFjLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFO0FBQzFELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDekMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1VBQ1M7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUMxQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBRTtTQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQzdGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtVQUNTO1NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUN2QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLElBQUksQ0FBQSxDQUFFO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxFQUFFLENBQUM7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUM7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSTtDQUNsQixDQUFDO0NBQ0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNsRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtDQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFHO0FBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsTUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxZQUFZLENBQUM7S0FDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ3JCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLEtBQUssQ0FBQSxDQUFFO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRTtBQUMzQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQy9CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWE7QUFDdEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksR0FBRyxDQUFBLENBQUU7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFFO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLFFBQVEsQ0FBQztBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO1NBQ0EsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSzthQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWdCLENBQUM7U0FDNUQsQ0FBUztBQUNULENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07YUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFDO1NBQ3hELENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBLENBQUc7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztBQUNsRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxLQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLGFBQWEsQ0FBQSxDQUFFO0FBQ2hHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLE1BQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQztBQUN6RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQztBQUNwRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDO0FBQ2xGLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ25DLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQSxDQUFFLFdBQVcsQ0FBQztBQUNwRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sR0FBRyxDQUFBLENBQUU7YUFDUixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxLQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJO0FBQ2pDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUk7QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxNQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUN2QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxPQUFPLENBQUEsQ0FBRTtBQUMzQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsT0FBTyxDQUFBLENBQUU7YUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07aUJBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQztpQkFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUM3QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxRQUFRLENBQUEsQ0FBRTtpQkFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUM7YUFDOUQsQ0FBYTtBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztpQkFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDckMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLFlBQVksQ0FBQSxDQUFFO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFFO0FBQ3ZFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssRUFBRSxDQUFDO2FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDO1NBQzFELENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQSxDQUFBLENBQUcsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSztBQUNuRCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsT0FBTyxDQUFBLENBQUU7QUFDdkMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO0FBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLFFBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLFNBQVMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDeEYsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2lCQUNnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7aUJBQ2dCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF3QixDQUFDLENBQUMsQ0FBQzthQUMzQyxDQUFhO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixDQUFBLENBQUEsQ0FBRyxDQUFDLE9BQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO3FCQUN6QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFHO3FCQUNqQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLGlCQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQztxQkFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBRTt5QkFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsRUFBRSxDQUFDO0FBQ2xELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXdCLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxHQUFHLENBQUM7QUFDMUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBRTt5QkFDeEQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTs2QkFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUF1QixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDOUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO2lCQUNBLENBQWlCO2lCQUNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBdUIsQ0FBQyxDQUFDLENBQUM7QUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixJQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUUsUUFBUSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsU0FBUyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQzthQUN4RixDQUFhO0FBQ2IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBRTtpQkFDckQsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLEdBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRTtxQkFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUM7QUFDbkQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFzQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7aUJBQ2pFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO3FCQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUM7c0JBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO3FCQUN6QixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDO0FBQzNDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxDQUFDO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLElBQUksQ0FBQSxDQUFFO0FBQ3ZFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0Isc0JBQXNCLENBQUEsQ0FBRTtBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQzthQUNGLENBQUEsQ0FBQSxDQUFBLENBQUksU0FBUyxDQUFBLENBQUU7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQSxDQUFFO3FCQUNyRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssR0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFO3lCQUM1QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDO0FBQzNELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtTQUNBLENBQVM7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEtBQUssQ0FBQztBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBd0IsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsS0FBSyxDQUFDO0FBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLE1BQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUcsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO1NBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUksTUFBTSxDQUFBLENBQUU7QUFDcEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLO2lCQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUN4QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLElBQUksQ0FBQztBQUM3QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWEsQ0FBQztBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO2FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUU7QUFDM0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEtBQUssQ0FBQSxDQUFBLENBQUc7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxNQUFNLENBQUM7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsUUFBUSxDQUFBLENBQUEsQ0FBQSxDQUFJO2FBQ3ZDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxFQUFFLENBQUM7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQyxLQUFLLENBQUEsQ0FBRTtTQUM5QixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUM3Qjs7Ozs7Ozs7Ozs7QUN2b0RBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQztBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBeUIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDbEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXlCLENBQUEsQ0FBQSxDQUFHO0FBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0I7QUFDdEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CO0FBQ3ZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU87QUFDWCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNWLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDVixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUNSLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUztBQUNiLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDYixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTztBQUNYLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDWixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0VBQ2Q7QUFDRDs7Ozs7Ozs7Ozs7QUNyREEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUE0QixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtBQUNyQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNEIsQ0FBQSxDQUFBLENBQUc7QUFDL0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQjtBQUNwQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZTtBQUNuQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVTtBQUNkLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhO0FBQ2pCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ2QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWM7QUFDbEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDZCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYTtBQUNqQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjO0FBQ2xCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWTtBQUNoQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWE7QUFDakIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlO0FBQ25CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDZixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVk7QUFDaEIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtFQUNDO0FBQ0Q7Ozs7Ozs7Ozs7O0FDL0NBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUM7QUFDN0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkIsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBMkIsQ0FBQSxDQUFBLENBQUc7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNO0FBQ1YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVztBQUNmLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPO0FBQ1gsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUTtBQUNaLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDVCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRO0FBQ1osQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ2YsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZO0FBQ2hCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhO0VBQ2hCO0FBQ0Q7Ozs7Ozs7Ozs7RUNqQkEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQWYsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQThCQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUErQkEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBNEJBLFNBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQkEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQWNBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQkEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLE1BQUEsQ0FBQSxDQUFBLENBQWlCQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQkEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUEwQkEsU0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQkEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFzQkEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTTtFQUM5UixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFnQjtFQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBR1EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQW1CO0VBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNULENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0VBQzVHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFhLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUM7RUFDdEgsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUM7RUFDbEgsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBaUIsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0VBQzlILENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBR2dCLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFrQjtFQUNoQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDaEIsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0VBQzNHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHaUIsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQW1CO0VBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNqQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0VBQzdHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHa0IsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQW1CO0VBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNsQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0VBQzdHLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUdtQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBdUI7RUFDMUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQ25CLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUMsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFDO0VBQ3hILENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFHb0IsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQWdCO0VBQzVCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNwQixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztFQUNuRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBQSxDQUFHNkIsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXVCO0VBQzFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUM3QixDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztBQUN4SCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUM4QixjQUFBLENBQUEsQ0FBb0IsQ0FBQSxDQUFFOUIsU0FBTyxDQUFDO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQytCLGFBQUEsQ0FBQSxDQUFpQixDQUFBLENBQUUvQixTQUFPLENBQUM7QUFDaEQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDZ0MsV0FBQSxDQUFBLENBQWlCLENBQUEsQ0FBRWhDLFNBQU8sQ0FBQztFQUNoRCxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUEsQ0FBQSxDQUFHaUMsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQW9DO0VBQzlELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNqQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW1CLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztFQUM3SSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUEsQ0FBQSxDQUFHa0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQXVDO0VBQ3BFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNsQyxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFPLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBc0IsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXNCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFvQixDQUFDLENBQUEsQ0FBRSxDQUFBLENBQUUsQ0FBQztFQUN0SixDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFBLENBQUEsQ0FBR21DLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFzQztFQUNsRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYyxDQUFDbkMsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFxQixDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQXFCLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBbUIsQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUM7QUFDbkosQ0FBQTs7Ozs7Ozs7Ozs7RUM3QkEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWMsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDO0FBQzdELENBQUEsQ0FBQUEsU0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBZ0JBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQSxDQUFjQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBaUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU07QUFDbEUsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQTZCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFrQjtFQUMvQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBR0MsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQStCO0VBQ2pELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLENBQUNELENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sRUFBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUM7RUFDN0csQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQSxDQUFBLENBQUdTLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUEsQ0FBQSxDQUFxQztBQUM3RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVM7QUFDNUQsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQVQsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFjLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxNQUFNLENBQUEsQ0FBRTtFQUNwQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUU7QUFDakMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsTUFBTSxDQUFBLENBQUU7QUFDakksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQW9CO0FBQ3ZELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQztBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQWlCO0FBQ3BELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsSUFBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxLQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVU7QUFDN0MsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQztBQUM5QyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFXO0FBQ3BDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQ2hDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVcsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVc7QUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksRUFBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVO0FBQ2xDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVEsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVE7QUFDOUIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLElBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7VUFDcEMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7VUFDcEMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBQSxDQUFHLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFVLENBQUEsQ0FBRTtBQUN2RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFRLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFDLEdBQUcsQ0FBQztBQUM5RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxJQUFJLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssVUFBVSxDQUFBLENBQUU7VUFDeEMsQ0FBQSxDQUFFLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQVksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBWSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBRyxDQUFDO1VBQzVDLENBQUEsQ0FBQSxDQUFBLENBQUksT0FBTyxDQUFBLENBQUEsQ0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBVSxDQUFBLENBQUU7QUFDM0QsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFZLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsR0FBRyxDQUFDO0FBQ3RFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLEVBQUUsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFlO0FBQ25ELENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRztBQUNsQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxPQUFPLENBQUEsQ0FBRTtBQUNiLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBYSxrQkFBa0IsQ0FBQ0EsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBQUEsQ0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFHLENBQUM7QUFDNUMsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQTtFQUNBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7QUFDOUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLFNBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBUSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTO0FBQy9FLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFJLENBQUMsQ0FBQSxDQUFBLENBQUcsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFLLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUEsQ0FBQSxDQUFHLEdBQUcsQ0FBQztNQUN4RCxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTSxHQUFHLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFTLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBSSxFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBRSxFQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQU8sQ0FBQSxDQUFFLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFPLEVBQUUsQ0FBQztBQUNyRixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBSSxNQUFNLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBRyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBa0IsQ0FBQyxHQUFHLENBQUM7QUFDdEMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxHQUFHLENBQUEsQ0FBRTtFQUN0QixDQUFDO0FBQ0QsQ0FBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFnQixDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUs7RUFDckIsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFpQixFQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLENBQUMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBTyxDQUFBLENBQUUsQ0FBQSxDQUFBLENBQUdBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQUFBLENBQU8sQ0FBQyxFQUFFLENBQUEsQ0FBRTtBQUNyRCxDQUFBLENBQUEsTUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsR0FBMEIsQ0FBQSxDQUFBLENBQUEsQ0FBSTtBQUM5QixDQUFBOzs7Ozs7Ozs7Ozs7O0FDOURLLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFDLENBQUEsQ0FBRSxrQkFBa0IsQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFNLEVBQUUsQ0FBQSxDQUFFLENBQUEsQ0FBRSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUssQ0FBQSxDQUFFLENBQUEsQ0FBQSxDQUFHLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7OyIsInhfZ29vZ2xlX2lnbm9yZUxpc3QiOlswLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDEyNywxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwxNjEsMTYyLDE2MywxNjQsMTY1LDE2Nl19 diff --git a/node_modules/@napi-rs/wasm-runtime/fs-proxy.js b/node_modules/@napi-rs/wasm-runtime/fs-proxy.js new file mode 100644 index 00000000..83079294 --- /dev/null +++ b/node_modules/@napi-rs/wasm-runtime/fs-proxy.js @@ -0,0 +1,294 @@ +// @ts-check + +/** + * @param {unknown} value + */ +const getType = (value) => { + if (value === undefined) return 0 + if (value === null) return 1 + const t = typeof value + if (t === 'boolean') return 2 + if (t === 'number') return 3 + if (t === 'string') return 4 + if (t === 'object') return 6 + if (t === 'bigint') return 9 + return -1 +} + +const RESPONSE_HEADER_SIZE = 16 +const RESPONSE_PAYLOAD_SIZE = 10240 +const RESPONSE_BUFFER_SIZE = RESPONSE_HEADER_SIZE + RESPONSE_PAYLOAD_SIZE + +/** + * @param {Int32Array} sab + * @param {Uint8Array} payload + */ +const writeResponsePayload = (sab, payload) => { + if (payload.length > RESPONSE_PAYLOAD_SIZE) { + throw new RangeError('payload overflow') + } + new Uint8Array(sab.buffer).set(payload, RESPONSE_HEADER_SIZE) +} + +/** + * @param {import('memfs').IFs} memfs + * @param {any} value + * @param {ReturnType} type + * @returns {Uint8Array} + */ +const encodeValue = (memfs, value, type) => { + switch (type) { + case 0: + case 1: + return new Uint8Array(0) + case 2: { + const view = new Int32Array(1) + view[0] = value ? 1 : 0 + return new Uint8Array(view.buffer) + } + case 3: { + const view = new Float64Array(1) + view[0] = value + return new Uint8Array(view.buffer) + } + case 4: { + const view = new TextEncoder().encode(value) + return view + } + case 6: { + function storeConstructor(obj, memfs, processed = new WeakSet()) { + if (!obj || typeof obj !== 'object') { + return + } + + if (processed.has(obj)) { + return + } + + processed.add(obj) + + const [entry] = + Object.entries(memfs).filter(([_, v]) => v === obj.constructor)[0] ?? + [] + if (entry) { + Object.defineProperty(obj, '__constructor__', { + configurable: true, + writable: true, + enumerable: true, + value: entry, + }) + } + + for (const value of Object.values(obj)) { + storeConstructor(value, memfs, processed) + } + } + + storeConstructor(value, memfs) + + const json = JSON.stringify(value, (_, value) => { + if (typeof value === 'bigint') { + return `BigInt(${String(value)})` + } + if (value instanceof Error) { + return { + ...value, + message: value.message, + stack: value.stack, + __error__: value.constructor.name, + } + } + return value + }) + const view = new TextEncoder().encode(json) + return view + } + case 9: { + return new TextEncoder().encode(String(value)) + } + case -1: + default: + throw new Error('unsupported data') + } +} + +/** + * @param {typeof import('memfs')} memfs + * @param {Uint8Array} payload + * @param {number} type + * @returns {any} + */ +const decodeValue = (memfs, payload, type) => { + if (type === 0) return undefined + if (type === 1) return null + if (type === 2) + return Boolean(new Int32Array(payload.buffer, payload.byteOffset, 1)[0]) + if (type === 3) + return new Float64Array(payload.buffer, payload.byteOffset, 1)[0] + if (type === 4) return new TextDecoder().decode(payload.slice()) + if (type === 6) { + const obj = JSON.parse( + new TextDecoder().decode(payload.slice()), + (_key, value) => { + if (typeof value === 'string') { + const matched = value.match(/^BigInt\((-?\d+)\)$/) + if (matched && matched[1]) { + return BigInt(matched[1]) + } + } + return value + }, + ) + + function loadConstructor(obj, memfs, processed = new WeakSet()) { + if (!obj || typeof obj !== 'object') { + return + } + + if (processed.has(obj)) { + return + } + + processed.add(obj) + + if (obj.__constructor__) { + const ctor = obj.__constructor__ + delete obj.__constructor__ + Object.setPrototypeOf(obj, memfs[ctor].prototype) + } + + for (const value of Object.values(obj)) { + loadConstructor(value, memfs, processed) + } + } + + loadConstructor(obj, memfs) + + if (obj.__error__) { + const name = obj.__error__ + const ErrorConstructor = globalThis[name] || Error + delete obj.__error__ + const err = new ErrorConstructor(obj.message) + Object.defineProperty(err, 'stack', { + configurable: true, + enumerable: false, + writable: true, + value: err.stack, + }) + Object.defineProperty(err, Symbol.toStringTag, { + configurable: true, + enumerable: false, + writable: true, + value: name, + }) + for (const [k, v] of Object.entries(obj)) { + if (k === 'message' || k === 'stack') continue + err[k] = v + } + return err + } + return obj + } + if (type === 9) { + return BigInt(new TextDecoder().decode(payload.slice())) + } + throw new Error('unsupported data') +} + +/** + * @param {import('memfs').IFs} fs + * @returns {(e: { data: { __fs__: { sab: Int32Array, type: keyof import('memfs').IFs, payload: any[] } } }) => void} + */ +// oxlint-disable-next-line no-unused-vars -- fixed in an upcoming release +export const createOnMessage = (fs) => + function onMessage(e) { + if (e.data.__fs__) { + /** + * 0..4 status(int32_t): 21(waiting) 0(success) 1(error) + * 5..8 type(napi_valuetype): 0(undefined) 1(null) 2(boolean) 3(number) 4(string) 6(jsonstring) 9(bigint) -1(unsupported) + * 9..16 payload_size(uint32_t) <= 10240 + * 16..16 + payload_size payload_content + */ + const { sab, type, payload } = e.data.__fs__ + const fn = fs[type] + try { + const ret = fn.apply(fs, payload) + const t = getType(ret) + Atomics.store(sab, 1, t) + const v = encodeValue(fs, ret, t) + Atomics.store(sab, 2, v.length) + writeResponsePayload(sab, v) + Atomics.store(sab, 0, 0) // success + } catch (/** @type {any} */ err) { + let t = getType(err) + let v + try { + if (t === -1) { + throw new Error('unsupported data') + } + v = encodeValue(fs, err, t) + } catch { + const fallback = (() => { + try { + return String(err) + } catch { + return 'Unserializable thrown value' + } + })() + t = getType(fallback) + v = encodeValue(fs, fallback, t) + } + if (v.length > RESPONSE_PAYLOAD_SIZE) { + const overflowErr = new RangeError('payload overflow') + t = getType(overflowErr) + v = encodeValue(fs, overflowErr, t) + } + Atomics.store(sab, 1, t) + Atomics.store(sab, 2, v.length) + writeResponsePayload(sab, v) + Atomics.store(sab, 0, 1) // error + } finally { + Atomics.notify(sab, 0) + } + } + } + +/** + * @param {typeof import('memfs')} memfs + */ +export const createFsProxy = (memfs) => + new Proxy( + {}, + { + get(_target, p, _receiver) { + /** + * @param {any[]} args + */ + return function (...args) { + const sab = new SharedArrayBuffer(RESPONSE_BUFFER_SIZE) + const i32arr = new Int32Array(sab) + Atomics.store(i32arr, 0, 21) + + postMessage({ + __fs__: { + sab: i32arr, + type: p, + payload: args, + }, + }) + + Atomics.wait(i32arr, 0, 21) + + const status = Atomics.load(i32arr, 0) + const type = Atomics.load(i32arr, 1) + const size = Atomics.load(i32arr, 2) + const content = new Uint8Array(sab, RESPONSE_HEADER_SIZE, size) + const value = decodeValue(memfs, content, type) + if (status === 1) { + throw value + } + return value + } + }, + }, + ) diff --git a/node_modules/@napi-rs/wasm-runtime/package.json b/node_modules/@napi-rs/wasm-runtime/package.json new file mode 100644 index 00000000..1287ee19 --- /dev/null +++ b/node_modules/@napi-rs/wasm-runtime/package.json @@ -0,0 +1,70 @@ +{ + "name": "@napi-rs/wasm-runtime", + "version": "1.1.4", + "type": "module", + "description": "Runtime and polyfill for wasm targets", + "homepage": "https://napi.rs/", + "author": { + "name": "LongYinan", + "url": "https://github.com/Brooooooklyn" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/napi-rs/napi-rs.git", + "directory": "wasm-runtime" + }, + "license": "MIT", + "publishConfig": { + "registry": "https://registry.npmjs.org/", + "access": "public" + }, + "files": [ + "runtime.cjs", + "runtime.js", + "fs-proxy.js", + "dist/*.cjs", + "dist/*.js" + ], + "devDependencies": { + "@rollup/plugin-alias": "^6.0.0", + "@rollup/plugin-commonjs": "^29.0.0", + "@rollup/plugin-inject": "^5.0.5", + "@rollup/plugin-json": "^6.1.0", + "@rollup/plugin-node-resolve": "^16.0.3", + "@rollup/plugin-replace": "^6.0.3", + "buffer": "^6.0.3", + "events": "^3.3.0", + "memfs": "^4.50.0", + "node-inspect-extracted": "^3.2.2", + "path-browserify": "^1.0.1", + "process": "^0.11.10", + "readable-stream": "^4.7.0", + "rollup": "^4.53.1", + "rollup-plugin-polyfill-node": "^0.13.0", + "tslib": "^2.8.1" + }, + "dependencies": { + "@tybys/wasm-util": "^0.10.1" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1" + }, + "scripts": { + "build": "rollup -c rollup.config.js", + "test": "node --test" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "exports": { + ".": { + "import": "./runtime.js", + "require": "./runtime.cjs" + }, + "./fs": { + "import": "./dist/fs.js" + } + } +} diff --git a/node_modules/@napi-rs/wasm-runtime/runtime.cjs b/node_modules/@napi-rs/wasm-runtime/runtime.cjs new file mode 100644 index 00000000..a22e62a0 --- /dev/null +++ b/node_modules/@napi-rs/wasm-runtime/runtime.cjs @@ -0,0 +1,15 @@ +const { MessageHandler, instantiateNapiModuleSync, instantiateNapiModule } = require('@emnapi/core') +const { getDefaultContext } = require('@emnapi/runtime') +const { WASI } = require('@tybys/wasm-util') + +const { createFsProxy, createOnMessage } = require('./dist/fs-proxy.cjs') + +module.exports = { + MessageHandler, + instantiateNapiModule, + instantiateNapiModuleSync, + getDefaultContext, + WASI, + createFsProxy, + createOnMessage, +} diff --git a/node_modules/@napi-rs/wasm-runtime/runtime.js b/node_modules/@napi-rs/wasm-runtime/runtime.js new file mode 100644 index 00000000..abbe9e29 --- /dev/null +++ b/node_modules/@napi-rs/wasm-runtime/runtime.js @@ -0,0 +1,8 @@ +export { + instantiateNapiModuleSync, + instantiateNapiModule, + MessageHandler, +} from '@emnapi/core' +export { getDefaultContext } from '@emnapi/runtime' +export * from '@tybys/wasm-util' +export { createOnMessage, createFsProxy } from './fs-proxy.js' diff --git a/node_modules/@oxc-project/types/LICENSE b/node_modules/@oxc-project/types/LICENSE new file mode 100644 index 00000000..444bffc0 --- /dev/null +++ b/node_modules/@oxc-project/types/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2024-present VoidZero Inc. & Contributors +Copyright (c) 2023 Boshen + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/@oxc-project/types/README.md b/node_modules/@oxc-project/types/README.md new file mode 100644 index 00000000..d5b248ac --- /dev/null +++ b/node_modules/@oxc-project/types/README.md @@ -0,0 +1,3 @@ +# Oxc Types + +Typescript definitions for Oxc AST nodes. diff --git a/node_modules/@oxc-project/types/package.json b/node_modules/@oxc-project/types/package.json new file mode 100644 index 00000000..f1812265 --- /dev/null +++ b/node_modules/@oxc-project/types/package.json @@ -0,0 +1,26 @@ +{ + "name": "@oxc-project/types", + "version": "0.127.0", + "description": "Types for Oxc AST nodes", + "keywords": [ + "AST", + "Parser" + ], + "homepage": "https://oxc.rs", + "bugs": "https://github.com/oxc-project/oxc/issues", + "license": "MIT", + "author": "Boshen and oxc contributors", + "repository": { + "type": "git", + "url": "git+https://github.com/oxc-project/oxc.git", + "directory": "npm/oxc-types" + }, + "funding": { + "url": "https://github.com/sponsors/Boshen" + }, + "files": [ + "types.d.ts" + ], + "type": "module", + "types": "types.d.ts" +} \ No newline at end of file diff --git a/node_modules/@oxc-project/types/types.d.ts b/node_modules/@oxc-project/types/types.d.ts new file mode 100644 index 00000000..c94c1159 --- /dev/null +++ b/node_modules/@oxc-project/types/types.d.ts @@ -0,0 +1,1912 @@ +// Auto-generated code, DO NOT EDIT DIRECTLY! +// To edit this generated file you have to edit `tasks/ast_tools/src/generators/typescript.rs`. + +export interface Program extends Span { + type: "Program"; + body: Array; + sourceType: ModuleKind; + hashbang: Hashbang | null; + parent?: null; +} + +export type Expression = + | BooleanLiteral + | NullLiteral + | NumericLiteral + | BigIntLiteral + | RegExpLiteral + | StringLiteral + | TemplateLiteral + | IdentifierReference + | MetaProperty + | Super + | ArrayExpression + | ArrowFunctionExpression + | AssignmentExpression + | AwaitExpression + | BinaryExpression + | CallExpression + | ChainExpression + | Class + | ConditionalExpression + | Function + | ImportExpression + | LogicalExpression + | NewExpression + | ObjectExpression + | ParenthesizedExpression + | SequenceExpression + | TaggedTemplateExpression + | ThisExpression + | UnaryExpression + | UpdateExpression + | YieldExpression + | PrivateInExpression + | JSXElement + | JSXFragment + | TSAsExpression + | TSSatisfiesExpression + | TSTypeAssertion + | TSNonNullExpression + | TSInstantiationExpression + | V8IntrinsicExpression + | MemberExpression; + +export interface IdentifierName extends Span { + type: "Identifier"; + decorators?: []; + name: string; + optional?: false; + typeAnnotation?: null; + parent?: Node; +} + +export interface IdentifierReference extends Span { + type: "Identifier"; + decorators?: []; + name: string; + optional?: false; + typeAnnotation?: null; + parent?: Node; +} + +export interface BindingIdentifier extends Span { + type: "Identifier"; + decorators?: []; + name: string; + optional?: false; + typeAnnotation?: null; + parent?: Node; +} + +export interface LabelIdentifier extends Span { + type: "Identifier"; + decorators?: []; + name: string; + optional?: false; + typeAnnotation?: null; + parent?: Node; +} + +export interface ThisExpression extends Span { + type: "ThisExpression"; + parent?: Node; +} + +export interface ArrayExpression extends Span { + type: "ArrayExpression"; + elements: Array; + parent?: Node; +} + +export type ArrayExpressionElement = SpreadElement | null | Expression; + +export interface ObjectExpression extends Span { + type: "ObjectExpression"; + properties: Array; + parent?: Node; +} + +export type ObjectPropertyKind = ObjectProperty | SpreadElement; + +export interface ObjectProperty extends Span { + type: "Property"; + kind: PropertyKind; + key: PropertyKey; + value: Expression; + method: boolean; + shorthand: boolean; + computed: boolean; + optional?: false; + parent?: Node; +} + +export type PropertyKey = IdentifierName | PrivateIdentifier | Expression; + +export type PropertyKind = "init" | "get" | "set"; + +export interface TemplateLiteral extends Span { + type: "TemplateLiteral"; + quasis: Array; + expressions: Array; + parent?: Node; +} + +export interface TaggedTemplateExpression extends Span { + type: "TaggedTemplateExpression"; + tag: Expression; + typeArguments?: TSTypeParameterInstantiation | null; + quasi: TemplateLiteral; + parent?: Node; +} + +export interface TemplateElement extends Span { + type: "TemplateElement"; + value: TemplateElementValue; + tail: boolean; + parent?: Node; +} + +export interface TemplateElementValue { + raw: string; + cooked: string | null; +} + +export type MemberExpression = + | ComputedMemberExpression + | StaticMemberExpression + | PrivateFieldExpression; + +export interface ComputedMemberExpression extends Span { + type: "MemberExpression"; + object: Expression; + property: Expression; + optional: boolean; + computed: true; + parent?: Node; +} + +export interface StaticMemberExpression extends Span { + type: "MemberExpression"; + object: Expression; + property: IdentifierName; + optional: boolean; + computed: false; + parent?: Node; +} + +export interface PrivateFieldExpression extends Span { + type: "MemberExpression"; + object: Expression; + property: PrivateIdentifier; + optional: boolean; + computed: false; + parent?: Node; +} + +export interface CallExpression extends Span { + type: "CallExpression"; + callee: Expression; + typeArguments?: TSTypeParameterInstantiation | null; + arguments: Array; + optional: boolean; + parent?: Node; +} + +export interface NewExpression extends Span { + type: "NewExpression"; + callee: Expression; + typeArguments?: TSTypeParameterInstantiation | null; + arguments: Array; + parent?: Node; +} + +export interface MetaProperty extends Span { + type: "MetaProperty"; + meta: IdentifierName; + property: IdentifierName; + parent?: Node; +} + +export interface SpreadElement extends Span { + type: "SpreadElement"; + argument: Expression; + parent?: Node; +} + +export type Argument = SpreadElement | Expression; + +export interface UpdateExpression extends Span { + type: "UpdateExpression"; + operator: UpdateOperator; + prefix: boolean; + argument: SimpleAssignmentTarget; + parent?: Node; +} + +export interface UnaryExpression extends Span { + type: "UnaryExpression"; + operator: UnaryOperator; + argument: Expression; + prefix: true; + parent?: Node; +} + +export interface BinaryExpression extends Span { + type: "BinaryExpression"; + left: Expression; + operator: BinaryOperator; + right: Expression; + parent?: Node; +} + +export interface PrivateInExpression extends Span { + type: "BinaryExpression"; + left: PrivateIdentifier; + operator: "in"; + right: Expression; + parent?: Node; +} + +export interface LogicalExpression extends Span { + type: "LogicalExpression"; + left: Expression; + operator: LogicalOperator; + right: Expression; + parent?: Node; +} + +export interface ConditionalExpression extends Span { + type: "ConditionalExpression"; + test: Expression; + consequent: Expression; + alternate: Expression; + parent?: Node; +} + +export interface AssignmentExpression extends Span { + type: "AssignmentExpression"; + operator: AssignmentOperator; + left: AssignmentTarget; + right: Expression; + parent?: Node; +} + +export type AssignmentTarget = SimpleAssignmentTarget | AssignmentTargetPattern; + +export type SimpleAssignmentTarget = + | IdentifierReference + | TSAsExpression + | TSSatisfiesExpression + | TSNonNullExpression + | TSTypeAssertion + | MemberExpression; + +export type AssignmentTargetPattern = ArrayAssignmentTarget | ObjectAssignmentTarget; + +export interface ArrayAssignmentTarget extends Span { + type: "ArrayPattern"; + decorators?: []; + elements: Array; + optional?: false; + typeAnnotation?: null; + parent?: Node; +} + +export interface ObjectAssignmentTarget extends Span { + type: "ObjectPattern"; + decorators?: []; + properties: Array; + optional?: false; + typeAnnotation?: null; + parent?: Node; +} + +export interface AssignmentTargetRest extends Span { + type: "RestElement"; + decorators?: []; + argument: AssignmentTarget; + optional?: false; + typeAnnotation?: null; + value?: null; + parent?: Node; +} + +export type AssignmentTargetMaybeDefault = AssignmentTargetWithDefault | AssignmentTarget; + +export interface AssignmentTargetWithDefault extends Span { + type: "AssignmentPattern"; + decorators?: []; + left: AssignmentTarget; + right: Expression; + optional?: false; + typeAnnotation?: null; + parent?: Node; +} + +export type AssignmentTargetProperty = + | AssignmentTargetPropertyIdentifier + | AssignmentTargetPropertyProperty; + +export interface AssignmentTargetPropertyIdentifier extends Span { + type: "Property"; + kind: "init"; + key: IdentifierReference; + value: IdentifierReference | AssignmentTargetWithDefault; + method: false; + shorthand: true; + computed: false; + optional?: false; + parent?: Node; +} + +export interface AssignmentTargetPropertyProperty extends Span { + type: "Property"; + kind: "init"; + key: PropertyKey; + value: AssignmentTargetMaybeDefault; + method: false; + shorthand: false; + computed: boolean; + optional?: false; + parent?: Node; +} + +export interface SequenceExpression extends Span { + type: "SequenceExpression"; + expressions: Array; + parent?: Node; +} + +export interface Super extends Span { + type: "Super"; + parent?: Node; +} + +export interface AwaitExpression extends Span { + type: "AwaitExpression"; + argument: Expression; + parent?: Node; +} + +export interface ChainExpression extends Span { + type: "ChainExpression"; + expression: ChainElement; + parent?: Node; +} + +export type ChainElement = CallExpression | TSNonNullExpression | MemberExpression; + +export interface ParenthesizedExpression extends Span { + type: "ParenthesizedExpression"; + expression: Expression; + parent?: Node; +} + +export type Statement = + | BlockStatement + | BreakStatement + | ContinueStatement + | DebuggerStatement + | DoWhileStatement + | EmptyStatement + | ExpressionStatement + | ForInStatement + | ForOfStatement + | ForStatement + | IfStatement + | LabeledStatement + | ReturnStatement + | SwitchStatement + | ThrowStatement + | TryStatement + | WhileStatement + | WithStatement + | Declaration + | ModuleDeclaration; + +export interface Directive extends Span { + type: "ExpressionStatement"; + expression: StringLiteral; + directive: string; + parent?: Node; +} + +export interface Hashbang extends Span { + type: "Hashbang"; + value: string; + parent?: Node; +} + +export interface BlockStatement extends Span { + type: "BlockStatement"; + body: Array; + parent?: Node; +} + +export type Declaration = + | VariableDeclaration + | Function + | Class + | TSTypeAliasDeclaration + | TSInterfaceDeclaration + | TSEnumDeclaration + | TSModuleDeclaration + | TSGlobalDeclaration + | TSImportEqualsDeclaration; + +export interface VariableDeclaration extends Span { + type: "VariableDeclaration"; + kind: VariableDeclarationKind; + declarations: Array; + declare?: boolean; + parent?: Node; +} + +export type VariableDeclarationKind = "var" | "let" | "const" | "using" | "await using"; + +export interface VariableDeclarator extends Span { + type: "VariableDeclarator"; + id: BindingPattern; + init: Expression | null; + definite?: boolean; + parent?: Node; +} + +export interface EmptyStatement extends Span { + type: "EmptyStatement"; + parent?: Node; +} + +export interface ExpressionStatement extends Span { + type: "ExpressionStatement"; + expression: Expression; + directive?: string | null; + parent?: Node; +} + +export interface IfStatement extends Span { + type: "IfStatement"; + test: Expression; + consequent: Statement; + alternate: Statement | null; + parent?: Node; +} + +export interface DoWhileStatement extends Span { + type: "DoWhileStatement"; + body: Statement; + test: Expression; + parent?: Node; +} + +export interface WhileStatement extends Span { + type: "WhileStatement"; + test: Expression; + body: Statement; + parent?: Node; +} + +export interface ForStatement extends Span { + type: "ForStatement"; + init: ForStatementInit | null; + test: Expression | null; + update: Expression | null; + body: Statement; + parent?: Node; +} + +export type ForStatementInit = VariableDeclaration | Expression; + +export interface ForInStatement extends Span { + type: "ForInStatement"; + left: ForStatementLeft; + right: Expression; + body: Statement; + parent?: Node; +} + +export type ForStatementLeft = VariableDeclaration | AssignmentTarget; + +export interface ForOfStatement extends Span { + type: "ForOfStatement"; + await: boolean; + left: ForStatementLeft; + right: Expression; + body: Statement; + parent?: Node; +} + +export interface ContinueStatement extends Span { + type: "ContinueStatement"; + label: LabelIdentifier | null; + parent?: Node; +} + +export interface BreakStatement extends Span { + type: "BreakStatement"; + label: LabelIdentifier | null; + parent?: Node; +} + +export interface ReturnStatement extends Span { + type: "ReturnStatement"; + argument: Expression | null; + parent?: Node; +} + +export interface WithStatement extends Span { + type: "WithStatement"; + object: Expression; + body: Statement; + parent?: Node; +} + +export interface SwitchStatement extends Span { + type: "SwitchStatement"; + discriminant: Expression; + cases: Array; + parent?: Node; +} + +export interface SwitchCase extends Span { + type: "SwitchCase"; + test: Expression | null; + consequent: Array; + parent?: Node; +} + +export interface LabeledStatement extends Span { + type: "LabeledStatement"; + label: LabelIdentifier; + body: Statement; + parent?: Node; +} + +export interface ThrowStatement extends Span { + type: "ThrowStatement"; + argument: Expression; + parent?: Node; +} + +export interface TryStatement extends Span { + type: "TryStatement"; + block: BlockStatement; + handler: CatchClause | null; + finalizer: BlockStatement | null; + parent?: Node; +} + +export interface CatchClause extends Span { + type: "CatchClause"; + param: BindingPattern | null; + body: BlockStatement; + parent?: Node; +} + +export interface DebuggerStatement extends Span { + type: "DebuggerStatement"; + parent?: Node; +} + +export type BindingPattern = BindingIdentifier | ObjectPattern | ArrayPattern | AssignmentPattern; + +export interface AssignmentPattern extends Span { + type: "AssignmentPattern"; + decorators?: []; + left: BindingPattern; + right: Expression; + optional?: false; + typeAnnotation?: null; + parent?: Node; +} + +export interface ObjectPattern extends Span { + type: "ObjectPattern"; + decorators?: []; + properties: Array; + optional?: false; + typeAnnotation?: null; + parent?: Node; +} + +export interface BindingProperty extends Span { + type: "Property"; + kind: "init"; + key: PropertyKey; + value: BindingPattern; + method: false; + shorthand: boolean; + computed: boolean; + optional?: false; + parent?: Node; +} + +export interface ArrayPattern extends Span { + type: "ArrayPattern"; + decorators?: []; + elements: Array; + optional?: false; + typeAnnotation?: null; + parent?: Node; +} + +export interface BindingRestElement extends Span { + type: "RestElement"; + decorators?: []; + argument: BindingPattern; + optional?: false; + typeAnnotation?: null; + value?: null; + parent?: Node; +} + +export interface Function extends Span { + type: FunctionType; + id: BindingIdentifier | null; + generator: boolean; + async: boolean; + declare?: boolean; + typeParameters?: TSTypeParameterDeclaration | null; + params: ParamPattern[]; + returnType?: TSTypeAnnotation | null; + body: FunctionBody | null; + expression: false; + parent?: Node; +} + +export type ParamPattern = FormalParameter | TSParameterProperty | FormalParameterRest; + +export type FunctionType = + | "FunctionDeclaration" + | "FunctionExpression" + | "TSDeclareFunction" + | "TSEmptyBodyFunctionExpression"; + +export interface FormalParameterRest extends Span { + type: "RestElement"; + argument: BindingPattern; + decorators?: []; + optional?: boolean; + typeAnnotation?: TSTypeAnnotation | null; + value?: null; + parent?: Node; +} + +export type FormalParameter = { + decorators?: Array; +} & BindingPattern; + +export interface TSParameterProperty extends Span { + type: "TSParameterProperty"; + accessibility: TSAccessibility | null; + decorators: Array; + override: boolean; + parameter: FormalParameter; + readonly: boolean; + static: boolean; + parent?: Node; +} + +export interface FunctionBody extends Span { + type: "BlockStatement"; + body: Array; + parent?: Node; +} + +export interface ArrowFunctionExpression extends Span { + type: "ArrowFunctionExpression"; + expression: boolean; + async: boolean; + typeParameters?: TSTypeParameterDeclaration | null; + params: ParamPattern[]; + returnType?: TSTypeAnnotation | null; + body: FunctionBody | Expression; + id: null; + generator: false; + parent?: Node; +} + +export interface YieldExpression extends Span { + type: "YieldExpression"; + delegate: boolean; + argument: Expression | null; + parent?: Node; +} + +export interface Class extends Span { + type: ClassType; + decorators: Array; + id: BindingIdentifier | null; + typeParameters?: TSTypeParameterDeclaration | null; + superClass: Expression | null; + superTypeArguments?: TSTypeParameterInstantiation | null; + implements?: Array; + body: ClassBody; + abstract?: boolean; + declare?: boolean; + parent?: Node; +} + +export type ClassType = "ClassDeclaration" | "ClassExpression"; + +export interface ClassBody extends Span { + type: "ClassBody"; + body: Array; + parent?: Node; +} + +export type ClassElement = + | StaticBlock + | MethodDefinition + | PropertyDefinition + | AccessorProperty + | TSIndexSignature; + +export interface MethodDefinition extends Span { + type: MethodDefinitionType; + decorators: Array; + key: PropertyKey; + value: Function; + kind: MethodDefinitionKind; + computed: boolean; + static: boolean; + override?: boolean; + optional?: boolean; + accessibility?: TSAccessibility | null; + parent?: Node; +} + +export type MethodDefinitionType = "MethodDefinition" | "TSAbstractMethodDefinition"; + +export interface PropertyDefinition extends Span { + type: PropertyDefinitionType; + decorators: Array; + key: PropertyKey; + typeAnnotation?: TSTypeAnnotation | null; + value: Expression | null; + computed: boolean; + static: boolean; + declare?: boolean; + override?: boolean; + optional?: boolean; + definite?: boolean; + readonly?: boolean; + accessibility?: TSAccessibility | null; + parent?: Node; +} + +export type PropertyDefinitionType = "PropertyDefinition" | "TSAbstractPropertyDefinition"; + +export type MethodDefinitionKind = "constructor" | "method" | "get" | "set"; + +export interface PrivateIdentifier extends Span { + type: "PrivateIdentifier"; + name: string; + parent?: Node; +} + +export interface StaticBlock extends Span { + type: "StaticBlock"; + body: Array; + parent?: Node; +} + +export type ModuleDeclaration = + | ImportDeclaration + | ExportAllDeclaration + | ExportDefaultDeclaration + | ExportNamedDeclaration + | TSExportAssignment + | TSNamespaceExportDeclaration; + +export type AccessorPropertyType = "AccessorProperty" | "TSAbstractAccessorProperty"; + +export interface AccessorProperty extends Span { + type: AccessorPropertyType; + decorators: Array; + key: PropertyKey; + typeAnnotation?: TSTypeAnnotation | null; + value: Expression | null; + computed: boolean; + static: boolean; + override?: boolean; + definite?: boolean; + accessibility?: TSAccessibility | null; + declare?: false; + optional?: false; + readonly?: false; + parent?: Node; +} + +export interface ImportExpression extends Span { + type: "ImportExpression"; + source: Expression; + options: Expression | null; + phase: ImportPhase | null; + parent?: Node; +} + +export interface ImportDeclaration extends Span { + type: "ImportDeclaration"; + specifiers: Array; + source: StringLiteral; + phase: ImportPhase | null; + attributes: Array; + importKind?: ImportOrExportKind; + parent?: Node; +} + +export type ImportPhase = "source" | "defer"; + +export type ImportDeclarationSpecifier = + | ImportSpecifier + | ImportDefaultSpecifier + | ImportNamespaceSpecifier; + +export interface ImportSpecifier extends Span { + type: "ImportSpecifier"; + imported: ModuleExportName; + local: BindingIdentifier; + importKind?: ImportOrExportKind; + parent?: Node; +} + +export interface ImportDefaultSpecifier extends Span { + type: "ImportDefaultSpecifier"; + local: BindingIdentifier; + parent?: Node; +} + +export interface ImportNamespaceSpecifier extends Span { + type: "ImportNamespaceSpecifier"; + local: BindingIdentifier; + parent?: Node; +} + +export interface ImportAttribute extends Span { + type: "ImportAttribute"; + key: ImportAttributeKey; + value: StringLiteral; + parent?: Node; +} + +export type ImportAttributeKey = IdentifierName | StringLiteral; + +export interface ExportNamedDeclaration extends Span { + type: "ExportNamedDeclaration"; + declaration: Declaration | null; + specifiers: Array; + source: StringLiteral | null; + exportKind?: ImportOrExportKind; + attributes: Array; + parent?: Node; +} + +export interface ExportDefaultDeclaration extends Span { + type: "ExportDefaultDeclaration"; + declaration: ExportDefaultDeclarationKind; + exportKind?: "value"; + parent?: Node; +} + +export interface ExportAllDeclaration extends Span { + type: "ExportAllDeclaration"; + exported: ModuleExportName | null; + source: StringLiteral; + attributes: Array; + exportKind?: ImportOrExportKind; + parent?: Node; +} + +export interface ExportSpecifier extends Span { + type: "ExportSpecifier"; + local: ModuleExportName; + exported: ModuleExportName; + exportKind?: ImportOrExportKind; + parent?: Node; +} + +export type ExportDefaultDeclarationKind = Function | Class | TSInterfaceDeclaration | Expression; + +export type ModuleExportName = IdentifierName | IdentifierReference | StringLiteral; + +export interface V8IntrinsicExpression extends Span { + type: "V8IntrinsicExpression"; + name: IdentifierName; + arguments: Array; + parent?: Node; +} + +export interface BooleanLiteral extends Span { + type: "Literal"; + value: boolean; + raw: string | null; + parent?: Node; +} + +export interface NullLiteral extends Span { + type: "Literal"; + value: null; + raw: "null" | null; + parent?: Node; +} + +export interface NumericLiteral extends Span { + type: "Literal"; + value: number; + raw: string | null; + parent?: Node; +} + +export interface StringLiteral extends Span { + type: "Literal"; + value: string; + raw: string | null; + parent?: Node; +} + +export interface BigIntLiteral extends Span { + type: "Literal"; + value: bigint; + raw: string | null; + bigint: string; + parent?: Node; +} + +export interface RegExpLiteral extends Span { + type: "Literal"; + value: RegExp | null; + raw: string | null; + regex: { pattern: string; flags: string }; + parent?: Node; +} + +export interface JSXElement extends Span { + type: "JSXElement"; + openingElement: JSXOpeningElement; + children: Array; + closingElement: JSXClosingElement | null; + parent?: Node; +} + +export interface JSXOpeningElement extends Span { + type: "JSXOpeningElement"; + name: JSXElementName; + typeArguments?: TSTypeParameterInstantiation | null; + attributes: Array; + selfClosing: boolean; + parent?: Node; +} + +export interface JSXClosingElement extends Span { + type: "JSXClosingElement"; + name: JSXElementName; + parent?: Node; +} + +export interface JSXFragment extends Span { + type: "JSXFragment"; + openingFragment: JSXOpeningFragment; + children: Array; + closingFragment: JSXClosingFragment; + parent?: Node; +} + +export interface JSXOpeningFragment extends Span { + type: "JSXOpeningFragment"; + attributes?: []; + selfClosing?: false; + parent?: Node; +} + +export interface JSXClosingFragment extends Span { + type: "JSXClosingFragment"; + parent?: Node; +} + +export type JSXElementName = JSXIdentifier | JSXNamespacedName | JSXMemberExpression; + +export interface JSXNamespacedName extends Span { + type: "JSXNamespacedName"; + namespace: JSXIdentifier; + name: JSXIdentifier; + parent?: Node; +} + +export interface JSXMemberExpression extends Span { + type: "JSXMemberExpression"; + object: JSXMemberExpressionObject; + property: JSXIdentifier; + parent?: Node; +} + +export type JSXMemberExpressionObject = JSXIdentifier | JSXMemberExpression; + +export interface JSXExpressionContainer extends Span { + type: "JSXExpressionContainer"; + expression: JSXExpression; + parent?: Node; +} + +export type JSXExpression = JSXEmptyExpression | Expression; + +export interface JSXEmptyExpression extends Span { + type: "JSXEmptyExpression"; + parent?: Node; +} + +export type JSXAttributeItem = JSXAttribute | JSXSpreadAttribute; + +export interface JSXAttribute extends Span { + type: "JSXAttribute"; + name: JSXAttributeName; + value: JSXAttributeValue | null; + parent?: Node; +} + +export interface JSXSpreadAttribute extends Span { + type: "JSXSpreadAttribute"; + argument: Expression; + parent?: Node; +} + +export type JSXAttributeName = JSXIdentifier | JSXNamespacedName; + +export type JSXAttributeValue = StringLiteral | JSXExpressionContainer | JSXElement | JSXFragment; + +export interface JSXIdentifier extends Span { + type: "JSXIdentifier"; + name: string; + parent?: Node; +} + +export type JSXChild = JSXText | JSXElement | JSXFragment | JSXExpressionContainer | JSXSpreadChild; + +export interface JSXSpreadChild extends Span { + type: "JSXSpreadChild"; + expression: Expression; + parent?: Node; +} + +export interface JSXText extends Span { + type: "JSXText"; + value: string; + raw: string | null; + parent?: Node; +} + +export interface TSThisParameter extends Span { + type: "Identifier"; + decorators: []; + name: "this"; + optional: false; + typeAnnotation: TSTypeAnnotation | null; + parent?: Node; +} + +export interface TSEnumDeclaration extends Span { + type: "TSEnumDeclaration"; + id: BindingIdentifier; + body: TSEnumBody; + const: boolean; + declare: boolean; + parent?: Node; +} + +export interface TSEnumBody extends Span { + type: "TSEnumBody"; + members: Array; + parent?: Node; +} + +export interface TSEnumMember extends Span { + type: "TSEnumMember"; + id: TSEnumMemberName; + initializer: Expression | null; + computed: boolean; + parent?: Node; +} + +export type TSEnumMemberName = IdentifierName | StringLiteral | TemplateLiteral; + +export interface TSTypeAnnotation extends Span { + type: "TSTypeAnnotation"; + typeAnnotation: TSType; + parent?: Node; +} + +export interface TSLiteralType extends Span { + type: "TSLiteralType"; + literal: TSLiteral; + parent?: Node; +} + +export type TSLiteral = + | BooleanLiteral + | NumericLiteral + | BigIntLiteral + | StringLiteral + | TemplateLiteral + | UnaryExpression; + +export type TSType = + | TSAnyKeyword + | TSBigIntKeyword + | TSBooleanKeyword + | TSIntrinsicKeyword + | TSNeverKeyword + | TSNullKeyword + | TSNumberKeyword + | TSObjectKeyword + | TSStringKeyword + | TSSymbolKeyword + | TSUndefinedKeyword + | TSUnknownKeyword + | TSVoidKeyword + | TSArrayType + | TSConditionalType + | TSConstructorType + | TSFunctionType + | TSImportType + | TSIndexedAccessType + | TSInferType + | TSIntersectionType + | TSLiteralType + | TSMappedType + | TSNamedTupleMember + | TSTemplateLiteralType + | TSThisType + | TSTupleType + | TSTypeLiteral + | TSTypeOperator + | TSTypePredicate + | TSTypeQuery + | TSTypeReference + | TSUnionType + | TSParenthesizedType + | JSDocNullableType + | JSDocNonNullableType + | JSDocUnknownType; + +export interface TSConditionalType extends Span { + type: "TSConditionalType"; + checkType: TSType; + extendsType: TSType; + trueType: TSType; + falseType: TSType; + parent?: Node; +} + +export interface TSUnionType extends Span { + type: "TSUnionType"; + types: Array; + parent?: Node; +} + +export interface TSIntersectionType extends Span { + type: "TSIntersectionType"; + types: Array; + parent?: Node; +} + +export interface TSParenthesizedType extends Span { + type: "TSParenthesizedType"; + typeAnnotation: TSType; + parent?: Node; +} + +export interface TSTypeOperator extends Span { + type: "TSTypeOperator"; + operator: TSTypeOperatorOperator; + typeAnnotation: TSType; + parent?: Node; +} + +export type TSTypeOperatorOperator = "keyof" | "unique" | "readonly"; + +export interface TSArrayType extends Span { + type: "TSArrayType"; + elementType: TSType; + parent?: Node; +} + +export interface TSIndexedAccessType extends Span { + type: "TSIndexedAccessType"; + objectType: TSType; + indexType: TSType; + parent?: Node; +} + +export interface TSTupleType extends Span { + type: "TSTupleType"; + elementTypes: Array; + parent?: Node; +} + +export interface TSNamedTupleMember extends Span { + type: "TSNamedTupleMember"; + label: IdentifierName; + elementType: TSTupleElement; + optional: boolean; + parent?: Node; +} + +export interface TSOptionalType extends Span { + type: "TSOptionalType"; + typeAnnotation: TSType; + parent?: Node; +} + +export interface TSRestType extends Span { + type: "TSRestType"; + typeAnnotation: TSType; + parent?: Node; +} + +export type TSTupleElement = TSOptionalType | TSRestType | TSType; + +export interface TSAnyKeyword extends Span { + type: "TSAnyKeyword"; + parent?: Node; +} + +export interface TSStringKeyword extends Span { + type: "TSStringKeyword"; + parent?: Node; +} + +export interface TSBooleanKeyword extends Span { + type: "TSBooleanKeyword"; + parent?: Node; +} + +export interface TSNumberKeyword extends Span { + type: "TSNumberKeyword"; + parent?: Node; +} + +export interface TSNeverKeyword extends Span { + type: "TSNeverKeyword"; + parent?: Node; +} + +export interface TSIntrinsicKeyword extends Span { + type: "TSIntrinsicKeyword"; + parent?: Node; +} + +export interface TSUnknownKeyword extends Span { + type: "TSUnknownKeyword"; + parent?: Node; +} + +export interface TSNullKeyword extends Span { + type: "TSNullKeyword"; + parent?: Node; +} + +export interface TSUndefinedKeyword extends Span { + type: "TSUndefinedKeyword"; + parent?: Node; +} + +export interface TSVoidKeyword extends Span { + type: "TSVoidKeyword"; + parent?: Node; +} + +export interface TSSymbolKeyword extends Span { + type: "TSSymbolKeyword"; + parent?: Node; +} + +export interface TSThisType extends Span { + type: "TSThisType"; + parent?: Node; +} + +export interface TSObjectKeyword extends Span { + type: "TSObjectKeyword"; + parent?: Node; +} + +export interface TSBigIntKeyword extends Span { + type: "TSBigIntKeyword"; + parent?: Node; +} + +export interface TSTypeReference extends Span { + type: "TSTypeReference"; + typeName: TSTypeName; + typeArguments: TSTypeParameterInstantiation | null; + parent?: Node; +} + +export type TSTypeName = IdentifierReference | TSQualifiedName | ThisExpression; + +export interface TSQualifiedName extends Span { + type: "TSQualifiedName"; + left: TSTypeName; + right: IdentifierName; + parent?: Node; +} + +export interface TSTypeParameterInstantiation extends Span { + type: "TSTypeParameterInstantiation"; + params: Array; + parent?: Node; +} + +export interface TSTypeParameter extends Span { + type: "TSTypeParameter"; + name: BindingIdentifier; + constraint: TSType | null; + default: TSType | null; + in: boolean; + out: boolean; + const: boolean; + parent?: Node; +} + +export interface TSTypeParameterDeclaration extends Span { + type: "TSTypeParameterDeclaration"; + params: Array; + parent?: Node; +} + +export interface TSTypeAliasDeclaration extends Span { + type: "TSTypeAliasDeclaration"; + id: BindingIdentifier; + typeParameters: TSTypeParameterDeclaration | null; + typeAnnotation: TSType; + declare: boolean; + parent?: Node; +} + +export type TSAccessibility = "private" | "protected" | "public"; + +export interface TSClassImplements extends Span { + type: "TSClassImplements"; + expression: IdentifierReference | ThisExpression | MemberExpression; + typeArguments: TSTypeParameterInstantiation | null; + parent?: Node; +} + +export interface TSInterfaceDeclaration extends Span { + type: "TSInterfaceDeclaration"; + id: BindingIdentifier; + typeParameters: TSTypeParameterDeclaration | null; + extends: Array; + body: TSInterfaceBody; + declare: boolean; + parent?: Node; +} + +export interface TSInterfaceBody extends Span { + type: "TSInterfaceBody"; + body: Array; + parent?: Node; +} + +export interface TSPropertySignature extends Span { + type: "TSPropertySignature"; + computed: boolean; + optional: boolean; + readonly: boolean; + key: PropertyKey; + typeAnnotation: TSTypeAnnotation | null; + accessibility: null; + static: false; + parent?: Node; +} + +export type TSSignature = + | TSIndexSignature + | TSPropertySignature + | TSCallSignatureDeclaration + | TSConstructSignatureDeclaration + | TSMethodSignature; + +export interface TSIndexSignature extends Span { + type: "TSIndexSignature"; + parameters: Array; + typeAnnotation: TSTypeAnnotation; + readonly: boolean; + static: boolean; + accessibility: null; + parent?: Node; +} + +export interface TSCallSignatureDeclaration extends Span { + type: "TSCallSignatureDeclaration"; + typeParameters: TSTypeParameterDeclaration | null; + params: ParamPattern[]; + returnType: TSTypeAnnotation | null; + parent?: Node; +} + +export type TSMethodSignatureKind = "method" | "get" | "set"; + +export interface TSMethodSignature extends Span { + type: "TSMethodSignature"; + key: PropertyKey; + computed: boolean; + optional: boolean; + kind: TSMethodSignatureKind; + typeParameters: TSTypeParameterDeclaration | null; + params: ParamPattern[]; + returnType: TSTypeAnnotation | null; + accessibility: null; + readonly: false; + static: false; + parent?: Node; +} + +export interface TSConstructSignatureDeclaration extends Span { + type: "TSConstructSignatureDeclaration"; + typeParameters: TSTypeParameterDeclaration | null; + params: ParamPattern[]; + returnType: TSTypeAnnotation | null; + parent?: Node; +} + +export interface TSIndexSignatureName extends Span { + type: "Identifier"; + decorators: []; + name: string; + optional: false; + typeAnnotation: TSTypeAnnotation; + parent?: Node; +} + +export interface TSInterfaceHeritage extends Span { + type: "TSInterfaceHeritage"; + expression: Expression; + typeArguments: TSTypeParameterInstantiation | null; + parent?: Node; +} + +export interface TSTypePredicate extends Span { + type: "TSTypePredicate"; + parameterName: TSTypePredicateName; + asserts: boolean; + typeAnnotation: TSTypeAnnotation | null; + parent?: Node; +} + +export type TSTypePredicateName = IdentifierName | TSThisType; + +export interface TSModuleDeclaration extends Span { + type: "TSModuleDeclaration"; + id: BindingIdentifier | StringLiteral | TSQualifiedName; + body: TSModuleBlock | null; + kind: TSModuleDeclarationKind; + declare: boolean; + global: false; + parent?: Node; +} + +export type TSModuleDeclarationKind = "module" | "namespace"; + +export interface TSGlobalDeclaration extends Span { + type: "TSModuleDeclaration"; + id: IdentifierName; + body: TSModuleBlock; + kind: "global"; + declare: boolean; + global: true; + parent?: Node; +} + +export interface TSModuleBlock extends Span { + type: "TSModuleBlock"; + body: Array; + parent?: Node; +} + +export interface TSTypeLiteral extends Span { + type: "TSTypeLiteral"; + members: Array; + parent?: Node; +} + +export interface TSInferType extends Span { + type: "TSInferType"; + typeParameter: TSTypeParameter; + parent?: Node; +} + +export interface TSTypeQuery extends Span { + type: "TSTypeQuery"; + exprName: TSTypeQueryExprName; + typeArguments: TSTypeParameterInstantiation | null; + parent?: Node; +} + +export type TSTypeQueryExprName = TSImportType | TSTypeName; + +export interface TSImportType extends Span { + type: "TSImportType"; + source: StringLiteral; + options: ObjectExpression | null; + qualifier: TSImportTypeQualifier | null; + typeArguments: TSTypeParameterInstantiation | null; + parent?: Node; +} + +export type TSImportTypeQualifier = IdentifierName | TSImportTypeQualifiedName; + +export interface TSImportTypeQualifiedName extends Span { + type: "TSQualifiedName"; + left: TSImportTypeQualifier; + right: IdentifierName; + parent?: Node; +} + +export interface TSFunctionType extends Span { + type: "TSFunctionType"; + typeParameters: TSTypeParameterDeclaration | null; + params: ParamPattern[]; + returnType: TSTypeAnnotation; + parent?: Node; +} + +export interface TSConstructorType extends Span { + type: "TSConstructorType"; + abstract: boolean; + typeParameters: TSTypeParameterDeclaration | null; + params: ParamPattern[]; + returnType: TSTypeAnnotation; + parent?: Node; +} + +export interface TSMappedType extends Span { + type: "TSMappedType"; + key: BindingIdentifier; + constraint: TSType; + nameType: TSType | null; + typeAnnotation: TSType | null; + optional: TSMappedTypeModifierOperator | false; + readonly: TSMappedTypeModifierOperator | null; + parent?: Node; +} + +export type TSMappedTypeModifierOperator = true | "+" | "-"; + +export interface TSTemplateLiteralType extends Span { + type: "TSTemplateLiteralType"; + quasis: Array; + types: Array; + parent?: Node; +} + +export interface TSAsExpression extends Span { + type: "TSAsExpression"; + expression: Expression; + typeAnnotation: TSType; + parent?: Node; +} + +export interface TSSatisfiesExpression extends Span { + type: "TSSatisfiesExpression"; + expression: Expression; + typeAnnotation: TSType; + parent?: Node; +} + +export interface TSTypeAssertion extends Span { + type: "TSTypeAssertion"; + typeAnnotation: TSType; + expression: Expression; + parent?: Node; +} + +export interface TSImportEqualsDeclaration extends Span { + type: "TSImportEqualsDeclaration"; + id: BindingIdentifier; + moduleReference: TSModuleReference; + importKind: ImportOrExportKind; + parent?: Node; +} + +export type TSModuleReference = TSExternalModuleReference | IdentifierReference | TSQualifiedName; + +export interface TSExternalModuleReference extends Span { + type: "TSExternalModuleReference"; + expression: StringLiteral; + parent?: Node; +} + +export interface TSNonNullExpression extends Span { + type: "TSNonNullExpression"; + expression: Expression; + parent?: Node; +} + +export interface Decorator extends Span { + type: "Decorator"; + expression: Expression; + parent?: Node; +} + +export interface TSExportAssignment extends Span { + type: "TSExportAssignment"; + expression: Expression; + parent?: Node; +} + +export interface TSNamespaceExportDeclaration extends Span { + type: "TSNamespaceExportDeclaration"; + id: IdentifierName; + parent?: Node; +} + +export interface TSInstantiationExpression extends Span { + type: "TSInstantiationExpression"; + expression: Expression; + typeArguments: TSTypeParameterInstantiation; + parent?: Node; +} + +export type ImportOrExportKind = "value" | "type"; + +export interface JSDocNullableType extends Span { + type: "TSJSDocNullableType"; + typeAnnotation: TSType; + postfix: boolean; + parent?: Node; +} + +export interface JSDocNonNullableType extends Span { + type: "TSJSDocNonNullableType"; + typeAnnotation: TSType; + postfix: boolean; + parent?: Node; +} + +export interface JSDocUnknownType extends Span { + type: "TSJSDocUnknownType"; + parent?: Node; +} + +export type ModuleKind = "script" | "module" | "commonjs"; + +export interface Span { + start: number; + end: number; + range?: [number, number]; +} + +export type AssignmentOperator = + | "=" + | "+=" + | "-=" + | "*=" + | "/=" + | "%=" + | "**=" + | "<<=" + | ">>=" + | ">>>=" + | "|=" + | "^=" + | "&=" + | "||=" + | "&&=" + | "??="; + +export type BinaryOperator = + | "==" + | "!=" + | "===" + | "!==" + | "<" + | "<=" + | ">" + | ">=" + | "+" + | "-" + | "*" + | "/" + | "%" + | "**" + | "<<" + | ">>" + | ">>>" + | "|" + | "^" + | "&" + | "in" + | "instanceof"; + +export type LogicalOperator = "||" | "&&" | "??"; + +export type UnaryOperator = "+" | "-" | "!" | "~" | "typeof" | "void" | "delete"; + +export type UpdateOperator = "++" | "--"; + +export type Node = + | Program + | IdentifierName + | IdentifierReference + | BindingIdentifier + | LabelIdentifier + | ThisExpression + | ArrayExpression + | ObjectExpression + | ObjectProperty + | TemplateLiteral + | TaggedTemplateExpression + | TemplateElement + | ComputedMemberExpression + | StaticMemberExpression + | PrivateFieldExpression + | CallExpression + | NewExpression + | MetaProperty + | SpreadElement + | UpdateExpression + | UnaryExpression + | BinaryExpression + | PrivateInExpression + | LogicalExpression + | ConditionalExpression + | AssignmentExpression + | ArrayAssignmentTarget + | ObjectAssignmentTarget + | AssignmentTargetRest + | AssignmentTargetWithDefault + | AssignmentTargetPropertyIdentifier + | AssignmentTargetPropertyProperty + | SequenceExpression + | Super + | AwaitExpression + | ChainExpression + | ParenthesizedExpression + | Directive + | Hashbang + | BlockStatement + | VariableDeclaration + | VariableDeclarator + | EmptyStatement + | ExpressionStatement + | IfStatement + | DoWhileStatement + | WhileStatement + | ForStatement + | ForInStatement + | ForOfStatement + | ContinueStatement + | BreakStatement + | ReturnStatement + | WithStatement + | SwitchStatement + | SwitchCase + | LabeledStatement + | ThrowStatement + | TryStatement + | CatchClause + | DebuggerStatement + | AssignmentPattern + | ObjectPattern + | BindingProperty + | ArrayPattern + | BindingRestElement + | Function + | FunctionBody + | ArrowFunctionExpression + | YieldExpression + | Class + | ClassBody + | MethodDefinition + | PropertyDefinition + | PrivateIdentifier + | StaticBlock + | AccessorProperty + | ImportExpression + | ImportDeclaration + | ImportSpecifier + | ImportDefaultSpecifier + | ImportNamespaceSpecifier + | ImportAttribute + | ExportNamedDeclaration + | ExportDefaultDeclaration + | ExportAllDeclaration + | ExportSpecifier + | V8IntrinsicExpression + | BooleanLiteral + | NullLiteral + | NumericLiteral + | StringLiteral + | BigIntLiteral + | RegExpLiteral + | JSXElement + | JSXOpeningElement + | JSXClosingElement + | JSXFragment + | JSXOpeningFragment + | JSXClosingFragment + | JSXNamespacedName + | JSXMemberExpression + | JSXExpressionContainer + | JSXEmptyExpression + | JSXAttribute + | JSXSpreadAttribute + | JSXIdentifier + | JSXSpreadChild + | JSXText + | TSThisParameter + | TSEnumDeclaration + | TSEnumBody + | TSEnumMember + | TSTypeAnnotation + | TSLiteralType + | TSConditionalType + | TSUnionType + | TSIntersectionType + | TSParenthesizedType + | TSTypeOperator + | TSArrayType + | TSIndexedAccessType + | TSTupleType + | TSNamedTupleMember + | TSOptionalType + | TSRestType + | TSAnyKeyword + | TSStringKeyword + | TSBooleanKeyword + | TSNumberKeyword + | TSNeverKeyword + | TSIntrinsicKeyword + | TSUnknownKeyword + | TSNullKeyword + | TSUndefinedKeyword + | TSVoidKeyword + | TSSymbolKeyword + | TSThisType + | TSObjectKeyword + | TSBigIntKeyword + | TSTypeReference + | TSQualifiedName + | TSTypeParameterInstantiation + | TSTypeParameter + | TSTypeParameterDeclaration + | TSTypeAliasDeclaration + | TSClassImplements + | TSInterfaceDeclaration + | TSInterfaceBody + | TSPropertySignature + | TSIndexSignature + | TSCallSignatureDeclaration + | TSMethodSignature + | TSConstructSignatureDeclaration + | TSIndexSignatureName + | TSInterfaceHeritage + | TSTypePredicate + | TSModuleDeclaration + | TSGlobalDeclaration + | TSModuleBlock + | TSTypeLiteral + | TSInferType + | TSTypeQuery + | TSImportType + | TSImportTypeQualifiedName + | TSFunctionType + | TSConstructorType + | TSMappedType + | TSTemplateLiteralType + | TSAsExpression + | TSSatisfiesExpression + | TSTypeAssertion + | TSImportEqualsDeclaration + | TSExternalModuleReference + | TSNonNullExpression + | Decorator + | TSExportAssignment + | TSNamespaceExportDeclaration + | TSInstantiationExpression + | JSDocNullableType + | JSDocNonNullableType + | JSDocUnknownType + | ParamPattern; diff --git a/node_modules/@rolldown/binding-darwin-arm64/README.md b/node_modules/@rolldown/binding-darwin-arm64/README.md new file mode 100644 index 00000000..ff2023c1 --- /dev/null +++ b/node_modules/@rolldown/binding-darwin-arm64/README.md @@ -0,0 +1,3 @@ +# `@rolldown/binding-darwin-arm64` + +This is the **aarch64-apple-darwin** binary for `@rolldown/binding` diff --git a/node_modules/@rolldown/binding-darwin-arm64/package.json b/node_modules/@rolldown/binding-darwin-arm64/package.json new file mode 100644 index 00000000..a901d0f3 --- /dev/null +++ b/node_modules/@rolldown/binding-darwin-arm64/package.json @@ -0,0 +1,37 @@ +{ + "name": "@rolldown/binding-darwin-arm64", + "version": "1.0.0-rc.17", + "cpu": [ + "arm64" + ], + "main": "rolldown-binding.darwin-arm64.node", + "files": [ + "rolldown-binding.darwin-arm64.node" + ], + "description": "Fast JavaScript/TypeScript bundler in Rust with Rollup-compatible API.", + "keywords": [ + "bundler", + "esbuild", + "parcel", + "rolldown", + "rollup", + "webpack" + ], + "homepage": "https://rolldown.rs/", + "license": "MIT", + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/rolldown/rolldown.git", + "directory": "packages/rolldown" + }, + "publishConfig": { + "registry": "https://registry.npmjs.org/", + "access": "public" + }, + "os": [ + "darwin" + ] +} \ No newline at end of file diff --git a/node_modules/@rolldown/binding-darwin-arm64/rolldown-binding.darwin-arm64.node b/node_modules/@rolldown/binding-darwin-arm64/rolldown-binding.darwin-arm64.node new file mode 100644 index 00000000..b730f501 Binary files /dev/null and b/node_modules/@rolldown/binding-darwin-arm64/rolldown-binding.darwin-arm64.node differ diff --git a/node_modules/@rolldown/pluginutils/LICENSE b/node_modules/@rolldown/pluginutils/LICENSE new file mode 100644 index 00000000..afc0cdba --- /dev/null +++ b/node_modules/@rolldown/pluginutils/LICENSE @@ -0,0 +1,25 @@ +MIT License + +Copyright (c) 2024-present VoidZero Inc. & Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +end of terms and conditions + +The licenses of externally maintained libraries from which parts of the Software is derived are listed [here](https://github.com/rolldown/rolldown/blob/main/THIRD-PARTY-LICENSE). diff --git a/node_modules/@rolldown/pluginutils/README.md b/node_modules/@rolldown/pluginutils/README.md new file mode 100644 index 00000000..6d29a901 --- /dev/null +++ b/node_modules/@rolldown/pluginutils/README.md @@ -0,0 +1,83 @@ +# @rolldown/pluginutils + +A utility library for building flexible, composable filter expressions that can be used in plugin hook filters of Rolldown/Vite/Rollup/Unplugin plugins. + +## Installation + +```sh +pnpm add @rolldown/pluginutils +``` + +## Usage + +### Simple Filters + +```ts +import { exactRegex, makeIdFiltersToMatchWithQuery, prefixRegex } from '@rolldown/pluginutils'; + +// Match exactly 'foo.js' +const filter = exactRegex('foo.js'); + +// Match any id starting with 'lib/' +const prefix = prefixRegex('lib/'); + +// Match ids with query params (e.g. 'foo.js?bar') +const idFilters = makeIdFiltersToMatchWithQuery(['**/*.js', /\.ts$/]); + +// Usage in a plugin to define a hook filter +const myPlugin = { + resolveId: { + filter: { + id: [exactRegex('MY_ID_TO_CHECK'), /some-other-regex/], + }, + handler(id) { + // Your code here + }, + }, +}; +``` + +### Composable Filters + +> [!WARNING] +> Composable filters are not yet supported in Vite or unplugin. They can be used in Rolldown plugins only. + +```ts +import { and, id, include, moduleType, query } from '@rolldown/pluginutils'; + +// Build a filter expression +const filterExpr = and(id(/\.ts$/), moduleType('ts'), query('foo', true)); + +// Usage in a plugin to define a hook filter +const myPlugin = { + transform: { + filter: [include(filterExpr)], + handler(code, id, options) { + // Your code here + }, + }, +}; +``` + +## API Reference + +### Simple Filters + +- `exactRegex(str: string, flags?: string): RegExp` — Matches the exact string. +- `prefixRegex(str: string, flags?: string): RegExp` — Matches values with the given prefix. +- `makeIdFiltersToMatchWithQuery(input: string | RegExp | (string | RegExp)[]): string | RegExp | (string | RegExp)[]` — Adapts filters to match ids with query params. + +### Composable Filters + +- `and(...exprs)` / `or(...exprs)` / `not(expr)` — Logical composition of filter expressions. +- `id(pattern, params?)` — Filter by id. A `string` pattern is matched by exact equality (not glob); a `RegExp` is tested against the id. +- `importerId(pattern, params?)` — Filter by importer id. A `string` pattern is matched by exact equality; a `RegExp` is tested against the importer id. Only usable with the `resolveId` hook. +- `moduleType(type)` — Filter by module type (e.g. 'js', 'tsx', or 'json'). +- `code(pattern)` — Filter by code content. +- `query(key, pattern)` — Filter by query parameter. +- `include(expr)` / `exclude(expr)` — Top-level include/exclude wrappers. +- `queries(obj)` — Compose multiple query filters. + +### Utilities + +- `filterVitePlugins(plugins)` — Filters out Vite plugins with `apply: 'serve'`. diff --git a/node_modules/@rolldown/pluginutils/dist/filter/composable-filters.d.ts b/node_modules/@rolldown/pluginutils/dist/filter/composable-filters.d.ts new file mode 100644 index 00000000..9e622a11 --- /dev/null +++ b/node_modules/@rolldown/pluginutils/dist/filter/composable-filters.d.ts @@ -0,0 +1,90 @@ +type StringOrRegExp = string | RegExp; +type PluginModuleType = 'js' | 'jsx' | 'ts' | 'tsx' | 'json' | 'text' | 'base64' | 'dataurl' | 'binary' | 'empty' | (string & {}); +export type FilterExpressionKind = FilterExpression['kind']; +export type FilterExpression = And | Or | Not | Id | ImporterId | ModuleType | Code | Query; +export type TopLevelFilterExpression = Include | Exclude; +declare class And { + kind: 'and'; + args: FilterExpression[]; + constructor(...args: FilterExpression[]); +} +declare class Or { + kind: 'or'; + args: FilterExpression[]; + constructor(...args: FilterExpression[]); +} +declare class Not { + kind: 'not'; + expr: FilterExpression; + constructor(expr: FilterExpression); +} +export interface QueryFilterObject { + [key: string]: StringOrRegExp | boolean; +} +interface IdParams { + cleanUrl?: boolean; +} +declare class Id { + kind: 'id'; + pattern: StringOrRegExp; + params: IdParams; + constructor(pattern: StringOrRegExp, params?: IdParams); +} +declare class ImporterId { + kind: 'importerId'; + pattern: StringOrRegExp; + params: IdParams; + constructor(pattern: StringOrRegExp, params?: IdParams); +} +declare class ModuleType { + kind: 'moduleType'; + pattern: PluginModuleType; + constructor(pattern: PluginModuleType); +} +declare class Code { + kind: 'code'; + pattern: StringOrRegExp; + constructor(expr: StringOrRegExp); +} +declare class Query { + kind: 'query'; + key: string; + pattern: StringOrRegExp | boolean; + constructor(key: string, pattern: StringOrRegExp | boolean); +} +declare class Include { + kind: 'include'; + expr: FilterExpression; + constructor(expr: FilterExpression); +} +declare class Exclude { + kind: 'exclude'; + expr: FilterExpression; + constructor(expr: FilterExpression); +} +export declare function and(...args: FilterExpression[]): And; +export declare function or(...args: FilterExpression[]): Or; +export declare function not(expr: FilterExpression): Not; +export declare function id(pattern: StringOrRegExp, params?: IdParams): Id; +export declare function importerId(pattern: StringOrRegExp, params?: IdParams): ImporterId; +export declare function moduleType(pattern: PluginModuleType): ModuleType; +export declare function code(pattern: StringOrRegExp): Code; +export declare function query(key: string, pattern: StringOrRegExp | boolean): Query; +export declare function include(expr: FilterExpression): Include; +export declare function exclude(expr: FilterExpression): Exclude; +/** + * convert a queryObject to FilterExpression like + * ```js + * and(query(k1, v1), query(k2, v2)) + * ``` + * @param queryFilterObject The query filter object needs to be matched. + * @returns a `And` FilterExpression + */ +export declare function queries(queryFilter: QueryFilterObject): And; +export declare function interpreter(exprs: TopLevelFilterExpression | TopLevelFilterExpression[], code?: string, id?: string, moduleType?: PluginModuleType, importerId?: string): boolean; +interface InterpreterCtx { + urlSearchParamsCache?: URLSearchParams; +} +export declare function interpreterImpl(expr: TopLevelFilterExpression[], code?: string, id?: string, moduleType?: PluginModuleType, importerId?: string, ctx?: InterpreterCtx): boolean; +export declare function exprInterpreter(expr: FilterExpression, code?: string, id?: string, moduleType?: PluginModuleType, importerId?: string, ctx?: InterpreterCtx): boolean; +export {}; diff --git a/node_modules/@rolldown/pluginutils/dist/filter/composable-filters.js b/node_modules/@rolldown/pluginutils/dist/filter/composable-filters.js new file mode 100644 index 00000000..18635626 --- /dev/null +++ b/node_modules/@rolldown/pluginutils/dist/filter/composable-filters.js @@ -0,0 +1,256 @@ +import { cleanUrl, extractQueryWithoutFragment } from "../utils.js"; +class And { + kind; + args; + constructor(...args) { + if (args.length === 0) { + throw new Error('`And` expects at least one operand'); + } + this.args = args; + this.kind = 'and'; + } +} +class Or { + kind; + args; + constructor(...args) { + if (args.length === 0) { + throw new Error('`Or` expects at least one operand'); + } + this.args = args; + this.kind = 'or'; + } +} +class Not { + kind; + expr; + constructor(expr) { + this.expr = expr; + this.kind = 'not'; + } +} +class Id { + kind; + pattern; + params; + constructor(pattern, params) { + this.pattern = pattern; + this.kind = 'id'; + this.params = params ?? { + cleanUrl: false, + }; + } +} +class ImporterId { + kind; + pattern; + params; + constructor(pattern, params) { + this.pattern = pattern; + this.kind = 'importerId'; + this.params = params ?? { + cleanUrl: false, + }; + } +} +class ModuleType { + kind; + pattern; + constructor(pattern) { + this.pattern = pattern; + this.kind = 'moduleType'; + } +} +class Code { + kind; + pattern; + constructor(expr) { + this.pattern = expr; + this.kind = 'code'; + } +} +class Query { + kind; + key; + pattern; + constructor(key, pattern) { + this.pattern = pattern; + this.key = key; + this.kind = 'query'; + } +} +class Include { + kind; + expr; + constructor(expr) { + this.expr = expr; + this.kind = 'include'; + } +} +class Exclude { + kind; + expr; + constructor(expr) { + this.expr = expr; + this.kind = 'exclude'; + } +} +export function and(...args) { + return new And(...args); +} +export function or(...args) { + return new Or(...args); +} +export function not(expr) { + return new Not(expr); +} +export function id(pattern, params) { + return new Id(pattern, params); +} +export function importerId(pattern, params) { + return new ImporterId(pattern, params); +} +export function moduleType(pattern) { + return new ModuleType(pattern); +} +export function code(pattern) { + return new Code(pattern); +} +/* + * There are three kinds of conditions are supported: + * 1. `boolean`: if the value is `true`, the key must exist and be truthy. if the value is `false`, the key must not exist or be falsy. + * 2. `string`: the key must exist and be equal to the value. + * 3. `RegExp`: the key must exist and match the value. + */ +export function query(key, pattern) { + return new Query(key, pattern); +} +export function include(expr) { + return new Include(expr); +} +export function exclude(expr) { + return new Exclude(expr); +} +/** + * convert a queryObject to FilterExpression like + * ```js + * and(query(k1, v1), query(k2, v2)) + * ``` + * @param queryFilterObject The query filter object needs to be matched. + * @returns a `And` FilterExpression + */ +export function queries(queryFilter) { + let arr = Object.entries(queryFilter).map(([key, value]) => { + return new Query(key, value); + }); + return and(...arr); +} +export function interpreter(exprs, code, id, moduleType, importerId) { + let arr = []; + if (Array.isArray(exprs)) { + arr = exprs; + } + else { + arr = [exprs]; + } + return interpreterImpl(arr, code, id, moduleType, importerId); +} +export function interpreterImpl(expr, code, id, moduleType, importerId, ctx = {}) { + let hasInclude = false; + for (const e of expr) { + switch (e.kind) { + case 'include': { + hasInclude = true; + if (exprInterpreter(e.expr, code, id, moduleType, importerId, ctx)) { + return true; + } + break; + } + case 'exclude': { + if (exprInterpreter(e.expr, code, id, moduleType, importerId, ctx)) { + return false; + } + break; + } + } + } + return !hasInclude; +} +export function exprInterpreter(expr, code, id, moduleType, importerId, ctx = {}) { + switch (expr.kind) { + case 'and': { + return expr.args.every((e) => exprInterpreter(e, code, id, moduleType, importerId, ctx)); + } + case 'or': { + return expr.args.some((e) => exprInterpreter(e, code, id, moduleType, importerId, ctx)); + } + case 'not': { + return !exprInterpreter(expr.expr, code, id, moduleType, importerId, ctx); + } + case 'id': { + if (id === undefined) { + throw new Error('`id` is required for `id` expression'); + } + let idToMatch = id; + if (expr.params.cleanUrl) { + idToMatch = cleanUrl(idToMatch); + } + return typeof expr.pattern === 'string' + ? idToMatch === expr.pattern + : expr.pattern.test(idToMatch); + } + case 'importerId': { + if (importerId === undefined) { + return false; // Entry files have no importer, so no match + } + let importerIdToMatch = importerId; + if (expr.params.cleanUrl) { + importerIdToMatch = cleanUrl(importerIdToMatch); + } + return typeof expr.pattern === 'string' + ? importerIdToMatch === expr.pattern + : expr.pattern.test(importerIdToMatch); + } + case 'moduleType': { + if (moduleType === undefined) { + throw new Error('`moduleType` is required for `moduleType` expression'); + } + return moduleType === expr.pattern; + } + case 'code': { + if (code === undefined) { + throw new Error('`code` is required for `code` expression'); + } + return typeof expr.pattern === 'string' + ? code.includes(expr.pattern) + : expr.pattern.test(code); + } + case 'query': { + if (id === undefined) { + throw new Error('`id` is required for `Query` expression'); + } + if (!ctx.urlSearchParamsCache) { + let queryString = extractQueryWithoutFragment(id); + ctx.urlSearchParamsCache = new URLSearchParams(queryString); + } + let urlParams = ctx.urlSearchParamsCache; + if (typeof expr.pattern === 'boolean') { + if (expr.pattern) { + return urlParams.has(expr.key); + } + else { + return !urlParams.has(expr.key); + } + } + else if (typeof expr.pattern === 'string') { + return urlParams.get(expr.key) === expr.pattern; + } + else { + return expr.pattern.test(urlParams.get(expr.key) ?? ''); + } + } + default: { + throw new Error(`Expression ${JSON.stringify(expr)} is not expected.`); + } + } +} diff --git a/node_modules/@rolldown/pluginutils/dist/filter/filter-vite-plugins.d.ts b/node_modules/@rolldown/pluginutils/dist/filter/filter-vite-plugins.d.ts new file mode 100644 index 00000000..256d8fce --- /dev/null +++ b/node_modules/@rolldown/pluginutils/dist/filter/filter-vite-plugins.d.ts @@ -0,0 +1,28 @@ +/** + * Filters out Vite plugins that have `apply: 'serve'` set. + * + * Since Rolldown operates in build mode, plugins marked with `apply: 'serve'` + * are intended only for Vite's dev server and should be excluded from the build process. + * + * @param plugins - Array of plugins (can include nested arrays) + * @returns Filtered array with serve-only plugins removed + * + * @example + * ```ts + * import { defineConfig } from 'rolldown'; + * import { filterVitePlugins } from '@rolldown/pluginutils'; + * import viteReact from '@vitejs/plugin-react'; + * + * export default defineConfig({ + * plugins: filterVitePlugins([ + * viteReact(), + * { + * name: 'dev-only', + * apply: 'serve', // This will be filtered out + * // ... + * } + * ]) + * }); + * ``` + */ +export declare function filterVitePlugins(plugins: T | T[] | null | undefined | false): T[]; diff --git a/node_modules/@rolldown/pluginutils/dist/filter/filter-vite-plugins.js b/node_modules/@rolldown/pluginutils/dist/filter/filter-vite-plugins.js new file mode 100644 index 00000000..dea79ca9 --- /dev/null +++ b/node_modules/@rolldown/pluginutils/dist/filter/filter-vite-plugins.js @@ -0,0 +1,75 @@ +/** + * Filters out Vite plugins that have `apply: 'serve'` set. + * + * Since Rolldown operates in build mode, plugins marked with `apply: 'serve'` + * are intended only for Vite's dev server and should be excluded from the build process. + * + * @param plugins - Array of plugins (can include nested arrays) + * @returns Filtered array with serve-only plugins removed + * + * @example + * ```ts + * import { defineConfig } from 'rolldown'; + * import { filterVitePlugins } from '@rolldown/pluginutils'; + * import viteReact from '@vitejs/plugin-react'; + * + * export default defineConfig({ + * plugins: filterVitePlugins([ + * viteReact(), + * { + * name: 'dev-only', + * apply: 'serve', // This will be filtered out + * // ... + * } + * ]) + * }); + * ``` + */ +export function filterVitePlugins(plugins) { + if (!plugins) { + return []; + } + const pluginArray = Array.isArray(plugins) ? plugins : [plugins]; + const result = []; + for (const plugin of pluginArray) { + // Skip falsy values + if (!plugin) { + continue; + } + // Handle nested arrays recursively + if (Array.isArray(plugin)) { + result.push(...filterVitePlugins(plugin)); + continue; + } + // Check if plugin has apply property + const pluginWithApply = plugin; + if ('apply' in pluginWithApply) { + const applyValue = pluginWithApply.apply; + // If apply is a function, call it with build mode + if (typeof applyValue === 'function') { + try { + const shouldApply = applyValue({}, // config object + { command: 'build', mode: 'production' }); + if (shouldApply) { + result.push(plugin); + } + } + catch { + // If function throws, include the plugin to be safe + result.push(plugin); + } + } // If apply is 'serve', skip this plugin + else if (applyValue === 'serve') { + continue; + } // If apply is 'build' or anything else, include it + else { + result.push(plugin); + } + } + else { + // No apply property, include the plugin + result.push(plugin); + } + } + return result; +} diff --git a/node_modules/@rolldown/pluginutils/dist/filter/index.d.ts b/node_modules/@rolldown/pluginutils/dist/filter/index.d.ts new file mode 100644 index 00000000..a7a1ea23 --- /dev/null +++ b/node_modules/@rolldown/pluginutils/dist/filter/index.d.ts @@ -0,0 +1,3 @@ +export * from './composable-filters.ts'; +export * from './filter-vite-plugins.ts'; +export * from './simple-filters.ts'; diff --git a/node_modules/@rolldown/pluginutils/dist/filter/index.js b/node_modules/@rolldown/pluginutils/dist/filter/index.js new file mode 100644 index 00000000..6f5bb4fa --- /dev/null +++ b/node_modules/@rolldown/pluginutils/dist/filter/index.js @@ -0,0 +1,3 @@ +export * from "./composable-filters.js"; +export * from "./filter-vite-plugins.js"; +export * from "./simple-filters.js"; diff --git a/node_modules/@rolldown/pluginutils/dist/filter/simple-filters.d.ts b/node_modules/@rolldown/pluginutils/dist/filter/simple-filters.d.ts new file mode 100644 index 00000000..1f033615 --- /dev/null +++ b/node_modules/@rolldown/pluginutils/dist/filter/simple-filters.d.ts @@ -0,0 +1,71 @@ +/** + * Constructs a RegExp that matches the exact string specified. + * + * This is useful for plugin hook filters. + * + * @param str the string to match. + * @param flags flags for the RegExp. + * + * @example + * ```ts + * import { exactRegex } from '@rolldown/pluginutils'; + * const plugin = { + * name: 'plugin', + * resolveId: { + * filter: { id: exactRegex('foo') }, + * handler(id) {} // will only be called for `foo` + * } + * } + * ``` + */ +export declare function exactRegex(str: string, flags?: string): RegExp; +/** + * Constructs a RegExp that matches a value that has the specified prefix. + * + * This is useful for plugin hook filters. + * + * @param str the string to match. + * @param flags flags for the RegExp. + * + * @example + * ```ts + * import { prefixRegex } from '@rolldown/pluginutils'; + * const plugin = { + * name: 'plugin', + * resolveId: { + * filter: { id: prefixRegex('foo') }, + * handler(id) {} // will only be called for IDs starting with `foo` + * } + * } + * ``` + */ +export declare function prefixRegex(str: string, flags?: string): RegExp; +type WidenString = T extends string ? string : T; +/** + * Converts a id filter to match with an id with a query. + * + * @param input the id filters to convert. + * + * @example + * ```ts + * import { makeIdFiltersToMatchWithQuery } from '@rolldown/pluginutils'; + * const plugin = { + * name: 'plugin', + * transform: { + * filter: { id: makeIdFiltersToMatchWithQuery(['**' + '/*.js', /\.ts$/]) }, + * // The handler will be called for IDs like: + * // - foo.js + * // - foo.js?foo + * // - foo.txt?foo.js + * // - foo.ts + * // - foo.ts?foo + * // - foo.txt?foo.ts + * handler(code, id) {} + * } + * } + * ``` + */ +export declare function makeIdFiltersToMatchWithQuery(input: T): WidenString; +export declare function makeIdFiltersToMatchWithQuery(input: readonly T[]): WidenString[]; +export declare function makeIdFiltersToMatchWithQuery(input: string | RegExp | readonly (string | RegExp)[]): string | RegExp | (string | RegExp)[]; +export {}; diff --git a/node_modules/@rolldown/pluginutils/dist/filter/simple-filters.js b/node_modules/@rolldown/pluginutils/dist/filter/simple-filters.js new file mode 100644 index 00000000..241380c8 --- /dev/null +++ b/node_modules/@rolldown/pluginutils/dist/filter/simple-filters.js @@ -0,0 +1,70 @@ +/** + * Constructs a RegExp that matches the exact string specified. + * + * This is useful for plugin hook filters. + * + * @param str the string to match. + * @param flags flags for the RegExp. + * + * @example + * ```ts + * import { exactRegex } from '@rolldown/pluginutils'; + * const plugin = { + * name: 'plugin', + * resolveId: { + * filter: { id: exactRegex('foo') }, + * handler(id) {} // will only be called for `foo` + * } + * } + * ``` + */ +export function exactRegex(str, flags) { + return new RegExp(`^${escapeRegex(str)}$`, flags); +} +/** + * Constructs a RegExp that matches a value that has the specified prefix. + * + * This is useful for plugin hook filters. + * + * @param str the string to match. + * @param flags flags for the RegExp. + * + * @example + * ```ts + * import { prefixRegex } from '@rolldown/pluginutils'; + * const plugin = { + * name: 'plugin', + * resolveId: { + * filter: { id: prefixRegex('foo') }, + * handler(id) {} // will only be called for IDs starting with `foo` + * } + * } + * ``` + */ +export function prefixRegex(str, flags) { + return new RegExp(`^${escapeRegex(str)}`, flags); +} +const escapeRegexRE = /[-/\\^$*+?.()|[\]{}]/g; +function escapeRegex(str) { + return str.replace(escapeRegexRE, '\\$&'); +} +export function makeIdFiltersToMatchWithQuery(input) { + if (!Array.isArray(input)) { + return makeIdFilterToMatchWithQuery( + // Array.isArray cannot narrow the type + // https://github.com/microsoft/TypeScript/issues/17002 + input); + } + return input.map((i) => makeIdFilterToMatchWithQuery(i)); +} +function makeIdFilterToMatchWithQuery(input) { + if (typeof input === 'string') { + return `${input}{?*,}`; + } + return makeRegexIdFilterToMatchWithQuery(input); +} +function makeRegexIdFilterToMatchWithQuery(input) { + return new RegExp( + // replace `$` with `(?:\?.*)?$` (ignore `\$`) + input.source.replace(/(? + + + + + Tailwind CSS + + +

+ +

+ A utility-first CSS framework for rapidly building custom user interfaces. +

+ +

+ Build Status + Total Downloads + Latest Release + License +

+ +--- + +## Documentation + +For full documentation, visit [tailwindcss.com](https://tailwindcss.com). + +## Community + +For help, discussion about best practices, or feature ideas: + +[Discuss Tailwind CSS on GitHub](https://github.com/tailwindlabs/tailwindcss/discussions) + +## Contributing + +If you're interested in contributing to Tailwind CSS, please read our [contributing docs](https://github.com/tailwindlabs/tailwindcss/blob/main/.github/CONTRIBUTING.md) **before submitting a pull request**. diff --git a/node_modules/@tailwindcss/node/dist/esm-cache.loader.d.mts b/node_modules/@tailwindcss/node/dist/esm-cache.loader.d.mts new file mode 100644 index 00000000..55f2bad3 --- /dev/null +++ b/node_modules/@tailwindcss/node/dist/esm-cache.loader.d.mts @@ -0,0 +1,5 @@ +import { ResolveHook } from 'node:module'; + +declare let resolve: ResolveHook; + +export { resolve }; diff --git a/node_modules/@tailwindcss/node/dist/esm-cache.loader.mjs b/node_modules/@tailwindcss/node/dist/esm-cache.loader.mjs new file mode 100644 index 00000000..f9ae1082 --- /dev/null +++ b/node_modules/@tailwindcss/node/dist/esm-cache.loader.mjs @@ -0,0 +1 @@ +import{isBuiltin as i}from"module";var o=async(a,e,u)=>{let r=await u(a,e);if(r.url===import.meta.url||i(r.url)||!e.parentURL)return r;let t=new URL(e.parentURL).searchParams.get("id");if(t===null)return r;let l=new URL(r.url);return l.searchParams.set("id",t),{...r,url:`${l}`}};export{o as resolve}; diff --git a/node_modules/@tailwindcss/node/dist/index.d.mts b/node_modules/@tailwindcss/node/dist/index.d.mts new file mode 100644 index 00000000..25c3731e --- /dev/null +++ b/node_modules/@tailwindcss/node/dist/index.d.mts @@ -0,0 +1,256 @@ +import { AstNode as AstNode$1 } from './ast'; +import { Candidate, Variant } from './candidate'; +import { compileAstNodes } from './compile'; +import { ClassEntry, VariantEntry, CanonicalizeOptions } from './intellisense'; +import { Theme } from './theme'; +import { Utilities } from './utilities'; +import { Variants } from './variants'; +import * as tailwindcss from 'tailwindcss'; +import { Polyfills, Features } from 'tailwindcss'; +export { Features, Polyfills } from 'tailwindcss'; + +declare const DEBUG: boolean; + +declare const env_DEBUG: typeof DEBUG; +declare namespace env { + export { env_DEBUG as DEBUG }; +} + +declare const enum CompileAstFlags { + None = 0, + RespectImportant = 1 +} +type DesignSystem = { + theme: Theme; + utilities: Utilities; + variants: Variants; + invalidCandidates: Set; + important: boolean; + getClassOrder(classes: string[]): [string, bigint | null][]; + getClassList(): ClassEntry[]; + getVariants(): VariantEntry[]; + parseCandidate(candidate: string): Readonly[]; + parseVariant(variant: string): Readonly | null; + compileAstNodes(candidate: Candidate, flags?: CompileAstFlags): ReturnType; + printCandidate(candidate: Candidate): string; + printVariant(variant: Variant): string; + getVariantOrder(): Map; + resolveThemeValue(path: string, forceInline?: boolean): string | undefined; + trackUsedVariables(raw: string): void; + canonicalizeCandidates(candidates: string[], options?: CanonicalizeOptions): string[]; + candidatesToCss(classes: string[]): (string | null)[]; + candidatesToAst(classes: string[]): AstNode$1[][]; + storage: Record; +}; + +/** + * The source code for one or more nodes in the AST + * + * This generally corresponds to a stylesheet + */ +interface Source { + /** + * The path to the file that contains the referenced source code + * + * If this references the *output* source code, this is `null`. + */ + file: string | null; + /** + * The referenced source code + */ + code: string; +} +/** + * The file and offsets within it that this node covers + * + * This can represent either: + * - A location in the original CSS which caused this node to be created + * - A location in the output CSS where this node resides + */ +type SourceLocation = [source: Source, start: number, end: number]; + +/** + * Line offset tables are the key to generating our source maps. They allow us + * to store indexes with our AST nodes and later convert them into positions as + * when given the source that the indexes refer to. + */ +/** + * A position in source code + * + * https://tc39.es/ecma426/#sec-position-record-type + */ +interface Position { + /** The line number, one-based */ + line: number; + /** The column/character number, one-based */ + column: number; +} + +interface OriginalPosition extends Position { + source: DecodedSource; +} +/** + * A "decoded" sourcemap + * + * @see https://tc39.es/ecma426/#decoded-source-map-record + */ +interface DecodedSourceMap { + file: string | null; + sources: DecodedSource[]; + mappings: DecodedMapping[]; +} +/** + * A "decoded" source + * + * @see https://tc39.es/ecma426/#decoded-source-record + */ +interface DecodedSource { + url: string | null; + content: string | null; + ignore: boolean; +} +/** + * A "decoded" mapping + * + * @see https://tc39.es/ecma426/#decoded-mapping-record + */ +interface DecodedMapping { + originalPosition: OriginalPosition | null; + generatedPosition: Position; + name: string | null; +} + +type StyleRule = { + kind: 'rule'; + selector: string; + nodes: AstNode[]; + src?: SourceLocation; + dst?: SourceLocation; +}; +type AtRule = { + kind: 'at-rule'; + name: string; + params: string; + nodes: AstNode[]; + src?: SourceLocation; + dst?: SourceLocation; +}; +type Declaration = { + kind: 'declaration'; + property: string; + value: string | undefined; + important: boolean; + src?: SourceLocation; + dst?: SourceLocation; +}; +type Comment = { + kind: 'comment'; + value: string; + src?: SourceLocation; + dst?: SourceLocation; +}; +type Context = { + kind: 'context'; + context: Record; + nodes: AstNode[]; + src?: undefined; + dst?: undefined; +}; +type AtRoot = { + kind: 'at-root'; + nodes: AstNode[]; + src?: undefined; + dst?: undefined; +}; +type AstNode = StyleRule | AtRule | Declaration | Comment | Context | AtRoot; + +type Resolver = (id: string, base: string) => Promise; +interface CompileOptions { + base: string; + from?: string; + onDependency: (path: string) => void; + shouldRewriteUrls?: boolean; + polyfills?: Polyfills; + customCssResolver?: Resolver; + customJsResolver?: Resolver; +} +declare function compileAst(ast: AstNode[], options: CompileOptions): Promise<{ + sources: { + base: string; + pattern: string; + negated: boolean; + }[]; + root: "none" | { + base: string; + pattern: string; + } | null; + features: Features; + build(candidates: string[]): AstNode[]; +}>; +declare function compile(css: string, options: CompileOptions): Promise<{ + sources: { + base: string; + pattern: string; + negated: boolean; + }[]; + root: "none" | { + base: string; + pattern: string; + } | null; + features: Features; + build(candidates: string[]): string; + buildSourceMap(): tailwindcss.DecodedSourceMap; +}>; +declare function __unstable__loadDesignSystem(css: string, { base }: { + base: string; +}): Promise; +declare function loadModule(id: string, base: string, onDependency: (path: string) => void, customJsResolver?: Resolver): Promise<{ + path: string; + base: string; + module: any; +}>; + +declare class Instrumentation implements Disposable { + #private; + private defaultFlush; + constructor(defaultFlush?: (message: string) => undefined); + hit(label: string): void; + start(label: string): void; + end(label: string): void; + reset(): void; + report(flush?: (message: string) => undefined): void; + [Symbol.dispose](): void; +} + +declare function normalizePath(originalPath: string): string; + +interface OptimizeOptions { + /** + * The file being transformed + */ + file?: string; + /** + * Enabled minified output + */ + minify?: boolean; + /** + * The output source map before optimization + * + * If omitted a resulting source map will not be available + */ + map?: string; +} +interface TransformResult { + code: string; + map: string | undefined; +} +declare function optimize(input: string, { file, minify, map }?: OptimizeOptions): TransformResult; + +interface SourceMap { + readonly raw: string; + readonly inline: string; + comment(url: string): string; +} +declare function toSourceMap(map: DecodedSourceMap | string): SourceMap; + +export { type CompileOptions, type DecodedSource, type DecodedSourceMap, Instrumentation, type OptimizeOptions, type Resolver, type SourceMap, type TransformResult, __unstable__loadDesignSystem, compile, compileAst, env, loadModule, normalizePath, optimize, toSourceMap }; diff --git a/node_modules/@tailwindcss/node/dist/index.d.ts b/node_modules/@tailwindcss/node/dist/index.d.ts new file mode 100644 index 00000000..25c3731e --- /dev/null +++ b/node_modules/@tailwindcss/node/dist/index.d.ts @@ -0,0 +1,256 @@ +import { AstNode as AstNode$1 } from './ast'; +import { Candidate, Variant } from './candidate'; +import { compileAstNodes } from './compile'; +import { ClassEntry, VariantEntry, CanonicalizeOptions } from './intellisense'; +import { Theme } from './theme'; +import { Utilities } from './utilities'; +import { Variants } from './variants'; +import * as tailwindcss from 'tailwindcss'; +import { Polyfills, Features } from 'tailwindcss'; +export { Features, Polyfills } from 'tailwindcss'; + +declare const DEBUG: boolean; + +declare const env_DEBUG: typeof DEBUG; +declare namespace env { + export { env_DEBUG as DEBUG }; +} + +declare const enum CompileAstFlags { + None = 0, + RespectImportant = 1 +} +type DesignSystem = { + theme: Theme; + utilities: Utilities; + variants: Variants; + invalidCandidates: Set; + important: boolean; + getClassOrder(classes: string[]): [string, bigint | null][]; + getClassList(): ClassEntry[]; + getVariants(): VariantEntry[]; + parseCandidate(candidate: string): Readonly[]; + parseVariant(variant: string): Readonly | null; + compileAstNodes(candidate: Candidate, flags?: CompileAstFlags): ReturnType; + printCandidate(candidate: Candidate): string; + printVariant(variant: Variant): string; + getVariantOrder(): Map; + resolveThemeValue(path: string, forceInline?: boolean): string | undefined; + trackUsedVariables(raw: string): void; + canonicalizeCandidates(candidates: string[], options?: CanonicalizeOptions): string[]; + candidatesToCss(classes: string[]): (string | null)[]; + candidatesToAst(classes: string[]): AstNode$1[][]; + storage: Record; +}; + +/** + * The source code for one or more nodes in the AST + * + * This generally corresponds to a stylesheet + */ +interface Source { + /** + * The path to the file that contains the referenced source code + * + * If this references the *output* source code, this is `null`. + */ + file: string | null; + /** + * The referenced source code + */ + code: string; +} +/** + * The file and offsets within it that this node covers + * + * This can represent either: + * - A location in the original CSS which caused this node to be created + * - A location in the output CSS where this node resides + */ +type SourceLocation = [source: Source, start: number, end: number]; + +/** + * Line offset tables are the key to generating our source maps. They allow us + * to store indexes with our AST nodes and later convert them into positions as + * when given the source that the indexes refer to. + */ +/** + * A position in source code + * + * https://tc39.es/ecma426/#sec-position-record-type + */ +interface Position { + /** The line number, one-based */ + line: number; + /** The column/character number, one-based */ + column: number; +} + +interface OriginalPosition extends Position { + source: DecodedSource; +} +/** + * A "decoded" sourcemap + * + * @see https://tc39.es/ecma426/#decoded-source-map-record + */ +interface DecodedSourceMap { + file: string | null; + sources: DecodedSource[]; + mappings: DecodedMapping[]; +} +/** + * A "decoded" source + * + * @see https://tc39.es/ecma426/#decoded-source-record + */ +interface DecodedSource { + url: string | null; + content: string | null; + ignore: boolean; +} +/** + * A "decoded" mapping + * + * @see https://tc39.es/ecma426/#decoded-mapping-record + */ +interface DecodedMapping { + originalPosition: OriginalPosition | null; + generatedPosition: Position; + name: string | null; +} + +type StyleRule = { + kind: 'rule'; + selector: string; + nodes: AstNode[]; + src?: SourceLocation; + dst?: SourceLocation; +}; +type AtRule = { + kind: 'at-rule'; + name: string; + params: string; + nodes: AstNode[]; + src?: SourceLocation; + dst?: SourceLocation; +}; +type Declaration = { + kind: 'declaration'; + property: string; + value: string | undefined; + important: boolean; + src?: SourceLocation; + dst?: SourceLocation; +}; +type Comment = { + kind: 'comment'; + value: string; + src?: SourceLocation; + dst?: SourceLocation; +}; +type Context = { + kind: 'context'; + context: Record; + nodes: AstNode[]; + src?: undefined; + dst?: undefined; +}; +type AtRoot = { + kind: 'at-root'; + nodes: AstNode[]; + src?: undefined; + dst?: undefined; +}; +type AstNode = StyleRule | AtRule | Declaration | Comment | Context | AtRoot; + +type Resolver = (id: string, base: string) => Promise; +interface CompileOptions { + base: string; + from?: string; + onDependency: (path: string) => void; + shouldRewriteUrls?: boolean; + polyfills?: Polyfills; + customCssResolver?: Resolver; + customJsResolver?: Resolver; +} +declare function compileAst(ast: AstNode[], options: CompileOptions): Promise<{ + sources: { + base: string; + pattern: string; + negated: boolean; + }[]; + root: "none" | { + base: string; + pattern: string; + } | null; + features: Features; + build(candidates: string[]): AstNode[]; +}>; +declare function compile(css: string, options: CompileOptions): Promise<{ + sources: { + base: string; + pattern: string; + negated: boolean; + }[]; + root: "none" | { + base: string; + pattern: string; + } | null; + features: Features; + build(candidates: string[]): string; + buildSourceMap(): tailwindcss.DecodedSourceMap; +}>; +declare function __unstable__loadDesignSystem(css: string, { base }: { + base: string; +}): Promise; +declare function loadModule(id: string, base: string, onDependency: (path: string) => void, customJsResolver?: Resolver): Promise<{ + path: string; + base: string; + module: any; +}>; + +declare class Instrumentation implements Disposable { + #private; + private defaultFlush; + constructor(defaultFlush?: (message: string) => undefined); + hit(label: string): void; + start(label: string): void; + end(label: string): void; + reset(): void; + report(flush?: (message: string) => undefined): void; + [Symbol.dispose](): void; +} + +declare function normalizePath(originalPath: string): string; + +interface OptimizeOptions { + /** + * The file being transformed + */ + file?: string; + /** + * Enabled minified output + */ + minify?: boolean; + /** + * The output source map before optimization + * + * If omitted a resulting source map will not be available + */ + map?: string; +} +interface TransformResult { + code: string; + map: string | undefined; +} +declare function optimize(input: string, { file, minify, map }?: OptimizeOptions): TransformResult; + +interface SourceMap { + readonly raw: string; + readonly inline: string; + comment(url: string): string; +} +declare function toSourceMap(map: DecodedSourceMap | string): SourceMap; + +export { type CompileOptions, type DecodedSource, type DecodedSourceMap, Instrumentation, type OptimizeOptions, type Resolver, type SourceMap, type TransformResult, __unstable__loadDesignSystem, compile, compileAst, env, loadModule, normalizePath, optimize, toSourceMap }; diff --git a/node_modules/@tailwindcss/node/dist/index.js b/node_modules/@tailwindcss/node/dist/index.js new file mode 100644 index 00000000..327bf63a --- /dev/null +++ b/node_modules/@tailwindcss/node/dist/index.js @@ -0,0 +1,18 @@ +"use strict";var It=Object.create;var oe=Object.defineProperty;var Ut=Object.getOwnPropertyDescriptor;var zt=Object.getOwnPropertyNames;var Lt=Object.getPrototypeOf,Kt=Object.prototype.hasOwnProperty;var Me=(e,r)=>{for(var t in r)oe(e,t,{get:r[t],enumerable:!0})},Fe=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of zt(r))!Kt.call(e,o)&&o!==t&&oe(e,o,{get:()=>r[o],enumerable:!(n=Ut(r,o))||n.enumerable});return e};var T=(e,r,t)=>(t=e!=null?It(Lt(e)):{},Fe(r||!e||!e.__esModule?oe(t,"default",{value:e,enumerable:!0}):t,e)),Mt=e=>Fe(oe({},"__esModule",{value:!0}),e);var pn={};Me(pn,{Features:()=>_.Features,Instrumentation:()=>Ke,Polyfills:()=>_.Polyfills,__unstable__loadDesignSystem:()=>tn,compile:()=>en,compileAst:()=>Xr,env:()=>le,loadModule:()=>ze,normalizePath:()=>ge,optimize:()=>sn,toSourceMap:()=>fn});module.exports=Mt(pn);var _t=T(require("module")),Dt=require("url");var le={};Me(le,{DEBUG:()=>ke});var ke=Ft(process.env.DEBUG);function Ft(e){if(typeof e=="boolean")return e;if(e===void 0)return!1;if(e==="true"||e==="1")return!0;if(e==="false"||e==="0")return!1;if(e==="*")return!0;let r=e.split(",").map(t=>t.split(":")[0]);return r.includes("-tailwindcss")?!1:!!r.includes("tailwindcss")}var W=T(require("enhanced-resolve")),$t=require("jiti"),he=T(require("fs")),Ue=T(require("fs/promises")),H=T(require("path")),De=require("url"),_=require("tailwindcss");var ae=T(require("fs/promises")),Y=T(require("path")),jt=[/import[\s\S]*?['"](.{3,}?)['"]/gi,/import[\s\S]*from[\s\S]*?['"](.{3,}?)['"]/gi,/export[\s\S]*from[\s\S]*?['"](.{3,}?)['"]/gi,/require\(['"`](.+)['"`]\)/gi],Wt=[".js",".cjs",".mjs"],Bt=["",".js",".cjs",".mjs",".ts",".cts",".mts",".jsx",".tsx"],Yt=["",".ts",".cts",".mts",".tsx",".js",".cjs",".mjs",".jsx"];async function Gt(e,r){for(let t of r){let n=`${e}${t}`;if((await ae.default.stat(n).catch(()=>null))?.isFile())return n}for(let t of r){let n=`${e}/index${t}`;if(await ae.default.access(n).then(()=>!0,()=>!1))return n}return null}async function je(e,r,t,n){let o=Wt.includes(n)?Bt:Yt,l=await Gt(Y.default.resolve(t,r),o);if(l===null||e.has(l))return;e.add(l),t=Y.default.dirname(l),n=Y.default.extname(l);let i=await ae.default.readFile(l,"utf-8"),s=[];for(let a of jt)for(let u of i.matchAll(a))u[1].startsWith(".")&&s.push(je(e,u[1],t,n));await Promise.all(s)}async function We(e){let r=new Set;return await je(r,e,Y.default.dirname(e),Y.default.extname(e)),Array.from(r)}var Pe=T(require("path"));function G(e){return{kind:"word",value:e}}function Ht(e,r){return{kind:"function",value:e,nodes:r}}function qt(e){return{kind:"separator",value:e}}function C(e){let r="";for(let t of e)switch(t.kind){case"word":case"separator":{r+=t.value;break}case"function":r+=t.value+"("+C(t.nodes)+")"}return r}var Be=92,Zt=41,Ye=58,Ge=44,Qt=34,He=61,qe=62,Ze=60,Qe=10,Jt=40,Xt=39,er=47,Je=32,Xe=9;function A(e){e=e.replaceAll(`\r +`,` +`);let r=[],t=[],n=null,o="",l;for(let i=0;i0){let u=G(o);n?n.nodes.push(u):r.push(u),o=""}let a=G(e[i]);n?n.nodes.push(a):r.push(a);break}case Ye:case Ge:case He:case qe:case Ze:case Qe:case Je:case Xe:{if(o.length>0){let c=G(o);n?n.nodes.push(c):r.push(c),o=""}let a=i,u=i+1;for(;u0){let u=G(o);a?.nodes.push(u),o=""}t.length>0?n=t[t.length-1]:n=null;break}default:o+=String.fromCharCode(s)}}return o.length>0&&r.push(G(o)),r}var g=class extends Map{constructor(t){super();this.factory=t}get(t){let n=super.get(t);return n===void 0&&(n=this.factory(t,this),this.set(t,n)),n}};var yn=new Uint8Array(256);var se=new Uint8Array(256);function w(e,r){let t=0,n=[],o=0,l=e.length,i=r.charCodeAt(0);for(let s=0;s0&&a===se[t-1]&&t--;break}}return n.push(e.slice(o)),n}var we=(i=>(i[i.Continue=0]="Continue",i[i.Skip=1]="Skip",i[i.Stop=2]="Stop",i[i.Replace=3]="Replace",i[i.ReplaceSkip=4]="ReplaceSkip",i[i.ReplaceStop=5]="ReplaceStop",i))(we||{}),k={Continue:{kind:0},Skip:{kind:1},Stop:{kind:2},Replace:e=>({kind:3,nodes:Array.isArray(e)?e:[e]}),ReplaceSkip:e=>({kind:4,nodes:Array.isArray(e)?e:[e]}),ReplaceStop:e=>({kind:5,nodes:Array.isArray(e)?e:[e]})};function h(e,r){typeof r=="function"?et(e,r):et(e,r.enter,r.exit)}function et(e,r=()=>k.Continue,t=()=>k.Continue){let n={value:[e,0,null],prev:null},o={parent:null,depth:0,path(){let l=[],i=n;for(;i;){let s=i.value[2];s&&l.push(s),i=i.prev}return l.reverse(),l}};for(;n!==null;){let l=n.value,i=l[0],s=l[1],a=l[2];if(s>=i.length){n=n.prev,o.depth-=1;continue}if(o.parent=a,s>=0){let f=i[s],d=r(f,o)??k.Continue;switch(d.kind){case 0:{f.nodes&&f.nodes.length>0&&(o.depth+=1,n={value:[f.nodes,0,f],prev:n}),l[1]=~s;continue}case 2:return;case 1:{l[1]=~s;continue}case 3:{i.splice(s,1,...d.nodes);continue}case 5:{i.splice(s,1,...d.nodes);return}case 4:{i.splice(s,1,...d.nodes),l[1]+=d.nodes.length;continue}default:throw new Error(`Invalid \`WalkAction.${we[d.kind]??`Unknown(${d.kind})`}\` in enter.`)}}let u=~s,p=i[u],c=t(p,o)??k.Continue;switch(c.kind){case 0:l[1]=u+1;continue;case 2:return;case 3:{i.splice(u,1,...c.nodes),l[1]=u+c.nodes.length;continue}case 5:{i.splice(u,1,...c.nodes);return}case 4:{i.splice(u,1,...c.nodes),l[1]=u+c.nodes.length;continue}default:throw new Error(`Invalid \`WalkAction.${we[c.kind]??`Unknown(${c.kind})`}\` in exit.`)}}}var Rn=new g(e=>{let r=A(e),t=new Set;return h(r,(n,o)=>{let l=o.parent===null?r:o.parent.nodes??[];if(n.kind==="word"&&(n.value==="+"||n.value==="-"||n.value==="*"||n.value==="/")){let i=l.indexOf(n)??-1;if(i===-1)return;let s=l[i-1];if(s?.kind!=="separator"||s.value!==" ")return;let a=l[i+1];if(a?.kind!=="separator"||a.value!==" ")return;t.add(s),t.add(a)}else n.kind==="separator"&&n.value.length>0&&n.value.trim()===""?(l[0]===n||l[l.length-1]===n)&&t.add(n):n.kind==="separator"&&n.value.trim()===","&&(n.value=",")}),t.size>0&&h(r,n=>{if(t.has(n))return t.delete(n),k.ReplaceSkip([])}),ye(r),C(r)});var On=new g(e=>{let r=A(e);return r.length===3&&r[0].kind==="word"&&r[0].value==="&"&&r[1].kind==="separator"&&r[1].value===":"&&r[2].kind==="function"&&r[2].value==="is"?C(r[2].nodes):e});function ye(e){for(let r of e)switch(r.kind){case"function":{if(r.value==="url"||r.value.endsWith("_url")){r.value=q(r.value);break}if(r.value==="var"||r.value.endsWith("_var")||r.value==="theme"||r.value.endsWith("_theme")){r.value=q(r.value);for(let t=0;t{let r=A(e);return r.length===1&&r[0].kind==="function"&&r[0].value==="var"});function tr(e){throw new Error(`Unexpected value: ${e}`)}function q(e){return e.replaceAll("_",String.raw`\_`).replaceAll(" ","_")}var rr=process.env.FEATURES_ENV!=="stable";var D=/[+-]?\d*\.?\d+(?:[eE][+-]?\d+)?/,Wn=new RegExp(`^${D.source}$`);var Bn=new RegExp(`^${D.source}%$`);var Yn=new RegExp(`^${D.source}\\s*/\\s*${D.source}$`);var nr=["cm","mm","Q","in","pc","pt","px","em","ex","ch","rem","lh","rlh","vw","vh","vmin","vmax","vb","vi","svw","svh","lvw","lvh","dvw","dvh","cqw","cqh","cqi","cqb","cqmin","cqmax"],Gn=new RegExp(`^${D.source}(${nr.join("|")})$`);var ir=["deg","rad","grad","turn"],Hn=new RegExp(`^${D.source}(${ir.join("|")})$`);var qn=new RegExp(`^${D.source} +${D.source} +${D.source}$`);function S(e){let r=Number(e);return Number.isInteger(r)&&r>=0&&String(r)===String(e)}function Z(e,r){if(r===null)return e;let t=Number(r);return Number.isNaN(t)||(r=`${t*100}%`),r==="100%"?e:`color-mix(in oklab, ${e} ${r}, transparent)`}var lr={"--alpha":ar,"--spacing":sr,"--theme":ur,theme:cr};function ar(e,r,t,...n){let[o,l]=w(t,"/").map(i=>i.trim());if(!o||!l)throw new Error(`The --alpha(\u2026) function requires a color and an alpha value, e.g.: \`--alpha(${o||"var(--my-color)"} / ${l||"50%"})\``);if(n.length>0)throw new Error(`The --alpha(\u2026) function only accepts one argument, e.g.: \`--alpha(${o||"var(--my-color)"} / ${l||"50%"})\``);return Z(o,l)}function sr(e,r,t,...n){if(!t)throw new Error("The --spacing(\u2026) function requires an argument, but received none.");if(n.length>0)throw new Error(`The --spacing(\u2026) function only accepts a single argument, but received ${n.length+1}.`);let o=e.theme.resolve(null,["--spacing"]);if(!o)throw new Error("The --spacing(\u2026) function requires that the `--spacing` theme variable exists, but it was not found.");return`calc(${o} * ${t})`}function ur(e,r,t,...n){if(!t.startsWith("--"))throw new Error("The --theme(\u2026) function can only be used with CSS variables from your theme.");let o=!1;t.endsWith(" inline")&&(o=!0,t=t.slice(0,-7)),r.kind==="at-rule"&&(o=!0);let l=e.resolveThemeValue(t,o);if(!l){if(n.length>0)return n.join(", ");throw new Error(`Could not resolve value for theme function: \`theme(${t})\`. Consider checking if the variable name is correct or provide a fallback value to silence this error.`)}if(n.length===0)return l;let i=n.join(", ");if(i==="initial")return l;if(l==="initial")return i;if(l.startsWith("var(")||l.startsWith("theme(")||l.startsWith("--theme(")){let s=A(l);return pr(s,i),C(s)}return l}function cr(e,r,t,...n){t=fr(t);let o=e.resolveThemeValue(t);if(!o&&n.length>0)return n.join(", ");if(!o)throw new Error(`Could not resolve value for theme function: \`theme(${t})\`. Consider checking if the path is correct or provide a fallback value to silence this error.`);return o}var vi=new RegExp(Object.keys(lr).map(e=>`${e}\\(`).join("|"));function fr(e){if(e[0]!=="'"&&e[0]!=='"')return e;let r="",t=e[0];for(let n=1;n{if(t.kind==="function"&&!(t.value!=="var"&&t.value!=="theme"&&t.value!=="--theme"))if(t.nodes.length===1)t.nodes.push({kind:"word",value:`, ${r}`});else{let n=t.nodes[t.nodes.length-1];n.kind==="word"&&n.value==="initial"&&(n.value=r)}})}var mr=/^(?[-+]?(?:\d*\.)?\d+)(?[a-z]+|%)?$/i,xe=new g(e=>{let r=mr.exec(e);if(!r)return null;let t=r.groups?.value;if(t===void 0)return null;let n=Number(t);if(Number.isNaN(n))return null;let o=r.groups?.unit;return o===void 0?[n,null]:[n,o]});function M(e,r="top",t="right",n="bottom",o="left"){return it(`${e}-${r}`,`${e}-${t}`,`${e}-${n}`,`${e}-${o}`)}function it(e="top",r="right",t="bottom",n="left"){return{1:[[e,0],[r,0],[t,0],[n,0]],2:[[e,0],[r,1],[t,0],[n,1]],3:[[e,0],[r,1],[t,2],[n,1]],4:[[e,0],[r,1],[t,2],[n,3]]}}function $(e,r){return{1:[[e,0],[r,0]],2:[[e,0],[r,1]]}}var zi={inset:it(),margin:M("margin"),padding:M("padding"),"scroll-margin":M("scroll-margin"),"scroll-padding":M("scroll-padding"),"border-width":M("border","top-width","right-width","bottom-width","left-width"),"border-style":M("border","top-style","right-style","bottom-style","left-style"),"border-color":M("border","top-color","right-color","bottom-color","left-color"),gap:$("row-gap","column-gap"),overflow:$("overflow-x","overflow-y"),"overscroll-behavior":$("overscroll-behavior-x","overscroll-behavior-y")},Li={"inset-block":$("top","bottom"),"inset-inline":$("left","right"),"margin-block":$("margin-top","margin-bottom"),"margin-inline":$("margin-left","margin-right"),"padding-block":$("padding-top","padding-bottom"),"padding-inline":$("padding-left","padding-right"),"scroll-margin-block":$("scroll-margin-top","scroll-margin-bottom"),"scroll-margin-inline":$("scroll-margin-left","scroll-margin-right"),"scroll-padding-block":$("scroll-padding-top","scroll-padding-bottom"),"scroll-padding-inline":$("scroll-padding-left","scroll-padding-right")};var ko=Symbol();var wo=Symbol();var yo=Symbol();var bo=Symbol();var xo=Symbol();var Ao=Symbol();var Co=Symbol();var So=Symbol();var $o=Symbol();var Eo=Symbol();var To=Symbol();var Vo=Symbol();var No=Symbol();var Ro=Symbol();function Se(e){let r=[0];for(let o=0;o0;){let a=(i|0)>>1,u=l+a;r[u]<=o?(l=u+1,i=i-a-1):i=a}l-=1;let s=o-r[l];return{line:l+1,column:s}}function n({line:o,column:l}){o-=1,o=Math.min(Math.max(o,0),r.length-1);let i=r[o],s=r[o+1]??i;return Math.min(Math.max(i+l,0),s)}return{find:t,findOffset:n}}var X=92,ce=47,fe=42,ut=34,ct=39,$r=58,pe=59,V=10,de=13,ee=32,te=9,ft=123,$e=125,Ve=40,pt=41,Er=91,Tr=93,dt=45,Ee=64,Vr=33,N=class e extends Error{loc;constructor(r,t){if(t){let n=t[0],o=Se(n.code).find(t[1]);r=`${n.file}:${o.line}:${o.column+1}: ${r}`}super(r),this.name="CssSyntaxError",this.loc=t,Error.captureStackTrace&&Error.captureStackTrace(this,e)}};function ne(e,r){let t=r?.from?{file:r.from,code:e}:null;e[0]==="\uFEFF"&&(e=" "+e.slice(1));let n=[],o=[],l=[],i=null,s=null,a="",u="",p=0,c;for(let f=0;f0&&e[y]===m[m.length-1]&&(m=m.slice(0,-1));let L=Te(a,v);if(!L)throw new N("Invalid custom property, expected a value",t?[t,x,f]:null);t&&(L.src=[t,x,f],L.dst=[t,x,f]),i?i.nodes.push(L):n.push(L),a=""}else if(d===pe&&a.charCodeAt(0)===Ee)s=re(a),t&&(s.src=[t,p,f],s.dst=[t,p,f]),i?i.nodes.push(s):n.push(s),a="",s=null;else if(d===pe&&u[u.length-1]!==")"){let m=Te(a);if(!m){if(a.length===0)continue;throw new N(`Invalid declaration: \`${a.trim()}\``,t?[t,p,f]:null)}t&&(m.src=[t,p,f],m.dst=[t,p,f]),i?i.nodes.push(m):n.push(m),a=""}else if(d===ft&&u[u.length-1]!==")")u+="}",s=I(a.trim()),t&&(s.src=[t,p,f],s.dst=[t,p,f]),i&&i.nodes.push(s),l.push(i),i=s,a="",s=null;else if(d===$e&&u[u.length-1]!==")"){if(u==="")throw new N("Missing opening {",t?[t,f,f]:null);if(u=u.slice(0,-1),a.length>0)if(a.charCodeAt(0)===Ee)s=re(a),t&&(s.src=[t,p,f],s.dst=[t,p,f]),i?i.nodes.push(s):n.push(s),a="",s=null;else{let x=a.indexOf(":");if(i){let v=Te(a,x);if(!v)throw new N(`Invalid declaration: \`${a.trim()}\``,t?[t,p,f]:null);t&&(v.src=[t,p,f],v.dst=[t,p,f]),i.nodes.push(v)}}let m=l.pop()??null;m===null&&i&&n.push(i),i=m,a="",s=null}else if(d===Ve)u+=")",a+="(";else if(d===pt){if(u[u.length-1]!==")")throw new N("Missing opening (",t?[t,f,f]:null);u=u.slice(0,-1),a+=")"}else{if(a.length===0&&(d===ee||d===V||d===te))continue;a===""&&(p=f),a+=String.fromCharCode(d)}}}if(a.charCodeAt(0)===Ee){let f=re(a);t&&(f.src=[t,p,e.length],f.dst=[t,p,e.length]),n.push(f)}if(u.length>0&&i){if(i.kind==="rule")throw new N(`Missing closing } at ${i.selector}`,i.src?[i.src[0],i.src[1],i.src[1]]:null);if(i.kind==="at-rule")throw new N(`Missing closing } at ${i.name} ${i.params}`,i.src?[i.src[0],i.src[1],i.src[1]]:null)}return o.length>0?o.concat(n):n}function re(e,r=[]){let t=e,n="";for(let o=5;o{if(S(e.value))return e.value}),b=j(e=>{if(S(e.value))return`${e.value}%`}),U=j(e=>{if(S(e.value))return`${e.value}px`}),ht=j(e=>{if(S(e.value))return`${e.value}ms`}),me=j(e=>{if(S(e.value))return`${e.value}deg`}),_r=j(e=>{if(e.fraction===null)return;let[r,t]=w(e.fraction,"/");if(!(!S(r)||!S(t)))return e.fraction}),vt=j(e=>{if(S(Number(e.value)))return`repeat(${e.value}, minmax(0, 1fr))`}),Dr={accentColor:({theme:e})=>e("colors"),animation:{none:"none",spin:"spin 1s linear infinite",ping:"ping 1s cubic-bezier(0, 0, 0.2, 1) infinite",pulse:"pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite",bounce:"bounce 1s infinite"},aria:{busy:'busy="true"',checked:'checked="true"',disabled:'disabled="true"',expanded:'expanded="true"',hidden:'hidden="true"',pressed:'pressed="true"',readonly:'readonly="true"',required:'required="true"',selected:'selected="true"'},aspectRatio:{auto:"auto",square:"1 / 1",video:"16 / 9",..._r},backdropBlur:({theme:e})=>e("blur"),backdropBrightness:({theme:e})=>({...e("brightness"),...b}),backdropContrast:({theme:e})=>({...e("contrast"),...b}),backdropGrayscale:({theme:e})=>({...e("grayscale"),...b}),backdropHueRotate:({theme:e})=>({...e("hueRotate"),...me}),backdropInvert:({theme:e})=>({...e("invert"),...b}),backdropOpacity:({theme:e})=>({...e("opacity"),...b}),backdropSaturate:({theme:e})=>({...e("saturate"),...b}),backdropSepia:({theme:e})=>({...e("sepia"),...b}),backgroundColor:({theme:e})=>e("colors"),backgroundImage:{none:"none","gradient-to-t":"linear-gradient(to top, var(--tw-gradient-stops))","gradient-to-tr":"linear-gradient(to top right, var(--tw-gradient-stops))","gradient-to-r":"linear-gradient(to right, var(--tw-gradient-stops))","gradient-to-br":"linear-gradient(to bottom right, var(--tw-gradient-stops))","gradient-to-b":"linear-gradient(to bottom, var(--tw-gradient-stops))","gradient-to-bl":"linear-gradient(to bottom left, var(--tw-gradient-stops))","gradient-to-l":"linear-gradient(to left, var(--tw-gradient-stops))","gradient-to-tl":"linear-gradient(to top left, var(--tw-gradient-stops))"},backgroundOpacity:({theme:e})=>e("opacity"),backgroundPosition:{bottom:"bottom",center:"center",left:"left","left-bottom":"left bottom","left-top":"left top",right:"right","right-bottom":"right bottom","right-top":"right top",top:"top"},backgroundSize:{auto:"auto",cover:"cover",contain:"contain"},blur:{0:"0",none:"",sm:"4px",DEFAULT:"8px",md:"12px",lg:"16px",xl:"24px","2xl":"40px","3xl":"64px"},borderColor:({theme:e})=>({DEFAULT:"currentcolor",...e("colors")}),borderOpacity:({theme:e})=>e("opacity"),borderRadius:{none:"0px",sm:"0.125rem",DEFAULT:"0.25rem",md:"0.375rem",lg:"0.5rem",xl:"0.75rem","2xl":"1rem","3xl":"1.5rem",full:"9999px"},borderSpacing:({theme:e})=>e("spacing"),borderWidth:{DEFAULT:"1px",0:"0px",2:"2px",4:"4px",8:"8px",...U},boxShadow:{sm:"0 1px 2px 0 rgb(0 0 0 / 0.05)",DEFAULT:"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)",md:"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",lg:"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",xl:"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)","2xl":"0 25px 50px -12px rgb(0 0 0 / 0.25)",inner:"inset 0 2px 4px 0 rgb(0 0 0 / 0.05)",none:"none"},boxShadowColor:({theme:e})=>e("colors"),brightness:{0:"0",50:".5",75:".75",90:".9",95:".95",100:"1",105:"1.05",110:"1.1",125:"1.25",150:"1.5",200:"2",...b},caretColor:({theme:e})=>e("colors"),colors:()=>({...Oe}),columns:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12","3xs":"16rem","2xs":"18rem",xs:"20rem",sm:"24rem",md:"28rem",lg:"32rem",xl:"36rem","2xl":"42rem","3xl":"48rem","4xl":"56rem","5xl":"64rem","6xl":"72rem","7xl":"80rem",...R},container:{},content:{none:"none"},contrast:{0:"0",50:".5",75:".75",100:"1",125:"1.25",150:"1.5",200:"2",...b},cursor:{auto:"auto",default:"default",pointer:"pointer",wait:"wait",text:"text",move:"move",help:"help","not-allowed":"not-allowed",none:"none","context-menu":"context-menu",progress:"progress",cell:"cell",crosshair:"crosshair","vertical-text":"vertical-text",alias:"alias",copy:"copy","no-drop":"no-drop",grab:"grab",grabbing:"grabbing","all-scroll":"all-scroll","col-resize":"col-resize","row-resize":"row-resize","n-resize":"n-resize","e-resize":"e-resize","s-resize":"s-resize","w-resize":"w-resize","ne-resize":"ne-resize","nw-resize":"nw-resize","se-resize":"se-resize","sw-resize":"sw-resize","ew-resize":"ew-resize","ns-resize":"ns-resize","nesw-resize":"nesw-resize","nwse-resize":"nwse-resize","zoom-in":"zoom-in","zoom-out":"zoom-out"},divideColor:({theme:e})=>e("borderColor"),divideOpacity:({theme:e})=>e("borderOpacity"),divideWidth:({theme:e})=>({...e("borderWidth"),...U}),dropShadow:{sm:"0 1px 1px rgb(0 0 0 / 0.05)",DEFAULT:["0 1px 2px rgb(0 0 0 / 0.1)","0 1px 1px rgb(0 0 0 / 0.06)"],md:["0 4px 3px rgb(0 0 0 / 0.07)","0 2px 2px rgb(0 0 0 / 0.06)"],lg:["0 10px 8px rgb(0 0 0 / 0.04)","0 4px 3px rgb(0 0 0 / 0.1)"],xl:["0 20px 13px rgb(0 0 0 / 0.03)","0 8px 5px rgb(0 0 0 / 0.08)"],"2xl":"0 25px 25px rgb(0 0 0 / 0.15)",none:"0 0 #0000"},fill:({theme:e})=>e("colors"),flex:{1:"1 1 0%",auto:"1 1 auto",initial:"0 1 auto",none:"none"},flexBasis:({theme:e})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%","1/12":"8.333333%","2/12":"16.666667%","3/12":"25%","4/12":"33.333333%","5/12":"41.666667%","6/12":"50%","7/12":"58.333333%","8/12":"66.666667%","9/12":"75%","10/12":"83.333333%","11/12":"91.666667%",full:"100%",...e("spacing")}),flexGrow:{0:"0",DEFAULT:"1",...R},flexShrink:{0:"0",DEFAULT:"1",...R},fontFamily:{sans:["ui-sans-serif","system-ui","sans-serif",'"Apple Color Emoji"','"Segoe UI Emoji"','"Segoe UI Symbol"','"Noto Color Emoji"'],serif:["ui-serif","Georgia","Cambria",'"Times New Roman"',"Times","serif"],mono:["ui-monospace","SFMono-Regular","Menlo","Monaco","Consolas",'"Liberation Mono"','"Courier New"',"monospace"]},fontSize:{xs:["0.75rem",{lineHeight:"1rem"}],sm:["0.875rem",{lineHeight:"1.25rem"}],base:["1rem",{lineHeight:"1.5rem"}],lg:["1.125rem",{lineHeight:"1.75rem"}],xl:["1.25rem",{lineHeight:"1.75rem"}],"2xl":["1.5rem",{lineHeight:"2rem"}],"3xl":["1.875rem",{lineHeight:"2.25rem"}],"4xl":["2.25rem",{lineHeight:"2.5rem"}],"5xl":["3rem",{lineHeight:"1"}],"6xl":["3.75rem",{lineHeight:"1"}],"7xl":["4.5rem",{lineHeight:"1"}],"8xl":["6rem",{lineHeight:"1"}],"9xl":["8rem",{lineHeight:"1"}]},fontWeight:{thin:"100",extralight:"200",light:"300",normal:"400",medium:"500",semibold:"600",bold:"700",extrabold:"800",black:"900"},gap:({theme:e})=>e("spacing"),gradientColorStops:({theme:e})=>e("colors"),gradientColorStopPositions:{"0%":"0%","5%":"5%","10%":"10%","15%":"15%","20%":"20%","25%":"25%","30%":"30%","35%":"35%","40%":"40%","45%":"45%","50%":"50%","55%":"55%","60%":"60%","65%":"65%","70%":"70%","75%":"75%","80%":"80%","85%":"85%","90%":"90%","95%":"95%","100%":"100%",...b},grayscale:{0:"0",DEFAULT:"100%",...b},gridAutoColumns:{auto:"auto",min:"min-content",max:"max-content",fr:"minmax(0, 1fr)"},gridAutoRows:{auto:"auto",min:"min-content",max:"max-content",fr:"minmax(0, 1fr)"},gridColumn:{auto:"auto","span-1":"span 1 / span 1","span-2":"span 2 / span 2","span-3":"span 3 / span 3","span-4":"span 4 / span 4","span-5":"span 5 / span 5","span-6":"span 6 / span 6","span-7":"span 7 / span 7","span-8":"span 8 / span 8","span-9":"span 9 / span 9","span-10":"span 10 / span 10","span-11":"span 11 / span 11","span-12":"span 12 / span 12","span-full":"1 / -1"},gridColumnEnd:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13",...R},gridColumnStart:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13",...R},gridRow:{auto:"auto","span-1":"span 1 / span 1","span-2":"span 2 / span 2","span-3":"span 3 / span 3","span-4":"span 4 / span 4","span-5":"span 5 / span 5","span-6":"span 6 / span 6","span-7":"span 7 / span 7","span-8":"span 8 / span 8","span-9":"span 9 / span 9","span-10":"span 10 / span 10","span-11":"span 11 / span 11","span-12":"span 12 / span 12","span-full":"1 / -1"},gridRowEnd:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13",...R},gridRowStart:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13",...R},gridTemplateColumns:{none:"none",subgrid:"subgrid",1:"repeat(1, minmax(0, 1fr))",2:"repeat(2, minmax(0, 1fr))",3:"repeat(3, minmax(0, 1fr))",4:"repeat(4, minmax(0, 1fr))",5:"repeat(5, minmax(0, 1fr))",6:"repeat(6, minmax(0, 1fr))",7:"repeat(7, minmax(0, 1fr))",8:"repeat(8, minmax(0, 1fr))",9:"repeat(9, minmax(0, 1fr))",10:"repeat(10, minmax(0, 1fr))",11:"repeat(11, minmax(0, 1fr))",12:"repeat(12, minmax(0, 1fr))",...vt},gridTemplateRows:{none:"none",subgrid:"subgrid",1:"repeat(1, minmax(0, 1fr))",2:"repeat(2, minmax(0, 1fr))",3:"repeat(3, minmax(0, 1fr))",4:"repeat(4, minmax(0, 1fr))",5:"repeat(5, minmax(0, 1fr))",6:"repeat(6, minmax(0, 1fr))",7:"repeat(7, minmax(0, 1fr))",8:"repeat(8, minmax(0, 1fr))",9:"repeat(9, minmax(0, 1fr))",10:"repeat(10, minmax(0, 1fr))",11:"repeat(11, minmax(0, 1fr))",12:"repeat(12, minmax(0, 1fr))",...vt},height:({theme:e})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%",full:"100%",screen:"100vh",svh:"100svh",lvh:"100lvh",dvh:"100dvh",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),hueRotate:{0:"0deg",15:"15deg",30:"30deg",60:"60deg",90:"90deg",180:"180deg",...me},inset:({theme:e})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%",full:"100%",...e("spacing")}),invert:{0:"0",DEFAULT:"100%",...b},keyframes:{spin:{to:{transform:"rotate(360deg)"}},ping:{"75%, 100%":{transform:"scale(2)",opacity:"0"}},pulse:{"50%":{opacity:".5"}},bounce:{"0%, 100%":{transform:"translateY(-25%)",animationTimingFunction:"cubic-bezier(0.8,0,1,1)"},"50%":{transform:"none",animationTimingFunction:"cubic-bezier(0,0,0.2,1)"}}},letterSpacing:{tighter:"-0.05em",tight:"-0.025em",normal:"0em",wide:"0.025em",wider:"0.05em",widest:"0.1em"},lineHeight:{none:"1",tight:"1.25",snug:"1.375",normal:"1.5",relaxed:"1.625",loose:"2",3:".75rem",4:"1rem",5:"1.25rem",6:"1.5rem",7:"1.75rem",8:"2rem",9:"2.25rem",10:"2.5rem"},listStyleType:{none:"none",disc:"disc",decimal:"decimal"},listStyleImage:{none:"none"},margin:({theme:e})=>({auto:"auto",...e("spacing")}),lineClamp:{1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",...R},maxHeight:({theme:e})=>({none:"none",full:"100%",screen:"100vh",svh:"100svh",lvh:"100lvh",dvh:"100dvh",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),maxWidth:({theme:e})=>({none:"none",xs:"20rem",sm:"24rem",md:"28rem",lg:"32rem",xl:"36rem","2xl":"42rem","3xl":"48rem","4xl":"56rem","5xl":"64rem","6xl":"72rem","7xl":"80rem",full:"100%",min:"min-content",max:"max-content",fit:"fit-content",prose:"65ch",...e("spacing")}),minHeight:({theme:e})=>({full:"100%",screen:"100vh",svh:"100svh",lvh:"100lvh",dvh:"100dvh",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),minWidth:({theme:e})=>({full:"100%",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),objectPosition:{bottom:"bottom",center:"center",left:"left","left-bottom":"left bottom","left-top":"left top",right:"right","right-bottom":"right bottom","right-top":"right top",top:"top"},opacity:{0:"0",5:"0.05",10:"0.1",15:"0.15",20:"0.2",25:"0.25",30:"0.3",35:"0.35",40:"0.4",45:"0.45",50:"0.5",55:"0.55",60:"0.6",65:"0.65",70:"0.7",75:"0.75",80:"0.8",85:"0.85",90:"0.9",95:"0.95",100:"1",...b},order:{first:"-9999",last:"9999",none:"0",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",...R},outlineColor:({theme:e})=>e("colors"),outlineOffset:{0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...U},outlineWidth:{0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...U},padding:({theme:e})=>e("spacing"),placeholderColor:({theme:e})=>e("colors"),placeholderOpacity:({theme:e})=>e("opacity"),ringColor:({theme:e})=>({DEFAULT:"currentcolor",...e("colors")}),ringOffsetColor:({theme:e})=>e("colors"),ringOffsetWidth:{0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...U},ringOpacity:({theme:e})=>({DEFAULT:"0.5",...e("opacity")}),ringWidth:{DEFAULT:"3px",0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...U},rotate:{0:"0deg",1:"1deg",2:"2deg",3:"3deg",6:"6deg",12:"12deg",45:"45deg",90:"90deg",180:"180deg",...me},saturate:{0:"0",50:".5",100:"1",150:"1.5",200:"2",...b},scale:{0:"0",50:".5",75:".75",90:".9",95:".95",100:"1",105:"1.05",110:"1.1",125:"1.25",150:"1.5",...b},screens:{sm:"40rem",md:"48rem",lg:"64rem",xl:"80rem","2xl":"96rem"},scrollMargin:({theme:e})=>e("spacing"),scrollPadding:({theme:e})=>e("spacing"),sepia:{0:"0",DEFAULT:"100%",...b},skew:{0:"0deg",1:"1deg",2:"2deg",3:"3deg",6:"6deg",12:"12deg",...me},space:({theme:e})=>e("spacing"),spacing:{px:"1px",0:"0px",.5:"0.125rem",1:"0.25rem",1.5:"0.375rem",2:"0.5rem",2.5:"0.625rem",3:"0.75rem",3.5:"0.875rem",4:"1rem",5:"1.25rem",6:"1.5rem",7:"1.75rem",8:"2rem",9:"2.25rem",10:"2.5rem",11:"2.75rem",12:"3rem",14:"3.5rem",16:"4rem",20:"5rem",24:"6rem",28:"7rem",32:"8rem",36:"9rem",40:"10rem",44:"11rem",48:"12rem",52:"13rem",56:"14rem",60:"15rem",64:"16rem",72:"18rem",80:"20rem",96:"24rem"},stroke:({theme:e})=>({none:"none",...e("colors")}),strokeWidth:{0:"0",1:"1",2:"2",...R},supports:{},data:{},textColor:({theme:e})=>e("colors"),textDecorationColor:({theme:e})=>e("colors"),textDecorationThickness:{auto:"auto","from-font":"from-font",0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...U},textIndent:({theme:e})=>e("spacing"),textOpacity:({theme:e})=>e("opacity"),textUnderlineOffset:{auto:"auto",0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...U},transformOrigin:{center:"center",top:"top","top-right":"top right",right:"right","bottom-right":"bottom right",bottom:"bottom","bottom-left":"bottom left",left:"left","top-left":"top left"},transitionDelay:{0:"0s",75:"75ms",100:"100ms",150:"150ms",200:"200ms",300:"300ms",500:"500ms",700:"700ms",1e3:"1000ms",...ht},transitionDuration:{DEFAULT:"150ms",0:"0s",75:"75ms",100:"100ms",150:"150ms",200:"200ms",300:"300ms",500:"500ms",700:"700ms",1e3:"1000ms",...ht},transitionProperty:{none:"none",all:"all",DEFAULT:"color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter",colors:"color, background-color, border-color, outline-color, text-decoration-color, fill, stroke",opacity:"opacity",shadow:"box-shadow",transform:"transform"},transitionTimingFunction:{DEFAULT:"cubic-bezier(0.4, 0, 0.2, 1)",linear:"linear",in:"cubic-bezier(0.4, 0, 1, 1)",out:"cubic-bezier(0, 0, 0.2, 1)","in-out":"cubic-bezier(0.4, 0, 0.2, 1)"},translate:({theme:e})=>({"1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%",full:"100%",...e("spacing")}),size:({theme:e})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%","1/12":"8.333333%","2/12":"16.666667%","3/12":"25%","4/12":"33.333333%","5/12":"41.666667%","6/12":"50%","7/12":"58.333333%","8/12":"66.666667%","9/12":"75%","10/12":"83.333333%","11/12":"91.666667%",full:"100%",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),width:({theme:e})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%","1/12":"8.333333%","2/12":"16.666667%","3/12":"25%","4/12":"33.333333%","5/12":"41.666667%","6/12":"50%","7/12":"58.333333%","8/12":"66.666667%","9/12":"75%","10/12":"83.333333%","11/12":"91.666667%",full:"100%",screen:"100vw",svw:"100svw",lvw:"100lvw",dvw:"100dvw",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),willChange:{auto:"auto",scroll:"scroll-position",contents:"contents",transform:"transform"},zIndex:{auto:"auto",0:"0",10:"10",20:"20",30:"30",40:"40",50:"50",...R}};var Ur=64;function K(e,r=[]){return{kind:"rule",selector:e,nodes:r}}function E(e,r="",t=[]){return{kind:"at-rule",name:e,params:r,nodes:t}}function I(e,r=[]){return e.charCodeAt(0)===Ur?re(e,r):K(e,r)}function P(e,r,t=!1){return{kind:"declaration",property:e,value:r,important:t}}function Re(e){return{kind:"comment",value:e}}function F(e,r){let t=0,n={file:null,code:""};function o(i,s=0){let a="",u=" ".repeat(s);if(i.kind==="declaration"){if(a+=`${u}${i.property}: ${i.value}${i.important?" !important":""}; +`,r){t+=u.length;let p=t;t+=i.property.length,t+=2,t+=i.value?.length??0,i.important&&(t+=11);let c=t;t+=2,i.dst=[n,p,c]}}else if(i.kind==="rule"){if(a+=`${u}${i.selector} { +`,r){t+=u.length;let p=t;t+=i.selector.length,t+=1;let c=t;i.dst=[n,p,c],t+=2}for(let p of i.nodes)a+=o(p,s+1);a+=`${u}} +`,r&&(t+=u.length,t+=2)}else if(i.kind==="at-rule"){if(i.nodes.length===0){let p=`${u}${i.name} ${i.params}; +`;if(r){t+=u.length;let c=t;t+=i.name.length,t+=1,t+=i.params.length;let f=t;t+=2,i.dst=[n,c,f]}return p}if(a+=`${u}${i.name}${i.params?` ${i.params} `:" "}{ +`,r){t+=u.length;let p=t;t+=i.name.length,i.params&&(t+=1,t+=i.params.length),t+=1;let c=t;i.dst=[n,p,c],t+=2}for(let p of i.nodes)a+=o(p,s+1);a+=`${u}} +`,r&&(t+=u.length,t+=2)}else if(i.kind==="comment"){if(a+=`${u}/*${i.value}*/ +`,r){t+=u.length;let p=t;t+=2+i.value.length+2;let c=t;i.dst=[n,p,c],t+=1}}else if(i.kind==="context"||i.kind==="at-root")return"";return a}let l="";for(let i of e)l+=o(i,0);return n.code=l,l}function zr(e,r){if(typeof e!="string")throw new TypeError("expected path to be a string");if(e==="\\"||e==="/")return"/";var t=e.length;if(t<=1)return e;var n="";if(t>4&&e[3]==="\\"){var o=e[2];(o==="?"||o===".")&&e.slice(0,2)==="\\\\"&&(e=e.slice(2),n="//")}var l=e.split(/[/\\]+/);return r!==!1&&l[l.length-1]===""&&l.pop(),n+l.join("/")}function ge(e){let r=zr(e);return e.startsWith("\\\\")&&r.startsWith("/")&&!r.startsWith("//")?`/${r}`:r}var _e=/(?[\w-]+\([^)]*\)|"[^"]*"|'[^']*'|[^,]\S*[^,])\s*(?:\s(?\w[^,]+))?(?:,|$)/g,Wr=/(?Kr.test(e),Gr=e=>Mr.test(e);async function wt({css:e,base:r,root:t}){if(!e.includes("url(")&&!e.includes("image-set("))return e;let n=ne(e),o=[];function l(i){if(i[0]==="/")return i;let s=Pe.posix.join(ge(r),i),a=Pe.posix.relative(ge(t),s);return a.startsWith(".")||(a="./"+a),a}return h(n,i=>{if(i.kind!=="declaration"||!i.value)return;let s=_e.test(i.value),a=kt.test(i.value);if(s||a){let u=a?Hr:yt;o.push(u(i.value,l).then(p=>{i.value=p}))}}),o.length&&await Promise.all(o),F(n)}function yt(e,r){return xt(e,_e,async t=>{let[n,o]=t;return await bt(o.trim(),n,r)})}async function Hr(e,r){return await xt(e,kt,async t=>{let[,n]=t;return await Zr(n,async({url:l})=>_e.test(l)?await yt(l,r):Lr.test(l)?l:await bt(l,l,r))})}async function bt(e,r,t,n="url"){let o="",l=e[0];if((l==='"'||l==="'")&&(o=l,e=e.slice(1,-1)),qr(e))return r;let i=await t(e);return o===""&&i!==encodeURI(i)&&(o='"'),o==="'"&&i.includes("'")&&(o='"'),o==='"'&&i.includes('"')&&(i=i.replace(Wr,'\\"')),`${n}(${o}${i}${o})`}function qr(e,r){return Gr(e)||Yr(e)||!e[0].match(/[.a-zA-Z0-9_]/)||Fr.test(e)}function Zr(e,r){return Promise.all(Qr(e).map(async({url:t,descriptor:n})=>({url:await r({url:t,descriptor:n}),descriptor:n}))).then(Jr)}function Qr(e){let r=e.trim().replace(Br," ").replace(/\r?\n/,"").replace(/,\s+/,", ").replaceAll(/\s+/g," ").matchAll(jr);return Array.from(r,({groups:t})=>({url:t?.url?.trim()??"",descriptor:t?.descriptor?.trim()??""})).filter(({url:t})=>!!t)}function Jr(e){return e.map(({url:r,descriptor:t})=>r+(t?` ${t}`:"")).join(", ")}async function xt(e,r,t){let n,o=e,l="";for(;n=r.exec(o);)l+=o.slice(0,n.index),l+=await t(n),o=o.slice(n.index+n[0].length);return l+=o,l}var an={};function Et({base:e,from:r,polyfills:t,onDependency:n,shouldRewriteUrls:o,customCssResolver:l,customJsResolver:i}){return{base:e,polyfills:t,from:r,async loadModule(s,a){return ze(s,a,n,i)},async loadStylesheet(s,a){let u=await Vt(s,a,n,l);return o&&(u.content=await wt({css:u.content,root:e,base:u.base})),u}}}async function Tt(e){if(e.root&&e.root!=="none"){let r=/[*{]/,t=[];for(let o of e.root.pattern.split("/")){if(r.test(o))break;t.push(o)}if(!await Ue.default.stat(H.default.resolve(e.root.base,t.join("/"))).then(o=>o.isDirectory()).catch(()=>!1))throw new Error(`The \`source(${e.root.pattern})\` does not exist or is not a directory.`)}}async function Xr(e,r){let t=await(0,_.compileAst)(e,Et(r));return await Tt(t),t}async function en(e,r){let t=await(0,_.compile)(e,Et(r));return await Tt(t),t}async function tn(e,{base:r}){return(0,_.__unstable__loadDesignSystem)(e,{base:r,async loadModule(t,n){return ze(t,n,()=>{})},async loadStylesheet(t,n){return Vt(t,n,()=>{})}})}async function ze(e,r,t,n){if(e[0]!=="."){let s=await St(e,r,n);if(!s)throw new Error(`Could not resolve '${e}' from '${r}'`);let a=await Ct((0,De.pathToFileURL)(s).href);return{path:s,base:H.default.dirname(s),module:a.default??a}}let o=await St(e,r,n);if(!o)throw new Error(`Could not resolve '${e}' from '${r}'`);let[l,i]=await Promise.all([Ct((0,De.pathToFileURL)(o).href+"?id="+Date.now()),We(o)]);for(let s of i)t(s);return{path:o,base:H.default.dirname(o),module:l.default??l}}async function Vt(e,r,t,n){let o=await nn(e,r,n);if(!o)throw new Error(`Could not resolve '${e}' from '${r}'`);t(o);let l=await Ue.default.readFile(o,"utf-8");return{path:o,base:H.default.dirname(o),content:l}}var At=null;async function Ct(e){if(typeof globalThis.__tw_load=="function"){let r=await globalThis.__tw_load(e);if(r)return r}try{return await import(e)}catch{return At??=(0,$t.createJiti)(an.url,{moduleCache:!1,fsCache:!1}),await At.import(e)}}var Le=["node_modules",...process.env.NODE_PATH?[...process.env.NODE_PATH.split(H.default.delimiter)]:[]],rn=W.default.ResolverFactory.createResolver({fileSystem:new W.default.CachedInputFileSystem(he.default,4e3),useSyncFileSystemCalls:!0,extensions:[".css"],mainFields:["style"],conditionNames:["style"],modules:Le});async function nn(e,r,t){if(typeof globalThis.__tw_resolve=="function"){let n=globalThis.__tw_resolve(e,r);if(n)return Promise.resolve(n)}if(t){let n=await t(e,r);if(n)return n}return Ie(rn,e,r)}var on=W.default.ResolverFactory.createResolver({fileSystem:new W.default.CachedInputFileSystem(he.default,4e3),useSyncFileSystemCalls:!0,extensions:[".js",".json",".node",".ts"],conditionNames:["node","import"],modules:Le}),ln=W.default.ResolverFactory.createResolver({fileSystem:new W.default.CachedInputFileSystem(he.default,4e3),useSyncFileSystemCalls:!0,extensions:[".js",".json",".node",".ts"],conditionNames:["node","require"],modules:Le});async function St(e,r,t){if(typeof globalThis.__tw_resolve=="function"){let n=globalThis.__tw_resolve(e,r);if(n)return Promise.resolve(n)}if(t){let n=await t(e,r);if(n)return n}return Ie(on,e,r).catch(()=>Ie(ln,e,r))}function Ie(e,r,t){return new Promise((n,o)=>e.resolve({},t,r,{},(l,i)=>{if(l)return o(l);n(i)}))}Symbol.dispose??=Symbol("Symbol.dispose");Symbol.asyncDispose??=Symbol("Symbol.asyncDispose");var Ke=class{constructor(r=t=>void process.stderr.write(`${t} +`)){this.defaultFlush=r}#r=new g(()=>({value:0}));#t=new g(()=>({value:0n}));#e=[];hit(r){this.#r.get(r).value++}start(r){let t=this.#e.map(o=>o.label).join("//"),n=`${t}${t.length===0?"":"//"}${r}`;this.#r.get(n).value++,this.#t.get(n),this.#e.push({id:n,label:r,namespace:t,value:process.hrtime.bigint()})}end(r){let t=process.hrtime.bigint();if(this.#e[this.#e.length-1].label!==r)throw new Error(`Mismatched timer label: \`${r}\`, expected \`${this.#e[this.#e.length-1].label}\``);let n=this.#e.pop(),o=t-n.value;this.#t.get(n.id).value+=o}reset(){this.#r.clear(),this.#t.clear(),this.#e.splice(0)}report(r=this.defaultFlush){let t=[],n=!1;for(let i=this.#e.length-1;i>=0;i--)this.end(this.#e[i].label);for(let[i,{value:s}]of this.#r.entries()){if(this.#t.has(i))continue;t.length===0&&(n=!0,t.push("Hits:"));let a=i.split("//").length;t.push(`${" ".repeat(a)}${i} ${ve(Nt(`\xD7 ${s}`))}`)}this.#t.size>0&&n&&t.push(` +Timers:`);let o=-1/0,l=new Map;for(let[i,{value:s}]of this.#t){let a=`${(Number(s)/1e6).toFixed(2)}ms`;l.set(i,a),o=Math.max(o,a.length)}for(let i of this.#t.keys()){let s=i.split("//").length;t.push(`${ve(`[${l.get(i).padStart(o," ")}]`)}${" ".repeat(s-1)}${s===1?" ":ve(" \u21B3 ")}${i.split("//").pop()} ${this.#r.get(i).value===1?"":ve(Nt(`\xD7 ${this.#r.get(i).value}`))}`.trimEnd())}r(` +${t.join(` +`)} +`),this.reset()}[Symbol.dispose](){ke&&this.report()}};function ve(e){return`\x1B[2m${e}\x1B[22m`}function Nt(e){return`\x1B[34m${e}\x1B[39m`}var Rt=T(require("@jridgewell/remapping")),z=require("lightningcss"),Ot=T(require("magic-string"));function sn(e,{file:r="input.css",minify:t=!1,map:n}={}){function o(a,u){return(0,z.transform)({filename:r,code:a,minify:t,sourceMap:typeof u<"u",inputSourceMap:u,drafts:{customMedia:!0},nonStandard:{deepSelectorCombinator:!0},include:z.Features.Nesting|z.Features.MediaQueries,exclude:z.Features.LogicalProperties|z.Features.DirSelector|z.Features.LightDark,targets:{safari:16<<16|1024,ios_saf:16<<16|1024,firefox:8388608,chrome:7274496},errorRecovery:!0})}let l=o(Buffer.from(e),n);if(n=l.map?.toString(),l.warnings=l.warnings.filter(a=>!/'(deep|slotted|global)' is not recognized as a valid pseudo-/.test(a.message)),l.warnings.length>0){let a=e.split(` +`),u=[`Found ${l.warnings.length} ${l.warnings.length===1?"warning":"warnings"} while optimizing generated CSS:`];for(let[p,c]of l.warnings.entries()){u.push(""),l.warnings.length>1&&u.push(`Issue #${p+1}:`);let f=2,d=Math.max(0,c.loc.line-f-1),m=Math.min(a.length,c.loc.line+f),x=a.slice(d,m).map((v,L)=>d+L+1===c.loc.line?`${ie("\u2502")} ${v}`:ie(`\u2502 ${v}`));x.splice(c.loc.line-d,0,`${ie("\u2506")}${" ".repeat(c.loc.column-1)} ${un(`${ie("^--")} ${c.message}`)}`,`${ie("\u2506")}`),u.push(...x)}u.push(""),console.warn(u.join(` +`))}l=o(l.code,n),n=l.map?.toString();let i=l.code.toString(),s=new Ot.default(i);if(s.replaceAll("@media not (","@media not all and ("),n!==void 0&&s.hasChanged()){let a=s.generateMap({source:"original",hires:"boundary"}).toString();n=(0,Rt.default)([a,n],()=>null).toString()}return i=s.toString(),{code:i,map:n}}function ie(e){return`\x1B[2m${e}\x1B[22m`}function un(e){return`\x1B[33m${e}\x1B[39m`}var Pt=require("source-map-js");function cn(e){let r=new Pt.SourceMapGenerator,t=1,n=new g(o=>({url:o?.url??``,content:o?.content??""}));for(let o of e.mappings){let l=n.get(o.originalPosition?.source??null);r.addMapping({generated:o.generatedPosition,original:o.originalPosition,source:l.url,name:o.name}),r.setSourceContent(l.url,l.content)}return r.toString()}function fn(e){let r=typeof e=="string"?e:cn(e);function t(n){return`/*# sourceMappingURL=${n} */ +`}return{raw:r,get inline(){let n=Buffer.from(r,"utf-8").toString("base64");return t(`data:application/json;base64,${n}`)},comment:t}}process.versions.bun||_t.register?.((0,Dt.pathToFileURL)(require.resolve("@tailwindcss/node/esm-cache-loader")));0&&(module.exports={Features,Instrumentation,Polyfills,__unstable__loadDesignSystem,compile,compileAst,env,loadModule,normalizePath,optimize,toSourceMap}); diff --git a/node_modules/@tailwindcss/node/dist/index.mjs b/node_modules/@tailwindcss/node/dist/index.mjs new file mode 100644 index 00000000..0c038598 --- /dev/null +++ b/node_modules/@tailwindcss/node/dist/index.mjs @@ -0,0 +1,18 @@ +var $t=Object.defineProperty;var Et=(e,r)=>{for(var t in r)$t(e,t,{get:r[t],enumerable:!0})};import*as fe from"module";import{pathToFileURL as Xr}from"url";var de={};Et(de,{DEBUG:()=>pe});var pe=Tt(process.env.DEBUG);function Tt(e){if(typeof e=="boolean")return e;if(e===void 0)return!1;if(e==="true"||e==="1")return!0;if(e==="false"||e==="0")return!1;if(e==="*")return!0;let r=e.split(",").map(t=>t.split(":")[0]);return r.includes("-tailwindcss")?!1:!!r.includes("tailwindcss")}import j from"enhanced-resolve";import{createJiti as Lr}from"jiti";import Pe from"fs";import wt from"fs/promises";import ee from"path";import{pathToFileURL as gt}from"url";import{__unstable__loadDesignSystem as Kr,compile as Mr,compileAst as Fr,Features as fu,Polyfills as pu}from"tailwindcss";import me from"fs/promises";import W from"path";var Vt=[/import[\s\S]*?['"](.{3,}?)['"]/gi,/import[\s\S]*from[\s\S]*?['"](.{3,}?)['"]/gi,/export[\s\S]*from[\s\S]*?['"](.{3,}?)['"]/gi,/require\(['"`](.+)['"`]\)/gi],Nt=[".js",".cjs",".mjs"],Rt=["",".js",".cjs",".mjs",".ts",".cts",".mts",".jsx",".tsx"],Ot=["",".ts",".cts",".mts",".tsx",".js",".cjs",".mjs",".jsx"];async function Pt(e,r){for(let t of r){let n=`${e}${t}`;if((await me.stat(n).catch(()=>null))?.isFile())return n}for(let t of r){let n=`${e}/index${t}`;if(await me.access(n).then(()=>!0,()=>!1))return n}return null}async function De(e,r,t,n){let o=Nt.includes(n)?Rt:Ot,l=await Pt(W.resolve(t,r),o);if(l===null||e.has(l))return;e.add(l),t=W.dirname(l),n=W.extname(l);let i=await me.readFile(l,"utf-8"),s=[];for(let a of Vt)for(let u of i.matchAll(a))u[1].startsWith(".")&&s.push(De(e,u[1],t,n));await Promise.all(s)}async function Ie(e){let r=new Set;return await De(r,e,W.dirname(e),W.extname(e)),Array.from(r)}import*as Ne from"path";function F(e){return{kind:"word",value:e}}function _t(e,r){return{kind:"function",value:e,nodes:r}}function Dt(e){return{kind:"separator",value:e}}function C(e){let r="";for(let t of e)switch(t.kind){case"word":case"separator":{r+=t.value;break}case"function":r+=t.value+"("+C(t.nodes)+")"}return r}var Ue=92,It=41,ze=58,Le=44,Ut=34,Ke=61,Me=62,Fe=60,je=10,zt=40,Lt=39,Kt=47,We=32,Be=9;function A(e){e=e.replaceAll(`\r +`,` +`);let r=[],t=[],n=null,o="",l;for(let i=0;i0){let u=F(o);n?n.nodes.push(u):r.push(u),o=""}let a=F(e[i]);n?n.nodes.push(a):r.push(a);break}case ze:case Le:case Ke:case Me:case Fe:case je:case We:case Be:{if(o.length>0){let c=F(o);n?n.nodes.push(c):r.push(c),o=""}let a=i,u=i+1;for(;u0){let u=F(o);a?.nodes.push(u),o=""}t.length>0?n=t[t.length-1]:n=null;break}default:o+=String.fromCharCode(s)}}return o.length>0&&r.push(F(o)),r}var g=class extends Map{constructor(t){super();this.factory=t}get(t){let n=super.get(t);return n===void 0&&(n=this.factory(t,this),this.set(t,n)),n}};var cn=new Uint8Array(256);var ne=new Uint8Array(256);function w(e,r){let t=0,n=[],o=0,l=e.length,i=r.charCodeAt(0);for(let s=0;s0&&a===ne[t-1]&&t--;break}}return n.push(e.slice(o)),n}var ge=(i=>(i[i.Continue=0]="Continue",i[i.Skip=1]="Skip",i[i.Stop=2]="Stop",i[i.Replace=3]="Replace",i[i.ReplaceSkip=4]="ReplaceSkip",i[i.ReplaceStop=5]="ReplaceStop",i))(ge||{}),k={Continue:{kind:0},Skip:{kind:1},Stop:{kind:2},Replace:e=>({kind:3,nodes:Array.isArray(e)?e:[e]}),ReplaceSkip:e=>({kind:4,nodes:Array.isArray(e)?e:[e]}),ReplaceStop:e=>({kind:5,nodes:Array.isArray(e)?e:[e]})};function h(e,r){typeof r=="function"?Ye(e,r):Ye(e,r.enter,r.exit)}function Ye(e,r=()=>k.Continue,t=()=>k.Continue){let n={value:[e,0,null],prev:null},o={parent:null,depth:0,path(){let l=[],i=n;for(;i;){let s=i.value[2];s&&l.push(s),i=i.prev}return l.reverse(),l}};for(;n!==null;){let l=n.value,i=l[0],s=l[1],a=l[2];if(s>=i.length){n=n.prev,o.depth-=1;continue}if(o.parent=a,s>=0){let f=i[s],d=r(f,o)??k.Continue;switch(d.kind){case 0:{f.nodes&&f.nodes.length>0&&(o.depth+=1,n={value:[f.nodes,0,f],prev:n}),l[1]=~s;continue}case 2:return;case 1:{l[1]=~s;continue}case 3:{i.splice(s,1,...d.nodes);continue}case 5:{i.splice(s,1,...d.nodes);return}case 4:{i.splice(s,1,...d.nodes),l[1]+=d.nodes.length;continue}default:throw new Error(`Invalid \`WalkAction.${ge[d.kind]??`Unknown(${d.kind})`}\` in enter.`)}}let u=~s,p=i[u],c=t(p,o)??k.Continue;switch(c.kind){case 0:l[1]=u+1;continue;case 2:return;case 3:{i.splice(u,1,...c.nodes),l[1]=u+c.nodes.length;continue}case 5:{i.splice(u,1,...c.nodes);return}case 4:{i.splice(u,1,...c.nodes),l[1]=u+c.nodes.length;continue}default:throw new Error(`Invalid \`WalkAction.${ge[c.kind]??`Unknown(${c.kind})`}\` in exit.`)}}}var bn=new g(e=>{let r=A(e),t=new Set;return h(r,(n,o)=>{let l=o.parent===null?r:o.parent.nodes??[];if(n.kind==="word"&&(n.value==="+"||n.value==="-"||n.value==="*"||n.value==="/")){let i=l.indexOf(n)??-1;if(i===-1)return;let s=l[i-1];if(s?.kind!=="separator"||s.value!==" ")return;let a=l[i+1];if(a?.kind!=="separator"||a.value!==" ")return;t.add(s),t.add(a)}else n.kind==="separator"&&n.value.length>0&&n.value.trim()===""?(l[0]===n||l[l.length-1]===n)&&t.add(n):n.kind==="separator"&&n.value.trim()===","&&(n.value=",")}),t.size>0&&h(r,n=>{if(t.has(n))return t.delete(n),k.ReplaceSkip([])}),he(r),C(r)});var xn=new g(e=>{let r=A(e);return r.length===3&&r[0].kind==="word"&&r[0].value==="&"&&r[1].kind==="separator"&&r[1].value===":"&&r[2].kind==="function"&&r[2].value==="is"?C(r[2].nodes):e});function he(e){for(let r of e)switch(r.kind){case"function":{if(r.value==="url"||r.value.endsWith("_url")){r.value=B(r.value);break}if(r.value==="var"||r.value.endsWith("_var")||r.value==="theme"||r.value.endsWith("_theme")){r.value=B(r.value);for(let t=0;t{let r=A(e);return r.length===1&&r[0].kind==="function"&&r[0].value==="var"});function Mt(e){throw new Error(`Unexpected value: ${e}`)}function B(e){return e.replaceAll("_",String.raw`\_`).replaceAll(" ","_")}var Ft=process.env.FEATURES_ENV!=="stable";var P=/[+-]?\d*\.?\d+(?:[eE][+-]?\d+)?/,_n=new RegExp(`^${P.source}$`);var Dn=new RegExp(`^${P.source}%$`);var In=new RegExp(`^${P.source}\\s*/\\s*${P.source}$`);var jt=["cm","mm","Q","in","pc","pt","px","em","ex","ch","rem","lh","rlh","vw","vh","vmin","vmax","vb","vi","svw","svh","lvw","lvh","dvw","dvh","cqw","cqh","cqi","cqb","cqmin","cqmax"],Un=new RegExp(`^${P.source}(${jt.join("|")})$`);var Wt=["deg","rad","grad","turn"],zn=new RegExp(`^${P.source}(${Wt.join("|")})$`);var Ln=new RegExp(`^${P.source} +${P.source} +${P.source}$`);function S(e){let r=Number(e);return Number.isInteger(r)&&r>=0&&String(r)===String(e)}function Y(e,r){if(r===null)return e;let t=Number(r);return Number.isNaN(t)||(r=`${t*100}%`),r==="100%"?e:`color-mix(in oklab, ${e} ${r}, transparent)`}var Yt={"--alpha":Gt,"--spacing":Ht,"--theme":qt,theme:Zt};function Gt(e,r,t,...n){let[o,l]=w(t,"/").map(i=>i.trim());if(!o||!l)throw new Error(`The --alpha(\u2026) function requires a color and an alpha value, e.g.: \`--alpha(${o||"var(--my-color)"} / ${l||"50%"})\``);if(n.length>0)throw new Error(`The --alpha(\u2026) function only accepts one argument, e.g.: \`--alpha(${o||"var(--my-color)"} / ${l||"50%"})\``);return Y(o,l)}function Ht(e,r,t,...n){if(!t)throw new Error("The --spacing(\u2026) function requires an argument, but received none.");if(n.length>0)throw new Error(`The --spacing(\u2026) function only accepts a single argument, but received ${n.length+1}.`);let o=e.theme.resolve(null,["--spacing"]);if(!o)throw new Error("The --spacing(\u2026) function requires that the `--spacing` theme variable exists, but it was not found.");return`calc(${o} * ${t})`}function qt(e,r,t,...n){if(!t.startsWith("--"))throw new Error("The --theme(\u2026) function can only be used with CSS variables from your theme.");let o=!1;t.endsWith(" inline")&&(o=!0,t=t.slice(0,-7)),r.kind==="at-rule"&&(o=!0);let l=e.resolveThemeValue(t,o);if(!l){if(n.length>0)return n.join(", ");throw new Error(`Could not resolve value for theme function: \`theme(${t})\`. Consider checking if the variable name is correct or provide a fallback value to silence this error.`)}if(n.length===0)return l;let i=n.join(", ");if(i==="initial")return l;if(l==="initial")return i;if(l.startsWith("var(")||l.startsWith("theme(")||l.startsWith("--theme(")){let s=A(l);return Jt(s,i),C(s)}return l}function Zt(e,r,t,...n){t=Qt(t);let o=e.resolveThemeValue(t);if(!o&&n.length>0)return n.join(", ");if(!o)throw new Error(`Could not resolve value for theme function: \`theme(${t})\`. Consider checking if the path is correct or provide a fallback value to silence this error.`);return o}var ai=new RegExp(Object.keys(Yt).map(e=>`${e}\\(`).join("|"));function Qt(e){if(e[0]!=="'"&&e[0]!=='"')return e;let r="",t=e[0];for(let n=1;n{if(t.kind==="function"&&!(t.value!=="var"&&t.value!=="theme"&&t.value!=="--theme"))if(t.nodes.length===1)t.nodes.push({kind:"word",value:`, ${r}`});else{let n=t.nodes[t.nodes.length-1];n.kind==="word"&&n.value==="initial"&&(n.value=r)}})}var er=/^(?[-+]?(?:\d*\.)?\d+)(?[a-z]+|%)?$/i,ke=new g(e=>{let r=er.exec(e);if(!r)return null;let t=r.groups?.value;if(t===void 0)return null;let n=Number(t);if(Number.isNaN(n))return null;let o=r.groups?.unit;return o===void 0?[n,null]:[n,o]});function z(e,r="top",t="right",n="bottom",o="left"){return Ze(`${e}-${r}`,`${e}-${t}`,`${e}-${n}`,`${e}-${o}`)}function Ze(e="top",r="right",t="bottom",n="left"){return{1:[[e,0],[r,0],[t,0],[n,0]],2:[[e,0],[r,1],[t,0],[n,1]],3:[[e,0],[r,1],[t,2],[n,1]],4:[[e,0],[r,1],[t,2],[n,3]]}}function $(e,r){return{1:[[e,0],[r,0]],2:[[e,0],[r,1]]}}var Ti={inset:Ze(),margin:z("margin"),padding:z("padding"),"scroll-margin":z("scroll-margin"),"scroll-padding":z("scroll-padding"),"border-width":z("border","top-width","right-width","bottom-width","left-width"),"border-style":z("border","top-style","right-style","bottom-style","left-style"),"border-color":z("border","top-color","right-color","bottom-color","left-color"),gap:$("row-gap","column-gap"),overflow:$("overflow-x","overflow-y"),"overscroll-behavior":$("overscroll-behavior-x","overscroll-behavior-y")},Vi={"inset-block":$("top","bottom"),"inset-inline":$("left","right"),"margin-block":$("margin-top","margin-bottom"),"margin-inline":$("margin-left","margin-right"),"padding-block":$("padding-top","padding-bottom"),"padding-inline":$("padding-left","padding-right"),"scroll-margin-block":$("scroll-margin-top","scroll-margin-bottom"),"scroll-margin-inline":$("scroll-margin-left","scroll-margin-right"),"scroll-padding-block":$("scroll-padding-top","scroll-padding-bottom"),"scroll-padding-inline":$("scroll-padding-left","scroll-padding-right")};var ao=Symbol();var so=Symbol();var uo=Symbol();var co=Symbol();var fo=Symbol();var po=Symbol();var mo=Symbol();var go=Symbol();var ho=Symbol();var vo=Symbol();var ko=Symbol();var wo=Symbol();var yo=Symbol();var bo=Symbol();function be(e){let r=[0];for(let o=0;o0;){let a=(i|0)>>1,u=l+a;r[u]<=o?(l=u+1,i=i-a-1):i=a}l-=1;let s=o-r[l];return{line:l+1,column:s}}function n({line:o,column:l}){o-=1,o=Math.min(Math.max(o,0),r.length-1);let i=r[o],s=r[o+1]??i;return Math.min(Math.max(i+l,0),s)}return{find:t,findOffset:n}}var q=92,oe=47,le=42,tt=34,rt=39,pr=58,ae=59,T=10,se=13,Z=32,Q=9,nt=123,xe=125,Se=40,it=41,dr=91,mr=93,ot=45,Ae=64,gr=33,V=class e extends Error{loc;constructor(r,t){if(t){let n=t[0],o=be(n.code).find(t[1]);r=`${n.file}:${o.line}:${o.column+1}: ${r}`}super(r),this.name="CssSyntaxError",this.loc=t,Error.captureStackTrace&&Error.captureStackTrace(this,e)}};function X(e,r){let t=r?.from?{file:r.from,code:e}:null;e[0]==="\uFEFF"&&(e=" "+e.slice(1));let n=[],o=[],l=[],i=null,s=null,a="",u="",p=0,c;for(let f=0;f0&&e[y]===m[m.length-1]&&(m=m.slice(0,-1));let I=Ce(a,v);if(!I)throw new V("Invalid custom property, expected a value",t?[t,x,f]:null);t&&(I.src=[t,x,f],I.dst=[t,x,f]),i?i.nodes.push(I):n.push(I),a=""}else if(d===ae&&a.charCodeAt(0)===Ae)s=J(a),t&&(s.src=[t,p,f],s.dst=[t,p,f]),i?i.nodes.push(s):n.push(s),a="",s=null;else if(d===ae&&u[u.length-1]!==")"){let m=Ce(a);if(!m){if(a.length===0)continue;throw new V(`Invalid declaration: \`${a.trim()}\``,t?[t,p,f]:null)}t&&(m.src=[t,p,f],m.dst=[t,p,f]),i?i.nodes.push(m):n.push(m),a=""}else if(d===nt&&u[u.length-1]!==")")u+="}",s=_(a.trim()),t&&(s.src=[t,p,f],s.dst=[t,p,f]),i&&i.nodes.push(s),l.push(i),i=s,a="",s=null;else if(d===xe&&u[u.length-1]!==")"){if(u==="")throw new V("Missing opening {",t?[t,f,f]:null);if(u=u.slice(0,-1),a.length>0)if(a.charCodeAt(0)===Ae)s=J(a),t&&(s.src=[t,p,f],s.dst=[t,p,f]),i?i.nodes.push(s):n.push(s),a="",s=null;else{let x=a.indexOf(":");if(i){let v=Ce(a,x);if(!v)throw new V(`Invalid declaration: \`${a.trim()}\``,t?[t,p,f]:null);t&&(v.src=[t,p,f],v.dst=[t,p,f]),i.nodes.push(v)}}let m=l.pop()??null;m===null&&i&&n.push(i),i=m,a="",s=null}else if(d===Se)u+=")",a+="(";else if(d===it){if(u[u.length-1]!==")")throw new V("Missing opening (",t?[t,f,f]:null);u=u.slice(0,-1),a+=")"}else{if(a.length===0&&(d===Z||d===T||d===Q))continue;a===""&&(p=f),a+=String.fromCharCode(d)}}}if(a.charCodeAt(0)===Ae){let f=J(a);t&&(f.src=[t,p,e.length],f.dst=[t,p,e.length]),n.push(f)}if(u.length>0&&i){if(i.kind==="rule")throw new V(`Missing closing } at ${i.selector}`,i.src?[i.src[0],i.src[1],i.src[1]]:null);if(i.kind==="at-rule")throw new V(`Missing closing } at ${i.name} ${i.params}`,i.src?[i.src[0],i.src[1],i.src[1]]:null)}return o.length>0?o.concat(n):n}function J(e,r=[]){let t=e,n="";for(let o=5;o{if(S(e.value))return e.value}),b=K(e=>{if(S(e.value))return`${e.value}%`}),D=K(e=>{if(S(e.value))return`${e.value}px`}),st=K(e=>{if(S(e.value))return`${e.value}ms`}),ue=K(e=>{if(S(e.value))return`${e.value}deg`}),yr=K(e=>{if(e.fraction===null)return;let[r,t]=w(e.fraction,"/");if(!(!S(r)||!S(t)))return e.fraction}),ut=K(e=>{if(S(Number(e.value)))return`repeat(${e.value}, minmax(0, 1fr))`}),br={accentColor:({theme:e})=>e("colors"),animation:{none:"none",spin:"spin 1s linear infinite",ping:"ping 1s cubic-bezier(0, 0, 0.2, 1) infinite",pulse:"pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite",bounce:"bounce 1s infinite"},aria:{busy:'busy="true"',checked:'checked="true"',disabled:'disabled="true"',expanded:'expanded="true"',hidden:'hidden="true"',pressed:'pressed="true"',readonly:'readonly="true"',required:'required="true"',selected:'selected="true"'},aspectRatio:{auto:"auto",square:"1 / 1",video:"16 / 9",...yr},backdropBlur:({theme:e})=>e("blur"),backdropBrightness:({theme:e})=>({...e("brightness"),...b}),backdropContrast:({theme:e})=>({...e("contrast"),...b}),backdropGrayscale:({theme:e})=>({...e("grayscale"),...b}),backdropHueRotate:({theme:e})=>({...e("hueRotate"),...ue}),backdropInvert:({theme:e})=>({...e("invert"),...b}),backdropOpacity:({theme:e})=>({...e("opacity"),...b}),backdropSaturate:({theme:e})=>({...e("saturate"),...b}),backdropSepia:({theme:e})=>({...e("sepia"),...b}),backgroundColor:({theme:e})=>e("colors"),backgroundImage:{none:"none","gradient-to-t":"linear-gradient(to top, var(--tw-gradient-stops))","gradient-to-tr":"linear-gradient(to top right, var(--tw-gradient-stops))","gradient-to-r":"linear-gradient(to right, var(--tw-gradient-stops))","gradient-to-br":"linear-gradient(to bottom right, var(--tw-gradient-stops))","gradient-to-b":"linear-gradient(to bottom, var(--tw-gradient-stops))","gradient-to-bl":"linear-gradient(to bottom left, var(--tw-gradient-stops))","gradient-to-l":"linear-gradient(to left, var(--tw-gradient-stops))","gradient-to-tl":"linear-gradient(to top left, var(--tw-gradient-stops))"},backgroundOpacity:({theme:e})=>e("opacity"),backgroundPosition:{bottom:"bottom",center:"center",left:"left","left-bottom":"left bottom","left-top":"left top",right:"right","right-bottom":"right bottom","right-top":"right top",top:"top"},backgroundSize:{auto:"auto",cover:"cover",contain:"contain"},blur:{0:"0",none:"",sm:"4px",DEFAULT:"8px",md:"12px",lg:"16px",xl:"24px","2xl":"40px","3xl":"64px"},borderColor:({theme:e})=>({DEFAULT:"currentcolor",...e("colors")}),borderOpacity:({theme:e})=>e("opacity"),borderRadius:{none:"0px",sm:"0.125rem",DEFAULT:"0.25rem",md:"0.375rem",lg:"0.5rem",xl:"0.75rem","2xl":"1rem","3xl":"1.5rem",full:"9999px"},borderSpacing:({theme:e})=>e("spacing"),borderWidth:{DEFAULT:"1px",0:"0px",2:"2px",4:"4px",8:"8px",...D},boxShadow:{sm:"0 1px 2px 0 rgb(0 0 0 / 0.05)",DEFAULT:"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)",md:"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",lg:"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",xl:"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)","2xl":"0 25px 50px -12px rgb(0 0 0 / 0.25)",inner:"inset 0 2px 4px 0 rgb(0 0 0 / 0.05)",none:"none"},boxShadowColor:({theme:e})=>e("colors"),brightness:{0:"0",50:".5",75:".75",90:".9",95:".95",100:"1",105:"1.05",110:"1.1",125:"1.25",150:"1.5",200:"2",...b},caretColor:({theme:e})=>e("colors"),colors:()=>({...Te}),columns:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12","3xs":"16rem","2xs":"18rem",xs:"20rem",sm:"24rem",md:"28rem",lg:"32rem",xl:"36rem","2xl":"42rem","3xl":"48rem","4xl":"56rem","5xl":"64rem","6xl":"72rem","7xl":"80rem",...N},container:{},content:{none:"none"},contrast:{0:"0",50:".5",75:".75",100:"1",125:"1.25",150:"1.5",200:"2",...b},cursor:{auto:"auto",default:"default",pointer:"pointer",wait:"wait",text:"text",move:"move",help:"help","not-allowed":"not-allowed",none:"none","context-menu":"context-menu",progress:"progress",cell:"cell",crosshair:"crosshair","vertical-text":"vertical-text",alias:"alias",copy:"copy","no-drop":"no-drop",grab:"grab",grabbing:"grabbing","all-scroll":"all-scroll","col-resize":"col-resize","row-resize":"row-resize","n-resize":"n-resize","e-resize":"e-resize","s-resize":"s-resize","w-resize":"w-resize","ne-resize":"ne-resize","nw-resize":"nw-resize","se-resize":"se-resize","sw-resize":"sw-resize","ew-resize":"ew-resize","ns-resize":"ns-resize","nesw-resize":"nesw-resize","nwse-resize":"nwse-resize","zoom-in":"zoom-in","zoom-out":"zoom-out"},divideColor:({theme:e})=>e("borderColor"),divideOpacity:({theme:e})=>e("borderOpacity"),divideWidth:({theme:e})=>({...e("borderWidth"),...D}),dropShadow:{sm:"0 1px 1px rgb(0 0 0 / 0.05)",DEFAULT:["0 1px 2px rgb(0 0 0 / 0.1)","0 1px 1px rgb(0 0 0 / 0.06)"],md:["0 4px 3px rgb(0 0 0 / 0.07)","0 2px 2px rgb(0 0 0 / 0.06)"],lg:["0 10px 8px rgb(0 0 0 / 0.04)","0 4px 3px rgb(0 0 0 / 0.1)"],xl:["0 20px 13px rgb(0 0 0 / 0.03)","0 8px 5px rgb(0 0 0 / 0.08)"],"2xl":"0 25px 25px rgb(0 0 0 / 0.15)",none:"0 0 #0000"},fill:({theme:e})=>e("colors"),flex:{1:"1 1 0%",auto:"1 1 auto",initial:"0 1 auto",none:"none"},flexBasis:({theme:e})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%","1/12":"8.333333%","2/12":"16.666667%","3/12":"25%","4/12":"33.333333%","5/12":"41.666667%","6/12":"50%","7/12":"58.333333%","8/12":"66.666667%","9/12":"75%","10/12":"83.333333%","11/12":"91.666667%",full:"100%",...e("spacing")}),flexGrow:{0:"0",DEFAULT:"1",...N},flexShrink:{0:"0",DEFAULT:"1",...N},fontFamily:{sans:["ui-sans-serif","system-ui","sans-serif",'"Apple Color Emoji"','"Segoe UI Emoji"','"Segoe UI Symbol"','"Noto Color Emoji"'],serif:["ui-serif","Georgia","Cambria",'"Times New Roman"',"Times","serif"],mono:["ui-monospace","SFMono-Regular","Menlo","Monaco","Consolas",'"Liberation Mono"','"Courier New"',"monospace"]},fontSize:{xs:["0.75rem",{lineHeight:"1rem"}],sm:["0.875rem",{lineHeight:"1.25rem"}],base:["1rem",{lineHeight:"1.5rem"}],lg:["1.125rem",{lineHeight:"1.75rem"}],xl:["1.25rem",{lineHeight:"1.75rem"}],"2xl":["1.5rem",{lineHeight:"2rem"}],"3xl":["1.875rem",{lineHeight:"2.25rem"}],"4xl":["2.25rem",{lineHeight:"2.5rem"}],"5xl":["3rem",{lineHeight:"1"}],"6xl":["3.75rem",{lineHeight:"1"}],"7xl":["4.5rem",{lineHeight:"1"}],"8xl":["6rem",{lineHeight:"1"}],"9xl":["8rem",{lineHeight:"1"}]},fontWeight:{thin:"100",extralight:"200",light:"300",normal:"400",medium:"500",semibold:"600",bold:"700",extrabold:"800",black:"900"},gap:({theme:e})=>e("spacing"),gradientColorStops:({theme:e})=>e("colors"),gradientColorStopPositions:{"0%":"0%","5%":"5%","10%":"10%","15%":"15%","20%":"20%","25%":"25%","30%":"30%","35%":"35%","40%":"40%","45%":"45%","50%":"50%","55%":"55%","60%":"60%","65%":"65%","70%":"70%","75%":"75%","80%":"80%","85%":"85%","90%":"90%","95%":"95%","100%":"100%",...b},grayscale:{0:"0",DEFAULT:"100%",...b},gridAutoColumns:{auto:"auto",min:"min-content",max:"max-content",fr:"minmax(0, 1fr)"},gridAutoRows:{auto:"auto",min:"min-content",max:"max-content",fr:"minmax(0, 1fr)"},gridColumn:{auto:"auto","span-1":"span 1 / span 1","span-2":"span 2 / span 2","span-3":"span 3 / span 3","span-4":"span 4 / span 4","span-5":"span 5 / span 5","span-6":"span 6 / span 6","span-7":"span 7 / span 7","span-8":"span 8 / span 8","span-9":"span 9 / span 9","span-10":"span 10 / span 10","span-11":"span 11 / span 11","span-12":"span 12 / span 12","span-full":"1 / -1"},gridColumnEnd:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13",...N},gridColumnStart:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13",...N},gridRow:{auto:"auto","span-1":"span 1 / span 1","span-2":"span 2 / span 2","span-3":"span 3 / span 3","span-4":"span 4 / span 4","span-5":"span 5 / span 5","span-6":"span 6 / span 6","span-7":"span 7 / span 7","span-8":"span 8 / span 8","span-9":"span 9 / span 9","span-10":"span 10 / span 10","span-11":"span 11 / span 11","span-12":"span 12 / span 12","span-full":"1 / -1"},gridRowEnd:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13",...N},gridRowStart:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13",...N},gridTemplateColumns:{none:"none",subgrid:"subgrid",1:"repeat(1, minmax(0, 1fr))",2:"repeat(2, minmax(0, 1fr))",3:"repeat(3, minmax(0, 1fr))",4:"repeat(4, minmax(0, 1fr))",5:"repeat(5, minmax(0, 1fr))",6:"repeat(6, minmax(0, 1fr))",7:"repeat(7, minmax(0, 1fr))",8:"repeat(8, minmax(0, 1fr))",9:"repeat(9, minmax(0, 1fr))",10:"repeat(10, minmax(0, 1fr))",11:"repeat(11, minmax(0, 1fr))",12:"repeat(12, minmax(0, 1fr))",...ut},gridTemplateRows:{none:"none",subgrid:"subgrid",1:"repeat(1, minmax(0, 1fr))",2:"repeat(2, minmax(0, 1fr))",3:"repeat(3, minmax(0, 1fr))",4:"repeat(4, minmax(0, 1fr))",5:"repeat(5, minmax(0, 1fr))",6:"repeat(6, minmax(0, 1fr))",7:"repeat(7, minmax(0, 1fr))",8:"repeat(8, minmax(0, 1fr))",9:"repeat(9, minmax(0, 1fr))",10:"repeat(10, minmax(0, 1fr))",11:"repeat(11, minmax(0, 1fr))",12:"repeat(12, minmax(0, 1fr))",...ut},height:({theme:e})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%",full:"100%",screen:"100vh",svh:"100svh",lvh:"100lvh",dvh:"100dvh",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),hueRotate:{0:"0deg",15:"15deg",30:"30deg",60:"60deg",90:"90deg",180:"180deg",...ue},inset:({theme:e})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%",full:"100%",...e("spacing")}),invert:{0:"0",DEFAULT:"100%",...b},keyframes:{spin:{to:{transform:"rotate(360deg)"}},ping:{"75%, 100%":{transform:"scale(2)",opacity:"0"}},pulse:{"50%":{opacity:".5"}},bounce:{"0%, 100%":{transform:"translateY(-25%)",animationTimingFunction:"cubic-bezier(0.8,0,1,1)"},"50%":{transform:"none",animationTimingFunction:"cubic-bezier(0,0,0.2,1)"}}},letterSpacing:{tighter:"-0.05em",tight:"-0.025em",normal:"0em",wide:"0.025em",wider:"0.05em",widest:"0.1em"},lineHeight:{none:"1",tight:"1.25",snug:"1.375",normal:"1.5",relaxed:"1.625",loose:"2",3:".75rem",4:"1rem",5:"1.25rem",6:"1.5rem",7:"1.75rem",8:"2rem",9:"2.25rem",10:"2.5rem"},listStyleType:{none:"none",disc:"disc",decimal:"decimal"},listStyleImage:{none:"none"},margin:({theme:e})=>({auto:"auto",...e("spacing")}),lineClamp:{1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",...N},maxHeight:({theme:e})=>({none:"none",full:"100%",screen:"100vh",svh:"100svh",lvh:"100lvh",dvh:"100dvh",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),maxWidth:({theme:e})=>({none:"none",xs:"20rem",sm:"24rem",md:"28rem",lg:"32rem",xl:"36rem","2xl":"42rem","3xl":"48rem","4xl":"56rem","5xl":"64rem","6xl":"72rem","7xl":"80rem",full:"100%",min:"min-content",max:"max-content",fit:"fit-content",prose:"65ch",...e("spacing")}),minHeight:({theme:e})=>({full:"100%",screen:"100vh",svh:"100svh",lvh:"100lvh",dvh:"100dvh",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),minWidth:({theme:e})=>({full:"100%",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),objectPosition:{bottom:"bottom",center:"center",left:"left","left-bottom":"left bottom","left-top":"left top",right:"right","right-bottom":"right bottom","right-top":"right top",top:"top"},opacity:{0:"0",5:"0.05",10:"0.1",15:"0.15",20:"0.2",25:"0.25",30:"0.3",35:"0.35",40:"0.4",45:"0.45",50:"0.5",55:"0.55",60:"0.6",65:"0.65",70:"0.7",75:"0.75",80:"0.8",85:"0.85",90:"0.9",95:"0.95",100:"1",...b},order:{first:"-9999",last:"9999",none:"0",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",...N},outlineColor:({theme:e})=>e("colors"),outlineOffset:{0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...D},outlineWidth:{0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...D},padding:({theme:e})=>e("spacing"),placeholderColor:({theme:e})=>e("colors"),placeholderOpacity:({theme:e})=>e("opacity"),ringColor:({theme:e})=>({DEFAULT:"currentcolor",...e("colors")}),ringOffsetColor:({theme:e})=>e("colors"),ringOffsetWidth:{0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...D},ringOpacity:({theme:e})=>({DEFAULT:"0.5",...e("opacity")}),ringWidth:{DEFAULT:"3px",0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...D},rotate:{0:"0deg",1:"1deg",2:"2deg",3:"3deg",6:"6deg",12:"12deg",45:"45deg",90:"90deg",180:"180deg",...ue},saturate:{0:"0",50:".5",100:"1",150:"1.5",200:"2",...b},scale:{0:"0",50:".5",75:".75",90:".9",95:".95",100:"1",105:"1.05",110:"1.1",125:"1.25",150:"1.5",...b},screens:{sm:"40rem",md:"48rem",lg:"64rem",xl:"80rem","2xl":"96rem"},scrollMargin:({theme:e})=>e("spacing"),scrollPadding:({theme:e})=>e("spacing"),sepia:{0:"0",DEFAULT:"100%",...b},skew:{0:"0deg",1:"1deg",2:"2deg",3:"3deg",6:"6deg",12:"12deg",...ue},space:({theme:e})=>e("spacing"),spacing:{px:"1px",0:"0px",.5:"0.125rem",1:"0.25rem",1.5:"0.375rem",2:"0.5rem",2.5:"0.625rem",3:"0.75rem",3.5:"0.875rem",4:"1rem",5:"1.25rem",6:"1.5rem",7:"1.75rem",8:"2rem",9:"2.25rem",10:"2.5rem",11:"2.75rem",12:"3rem",14:"3.5rem",16:"4rem",20:"5rem",24:"6rem",28:"7rem",32:"8rem",36:"9rem",40:"10rem",44:"11rem",48:"12rem",52:"13rem",56:"14rem",60:"15rem",64:"16rem",72:"18rem",80:"20rem",96:"24rem"},stroke:({theme:e})=>({none:"none",...e("colors")}),strokeWidth:{0:"0",1:"1",2:"2",...N},supports:{},data:{},textColor:({theme:e})=>e("colors"),textDecorationColor:({theme:e})=>e("colors"),textDecorationThickness:{auto:"auto","from-font":"from-font",0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...D},textIndent:({theme:e})=>e("spacing"),textOpacity:({theme:e})=>e("opacity"),textUnderlineOffset:{auto:"auto",0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...D},transformOrigin:{center:"center",top:"top","top-right":"top right",right:"right","bottom-right":"bottom right",bottom:"bottom","bottom-left":"bottom left",left:"left","top-left":"top left"},transitionDelay:{0:"0s",75:"75ms",100:"100ms",150:"150ms",200:"200ms",300:"300ms",500:"500ms",700:"700ms",1e3:"1000ms",...st},transitionDuration:{DEFAULT:"150ms",0:"0s",75:"75ms",100:"100ms",150:"150ms",200:"200ms",300:"300ms",500:"500ms",700:"700ms",1e3:"1000ms",...st},transitionProperty:{none:"none",all:"all",DEFAULT:"color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter",colors:"color, background-color, border-color, outline-color, text-decoration-color, fill, stroke",opacity:"opacity",shadow:"box-shadow",transform:"transform"},transitionTimingFunction:{DEFAULT:"cubic-bezier(0.4, 0, 0.2, 1)",linear:"linear",in:"cubic-bezier(0.4, 0, 1, 1)",out:"cubic-bezier(0, 0, 0.2, 1)","in-out":"cubic-bezier(0.4, 0, 0.2, 1)"},translate:({theme:e})=>({"1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%",full:"100%",...e("spacing")}),size:({theme:e})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%","1/12":"8.333333%","2/12":"16.666667%","3/12":"25%","4/12":"33.333333%","5/12":"41.666667%","6/12":"50%","7/12":"58.333333%","8/12":"66.666667%","9/12":"75%","10/12":"83.333333%","11/12":"91.666667%",full:"100%",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),width:({theme:e})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%","1/12":"8.333333%","2/12":"16.666667%","3/12":"25%","4/12":"33.333333%","5/12":"41.666667%","6/12":"50%","7/12":"58.333333%","8/12":"66.666667%","9/12":"75%","10/12":"83.333333%","11/12":"91.666667%",full:"100%",screen:"100vw",svw:"100svw",lvw:"100lvw",dvw:"100dvw",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),willChange:{auto:"auto",scroll:"scroll-position",contents:"contents",transform:"transform"},zIndex:{auto:"auto",0:"0",10:"10",20:"20",30:"30",40:"40",50:"50",...N}};var Ar=64;function U(e,r=[]){return{kind:"rule",selector:e,nodes:r}}function E(e,r="",t=[]){return{kind:"at-rule",name:e,params:r,nodes:t}}function _(e,r=[]){return e.charCodeAt(0)===Ar?J(e,r):U(e,r)}function O(e,r,t=!1){return{kind:"declaration",property:e,value:r,important:t}}function Ee(e){return{kind:"comment",value:e}}function L(e,r){let t=0,n={file:null,code:""};function o(i,s=0){let a="",u=" ".repeat(s);if(i.kind==="declaration"){if(a+=`${u}${i.property}: ${i.value}${i.important?" !important":""}; +`,r){t+=u.length;let p=t;t+=i.property.length,t+=2,t+=i.value?.length??0,i.important&&(t+=11);let c=t;t+=2,i.dst=[n,p,c]}}else if(i.kind==="rule"){if(a+=`${u}${i.selector} { +`,r){t+=u.length;let p=t;t+=i.selector.length,t+=1;let c=t;i.dst=[n,p,c],t+=2}for(let p of i.nodes)a+=o(p,s+1);a+=`${u}} +`,r&&(t+=u.length,t+=2)}else if(i.kind==="at-rule"){if(i.nodes.length===0){let p=`${u}${i.name} ${i.params}; +`;if(r){t+=u.length;let c=t;t+=i.name.length,t+=1,t+=i.params.length;let f=t;t+=2,i.dst=[n,c,f]}return p}if(a+=`${u}${i.name}${i.params?` ${i.params} `:" "}{ +`,r){t+=u.length;let p=t;t+=i.name.length,i.params&&(t+=1,t+=i.params.length),t+=1;let c=t;i.dst=[n,p,c],t+=2}for(let p of i.nodes)a+=o(p,s+1);a+=`${u}} +`,r&&(t+=u.length,t+=2)}else if(i.kind==="comment"){if(a+=`${u}/*${i.value}*/ +`,r){t+=u.length;let p=t;t+=2+i.value.length+2;let c=t;i.dst=[n,p,c],t+=1}}else if(i.kind==="context"||i.kind==="at-root")return"";return a}let l="";for(let i of e)l+=o(i,0);return n.code=l,l}function Cr(e,r){if(typeof e!="string")throw new TypeError("expected path to be a string");if(e==="\\"||e==="/")return"/";var t=e.length;if(t<=1)return e;var n="";if(t>4&&e[3]==="\\"){var o=e[2];(o==="?"||o===".")&&e.slice(0,2)==="\\\\"&&(e=e.slice(2),n="//")}var l=e.split(/[/\\]+/);return r!==!1&&l[l.length-1]===""&&l.pop(),n+l.join("/")}function Ve(e){let r=Cr(e);return e.startsWith("\\\\")&&r.startsWith("/")&&!r.startsWith("//")?`/${r}`:r}var Re=/(?[\w-]+\([^)]*\)|"[^"]*"|'[^']*'|[^,]\S*[^,])\s*(?:\s(?\w[^,]+))?(?:,|$)/g,Nr=/(?$r.test(e),Pr=e=>Er.test(e);async function ft({css:e,base:r,root:t}){if(!e.includes("url(")&&!e.includes("image-set("))return e;let n=X(e),o=[];function l(i){if(i[0]==="/")return i;let s=Ne.posix.join(Ve(r),i),a=Ne.posix.relative(Ve(t),s);return a.startsWith(".")||(a="./"+a),a}return h(n,i=>{if(i.kind!=="declaration"||!i.value)return;let s=Re.test(i.value),a=ct.test(i.value);if(s||a){let u=a?_r:pt;o.push(u(i.value,l).then(p=>{i.value=p}))}}),o.length&&await Promise.all(o),L(n)}function pt(e,r){return mt(e,Re,async t=>{let[n,o]=t;return await dt(o.trim(),n,r)})}async function _r(e,r){return await mt(e,ct,async t=>{let[,n]=t;return await Ir(n,async({url:l})=>Re.test(l)?await pt(l,r):Sr.test(l)?l:await dt(l,l,r))})}async function dt(e,r,t,n="url"){let o="",l=e[0];if((l==='"'||l==="'")&&(o=l,e=e.slice(1,-1)),Dr(e))return r;let i=await t(e);return o===""&&i!==encodeURI(i)&&(o='"'),o==="'"&&i.includes("'")&&(o='"'),o==='"'&&i.includes('"')&&(i=i.replace(Nr,'\\"')),`${n}(${o}${i}${o})`}function Dr(e,r){return Pr(e)||Or(e)||!e[0].match(/[.a-zA-Z0-9_]/)||Tr.test(e)}function Ir(e,r){return Promise.all(Ur(e).map(async({url:t,descriptor:n})=>({url:await r({url:t,descriptor:n}),descriptor:n}))).then(zr)}function Ur(e){let r=e.trim().replace(Rr," ").replace(/\r?\n/,"").replace(/,\s+/,", ").replaceAll(/\s+/g," ").matchAll(Vr);return Array.from(r,({groups:t})=>({url:t?.url?.trim()??"",descriptor:t?.descriptor?.trim()??""})).filter(({url:t})=>!!t)}function zr(e){return e.map(({url:r,descriptor:t})=>r+(t?` ${t}`:"")).join(", ")}async function mt(e,r,t){let n,o=e,l="";for(;n=r.exec(o);)l+=o.slice(0,n.index),l+=await t(n),o=o.slice(n.index+n[0].length);return l+=o,l}function yt({base:e,from:r,polyfills:t,onDependency:n,shouldRewriteUrls:o,customCssResolver:l,customJsResolver:i}){return{base:e,polyfills:t,from:r,async loadModule(s,a){return xt(s,a,n,i)},async loadStylesheet(s,a){let u=await At(s,a,n,l);return o&&(u.content=await ft({css:u.content,root:e,base:u.base})),u}}}async function bt(e){if(e.root&&e.root!=="none"){let r=/[*{]/,t=[];for(let o of e.root.pattern.split("/")){if(r.test(o))break;t.push(o)}if(!await wt.stat(ee.resolve(e.root.base,t.join("/"))).then(o=>o.isDirectory()).catch(()=>!1))throw new Error(`The \`source(${e.root.pattern})\` does not exist or is not a directory.`)}}async function gu(e,r){let t=await Fr(e,yt(r));return await bt(t),t}async function hu(e,r){let t=await Mr(e,yt(r));return await bt(t),t}async function vu(e,{base:r}){return Kr(e,{base:r,async loadModule(t,n){return xt(t,n,()=>{})},async loadStylesheet(t,n){return At(t,n,()=>{})}})}async function xt(e,r,t,n){if(e[0]!=="."){let s=await kt(e,r,n);if(!s)throw new Error(`Could not resolve '${e}' from '${r}'`);let a=await vt(gt(s).href);return{path:s,base:ee.dirname(s),module:a.default??a}}let o=await kt(e,r,n);if(!o)throw new Error(`Could not resolve '${e}' from '${r}'`);let[l,i]=await Promise.all([vt(gt(o).href+"?id="+Date.now()),Ie(o)]);for(let s of i)t(s);return{path:o,base:ee.dirname(o),module:l.default??l}}async function At(e,r,t,n){let o=await Wr(e,r,n);if(!o)throw new Error(`Could not resolve '${e}' from '${r}'`);t(o);let l=await wt.readFile(o,"utf-8");return{path:o,base:ee.dirname(o),content:l}}var ht=null;async function vt(e){if(typeof globalThis.__tw_load=="function"){let r=await globalThis.__tw_load(e);if(r)return r}try{return await import(e)}catch{return ht??=Lr(import.meta.url,{moduleCache:!1,fsCache:!1}),await ht.import(e)}}var _e=["node_modules",...process.env.NODE_PATH?[...process.env.NODE_PATH.split(ee.delimiter)]:[]],jr=j.ResolverFactory.createResolver({fileSystem:new j.CachedInputFileSystem(Pe,4e3),useSyncFileSystemCalls:!0,extensions:[".css"],mainFields:["style"],conditionNames:["style"],modules:_e});async function Wr(e,r,t){if(typeof globalThis.__tw_resolve=="function"){let n=globalThis.__tw_resolve(e,r);if(n)return Promise.resolve(n)}if(t){let n=await t(e,r);if(n)return n}return Oe(jr,e,r)}var Br=j.ResolverFactory.createResolver({fileSystem:new j.CachedInputFileSystem(Pe,4e3),useSyncFileSystemCalls:!0,extensions:[".js",".json",".node",".ts"],conditionNames:["node","import"],modules:_e}),Yr=j.ResolverFactory.createResolver({fileSystem:new j.CachedInputFileSystem(Pe,4e3),useSyncFileSystemCalls:!0,extensions:[".js",".json",".node",".ts"],conditionNames:["node","require"],modules:_e});async function kt(e,r,t){if(typeof globalThis.__tw_resolve=="function"){let n=globalThis.__tw_resolve(e,r);if(n)return Promise.resolve(n)}if(t){let n=await t(e,r);if(n)return n}return Oe(Br,e,r).catch(()=>Oe(Yr,e,r))}function Oe(e,r,t){return new Promise((n,o)=>e.resolve({},t,r,{},(l,i)=>{if(l)return o(l);n(i)}))}Symbol.dispose??=Symbol("Symbol.dispose");Symbol.asyncDispose??=Symbol("Symbol.asyncDispose");var Ct=class{constructor(r=t=>void process.stderr.write(`${t} +`)){this.defaultFlush=r}#r=new g(()=>({value:0}));#t=new g(()=>({value:0n}));#e=[];hit(r){this.#r.get(r).value++}start(r){let t=this.#e.map(o=>o.label).join("//"),n=`${t}${t.length===0?"":"//"}${r}`;this.#r.get(n).value++,this.#t.get(n),this.#e.push({id:n,label:r,namespace:t,value:process.hrtime.bigint()})}end(r){let t=process.hrtime.bigint();if(this.#e[this.#e.length-1].label!==r)throw new Error(`Mismatched timer label: \`${r}\`, expected \`${this.#e[this.#e.length-1].label}\``);let n=this.#e.pop(),o=t-n.value;this.#t.get(n.id).value+=o}reset(){this.#r.clear(),this.#t.clear(),this.#e.splice(0)}report(r=this.defaultFlush){let t=[],n=!1;for(let i=this.#e.length-1;i>=0;i--)this.end(this.#e[i].label);for(let[i,{value:s}]of this.#r.entries()){if(this.#t.has(i))continue;t.length===0&&(n=!0,t.push("Hits:"));let a=i.split("//").length;t.push(`${" ".repeat(a)}${i} ${ce(St(`\xD7 ${s}`))}`)}this.#t.size>0&&n&&t.push(` +Timers:`);let o=-1/0,l=new Map;for(let[i,{value:s}]of this.#t){let a=`${(Number(s)/1e6).toFixed(2)}ms`;l.set(i,a),o=Math.max(o,a.length)}for(let i of this.#t.keys()){let s=i.split("//").length;t.push(`${ce(`[${l.get(i).padStart(o," ")}]`)}${" ".repeat(s-1)}${s===1?" ":ce(" \u21B3 ")}${i.split("//").pop()} ${this.#r.get(i).value===1?"":ce(St(`\xD7 ${this.#r.get(i).value}`))}`.trimEnd())}r(` +${t.join(` +`)} +`),this.reset()}[Symbol.dispose](){pe&&this.report()}};function ce(e){return`\x1B[2m${e}\x1B[22m`}function St(e){return`\x1B[34m${e}\x1B[39m`}import Gr from"@jridgewell/remapping";import{Features as te,transform as Hr}from"lightningcss";import qr from"magic-string";function Cu(e,{file:r="input.css",minify:t=!1,map:n}={}){function o(a,u){return Hr({filename:r,code:a,minify:t,sourceMap:typeof u<"u",inputSourceMap:u,drafts:{customMedia:!0},nonStandard:{deepSelectorCombinator:!0},include:te.Nesting|te.MediaQueries,exclude:te.LogicalProperties|te.DirSelector|te.LightDark,targets:{safari:16<<16|1024,ios_saf:16<<16|1024,firefox:8388608,chrome:7274496},errorRecovery:!0})}let l=o(Buffer.from(e),n);if(n=l.map?.toString(),l.warnings=l.warnings.filter(a=>!/'(deep|slotted|global)' is not recognized as a valid pseudo-/.test(a.message)),l.warnings.length>0){let a=e.split(` +`),u=[`Found ${l.warnings.length} ${l.warnings.length===1?"warning":"warnings"} while optimizing generated CSS:`];for(let[p,c]of l.warnings.entries()){u.push(""),l.warnings.length>1&&u.push(`Issue #${p+1}:`);let f=2,d=Math.max(0,c.loc.line-f-1),m=Math.min(a.length,c.loc.line+f),x=a.slice(d,m).map((v,I)=>d+I+1===c.loc.line?`${re("\u2502")} ${v}`:re(`\u2502 ${v}`));x.splice(c.loc.line-d,0,`${re("\u2506")}${" ".repeat(c.loc.column-1)} ${Zr(`${re("^--")} ${c.message}`)}`,`${re("\u2506")}`),u.push(...x)}u.push(""),console.warn(u.join(` +`))}l=o(l.code,n),n=l.map?.toString();let i=l.code.toString(),s=new qr(i);if(s.replaceAll("@media not (","@media not all and ("),n!==void 0&&s.hasChanged()){let a=s.generateMap({source:"original",hires:"boundary"}).toString();n=Gr([a,n],()=>null).toString()}return i=s.toString(),{code:i,map:n}}function re(e){return`\x1B[2m${e}\x1B[22m`}function Zr(e){return`\x1B[33m${e}\x1B[39m`}import{SourceMapGenerator as Qr}from"source-map-js";function Jr(e){let r=new Qr,t=1,n=new g(o=>({url:o?.url??``,content:o?.content??""}));for(let o of e.mappings){let l=n.get(o.originalPosition?.source??null);r.addMapping({generated:o.generatedPosition,original:o.originalPosition,source:l.url,name:o.name}),r.setSourceContent(l.url,l.content)}return r.toString()}function Tu(e){let r=typeof e=="string"?e:Jr(e);function t(n){return`/*# sourceMappingURL=${n} */ +`}return{raw:r,get inline(){let n=Buffer.from(r,"utf-8").toString("base64");return t(`data:application/json;base64,${n}`)},comment:t}}if(!process.versions.bun){let e=fe.createRequire(import.meta.url);fe.register?.(Xr(e.resolve("@tailwindcss/node/esm-cache-loader")))}export{fu as Features,Ct as Instrumentation,pu as Polyfills,vu as __unstable__loadDesignSystem,hu as compile,gu as compileAst,de as env,xt as loadModule,Ve as normalizePath,Cu as optimize,Tu as toSourceMap}; diff --git a/node_modules/@tailwindcss/node/dist/require-cache.d.ts b/node_modules/@tailwindcss/node/dist/require-cache.d.ts new file mode 100644 index 00000000..de970b93 --- /dev/null +++ b/node_modules/@tailwindcss/node/dist/require-cache.d.ts @@ -0,0 +1,3 @@ +declare function clearRequireCache(files: string[]): void; + +export { clearRequireCache }; diff --git a/node_modules/@tailwindcss/node/dist/require-cache.js b/node_modules/@tailwindcss/node/dist/require-cache.js new file mode 100644 index 00000000..398995fa --- /dev/null +++ b/node_modules/@tailwindcss/node/dist/require-cache.js @@ -0,0 +1 @@ +"use strict";var i=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var n=(r,e)=>{for(var t in e)i(r,t,{get:e[t],enumerable:!0})},u=(r,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of f(e))!l.call(r,c)&&c!==t&&i(r,c,{get:()=>e[c],enumerable:!(o=a(e,c))||o.enumerable});return r};var h=r=>u(i({},"__esModule",{value:!0}),r);var d={};n(d,{clearRequireCache:()=>q});module.exports=h(d);function q(r){for(let e of r)delete require.cache[e]}0&&(module.exports={clearRequireCache}); diff --git a/node_modules/@tailwindcss/node/package.json b/node_modules/@tailwindcss/node/package.json new file mode 100644 index 00000000..21b48c77 --- /dev/null +++ b/node_modules/@tailwindcss/node/package.json @@ -0,0 +1,48 @@ +{ + "name": "@tailwindcss/node", + "version": "4.2.4", + "description": "A utility-first CSS framework for rapidly building custom user interfaces.", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/tailwindlabs/tailwindcss.git", + "directory": "packages/@tailwindcss-node" + }, + "bugs": "https://github.com/tailwindlabs/tailwindcss/issues", + "homepage": "https://tailwindcss.com", + "files": [ + "dist/" + ], + "publishConfig": { + "provenance": true, + "access": "public" + }, + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.js" + }, + "./require-cache": { + "types": "./dist/require-cache.d.ts", + "default": "./dist/require-cache.js" + }, + "./esm-cache-loader": { + "types": "./dist/esm-cache.loader.d.mts", + "default": "./dist/esm-cache.loader.mjs" + } + }, + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "enhanced-resolve": "^5.19.0", + "jiti": "^2.6.1", + "lightningcss": "1.32.0", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.2.4" + }, + "scripts": { + "build": "tsup-node", + "dev": "pnpm run build -- --watch" + } +} \ No newline at end of file diff --git a/node_modules/@tailwindcss/oxide-darwin-arm64/LICENSE b/node_modules/@tailwindcss/oxide-darwin-arm64/LICENSE new file mode 100644 index 00000000..d6a82290 --- /dev/null +++ b/node_modules/@tailwindcss/oxide-darwin-arm64/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Tailwind Labs, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/@tailwindcss/oxide-darwin-arm64/README.md b/node_modules/@tailwindcss/oxide-darwin-arm64/README.md new file mode 100644 index 00000000..1ab04aa3 --- /dev/null +++ b/node_modules/@tailwindcss/oxide-darwin-arm64/README.md @@ -0,0 +1,3 @@ +# `@tailwindcss/oxide-darwin-arm64` + +This is the **aarch64-apple-darwin** binary for `@tailwindcss/oxide` diff --git a/node_modules/@tailwindcss/oxide-darwin-arm64/package.json b/node_modules/@tailwindcss/oxide-darwin-arm64/package.json new file mode 100644 index 00000000..10a66111 --- /dev/null +++ b/node_modules/@tailwindcss/oxide-darwin-arm64/package.json @@ -0,0 +1,27 @@ +{ + "name": "@tailwindcss/oxide-darwin-arm64", + "version": "4.2.4", + "repository": { + "type": "git", + "url": "git+https://github.com/tailwindlabs/tailwindcss.git", + "directory": "crates/node/npm/darwin-arm64" + }, + "os": [ + "darwin" + ], + "cpu": [ + "arm64" + ], + "main": "tailwindcss-oxide.darwin-arm64.node", + "files": [ + "tailwindcss-oxide.darwin-arm64.node" + ], + "publishConfig": { + "provenance": true, + "access": "public" + }, + "license": "MIT", + "engines": { + "node": ">= 20" + } +} \ No newline at end of file diff --git a/node_modules/@tailwindcss/oxide-darwin-arm64/tailwindcss-oxide.darwin-arm64.node b/node_modules/@tailwindcss/oxide-darwin-arm64/tailwindcss-oxide.darwin-arm64.node new file mode 100644 index 00000000..ed27b6aa Binary files /dev/null and b/node_modules/@tailwindcss/oxide-darwin-arm64/tailwindcss-oxide.darwin-arm64.node differ diff --git a/node_modules/@tailwindcss/oxide/LICENSE b/node_modules/@tailwindcss/oxide/LICENSE new file mode 100644 index 00000000..d6a82290 --- /dev/null +++ b/node_modules/@tailwindcss/oxide/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Tailwind Labs, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/@tailwindcss/oxide/index.d.ts b/node_modules/@tailwindcss/oxide/index.d.ts new file mode 100644 index 00000000..184e0895 --- /dev/null +++ b/node_modules/@tailwindcss/oxide/index.d.ts @@ -0,0 +1,48 @@ +/* auto-generated by NAPI-RS */ +/* eslint-disable */ +export declare class Scanner { + constructor(opts: ScannerOptions) + scan(): Array + scanFiles(input: Array): Array + getCandidatesWithPositions(input: ChangedContent): Array + get files(): Array + get globs(): Array + get normalizedSources(): Array +} + +export interface CandidateWithPosition { + /** The candidate string */ + candidate: string + /** The position of the candidate inside the content file */ + position: number +} + +export interface ChangedContent { + /** File path to the changed file */ + file?: string + /** Contents of the changed file */ + content?: string + /** File extension */ + extension: string +} + +export interface GlobEntry { + /** Base path of the glob */ + base: string + /** Glob pattern */ + pattern: string +} + +export interface ScannerOptions { + /** Glob sources */ + sources?: Array +} + +export interface SourceEntry { + /** Base path of the glob */ + base: string + /** Glob pattern */ + pattern: string + /** Negated flag */ + negated: boolean +} diff --git a/node_modules/@tailwindcss/oxide/index.js b/node_modules/@tailwindcss/oxide/index.js new file mode 100644 index 00000000..b674012d --- /dev/null +++ b/node_modules/@tailwindcss/oxide/index.js @@ -0,0 +1,575 @@ +// prettier-ignore +/* eslint-disable */ +// @ts-nocheck +/* auto-generated by NAPI-RS */ + +const { readFileSync } = require('node:fs') +let nativeBinding = null +const loadErrors = [] + +const isMusl = () => { + let musl = false + if (process.platform === 'linux') { + musl = isMuslFromFilesystem() + if (musl === null) { + musl = isMuslFromReport() + } + if (musl === null) { + musl = isMuslFromChildProcess() + } + } + return musl +} + +const isFileMusl = (f) => f.includes('libc.musl-') || f.includes('ld-musl-') + +const isMuslFromFilesystem = () => { + try { + return readFileSync('/usr/bin/ldd', 'utf-8').includes('musl') + } catch { + return null + } +} + +const isMuslFromReport = () => { + let report = null + if (typeof process.report?.getReport === 'function') { + process.report.excludeNetwork = true + report = process.report.getReport() + } + if (!report) { + return null + } + if (report.header && report.header.glibcVersionRuntime) { + return false + } + if (Array.isArray(report.sharedObjects)) { + if (report.sharedObjects.some(isFileMusl)) { + return true + } + } + return false +} + +const isMuslFromChildProcess = () => { + try { + return require('child_process').execSync('ldd --version', { encoding: 'utf8' }).includes('musl') + } catch (e) { + // If we reach this case, we don't know if the system is musl or not, so is better to just fallback to false + return false + } +} + +function requireNative() { + if (process.env.NAPI_RS_NATIVE_LIBRARY_PATH) { + try { + return require(process.env.NAPI_RS_NATIVE_LIBRARY_PATH); + } catch (err) { + loadErrors.push(err) + } + } else if (process.platform === 'android') { + if (process.arch === 'arm64') { + try { + return require('./tailwindcss-oxide.android-arm64.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@tailwindcss/oxide-android-arm64') + const bindingPackageVersion = require('@tailwindcss/oxide-android-arm64/package.json').version + if (bindingPackageVersion !== '4.2.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 4.2.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else if (process.arch === 'arm') { + try { + return require('./tailwindcss-oxide.android-arm-eabi.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@tailwindcss/oxide-android-arm-eabi') + const bindingPackageVersion = require('@tailwindcss/oxide-android-arm-eabi/package.json').version + if (bindingPackageVersion !== '4.2.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 4.2.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else { + loadErrors.push(new Error(`Unsupported architecture on Android ${process.arch}`)) + } + } else if (process.platform === 'win32') { + if (process.arch === 'x64') { + if (process.config?.variables?.shlib_suffix === 'dll.a' || process.config?.variables?.node_target_type === 'shared_library') { + try { + return require('./tailwindcss-oxide.win32-x64-gnu.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@tailwindcss/oxide-win32-x64-gnu') + const bindingPackageVersion = require('@tailwindcss/oxide-win32-x64-gnu/package.json').version + if (bindingPackageVersion !== '4.2.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 4.2.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else { + try { + return require('./tailwindcss-oxide.win32-x64-msvc.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@tailwindcss/oxide-win32-x64-msvc') + const bindingPackageVersion = require('@tailwindcss/oxide-win32-x64-msvc/package.json').version + if (bindingPackageVersion !== '4.2.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 4.2.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } + } else if (process.arch === 'ia32') { + try { + return require('./tailwindcss-oxide.win32-ia32-msvc.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@tailwindcss/oxide-win32-ia32-msvc') + const bindingPackageVersion = require('@tailwindcss/oxide-win32-ia32-msvc/package.json').version + if (bindingPackageVersion !== '4.2.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 4.2.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else if (process.arch === 'arm64') { + try { + return require('./tailwindcss-oxide.win32-arm64-msvc.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@tailwindcss/oxide-win32-arm64-msvc') + const bindingPackageVersion = require('@tailwindcss/oxide-win32-arm64-msvc/package.json').version + if (bindingPackageVersion !== '4.2.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 4.2.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else { + loadErrors.push(new Error(`Unsupported architecture on Windows: ${process.arch}`)) + } + } else if (process.platform === 'darwin') { + try { + return require('./tailwindcss-oxide.darwin-universal.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@tailwindcss/oxide-darwin-universal') + const bindingPackageVersion = require('@tailwindcss/oxide-darwin-universal/package.json').version + if (bindingPackageVersion !== '4.2.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 4.2.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + if (process.arch === 'x64') { + try { + return require('./tailwindcss-oxide.darwin-x64.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@tailwindcss/oxide-darwin-x64') + const bindingPackageVersion = require('@tailwindcss/oxide-darwin-x64/package.json').version + if (bindingPackageVersion !== '4.2.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 4.2.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else if (process.arch === 'arm64') { + try { + return require('./tailwindcss-oxide.darwin-arm64.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@tailwindcss/oxide-darwin-arm64') + const bindingPackageVersion = require('@tailwindcss/oxide-darwin-arm64/package.json').version + if (bindingPackageVersion !== '4.2.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 4.2.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else { + loadErrors.push(new Error(`Unsupported architecture on macOS: ${process.arch}`)) + } + } else if (process.platform === 'freebsd') { + if (process.arch === 'x64') { + try { + return require('./tailwindcss-oxide.freebsd-x64.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@tailwindcss/oxide-freebsd-x64') + const bindingPackageVersion = require('@tailwindcss/oxide-freebsd-x64/package.json').version + if (bindingPackageVersion !== '4.2.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 4.2.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else if (process.arch === 'arm64') { + try { + return require('./tailwindcss-oxide.freebsd-arm64.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@tailwindcss/oxide-freebsd-arm64') + const bindingPackageVersion = require('@tailwindcss/oxide-freebsd-arm64/package.json').version + if (bindingPackageVersion !== '4.2.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 4.2.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else { + loadErrors.push(new Error(`Unsupported architecture on FreeBSD: ${process.arch}`)) + } + } else if (process.platform === 'linux') { + if (process.arch === 'x64') { + if (isMusl()) { + try { + return require('./tailwindcss-oxide.linux-x64-musl.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@tailwindcss/oxide-linux-x64-musl') + const bindingPackageVersion = require('@tailwindcss/oxide-linux-x64-musl/package.json').version + if (bindingPackageVersion !== '4.2.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 4.2.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else { + try { + return require('./tailwindcss-oxide.linux-x64-gnu.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@tailwindcss/oxide-linux-x64-gnu') + const bindingPackageVersion = require('@tailwindcss/oxide-linux-x64-gnu/package.json').version + if (bindingPackageVersion !== '4.2.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 4.2.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } + } else if (process.arch === 'arm64') { + if (isMusl()) { + try { + return require('./tailwindcss-oxide.linux-arm64-musl.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@tailwindcss/oxide-linux-arm64-musl') + const bindingPackageVersion = require('@tailwindcss/oxide-linux-arm64-musl/package.json').version + if (bindingPackageVersion !== '4.2.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 4.2.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else { + try { + return require('./tailwindcss-oxide.linux-arm64-gnu.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@tailwindcss/oxide-linux-arm64-gnu') + const bindingPackageVersion = require('@tailwindcss/oxide-linux-arm64-gnu/package.json').version + if (bindingPackageVersion !== '4.2.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 4.2.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } + } else if (process.arch === 'arm') { + if (isMusl()) { + try { + return require('./tailwindcss-oxide.linux-arm-musleabihf.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@tailwindcss/oxide-linux-arm-musleabihf') + const bindingPackageVersion = require('@tailwindcss/oxide-linux-arm-musleabihf/package.json').version + if (bindingPackageVersion !== '4.2.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 4.2.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else { + try { + return require('./tailwindcss-oxide.linux-arm-gnueabihf.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@tailwindcss/oxide-linux-arm-gnueabihf') + const bindingPackageVersion = require('@tailwindcss/oxide-linux-arm-gnueabihf/package.json').version + if (bindingPackageVersion !== '4.2.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 4.2.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } + } else if (process.arch === 'loong64') { + if (isMusl()) { + try { + return require('./tailwindcss-oxide.linux-loong64-musl.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@tailwindcss/oxide-linux-loong64-musl') + const bindingPackageVersion = require('@tailwindcss/oxide-linux-loong64-musl/package.json').version + if (bindingPackageVersion !== '4.2.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 4.2.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else { + try { + return require('./tailwindcss-oxide.linux-loong64-gnu.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@tailwindcss/oxide-linux-loong64-gnu') + const bindingPackageVersion = require('@tailwindcss/oxide-linux-loong64-gnu/package.json').version + if (bindingPackageVersion !== '4.2.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 4.2.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } + } else if (process.arch === 'riscv64') { + if (isMusl()) { + try { + return require('./tailwindcss-oxide.linux-riscv64-musl.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@tailwindcss/oxide-linux-riscv64-musl') + const bindingPackageVersion = require('@tailwindcss/oxide-linux-riscv64-musl/package.json').version + if (bindingPackageVersion !== '4.2.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 4.2.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else { + try { + return require('./tailwindcss-oxide.linux-riscv64-gnu.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@tailwindcss/oxide-linux-riscv64-gnu') + const bindingPackageVersion = require('@tailwindcss/oxide-linux-riscv64-gnu/package.json').version + if (bindingPackageVersion !== '4.2.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 4.2.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } + } else if (process.arch === 'ppc64') { + try { + return require('./tailwindcss-oxide.linux-ppc64-gnu.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@tailwindcss/oxide-linux-ppc64-gnu') + const bindingPackageVersion = require('@tailwindcss/oxide-linux-ppc64-gnu/package.json').version + if (bindingPackageVersion !== '4.2.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 4.2.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else if (process.arch === 's390x') { + try { + return require('./tailwindcss-oxide.linux-s390x-gnu.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@tailwindcss/oxide-linux-s390x-gnu') + const bindingPackageVersion = require('@tailwindcss/oxide-linux-s390x-gnu/package.json').version + if (bindingPackageVersion !== '4.2.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 4.2.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else { + loadErrors.push(new Error(`Unsupported architecture on Linux: ${process.arch}`)) + } + } else if (process.platform === 'openharmony') { + if (process.arch === 'arm64') { + try { + return require('./tailwindcss-oxide.openharmony-arm64.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@tailwindcss/oxide-openharmony-arm64') + const bindingPackageVersion = require('@tailwindcss/oxide-openharmony-arm64/package.json').version + if (bindingPackageVersion !== '4.2.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 4.2.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else if (process.arch === 'x64') { + try { + return require('./tailwindcss-oxide.openharmony-x64.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@tailwindcss/oxide-openharmony-x64') + const bindingPackageVersion = require('@tailwindcss/oxide-openharmony-x64/package.json').version + if (bindingPackageVersion !== '4.2.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 4.2.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else if (process.arch === 'arm') { + try { + return require('./tailwindcss-oxide.openharmony-arm.node') + } catch (e) { + loadErrors.push(e) + } + try { + const binding = require('@tailwindcss/oxide-openharmony-arm') + const bindingPackageVersion = require('@tailwindcss/oxide-openharmony-arm/package.json').version + if (bindingPackageVersion !== '4.2.4' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') { + throw new Error(`Native binding package version mismatch, expected 4.2.4 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`) + } + return binding + } catch (e) { + loadErrors.push(e) + } + } else { + loadErrors.push(new Error(`Unsupported architecture on OpenHarmony: ${process.arch}`)) + } + } else { + loadErrors.push(new Error(`Unsupported OS: ${process.platform}, architecture: ${process.arch}`)) + } +} + +nativeBinding = requireNative() + +if (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) { + let wasiBinding = null + let wasiBindingError = null + try { + wasiBinding = require('./tailwindcss-oxide.wasi.cjs') + nativeBinding = wasiBinding + } catch (err) { + if (process.env.NAPI_RS_FORCE_WASI) { + wasiBindingError = err + } + } + if (!nativeBinding) { + try { + wasiBinding = require('@tailwindcss/oxide-wasm32-wasi') + nativeBinding = wasiBinding + } catch (err) { + if (process.env.NAPI_RS_FORCE_WASI) { + wasiBindingError.cause = err + loadErrors.push(err) + } + } + } + if (process.env.NAPI_RS_FORCE_WASI === 'error' && !wasiBinding) { + const error = new Error('WASI binding not found and NAPI_RS_FORCE_WASI is set to error') + error.cause = wasiBindingError + throw error + } +} + +if (!nativeBinding) { + if (loadErrors.length > 0) { + throw new Error( + `Cannot find native binding. ` + + `npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). ` + + 'Please try `npm i` again after removing both package-lock.json and node_modules directory.', + { + cause: loadErrors.reduce((err, cur) => { + cur.cause = err + return cur + }), + }, + ) + } + throw new Error(`Failed to load native binding`) +} + +module.exports = nativeBinding +module.exports.Scanner = nativeBinding.Scanner diff --git a/node_modules/@tailwindcss/oxide/package.json b/node_modules/@tailwindcss/oxide/package.json new file mode 100644 index 00000000..dab60e6c --- /dev/null +++ b/node_modules/@tailwindcss/oxide/package.json @@ -0,0 +1,75 @@ +{ + "name": "@tailwindcss/oxide", + "version": "4.2.4", + "repository": { + "type": "git", + "url": "git+https://github.com/tailwindlabs/tailwindcss.git", + "directory": "crates/node" + }, + "main": "index.js", + "types": "index.d.ts", + "napi": { + "binaryName": "tailwindcss-oxide", + "packageName": "@tailwindcss/oxide", + "targets": [ + "armv7-linux-androideabi", + "aarch64-linux-android", + "aarch64-apple-darwin", + "aarch64-unknown-linux-gnu", + "aarch64-unknown-linux-musl", + "armv7-unknown-linux-gnueabihf", + "x86_64-unknown-linux-musl", + "x86_64-unknown-freebsd", + "i686-pc-windows-msvc", + "aarch64-pc-windows-msvc", + "wasm32-wasip1-threads" + ], + "wasm": { + "initialMemory": 16384, + "browser": { + "fs": true + } + } + }, + "license": "MIT", + "devDependencies": { + "@napi-rs/cli": "3.4.1", + "@napi-rs/wasm-runtime": "^1.1.1", + "emnapi": "1.8.1" + }, + "engines": { + "node": ">= 20" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "publishConfig": { + "provenance": true, + "access": "public" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.2.4", + "@tailwindcss/oxide-darwin-arm64": "4.2.4", + "@tailwindcss/oxide-darwin-x64": "4.2.4", + "@tailwindcss/oxide-freebsd-x64": "4.2.4", + "@tailwindcss/oxide-linux-arm64-gnu": "4.2.4", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.4", + "@tailwindcss/oxide-linux-arm64-musl": "4.2.4", + "@tailwindcss/oxide-linux-x64-musl": "4.2.4", + "@tailwindcss/oxide-linux-x64-gnu": "4.2.4", + "@tailwindcss/oxide-win32-x64-msvc": "4.2.4", + "@tailwindcss/oxide-win32-arm64-msvc": "4.2.4", + "@tailwindcss/oxide-wasm32-wasi": "4.2.4" + }, + "scripts": { + "build": "pnpm run build:platform && pnpm run build:wasm", + "build:platform": "napi build --platform --release", + "postbuild:platform": "node ./scripts/move-artifacts.mjs", + "build:wasm": "napi build --release --target wasm32-wasip1-threads", + "postbuild:wasm": "node ./scripts/move-artifacts.mjs", + "dev": "cargo watch --quiet --shell 'npm run build'", + "build:debug": "napi build --platform", + "version": "napi version" + } +} \ No newline at end of file diff --git a/node_modules/@tailwindcss/vite/LICENSE b/node_modules/@tailwindcss/vite/LICENSE new file mode 100644 index 00000000..d6a82290 --- /dev/null +++ b/node_modules/@tailwindcss/vite/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Tailwind Labs, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/@tailwindcss/vite/README.md b/node_modules/@tailwindcss/vite/README.md new file mode 100644 index 00000000..1a5d25c7 --- /dev/null +++ b/node_modules/@tailwindcss/vite/README.md @@ -0,0 +1,76 @@ +

+ + + + + Tailwind CSS + + +

+ +

+ A utility-first CSS framework for rapidly building custom user interfaces. +

+ +

+ Build Status + Total Downloads + Latest Release + License +

+ +--- + +## Documentation + +For full documentation, visit [tailwindcss.com](https://tailwindcss.com). + +## Community + +For help, discussion about best practices, or feature ideas: + +[Discuss Tailwind CSS on GitHub](https://github.com/tailwindlabs/tailwindcss/discussions) + +## Contributing + +If you're interested in contributing to Tailwind CSS, please read our [contributing docs](https://github.com/tailwindlabs/tailwindcss/blob/main/.github/CONTRIBUTING.md) **before submitting a pull request**. + +--- + +## `@tailwindcss/vite` plugin API + +### Enabling or disabling Lightning CSS + +By default, this plugin detects whether or not the CSS is being built for production by checking the `NODE_ENV` environment variable. When building for production Lightning CSS will be enabled otherwise it is disabled. + +If you want to always enable or disable Lightning CSS the `optimize` option may be used: + +```js +import tailwindcss from '@tailwindcss/vite' +import { defineConfig } from 'vite' + +export default defineConfig({ + plugins: [ + tailwindcss({ + // Disable Lightning CSS optimization + optimize: false, + }), + ], +}) +``` + +It's also possible to keep Lightning CSS enabled but disable minification: + +```js +import tailwindcss from '@tailwindcss/vite' +import { defineConfig } from 'vite' + +export default defineConfig({ + plugins: [ + tailwindcss({ + // Enable Lightning CSS but disable minification + optimize: { minify: false }, + }), + ], +}) +``` diff --git a/node_modules/@tailwindcss/vite/dist/index.d.mts b/node_modules/@tailwindcss/vite/dist/index.d.mts new file mode 100644 index 00000000..67287edc --- /dev/null +++ b/node_modules/@tailwindcss/vite/dist/index.d.mts @@ -0,0 +1,13 @@ +import { Plugin } from 'vite'; + +type PluginOptions = { + /** + * Optimize and minify the output CSS. + */ + optimize?: boolean | { + minify?: boolean; + }; +}; +declare function tailwindcss(opts?: PluginOptions): Plugin[]; + +export { type PluginOptions, tailwindcss as default }; diff --git a/node_modules/@tailwindcss/vite/dist/index.mjs b/node_modules/@tailwindcss/vite/dist/index.mjs new file mode 100644 index 00000000..56677af1 --- /dev/null +++ b/node_modules/@tailwindcss/vite/dist/index.mjs @@ -0,0 +1 @@ +var U=(s,n)=>(n=Symbol[s])?n:Symbol.for("Symbol."+s),_=s=>{throw TypeError(s)};var P=(s,n,e)=>{if(n!=null){typeof n!="object"&&typeof n!="function"&&_("Object expected");var t,f;e&&(t=n[U("asyncDispose")]),t===void 0&&(t=n[U("dispose")],e&&(f=t)),typeof t!="function"&&_("Object not disposable"),f&&(t=function(){try{f.call(this)}catch(d){return Promise.reject(d)}}),s.push([e,t,n])}else e&&s.push([e]);return n},F=(s,n,e)=>{var t=typeof SuppressedError=="function"?SuppressedError:function(u,b,r,l){return l=Error(r),l.name="SuppressedError",l.error=u,l.suppressed=b,l},f=u=>n=e?new t(u,n,"An error was suppressed during disposal"):(e=!0,u),d=u=>{for(;u=s.pop();)try{var b=u[1]&&u[1].call(u[2]);if(u[0])return Promise.resolve(b).then(d,r=>(f(r),d()))}catch(r){f(r)}if(e)throw n};return d()};import{compile as I,env as K,Features as R,Instrumentation as j,normalizePath as V,optimize as N,toSourceMap as T}from"@tailwindcss/node";import{clearRequireCache as W}from"@tailwindcss/node/require-cache";import{Scanner as k}from"@tailwindcss/oxide";import{realpathSync as L}from"fs";import C from"fs/promises";import S from"path";import*as q from"vite";var v=K.DEBUG,M=/[?&](?:worker|sharedworker|raw|url)\b/,D=/\?commonjs-proxy/,E=/[?&]index=\d+\.css$/;function Y(s={}){let n=[],e=null,t=new x(r=>new Map),f=!1,d=!0,u=!0;function b(r,l){let i,o;if(r){let a=function(m,c){let y=m.createResolver(c),O;return async(w,z,A,G)=>w.name==="client"||w.name==="ssr"?y(z,A,G,w.name==="ssr"):(O??=q.createIdResolver(m,c),O(w,z,A,G))};var p=a;let g=a(r.config,{...r.config.resolve,extensions:[".css"],mainFields:["style"],conditions:["style","development|production"],tryIndex:!1,preferRelative:!0}),h=a(r.config,r.config.resolve);i=async(m,c)=>{let y=await g(r,m,c,!1);if(y&&y!==m&&S.isAbsolute(y)&&y.endsWith(".css"))return y},o=async(m,c)=>{let y=await h(r,m,c,!1);if(y&&y!==m&&S.isAbsolute(y))return y}}else{let a=e.createResolver({...e.resolve,extensions:[".css"],mainFields:["style"],conditions:["style","development|production"],tryIndex:!1,preferRelative:!0}),g=e.createResolver(e.resolve);i=async(h,m)=>{let c=await a(h,m,!1,f);if(c&&c!==h&&S.isAbsolute(c)&&c.endsWith(".css"))return c},o=async(h,m)=>{let c=await g(h,m,!1,f);if(c&&c!==h&&S.isAbsolute(c))return c}}return new B(l,e.root,e?.css.devSourcemap??!1,i,o)}return[{name:"@tailwindcss/vite:scan",enforce:"pre",configureServer(r){n.push(r)},async configResolved(r){e=r,f=e.build.ssr!==!1&&e.build.ssr!==void 0,s.optimize!==void 0&&(d=s.optimize!==!1),u=d&&e.build.cssMinify!==!1,typeof s.optimize=="object"&&(u=s.optimize.minify!==!1)}},{name:"@tailwindcss/vite:generate:serve",apply:"serve",enforce:"pre",transform:{filter:{id:{exclude:[/\/\.vite\//,M,D],include:[/\.css(?:\?.*)?$/,/&lang\.css/,E]}},async handler(r,l){var g=[];try{if(!J(l))return;let i=P(g,new j);v&&i.start("[@tailwindcss/vite] Generate CSS (serve)");let o=t.get(this.environment?.name??"default");let p=o.get(l);p||(p??=b(this.environment??null,l),o.set(l,p));let a=await p.generate(r,y=>this.addWatchFile(y),i);if(!a)return o.delete(l),r;v&&i.end("[@tailwindcss/vite] Generate CSS (serve)");return a}catch(h){var m=h,c=!0}finally{F(g,m,c)}}},hotUpdate({file:r,modules:l,timestamp:i,server:o}){{if(!(l.length>0&&l.every(a=>a.type==="asset"||a.id===void 0)))return;for(let a of Object.values(o.environments)){if(a.name===this.environment.name)continue;let g=a.moduleGraph.getModulesByFile(r);if(g){for(let h of g)if(h.type!=="asset")return}}for(let a of new Set([this.environment.name,"client"])){let g=t.get(a);if(g.size===0||!X(r,l,g))continue;let h=new Set;for(let m of l)this.environment.moduleGraph.invalidateModule(m,h,i,!0);return a===this.environment.name?this.environment.hot.send({type:"full-reload"}):o.hot.send?o.hot.send({type:"full-reload"}):o.ws.send&&o.ws.send({type:"full-reload"}),[]}}}},{name:"@tailwindcss/vite:generate:build",apply:"build",enforce:"pre",transform:{filter:{id:{exclude:[/\/\.vite\//,M,D],include:[/\.css(?:\?.*)?$/,/&lang\.css/,E]}},async handler(r,l){var g=[];try{if(!J(l))return;let i=P(g,new j);v&&i.start("[@tailwindcss/vite] Generate CSS (build)");let o=t.get(this.environment?.name??"default");let p=o.get(l);p||(p??=b(this.environment??null,l),o.set(l,p));let a=await p.generate(r,y=>this.addWatchFile(y),i);if(!a)return o.delete(l),r;v&&i.end("[@tailwindcss/vite] Generate CSS (build)");d&&(v&&i.start("[@tailwindcss/vite] Optimize CSS"),a=N(a.code,{minify:u,map:a.map}),v&&i.end("[@tailwindcss/vite] Optimize CSS"));return a}catch(h){var m=h,c=!0}finally{F(g,m,c)}}}}]}function Q(s){let[n]=s.split("?",2);return S.extname(n).slice(1)}function J(s){return s.includes("/.vite/")||M.test(s)||D.test(s)?!1:Q(s)==="css"||s.includes("&lang.css")||s.match(E)}function $(s){return S.resolve(s.replace(/\?.*$/,""))}var x=class extends Map{constructor(e){super();this.factory=e}get(e){let t=super.get(e);return t===void 0&&(t=this.factory(e,this),this.set(e,t)),t}},B=class{constructor(n,e,t,f,d){this.id=n;this.base=e;this.enableSourceMaps=t;this.customCssResolver=f;this.customJsResolver=d}compiler;scanner;candidates=new Set;buildDependencies=new Map;get scannedFiles(){return this.scanner?.files??[]}async generate(n,e,t){let f=$(this.id);function d(i){i!==f&&(/[#?].*\.svg$/.test(i)||e(i))}let u=this.requiresBuild(),b=S.dirname(S.resolve(f));if(!this.compiler||!this.scanner||await u){W(Array.from(this.buildDependencies.keys())),this.buildDependencies.clear(),this.addBuildDependency($(f)),v&&t.start("Setup compiler");let i=[];this.compiler=await I(n,{from:this.enableSourceMaps?this.id:void 0,base:b,shouldRewriteUrls:!0,onDependency:p=>{d(p),i.push(this.addBuildDependency(p))},customCssResolver:this.customCssResolver,customJsResolver:this.customJsResolver}),await Promise.all(i),v&&t.end("Setup compiler"),v&&t.start("Setup scanner");let o=(this.compiler.root==="none"?[]:this.compiler.root===null?[{base:this.base,pattern:"**/*",negated:!1}]:[{...this.compiler.root,negated:!1}]).concat(this.compiler.sources);this.scanner=new k({sources:o}),v&&t.end("Setup scanner")}else for(let i of this.buildDependencies.keys())d(i);if(!(this.compiler.features&(R.AtApply|R.JsPluginCompat|R.ThemeFunction|R.Utilities)))return!1;if(this.compiler.features&R.Utilities){v&&t.start("Scan for candidates");for(let i of this.scanner.scan())this.candidates.add(i);v&&t.end("Scan for candidates")}if(this.compiler.features&R.Utilities){v&&t.start("Register dependency messages");for(let i of this.scanner.files)d(i);for(let i of this.scanner.globs){if(i.pattern[0]==="!")continue;let o=S.relative(this.base,i.base);o[0]!=="."&&(o="./"+o),o=V(o),d(S.posix.join(o,i.pattern));let p=this.compiler.root;if(p!=="none"&&p!==null){let a=V(S.resolve(p.base,p.pattern));if(!await C.stat(a).then(h=>h.isDirectory(),()=>!1))throw new Error(`The path given to \`source(\u2026)\` must be a directory but got \`source(${a})\` instead.`)}}v&&t.end("Register dependency messages")}v&&t.start("Build CSS");let r=this.compiler.build([...this.candidates]);v&&t.end("Build CSS"),v&&t.start("Build Source Map");let l=this.enableSourceMaps?T(this.compiler.buildSourceMap()).raw:void 0;return v&&t.end("Build Source Map"),{code:r,map:l}}async addBuildDependency(n){let e=null;try{e=(await C.stat(n)).mtimeMs}catch{}this.buildDependencies.set(n,e)}async requiresBuild(){for(let[n,e]of this.buildDependencies){if(e===null)return!0;try{if((await C.stat(n)).mtimeMs>e)return!0}catch{return!0}}return!1}};function X(s,n,e){let t=new Set,f=[...n],d={file:s,get realpath(){try{let u=L(s);return Object.defineProperty(d,"realpath",{value:u}),u}catch{return null}}};for(;f.length>0;){let u=f.shift();if(!t.has(u)){if(t.add(u),u.id){let b=e.get(u.id);if(b&&(b.scannedFiles.includes(d.file)||d.realpath&&b.scannedFiles.includes(d.realpath)))return!0}for(let b of u.importers)f.push(b)}}return!1}export{Y as default}; diff --git a/node_modules/@tailwindcss/vite/package.json b/node_modules/@tailwindcss/vite/package.json new file mode 100644 index 00000000..2f46cc87 --- /dev/null +++ b/node_modules/@tailwindcss/vite/package.json @@ -0,0 +1,42 @@ +{ + "name": "@tailwindcss/vite", + "version": "4.2.4", + "description": "A utility-first CSS framework for rapidly building custom user interfaces.", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/tailwindlabs/tailwindcss.git", + "directory": "packages/@tailwindcss-vite" + }, + "bugs": "https://github.com/tailwindlabs/tailwindcss/issues", + "homepage": "https://tailwindcss.com", + "files": [ + "dist/" + ], + "publishConfig": { + "provenance": true, + "access": "public" + }, + "exports": { + ".": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + } + }, + "dependencies": { + "@tailwindcss/node": "4.2.4", + "@tailwindcss/oxide": "4.2.4", + "tailwindcss": "4.2.4" + }, + "devDependencies": { + "@types/node": "^20.19.0", + "vite": "^8.0.0" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7 || ^8" + }, + "scripts": { + "build": "tsup-node", + "dev": "pnpm run build -- --watch" + } +} \ No newline at end of file diff --git a/node_modules/@tybys/wasm-util/README.md b/node_modules/@tybys/wasm-util/README.md new file mode 100644 index 00000000..b36fdf08 --- /dev/null +++ b/node_modules/@tybys/wasm-util/README.md @@ -0,0 +1,193 @@ +# @tybys/wasm-util + +WebAssembly related utils for browser environment + +**The output code is ES2019** + +## Features + +All example code below need to be bundled by ES module bundlers like `webpack` / `rollup`, or specify import map in browser native ES module runtime. + +### WASI polyfill for browser + +The API is similar to the `require('wasi').WASI` in Node.js. + +You can use `memfs-browser` to provide filesystem capability. + +- Example: [https://github.com/toyobayashi/wasi-wabt](https://github.com/toyobayashi/wasi-wabt) +- Demo: [https://toyobayashi.github.io/wasi-wabt/](https://toyobayashi.github.io/wasi-wabt/) + +```js +import { load, WASI } from '@tybys/wasm-util' +import { Volume, createFsFromVolume } from 'memfs-browser' + +const fs = createFsFromVolume(Volume.fromJSON({ + '/home/wasi': null +})) + +const wasi = new WASI({ + args: ['chrome', 'file.wasm'], + env: { + NODE_ENV: 'development', + WASI_SDK_PATH: '/opt/wasi-sdk' + }, + preopens: { + '/': '/' + }, + fs, + + // redirect stdout / stderr + + // print (text) { console.log(text) }, + // printErr (text) { console.error(text) } +}) + +const imports = { + wasi_snapshot_preview1: wasi.wasiImport +} + +const { module, instance } = await load('/path/to/file.wasm', imports) +wasi.start(instance) +// wasi.initialize(instance) +``` + +Implemented syscalls: [wasi_snapshot_preview1](#wasi_snapshot_preview1) + +### `load` / `loadSync` + +`loadSync` has 4KB wasm size limit in browser. + +```js +// bundler +import { load, loadSync } from '@tybys/wasm-util' + +const imports = { /* ... */ } + +// using path +const { module, instance } = await load('/path/to/file.wasm', imports) +const { module, instance } = loadSync('/path/to/file.wasm', imports) + +// using URL +const { module, instance } = await load(new URL('./file.wasm', import.meta.url), imports) +const { module, instance } = loadSync(new URL('./file.wasm', import.meta.url), imports) + +// using Uint8Array +const buffer = new Uint8Array([ + 0x00, 0x61, 0x73, 0x6d, + 0x01, 0x00, 0x00, 0x00 +]) +const { module, instance } = await load(buffer, imports) +const { module, instance } = loadSync(buffer, imports) + +// auto asyncify +const { + module, + instance: asyncifiedInstance +} = await load(buffer, imports, { /* asyncify options */}) +asyncifiedInstance.exports.fn() // => return Promise +``` + +### Extend Memory instance + +```js +import { Memory, extendMemory } from '@tybys/wasm-util' + +const memory = new WebAssembly.Memory({ initial: 256 }) +// const memory = instance.exports.memory + +extendMemory(memory) +console.log(memory instanceof Memory) +console.log(memory instanceof WebAssembly.Memory) +// expose memory view getters like Emscripten +const { HEAPU8, HEAPU32, view } = memory +``` + +### Asyncify wrap + +Build the C code using `clang`, `wasm-ld` and `wasm-opt` + +```c +void async_sleep(int ms); + +int main() { + async_sleep(200); + return 0; +} +``` + +```js +import { Asyncify } from '@tybys/wasm-util' + +const asyncify = new Asyncify() + +const imports = { + env: { + async_sleep: asyncify.wrapImportFunction(function (ms) { + return new Promise((resolve) => { + setTimeout(resolve, ms) + }) + }) + } +} + +// async_sleep(200) +const bytes = await (await fetch('/asyncfied_by_wasm-opt.wasm')).arrayBuffer() +const { instance } = await WebAssembly.instantiate(bytes, imports) +const asyncifiedInstance = asyncify.init(instance.exports.memory, instance, { + wrapExports: ['_start'] +}) + +const p = asyncifedInstance._start() +console.log(typeof p.then === 'function') +const now = Date.now() +await p +console.log(Date.now() - now >= 200) +``` + +### wasi_snapshot_preview1 + +- [x] args_get +- [x] args_sizes_get +- [x] environ_get +- [x] environ_sizes_get +- [x] clock_res_get +- [x] clock_time_get +- [ ] ~~fd_advise~~ +- [x] fd_allocate +- [x] fd_close +- [x] fd_datasync +- [x] fd_fdstat_get +- [ ] ~~fd_fdstat_set_flags~~ +- [x] fd_fdstat_set_rights +- [x] fd_filestat_get +- [x] fd_filestat_set_size +- [x] fd_filestat_set_times +- [x] fd_pread +- [x] fd_prestat_get +- [x] fd_prestat_dir_name +- [x] fd_pwrite +- [x] fd_read +- [x] fd_readdir +- [x] fd_renumber +- [x] fd_seek +- [x] fd_sync +- [x] fd_tell +- [x] fd_write +- [x] path_create_directory +- [x] path_filestat_get +- [x] path_filestat_set_times +- [x] path_link +- [x] path_open +- [x] path_readlink +- [x] path_remove_directory +- [x] path_rename +- [x] path_symlink +- [x] path_unlink_file +- [x] poll_oneoff (timer only) +- [x] proc_exit +- [ ] ~~proc_raise~~ +- [x] sched_yield +- [x] random_get +- [ ] ~~sock_recv~~ +- [ ] ~~sock_send~~ +- [ ] ~~sock_shutdown~~ diff --git a/node_modules/@tybys/wasm-util/dist/tsdoc-metadata.json b/node_modules/@tybys/wasm-util/dist/tsdoc-metadata.json new file mode 100644 index 00000000..d842c0e7 --- /dev/null +++ b/node_modules/@tybys/wasm-util/dist/tsdoc-metadata.json @@ -0,0 +1,11 @@ +// This file is read by tools that parse documentation comments conforming to the TSDoc standard. +// It should be published with your NPM package. It should not be tracked by Git. +{ + "tsdocVersion": "0.12", + "toolPackages": [ + { + "packageName": "@microsoft/api-extractor", + "packageVersion": "7.34.4" + } + ] +} diff --git a/node_modules/@tybys/wasm-util/dist/wasm-util.d.ts b/node_modules/@tybys/wasm-util/dist/wasm-util.d.ts new file mode 100644 index 00000000..2e6a9595 --- /dev/null +++ b/node_modules/@tybys/wasm-util/dist/wasm-util.d.ts @@ -0,0 +1,423 @@ +/** + * @packageDocumentation + */ + +/** @public */ +export declare class Asyncify { + private value; + private exports; + private dataPtr; + init>>(memory: WebAssembly.Memory, instance: { + readonly exports: T; + }, options: AsyncifyOptions): { + readonly exports: AsyncifyExports; + }; + private assertState; + wrapImportFunction(f: T): T; + wrapImports(imports: T): T; + wrapExportFunction(f: T): AsyncifyExportFunction; + wrapExports(exports: T): AsyncifyExports; + wrapExports>>(exports: T, needWrap: U): AsyncifyExports; +} + +/** @public */ +export declare type AsyncifyExportFunction = T extends Callable ? (...args: Parameters) => Promise> : T; + +/** @public */ +export declare type AsyncifyExportName = 'asyncify_get_state' | 'asyncify_start_unwind' | 'asyncify_stop_unwind' | 'asyncify_start_rewind' | 'asyncify_stop_rewind'; + +/** @public */ +export declare type AsyncifyExports = T extends Record ? { + [P in keyof T]: T[P] extends Callable ? U extends Array> ? P extends U[number] ? AsyncifyExportFunction : T[P] : AsyncifyExportFunction : T[P]; +} : T; + +/** @public */ +export declare function asyncifyLoad(asyncify: AsyncifyOptions, urlOrBuffer: string | URL | BufferSource | WebAssembly.Module, imports?: WebAssembly.Imports): Promise; + +/** @public */ +export declare function asyncifyLoadSync(asyncify: AsyncifyOptions, buffer: BufferSource | WebAssembly.Module, imports?: WebAssembly.Imports): WebAssembly.WebAssemblyInstantiatedSource; + +/** @public */ +export declare interface AsyncifyOptions { + wasm64?: boolean; + tryAllocate?: boolean | { + size?: number; + name?: string; + }; + wrapExports?: string[]; +} + +/** @public */ +export declare interface AsyncWASIOptions extends WASIOptions { + fs: { + promises: IFsPromises; + }; + asyncify?: Asyncify; +} + +/** @public */ +export declare interface BaseEncodingOptions { + encoding?: BufferEncoding_2; +} + +/** @public */ +export declare interface BigIntStats extends StatsBase { +} + +/** @public */ +declare type BufferEncoding_2 = 'ascii' | 'utf8' | 'utf-8' | 'utf16le' | 'ucs2' | 'ucs-2' | 'base64' | 'base64url' | 'latin1' | 'binary' | 'hex'; +export { BufferEncoding_2 as BufferEncoding } + +/** @public */ +export declare type BufferEncodingOption = 'buffer' | { + encoding: 'buffer'; +}; + +/** @public */ +export declare type Callable = (...args: any[]) => any; + +/** @public */ +export declare function createAsyncWASI(options?: AsyncWASIOptions): Promise; + +/** @public */ +export declare function extendMemory(memory: WebAssembly.Memory): Memory; + +/** @public */ +export declare interface FileHandle { + readonly fd: number; + datasync(): Promise; + sync(): Promise; + read(buffer: TBuffer, offset?: number, length?: number, position?: number): Promise<{ + bytesRead: number; + buffer: TBuffer; + }>; + stat(opts?: StatOptions & { + bigint?: false; + }): Promise; + stat(opts: StatOptions & { + bigint: true; + }): Promise; + stat(opts?: StatOptions): Promise; + truncate(len?: number): Promise; + utimes(atime: string | number | Date, mtime: string | number | Date): Promise; + write(buffer: TBuffer, offset?: number, length?: number, position?: number): Promise<{ + bytesWritten: number; + buffer: TBuffer; + }>; + write(data: string | Uint8Array, position?: number, encoding?: BufferEncoding_2): Promise<{ + bytesWritten: number; + buffer: string; + }>; + close(): Promise; +} + +/** @public */ +export declare interface FinalizeBindingsOptions { + memory?: WebAssembly.Memory; +} + +/** @public */ +export declare interface IDirent { + isFile(): boolean; + isDirectory(): boolean; + isBlockDevice(): boolean; + isCharacterDevice(): boolean; + isSymbolicLink(): boolean; + isFIFO(): boolean; + isSocket(): boolean; + name: string; +} + +/** @public */ +export declare interface IFs { + fstatSync(fd: number, options?: StatOptions & { + bigint?: false; + }): Stats; + fstatSync(fd: number, options: StatOptions & { + bigint: true; + }): BigIntStats; + fstatSync(fd: number, options?: StatOptions): Stats | BigIntStats; + statSync(path: PathLike, options?: StatOptions & { + bigint?: false; + }): Stats; + statSync(path: PathLike, options: StatOptions & { + bigint: true; + }): BigIntStats; + statSync(path: PathLike, options?: StatOptions): Stats | BigIntStats; + lstatSync(path: PathLike, options?: StatOptions & { + bigint?: false; + }): Stats; + lstatSync(path: PathLike, options: StatOptions & { + bigint: true; + }): BigIntStats; + lstatSync(path: PathLike, options?: StatOptions): Stats | BigIntStats; + utimesSync(path: PathLike, atime: string | number | Date, mtime: string | number | Date): void; + openSync(path: PathLike, flags: OpenMode, mode?: Mode): number; + readSync(fd: number, buffer: ArrayBufferView, offset: number, length: number, position: number | null): number; + readSync(fd: number, buffer: ArrayBufferView, opts?: ReadSyncOptions): number; + writeSync(fd: number, buffer: ArrayBufferView, offset?: number, length?: number, position?: number): number; + writeSync(fd: number, string: string, position?: number, encoding?: BufferEncoding_2): number; + closeSync(fd: number): void; + readlinkSync(path: PathLike, options?: BaseEncodingOptions | BufferEncoding_2): string; + readlinkSync(path: PathLike, options: BufferEncodingOption): Uint8Array; + readlinkSync(path: PathLike, options?: BaseEncodingOptions | string): string | Uint8Array; + realpathSync(path: PathLike, options?: BaseEncodingOptions | BufferEncoding_2): string; + realpathSync(path: PathLike, options: BufferEncodingOption): Uint8Array; + realpathSync(path: PathLike, options?: BaseEncodingOptions | string): string | Uint8Array; + truncateSync(path: PathLike, len?: number): void; + ftruncateSync(fd: number, len?: number): void; + fdatasyncSync(fd: number): void; + futimesSync(fd: number, atime: string | number | Date, mtime: string | number | Date): void; + readdirSync(path: PathLike, options?: { + encoding: BufferEncoding_2 | null; + withFileTypes?: false; + } | BufferEncoding_2): string[]; + readdirSync(path: PathLike, options: { + encoding: 'buffer'; + withFileTypes?: false; + } | 'buffer'): Uint8Array[]; + readdirSync(path: PathLike, options?: BaseEncodingOptions & { + withFileTypes?: false; + } | BufferEncoding_2): string[] | Uint8Array[]; + readdirSync(path: PathLike, options: BaseEncodingOptions & { + withFileTypes: true; + }): IDirent[]; + fsyncSync(fd: number): void; + mkdirSync(path: PathLike, options: MakeDirectoryOptions & { + recursive: true; + }): string | undefined; + mkdirSync(path: PathLike, options?: Mode | (MakeDirectoryOptions & { + recursive?: false; + })): void; + mkdirSync(path: PathLike, options?: Mode | MakeDirectoryOptions): string | undefined; + rmdirSync(path: PathLike, options?: RmDirOptions): void; + linkSync(existingPath: PathLike, newPath: PathLike): void; + unlinkSync(path: PathLike): void; + renameSync(oldPath: PathLike, newPath: PathLike): void; + symlinkSync(target: PathLike, path: PathLike, type?: 'dir' | 'file' | 'junction'): void; +} + +/** @public */ +export declare interface IFsPromises { + stat(path: PathLike, options?: StatOptions & { + bigint?: false; + }): Promise; + stat(path: PathLike, options: StatOptions & { + bigint: true; + }): Promise; + stat(path: PathLike, options?: StatOptions): Promise; + lstat(path: PathLike, options?: StatOptions & { + bigint?: false; + }): Promise; + lstat(path: PathLike, options: StatOptions & { + bigint: true; + }): Promise; + lstat(path: PathLike, options?: StatOptions): Promise; + utimes(path: PathLike, atime: string | number | Date, mtime: string | number | Date): Promise; + open(path: PathLike, flags: OpenMode, mode?: Mode): Promise; + read(handle: FileHandle, buffer: TBuffer, offset?: number, length?: number, position?: number): Promise<{ + bytesRead: number; + buffer: TBuffer; + }>; + write(handle: FileHandle, buffer: TBuffer, offset?: number, length?: number, position?: number): Promise<{ + bytesWritten: number; + buffer: TBuffer; + }>; + readlink(path: PathLike, options?: BaseEncodingOptions | BufferEncoding_2): Promise; + readlink(path: PathLike, options: BufferEncodingOption): Promise; + readlink(path: PathLike, options?: BaseEncodingOptions | string): Promise; + realpath(path: PathLike, options?: BaseEncodingOptions | BufferEncoding_2): Promise; + realpath(path: PathLike, options: BufferEncodingOption): Promise; + realpath(path: PathLike, options?: BaseEncodingOptions | string): Promise; + truncate(path: PathLike, len?: number): Promise; + ftruncate(handle: FileHandle, len?: number): Promise; + fdatasync(handle: FileHandle): Promise; + futimes(handle: FileHandle, atime: string | number | Date, mtime: string | number | Date): Promise; + readdir(path: PathLike, options?: { + encoding: BufferEncoding_2 | null; + withFileTypes?: false; + } | BufferEncoding_2): Promise; + readdir(path: PathLike, options: { + encoding: 'buffer'; + withFileTypes?: false; + } | 'buffer'): Promise; + readdir(path: PathLike, options?: BaseEncodingOptions & { + withFileTypes?: false; + } | BufferEncoding_2): Promise; + readdir(path: PathLike, options: BaseEncodingOptions & { + withFileTypes: true; + }): Promise; + fsync(handle: FileHandle): Promise; + mkdir(path: PathLike, options: MakeDirectoryOptions & { + recursive: true; + }): Promise; + mkdir(path: PathLike, options?: Mode | (MakeDirectoryOptions & { + recursive?: false; + })): Promise; + mkdir(path: PathLike, options?: Mode | MakeDirectoryOptions): Promise; + rmdir(path: PathLike, options?: RmDirOptions): Promise; + link(existingPath: PathLike, newPath: PathLike): Promise; + unlink(path: PathLike): Promise; + rename(oldPath: PathLike, newPath: PathLike): Promise; + symlink(target: PathLike, path: PathLike, type?: 'dir' | 'file' | 'junction'): Promise; +} + +declare const kBindingName: unique symbol; + +declare const kExitCode: unique symbol; + +declare const kInstance: unique symbol; + +declare const kSetMemory: unique symbol; + +declare const kStarted: unique symbol; + +/** @public */ +export declare function load(wasmInput: string | URL | BufferSource | WebAssembly.Module, imports?: WebAssembly.Imports): Promise; + +/** @public */ +export declare function loadSync(wasmInput: BufferSource | WebAssembly.Module, imports?: WebAssembly.Imports): WebAssembly.WebAssemblyInstantiatedSource; + +/** @public */ +export declare interface MakeDirectoryOptions { + recursive?: boolean; + mode?: Mode; +} + +/** @public */ +export declare class Memory extends WebAssemblyMemory { + constructor(descriptor: WebAssembly.MemoryDescriptor); + get HEAP8(): Int8Array; + get HEAPU8(): Uint8Array; + get HEAP16(): Int16Array; + get HEAPU16(): Uint16Array; + get HEAP32(): Int32Array; + get HEAPU32(): Uint32Array; + get HEAP64(): BigInt64Array; + get HEAPU64(): BigUint64Array; + get HEAPF32(): Float32Array; + get HEAPF64(): Float64Array; + get view(): DataView; +} + +/** @public */ +export declare type Mode = number | string; + +/** @public */ +export declare type OpenMode = number | string; + +/** @public */ +export declare type PathLike = string | Uint8Array | URL; + +/** @public */ +export declare type PromisifyExports = T extends Record ? { + [P in keyof T]: T[P] extends Callable ? U extends Array ? P extends U[number] ? AsyncifyExportFunction : T[P] : AsyncifyExportFunction : T[P]; +} : T; + +/** @public */ +export declare interface ReadSyncOptions { + offset?: number; + length?: number; + position?: number; +} + +/** @public */ +export declare interface RmDirOptions { + maxRetries?: number; + recursive?: boolean; + retryDelay?: number; +} + +/** @public */ +export declare interface StatOptions { + bigint?: boolean; +} + +/** @public */ +export declare interface Stats extends StatsBase { +} + +/** @public */ +export declare interface StatsBase { + isFile(): boolean; + isDirectory(): boolean; + isBlockDevice(): boolean; + isCharacterDevice(): boolean; + isSymbolicLink(): boolean; + isFIFO(): boolean; + isSocket(): boolean; + dev: T; + ino: T; + mode: T; + nlink: T; + uid: T; + gid: T; + rdev: T; + size: T; + blksize: T; + blocks: T; + atimeMs: T; + mtimeMs: T; + ctimeMs: T; + birthtimeMs: T; + atime: Date; + mtime: Date; + ctime: Date; + birthtime: Date; +} + +/** @public */ +export declare interface SyncWASIOptions extends WASIOptions { + fs?: IFs; +} + +/** @public */ +export declare class WASI { + private [kSetMemory]; + private [kStarted]; + private [kExitCode]; + private [kInstance]; + private [kBindingName]; + readonly wasiImport: Record; + constructor(options?: SyncWASIOptions); + finalizeBindings(instance: WebAssembly.Instance, { memory }?: FinalizeBindingsOptions): void; + start(instance: WebAssembly.Instance): number | undefined | Promise | Promise; + initialize(instance: WebAssembly.Instance): void | Promise; + getImportObject(): Record>; +} + +/** @public */ +export declare interface WASIOptions { + version?: 'unstable' | 'preview1'; + args?: string[] | undefined; + env?: Record | undefined; + preopens?: Record | undefined; + /** + * @defaultValue `false` + */ + returnOnExit?: boolean | undefined; + print?: (str: string) => void; + printErr?: (str: string) => void; +} + +/** @public */ +export declare const WebAssemblyMemory: { + new (descriptor: WebAssembly.MemoryDescriptor): WebAssembly.Memory; + prototype: WebAssembly.Memory; +}; + +/** @public */ +export declare function wrapAsyncExport(f: Function): T; + +/** @public */ +export declare function wrapAsyncImport any>(f: T, parameterType: WebAssembly.ValueType[], returnType: WebAssembly.ValueType[]): (...args: [object, ...Parameters]) => ReturnType; + +/** @public */ +export declare function wrapExports(exports: T): PromisifyExports; + +/** @public */ +export declare function wrapExports>(exports: T, needWrap: U): PromisifyExports; + +export { } + +export as namespace wasmUtil; diff --git a/node_modules/@tybys/wasm-util/dist/wasm-util.esm-bundler.js b/node_modules/@tybys/wasm-util/dist/wasm-util.esm-bundler.js new file mode 100644 index 00000000..e5677632 --- /dev/null +++ b/node_modules/@tybys/wasm-util/dist/wasm-util.esm-bundler.js @@ -0,0 +1,2758 @@ +const _WebAssembly = typeof WebAssembly !== 'undefined' + ? WebAssembly + : typeof WXWebAssembly !== 'undefined' + ? WXWebAssembly + : undefined; +if (!_WebAssembly) { + throw new Error('WebAssembly is not supported in this environment'); +} + +/* eslint-disable spaced-comment */ + +function validateObject(value, name) { + if (value === null || typeof value !== 'object') { + throw new TypeError(`${name} must be an object. Received ${value === null ? 'null' : typeof value}`); + } +} +function validateArray(value, name) { + if (!Array.isArray(value)) { + throw new TypeError(`${name} must be an array. Received ${value === null ? 'null' : typeof value}`); + } +} +function validateBoolean(value, name) { + if (typeof value !== 'boolean') { + throw new TypeError(`${name} must be a boolean. Received ${value === null ? 'null' : typeof value}`); + } +} +function validateString(value, name) { + if (typeof value !== 'string') { + throw new TypeError(`${name} must be a string. Received ${value === null ? 'null' : typeof value}`); + } +} +function validateFunction(value, name) { + if (typeof value !== 'function') { + throw new TypeError(`${name} must be a function. Received ${value === null ? 'null' : typeof value}`); + } +} +function validateUndefined(value, name) { + if (value !== undefined) { + throw new TypeError(`${name} must be undefined. Received ${value === null ? 'null' : typeof value}`); + } +} +function isPromiseLike(obj) { + return !!(obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function'); +} +function wrapInstanceExports(exports, mapFn) { + const newExports = Object.create(null); + Object.keys(exports).forEach(name => { + const exportValue = exports[name]; + Object.defineProperty(newExports, name, { + enumerable: true, + value: mapFn(exportValue, name) + }); + }); + return newExports; +} +function sleepBreakIf(delay, breakIf) { + const start = Date.now(); + const end = start + delay; + let ret = false; + while (Date.now() < end) { + if (breakIf()) { + ret = true; + break; + } + } + return ret; +} +function unsharedSlice(view, start, end) { + return ((typeof SharedArrayBuffer === 'function' && view.buffer instanceof SharedArrayBuffer) || (Object.prototype.toString.call(view.buffer.constructor) === '[object SharedArrayBuffer]')) + ? view.slice(start, end) + : view.subarray(start, end); +} + +const ignoreNames = [ + 'asyncify_get_state', + 'asyncify_start_rewind', + 'asyncify_start_unwind', + 'asyncify_stop_rewind', + 'asyncify_stop_unwind' +]; +function tryAllocate(instance, wasm64, size, mallocName) { + if (typeof instance.exports[mallocName] !== 'function' || size <= 0) { + return { + wasm64, + dataPtr: 16, + start: wasm64 ? 32 : 24, + end: 1024 + }; + } + const malloc = instance.exports[mallocName]; + const dataPtr = wasm64 ? Number(malloc(BigInt(16) + BigInt(size))) : malloc(8 + size); + if (dataPtr === 0) { + throw new Error('Allocate asyncify data failed'); + } + return wasm64 + ? { wasm64, dataPtr, start: dataPtr + 16, end: dataPtr + 16 + size } + : { wasm64, dataPtr, start: dataPtr + 8, end: dataPtr + 8 + size }; +} +/** @public */ +class Asyncify { + constructor() { + this.value = undefined; + this.exports = undefined; + this.dataPtr = 0; + } + init(memory, instance, options) { + var _a, _b; + if (this.exports) { + throw new Error('Asyncify has been initialized'); + } + if (!(memory instanceof _WebAssembly.Memory)) { + throw new TypeError('Require WebAssembly.Memory object'); + } + const exports = instance.exports; + for (let i = 0; i < ignoreNames.length; ++i) { + if (typeof exports[ignoreNames[i]] !== 'function') { + throw new TypeError('Invalid asyncify wasm'); + } + } + let address; + const wasm64 = Boolean(options.wasm64); + if (!options.tryAllocate) { + address = { + wasm64, + dataPtr: 16, + start: wasm64 ? 32 : 24, + end: 1024 + }; + } + else { + if (options.tryAllocate === true) { + address = tryAllocate(instance, wasm64, 4096, 'malloc'); + } + else { + address = tryAllocate(instance, wasm64, (_a = options.tryAllocate.size) !== null && _a !== void 0 ? _a : 4096, (_b = options.tryAllocate.name) !== null && _b !== void 0 ? _b : 'malloc'); + } + } + this.dataPtr = address.dataPtr; + if (wasm64) { + new BigInt64Array(memory.buffer, this.dataPtr).set([BigInt(address.start), BigInt(address.end)]); + } + else { + new Int32Array(memory.buffer, this.dataPtr).set([address.start, address.end]); + } + this.exports = this.wrapExports(exports, options.wrapExports); + const asyncifiedInstance = Object.create(_WebAssembly.Instance.prototype); + Object.defineProperty(asyncifiedInstance, 'exports', { value: this.exports }); + // Object.setPrototypeOf(instance, Instance.prototype) + return asyncifiedInstance; + } + assertState() { + if (this.exports.asyncify_get_state() !== 0 /* AsyncifyState.NONE */) { + throw new Error('Asyncify state error'); + } + } + wrapImportFunction(f) { + // eslint-disable-next-line @typescript-eslint/no-this-alias + const _this = this; + return (function () { + // eslint-disable-next-line no-unreachable-loop + while (_this.exports.asyncify_get_state() === 2 /* AsyncifyState.REWINDING */) { + _this.exports.asyncify_stop_rewind(); + return _this.value; + } + _this.assertState(); + const v = f.apply(this, arguments); + if (!isPromiseLike(v)) + return v; + _this.exports.asyncify_start_unwind(_this.dataPtr); + _this.value = v; + }); + } + wrapImports(imports) { + const importObject = {}; + Object.keys(imports).forEach(k => { + const mod = imports[k]; + const newModule = {}; + Object.keys(mod).forEach(name => { + const importValue = mod[name]; + if (typeof importValue === 'function') { + newModule[name] = this.wrapImportFunction(importValue); + } + else { + newModule[name] = importValue; + } + }); + importObject[k] = newModule; + }); + return importObject; + } + wrapExportFunction(f) { + // eslint-disable-next-line @typescript-eslint/no-this-alias + const _this = this; + return (async function () { + _this.assertState(); + let ret = f.apply(this, arguments); + while (_this.exports.asyncify_get_state() === 1 /* AsyncifyState.UNWINDING */) { + _this.exports.asyncify_stop_unwind(); + _this.value = await _this.value; + _this.assertState(); + _this.exports.asyncify_start_rewind(_this.dataPtr); + ret = f.call(this); + } + _this.assertState(); + return ret; + }); + } + wrapExports(exports, needWrap) { + return wrapInstanceExports(exports, (exportValue, name) => { + let ignore = ignoreNames.indexOf(name) !== -1 || typeof exportValue !== 'function'; + if (Array.isArray(needWrap)) { + ignore = ignore || (needWrap.indexOf(name) === -1); + } + return ignore ? exportValue : this.wrapExportFunction(exportValue); + }); + } +} + +function validateImports(imports) { + if (imports && typeof imports !== 'object') { + throw new TypeError('imports must be an object or undefined'); + } +} +function fetchWasm(urlOrBuffer, imports) { + if (typeof wx !== 'undefined' && typeof __wxConfig !== 'undefined') { + return _WebAssembly.instantiate(urlOrBuffer, imports); + } + return fetch(urlOrBuffer) + .then(response => response.arrayBuffer()) + .then(buffer => _WebAssembly.instantiate(buffer, imports)); +} +/** @public */ +function load(wasmInput, imports) { + validateImports(imports); + imports = imports !== null && imports !== void 0 ? imports : {}; + let source; + if (wasmInput instanceof ArrayBuffer || ArrayBuffer.isView(wasmInput)) { + return _WebAssembly.instantiate(wasmInput, imports); + } + if (wasmInput instanceof _WebAssembly.Module) { + return _WebAssembly.instantiate(wasmInput, imports).then((instance) => { + return { instance, module: wasmInput }; + }); + } + if (typeof wasmInput !== 'string' && !(wasmInput instanceof URL)) { + throw new TypeError('Invalid source'); + } + if (typeof _WebAssembly.instantiateStreaming === 'function') { + let responsePromise; + try { + responsePromise = fetch(wasmInput); + source = _WebAssembly.instantiateStreaming(responsePromise, imports).catch(() => { + return fetchWasm(wasmInput, imports); + }); + } + catch (_) { + source = fetchWasm(wasmInput, imports); + } + } + else { + source = fetchWasm(wasmInput, imports); + } + return source; +} +/** @public */ +function asyncifyLoad(asyncify, urlOrBuffer, imports) { + validateImports(imports); + imports = imports !== null && imports !== void 0 ? imports : {}; + const asyncifyHelper = new Asyncify(); + imports = asyncifyHelper.wrapImports(imports); + return load(urlOrBuffer, imports).then(source => { + var _a; + const memory = source.instance.exports.memory || ((_a = imports.env) === null || _a === void 0 ? void 0 : _a.memory); + return { module: source.module, instance: asyncifyHelper.init(memory, source.instance, asyncify) }; + }); +} +/** @public */ +function loadSync(wasmInput, imports) { + validateImports(imports); + imports = imports !== null && imports !== void 0 ? imports : {}; + let module; + if ((wasmInput instanceof ArrayBuffer) || ArrayBuffer.isView(wasmInput)) { + module = new _WebAssembly.Module(wasmInput); + } + else if (wasmInput instanceof WebAssembly.Module) { + module = wasmInput; + } + else { + throw new TypeError('Invalid source'); + } + const instance = new _WebAssembly.Instance(module, imports); + const source = { instance, module }; + return source; +} +/** @public */ +function asyncifyLoadSync(asyncify, buffer, imports) { + var _a; + validateImports(imports); + imports = imports !== null && imports !== void 0 ? imports : {}; + const asyncifyHelper = new Asyncify(); + imports = asyncifyHelper.wrapImports(imports); + const source = loadSync(buffer, imports); + const memory = source.instance.exports.memory || ((_a = imports.env) === null || _a === void 0 ? void 0 : _a.memory); + return { module: source.module, instance: asyncifyHelper.init(memory, source.instance, asyncify) }; +} + +const CHAR_DOT = 46; /* . */ +const CHAR_FORWARD_SLASH = 47; /* / */ +function isPosixPathSeparator(code) { + return code === CHAR_FORWARD_SLASH; +} +function normalizeString(path, allowAboveRoot, separator, isPathSeparator) { + let res = ''; + let lastSegmentLength = 0; + let lastSlash = -1; + let dots = 0; + let code = 0; + for (let i = 0; i <= path.length; ++i) { + if (i < path.length) { + code = path.charCodeAt(i); + } + else if (isPathSeparator(code)) { + break; + } + else { + code = CHAR_FORWARD_SLASH; + } + if (isPathSeparator(code)) { + if (lastSlash === i - 1 || dots === 1) ; + else if (dots === 2) { + if (res.length < 2 || lastSegmentLength !== 2 || + res.charCodeAt(res.length - 1) !== CHAR_DOT || + res.charCodeAt(res.length - 2) !== CHAR_DOT) { + if (res.length > 2) { + const lastSlashIndex = res.indexOf(separator); + if (lastSlashIndex === -1) { + res = ''; + lastSegmentLength = 0; + } + else { + res = res.slice(0, lastSlashIndex); + lastSegmentLength = + res.length - 1 - res.indexOf(separator); + } + lastSlash = i; + dots = 0; + continue; + } + else if (res.length !== 0) { + res = ''; + lastSegmentLength = 0; + lastSlash = i; + dots = 0; + continue; + } + } + if (allowAboveRoot) { + res += res.length > 0 ? `${separator}..` : '..'; + lastSegmentLength = 2; + } + } + else { + if (res.length > 0) { + res += `${separator}${path.slice(lastSlash + 1, i)}`; + } + else { + res = path.slice(lastSlash + 1, i); + } + lastSegmentLength = i - lastSlash - 1; + } + lastSlash = i; + dots = 0; + } + else if (code === CHAR_DOT && dots !== -1) { + ++dots; + } + else { + dots = -1; + } + } + return res; +} +function resolve(...args) { + let resolvedPath = ''; + let resolvedAbsolute = false; + for (let i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) { + const path = i >= 0 ? args[i] : '/'; + validateString(path, 'path'); + // Skip empty entries + if (path.length === 0) { + continue; + } + resolvedPath = `${path}/${resolvedPath}`; + resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + } + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + // Normalize the path + resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, '/', isPosixPathSeparator); + if (resolvedAbsolute) { + return `/${resolvedPath}`; + } + return resolvedPath.length > 0 ? resolvedPath : '.'; +} + +const FD_DATASYNC = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(0)); +const FD_READ = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(1)); +const FD_SEEK = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(2)); +const FD_FDSTAT_SET_FLAGS = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(3)); +const FD_SYNC = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(4)); +const FD_TELL = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(5)); +const FD_WRITE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(6)); +const FD_ADVISE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(7)); +const FD_ALLOCATE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(8)); +const PATH_CREATE_DIRECTORY = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(9)); +const PATH_CREATE_FILE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(10)); +const PATH_LINK_SOURCE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(11)); +const PATH_LINK_TARGET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(12)); +const PATH_OPEN = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(13)); +const FD_READDIR = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(14)); +const PATH_READLINK = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(15)); +const PATH_RENAME_SOURCE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(16)); +const PATH_RENAME_TARGET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(17)); +const PATH_FILESTAT_GET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(18)); +const PATH_FILESTAT_SET_SIZE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(19)); +const PATH_FILESTAT_SET_TIMES = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(20)); +const FD_FILESTAT_GET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(21)); +const FD_FILESTAT_SET_SIZE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(22)); +const FD_FILESTAT_SET_TIMES = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(23)); +const PATH_SYMLINK = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(24)); +const PATH_REMOVE_DIRECTORY = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(25)); +const PATH_UNLINK_FILE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(26)); +const POLL_FD_READWRITE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(27)); +const SOCK_SHUTDOWN = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(28)); +const SOCK_ACCEPT = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(29)); +const WasiRights = { + FD_DATASYNC, + FD_READ, + FD_SEEK, + FD_FDSTAT_SET_FLAGS, + FD_SYNC, + FD_TELL, + FD_WRITE, + FD_ADVISE, + FD_ALLOCATE, + PATH_CREATE_DIRECTORY, + PATH_CREATE_FILE, + PATH_LINK_SOURCE, + PATH_LINK_TARGET, + PATH_OPEN, + FD_READDIR, + PATH_READLINK, + PATH_RENAME_SOURCE, + PATH_RENAME_TARGET, + PATH_FILESTAT_GET, + PATH_FILESTAT_SET_SIZE, + PATH_FILESTAT_SET_TIMES, + FD_FILESTAT_GET, + FD_FILESTAT_SET_SIZE, + FD_FILESTAT_SET_TIMES, + PATH_SYMLINK, + PATH_REMOVE_DIRECTORY, + PATH_UNLINK_FILE, + POLL_FD_READWRITE, + SOCK_SHUTDOWN, + SOCK_ACCEPT +}; + +function strerror(errno) { + switch (errno) { + case 0 /* WasiErrno.ESUCCESS */: return 'Success'; + case 1 /* WasiErrno.E2BIG */: return 'Argument list too long'; + case 2 /* WasiErrno.EACCES */: return 'Permission denied'; + case 3 /* WasiErrno.EADDRINUSE */: return 'Address in use'; + case 4 /* WasiErrno.EADDRNOTAVAIL */: return 'Address not available'; + case 5 /* WasiErrno.EAFNOSUPPORT */: return 'Address family not supported by protocol'; + case 6 /* WasiErrno.EAGAIN */: return 'Resource temporarily unavailable'; + case 7 /* WasiErrno.EALREADY */: return 'Operation already in progress'; + case 8 /* WasiErrno.EBADF */: return 'Bad file descriptor'; + case 9 /* WasiErrno.EBADMSG */: return 'Bad message'; + case 10 /* WasiErrno.EBUSY */: return 'Resource busy'; + case 11 /* WasiErrno.ECANCELED */: return 'Operation canceled'; + case 12 /* WasiErrno.ECHILD */: return 'No child process'; + case 13 /* WasiErrno.ECONNABORTED */: return 'Connection aborted'; + case 14 /* WasiErrno.ECONNREFUSED */: return 'Connection refused'; + case 15 /* WasiErrno.ECONNRESET */: return 'Connection reset by peer'; + case 16 /* WasiErrno.EDEADLK */: return 'Resource deadlock would occur'; + case 17 /* WasiErrno.EDESTADDRREQ */: return 'Destination address required'; + case 18 /* WasiErrno.EDOM */: return 'Domain error'; + case 19 /* WasiErrno.EDQUOT */: return 'Quota exceeded'; + case 20 /* WasiErrno.EEXIST */: return 'File exists'; + case 21 /* WasiErrno.EFAULT */: return 'Bad address'; + case 22 /* WasiErrno.EFBIG */: return 'File too large'; + case 23 /* WasiErrno.EHOSTUNREACH */: return 'Host is unreachable'; + case 24 /* WasiErrno.EIDRM */: return 'Identifier removed'; + case 25 /* WasiErrno.EILSEQ */: return 'Illegal byte sequence'; + case 26 /* WasiErrno.EINPROGRESS */: return 'Operation in progress'; + case 27 /* WasiErrno.EINTR */: return 'Interrupted system call'; + case 28 /* WasiErrno.EINVAL */: return 'Invalid argument'; + case 29 /* WasiErrno.EIO */: return 'I/O error'; + case 30 /* WasiErrno.EISCONN */: return 'Socket is connected'; + case 31 /* WasiErrno.EISDIR */: return 'Is a directory'; + case 32 /* WasiErrno.ELOOP */: return 'Symbolic link loop'; + case 33 /* WasiErrno.EMFILE */: return 'No file descriptors available'; + case 34 /* WasiErrno.EMLINK */: return 'Too many links'; + case 35 /* WasiErrno.EMSGSIZE */: return 'Message too large'; + case 36 /* WasiErrno.EMULTIHOP */: return 'Multihop attempted'; + case 37 /* WasiErrno.ENAMETOOLONG */: return 'Filename too long'; + case 38 /* WasiErrno.ENETDOWN */: return 'Network is down'; + case 39 /* WasiErrno.ENETRESET */: return 'Connection reset by network'; + case 40 /* WasiErrno.ENETUNREACH */: return 'Network unreachable'; + case 41 /* WasiErrno.ENFILE */: return 'Too many files open in system'; + case 42 /* WasiErrno.ENOBUFS */: return 'No buffer space available'; + case 43 /* WasiErrno.ENODEV */: return 'No such device'; + case 44 /* WasiErrno.ENOENT */: return 'No such file or directory'; + case 45 /* WasiErrno.ENOEXEC */: return 'Exec format error'; + case 46 /* WasiErrno.ENOLCK */: return 'No locks available'; + case 47 /* WasiErrno.ENOLINK */: return 'Link has been severed'; + case 48 /* WasiErrno.ENOMEM */: return 'Out of memory'; + case 49 /* WasiErrno.ENOMSG */: return 'No message of the desired type'; + case 50 /* WasiErrno.ENOPROTOOPT */: return 'Protocol not available'; + case 51 /* WasiErrno.ENOSPC */: return 'No space left on device'; + case 52 /* WasiErrno.ENOSYS */: return 'Function not implemented'; + case 53 /* WasiErrno.ENOTCONN */: return 'Socket not connected'; + case 54 /* WasiErrno.ENOTDIR */: return 'Not a directory'; + case 55 /* WasiErrno.ENOTEMPTY */: return 'Directory not empty'; + case 56 /* WasiErrno.ENOTRECOVERABLE */: return 'State not recoverable'; + case 57 /* WasiErrno.ENOTSOCK */: return 'Not a socket'; + case 58 /* WasiErrno.ENOTSUP */: return 'Not supported'; + case 59 /* WasiErrno.ENOTTY */: return 'Not a tty'; + case 60 /* WasiErrno.ENXIO */: return 'No such device or address'; + case 61 /* WasiErrno.EOVERFLOW */: return 'Value too large for data type'; + case 62 /* WasiErrno.EOWNERDEAD */: return 'Previous owner died'; + case 63 /* WasiErrno.EPERM */: return 'Operation not permitted'; + case 64 /* WasiErrno.EPIPE */: return 'Broken pipe'; + case 65 /* WasiErrno.EPROTO */: return 'Protocol error'; + case 66 /* WasiErrno.EPROTONOSUPPORT */: return 'Protocol not supported'; + case 67 /* WasiErrno.EPROTOTYPE */: return 'Protocol wrong type for socket'; + case 68 /* WasiErrno.ERANGE */: return 'Result not representable'; + case 69 /* WasiErrno.EROFS */: return 'Read-only file system'; + case 70 /* WasiErrno.ESPIPE */: return 'Invalid seek'; + case 71 /* WasiErrno.ESRCH */: return 'No such process'; + case 72 /* WasiErrno.ESTALE */: return 'Stale file handle'; + case 73 /* WasiErrno.ETIMEDOUT */: return 'Operation timed out'; + case 74 /* WasiErrno.ETXTBSY */: return 'Text file busy'; + case 75 /* WasiErrno.EXDEV */: return 'Cross-device link'; + case 76 /* WasiErrno.ENOTCAPABLE */: return 'Capabilities insufficient'; + default: return 'Unknown error'; + } +} +class WasiError extends Error { + constructor(message, errno) { + super(message); + this.errno = errno; + } + getErrorMessage() { + return strerror(this.errno); + } +} +Object.defineProperty(WasiError.prototype, 'name', { + configurable: true, + writable: true, + value: 'WasiError' +}); + +const RIGHTS_ALL = WasiRights.FD_DATASYNC | + WasiRights.FD_READ | + WasiRights.FD_SEEK | + WasiRights.FD_FDSTAT_SET_FLAGS | + WasiRights.FD_SYNC | + WasiRights.FD_TELL | + WasiRights.FD_WRITE | + WasiRights.FD_ADVISE | + WasiRights.FD_ALLOCATE | + WasiRights.PATH_CREATE_DIRECTORY | + WasiRights.PATH_CREATE_FILE | + WasiRights.PATH_LINK_SOURCE | + WasiRights.PATH_LINK_TARGET | + WasiRights.PATH_OPEN | + WasiRights.FD_READDIR | + WasiRights.PATH_READLINK | + WasiRights.PATH_RENAME_SOURCE | + WasiRights.PATH_RENAME_TARGET | + WasiRights.PATH_FILESTAT_GET | + WasiRights.PATH_FILESTAT_SET_SIZE | + WasiRights.PATH_FILESTAT_SET_TIMES | + WasiRights.FD_FILESTAT_GET | + WasiRights.FD_FILESTAT_SET_TIMES | + WasiRights.FD_FILESTAT_SET_SIZE | + WasiRights.PATH_SYMLINK | + WasiRights.PATH_UNLINK_FILE | + WasiRights.PATH_REMOVE_DIRECTORY | + WasiRights.POLL_FD_READWRITE | + WasiRights.SOCK_SHUTDOWN | + WasiRights.SOCK_ACCEPT; +const BLOCK_DEVICE_BASE = RIGHTS_ALL; +const BLOCK_DEVICE_INHERITING = RIGHTS_ALL; +const CHARACTER_DEVICE_BASE = RIGHTS_ALL; +const CHARACTER_DEVICE_INHERITING = RIGHTS_ALL; +const REGULAR_FILE_BASE = WasiRights.FD_DATASYNC | + WasiRights.FD_READ | + WasiRights.FD_SEEK | + WasiRights.FD_FDSTAT_SET_FLAGS | + WasiRights.FD_SYNC | + WasiRights.FD_TELL | + WasiRights.FD_WRITE | + WasiRights.FD_ADVISE | + WasiRights.FD_ALLOCATE | + WasiRights.FD_FILESTAT_GET | + WasiRights.FD_FILESTAT_SET_SIZE | + WasiRights.FD_FILESTAT_SET_TIMES | + WasiRights.POLL_FD_READWRITE; +const REGULAR_FILE_INHERITING = /*#__PURE__*/ BigInt(0); +const DIRECTORY_BASE = WasiRights.FD_FDSTAT_SET_FLAGS | + WasiRights.FD_SYNC | + WasiRights.FD_ADVISE | + WasiRights.PATH_CREATE_DIRECTORY | + WasiRights.PATH_CREATE_FILE | + WasiRights.PATH_LINK_SOURCE | + WasiRights.PATH_LINK_TARGET | + WasiRights.PATH_OPEN | + WasiRights.FD_READDIR | + WasiRights.PATH_READLINK | + WasiRights.PATH_RENAME_SOURCE | + WasiRights.PATH_RENAME_TARGET | + WasiRights.PATH_FILESTAT_GET | + WasiRights.PATH_FILESTAT_SET_SIZE | + WasiRights.PATH_FILESTAT_SET_TIMES | + WasiRights.FD_FILESTAT_GET | + WasiRights.FD_FILESTAT_SET_TIMES | + WasiRights.PATH_SYMLINK | + WasiRights.PATH_UNLINK_FILE | + WasiRights.PATH_REMOVE_DIRECTORY | + WasiRights.POLL_FD_READWRITE; +const DIRECTORY_INHERITING = DIRECTORY_BASE | REGULAR_FILE_BASE; +const SOCKET_BASE = (WasiRights.FD_READ | + WasiRights.FD_FDSTAT_SET_FLAGS | + WasiRights.FD_WRITE | + WasiRights.FD_FILESTAT_GET | + WasiRights.POLL_FD_READWRITE | + WasiRights.SOCK_SHUTDOWN); +const SOCKET_INHERITING = RIGHTS_ALL; +const TTY_BASE = WasiRights.FD_READ | + WasiRights.FD_FDSTAT_SET_FLAGS | + WasiRights.FD_WRITE | + WasiRights.FD_FILESTAT_GET | + WasiRights.POLL_FD_READWRITE; +const TTY_INHERITING = /*#__PURE__*/ BigInt(0); +function getRights(stdio, fd, flags, type) { + const ret = { + base: BigInt(0), + inheriting: BigInt(0) + }; + if (type === 0 /* WasiFileType.UNKNOWN */) { + throw new WasiError('Unknown file type', 28 /* WasiErrno.EINVAL */); + } + switch (type) { + case 4 /* WasiFileType.REGULAR_FILE */: + ret.base = REGULAR_FILE_BASE; + ret.inheriting = REGULAR_FILE_INHERITING; + break; + case 3 /* WasiFileType.DIRECTORY */: + ret.base = DIRECTORY_BASE; + ret.inheriting = DIRECTORY_INHERITING; + break; + case 6 /* WasiFileType.SOCKET_STREAM */: + case 5 /* WasiFileType.SOCKET_DGRAM */: + ret.base = SOCKET_BASE; + ret.inheriting = SOCKET_INHERITING; + break; + case 2 /* WasiFileType.CHARACTER_DEVICE */: + if (stdio.indexOf(fd) !== -1) { + ret.base = TTY_BASE; + ret.inheriting = TTY_INHERITING; + } + else { + ret.base = CHARACTER_DEVICE_BASE; + ret.inheriting = CHARACTER_DEVICE_INHERITING; + } + break; + case 1 /* WasiFileType.BLOCK_DEVICE */: + ret.base = BLOCK_DEVICE_BASE; + ret.inheriting = BLOCK_DEVICE_INHERITING; + break; + default: + ret.base = BigInt(0); + ret.inheriting = BigInt(0); + } + /* Disable read/write bits depending on access mode. */ + const read_or_write_only = flags & (0 | 1 | 2); + if (read_or_write_only === 0) { + ret.base &= ~WasiRights.FD_WRITE; + } + else if (read_or_write_only === 1) { + ret.base &= ~WasiRights.FD_READ; + } + return ret; +} + +function concatBuffer(buffers, size) { + let total = 0; + if (typeof size === 'number' && size >= 0) { + total = size; + } + else { + for (let i = 0; i < buffers.length; i++) { + const buffer = buffers[i]; + total += buffer.length; + } + } + let pos = 0; + const ret = new Uint8Array(total); + for (let i = 0; i < buffers.length; i++) { + const buffer = buffers[i]; + ret.set(buffer, pos); + pos += buffer.length; + } + return ret; +} +class FileDescriptor { + constructor(id, fd, path, realPath, type, rightsBase, rightsInheriting, preopen) { + this.id = id; + this.fd = fd; + this.path = path; + this.realPath = realPath; + this.type = type; + this.rightsBase = rightsBase; + this.rightsInheriting = rightsInheriting; + this.preopen = preopen; + this.pos = BigInt(0); + this.size = BigInt(0); + } + seek(offset, whence) { + if (whence === 0 /* WasiWhence.SET */) { + this.pos = BigInt(offset); + } + else if (whence === 1 /* WasiWhence.CUR */) { + this.pos += BigInt(offset); + } + else if (whence === 2 /* WasiWhence.END */) { + this.pos = BigInt(this.size) - BigInt(offset); + } + else { + throw new WasiError('Unknown whence', 29 /* WasiErrno.EIO */); + } + return this.pos; + } +} +class StandardOutput extends FileDescriptor { + constructor(log, id, fd, path, realPath, type, rightsBase, rightsInheriting, preopen) { + super(id, fd, path, realPath, type, rightsBase, rightsInheriting, preopen); + this._log = log; + this._buf = null; + } + write(buffer) { + const originalBuffer = buffer; + if (this._buf) { + buffer = concatBuffer([this._buf, buffer]); + this._buf = null; + } + if (buffer.indexOf(10) === -1) { + this._buf = buffer; + return originalBuffer.byteLength; + } + let written = 0; + let lastBegin = 0; + let index; + while ((index = buffer.indexOf(10, written)) !== -1) { + const str = new TextDecoder().decode(buffer.subarray(lastBegin, index)); + this._log(str); + written += index - lastBegin + 1; + lastBegin = index + 1; + } + if (written < buffer.length) { + this._buf = buffer.slice(written); + } + return originalBuffer.byteLength; + } +} +function toFileType(stat) { + if (stat.isBlockDevice()) + return 1 /* WasiFileType.BLOCK_DEVICE */; + if (stat.isCharacterDevice()) + return 2 /* WasiFileType.CHARACTER_DEVICE */; + if (stat.isDirectory()) + return 3 /* WasiFileType.DIRECTORY */; + if (stat.isSocket()) + return 6 /* WasiFileType.SOCKET_STREAM */; + if (stat.isFile()) + return 4 /* WasiFileType.REGULAR_FILE */; + if (stat.isSymbolicLink()) + return 7 /* WasiFileType.SYMBOLIC_LINK */; + return 0 /* WasiFileType.UNKNOWN */; +} +function toFileStat(view, buf, stat) { + view.setBigUint64(buf, stat.dev, true); + view.setBigUint64(buf + 8, stat.ino, true); + view.setBigUint64(buf + 16, BigInt(toFileType(stat)), true); + view.setBigUint64(buf + 24, stat.nlink, true); + view.setBigUint64(buf + 32, stat.size, true); + view.setBigUint64(buf + 40, stat.atimeMs * BigInt(1000000), true); + view.setBigUint64(buf + 48, stat.mtimeMs * BigInt(1000000), true); + view.setBigUint64(buf + 56, stat.ctimeMs * BigInt(1000000), true); +} +class FileDescriptorTable { + constructor(options) { + this.used = 0; + this.size = options.size; + this.fds = Array(options.size); + this.stdio = [options.in, options.out, options.err]; + this.print = options.print; + this.printErr = options.printErr; + this.insertStdio(options.in, 0, ''); + this.insertStdio(options.out, 1, ''); + this.insertStdio(options.err, 2, ''); + } + insertStdio(fd, expected, name) { + const type = 2 /* WasiFileType.CHARACTER_DEVICE */; + const { base, inheriting } = getRights(this.stdio, fd, 2 /* FileControlFlag.O_RDWR */, type); + const wrap = this.insert(fd, name, name, type, base, inheriting, 0); + if (wrap.id !== expected) { + throw new WasiError(`id: ${wrap.id} !== expected: ${expected}`, 8 /* WasiErrno.EBADF */); + } + return wrap; + } + insert(fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen) { + var _a, _b; + let index = -1; + if (this.used >= this.size) { + const newSize = this.size * 2; + this.fds.length = newSize; + index = this.size; + this.size = newSize; + } + else { + for (let i = 0; i < this.size; ++i) { + if (this.fds[i] == null) { + index = i; + break; + } + } + } + let entry; + if (mappedPath === '') { + entry = new StandardOutput((_a = this.print) !== null && _a !== void 0 ? _a : console.log, index, fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen); + } + else if (mappedPath === '') { + entry = new StandardOutput((_b = this.printErr) !== null && _b !== void 0 ? _b : console.error, index, fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen); + } + else { + entry = new FileDescriptor(index, fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen); + } + this.fds[index] = entry; + this.used++; + return entry; + } + get(id, base, inheriting) { + if (id >= this.size) { + throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); + } + const entry = this.fds[id]; + if (!entry || entry.id !== id) { + throw new WasiError('Bad file descriptor', 8 /* WasiErrno.EBADF */); + } + /* Validate that the fd has the necessary rights. */ + if ((~entry.rightsBase & base) !== BigInt(0) || (~entry.rightsInheriting & inheriting) !== BigInt(0)) { + throw new WasiError('Capabilities insufficient', 76 /* WasiErrno.ENOTCAPABLE */); + } + return entry; + } + remove(id) { + if (id >= this.size) { + throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); + } + const entry = this.fds[id]; + if (!entry || entry.id !== id) { + throw new WasiError('Bad file descriptor', 8 /* WasiErrno.EBADF */); + } + this.fds[id] = undefined; + this.used--; + } +} +class SyncTable extends FileDescriptorTable { + constructor(options) { + super(options); + this.fs = options.fs; + } + getFileTypeByFd(fd) { + const stats = this.fs.fstatSync(fd, { bigint: true }); + return toFileType(stats); + } + insertPreopen(fd, mappedPath, realPath) { + const type = this.getFileTypeByFd(fd); + if (type !== 3 /* WasiFileType.DIRECTORY */) { + throw new WasiError(`Preopen not dir: ["${mappedPath}", "${realPath}"]`, 54 /* WasiErrno.ENOTDIR */); + } + const result = getRights(this.stdio, fd, 0, type); + return this.insert(fd, mappedPath, realPath, type, result.base, result.inheriting, 1); + } + renumber(dst, src) { + if (dst === src) + return; + if (dst >= this.size || src >= this.size) { + throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); + } + const dstEntry = this.fds[dst]; + const srcEntry = this.fds[src]; + if (!dstEntry || !srcEntry || dstEntry.id !== dst || srcEntry.id !== src) { + throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); + } + this.fs.closeSync(dstEntry.fd); + this.fds[dst] = this.fds[src]; + this.fds[dst].id = dst; + this.fds[src] = undefined; + this.used--; + } +} +class AsyncTable extends FileDescriptorTable { + // eslint-disable-next-line @typescript-eslint/no-useless-constructor + constructor(options) { + super(options); + } + async getFileTypeByFd(fd) { + const stats = await fd.stat({ bigint: true }); + return toFileType(stats); + } + async insertPreopen(fd, mappedPath, realPath) { + const type = await this.getFileTypeByFd(fd); + if (type !== 3 /* WasiFileType.DIRECTORY */) { + throw new WasiError(`Preopen not dir: ["${mappedPath}", "${realPath}"]`, 54 /* WasiErrno.ENOTDIR */); + } + const result = getRights(this.stdio, fd.fd, 0, type); + return this.insert(fd, mappedPath, realPath, type, result.base, result.inheriting, 1); + } + async renumber(dst, src) { + if (dst === src) + return; + if (dst >= this.size || src >= this.size) { + throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); + } + const dstEntry = this.fds[dst]; + const srcEntry = this.fds[src]; + if (!dstEntry || !srcEntry || dstEntry.id !== dst || srcEntry.id !== src) { + throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); + } + await dstEntry.fd.close(); + this.fds[dst] = this.fds[src]; + this.fds[dst].id = dst; + this.fds[src] = undefined; + this.used--; + } +} + +/** @public */ +const WebAssemblyMemory = /*#__PURE__*/ (function () { return _WebAssembly.Memory; })(); +/** @public */ +class Memory extends WebAssemblyMemory { + // eslint-disable-next-line @typescript-eslint/no-useless-constructor + constructor(descriptor) { + super(descriptor); + } + get HEAP8() { return new Int8Array(super.buffer); } + get HEAPU8() { return new Uint8Array(super.buffer); } + get HEAP16() { return new Int16Array(super.buffer); } + get HEAPU16() { return new Uint16Array(super.buffer); } + get HEAP32() { return new Int32Array(super.buffer); } + get HEAPU32() { return new Uint32Array(super.buffer); } + get HEAP64() { return new BigInt64Array(super.buffer); } + get HEAPU64() { return new BigUint64Array(super.buffer); } + get HEAPF32() { return new Float32Array(super.buffer); } + get HEAPF64() { return new Float64Array(super.buffer); } + get view() { return new DataView(super.buffer); } +} +/** @public */ +function extendMemory(memory) { + if (Object.getPrototypeOf(memory) === _WebAssembly.Memory.prototype) { + Object.setPrototypeOf(memory, Memory.prototype); + } + return memory; +} + +function checkWebAssemblyFunction() { + const WebAssemblyFunction = _WebAssembly.Function; + if (typeof WebAssemblyFunction !== 'function') { + throw new Error('WebAssembly.Function is not supported in this environment.' + + ' If you are using V8 based browser like Chrome, try to specify' + + ' --js-flags="--wasm-staging --experimental-wasm-stack-switching"'); + } + return WebAssemblyFunction; +} +/** @public */ +function wrapAsyncImport(f, parameterType, returnType) { + const WebAssemblyFunction = checkWebAssemblyFunction(); + if (typeof f !== 'function') { + throw new TypeError('Function required'); + } + const parameters = parameterType.slice(0); + parameters.unshift('externref'); + return new WebAssemblyFunction({ parameters, results: returnType }, f, { suspending: 'first' }); +} +/** @public */ +function wrapAsyncExport(f) { + const WebAssemblyFunction = checkWebAssemblyFunction(); + if (typeof f !== 'function') { + throw new TypeError('Function required'); + } + return new WebAssemblyFunction({ parameters: [...WebAssemblyFunction.type(f).parameters.slice(1)], results: ['externref'] }, f, { promising: 'first' }); +} +/** @public */ +function wrapExports(exports, needWrap) { + return wrapInstanceExports(exports, (exportValue, name) => { + let ignore = typeof exportValue !== 'function'; + if (Array.isArray(needWrap)) { + ignore = ignore || (needWrap.indexOf(name) === -1); + } + return ignore ? exportValue : wrapAsyncExport(exportValue); + }); +} + +function copyMemory(targets, src) { + if (targets.length === 0 || src.length === 0) + return 0; + let copied = 0; + let left = src.length - copied; + for (let i = 0; i < targets.length; ++i) { + const target = targets[i]; + if (left < target.length) { + target.set(src.subarray(copied, copied + left), 0); + copied += left; + left = 0; + return copied; + } + target.set(src.subarray(copied, copied + target.length), 0); + copied += target.length; + left -= target.length; + } + return copied; +} +const _memory = new WeakMap(); +const _wasi = new WeakMap(); +const _fs = new WeakMap(); +function getMemory(wasi) { + return _memory.get(wasi); +} +function getFs(wasi) { + const fs = _fs.get(wasi); + if (!fs) + throw new Error('filesystem is unavailable'); + return fs; +} +function handleError(err) { + if (err instanceof WasiError) { + if (((process.env.NODE_ENV)) !== 'production') { + console.warn(err); + } + return err.errno; + } + switch (err.code) { + case 'ENOENT': return 44 /* WasiErrno.ENOENT */; + case 'EBADF': return 8 /* WasiErrno.EBADF */; + case 'EINVAL': return 28 /* WasiErrno.EINVAL */; + case 'EPERM': return 63 /* WasiErrno.EPERM */; + case 'EPROTO': return 65 /* WasiErrno.EPROTO */; + case 'EEXIST': return 20 /* WasiErrno.EEXIST */; + case 'ENOTDIR': return 54 /* WasiErrno.ENOTDIR */; + case 'EMFILE': return 33 /* WasiErrno.EMFILE */; + case 'EACCES': return 2 /* WasiErrno.EACCES */; + case 'EISDIR': return 31 /* WasiErrno.EISDIR */; + case 'ENOTEMPTY': return 55 /* WasiErrno.ENOTEMPTY */; + case 'ENOSYS': return 52 /* WasiErrno.ENOSYS */; + } + throw err; +} +function defineName(name, f) { + Object.defineProperty(f, 'name', { value: name }); + return f; +} +function tryCall(f, wasi, args) { + let r; + try { + r = f.apply(wasi, args); + } + catch (err) { + return handleError(err); + } + if (isPromiseLike(r)) { + return r.then(_ => _, handleError); + } + return r; +} +function syscallWrap(self, name, f) { + let debug = false; + const NODE_DEBUG_NATIVE = (() => { + try { + return process.env.NODE_DEBUG_NATIVE; + } + catch (_) { + return undefined; + } + })(); + if (typeof NODE_DEBUG_NATIVE === 'string' && NODE_DEBUG_NATIVE.split(',').includes('wasi')) { + debug = true; + } + return debug + ? defineName(name, function () { + const args = Array.prototype.slice.call(arguments); + let debugArgs = [`${name}(${Array.from({ length: arguments.length }).map(() => '%d').join(', ')})`]; + debugArgs = debugArgs.concat(args); + console.debug.apply(console, debugArgs); + return tryCall(f, self, args); + }) + : defineName(name, function () { + return tryCall(f, self, arguments); + }); +} +function resolvePathSync(fs, fileDescriptor, path, flags) { + let resolvedPath = resolve(fileDescriptor.realPath, path); + if ((flags & 1) === 1) { + try { + resolvedPath = fs.readlinkSync(resolvedPath); + } + catch (err) { + if (err.code !== 'EINVAL' && err.code !== 'ENOENT') { + throw err; + } + } + } + return resolvedPath; +} +async function resolvePathAsync(fs, fileDescriptor, path, flags) { + let resolvedPath = resolve(fileDescriptor.realPath, path); + if ((flags & 1) === 1) { + try { + resolvedPath = await fs.promises.readlink(resolvedPath); + } + catch (err) { + if (err.code !== 'EINVAL' && err.code !== 'ENOENT') { + throw err; + } + } + } + return resolvedPath; +} +// eslint-disable-next-line spaced-comment +const encoder = /*#__PURE__*/ new TextEncoder(); +// eslint-disable-next-line spaced-comment +const decoder = /*#__PURE__*/ new TextDecoder(); +const INT64_MAX = (BigInt(1) << BigInt(63)) - BigInt(1); +function readStdin() { + const value = window.prompt(); + if (value === null) + return new Uint8Array(); + const buffer = new TextEncoder().encode(value + '\n'); + return buffer; +} +function validateFstFlagsOrReturn(flags) { + return (Boolean((flags) & ~(1 /* WasiFstFlag.SET_ATIM */ | 2 /* WasiFstFlag.SET_ATIM_NOW */ | + 4 /* WasiFstFlag.SET_MTIM */ | 8 /* WasiFstFlag.SET_MTIM_NOW */)) || + ((flags) & (1 /* WasiFstFlag.SET_ATIM */ | 2 /* WasiFstFlag.SET_ATIM_NOW */)) === + (1 /* WasiFstFlag.SET_ATIM */ | 2 /* WasiFstFlag.SET_ATIM_NOW */) || + ((flags) & (4 /* WasiFstFlag.SET_MTIM */ | 8 /* WasiFstFlag.SET_MTIM_NOW */)) === + (4 /* WasiFstFlag.SET_MTIM */ | 8 /* WasiFstFlag.SET_MTIM_NOW */)); +} +class WASI$1 { + constructor(args, env, fds, asyncFs, fs, asyncify) { + this.args_get = syscallWrap(this, 'args_get', function (argv, argv_buf) { + argv = Number(argv); + argv_buf = Number(argv_buf); + if (argv === 0 || argv_buf === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const args = wasi.args; + for (let i = 0; i < args.length; ++i) { + const arg = args[i]; + view.setInt32(argv, argv_buf, true); + argv += 4; + const data = encoder.encode(arg + '\0'); + HEAPU8.set(data, argv_buf); + argv_buf += data.length; + } + return 0 /* WasiErrno.ESUCCESS */; + }); + this.args_sizes_get = syscallWrap(this, 'args_sizes_get', function (argc, argv_buf_size) { + argc = Number(argc); + argv_buf_size = Number(argv_buf_size); + if (argc === 0 || argv_buf_size === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { view } = getMemory(this); + const wasi = _wasi.get(this); + const args = wasi.args; + view.setUint32(argc, args.length, true); + view.setUint32(argv_buf_size, encoder.encode(args.join('\0') + '\0').length, true); + return 0 /* WasiErrno.ESUCCESS */; + }); + this.environ_get = syscallWrap(this, 'environ_get', function (environ, environ_buf) { + environ = Number(environ); + environ_buf = Number(environ_buf); + if (environ === 0 || environ_buf === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const env = wasi.env; + for (let i = 0; i < env.length; ++i) { + const pair = env[i]; + view.setInt32(environ, environ_buf, true); + environ += 4; + const data = encoder.encode(pair + '\0'); + HEAPU8.set(data, environ_buf); + environ_buf += data.length; + } + return 0 /* WasiErrno.ESUCCESS */; + }); + this.environ_sizes_get = syscallWrap(this, 'environ_sizes_get', function (len, buflen) { + len = Number(len); + buflen = Number(buflen); + if (len === 0 || buflen === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { view } = getMemory(this); + const wasi = _wasi.get(this); + view.setUint32(len, wasi.env.length, true); + view.setUint32(buflen, encoder.encode(wasi.env.join('\0') + '\0').length, true); + return 0 /* WasiErrno.ESUCCESS */; + }); + this.clock_res_get = syscallWrap(this, 'clock_res_get', function (id, resolution) { + resolution = Number(resolution); + if (resolution === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { view } = getMemory(this); + switch (id) { + case 0 /* WasiClockid.REALTIME */: + view.setBigUint64(resolution, BigInt(1000000), true); + return 0 /* WasiErrno.ESUCCESS */; + case 1 /* WasiClockid.MONOTONIC */: + case 2 /* WasiClockid.PROCESS_CPUTIME_ID */: + case 3 /* WasiClockid.THREAD_CPUTIME_ID */: + view.setBigUint64(resolution, BigInt(1000), true); + return 0 /* WasiErrno.ESUCCESS */; + default: return 28 /* WasiErrno.EINVAL */; + } + }); + this.clock_time_get = syscallWrap(this, 'clock_time_get', function (id, _percision, time) { + time = Number(time); + if (time === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { view } = getMemory(this); + switch (id) { + case 0 /* WasiClockid.REALTIME */: + view.setBigUint64(time, BigInt(Date.now()) * BigInt(1000000), true); + return 0 /* WasiErrno.ESUCCESS */; + case 1 /* WasiClockid.MONOTONIC */: + case 2 /* WasiClockid.PROCESS_CPUTIME_ID */: + case 3 /* WasiClockid.THREAD_CPUTIME_ID */: { + const t = performance.now() / 1000; + const s = Math.trunc(t); + const ms = Math.floor((t - s) * 1000); + const result = BigInt(s) * BigInt(1000000000) + BigInt(ms) * BigInt(1000000); + view.setBigUint64(time, result, true); + return 0 /* WasiErrno.ESUCCESS */; + } + default: return 28 /* WasiErrno.EINVAL */; + } + }); + this.fd_advise = syscallWrap(this, 'fd_advise', function (_fd, _offset, _len, _advice) { + return 52 /* WasiErrno.ENOSYS */; + }); + this.fd_fdstat_get = syscallWrap(this, 'fd_fdstat_get', function (fd, fdstat) { + fdstat = Number(fdstat); + if (fdstat === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); + const { view } = getMemory(this); + view.setUint16(fdstat, fileDescriptor.type, true); + view.setUint16(fdstat + 2, 0, true); + view.setBigUint64(fdstat + 8, fileDescriptor.rightsBase, true); + view.setBigUint64(fdstat + 16, fileDescriptor.rightsInheriting, true); + return 0 /* WasiErrno.ESUCCESS */; + }); + this.fd_fdstat_set_flags = syscallWrap(this, 'fd_fdstat_set_flags', function (_fd, _flags) { + return 52 /* WasiErrno.ENOSYS */; + }); + this.fd_fdstat_set_rights = syscallWrap(this, 'fd_fdstat_set_rights', function (fd, rightsBase, rightsInheriting) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); + if ((rightsBase | fileDescriptor.rightsBase) > fileDescriptor.rightsBase) { + return 76 /* WasiErrno.ENOTCAPABLE */; + } + if ((rightsInheriting | fileDescriptor.rightsInheriting) > + fileDescriptor.rightsInheriting) { + return 76 /* WasiErrno.ENOTCAPABLE */; + } + fileDescriptor.rightsBase = rightsBase; + fileDescriptor.rightsInheriting = rightsInheriting; + return 0 /* WasiErrno.ESUCCESS */; + }); + this.fd_prestat_get = syscallWrap(this, 'fd_prestat_get', function (fd, prestat) { + prestat = Number(prestat); + if (prestat === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const wasi = _wasi.get(this); + let fileDescriptor; + try { + fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); + } + catch (err) { + if (err instanceof WasiError) + return err.errno; + throw err; + } + if (fileDescriptor.preopen !== 1) + return 28 /* WasiErrno.EINVAL */; + const { view } = getMemory(this); + // preopen type is dir(0) + view.setUint32(prestat, 0, true); + view.setUint32(prestat + 4, encoder.encode(fileDescriptor.path).length, true); + return 0 /* WasiErrno.ESUCCESS */; + }); + this.fd_prestat_dir_name = syscallWrap(this, 'fd_prestat_dir_name', function (fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); + if (fileDescriptor.preopen !== 1) + return 8 /* WasiErrno.EBADF */; + const buffer = encoder.encode(fileDescriptor.path); + const size = buffer.length; + if (size > path_len) + return 42 /* WasiErrno.ENOBUFS */; + const { HEAPU8 } = getMemory(this); + HEAPU8.set(buffer, path); + return 0 /* WasiErrno.ESUCCESS */; + }); + this.fd_seek = syscallWrap(this, 'fd_seek', function (fd, offset, whence, newOffset) { + newOffset = Number(newOffset); + if (newOffset === 0) { + return 28 /* WasiErrno.EINVAL */; + } + if (fd === 0 || fd === 1 || fd === 2) + return 0 /* WasiErrno.ESUCCESS */; + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_SEEK, BigInt(0)); + const r = fileDescriptor.seek(offset, whence); + const { view } = getMemory(this); + view.setBigUint64(newOffset, r, true); + return 0 /* WasiErrno.ESUCCESS */; + }); + this.fd_tell = syscallWrap(this, 'fd_tell', function (fd, offset) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_TELL, BigInt(0)); + const pos = BigInt(fileDescriptor.pos); + const { view } = getMemory(this); + view.setBigUint64(Number(offset), pos, true); + return 0 /* WasiErrno.ESUCCESS */; + }); + this.poll_oneoff = syscallWrap(this, 'poll_oneoff', function (in_ptr, out_ptr, nsubscriptions, nevents) { + in_ptr = Number(in_ptr); + out_ptr = Number(out_ptr); + nevents = Number(nevents); + nsubscriptions = Number(nsubscriptions); + nsubscriptions = nsubscriptions >>> 0; + if (in_ptr === 0 || out_ptr === 0 || nsubscriptions === 0 || nevents === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { view } = getMemory(this); + view.setUint32(nevents, 0, true); + let i = 0; + let timer_userdata = BigInt(0); + let cur_timeout = BigInt(0); + let has_timeout = 0; + let min_timeout = BigInt(0); + let sub; + const subscriptions = Array(nsubscriptions); + for (i = 0; i < nsubscriptions; i++) { + sub = in_ptr + i * 48; + const userdata = view.getBigUint64(sub, true); + const type = view.getUint8(sub + 8); + const clockIdOrFd = view.getUint32(sub + 16, true); + const timeout = view.getBigUint64(sub + 24, true); + const precision = view.getBigUint64(sub + 32, true); + const flags = view.getUint16(sub + 40, true); + subscriptions[i] = { + userdata, + type, + u: { + clock: { + clock_id: clockIdOrFd, + timeout, + precision, + flags + }, + fd_readwrite: { + fd: clockIdOrFd + } + } + }; + } + const fdevents = []; + for (i = 0; i < nsubscriptions; i++) { + sub = subscriptions[i]; + switch (sub.type) { + case 0 /* WasiEventType.CLOCK */: { + if (sub.u.clock.flags === 1 /* WasiSubclockflags.ABSTIME */) { + /* Convert absolute time to relative delay. */ + const now = BigInt(Date.now()) * BigInt(1000000); + cur_timeout = sub.u.clock.timeout - now; + } + else { + cur_timeout = sub.u.clock.timeout; + } + if (has_timeout === 0 || cur_timeout < min_timeout) { + min_timeout = cur_timeout; + timer_userdata = sub.userdata; + has_timeout = 1; + } + break; + } + case 1 /* WasiEventType.FD_READ */: + case 2 /* WasiEventType.FD_WRITE */: + fdevents.push(sub); + break; + default: return 28 /* WasiErrno.EINVAL */; + } + } + if (fdevents.length > 0) { + for (i = 0; i < fdevents.length; i++) { + const fdevent = fdevents[i]; + const event = out_ptr + 32 * i; + view.setBigUint64(event, fdevent.userdata, true); + view.setUint32(event + 8, 52 /* WasiErrno.ENOSYS */, true); + view.setUint32(event + 12, fdevent.type, true); + view.setBigUint64(event + 16, BigInt(0), true); + view.setUint16(event + 24, 0, true); + view.setUint32(nevents, 1, true); + } + view.setUint32(nevents, fdevents.length, true); + return 0 /* WasiErrno.ESUCCESS */; + } + if (has_timeout) { + const delay = Number(min_timeout / BigInt(1000000)); + // if (isMainThread || typeof SharedArrayBuffer !== 'function') { + sleepBreakIf(delay, () => false); + // } else { + // const buf = new SharedArrayBuffer(4) + // const arr = new Int32Array(buf) + // postMsg({ + // __tybys_wasm_util_wasi__: { + // type: 'set-timeout', + // payload: { + // buffer: buf, + // delay + // } + // } + // }) + // Atomics.wait(arr, 0, 0) + // } + const event = out_ptr; + view.setBigUint64(event, timer_userdata, true); + view.setUint32(event + 8, 0 /* WasiErrno.ESUCCESS */, true); + view.setUint32(event + 12, 0 /* WasiEventType.CLOCK */, true); + view.setUint32(nevents, 1, true); + } + return 0 /* WasiErrno.ESUCCESS */; + }); + this.proc_exit = syscallWrap(this, 'proc_exit', function (rval) { + if ((typeof process === 'object') && (process !== null) && (typeof process.exit === 'function')) { + process.exit(rval); + } + return 0 /* WasiErrno.ESUCCESS */; + }); + this.proc_raise = syscallWrap(this, 'proc_raise', function (_sig) { + return 52 /* WasiErrno.ENOSYS */; + }); + this.sched_yield = syscallWrap(this, 'sched_yield', function () { + return 0 /* WasiErrno.ESUCCESS */; + }); + this.random_get = typeof crypto !== 'undefined' && typeof crypto.getRandomValues === 'function' + ? syscallWrap(this, 'random_get', function (buf, buf_len) { + buf = Number(buf); + if (buf === 0) { + return 28 /* WasiErrno.EINVAL */; + } + buf_len = Number(buf_len); + const { HEAPU8, view } = getMemory(this); + if ((typeof SharedArrayBuffer === 'function' && HEAPU8.buffer instanceof SharedArrayBuffer) || + (Object.prototype.toString.call(HEAPU8.buffer) === '[object SharedArrayBuffer]')) { + for (let i = buf; i < buf + buf_len; ++i) { + view.setUint8(i, Math.floor(Math.random() * 256)); + } + return 0 /* WasiErrno.ESUCCESS */; + } + let pos; + const stride = 65536; + for (pos = 0; pos + stride < buf_len; pos += stride) { + crypto.getRandomValues(HEAPU8.subarray(buf + pos, buf + pos + stride)); + } + crypto.getRandomValues(HEAPU8.subarray(buf + pos, buf + buf_len)); + return 0 /* WasiErrno.ESUCCESS */; + }) + : syscallWrap(this, 'random_get', function (buf, buf_len) { + buf = Number(buf); + if (buf === 0) { + return 28 /* WasiErrno.EINVAL */; + } + buf_len = Number(buf_len); + const { view } = getMemory(this); + for (let i = buf; i < buf + buf_len; ++i) { + view.setUint8(i, Math.floor(Math.random() * 256)); + } + return 0 /* WasiErrno.ESUCCESS */; + }); + this.sock_recv = syscallWrap(this, 'sock_recv', function () { + return 58 /* WasiErrno.ENOTSUP */; + }); + this.sock_send = syscallWrap(this, 'sock_send', function () { + return 58 /* WasiErrno.ENOTSUP */; + }); + this.sock_shutdown = syscallWrap(this, 'sock_shutdown', function () { + return 58 /* WasiErrno.ENOTSUP */; + }); + this.sock_accept = syscallWrap(this, 'sock_accept', function () { + return 58 /* WasiErrno.ENOTSUP */; + }); + _wasi.set(this, { + fds, + args, + env + }); + if (fs) + _fs.set(this, fs); + // eslint-disable-next-line @typescript-eslint/no-this-alias + const _this = this; + function defineImport(name, syncVersion, asyncVersion, parameterType, returnType) { + if (asyncFs) { + if (asyncify) { + _this[name] = asyncify.wrapImportFunction(syscallWrap(_this, name, asyncVersion)); + } + else { + _this[name] = wrapAsyncImport(syscallWrap(_this, name, asyncVersion), parameterType, returnType); + } + } + else { + _this[name] = syscallWrap(_this, name, syncVersion); + } + } + defineImport('fd_allocate', function fd_allocate(fd, offset, len) { + const wasi = _wasi.get(this); + const fs = getFs(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_ALLOCATE, BigInt(0)); + const stat = fs.fstatSync(fileDescriptor.fd, { bigint: true }); + if (stat.size < offset + len) { + fs.ftruncateSync(fileDescriptor.fd, Number(offset + len)); + } + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_allocate(fd, offset, len) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_ALLOCATE, BigInt(0)); + const h = fileDescriptor.fd; + const stat = await h.stat({ bigint: true }); + if (stat.size < offset + len) { + await h.truncate(Number(offset + len)); + } + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i64', 'f64'], ['i32']); + defineImport('fd_close', function fd_close(fd) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); + const fs = getFs(this); + fs.closeSync(fileDescriptor.fd); + wasi.fds.remove(fd); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_close(fd) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); + await fileDescriptor.fd.close(); + wasi.fds.remove(fd); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32'], ['i32']); + defineImport('fd_datasync', function fd_datasync(fd) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_DATASYNC, BigInt(0)); + const fs = getFs(this); + fs.fdatasyncSync(fileDescriptor.fd); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_datasync(fd) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_DATASYNC, BigInt(0)); + await fileDescriptor.fd.datasync(); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32'], ['i32']); + defineImport('fd_filestat_get', function fd_filestat_get(fd, buf) { + buf = Number(buf); + if (buf === 0) + return 28 /* WasiErrno.EINVAL */; + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_GET, BigInt(0)); + const fs = getFs(this); + const stat = fs.fstatSync(fileDescriptor.fd, { bigint: true }); + const { view } = getMemory(this); + toFileStat(view, buf, stat); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_filestat_get(fd, buf) { + buf = Number(buf); + if (buf === 0) + return 28 /* WasiErrno.EINVAL */; + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_GET, BigInt(0)); + const h = fileDescriptor.fd; + const stat = await h.stat({ bigint: true }); + const { view } = getMemory(this); + toFileStat(view, buf, stat); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32'], ['i32']); + defineImport('fd_filestat_set_size', function fd_filestat_set_size(fd, size) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_SET_SIZE, BigInt(0)); + const fs = getFs(this); + fs.ftruncateSync(fileDescriptor.fd, Number(size)); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_filestat_set_size(fd, size) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_SET_SIZE, BigInt(0)); + const h = fileDescriptor.fd; + await h.truncate(Number(size)); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i64'], ['i32']); + function fdFilestatGetTimes(fd, atim, mtim, flags) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_SET_TIMES, BigInt(0)); + if ((flags & 2 /* WasiFstFlag.SET_ATIM_NOW */) === 2 /* WasiFstFlag.SET_ATIM_NOW */) { + atim = BigInt(Date.now() * 1000000); + } + if ((flags & 8 /* WasiFstFlag.SET_MTIM_NOW */) === 8 /* WasiFstFlag.SET_MTIM_NOW */) { + mtim = BigInt(Date.now() * 1000000); + } + return { fileDescriptor, atim, mtim }; + } + defineImport('fd_filestat_set_times', function fd_filestat_set_times(fd, atim, mtim, flags) { + if (validateFstFlagsOrReturn(flags)) { + return 28 /* WasiErrno.EINVAL */; + } + const { fileDescriptor, atim: atimRes, mtim: mtimRes } = fdFilestatGetTimes.call(this, fd, atim, mtim, flags); + const fs = getFs(this); + fs.futimesSync(fileDescriptor.fd, Number(atimRes), Number(mtimRes)); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_filestat_set_times(fd, atim, mtim, flags) { + if (validateFstFlagsOrReturn(flags)) { + return 28 /* WasiErrno.EINVAL */; + } + const { fileDescriptor, atim: atimRes, mtim: mtimRes } = fdFilestatGetTimes.call(this, fd, atim, mtim, flags); + const h = fileDescriptor.fd; + await h.utimes(Number(atimRes), Number(mtimRes)); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i64', 'i64', 'i32'], ['i32']); + defineImport('fd_pread', function fd_pread(fd, iovs, iovslen, offset, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ | WasiRights.FD_SEEK, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return 0 /* WasiErrno.ESUCCESS */; + } + let totalSize = 0; + const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + totalSize += bufLen; + return HEAPU8.subarray(buf, buf + bufLen); + }); + let nread = 0; + const buffer = (() => { + try { + return new Uint8Array(new SharedArrayBuffer(totalSize)); + } + catch (_) { + return new Uint8Array(totalSize); + } + })(); + buffer._isBuffer = true; + const fs = getFs(this); + const bytesRead = fs.readSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(offset)); + nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; + view.setUint32(size, nread, true); + return 0 /* WasiErrno.ESUCCESS */; + }, async function (fd, iovs, iovslen, offset, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ | WasiRights.FD_SEEK, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return 0 /* WasiErrno.ESUCCESS */; + } + let totalSize = 0; + const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + totalSize += bufLen; + return HEAPU8.subarray(buf, buf + bufLen); + }); + let nread = 0; + const buffer = new Uint8Array(totalSize); + buffer._isBuffer = true; + const { bytesRead } = await fileDescriptor.fd.read(buffer, 0, buffer.length, Number(offset)); + nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; + view.setUint32(size, nread, true); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i64', 'i32'], ['i32']); + defineImport('fd_pwrite', function fd_pwrite(fd, iovs, iovslen, offset, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE | WasiRights.FD_SEEK, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return 0 /* WasiErrno.ESUCCESS */; + } + const buffer = concatBuffer(Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + return HEAPU8.subarray(buf, buf + bufLen); + })); + const fs = getFs(this); + const nwritten = fs.writeSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(offset)); + view.setUint32(size, nwritten, true); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_pwrite(fd, iovs, iovslen, offset, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE | WasiRights.FD_SEEK, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return 0 /* WasiErrno.ESUCCESS */; + } + const buffer = concatBuffer(Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + return HEAPU8.subarray(buf, buf + bufLen); + })); + const { bytesWritten } = await fileDescriptor.fd.write(buffer, 0, buffer.length, Number(offset)); + view.setUint32(size, bytesWritten, true); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i64', 'i32'], ['i32']); + defineImport('fd_read', function fd_read(fd, iovs, iovslen, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return 0 /* WasiErrno.ESUCCESS */; + } + let totalSize = 0; + const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + totalSize += bufLen; + return HEAPU8.subarray(buf, buf + bufLen); + }); + let buffer; + let nread = 0; + if (fd === 0) { + if (typeof window === 'undefined' || typeof window.prompt !== 'function') { + return 58 /* WasiErrno.ENOTSUP */; + } + buffer = readStdin(); + nread = buffer ? copyMemory(ioVecs, buffer) : 0; + } + else { + buffer = (() => { + try { + return new Uint8Array(new SharedArrayBuffer(totalSize)); + } + catch (_) { + return new Uint8Array(totalSize); + } + })(); + buffer._isBuffer = true; + const fs = getFs(this); + const bytesRead = fs.readSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(fileDescriptor.pos)); + nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; + fileDescriptor.pos += BigInt(nread); + } + view.setUint32(size, nread, true); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_read(fd, iovs, iovslen, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return 0 /* WasiErrno.ESUCCESS */; + } + let totalSize = 0; + const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + totalSize += bufLen; + return HEAPU8.subarray(buf, buf + bufLen); + }); + let buffer; + let nread = 0; + if (fd === 0) { + if (typeof window === 'undefined' || typeof window.prompt !== 'function') { + return 58 /* WasiErrno.ENOTSUP */; + } + buffer = readStdin(); + nread = buffer ? copyMemory(ioVecs, buffer) : 0; + } + else { + buffer = new Uint8Array(totalSize); + buffer._isBuffer = true; + const { bytesRead } = await fileDescriptor.fd.read(buffer, 0, buffer.length, Number(fileDescriptor.pos)); + nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; + fileDescriptor.pos += BigInt(nread); + } + view.setUint32(size, nread, true); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i32'], ['i32']); + defineImport('fd_readdir', function fd_readdir(fd, buf, buf_len, cookie, bufused) { + buf = Number(buf); + buf_len = Number(buf_len); + bufused = Number(bufused); + if (buf === 0 || bufused === 0) + return 0 /* WasiErrno.ESUCCESS */; + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READDIR, BigInt(0)); + const fs = getFs(this); + const entries = fs.readdirSync(fileDescriptor.realPath, { withFileTypes: true }); + const { HEAPU8, view } = getMemory(this); + let bufferUsed = 0; + for (let i = Number(cookie); i < entries.length; i++) { + const nameData = encoder.encode(entries[i].name); + const entryInfo = fs.statSync(resolve(fileDescriptor.realPath, entries[i].name), { bigint: true }); + const entryData = new Uint8Array(24 + nameData.byteLength); + const entryView = new DataView(entryData.buffer); + entryView.setBigUint64(0, BigInt(i + 1), true); + entryView.setBigUint64(8, BigInt(entryInfo.ino ? entryInfo.ino : 0), true); + entryView.setUint32(16, nameData.byteLength, true); + let type; + if (entries[i].isFile()) { + type = 4 /* WasiFileType.REGULAR_FILE */; + } + else if (entries[i].isDirectory()) { + type = 3 /* WasiFileType.DIRECTORY */; + } + else if (entries[i].isSymbolicLink()) { + type = 7 /* WasiFileType.SYMBOLIC_LINK */; + } + else if (entries[i].isCharacterDevice()) { + type = 2 /* WasiFileType.CHARACTER_DEVICE */; + } + else if (entries[i].isBlockDevice()) { + type = 1 /* WasiFileType.BLOCK_DEVICE */; + } + else if (entries[i].isSocket()) { + type = 6 /* WasiFileType.SOCKET_STREAM */; + } + else { + type = 0 /* WasiFileType.UNKNOWN */; + } + entryView.setUint8(20, type); + entryData.set(nameData, 24); + const data = entryData.slice(0, Math.min(entryData.length, buf_len - bufferUsed)); + HEAPU8.set(data, buf + bufferUsed); + bufferUsed += data.byteLength; + } + view.setUint32(bufused, bufferUsed, true); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_readdir(fd, buf, buf_len, cookie, bufused) { + buf = Number(buf); + buf_len = Number(buf_len); + bufused = Number(bufused); + if (buf === 0 || bufused === 0) + return 0 /* WasiErrno.ESUCCESS */; + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READDIR, BigInt(0)); + const fs = getFs(this); + const entries = await fs.promises.readdir(fileDescriptor.realPath, { withFileTypes: true }); + const { HEAPU8, view } = getMemory(this); + let bufferUsed = 0; + for (let i = Number(cookie); i < entries.length; i++) { + const nameData = encoder.encode(entries[i].name); + const entryInfo = await fs.promises.stat(resolve(fileDescriptor.realPath, entries[i].name), { bigint: true }); + const entryData = new Uint8Array(24 + nameData.byteLength); + const entryView = new DataView(entryData.buffer); + entryView.setBigUint64(0, BigInt(i + 1), true); + entryView.setBigUint64(8, BigInt(entryInfo.ino ? entryInfo.ino : 0), true); + entryView.setUint32(16, nameData.byteLength, true); + let type; + if (entries[i].isFile()) { + type = 4 /* WasiFileType.REGULAR_FILE */; + } + else if (entries[i].isDirectory()) { + type = 3 /* WasiFileType.DIRECTORY */; + } + else if (entries[i].isSymbolicLink()) { + type = 7 /* WasiFileType.SYMBOLIC_LINK */; + } + else if (entries[i].isCharacterDevice()) { + type = 2 /* WasiFileType.CHARACTER_DEVICE */; + } + else if (entries[i].isBlockDevice()) { + type = 1 /* WasiFileType.BLOCK_DEVICE */; + } + else if (entries[i].isSocket()) { + type = 6 /* WasiFileType.SOCKET_STREAM */; + } + else { + type = 0 /* WasiFileType.UNKNOWN */; + } + entryView.setUint8(20, type); + entryData.set(nameData, 24); + const data = entryData.slice(0, Math.min(entryData.length, buf_len - bufferUsed)); + HEAPU8.set(data, buf + bufferUsed); + bufferUsed += data.byteLength; + } + view.setUint32(bufused, bufferUsed, true); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i64', 'i32'], ['i32']); + defineImport('fd_renumber', function fd_renumber(from, to) { + const wasi = _wasi.get(this); + wasi.fds.renumber(to, from); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_renumber(from, to) { + const wasi = _wasi.get(this); + await wasi.fds.renumber(to, from); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32'], ['i32']); + defineImport('fd_sync', function fd_sync(fd) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_SYNC, BigInt(0)); + const fs = getFs(this); + fs.fsyncSync(fileDescriptor.fd); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_sync(fd) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_SYNC, BigInt(0)); + await fileDescriptor.fd.sync(); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32'], ['i32']); + defineImport('fd_write', function fd_write(fd, iovs, iovslen, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return 0 /* WasiErrno.ESUCCESS */; + } + const buffer = concatBuffer(Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + return HEAPU8.subarray(buf, buf + bufLen); + })); + let nwritten; + if (fd === 1 || fd === 2) { + nwritten = fileDescriptor.write(buffer); + } + else { + const fs = getFs(this); + nwritten = fs.writeSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(fileDescriptor.pos)); + fileDescriptor.pos += BigInt(nwritten); + } + view.setUint32(size, nwritten, true); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_write(fd, iovs, iovslen, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return 0 /* WasiErrno.ESUCCESS */; + } + const buffer = concatBuffer(Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + return HEAPU8.subarray(buf, buf + bufLen); + })); + let nwritten; + if (fd === 1 || fd === 2) { + nwritten = fileDescriptor.write(buffer); + } + else { + nwritten = await (await (fileDescriptor.fd.write(buffer, 0, buffer.length, Number(fileDescriptor.pos)))).bytesWritten; + fileDescriptor.pos += BigInt(nwritten); + } + view.setUint32(size, nwritten, true); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i32'], ['i32']); + defineImport('path_create_directory', function path_create_directory(fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_CREATE_DIRECTORY, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + pathString = resolve(fileDescriptor.realPath, pathString); + const fs = getFs(this); + fs.mkdirSync(pathString); + return 0 /* WasiErrno.ESUCCESS */; + }, async function path_create_directory(fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_CREATE_DIRECTORY, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + pathString = resolve(fileDescriptor.realPath, pathString); + const fs = getFs(this); + await fs.promises.mkdir(pathString); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32'], ['i32']); + defineImport('path_filestat_get', function path_filestat_get(fd, flags, path, path_len, filestat) { + path = Number(path); + path_len = Number(path_len); + filestat = Number(filestat); + if (path === 0 || filestat === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_GET, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + const fs = getFs(this); + pathString = resolve(fileDescriptor.realPath, pathString); + let stat; + if ((flags & 1) === 1) { + stat = fs.statSync(pathString, { bigint: true }); + } + else { + stat = fs.lstatSync(pathString, { bigint: true }); + } + toFileStat(view, filestat, stat); + return 0 /* WasiErrno.ESUCCESS */; + }, async function path_filestat_get(fd, flags, path, path_len, filestat) { + path = Number(path); + path_len = Number(path_len); + filestat = Number(filestat); + if (path === 0 || filestat === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_GET, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + const fs = getFs(this); + pathString = resolve(fileDescriptor.realPath, pathString); + let stat; + if ((flags & 1) === 1) { + stat = await fs.promises.stat(pathString, { bigint: true }); + } + else { + stat = await fs.promises.lstat(pathString, { bigint: true }); + } + toFileStat(view, filestat, stat); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); + defineImport('path_filestat_set_times', function path_filestat_set_times(fd, flags, path, path_len, atim, mtim, fst_flags) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) + return 28 /* WasiErrno.EINVAL */; + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_SET_TIMES, BigInt(0)); + if (validateFstFlagsOrReturn(fst_flags)) { + return 28 /* WasiErrno.EINVAL */; + } + const fs = getFs(this); + const resolvedPath = resolvePathSync(fs, fileDescriptor, decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)), flags); + if ((fst_flags & 2 /* WasiFstFlag.SET_ATIM_NOW */) === 2 /* WasiFstFlag.SET_ATIM_NOW */) { + atim = BigInt(Date.now() * 1000000); + } + if ((fst_flags & 8 /* WasiFstFlag.SET_MTIM_NOW */) === 8 /* WasiFstFlag.SET_MTIM_NOW */) { + mtim = BigInt(Date.now() * 1000000); + } + fs.utimesSync(resolvedPath, Number(atim), Number(mtim)); + return 0 /* WasiErrno.ESUCCESS */; + }, async function path_filestat_set_times(fd, flags, path, path_len, atim, mtim, fst_flags) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) + return 28 /* WasiErrno.EINVAL */; + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_SET_TIMES, BigInt(0)); + if (validateFstFlagsOrReturn(fst_flags)) { + return 28 /* WasiErrno.EINVAL */; + } + const fs = getFs(this); + const resolvedPath = await resolvePathAsync(fs, fileDescriptor, decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)), flags); + if ((fst_flags & 2 /* WasiFstFlag.SET_ATIM_NOW */) === 2 /* WasiFstFlag.SET_ATIM_NOW */) { + atim = BigInt(Date.now() * 1000000); + } + if ((fst_flags & 8 /* WasiFstFlag.SET_MTIM_NOW */) === 8 /* WasiFstFlag.SET_MTIM_NOW */) { + mtim = BigInt(Date.now() * 1000000); + } + await fs.promises.utimes(resolvedPath, Number(atim), Number(mtim)); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i32', 'i64', 'i64', 'i32'], ['i32']); + defineImport('path_link', function path_link(old_fd, old_flags, old_path, old_path_len, new_fd, new_path, new_path_len) { + old_path = Number(old_path); + old_path_len = Number(old_path_len); + new_path = Number(new_path); + new_path_len = Number(new_path_len); + if (old_path === 0 || new_path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const wasi = _wasi.get(this); + let oldWrap; + let newWrap; + if (old_fd === new_fd) { + oldWrap = newWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE | WasiRights.PATH_LINK_TARGET, BigInt(0)); + } + else { + oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE, BigInt(0)); + newWrap = wasi.fds.get(new_fd, WasiRights.PATH_LINK_TARGET, BigInt(0)); + } + const { HEAPU8 } = getMemory(this); + const fs = getFs(this); + const resolvedOldPath = resolvePathSync(fs, oldWrap, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)), old_flags); + const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len))); + fs.linkSync(resolvedOldPath, resolvedNewPath); + return 0 /* WasiErrno.ESUCCESS */; + }, async function path_link(old_fd, old_flags, old_path, old_path_len, new_fd, new_path, new_path_len) { + old_path = Number(old_path); + old_path_len = Number(old_path_len); + new_path = Number(new_path); + new_path_len = Number(new_path_len); + if (old_path === 0 || new_path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const wasi = _wasi.get(this); + let oldWrap; + let newWrap; + if (old_fd === new_fd) { + oldWrap = newWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE | WasiRights.PATH_LINK_TARGET, BigInt(0)); + } + else { + oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE, BigInt(0)); + newWrap = wasi.fds.get(new_fd, WasiRights.PATH_LINK_TARGET, BigInt(0)); + } + const { HEAPU8 } = getMemory(this); + const fs = getFs(this); + const resolvedOldPath = await resolvePathAsync(fs, oldWrap, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)), old_flags); + const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len))); + await fs.promises.link(resolvedOldPath, resolvedNewPath); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); + function pathOpen(o_flags, fs_rights_base, fs_rights_inheriting, fs_flags) { + const read = (fs_rights_base & (WasiRights.FD_READ | + WasiRights.FD_READDIR)) !== BigInt(0); + const write = (fs_rights_base & (WasiRights.FD_DATASYNC | + WasiRights.FD_WRITE | + WasiRights.FD_ALLOCATE | + WasiRights.FD_FILESTAT_SET_SIZE)) !== BigInt(0); + let flags = write ? read ? 2 /* FileControlFlag.O_RDWR */ : 1 /* FileControlFlag.O_WRONLY */ : 0 /* FileControlFlag.O_RDONLY */; + let needed_base = WasiRights.PATH_OPEN; + let needed_inheriting = fs_rights_base | fs_rights_inheriting; + if ((o_flags & 1 /* WasiFileControlFlag.O_CREAT */) !== 0) { + flags |= 64 /* FileControlFlag.O_CREAT */; + needed_base |= WasiRights.PATH_CREATE_FILE; + } + if ((o_flags & 2 /* WasiFileControlFlag.O_DIRECTORY */) !== 0) { + flags |= 65536 /* FileControlFlag.O_DIRECTORY */; + } + if ((o_flags & 4 /* WasiFileControlFlag.O_EXCL */) !== 0) { + flags |= 128 /* FileControlFlag.O_EXCL */; + } + if ((o_flags & 8 /* WasiFileControlFlag.O_TRUNC */) !== 0) { + flags |= 512 /* FileControlFlag.O_TRUNC */; + needed_base |= WasiRights.PATH_FILESTAT_SET_SIZE; + } + if ((fs_flags & 1 /* WasiFdFlag.APPEND */) !== 0) { + flags |= 1024 /* FileControlFlag.O_APPEND */; + } + if ((fs_flags & 2 /* WasiFdFlag.DSYNC */) !== 0) { + // flags |= FileControlFlag.O_DSYNC; + needed_inheriting |= WasiRights.FD_DATASYNC; + } + if ((fs_flags & 4 /* WasiFdFlag.NONBLOCK */) !== 0) { + flags |= 2048 /* FileControlFlag.O_NONBLOCK */; + } + if ((fs_flags & 8 /* WasiFdFlag.RSYNC */) !== 0) { + flags |= 1052672 /* FileControlFlag.O_SYNC */; + needed_inheriting |= WasiRights.FD_SYNC; + } + if ((fs_flags & 16 /* WasiFdFlag.SYNC */) !== 0) { + flags |= 1052672 /* FileControlFlag.O_SYNC */; + needed_inheriting |= WasiRights.FD_SYNC; + } + if (write && (flags & (1024 /* FileControlFlag.O_APPEND */ | 512 /* FileControlFlag.O_TRUNC */)) === 0) { + needed_inheriting |= WasiRights.FD_SEEK; + } + return { flags, needed_base, needed_inheriting }; + } + defineImport('path_open', function path_open(dirfd, dirflags, path, path_len, o_flags, fs_rights_base, fs_rights_inheriting, fs_flags, fd) { + path = Number(path); + fd = Number(fd); + if (path === 0 || fd === 0) { + return 28 /* WasiErrno.EINVAL */; + } + path_len = Number(path_len); + fs_rights_base = BigInt(fs_rights_base); + fs_rights_inheriting = BigInt(fs_rights_inheriting); + const { flags: flagsRes, needed_base: neededBase, needed_inheriting: neededInheriting } = pathOpen(o_flags, fs_rights_base, fs_rights_inheriting, fs_flags); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(dirfd, neededBase, neededInheriting); + const memory = getMemory(this); + const HEAPU8 = memory.HEAPU8; + const pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + const fs = getFs(this); + const resolved_path = resolvePathSync(fs, fileDescriptor, pathString, dirflags); + const r = fs.openSync(resolved_path, flagsRes, 0o666); + const filetype = wasi.fds.getFileTypeByFd(r); + if ((filetype !== 3 /* WasiFileType.DIRECTORY */) && + ((o_flags & 2 /* WasiFileControlFlag.O_DIRECTORY */) !== 0 || + (resolved_path.endsWith('/')))) { + return 54 /* WasiErrno.ENOTDIR */; + } + const { base: max_base, inheriting: max_inheriting } = getRights(wasi.fds.stdio, r, flagsRes, filetype); + const wrap = wasi.fds.insert(r, resolved_path, resolved_path, filetype, fs_rights_base & max_base, fs_rights_inheriting & max_inheriting, 0); + const stat = fs.fstatSync(r, { bigint: true }); + if (stat.isFile()) { + wrap.size = stat.size; + if ((flagsRes & 1024 /* FileControlFlag.O_APPEND */) !== 0) { + wrap.pos = stat.size; + } + } + const view = memory.view; + view.setInt32(fd, wrap.id, true); + return 0 /* WasiErrno.ESUCCESS */; + }, async function path_open(dirfd, dirflags, path, path_len, o_flags, fs_rights_base, fs_rights_inheriting, fs_flags, fd) { + path = Number(path); + fd = Number(fd); + if (path === 0 || fd === 0) { + return 28 /* WasiErrno.EINVAL */; + } + path_len = Number(path_len); + fs_rights_base = BigInt(fs_rights_base); + fs_rights_inheriting = BigInt(fs_rights_inheriting); + const { flags: flagsRes, needed_base: neededBase, needed_inheriting: neededInheriting } = pathOpen(o_flags, fs_rights_base, fs_rights_inheriting, fs_flags); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(dirfd, neededBase, neededInheriting); + const memory = getMemory(this); + const HEAPU8 = memory.HEAPU8; + const pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + const fs = getFs(this); + const resolved_path = await resolvePathAsync(fs, fileDescriptor, pathString, dirflags); + const r = await fs.promises.open(resolved_path, flagsRes, 0o666); + const filetype = await wasi.fds.getFileTypeByFd(r); + if ((o_flags & 2 /* WasiFileControlFlag.O_DIRECTORY */) !== 0 && filetype !== 3 /* WasiFileType.DIRECTORY */) { + return 54 /* WasiErrno.ENOTDIR */; + } + const { base: max_base, inheriting: max_inheriting } = getRights(wasi.fds.stdio, r.fd, flagsRes, filetype); + const wrap = wasi.fds.insert(r, resolved_path, resolved_path, filetype, fs_rights_base & max_base, fs_rights_inheriting & max_inheriting, 0); + const stat = await r.stat({ bigint: true }); + if (stat.isFile()) { + wrap.size = stat.size; + if ((flagsRes & 1024 /* FileControlFlag.O_APPEND */) !== 0) { + wrap.pos = stat.size; + } + } + const view = memory.view; + view.setInt32(fd, wrap.id, true); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i64', 'i64', 'i32', 'i32'], ['i32']); + defineImport('path_readlink', function path_readlink(fd, path, path_len, buf, buf_len, bufused) { + path = Number(path); + path_len = Number(path_len); + buf = Number(buf); + buf_len = Number(buf_len); + bufused = Number(bufused); + if (path === 0 || buf === 0 || bufused === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_READLINK, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + pathString = resolve(fileDescriptor.realPath, pathString); + const fs = getFs(this); + const link = fs.readlinkSync(pathString); + const linkData = encoder.encode(link); + const len = Math.min(linkData.length, buf_len); + if (len >= buf_len) + return 42 /* WasiErrno.ENOBUFS */; + HEAPU8.set(linkData.subarray(0, len), buf); + HEAPU8[buf + len] = 0; + view.setUint32(bufused, len, true); + return 0 /* WasiErrno.ESUCCESS */; + }, async function path_readlink(fd, path, path_len, buf, buf_len, bufused) { + path = Number(path); + path_len = Number(path_len); + buf = Number(buf); + buf_len = Number(buf_len); + bufused = Number(bufused); + if (path === 0 || buf === 0 || bufused === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_READLINK, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + pathString = resolve(fileDescriptor.realPath, pathString); + const fs = getFs(this); + const link = await fs.promises.readlink(pathString); + const linkData = encoder.encode(link); + const len = Math.min(linkData.length, buf_len); + if (len >= buf_len) + return 42 /* WasiErrno.ENOBUFS */; + HEAPU8.set(linkData.subarray(0, len), buf); + HEAPU8[buf + len] = 0; + view.setUint32(bufused, len, true); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); + defineImport('path_remove_directory', function path_remove_directory(fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_REMOVE_DIRECTORY, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + pathString = resolve(fileDescriptor.realPath, pathString); + const fs = getFs(this); + fs.rmdirSync(pathString); + return 0 /* WasiErrno.ESUCCESS */; + }, async function path_remove_directory(fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_REMOVE_DIRECTORY, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + pathString = resolve(fileDescriptor.realPath, pathString); + const fs = getFs(this); + await fs.promises.rmdir(pathString); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32'], ['i32']); + defineImport('path_rename', function path_rename(old_fd, old_path, old_path_len, new_fd, new_path, new_path_len) { + old_path = Number(old_path); + old_path_len = Number(old_path_len); + new_path = Number(new_path); + new_path_len = Number(new_path_len); + if (old_path === 0 || new_path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const wasi = _wasi.get(this); + let oldWrap; + let newWrap; + if (old_fd === new_fd) { + oldWrap = newWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE | WasiRights.PATH_RENAME_TARGET, BigInt(0)); + } + else { + oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE, BigInt(0)); + newWrap = wasi.fds.get(new_fd, WasiRights.PATH_RENAME_TARGET, BigInt(0)); + } + const { HEAPU8 } = getMemory(this); + const resolvedOldPath = resolve(oldWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len))); + const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len))); + const fs = getFs(this); + fs.renameSync(resolvedOldPath, resolvedNewPath); + return 0 /* WasiErrno.ESUCCESS */; + }, async function path_rename(old_fd, old_path, old_path_len, new_fd, new_path, new_path_len) { + old_path = Number(old_path); + old_path_len = Number(old_path_len); + new_path = Number(new_path); + new_path_len = Number(new_path_len); + if (old_path === 0 || new_path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const wasi = _wasi.get(this); + let oldWrap; + let newWrap; + if (old_fd === new_fd) { + oldWrap = newWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE | WasiRights.PATH_RENAME_TARGET, BigInt(0)); + } + else { + oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE, BigInt(0)); + newWrap = wasi.fds.get(new_fd, WasiRights.PATH_RENAME_TARGET, BigInt(0)); + } + const { HEAPU8 } = getMemory(this); + const resolvedOldPath = resolve(oldWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len))); + const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len))); + const fs = getFs(this); + await fs.promises.rename(resolvedOldPath, resolvedNewPath); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); + defineImport('path_symlink', function path_symlink(old_path, old_path_len, fd, new_path, new_path_len) { + old_path = Number(old_path); + old_path_len = Number(old_path_len); + new_path = Number(new_path); + new_path_len = Number(new_path_len); + if (old_path === 0 || new_path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_SYMLINK, BigInt(0)); + const oldPath = decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)); + if (oldPath.length > 0 && oldPath[0] === '/') { + return 63 /* WasiErrno.EPERM */; + } + let newPath = decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len)); + newPath = resolve(fileDescriptor.realPath, newPath); + const fs = getFs(this); + fs.symlinkSync(oldPath, newPath); + return 0 /* WasiErrno.ESUCCESS */; + }, async function path_symlink(old_path, old_path_len, fd, new_path, new_path_len) { + old_path = Number(old_path); + old_path_len = Number(old_path_len); + new_path = Number(new_path); + new_path_len = Number(new_path_len); + if (old_path === 0 || new_path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_SYMLINK, BigInt(0)); + const oldPath = decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)); + let newPath = decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len)); + newPath = resolve(fileDescriptor.realPath, newPath); + const fs = getFs(this); + await fs.promises.symlink(oldPath, newPath); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); + defineImport('path_unlink_file', function path_unlink_file(fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_UNLINK_FILE, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + pathString = resolve(fileDescriptor.realPath, pathString); + const fs = getFs(this); + fs.unlinkSync(pathString); + return 0 /* WasiErrno.ESUCCESS */; + }, async function path_unlink_file(fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_UNLINK_FILE, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + pathString = resolve(fileDescriptor.realPath, pathString); + const fs = getFs(this); + await fs.promises.unlink(pathString); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32'], ['i32']); + this._setMemory = function setMemory(m) { + if (!(m instanceof _WebAssembly.Memory)) { + throw new TypeError('"instance.exports.memory" property must be a WebAssembly.Memory'); + } + _memory.set(_this, extendMemory(m)); + }; + } + static createSync(args, env, preopens, stdio, fs, print, printErr) { + const fds = new SyncTable({ + size: 3, + in: stdio[0], + out: stdio[1], + err: stdio[2], + fs, + print, + printErr + }); + const _this = new WASI$1(args, env, fds, false, fs); + if (preopens.length > 0) { + for (let i = 0; i < preopens.length; ++i) { + const realPath = fs.realpathSync(preopens[i].realPath, 'utf8'); + const fd = fs.openSync(realPath, 'r', 0o666); + fds.insertPreopen(fd, preopens[i].mappedPath, realPath); + } + } + return _this; + } + static async createAsync(args, env, preopens, stdio, fs, print, printErr, asyncify) { + const fds = new AsyncTable({ + size: 3, + in: stdio[0], + out: stdio[1], + err: stdio[2], + print, + printErr + }); + const _this = new WASI$1(args, env, fds, true, fs, asyncify); + if (preopens.length > 0) { + for (let i = 0; i < preopens.length; ++i) { + const entry = preopens[i]; + const realPath = await fs.promises.realpath(entry.realPath); + const fd = await fs.promises.open(realPath, 'r', 0o666); + await fds.insertPreopen(fd, entry.mappedPath, realPath); + } + } + return _this; + } +} + +// eslint-disable-next-line spaced-comment +const kEmptyObject = /*#__PURE__*/ Object.freeze(/*#__PURE__*/ Object.create(null)); +const kExitCode = Symbol('kExitCode'); +const kSetMemory = Symbol('kSetMemory'); +const kStarted = Symbol('kStarted'); +const kInstance = Symbol('kInstance'); +const kBindingName = Symbol('kBindingName'); +function validateOptions(options) { + var _a; + validateObject(options, 'options'); + let _WASI; + if (options.version !== undefined) { + validateString(options.version, 'options.version'); + switch (options.version) { + case 'unstable': + _WASI = WASI$1; + this[kBindingName] = 'wasi_unstable'; + break; + case 'preview1': + _WASI = WASI$1; + this[kBindingName] = 'wasi_snapshot_preview1'; + break; + default: + throw new TypeError(`unsupported WASI version "${options.version}"`); + } + } + else { + _WASI = WASI$1; + this[kBindingName] = 'wasi_snapshot_preview1'; + } + if (options.args !== undefined) { + validateArray(options.args, 'options.args'); + } + const args = ((_a = options.args) !== null && _a !== void 0 ? _a : []).map(String); + const env = []; + if (options.env !== undefined) { + validateObject(options.env, 'options.env'); + Object.entries(options.env).forEach(({ 0: key, 1: value }) => { + if (value !== undefined) { + env.push(`${key}=${value}`); + } + }); + } + const preopens = []; + if (options.preopens !== undefined) { + validateObject(options.preopens, 'options.preopens'); + Object.entries(options.preopens).forEach(({ 0: key, 1: value }) => preopens.push({ mappedPath: String(key), realPath: String(value) })); + } + if (preopens.length > 0) { + if (options.fs === undefined) { + throw new Error('filesystem is disabled, can not preopen directory'); + } + try { + validateObject(options.fs, 'options.fs'); + } + catch (_) { + throw new TypeError('Node.js fs like implementation is not provided'); + } + } + // if (options.filesystem !== undefined) { + // validateObject(options.filesystem, 'options.filesystem') + // validateString(options.filesystem.type, 'options.filesystem.type') + // if (options.filesystem.type !== 'memfs' && options.filesystem.type !== 'file-system-access-api') { + // throw new Error(`Filesystem type ${(options.filesystem as any).type as string} is not supported, only "memfs" and "file-system-access-api" is supported currently`) + // } + // try { + // validateObject(options.filesystem.fs, 'options.filesystem.fs') + // } catch (_) { + // throw new Error('Node.js fs like implementation is not provided') + // } + // } + if (options.print !== undefined) + validateFunction(options.print, 'options.print'); + if (options.printErr !== undefined) + validateFunction(options.printErr, 'options.printErr'); + if (options.returnOnExit !== undefined) { + validateBoolean(options.returnOnExit, 'options.returnOnExit'); + } + // const { stdin = 0, stdout = 1, stderr = 2 } = options + // validateInt32(stdin, 'options.stdin', 0) + // validateInt32(stdout, 'options.stdout', 0) + // validateInt32(stderr, 'options.stderr', 0) + // const stdio = [stdin, stdout, stderr] as const + const stdio = [0, 1, 2]; + return { + args, + env, + preopens, + stdio, + _WASI + }; +} +function initWASI(setMemory, wrap) { + this[kSetMemory] = setMemory; + this.wasiImport = wrap; + this[kStarted] = false; + this[kExitCode] = 0; + this[kInstance] = undefined; +} +/** @public */ +class WASI { + constructor(options = kEmptyObject) { + const { args, env, preopens, stdio, _WASI } = validateOptions.call(this, options); + const wrap = _WASI.createSync(args, env, preopens, stdio, options.fs, options.print, options.printErr); + const setMemory = wrap._setMemory; + delete wrap._setMemory; + initWASI.call(this, setMemory, wrap); + if (options.returnOnExit) { + wrap.proc_exit = wasiReturnOnProcExit.bind(this); + } + } + finalizeBindings(instance, _a) { + var _b; + var { memory = (_b = instance === null || instance === void 0 ? void 0 : instance.exports) === null || _b === void 0 ? void 0 : _b.memory } = _a === void 0 ? {} : _a; + if (this[kStarted]) { + throw new Error('WASI instance has already started'); + } + validateObject(instance, 'instance'); + validateObject(instance.exports, 'instance.exports'); + this[kSetMemory](memory); + this[kInstance] = instance; + this[kStarted] = true; + } + // Must not export _initialize, must export _start + start(instance) { + this.finalizeBindings(instance); + const { _start, _initialize } = this[kInstance].exports; + validateFunction(_start, 'instance.exports._start'); + validateUndefined(_initialize, 'instance.exports._initialize'); + let ret; + try { + ret = _start(); + } + catch (err) { + if (err !== kExitCode) { + throw err; + } + } + if (ret instanceof Promise) { + return ret.then(() => this[kExitCode], (err) => { + if (err !== kExitCode) { + throw err; + } + return this[kExitCode]; + }); + } + return this[kExitCode]; + } + // Must not export _start, may optionally export _initialize + initialize(instance) { + this.finalizeBindings(instance); + const { _start, _initialize } = this[kInstance].exports; + validateUndefined(_start, 'instance.exports._start'); + if (_initialize !== undefined) { + validateFunction(_initialize, 'instance.exports._initialize'); + return _initialize(); + } + } + getImportObject() { + return { [this[kBindingName]]: this.wasiImport }; + } +} +function wasiReturnOnProcExit(rval) { + this[kExitCode] = rval; + // eslint-disable-next-line @typescript-eslint/no-throw-literal + throw kExitCode; +} +/** @public */ +async function createAsyncWASI(options = kEmptyObject) { + const _this = Object.create(WASI.prototype); + const { args, env, preopens, stdio, _WASI } = validateOptions.call(_this, options); + if (options.asyncify !== undefined) { + validateObject(options.asyncify, 'options.asyncify'); + validateFunction(options.asyncify.wrapImportFunction, 'options.asyncify.wrapImportFunction'); + } + const wrap = await _WASI.createAsync(args, env, preopens, stdio, options.fs, options.print, options.printErr, options.asyncify); + const setMemory = wrap._setMemory; + delete wrap._setMemory; + initWASI.call(_this, setMemory, wrap); + if (options.returnOnExit) { + wrap.proc_exit = wasiReturnOnProcExit.bind(_this); + } + return _this; +} + +export { Asyncify, Memory, WASI, WebAssemblyMemory, asyncifyLoad, asyncifyLoadSync, createAsyncWASI, extendMemory, load, loadSync, wrapAsyncExport, wrapAsyncImport, wrapExports }; diff --git a/node_modules/@tybys/wasm-util/dist/wasm-util.esm.js b/node_modules/@tybys/wasm-util/dist/wasm-util.esm.js new file mode 100644 index 00000000..c7368ea8 --- /dev/null +++ b/node_modules/@tybys/wasm-util/dist/wasm-util.esm.js @@ -0,0 +1,2758 @@ +const _WebAssembly = typeof WebAssembly !== 'undefined' + ? WebAssembly + : typeof WXWebAssembly !== 'undefined' + ? WXWebAssembly + : undefined; +if (!_WebAssembly) { + throw new Error('WebAssembly is not supported in this environment'); +} + +/* eslint-disable spaced-comment */ + +function validateObject(value, name) { + if (value === null || typeof value !== 'object') { + throw new TypeError(`${name} must be an object. Received ${value === null ? 'null' : typeof value}`); + } +} +function validateArray(value, name) { + if (!Array.isArray(value)) { + throw new TypeError(`${name} must be an array. Received ${value === null ? 'null' : typeof value}`); + } +} +function validateBoolean(value, name) { + if (typeof value !== 'boolean') { + throw new TypeError(`${name} must be a boolean. Received ${value === null ? 'null' : typeof value}`); + } +} +function validateString(value, name) { + if (typeof value !== 'string') { + throw new TypeError(`${name} must be a string. Received ${value === null ? 'null' : typeof value}`); + } +} +function validateFunction(value, name) { + if (typeof value !== 'function') { + throw new TypeError(`${name} must be a function. Received ${value === null ? 'null' : typeof value}`); + } +} +function validateUndefined(value, name) { + if (value !== undefined) { + throw new TypeError(`${name} must be undefined. Received ${value === null ? 'null' : typeof value}`); + } +} +function isPromiseLike(obj) { + return !!(obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function'); +} +function wrapInstanceExports(exports, mapFn) { + const newExports = Object.create(null); + Object.keys(exports).forEach(name => { + const exportValue = exports[name]; + Object.defineProperty(newExports, name, { + enumerable: true, + value: mapFn(exportValue, name) + }); + }); + return newExports; +} +function sleepBreakIf(delay, breakIf) { + const start = Date.now(); + const end = start + delay; + let ret = false; + while (Date.now() < end) { + if (breakIf()) { + ret = true; + break; + } + } + return ret; +} +function unsharedSlice(view, start, end) { + return ((typeof SharedArrayBuffer === 'function' && view.buffer instanceof SharedArrayBuffer) || (Object.prototype.toString.call(view.buffer.constructor) === '[object SharedArrayBuffer]')) + ? view.slice(start, end) + : view.subarray(start, end); +} + +const ignoreNames = [ + 'asyncify_get_state', + 'asyncify_start_rewind', + 'asyncify_start_unwind', + 'asyncify_stop_rewind', + 'asyncify_stop_unwind' +]; +function tryAllocate(instance, wasm64, size, mallocName) { + if (typeof instance.exports[mallocName] !== 'function' || size <= 0) { + return { + wasm64, + dataPtr: 16, + start: wasm64 ? 32 : 24, + end: 1024 + }; + } + const malloc = instance.exports[mallocName]; + const dataPtr = wasm64 ? Number(malloc(BigInt(16) + BigInt(size))) : malloc(8 + size); + if (dataPtr === 0) { + throw new Error('Allocate asyncify data failed'); + } + return wasm64 + ? { wasm64, dataPtr, start: dataPtr + 16, end: dataPtr + 16 + size } + : { wasm64, dataPtr, start: dataPtr + 8, end: dataPtr + 8 + size }; +} +/** @public */ +class Asyncify { + constructor() { + this.value = undefined; + this.exports = undefined; + this.dataPtr = 0; + } + init(memory, instance, options) { + var _a, _b; + if (this.exports) { + throw new Error('Asyncify has been initialized'); + } + if (!(memory instanceof _WebAssembly.Memory)) { + throw new TypeError('Require WebAssembly.Memory object'); + } + const exports = instance.exports; + for (let i = 0; i < ignoreNames.length; ++i) { + if (typeof exports[ignoreNames[i]] !== 'function') { + throw new TypeError('Invalid asyncify wasm'); + } + } + let address; + const wasm64 = Boolean(options.wasm64); + if (!options.tryAllocate) { + address = { + wasm64, + dataPtr: 16, + start: wasm64 ? 32 : 24, + end: 1024 + }; + } + else { + if (options.tryAllocate === true) { + address = tryAllocate(instance, wasm64, 4096, 'malloc'); + } + else { + address = tryAllocate(instance, wasm64, (_a = options.tryAllocate.size) !== null && _a !== void 0 ? _a : 4096, (_b = options.tryAllocate.name) !== null && _b !== void 0 ? _b : 'malloc'); + } + } + this.dataPtr = address.dataPtr; + if (wasm64) { + new BigInt64Array(memory.buffer, this.dataPtr).set([BigInt(address.start), BigInt(address.end)]); + } + else { + new Int32Array(memory.buffer, this.dataPtr).set([address.start, address.end]); + } + this.exports = this.wrapExports(exports, options.wrapExports); + const asyncifiedInstance = Object.create(_WebAssembly.Instance.prototype); + Object.defineProperty(asyncifiedInstance, 'exports', { value: this.exports }); + // Object.setPrototypeOf(instance, Instance.prototype) + return asyncifiedInstance; + } + assertState() { + if (this.exports.asyncify_get_state() !== 0 /* AsyncifyState.NONE */) { + throw new Error('Asyncify state error'); + } + } + wrapImportFunction(f) { + // eslint-disable-next-line @typescript-eslint/no-this-alias + const _this = this; + return (function () { + // eslint-disable-next-line no-unreachable-loop + while (_this.exports.asyncify_get_state() === 2 /* AsyncifyState.REWINDING */) { + _this.exports.asyncify_stop_rewind(); + return _this.value; + } + _this.assertState(); + const v = f.apply(this, arguments); + if (!isPromiseLike(v)) + return v; + _this.exports.asyncify_start_unwind(_this.dataPtr); + _this.value = v; + }); + } + wrapImports(imports) { + const importObject = {}; + Object.keys(imports).forEach(k => { + const mod = imports[k]; + const newModule = {}; + Object.keys(mod).forEach(name => { + const importValue = mod[name]; + if (typeof importValue === 'function') { + newModule[name] = this.wrapImportFunction(importValue); + } + else { + newModule[name] = importValue; + } + }); + importObject[k] = newModule; + }); + return importObject; + } + wrapExportFunction(f) { + // eslint-disable-next-line @typescript-eslint/no-this-alias + const _this = this; + return (async function () { + _this.assertState(); + let ret = f.apply(this, arguments); + while (_this.exports.asyncify_get_state() === 1 /* AsyncifyState.UNWINDING */) { + _this.exports.asyncify_stop_unwind(); + _this.value = await _this.value; + _this.assertState(); + _this.exports.asyncify_start_rewind(_this.dataPtr); + ret = f.call(this); + } + _this.assertState(); + return ret; + }); + } + wrapExports(exports, needWrap) { + return wrapInstanceExports(exports, (exportValue, name) => { + let ignore = ignoreNames.indexOf(name) !== -1 || typeof exportValue !== 'function'; + if (Array.isArray(needWrap)) { + ignore = ignore || (needWrap.indexOf(name) === -1); + } + return ignore ? exportValue : this.wrapExportFunction(exportValue); + }); + } +} + +function validateImports(imports) { + if (imports && typeof imports !== 'object') { + throw new TypeError('imports must be an object or undefined'); + } +} +function fetchWasm(urlOrBuffer, imports) { + if (typeof wx !== 'undefined' && typeof __wxConfig !== 'undefined') { + return _WebAssembly.instantiate(urlOrBuffer, imports); + } + return fetch(urlOrBuffer) + .then(response => response.arrayBuffer()) + .then(buffer => _WebAssembly.instantiate(buffer, imports)); +} +/** @public */ +function load(wasmInput, imports) { + validateImports(imports); + imports = imports !== null && imports !== void 0 ? imports : {}; + let source; + if (wasmInput instanceof ArrayBuffer || ArrayBuffer.isView(wasmInput)) { + return _WebAssembly.instantiate(wasmInput, imports); + } + if (wasmInput instanceof _WebAssembly.Module) { + return _WebAssembly.instantiate(wasmInput, imports).then((instance) => { + return { instance, module: wasmInput }; + }); + } + if (typeof wasmInput !== 'string' && !(wasmInput instanceof URL)) { + throw new TypeError('Invalid source'); + } + if (typeof _WebAssembly.instantiateStreaming === 'function') { + let responsePromise; + try { + responsePromise = fetch(wasmInput); + source = _WebAssembly.instantiateStreaming(responsePromise, imports).catch(() => { + return fetchWasm(wasmInput, imports); + }); + } + catch (_) { + source = fetchWasm(wasmInput, imports); + } + } + else { + source = fetchWasm(wasmInput, imports); + } + return source; +} +/** @public */ +function asyncifyLoad(asyncify, urlOrBuffer, imports) { + validateImports(imports); + imports = imports !== null && imports !== void 0 ? imports : {}; + const asyncifyHelper = new Asyncify(); + imports = asyncifyHelper.wrapImports(imports); + return load(urlOrBuffer, imports).then(source => { + var _a; + const memory = source.instance.exports.memory || ((_a = imports.env) === null || _a === void 0 ? void 0 : _a.memory); + return { module: source.module, instance: asyncifyHelper.init(memory, source.instance, asyncify) }; + }); +} +/** @public */ +function loadSync(wasmInput, imports) { + validateImports(imports); + imports = imports !== null && imports !== void 0 ? imports : {}; + let module; + if ((wasmInput instanceof ArrayBuffer) || ArrayBuffer.isView(wasmInput)) { + module = new _WebAssembly.Module(wasmInput); + } + else if (wasmInput instanceof WebAssembly.Module) { + module = wasmInput; + } + else { + throw new TypeError('Invalid source'); + } + const instance = new _WebAssembly.Instance(module, imports); + const source = { instance, module }; + return source; +} +/** @public */ +function asyncifyLoadSync(asyncify, buffer, imports) { + var _a; + validateImports(imports); + imports = imports !== null && imports !== void 0 ? imports : {}; + const asyncifyHelper = new Asyncify(); + imports = asyncifyHelper.wrapImports(imports); + const source = loadSync(buffer, imports); + const memory = source.instance.exports.memory || ((_a = imports.env) === null || _a === void 0 ? void 0 : _a.memory); + return { module: source.module, instance: asyncifyHelper.init(memory, source.instance, asyncify) }; +} + +const CHAR_DOT = 46; /* . */ +const CHAR_FORWARD_SLASH = 47; /* / */ +function isPosixPathSeparator(code) { + return code === CHAR_FORWARD_SLASH; +} +function normalizeString(path, allowAboveRoot, separator, isPathSeparator) { + let res = ''; + let lastSegmentLength = 0; + let lastSlash = -1; + let dots = 0; + let code = 0; + for (let i = 0; i <= path.length; ++i) { + if (i < path.length) { + code = path.charCodeAt(i); + } + else if (isPathSeparator(code)) { + break; + } + else { + code = CHAR_FORWARD_SLASH; + } + if (isPathSeparator(code)) { + if (lastSlash === i - 1 || dots === 1) ; + else if (dots === 2) { + if (res.length < 2 || lastSegmentLength !== 2 || + res.charCodeAt(res.length - 1) !== CHAR_DOT || + res.charCodeAt(res.length - 2) !== CHAR_DOT) { + if (res.length > 2) { + const lastSlashIndex = res.indexOf(separator); + if (lastSlashIndex === -1) { + res = ''; + lastSegmentLength = 0; + } + else { + res = res.slice(0, lastSlashIndex); + lastSegmentLength = + res.length - 1 - res.indexOf(separator); + } + lastSlash = i; + dots = 0; + continue; + } + else if (res.length !== 0) { + res = ''; + lastSegmentLength = 0; + lastSlash = i; + dots = 0; + continue; + } + } + if (allowAboveRoot) { + res += res.length > 0 ? `${separator}..` : '..'; + lastSegmentLength = 2; + } + } + else { + if (res.length > 0) { + res += `${separator}${path.slice(lastSlash + 1, i)}`; + } + else { + res = path.slice(lastSlash + 1, i); + } + lastSegmentLength = i - lastSlash - 1; + } + lastSlash = i; + dots = 0; + } + else if (code === CHAR_DOT && dots !== -1) { + ++dots; + } + else { + dots = -1; + } + } + return res; +} +function resolve(...args) { + let resolvedPath = ''; + let resolvedAbsolute = false; + for (let i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) { + const path = i >= 0 ? args[i] : '/'; + validateString(path, 'path'); + // Skip empty entries + if (path.length === 0) { + continue; + } + resolvedPath = `${path}/${resolvedPath}`; + resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + } + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + // Normalize the path + resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, '/', isPosixPathSeparator); + if (resolvedAbsolute) { + return `/${resolvedPath}`; + } + return resolvedPath.length > 0 ? resolvedPath : '.'; +} + +const FD_DATASYNC = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(0)); +const FD_READ = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(1)); +const FD_SEEK = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(2)); +const FD_FDSTAT_SET_FLAGS = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(3)); +const FD_SYNC = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(4)); +const FD_TELL = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(5)); +const FD_WRITE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(6)); +const FD_ADVISE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(7)); +const FD_ALLOCATE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(8)); +const PATH_CREATE_DIRECTORY = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(9)); +const PATH_CREATE_FILE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(10)); +const PATH_LINK_SOURCE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(11)); +const PATH_LINK_TARGET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(12)); +const PATH_OPEN = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(13)); +const FD_READDIR = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(14)); +const PATH_READLINK = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(15)); +const PATH_RENAME_SOURCE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(16)); +const PATH_RENAME_TARGET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(17)); +const PATH_FILESTAT_GET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(18)); +const PATH_FILESTAT_SET_SIZE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(19)); +const PATH_FILESTAT_SET_TIMES = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(20)); +const FD_FILESTAT_GET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(21)); +const FD_FILESTAT_SET_SIZE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(22)); +const FD_FILESTAT_SET_TIMES = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(23)); +const PATH_SYMLINK = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(24)); +const PATH_REMOVE_DIRECTORY = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(25)); +const PATH_UNLINK_FILE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(26)); +const POLL_FD_READWRITE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(27)); +const SOCK_SHUTDOWN = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(28)); +const SOCK_ACCEPT = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(29)); +const WasiRights = { + FD_DATASYNC, + FD_READ, + FD_SEEK, + FD_FDSTAT_SET_FLAGS, + FD_SYNC, + FD_TELL, + FD_WRITE, + FD_ADVISE, + FD_ALLOCATE, + PATH_CREATE_DIRECTORY, + PATH_CREATE_FILE, + PATH_LINK_SOURCE, + PATH_LINK_TARGET, + PATH_OPEN, + FD_READDIR, + PATH_READLINK, + PATH_RENAME_SOURCE, + PATH_RENAME_TARGET, + PATH_FILESTAT_GET, + PATH_FILESTAT_SET_SIZE, + PATH_FILESTAT_SET_TIMES, + FD_FILESTAT_GET, + FD_FILESTAT_SET_SIZE, + FD_FILESTAT_SET_TIMES, + PATH_SYMLINK, + PATH_REMOVE_DIRECTORY, + PATH_UNLINK_FILE, + POLL_FD_READWRITE, + SOCK_SHUTDOWN, + SOCK_ACCEPT +}; + +function strerror(errno) { + switch (errno) { + case 0 /* WasiErrno.ESUCCESS */: return 'Success'; + case 1 /* WasiErrno.E2BIG */: return 'Argument list too long'; + case 2 /* WasiErrno.EACCES */: return 'Permission denied'; + case 3 /* WasiErrno.EADDRINUSE */: return 'Address in use'; + case 4 /* WasiErrno.EADDRNOTAVAIL */: return 'Address not available'; + case 5 /* WasiErrno.EAFNOSUPPORT */: return 'Address family not supported by protocol'; + case 6 /* WasiErrno.EAGAIN */: return 'Resource temporarily unavailable'; + case 7 /* WasiErrno.EALREADY */: return 'Operation already in progress'; + case 8 /* WasiErrno.EBADF */: return 'Bad file descriptor'; + case 9 /* WasiErrno.EBADMSG */: return 'Bad message'; + case 10 /* WasiErrno.EBUSY */: return 'Resource busy'; + case 11 /* WasiErrno.ECANCELED */: return 'Operation canceled'; + case 12 /* WasiErrno.ECHILD */: return 'No child process'; + case 13 /* WasiErrno.ECONNABORTED */: return 'Connection aborted'; + case 14 /* WasiErrno.ECONNREFUSED */: return 'Connection refused'; + case 15 /* WasiErrno.ECONNRESET */: return 'Connection reset by peer'; + case 16 /* WasiErrno.EDEADLK */: return 'Resource deadlock would occur'; + case 17 /* WasiErrno.EDESTADDRREQ */: return 'Destination address required'; + case 18 /* WasiErrno.EDOM */: return 'Domain error'; + case 19 /* WasiErrno.EDQUOT */: return 'Quota exceeded'; + case 20 /* WasiErrno.EEXIST */: return 'File exists'; + case 21 /* WasiErrno.EFAULT */: return 'Bad address'; + case 22 /* WasiErrno.EFBIG */: return 'File too large'; + case 23 /* WasiErrno.EHOSTUNREACH */: return 'Host is unreachable'; + case 24 /* WasiErrno.EIDRM */: return 'Identifier removed'; + case 25 /* WasiErrno.EILSEQ */: return 'Illegal byte sequence'; + case 26 /* WasiErrno.EINPROGRESS */: return 'Operation in progress'; + case 27 /* WasiErrno.EINTR */: return 'Interrupted system call'; + case 28 /* WasiErrno.EINVAL */: return 'Invalid argument'; + case 29 /* WasiErrno.EIO */: return 'I/O error'; + case 30 /* WasiErrno.EISCONN */: return 'Socket is connected'; + case 31 /* WasiErrno.EISDIR */: return 'Is a directory'; + case 32 /* WasiErrno.ELOOP */: return 'Symbolic link loop'; + case 33 /* WasiErrno.EMFILE */: return 'No file descriptors available'; + case 34 /* WasiErrno.EMLINK */: return 'Too many links'; + case 35 /* WasiErrno.EMSGSIZE */: return 'Message too large'; + case 36 /* WasiErrno.EMULTIHOP */: return 'Multihop attempted'; + case 37 /* WasiErrno.ENAMETOOLONG */: return 'Filename too long'; + case 38 /* WasiErrno.ENETDOWN */: return 'Network is down'; + case 39 /* WasiErrno.ENETRESET */: return 'Connection reset by network'; + case 40 /* WasiErrno.ENETUNREACH */: return 'Network unreachable'; + case 41 /* WasiErrno.ENFILE */: return 'Too many files open in system'; + case 42 /* WasiErrno.ENOBUFS */: return 'No buffer space available'; + case 43 /* WasiErrno.ENODEV */: return 'No such device'; + case 44 /* WasiErrno.ENOENT */: return 'No such file or directory'; + case 45 /* WasiErrno.ENOEXEC */: return 'Exec format error'; + case 46 /* WasiErrno.ENOLCK */: return 'No locks available'; + case 47 /* WasiErrno.ENOLINK */: return 'Link has been severed'; + case 48 /* WasiErrno.ENOMEM */: return 'Out of memory'; + case 49 /* WasiErrno.ENOMSG */: return 'No message of the desired type'; + case 50 /* WasiErrno.ENOPROTOOPT */: return 'Protocol not available'; + case 51 /* WasiErrno.ENOSPC */: return 'No space left on device'; + case 52 /* WasiErrno.ENOSYS */: return 'Function not implemented'; + case 53 /* WasiErrno.ENOTCONN */: return 'Socket not connected'; + case 54 /* WasiErrno.ENOTDIR */: return 'Not a directory'; + case 55 /* WasiErrno.ENOTEMPTY */: return 'Directory not empty'; + case 56 /* WasiErrno.ENOTRECOVERABLE */: return 'State not recoverable'; + case 57 /* WasiErrno.ENOTSOCK */: return 'Not a socket'; + case 58 /* WasiErrno.ENOTSUP */: return 'Not supported'; + case 59 /* WasiErrno.ENOTTY */: return 'Not a tty'; + case 60 /* WasiErrno.ENXIO */: return 'No such device or address'; + case 61 /* WasiErrno.EOVERFLOW */: return 'Value too large for data type'; + case 62 /* WasiErrno.EOWNERDEAD */: return 'Previous owner died'; + case 63 /* WasiErrno.EPERM */: return 'Operation not permitted'; + case 64 /* WasiErrno.EPIPE */: return 'Broken pipe'; + case 65 /* WasiErrno.EPROTO */: return 'Protocol error'; + case 66 /* WasiErrno.EPROTONOSUPPORT */: return 'Protocol not supported'; + case 67 /* WasiErrno.EPROTOTYPE */: return 'Protocol wrong type for socket'; + case 68 /* WasiErrno.ERANGE */: return 'Result not representable'; + case 69 /* WasiErrno.EROFS */: return 'Read-only file system'; + case 70 /* WasiErrno.ESPIPE */: return 'Invalid seek'; + case 71 /* WasiErrno.ESRCH */: return 'No such process'; + case 72 /* WasiErrno.ESTALE */: return 'Stale file handle'; + case 73 /* WasiErrno.ETIMEDOUT */: return 'Operation timed out'; + case 74 /* WasiErrno.ETXTBSY */: return 'Text file busy'; + case 75 /* WasiErrno.EXDEV */: return 'Cross-device link'; + case 76 /* WasiErrno.ENOTCAPABLE */: return 'Capabilities insufficient'; + default: return 'Unknown error'; + } +} +class WasiError extends Error { + constructor(message, errno) { + super(message); + this.errno = errno; + } + getErrorMessage() { + return strerror(this.errno); + } +} +Object.defineProperty(WasiError.prototype, 'name', { + configurable: true, + writable: true, + value: 'WasiError' +}); + +const RIGHTS_ALL = WasiRights.FD_DATASYNC | + WasiRights.FD_READ | + WasiRights.FD_SEEK | + WasiRights.FD_FDSTAT_SET_FLAGS | + WasiRights.FD_SYNC | + WasiRights.FD_TELL | + WasiRights.FD_WRITE | + WasiRights.FD_ADVISE | + WasiRights.FD_ALLOCATE | + WasiRights.PATH_CREATE_DIRECTORY | + WasiRights.PATH_CREATE_FILE | + WasiRights.PATH_LINK_SOURCE | + WasiRights.PATH_LINK_TARGET | + WasiRights.PATH_OPEN | + WasiRights.FD_READDIR | + WasiRights.PATH_READLINK | + WasiRights.PATH_RENAME_SOURCE | + WasiRights.PATH_RENAME_TARGET | + WasiRights.PATH_FILESTAT_GET | + WasiRights.PATH_FILESTAT_SET_SIZE | + WasiRights.PATH_FILESTAT_SET_TIMES | + WasiRights.FD_FILESTAT_GET | + WasiRights.FD_FILESTAT_SET_TIMES | + WasiRights.FD_FILESTAT_SET_SIZE | + WasiRights.PATH_SYMLINK | + WasiRights.PATH_UNLINK_FILE | + WasiRights.PATH_REMOVE_DIRECTORY | + WasiRights.POLL_FD_READWRITE | + WasiRights.SOCK_SHUTDOWN | + WasiRights.SOCK_ACCEPT; +const BLOCK_DEVICE_BASE = RIGHTS_ALL; +const BLOCK_DEVICE_INHERITING = RIGHTS_ALL; +const CHARACTER_DEVICE_BASE = RIGHTS_ALL; +const CHARACTER_DEVICE_INHERITING = RIGHTS_ALL; +const REGULAR_FILE_BASE = WasiRights.FD_DATASYNC | + WasiRights.FD_READ | + WasiRights.FD_SEEK | + WasiRights.FD_FDSTAT_SET_FLAGS | + WasiRights.FD_SYNC | + WasiRights.FD_TELL | + WasiRights.FD_WRITE | + WasiRights.FD_ADVISE | + WasiRights.FD_ALLOCATE | + WasiRights.FD_FILESTAT_GET | + WasiRights.FD_FILESTAT_SET_SIZE | + WasiRights.FD_FILESTAT_SET_TIMES | + WasiRights.POLL_FD_READWRITE; +const REGULAR_FILE_INHERITING = /*#__PURE__*/ BigInt(0); +const DIRECTORY_BASE = WasiRights.FD_FDSTAT_SET_FLAGS | + WasiRights.FD_SYNC | + WasiRights.FD_ADVISE | + WasiRights.PATH_CREATE_DIRECTORY | + WasiRights.PATH_CREATE_FILE | + WasiRights.PATH_LINK_SOURCE | + WasiRights.PATH_LINK_TARGET | + WasiRights.PATH_OPEN | + WasiRights.FD_READDIR | + WasiRights.PATH_READLINK | + WasiRights.PATH_RENAME_SOURCE | + WasiRights.PATH_RENAME_TARGET | + WasiRights.PATH_FILESTAT_GET | + WasiRights.PATH_FILESTAT_SET_SIZE | + WasiRights.PATH_FILESTAT_SET_TIMES | + WasiRights.FD_FILESTAT_GET | + WasiRights.FD_FILESTAT_SET_TIMES | + WasiRights.PATH_SYMLINK | + WasiRights.PATH_UNLINK_FILE | + WasiRights.PATH_REMOVE_DIRECTORY | + WasiRights.POLL_FD_READWRITE; +const DIRECTORY_INHERITING = DIRECTORY_BASE | REGULAR_FILE_BASE; +const SOCKET_BASE = (WasiRights.FD_READ | + WasiRights.FD_FDSTAT_SET_FLAGS | + WasiRights.FD_WRITE | + WasiRights.FD_FILESTAT_GET | + WasiRights.POLL_FD_READWRITE | + WasiRights.SOCK_SHUTDOWN); +const SOCKET_INHERITING = RIGHTS_ALL; +const TTY_BASE = WasiRights.FD_READ | + WasiRights.FD_FDSTAT_SET_FLAGS | + WasiRights.FD_WRITE | + WasiRights.FD_FILESTAT_GET | + WasiRights.POLL_FD_READWRITE; +const TTY_INHERITING = /*#__PURE__*/ BigInt(0); +function getRights(stdio, fd, flags, type) { + const ret = { + base: BigInt(0), + inheriting: BigInt(0) + }; + if (type === 0 /* WasiFileType.UNKNOWN */) { + throw new WasiError('Unknown file type', 28 /* WasiErrno.EINVAL */); + } + switch (type) { + case 4 /* WasiFileType.REGULAR_FILE */: + ret.base = REGULAR_FILE_BASE; + ret.inheriting = REGULAR_FILE_INHERITING; + break; + case 3 /* WasiFileType.DIRECTORY */: + ret.base = DIRECTORY_BASE; + ret.inheriting = DIRECTORY_INHERITING; + break; + case 6 /* WasiFileType.SOCKET_STREAM */: + case 5 /* WasiFileType.SOCKET_DGRAM */: + ret.base = SOCKET_BASE; + ret.inheriting = SOCKET_INHERITING; + break; + case 2 /* WasiFileType.CHARACTER_DEVICE */: + if (stdio.indexOf(fd) !== -1) { + ret.base = TTY_BASE; + ret.inheriting = TTY_INHERITING; + } + else { + ret.base = CHARACTER_DEVICE_BASE; + ret.inheriting = CHARACTER_DEVICE_INHERITING; + } + break; + case 1 /* WasiFileType.BLOCK_DEVICE */: + ret.base = BLOCK_DEVICE_BASE; + ret.inheriting = BLOCK_DEVICE_INHERITING; + break; + default: + ret.base = BigInt(0); + ret.inheriting = BigInt(0); + } + /* Disable read/write bits depending on access mode. */ + const read_or_write_only = flags & (0 | 1 | 2); + if (read_or_write_only === 0) { + ret.base &= ~WasiRights.FD_WRITE; + } + else if (read_or_write_only === 1) { + ret.base &= ~WasiRights.FD_READ; + } + return ret; +} + +function concatBuffer(buffers, size) { + let total = 0; + if (typeof size === 'number' && size >= 0) { + total = size; + } + else { + for (let i = 0; i < buffers.length; i++) { + const buffer = buffers[i]; + total += buffer.length; + } + } + let pos = 0; + const ret = new Uint8Array(total); + for (let i = 0; i < buffers.length; i++) { + const buffer = buffers[i]; + ret.set(buffer, pos); + pos += buffer.length; + } + return ret; +} +class FileDescriptor { + constructor(id, fd, path, realPath, type, rightsBase, rightsInheriting, preopen) { + this.id = id; + this.fd = fd; + this.path = path; + this.realPath = realPath; + this.type = type; + this.rightsBase = rightsBase; + this.rightsInheriting = rightsInheriting; + this.preopen = preopen; + this.pos = BigInt(0); + this.size = BigInt(0); + } + seek(offset, whence) { + if (whence === 0 /* WasiWhence.SET */) { + this.pos = BigInt(offset); + } + else if (whence === 1 /* WasiWhence.CUR */) { + this.pos += BigInt(offset); + } + else if (whence === 2 /* WasiWhence.END */) { + this.pos = BigInt(this.size) - BigInt(offset); + } + else { + throw new WasiError('Unknown whence', 29 /* WasiErrno.EIO */); + } + return this.pos; + } +} +class StandardOutput extends FileDescriptor { + constructor(log, id, fd, path, realPath, type, rightsBase, rightsInheriting, preopen) { + super(id, fd, path, realPath, type, rightsBase, rightsInheriting, preopen); + this._log = log; + this._buf = null; + } + write(buffer) { + const originalBuffer = buffer; + if (this._buf) { + buffer = concatBuffer([this._buf, buffer]); + this._buf = null; + } + if (buffer.indexOf(10) === -1) { + this._buf = buffer; + return originalBuffer.byteLength; + } + let written = 0; + let lastBegin = 0; + let index; + while ((index = buffer.indexOf(10, written)) !== -1) { + const str = new TextDecoder().decode(buffer.subarray(lastBegin, index)); + this._log(str); + written += index - lastBegin + 1; + lastBegin = index + 1; + } + if (written < buffer.length) { + this._buf = buffer.slice(written); + } + return originalBuffer.byteLength; + } +} +function toFileType(stat) { + if (stat.isBlockDevice()) + return 1 /* WasiFileType.BLOCK_DEVICE */; + if (stat.isCharacterDevice()) + return 2 /* WasiFileType.CHARACTER_DEVICE */; + if (stat.isDirectory()) + return 3 /* WasiFileType.DIRECTORY */; + if (stat.isSocket()) + return 6 /* WasiFileType.SOCKET_STREAM */; + if (stat.isFile()) + return 4 /* WasiFileType.REGULAR_FILE */; + if (stat.isSymbolicLink()) + return 7 /* WasiFileType.SYMBOLIC_LINK */; + return 0 /* WasiFileType.UNKNOWN */; +} +function toFileStat(view, buf, stat) { + view.setBigUint64(buf, stat.dev, true); + view.setBigUint64(buf + 8, stat.ino, true); + view.setBigUint64(buf + 16, BigInt(toFileType(stat)), true); + view.setBigUint64(buf + 24, stat.nlink, true); + view.setBigUint64(buf + 32, stat.size, true); + view.setBigUint64(buf + 40, stat.atimeMs * BigInt(1000000), true); + view.setBigUint64(buf + 48, stat.mtimeMs * BigInt(1000000), true); + view.setBigUint64(buf + 56, stat.ctimeMs * BigInt(1000000), true); +} +class FileDescriptorTable { + constructor(options) { + this.used = 0; + this.size = options.size; + this.fds = Array(options.size); + this.stdio = [options.in, options.out, options.err]; + this.print = options.print; + this.printErr = options.printErr; + this.insertStdio(options.in, 0, ''); + this.insertStdio(options.out, 1, ''); + this.insertStdio(options.err, 2, ''); + } + insertStdio(fd, expected, name) { + const type = 2 /* WasiFileType.CHARACTER_DEVICE */; + const { base, inheriting } = getRights(this.stdio, fd, 2 /* FileControlFlag.O_RDWR */, type); + const wrap = this.insert(fd, name, name, type, base, inheriting, 0); + if (wrap.id !== expected) { + throw new WasiError(`id: ${wrap.id} !== expected: ${expected}`, 8 /* WasiErrno.EBADF */); + } + return wrap; + } + insert(fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen) { + var _a, _b; + let index = -1; + if (this.used >= this.size) { + const newSize = this.size * 2; + this.fds.length = newSize; + index = this.size; + this.size = newSize; + } + else { + for (let i = 0; i < this.size; ++i) { + if (this.fds[i] == null) { + index = i; + break; + } + } + } + let entry; + if (mappedPath === '') { + entry = new StandardOutput((_a = this.print) !== null && _a !== void 0 ? _a : console.log, index, fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen); + } + else if (mappedPath === '') { + entry = new StandardOutput((_b = this.printErr) !== null && _b !== void 0 ? _b : console.error, index, fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen); + } + else { + entry = new FileDescriptor(index, fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen); + } + this.fds[index] = entry; + this.used++; + return entry; + } + get(id, base, inheriting) { + if (id >= this.size) { + throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); + } + const entry = this.fds[id]; + if (!entry || entry.id !== id) { + throw new WasiError('Bad file descriptor', 8 /* WasiErrno.EBADF */); + } + /* Validate that the fd has the necessary rights. */ + if ((~entry.rightsBase & base) !== BigInt(0) || (~entry.rightsInheriting & inheriting) !== BigInt(0)) { + throw new WasiError('Capabilities insufficient', 76 /* WasiErrno.ENOTCAPABLE */); + } + return entry; + } + remove(id) { + if (id >= this.size) { + throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); + } + const entry = this.fds[id]; + if (!entry || entry.id !== id) { + throw new WasiError('Bad file descriptor', 8 /* WasiErrno.EBADF */); + } + this.fds[id] = undefined; + this.used--; + } +} +class SyncTable extends FileDescriptorTable { + constructor(options) { + super(options); + this.fs = options.fs; + } + getFileTypeByFd(fd) { + const stats = this.fs.fstatSync(fd, { bigint: true }); + return toFileType(stats); + } + insertPreopen(fd, mappedPath, realPath) { + const type = this.getFileTypeByFd(fd); + if (type !== 3 /* WasiFileType.DIRECTORY */) { + throw new WasiError(`Preopen not dir: ["${mappedPath}", "${realPath}"]`, 54 /* WasiErrno.ENOTDIR */); + } + const result = getRights(this.stdio, fd, 0, type); + return this.insert(fd, mappedPath, realPath, type, result.base, result.inheriting, 1); + } + renumber(dst, src) { + if (dst === src) + return; + if (dst >= this.size || src >= this.size) { + throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); + } + const dstEntry = this.fds[dst]; + const srcEntry = this.fds[src]; + if (!dstEntry || !srcEntry || dstEntry.id !== dst || srcEntry.id !== src) { + throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); + } + this.fs.closeSync(dstEntry.fd); + this.fds[dst] = this.fds[src]; + this.fds[dst].id = dst; + this.fds[src] = undefined; + this.used--; + } +} +class AsyncTable extends FileDescriptorTable { + // eslint-disable-next-line @typescript-eslint/no-useless-constructor + constructor(options) { + super(options); + } + async getFileTypeByFd(fd) { + const stats = await fd.stat({ bigint: true }); + return toFileType(stats); + } + async insertPreopen(fd, mappedPath, realPath) { + const type = await this.getFileTypeByFd(fd); + if (type !== 3 /* WasiFileType.DIRECTORY */) { + throw new WasiError(`Preopen not dir: ["${mappedPath}", "${realPath}"]`, 54 /* WasiErrno.ENOTDIR */); + } + const result = getRights(this.stdio, fd.fd, 0, type); + return this.insert(fd, mappedPath, realPath, type, result.base, result.inheriting, 1); + } + async renumber(dst, src) { + if (dst === src) + return; + if (dst >= this.size || src >= this.size) { + throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); + } + const dstEntry = this.fds[dst]; + const srcEntry = this.fds[src]; + if (!dstEntry || !srcEntry || dstEntry.id !== dst || srcEntry.id !== src) { + throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); + } + await dstEntry.fd.close(); + this.fds[dst] = this.fds[src]; + this.fds[dst].id = dst; + this.fds[src] = undefined; + this.used--; + } +} + +/** @public */ +const WebAssemblyMemory = /*#__PURE__*/ (function () { return _WebAssembly.Memory; })(); +/** @public */ +class Memory extends WebAssemblyMemory { + // eslint-disable-next-line @typescript-eslint/no-useless-constructor + constructor(descriptor) { + super(descriptor); + } + get HEAP8() { return new Int8Array(super.buffer); } + get HEAPU8() { return new Uint8Array(super.buffer); } + get HEAP16() { return new Int16Array(super.buffer); } + get HEAPU16() { return new Uint16Array(super.buffer); } + get HEAP32() { return new Int32Array(super.buffer); } + get HEAPU32() { return new Uint32Array(super.buffer); } + get HEAP64() { return new BigInt64Array(super.buffer); } + get HEAPU64() { return new BigUint64Array(super.buffer); } + get HEAPF32() { return new Float32Array(super.buffer); } + get HEAPF64() { return new Float64Array(super.buffer); } + get view() { return new DataView(super.buffer); } +} +/** @public */ +function extendMemory(memory) { + if (Object.getPrototypeOf(memory) === _WebAssembly.Memory.prototype) { + Object.setPrototypeOf(memory, Memory.prototype); + } + return memory; +} + +function checkWebAssemblyFunction() { + const WebAssemblyFunction = _WebAssembly.Function; + if (typeof WebAssemblyFunction !== 'function') { + throw new Error('WebAssembly.Function is not supported in this environment.' + + ' If you are using V8 based browser like Chrome, try to specify' + + ' --js-flags="--wasm-staging --experimental-wasm-stack-switching"'); + } + return WebAssemblyFunction; +} +/** @public */ +function wrapAsyncImport(f, parameterType, returnType) { + const WebAssemblyFunction = checkWebAssemblyFunction(); + if (typeof f !== 'function') { + throw new TypeError('Function required'); + } + const parameters = parameterType.slice(0); + parameters.unshift('externref'); + return new WebAssemblyFunction({ parameters, results: returnType }, f, { suspending: 'first' }); +} +/** @public */ +function wrapAsyncExport(f) { + const WebAssemblyFunction = checkWebAssemblyFunction(); + if (typeof f !== 'function') { + throw new TypeError('Function required'); + } + return new WebAssemblyFunction({ parameters: [...WebAssemblyFunction.type(f).parameters.slice(1)], results: ['externref'] }, f, { promising: 'first' }); +} +/** @public */ +function wrapExports(exports, needWrap) { + return wrapInstanceExports(exports, (exportValue, name) => { + let ignore = typeof exportValue !== 'function'; + if (Array.isArray(needWrap)) { + ignore = ignore || (needWrap.indexOf(name) === -1); + } + return ignore ? exportValue : wrapAsyncExport(exportValue); + }); +} + +function copyMemory(targets, src) { + if (targets.length === 0 || src.length === 0) + return 0; + let copied = 0; + let left = src.length - copied; + for (let i = 0; i < targets.length; ++i) { + const target = targets[i]; + if (left < target.length) { + target.set(src.subarray(copied, copied + left), 0); + copied += left; + left = 0; + return copied; + } + target.set(src.subarray(copied, copied + target.length), 0); + copied += target.length; + left -= target.length; + } + return copied; +} +const _memory = new WeakMap(); +const _wasi = new WeakMap(); +const _fs = new WeakMap(); +function getMemory(wasi) { + return _memory.get(wasi); +} +function getFs(wasi) { + const fs = _fs.get(wasi); + if (!fs) + throw new Error('filesystem is unavailable'); + return fs; +} +function handleError(err) { + if (err instanceof WasiError) { + { + console.warn(err); + } + return err.errno; + } + switch (err.code) { + case 'ENOENT': return 44 /* WasiErrno.ENOENT */; + case 'EBADF': return 8 /* WasiErrno.EBADF */; + case 'EINVAL': return 28 /* WasiErrno.EINVAL */; + case 'EPERM': return 63 /* WasiErrno.EPERM */; + case 'EPROTO': return 65 /* WasiErrno.EPROTO */; + case 'EEXIST': return 20 /* WasiErrno.EEXIST */; + case 'ENOTDIR': return 54 /* WasiErrno.ENOTDIR */; + case 'EMFILE': return 33 /* WasiErrno.EMFILE */; + case 'EACCES': return 2 /* WasiErrno.EACCES */; + case 'EISDIR': return 31 /* WasiErrno.EISDIR */; + case 'ENOTEMPTY': return 55 /* WasiErrno.ENOTEMPTY */; + case 'ENOSYS': return 52 /* WasiErrno.ENOSYS */; + } + throw err; +} +function defineName(name, f) { + Object.defineProperty(f, 'name', { value: name }); + return f; +} +function tryCall(f, wasi, args) { + let r; + try { + r = f.apply(wasi, args); + } + catch (err) { + return handleError(err); + } + if (isPromiseLike(r)) { + return r.then(_ => _, handleError); + } + return r; +} +function syscallWrap(self, name, f) { + let debug = false; + const NODE_DEBUG_NATIVE = (() => { + try { + return "wasi"; + } + catch (_) { + return undefined; + } + })(); + if (typeof NODE_DEBUG_NATIVE === 'string' && NODE_DEBUG_NATIVE.split(',').includes('wasi')) { + debug = true; + } + return debug + ? defineName(name, function () { + const args = Array.prototype.slice.call(arguments); + let debugArgs = [`${name}(${Array.from({ length: arguments.length }).map(() => '%d').join(', ')})`]; + debugArgs = debugArgs.concat(args); + console.debug.apply(console, debugArgs); + return tryCall(f, self, args); + }) + : defineName(name, function () { + return tryCall(f, self, arguments); + }); +} +function resolvePathSync(fs, fileDescriptor, path, flags) { + let resolvedPath = resolve(fileDescriptor.realPath, path); + if ((flags & 1) === 1) { + try { + resolvedPath = fs.readlinkSync(resolvedPath); + } + catch (err) { + if (err.code !== 'EINVAL' && err.code !== 'ENOENT') { + throw err; + } + } + } + return resolvedPath; +} +async function resolvePathAsync(fs, fileDescriptor, path, flags) { + let resolvedPath = resolve(fileDescriptor.realPath, path); + if ((flags & 1) === 1) { + try { + resolvedPath = await fs.promises.readlink(resolvedPath); + } + catch (err) { + if (err.code !== 'EINVAL' && err.code !== 'ENOENT') { + throw err; + } + } + } + return resolvedPath; +} +// eslint-disable-next-line spaced-comment +const encoder = /*#__PURE__*/ new TextEncoder(); +// eslint-disable-next-line spaced-comment +const decoder = /*#__PURE__*/ new TextDecoder(); +const INT64_MAX = (BigInt(1) << BigInt(63)) - BigInt(1); +function readStdin() { + const value = window.prompt(); + if (value === null) + return new Uint8Array(); + const buffer = new TextEncoder().encode(value + '\n'); + return buffer; +} +function validateFstFlagsOrReturn(flags) { + return (Boolean((flags) & ~(1 /* WasiFstFlag.SET_ATIM */ | 2 /* WasiFstFlag.SET_ATIM_NOW */ | + 4 /* WasiFstFlag.SET_MTIM */ | 8 /* WasiFstFlag.SET_MTIM_NOW */)) || + ((flags) & (1 /* WasiFstFlag.SET_ATIM */ | 2 /* WasiFstFlag.SET_ATIM_NOW */)) === + (1 /* WasiFstFlag.SET_ATIM */ | 2 /* WasiFstFlag.SET_ATIM_NOW */) || + ((flags) & (4 /* WasiFstFlag.SET_MTIM */ | 8 /* WasiFstFlag.SET_MTIM_NOW */)) === + (4 /* WasiFstFlag.SET_MTIM */ | 8 /* WasiFstFlag.SET_MTIM_NOW */)); +} +class WASI$1 { + constructor(args, env, fds, asyncFs, fs, asyncify) { + this.args_get = syscallWrap(this, 'args_get', function (argv, argv_buf) { + argv = Number(argv); + argv_buf = Number(argv_buf); + if (argv === 0 || argv_buf === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const args = wasi.args; + for (let i = 0; i < args.length; ++i) { + const arg = args[i]; + view.setInt32(argv, argv_buf, true); + argv += 4; + const data = encoder.encode(arg + '\0'); + HEAPU8.set(data, argv_buf); + argv_buf += data.length; + } + return 0 /* WasiErrno.ESUCCESS */; + }); + this.args_sizes_get = syscallWrap(this, 'args_sizes_get', function (argc, argv_buf_size) { + argc = Number(argc); + argv_buf_size = Number(argv_buf_size); + if (argc === 0 || argv_buf_size === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { view } = getMemory(this); + const wasi = _wasi.get(this); + const args = wasi.args; + view.setUint32(argc, args.length, true); + view.setUint32(argv_buf_size, encoder.encode(args.join('\0') + '\0').length, true); + return 0 /* WasiErrno.ESUCCESS */; + }); + this.environ_get = syscallWrap(this, 'environ_get', function (environ, environ_buf) { + environ = Number(environ); + environ_buf = Number(environ_buf); + if (environ === 0 || environ_buf === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const env = wasi.env; + for (let i = 0; i < env.length; ++i) { + const pair = env[i]; + view.setInt32(environ, environ_buf, true); + environ += 4; + const data = encoder.encode(pair + '\0'); + HEAPU8.set(data, environ_buf); + environ_buf += data.length; + } + return 0 /* WasiErrno.ESUCCESS */; + }); + this.environ_sizes_get = syscallWrap(this, 'environ_sizes_get', function (len, buflen) { + len = Number(len); + buflen = Number(buflen); + if (len === 0 || buflen === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { view } = getMemory(this); + const wasi = _wasi.get(this); + view.setUint32(len, wasi.env.length, true); + view.setUint32(buflen, encoder.encode(wasi.env.join('\0') + '\0').length, true); + return 0 /* WasiErrno.ESUCCESS */; + }); + this.clock_res_get = syscallWrap(this, 'clock_res_get', function (id, resolution) { + resolution = Number(resolution); + if (resolution === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { view } = getMemory(this); + switch (id) { + case 0 /* WasiClockid.REALTIME */: + view.setBigUint64(resolution, BigInt(1000000), true); + return 0 /* WasiErrno.ESUCCESS */; + case 1 /* WasiClockid.MONOTONIC */: + case 2 /* WasiClockid.PROCESS_CPUTIME_ID */: + case 3 /* WasiClockid.THREAD_CPUTIME_ID */: + view.setBigUint64(resolution, BigInt(1000), true); + return 0 /* WasiErrno.ESUCCESS */; + default: return 28 /* WasiErrno.EINVAL */; + } + }); + this.clock_time_get = syscallWrap(this, 'clock_time_get', function (id, _percision, time) { + time = Number(time); + if (time === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { view } = getMemory(this); + switch (id) { + case 0 /* WasiClockid.REALTIME */: + view.setBigUint64(time, BigInt(Date.now()) * BigInt(1000000), true); + return 0 /* WasiErrno.ESUCCESS */; + case 1 /* WasiClockid.MONOTONIC */: + case 2 /* WasiClockid.PROCESS_CPUTIME_ID */: + case 3 /* WasiClockid.THREAD_CPUTIME_ID */: { + const t = performance.now() / 1000; + const s = Math.trunc(t); + const ms = Math.floor((t - s) * 1000); + const result = BigInt(s) * BigInt(1000000000) + BigInt(ms) * BigInt(1000000); + view.setBigUint64(time, result, true); + return 0 /* WasiErrno.ESUCCESS */; + } + default: return 28 /* WasiErrno.EINVAL */; + } + }); + this.fd_advise = syscallWrap(this, 'fd_advise', function (_fd, _offset, _len, _advice) { + return 52 /* WasiErrno.ENOSYS */; + }); + this.fd_fdstat_get = syscallWrap(this, 'fd_fdstat_get', function (fd, fdstat) { + fdstat = Number(fdstat); + if (fdstat === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); + const { view } = getMemory(this); + view.setUint16(fdstat, fileDescriptor.type, true); + view.setUint16(fdstat + 2, 0, true); + view.setBigUint64(fdstat + 8, fileDescriptor.rightsBase, true); + view.setBigUint64(fdstat + 16, fileDescriptor.rightsInheriting, true); + return 0 /* WasiErrno.ESUCCESS */; + }); + this.fd_fdstat_set_flags = syscallWrap(this, 'fd_fdstat_set_flags', function (_fd, _flags) { + return 52 /* WasiErrno.ENOSYS */; + }); + this.fd_fdstat_set_rights = syscallWrap(this, 'fd_fdstat_set_rights', function (fd, rightsBase, rightsInheriting) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); + if ((rightsBase | fileDescriptor.rightsBase) > fileDescriptor.rightsBase) { + return 76 /* WasiErrno.ENOTCAPABLE */; + } + if ((rightsInheriting | fileDescriptor.rightsInheriting) > + fileDescriptor.rightsInheriting) { + return 76 /* WasiErrno.ENOTCAPABLE */; + } + fileDescriptor.rightsBase = rightsBase; + fileDescriptor.rightsInheriting = rightsInheriting; + return 0 /* WasiErrno.ESUCCESS */; + }); + this.fd_prestat_get = syscallWrap(this, 'fd_prestat_get', function (fd, prestat) { + prestat = Number(prestat); + if (prestat === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const wasi = _wasi.get(this); + let fileDescriptor; + try { + fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); + } + catch (err) { + if (err instanceof WasiError) + return err.errno; + throw err; + } + if (fileDescriptor.preopen !== 1) + return 28 /* WasiErrno.EINVAL */; + const { view } = getMemory(this); + // preopen type is dir(0) + view.setUint32(prestat, 0, true); + view.setUint32(prestat + 4, encoder.encode(fileDescriptor.path).length, true); + return 0 /* WasiErrno.ESUCCESS */; + }); + this.fd_prestat_dir_name = syscallWrap(this, 'fd_prestat_dir_name', function (fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); + if (fileDescriptor.preopen !== 1) + return 8 /* WasiErrno.EBADF */; + const buffer = encoder.encode(fileDescriptor.path); + const size = buffer.length; + if (size > path_len) + return 42 /* WasiErrno.ENOBUFS */; + const { HEAPU8 } = getMemory(this); + HEAPU8.set(buffer, path); + return 0 /* WasiErrno.ESUCCESS */; + }); + this.fd_seek = syscallWrap(this, 'fd_seek', function (fd, offset, whence, newOffset) { + newOffset = Number(newOffset); + if (newOffset === 0) { + return 28 /* WasiErrno.EINVAL */; + } + if (fd === 0 || fd === 1 || fd === 2) + return 0 /* WasiErrno.ESUCCESS */; + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_SEEK, BigInt(0)); + const r = fileDescriptor.seek(offset, whence); + const { view } = getMemory(this); + view.setBigUint64(newOffset, r, true); + return 0 /* WasiErrno.ESUCCESS */; + }); + this.fd_tell = syscallWrap(this, 'fd_tell', function (fd, offset) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_TELL, BigInt(0)); + const pos = BigInt(fileDescriptor.pos); + const { view } = getMemory(this); + view.setBigUint64(Number(offset), pos, true); + return 0 /* WasiErrno.ESUCCESS */; + }); + this.poll_oneoff = syscallWrap(this, 'poll_oneoff', function (in_ptr, out_ptr, nsubscriptions, nevents) { + in_ptr = Number(in_ptr); + out_ptr = Number(out_ptr); + nevents = Number(nevents); + nsubscriptions = Number(nsubscriptions); + nsubscriptions = nsubscriptions >>> 0; + if (in_ptr === 0 || out_ptr === 0 || nsubscriptions === 0 || nevents === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { view } = getMemory(this); + view.setUint32(nevents, 0, true); + let i = 0; + let timer_userdata = BigInt(0); + let cur_timeout = BigInt(0); + let has_timeout = 0; + let min_timeout = BigInt(0); + let sub; + const subscriptions = Array(nsubscriptions); + for (i = 0; i < nsubscriptions; i++) { + sub = in_ptr + i * 48; + const userdata = view.getBigUint64(sub, true); + const type = view.getUint8(sub + 8); + const clockIdOrFd = view.getUint32(sub + 16, true); + const timeout = view.getBigUint64(sub + 24, true); + const precision = view.getBigUint64(sub + 32, true); + const flags = view.getUint16(sub + 40, true); + subscriptions[i] = { + userdata, + type, + u: { + clock: { + clock_id: clockIdOrFd, + timeout, + precision, + flags + }, + fd_readwrite: { + fd: clockIdOrFd + } + } + }; + } + const fdevents = []; + for (i = 0; i < nsubscriptions; i++) { + sub = subscriptions[i]; + switch (sub.type) { + case 0 /* WasiEventType.CLOCK */: { + if (sub.u.clock.flags === 1 /* WasiSubclockflags.ABSTIME */) { + /* Convert absolute time to relative delay. */ + const now = BigInt(Date.now()) * BigInt(1000000); + cur_timeout = sub.u.clock.timeout - now; + } + else { + cur_timeout = sub.u.clock.timeout; + } + if (has_timeout === 0 || cur_timeout < min_timeout) { + min_timeout = cur_timeout; + timer_userdata = sub.userdata; + has_timeout = 1; + } + break; + } + case 1 /* WasiEventType.FD_READ */: + case 2 /* WasiEventType.FD_WRITE */: + fdevents.push(sub); + break; + default: return 28 /* WasiErrno.EINVAL */; + } + } + if (fdevents.length > 0) { + for (i = 0; i < fdevents.length; i++) { + const fdevent = fdevents[i]; + const event = out_ptr + 32 * i; + view.setBigUint64(event, fdevent.userdata, true); + view.setUint32(event + 8, 52 /* WasiErrno.ENOSYS */, true); + view.setUint32(event + 12, fdevent.type, true); + view.setBigUint64(event + 16, BigInt(0), true); + view.setUint16(event + 24, 0, true); + view.setUint32(nevents, 1, true); + } + view.setUint32(nevents, fdevents.length, true); + return 0 /* WasiErrno.ESUCCESS */; + } + if (has_timeout) { + const delay = Number(min_timeout / BigInt(1000000)); + // if (isMainThread || typeof SharedArrayBuffer !== 'function') { + sleepBreakIf(delay, () => false); + // } else { + // const buf = new SharedArrayBuffer(4) + // const arr = new Int32Array(buf) + // postMsg({ + // __tybys_wasm_util_wasi__: { + // type: 'set-timeout', + // payload: { + // buffer: buf, + // delay + // } + // } + // }) + // Atomics.wait(arr, 0, 0) + // } + const event = out_ptr; + view.setBigUint64(event, timer_userdata, true); + view.setUint32(event + 8, 0 /* WasiErrno.ESUCCESS */, true); + view.setUint32(event + 12, 0 /* WasiEventType.CLOCK */, true); + view.setUint32(nevents, 1, true); + } + return 0 /* WasiErrno.ESUCCESS */; + }); + this.proc_exit = syscallWrap(this, 'proc_exit', function (rval) { + if ((typeof process === 'object') && (process !== null) && (typeof process.exit === 'function')) { + process.exit(rval); + } + return 0 /* WasiErrno.ESUCCESS */; + }); + this.proc_raise = syscallWrap(this, 'proc_raise', function (_sig) { + return 52 /* WasiErrno.ENOSYS */; + }); + this.sched_yield = syscallWrap(this, 'sched_yield', function () { + return 0 /* WasiErrno.ESUCCESS */; + }); + this.random_get = typeof crypto !== 'undefined' && typeof crypto.getRandomValues === 'function' + ? syscallWrap(this, 'random_get', function (buf, buf_len) { + buf = Number(buf); + if (buf === 0) { + return 28 /* WasiErrno.EINVAL */; + } + buf_len = Number(buf_len); + const { HEAPU8, view } = getMemory(this); + if ((typeof SharedArrayBuffer === 'function' && HEAPU8.buffer instanceof SharedArrayBuffer) || + (Object.prototype.toString.call(HEAPU8.buffer) === '[object SharedArrayBuffer]')) { + for (let i = buf; i < buf + buf_len; ++i) { + view.setUint8(i, Math.floor(Math.random() * 256)); + } + return 0 /* WasiErrno.ESUCCESS */; + } + let pos; + const stride = 65536; + for (pos = 0; pos + stride < buf_len; pos += stride) { + crypto.getRandomValues(HEAPU8.subarray(buf + pos, buf + pos + stride)); + } + crypto.getRandomValues(HEAPU8.subarray(buf + pos, buf + buf_len)); + return 0 /* WasiErrno.ESUCCESS */; + }) + : syscallWrap(this, 'random_get', function (buf, buf_len) { + buf = Number(buf); + if (buf === 0) { + return 28 /* WasiErrno.EINVAL */; + } + buf_len = Number(buf_len); + const { view } = getMemory(this); + for (let i = buf; i < buf + buf_len; ++i) { + view.setUint8(i, Math.floor(Math.random() * 256)); + } + return 0 /* WasiErrno.ESUCCESS */; + }); + this.sock_recv = syscallWrap(this, 'sock_recv', function () { + return 58 /* WasiErrno.ENOTSUP */; + }); + this.sock_send = syscallWrap(this, 'sock_send', function () { + return 58 /* WasiErrno.ENOTSUP */; + }); + this.sock_shutdown = syscallWrap(this, 'sock_shutdown', function () { + return 58 /* WasiErrno.ENOTSUP */; + }); + this.sock_accept = syscallWrap(this, 'sock_accept', function () { + return 58 /* WasiErrno.ENOTSUP */; + }); + _wasi.set(this, { + fds, + args, + env + }); + if (fs) + _fs.set(this, fs); + // eslint-disable-next-line @typescript-eslint/no-this-alias + const _this = this; + function defineImport(name, syncVersion, asyncVersion, parameterType, returnType) { + if (asyncFs) { + if (asyncify) { + _this[name] = asyncify.wrapImportFunction(syscallWrap(_this, name, asyncVersion)); + } + else { + _this[name] = wrapAsyncImport(syscallWrap(_this, name, asyncVersion), parameterType, returnType); + } + } + else { + _this[name] = syscallWrap(_this, name, syncVersion); + } + } + defineImport('fd_allocate', function fd_allocate(fd, offset, len) { + const wasi = _wasi.get(this); + const fs = getFs(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_ALLOCATE, BigInt(0)); + const stat = fs.fstatSync(fileDescriptor.fd, { bigint: true }); + if (stat.size < offset + len) { + fs.ftruncateSync(fileDescriptor.fd, Number(offset + len)); + } + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_allocate(fd, offset, len) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_ALLOCATE, BigInt(0)); + const h = fileDescriptor.fd; + const stat = await h.stat({ bigint: true }); + if (stat.size < offset + len) { + await h.truncate(Number(offset + len)); + } + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i64', 'f64'], ['i32']); + defineImport('fd_close', function fd_close(fd) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); + const fs = getFs(this); + fs.closeSync(fileDescriptor.fd); + wasi.fds.remove(fd); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_close(fd) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); + await fileDescriptor.fd.close(); + wasi.fds.remove(fd); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32'], ['i32']); + defineImport('fd_datasync', function fd_datasync(fd) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_DATASYNC, BigInt(0)); + const fs = getFs(this); + fs.fdatasyncSync(fileDescriptor.fd); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_datasync(fd) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_DATASYNC, BigInt(0)); + await fileDescriptor.fd.datasync(); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32'], ['i32']); + defineImport('fd_filestat_get', function fd_filestat_get(fd, buf) { + buf = Number(buf); + if (buf === 0) + return 28 /* WasiErrno.EINVAL */; + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_GET, BigInt(0)); + const fs = getFs(this); + const stat = fs.fstatSync(fileDescriptor.fd, { bigint: true }); + const { view } = getMemory(this); + toFileStat(view, buf, stat); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_filestat_get(fd, buf) { + buf = Number(buf); + if (buf === 0) + return 28 /* WasiErrno.EINVAL */; + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_GET, BigInt(0)); + const h = fileDescriptor.fd; + const stat = await h.stat({ bigint: true }); + const { view } = getMemory(this); + toFileStat(view, buf, stat); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32'], ['i32']); + defineImport('fd_filestat_set_size', function fd_filestat_set_size(fd, size) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_SET_SIZE, BigInt(0)); + const fs = getFs(this); + fs.ftruncateSync(fileDescriptor.fd, Number(size)); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_filestat_set_size(fd, size) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_SET_SIZE, BigInt(0)); + const h = fileDescriptor.fd; + await h.truncate(Number(size)); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i64'], ['i32']); + function fdFilestatGetTimes(fd, atim, mtim, flags) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_SET_TIMES, BigInt(0)); + if ((flags & 2 /* WasiFstFlag.SET_ATIM_NOW */) === 2 /* WasiFstFlag.SET_ATIM_NOW */) { + atim = BigInt(Date.now() * 1000000); + } + if ((flags & 8 /* WasiFstFlag.SET_MTIM_NOW */) === 8 /* WasiFstFlag.SET_MTIM_NOW */) { + mtim = BigInt(Date.now() * 1000000); + } + return { fileDescriptor, atim, mtim }; + } + defineImport('fd_filestat_set_times', function fd_filestat_set_times(fd, atim, mtim, flags) { + if (validateFstFlagsOrReturn(flags)) { + return 28 /* WasiErrno.EINVAL */; + } + const { fileDescriptor, atim: atimRes, mtim: mtimRes } = fdFilestatGetTimes.call(this, fd, atim, mtim, flags); + const fs = getFs(this); + fs.futimesSync(fileDescriptor.fd, Number(atimRes), Number(mtimRes)); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_filestat_set_times(fd, atim, mtim, flags) { + if (validateFstFlagsOrReturn(flags)) { + return 28 /* WasiErrno.EINVAL */; + } + const { fileDescriptor, atim: atimRes, mtim: mtimRes } = fdFilestatGetTimes.call(this, fd, atim, mtim, flags); + const h = fileDescriptor.fd; + await h.utimes(Number(atimRes), Number(mtimRes)); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i64', 'i64', 'i32'], ['i32']); + defineImport('fd_pread', function fd_pread(fd, iovs, iovslen, offset, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ | WasiRights.FD_SEEK, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return 0 /* WasiErrno.ESUCCESS */; + } + let totalSize = 0; + const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + totalSize += bufLen; + return HEAPU8.subarray(buf, buf + bufLen); + }); + let nread = 0; + const buffer = (() => { + try { + return new Uint8Array(new SharedArrayBuffer(totalSize)); + } + catch (_) { + return new Uint8Array(totalSize); + } + })(); + buffer._isBuffer = true; + const fs = getFs(this); + const bytesRead = fs.readSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(offset)); + nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; + view.setUint32(size, nread, true); + return 0 /* WasiErrno.ESUCCESS */; + }, async function (fd, iovs, iovslen, offset, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ | WasiRights.FD_SEEK, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return 0 /* WasiErrno.ESUCCESS */; + } + let totalSize = 0; + const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + totalSize += bufLen; + return HEAPU8.subarray(buf, buf + bufLen); + }); + let nread = 0; + const buffer = new Uint8Array(totalSize); + buffer._isBuffer = true; + const { bytesRead } = await fileDescriptor.fd.read(buffer, 0, buffer.length, Number(offset)); + nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; + view.setUint32(size, nread, true); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i64', 'i32'], ['i32']); + defineImport('fd_pwrite', function fd_pwrite(fd, iovs, iovslen, offset, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE | WasiRights.FD_SEEK, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return 0 /* WasiErrno.ESUCCESS */; + } + const buffer = concatBuffer(Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + return HEAPU8.subarray(buf, buf + bufLen); + })); + const fs = getFs(this); + const nwritten = fs.writeSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(offset)); + view.setUint32(size, nwritten, true); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_pwrite(fd, iovs, iovslen, offset, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE | WasiRights.FD_SEEK, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return 0 /* WasiErrno.ESUCCESS */; + } + const buffer = concatBuffer(Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + return HEAPU8.subarray(buf, buf + bufLen); + })); + const { bytesWritten } = await fileDescriptor.fd.write(buffer, 0, buffer.length, Number(offset)); + view.setUint32(size, bytesWritten, true); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i64', 'i32'], ['i32']); + defineImport('fd_read', function fd_read(fd, iovs, iovslen, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return 0 /* WasiErrno.ESUCCESS */; + } + let totalSize = 0; + const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + totalSize += bufLen; + return HEAPU8.subarray(buf, buf + bufLen); + }); + let buffer; + let nread = 0; + if (fd === 0) { + if (typeof window === 'undefined' || typeof window.prompt !== 'function') { + return 58 /* WasiErrno.ENOTSUP */; + } + buffer = readStdin(); + nread = buffer ? copyMemory(ioVecs, buffer) : 0; + } + else { + buffer = (() => { + try { + return new Uint8Array(new SharedArrayBuffer(totalSize)); + } + catch (_) { + return new Uint8Array(totalSize); + } + })(); + buffer._isBuffer = true; + const fs = getFs(this); + const bytesRead = fs.readSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(fileDescriptor.pos)); + nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; + fileDescriptor.pos += BigInt(nread); + } + view.setUint32(size, nread, true); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_read(fd, iovs, iovslen, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return 0 /* WasiErrno.ESUCCESS */; + } + let totalSize = 0; + const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + totalSize += bufLen; + return HEAPU8.subarray(buf, buf + bufLen); + }); + let buffer; + let nread = 0; + if (fd === 0) { + if (typeof window === 'undefined' || typeof window.prompt !== 'function') { + return 58 /* WasiErrno.ENOTSUP */; + } + buffer = readStdin(); + nread = buffer ? copyMemory(ioVecs, buffer) : 0; + } + else { + buffer = new Uint8Array(totalSize); + buffer._isBuffer = true; + const { bytesRead } = await fileDescriptor.fd.read(buffer, 0, buffer.length, Number(fileDescriptor.pos)); + nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; + fileDescriptor.pos += BigInt(nread); + } + view.setUint32(size, nread, true); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i32'], ['i32']); + defineImport('fd_readdir', function fd_readdir(fd, buf, buf_len, cookie, bufused) { + buf = Number(buf); + buf_len = Number(buf_len); + bufused = Number(bufused); + if (buf === 0 || bufused === 0) + return 0 /* WasiErrno.ESUCCESS */; + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READDIR, BigInt(0)); + const fs = getFs(this); + const entries = fs.readdirSync(fileDescriptor.realPath, { withFileTypes: true }); + const { HEAPU8, view } = getMemory(this); + let bufferUsed = 0; + for (let i = Number(cookie); i < entries.length; i++) { + const nameData = encoder.encode(entries[i].name); + const entryInfo = fs.statSync(resolve(fileDescriptor.realPath, entries[i].name), { bigint: true }); + const entryData = new Uint8Array(24 + nameData.byteLength); + const entryView = new DataView(entryData.buffer); + entryView.setBigUint64(0, BigInt(i + 1), true); + entryView.setBigUint64(8, BigInt(entryInfo.ino ? entryInfo.ino : 0), true); + entryView.setUint32(16, nameData.byteLength, true); + let type; + if (entries[i].isFile()) { + type = 4 /* WasiFileType.REGULAR_FILE */; + } + else if (entries[i].isDirectory()) { + type = 3 /* WasiFileType.DIRECTORY */; + } + else if (entries[i].isSymbolicLink()) { + type = 7 /* WasiFileType.SYMBOLIC_LINK */; + } + else if (entries[i].isCharacterDevice()) { + type = 2 /* WasiFileType.CHARACTER_DEVICE */; + } + else if (entries[i].isBlockDevice()) { + type = 1 /* WasiFileType.BLOCK_DEVICE */; + } + else if (entries[i].isSocket()) { + type = 6 /* WasiFileType.SOCKET_STREAM */; + } + else { + type = 0 /* WasiFileType.UNKNOWN */; + } + entryView.setUint8(20, type); + entryData.set(nameData, 24); + const data = entryData.slice(0, Math.min(entryData.length, buf_len - bufferUsed)); + HEAPU8.set(data, buf + bufferUsed); + bufferUsed += data.byteLength; + } + view.setUint32(bufused, bufferUsed, true); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_readdir(fd, buf, buf_len, cookie, bufused) { + buf = Number(buf); + buf_len = Number(buf_len); + bufused = Number(bufused); + if (buf === 0 || bufused === 0) + return 0 /* WasiErrno.ESUCCESS */; + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READDIR, BigInt(0)); + const fs = getFs(this); + const entries = await fs.promises.readdir(fileDescriptor.realPath, { withFileTypes: true }); + const { HEAPU8, view } = getMemory(this); + let bufferUsed = 0; + for (let i = Number(cookie); i < entries.length; i++) { + const nameData = encoder.encode(entries[i].name); + const entryInfo = await fs.promises.stat(resolve(fileDescriptor.realPath, entries[i].name), { bigint: true }); + const entryData = new Uint8Array(24 + nameData.byteLength); + const entryView = new DataView(entryData.buffer); + entryView.setBigUint64(0, BigInt(i + 1), true); + entryView.setBigUint64(8, BigInt(entryInfo.ino ? entryInfo.ino : 0), true); + entryView.setUint32(16, nameData.byteLength, true); + let type; + if (entries[i].isFile()) { + type = 4 /* WasiFileType.REGULAR_FILE */; + } + else if (entries[i].isDirectory()) { + type = 3 /* WasiFileType.DIRECTORY */; + } + else if (entries[i].isSymbolicLink()) { + type = 7 /* WasiFileType.SYMBOLIC_LINK */; + } + else if (entries[i].isCharacterDevice()) { + type = 2 /* WasiFileType.CHARACTER_DEVICE */; + } + else if (entries[i].isBlockDevice()) { + type = 1 /* WasiFileType.BLOCK_DEVICE */; + } + else if (entries[i].isSocket()) { + type = 6 /* WasiFileType.SOCKET_STREAM */; + } + else { + type = 0 /* WasiFileType.UNKNOWN */; + } + entryView.setUint8(20, type); + entryData.set(nameData, 24); + const data = entryData.slice(0, Math.min(entryData.length, buf_len - bufferUsed)); + HEAPU8.set(data, buf + bufferUsed); + bufferUsed += data.byteLength; + } + view.setUint32(bufused, bufferUsed, true); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i64', 'i32'], ['i32']); + defineImport('fd_renumber', function fd_renumber(from, to) { + const wasi = _wasi.get(this); + wasi.fds.renumber(to, from); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_renumber(from, to) { + const wasi = _wasi.get(this); + await wasi.fds.renumber(to, from); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32'], ['i32']); + defineImport('fd_sync', function fd_sync(fd) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_SYNC, BigInt(0)); + const fs = getFs(this); + fs.fsyncSync(fileDescriptor.fd); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_sync(fd) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_SYNC, BigInt(0)); + await fileDescriptor.fd.sync(); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32'], ['i32']); + defineImport('fd_write', function fd_write(fd, iovs, iovslen, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return 0 /* WasiErrno.ESUCCESS */; + } + const buffer = concatBuffer(Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + return HEAPU8.subarray(buf, buf + bufLen); + })); + let nwritten; + if (fd === 1 || fd === 2) { + nwritten = fileDescriptor.write(buffer); + } + else { + const fs = getFs(this); + nwritten = fs.writeSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(fileDescriptor.pos)); + fileDescriptor.pos += BigInt(nwritten); + } + view.setUint32(size, nwritten, true); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_write(fd, iovs, iovslen, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return 0 /* WasiErrno.ESUCCESS */; + } + const buffer = concatBuffer(Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + return HEAPU8.subarray(buf, buf + bufLen); + })); + let nwritten; + if (fd === 1 || fd === 2) { + nwritten = fileDescriptor.write(buffer); + } + else { + nwritten = await (await (fileDescriptor.fd.write(buffer, 0, buffer.length, Number(fileDescriptor.pos)))).bytesWritten; + fileDescriptor.pos += BigInt(nwritten); + } + view.setUint32(size, nwritten, true); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i32'], ['i32']); + defineImport('path_create_directory', function path_create_directory(fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_CREATE_DIRECTORY, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + pathString = resolve(fileDescriptor.realPath, pathString); + const fs = getFs(this); + fs.mkdirSync(pathString); + return 0 /* WasiErrno.ESUCCESS */; + }, async function path_create_directory(fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_CREATE_DIRECTORY, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + pathString = resolve(fileDescriptor.realPath, pathString); + const fs = getFs(this); + await fs.promises.mkdir(pathString); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32'], ['i32']); + defineImport('path_filestat_get', function path_filestat_get(fd, flags, path, path_len, filestat) { + path = Number(path); + path_len = Number(path_len); + filestat = Number(filestat); + if (path === 0 || filestat === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_GET, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + const fs = getFs(this); + pathString = resolve(fileDescriptor.realPath, pathString); + let stat; + if ((flags & 1) === 1) { + stat = fs.statSync(pathString, { bigint: true }); + } + else { + stat = fs.lstatSync(pathString, { bigint: true }); + } + toFileStat(view, filestat, stat); + return 0 /* WasiErrno.ESUCCESS */; + }, async function path_filestat_get(fd, flags, path, path_len, filestat) { + path = Number(path); + path_len = Number(path_len); + filestat = Number(filestat); + if (path === 0 || filestat === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_GET, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + const fs = getFs(this); + pathString = resolve(fileDescriptor.realPath, pathString); + let stat; + if ((flags & 1) === 1) { + stat = await fs.promises.stat(pathString, { bigint: true }); + } + else { + stat = await fs.promises.lstat(pathString, { bigint: true }); + } + toFileStat(view, filestat, stat); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); + defineImport('path_filestat_set_times', function path_filestat_set_times(fd, flags, path, path_len, atim, mtim, fst_flags) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) + return 28 /* WasiErrno.EINVAL */; + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_SET_TIMES, BigInt(0)); + if (validateFstFlagsOrReturn(fst_flags)) { + return 28 /* WasiErrno.EINVAL */; + } + const fs = getFs(this); + const resolvedPath = resolvePathSync(fs, fileDescriptor, decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)), flags); + if ((fst_flags & 2 /* WasiFstFlag.SET_ATIM_NOW */) === 2 /* WasiFstFlag.SET_ATIM_NOW */) { + atim = BigInt(Date.now() * 1000000); + } + if ((fst_flags & 8 /* WasiFstFlag.SET_MTIM_NOW */) === 8 /* WasiFstFlag.SET_MTIM_NOW */) { + mtim = BigInt(Date.now() * 1000000); + } + fs.utimesSync(resolvedPath, Number(atim), Number(mtim)); + return 0 /* WasiErrno.ESUCCESS */; + }, async function path_filestat_set_times(fd, flags, path, path_len, atim, mtim, fst_flags) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) + return 28 /* WasiErrno.EINVAL */; + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_SET_TIMES, BigInt(0)); + if (validateFstFlagsOrReturn(fst_flags)) { + return 28 /* WasiErrno.EINVAL */; + } + const fs = getFs(this); + const resolvedPath = await resolvePathAsync(fs, fileDescriptor, decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)), flags); + if ((fst_flags & 2 /* WasiFstFlag.SET_ATIM_NOW */) === 2 /* WasiFstFlag.SET_ATIM_NOW */) { + atim = BigInt(Date.now() * 1000000); + } + if ((fst_flags & 8 /* WasiFstFlag.SET_MTIM_NOW */) === 8 /* WasiFstFlag.SET_MTIM_NOW */) { + mtim = BigInt(Date.now() * 1000000); + } + await fs.promises.utimes(resolvedPath, Number(atim), Number(mtim)); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i32', 'i64', 'i64', 'i32'], ['i32']); + defineImport('path_link', function path_link(old_fd, old_flags, old_path, old_path_len, new_fd, new_path, new_path_len) { + old_path = Number(old_path); + old_path_len = Number(old_path_len); + new_path = Number(new_path); + new_path_len = Number(new_path_len); + if (old_path === 0 || new_path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const wasi = _wasi.get(this); + let oldWrap; + let newWrap; + if (old_fd === new_fd) { + oldWrap = newWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE | WasiRights.PATH_LINK_TARGET, BigInt(0)); + } + else { + oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE, BigInt(0)); + newWrap = wasi.fds.get(new_fd, WasiRights.PATH_LINK_TARGET, BigInt(0)); + } + const { HEAPU8 } = getMemory(this); + const fs = getFs(this); + const resolvedOldPath = resolvePathSync(fs, oldWrap, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)), old_flags); + const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len))); + fs.linkSync(resolvedOldPath, resolvedNewPath); + return 0 /* WasiErrno.ESUCCESS */; + }, async function path_link(old_fd, old_flags, old_path, old_path_len, new_fd, new_path, new_path_len) { + old_path = Number(old_path); + old_path_len = Number(old_path_len); + new_path = Number(new_path); + new_path_len = Number(new_path_len); + if (old_path === 0 || new_path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const wasi = _wasi.get(this); + let oldWrap; + let newWrap; + if (old_fd === new_fd) { + oldWrap = newWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE | WasiRights.PATH_LINK_TARGET, BigInt(0)); + } + else { + oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE, BigInt(0)); + newWrap = wasi.fds.get(new_fd, WasiRights.PATH_LINK_TARGET, BigInt(0)); + } + const { HEAPU8 } = getMemory(this); + const fs = getFs(this); + const resolvedOldPath = await resolvePathAsync(fs, oldWrap, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)), old_flags); + const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len))); + await fs.promises.link(resolvedOldPath, resolvedNewPath); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); + function pathOpen(o_flags, fs_rights_base, fs_rights_inheriting, fs_flags) { + const read = (fs_rights_base & (WasiRights.FD_READ | + WasiRights.FD_READDIR)) !== BigInt(0); + const write = (fs_rights_base & (WasiRights.FD_DATASYNC | + WasiRights.FD_WRITE | + WasiRights.FD_ALLOCATE | + WasiRights.FD_FILESTAT_SET_SIZE)) !== BigInt(0); + let flags = write ? read ? 2 /* FileControlFlag.O_RDWR */ : 1 /* FileControlFlag.O_WRONLY */ : 0 /* FileControlFlag.O_RDONLY */; + let needed_base = WasiRights.PATH_OPEN; + let needed_inheriting = fs_rights_base | fs_rights_inheriting; + if ((o_flags & 1 /* WasiFileControlFlag.O_CREAT */) !== 0) { + flags |= 64 /* FileControlFlag.O_CREAT */; + needed_base |= WasiRights.PATH_CREATE_FILE; + } + if ((o_flags & 2 /* WasiFileControlFlag.O_DIRECTORY */) !== 0) { + flags |= 65536 /* FileControlFlag.O_DIRECTORY */; + } + if ((o_flags & 4 /* WasiFileControlFlag.O_EXCL */) !== 0) { + flags |= 128 /* FileControlFlag.O_EXCL */; + } + if ((o_flags & 8 /* WasiFileControlFlag.O_TRUNC */) !== 0) { + flags |= 512 /* FileControlFlag.O_TRUNC */; + needed_base |= WasiRights.PATH_FILESTAT_SET_SIZE; + } + if ((fs_flags & 1 /* WasiFdFlag.APPEND */) !== 0) { + flags |= 1024 /* FileControlFlag.O_APPEND */; + } + if ((fs_flags & 2 /* WasiFdFlag.DSYNC */) !== 0) { + // flags |= FileControlFlag.O_DSYNC; + needed_inheriting |= WasiRights.FD_DATASYNC; + } + if ((fs_flags & 4 /* WasiFdFlag.NONBLOCK */) !== 0) { + flags |= 2048 /* FileControlFlag.O_NONBLOCK */; + } + if ((fs_flags & 8 /* WasiFdFlag.RSYNC */) !== 0) { + flags |= 1052672 /* FileControlFlag.O_SYNC */; + needed_inheriting |= WasiRights.FD_SYNC; + } + if ((fs_flags & 16 /* WasiFdFlag.SYNC */) !== 0) { + flags |= 1052672 /* FileControlFlag.O_SYNC */; + needed_inheriting |= WasiRights.FD_SYNC; + } + if (write && (flags & (1024 /* FileControlFlag.O_APPEND */ | 512 /* FileControlFlag.O_TRUNC */)) === 0) { + needed_inheriting |= WasiRights.FD_SEEK; + } + return { flags, needed_base, needed_inheriting }; + } + defineImport('path_open', function path_open(dirfd, dirflags, path, path_len, o_flags, fs_rights_base, fs_rights_inheriting, fs_flags, fd) { + path = Number(path); + fd = Number(fd); + if (path === 0 || fd === 0) { + return 28 /* WasiErrno.EINVAL */; + } + path_len = Number(path_len); + fs_rights_base = BigInt(fs_rights_base); + fs_rights_inheriting = BigInt(fs_rights_inheriting); + const { flags: flagsRes, needed_base: neededBase, needed_inheriting: neededInheriting } = pathOpen(o_flags, fs_rights_base, fs_rights_inheriting, fs_flags); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(dirfd, neededBase, neededInheriting); + const memory = getMemory(this); + const HEAPU8 = memory.HEAPU8; + const pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + const fs = getFs(this); + const resolved_path = resolvePathSync(fs, fileDescriptor, pathString, dirflags); + const r = fs.openSync(resolved_path, flagsRes, 0o666); + const filetype = wasi.fds.getFileTypeByFd(r); + if ((filetype !== 3 /* WasiFileType.DIRECTORY */) && + ((o_flags & 2 /* WasiFileControlFlag.O_DIRECTORY */) !== 0 || + (resolved_path.endsWith('/')))) { + return 54 /* WasiErrno.ENOTDIR */; + } + const { base: max_base, inheriting: max_inheriting } = getRights(wasi.fds.stdio, r, flagsRes, filetype); + const wrap = wasi.fds.insert(r, resolved_path, resolved_path, filetype, fs_rights_base & max_base, fs_rights_inheriting & max_inheriting, 0); + const stat = fs.fstatSync(r, { bigint: true }); + if (stat.isFile()) { + wrap.size = stat.size; + if ((flagsRes & 1024 /* FileControlFlag.O_APPEND */) !== 0) { + wrap.pos = stat.size; + } + } + const view = memory.view; + view.setInt32(fd, wrap.id, true); + return 0 /* WasiErrno.ESUCCESS */; + }, async function path_open(dirfd, dirflags, path, path_len, o_flags, fs_rights_base, fs_rights_inheriting, fs_flags, fd) { + path = Number(path); + fd = Number(fd); + if (path === 0 || fd === 0) { + return 28 /* WasiErrno.EINVAL */; + } + path_len = Number(path_len); + fs_rights_base = BigInt(fs_rights_base); + fs_rights_inheriting = BigInt(fs_rights_inheriting); + const { flags: flagsRes, needed_base: neededBase, needed_inheriting: neededInheriting } = pathOpen(o_flags, fs_rights_base, fs_rights_inheriting, fs_flags); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(dirfd, neededBase, neededInheriting); + const memory = getMemory(this); + const HEAPU8 = memory.HEAPU8; + const pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + const fs = getFs(this); + const resolved_path = await resolvePathAsync(fs, fileDescriptor, pathString, dirflags); + const r = await fs.promises.open(resolved_path, flagsRes, 0o666); + const filetype = await wasi.fds.getFileTypeByFd(r); + if ((o_flags & 2 /* WasiFileControlFlag.O_DIRECTORY */) !== 0 && filetype !== 3 /* WasiFileType.DIRECTORY */) { + return 54 /* WasiErrno.ENOTDIR */; + } + const { base: max_base, inheriting: max_inheriting } = getRights(wasi.fds.stdio, r.fd, flagsRes, filetype); + const wrap = wasi.fds.insert(r, resolved_path, resolved_path, filetype, fs_rights_base & max_base, fs_rights_inheriting & max_inheriting, 0); + const stat = await r.stat({ bigint: true }); + if (stat.isFile()) { + wrap.size = stat.size; + if ((flagsRes & 1024 /* FileControlFlag.O_APPEND */) !== 0) { + wrap.pos = stat.size; + } + } + const view = memory.view; + view.setInt32(fd, wrap.id, true); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i64', 'i64', 'i32', 'i32'], ['i32']); + defineImport('path_readlink', function path_readlink(fd, path, path_len, buf, buf_len, bufused) { + path = Number(path); + path_len = Number(path_len); + buf = Number(buf); + buf_len = Number(buf_len); + bufused = Number(bufused); + if (path === 0 || buf === 0 || bufused === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_READLINK, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + pathString = resolve(fileDescriptor.realPath, pathString); + const fs = getFs(this); + const link = fs.readlinkSync(pathString); + const linkData = encoder.encode(link); + const len = Math.min(linkData.length, buf_len); + if (len >= buf_len) + return 42 /* WasiErrno.ENOBUFS */; + HEAPU8.set(linkData.subarray(0, len), buf); + HEAPU8[buf + len] = 0; + view.setUint32(bufused, len, true); + return 0 /* WasiErrno.ESUCCESS */; + }, async function path_readlink(fd, path, path_len, buf, buf_len, bufused) { + path = Number(path); + path_len = Number(path_len); + buf = Number(buf); + buf_len = Number(buf_len); + bufused = Number(bufused); + if (path === 0 || buf === 0 || bufused === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_READLINK, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + pathString = resolve(fileDescriptor.realPath, pathString); + const fs = getFs(this); + const link = await fs.promises.readlink(pathString); + const linkData = encoder.encode(link); + const len = Math.min(linkData.length, buf_len); + if (len >= buf_len) + return 42 /* WasiErrno.ENOBUFS */; + HEAPU8.set(linkData.subarray(0, len), buf); + HEAPU8[buf + len] = 0; + view.setUint32(bufused, len, true); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); + defineImport('path_remove_directory', function path_remove_directory(fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_REMOVE_DIRECTORY, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + pathString = resolve(fileDescriptor.realPath, pathString); + const fs = getFs(this); + fs.rmdirSync(pathString); + return 0 /* WasiErrno.ESUCCESS */; + }, async function path_remove_directory(fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_REMOVE_DIRECTORY, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + pathString = resolve(fileDescriptor.realPath, pathString); + const fs = getFs(this); + await fs.promises.rmdir(pathString); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32'], ['i32']); + defineImport('path_rename', function path_rename(old_fd, old_path, old_path_len, new_fd, new_path, new_path_len) { + old_path = Number(old_path); + old_path_len = Number(old_path_len); + new_path = Number(new_path); + new_path_len = Number(new_path_len); + if (old_path === 0 || new_path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const wasi = _wasi.get(this); + let oldWrap; + let newWrap; + if (old_fd === new_fd) { + oldWrap = newWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE | WasiRights.PATH_RENAME_TARGET, BigInt(0)); + } + else { + oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE, BigInt(0)); + newWrap = wasi.fds.get(new_fd, WasiRights.PATH_RENAME_TARGET, BigInt(0)); + } + const { HEAPU8 } = getMemory(this); + const resolvedOldPath = resolve(oldWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len))); + const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len))); + const fs = getFs(this); + fs.renameSync(resolvedOldPath, resolvedNewPath); + return 0 /* WasiErrno.ESUCCESS */; + }, async function path_rename(old_fd, old_path, old_path_len, new_fd, new_path, new_path_len) { + old_path = Number(old_path); + old_path_len = Number(old_path_len); + new_path = Number(new_path); + new_path_len = Number(new_path_len); + if (old_path === 0 || new_path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const wasi = _wasi.get(this); + let oldWrap; + let newWrap; + if (old_fd === new_fd) { + oldWrap = newWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE | WasiRights.PATH_RENAME_TARGET, BigInt(0)); + } + else { + oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE, BigInt(0)); + newWrap = wasi.fds.get(new_fd, WasiRights.PATH_RENAME_TARGET, BigInt(0)); + } + const { HEAPU8 } = getMemory(this); + const resolvedOldPath = resolve(oldWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len))); + const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len))); + const fs = getFs(this); + await fs.promises.rename(resolvedOldPath, resolvedNewPath); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); + defineImport('path_symlink', function path_symlink(old_path, old_path_len, fd, new_path, new_path_len) { + old_path = Number(old_path); + old_path_len = Number(old_path_len); + new_path = Number(new_path); + new_path_len = Number(new_path_len); + if (old_path === 0 || new_path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_SYMLINK, BigInt(0)); + const oldPath = decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)); + if (oldPath.length > 0 && oldPath[0] === '/') { + return 63 /* WasiErrno.EPERM */; + } + let newPath = decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len)); + newPath = resolve(fileDescriptor.realPath, newPath); + const fs = getFs(this); + fs.symlinkSync(oldPath, newPath); + return 0 /* WasiErrno.ESUCCESS */; + }, async function path_symlink(old_path, old_path_len, fd, new_path, new_path_len) { + old_path = Number(old_path); + old_path_len = Number(old_path_len); + new_path = Number(new_path); + new_path_len = Number(new_path_len); + if (old_path === 0 || new_path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_SYMLINK, BigInt(0)); + const oldPath = decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)); + let newPath = decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len)); + newPath = resolve(fileDescriptor.realPath, newPath); + const fs = getFs(this); + await fs.promises.symlink(oldPath, newPath); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); + defineImport('path_unlink_file', function path_unlink_file(fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_UNLINK_FILE, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + pathString = resolve(fileDescriptor.realPath, pathString); + const fs = getFs(this); + fs.unlinkSync(pathString); + return 0 /* WasiErrno.ESUCCESS */; + }, async function path_unlink_file(fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_UNLINK_FILE, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + pathString = resolve(fileDescriptor.realPath, pathString); + const fs = getFs(this); + await fs.promises.unlink(pathString); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32'], ['i32']); + this._setMemory = function setMemory(m) { + if (!(m instanceof _WebAssembly.Memory)) { + throw new TypeError('"instance.exports.memory" property must be a WebAssembly.Memory'); + } + _memory.set(_this, extendMemory(m)); + }; + } + static createSync(args, env, preopens, stdio, fs, print, printErr) { + const fds = new SyncTable({ + size: 3, + in: stdio[0], + out: stdio[1], + err: stdio[2], + fs, + print, + printErr + }); + const _this = new WASI$1(args, env, fds, false, fs); + if (preopens.length > 0) { + for (let i = 0; i < preopens.length; ++i) { + const realPath = fs.realpathSync(preopens[i].realPath, 'utf8'); + const fd = fs.openSync(realPath, 'r', 0o666); + fds.insertPreopen(fd, preopens[i].mappedPath, realPath); + } + } + return _this; + } + static async createAsync(args, env, preopens, stdio, fs, print, printErr, asyncify) { + const fds = new AsyncTable({ + size: 3, + in: stdio[0], + out: stdio[1], + err: stdio[2], + print, + printErr + }); + const _this = new WASI$1(args, env, fds, true, fs, asyncify); + if (preopens.length > 0) { + for (let i = 0; i < preopens.length; ++i) { + const entry = preopens[i]; + const realPath = await fs.promises.realpath(entry.realPath); + const fd = await fs.promises.open(realPath, 'r', 0o666); + await fds.insertPreopen(fd, entry.mappedPath, realPath); + } + } + return _this; + } +} + +// eslint-disable-next-line spaced-comment +const kEmptyObject = /*#__PURE__*/ Object.freeze(/*#__PURE__*/ Object.create(null)); +const kExitCode = Symbol('kExitCode'); +const kSetMemory = Symbol('kSetMemory'); +const kStarted = Symbol('kStarted'); +const kInstance = Symbol('kInstance'); +const kBindingName = Symbol('kBindingName'); +function validateOptions(options) { + var _a; + validateObject(options, 'options'); + let _WASI; + if (options.version !== undefined) { + validateString(options.version, 'options.version'); + switch (options.version) { + case 'unstable': + _WASI = WASI$1; + this[kBindingName] = 'wasi_unstable'; + break; + case 'preview1': + _WASI = WASI$1; + this[kBindingName] = 'wasi_snapshot_preview1'; + break; + default: + throw new TypeError(`unsupported WASI version "${options.version}"`); + } + } + else { + _WASI = WASI$1; + this[kBindingName] = 'wasi_snapshot_preview1'; + } + if (options.args !== undefined) { + validateArray(options.args, 'options.args'); + } + const args = ((_a = options.args) !== null && _a !== void 0 ? _a : []).map(String); + const env = []; + if (options.env !== undefined) { + validateObject(options.env, 'options.env'); + Object.entries(options.env).forEach(({ 0: key, 1: value }) => { + if (value !== undefined) { + env.push(`${key}=${value}`); + } + }); + } + const preopens = []; + if (options.preopens !== undefined) { + validateObject(options.preopens, 'options.preopens'); + Object.entries(options.preopens).forEach(({ 0: key, 1: value }) => preopens.push({ mappedPath: String(key), realPath: String(value) })); + } + if (preopens.length > 0) { + if (options.fs === undefined) { + throw new Error('filesystem is disabled, can not preopen directory'); + } + try { + validateObject(options.fs, 'options.fs'); + } + catch (_) { + throw new TypeError('Node.js fs like implementation is not provided'); + } + } + // if (options.filesystem !== undefined) { + // validateObject(options.filesystem, 'options.filesystem') + // validateString(options.filesystem.type, 'options.filesystem.type') + // if (options.filesystem.type !== 'memfs' && options.filesystem.type !== 'file-system-access-api') { + // throw new Error(`Filesystem type ${(options.filesystem as any).type as string} is not supported, only "memfs" and "file-system-access-api" is supported currently`) + // } + // try { + // validateObject(options.filesystem.fs, 'options.filesystem.fs') + // } catch (_) { + // throw new Error('Node.js fs like implementation is not provided') + // } + // } + if (options.print !== undefined) + validateFunction(options.print, 'options.print'); + if (options.printErr !== undefined) + validateFunction(options.printErr, 'options.printErr'); + if (options.returnOnExit !== undefined) { + validateBoolean(options.returnOnExit, 'options.returnOnExit'); + } + // const { stdin = 0, stdout = 1, stderr = 2 } = options + // validateInt32(stdin, 'options.stdin', 0) + // validateInt32(stdout, 'options.stdout', 0) + // validateInt32(stderr, 'options.stderr', 0) + // const stdio = [stdin, stdout, stderr] as const + const stdio = [0, 1, 2]; + return { + args, + env, + preopens, + stdio, + _WASI + }; +} +function initWASI(setMemory, wrap) { + this[kSetMemory] = setMemory; + this.wasiImport = wrap; + this[kStarted] = false; + this[kExitCode] = 0; + this[kInstance] = undefined; +} +/** @public */ +class WASI { + constructor(options = kEmptyObject) { + const { args, env, preopens, stdio, _WASI } = validateOptions.call(this, options); + const wrap = _WASI.createSync(args, env, preopens, stdio, options.fs, options.print, options.printErr); + const setMemory = wrap._setMemory; + delete wrap._setMemory; + initWASI.call(this, setMemory, wrap); + if (options.returnOnExit) { + wrap.proc_exit = wasiReturnOnProcExit.bind(this); + } + } + finalizeBindings(instance, _a) { + var _b; + var { memory = (_b = instance === null || instance === void 0 ? void 0 : instance.exports) === null || _b === void 0 ? void 0 : _b.memory } = _a === void 0 ? {} : _a; + if (this[kStarted]) { + throw new Error('WASI instance has already started'); + } + validateObject(instance, 'instance'); + validateObject(instance.exports, 'instance.exports'); + this[kSetMemory](memory); + this[kInstance] = instance; + this[kStarted] = true; + } + // Must not export _initialize, must export _start + start(instance) { + this.finalizeBindings(instance); + const { _start, _initialize } = this[kInstance].exports; + validateFunction(_start, 'instance.exports._start'); + validateUndefined(_initialize, 'instance.exports._initialize'); + let ret; + try { + ret = _start(); + } + catch (err) { + if (err !== kExitCode) { + throw err; + } + } + if (ret instanceof Promise) { + return ret.then(() => this[kExitCode], (err) => { + if (err !== kExitCode) { + throw err; + } + return this[kExitCode]; + }); + } + return this[kExitCode]; + } + // Must not export _start, may optionally export _initialize + initialize(instance) { + this.finalizeBindings(instance); + const { _start, _initialize } = this[kInstance].exports; + validateUndefined(_start, 'instance.exports._start'); + if (_initialize !== undefined) { + validateFunction(_initialize, 'instance.exports._initialize'); + return _initialize(); + } + } + getImportObject() { + return { [this[kBindingName]]: this.wasiImport }; + } +} +function wasiReturnOnProcExit(rval) { + this[kExitCode] = rval; + // eslint-disable-next-line @typescript-eslint/no-throw-literal + throw kExitCode; +} +/** @public */ +async function createAsyncWASI(options = kEmptyObject) { + const _this = Object.create(WASI.prototype); + const { args, env, preopens, stdio, _WASI } = validateOptions.call(_this, options); + if (options.asyncify !== undefined) { + validateObject(options.asyncify, 'options.asyncify'); + validateFunction(options.asyncify.wrapImportFunction, 'options.asyncify.wrapImportFunction'); + } + const wrap = await _WASI.createAsync(args, env, preopens, stdio, options.fs, options.print, options.printErr, options.asyncify); + const setMemory = wrap._setMemory; + delete wrap._setMemory; + initWASI.call(_this, setMemory, wrap); + if (options.returnOnExit) { + wrap.proc_exit = wasiReturnOnProcExit.bind(_this); + } + return _this; +} + +export { Asyncify, Memory, WASI, WebAssemblyMemory, asyncifyLoad, asyncifyLoadSync, createAsyncWASI, extendMemory, load, loadSync, wrapAsyncExport, wrapAsyncImport, wrapExports }; diff --git a/node_modules/@tybys/wasm-util/dist/wasm-util.esm.min.js b/node_modules/@tybys/wasm-util/dist/wasm-util.esm.min.js new file mode 100644 index 00000000..c3568803 --- /dev/null +++ b/node_modules/@tybys/wasm-util/dist/wasm-util.esm.min.js @@ -0,0 +1 @@ +const t="undefined"!=typeof WebAssembly?WebAssembly:"undefined"!=typeof WXWebAssembly?WXWebAssembly:void 0;if(!t)throw new Error("WebAssembly is not supported in this environment");function e(t,e){if(null===t||"object"!=typeof t)throw new TypeError(`${e} must be an object. Received ${null===t?"null":typeof t}`)}function n(t,e){if("string"!=typeof t)throw new TypeError(`${e} must be a string. Received ${null===t?"null":typeof t}`)}function r(t,e){if("function"!=typeof t)throw new TypeError(`${e} must be a function. Received ${null===t?"null":typeof t}`)}function i(t,e){if(void 0!==t)throw new TypeError(`${e} must be undefined. Received ${null===t?"null":typeof t}`)}function s(t){return!(!t||"object"!=typeof t&&"function"!=typeof t||"function"!=typeof t.then)}function o(t,e){const n=Object.create(null);return Object.keys(t).forEach((r=>{const i=t[r];Object.defineProperty(n,r,{enumerable:!0,value:e(i,r)})})),n}function a(t,e,n){return"function"==typeof SharedArrayBuffer&&t.buffer instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(t.buffer.constructor)?t.slice(e,n):t.subarray(e,n)}const c=["asyncify_get_state","asyncify_start_rewind","asyncify_start_unwind","asyncify_stop_rewind","asyncify_stop_unwind"];function u(t,e,n,r){if("function"!=typeof t.exports[r]||n<=0)return{wasm64:e,dataPtr:16,start:e?32:24,end:1024};const i=t.exports[r],s=e?Number(i(BigInt(16)+BigInt(n))):i(8+n);if(0===s)throw new Error("Allocate asyncify data failed");return e?{wasm64:e,dataPtr:s,start:s+16,end:s+16+n}:{wasm64:e,dataPtr:s,start:s+8,end:s+8+n}}class f{constructor(){this.value=void 0,this.exports=void 0,this.dataPtr=0}init(e,n,r){var i,s;if(this.exports)throw new Error("Asyncify has been initialized");if(!(e instanceof t.Memory))throw new TypeError("Require WebAssembly.Memory object");const o=n.exports;for(let t=0;t{const r=t[n],i={};Object.keys(r).forEach((t=>{const e=r[t];i[t]="function"==typeof e?this.wrapImportFunction(e):e})),e[n]=i})),e}wrapExportFunction(t){const e=this;return async function(){e.assertState();let n=t.apply(this,arguments);for(;1===e.exports.asyncify_get_state();)e.exports.asyncify_stop_unwind(),e.value=await e.value,e.assertState(),e.exports.asyncify_start_rewind(e.dataPtr),n=t.call(this);return e.assertState(),n}}wrapExports(t,e){return o(t,((t,n)=>{let r=-1!==c.indexOf(n)||"function"!=typeof t;return Array.isArray(e)&&(r=r||-1===e.indexOf(n)),r?t:this.wrapExportFunction(t)}))}}function h(t){if(t&&"object"!=typeof t)throw new TypeError("imports must be an object or undefined")}function g(e,n){return"undefined"!=typeof wx&&"undefined"!=typeof __wxConfig?t.instantiate(e,n):fetch(e).then((t=>t.arrayBuffer())).then((e=>t.instantiate(e,n)))}function d(e,n){let r;if(h(n),n=null!=n?n:{},e instanceof ArrayBuffer||ArrayBuffer.isView(e))return t.instantiate(e,n);if(e instanceof t.Module)return t.instantiate(e,n).then((t=>({instance:t,module:e})));if("string"!=typeof e&&!(e instanceof URL))throw new TypeError("Invalid source");if("function"==typeof t.instantiateStreaming){let i;try{i=fetch(e),r=t.instantiateStreaming(i,n).catch((()=>g(e,n)))}catch(t){r=g(e,n)}}else r=g(e,n);return r}function l(t,e,n){h(n),n=null!=n?n:{};const r=new f;return d(e,n=r.wrapImports(n)).then((e=>{var i;const s=e.instance.exports.memory||(null===(i=n.env)||void 0===i?void 0:i.memory);return{module:e.module,instance:r.init(s,e.instance,t)}}))}function _(e,n){let r;if(h(n),n=null!=n?n:{},e instanceof ArrayBuffer||ArrayBuffer.isView(e))r=new t.Module(e);else{if(!(e instanceof WebAssembly.Module))throw new TypeError("Invalid source");r=e}return{instance:new t.Instance(r,n),module:r}}function p(t,e,n){var r;h(n),n=null!=n?n:{};const i=new f,s=_(e,n=i.wrapImports(n)),o=s.instance.exports.memory||(null===(r=n.env)||void 0===r?void 0:r.memory);return{module:s.module,instance:i.init(o,s.instance,t)}}const E=46,y=47;function I(t){return t===y}function m(...t){let e="",r=!1;for(let i=t.length-1;i>=-1&&!r;i--){const s=i>=0?t[i]:"/";n(s,"path"),0!==s.length&&(e=`${s}/${e}`,r=s.charCodeAt(0)===y)}return e=function(t,e,n,r){let i="",s=0,o=-1,a=0,c=0;for(let u=0;u<=t.length;++u){if(u2){const t=i.indexOf(n);-1===t?(i="",s=0):(i=i.slice(0,t),s=i.length-1-i.indexOf(n)),o=u,a=0;continue}if(0!==i.length){i="",s=0,o=u,a=0;continue}}e&&(i+=i.length>0?`${n}..`:"..",s=2)}else i.length>0?i+=`${n}${t.slice(o+1,u)}`:i=t.slice(o+1,u),s=u-o-1;o=u,a=0}else c===E&&-1!==a?++a:a=-1}return i}(e,!r,"/",I),r?`/${e}`:e.length>0?e:"."}const A={FD_DATASYNC:BigInt(1)<=0)n=e;else for(let e=0;e"),this.insertStdio(t.out,1,""),this.insertStdio(t.err,2,"")}insertStdio(t,e,n){const{base:r,inheriting:i}=O(this.stdio,t,2,2),s=this.insert(t,n,n,2,r,i,0);if(s.id!==e)throw new b(`id: ${s.id} !== expected: ${e}`,8);return s}insert(t,e,n,r,i,s,o){var a,c;let u,f=-1;if(this.used>=this.size){const t=2*this.size;this.fds.length=t,f=this.size,this.size=t}else for(let t=0;t"===e?new x(null!==(c=this.printErr)&&void 0!==c?c:console.error,f,t,e,n,r,i,s,o):new C(f,t,e,n,r,i,s,o),this.fds[f]=u,this.used++,u}get(t,e,n){if(t>=this.size)throw new b("Invalid fd",8);const r=this.fds[t];if(!r||r.id!==t)throw new b("Bad file descriptor",8);if((~r.rightsBase&e)!==BigInt(0)||(~r.rightsInheriting&n)!==BigInt(0))throw new b("Capabilities insufficient",76);return r}remove(t){if(t>=this.size)throw new b("Invalid fd",8);const e=this.fds[t];if(!e||e.id!==t)throw new b("Bad file descriptor",8);this.fds[t]=void 0,this.used--}}class W extends K{constructor(t){super(t),this.fs=t.fs}getFileTypeByFd(t){return M(this.fs.fstatSync(t,{bigint:!0}))}insertPreopen(t,e,n){const r=this.getFileTypeByFd(t);if(3!==r)throw new b(`Preopen not dir: ["${e}", "${n}"]`,54);const i=O(this.stdio,t,0,r);return this.insert(t,e,n,r,i.base,i.inheriting,1)}renumber(t,e){if(t===e)return;if(t>=this.size||e>=this.size)throw new b("Invalid fd",8);const n=this.fds[t],r=this.fds[e];if(!n||!r||n.id!==t||r.id!==e)throw new b("Invalid fd",8);this.fs.closeSync(n.fd),this.fds[t]=this.fds[e],this.fds[t].id=t,this.fds[e]=void 0,this.used--}}class j extends K{constructor(t){super(t)}async getFileTypeByFd(t){return M(await t.stat({bigint:!0}))}async insertPreopen(t,e,n){const r=await this.getFileTypeByFd(t);if(3!==r)throw new b(`Preopen not dir: ["${e}", "${n}"]`,54);const i=O(this.stdio,t.fd,0,r);return this.insert(t,e,n,r,i.base,i.inheriting,1)}async renumber(t,e){if(t===e)return;if(t>=this.size||e>=this.size)throw new b("Invalid fd",8);const n=this.fds[t],r=this.fds[e];if(!n||!r||n.id!==t||r.id!==e)throw new b("Invalid fd",8);await n.fd.close(),this.fds[t]=this.fds[e],this.fds[t].id=t,this.fds[e]=void 0,this.used--}}const G=function(){return t.Memory}();class Y extends G{constructor(t){super(t)}get HEAP8(){return new Int8Array(super.buffer)}get HEAPU8(){return new Uint8Array(super.buffer)}get HEAP16(){return new Int16Array(super.buffer)}get HEAPU16(){return new Uint16Array(super.buffer)}get HEAP32(){return new Int32Array(super.buffer)}get HEAPU32(){return new Uint32Array(super.buffer)}get HEAP64(){return new BigInt64Array(super.buffer)}get HEAPU64(){return new BigUint64Array(super.buffer)}get HEAPF32(){return new Float32Array(super.buffer)}get HEAPF64(){return new Float64Array(super.buffer)}get view(){return new DataView(super.buffer)}}function $(e){return Object.getPrototypeOf(e)===t.Memory.prototype&&Object.setPrototypeOf(e,Y.prototype),e}function V(){const e=t.Function;if("function"!=typeof e)throw new Error('WebAssembly.Function is not supported in this environment. If you are using V8 based browser like Chrome, try to specify --js-flags="--wasm-staging --experimental-wasm-stack-switching"');return e}function Z(t,e,n){const r=V();if("function"!=typeof t)throw new TypeError("Function required");const i=e.slice(0);return i.unshift("externref"),new r({parameters:i,results:n},t,{suspending:"first"})}function q(t){const e=V();if("function"!=typeof t)throw new TypeError("Function required");return new e({parameters:[...e.type(t).parameters.slice(1)],results:["externref"]},t,{promising:"first"})}function X(t,e){return o(t,((t,n)=>{let r="function"!=typeof t;return Array.isArray(e)&&(r=r||-1===e.indexOf(n)),r?t:q(t)}))}function Q(t,e){if(0===t.length||0===e.length)return 0;let n=0,r=e.length-n;for(let i=0;it),it):r}function at(t,e,n){let r=!1;const i=(()=>{try{return}catch(t){return}})();return"string"==typeof i&&i.split(",").includes("wasi")&&(r=!0),st(e,r?function(){const r=Array.prototype.slice.call(arguments);let i=[`${e}(${Array.from({length:arguments.length}).map((()=>"%d")).join(", ")})`];return i=i.concat(r),console.debug.apply(console,i),ot(n,t,r)}:function(){return ot(n,t,arguments)})}function ct(t,e,n,r){let i=m(e.realPath,n);if(1==(1&r))try{i=t.readlinkSync(i)}catch(t){if("EINVAL"!==t.code&&"ENOENT"!==t.code)throw t}return i}async function ut(t,e,n,r){let i=m(e.realPath,n);if(1==(1&r))try{i=await t.promises.readlink(i)}catch(t){if("EINVAL"!==t.code&&"ENOENT"!==t.code)throw t}return i}const ft=new TextEncoder,ht=new TextDecoder,gt=(BigInt(1)<r.rightsBase||(n|r.rightsInheriting)>r.rightsInheriting?76:(r.rightsBase=e,r.rightsInheriting=n,0)})),this.fd_prestat_get=at(this,"fd_prestat_get",(function(t,e){if(0===(e=Number(e)))return 28;const n=tt.get(this);let r;try{r=n.fds.get(t,BigInt(0),BigInt(0))}catch(t){if(t instanceof b)return t.errno;throw t}if(1!==r.preopen)return 28;const{view:i}=nt(this);return i.setUint32(e,0,!0),i.setUint32(e+4,ft.encode(r.path).length,!0),0})),this.fd_prestat_dir_name=at(this,"fd_prestat_dir_name",(function(t,e,n){if(e=Number(e),n=Number(n),0===e)return 28;const r=tt.get(this).fds.get(t,BigInt(0),BigInt(0));if(1!==r.preopen)return 8;const i=ft.encode(r.path);if(i.length>n)return 42;const{HEAPU8:s}=nt(this);return s.set(i,e),0})),this.fd_seek=at(this,"fd_seek",(function(t,e,n,r){if(0===(r=Number(r)))return 28;if(0===t||1===t||2===t)return 0;const i=tt.get(this).fds.get(t,A.FD_SEEK,BigInt(0)).seek(e,n),{view:s}=nt(this);return s.setBigUint64(r,i,!0),0})),this.fd_tell=at(this,"fd_tell",(function(t,e){const n=tt.get(this).fds.get(t,A.FD_TELL,BigInt(0)),r=BigInt(n.pos),{view:i}=nt(this);return i.setBigUint64(Number(e),r,!0),0})),this.poll_oneoff=at(this,"poll_oneoff",(function(t,e,n,r){if(t=Number(t),e=Number(e),r=Number(r),n=Number(n),n>>>=0,0===t||0===e||0===n||0===r)return 28;const{view:i}=nt(this);i.setUint32(r,0,!0);let s,o=0,a=BigInt(0),c=BigInt(0),u=0,f=BigInt(0);const h=Array(n);for(o=0;o0){for(o=0;o!1));const t=e;i.setBigUint64(t,a,!0),i.setUint32(t+8,0,!0),i.setUint32(t+12,0,!0),i.setUint32(r,1,!0)}return 0})),this.proc_exit=at(this,"proc_exit",(function(t){return"object"==typeof process&&null!==process&&"function"==typeof process.exit&&process.exit(t),0})),this.proc_raise=at(this,"proc_raise",(function(t){return 52})),this.sched_yield=at(this,"sched_yield",(function(){return 0})),this.random_get="undefined"!=typeof crypto&&"function"==typeof crypto.getRandomValues?at(this,"random_get",(function(t,e){if(0===(t=Number(t)))return 28;e=Number(e);const{HEAPU8:n,view:r}=nt(this);if("function"==typeof SharedArrayBuffer&&n.buffer instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(n.buffer)){for(let n=t;ngt)return 28;const{HEAPU8:s,view:o}=nt(this),a=tt.get(this).fds.get(t,A.FD_READ|A.FD_SEEK,BigInt(0));if(!n)return o.setUint32(i,0,!0),0;let c=0;const u=Array.from({length:Number(n)},((t,n)=>{const r=e+8*n,i=o.getInt32(r,!0),a=o.getUint32(r+4,!0);return c+=a,s.subarray(i,i+a)}));let f=0;const h=(()=>{try{return new Uint8Array(new SharedArrayBuffer(c))}catch(t){return new Uint8Array(c)}})();h._isBuffer=!0;const g=rt(this).readSync(a.fd,h,0,h.length,Number(r));return f=h?Q(u,h.subarray(0,g)):0,o.setUint32(i,f,!0),0}),(async function(t,e,n,r,i){if(e=Number(e),i=Number(i),0===e&&n||0===i||r>gt)return 28;const{HEAPU8:s,view:o}=nt(this),a=tt.get(this).fds.get(t,A.FD_READ|A.FD_SEEK,BigInt(0));if(!n)return o.setUint32(i,0,!0),0;let c=0;const u=Array.from({length:Number(n)},((t,n)=>{const r=e+8*n,i=o.getInt32(r,!0),a=o.getUint32(r+4,!0);return c+=a,s.subarray(i,i+a)}));let f=0;const h=new Uint8Array(c);h._isBuffer=!0;const{bytesRead:g}=await a.fd.read(h,0,h.length,Number(r));return f=h?Q(u,h.subarray(0,g)):0,o.setUint32(i,f,!0),0}),["i32","i32","i32","i64","i32"],["i32"]),u("fd_pwrite",(function(t,e,n,r,i){if(e=Number(e),i=Number(i),0===e&&n||0===i||r>gt)return 28;const{HEAPU8:s,view:o}=nt(this),a=tt.get(this).fds.get(t,A.FD_WRITE|A.FD_SEEK,BigInt(0));if(!n)return o.setUint32(i,0,!0),0;const c=k(Array.from({length:Number(n)},((t,n)=>{const r=e+8*n,i=o.getInt32(r,!0),a=o.getUint32(r+4,!0);return s.subarray(i,i+a)}))),u=rt(this).writeSync(a.fd,c,0,c.length,Number(r));return o.setUint32(i,u,!0),0}),(async function(t,e,n,r,i){if(e=Number(e),i=Number(i),0===e&&n||0===i||r>gt)return 28;const{HEAPU8:s,view:o}=nt(this),a=tt.get(this).fds.get(t,A.FD_WRITE|A.FD_SEEK,BigInt(0));if(!n)return o.setUint32(i,0,!0),0;const c=k(Array.from({length:Number(n)},((t,n)=>{const r=e+8*n,i=o.getInt32(r,!0),a=o.getUint32(r+4,!0);return s.subarray(i,i+a)}))),{bytesWritten:u}=await a.fd.write(c,0,c.length,Number(r));return o.setUint32(i,u,!0),0}),["i32","i32","i32","i64","i32"],["i32"]),u("fd_read",(function(t,e,n,r){if(e=Number(e),r=Number(r),0===e&&n||0===r)return 28;const{HEAPU8:i,view:s}=nt(this),o=tt.get(this).fds.get(t,A.FD_READ,BigInt(0));if(!n)return s.setUint32(r,0,!0),0;let a=0;const c=Array.from({length:Number(n)},((t,n)=>{const r=e+8*n,o=s.getInt32(r,!0),c=s.getUint32(r+4,!0);return a+=c,i.subarray(o,o+c)}));let u,f=0;if(0===t){if("undefined"==typeof window||"function"!=typeof window.prompt)return 58;u=dt(),f=u?Q(c,u):0}else{u=(()=>{try{return new Uint8Array(new SharedArrayBuffer(a))}catch(t){return new Uint8Array(a)}})(),u._isBuffer=!0;const t=rt(this).readSync(o.fd,u,0,u.length,Number(o.pos));f=u?Q(c,u.subarray(0,t)):0,o.pos+=BigInt(f)}return s.setUint32(r,f,!0),0}),(async function(t,e,n,r){if(e=Number(e),r=Number(r),0===e&&n||0===r)return 28;const{HEAPU8:i,view:s}=nt(this),o=tt.get(this).fds.get(t,A.FD_READ,BigInt(0));if(!n)return s.setUint32(r,0,!0),0;let a=0;const c=Array.from({length:Number(n)},((t,n)=>{const r=e+8*n,o=s.getInt32(r,!0),c=s.getUint32(r+4,!0);return a+=c,i.subarray(o,o+c)}));let u,f=0;if(0===t){if("undefined"==typeof window||"function"!=typeof window.prompt)return 58;u=dt(),f=u?Q(c,u):0}else{u=new Uint8Array(a),u._isBuffer=!0;const{bytesRead:t}=await o.fd.read(u,0,u.length,Number(o.pos));f=u?Q(c,u.subarray(0,t)):0,o.pos+=BigInt(f)}return s.setUint32(r,f,!0),0}),["i32","i32","i32","i32"],["i32"]),u("fd_readdir",(function(t,e,n,r,i){if(e=Number(e),n=Number(n),i=Number(i),0===e||0===i)return 0;const s=tt.get(this).fds.get(t,A.FD_READDIR,BigInt(0)),o=rt(this),a=o.readdirSync(s.realPath,{withFileTypes:!0}),{HEAPU8:c,view:u}=nt(this);let f=0;for(let t=Number(r);t{const r=e+8*n,o=s.getInt32(r,!0),a=s.getUint32(r+4,!0);return i.subarray(o,o+a)})));let c;if(1===t||2===t)c=o.write(a);else{c=rt(this).writeSync(o.fd,a,0,a.length,Number(o.pos)),o.pos+=BigInt(c)}return s.setUint32(r,c,!0),0}),(async function(t,e,n,r){if(e=Number(e),r=Number(r),0===e&&n||0===r)return 28;const{HEAPU8:i,view:s}=nt(this),o=tt.get(this).fds.get(t,A.FD_WRITE,BigInt(0));if(!n)return s.setUint32(r,0,!0),0;const a=k(Array.from({length:Number(n)},((t,n)=>{const r=e+8*n,o=s.getInt32(r,!0),a=s.getUint32(r+4,!0);return i.subarray(o,o+a)})));let c;return 1===t||2===t?c=o.write(a):(c=await(await o.fd.write(a,0,a.length,Number(o.pos))).bytesWritten,o.pos+=BigInt(c)),s.setUint32(r,c,!0),0}),["i32","i32","i32","i32"],["i32"]),u("path_create_directory",(function(t,e,n){if(e=Number(e),n=Number(n),0===e)return 28;const{HEAPU8:r}=nt(this),i=tt.get(this).fds.get(t,A.PATH_CREATE_DIRECTORY,BigInt(0));let s=ht.decode(a(r,e,e+n));s=m(i.realPath,s);return rt(this).mkdirSync(s),0}),(async function(t,e,n){if(e=Number(e),n=Number(n),0===e)return 28;const{HEAPU8:r}=nt(this),i=tt.get(this).fds.get(t,A.PATH_CREATE_DIRECTORY,BigInt(0));let s=ht.decode(a(r,e,e+n));s=m(i.realPath,s);const o=rt(this);return await o.promises.mkdir(s),0}),["i32","i32","i32"],["i32"]),u("path_filestat_get",(function(t,e,n,r,i){if(n=Number(n),r=Number(r),i=Number(i),0===n||0===i)return 28;const{HEAPU8:s,view:o}=nt(this),c=tt.get(this).fds.get(t,A.PATH_FILESTAT_GET,BigInt(0));let u=ht.decode(a(s,n,n+r));const f=rt(this);let h;return u=m(c.realPath,u),h=1==(1&e)?f.statSync(u,{bigint:!0}):f.lstatSync(u,{bigint:!0}),z(o,i,h),0}),(async function(t,e,n,r,i){if(n=Number(n),r=Number(r),i=Number(i),0===n||0===i)return 28;const{HEAPU8:s,view:o}=nt(this),c=tt.get(this).fds.get(t,A.PATH_FILESTAT_GET,BigInt(0));let u=ht.decode(a(s,n,n+r));const f=rt(this);let h;return u=m(c.realPath,u),h=1==(1&e)?await f.promises.stat(u,{bigint:!0}):await f.promises.lstat(u,{bigint:!0}),z(o,i,h),0}),["i32","i32","i32","i32","i32"],["i32"]),u("path_filestat_set_times",(function(t,e,n,r,i,s,o){if(n=Number(n),r=Number(r),0===n)return 28;const{HEAPU8:c}=nt(this),u=tt.get(this).fds.get(t,A.PATH_FILESTAT_SET_TIMES,BigInt(0));if(lt(o))return 28;const f=rt(this),h=ct(f,u,ht.decode(a(c,n,n+r)),e);return 2==(2&o)&&(i=BigInt(1e6*Date.now())),8==(8&o)&&(s=BigInt(1e6*Date.now())),f.utimesSync(h,Number(i),Number(s)),0}),(async function(t,e,n,r,i,s,o){if(n=Number(n),r=Number(r),0===n)return 28;const{HEAPU8:c}=nt(this),u=tt.get(this).fds.get(t,A.PATH_FILESTAT_SET_TIMES,BigInt(0));if(lt(o))return 28;const f=rt(this),h=await ut(f,u,ht.decode(a(c,n,n+r)),e);return 2==(2&o)&&(i=BigInt(1e6*Date.now())),8==(8&o)&&(s=BigInt(1e6*Date.now())),await f.promises.utimes(h,Number(i),Number(s)),0}),["i32","i32","i32","i32","i64","i64","i32"],["i32"]),u("path_link",(function(t,e,n,r,i,s,o){if(n=Number(n),r=Number(r),s=Number(s),o=Number(o),0===n||0===s)return 28;const c=tt.get(this);let u,f;t===i?u=f=c.fds.get(t,A.PATH_LINK_SOURCE|A.PATH_LINK_TARGET,BigInt(0)):(u=c.fds.get(t,A.PATH_LINK_SOURCE,BigInt(0)),f=c.fds.get(i,A.PATH_LINK_TARGET,BigInt(0)));const{HEAPU8:h}=nt(this),g=rt(this),d=ct(g,u,ht.decode(a(h,n,n+r)),e),l=m(f.realPath,ht.decode(a(h,s,s+o)));return g.linkSync(d,l),0}),(async function(t,e,n,r,i,s,o){if(n=Number(n),r=Number(r),s=Number(s),o=Number(o),0===n||0===s)return 28;const c=tt.get(this);let u,f;t===i?u=f=c.fds.get(t,A.PATH_LINK_SOURCE|A.PATH_LINK_TARGET,BigInt(0)):(u=c.fds.get(t,A.PATH_LINK_SOURCE,BigInt(0)),f=c.fds.get(i,A.PATH_LINK_TARGET,BigInt(0)));const{HEAPU8:h}=nt(this),g=rt(this),d=await ut(g,u,ht.decode(a(h,n,n+r)),e),l=m(f.realPath,ht.decode(a(h,s,s+o)));return await g.promises.link(d,l),0}),["i32","i32","i32","i32","i32","i32","i32"],["i32"]),u("path_open",(function(t,e,n,r,i,s,o,c,u){if(n=Number(n),u=Number(u),0===n||0===u)return 28;r=Number(r),s=BigInt(s),o=BigInt(o);const{flags:f,needed_base:g,needed_inheriting:d}=h(i,s,o,c),l=tt.get(this),_=l.fds.get(t,g,d),p=nt(this),E=p.HEAPU8,y=ht.decode(a(E,n,n+r)),I=rt(this),m=ct(I,_,y,e),A=I.openSync(m,f,438),b=l.fds.getFileTypeByFd(A);if(3!==b&&(0!=(2&i)||m.endsWith("/")))return 54;const{base:T,inheriting:w}=O(l.fds.stdio,A,f,b),B=l.fds.insert(A,m,m,b,s&T,o&w,0),N=I.fstatSync(A,{bigint:!0});N.isFile()&&(B.size=N.size,0!=(1024&f)&&(B.pos=N.size));return p.view.setInt32(u,B.id,!0),0}),(async function(t,e,n,r,i,s,o,c,u){if(n=Number(n),u=Number(u),0===n||0===u)return 28;r=Number(r),s=BigInt(s),o=BigInt(o);const{flags:f,needed_base:g,needed_inheriting:d}=h(i,s,o,c),l=tt.get(this),_=l.fds.get(t,g,d),p=nt(this),E=p.HEAPU8,y=ht.decode(a(E,n,n+r)),I=rt(this),m=await ut(I,_,y,e),A=await I.promises.open(m,f,438),b=await l.fds.getFileTypeByFd(A);if(0!=(2&i)&&3!==b)return 54;const{base:T,inheriting:w}=O(l.fds.stdio,A.fd,f,b),B=l.fds.insert(A,m,m,b,s&T,o&w,0),N=await A.stat({bigint:!0});N.isFile()&&(B.size=N.size,0!=(1024&f)&&(B.pos=N.size));return p.view.setInt32(u,B.id,!0),0}),["i32","i32","i32","i32","i32","i64","i64","i32","i32"],["i32"]),u("path_readlink",(function(t,e,n,r,i,s){if(e=Number(e),n=Number(n),r=Number(r),i=Number(i),s=Number(s),0===e||0===r||0===s)return 28;const{HEAPU8:o,view:c}=nt(this),u=tt.get(this).fds.get(t,A.PATH_READLINK,BigInt(0));let f=ht.decode(a(o,e,e+n));f=m(u.realPath,f);const h=rt(this).readlinkSync(f),g=ft.encode(h),d=Math.min(g.length,i);return d>=i?42:(o.set(g.subarray(0,d),r),o[r+d]=0,c.setUint32(s,d,!0),0)}),(async function(t,e,n,r,i,s){if(e=Number(e),n=Number(n),r=Number(r),i=Number(i),s=Number(s),0===e||0===r||0===s)return 28;const{HEAPU8:o,view:c}=nt(this),u=tt.get(this).fds.get(t,A.PATH_READLINK,BigInt(0));let f=ht.decode(a(o,e,e+n));f=m(u.realPath,f);const h=rt(this),g=await h.promises.readlink(f),d=ft.encode(g),l=Math.min(d.length,i);return l>=i?42:(o.set(d.subarray(0,l),r),o[r+l]=0,c.setUint32(s,l,!0),0)}),["i32","i32","i32","i32","i32","i32"],["i32"]),u("path_remove_directory",(function(t,e,n){if(e=Number(e),n=Number(n),0===e)return 28;const{HEAPU8:r}=nt(this),i=tt.get(this).fds.get(t,A.PATH_REMOVE_DIRECTORY,BigInt(0));let s=ht.decode(a(r,e,e+n));s=m(i.realPath,s);return rt(this).rmdirSync(s),0}),(async function(t,e,n){if(e=Number(e),n=Number(n),0===e)return 28;const{HEAPU8:r}=nt(this),i=tt.get(this).fds.get(t,A.PATH_REMOVE_DIRECTORY,BigInt(0));let s=ht.decode(a(r,e,e+n));s=m(i.realPath,s);const o=rt(this);return await o.promises.rmdir(s),0}),["i32","i32","i32"],["i32"]),u("path_rename",(function(t,e,n,r,i,s){if(e=Number(e),n=Number(n),i=Number(i),s=Number(s),0===e||0===i)return 28;const o=tt.get(this);let c,u;t===r?c=u=o.fds.get(t,A.PATH_RENAME_SOURCE|A.PATH_RENAME_TARGET,BigInt(0)):(c=o.fds.get(t,A.PATH_RENAME_SOURCE,BigInt(0)),u=o.fds.get(r,A.PATH_RENAME_TARGET,BigInt(0)));const{HEAPU8:f}=nt(this),h=m(c.realPath,ht.decode(a(f,e,e+n))),g=m(u.realPath,ht.decode(a(f,i,i+s)));return rt(this).renameSync(h,g),0}),(async function(t,e,n,r,i,s){if(e=Number(e),n=Number(n),i=Number(i),s=Number(s),0===e||0===i)return 28;const o=tt.get(this);let c,u;t===r?c=u=o.fds.get(t,A.PATH_RENAME_SOURCE|A.PATH_RENAME_TARGET,BigInt(0)):(c=o.fds.get(t,A.PATH_RENAME_SOURCE,BigInt(0)),u=o.fds.get(r,A.PATH_RENAME_TARGET,BigInt(0)));const{HEAPU8:f}=nt(this),h=m(c.realPath,ht.decode(a(f,e,e+n))),g=m(u.realPath,ht.decode(a(f,i,i+s))),d=rt(this);return await d.promises.rename(h,g),0}),["i32","i32","i32","i32","i32","i32"],["i32"]),u("path_symlink",(function(t,e,n,r,i){if(t=Number(t),e=Number(e),r=Number(r),i=Number(i),0===t||0===r)return 28;const{HEAPU8:s}=nt(this),o=tt.get(this).fds.get(n,A.PATH_SYMLINK,BigInt(0)),c=ht.decode(a(s,t,t+e));if(c.length>0&&"/"===c[0])return 63;let u=ht.decode(a(s,r,r+i));u=m(o.realPath,u);return rt(this).symlinkSync(c,u),0}),(async function(t,e,n,r,i){if(t=Number(t),e=Number(e),r=Number(r),i=Number(i),0===t||0===r)return 28;const{HEAPU8:s}=nt(this),o=tt.get(this).fds.get(n,A.PATH_SYMLINK,BigInt(0)),c=ht.decode(a(s,t,t+e));let u=ht.decode(a(s,r,r+i));u=m(o.realPath,u);const f=rt(this);return await f.promises.symlink(c,u),0}),["i32","i32","i32","i32","i32"],["i32"]),u("path_unlink_file",(function(t,e,n){if(e=Number(e),n=Number(n),0===e)return 28;const{HEAPU8:r}=nt(this),i=tt.get(this).fds.get(t,A.PATH_UNLINK_FILE,BigInt(0));let s=ht.decode(a(r,e,e+n));s=m(i.realPath,s);return rt(this).unlinkSync(s),0}),(async function(t,e,n){if(e=Number(e),n=Number(n),0===e)return 28;const{HEAPU8:r}=nt(this),i=tt.get(this).fds.get(t,A.PATH_UNLINK_FILE,BigInt(0));let s=ht.decode(a(r,e,e+n));s=m(i.realPath,s);const o=rt(this);return await o.promises.unlink(s),0}),["i32","i32","i32"],["i32"]),this._setMemory=function(e){if(!(e instanceof t.Memory))throw new TypeError('"instance.exports.memory" property must be a WebAssembly.Memory');J.set(c,$(e))}}static createSync(t,e,n,r,i,s,o){const a=new W({size:3,in:r[0],out:r[1],err:r[2],fs:i,print:s,printErr:o}),c=new _t(t,e,a,!1,i);if(n.length>0)for(let t=0;t0)for(let t=0;t{void 0!==e&&a.push(`${t}=${e}`)})));const c=[];if(void 0!==t.preopens&&(e(t.preopens,"options.preopens"),Object.entries(t.preopens).forEach((({0:t,1:e})=>c.push({mappedPath:String(t),realPath:String(e)})))),c.length>0){if(void 0===t.fs)throw new Error("filesystem is disabled, can not preopen directory");try{e(t.fs,"options.fs")}catch(t){throw new TypeError("Node.js fs like implementation is not provided")}}void 0!==t.print&&r(t.print,"options.print"),void 0!==t.printErr&&r(t.printErr,"options.printErr"),void 0!==t.returnOnExit&&function(t,e){if("boolean"!=typeof t)throw new TypeError(`${e} must be a boolean. Received ${null===t?"null":typeof t}`)}(t.returnOnExit,"options.returnOnExit");return{args:o,env:a,preopens:c,stdio:[0,1,2],_WASI:s}}function Tt(t,e){this[yt]=t,this.wasiImport=e,this[It]=!1,this[Et]=0,this[mt]=void 0}class wt{constructor(t=pt){const{args:e,env:n,preopens:r,stdio:i,_WASI:s}=bt.call(this,t),o=s.createSync(e,n,r,i,t.fs,t.print,t.printErr),a=o._setMemory;delete o._setMemory,Tt.call(this,a,o),t.returnOnExit&&(o.proc_exit=Bt.bind(this))}finalizeBindings(t,n){var r,{memory:i=(null===(r=null==t?void 0:t.exports)||void 0===r?void 0:r.memory)}=void 0===n?{}:n;if(this[It])throw new Error("WASI instance has already started");e(t,"instance"),e(t.exports,"instance.exports"),this[yt](i),this[mt]=t,this[It]=!0}start(t){this.finalizeBindings(t);const{_start:e,_initialize:n}=this[mt].exports;let s;r(e,"instance.exports._start"),i(n,"instance.exports._initialize");try{s=e()}catch(t){if(t!==Et)throw t}return s instanceof Promise?s.then((()=>this[Et]),(t=>{if(t!==Et)throw t;return this[Et]})):this[Et]}initialize(t){this.finalizeBindings(t);const{_start:e,_initialize:n}=this[mt].exports;if(i(e,"instance.exports._start"),void 0!==n)return r(n,"instance.exports._initialize"),n()}getImportObject(){return{[this[At]]:this.wasiImport}}}function Bt(t){throw this[Et]=t,Et}async function Nt(t=pt){const n=Object.create(wt.prototype),{args:i,env:s,preopens:o,stdio:a,_WASI:c}=bt.call(n,t);void 0!==t.asyncify&&(e(t.asyncify,"options.asyncify"),r(t.asyncify.wrapImportFunction,"options.asyncify.wrapImportFunction"));const u=await c.createAsync(i,s,o,a,t.fs,t.print,t.printErr,t.asyncify),f=u._setMemory;return delete u._setMemory,Tt.call(n,f,u),t.returnOnExit&&(u.proc_exit=Bt.bind(n)),n}export{f as Asyncify,Y as Memory,wt as WASI,G as WebAssemblyMemory,l as asyncifyLoad,p as asyncifyLoadSync,Nt as createAsyncWASI,$ as extendMemory,d as load,_ as loadSync,q as wrapAsyncExport,Z as wrapAsyncImport,X as wrapExports}; diff --git a/node_modules/@tybys/wasm-util/dist/wasm-util.js b/node_modules/@tybys/wasm-util/dist/wasm-util.js new file mode 100644 index 00000000..975fbb31 --- /dev/null +++ b/node_modules/@tybys/wasm-util/dist/wasm-util.js @@ -0,0 +1,2780 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.wasmUtil = {})); +})(this, (function (exports) { 'use strict'; + + const _WebAssembly = typeof WebAssembly !== 'undefined' + ? WebAssembly + : typeof WXWebAssembly !== 'undefined' + ? WXWebAssembly + : undefined; + if (!_WebAssembly) { + throw new Error('WebAssembly is not supported in this environment'); + } + + /* eslint-disable spaced-comment */ + + function validateObject(value, name) { + if (value === null || typeof value !== 'object') { + throw new TypeError(`${name} must be an object. Received ${value === null ? 'null' : typeof value}`); + } + } + function validateArray(value, name) { + if (!Array.isArray(value)) { + throw new TypeError(`${name} must be an array. Received ${value === null ? 'null' : typeof value}`); + } + } + function validateBoolean(value, name) { + if (typeof value !== 'boolean') { + throw new TypeError(`${name} must be a boolean. Received ${value === null ? 'null' : typeof value}`); + } + } + function validateString(value, name) { + if (typeof value !== 'string') { + throw new TypeError(`${name} must be a string. Received ${value === null ? 'null' : typeof value}`); + } + } + function validateFunction(value, name) { + if (typeof value !== 'function') { + throw new TypeError(`${name} must be a function. Received ${value === null ? 'null' : typeof value}`); + } + } + function validateUndefined(value, name) { + if (value !== undefined) { + throw new TypeError(`${name} must be undefined. Received ${value === null ? 'null' : typeof value}`); + } + } + function isPromiseLike(obj) { + return !!(obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function'); + } + function wrapInstanceExports(exports, mapFn) { + const newExports = Object.create(null); + Object.keys(exports).forEach(name => { + const exportValue = exports[name]; + Object.defineProperty(newExports, name, { + enumerable: true, + value: mapFn(exportValue, name) + }); + }); + return newExports; + } + function sleepBreakIf(delay, breakIf) { + const start = Date.now(); + const end = start + delay; + let ret = false; + while (Date.now() < end) { + if (breakIf()) { + ret = true; + break; + } + } + return ret; + } + function unsharedSlice(view, start, end) { + return ((typeof SharedArrayBuffer === 'function' && view.buffer instanceof SharedArrayBuffer) || (Object.prototype.toString.call(view.buffer.constructor) === '[object SharedArrayBuffer]')) + ? view.slice(start, end) + : view.subarray(start, end); + } + + const ignoreNames = [ + 'asyncify_get_state', + 'asyncify_start_rewind', + 'asyncify_start_unwind', + 'asyncify_stop_rewind', + 'asyncify_stop_unwind' + ]; + function tryAllocate(instance, wasm64, size, mallocName) { + if (typeof instance.exports[mallocName] !== 'function' || size <= 0) { + return { + wasm64, + dataPtr: 16, + start: wasm64 ? 32 : 24, + end: 1024 + }; + } + const malloc = instance.exports[mallocName]; + const dataPtr = wasm64 ? Number(malloc(BigInt(16) + BigInt(size))) : malloc(8 + size); + if (dataPtr === 0) { + throw new Error('Allocate asyncify data failed'); + } + return wasm64 + ? { wasm64, dataPtr, start: dataPtr + 16, end: dataPtr + 16 + size } + : { wasm64, dataPtr, start: dataPtr + 8, end: dataPtr + 8 + size }; + } + /** @public */ + class Asyncify { + constructor() { + this.value = undefined; + this.exports = undefined; + this.dataPtr = 0; + } + init(memory, instance, options) { + var _a, _b; + if (this.exports) { + throw new Error('Asyncify has been initialized'); + } + if (!(memory instanceof _WebAssembly.Memory)) { + throw new TypeError('Require WebAssembly.Memory object'); + } + const exports = instance.exports; + for (let i = 0; i < ignoreNames.length; ++i) { + if (typeof exports[ignoreNames[i]] !== 'function') { + throw new TypeError('Invalid asyncify wasm'); + } + } + let address; + const wasm64 = Boolean(options.wasm64); + if (!options.tryAllocate) { + address = { + wasm64, + dataPtr: 16, + start: wasm64 ? 32 : 24, + end: 1024 + }; + } + else { + if (options.tryAllocate === true) { + address = tryAllocate(instance, wasm64, 4096, 'malloc'); + } + else { + address = tryAllocate(instance, wasm64, (_a = options.tryAllocate.size) !== null && _a !== void 0 ? _a : 4096, (_b = options.tryAllocate.name) !== null && _b !== void 0 ? _b : 'malloc'); + } + } + this.dataPtr = address.dataPtr; + if (wasm64) { + new BigInt64Array(memory.buffer, this.dataPtr).set([BigInt(address.start), BigInt(address.end)]); + } + else { + new Int32Array(memory.buffer, this.dataPtr).set([address.start, address.end]); + } + this.exports = this.wrapExports(exports, options.wrapExports); + const asyncifiedInstance = Object.create(_WebAssembly.Instance.prototype); + Object.defineProperty(asyncifiedInstance, 'exports', { value: this.exports }); + // Object.setPrototypeOf(instance, Instance.prototype) + return asyncifiedInstance; + } + assertState() { + if (this.exports.asyncify_get_state() !== 0 /* AsyncifyState.NONE */) { + throw new Error('Asyncify state error'); + } + } + wrapImportFunction(f) { + // eslint-disable-next-line @typescript-eslint/no-this-alias + const _this = this; + return (function () { + // eslint-disable-next-line no-unreachable-loop + while (_this.exports.asyncify_get_state() === 2 /* AsyncifyState.REWINDING */) { + _this.exports.asyncify_stop_rewind(); + return _this.value; + } + _this.assertState(); + const v = f.apply(this, arguments); + if (!isPromiseLike(v)) + return v; + _this.exports.asyncify_start_unwind(_this.dataPtr); + _this.value = v; + }); + } + wrapImports(imports) { + const importObject = {}; + Object.keys(imports).forEach(k => { + const mod = imports[k]; + const newModule = {}; + Object.keys(mod).forEach(name => { + const importValue = mod[name]; + if (typeof importValue === 'function') { + newModule[name] = this.wrapImportFunction(importValue); + } + else { + newModule[name] = importValue; + } + }); + importObject[k] = newModule; + }); + return importObject; + } + wrapExportFunction(f) { + // eslint-disable-next-line @typescript-eslint/no-this-alias + const _this = this; + return (async function () { + _this.assertState(); + let ret = f.apply(this, arguments); + while (_this.exports.asyncify_get_state() === 1 /* AsyncifyState.UNWINDING */) { + _this.exports.asyncify_stop_unwind(); + _this.value = await _this.value; + _this.assertState(); + _this.exports.asyncify_start_rewind(_this.dataPtr); + ret = f.call(this); + } + _this.assertState(); + return ret; + }); + } + wrapExports(exports, needWrap) { + return wrapInstanceExports(exports, (exportValue, name) => { + let ignore = ignoreNames.indexOf(name) !== -1 || typeof exportValue !== 'function'; + if (Array.isArray(needWrap)) { + ignore = ignore || (needWrap.indexOf(name) === -1); + } + return ignore ? exportValue : this.wrapExportFunction(exportValue); + }); + } + } + + function validateImports(imports) { + if (imports && typeof imports !== 'object') { + throw new TypeError('imports must be an object or undefined'); + } + } + function fetchWasm(urlOrBuffer, imports) { + if (typeof wx !== 'undefined' && typeof __wxConfig !== 'undefined') { + return _WebAssembly.instantiate(urlOrBuffer, imports); + } + return fetch(urlOrBuffer) + .then(response => response.arrayBuffer()) + .then(buffer => _WebAssembly.instantiate(buffer, imports)); + } + /** @public */ + function load(wasmInput, imports) { + validateImports(imports); + imports = imports !== null && imports !== void 0 ? imports : {}; + let source; + if (wasmInput instanceof ArrayBuffer || ArrayBuffer.isView(wasmInput)) { + return _WebAssembly.instantiate(wasmInput, imports); + } + if (wasmInput instanceof _WebAssembly.Module) { + return _WebAssembly.instantiate(wasmInput, imports).then((instance) => { + return { instance, module: wasmInput }; + }); + } + if (typeof wasmInput !== 'string' && !(wasmInput instanceof URL)) { + throw new TypeError('Invalid source'); + } + if (typeof _WebAssembly.instantiateStreaming === 'function') { + let responsePromise; + try { + responsePromise = fetch(wasmInput); + source = _WebAssembly.instantiateStreaming(responsePromise, imports).catch(() => { + return fetchWasm(wasmInput, imports); + }); + } + catch (_) { + source = fetchWasm(wasmInput, imports); + } + } + else { + source = fetchWasm(wasmInput, imports); + } + return source; + } + /** @public */ + function asyncifyLoad(asyncify, urlOrBuffer, imports) { + validateImports(imports); + imports = imports !== null && imports !== void 0 ? imports : {}; + const asyncifyHelper = new Asyncify(); + imports = asyncifyHelper.wrapImports(imports); + return load(urlOrBuffer, imports).then(source => { + var _a; + const memory = source.instance.exports.memory || ((_a = imports.env) === null || _a === void 0 ? void 0 : _a.memory); + return { module: source.module, instance: asyncifyHelper.init(memory, source.instance, asyncify) }; + }); + } + /** @public */ + function loadSync(wasmInput, imports) { + validateImports(imports); + imports = imports !== null && imports !== void 0 ? imports : {}; + let module; + if ((wasmInput instanceof ArrayBuffer) || ArrayBuffer.isView(wasmInput)) { + module = new _WebAssembly.Module(wasmInput); + } + else if (wasmInput instanceof WebAssembly.Module) { + module = wasmInput; + } + else { + throw new TypeError('Invalid source'); + } + const instance = new _WebAssembly.Instance(module, imports); + const source = { instance, module }; + return source; + } + /** @public */ + function asyncifyLoadSync(asyncify, buffer, imports) { + var _a; + validateImports(imports); + imports = imports !== null && imports !== void 0 ? imports : {}; + const asyncifyHelper = new Asyncify(); + imports = asyncifyHelper.wrapImports(imports); + const source = loadSync(buffer, imports); + const memory = source.instance.exports.memory || ((_a = imports.env) === null || _a === void 0 ? void 0 : _a.memory); + return { module: source.module, instance: asyncifyHelper.init(memory, source.instance, asyncify) }; + } + + const CHAR_DOT = 46; /* . */ + const CHAR_FORWARD_SLASH = 47; /* / */ + function isPosixPathSeparator(code) { + return code === CHAR_FORWARD_SLASH; + } + function normalizeString(path, allowAboveRoot, separator, isPathSeparator) { + let res = ''; + let lastSegmentLength = 0; + let lastSlash = -1; + let dots = 0; + let code = 0; + for (let i = 0; i <= path.length; ++i) { + if (i < path.length) { + code = path.charCodeAt(i); + } + else if (isPathSeparator(code)) { + break; + } + else { + code = CHAR_FORWARD_SLASH; + } + if (isPathSeparator(code)) { + if (lastSlash === i - 1 || dots === 1) ; + else if (dots === 2) { + if (res.length < 2 || lastSegmentLength !== 2 || + res.charCodeAt(res.length - 1) !== CHAR_DOT || + res.charCodeAt(res.length - 2) !== CHAR_DOT) { + if (res.length > 2) { + const lastSlashIndex = res.indexOf(separator); + if (lastSlashIndex === -1) { + res = ''; + lastSegmentLength = 0; + } + else { + res = res.slice(0, lastSlashIndex); + lastSegmentLength = + res.length - 1 - res.indexOf(separator); + } + lastSlash = i; + dots = 0; + continue; + } + else if (res.length !== 0) { + res = ''; + lastSegmentLength = 0; + lastSlash = i; + dots = 0; + continue; + } + } + if (allowAboveRoot) { + res += res.length > 0 ? `${separator}..` : '..'; + lastSegmentLength = 2; + } + } + else { + if (res.length > 0) { + res += `${separator}${path.slice(lastSlash + 1, i)}`; + } + else { + res = path.slice(lastSlash + 1, i); + } + lastSegmentLength = i - lastSlash - 1; + } + lastSlash = i; + dots = 0; + } + else if (code === CHAR_DOT && dots !== -1) { + ++dots; + } + else { + dots = -1; + } + } + return res; + } + function resolve(...args) { + let resolvedPath = ''; + let resolvedAbsolute = false; + for (let i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) { + const path = i >= 0 ? args[i] : '/'; + validateString(path, 'path'); + // Skip empty entries + if (path.length === 0) { + continue; + } + resolvedPath = `${path}/${resolvedPath}`; + resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + } + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + // Normalize the path + resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, '/', isPosixPathSeparator); + if (resolvedAbsolute) { + return `/${resolvedPath}`; + } + return resolvedPath.length > 0 ? resolvedPath : '.'; + } + + const FD_DATASYNC = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(0)); + const FD_READ = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(1)); + const FD_SEEK = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(2)); + const FD_FDSTAT_SET_FLAGS = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(3)); + const FD_SYNC = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(4)); + const FD_TELL = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(5)); + const FD_WRITE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(6)); + const FD_ADVISE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(7)); + const FD_ALLOCATE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(8)); + const PATH_CREATE_DIRECTORY = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(9)); + const PATH_CREATE_FILE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(10)); + const PATH_LINK_SOURCE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(11)); + const PATH_LINK_TARGET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(12)); + const PATH_OPEN = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(13)); + const FD_READDIR = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(14)); + const PATH_READLINK = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(15)); + const PATH_RENAME_SOURCE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(16)); + const PATH_RENAME_TARGET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(17)); + const PATH_FILESTAT_GET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(18)); + const PATH_FILESTAT_SET_SIZE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(19)); + const PATH_FILESTAT_SET_TIMES = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(20)); + const FD_FILESTAT_GET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(21)); + const FD_FILESTAT_SET_SIZE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(22)); + const FD_FILESTAT_SET_TIMES = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(23)); + const PATH_SYMLINK = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(24)); + const PATH_REMOVE_DIRECTORY = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(25)); + const PATH_UNLINK_FILE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(26)); + const POLL_FD_READWRITE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(27)); + const SOCK_SHUTDOWN = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(28)); + const SOCK_ACCEPT = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(29)); + const WasiRights = { + FD_DATASYNC, + FD_READ, + FD_SEEK, + FD_FDSTAT_SET_FLAGS, + FD_SYNC, + FD_TELL, + FD_WRITE, + FD_ADVISE, + FD_ALLOCATE, + PATH_CREATE_DIRECTORY, + PATH_CREATE_FILE, + PATH_LINK_SOURCE, + PATH_LINK_TARGET, + PATH_OPEN, + FD_READDIR, + PATH_READLINK, + PATH_RENAME_SOURCE, + PATH_RENAME_TARGET, + PATH_FILESTAT_GET, + PATH_FILESTAT_SET_SIZE, + PATH_FILESTAT_SET_TIMES, + FD_FILESTAT_GET, + FD_FILESTAT_SET_SIZE, + FD_FILESTAT_SET_TIMES, + PATH_SYMLINK, + PATH_REMOVE_DIRECTORY, + PATH_UNLINK_FILE, + POLL_FD_READWRITE, + SOCK_SHUTDOWN, + SOCK_ACCEPT + }; + + function strerror(errno) { + switch (errno) { + case 0 /* WasiErrno.ESUCCESS */: return 'Success'; + case 1 /* WasiErrno.E2BIG */: return 'Argument list too long'; + case 2 /* WasiErrno.EACCES */: return 'Permission denied'; + case 3 /* WasiErrno.EADDRINUSE */: return 'Address in use'; + case 4 /* WasiErrno.EADDRNOTAVAIL */: return 'Address not available'; + case 5 /* WasiErrno.EAFNOSUPPORT */: return 'Address family not supported by protocol'; + case 6 /* WasiErrno.EAGAIN */: return 'Resource temporarily unavailable'; + case 7 /* WasiErrno.EALREADY */: return 'Operation already in progress'; + case 8 /* WasiErrno.EBADF */: return 'Bad file descriptor'; + case 9 /* WasiErrno.EBADMSG */: return 'Bad message'; + case 10 /* WasiErrno.EBUSY */: return 'Resource busy'; + case 11 /* WasiErrno.ECANCELED */: return 'Operation canceled'; + case 12 /* WasiErrno.ECHILD */: return 'No child process'; + case 13 /* WasiErrno.ECONNABORTED */: return 'Connection aborted'; + case 14 /* WasiErrno.ECONNREFUSED */: return 'Connection refused'; + case 15 /* WasiErrno.ECONNRESET */: return 'Connection reset by peer'; + case 16 /* WasiErrno.EDEADLK */: return 'Resource deadlock would occur'; + case 17 /* WasiErrno.EDESTADDRREQ */: return 'Destination address required'; + case 18 /* WasiErrno.EDOM */: return 'Domain error'; + case 19 /* WasiErrno.EDQUOT */: return 'Quota exceeded'; + case 20 /* WasiErrno.EEXIST */: return 'File exists'; + case 21 /* WasiErrno.EFAULT */: return 'Bad address'; + case 22 /* WasiErrno.EFBIG */: return 'File too large'; + case 23 /* WasiErrno.EHOSTUNREACH */: return 'Host is unreachable'; + case 24 /* WasiErrno.EIDRM */: return 'Identifier removed'; + case 25 /* WasiErrno.EILSEQ */: return 'Illegal byte sequence'; + case 26 /* WasiErrno.EINPROGRESS */: return 'Operation in progress'; + case 27 /* WasiErrno.EINTR */: return 'Interrupted system call'; + case 28 /* WasiErrno.EINVAL */: return 'Invalid argument'; + case 29 /* WasiErrno.EIO */: return 'I/O error'; + case 30 /* WasiErrno.EISCONN */: return 'Socket is connected'; + case 31 /* WasiErrno.EISDIR */: return 'Is a directory'; + case 32 /* WasiErrno.ELOOP */: return 'Symbolic link loop'; + case 33 /* WasiErrno.EMFILE */: return 'No file descriptors available'; + case 34 /* WasiErrno.EMLINK */: return 'Too many links'; + case 35 /* WasiErrno.EMSGSIZE */: return 'Message too large'; + case 36 /* WasiErrno.EMULTIHOP */: return 'Multihop attempted'; + case 37 /* WasiErrno.ENAMETOOLONG */: return 'Filename too long'; + case 38 /* WasiErrno.ENETDOWN */: return 'Network is down'; + case 39 /* WasiErrno.ENETRESET */: return 'Connection reset by network'; + case 40 /* WasiErrno.ENETUNREACH */: return 'Network unreachable'; + case 41 /* WasiErrno.ENFILE */: return 'Too many files open in system'; + case 42 /* WasiErrno.ENOBUFS */: return 'No buffer space available'; + case 43 /* WasiErrno.ENODEV */: return 'No such device'; + case 44 /* WasiErrno.ENOENT */: return 'No such file or directory'; + case 45 /* WasiErrno.ENOEXEC */: return 'Exec format error'; + case 46 /* WasiErrno.ENOLCK */: return 'No locks available'; + case 47 /* WasiErrno.ENOLINK */: return 'Link has been severed'; + case 48 /* WasiErrno.ENOMEM */: return 'Out of memory'; + case 49 /* WasiErrno.ENOMSG */: return 'No message of the desired type'; + case 50 /* WasiErrno.ENOPROTOOPT */: return 'Protocol not available'; + case 51 /* WasiErrno.ENOSPC */: return 'No space left on device'; + case 52 /* WasiErrno.ENOSYS */: return 'Function not implemented'; + case 53 /* WasiErrno.ENOTCONN */: return 'Socket not connected'; + case 54 /* WasiErrno.ENOTDIR */: return 'Not a directory'; + case 55 /* WasiErrno.ENOTEMPTY */: return 'Directory not empty'; + case 56 /* WasiErrno.ENOTRECOVERABLE */: return 'State not recoverable'; + case 57 /* WasiErrno.ENOTSOCK */: return 'Not a socket'; + case 58 /* WasiErrno.ENOTSUP */: return 'Not supported'; + case 59 /* WasiErrno.ENOTTY */: return 'Not a tty'; + case 60 /* WasiErrno.ENXIO */: return 'No such device or address'; + case 61 /* WasiErrno.EOVERFLOW */: return 'Value too large for data type'; + case 62 /* WasiErrno.EOWNERDEAD */: return 'Previous owner died'; + case 63 /* WasiErrno.EPERM */: return 'Operation not permitted'; + case 64 /* WasiErrno.EPIPE */: return 'Broken pipe'; + case 65 /* WasiErrno.EPROTO */: return 'Protocol error'; + case 66 /* WasiErrno.EPROTONOSUPPORT */: return 'Protocol not supported'; + case 67 /* WasiErrno.EPROTOTYPE */: return 'Protocol wrong type for socket'; + case 68 /* WasiErrno.ERANGE */: return 'Result not representable'; + case 69 /* WasiErrno.EROFS */: return 'Read-only file system'; + case 70 /* WasiErrno.ESPIPE */: return 'Invalid seek'; + case 71 /* WasiErrno.ESRCH */: return 'No such process'; + case 72 /* WasiErrno.ESTALE */: return 'Stale file handle'; + case 73 /* WasiErrno.ETIMEDOUT */: return 'Operation timed out'; + case 74 /* WasiErrno.ETXTBSY */: return 'Text file busy'; + case 75 /* WasiErrno.EXDEV */: return 'Cross-device link'; + case 76 /* WasiErrno.ENOTCAPABLE */: return 'Capabilities insufficient'; + default: return 'Unknown error'; + } + } + class WasiError extends Error { + constructor(message, errno) { + super(message); + this.errno = errno; + } + getErrorMessage() { + return strerror(this.errno); + } + } + Object.defineProperty(WasiError.prototype, 'name', { + configurable: true, + writable: true, + value: 'WasiError' + }); + + const RIGHTS_ALL = WasiRights.FD_DATASYNC | + WasiRights.FD_READ | + WasiRights.FD_SEEK | + WasiRights.FD_FDSTAT_SET_FLAGS | + WasiRights.FD_SYNC | + WasiRights.FD_TELL | + WasiRights.FD_WRITE | + WasiRights.FD_ADVISE | + WasiRights.FD_ALLOCATE | + WasiRights.PATH_CREATE_DIRECTORY | + WasiRights.PATH_CREATE_FILE | + WasiRights.PATH_LINK_SOURCE | + WasiRights.PATH_LINK_TARGET | + WasiRights.PATH_OPEN | + WasiRights.FD_READDIR | + WasiRights.PATH_READLINK | + WasiRights.PATH_RENAME_SOURCE | + WasiRights.PATH_RENAME_TARGET | + WasiRights.PATH_FILESTAT_GET | + WasiRights.PATH_FILESTAT_SET_SIZE | + WasiRights.PATH_FILESTAT_SET_TIMES | + WasiRights.FD_FILESTAT_GET | + WasiRights.FD_FILESTAT_SET_TIMES | + WasiRights.FD_FILESTAT_SET_SIZE | + WasiRights.PATH_SYMLINK | + WasiRights.PATH_UNLINK_FILE | + WasiRights.PATH_REMOVE_DIRECTORY | + WasiRights.POLL_FD_READWRITE | + WasiRights.SOCK_SHUTDOWN | + WasiRights.SOCK_ACCEPT; + const BLOCK_DEVICE_BASE = RIGHTS_ALL; + const BLOCK_DEVICE_INHERITING = RIGHTS_ALL; + const CHARACTER_DEVICE_BASE = RIGHTS_ALL; + const CHARACTER_DEVICE_INHERITING = RIGHTS_ALL; + const REGULAR_FILE_BASE = WasiRights.FD_DATASYNC | + WasiRights.FD_READ | + WasiRights.FD_SEEK | + WasiRights.FD_FDSTAT_SET_FLAGS | + WasiRights.FD_SYNC | + WasiRights.FD_TELL | + WasiRights.FD_WRITE | + WasiRights.FD_ADVISE | + WasiRights.FD_ALLOCATE | + WasiRights.FD_FILESTAT_GET | + WasiRights.FD_FILESTAT_SET_SIZE | + WasiRights.FD_FILESTAT_SET_TIMES | + WasiRights.POLL_FD_READWRITE; + const REGULAR_FILE_INHERITING = /*#__PURE__*/ BigInt(0); + const DIRECTORY_BASE = WasiRights.FD_FDSTAT_SET_FLAGS | + WasiRights.FD_SYNC | + WasiRights.FD_ADVISE | + WasiRights.PATH_CREATE_DIRECTORY | + WasiRights.PATH_CREATE_FILE | + WasiRights.PATH_LINK_SOURCE | + WasiRights.PATH_LINK_TARGET | + WasiRights.PATH_OPEN | + WasiRights.FD_READDIR | + WasiRights.PATH_READLINK | + WasiRights.PATH_RENAME_SOURCE | + WasiRights.PATH_RENAME_TARGET | + WasiRights.PATH_FILESTAT_GET | + WasiRights.PATH_FILESTAT_SET_SIZE | + WasiRights.PATH_FILESTAT_SET_TIMES | + WasiRights.FD_FILESTAT_GET | + WasiRights.FD_FILESTAT_SET_TIMES | + WasiRights.PATH_SYMLINK | + WasiRights.PATH_UNLINK_FILE | + WasiRights.PATH_REMOVE_DIRECTORY | + WasiRights.POLL_FD_READWRITE; + const DIRECTORY_INHERITING = DIRECTORY_BASE | REGULAR_FILE_BASE; + const SOCKET_BASE = (WasiRights.FD_READ | + WasiRights.FD_FDSTAT_SET_FLAGS | + WasiRights.FD_WRITE | + WasiRights.FD_FILESTAT_GET | + WasiRights.POLL_FD_READWRITE | + WasiRights.SOCK_SHUTDOWN); + const SOCKET_INHERITING = RIGHTS_ALL; + const TTY_BASE = WasiRights.FD_READ | + WasiRights.FD_FDSTAT_SET_FLAGS | + WasiRights.FD_WRITE | + WasiRights.FD_FILESTAT_GET | + WasiRights.POLL_FD_READWRITE; + const TTY_INHERITING = /*#__PURE__*/ BigInt(0); + function getRights(stdio, fd, flags, type) { + const ret = { + base: BigInt(0), + inheriting: BigInt(0) + }; + if (type === 0 /* WasiFileType.UNKNOWN */) { + throw new WasiError('Unknown file type', 28 /* WasiErrno.EINVAL */); + } + switch (type) { + case 4 /* WasiFileType.REGULAR_FILE */: + ret.base = REGULAR_FILE_BASE; + ret.inheriting = REGULAR_FILE_INHERITING; + break; + case 3 /* WasiFileType.DIRECTORY */: + ret.base = DIRECTORY_BASE; + ret.inheriting = DIRECTORY_INHERITING; + break; + case 6 /* WasiFileType.SOCKET_STREAM */: + case 5 /* WasiFileType.SOCKET_DGRAM */: + ret.base = SOCKET_BASE; + ret.inheriting = SOCKET_INHERITING; + break; + case 2 /* WasiFileType.CHARACTER_DEVICE */: + if (stdio.indexOf(fd) !== -1) { + ret.base = TTY_BASE; + ret.inheriting = TTY_INHERITING; + } + else { + ret.base = CHARACTER_DEVICE_BASE; + ret.inheriting = CHARACTER_DEVICE_INHERITING; + } + break; + case 1 /* WasiFileType.BLOCK_DEVICE */: + ret.base = BLOCK_DEVICE_BASE; + ret.inheriting = BLOCK_DEVICE_INHERITING; + break; + default: + ret.base = BigInt(0); + ret.inheriting = BigInt(0); + } + /* Disable read/write bits depending on access mode. */ + const read_or_write_only = flags & (0 | 1 | 2); + if (read_or_write_only === 0) { + ret.base &= ~WasiRights.FD_WRITE; + } + else if (read_or_write_only === 1) { + ret.base &= ~WasiRights.FD_READ; + } + return ret; + } + + function concatBuffer(buffers, size) { + let total = 0; + if (typeof size === 'number' && size >= 0) { + total = size; + } + else { + for (let i = 0; i < buffers.length; i++) { + const buffer = buffers[i]; + total += buffer.length; + } + } + let pos = 0; + const ret = new Uint8Array(total); + for (let i = 0; i < buffers.length; i++) { + const buffer = buffers[i]; + ret.set(buffer, pos); + pos += buffer.length; + } + return ret; + } + class FileDescriptor { + constructor(id, fd, path, realPath, type, rightsBase, rightsInheriting, preopen) { + this.id = id; + this.fd = fd; + this.path = path; + this.realPath = realPath; + this.type = type; + this.rightsBase = rightsBase; + this.rightsInheriting = rightsInheriting; + this.preopen = preopen; + this.pos = BigInt(0); + this.size = BigInt(0); + } + seek(offset, whence) { + if (whence === 0 /* WasiWhence.SET */) { + this.pos = BigInt(offset); + } + else if (whence === 1 /* WasiWhence.CUR */) { + this.pos += BigInt(offset); + } + else if (whence === 2 /* WasiWhence.END */) { + this.pos = BigInt(this.size) - BigInt(offset); + } + else { + throw new WasiError('Unknown whence', 29 /* WasiErrno.EIO */); + } + return this.pos; + } + } + class StandardOutput extends FileDescriptor { + constructor(log, id, fd, path, realPath, type, rightsBase, rightsInheriting, preopen) { + super(id, fd, path, realPath, type, rightsBase, rightsInheriting, preopen); + this._log = log; + this._buf = null; + } + write(buffer) { + const originalBuffer = buffer; + if (this._buf) { + buffer = concatBuffer([this._buf, buffer]); + this._buf = null; + } + if (buffer.indexOf(10) === -1) { + this._buf = buffer; + return originalBuffer.byteLength; + } + let written = 0; + let lastBegin = 0; + let index; + while ((index = buffer.indexOf(10, written)) !== -1) { + const str = new TextDecoder().decode(buffer.subarray(lastBegin, index)); + this._log(str); + written += index - lastBegin + 1; + lastBegin = index + 1; + } + if (written < buffer.length) { + this._buf = buffer.slice(written); + } + return originalBuffer.byteLength; + } + } + function toFileType(stat) { + if (stat.isBlockDevice()) + return 1 /* WasiFileType.BLOCK_DEVICE */; + if (stat.isCharacterDevice()) + return 2 /* WasiFileType.CHARACTER_DEVICE */; + if (stat.isDirectory()) + return 3 /* WasiFileType.DIRECTORY */; + if (stat.isSocket()) + return 6 /* WasiFileType.SOCKET_STREAM */; + if (stat.isFile()) + return 4 /* WasiFileType.REGULAR_FILE */; + if (stat.isSymbolicLink()) + return 7 /* WasiFileType.SYMBOLIC_LINK */; + return 0 /* WasiFileType.UNKNOWN */; + } + function toFileStat(view, buf, stat) { + view.setBigUint64(buf, stat.dev, true); + view.setBigUint64(buf + 8, stat.ino, true); + view.setBigUint64(buf + 16, BigInt(toFileType(stat)), true); + view.setBigUint64(buf + 24, stat.nlink, true); + view.setBigUint64(buf + 32, stat.size, true); + view.setBigUint64(buf + 40, stat.atimeMs * BigInt(1000000), true); + view.setBigUint64(buf + 48, stat.mtimeMs * BigInt(1000000), true); + view.setBigUint64(buf + 56, stat.ctimeMs * BigInt(1000000), true); + } + class FileDescriptorTable { + constructor(options) { + this.used = 0; + this.size = options.size; + this.fds = Array(options.size); + this.stdio = [options.in, options.out, options.err]; + this.print = options.print; + this.printErr = options.printErr; + this.insertStdio(options.in, 0, ''); + this.insertStdio(options.out, 1, ''); + this.insertStdio(options.err, 2, ''); + } + insertStdio(fd, expected, name) { + const type = 2 /* WasiFileType.CHARACTER_DEVICE */; + const { base, inheriting } = getRights(this.stdio, fd, 2 /* FileControlFlag.O_RDWR */, type); + const wrap = this.insert(fd, name, name, type, base, inheriting, 0); + if (wrap.id !== expected) { + throw new WasiError(`id: ${wrap.id} !== expected: ${expected}`, 8 /* WasiErrno.EBADF */); + } + return wrap; + } + insert(fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen) { + var _a, _b; + let index = -1; + if (this.used >= this.size) { + const newSize = this.size * 2; + this.fds.length = newSize; + index = this.size; + this.size = newSize; + } + else { + for (let i = 0; i < this.size; ++i) { + if (this.fds[i] == null) { + index = i; + break; + } + } + } + let entry; + if (mappedPath === '') { + entry = new StandardOutput((_a = this.print) !== null && _a !== void 0 ? _a : console.log, index, fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen); + } + else if (mappedPath === '') { + entry = new StandardOutput((_b = this.printErr) !== null && _b !== void 0 ? _b : console.error, index, fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen); + } + else { + entry = new FileDescriptor(index, fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen); + } + this.fds[index] = entry; + this.used++; + return entry; + } + get(id, base, inheriting) { + if (id >= this.size) { + throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); + } + const entry = this.fds[id]; + if (!entry || entry.id !== id) { + throw new WasiError('Bad file descriptor', 8 /* WasiErrno.EBADF */); + } + /* Validate that the fd has the necessary rights. */ + if ((~entry.rightsBase & base) !== BigInt(0) || (~entry.rightsInheriting & inheriting) !== BigInt(0)) { + throw new WasiError('Capabilities insufficient', 76 /* WasiErrno.ENOTCAPABLE */); + } + return entry; + } + remove(id) { + if (id >= this.size) { + throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); + } + const entry = this.fds[id]; + if (!entry || entry.id !== id) { + throw new WasiError('Bad file descriptor', 8 /* WasiErrno.EBADF */); + } + this.fds[id] = undefined; + this.used--; + } + } + class SyncTable extends FileDescriptorTable { + constructor(options) { + super(options); + this.fs = options.fs; + } + getFileTypeByFd(fd) { + const stats = this.fs.fstatSync(fd, { bigint: true }); + return toFileType(stats); + } + insertPreopen(fd, mappedPath, realPath) { + const type = this.getFileTypeByFd(fd); + if (type !== 3 /* WasiFileType.DIRECTORY */) { + throw new WasiError(`Preopen not dir: ["${mappedPath}", "${realPath}"]`, 54 /* WasiErrno.ENOTDIR */); + } + const result = getRights(this.stdio, fd, 0, type); + return this.insert(fd, mappedPath, realPath, type, result.base, result.inheriting, 1); + } + renumber(dst, src) { + if (dst === src) + return; + if (dst >= this.size || src >= this.size) { + throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); + } + const dstEntry = this.fds[dst]; + const srcEntry = this.fds[src]; + if (!dstEntry || !srcEntry || dstEntry.id !== dst || srcEntry.id !== src) { + throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); + } + this.fs.closeSync(dstEntry.fd); + this.fds[dst] = this.fds[src]; + this.fds[dst].id = dst; + this.fds[src] = undefined; + this.used--; + } + } + class AsyncTable extends FileDescriptorTable { + // eslint-disable-next-line @typescript-eslint/no-useless-constructor + constructor(options) { + super(options); + } + async getFileTypeByFd(fd) { + const stats = await fd.stat({ bigint: true }); + return toFileType(stats); + } + async insertPreopen(fd, mappedPath, realPath) { + const type = await this.getFileTypeByFd(fd); + if (type !== 3 /* WasiFileType.DIRECTORY */) { + throw new WasiError(`Preopen not dir: ["${mappedPath}", "${realPath}"]`, 54 /* WasiErrno.ENOTDIR */); + } + const result = getRights(this.stdio, fd.fd, 0, type); + return this.insert(fd, mappedPath, realPath, type, result.base, result.inheriting, 1); + } + async renumber(dst, src) { + if (dst === src) + return; + if (dst >= this.size || src >= this.size) { + throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); + } + const dstEntry = this.fds[dst]; + const srcEntry = this.fds[src]; + if (!dstEntry || !srcEntry || dstEntry.id !== dst || srcEntry.id !== src) { + throw new WasiError('Invalid fd', 8 /* WasiErrno.EBADF */); + } + await dstEntry.fd.close(); + this.fds[dst] = this.fds[src]; + this.fds[dst].id = dst; + this.fds[src] = undefined; + this.used--; + } + } + + /** @public */ + const WebAssemblyMemory = /*#__PURE__*/ (function () { return _WebAssembly.Memory; })(); + /** @public */ + class Memory extends WebAssemblyMemory { + // eslint-disable-next-line @typescript-eslint/no-useless-constructor + constructor(descriptor) { + super(descriptor); + } + get HEAP8() { return new Int8Array(super.buffer); } + get HEAPU8() { return new Uint8Array(super.buffer); } + get HEAP16() { return new Int16Array(super.buffer); } + get HEAPU16() { return new Uint16Array(super.buffer); } + get HEAP32() { return new Int32Array(super.buffer); } + get HEAPU32() { return new Uint32Array(super.buffer); } + get HEAP64() { return new BigInt64Array(super.buffer); } + get HEAPU64() { return new BigUint64Array(super.buffer); } + get HEAPF32() { return new Float32Array(super.buffer); } + get HEAPF64() { return new Float64Array(super.buffer); } + get view() { return new DataView(super.buffer); } + } + /** @public */ + function extendMemory(memory) { + if (Object.getPrototypeOf(memory) === _WebAssembly.Memory.prototype) { + Object.setPrototypeOf(memory, Memory.prototype); + } + return memory; + } + + function checkWebAssemblyFunction() { + const WebAssemblyFunction = _WebAssembly.Function; + if (typeof WebAssemblyFunction !== 'function') { + throw new Error('WebAssembly.Function is not supported in this environment.' + + ' If you are using V8 based browser like Chrome, try to specify' + + ' --js-flags="--wasm-staging --experimental-wasm-stack-switching"'); + } + return WebAssemblyFunction; + } + /** @public */ + function wrapAsyncImport(f, parameterType, returnType) { + const WebAssemblyFunction = checkWebAssemblyFunction(); + if (typeof f !== 'function') { + throw new TypeError('Function required'); + } + const parameters = parameterType.slice(0); + parameters.unshift('externref'); + return new WebAssemblyFunction({ parameters, results: returnType }, f, { suspending: 'first' }); + } + /** @public */ + function wrapAsyncExport(f) { + const WebAssemblyFunction = checkWebAssemblyFunction(); + if (typeof f !== 'function') { + throw new TypeError('Function required'); + } + return new WebAssemblyFunction({ parameters: [...WebAssemblyFunction.type(f).parameters.slice(1)], results: ['externref'] }, f, { promising: 'first' }); + } + /** @public */ + function wrapExports(exports, needWrap) { + return wrapInstanceExports(exports, (exportValue, name) => { + let ignore = typeof exportValue !== 'function'; + if (Array.isArray(needWrap)) { + ignore = ignore || (needWrap.indexOf(name) === -1); + } + return ignore ? exportValue : wrapAsyncExport(exportValue); + }); + } + + function copyMemory(targets, src) { + if (targets.length === 0 || src.length === 0) + return 0; + let copied = 0; + let left = src.length - copied; + for (let i = 0; i < targets.length; ++i) { + const target = targets[i]; + if (left < target.length) { + target.set(src.subarray(copied, copied + left), 0); + copied += left; + left = 0; + return copied; + } + target.set(src.subarray(copied, copied + target.length), 0); + copied += target.length; + left -= target.length; + } + return copied; + } + const _memory = new WeakMap(); + const _wasi = new WeakMap(); + const _fs = new WeakMap(); + function getMemory(wasi) { + return _memory.get(wasi); + } + function getFs(wasi) { + const fs = _fs.get(wasi); + if (!fs) + throw new Error('filesystem is unavailable'); + return fs; + } + function handleError(err) { + if (err instanceof WasiError) { + { + console.warn(err); + } + return err.errno; + } + switch (err.code) { + case 'ENOENT': return 44 /* WasiErrno.ENOENT */; + case 'EBADF': return 8 /* WasiErrno.EBADF */; + case 'EINVAL': return 28 /* WasiErrno.EINVAL */; + case 'EPERM': return 63 /* WasiErrno.EPERM */; + case 'EPROTO': return 65 /* WasiErrno.EPROTO */; + case 'EEXIST': return 20 /* WasiErrno.EEXIST */; + case 'ENOTDIR': return 54 /* WasiErrno.ENOTDIR */; + case 'EMFILE': return 33 /* WasiErrno.EMFILE */; + case 'EACCES': return 2 /* WasiErrno.EACCES */; + case 'EISDIR': return 31 /* WasiErrno.EISDIR */; + case 'ENOTEMPTY': return 55 /* WasiErrno.ENOTEMPTY */; + case 'ENOSYS': return 52 /* WasiErrno.ENOSYS */; + } + throw err; + } + function defineName(name, f) { + Object.defineProperty(f, 'name', { value: name }); + return f; + } + function tryCall(f, wasi, args) { + let r; + try { + r = f.apply(wasi, args); + } + catch (err) { + return handleError(err); + } + if (isPromiseLike(r)) { + return r.then(_ => _, handleError); + } + return r; + } + function syscallWrap(self, name, f) { + let debug = false; + const NODE_DEBUG_NATIVE = (() => { + try { + return "wasi"; + } + catch (_) { + return undefined; + } + })(); + if (typeof NODE_DEBUG_NATIVE === 'string' && NODE_DEBUG_NATIVE.split(',').includes('wasi')) { + debug = true; + } + return debug + ? defineName(name, function () { + const args = Array.prototype.slice.call(arguments); + let debugArgs = [`${name}(${Array.from({ length: arguments.length }).map(() => '%d').join(', ')})`]; + debugArgs = debugArgs.concat(args); + console.debug.apply(console, debugArgs); + return tryCall(f, self, args); + }) + : defineName(name, function () { + return tryCall(f, self, arguments); + }); + } + function resolvePathSync(fs, fileDescriptor, path, flags) { + let resolvedPath = resolve(fileDescriptor.realPath, path); + if ((flags & 1) === 1) { + try { + resolvedPath = fs.readlinkSync(resolvedPath); + } + catch (err) { + if (err.code !== 'EINVAL' && err.code !== 'ENOENT') { + throw err; + } + } + } + return resolvedPath; + } + async function resolvePathAsync(fs, fileDescriptor, path, flags) { + let resolvedPath = resolve(fileDescriptor.realPath, path); + if ((flags & 1) === 1) { + try { + resolvedPath = await fs.promises.readlink(resolvedPath); + } + catch (err) { + if (err.code !== 'EINVAL' && err.code !== 'ENOENT') { + throw err; + } + } + } + return resolvedPath; + } + // eslint-disable-next-line spaced-comment + const encoder = /*#__PURE__*/ new TextEncoder(); + // eslint-disable-next-line spaced-comment + const decoder = /*#__PURE__*/ new TextDecoder(); + const INT64_MAX = (BigInt(1) << BigInt(63)) - BigInt(1); + function readStdin() { + const value = window.prompt(); + if (value === null) + return new Uint8Array(); + const buffer = new TextEncoder().encode(value + '\n'); + return buffer; + } + function validateFstFlagsOrReturn(flags) { + return (Boolean((flags) & ~(1 /* WasiFstFlag.SET_ATIM */ | 2 /* WasiFstFlag.SET_ATIM_NOW */ | + 4 /* WasiFstFlag.SET_MTIM */ | 8 /* WasiFstFlag.SET_MTIM_NOW */)) || + ((flags) & (1 /* WasiFstFlag.SET_ATIM */ | 2 /* WasiFstFlag.SET_ATIM_NOW */)) === + (1 /* WasiFstFlag.SET_ATIM */ | 2 /* WasiFstFlag.SET_ATIM_NOW */) || + ((flags) & (4 /* WasiFstFlag.SET_MTIM */ | 8 /* WasiFstFlag.SET_MTIM_NOW */)) === + (4 /* WasiFstFlag.SET_MTIM */ | 8 /* WasiFstFlag.SET_MTIM_NOW */)); + } + class WASI$1 { + constructor(args, env, fds, asyncFs, fs, asyncify) { + this.args_get = syscallWrap(this, 'args_get', function (argv, argv_buf) { + argv = Number(argv); + argv_buf = Number(argv_buf); + if (argv === 0 || argv_buf === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const args = wasi.args; + for (let i = 0; i < args.length; ++i) { + const arg = args[i]; + view.setInt32(argv, argv_buf, true); + argv += 4; + const data = encoder.encode(arg + '\0'); + HEAPU8.set(data, argv_buf); + argv_buf += data.length; + } + return 0 /* WasiErrno.ESUCCESS */; + }); + this.args_sizes_get = syscallWrap(this, 'args_sizes_get', function (argc, argv_buf_size) { + argc = Number(argc); + argv_buf_size = Number(argv_buf_size); + if (argc === 0 || argv_buf_size === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { view } = getMemory(this); + const wasi = _wasi.get(this); + const args = wasi.args; + view.setUint32(argc, args.length, true); + view.setUint32(argv_buf_size, encoder.encode(args.join('\0') + '\0').length, true); + return 0 /* WasiErrno.ESUCCESS */; + }); + this.environ_get = syscallWrap(this, 'environ_get', function (environ, environ_buf) { + environ = Number(environ); + environ_buf = Number(environ_buf); + if (environ === 0 || environ_buf === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const env = wasi.env; + for (let i = 0; i < env.length; ++i) { + const pair = env[i]; + view.setInt32(environ, environ_buf, true); + environ += 4; + const data = encoder.encode(pair + '\0'); + HEAPU8.set(data, environ_buf); + environ_buf += data.length; + } + return 0 /* WasiErrno.ESUCCESS */; + }); + this.environ_sizes_get = syscallWrap(this, 'environ_sizes_get', function (len, buflen) { + len = Number(len); + buflen = Number(buflen); + if (len === 0 || buflen === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { view } = getMemory(this); + const wasi = _wasi.get(this); + view.setUint32(len, wasi.env.length, true); + view.setUint32(buflen, encoder.encode(wasi.env.join('\0') + '\0').length, true); + return 0 /* WasiErrno.ESUCCESS */; + }); + this.clock_res_get = syscallWrap(this, 'clock_res_get', function (id, resolution) { + resolution = Number(resolution); + if (resolution === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { view } = getMemory(this); + switch (id) { + case 0 /* WasiClockid.REALTIME */: + view.setBigUint64(resolution, BigInt(1000000), true); + return 0 /* WasiErrno.ESUCCESS */; + case 1 /* WasiClockid.MONOTONIC */: + case 2 /* WasiClockid.PROCESS_CPUTIME_ID */: + case 3 /* WasiClockid.THREAD_CPUTIME_ID */: + view.setBigUint64(resolution, BigInt(1000), true); + return 0 /* WasiErrno.ESUCCESS */; + default: return 28 /* WasiErrno.EINVAL */; + } + }); + this.clock_time_get = syscallWrap(this, 'clock_time_get', function (id, _percision, time) { + time = Number(time); + if (time === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { view } = getMemory(this); + switch (id) { + case 0 /* WasiClockid.REALTIME */: + view.setBigUint64(time, BigInt(Date.now()) * BigInt(1000000), true); + return 0 /* WasiErrno.ESUCCESS */; + case 1 /* WasiClockid.MONOTONIC */: + case 2 /* WasiClockid.PROCESS_CPUTIME_ID */: + case 3 /* WasiClockid.THREAD_CPUTIME_ID */: { + const t = performance.now() / 1000; + const s = Math.trunc(t); + const ms = Math.floor((t - s) * 1000); + const result = BigInt(s) * BigInt(1000000000) + BigInt(ms) * BigInt(1000000); + view.setBigUint64(time, result, true); + return 0 /* WasiErrno.ESUCCESS */; + } + default: return 28 /* WasiErrno.EINVAL */; + } + }); + this.fd_advise = syscallWrap(this, 'fd_advise', function (_fd, _offset, _len, _advice) { + return 52 /* WasiErrno.ENOSYS */; + }); + this.fd_fdstat_get = syscallWrap(this, 'fd_fdstat_get', function (fd, fdstat) { + fdstat = Number(fdstat); + if (fdstat === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); + const { view } = getMemory(this); + view.setUint16(fdstat, fileDescriptor.type, true); + view.setUint16(fdstat + 2, 0, true); + view.setBigUint64(fdstat + 8, fileDescriptor.rightsBase, true); + view.setBigUint64(fdstat + 16, fileDescriptor.rightsInheriting, true); + return 0 /* WasiErrno.ESUCCESS */; + }); + this.fd_fdstat_set_flags = syscallWrap(this, 'fd_fdstat_set_flags', function (_fd, _flags) { + return 52 /* WasiErrno.ENOSYS */; + }); + this.fd_fdstat_set_rights = syscallWrap(this, 'fd_fdstat_set_rights', function (fd, rightsBase, rightsInheriting) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); + if ((rightsBase | fileDescriptor.rightsBase) > fileDescriptor.rightsBase) { + return 76 /* WasiErrno.ENOTCAPABLE */; + } + if ((rightsInheriting | fileDescriptor.rightsInheriting) > + fileDescriptor.rightsInheriting) { + return 76 /* WasiErrno.ENOTCAPABLE */; + } + fileDescriptor.rightsBase = rightsBase; + fileDescriptor.rightsInheriting = rightsInheriting; + return 0 /* WasiErrno.ESUCCESS */; + }); + this.fd_prestat_get = syscallWrap(this, 'fd_prestat_get', function (fd, prestat) { + prestat = Number(prestat); + if (prestat === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const wasi = _wasi.get(this); + let fileDescriptor; + try { + fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); + } + catch (err) { + if (err instanceof WasiError) + return err.errno; + throw err; + } + if (fileDescriptor.preopen !== 1) + return 28 /* WasiErrno.EINVAL */; + const { view } = getMemory(this); + // preopen type is dir(0) + view.setUint32(prestat, 0, true); + view.setUint32(prestat + 4, encoder.encode(fileDescriptor.path).length, true); + return 0 /* WasiErrno.ESUCCESS */; + }); + this.fd_prestat_dir_name = syscallWrap(this, 'fd_prestat_dir_name', function (fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); + if (fileDescriptor.preopen !== 1) + return 8 /* WasiErrno.EBADF */; + const buffer = encoder.encode(fileDescriptor.path); + const size = buffer.length; + if (size > path_len) + return 42 /* WasiErrno.ENOBUFS */; + const { HEAPU8 } = getMemory(this); + HEAPU8.set(buffer, path); + return 0 /* WasiErrno.ESUCCESS */; + }); + this.fd_seek = syscallWrap(this, 'fd_seek', function (fd, offset, whence, newOffset) { + newOffset = Number(newOffset); + if (newOffset === 0) { + return 28 /* WasiErrno.EINVAL */; + } + if (fd === 0 || fd === 1 || fd === 2) + return 0 /* WasiErrno.ESUCCESS */; + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_SEEK, BigInt(0)); + const r = fileDescriptor.seek(offset, whence); + const { view } = getMemory(this); + view.setBigUint64(newOffset, r, true); + return 0 /* WasiErrno.ESUCCESS */; + }); + this.fd_tell = syscallWrap(this, 'fd_tell', function (fd, offset) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_TELL, BigInt(0)); + const pos = BigInt(fileDescriptor.pos); + const { view } = getMemory(this); + view.setBigUint64(Number(offset), pos, true); + return 0 /* WasiErrno.ESUCCESS */; + }); + this.poll_oneoff = syscallWrap(this, 'poll_oneoff', function (in_ptr, out_ptr, nsubscriptions, nevents) { + in_ptr = Number(in_ptr); + out_ptr = Number(out_ptr); + nevents = Number(nevents); + nsubscriptions = Number(nsubscriptions); + nsubscriptions = nsubscriptions >>> 0; + if (in_ptr === 0 || out_ptr === 0 || nsubscriptions === 0 || nevents === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { view } = getMemory(this); + view.setUint32(nevents, 0, true); + let i = 0; + let timer_userdata = BigInt(0); + let cur_timeout = BigInt(0); + let has_timeout = 0; + let min_timeout = BigInt(0); + let sub; + const subscriptions = Array(nsubscriptions); + for (i = 0; i < nsubscriptions; i++) { + sub = in_ptr + i * 48; + const userdata = view.getBigUint64(sub, true); + const type = view.getUint8(sub + 8); + const clockIdOrFd = view.getUint32(sub + 16, true); + const timeout = view.getBigUint64(sub + 24, true); + const precision = view.getBigUint64(sub + 32, true); + const flags = view.getUint16(sub + 40, true); + subscriptions[i] = { + userdata, + type, + u: { + clock: { + clock_id: clockIdOrFd, + timeout, + precision, + flags + }, + fd_readwrite: { + fd: clockIdOrFd + } + } + }; + } + const fdevents = []; + for (i = 0; i < nsubscriptions; i++) { + sub = subscriptions[i]; + switch (sub.type) { + case 0 /* WasiEventType.CLOCK */: { + if (sub.u.clock.flags === 1 /* WasiSubclockflags.ABSTIME */) { + /* Convert absolute time to relative delay. */ + const now = BigInt(Date.now()) * BigInt(1000000); + cur_timeout = sub.u.clock.timeout - now; + } + else { + cur_timeout = sub.u.clock.timeout; + } + if (has_timeout === 0 || cur_timeout < min_timeout) { + min_timeout = cur_timeout; + timer_userdata = sub.userdata; + has_timeout = 1; + } + break; + } + case 1 /* WasiEventType.FD_READ */: + case 2 /* WasiEventType.FD_WRITE */: + fdevents.push(sub); + break; + default: return 28 /* WasiErrno.EINVAL */; + } + } + if (fdevents.length > 0) { + for (i = 0; i < fdevents.length; i++) { + const fdevent = fdevents[i]; + const event = out_ptr + 32 * i; + view.setBigUint64(event, fdevent.userdata, true); + view.setUint32(event + 8, 52 /* WasiErrno.ENOSYS */, true); + view.setUint32(event + 12, fdevent.type, true); + view.setBigUint64(event + 16, BigInt(0), true); + view.setUint16(event + 24, 0, true); + view.setUint32(nevents, 1, true); + } + view.setUint32(nevents, fdevents.length, true); + return 0 /* WasiErrno.ESUCCESS */; + } + if (has_timeout) { + const delay = Number(min_timeout / BigInt(1000000)); + // if (isMainThread || typeof SharedArrayBuffer !== 'function') { + sleepBreakIf(delay, () => false); + // } else { + // const buf = new SharedArrayBuffer(4) + // const arr = new Int32Array(buf) + // postMsg({ + // __tybys_wasm_util_wasi__: { + // type: 'set-timeout', + // payload: { + // buffer: buf, + // delay + // } + // } + // }) + // Atomics.wait(arr, 0, 0) + // } + const event = out_ptr; + view.setBigUint64(event, timer_userdata, true); + view.setUint32(event + 8, 0 /* WasiErrno.ESUCCESS */, true); + view.setUint32(event + 12, 0 /* WasiEventType.CLOCK */, true); + view.setUint32(nevents, 1, true); + } + return 0 /* WasiErrno.ESUCCESS */; + }); + this.proc_exit = syscallWrap(this, 'proc_exit', function (rval) { + if ((typeof process === 'object') && (process !== null) && (typeof process.exit === 'function')) { + process.exit(rval); + } + return 0 /* WasiErrno.ESUCCESS */; + }); + this.proc_raise = syscallWrap(this, 'proc_raise', function (_sig) { + return 52 /* WasiErrno.ENOSYS */; + }); + this.sched_yield = syscallWrap(this, 'sched_yield', function () { + return 0 /* WasiErrno.ESUCCESS */; + }); + this.random_get = typeof crypto !== 'undefined' && typeof crypto.getRandomValues === 'function' + ? syscallWrap(this, 'random_get', function (buf, buf_len) { + buf = Number(buf); + if (buf === 0) { + return 28 /* WasiErrno.EINVAL */; + } + buf_len = Number(buf_len); + const { HEAPU8, view } = getMemory(this); + if ((typeof SharedArrayBuffer === 'function' && HEAPU8.buffer instanceof SharedArrayBuffer) || + (Object.prototype.toString.call(HEAPU8.buffer) === '[object SharedArrayBuffer]')) { + for (let i = buf; i < buf + buf_len; ++i) { + view.setUint8(i, Math.floor(Math.random() * 256)); + } + return 0 /* WasiErrno.ESUCCESS */; + } + let pos; + const stride = 65536; + for (pos = 0; pos + stride < buf_len; pos += stride) { + crypto.getRandomValues(HEAPU8.subarray(buf + pos, buf + pos + stride)); + } + crypto.getRandomValues(HEAPU8.subarray(buf + pos, buf + buf_len)); + return 0 /* WasiErrno.ESUCCESS */; + }) + : syscallWrap(this, 'random_get', function (buf, buf_len) { + buf = Number(buf); + if (buf === 0) { + return 28 /* WasiErrno.EINVAL */; + } + buf_len = Number(buf_len); + const { view } = getMemory(this); + for (let i = buf; i < buf + buf_len; ++i) { + view.setUint8(i, Math.floor(Math.random() * 256)); + } + return 0 /* WasiErrno.ESUCCESS */; + }); + this.sock_recv = syscallWrap(this, 'sock_recv', function () { + return 58 /* WasiErrno.ENOTSUP */; + }); + this.sock_send = syscallWrap(this, 'sock_send', function () { + return 58 /* WasiErrno.ENOTSUP */; + }); + this.sock_shutdown = syscallWrap(this, 'sock_shutdown', function () { + return 58 /* WasiErrno.ENOTSUP */; + }); + this.sock_accept = syscallWrap(this, 'sock_accept', function () { + return 58 /* WasiErrno.ENOTSUP */; + }); + _wasi.set(this, { + fds, + args, + env + }); + if (fs) + _fs.set(this, fs); + // eslint-disable-next-line @typescript-eslint/no-this-alias + const _this = this; + function defineImport(name, syncVersion, asyncVersion, parameterType, returnType) { + if (asyncFs) { + if (asyncify) { + _this[name] = asyncify.wrapImportFunction(syscallWrap(_this, name, asyncVersion)); + } + else { + _this[name] = wrapAsyncImport(syscallWrap(_this, name, asyncVersion), parameterType, returnType); + } + } + else { + _this[name] = syscallWrap(_this, name, syncVersion); + } + } + defineImport('fd_allocate', function fd_allocate(fd, offset, len) { + const wasi = _wasi.get(this); + const fs = getFs(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_ALLOCATE, BigInt(0)); + const stat = fs.fstatSync(fileDescriptor.fd, { bigint: true }); + if (stat.size < offset + len) { + fs.ftruncateSync(fileDescriptor.fd, Number(offset + len)); + } + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_allocate(fd, offset, len) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_ALLOCATE, BigInt(0)); + const h = fileDescriptor.fd; + const stat = await h.stat({ bigint: true }); + if (stat.size < offset + len) { + await h.truncate(Number(offset + len)); + } + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i64', 'f64'], ['i32']); + defineImport('fd_close', function fd_close(fd) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); + const fs = getFs(this); + fs.closeSync(fileDescriptor.fd); + wasi.fds.remove(fd); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_close(fd) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); + await fileDescriptor.fd.close(); + wasi.fds.remove(fd); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32'], ['i32']); + defineImport('fd_datasync', function fd_datasync(fd) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_DATASYNC, BigInt(0)); + const fs = getFs(this); + fs.fdatasyncSync(fileDescriptor.fd); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_datasync(fd) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_DATASYNC, BigInt(0)); + await fileDescriptor.fd.datasync(); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32'], ['i32']); + defineImport('fd_filestat_get', function fd_filestat_get(fd, buf) { + buf = Number(buf); + if (buf === 0) + return 28 /* WasiErrno.EINVAL */; + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_GET, BigInt(0)); + const fs = getFs(this); + const stat = fs.fstatSync(fileDescriptor.fd, { bigint: true }); + const { view } = getMemory(this); + toFileStat(view, buf, stat); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_filestat_get(fd, buf) { + buf = Number(buf); + if (buf === 0) + return 28 /* WasiErrno.EINVAL */; + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_GET, BigInt(0)); + const h = fileDescriptor.fd; + const stat = await h.stat({ bigint: true }); + const { view } = getMemory(this); + toFileStat(view, buf, stat); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32'], ['i32']); + defineImport('fd_filestat_set_size', function fd_filestat_set_size(fd, size) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_SET_SIZE, BigInt(0)); + const fs = getFs(this); + fs.ftruncateSync(fileDescriptor.fd, Number(size)); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_filestat_set_size(fd, size) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_SET_SIZE, BigInt(0)); + const h = fileDescriptor.fd; + await h.truncate(Number(size)); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i64'], ['i32']); + function fdFilestatGetTimes(fd, atim, mtim, flags) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_SET_TIMES, BigInt(0)); + if ((flags & 2 /* WasiFstFlag.SET_ATIM_NOW */) === 2 /* WasiFstFlag.SET_ATIM_NOW */) { + atim = BigInt(Date.now() * 1000000); + } + if ((flags & 8 /* WasiFstFlag.SET_MTIM_NOW */) === 8 /* WasiFstFlag.SET_MTIM_NOW */) { + mtim = BigInt(Date.now() * 1000000); + } + return { fileDescriptor, atim, mtim }; + } + defineImport('fd_filestat_set_times', function fd_filestat_set_times(fd, atim, mtim, flags) { + if (validateFstFlagsOrReturn(flags)) { + return 28 /* WasiErrno.EINVAL */; + } + const { fileDescriptor, atim: atimRes, mtim: mtimRes } = fdFilestatGetTimes.call(this, fd, atim, mtim, flags); + const fs = getFs(this); + fs.futimesSync(fileDescriptor.fd, Number(atimRes), Number(mtimRes)); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_filestat_set_times(fd, atim, mtim, flags) { + if (validateFstFlagsOrReturn(flags)) { + return 28 /* WasiErrno.EINVAL */; + } + const { fileDescriptor, atim: atimRes, mtim: mtimRes } = fdFilestatGetTimes.call(this, fd, atim, mtim, flags); + const h = fileDescriptor.fd; + await h.utimes(Number(atimRes), Number(mtimRes)); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i64', 'i64', 'i32'], ['i32']); + defineImport('fd_pread', function fd_pread(fd, iovs, iovslen, offset, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ | WasiRights.FD_SEEK, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return 0 /* WasiErrno.ESUCCESS */; + } + let totalSize = 0; + const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + totalSize += bufLen; + return HEAPU8.subarray(buf, buf + bufLen); + }); + let nread = 0; + const buffer = (() => { + try { + return new Uint8Array(new SharedArrayBuffer(totalSize)); + } + catch (_) { + return new Uint8Array(totalSize); + } + })(); + buffer._isBuffer = true; + const fs = getFs(this); + const bytesRead = fs.readSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(offset)); + nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; + view.setUint32(size, nread, true); + return 0 /* WasiErrno.ESUCCESS */; + }, async function (fd, iovs, iovslen, offset, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ | WasiRights.FD_SEEK, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return 0 /* WasiErrno.ESUCCESS */; + } + let totalSize = 0; + const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + totalSize += bufLen; + return HEAPU8.subarray(buf, buf + bufLen); + }); + let nread = 0; + const buffer = new Uint8Array(totalSize); + buffer._isBuffer = true; + const { bytesRead } = await fileDescriptor.fd.read(buffer, 0, buffer.length, Number(offset)); + nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; + view.setUint32(size, nread, true); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i64', 'i32'], ['i32']); + defineImport('fd_pwrite', function fd_pwrite(fd, iovs, iovslen, offset, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE | WasiRights.FD_SEEK, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return 0 /* WasiErrno.ESUCCESS */; + } + const buffer = concatBuffer(Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + return HEAPU8.subarray(buf, buf + bufLen); + })); + const fs = getFs(this); + const nwritten = fs.writeSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(offset)); + view.setUint32(size, nwritten, true); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_pwrite(fd, iovs, iovslen, offset, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE | WasiRights.FD_SEEK, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return 0 /* WasiErrno.ESUCCESS */; + } + const buffer = concatBuffer(Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + return HEAPU8.subarray(buf, buf + bufLen); + })); + const { bytesWritten } = await fileDescriptor.fd.write(buffer, 0, buffer.length, Number(offset)); + view.setUint32(size, bytesWritten, true); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i64', 'i32'], ['i32']); + defineImport('fd_read', function fd_read(fd, iovs, iovslen, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return 0 /* WasiErrno.ESUCCESS */; + } + let totalSize = 0; + const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + totalSize += bufLen; + return HEAPU8.subarray(buf, buf + bufLen); + }); + let buffer; + let nread = 0; + if (fd === 0) { + if (typeof window === 'undefined' || typeof window.prompt !== 'function') { + return 58 /* WasiErrno.ENOTSUP */; + } + buffer = readStdin(); + nread = buffer ? copyMemory(ioVecs, buffer) : 0; + } + else { + buffer = (() => { + try { + return new Uint8Array(new SharedArrayBuffer(totalSize)); + } + catch (_) { + return new Uint8Array(totalSize); + } + })(); + buffer._isBuffer = true; + const fs = getFs(this); + const bytesRead = fs.readSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(fileDescriptor.pos)); + nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; + fileDescriptor.pos += BigInt(nread); + } + view.setUint32(size, nread, true); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_read(fd, iovs, iovslen, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return 0 /* WasiErrno.ESUCCESS */; + } + let totalSize = 0; + const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + totalSize += bufLen; + return HEAPU8.subarray(buf, buf + bufLen); + }); + let buffer; + let nread = 0; + if (fd === 0) { + if (typeof window === 'undefined' || typeof window.prompt !== 'function') { + return 58 /* WasiErrno.ENOTSUP */; + } + buffer = readStdin(); + nread = buffer ? copyMemory(ioVecs, buffer) : 0; + } + else { + buffer = new Uint8Array(totalSize); + buffer._isBuffer = true; + const { bytesRead } = await fileDescriptor.fd.read(buffer, 0, buffer.length, Number(fileDescriptor.pos)); + nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; + fileDescriptor.pos += BigInt(nread); + } + view.setUint32(size, nread, true); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i32'], ['i32']); + defineImport('fd_readdir', function fd_readdir(fd, buf, buf_len, cookie, bufused) { + buf = Number(buf); + buf_len = Number(buf_len); + bufused = Number(bufused); + if (buf === 0 || bufused === 0) + return 0 /* WasiErrno.ESUCCESS */; + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READDIR, BigInt(0)); + const fs = getFs(this); + const entries = fs.readdirSync(fileDescriptor.realPath, { withFileTypes: true }); + const { HEAPU8, view } = getMemory(this); + let bufferUsed = 0; + for (let i = Number(cookie); i < entries.length; i++) { + const nameData = encoder.encode(entries[i].name); + const entryInfo = fs.statSync(resolve(fileDescriptor.realPath, entries[i].name), { bigint: true }); + const entryData = new Uint8Array(24 + nameData.byteLength); + const entryView = new DataView(entryData.buffer); + entryView.setBigUint64(0, BigInt(i + 1), true); + entryView.setBigUint64(8, BigInt(entryInfo.ino ? entryInfo.ino : 0), true); + entryView.setUint32(16, nameData.byteLength, true); + let type; + if (entries[i].isFile()) { + type = 4 /* WasiFileType.REGULAR_FILE */; + } + else if (entries[i].isDirectory()) { + type = 3 /* WasiFileType.DIRECTORY */; + } + else if (entries[i].isSymbolicLink()) { + type = 7 /* WasiFileType.SYMBOLIC_LINK */; + } + else if (entries[i].isCharacterDevice()) { + type = 2 /* WasiFileType.CHARACTER_DEVICE */; + } + else if (entries[i].isBlockDevice()) { + type = 1 /* WasiFileType.BLOCK_DEVICE */; + } + else if (entries[i].isSocket()) { + type = 6 /* WasiFileType.SOCKET_STREAM */; + } + else { + type = 0 /* WasiFileType.UNKNOWN */; + } + entryView.setUint8(20, type); + entryData.set(nameData, 24); + const data = entryData.slice(0, Math.min(entryData.length, buf_len - bufferUsed)); + HEAPU8.set(data, buf + bufferUsed); + bufferUsed += data.byteLength; + } + view.setUint32(bufused, bufferUsed, true); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_readdir(fd, buf, buf_len, cookie, bufused) { + buf = Number(buf); + buf_len = Number(buf_len); + bufused = Number(bufused); + if (buf === 0 || bufused === 0) + return 0 /* WasiErrno.ESUCCESS */; + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READDIR, BigInt(0)); + const fs = getFs(this); + const entries = await fs.promises.readdir(fileDescriptor.realPath, { withFileTypes: true }); + const { HEAPU8, view } = getMemory(this); + let bufferUsed = 0; + for (let i = Number(cookie); i < entries.length; i++) { + const nameData = encoder.encode(entries[i].name); + const entryInfo = await fs.promises.stat(resolve(fileDescriptor.realPath, entries[i].name), { bigint: true }); + const entryData = new Uint8Array(24 + nameData.byteLength); + const entryView = new DataView(entryData.buffer); + entryView.setBigUint64(0, BigInt(i + 1), true); + entryView.setBigUint64(8, BigInt(entryInfo.ino ? entryInfo.ino : 0), true); + entryView.setUint32(16, nameData.byteLength, true); + let type; + if (entries[i].isFile()) { + type = 4 /* WasiFileType.REGULAR_FILE */; + } + else if (entries[i].isDirectory()) { + type = 3 /* WasiFileType.DIRECTORY */; + } + else if (entries[i].isSymbolicLink()) { + type = 7 /* WasiFileType.SYMBOLIC_LINK */; + } + else if (entries[i].isCharacterDevice()) { + type = 2 /* WasiFileType.CHARACTER_DEVICE */; + } + else if (entries[i].isBlockDevice()) { + type = 1 /* WasiFileType.BLOCK_DEVICE */; + } + else if (entries[i].isSocket()) { + type = 6 /* WasiFileType.SOCKET_STREAM */; + } + else { + type = 0 /* WasiFileType.UNKNOWN */; + } + entryView.setUint8(20, type); + entryData.set(nameData, 24); + const data = entryData.slice(0, Math.min(entryData.length, buf_len - bufferUsed)); + HEAPU8.set(data, buf + bufferUsed); + bufferUsed += data.byteLength; + } + view.setUint32(bufused, bufferUsed, true); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i64', 'i32'], ['i32']); + defineImport('fd_renumber', function fd_renumber(from, to) { + const wasi = _wasi.get(this); + wasi.fds.renumber(to, from); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_renumber(from, to) { + const wasi = _wasi.get(this); + await wasi.fds.renumber(to, from); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32'], ['i32']); + defineImport('fd_sync', function fd_sync(fd) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_SYNC, BigInt(0)); + const fs = getFs(this); + fs.fsyncSync(fileDescriptor.fd); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_sync(fd) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_SYNC, BigInt(0)); + await fileDescriptor.fd.sync(); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32'], ['i32']); + defineImport('fd_write', function fd_write(fd, iovs, iovslen, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return 0 /* WasiErrno.ESUCCESS */; + } + const buffer = concatBuffer(Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + return HEAPU8.subarray(buf, buf + bufLen); + })); + let nwritten; + if (fd === 1 || fd === 2) { + nwritten = fileDescriptor.write(buffer); + } + else { + const fs = getFs(this); + nwritten = fs.writeSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(fileDescriptor.pos)); + fileDescriptor.pos += BigInt(nwritten); + } + view.setUint32(size, nwritten, true); + return 0 /* WasiErrno.ESUCCESS */; + }, async function fd_write(fd, iovs, iovslen, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return 0 /* WasiErrno.ESUCCESS */; + } + const buffer = concatBuffer(Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + return HEAPU8.subarray(buf, buf + bufLen); + })); + let nwritten; + if (fd === 1 || fd === 2) { + nwritten = fileDescriptor.write(buffer); + } + else { + nwritten = await (await (fileDescriptor.fd.write(buffer, 0, buffer.length, Number(fileDescriptor.pos)))).bytesWritten; + fileDescriptor.pos += BigInt(nwritten); + } + view.setUint32(size, nwritten, true); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i32'], ['i32']); + defineImport('path_create_directory', function path_create_directory(fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_CREATE_DIRECTORY, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + pathString = resolve(fileDescriptor.realPath, pathString); + const fs = getFs(this); + fs.mkdirSync(pathString); + return 0 /* WasiErrno.ESUCCESS */; + }, async function path_create_directory(fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_CREATE_DIRECTORY, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + pathString = resolve(fileDescriptor.realPath, pathString); + const fs = getFs(this); + await fs.promises.mkdir(pathString); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32'], ['i32']); + defineImport('path_filestat_get', function path_filestat_get(fd, flags, path, path_len, filestat) { + path = Number(path); + path_len = Number(path_len); + filestat = Number(filestat); + if (path === 0 || filestat === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_GET, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + const fs = getFs(this); + pathString = resolve(fileDescriptor.realPath, pathString); + let stat; + if ((flags & 1) === 1) { + stat = fs.statSync(pathString, { bigint: true }); + } + else { + stat = fs.lstatSync(pathString, { bigint: true }); + } + toFileStat(view, filestat, stat); + return 0 /* WasiErrno.ESUCCESS */; + }, async function path_filestat_get(fd, flags, path, path_len, filestat) { + path = Number(path); + path_len = Number(path_len); + filestat = Number(filestat); + if (path === 0 || filestat === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_GET, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + const fs = getFs(this); + pathString = resolve(fileDescriptor.realPath, pathString); + let stat; + if ((flags & 1) === 1) { + stat = await fs.promises.stat(pathString, { bigint: true }); + } + else { + stat = await fs.promises.lstat(pathString, { bigint: true }); + } + toFileStat(view, filestat, stat); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); + defineImport('path_filestat_set_times', function path_filestat_set_times(fd, flags, path, path_len, atim, mtim, fst_flags) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) + return 28 /* WasiErrno.EINVAL */; + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_SET_TIMES, BigInt(0)); + if (validateFstFlagsOrReturn(fst_flags)) { + return 28 /* WasiErrno.EINVAL */; + } + const fs = getFs(this); + const resolvedPath = resolvePathSync(fs, fileDescriptor, decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)), flags); + if ((fst_flags & 2 /* WasiFstFlag.SET_ATIM_NOW */) === 2 /* WasiFstFlag.SET_ATIM_NOW */) { + atim = BigInt(Date.now() * 1000000); + } + if ((fst_flags & 8 /* WasiFstFlag.SET_MTIM_NOW */) === 8 /* WasiFstFlag.SET_MTIM_NOW */) { + mtim = BigInt(Date.now() * 1000000); + } + fs.utimesSync(resolvedPath, Number(atim), Number(mtim)); + return 0 /* WasiErrno.ESUCCESS */; + }, async function path_filestat_set_times(fd, flags, path, path_len, atim, mtim, fst_flags) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) + return 28 /* WasiErrno.EINVAL */; + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_SET_TIMES, BigInt(0)); + if (validateFstFlagsOrReturn(fst_flags)) { + return 28 /* WasiErrno.EINVAL */; + } + const fs = getFs(this); + const resolvedPath = await resolvePathAsync(fs, fileDescriptor, decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)), flags); + if ((fst_flags & 2 /* WasiFstFlag.SET_ATIM_NOW */) === 2 /* WasiFstFlag.SET_ATIM_NOW */) { + atim = BigInt(Date.now() * 1000000); + } + if ((fst_flags & 8 /* WasiFstFlag.SET_MTIM_NOW */) === 8 /* WasiFstFlag.SET_MTIM_NOW */) { + mtim = BigInt(Date.now() * 1000000); + } + await fs.promises.utimes(resolvedPath, Number(atim), Number(mtim)); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i32', 'i64', 'i64', 'i32'], ['i32']); + defineImport('path_link', function path_link(old_fd, old_flags, old_path, old_path_len, new_fd, new_path, new_path_len) { + old_path = Number(old_path); + old_path_len = Number(old_path_len); + new_path = Number(new_path); + new_path_len = Number(new_path_len); + if (old_path === 0 || new_path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const wasi = _wasi.get(this); + let oldWrap; + let newWrap; + if (old_fd === new_fd) { + oldWrap = newWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE | WasiRights.PATH_LINK_TARGET, BigInt(0)); + } + else { + oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE, BigInt(0)); + newWrap = wasi.fds.get(new_fd, WasiRights.PATH_LINK_TARGET, BigInt(0)); + } + const { HEAPU8 } = getMemory(this); + const fs = getFs(this); + const resolvedOldPath = resolvePathSync(fs, oldWrap, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)), old_flags); + const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len))); + fs.linkSync(resolvedOldPath, resolvedNewPath); + return 0 /* WasiErrno.ESUCCESS */; + }, async function path_link(old_fd, old_flags, old_path, old_path_len, new_fd, new_path, new_path_len) { + old_path = Number(old_path); + old_path_len = Number(old_path_len); + new_path = Number(new_path); + new_path_len = Number(new_path_len); + if (old_path === 0 || new_path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const wasi = _wasi.get(this); + let oldWrap; + let newWrap; + if (old_fd === new_fd) { + oldWrap = newWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE | WasiRights.PATH_LINK_TARGET, BigInt(0)); + } + else { + oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE, BigInt(0)); + newWrap = wasi.fds.get(new_fd, WasiRights.PATH_LINK_TARGET, BigInt(0)); + } + const { HEAPU8 } = getMemory(this); + const fs = getFs(this); + const resolvedOldPath = await resolvePathAsync(fs, oldWrap, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)), old_flags); + const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len))); + await fs.promises.link(resolvedOldPath, resolvedNewPath); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); + function pathOpen(o_flags, fs_rights_base, fs_rights_inheriting, fs_flags) { + const read = (fs_rights_base & (WasiRights.FD_READ | + WasiRights.FD_READDIR)) !== BigInt(0); + const write = (fs_rights_base & (WasiRights.FD_DATASYNC | + WasiRights.FD_WRITE | + WasiRights.FD_ALLOCATE | + WasiRights.FD_FILESTAT_SET_SIZE)) !== BigInt(0); + let flags = write ? read ? 2 /* FileControlFlag.O_RDWR */ : 1 /* FileControlFlag.O_WRONLY */ : 0 /* FileControlFlag.O_RDONLY */; + let needed_base = WasiRights.PATH_OPEN; + let needed_inheriting = fs_rights_base | fs_rights_inheriting; + if ((o_flags & 1 /* WasiFileControlFlag.O_CREAT */) !== 0) { + flags |= 64 /* FileControlFlag.O_CREAT */; + needed_base |= WasiRights.PATH_CREATE_FILE; + } + if ((o_flags & 2 /* WasiFileControlFlag.O_DIRECTORY */) !== 0) { + flags |= 65536 /* FileControlFlag.O_DIRECTORY */; + } + if ((o_flags & 4 /* WasiFileControlFlag.O_EXCL */) !== 0) { + flags |= 128 /* FileControlFlag.O_EXCL */; + } + if ((o_flags & 8 /* WasiFileControlFlag.O_TRUNC */) !== 0) { + flags |= 512 /* FileControlFlag.O_TRUNC */; + needed_base |= WasiRights.PATH_FILESTAT_SET_SIZE; + } + if ((fs_flags & 1 /* WasiFdFlag.APPEND */) !== 0) { + flags |= 1024 /* FileControlFlag.O_APPEND */; + } + if ((fs_flags & 2 /* WasiFdFlag.DSYNC */) !== 0) { + // flags |= FileControlFlag.O_DSYNC; + needed_inheriting |= WasiRights.FD_DATASYNC; + } + if ((fs_flags & 4 /* WasiFdFlag.NONBLOCK */) !== 0) { + flags |= 2048 /* FileControlFlag.O_NONBLOCK */; + } + if ((fs_flags & 8 /* WasiFdFlag.RSYNC */) !== 0) { + flags |= 1052672 /* FileControlFlag.O_SYNC */; + needed_inheriting |= WasiRights.FD_SYNC; + } + if ((fs_flags & 16 /* WasiFdFlag.SYNC */) !== 0) { + flags |= 1052672 /* FileControlFlag.O_SYNC */; + needed_inheriting |= WasiRights.FD_SYNC; + } + if (write && (flags & (1024 /* FileControlFlag.O_APPEND */ | 512 /* FileControlFlag.O_TRUNC */)) === 0) { + needed_inheriting |= WasiRights.FD_SEEK; + } + return { flags, needed_base, needed_inheriting }; + } + defineImport('path_open', function path_open(dirfd, dirflags, path, path_len, o_flags, fs_rights_base, fs_rights_inheriting, fs_flags, fd) { + path = Number(path); + fd = Number(fd); + if (path === 0 || fd === 0) { + return 28 /* WasiErrno.EINVAL */; + } + path_len = Number(path_len); + fs_rights_base = BigInt(fs_rights_base); + fs_rights_inheriting = BigInt(fs_rights_inheriting); + const { flags: flagsRes, needed_base: neededBase, needed_inheriting: neededInheriting } = pathOpen(o_flags, fs_rights_base, fs_rights_inheriting, fs_flags); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(dirfd, neededBase, neededInheriting); + const memory = getMemory(this); + const HEAPU8 = memory.HEAPU8; + const pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + const fs = getFs(this); + const resolved_path = resolvePathSync(fs, fileDescriptor, pathString, dirflags); + const r = fs.openSync(resolved_path, flagsRes, 0o666); + const filetype = wasi.fds.getFileTypeByFd(r); + if ((filetype !== 3 /* WasiFileType.DIRECTORY */) && + ((o_flags & 2 /* WasiFileControlFlag.O_DIRECTORY */) !== 0 || + (resolved_path.endsWith('/')))) { + return 54 /* WasiErrno.ENOTDIR */; + } + const { base: max_base, inheriting: max_inheriting } = getRights(wasi.fds.stdio, r, flagsRes, filetype); + const wrap = wasi.fds.insert(r, resolved_path, resolved_path, filetype, fs_rights_base & max_base, fs_rights_inheriting & max_inheriting, 0); + const stat = fs.fstatSync(r, { bigint: true }); + if (stat.isFile()) { + wrap.size = stat.size; + if ((flagsRes & 1024 /* FileControlFlag.O_APPEND */) !== 0) { + wrap.pos = stat.size; + } + } + const view = memory.view; + view.setInt32(fd, wrap.id, true); + return 0 /* WasiErrno.ESUCCESS */; + }, async function path_open(dirfd, dirflags, path, path_len, o_flags, fs_rights_base, fs_rights_inheriting, fs_flags, fd) { + path = Number(path); + fd = Number(fd); + if (path === 0 || fd === 0) { + return 28 /* WasiErrno.EINVAL */; + } + path_len = Number(path_len); + fs_rights_base = BigInt(fs_rights_base); + fs_rights_inheriting = BigInt(fs_rights_inheriting); + const { flags: flagsRes, needed_base: neededBase, needed_inheriting: neededInheriting } = pathOpen(o_flags, fs_rights_base, fs_rights_inheriting, fs_flags); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(dirfd, neededBase, neededInheriting); + const memory = getMemory(this); + const HEAPU8 = memory.HEAPU8; + const pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + const fs = getFs(this); + const resolved_path = await resolvePathAsync(fs, fileDescriptor, pathString, dirflags); + const r = await fs.promises.open(resolved_path, flagsRes, 0o666); + const filetype = await wasi.fds.getFileTypeByFd(r); + if ((o_flags & 2 /* WasiFileControlFlag.O_DIRECTORY */) !== 0 && filetype !== 3 /* WasiFileType.DIRECTORY */) { + return 54 /* WasiErrno.ENOTDIR */; + } + const { base: max_base, inheriting: max_inheriting } = getRights(wasi.fds.stdio, r.fd, flagsRes, filetype); + const wrap = wasi.fds.insert(r, resolved_path, resolved_path, filetype, fs_rights_base & max_base, fs_rights_inheriting & max_inheriting, 0); + const stat = await r.stat({ bigint: true }); + if (stat.isFile()) { + wrap.size = stat.size; + if ((flagsRes & 1024 /* FileControlFlag.O_APPEND */) !== 0) { + wrap.pos = stat.size; + } + } + const view = memory.view; + view.setInt32(fd, wrap.id, true); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i64', 'i64', 'i32', 'i32'], ['i32']); + defineImport('path_readlink', function path_readlink(fd, path, path_len, buf, buf_len, bufused) { + path = Number(path); + path_len = Number(path_len); + buf = Number(buf); + buf_len = Number(buf_len); + bufused = Number(bufused); + if (path === 0 || buf === 0 || bufused === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_READLINK, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + pathString = resolve(fileDescriptor.realPath, pathString); + const fs = getFs(this); + const link = fs.readlinkSync(pathString); + const linkData = encoder.encode(link); + const len = Math.min(linkData.length, buf_len); + if (len >= buf_len) + return 42 /* WasiErrno.ENOBUFS */; + HEAPU8.set(linkData.subarray(0, len), buf); + HEAPU8[buf + len] = 0; + view.setUint32(bufused, len, true); + return 0 /* WasiErrno.ESUCCESS */; + }, async function path_readlink(fd, path, path_len, buf, buf_len, bufused) { + path = Number(path); + path_len = Number(path_len); + buf = Number(buf); + buf_len = Number(buf_len); + bufused = Number(bufused); + if (path === 0 || buf === 0 || bufused === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_READLINK, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + pathString = resolve(fileDescriptor.realPath, pathString); + const fs = getFs(this); + const link = await fs.promises.readlink(pathString); + const linkData = encoder.encode(link); + const len = Math.min(linkData.length, buf_len); + if (len >= buf_len) + return 42 /* WasiErrno.ENOBUFS */; + HEAPU8.set(linkData.subarray(0, len), buf); + HEAPU8[buf + len] = 0; + view.setUint32(bufused, len, true); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); + defineImport('path_remove_directory', function path_remove_directory(fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_REMOVE_DIRECTORY, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + pathString = resolve(fileDescriptor.realPath, pathString); + const fs = getFs(this); + fs.rmdirSync(pathString); + return 0 /* WasiErrno.ESUCCESS */; + }, async function path_remove_directory(fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_REMOVE_DIRECTORY, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + pathString = resolve(fileDescriptor.realPath, pathString); + const fs = getFs(this); + await fs.promises.rmdir(pathString); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32'], ['i32']); + defineImport('path_rename', function path_rename(old_fd, old_path, old_path_len, new_fd, new_path, new_path_len) { + old_path = Number(old_path); + old_path_len = Number(old_path_len); + new_path = Number(new_path); + new_path_len = Number(new_path_len); + if (old_path === 0 || new_path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const wasi = _wasi.get(this); + let oldWrap; + let newWrap; + if (old_fd === new_fd) { + oldWrap = newWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE | WasiRights.PATH_RENAME_TARGET, BigInt(0)); + } + else { + oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE, BigInt(0)); + newWrap = wasi.fds.get(new_fd, WasiRights.PATH_RENAME_TARGET, BigInt(0)); + } + const { HEAPU8 } = getMemory(this); + const resolvedOldPath = resolve(oldWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len))); + const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len))); + const fs = getFs(this); + fs.renameSync(resolvedOldPath, resolvedNewPath); + return 0 /* WasiErrno.ESUCCESS */; + }, async function path_rename(old_fd, old_path, old_path_len, new_fd, new_path, new_path_len) { + old_path = Number(old_path); + old_path_len = Number(old_path_len); + new_path = Number(new_path); + new_path_len = Number(new_path_len); + if (old_path === 0 || new_path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const wasi = _wasi.get(this); + let oldWrap; + let newWrap; + if (old_fd === new_fd) { + oldWrap = newWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE | WasiRights.PATH_RENAME_TARGET, BigInt(0)); + } + else { + oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE, BigInt(0)); + newWrap = wasi.fds.get(new_fd, WasiRights.PATH_RENAME_TARGET, BigInt(0)); + } + const { HEAPU8 } = getMemory(this); + const resolvedOldPath = resolve(oldWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len))); + const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len))); + const fs = getFs(this); + await fs.promises.rename(resolvedOldPath, resolvedNewPath); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); + defineImport('path_symlink', function path_symlink(old_path, old_path_len, fd, new_path, new_path_len) { + old_path = Number(old_path); + old_path_len = Number(old_path_len); + new_path = Number(new_path); + new_path_len = Number(new_path_len); + if (old_path === 0 || new_path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_SYMLINK, BigInt(0)); + const oldPath = decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)); + if (oldPath.length > 0 && oldPath[0] === '/') { + return 63 /* WasiErrno.EPERM */; + } + let newPath = decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len)); + newPath = resolve(fileDescriptor.realPath, newPath); + const fs = getFs(this); + fs.symlinkSync(oldPath, newPath); + return 0 /* WasiErrno.ESUCCESS */; + }, async function path_symlink(old_path, old_path_len, fd, new_path, new_path_len) { + old_path = Number(old_path); + old_path_len = Number(old_path_len); + new_path = Number(new_path); + new_path_len = Number(new_path_len); + if (old_path === 0 || new_path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_SYMLINK, BigInt(0)); + const oldPath = decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)); + let newPath = decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len)); + newPath = resolve(fileDescriptor.realPath, newPath); + const fs = getFs(this); + await fs.promises.symlink(oldPath, newPath); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); + defineImport('path_unlink_file', function path_unlink_file(fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_UNLINK_FILE, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + pathString = resolve(fileDescriptor.realPath, pathString); + const fs = getFs(this); + fs.unlinkSync(pathString); + return 0 /* WasiErrno.ESUCCESS */; + }, async function path_unlink_file(fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return 28 /* WasiErrno.EINVAL */; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_UNLINK_FILE, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + pathString = resolve(fileDescriptor.realPath, pathString); + const fs = getFs(this); + await fs.promises.unlink(pathString); + return 0 /* WasiErrno.ESUCCESS */; + }, ['i32', 'i32', 'i32'], ['i32']); + this._setMemory = function setMemory(m) { + if (!(m instanceof _WebAssembly.Memory)) { + throw new TypeError('"instance.exports.memory" property must be a WebAssembly.Memory'); + } + _memory.set(_this, extendMemory(m)); + }; + } + static createSync(args, env, preopens, stdio, fs, print, printErr) { + const fds = new SyncTable({ + size: 3, + in: stdio[0], + out: stdio[1], + err: stdio[2], + fs, + print, + printErr + }); + const _this = new WASI$1(args, env, fds, false, fs); + if (preopens.length > 0) { + for (let i = 0; i < preopens.length; ++i) { + const realPath = fs.realpathSync(preopens[i].realPath, 'utf8'); + const fd = fs.openSync(realPath, 'r', 0o666); + fds.insertPreopen(fd, preopens[i].mappedPath, realPath); + } + } + return _this; + } + static async createAsync(args, env, preopens, stdio, fs, print, printErr, asyncify) { + const fds = new AsyncTable({ + size: 3, + in: stdio[0], + out: stdio[1], + err: stdio[2], + print, + printErr + }); + const _this = new WASI$1(args, env, fds, true, fs, asyncify); + if (preopens.length > 0) { + for (let i = 0; i < preopens.length; ++i) { + const entry = preopens[i]; + const realPath = await fs.promises.realpath(entry.realPath); + const fd = await fs.promises.open(realPath, 'r', 0o666); + await fds.insertPreopen(fd, entry.mappedPath, realPath); + } + } + return _this; + } + } + + // eslint-disable-next-line spaced-comment + const kEmptyObject = /*#__PURE__*/ Object.freeze(/*#__PURE__*/ Object.create(null)); + const kExitCode = Symbol('kExitCode'); + const kSetMemory = Symbol('kSetMemory'); + const kStarted = Symbol('kStarted'); + const kInstance = Symbol('kInstance'); + const kBindingName = Symbol('kBindingName'); + function validateOptions(options) { + var _a; + validateObject(options, 'options'); + let _WASI; + if (options.version !== undefined) { + validateString(options.version, 'options.version'); + switch (options.version) { + case 'unstable': + _WASI = WASI$1; + this[kBindingName] = 'wasi_unstable'; + break; + case 'preview1': + _WASI = WASI$1; + this[kBindingName] = 'wasi_snapshot_preview1'; + break; + default: + throw new TypeError(`unsupported WASI version "${options.version}"`); + } + } + else { + _WASI = WASI$1; + this[kBindingName] = 'wasi_snapshot_preview1'; + } + if (options.args !== undefined) { + validateArray(options.args, 'options.args'); + } + const args = ((_a = options.args) !== null && _a !== void 0 ? _a : []).map(String); + const env = []; + if (options.env !== undefined) { + validateObject(options.env, 'options.env'); + Object.entries(options.env).forEach(({ 0: key, 1: value }) => { + if (value !== undefined) { + env.push(`${key}=${value}`); + } + }); + } + const preopens = []; + if (options.preopens !== undefined) { + validateObject(options.preopens, 'options.preopens'); + Object.entries(options.preopens).forEach(({ 0: key, 1: value }) => preopens.push({ mappedPath: String(key), realPath: String(value) })); + } + if (preopens.length > 0) { + if (options.fs === undefined) { + throw new Error('filesystem is disabled, can not preopen directory'); + } + try { + validateObject(options.fs, 'options.fs'); + } + catch (_) { + throw new TypeError('Node.js fs like implementation is not provided'); + } + } + // if (options.filesystem !== undefined) { + // validateObject(options.filesystem, 'options.filesystem') + // validateString(options.filesystem.type, 'options.filesystem.type') + // if (options.filesystem.type !== 'memfs' && options.filesystem.type !== 'file-system-access-api') { + // throw new Error(`Filesystem type ${(options.filesystem as any).type as string} is not supported, only "memfs" and "file-system-access-api" is supported currently`) + // } + // try { + // validateObject(options.filesystem.fs, 'options.filesystem.fs') + // } catch (_) { + // throw new Error('Node.js fs like implementation is not provided') + // } + // } + if (options.print !== undefined) + validateFunction(options.print, 'options.print'); + if (options.printErr !== undefined) + validateFunction(options.printErr, 'options.printErr'); + if (options.returnOnExit !== undefined) { + validateBoolean(options.returnOnExit, 'options.returnOnExit'); + } + // const { stdin = 0, stdout = 1, stderr = 2 } = options + // validateInt32(stdin, 'options.stdin', 0) + // validateInt32(stdout, 'options.stdout', 0) + // validateInt32(stderr, 'options.stderr', 0) + // const stdio = [stdin, stdout, stderr] as const + const stdio = [0, 1, 2]; + return { + args, + env, + preopens, + stdio, + _WASI + }; + } + function initWASI(setMemory, wrap) { + this[kSetMemory] = setMemory; + this.wasiImport = wrap; + this[kStarted] = false; + this[kExitCode] = 0; + this[kInstance] = undefined; + } + /** @public */ + class WASI { + constructor(options = kEmptyObject) { + const { args, env, preopens, stdio, _WASI } = validateOptions.call(this, options); + const wrap = _WASI.createSync(args, env, preopens, stdio, options.fs, options.print, options.printErr); + const setMemory = wrap._setMemory; + delete wrap._setMemory; + initWASI.call(this, setMemory, wrap); + if (options.returnOnExit) { + wrap.proc_exit = wasiReturnOnProcExit.bind(this); + } + } + finalizeBindings(instance, _a) { + var _b; + var { memory = (_b = instance === null || instance === void 0 ? void 0 : instance.exports) === null || _b === void 0 ? void 0 : _b.memory } = _a === void 0 ? {} : _a; + if (this[kStarted]) { + throw new Error('WASI instance has already started'); + } + validateObject(instance, 'instance'); + validateObject(instance.exports, 'instance.exports'); + this[kSetMemory](memory); + this[kInstance] = instance; + this[kStarted] = true; + } + // Must not export _initialize, must export _start + start(instance) { + this.finalizeBindings(instance); + const { _start, _initialize } = this[kInstance].exports; + validateFunction(_start, 'instance.exports._start'); + validateUndefined(_initialize, 'instance.exports._initialize'); + let ret; + try { + ret = _start(); + } + catch (err) { + if (err !== kExitCode) { + throw err; + } + } + if (ret instanceof Promise) { + return ret.then(() => this[kExitCode], (err) => { + if (err !== kExitCode) { + throw err; + } + return this[kExitCode]; + }); + } + return this[kExitCode]; + } + // Must not export _start, may optionally export _initialize + initialize(instance) { + this.finalizeBindings(instance); + const { _start, _initialize } = this[kInstance].exports; + validateUndefined(_start, 'instance.exports._start'); + if (_initialize !== undefined) { + validateFunction(_initialize, 'instance.exports._initialize'); + return _initialize(); + } + } + getImportObject() { + return { [this[kBindingName]]: this.wasiImport }; + } + } + function wasiReturnOnProcExit(rval) { + this[kExitCode] = rval; + // eslint-disable-next-line @typescript-eslint/no-throw-literal + throw kExitCode; + } + /** @public */ + async function createAsyncWASI(options = kEmptyObject) { + const _this = Object.create(WASI.prototype); + const { args, env, preopens, stdio, _WASI } = validateOptions.call(_this, options); + if (options.asyncify !== undefined) { + validateObject(options.asyncify, 'options.asyncify'); + validateFunction(options.asyncify.wrapImportFunction, 'options.asyncify.wrapImportFunction'); + } + const wrap = await _WASI.createAsync(args, env, preopens, stdio, options.fs, options.print, options.printErr, options.asyncify); + const setMemory = wrap._setMemory; + delete wrap._setMemory; + initWASI.call(_this, setMemory, wrap); + if (options.returnOnExit) { + wrap.proc_exit = wasiReturnOnProcExit.bind(_this); + } + return _this; + } + + exports.Asyncify = Asyncify; + exports.Memory = Memory; + exports.WASI = WASI; + exports.WebAssemblyMemory = WebAssemblyMemory; + exports.asyncifyLoad = asyncifyLoad; + exports.asyncifyLoadSync = asyncifyLoadSync; + exports.createAsyncWASI = createAsyncWASI; + exports.extendMemory = extendMemory; + exports.load = load; + exports.loadSync = loadSync; + exports.wrapAsyncExport = wrapAsyncExport; + exports.wrapAsyncImport = wrapAsyncImport; + exports.wrapExports = wrapExports; + + Object.defineProperty(exports, '__esModule', { value: true }); + +})); diff --git a/node_modules/@tybys/wasm-util/dist/wasm-util.min.js b/node_modules/@tybys/wasm-util/dist/wasm-util.min.js new file mode 100644 index 00000000..f317ae6a --- /dev/null +++ b/node_modules/@tybys/wasm-util/dist/wasm-util.min.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).wasmUtil={})}(this,(function(t){"use strict";const e="undefined"!=typeof WebAssembly?WebAssembly:"undefined"!=typeof WXWebAssembly?WXWebAssembly:void 0;if(!e)throw new Error("WebAssembly is not supported in this environment");function n(t,e){if(null===t||"object"!=typeof t)throw new TypeError(`${e} must be an object. Received ${null===t?"null":typeof t}`)}function r(t,e){if("string"!=typeof t)throw new TypeError(`${e} must be a string. Received ${null===t?"null":typeof t}`)}function i(t,e){if("function"!=typeof t)throw new TypeError(`${e} must be a function. Received ${null===t?"null":typeof t}`)}function s(t,e){if(void 0!==t)throw new TypeError(`${e} must be undefined. Received ${null===t?"null":typeof t}`)}function o(t){return!(!t||"object"!=typeof t&&"function"!=typeof t||"function"!=typeof t.then)}function a(t,e){const n=Object.create(null);return Object.keys(t).forEach((r=>{const i=t[r];Object.defineProperty(n,r,{enumerable:!0,value:e(i,r)})})),n}function c(t,e,n){return"function"==typeof SharedArrayBuffer&&t.buffer instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(t.buffer.constructor)?t.slice(e,n):t.subarray(e,n)}const u=["asyncify_get_state","asyncify_start_rewind","asyncify_start_unwind","asyncify_stop_rewind","asyncify_stop_unwind"];function f(t,e,n,r){if("function"!=typeof t.exports[r]||n<=0)return{wasm64:e,dataPtr:16,start:e?32:24,end:1024};const i=t.exports[r],s=e?Number(i(BigInt(16)+BigInt(n))):i(8+n);if(0===s)throw new Error("Allocate asyncify data failed");return e?{wasm64:e,dataPtr:s,start:s+16,end:s+16+n}:{wasm64:e,dataPtr:s,start:s+8,end:s+8+n}}class h{constructor(){this.value=void 0,this.exports=void 0,this.dataPtr=0}init(t,n,r){var i,s;if(this.exports)throw new Error("Asyncify has been initialized");if(!(t instanceof e.Memory))throw new TypeError("Require WebAssembly.Memory object");const o=n.exports;for(let t=0;t{const r=t[n],i={};Object.keys(r).forEach((t=>{const e=r[t];i[t]="function"==typeof e?this.wrapImportFunction(e):e})),e[n]=i})),e}wrapExportFunction(t){const e=this;return async function(){e.assertState();let n=t.apply(this,arguments);for(;1===e.exports.asyncify_get_state();)e.exports.asyncify_stop_unwind(),e.value=await e.value,e.assertState(),e.exports.asyncify_start_rewind(e.dataPtr),n=t.call(this);return e.assertState(),n}}wrapExports(t,e){return a(t,((t,n)=>{let r=-1!==u.indexOf(n)||"function"!=typeof t;return Array.isArray(e)&&(r=r||-1===e.indexOf(n)),r?t:this.wrapExportFunction(t)}))}}function d(t){if(t&&"object"!=typeof t)throw new TypeError("imports must be an object or undefined")}function g(t,n){return"undefined"!=typeof wx&&"undefined"!=typeof __wxConfig?e.instantiate(t,n):fetch(t).then((t=>t.arrayBuffer())).then((t=>e.instantiate(t,n)))}function l(t,n){let r;if(d(n),n=null!=n?n:{},t instanceof ArrayBuffer||ArrayBuffer.isView(t))return e.instantiate(t,n);if(t instanceof e.Module)return e.instantiate(t,n).then((e=>({instance:e,module:t})));if("string"!=typeof t&&!(t instanceof URL))throw new TypeError("Invalid source");if("function"==typeof e.instantiateStreaming){let i;try{i=fetch(t),r=e.instantiateStreaming(i,n).catch((()=>g(t,n)))}catch(e){r=g(t,n)}}else r=g(t,n);return r}function _(t,n){let r;if(d(n),n=null!=n?n:{},t instanceof ArrayBuffer||ArrayBuffer.isView(t))r=new e.Module(t);else{if(!(t instanceof WebAssembly.Module))throw new TypeError("Invalid source");r=t}return{instance:new e.Instance(r,n),module:r}}const p=46,y=47;function E(t){return t===y}function I(...t){let e="",n=!1;for(let i=t.length-1;i>=-1&&!n;i--){const s=i>=0?t[i]:"/";r(s,"path"),0!==s.length&&(e=`${s}/${e}`,n=s.charCodeAt(0)===y)}return e=function(t,e,n,r){let i="",s=0,o=-1,a=0,c=0;for(let u=0;u<=t.length;++u){if(u2){const t=i.indexOf(n);-1===t?(i="",s=0):(i=i.slice(0,t),s=i.length-1-i.indexOf(n)),o=u,a=0;continue}if(0!==i.length){i="",s=0,o=u,a=0;continue}}e&&(i+=i.length>0?`${n}..`:"..",s=2)}else i.length>0?i+=`${n}${t.slice(o+1,u)}`:i=t.slice(o+1,u),s=u-o-1;o=u,a=0}else c===p&&-1!==a?++a:a=-1}return i}(e,!n,"/",E),n?`/${e}`:e.length>0?e:"."}const m={FD_DATASYNC:BigInt(1)<=0)n=e;else for(let e=0;e"),this.insertStdio(t.out,1,""),this.insertStdio(t.err,2,"")}insertStdio(t,e,n){const{base:r,inheriting:i}=H(this.stdio,t,2,2),s=this.insert(t,n,n,2,r,i,0);if(s.id!==e)throw new A(`id: ${s.id} !== expected: ${e}`,8);return s}insert(t,e,n,r,i,s,o){var a,c;let u,f=-1;if(this.used>=this.size){const t=2*this.size;this.fds.length=t,f=this.size,this.size=t}else for(let t=0;t"===e?new C(null!==(c=this.printErr)&&void 0!==c?c:console.error,f,t,e,n,r,i,s,o):new k(f,t,e,n,r,i,s,o),this.fds[f]=u,this.used++,u}get(t,e,n){if(t>=this.size)throw new A("Invalid fd",8);const r=this.fds[t];if(!r||r.id!==t)throw new A("Bad file descriptor",8);if((~r.rightsBase&e)!==BigInt(0)||(~r.rightsInheriting&n)!==BigInt(0))throw new A("Capabilities insufficient",76);return r}remove(t){if(t>=this.size)throw new A("Invalid fd",8);const e=this.fds[t];if(!e||e.id!==t)throw new A("Bad file descriptor",8);this.fds[t]=void 0,this.used--}}class z extends W{constructor(t){super(t),this.fs=t.fs}getFileTypeByFd(t){return x(this.fs.fstatSync(t,{bigint:!0}))}insertPreopen(t,e,n){const r=this.getFileTypeByFd(t);if(3!==r)throw new A(`Preopen not dir: ["${e}", "${n}"]`,54);const i=H(this.stdio,t,0,r);return this.insert(t,e,n,r,i.base,i.inheriting,1)}renumber(t,e){if(t===e)return;if(t>=this.size||e>=this.size)throw new A("Invalid fd",8);const n=this.fds[t],r=this.fds[e];if(!n||!r||n.id!==t||r.id!==e)throw new A("Invalid fd",8);this.fs.closeSync(n.fd),this.fds[t]=this.fds[e],this.fds[t].id=t,this.fds[e]=void 0,this.used--}}class K extends W{constructor(t){super(t)}async getFileTypeByFd(t){return x(await t.stat({bigint:!0}))}async insertPreopen(t,e,n){const r=await this.getFileTypeByFd(t);if(3!==r)throw new A(`Preopen not dir: ["${e}", "${n}"]`,54);const i=H(this.stdio,t.fd,0,r);return this.insert(t,e,n,r,i.base,i.inheriting,1)}async renumber(t,e){if(t===e)return;if(t>=this.size||e>=this.size)throw new A("Invalid fd",8);const n=this.fds[t],r=this.fds[e];if(!n||!r||n.id!==t||r.id!==e)throw new A("Invalid fd",8);await n.fd.close(),this.fds[t]=this.fds[e],this.fds[t].id=t,this.fds[e]=void 0,this.used--}}const j=function(){return e.Memory}();class G extends j{constructor(t){super(t)}get HEAP8(){return new Int8Array(super.buffer)}get HEAPU8(){return new Uint8Array(super.buffer)}get HEAP16(){return new Int16Array(super.buffer)}get HEAPU16(){return new Uint16Array(super.buffer)}get HEAP32(){return new Int32Array(super.buffer)}get HEAPU32(){return new Uint32Array(super.buffer)}get HEAP64(){return new BigInt64Array(super.buffer)}get HEAPU64(){return new BigUint64Array(super.buffer)}get HEAPF32(){return new Float32Array(super.buffer)}get HEAPF64(){return new Float64Array(super.buffer)}get view(){return new DataView(super.buffer)}}function Y(t){return Object.getPrototypeOf(t)===e.Memory.prototype&&Object.setPrototypeOf(t,G.prototype),t}function $(){const t=e.Function;if("function"!=typeof t)throw new Error('WebAssembly.Function is not supported in this environment. If you are using V8 based browser like Chrome, try to specify --js-flags="--wasm-staging --experimental-wasm-stack-switching"');return t}function V(t,e,n){const r=$();if("function"!=typeof t)throw new TypeError("Function required");const i=e.slice(0);return i.unshift("externref"),new r({parameters:i,results:n},t,{suspending:"first"})}function Z(t){const e=$();if("function"!=typeof t)throw new TypeError("Function required");return new e({parameters:[...e.type(t).parameters.slice(1)],results:["externref"]},t,{promising:"first"})}function q(t,e){if(0===t.length||0===e.length)return 0;let n=0,r=e.length-n;for(let i=0;it),nt):r}function st(t,e,n){let r=!1;const i=(()=>{try{return}catch(t){return}})();return"string"==typeof i&&i.split(",").includes("wasi")&&(r=!0),rt(e,r?function(){const r=Array.prototype.slice.call(arguments);let i=[`${e}(${Array.from({length:arguments.length}).map((()=>"%d")).join(", ")})`];return i=i.concat(r),console.debug.apply(console,i),it(n,t,r)}:function(){return it(n,t,arguments)})}function ot(t,e,n,r){let i=I(e.realPath,n);if(1==(1&r))try{i=t.readlinkSync(i)}catch(t){if("EINVAL"!==t.code&&"ENOENT"!==t.code)throw t}return i}async function at(t,e,n,r){let i=I(e.realPath,n);if(1==(1&r))try{i=await t.promises.readlink(i)}catch(t){if("EINVAL"!==t.code&&"ENOENT"!==t.code)throw t}return i}const ct=new TextEncoder,ut=new TextDecoder,ft=(BigInt(1)<r.rightsBase||(n|r.rightsInheriting)>r.rightsInheriting?76:(r.rightsBase=e,r.rightsInheriting=n,0)})),this.fd_prestat_get=st(this,"fd_prestat_get",(function(t,e){if(0===(e=Number(e)))return 28;const n=Q.get(this);let r;try{r=n.fds.get(t,BigInt(0),BigInt(0))}catch(t){if(t instanceof A)return t.errno;throw t}if(1!==r.preopen)return 28;const{view:i}=tt(this);return i.setUint32(e,0,!0),i.setUint32(e+4,ct.encode(r.path).length,!0),0})),this.fd_prestat_dir_name=st(this,"fd_prestat_dir_name",(function(t,e,n){if(e=Number(e),n=Number(n),0===e)return 28;const r=Q.get(this).fds.get(t,BigInt(0),BigInt(0));if(1!==r.preopen)return 8;const i=ct.encode(r.path);if(i.length>n)return 42;const{HEAPU8:s}=tt(this);return s.set(i,e),0})),this.fd_seek=st(this,"fd_seek",(function(t,e,n,r){if(0===(r=Number(r)))return 28;if(0===t||1===t||2===t)return 0;const i=Q.get(this).fds.get(t,m.FD_SEEK,BigInt(0)).seek(e,n),{view:s}=tt(this);return s.setBigUint64(r,i,!0),0})),this.fd_tell=st(this,"fd_tell",(function(t,e){const n=Q.get(this).fds.get(t,m.FD_TELL,BigInt(0)),r=BigInt(n.pos),{view:i}=tt(this);return i.setBigUint64(Number(e),r,!0),0})),this.poll_oneoff=st(this,"poll_oneoff",(function(t,e,n,r){if(t=Number(t),e=Number(e),r=Number(r),n=Number(n),n>>>=0,0===t||0===e||0===n||0===r)return 28;const{view:i}=tt(this);i.setUint32(r,0,!0);let s,o=0,a=BigInt(0),c=BigInt(0),u=0,f=BigInt(0);const h=Array(n);for(o=0;o0){for(o=0;o!1));const t=e;i.setBigUint64(t,a,!0),i.setUint32(t+8,0,!0),i.setUint32(t+12,0,!0),i.setUint32(r,1,!0)}return 0})),this.proc_exit=st(this,"proc_exit",(function(t){return"object"==typeof process&&null!==process&&"function"==typeof process.exit&&process.exit(t),0})),this.proc_raise=st(this,"proc_raise",(function(t){return 52})),this.sched_yield=st(this,"sched_yield",(function(){return 0})),this.random_get="undefined"!=typeof crypto&&"function"==typeof crypto.getRandomValues?st(this,"random_get",(function(t,e){if(0===(t=Number(t)))return 28;e=Number(e);const{HEAPU8:n,view:r}=tt(this);if("function"==typeof SharedArrayBuffer&&n.buffer instanceof SharedArrayBuffer||"[object SharedArrayBuffer]"===Object.prototype.toString.call(n.buffer)){for(let n=t;nft)return 28;const{HEAPU8:s,view:o}=tt(this),a=Q.get(this).fds.get(t,m.FD_READ|m.FD_SEEK,BigInt(0));if(!n)return o.setUint32(i,0,!0),0;let c=0;const u=Array.from({length:Number(n)},((t,n)=>{const r=e+8*n,i=o.getInt32(r,!0),a=o.getUint32(r+4,!0);return c+=a,s.subarray(i,i+a)}));let f=0;const h=(()=>{try{return new Uint8Array(new SharedArrayBuffer(c))}catch(t){return new Uint8Array(c)}})();h._isBuffer=!0;const d=et(this).readSync(a.fd,h,0,h.length,Number(r));return f=h?q(u,h.subarray(0,d)):0,o.setUint32(i,f,!0),0}),(async function(t,e,n,r,i){if(e=Number(e),i=Number(i),0===e&&n||0===i||r>ft)return 28;const{HEAPU8:s,view:o}=tt(this),a=Q.get(this).fds.get(t,m.FD_READ|m.FD_SEEK,BigInt(0));if(!n)return o.setUint32(i,0,!0),0;let c=0;const u=Array.from({length:Number(n)},((t,n)=>{const r=e+8*n,i=o.getInt32(r,!0),a=o.getUint32(r+4,!0);return c+=a,s.subarray(i,i+a)}));let f=0;const h=new Uint8Array(c);h._isBuffer=!0;const{bytesRead:d}=await a.fd.read(h,0,h.length,Number(r));return f=h?q(u,h.subarray(0,d)):0,o.setUint32(i,f,!0),0}),["i32","i32","i32","i64","i32"],["i32"]),u("fd_pwrite",(function(t,e,n,r,i){if(e=Number(e),i=Number(i),0===e&&n||0===i||r>ft)return 28;const{HEAPU8:s,view:o}=tt(this),a=Q.get(this).fds.get(t,m.FD_WRITE|m.FD_SEEK,BigInt(0));if(!n)return o.setUint32(i,0,!0),0;const c=O(Array.from({length:Number(n)},((t,n)=>{const r=e+8*n,i=o.getInt32(r,!0),a=o.getUint32(r+4,!0);return s.subarray(i,i+a)}))),u=et(this).writeSync(a.fd,c,0,c.length,Number(r));return o.setUint32(i,u,!0),0}),(async function(t,e,n,r,i){if(e=Number(e),i=Number(i),0===e&&n||0===i||r>ft)return 28;const{HEAPU8:s,view:o}=tt(this),a=Q.get(this).fds.get(t,m.FD_WRITE|m.FD_SEEK,BigInt(0));if(!n)return o.setUint32(i,0,!0),0;const c=O(Array.from({length:Number(n)},((t,n)=>{const r=e+8*n,i=o.getInt32(r,!0),a=o.getUint32(r+4,!0);return s.subarray(i,i+a)}))),{bytesWritten:u}=await a.fd.write(c,0,c.length,Number(r));return o.setUint32(i,u,!0),0}),["i32","i32","i32","i64","i32"],["i32"]),u("fd_read",(function(t,e,n,r){if(e=Number(e),r=Number(r),0===e&&n||0===r)return 28;const{HEAPU8:i,view:s}=tt(this),o=Q.get(this).fds.get(t,m.FD_READ,BigInt(0));if(!n)return s.setUint32(r,0,!0),0;let a=0;const c=Array.from({length:Number(n)},((t,n)=>{const r=e+8*n,o=s.getInt32(r,!0),c=s.getUint32(r+4,!0);return a+=c,i.subarray(o,o+c)}));let u,f=0;if(0===t){if("undefined"==typeof window||"function"!=typeof window.prompt)return 58;u=ht(),f=u?q(c,u):0}else{u=(()=>{try{return new Uint8Array(new SharedArrayBuffer(a))}catch(t){return new Uint8Array(a)}})(),u._isBuffer=!0;const t=et(this).readSync(o.fd,u,0,u.length,Number(o.pos));f=u?q(c,u.subarray(0,t)):0,o.pos+=BigInt(f)}return s.setUint32(r,f,!0),0}),(async function(t,e,n,r){if(e=Number(e),r=Number(r),0===e&&n||0===r)return 28;const{HEAPU8:i,view:s}=tt(this),o=Q.get(this).fds.get(t,m.FD_READ,BigInt(0));if(!n)return s.setUint32(r,0,!0),0;let a=0;const c=Array.from({length:Number(n)},((t,n)=>{const r=e+8*n,o=s.getInt32(r,!0),c=s.getUint32(r+4,!0);return a+=c,i.subarray(o,o+c)}));let u,f=0;if(0===t){if("undefined"==typeof window||"function"!=typeof window.prompt)return 58;u=ht(),f=u?q(c,u):0}else{u=new Uint8Array(a),u._isBuffer=!0;const{bytesRead:t}=await o.fd.read(u,0,u.length,Number(o.pos));f=u?q(c,u.subarray(0,t)):0,o.pos+=BigInt(f)}return s.setUint32(r,f,!0),0}),["i32","i32","i32","i32"],["i32"]),u("fd_readdir",(function(t,e,n,r,i){if(e=Number(e),n=Number(n),i=Number(i),0===e||0===i)return 0;const s=Q.get(this).fds.get(t,m.FD_READDIR,BigInt(0)),o=et(this),a=o.readdirSync(s.realPath,{withFileTypes:!0}),{HEAPU8:c,view:u}=tt(this);let f=0;for(let t=Number(r);t{const r=e+8*n,o=s.getInt32(r,!0),a=s.getUint32(r+4,!0);return i.subarray(o,o+a)})));let c;if(1===t||2===t)c=o.write(a);else{c=et(this).writeSync(o.fd,a,0,a.length,Number(o.pos)),o.pos+=BigInt(c)}return s.setUint32(r,c,!0),0}),(async function(t,e,n,r){if(e=Number(e),r=Number(r),0===e&&n||0===r)return 28;const{HEAPU8:i,view:s}=tt(this),o=Q.get(this).fds.get(t,m.FD_WRITE,BigInt(0));if(!n)return s.setUint32(r,0,!0),0;const a=O(Array.from({length:Number(n)},((t,n)=>{const r=e+8*n,o=s.getInt32(r,!0),a=s.getUint32(r+4,!0);return i.subarray(o,o+a)})));let c;return 1===t||2===t?c=o.write(a):(c=await(await o.fd.write(a,0,a.length,Number(o.pos))).bytesWritten,o.pos+=BigInt(c)),s.setUint32(r,c,!0),0}),["i32","i32","i32","i32"],["i32"]),u("path_create_directory",(function(t,e,n){if(e=Number(e),n=Number(n),0===e)return 28;const{HEAPU8:r}=tt(this),i=Q.get(this).fds.get(t,m.PATH_CREATE_DIRECTORY,BigInt(0));let s=ut.decode(c(r,e,e+n));s=I(i.realPath,s);return et(this).mkdirSync(s),0}),(async function(t,e,n){if(e=Number(e),n=Number(n),0===e)return 28;const{HEAPU8:r}=tt(this),i=Q.get(this).fds.get(t,m.PATH_CREATE_DIRECTORY,BigInt(0));let s=ut.decode(c(r,e,e+n));s=I(i.realPath,s);const o=et(this);return await o.promises.mkdir(s),0}),["i32","i32","i32"],["i32"]),u("path_filestat_get",(function(t,e,n,r,i){if(n=Number(n),r=Number(r),i=Number(i),0===n||0===i)return 28;const{HEAPU8:s,view:o}=tt(this),a=Q.get(this).fds.get(t,m.PATH_FILESTAT_GET,BigInt(0));let u=ut.decode(c(s,n,n+r));const f=et(this);let h;return u=I(a.realPath,u),h=1==(1&e)?f.statSync(u,{bigint:!0}):f.lstatSync(u,{bigint:!0}),M(o,i,h),0}),(async function(t,e,n,r,i){if(n=Number(n),r=Number(r),i=Number(i),0===n||0===i)return 28;const{HEAPU8:s,view:o}=tt(this),a=Q.get(this).fds.get(t,m.PATH_FILESTAT_GET,BigInt(0));let u=ut.decode(c(s,n,n+r));const f=et(this);let h;return u=I(a.realPath,u),h=1==(1&e)?await f.promises.stat(u,{bigint:!0}):await f.promises.lstat(u,{bigint:!0}),M(o,i,h),0}),["i32","i32","i32","i32","i32"],["i32"]),u("path_filestat_set_times",(function(t,e,n,r,i,s,o){if(n=Number(n),r=Number(r),0===n)return 28;const{HEAPU8:a}=tt(this),u=Q.get(this).fds.get(t,m.PATH_FILESTAT_SET_TIMES,BigInt(0));if(dt(o))return 28;const f=et(this),h=ot(f,u,ut.decode(c(a,n,n+r)),e);return 2==(2&o)&&(i=BigInt(1e6*Date.now())),8==(8&o)&&(s=BigInt(1e6*Date.now())),f.utimesSync(h,Number(i),Number(s)),0}),(async function(t,e,n,r,i,s,o){if(n=Number(n),r=Number(r),0===n)return 28;const{HEAPU8:a}=tt(this),u=Q.get(this).fds.get(t,m.PATH_FILESTAT_SET_TIMES,BigInt(0));if(dt(o))return 28;const f=et(this),h=await at(f,u,ut.decode(c(a,n,n+r)),e);return 2==(2&o)&&(i=BigInt(1e6*Date.now())),8==(8&o)&&(s=BigInt(1e6*Date.now())),await f.promises.utimes(h,Number(i),Number(s)),0}),["i32","i32","i32","i32","i64","i64","i32"],["i32"]),u("path_link",(function(t,e,n,r,i,s,o){if(n=Number(n),r=Number(r),s=Number(s),o=Number(o),0===n||0===s)return 28;const a=Q.get(this);let u,f;t===i?u=f=a.fds.get(t,m.PATH_LINK_SOURCE|m.PATH_LINK_TARGET,BigInt(0)):(u=a.fds.get(t,m.PATH_LINK_SOURCE,BigInt(0)),f=a.fds.get(i,m.PATH_LINK_TARGET,BigInt(0)));const{HEAPU8:h}=tt(this),d=et(this),g=ot(d,u,ut.decode(c(h,n,n+r)),e),l=I(f.realPath,ut.decode(c(h,s,s+o)));return d.linkSync(g,l),0}),(async function(t,e,n,r,i,s,o){if(n=Number(n),r=Number(r),s=Number(s),o=Number(o),0===n||0===s)return 28;const a=Q.get(this);let u,f;t===i?u=f=a.fds.get(t,m.PATH_LINK_SOURCE|m.PATH_LINK_TARGET,BigInt(0)):(u=a.fds.get(t,m.PATH_LINK_SOURCE,BigInt(0)),f=a.fds.get(i,m.PATH_LINK_TARGET,BigInt(0)));const{HEAPU8:h}=tt(this),d=et(this),g=await at(d,u,ut.decode(c(h,n,n+r)),e),l=I(f.realPath,ut.decode(c(h,s,s+o)));return await d.promises.link(g,l),0}),["i32","i32","i32","i32","i32","i32","i32"],["i32"]),u("path_open",(function(t,e,n,r,i,s,o,a,u){if(n=Number(n),u=Number(u),0===n||0===u)return 28;r=Number(r),s=BigInt(s),o=BigInt(o);const{flags:f,needed_base:d,needed_inheriting:g}=h(i,s,o,a),l=Q.get(this),_=l.fds.get(t,d,g),p=tt(this),y=p.HEAPU8,E=ut.decode(c(y,n,n+r)),I=et(this),m=ot(I,_,E,e),A=I.openSync(m,f,438),b=l.fds.getFileTypeByFd(A);if(3!==b&&(0!=(2&i)||m.endsWith("/")))return 54;const{base:T,inheriting:w}=H(l.fds.stdio,A,f,b),B=l.fds.insert(A,m,m,b,s&T,o&w,0),N=I.fstatSync(A,{bigint:!0});N.isFile()&&(B.size=N.size,0!=(1024&f)&&(B.pos=N.size));return p.view.setInt32(u,B.id,!0),0}),(async function(t,e,n,r,i,s,o,a,u){if(n=Number(n),u=Number(u),0===n||0===u)return 28;r=Number(r),s=BigInt(s),o=BigInt(o);const{flags:f,needed_base:d,needed_inheriting:g}=h(i,s,o,a),l=Q.get(this),_=l.fds.get(t,d,g),p=tt(this),y=p.HEAPU8,E=ut.decode(c(y,n,n+r)),I=et(this),m=await at(I,_,E,e),A=await I.promises.open(m,f,438),b=await l.fds.getFileTypeByFd(A);if(0!=(2&i)&&3!==b)return 54;const{base:T,inheriting:w}=H(l.fds.stdio,A.fd,f,b),B=l.fds.insert(A,m,m,b,s&T,o&w,0),N=await A.stat({bigint:!0});N.isFile()&&(B.size=N.size,0!=(1024&f)&&(B.pos=N.size));return p.view.setInt32(u,B.id,!0),0}),["i32","i32","i32","i32","i32","i64","i64","i32","i32"],["i32"]),u("path_readlink",(function(t,e,n,r,i,s){if(e=Number(e),n=Number(n),r=Number(r),i=Number(i),s=Number(s),0===e||0===r||0===s)return 28;const{HEAPU8:o,view:a}=tt(this),u=Q.get(this).fds.get(t,m.PATH_READLINK,BigInt(0));let f=ut.decode(c(o,e,e+n));f=I(u.realPath,f);const h=et(this).readlinkSync(f),d=ct.encode(h),g=Math.min(d.length,i);return g>=i?42:(o.set(d.subarray(0,g),r),o[r+g]=0,a.setUint32(s,g,!0),0)}),(async function(t,e,n,r,i,s){if(e=Number(e),n=Number(n),r=Number(r),i=Number(i),s=Number(s),0===e||0===r||0===s)return 28;const{HEAPU8:o,view:a}=tt(this),u=Q.get(this).fds.get(t,m.PATH_READLINK,BigInt(0));let f=ut.decode(c(o,e,e+n));f=I(u.realPath,f);const h=et(this),d=await h.promises.readlink(f),g=ct.encode(d),l=Math.min(g.length,i);return l>=i?42:(o.set(g.subarray(0,l),r),o[r+l]=0,a.setUint32(s,l,!0),0)}),["i32","i32","i32","i32","i32","i32"],["i32"]),u("path_remove_directory",(function(t,e,n){if(e=Number(e),n=Number(n),0===e)return 28;const{HEAPU8:r}=tt(this),i=Q.get(this).fds.get(t,m.PATH_REMOVE_DIRECTORY,BigInt(0));let s=ut.decode(c(r,e,e+n));s=I(i.realPath,s);return et(this).rmdirSync(s),0}),(async function(t,e,n){if(e=Number(e),n=Number(n),0===e)return 28;const{HEAPU8:r}=tt(this),i=Q.get(this).fds.get(t,m.PATH_REMOVE_DIRECTORY,BigInt(0));let s=ut.decode(c(r,e,e+n));s=I(i.realPath,s);const o=et(this);return await o.promises.rmdir(s),0}),["i32","i32","i32"],["i32"]),u("path_rename",(function(t,e,n,r,i,s){if(e=Number(e),n=Number(n),i=Number(i),s=Number(s),0===e||0===i)return 28;const o=Q.get(this);let a,u;t===r?a=u=o.fds.get(t,m.PATH_RENAME_SOURCE|m.PATH_RENAME_TARGET,BigInt(0)):(a=o.fds.get(t,m.PATH_RENAME_SOURCE,BigInt(0)),u=o.fds.get(r,m.PATH_RENAME_TARGET,BigInt(0)));const{HEAPU8:f}=tt(this),h=I(a.realPath,ut.decode(c(f,e,e+n))),d=I(u.realPath,ut.decode(c(f,i,i+s)));return et(this).renameSync(h,d),0}),(async function(t,e,n,r,i,s){if(e=Number(e),n=Number(n),i=Number(i),s=Number(s),0===e||0===i)return 28;const o=Q.get(this);let a,u;t===r?a=u=o.fds.get(t,m.PATH_RENAME_SOURCE|m.PATH_RENAME_TARGET,BigInt(0)):(a=o.fds.get(t,m.PATH_RENAME_SOURCE,BigInt(0)),u=o.fds.get(r,m.PATH_RENAME_TARGET,BigInt(0)));const{HEAPU8:f}=tt(this),h=I(a.realPath,ut.decode(c(f,e,e+n))),d=I(u.realPath,ut.decode(c(f,i,i+s))),g=et(this);return await g.promises.rename(h,d),0}),["i32","i32","i32","i32","i32","i32"],["i32"]),u("path_symlink",(function(t,e,n,r,i){if(t=Number(t),e=Number(e),r=Number(r),i=Number(i),0===t||0===r)return 28;const{HEAPU8:s}=tt(this),o=Q.get(this).fds.get(n,m.PATH_SYMLINK,BigInt(0)),a=ut.decode(c(s,t,t+e));if(a.length>0&&"/"===a[0])return 63;let u=ut.decode(c(s,r,r+i));u=I(o.realPath,u);return et(this).symlinkSync(a,u),0}),(async function(t,e,n,r,i){if(t=Number(t),e=Number(e),r=Number(r),i=Number(i),0===t||0===r)return 28;const{HEAPU8:s}=tt(this),o=Q.get(this).fds.get(n,m.PATH_SYMLINK,BigInt(0)),a=ut.decode(c(s,t,t+e));let u=ut.decode(c(s,r,r+i));u=I(o.realPath,u);const f=et(this);return await f.promises.symlink(a,u),0}),["i32","i32","i32","i32","i32"],["i32"]),u("path_unlink_file",(function(t,e,n){if(e=Number(e),n=Number(n),0===e)return 28;const{HEAPU8:r}=tt(this),i=Q.get(this).fds.get(t,m.PATH_UNLINK_FILE,BigInt(0));let s=ut.decode(c(r,e,e+n));s=I(i.realPath,s);return et(this).unlinkSync(s),0}),(async function(t,e,n){if(e=Number(e),n=Number(n),0===e)return 28;const{HEAPU8:r}=tt(this),i=Q.get(this).fds.get(t,m.PATH_UNLINK_FILE,BigInt(0));let s=ut.decode(c(r,e,e+n));s=I(i.realPath,s);const o=et(this);return await o.promises.unlink(s),0}),["i32","i32","i32"],["i32"]),this._setMemory=function(t){if(!(t instanceof e.Memory))throw new TypeError('"instance.exports.memory" property must be a WebAssembly.Memory');X.set(a,Y(t))}}static createSync(t,e,n,r,i,s,o){const a=new z({size:3,in:r[0],out:r[1],err:r[2],fs:i,print:s,printErr:o}),c=new gt(t,e,a,!1,i);if(n.length>0)for(let t=0;t0)for(let t=0;t{void 0!==e&&a.push(`${t}=${e}`)})));const c=[];if(void 0!==t.preopens&&(n(t.preopens,"options.preopens"),Object.entries(t.preopens).forEach((({0:t,1:e})=>c.push({mappedPath:String(t),realPath:String(e)})))),c.length>0){if(void 0===t.fs)throw new Error("filesystem is disabled, can not preopen directory");try{n(t.fs,"options.fs")}catch(t){throw new TypeError("Node.js fs like implementation is not provided")}}void 0!==t.print&&i(t.print,"options.print"),void 0!==t.printErr&&i(t.printErr,"options.printErr"),void 0!==t.returnOnExit&&function(t,e){if("boolean"!=typeof t)throw new TypeError(`${e} must be a boolean. Received ${null===t?"null":typeof t}`)}(t.returnOnExit,"options.returnOnExit");return{args:o,env:a,preopens:c,stdio:[0,1,2],_WASI:s}}function At(t,e){this[pt]=t,this.wasiImport=e,this[yt]=!1,this[_t]=0,this[Et]=void 0}class bt{constructor(t=lt){const{args:e,env:n,preopens:r,stdio:i,_WASI:s}=mt.call(this,t),o=s.createSync(e,n,r,i,t.fs,t.print,t.printErr),a=o._setMemory;delete o._setMemory,At.call(this,a,o),t.returnOnExit&&(o.proc_exit=Tt.bind(this))}finalizeBindings(t,e){var r,{memory:i=(null===(r=null==t?void 0:t.exports)||void 0===r?void 0:r.memory)}=void 0===e?{}:e;if(this[yt])throw new Error("WASI instance has already started");n(t,"instance"),n(t.exports,"instance.exports"),this[pt](i),this[Et]=t,this[yt]=!0}start(t){this.finalizeBindings(t);const{_start:e,_initialize:n}=this[Et].exports;let r;i(e,"instance.exports._start"),s(n,"instance.exports._initialize");try{r=e()}catch(t){if(t!==_t)throw t}return r instanceof Promise?r.then((()=>this[_t]),(t=>{if(t!==_t)throw t;return this[_t]})):this[_t]}initialize(t){this.finalizeBindings(t);const{_start:e,_initialize:n}=this[Et].exports;if(s(e,"instance.exports._start"),void 0!==n)return i(n,"instance.exports._initialize"),n()}getImportObject(){return{[this[It]]:this.wasiImport}}}function Tt(t){throw this[_t]=t,_t}t.Asyncify=h,t.Memory=G,t.WASI=bt,t.WebAssemblyMemory=j,t.asyncifyLoad=function(t,e,n){d(n),n=null!=n?n:{};const r=new h;return l(e,n=r.wrapImports(n)).then((e=>{var i;const s=e.instance.exports.memory||(null===(i=n.env)||void 0===i?void 0:i.memory);return{module:e.module,instance:r.init(s,e.instance,t)}}))},t.asyncifyLoadSync=function(t,e,n){var r;d(n),n=null!=n?n:{};const i=new h,s=_(e,n=i.wrapImports(n)),o=s.instance.exports.memory||(null===(r=n.env)||void 0===r?void 0:r.memory);return{module:s.module,instance:i.init(o,s.instance,t)}},t.createAsyncWASI=async function(t=lt){const e=Object.create(bt.prototype),{args:r,env:s,preopens:o,stdio:a,_WASI:c}=mt.call(e,t);void 0!==t.asyncify&&(n(t.asyncify,"options.asyncify"),i(t.asyncify.wrapImportFunction,"options.asyncify.wrapImportFunction"));const u=await c.createAsync(r,s,o,a,t.fs,t.print,t.printErr,t.asyncify),f=u._setMemory;return delete u._setMemory,At.call(e,f,u),t.returnOnExit&&(u.proc_exit=Tt.bind(e)),e},t.extendMemory=Y,t.load=l,t.loadSync=_,t.wrapAsyncExport=Z,t.wrapAsyncImport=V,t.wrapExports=function(t,e){return a(t,((t,n)=>{let r="function"!=typeof t;return Array.isArray(e)&&(r=r||-1===e.indexOf(n)),r?t:Z(t)}))},Object.defineProperty(t,"__esModule",{value:!0})})); diff --git a/node_modules/@tybys/wasm-util/lib/cjs/asyncify.js b/node_modules/@tybys/wasm-util/lib/cjs/asyncify.js new file mode 100644 index 00000000..cf66eb93 --- /dev/null +++ b/node_modules/@tybys/wasm-util/lib/cjs/asyncify.js @@ -0,0 +1,158 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Asyncify = void 0; +const webassembly_1 = require("./webassembly"); +const util_1 = require("./wasi/util"); +const ignoreNames = [ + 'asyncify_get_state', + 'asyncify_start_rewind', + 'asyncify_start_unwind', + 'asyncify_stop_rewind', + 'asyncify_stop_unwind' +]; +// const wrappedExports = new WeakMap() +var AsyncifyState; +(function (AsyncifyState) { + AsyncifyState[AsyncifyState["NONE"] = 0] = "NONE"; + AsyncifyState[AsyncifyState["UNWINDING"] = 1] = "UNWINDING"; + AsyncifyState[AsyncifyState["REWINDING"] = 2] = "REWINDING"; +})(AsyncifyState || (AsyncifyState = {})); +function tryAllocate(instance, wasm64, size, mallocName) { + if (typeof instance.exports[mallocName] !== 'function' || size <= 0) { + return { + wasm64, + dataPtr: 16, + start: wasm64 ? 32 : 24, + end: 1024 + }; + } + const malloc = instance.exports[mallocName]; + const dataPtr = wasm64 ? Number(malloc(BigInt(16) + BigInt(size))) : malloc(8 + size); + if (dataPtr === 0) { + throw new Error('Allocate asyncify data failed'); + } + return wasm64 + ? { wasm64, dataPtr, start: dataPtr + 16, end: dataPtr + 16 + size } + : { wasm64, dataPtr, start: dataPtr + 8, end: dataPtr + 8 + size }; +} +/** @public */ +class Asyncify { + constructor() { + this.value = undefined; + this.exports = undefined; + this.dataPtr = 0; + } + init(memory, instance, options) { + var _a, _b; + if (this.exports) { + throw new Error('Asyncify has been initialized'); + } + if (!(memory instanceof webassembly_1._WebAssembly.Memory)) { + throw new TypeError('Require WebAssembly.Memory object'); + } + const exports = instance.exports; + for (let i = 0; i < ignoreNames.length; ++i) { + if (typeof exports[ignoreNames[i]] !== 'function') { + throw new TypeError('Invalid asyncify wasm'); + } + } + let address; + const wasm64 = Boolean(options.wasm64); + if (!options.tryAllocate) { + address = { + wasm64, + dataPtr: 16, + start: wasm64 ? 32 : 24, + end: 1024 + }; + } + else { + if (options.tryAllocate === true) { + address = tryAllocate(instance, wasm64, 4096, 'malloc'); + } + else { + address = tryAllocate(instance, wasm64, (_a = options.tryAllocate.size) !== null && _a !== void 0 ? _a : 4096, (_b = options.tryAllocate.name) !== null && _b !== void 0 ? _b : 'malloc'); + } + } + this.dataPtr = address.dataPtr; + if (wasm64) { + new BigInt64Array(memory.buffer, this.dataPtr).set([BigInt(address.start), BigInt(address.end)]); + } + else { + new Int32Array(memory.buffer, this.dataPtr).set([address.start, address.end]); + } + this.exports = this.wrapExports(exports, options.wrapExports); + const asyncifiedInstance = Object.create(webassembly_1._WebAssembly.Instance.prototype); + Object.defineProperty(asyncifiedInstance, 'exports', { value: this.exports }); + // Object.setPrototypeOf(instance, Instance.prototype) + return asyncifiedInstance; + } + assertState() { + if (this.exports.asyncify_get_state() !== AsyncifyState.NONE) { + throw new Error('Asyncify state error'); + } + } + wrapImportFunction(f) { + // eslint-disable-next-line @typescript-eslint/no-this-alias + const _this = this; + return (function () { + // eslint-disable-next-line no-unreachable-loop + while (_this.exports.asyncify_get_state() === AsyncifyState.REWINDING) { + _this.exports.asyncify_stop_rewind(); + return _this.value; + } + _this.assertState(); + const v = f.apply(this, arguments); + if (!(0, util_1.isPromiseLike)(v)) + return v; + _this.exports.asyncify_start_unwind(_this.dataPtr); + _this.value = v; + }); + } + wrapImports(imports) { + const importObject = {}; + Object.keys(imports).forEach(k => { + const mod = imports[k]; + const newModule = {}; + Object.keys(mod).forEach(name => { + const importValue = mod[name]; + if (typeof importValue === 'function') { + newModule[name] = this.wrapImportFunction(importValue); + } + else { + newModule[name] = importValue; + } + }); + importObject[k] = newModule; + }); + return importObject; + } + wrapExportFunction(f) { + // eslint-disable-next-line @typescript-eslint/no-this-alias + const _this = this; + return (async function () { + _this.assertState(); + let ret = f.apply(this, arguments); + while (_this.exports.asyncify_get_state() === AsyncifyState.UNWINDING) { + _this.exports.asyncify_stop_unwind(); + _this.value = await _this.value; + _this.assertState(); + _this.exports.asyncify_start_rewind(_this.dataPtr); + ret = f.call(this); + } + _this.assertState(); + return ret; + }); + } + wrapExports(exports, needWrap) { + return (0, util_1.wrapInstanceExports)(exports, (exportValue, name) => { + let ignore = ignoreNames.indexOf(name) !== -1 || typeof exportValue !== 'function'; + if (Array.isArray(needWrap)) { + ignore = ignore || (needWrap.indexOf(name) === -1); + } + return ignore ? exportValue : this.wrapExportFunction(exportValue); + }); + } +} +exports.Asyncify = Asyncify; +//# sourceMappingURL=asyncify.js.map \ No newline at end of file diff --git a/node_modules/@tybys/wasm-util/lib/cjs/index.js b/node_modules/@tybys/wasm-util/lib/cjs/index.js new file mode 100644 index 00000000..67a44445 --- /dev/null +++ b/node_modules/@tybys/wasm-util/lib/cjs/index.js @@ -0,0 +1,13 @@ +"use strict"; +/** + * @packageDocumentation + */ +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +tslib_1.__exportStar(require("./asyncify"), exports); +tslib_1.__exportStar(require("./load"), exports); +tslib_1.__exportStar(require("./wasi/index"), exports); +tslib_1.__exportStar(require("./memory"), exports); +tslib_1.__exportStar(require("./jspi"), exports); +tslib_1.__exportStar(require("./wasi/fs"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@tybys/wasm-util/lib/cjs/jspi.js b/node_modules/@tybys/wasm-util/lib/cjs/jspi.js new file mode 100644 index 00000000..1345bc7a --- /dev/null +++ b/node_modules/@tybys/wasm-util/lib/cjs/jspi.js @@ -0,0 +1,46 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.wrapExports = exports.wrapAsyncExport = exports.wrapAsyncImport = void 0; +const util_1 = require("./wasi/util"); +const webassembly_1 = require("./webassembly"); +function checkWebAssemblyFunction() { + const WebAssemblyFunction = webassembly_1._WebAssembly.Function; + if (typeof WebAssemblyFunction !== 'function') { + throw new Error('WebAssembly.Function is not supported in this environment.' + + ' If you are using V8 based browser like Chrome, try to specify' + + ' --js-flags="--wasm-staging --experimental-wasm-stack-switching"'); + } + return WebAssemblyFunction; +} +/** @public */ +function wrapAsyncImport(f, parameterType, returnType) { + const WebAssemblyFunction = checkWebAssemblyFunction(); + if (typeof f !== 'function') { + throw new TypeError('Function required'); + } + const parameters = parameterType.slice(0); + parameters.unshift('externref'); + return new WebAssemblyFunction({ parameters, results: returnType }, f, { suspending: 'first' }); +} +exports.wrapAsyncImport = wrapAsyncImport; +/** @public */ +function wrapAsyncExport(f) { + const WebAssemblyFunction = checkWebAssemblyFunction(); + if (typeof f !== 'function') { + throw new TypeError('Function required'); + } + return new WebAssemblyFunction({ parameters: [...WebAssemblyFunction.type(f).parameters.slice(1)], results: ['externref'] }, f, { promising: 'first' }); +} +exports.wrapAsyncExport = wrapAsyncExport; +/** @public */ +function wrapExports(exports, needWrap) { + return (0, util_1.wrapInstanceExports)(exports, (exportValue, name) => { + let ignore = typeof exportValue !== 'function'; + if (Array.isArray(needWrap)) { + ignore = ignore || (needWrap.indexOf(name) === -1); + } + return ignore ? exportValue : wrapAsyncExport(exportValue); + }); +} +exports.wrapExports = wrapExports; +//# sourceMappingURL=jspi.js.map \ No newline at end of file diff --git a/node_modules/@tybys/wasm-util/lib/cjs/load.js b/node_modules/@tybys/wasm-util/lib/cjs/load.js new file mode 100644 index 00000000..91383457 --- /dev/null +++ b/node_modules/@tybys/wasm-util/lib/cjs/load.js @@ -0,0 +1,97 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.asyncifyLoadSync = exports.loadSync = exports.asyncifyLoad = exports.load = void 0; +const webassembly_1 = require("./webassembly"); +const asyncify_1 = require("./asyncify"); +function validateImports(imports) { + if (imports && typeof imports !== 'object') { + throw new TypeError('imports must be an object or undefined'); + } +} +function fetchWasm(urlOrBuffer, imports) { + if (typeof wx !== 'undefined' && typeof __wxConfig !== 'undefined') { + return webassembly_1._WebAssembly.instantiate(urlOrBuffer, imports); + } + return fetch(urlOrBuffer) + .then(response => response.arrayBuffer()) + .then(buffer => webassembly_1._WebAssembly.instantiate(buffer, imports)); +} +/** @public */ +function load(wasmInput, imports) { + validateImports(imports); + imports = imports !== null && imports !== void 0 ? imports : {}; + let source; + if (wasmInput instanceof ArrayBuffer || ArrayBuffer.isView(wasmInput)) { + return webassembly_1._WebAssembly.instantiate(wasmInput, imports); + } + if (wasmInput instanceof webassembly_1._WebAssembly.Module) { + return webassembly_1._WebAssembly.instantiate(wasmInput, imports).then((instance) => { + return { instance, module: wasmInput }; + }); + } + if (typeof wasmInput !== 'string' && !(wasmInput instanceof URL)) { + throw new TypeError('Invalid source'); + } + if (typeof webassembly_1._WebAssembly.instantiateStreaming === 'function') { + let responsePromise; + try { + responsePromise = fetch(wasmInput); + source = webassembly_1._WebAssembly.instantiateStreaming(responsePromise, imports).catch(() => { + return fetchWasm(wasmInput, imports); + }); + } + catch (_) { + source = fetchWasm(wasmInput, imports); + } + } + else { + source = fetchWasm(wasmInput, imports); + } + return source; +} +exports.load = load; +/** @public */ +function asyncifyLoad(asyncify, urlOrBuffer, imports) { + validateImports(imports); + imports = imports !== null && imports !== void 0 ? imports : {}; + const asyncifyHelper = new asyncify_1.Asyncify(); + imports = asyncifyHelper.wrapImports(imports); + return load(urlOrBuffer, imports).then(source => { + var _a; + const memory = source.instance.exports.memory || ((_a = imports.env) === null || _a === void 0 ? void 0 : _a.memory); + return { module: source.module, instance: asyncifyHelper.init(memory, source.instance, asyncify) }; + }); +} +exports.asyncifyLoad = asyncifyLoad; +/** @public */ +function loadSync(wasmInput, imports) { + validateImports(imports); + imports = imports !== null && imports !== void 0 ? imports : {}; + let module; + if ((wasmInput instanceof ArrayBuffer) || ArrayBuffer.isView(wasmInput)) { + module = new webassembly_1._WebAssembly.Module(wasmInput); + } + else if (wasmInput instanceof WebAssembly.Module) { + module = wasmInput; + } + else { + throw new TypeError('Invalid source'); + } + const instance = new webassembly_1._WebAssembly.Instance(module, imports); + const source = { instance, module }; + return source; +} +exports.loadSync = loadSync; +/** @public */ +function asyncifyLoadSync(asyncify, buffer, imports) { + var _a; + validateImports(imports); + imports = imports !== null && imports !== void 0 ? imports : {}; + const asyncifyHelper = new asyncify_1.Asyncify(); + imports = asyncifyHelper.wrapImports(imports); + const source = loadSync(buffer, imports); + const memory = source.instance.exports.memory || ((_a = imports.env) === null || _a === void 0 ? void 0 : _a.memory); + return { module: source.module, instance: asyncifyHelper.init(memory, source.instance, asyncify) }; +} +exports.asyncifyLoadSync = asyncifyLoadSync; +//# sourceMappingURL=load.js.map \ No newline at end of file diff --git a/node_modules/@tybys/wasm-util/lib/cjs/memory.js b/node_modules/@tybys/wasm-util/lib/cjs/memory.js new file mode 100644 index 00000000..ca46ca5f --- /dev/null +++ b/node_modules/@tybys/wasm-util/lib/cjs/memory.js @@ -0,0 +1,35 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.extendMemory = exports.Memory = exports.WebAssemblyMemory = void 0; +/* eslint-disable spaced-comment */ +const webassembly_1 = require("./webassembly"); +/** @public */ +exports.WebAssemblyMemory = (function () { return webassembly_1._WebAssembly.Memory; })(); +/** @public */ +class Memory extends exports.WebAssemblyMemory { + // eslint-disable-next-line @typescript-eslint/no-useless-constructor + constructor(descriptor) { + super(descriptor); + } + get HEAP8() { return new Int8Array(super.buffer); } + get HEAPU8() { return new Uint8Array(super.buffer); } + get HEAP16() { return new Int16Array(super.buffer); } + get HEAPU16() { return new Uint16Array(super.buffer); } + get HEAP32() { return new Int32Array(super.buffer); } + get HEAPU32() { return new Uint32Array(super.buffer); } + get HEAP64() { return new BigInt64Array(super.buffer); } + get HEAPU64() { return new BigUint64Array(super.buffer); } + get HEAPF32() { return new Float32Array(super.buffer); } + get HEAPF64() { return new Float64Array(super.buffer); } + get view() { return new DataView(super.buffer); } +} +exports.Memory = Memory; +/** @public */ +function extendMemory(memory) { + if (Object.getPrototypeOf(memory) === webassembly_1._WebAssembly.Memory.prototype) { + Object.setPrototypeOf(memory, Memory.prototype); + } + return memory; +} +exports.extendMemory = extendMemory; +//# sourceMappingURL=memory.js.map \ No newline at end of file diff --git a/node_modules/@tybys/wasm-util/lib/cjs/wasi/error.js b/node_modules/@tybys/wasm-util/lib/cjs/wasi/error.js new file mode 100644 index 00000000..e417da33 --- /dev/null +++ b/node_modules/@tybys/wasm-util/lib/cjs/wasi/error.js @@ -0,0 +1,103 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WasiError = exports.strerror = void 0; +const types_1 = require("./types"); +function strerror(errno) { + switch (errno) { + case types_1.WasiErrno.ESUCCESS: return 'Success'; + case types_1.WasiErrno.E2BIG: return 'Argument list too long'; + case types_1.WasiErrno.EACCES: return 'Permission denied'; + case types_1.WasiErrno.EADDRINUSE: return 'Address in use'; + case types_1.WasiErrno.EADDRNOTAVAIL: return 'Address not available'; + case types_1.WasiErrno.EAFNOSUPPORT: return 'Address family not supported by protocol'; + case types_1.WasiErrno.EAGAIN: return 'Resource temporarily unavailable'; + case types_1.WasiErrno.EALREADY: return 'Operation already in progress'; + case types_1.WasiErrno.EBADF: return 'Bad file descriptor'; + case types_1.WasiErrno.EBADMSG: return 'Bad message'; + case types_1.WasiErrno.EBUSY: return 'Resource busy'; + case types_1.WasiErrno.ECANCELED: return 'Operation canceled'; + case types_1.WasiErrno.ECHILD: return 'No child process'; + case types_1.WasiErrno.ECONNABORTED: return 'Connection aborted'; + case types_1.WasiErrno.ECONNREFUSED: return 'Connection refused'; + case types_1.WasiErrno.ECONNRESET: return 'Connection reset by peer'; + case types_1.WasiErrno.EDEADLK: return 'Resource deadlock would occur'; + case types_1.WasiErrno.EDESTADDRREQ: return 'Destination address required'; + case types_1.WasiErrno.EDOM: return 'Domain error'; + case types_1.WasiErrno.EDQUOT: return 'Quota exceeded'; + case types_1.WasiErrno.EEXIST: return 'File exists'; + case types_1.WasiErrno.EFAULT: return 'Bad address'; + case types_1.WasiErrno.EFBIG: return 'File too large'; + case types_1.WasiErrno.EHOSTUNREACH: return 'Host is unreachable'; + case types_1.WasiErrno.EIDRM: return 'Identifier removed'; + case types_1.WasiErrno.EILSEQ: return 'Illegal byte sequence'; + case types_1.WasiErrno.EINPROGRESS: return 'Operation in progress'; + case types_1.WasiErrno.EINTR: return 'Interrupted system call'; + case types_1.WasiErrno.EINVAL: return 'Invalid argument'; + case types_1.WasiErrno.EIO: return 'I/O error'; + case types_1.WasiErrno.EISCONN: return 'Socket is connected'; + case types_1.WasiErrno.EISDIR: return 'Is a directory'; + case types_1.WasiErrno.ELOOP: return 'Symbolic link loop'; + case types_1.WasiErrno.EMFILE: return 'No file descriptors available'; + case types_1.WasiErrno.EMLINK: return 'Too many links'; + case types_1.WasiErrno.EMSGSIZE: return 'Message too large'; + case types_1.WasiErrno.EMULTIHOP: return 'Multihop attempted'; + case types_1.WasiErrno.ENAMETOOLONG: return 'Filename too long'; + case types_1.WasiErrno.ENETDOWN: return 'Network is down'; + case types_1.WasiErrno.ENETRESET: return 'Connection reset by network'; + case types_1.WasiErrno.ENETUNREACH: return 'Network unreachable'; + case types_1.WasiErrno.ENFILE: return 'Too many files open in system'; + case types_1.WasiErrno.ENOBUFS: return 'No buffer space available'; + case types_1.WasiErrno.ENODEV: return 'No such device'; + case types_1.WasiErrno.ENOENT: return 'No such file or directory'; + case types_1.WasiErrno.ENOEXEC: return 'Exec format error'; + case types_1.WasiErrno.ENOLCK: return 'No locks available'; + case types_1.WasiErrno.ENOLINK: return 'Link has been severed'; + case types_1.WasiErrno.ENOMEM: return 'Out of memory'; + case types_1.WasiErrno.ENOMSG: return 'No message of the desired type'; + case types_1.WasiErrno.ENOPROTOOPT: return 'Protocol not available'; + case types_1.WasiErrno.ENOSPC: return 'No space left on device'; + case types_1.WasiErrno.ENOSYS: return 'Function not implemented'; + case types_1.WasiErrno.ENOTCONN: return 'Socket not connected'; + case types_1.WasiErrno.ENOTDIR: return 'Not a directory'; + case types_1.WasiErrno.ENOTEMPTY: return 'Directory not empty'; + case types_1.WasiErrno.ENOTRECOVERABLE: return 'State not recoverable'; + case types_1.WasiErrno.ENOTSOCK: return 'Not a socket'; + case types_1.WasiErrno.ENOTSUP: return 'Not supported'; + case types_1.WasiErrno.ENOTTY: return 'Not a tty'; + case types_1.WasiErrno.ENXIO: return 'No such device or address'; + case types_1.WasiErrno.EOVERFLOW: return 'Value too large for data type'; + case types_1.WasiErrno.EOWNERDEAD: return 'Previous owner died'; + case types_1.WasiErrno.EPERM: return 'Operation not permitted'; + case types_1.WasiErrno.EPIPE: return 'Broken pipe'; + case types_1.WasiErrno.EPROTO: return 'Protocol error'; + case types_1.WasiErrno.EPROTONOSUPPORT: return 'Protocol not supported'; + case types_1.WasiErrno.EPROTOTYPE: return 'Protocol wrong type for socket'; + case types_1.WasiErrno.ERANGE: return 'Result not representable'; + case types_1.WasiErrno.EROFS: return 'Read-only file system'; + case types_1.WasiErrno.ESPIPE: return 'Invalid seek'; + case types_1.WasiErrno.ESRCH: return 'No such process'; + case types_1.WasiErrno.ESTALE: return 'Stale file handle'; + case types_1.WasiErrno.ETIMEDOUT: return 'Operation timed out'; + case types_1.WasiErrno.ETXTBSY: return 'Text file busy'; + case types_1.WasiErrno.EXDEV: return 'Cross-device link'; + case types_1.WasiErrno.ENOTCAPABLE: return 'Capabilities insufficient'; + default: return 'Unknown error'; + } +} +exports.strerror = strerror; +class WasiError extends Error { + constructor(message, errno) { + super(message); + this.errno = errno; + } + getErrorMessage() { + return strerror(this.errno); + } +} +exports.WasiError = WasiError; +Object.defineProperty(WasiError.prototype, 'name', { + configurable: true, + writable: true, + value: 'WasiError' +}); +//# sourceMappingURL=error.js.map \ No newline at end of file diff --git a/node_modules/@tybys/wasm-util/lib/cjs/wasi/fd.js b/node_modules/@tybys/wasm-util/lib/cjs/wasi/fd.js new file mode 100644 index 00000000..4cc3fbc8 --- /dev/null +++ b/node_modules/@tybys/wasm-util/lib/cjs/wasi/fd.js @@ -0,0 +1,268 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AsyncTable = exports.SyncTable = exports.FileDescriptorTable = exports.toFileStat = exports.toFileType = exports.StandardOutput = exports.FileDescriptor = exports.concatBuffer = void 0; +const types_1 = require("./types"); +const rights_1 = require("./rights"); +const error_1 = require("./error"); +function concatBuffer(buffers, size) { + let total = 0; + if (typeof size === 'number' && size >= 0) { + total = size; + } + else { + for (let i = 0; i < buffers.length; i++) { + const buffer = buffers[i]; + total += buffer.length; + } + } + let pos = 0; + const ret = new Uint8Array(total); + for (let i = 0; i < buffers.length; i++) { + const buffer = buffers[i]; + ret.set(buffer, pos); + pos += buffer.length; + } + return ret; +} +exports.concatBuffer = concatBuffer; +class FileDescriptor { + constructor(id, fd, path, realPath, type, rightsBase, rightsInheriting, preopen) { + this.id = id; + this.fd = fd; + this.path = path; + this.realPath = realPath; + this.type = type; + this.rightsBase = rightsBase; + this.rightsInheriting = rightsInheriting; + this.preopen = preopen; + this.pos = BigInt(0); + this.size = BigInt(0); + } + seek(offset, whence) { + if (whence === types_1.WasiWhence.SET) { + this.pos = BigInt(offset); + } + else if (whence === types_1.WasiWhence.CUR) { + this.pos += BigInt(offset); + } + else if (whence === types_1.WasiWhence.END) { + this.pos = BigInt(this.size) - BigInt(offset); + } + else { + throw new error_1.WasiError('Unknown whence', types_1.WasiErrno.EIO); + } + return this.pos; + } +} +exports.FileDescriptor = FileDescriptor; +class StandardOutput extends FileDescriptor { + constructor(log, id, fd, path, realPath, type, rightsBase, rightsInheriting, preopen) { + super(id, fd, path, realPath, type, rightsBase, rightsInheriting, preopen); + this._log = log; + this._buf = null; + } + write(buffer) { + const originalBuffer = buffer; + if (this._buf) { + buffer = concatBuffer([this._buf, buffer]); + this._buf = null; + } + if (buffer.indexOf(10) === -1) { + this._buf = buffer; + return originalBuffer.byteLength; + } + let written = 0; + let lastBegin = 0; + let index; + while ((index = buffer.indexOf(10, written)) !== -1) { + const str = new TextDecoder().decode(buffer.subarray(lastBegin, index)); + this._log(str); + written += index - lastBegin + 1; + lastBegin = index + 1; + } + if (written < buffer.length) { + this._buf = buffer.slice(written); + } + return originalBuffer.byteLength; + } +} +exports.StandardOutput = StandardOutput; +function toFileType(stat) { + if (stat.isBlockDevice()) + return types_1.WasiFileType.BLOCK_DEVICE; + if (stat.isCharacterDevice()) + return types_1.WasiFileType.CHARACTER_DEVICE; + if (stat.isDirectory()) + return types_1.WasiFileType.DIRECTORY; + if (stat.isSocket()) + return types_1.WasiFileType.SOCKET_STREAM; + if (stat.isFile()) + return types_1.WasiFileType.REGULAR_FILE; + if (stat.isSymbolicLink()) + return types_1.WasiFileType.SYMBOLIC_LINK; + return types_1.WasiFileType.UNKNOWN; +} +exports.toFileType = toFileType; +function toFileStat(view, buf, stat) { + view.setBigUint64(buf, stat.dev, true); + view.setBigUint64(buf + 8, stat.ino, true); + view.setBigUint64(buf + 16, BigInt(toFileType(stat)), true); + view.setBigUint64(buf + 24, stat.nlink, true); + view.setBigUint64(buf + 32, stat.size, true); + view.setBigUint64(buf + 40, stat.atimeMs * BigInt(1000000), true); + view.setBigUint64(buf + 48, stat.mtimeMs * BigInt(1000000), true); + view.setBigUint64(buf + 56, stat.ctimeMs * BigInt(1000000), true); +} +exports.toFileStat = toFileStat; +class FileDescriptorTable { + constructor(options) { + this.used = 0; + this.size = options.size; + this.fds = Array(options.size); + this.stdio = [options.in, options.out, options.err]; + this.print = options.print; + this.printErr = options.printErr; + this.insertStdio(options.in, 0, ''); + this.insertStdio(options.out, 1, ''); + this.insertStdio(options.err, 2, ''); + } + insertStdio(fd, expected, name) { + const type = types_1.WasiFileType.CHARACTER_DEVICE; + const { base, inheriting } = (0, rights_1.getRights)(this.stdio, fd, types_1.FileControlFlag.O_RDWR, type); + const wrap = this.insert(fd, name, name, type, base, inheriting, 0); + if (wrap.id !== expected) { + throw new error_1.WasiError(`id: ${wrap.id} !== expected: ${expected}`, types_1.WasiErrno.EBADF); + } + return wrap; + } + insert(fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen) { + var _a, _b; + let index = -1; + if (this.used >= this.size) { + const newSize = this.size * 2; + this.fds.length = newSize; + index = this.size; + this.size = newSize; + } + else { + for (let i = 0; i < this.size; ++i) { + if (this.fds[i] == null) { + index = i; + break; + } + } + } + let entry; + if (mappedPath === '') { + entry = new StandardOutput((_a = this.print) !== null && _a !== void 0 ? _a : console.log, index, fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen); + } + else if (mappedPath === '') { + entry = new StandardOutput((_b = this.printErr) !== null && _b !== void 0 ? _b : console.error, index, fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen); + } + else { + entry = new FileDescriptor(index, fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen); + } + this.fds[index] = entry; + this.used++; + return entry; + } + get(id, base, inheriting) { + if (id >= this.size) { + throw new error_1.WasiError('Invalid fd', types_1.WasiErrno.EBADF); + } + const entry = this.fds[id]; + if (!entry || entry.id !== id) { + throw new error_1.WasiError('Bad file descriptor', types_1.WasiErrno.EBADF); + } + /* Validate that the fd has the necessary rights. */ + if ((~entry.rightsBase & base) !== BigInt(0) || (~entry.rightsInheriting & inheriting) !== BigInt(0)) { + throw new error_1.WasiError('Capabilities insufficient', types_1.WasiErrno.ENOTCAPABLE); + } + return entry; + } + remove(id) { + if (id >= this.size) { + throw new error_1.WasiError('Invalid fd', types_1.WasiErrno.EBADF); + } + const entry = this.fds[id]; + if (!entry || entry.id !== id) { + throw new error_1.WasiError('Bad file descriptor', types_1.WasiErrno.EBADF); + } + this.fds[id] = undefined; + this.used--; + } +} +exports.FileDescriptorTable = FileDescriptorTable; +class SyncTable extends FileDescriptorTable { + constructor(options) { + super(options); + this.fs = options.fs; + } + getFileTypeByFd(fd) { + const stats = this.fs.fstatSync(fd, { bigint: true }); + return toFileType(stats); + } + insertPreopen(fd, mappedPath, realPath) { + const type = this.getFileTypeByFd(fd); + if (type !== types_1.WasiFileType.DIRECTORY) { + throw new error_1.WasiError(`Preopen not dir: ["${mappedPath}", "${realPath}"]`, types_1.WasiErrno.ENOTDIR); + } + const result = (0, rights_1.getRights)(this.stdio, fd, 0, type); + return this.insert(fd, mappedPath, realPath, type, result.base, result.inheriting, 1); + } + renumber(dst, src) { + if (dst === src) + return; + if (dst >= this.size || src >= this.size) { + throw new error_1.WasiError('Invalid fd', types_1.WasiErrno.EBADF); + } + const dstEntry = this.fds[dst]; + const srcEntry = this.fds[src]; + if (!dstEntry || !srcEntry || dstEntry.id !== dst || srcEntry.id !== src) { + throw new error_1.WasiError('Invalid fd', types_1.WasiErrno.EBADF); + } + this.fs.closeSync(dstEntry.fd); + this.fds[dst] = this.fds[src]; + this.fds[dst].id = dst; + this.fds[src] = undefined; + this.used--; + } +} +exports.SyncTable = SyncTable; +class AsyncTable extends FileDescriptorTable { + // eslint-disable-next-line @typescript-eslint/no-useless-constructor + constructor(options) { + super(options); + } + async getFileTypeByFd(fd) { + const stats = await fd.stat({ bigint: true }); + return toFileType(stats); + } + async insertPreopen(fd, mappedPath, realPath) { + const type = await this.getFileTypeByFd(fd); + if (type !== types_1.WasiFileType.DIRECTORY) { + throw new error_1.WasiError(`Preopen not dir: ["${mappedPath}", "${realPath}"]`, types_1.WasiErrno.ENOTDIR); + } + const result = (0, rights_1.getRights)(this.stdio, fd.fd, 0, type); + return this.insert(fd, mappedPath, realPath, type, result.base, result.inheriting, 1); + } + async renumber(dst, src) { + if (dst === src) + return; + if (dst >= this.size || src >= this.size) { + throw new error_1.WasiError('Invalid fd', types_1.WasiErrno.EBADF); + } + const dstEntry = this.fds[dst]; + const srcEntry = this.fds[src]; + if (!dstEntry || !srcEntry || dstEntry.id !== dst || srcEntry.id !== src) { + throw new error_1.WasiError('Invalid fd', types_1.WasiErrno.EBADF); + } + await dstEntry.fd.close(); + this.fds[dst] = this.fds[src]; + this.fds[dst].id = dst; + this.fds[src] = undefined; + this.used--; + } +} +exports.AsyncTable = AsyncTable; +//# sourceMappingURL=fd.js.map \ No newline at end of file diff --git a/node_modules/@tybys/wasm-util/lib/cjs/wasi/fs.js b/node_modules/@tybys/wasm-util/lib/cjs/wasi/fs.js new file mode 100644 index 00000000..f9e16d9c --- /dev/null +++ b/node_modules/@tybys/wasm-util/lib/cjs/wasi/fs.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=fs.js.map \ No newline at end of file diff --git a/node_modules/@tybys/wasm-util/lib/cjs/wasi/index.js b/node_modules/@tybys/wasm-util/lib/cjs/wasi/index.js new file mode 100644 index 00000000..44865ea2 --- /dev/null +++ b/node_modules/@tybys/wasm-util/lib/cjs/wasi/index.js @@ -0,0 +1,192 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createAsyncWASI = exports.WASI = void 0; +const preview1_1 = require("./preview1"); +const util_1 = require("./util"); +// eslint-disable-next-line spaced-comment +const kEmptyObject = /*#__PURE__*/ Object.freeze(/*#__PURE__*/ Object.create(null)); +const kExitCode = Symbol('kExitCode'); +const kSetMemory = Symbol('kSetMemory'); +const kStarted = Symbol('kStarted'); +const kInstance = Symbol('kInstance'); +const kBindingName = Symbol('kBindingName'); +function validateOptions(options) { + var _a; + (0, util_1.validateObject)(options, 'options'); + let _WASI; + if (options.version !== undefined) { + (0, util_1.validateString)(options.version, 'options.version'); + switch (options.version) { + case 'unstable': + _WASI = preview1_1.WASI; + this[kBindingName] = 'wasi_unstable'; + break; + case 'preview1': + _WASI = preview1_1.WASI; + this[kBindingName] = 'wasi_snapshot_preview1'; + break; + default: + throw new TypeError(`unsupported WASI version "${options.version}"`); + } + } + else { + _WASI = preview1_1.WASI; + this[kBindingName] = 'wasi_snapshot_preview1'; + } + if (options.args !== undefined) { + (0, util_1.validateArray)(options.args, 'options.args'); + } + const args = ((_a = options.args) !== null && _a !== void 0 ? _a : []).map(String); + const env = []; + if (options.env !== undefined) { + (0, util_1.validateObject)(options.env, 'options.env'); + Object.entries(options.env).forEach(({ 0: key, 1: value }) => { + if (value !== undefined) { + env.push(`${key}=${value}`); + } + }); + } + const preopens = []; + if (options.preopens !== undefined) { + (0, util_1.validateObject)(options.preopens, 'options.preopens'); + Object.entries(options.preopens).forEach(({ 0: key, 1: value }) => preopens.push({ mappedPath: String(key), realPath: String(value) })); + } + if (preopens.length > 0) { + if (options.fs === undefined) { + throw new Error('filesystem is disabled, can not preopen directory'); + } + try { + (0, util_1.validateObject)(options.fs, 'options.fs'); + } + catch (_) { + throw new TypeError('Node.js fs like implementation is not provided'); + } + } + // if (options.filesystem !== undefined) { + // validateObject(options.filesystem, 'options.filesystem') + // validateString(options.filesystem.type, 'options.filesystem.type') + // if (options.filesystem.type !== 'memfs' && options.filesystem.type !== 'file-system-access-api') { + // throw new Error(`Filesystem type ${(options.filesystem as any).type as string} is not supported, only "memfs" and "file-system-access-api" is supported currently`) + // } + // try { + // validateObject(options.filesystem.fs, 'options.filesystem.fs') + // } catch (_) { + // throw new Error('Node.js fs like implementation is not provided') + // } + // } + if (options.print !== undefined) + (0, util_1.validateFunction)(options.print, 'options.print'); + if (options.printErr !== undefined) + (0, util_1.validateFunction)(options.printErr, 'options.printErr'); + if (options.returnOnExit !== undefined) { + (0, util_1.validateBoolean)(options.returnOnExit, 'options.returnOnExit'); + } + // const { stdin = 0, stdout = 1, stderr = 2 } = options + // validateInt32(stdin, 'options.stdin', 0) + // validateInt32(stdout, 'options.stdout', 0) + // validateInt32(stderr, 'options.stderr', 0) + // const stdio = [stdin, stdout, stderr] as const + const stdio = [0, 1, 2]; + return { + args, + env, + preopens, + stdio, + _WASI + }; +} +function initWASI(setMemory, wrap) { + this[kSetMemory] = setMemory; + this.wasiImport = wrap; + this[kStarted] = false; + this[kExitCode] = 0; + this[kInstance] = undefined; +} +/** @public */ +class WASI { + constructor(options = kEmptyObject) { + const { args, env, preopens, stdio, _WASI } = validateOptions.call(this, options); + const wrap = _WASI.createSync(args, env, preopens, stdio, options.fs, options.print, options.printErr); + const setMemory = wrap._setMemory; + delete wrap._setMemory; + initWASI.call(this, setMemory, wrap); + if (options.returnOnExit) { + wrap.proc_exit = wasiReturnOnProcExit.bind(this); + } + } + finalizeBindings(instance, _a) { + var _b; + var { memory = (_b = instance === null || instance === void 0 ? void 0 : instance.exports) === null || _b === void 0 ? void 0 : _b.memory } = _a === void 0 ? {} : _a; + if (this[kStarted]) { + throw new Error('WASI instance has already started'); + } + (0, util_1.validateObject)(instance, 'instance'); + (0, util_1.validateObject)(instance.exports, 'instance.exports'); + this[kSetMemory](memory); + this[kInstance] = instance; + this[kStarted] = true; + } + // Must not export _initialize, must export _start + start(instance) { + this.finalizeBindings(instance); + const { _start, _initialize } = this[kInstance].exports; + (0, util_1.validateFunction)(_start, 'instance.exports._start'); + (0, util_1.validateUndefined)(_initialize, 'instance.exports._initialize'); + let ret; + try { + ret = _start(); + } + catch (err) { + if (err !== kExitCode) { + throw err; + } + } + if (ret instanceof Promise) { + return ret.then(() => this[kExitCode], (err) => { + if (err !== kExitCode) { + throw err; + } + return this[kExitCode]; + }); + } + return this[kExitCode]; + } + // Must not export _start, may optionally export _initialize + initialize(instance) { + this.finalizeBindings(instance); + const { _start, _initialize } = this[kInstance].exports; + (0, util_1.validateUndefined)(_start, 'instance.exports._start'); + if (_initialize !== undefined) { + (0, util_1.validateFunction)(_initialize, 'instance.exports._initialize'); + return _initialize(); + } + } + getImportObject() { + return { [this[kBindingName]]: this.wasiImport }; + } +} +exports.WASI = WASI; +function wasiReturnOnProcExit(rval) { + this[kExitCode] = rval; + // eslint-disable-next-line @typescript-eslint/no-throw-literal + throw kExitCode; +} +/** @public */ +async function createAsyncWASI(options = kEmptyObject) { + const _this = Object.create(WASI.prototype); + const { args, env, preopens, stdio, _WASI } = validateOptions.call(_this, options); + if (options.asyncify !== undefined) { + (0, util_1.validateObject)(options.asyncify, 'options.asyncify'); + (0, util_1.validateFunction)(options.asyncify.wrapImportFunction, 'options.asyncify.wrapImportFunction'); + } + const wrap = await _WASI.createAsync(args, env, preopens, stdio, options.fs, options.print, options.printErr, options.asyncify); + const setMemory = wrap._setMemory; + delete wrap._setMemory; + initWASI.call(_this, setMemory, wrap); + if (options.returnOnExit) { + wrap.proc_exit = wasiReturnOnProcExit.bind(_this); + } + return _this; +} +exports.createAsyncWASI = createAsyncWASI; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/@tybys/wasm-util/lib/cjs/wasi/path.js b/node_modules/@tybys/wasm-util/lib/cjs/wasi/path.js new file mode 100644 index 00000000..bfaf3342 --- /dev/null +++ b/node_modules/@tybys/wasm-util/lib/cjs/wasi/path.js @@ -0,0 +1,174 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.relative = exports.resolve = void 0; +const util_1 = require("./util"); +const CHAR_DOT = 46; /* . */ +const CHAR_FORWARD_SLASH = 47; /* / */ +function isPosixPathSeparator(code) { + return code === CHAR_FORWARD_SLASH; +} +function normalizeString(path, allowAboveRoot, separator, isPathSeparator) { + let res = ''; + let lastSegmentLength = 0; + let lastSlash = -1; + let dots = 0; + let code = 0; + for (let i = 0; i <= path.length; ++i) { + if (i < path.length) { + code = path.charCodeAt(i); + } + else if (isPathSeparator(code)) { + break; + } + else { + code = CHAR_FORWARD_SLASH; + } + if (isPathSeparator(code)) { + if (lastSlash === i - 1 || dots === 1) { + // NOOP + } + else if (dots === 2) { + if (res.length < 2 || lastSegmentLength !== 2 || + res.charCodeAt(res.length - 1) !== CHAR_DOT || + res.charCodeAt(res.length - 2) !== CHAR_DOT) { + if (res.length > 2) { + const lastSlashIndex = res.indexOf(separator); + if (lastSlashIndex === -1) { + res = ''; + lastSegmentLength = 0; + } + else { + res = res.slice(0, lastSlashIndex); + lastSegmentLength = + res.length - 1 - res.indexOf(separator); + } + lastSlash = i; + dots = 0; + continue; + } + else if (res.length !== 0) { + res = ''; + lastSegmentLength = 0; + lastSlash = i; + dots = 0; + continue; + } + } + if (allowAboveRoot) { + res += res.length > 0 ? `${separator}..` : '..'; + lastSegmentLength = 2; + } + } + else { + if (res.length > 0) { + res += `${separator}${path.slice(lastSlash + 1, i)}`; + } + else { + res = path.slice(lastSlash + 1, i); + } + lastSegmentLength = i - lastSlash - 1; + } + lastSlash = i; + dots = 0; + } + else if (code === CHAR_DOT && dots !== -1) { + ++dots; + } + else { + dots = -1; + } + } + return res; +} +function resolve(...args) { + let resolvedPath = ''; + let resolvedAbsolute = false; + for (let i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) { + const path = i >= 0 ? args[i] : '/'; + (0, util_1.validateString)(path, 'path'); + // Skip empty entries + if (path.length === 0) { + continue; + } + resolvedPath = `${path}/${resolvedPath}`; + resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + } + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + // Normalize the path + resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, '/', isPosixPathSeparator); + if (resolvedAbsolute) { + return `/${resolvedPath}`; + } + return resolvedPath.length > 0 ? resolvedPath : '.'; +} +exports.resolve = resolve; +function relative(from, to) { + (0, util_1.validateString)(from, 'from'); + (0, util_1.validateString)(to, 'to'); + if (from === to) + return ''; + // Trim leading forward slashes. + from = resolve(from); + to = resolve(to); + if (from === to) + return ''; + const fromStart = 1; + const fromEnd = from.length; + const fromLen = fromEnd - fromStart; + const toStart = 1; + const toLen = to.length - toStart; + // Compare paths to find the longest common path from root + const length = (fromLen < toLen ? fromLen : toLen); + let lastCommonSep = -1; + let i = 0; + for (; i < length; i++) { + const fromCode = from.charCodeAt(fromStart + i); + if (fromCode !== to.charCodeAt(toStart + i)) { + break; + } + else if (fromCode === CHAR_FORWARD_SLASH) { + lastCommonSep = i; + } + } + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === CHAR_FORWARD_SLASH) { + // We get here if `from` is the exact base path for `to`. + // For example: from='/foo/bar'; to='/foo/bar/baz' + return to.slice(toStart + i + 1); + } + if (i === 0) { + // We get here if `from` is the root + // For example: from='/'; to='/foo' + return to.slice(toStart + i); + } + } + else if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) { + // We get here if `to` is the exact base path for `from`. + // For example: from='/foo/bar/baz'; to='/foo/bar' + lastCommonSep = i; + } + else if (i === 0) { + // We get here if `to` is the root. + // For example: from='/foo/bar'; to='/' + lastCommonSep = 0; + } + } + } + let out = ''; + // Generate the relative path based on the path difference between `to` + // and `from`. + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || + from.charCodeAt(i) === CHAR_FORWARD_SLASH) { + out += out.length === 0 ? '..' : '/..'; + } + } + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts. + return `${out}${to.slice(toStart + lastCommonSep)}`; +} +exports.relative = relative; +//# sourceMappingURL=path.js.map \ No newline at end of file diff --git a/node_modules/@tybys/wasm-util/lib/cjs/wasi/preview1.js b/node_modules/@tybys/wasm-util/lib/cjs/wasi/preview1.js new file mode 100644 index 00000000..c59c36b6 --- /dev/null +++ b/node_modules/@tybys/wasm-util/lib/cjs/wasi/preview1.js @@ -0,0 +1,1566 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WASI = void 0; +const webassembly_1 = require("../webassembly"); +const path_1 = require("./path"); +const types_1 = require("./types"); +const fd_1 = require("./fd"); +const error_1 = require("./error"); +const util_1 = require("./util"); +const rights_1 = require("./rights"); +const memory_1 = require("../memory"); +const jspi_1 = require("../jspi"); +function copyMemory(targets, src) { + if (targets.length === 0 || src.length === 0) + return 0; + let copied = 0; + let left = src.length - copied; + for (let i = 0; i < targets.length; ++i) { + const target = targets[i]; + if (left < target.length) { + target.set(src.subarray(copied, copied + left), 0); + copied += left; + left = 0; + return copied; + } + target.set(src.subarray(copied, copied + target.length), 0); + copied += target.length; + left -= target.length; + } + return copied; +} +const _memory = new WeakMap(); +const _wasi = new WeakMap(); +const _fs = new WeakMap(); +function getMemory(wasi) { + return _memory.get(wasi); +} +function getFs(wasi) { + const fs = _fs.get(wasi); + if (!fs) + throw new Error('filesystem is unavailable'); + return fs; +} +function handleError(err) { + if (err instanceof error_1.WasiError) { + if (process.env.NODE_ENV !== 'production') { + console.warn(err); + } + return err.errno; + } + switch (err.code) { + case 'ENOENT': return types_1.WasiErrno.ENOENT; + case 'EBADF': return types_1.WasiErrno.EBADF; + case 'EINVAL': return types_1.WasiErrno.EINVAL; + case 'EPERM': return types_1.WasiErrno.EPERM; + case 'EPROTO': return types_1.WasiErrno.EPROTO; + case 'EEXIST': return types_1.WasiErrno.EEXIST; + case 'ENOTDIR': return types_1.WasiErrno.ENOTDIR; + case 'EMFILE': return types_1.WasiErrno.EMFILE; + case 'EACCES': return types_1.WasiErrno.EACCES; + case 'EISDIR': return types_1.WasiErrno.EISDIR; + case 'ENOTEMPTY': return types_1.WasiErrno.ENOTEMPTY; + case 'ENOSYS': return types_1.WasiErrno.ENOSYS; + } + throw err; +} +function defineName(name, f) { + Object.defineProperty(f, 'name', { value: name }); + return f; +} +function tryCall(f, wasi, args) { + let r; + try { + r = f.apply(wasi, args); + } + catch (err) { + return handleError(err); + } + if ((0, util_1.isPromiseLike)(r)) { + return r.then(_ => _, handleError); + } + return r; +} +function syscallWrap(self, name, f) { + let debug = false; + const NODE_DEBUG_NATIVE = (() => { + try { + return process.env.NODE_DEBUG_NATIVE; + } + catch (_) { + return undefined; + } + })(); + if (typeof NODE_DEBUG_NATIVE === 'string' && NODE_DEBUG_NATIVE.split(',').includes('wasi')) { + debug = true; + } + return debug + ? defineName(name, function () { + const args = Array.prototype.slice.call(arguments); + let debugArgs = [`${name}(${Array.from({ length: arguments.length }).map(() => '%d').join(', ')})`]; + debugArgs = debugArgs.concat(args); + console.debug.apply(console, debugArgs); + return tryCall(f, self, args); + }) + : defineName(name, function () { + return tryCall(f, self, arguments); + }); +} +function resolvePathSync(fs, fileDescriptor, path, flags) { + let resolvedPath = (0, path_1.resolve)(fileDescriptor.realPath, path); + if ((flags & 1) === 1) { + try { + resolvedPath = fs.readlinkSync(resolvedPath); + } + catch (err) { + if (err.code !== 'EINVAL' && err.code !== 'ENOENT') { + throw err; + } + } + } + return resolvedPath; +} +async function resolvePathAsync(fs, fileDescriptor, path, flags) { + let resolvedPath = (0, path_1.resolve)(fileDescriptor.realPath, path); + if ((flags & 1) === 1) { + try { + resolvedPath = await fs.promises.readlink(resolvedPath); + } + catch (err) { + if (err.code !== 'EINVAL' && err.code !== 'ENOENT') { + throw err; + } + } + } + return resolvedPath; +} +// eslint-disable-next-line spaced-comment +const encoder = /*#__PURE__*/ new TextEncoder(); +// eslint-disable-next-line spaced-comment +const decoder = /*#__PURE__*/ new TextDecoder(); +const INT64_MAX = (BigInt(1) << BigInt(63)) - BigInt(1); +function readStdin() { + const value = window.prompt(); + if (value === null) + return new Uint8Array(); + const buffer = new TextEncoder().encode(value + '\n'); + return buffer; +} +function validateFstFlagsOrReturn(flags) { + return (Boolean((flags) & ~(types_1.WasiFstFlag.SET_ATIM | types_1.WasiFstFlag.SET_ATIM_NOW | + types_1.WasiFstFlag.SET_MTIM | types_1.WasiFstFlag.SET_MTIM_NOW)) || + ((flags) & (types_1.WasiFstFlag.SET_ATIM | types_1.WasiFstFlag.SET_ATIM_NOW)) === + (types_1.WasiFstFlag.SET_ATIM | types_1.WasiFstFlag.SET_ATIM_NOW) || + ((flags) & (types_1.WasiFstFlag.SET_MTIM | types_1.WasiFstFlag.SET_MTIM_NOW)) === + (types_1.WasiFstFlag.SET_MTIM | types_1.WasiFstFlag.SET_MTIM_NOW)); +} +class WASI { + constructor(args, env, fds, asyncFs, fs, asyncify) { + this.args_get = syscallWrap(this, 'args_get', function (argv, argv_buf) { + argv = Number(argv); + argv_buf = Number(argv_buf); + if (argv === 0 || argv_buf === 0) { + return types_1.WasiErrno.EINVAL; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const args = wasi.args; + for (let i = 0; i < args.length; ++i) { + const arg = args[i]; + view.setInt32(argv, argv_buf, true); + argv += 4; + const data = encoder.encode(arg + '\0'); + HEAPU8.set(data, argv_buf); + argv_buf += data.length; + } + return types_1.WasiErrno.ESUCCESS; + }); + this.args_sizes_get = syscallWrap(this, 'args_sizes_get', function (argc, argv_buf_size) { + argc = Number(argc); + argv_buf_size = Number(argv_buf_size); + if (argc === 0 || argv_buf_size === 0) { + return types_1.WasiErrno.EINVAL; + } + const { view } = getMemory(this); + const wasi = _wasi.get(this); + const args = wasi.args; + view.setUint32(argc, args.length, true); + view.setUint32(argv_buf_size, encoder.encode(args.join('\0') + '\0').length, true); + return types_1.WasiErrno.ESUCCESS; + }); + this.environ_get = syscallWrap(this, 'environ_get', function (environ, environ_buf) { + environ = Number(environ); + environ_buf = Number(environ_buf); + if (environ === 0 || environ_buf === 0) { + return types_1.WasiErrno.EINVAL; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const env = wasi.env; + for (let i = 0; i < env.length; ++i) { + const pair = env[i]; + view.setInt32(environ, environ_buf, true); + environ += 4; + const data = encoder.encode(pair + '\0'); + HEAPU8.set(data, environ_buf); + environ_buf += data.length; + } + return types_1.WasiErrno.ESUCCESS; + }); + this.environ_sizes_get = syscallWrap(this, 'environ_sizes_get', function (len, buflen) { + len = Number(len); + buflen = Number(buflen); + if (len === 0 || buflen === 0) { + return types_1.WasiErrno.EINVAL; + } + const { view } = getMemory(this); + const wasi = _wasi.get(this); + view.setUint32(len, wasi.env.length, true); + view.setUint32(buflen, encoder.encode(wasi.env.join('\0') + '\0').length, true); + return types_1.WasiErrno.ESUCCESS; + }); + this.clock_res_get = syscallWrap(this, 'clock_res_get', function (id, resolution) { + resolution = Number(resolution); + if (resolution === 0) { + return types_1.WasiErrno.EINVAL; + } + const { view } = getMemory(this); + switch (id) { + case types_1.WasiClockid.REALTIME: + view.setBigUint64(resolution, BigInt(1000000), true); + return types_1.WasiErrno.ESUCCESS; + case types_1.WasiClockid.MONOTONIC: + case types_1.WasiClockid.PROCESS_CPUTIME_ID: + case types_1.WasiClockid.THREAD_CPUTIME_ID: + view.setBigUint64(resolution, BigInt(1000), true); + return types_1.WasiErrno.ESUCCESS; + default: return types_1.WasiErrno.EINVAL; + } + }); + this.clock_time_get = syscallWrap(this, 'clock_time_get', function (id, _percision, time) { + time = Number(time); + if (time === 0) { + return types_1.WasiErrno.EINVAL; + } + const { view } = getMemory(this); + switch (id) { + case types_1.WasiClockid.REALTIME: + view.setBigUint64(time, BigInt(Date.now()) * BigInt(1000000), true); + return types_1.WasiErrno.ESUCCESS; + case types_1.WasiClockid.MONOTONIC: + case types_1.WasiClockid.PROCESS_CPUTIME_ID: + case types_1.WasiClockid.THREAD_CPUTIME_ID: { + const t = performance.now() / 1000; + const s = Math.trunc(t); + const ms = Math.floor((t - s) * 1000); + const result = BigInt(s) * BigInt(1000000000) + BigInt(ms) * BigInt(1000000); + view.setBigUint64(time, result, true); + return types_1.WasiErrno.ESUCCESS; + } + default: return types_1.WasiErrno.EINVAL; + } + }); + this.fd_advise = syscallWrap(this, 'fd_advise', function (_fd, _offset, _len, _advice) { + return types_1.WasiErrno.ENOSYS; + }); + this.fd_fdstat_get = syscallWrap(this, 'fd_fdstat_get', function (fd, fdstat) { + fdstat = Number(fdstat); + if (fdstat === 0) { + return types_1.WasiErrno.EINVAL; + } + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); + const { view } = getMemory(this); + view.setUint16(fdstat, fileDescriptor.type, true); + view.setUint16(fdstat + 2, 0, true); + view.setBigUint64(fdstat + 8, fileDescriptor.rightsBase, true); + view.setBigUint64(fdstat + 16, fileDescriptor.rightsInheriting, true); + return types_1.WasiErrno.ESUCCESS; + }); + this.fd_fdstat_set_flags = syscallWrap(this, 'fd_fdstat_set_flags', function (_fd, _flags) { + return types_1.WasiErrno.ENOSYS; + }); + this.fd_fdstat_set_rights = syscallWrap(this, 'fd_fdstat_set_rights', function (fd, rightsBase, rightsInheriting) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); + if ((rightsBase | fileDescriptor.rightsBase) > fileDescriptor.rightsBase) { + return types_1.WasiErrno.ENOTCAPABLE; + } + if ((rightsInheriting | fileDescriptor.rightsInheriting) > + fileDescriptor.rightsInheriting) { + return types_1.WasiErrno.ENOTCAPABLE; + } + fileDescriptor.rightsBase = rightsBase; + fileDescriptor.rightsInheriting = rightsInheriting; + return types_1.WasiErrno.ESUCCESS; + }); + this.fd_prestat_get = syscallWrap(this, 'fd_prestat_get', function (fd, prestat) { + prestat = Number(prestat); + if (prestat === 0) { + return types_1.WasiErrno.EINVAL; + } + const wasi = _wasi.get(this); + let fileDescriptor; + try { + fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); + } + catch (err) { + if (err instanceof error_1.WasiError) + return err.errno; + throw err; + } + if (fileDescriptor.preopen !== 1) + return types_1.WasiErrno.EINVAL; + const { view } = getMemory(this); + // preopen type is dir(0) + view.setUint32(prestat, 0, true); + view.setUint32(prestat + 4, encoder.encode(fileDescriptor.path).length, true); + return types_1.WasiErrno.ESUCCESS; + }); + this.fd_prestat_dir_name = syscallWrap(this, 'fd_prestat_dir_name', function (fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return types_1.WasiErrno.EINVAL; + } + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); + if (fileDescriptor.preopen !== 1) + return types_1.WasiErrno.EBADF; + const buffer = encoder.encode(fileDescriptor.path); + const size = buffer.length; + if (size > path_len) + return types_1.WasiErrno.ENOBUFS; + const { HEAPU8 } = getMemory(this); + HEAPU8.set(buffer, path); + return types_1.WasiErrno.ESUCCESS; + }); + this.fd_seek = syscallWrap(this, 'fd_seek', function (fd, offset, whence, newOffset) { + newOffset = Number(newOffset); + if (newOffset === 0) { + return types_1.WasiErrno.EINVAL; + } + if (fd === 0 || fd === 1 || fd === 2) + return types_1.WasiErrno.ESUCCESS; + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_SEEK, BigInt(0)); + const r = fileDescriptor.seek(offset, whence); + const { view } = getMemory(this); + view.setBigUint64(newOffset, r, true); + return types_1.WasiErrno.ESUCCESS; + }); + this.fd_tell = syscallWrap(this, 'fd_tell', function (fd, offset) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_TELL, BigInt(0)); + const pos = BigInt(fileDescriptor.pos); + const { view } = getMemory(this); + view.setBigUint64(Number(offset), pos, true); + return types_1.WasiErrno.ESUCCESS; + }); + this.poll_oneoff = syscallWrap(this, 'poll_oneoff', function (in_ptr, out_ptr, nsubscriptions, nevents) { + in_ptr = Number(in_ptr); + out_ptr = Number(out_ptr); + nevents = Number(nevents); + nsubscriptions = Number(nsubscriptions); + nsubscriptions = nsubscriptions >>> 0; + if (in_ptr === 0 || out_ptr === 0 || nsubscriptions === 0 || nevents === 0) { + return types_1.WasiErrno.EINVAL; + } + const { view } = getMemory(this); + view.setUint32(nevents, 0, true); + let i = 0; + let timer_userdata = BigInt(0); + let cur_timeout = BigInt(0); + let has_timeout = 0; + let min_timeout = BigInt(0); + let sub; + const subscriptions = Array(nsubscriptions); + for (i = 0; i < nsubscriptions; i++) { + sub = in_ptr + i * 48; + const userdata = view.getBigUint64(sub, true); + const type = view.getUint8(sub + 8); + const clockIdOrFd = view.getUint32(sub + 16, true); + const timeout = view.getBigUint64(sub + 24, true); + const precision = view.getBigUint64(sub + 32, true); + const flags = view.getUint16(sub + 40, true); + subscriptions[i] = { + userdata, + type, + u: { + clock: { + clock_id: clockIdOrFd, + timeout, + precision, + flags + }, + fd_readwrite: { + fd: clockIdOrFd + } + } + }; + } + const fdevents = []; + for (i = 0; i < nsubscriptions; i++) { + sub = subscriptions[i]; + switch (sub.type) { + case types_1.WasiEventType.CLOCK: { + if (sub.u.clock.flags === types_1.WasiSubclockflags.ABSTIME) { + /* Convert absolute time to relative delay. */ + const now = BigInt(Date.now()) * BigInt(1000000); + cur_timeout = sub.u.clock.timeout - now; + } + else { + cur_timeout = sub.u.clock.timeout; + } + if (has_timeout === 0 || cur_timeout < min_timeout) { + min_timeout = cur_timeout; + timer_userdata = sub.userdata; + has_timeout = 1; + } + break; + } + case types_1.WasiEventType.FD_READ: + case types_1.WasiEventType.FD_WRITE: + fdevents.push(sub); + break; + default: return types_1.WasiErrno.EINVAL; + } + } + if (fdevents.length > 0) { + for (i = 0; i < fdevents.length; i++) { + const fdevent = fdevents[i]; + const event = out_ptr + 32 * i; + view.setBigUint64(event, fdevent.userdata, true); + view.setUint32(event + 8, types_1.WasiErrno.ENOSYS, true); + view.setUint32(event + 12, fdevent.type, true); + view.setBigUint64(event + 16, BigInt(0), true); + view.setUint16(event + 24, 0, true); + view.setUint32(nevents, 1, true); + } + view.setUint32(nevents, fdevents.length, true); + return types_1.WasiErrno.ESUCCESS; + } + if (has_timeout) { + const delay = Number(min_timeout / BigInt(1000000)); + // if (isMainThread || typeof SharedArrayBuffer !== 'function') { + (0, util_1.sleepBreakIf)(delay, () => false); + // } else { + // const buf = new SharedArrayBuffer(4) + // const arr = new Int32Array(buf) + // postMsg({ + // __tybys_wasm_util_wasi__: { + // type: 'set-timeout', + // payload: { + // buffer: buf, + // delay + // } + // } + // }) + // Atomics.wait(arr, 0, 0) + // } + const event = out_ptr; + view.setBigUint64(event, timer_userdata, true); + view.setUint32(event + 8, types_1.WasiErrno.ESUCCESS, true); + view.setUint32(event + 12, types_1.WasiEventType.CLOCK, true); + view.setUint32(nevents, 1, true); + } + return types_1.WasiErrno.ESUCCESS; + }); + this.proc_exit = syscallWrap(this, 'proc_exit', function (rval) { + if ((typeof process === 'object') && (process !== null) && (typeof process.exit === 'function')) { + process.exit(rval); + } + return types_1.WasiErrno.ESUCCESS; + }); + this.proc_raise = syscallWrap(this, 'proc_raise', function (_sig) { + return types_1.WasiErrno.ENOSYS; + }); + this.sched_yield = syscallWrap(this, 'sched_yield', function () { + return types_1.WasiErrno.ESUCCESS; + }); + this.random_get = typeof crypto !== 'undefined' && typeof crypto.getRandomValues === 'function' + ? syscallWrap(this, 'random_get', function (buf, buf_len) { + buf = Number(buf); + if (buf === 0) { + return types_1.WasiErrno.EINVAL; + } + buf_len = Number(buf_len); + const { HEAPU8, view } = getMemory(this); + if ((typeof SharedArrayBuffer === 'function' && HEAPU8.buffer instanceof SharedArrayBuffer) || + (Object.prototype.toString.call(HEAPU8.buffer) === '[object SharedArrayBuffer]')) { + for (let i = buf; i < buf + buf_len; ++i) { + view.setUint8(i, Math.floor(Math.random() * 256)); + } + return types_1.WasiErrno.ESUCCESS; + } + let pos; + const stride = 65536; + for (pos = 0; pos + stride < buf_len; pos += stride) { + crypto.getRandomValues(HEAPU8.subarray(buf + pos, buf + pos + stride)); + } + crypto.getRandomValues(HEAPU8.subarray(buf + pos, buf + buf_len)); + return types_1.WasiErrno.ESUCCESS; + }) + : syscallWrap(this, 'random_get', function (buf, buf_len) { + buf = Number(buf); + if (buf === 0) { + return types_1.WasiErrno.EINVAL; + } + buf_len = Number(buf_len); + const { view } = getMemory(this); + for (let i = buf; i < buf + buf_len; ++i) { + view.setUint8(i, Math.floor(Math.random() * 256)); + } + return types_1.WasiErrno.ESUCCESS; + }); + this.sock_recv = syscallWrap(this, 'sock_recv', function () { + return types_1.WasiErrno.ENOTSUP; + }); + this.sock_send = syscallWrap(this, 'sock_send', function () { + return types_1.WasiErrno.ENOTSUP; + }); + this.sock_shutdown = syscallWrap(this, 'sock_shutdown', function () { + return types_1.WasiErrno.ENOTSUP; + }); + this.sock_accept = syscallWrap(this, 'sock_accept', function () { + return types_1.WasiErrno.ENOTSUP; + }); + _wasi.set(this, { + fds, + args, + env + }); + if (fs) + _fs.set(this, fs); + // eslint-disable-next-line @typescript-eslint/no-this-alias + const _this = this; + function defineImport(name, syncVersion, asyncVersion, parameterType, returnType) { + if (asyncFs) { + if (asyncify) { + _this[name] = asyncify.wrapImportFunction(syscallWrap(_this, name, asyncVersion)); + } + else { + _this[name] = (0, jspi_1.wrapAsyncImport)(syscallWrap(_this, name, asyncVersion), parameterType, returnType); + } + } + else { + _this[name] = syscallWrap(_this, name, syncVersion); + } + } + defineImport('fd_allocate', function fd_allocate(fd, offset, len) { + const wasi = _wasi.get(this); + const fs = getFs(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_ALLOCATE, BigInt(0)); + const stat = fs.fstatSync(fileDescriptor.fd, { bigint: true }); + if (stat.size < offset + len) { + fs.ftruncateSync(fileDescriptor.fd, Number(offset + len)); + } + return types_1.WasiErrno.ESUCCESS; + }, async function fd_allocate(fd, offset, len) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_ALLOCATE, BigInt(0)); + const h = fileDescriptor.fd; + const stat = await h.stat({ bigint: true }); + if (stat.size < offset + len) { + await h.truncate(Number(offset + len)); + } + return types_1.WasiErrno.ESUCCESS; + }, ['i32', 'i64', 'f64'], ['i32']); + defineImport('fd_close', function fd_close(fd) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); + const fs = getFs(this); + fs.closeSync(fileDescriptor.fd); + wasi.fds.remove(fd); + return types_1.WasiErrno.ESUCCESS; + }, async function fd_close(fd) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); + await fileDescriptor.fd.close(); + wasi.fds.remove(fd); + return types_1.WasiErrno.ESUCCESS; + }, ['i32'], ['i32']); + defineImport('fd_datasync', function fd_datasync(fd) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_DATASYNC, BigInt(0)); + const fs = getFs(this); + fs.fdatasyncSync(fileDescriptor.fd); + return types_1.WasiErrno.ESUCCESS; + }, async function fd_datasync(fd) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_DATASYNC, BigInt(0)); + await fileDescriptor.fd.datasync(); + return types_1.WasiErrno.ESUCCESS; + }, ['i32'], ['i32']); + defineImport('fd_filestat_get', function fd_filestat_get(fd, buf) { + buf = Number(buf); + if (buf === 0) + return types_1.WasiErrno.EINVAL; + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_FILESTAT_GET, BigInt(0)); + const fs = getFs(this); + const stat = fs.fstatSync(fileDescriptor.fd, { bigint: true }); + const { view } = getMemory(this); + (0, fd_1.toFileStat)(view, buf, stat); + return types_1.WasiErrno.ESUCCESS; + }, async function fd_filestat_get(fd, buf) { + buf = Number(buf); + if (buf === 0) + return types_1.WasiErrno.EINVAL; + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_FILESTAT_GET, BigInt(0)); + const h = fileDescriptor.fd; + const stat = await h.stat({ bigint: true }); + const { view } = getMemory(this); + (0, fd_1.toFileStat)(view, buf, stat); + return types_1.WasiErrno.ESUCCESS; + }, ['i32', 'i32'], ['i32']); + defineImport('fd_filestat_set_size', function fd_filestat_set_size(fd, size) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_FILESTAT_SET_SIZE, BigInt(0)); + const fs = getFs(this); + fs.ftruncateSync(fileDescriptor.fd, Number(size)); + return types_1.WasiErrno.ESUCCESS; + }, async function fd_filestat_set_size(fd, size) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_FILESTAT_SET_SIZE, BigInt(0)); + const h = fileDescriptor.fd; + await h.truncate(Number(size)); + return types_1.WasiErrno.ESUCCESS; + }, ['i32', 'i64'], ['i32']); + function fdFilestatGetTimes(fd, atim, mtim, flags) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_FILESTAT_SET_TIMES, BigInt(0)); + if ((flags & types_1.WasiFstFlag.SET_ATIM_NOW) === types_1.WasiFstFlag.SET_ATIM_NOW) { + atim = BigInt(Date.now() * 1000000); + } + if ((flags & types_1.WasiFstFlag.SET_MTIM_NOW) === types_1.WasiFstFlag.SET_MTIM_NOW) { + mtim = BigInt(Date.now() * 1000000); + } + return { fileDescriptor, atim, mtim }; + } + defineImport('fd_filestat_set_times', function fd_filestat_set_times(fd, atim, mtim, flags) { + if (validateFstFlagsOrReturn(flags)) { + return types_1.WasiErrno.EINVAL; + } + const { fileDescriptor, atim: atimRes, mtim: mtimRes } = fdFilestatGetTimes.call(this, fd, atim, mtim, flags); + const fs = getFs(this); + fs.futimesSync(fileDescriptor.fd, Number(atimRes), Number(mtimRes)); + return types_1.WasiErrno.ESUCCESS; + }, async function fd_filestat_set_times(fd, atim, mtim, flags) { + if (validateFstFlagsOrReturn(flags)) { + return types_1.WasiErrno.EINVAL; + } + const { fileDescriptor, atim: atimRes, mtim: mtimRes } = fdFilestatGetTimes.call(this, fd, atim, mtim, flags); + const h = fileDescriptor.fd; + await h.utimes(Number(atimRes), Number(mtimRes)); + return types_1.WasiErrno.ESUCCESS; + }, ['i32', 'i64', 'i64', 'i32'], ['i32']); + defineImport('fd_pread', function fd_pread(fd, iovs, iovslen, offset, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { + return types_1.WasiErrno.EINVAL; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_READ | types_1.WasiRights.FD_SEEK, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return types_1.WasiErrno.ESUCCESS; + } + let totalSize = 0; + const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + totalSize += bufLen; + return HEAPU8.subarray(buf, buf + bufLen); + }); + let nread = 0; + const buffer = (() => { + try { + return new Uint8Array(new SharedArrayBuffer(totalSize)); + } + catch (_) { + return new Uint8Array(totalSize); + } + })(); + buffer._isBuffer = true; + const fs = getFs(this); + const bytesRead = fs.readSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(offset)); + nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; + view.setUint32(size, nread, true); + return types_1.WasiErrno.ESUCCESS; + }, async function (fd, iovs, iovslen, offset, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { + return types_1.WasiErrno.EINVAL; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_READ | types_1.WasiRights.FD_SEEK, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return types_1.WasiErrno.ESUCCESS; + } + let totalSize = 0; + const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + totalSize += bufLen; + return HEAPU8.subarray(buf, buf + bufLen); + }); + let nread = 0; + const buffer = new Uint8Array(totalSize); + buffer._isBuffer = true; + const { bytesRead } = await fileDescriptor.fd.read(buffer, 0, buffer.length, Number(offset)); + nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; + view.setUint32(size, nread, true); + return types_1.WasiErrno.ESUCCESS; + }, ['i32', 'i32', 'i32', 'i64', 'i32'], ['i32']); + defineImport('fd_pwrite', function fd_pwrite(fd, iovs, iovslen, offset, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { + return types_1.WasiErrno.EINVAL; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_WRITE | types_1.WasiRights.FD_SEEK, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return types_1.WasiErrno.ESUCCESS; + } + const buffer = (0, fd_1.concatBuffer)(Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + return HEAPU8.subarray(buf, buf + bufLen); + })); + const fs = getFs(this); + const nwritten = fs.writeSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(offset)); + view.setUint32(size, nwritten, true); + return types_1.WasiErrno.ESUCCESS; + }, async function fd_pwrite(fd, iovs, iovslen, offset, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { + return types_1.WasiErrno.EINVAL; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_WRITE | types_1.WasiRights.FD_SEEK, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return types_1.WasiErrno.ESUCCESS; + } + const buffer = (0, fd_1.concatBuffer)(Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + return HEAPU8.subarray(buf, buf + bufLen); + })); + const { bytesWritten } = await fileDescriptor.fd.write(buffer, 0, buffer.length, Number(offset)); + view.setUint32(size, bytesWritten, true); + return types_1.WasiErrno.ESUCCESS; + }, ['i32', 'i32', 'i32', 'i64', 'i32'], ['i32']); + defineImport('fd_read', function fd_read(fd, iovs, iovslen, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0) { + return types_1.WasiErrno.EINVAL; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_READ, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return types_1.WasiErrno.ESUCCESS; + } + let totalSize = 0; + const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + totalSize += bufLen; + return HEAPU8.subarray(buf, buf + bufLen); + }); + let buffer; + let nread = 0; + if (fd === 0) { + if (typeof window === 'undefined' || typeof window.prompt !== 'function') { + return types_1.WasiErrno.ENOTSUP; + } + buffer = readStdin(); + nread = buffer ? copyMemory(ioVecs, buffer) : 0; + } + else { + buffer = (() => { + try { + return new Uint8Array(new SharedArrayBuffer(totalSize)); + } + catch (_) { + return new Uint8Array(totalSize); + } + })(); + buffer._isBuffer = true; + const fs = getFs(this); + const bytesRead = fs.readSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(fileDescriptor.pos)); + nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; + fileDescriptor.pos += BigInt(nread); + } + view.setUint32(size, nread, true); + return types_1.WasiErrno.ESUCCESS; + }, async function fd_read(fd, iovs, iovslen, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0) { + return types_1.WasiErrno.EINVAL; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_READ, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return types_1.WasiErrno.ESUCCESS; + } + let totalSize = 0; + const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + totalSize += bufLen; + return HEAPU8.subarray(buf, buf + bufLen); + }); + let buffer; + let nread = 0; + if (fd === 0) { + if (typeof window === 'undefined' || typeof window.prompt !== 'function') { + return types_1.WasiErrno.ENOTSUP; + } + buffer = readStdin(); + nread = buffer ? copyMemory(ioVecs, buffer) : 0; + } + else { + buffer = new Uint8Array(totalSize); + buffer._isBuffer = true; + const { bytesRead } = await fileDescriptor.fd.read(buffer, 0, buffer.length, Number(fileDescriptor.pos)); + nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; + fileDescriptor.pos += BigInt(nread); + } + view.setUint32(size, nread, true); + return types_1.WasiErrno.ESUCCESS; + }, ['i32', 'i32', 'i32', 'i32'], ['i32']); + defineImport('fd_readdir', function fd_readdir(fd, buf, buf_len, cookie, bufused) { + buf = Number(buf); + buf_len = Number(buf_len); + bufused = Number(bufused); + if (buf === 0 || bufused === 0) + return types_1.WasiErrno.ESUCCESS; + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_READDIR, BigInt(0)); + const fs = getFs(this); + const entries = fs.readdirSync(fileDescriptor.realPath, { withFileTypes: true }); + const { HEAPU8, view } = getMemory(this); + let bufferUsed = 0; + for (let i = Number(cookie); i < entries.length; i++) { + const nameData = encoder.encode(entries[i].name); + const entryInfo = fs.statSync((0, path_1.resolve)(fileDescriptor.realPath, entries[i].name), { bigint: true }); + const entryData = new Uint8Array(24 + nameData.byteLength); + const entryView = new DataView(entryData.buffer); + entryView.setBigUint64(0, BigInt(i + 1), true); + entryView.setBigUint64(8, BigInt(entryInfo.ino ? entryInfo.ino : 0), true); + entryView.setUint32(16, nameData.byteLength, true); + let type; + if (entries[i].isFile()) { + type = types_1.WasiFileType.REGULAR_FILE; + } + else if (entries[i].isDirectory()) { + type = types_1.WasiFileType.DIRECTORY; + } + else if (entries[i].isSymbolicLink()) { + type = types_1.WasiFileType.SYMBOLIC_LINK; + } + else if (entries[i].isCharacterDevice()) { + type = types_1.WasiFileType.CHARACTER_DEVICE; + } + else if (entries[i].isBlockDevice()) { + type = types_1.WasiFileType.BLOCK_DEVICE; + } + else if (entries[i].isSocket()) { + type = types_1.WasiFileType.SOCKET_STREAM; + } + else { + type = types_1.WasiFileType.UNKNOWN; + } + entryView.setUint8(20, type); + entryData.set(nameData, 24); + const data = entryData.slice(0, Math.min(entryData.length, buf_len - bufferUsed)); + HEAPU8.set(data, buf + bufferUsed); + bufferUsed += data.byteLength; + } + view.setUint32(bufused, bufferUsed, true); + return types_1.WasiErrno.ESUCCESS; + }, async function fd_readdir(fd, buf, buf_len, cookie, bufused) { + buf = Number(buf); + buf_len = Number(buf_len); + bufused = Number(bufused); + if (buf === 0 || bufused === 0) + return types_1.WasiErrno.ESUCCESS; + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_READDIR, BigInt(0)); + const fs = getFs(this); + const entries = await fs.promises.readdir(fileDescriptor.realPath, { withFileTypes: true }); + const { HEAPU8, view } = getMemory(this); + let bufferUsed = 0; + for (let i = Number(cookie); i < entries.length; i++) { + const nameData = encoder.encode(entries[i].name); + const entryInfo = await fs.promises.stat((0, path_1.resolve)(fileDescriptor.realPath, entries[i].name), { bigint: true }); + const entryData = new Uint8Array(24 + nameData.byteLength); + const entryView = new DataView(entryData.buffer); + entryView.setBigUint64(0, BigInt(i + 1), true); + entryView.setBigUint64(8, BigInt(entryInfo.ino ? entryInfo.ino : 0), true); + entryView.setUint32(16, nameData.byteLength, true); + let type; + if (entries[i].isFile()) { + type = types_1.WasiFileType.REGULAR_FILE; + } + else if (entries[i].isDirectory()) { + type = types_1.WasiFileType.DIRECTORY; + } + else if (entries[i].isSymbolicLink()) { + type = types_1.WasiFileType.SYMBOLIC_LINK; + } + else if (entries[i].isCharacterDevice()) { + type = types_1.WasiFileType.CHARACTER_DEVICE; + } + else if (entries[i].isBlockDevice()) { + type = types_1.WasiFileType.BLOCK_DEVICE; + } + else if (entries[i].isSocket()) { + type = types_1.WasiFileType.SOCKET_STREAM; + } + else { + type = types_1.WasiFileType.UNKNOWN; + } + entryView.setUint8(20, type); + entryData.set(nameData, 24); + const data = entryData.slice(0, Math.min(entryData.length, buf_len - bufferUsed)); + HEAPU8.set(data, buf + bufferUsed); + bufferUsed += data.byteLength; + } + view.setUint32(bufused, bufferUsed, true); + return types_1.WasiErrno.ESUCCESS; + }, ['i32', 'i32', 'i32', 'i64', 'i32'], ['i32']); + defineImport('fd_renumber', function fd_renumber(from, to) { + const wasi = _wasi.get(this); + wasi.fds.renumber(to, from); + return types_1.WasiErrno.ESUCCESS; + }, async function fd_renumber(from, to) { + const wasi = _wasi.get(this); + await wasi.fds.renumber(to, from); + return types_1.WasiErrno.ESUCCESS; + }, ['i32', 'i32'], ['i32']); + defineImport('fd_sync', function fd_sync(fd) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_SYNC, BigInt(0)); + const fs = getFs(this); + fs.fsyncSync(fileDescriptor.fd); + return types_1.WasiErrno.ESUCCESS; + }, async function fd_sync(fd) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_SYNC, BigInt(0)); + await fileDescriptor.fd.sync(); + return types_1.WasiErrno.ESUCCESS; + }, ['i32'], ['i32']); + defineImport('fd_write', function fd_write(fd, iovs, iovslen, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0) { + return types_1.WasiErrno.EINVAL; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_WRITE, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return types_1.WasiErrno.ESUCCESS; + } + const buffer = (0, fd_1.concatBuffer)(Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + return HEAPU8.subarray(buf, buf + bufLen); + })); + let nwritten; + if (fd === 1 || fd === 2) { + nwritten = fileDescriptor.write(buffer); + } + else { + const fs = getFs(this); + nwritten = fs.writeSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(fileDescriptor.pos)); + fileDescriptor.pos += BigInt(nwritten); + } + view.setUint32(size, nwritten, true); + return types_1.WasiErrno.ESUCCESS; + }, async function fd_write(fd, iovs, iovslen, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0) { + return types_1.WasiErrno.EINVAL; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.FD_WRITE, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return types_1.WasiErrno.ESUCCESS; + } + const buffer = (0, fd_1.concatBuffer)(Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + return HEAPU8.subarray(buf, buf + bufLen); + })); + let nwritten; + if (fd === 1 || fd === 2) { + nwritten = fileDescriptor.write(buffer); + } + else { + nwritten = await (await (fileDescriptor.fd.write(buffer, 0, buffer.length, Number(fileDescriptor.pos)))).bytesWritten; + fileDescriptor.pos += BigInt(nwritten); + } + view.setUint32(size, nwritten, true); + return types_1.WasiErrno.ESUCCESS; + }, ['i32', 'i32', 'i32', 'i32'], ['i32']); + defineImport('path_create_directory', function path_create_directory(fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return types_1.WasiErrno.EINVAL; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.PATH_CREATE_DIRECTORY, BigInt(0)); + let pathString = decoder.decode((0, util_1.unsharedSlice)(HEAPU8, path, path + path_len)); + pathString = (0, path_1.resolve)(fileDescriptor.realPath, pathString); + const fs = getFs(this); + fs.mkdirSync(pathString); + return types_1.WasiErrno.ESUCCESS; + }, async function path_create_directory(fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return types_1.WasiErrno.EINVAL; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.PATH_CREATE_DIRECTORY, BigInt(0)); + let pathString = decoder.decode((0, util_1.unsharedSlice)(HEAPU8, path, path + path_len)); + pathString = (0, path_1.resolve)(fileDescriptor.realPath, pathString); + const fs = getFs(this); + await fs.promises.mkdir(pathString); + return types_1.WasiErrno.ESUCCESS; + }, ['i32', 'i32', 'i32'], ['i32']); + defineImport('path_filestat_get', function path_filestat_get(fd, flags, path, path_len, filestat) { + path = Number(path); + path_len = Number(path_len); + filestat = Number(filestat); + if (path === 0 || filestat === 0) { + return types_1.WasiErrno.EINVAL; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.PATH_FILESTAT_GET, BigInt(0)); + let pathString = decoder.decode((0, util_1.unsharedSlice)(HEAPU8, path, path + path_len)); + const fs = getFs(this); + pathString = (0, path_1.resolve)(fileDescriptor.realPath, pathString); + let stat; + if ((flags & 1) === 1) { + stat = fs.statSync(pathString, { bigint: true }); + } + else { + stat = fs.lstatSync(pathString, { bigint: true }); + } + (0, fd_1.toFileStat)(view, filestat, stat); + return types_1.WasiErrno.ESUCCESS; + }, async function path_filestat_get(fd, flags, path, path_len, filestat) { + path = Number(path); + path_len = Number(path_len); + filestat = Number(filestat); + if (path === 0 || filestat === 0) { + return types_1.WasiErrno.EINVAL; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.PATH_FILESTAT_GET, BigInt(0)); + let pathString = decoder.decode((0, util_1.unsharedSlice)(HEAPU8, path, path + path_len)); + const fs = getFs(this); + pathString = (0, path_1.resolve)(fileDescriptor.realPath, pathString); + let stat; + if ((flags & 1) === 1) { + stat = await fs.promises.stat(pathString, { bigint: true }); + } + else { + stat = await fs.promises.lstat(pathString, { bigint: true }); + } + (0, fd_1.toFileStat)(view, filestat, stat); + return types_1.WasiErrno.ESUCCESS; + }, ['i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); + defineImport('path_filestat_set_times', function path_filestat_set_times(fd, flags, path, path_len, atim, mtim, fst_flags) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) + return types_1.WasiErrno.EINVAL; + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.PATH_FILESTAT_SET_TIMES, BigInt(0)); + if (validateFstFlagsOrReturn(fst_flags)) { + return types_1.WasiErrno.EINVAL; + } + const fs = getFs(this); + const resolvedPath = resolvePathSync(fs, fileDescriptor, decoder.decode((0, util_1.unsharedSlice)(HEAPU8, path, path + path_len)), flags); + if ((fst_flags & types_1.WasiFstFlag.SET_ATIM_NOW) === types_1.WasiFstFlag.SET_ATIM_NOW) { + atim = BigInt(Date.now() * 1000000); + } + if ((fst_flags & types_1.WasiFstFlag.SET_MTIM_NOW) === types_1.WasiFstFlag.SET_MTIM_NOW) { + mtim = BigInt(Date.now() * 1000000); + } + fs.utimesSync(resolvedPath, Number(atim), Number(mtim)); + return types_1.WasiErrno.ESUCCESS; + }, async function path_filestat_set_times(fd, flags, path, path_len, atim, mtim, fst_flags) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) + return types_1.WasiErrno.EINVAL; + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.PATH_FILESTAT_SET_TIMES, BigInt(0)); + if (validateFstFlagsOrReturn(fst_flags)) { + return types_1.WasiErrno.EINVAL; + } + const fs = getFs(this); + const resolvedPath = await resolvePathAsync(fs, fileDescriptor, decoder.decode((0, util_1.unsharedSlice)(HEAPU8, path, path + path_len)), flags); + if ((fst_flags & types_1.WasiFstFlag.SET_ATIM_NOW) === types_1.WasiFstFlag.SET_ATIM_NOW) { + atim = BigInt(Date.now() * 1000000); + } + if ((fst_flags & types_1.WasiFstFlag.SET_MTIM_NOW) === types_1.WasiFstFlag.SET_MTIM_NOW) { + mtim = BigInt(Date.now() * 1000000); + } + await fs.promises.utimes(resolvedPath, Number(atim), Number(mtim)); + return types_1.WasiErrno.ESUCCESS; + }, ['i32', 'i32', 'i32', 'i32', 'i64', 'i64', 'i32'], ['i32']); + defineImport('path_link', function path_link(old_fd, old_flags, old_path, old_path_len, new_fd, new_path, new_path_len) { + old_path = Number(old_path); + old_path_len = Number(old_path_len); + new_path = Number(new_path); + new_path_len = Number(new_path_len); + if (old_path === 0 || new_path === 0) { + return types_1.WasiErrno.EINVAL; + } + const wasi = _wasi.get(this); + let oldWrap; + let newWrap; + if (old_fd === new_fd) { + oldWrap = newWrap = wasi.fds.get(old_fd, types_1.WasiRights.PATH_LINK_SOURCE | types_1.WasiRights.PATH_LINK_TARGET, BigInt(0)); + } + else { + oldWrap = wasi.fds.get(old_fd, types_1.WasiRights.PATH_LINK_SOURCE, BigInt(0)); + newWrap = wasi.fds.get(new_fd, types_1.WasiRights.PATH_LINK_TARGET, BigInt(0)); + } + const { HEAPU8 } = getMemory(this); + const fs = getFs(this); + const resolvedOldPath = resolvePathSync(fs, oldWrap, decoder.decode((0, util_1.unsharedSlice)(HEAPU8, old_path, old_path + old_path_len)), old_flags); + const resolvedNewPath = (0, path_1.resolve)(newWrap.realPath, decoder.decode((0, util_1.unsharedSlice)(HEAPU8, new_path, new_path + new_path_len))); + fs.linkSync(resolvedOldPath, resolvedNewPath); + return types_1.WasiErrno.ESUCCESS; + }, async function path_link(old_fd, old_flags, old_path, old_path_len, new_fd, new_path, new_path_len) { + old_path = Number(old_path); + old_path_len = Number(old_path_len); + new_path = Number(new_path); + new_path_len = Number(new_path_len); + if (old_path === 0 || new_path === 0) { + return types_1.WasiErrno.EINVAL; + } + const wasi = _wasi.get(this); + let oldWrap; + let newWrap; + if (old_fd === new_fd) { + oldWrap = newWrap = wasi.fds.get(old_fd, types_1.WasiRights.PATH_LINK_SOURCE | types_1.WasiRights.PATH_LINK_TARGET, BigInt(0)); + } + else { + oldWrap = wasi.fds.get(old_fd, types_1.WasiRights.PATH_LINK_SOURCE, BigInt(0)); + newWrap = wasi.fds.get(new_fd, types_1.WasiRights.PATH_LINK_TARGET, BigInt(0)); + } + const { HEAPU8 } = getMemory(this); + const fs = getFs(this); + const resolvedOldPath = await resolvePathAsync(fs, oldWrap, decoder.decode((0, util_1.unsharedSlice)(HEAPU8, old_path, old_path + old_path_len)), old_flags); + const resolvedNewPath = (0, path_1.resolve)(newWrap.realPath, decoder.decode((0, util_1.unsharedSlice)(HEAPU8, new_path, new_path + new_path_len))); + await fs.promises.link(resolvedOldPath, resolvedNewPath); + return types_1.WasiErrno.ESUCCESS; + }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); + function pathOpen(o_flags, fs_rights_base, fs_rights_inheriting, fs_flags) { + const read = (fs_rights_base & (types_1.WasiRights.FD_READ | + types_1.WasiRights.FD_READDIR)) !== BigInt(0); + const write = (fs_rights_base & (types_1.WasiRights.FD_DATASYNC | + types_1.WasiRights.FD_WRITE | + types_1.WasiRights.FD_ALLOCATE | + types_1.WasiRights.FD_FILESTAT_SET_SIZE)) !== BigInt(0); + let flags = write ? read ? types_1.FileControlFlag.O_RDWR : types_1.FileControlFlag.O_WRONLY : types_1.FileControlFlag.O_RDONLY; + let needed_base = types_1.WasiRights.PATH_OPEN; + let needed_inheriting = fs_rights_base | fs_rights_inheriting; + if ((o_flags & types_1.WasiFileControlFlag.O_CREAT) !== 0) { + flags |= types_1.FileControlFlag.O_CREAT; + needed_base |= types_1.WasiRights.PATH_CREATE_FILE; + } + if ((o_flags & types_1.WasiFileControlFlag.O_DIRECTORY) !== 0) { + flags |= types_1.FileControlFlag.O_DIRECTORY; + } + if ((o_flags & types_1.WasiFileControlFlag.O_EXCL) !== 0) { + flags |= types_1.FileControlFlag.O_EXCL; + } + if ((o_flags & types_1.WasiFileControlFlag.O_TRUNC) !== 0) { + flags |= types_1.FileControlFlag.O_TRUNC; + needed_base |= types_1.WasiRights.PATH_FILESTAT_SET_SIZE; + } + if ((fs_flags & types_1.WasiFdFlag.APPEND) !== 0) { + flags |= types_1.FileControlFlag.O_APPEND; + } + if ((fs_flags & types_1.WasiFdFlag.DSYNC) !== 0) { + // flags |= FileControlFlag.O_DSYNC; + needed_inheriting |= types_1.WasiRights.FD_DATASYNC; + } + if ((fs_flags & types_1.WasiFdFlag.NONBLOCK) !== 0) { + flags |= types_1.FileControlFlag.O_NONBLOCK; + } + if ((fs_flags & types_1.WasiFdFlag.RSYNC) !== 0) { + flags |= types_1.FileControlFlag.O_SYNC; + needed_inheriting |= types_1.WasiRights.FD_SYNC; + } + if ((fs_flags & types_1.WasiFdFlag.SYNC) !== 0) { + flags |= types_1.FileControlFlag.O_SYNC; + needed_inheriting |= types_1.WasiRights.FD_SYNC; + } + if (write && (flags & (types_1.FileControlFlag.O_APPEND | types_1.FileControlFlag.O_TRUNC)) === 0) { + needed_inheriting |= types_1.WasiRights.FD_SEEK; + } + return { flags, needed_base, needed_inheriting }; + } + defineImport('path_open', function path_open(dirfd, dirflags, path, path_len, o_flags, fs_rights_base, fs_rights_inheriting, fs_flags, fd) { + path = Number(path); + fd = Number(fd); + if (path === 0 || fd === 0) { + return types_1.WasiErrno.EINVAL; + } + path_len = Number(path_len); + fs_rights_base = BigInt(fs_rights_base); + fs_rights_inheriting = BigInt(fs_rights_inheriting); + const { flags: flagsRes, needed_base: neededBase, needed_inheriting: neededInheriting } = pathOpen(o_flags, fs_rights_base, fs_rights_inheriting, fs_flags); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(dirfd, neededBase, neededInheriting); + const memory = getMemory(this); + const HEAPU8 = memory.HEAPU8; + const pathString = decoder.decode((0, util_1.unsharedSlice)(HEAPU8, path, path + path_len)); + const fs = getFs(this); + const resolved_path = resolvePathSync(fs, fileDescriptor, pathString, dirflags); + const r = fs.openSync(resolved_path, flagsRes, 0o666); + const filetype = wasi.fds.getFileTypeByFd(r); + if ((filetype !== types_1.WasiFileType.DIRECTORY) && + ((o_flags & types_1.WasiFileControlFlag.O_DIRECTORY) !== 0 || + (resolved_path.endsWith('/')))) { + return types_1.WasiErrno.ENOTDIR; + } + const { base: max_base, inheriting: max_inheriting } = (0, rights_1.getRights)(wasi.fds.stdio, r, flagsRes, filetype); + const wrap = wasi.fds.insert(r, resolved_path, resolved_path, filetype, fs_rights_base & max_base, fs_rights_inheriting & max_inheriting, 0); + const stat = fs.fstatSync(r, { bigint: true }); + if (stat.isFile()) { + wrap.size = stat.size; + if ((flagsRes & types_1.FileControlFlag.O_APPEND) !== 0) { + wrap.pos = stat.size; + } + } + const view = memory.view; + view.setInt32(fd, wrap.id, true); + return types_1.WasiErrno.ESUCCESS; + }, async function path_open(dirfd, dirflags, path, path_len, o_flags, fs_rights_base, fs_rights_inheriting, fs_flags, fd) { + path = Number(path); + fd = Number(fd); + if (path === 0 || fd === 0) { + return types_1.WasiErrno.EINVAL; + } + path_len = Number(path_len); + fs_rights_base = BigInt(fs_rights_base); + fs_rights_inheriting = BigInt(fs_rights_inheriting); + const { flags: flagsRes, needed_base: neededBase, needed_inheriting: neededInheriting } = pathOpen(o_flags, fs_rights_base, fs_rights_inheriting, fs_flags); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(dirfd, neededBase, neededInheriting); + const memory = getMemory(this); + const HEAPU8 = memory.HEAPU8; + const pathString = decoder.decode((0, util_1.unsharedSlice)(HEAPU8, path, path + path_len)); + const fs = getFs(this); + const resolved_path = await resolvePathAsync(fs, fileDescriptor, pathString, dirflags); + const r = await fs.promises.open(resolved_path, flagsRes, 0o666); + const filetype = await wasi.fds.getFileTypeByFd(r); + if ((o_flags & types_1.WasiFileControlFlag.O_DIRECTORY) !== 0 && filetype !== types_1.WasiFileType.DIRECTORY) { + return types_1.WasiErrno.ENOTDIR; + } + const { base: max_base, inheriting: max_inheriting } = (0, rights_1.getRights)(wasi.fds.stdio, r.fd, flagsRes, filetype); + const wrap = wasi.fds.insert(r, resolved_path, resolved_path, filetype, fs_rights_base & max_base, fs_rights_inheriting & max_inheriting, 0); + const stat = await r.stat({ bigint: true }); + if (stat.isFile()) { + wrap.size = stat.size; + if ((flagsRes & types_1.FileControlFlag.O_APPEND) !== 0) { + wrap.pos = stat.size; + } + } + const view = memory.view; + view.setInt32(fd, wrap.id, true); + return types_1.WasiErrno.ESUCCESS; + }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i64', 'i64', 'i32', 'i32'], ['i32']); + defineImport('path_readlink', function path_readlink(fd, path, path_len, buf, buf_len, bufused) { + path = Number(path); + path_len = Number(path_len); + buf = Number(buf); + buf_len = Number(buf_len); + bufused = Number(bufused); + if (path === 0 || buf === 0 || bufused === 0) { + return types_1.WasiErrno.EINVAL; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.PATH_READLINK, BigInt(0)); + let pathString = decoder.decode((0, util_1.unsharedSlice)(HEAPU8, path, path + path_len)); + pathString = (0, path_1.resolve)(fileDescriptor.realPath, pathString); + const fs = getFs(this); + const link = fs.readlinkSync(pathString); + const linkData = encoder.encode(link); + const len = Math.min(linkData.length, buf_len); + if (len >= buf_len) + return types_1.WasiErrno.ENOBUFS; + HEAPU8.set(linkData.subarray(0, len), buf); + HEAPU8[buf + len] = 0; + view.setUint32(bufused, len, true); + return types_1.WasiErrno.ESUCCESS; + }, async function path_readlink(fd, path, path_len, buf, buf_len, bufused) { + path = Number(path); + path_len = Number(path_len); + buf = Number(buf); + buf_len = Number(buf_len); + bufused = Number(bufused); + if (path === 0 || buf === 0 || bufused === 0) { + return types_1.WasiErrno.EINVAL; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.PATH_READLINK, BigInt(0)); + let pathString = decoder.decode((0, util_1.unsharedSlice)(HEAPU8, path, path + path_len)); + pathString = (0, path_1.resolve)(fileDescriptor.realPath, pathString); + const fs = getFs(this); + const link = await fs.promises.readlink(pathString); + const linkData = encoder.encode(link); + const len = Math.min(linkData.length, buf_len); + if (len >= buf_len) + return types_1.WasiErrno.ENOBUFS; + HEAPU8.set(linkData.subarray(0, len), buf); + HEAPU8[buf + len] = 0; + view.setUint32(bufused, len, true); + return types_1.WasiErrno.ESUCCESS; + }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); + defineImport('path_remove_directory', function path_remove_directory(fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return types_1.WasiErrno.EINVAL; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.PATH_REMOVE_DIRECTORY, BigInt(0)); + let pathString = decoder.decode((0, util_1.unsharedSlice)(HEAPU8, path, path + path_len)); + pathString = (0, path_1.resolve)(fileDescriptor.realPath, pathString); + const fs = getFs(this); + fs.rmdirSync(pathString); + return types_1.WasiErrno.ESUCCESS; + }, async function path_remove_directory(fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return types_1.WasiErrno.EINVAL; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.PATH_REMOVE_DIRECTORY, BigInt(0)); + let pathString = decoder.decode((0, util_1.unsharedSlice)(HEAPU8, path, path + path_len)); + pathString = (0, path_1.resolve)(fileDescriptor.realPath, pathString); + const fs = getFs(this); + await fs.promises.rmdir(pathString); + return types_1.WasiErrno.ESUCCESS; + }, ['i32', 'i32', 'i32'], ['i32']); + defineImport('path_rename', function path_rename(old_fd, old_path, old_path_len, new_fd, new_path, new_path_len) { + old_path = Number(old_path); + old_path_len = Number(old_path_len); + new_path = Number(new_path); + new_path_len = Number(new_path_len); + if (old_path === 0 || new_path === 0) { + return types_1.WasiErrno.EINVAL; + } + const wasi = _wasi.get(this); + let oldWrap; + let newWrap; + if (old_fd === new_fd) { + oldWrap = newWrap = wasi.fds.get(old_fd, types_1.WasiRights.PATH_RENAME_SOURCE | types_1.WasiRights.PATH_RENAME_TARGET, BigInt(0)); + } + else { + oldWrap = wasi.fds.get(old_fd, types_1.WasiRights.PATH_RENAME_SOURCE, BigInt(0)); + newWrap = wasi.fds.get(new_fd, types_1.WasiRights.PATH_RENAME_TARGET, BigInt(0)); + } + const { HEAPU8 } = getMemory(this); + const resolvedOldPath = (0, path_1.resolve)(oldWrap.realPath, decoder.decode((0, util_1.unsharedSlice)(HEAPU8, old_path, old_path + old_path_len))); + const resolvedNewPath = (0, path_1.resolve)(newWrap.realPath, decoder.decode((0, util_1.unsharedSlice)(HEAPU8, new_path, new_path + new_path_len))); + const fs = getFs(this); + fs.renameSync(resolvedOldPath, resolvedNewPath); + return types_1.WasiErrno.ESUCCESS; + }, async function path_rename(old_fd, old_path, old_path_len, new_fd, new_path, new_path_len) { + old_path = Number(old_path); + old_path_len = Number(old_path_len); + new_path = Number(new_path); + new_path_len = Number(new_path_len); + if (old_path === 0 || new_path === 0) { + return types_1.WasiErrno.EINVAL; + } + const wasi = _wasi.get(this); + let oldWrap; + let newWrap; + if (old_fd === new_fd) { + oldWrap = newWrap = wasi.fds.get(old_fd, types_1.WasiRights.PATH_RENAME_SOURCE | types_1.WasiRights.PATH_RENAME_TARGET, BigInt(0)); + } + else { + oldWrap = wasi.fds.get(old_fd, types_1.WasiRights.PATH_RENAME_SOURCE, BigInt(0)); + newWrap = wasi.fds.get(new_fd, types_1.WasiRights.PATH_RENAME_TARGET, BigInt(0)); + } + const { HEAPU8 } = getMemory(this); + const resolvedOldPath = (0, path_1.resolve)(oldWrap.realPath, decoder.decode((0, util_1.unsharedSlice)(HEAPU8, old_path, old_path + old_path_len))); + const resolvedNewPath = (0, path_1.resolve)(newWrap.realPath, decoder.decode((0, util_1.unsharedSlice)(HEAPU8, new_path, new_path + new_path_len))); + const fs = getFs(this); + await fs.promises.rename(resolvedOldPath, resolvedNewPath); + return types_1.WasiErrno.ESUCCESS; + }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); + defineImport('path_symlink', function path_symlink(old_path, old_path_len, fd, new_path, new_path_len) { + old_path = Number(old_path); + old_path_len = Number(old_path_len); + new_path = Number(new_path); + new_path_len = Number(new_path_len); + if (old_path === 0 || new_path === 0) { + return types_1.WasiErrno.EINVAL; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.PATH_SYMLINK, BigInt(0)); + const oldPath = decoder.decode((0, util_1.unsharedSlice)(HEAPU8, old_path, old_path + old_path_len)); + if (oldPath.length > 0 && oldPath[0] === '/') { + return types_1.WasiErrno.EPERM; + } + let newPath = decoder.decode((0, util_1.unsharedSlice)(HEAPU8, new_path, new_path + new_path_len)); + newPath = (0, path_1.resolve)(fileDescriptor.realPath, newPath); + const fs = getFs(this); + fs.symlinkSync(oldPath, newPath); + return types_1.WasiErrno.ESUCCESS; + }, async function path_symlink(old_path, old_path_len, fd, new_path, new_path_len) { + old_path = Number(old_path); + old_path_len = Number(old_path_len); + new_path = Number(new_path); + new_path_len = Number(new_path_len); + if (old_path === 0 || new_path === 0) { + return types_1.WasiErrno.EINVAL; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.PATH_SYMLINK, BigInt(0)); + const oldPath = decoder.decode((0, util_1.unsharedSlice)(HEAPU8, old_path, old_path + old_path_len)); + let newPath = decoder.decode((0, util_1.unsharedSlice)(HEAPU8, new_path, new_path + new_path_len)); + newPath = (0, path_1.resolve)(fileDescriptor.realPath, newPath); + const fs = getFs(this); + await fs.promises.symlink(oldPath, newPath); + return types_1.WasiErrno.ESUCCESS; + }, ['i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); + defineImport('path_unlink_file', function path_unlink_file(fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return types_1.WasiErrno.EINVAL; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.PATH_UNLINK_FILE, BigInt(0)); + let pathString = decoder.decode((0, util_1.unsharedSlice)(HEAPU8, path, path + path_len)); + pathString = (0, path_1.resolve)(fileDescriptor.realPath, pathString); + const fs = getFs(this); + fs.unlinkSync(pathString); + return types_1.WasiErrno.ESUCCESS; + }, async function path_unlink_file(fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return types_1.WasiErrno.EINVAL; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, types_1.WasiRights.PATH_UNLINK_FILE, BigInt(0)); + let pathString = decoder.decode((0, util_1.unsharedSlice)(HEAPU8, path, path + path_len)); + pathString = (0, path_1.resolve)(fileDescriptor.realPath, pathString); + const fs = getFs(this); + await fs.promises.unlink(pathString); + return types_1.WasiErrno.ESUCCESS; + }, ['i32', 'i32', 'i32'], ['i32']); + this._setMemory = function setMemory(m) { + if (!(m instanceof webassembly_1._WebAssembly.Memory)) { + throw new TypeError('"instance.exports.memory" property must be a WebAssembly.Memory'); + } + _memory.set(_this, (0, memory_1.extendMemory)(m)); + }; + } + static createSync(args, env, preopens, stdio, fs, print, printErr) { + const fds = new fd_1.SyncTable({ + size: 3, + in: stdio[0], + out: stdio[1], + err: stdio[2], + fs, + print, + printErr + }); + const _this = new WASI(args, env, fds, false, fs); + if (preopens.length > 0) { + for (let i = 0; i < preopens.length; ++i) { + const realPath = fs.realpathSync(preopens[i].realPath, 'utf8'); + const fd = fs.openSync(realPath, 'r', 0o666); + fds.insertPreopen(fd, preopens[i].mappedPath, realPath); + } + } + return _this; + } + static async createAsync(args, env, preopens, stdio, fs, print, printErr, asyncify) { + const fds = new fd_1.AsyncTable({ + size: 3, + in: stdio[0], + out: stdio[1], + err: stdio[2], + print, + printErr + }); + const _this = new WASI(args, env, fds, true, fs, asyncify); + if (preopens.length > 0) { + for (let i = 0; i < preopens.length; ++i) { + const entry = preopens[i]; + const realPath = await fs.promises.realpath(entry.realPath); + const fd = await fs.promises.open(realPath, 'r', 0o666); + await fds.insertPreopen(fd, entry.mappedPath, realPath); + } + } + return _this; + } +} +exports.WASI = WASI; +//# sourceMappingURL=preview1.js.map \ No newline at end of file diff --git a/node_modules/@tybys/wasm-util/lib/cjs/wasi/rights.js b/node_modules/@tybys/wasm-util/lib/cjs/wasi/rights.js new file mode 100644 index 00000000..9713b4be --- /dev/null +++ b/node_modules/@tybys/wasm-util/lib/cjs/wasi/rights.js @@ -0,0 +1,141 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRights = exports.TTY_INHERITING = exports.TTY_BASE = exports.SOCKET_INHERITING = exports.SOCKET_BASE = exports.DIRECTORY_INHERITING = exports.DIRECTORY_BASE = exports.REGULAR_FILE_INHERITING = exports.REGULAR_FILE_BASE = exports.CHARACTER_DEVICE_INHERITING = exports.CHARACTER_DEVICE_BASE = exports.BLOCK_DEVICE_INHERITING = exports.BLOCK_DEVICE_BASE = exports.RIGHTS_ALL = void 0; +/* eslint-disable spaced-comment */ +const error_1 = require("./error"); +const types_1 = require("./types"); +exports.RIGHTS_ALL = types_1.WasiRights.FD_DATASYNC | + types_1.WasiRights.FD_READ | + types_1.WasiRights.FD_SEEK | + types_1.WasiRights.FD_FDSTAT_SET_FLAGS | + types_1.WasiRights.FD_SYNC | + types_1.WasiRights.FD_TELL | + types_1.WasiRights.FD_WRITE | + types_1.WasiRights.FD_ADVISE | + types_1.WasiRights.FD_ALLOCATE | + types_1.WasiRights.PATH_CREATE_DIRECTORY | + types_1.WasiRights.PATH_CREATE_FILE | + types_1.WasiRights.PATH_LINK_SOURCE | + types_1.WasiRights.PATH_LINK_TARGET | + types_1.WasiRights.PATH_OPEN | + types_1.WasiRights.FD_READDIR | + types_1.WasiRights.PATH_READLINK | + types_1.WasiRights.PATH_RENAME_SOURCE | + types_1.WasiRights.PATH_RENAME_TARGET | + types_1.WasiRights.PATH_FILESTAT_GET | + types_1.WasiRights.PATH_FILESTAT_SET_SIZE | + types_1.WasiRights.PATH_FILESTAT_SET_TIMES | + types_1.WasiRights.FD_FILESTAT_GET | + types_1.WasiRights.FD_FILESTAT_SET_TIMES | + types_1.WasiRights.FD_FILESTAT_SET_SIZE | + types_1.WasiRights.PATH_SYMLINK | + types_1.WasiRights.PATH_UNLINK_FILE | + types_1.WasiRights.PATH_REMOVE_DIRECTORY | + types_1.WasiRights.POLL_FD_READWRITE | + types_1.WasiRights.SOCK_SHUTDOWN | + types_1.WasiRights.SOCK_ACCEPT; +exports.BLOCK_DEVICE_BASE = exports.RIGHTS_ALL; +exports.BLOCK_DEVICE_INHERITING = exports.RIGHTS_ALL; +exports.CHARACTER_DEVICE_BASE = exports.RIGHTS_ALL; +exports.CHARACTER_DEVICE_INHERITING = exports.RIGHTS_ALL; +exports.REGULAR_FILE_BASE = types_1.WasiRights.FD_DATASYNC | + types_1.WasiRights.FD_READ | + types_1.WasiRights.FD_SEEK | + types_1.WasiRights.FD_FDSTAT_SET_FLAGS | + types_1.WasiRights.FD_SYNC | + types_1.WasiRights.FD_TELL | + types_1.WasiRights.FD_WRITE | + types_1.WasiRights.FD_ADVISE | + types_1.WasiRights.FD_ALLOCATE | + types_1.WasiRights.FD_FILESTAT_GET | + types_1.WasiRights.FD_FILESTAT_SET_SIZE | + types_1.WasiRights.FD_FILESTAT_SET_TIMES | + types_1.WasiRights.POLL_FD_READWRITE; +exports.REGULAR_FILE_INHERITING = BigInt(0); +exports.DIRECTORY_BASE = types_1.WasiRights.FD_FDSTAT_SET_FLAGS | + types_1.WasiRights.FD_SYNC | + types_1.WasiRights.FD_ADVISE | + types_1.WasiRights.PATH_CREATE_DIRECTORY | + types_1.WasiRights.PATH_CREATE_FILE | + types_1.WasiRights.PATH_LINK_SOURCE | + types_1.WasiRights.PATH_LINK_TARGET | + types_1.WasiRights.PATH_OPEN | + types_1.WasiRights.FD_READDIR | + types_1.WasiRights.PATH_READLINK | + types_1.WasiRights.PATH_RENAME_SOURCE | + types_1.WasiRights.PATH_RENAME_TARGET | + types_1.WasiRights.PATH_FILESTAT_GET | + types_1.WasiRights.PATH_FILESTAT_SET_SIZE | + types_1.WasiRights.PATH_FILESTAT_SET_TIMES | + types_1.WasiRights.FD_FILESTAT_GET | + types_1.WasiRights.FD_FILESTAT_SET_TIMES | + types_1.WasiRights.PATH_SYMLINK | + types_1.WasiRights.PATH_UNLINK_FILE | + types_1.WasiRights.PATH_REMOVE_DIRECTORY | + types_1.WasiRights.POLL_FD_READWRITE; +exports.DIRECTORY_INHERITING = exports.DIRECTORY_BASE | exports.REGULAR_FILE_BASE; +exports.SOCKET_BASE = (types_1.WasiRights.FD_READ | + types_1.WasiRights.FD_FDSTAT_SET_FLAGS | + types_1.WasiRights.FD_WRITE | + types_1.WasiRights.FD_FILESTAT_GET | + types_1.WasiRights.POLL_FD_READWRITE | + types_1.WasiRights.SOCK_SHUTDOWN); +exports.SOCKET_INHERITING = exports.RIGHTS_ALL; +exports.TTY_BASE = types_1.WasiRights.FD_READ | + types_1.WasiRights.FD_FDSTAT_SET_FLAGS | + types_1.WasiRights.FD_WRITE | + types_1.WasiRights.FD_FILESTAT_GET | + types_1.WasiRights.POLL_FD_READWRITE; +exports.TTY_INHERITING = BigInt(0); +function getRights(stdio, fd, flags, type) { + const ret = { + base: BigInt(0), + inheriting: BigInt(0) + }; + if (type === types_1.WasiFileType.UNKNOWN) { + throw new error_1.WasiError('Unknown file type', types_1.WasiErrno.EINVAL); + } + switch (type) { + case types_1.WasiFileType.REGULAR_FILE: + ret.base = exports.REGULAR_FILE_BASE; + ret.inheriting = exports.REGULAR_FILE_INHERITING; + break; + case types_1.WasiFileType.DIRECTORY: + ret.base = exports.DIRECTORY_BASE; + ret.inheriting = exports.DIRECTORY_INHERITING; + break; + case types_1.WasiFileType.SOCKET_STREAM: + case types_1.WasiFileType.SOCKET_DGRAM: + ret.base = exports.SOCKET_BASE; + ret.inheriting = exports.SOCKET_INHERITING; + break; + case types_1.WasiFileType.CHARACTER_DEVICE: + if (stdio.indexOf(fd) !== -1) { + ret.base = exports.TTY_BASE; + ret.inheriting = exports.TTY_INHERITING; + } + else { + ret.base = exports.CHARACTER_DEVICE_BASE; + ret.inheriting = exports.CHARACTER_DEVICE_INHERITING; + } + break; + case types_1.WasiFileType.BLOCK_DEVICE: + ret.base = exports.BLOCK_DEVICE_BASE; + ret.inheriting = exports.BLOCK_DEVICE_INHERITING; + break; + default: + ret.base = BigInt(0); + ret.inheriting = BigInt(0); + } + /* Disable read/write bits depending on access mode. */ + const read_or_write_only = flags & (0 | 1 | 2); + if (read_or_write_only === 0) { + ret.base &= ~types_1.WasiRights.FD_WRITE; + } + else if (read_or_write_only === 1) { + ret.base &= ~types_1.WasiRights.FD_READ; + } + return ret; +} +exports.getRights = getRights; +//# sourceMappingURL=rights.js.map \ No newline at end of file diff --git a/node_modules/@tybys/wasm-util/lib/cjs/wasi/types.js b/node_modules/@tybys/wasm-util/lib/cjs/wasi/types.js new file mode 100644 index 00000000..442ad115 --- /dev/null +++ b/node_modules/@tybys/wasm-util/lib/cjs/wasi/types.js @@ -0,0 +1,220 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WasiSubclockflags = exports.WasiEventType = exports.WasiFstFlag = exports.WasiClockid = exports.WasiFdFlag = exports.WasiFileControlFlag = exports.FileControlFlag = exports.WasiWhence = exports.WasiRights = exports.WasiFileType = exports.WasiErrno = void 0; +/* eslint-disable spaced-comment */ +var WasiErrno; +(function (WasiErrno) { + WasiErrno[WasiErrno["ESUCCESS"] = 0] = "ESUCCESS"; + WasiErrno[WasiErrno["E2BIG"] = 1] = "E2BIG"; + WasiErrno[WasiErrno["EACCES"] = 2] = "EACCES"; + WasiErrno[WasiErrno["EADDRINUSE"] = 3] = "EADDRINUSE"; + WasiErrno[WasiErrno["EADDRNOTAVAIL"] = 4] = "EADDRNOTAVAIL"; + WasiErrno[WasiErrno["EAFNOSUPPORT"] = 5] = "EAFNOSUPPORT"; + WasiErrno[WasiErrno["EAGAIN"] = 6] = "EAGAIN"; + WasiErrno[WasiErrno["EALREADY"] = 7] = "EALREADY"; + WasiErrno[WasiErrno["EBADF"] = 8] = "EBADF"; + WasiErrno[WasiErrno["EBADMSG"] = 9] = "EBADMSG"; + WasiErrno[WasiErrno["EBUSY"] = 10] = "EBUSY"; + WasiErrno[WasiErrno["ECANCELED"] = 11] = "ECANCELED"; + WasiErrno[WasiErrno["ECHILD"] = 12] = "ECHILD"; + WasiErrno[WasiErrno["ECONNABORTED"] = 13] = "ECONNABORTED"; + WasiErrno[WasiErrno["ECONNREFUSED"] = 14] = "ECONNREFUSED"; + WasiErrno[WasiErrno["ECONNRESET"] = 15] = "ECONNRESET"; + WasiErrno[WasiErrno["EDEADLK"] = 16] = "EDEADLK"; + WasiErrno[WasiErrno["EDESTADDRREQ"] = 17] = "EDESTADDRREQ"; + WasiErrno[WasiErrno["EDOM"] = 18] = "EDOM"; + WasiErrno[WasiErrno["EDQUOT"] = 19] = "EDQUOT"; + WasiErrno[WasiErrno["EEXIST"] = 20] = "EEXIST"; + WasiErrno[WasiErrno["EFAULT"] = 21] = "EFAULT"; + WasiErrno[WasiErrno["EFBIG"] = 22] = "EFBIG"; + WasiErrno[WasiErrno["EHOSTUNREACH"] = 23] = "EHOSTUNREACH"; + WasiErrno[WasiErrno["EIDRM"] = 24] = "EIDRM"; + WasiErrno[WasiErrno["EILSEQ"] = 25] = "EILSEQ"; + WasiErrno[WasiErrno["EINPROGRESS"] = 26] = "EINPROGRESS"; + WasiErrno[WasiErrno["EINTR"] = 27] = "EINTR"; + WasiErrno[WasiErrno["EINVAL"] = 28] = "EINVAL"; + WasiErrno[WasiErrno["EIO"] = 29] = "EIO"; + WasiErrno[WasiErrno["EISCONN"] = 30] = "EISCONN"; + WasiErrno[WasiErrno["EISDIR"] = 31] = "EISDIR"; + WasiErrno[WasiErrno["ELOOP"] = 32] = "ELOOP"; + WasiErrno[WasiErrno["EMFILE"] = 33] = "EMFILE"; + WasiErrno[WasiErrno["EMLINK"] = 34] = "EMLINK"; + WasiErrno[WasiErrno["EMSGSIZE"] = 35] = "EMSGSIZE"; + WasiErrno[WasiErrno["EMULTIHOP"] = 36] = "EMULTIHOP"; + WasiErrno[WasiErrno["ENAMETOOLONG"] = 37] = "ENAMETOOLONG"; + WasiErrno[WasiErrno["ENETDOWN"] = 38] = "ENETDOWN"; + WasiErrno[WasiErrno["ENETRESET"] = 39] = "ENETRESET"; + WasiErrno[WasiErrno["ENETUNREACH"] = 40] = "ENETUNREACH"; + WasiErrno[WasiErrno["ENFILE"] = 41] = "ENFILE"; + WasiErrno[WasiErrno["ENOBUFS"] = 42] = "ENOBUFS"; + WasiErrno[WasiErrno["ENODEV"] = 43] = "ENODEV"; + WasiErrno[WasiErrno["ENOENT"] = 44] = "ENOENT"; + WasiErrno[WasiErrno["ENOEXEC"] = 45] = "ENOEXEC"; + WasiErrno[WasiErrno["ENOLCK"] = 46] = "ENOLCK"; + WasiErrno[WasiErrno["ENOLINK"] = 47] = "ENOLINK"; + WasiErrno[WasiErrno["ENOMEM"] = 48] = "ENOMEM"; + WasiErrno[WasiErrno["ENOMSG"] = 49] = "ENOMSG"; + WasiErrno[WasiErrno["ENOPROTOOPT"] = 50] = "ENOPROTOOPT"; + WasiErrno[WasiErrno["ENOSPC"] = 51] = "ENOSPC"; + WasiErrno[WasiErrno["ENOSYS"] = 52] = "ENOSYS"; + WasiErrno[WasiErrno["ENOTCONN"] = 53] = "ENOTCONN"; + WasiErrno[WasiErrno["ENOTDIR"] = 54] = "ENOTDIR"; + WasiErrno[WasiErrno["ENOTEMPTY"] = 55] = "ENOTEMPTY"; + WasiErrno[WasiErrno["ENOTRECOVERABLE"] = 56] = "ENOTRECOVERABLE"; + WasiErrno[WasiErrno["ENOTSOCK"] = 57] = "ENOTSOCK"; + WasiErrno[WasiErrno["ENOTSUP"] = 58] = "ENOTSUP"; + WasiErrno[WasiErrno["ENOTTY"] = 59] = "ENOTTY"; + WasiErrno[WasiErrno["ENXIO"] = 60] = "ENXIO"; + WasiErrno[WasiErrno["EOVERFLOW"] = 61] = "EOVERFLOW"; + WasiErrno[WasiErrno["EOWNERDEAD"] = 62] = "EOWNERDEAD"; + WasiErrno[WasiErrno["EPERM"] = 63] = "EPERM"; + WasiErrno[WasiErrno["EPIPE"] = 64] = "EPIPE"; + WasiErrno[WasiErrno["EPROTO"] = 65] = "EPROTO"; + WasiErrno[WasiErrno["EPROTONOSUPPORT"] = 66] = "EPROTONOSUPPORT"; + WasiErrno[WasiErrno["EPROTOTYPE"] = 67] = "EPROTOTYPE"; + WasiErrno[WasiErrno["ERANGE"] = 68] = "ERANGE"; + WasiErrno[WasiErrno["EROFS"] = 69] = "EROFS"; + WasiErrno[WasiErrno["ESPIPE"] = 70] = "ESPIPE"; + WasiErrno[WasiErrno["ESRCH"] = 71] = "ESRCH"; + WasiErrno[WasiErrno["ESTALE"] = 72] = "ESTALE"; + WasiErrno[WasiErrno["ETIMEDOUT"] = 73] = "ETIMEDOUT"; + WasiErrno[WasiErrno["ETXTBSY"] = 74] = "ETXTBSY"; + WasiErrno[WasiErrno["EXDEV"] = 75] = "EXDEV"; + WasiErrno[WasiErrno["ENOTCAPABLE"] = 76] = "ENOTCAPABLE"; +})(WasiErrno = exports.WasiErrno || (exports.WasiErrno = {})); +var WasiFileType; +(function (WasiFileType) { + WasiFileType[WasiFileType["UNKNOWN"] = 0] = "UNKNOWN"; + WasiFileType[WasiFileType["BLOCK_DEVICE"] = 1] = "BLOCK_DEVICE"; + WasiFileType[WasiFileType["CHARACTER_DEVICE"] = 2] = "CHARACTER_DEVICE"; + WasiFileType[WasiFileType["DIRECTORY"] = 3] = "DIRECTORY"; + WasiFileType[WasiFileType["REGULAR_FILE"] = 4] = "REGULAR_FILE"; + WasiFileType[WasiFileType["SOCKET_DGRAM"] = 5] = "SOCKET_DGRAM"; + WasiFileType[WasiFileType["SOCKET_STREAM"] = 6] = "SOCKET_STREAM"; + WasiFileType[WasiFileType["SYMBOLIC_LINK"] = 7] = "SYMBOLIC_LINK"; +})(WasiFileType = exports.WasiFileType || (exports.WasiFileType = {})); +const FD_DATASYNC = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(0)); +const FD_READ = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(1)); +const FD_SEEK = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(2)); +const FD_FDSTAT_SET_FLAGS = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(3)); +const FD_SYNC = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(4)); +const FD_TELL = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(5)); +const FD_WRITE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(6)); +const FD_ADVISE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(7)); +const FD_ALLOCATE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(8)); +const PATH_CREATE_DIRECTORY = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(9)); +const PATH_CREATE_FILE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(10)); +const PATH_LINK_SOURCE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(11)); +const PATH_LINK_TARGET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(12)); +const PATH_OPEN = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(13)); +const FD_READDIR = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(14)); +const PATH_READLINK = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(15)); +const PATH_RENAME_SOURCE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(16)); +const PATH_RENAME_TARGET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(17)); +const PATH_FILESTAT_GET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(18)); +const PATH_FILESTAT_SET_SIZE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(19)); +const PATH_FILESTAT_SET_TIMES = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(20)); +const FD_FILESTAT_GET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(21)); +const FD_FILESTAT_SET_SIZE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(22)); +const FD_FILESTAT_SET_TIMES = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(23)); +const PATH_SYMLINK = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(24)); +const PATH_REMOVE_DIRECTORY = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(25)); +const PATH_UNLINK_FILE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(26)); +const POLL_FD_READWRITE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(27)); +const SOCK_SHUTDOWN = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(28)); +const SOCK_ACCEPT = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(29)); +exports.WasiRights = { + FD_DATASYNC, + FD_READ, + FD_SEEK, + FD_FDSTAT_SET_FLAGS, + FD_SYNC, + FD_TELL, + FD_WRITE, + FD_ADVISE, + FD_ALLOCATE, + PATH_CREATE_DIRECTORY, + PATH_CREATE_FILE, + PATH_LINK_SOURCE, + PATH_LINK_TARGET, + PATH_OPEN, + FD_READDIR, + PATH_READLINK, + PATH_RENAME_SOURCE, + PATH_RENAME_TARGET, + PATH_FILESTAT_GET, + PATH_FILESTAT_SET_SIZE, + PATH_FILESTAT_SET_TIMES, + FD_FILESTAT_GET, + FD_FILESTAT_SET_SIZE, + FD_FILESTAT_SET_TIMES, + PATH_SYMLINK, + PATH_REMOVE_DIRECTORY, + PATH_UNLINK_FILE, + POLL_FD_READWRITE, + SOCK_SHUTDOWN, + SOCK_ACCEPT +}; +var WasiWhence; +(function (WasiWhence) { + WasiWhence[WasiWhence["SET"] = 0] = "SET"; + WasiWhence[WasiWhence["CUR"] = 1] = "CUR"; + WasiWhence[WasiWhence["END"] = 2] = "END"; +})(WasiWhence = exports.WasiWhence || (exports.WasiWhence = {})); +var FileControlFlag; +(function (FileControlFlag) { + FileControlFlag[FileControlFlag["O_RDONLY"] = 0] = "O_RDONLY"; + FileControlFlag[FileControlFlag["O_WRONLY"] = 1] = "O_WRONLY"; + FileControlFlag[FileControlFlag["O_RDWR"] = 2] = "O_RDWR"; + FileControlFlag[FileControlFlag["O_CREAT"] = 64] = "O_CREAT"; + FileControlFlag[FileControlFlag["O_EXCL"] = 128] = "O_EXCL"; + FileControlFlag[FileControlFlag["O_NOCTTY"] = 256] = "O_NOCTTY"; + FileControlFlag[FileControlFlag["O_TRUNC"] = 512] = "O_TRUNC"; + FileControlFlag[FileControlFlag["O_APPEND"] = 1024] = "O_APPEND"; + FileControlFlag[FileControlFlag["O_DIRECTORY"] = 65536] = "O_DIRECTORY"; + FileControlFlag[FileControlFlag["O_NOATIME"] = 262144] = "O_NOATIME"; + FileControlFlag[FileControlFlag["O_NOFOLLOW"] = 131072] = "O_NOFOLLOW"; + FileControlFlag[FileControlFlag["O_SYNC"] = 1052672] = "O_SYNC"; + FileControlFlag[FileControlFlag["O_DIRECT"] = 16384] = "O_DIRECT"; + FileControlFlag[FileControlFlag["O_NONBLOCK"] = 2048] = "O_NONBLOCK"; +})(FileControlFlag = exports.FileControlFlag || (exports.FileControlFlag = {})); +var WasiFileControlFlag; +(function (WasiFileControlFlag) { + WasiFileControlFlag[WasiFileControlFlag["O_CREAT"] = 1] = "O_CREAT"; + WasiFileControlFlag[WasiFileControlFlag["O_DIRECTORY"] = 2] = "O_DIRECTORY"; + WasiFileControlFlag[WasiFileControlFlag["O_EXCL"] = 4] = "O_EXCL"; + WasiFileControlFlag[WasiFileControlFlag["O_TRUNC"] = 8] = "O_TRUNC"; +})(WasiFileControlFlag = exports.WasiFileControlFlag || (exports.WasiFileControlFlag = {})); +var WasiFdFlag; +(function (WasiFdFlag) { + WasiFdFlag[WasiFdFlag["APPEND"] = 1] = "APPEND"; + WasiFdFlag[WasiFdFlag["DSYNC"] = 2] = "DSYNC"; + WasiFdFlag[WasiFdFlag["NONBLOCK"] = 4] = "NONBLOCK"; + WasiFdFlag[WasiFdFlag["RSYNC"] = 8] = "RSYNC"; + WasiFdFlag[WasiFdFlag["SYNC"] = 16] = "SYNC"; +})(WasiFdFlag = exports.WasiFdFlag || (exports.WasiFdFlag = {})); +var WasiClockid; +(function (WasiClockid) { + WasiClockid[WasiClockid["REALTIME"] = 0] = "REALTIME"; + WasiClockid[WasiClockid["MONOTONIC"] = 1] = "MONOTONIC"; + WasiClockid[WasiClockid["PROCESS_CPUTIME_ID"] = 2] = "PROCESS_CPUTIME_ID"; + WasiClockid[WasiClockid["THREAD_CPUTIME_ID"] = 3] = "THREAD_CPUTIME_ID"; +})(WasiClockid = exports.WasiClockid || (exports.WasiClockid = {})); +var WasiFstFlag; +(function (WasiFstFlag) { + WasiFstFlag[WasiFstFlag["SET_ATIM"] = 1] = "SET_ATIM"; + WasiFstFlag[WasiFstFlag["SET_ATIM_NOW"] = 2] = "SET_ATIM_NOW"; + WasiFstFlag[WasiFstFlag["SET_MTIM"] = 4] = "SET_MTIM"; + WasiFstFlag[WasiFstFlag["SET_MTIM_NOW"] = 8] = "SET_MTIM_NOW"; +})(WasiFstFlag = exports.WasiFstFlag || (exports.WasiFstFlag = {})); +var WasiEventType; +(function (WasiEventType) { + WasiEventType[WasiEventType["CLOCK"] = 0] = "CLOCK"; + WasiEventType[WasiEventType["FD_READ"] = 1] = "FD_READ"; + WasiEventType[WasiEventType["FD_WRITE"] = 2] = "FD_WRITE"; +})(WasiEventType = exports.WasiEventType || (exports.WasiEventType = {})); +var WasiSubclockflags; +(function (WasiSubclockflags) { + WasiSubclockflags[WasiSubclockflags["ABSTIME"] = 1] = "ABSTIME"; +})(WasiSubclockflags = exports.WasiSubclockflags || (exports.WasiSubclockflags = {})); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/node_modules/@tybys/wasm-util/lib/cjs/wasi/util.js b/node_modules/@tybys/wasm-util/lib/cjs/wasi/util.js new file mode 100644 index 00000000..4deaec08 --- /dev/null +++ b/node_modules/@tybys/wasm-util/lib/cjs/wasi/util.js @@ -0,0 +1,128 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.unsharedSlice = exports.sleepBreakIf = exports.postMsg = exports.isMainThread = exports.wrapInstanceExports = exports.isPromiseLike = exports.validateInt32 = exports.validateUndefined = exports.validateFunction = exports.validateString = exports.validateBoolean = exports.validateArray = exports.validateObject = void 0; +/* eslint-disable spaced-comment */ +function validateObject(value, name) { + if (value === null || typeof value !== 'object') { + throw new TypeError(`${name} must be an object. Received ${value === null ? 'null' : typeof value}`); + } +} +exports.validateObject = validateObject; +function validateArray(value, name) { + if (!Array.isArray(value)) { + throw new TypeError(`${name} must be an array. Received ${value === null ? 'null' : typeof value}`); + } +} +exports.validateArray = validateArray; +function validateBoolean(value, name) { + if (typeof value !== 'boolean') { + throw new TypeError(`${name} must be a boolean. Received ${value === null ? 'null' : typeof value}`); + } +} +exports.validateBoolean = validateBoolean; +function validateString(value, name) { + if (typeof value !== 'string') { + throw new TypeError(`${name} must be a string. Received ${value === null ? 'null' : typeof value}`); + } +} +exports.validateString = validateString; +function validateFunction(value, name) { + if (typeof value !== 'function') { + throw new TypeError(`${name} must be a function. Received ${value === null ? 'null' : typeof value}`); + } +} +exports.validateFunction = validateFunction; +function validateUndefined(value, name) { + if (value !== undefined) { + throw new TypeError(`${name} must be undefined. Received ${value === null ? 'null' : typeof value}`); + } +} +exports.validateUndefined = validateUndefined; +function validateInt32(value, name, min = -2147483648, max = 2147483647) { + if (typeof value !== 'number') { + throw new TypeError(`${name} must be a number. Received ${value === null ? 'null' : typeof value}`); + } + if (!Number.isInteger(value)) { + throw new RangeError(`${name} must be a integer.`); + } + if (value < min || value > max) { + throw new RangeError(`${name} must be >= ${min} && <= ${max}. Received ${value}`); + } +} +exports.validateInt32 = validateInt32; +function isPromiseLike(obj) { + return !!(obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function'); +} +exports.isPromiseLike = isPromiseLike; +function wrapInstanceExports(exports, mapFn) { + const newExports = Object.create(null); + Object.keys(exports).forEach(name => { + const exportValue = exports[name]; + Object.defineProperty(newExports, name, { + enumerable: true, + value: mapFn(exportValue, name) + }); + }); + return newExports; +} +exports.wrapInstanceExports = wrapInstanceExports; +const _require = /*#__PURE__*/ (function () { + let nativeRequire; + if (typeof __webpack_public_path__ !== 'undefined') { + nativeRequire = (function () { + return typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : undefined; + })(); + } + else { + nativeRequire = (function () { + return typeof __webpack_public_path__ !== 'undefined' ? (typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : undefined) : (typeof require !== 'undefined' ? require : undefined); + })(); + } + return nativeRequire; +})(); +exports.isMainThread = (function () { + let worker_threads; + try { + worker_threads = _require('worker_threads'); + } + catch (_) { } + if (!worker_threads) { + return typeof importScripts === 'undefined'; + } + return worker_threads.isMainThread; +})(); +exports.postMsg = exports.isMainThread + ? () => { } + : /*#__PURE__*/ (function () { + let worker_threads; + try { + worker_threads = _require('worker_threads'); + } + catch (_) { } + if (!worker_threads) { + return postMessage; + } + return function postMessage(data) { + worker_threads.parentPort.postMessage({ data }); + }; + })(); +function sleepBreakIf(delay, breakIf) { + const start = Date.now(); + const end = start + delay; + let ret = false; + while (Date.now() < end) { + if (breakIf()) { + ret = true; + break; + } + } + return ret; +} +exports.sleepBreakIf = sleepBreakIf; +function unsharedSlice(view, start, end) { + return ((typeof SharedArrayBuffer === 'function' && view.buffer instanceof SharedArrayBuffer) || (Object.prototype.toString.call(view.buffer.constructor) === '[object SharedArrayBuffer]')) + ? view.slice(start, end) + : view.subarray(start, end); +} +exports.unsharedSlice = unsharedSlice; +//# sourceMappingURL=util.js.map \ No newline at end of file diff --git a/node_modules/@tybys/wasm-util/lib/cjs/webassembly.js b/node_modules/@tybys/wasm-util/lib/cjs/webassembly.js new file mode 100644 index 00000000..0ae8cf7a --- /dev/null +++ b/node_modules/@tybys/wasm-util/lib/cjs/webassembly.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports._WebAssembly = void 0; +const _WebAssembly = typeof WebAssembly !== 'undefined' + ? WebAssembly + : typeof WXWebAssembly !== 'undefined' + ? WXWebAssembly + : undefined; +exports._WebAssembly = _WebAssembly; +if (!_WebAssembly) { + throw new Error('WebAssembly is not supported in this environment'); +} +//# sourceMappingURL=webassembly.js.map \ No newline at end of file diff --git a/node_modules/@tybys/wasm-util/lib/mjs/asyncify.mjs b/node_modules/@tybys/wasm-util/lib/mjs/asyncify.mjs new file mode 100644 index 00000000..76555615 --- /dev/null +++ b/node_modules/@tybys/wasm-util/lib/mjs/asyncify.mjs @@ -0,0 +1,153 @@ +import { _WebAssembly } from "./webassembly.mjs"; +import { isPromiseLike, wrapInstanceExports } from "./wasi/util.mjs"; +const ignoreNames = [ + 'asyncify_get_state', + 'asyncify_start_rewind', + 'asyncify_start_unwind', + 'asyncify_stop_rewind', + 'asyncify_stop_unwind' +]; +// const wrappedExports = new WeakMap() +var AsyncifyState; +(function (AsyncifyState) { + AsyncifyState[AsyncifyState["NONE"] = 0] = "NONE"; + AsyncifyState[AsyncifyState["UNWINDING"] = 1] = "UNWINDING"; + AsyncifyState[AsyncifyState["REWINDING"] = 2] = "REWINDING"; +})(AsyncifyState || (AsyncifyState = {})); +function tryAllocate(instance, wasm64, size, mallocName) { + if (typeof instance.exports[mallocName] !== 'function' || size <= 0) { + return { + wasm64, + dataPtr: 16, + start: wasm64 ? 32 : 24, + end: 1024 + }; + } + const malloc = instance.exports[mallocName]; + const dataPtr = wasm64 ? Number(malloc(BigInt(16) + BigInt(size))) : malloc(8 + size); + if (dataPtr === 0) { + throw new Error('Allocate asyncify data failed'); + } + return wasm64 + ? { wasm64, dataPtr, start: dataPtr + 16, end: dataPtr + 16 + size } + : { wasm64, dataPtr, start: dataPtr + 8, end: dataPtr + 8 + size }; +} +/** @public */ +export class Asyncify { + constructor() { + this.value = undefined; + this.exports = undefined; + this.dataPtr = 0; + } + init(memory, instance, options) { + var _a, _b; + if (this.exports) { + throw new Error('Asyncify has been initialized'); + } + if (!(memory instanceof _WebAssembly.Memory)) { + throw new TypeError('Require WebAssembly.Memory object'); + } + const exports = instance.exports; + for (let i = 0; i < ignoreNames.length; ++i) { + if (typeof exports[ignoreNames[i]] !== 'function') { + throw new TypeError('Invalid asyncify wasm'); + } + } + let address; + const wasm64 = Boolean(options.wasm64); + if (!options.tryAllocate) { + address = { + wasm64, + dataPtr: 16, + start: wasm64 ? 32 : 24, + end: 1024 + }; + } + else { + if (options.tryAllocate === true) { + address = tryAllocate(instance, wasm64, 4096, 'malloc'); + } + else { + address = tryAllocate(instance, wasm64, (_a = options.tryAllocate.size) !== null && _a !== void 0 ? _a : 4096, (_b = options.tryAllocate.name) !== null && _b !== void 0 ? _b : 'malloc'); + } + } + this.dataPtr = address.dataPtr; + if (wasm64) { + new BigInt64Array(memory.buffer, this.dataPtr).set([BigInt(address.start), BigInt(address.end)]); + } + else { + new Int32Array(memory.buffer, this.dataPtr).set([address.start, address.end]); + } + this.exports = this.wrapExports(exports, options.wrapExports); + const asyncifiedInstance = Object.create(_WebAssembly.Instance.prototype); + Object.defineProperty(asyncifiedInstance, 'exports', { value: this.exports }); + // Object.setPrototypeOf(instance, Instance.prototype) + return asyncifiedInstance; + } + assertState() { + if (this.exports.asyncify_get_state() !== AsyncifyState.NONE) { + throw new Error('Asyncify state error'); + } + } + wrapImportFunction(f) { + // eslint-disable-next-line @typescript-eslint/no-this-alias + const _this = this; + return (function () { + // eslint-disable-next-line no-unreachable-loop + while (_this.exports.asyncify_get_state() === AsyncifyState.REWINDING) { + _this.exports.asyncify_stop_rewind(); + return _this.value; + } + _this.assertState(); + const v = f.apply(this, arguments); + if (!isPromiseLike(v)) + return v; + _this.exports.asyncify_start_unwind(_this.dataPtr); + _this.value = v; + }); + } + wrapImports(imports) { + const importObject = {}; + Object.keys(imports).forEach(k => { + const mod = imports[k]; + const newModule = {}; + Object.keys(mod).forEach(name => { + const importValue = mod[name]; + if (typeof importValue === 'function') { + newModule[name] = this.wrapImportFunction(importValue); + } + else { + newModule[name] = importValue; + } + }); + importObject[k] = newModule; + }); + return importObject; + } + wrapExportFunction(f) { + // eslint-disable-next-line @typescript-eslint/no-this-alias + const _this = this; + return (async function () { + _this.assertState(); + let ret = f.apply(this, arguments); + while (_this.exports.asyncify_get_state() === AsyncifyState.UNWINDING) { + _this.exports.asyncify_stop_unwind(); + _this.value = await _this.value; + _this.assertState(); + _this.exports.asyncify_start_rewind(_this.dataPtr); + ret = f.call(this); + } + _this.assertState(); + return ret; + }); + } + wrapExports(exports, needWrap) { + return wrapInstanceExports(exports, (exportValue, name) => { + let ignore = ignoreNames.indexOf(name) !== -1 || typeof exportValue !== 'function'; + if (Array.isArray(needWrap)) { + ignore = ignore || (needWrap.indexOf(name) === -1); + } + return ignore ? exportValue : this.wrapExportFunction(exportValue); + }); + } +} diff --git a/node_modules/@tybys/wasm-util/lib/mjs/index.mjs b/node_modules/@tybys/wasm-util/lib/mjs/index.mjs new file mode 100644 index 00000000..6ff30a17 --- /dev/null +++ b/node_modules/@tybys/wasm-util/lib/mjs/index.mjs @@ -0,0 +1,9 @@ +/** + * @packageDocumentation + */ +export * from "./asyncify.mjs"; +export * from "./load.mjs"; +export * from "./wasi/index.mjs"; +export * from "./memory.mjs"; +export * from "./jspi.mjs"; +export * from "./wasi/fs.mjs"; diff --git a/node_modules/@tybys/wasm-util/lib/mjs/jspi.mjs b/node_modules/@tybys/wasm-util/lib/mjs/jspi.mjs new file mode 100644 index 00000000..28b54c8e --- /dev/null +++ b/node_modules/@tybys/wasm-util/lib/mjs/jspi.mjs @@ -0,0 +1,39 @@ +import { wrapInstanceExports } from "./wasi/util.mjs"; +import { _WebAssembly } from "./webassembly.mjs"; +function checkWebAssemblyFunction() { + const WebAssemblyFunction = _WebAssembly.Function; + if (typeof WebAssemblyFunction !== 'function') { + throw new Error('WebAssembly.Function is not supported in this environment.' + + ' If you are using V8 based browser like Chrome, try to specify' + + ' --js-flags="--wasm-staging --experimental-wasm-stack-switching"'); + } + return WebAssemblyFunction; +} +/** @public */ +export function wrapAsyncImport(f, parameterType, returnType) { + const WebAssemblyFunction = checkWebAssemblyFunction(); + if (typeof f !== 'function') { + throw new TypeError('Function required'); + } + const parameters = parameterType.slice(0); + parameters.unshift('externref'); + return new WebAssemblyFunction({ parameters, results: returnType }, f, { suspending: 'first' }); +} +/** @public */ +export function wrapAsyncExport(f) { + const WebAssemblyFunction = checkWebAssemblyFunction(); + if (typeof f !== 'function') { + throw new TypeError('Function required'); + } + return new WebAssemblyFunction({ parameters: [...WebAssemblyFunction.type(f).parameters.slice(1)], results: ['externref'] }, f, { promising: 'first' }); +} +/** @public */ +export function wrapExports(exports, needWrap) { + return wrapInstanceExports(exports, (exportValue, name) => { + let ignore = typeof exportValue !== 'function'; + if (Array.isArray(needWrap)) { + ignore = ignore || (needWrap.indexOf(name) === -1); + } + return ignore ? exportValue : wrapAsyncExport(exportValue); + }); +} diff --git a/node_modules/@tybys/wasm-util/lib/mjs/load.mjs b/node_modules/@tybys/wasm-util/lib/mjs/load.mjs new file mode 100644 index 00000000..7fee16a3 --- /dev/null +++ b/node_modules/@tybys/wasm-util/lib/mjs/load.mjs @@ -0,0 +1,89 @@ +import { _WebAssembly } from "./webassembly.mjs"; +import { Asyncify } from "./asyncify.mjs"; +function validateImports(imports) { + if (imports && typeof imports !== 'object') { + throw new TypeError('imports must be an object or undefined'); + } +} +function fetchWasm(urlOrBuffer, imports) { + if (typeof wx !== 'undefined' && typeof __wxConfig !== 'undefined') { + return _WebAssembly.instantiate(urlOrBuffer, imports); + } + return fetch(urlOrBuffer) + .then(response => response.arrayBuffer()) + .then(buffer => _WebAssembly.instantiate(buffer, imports)); +} +/** @public */ +export function load(wasmInput, imports) { + validateImports(imports); + imports = imports !== null && imports !== void 0 ? imports : {}; + let source; + if (wasmInput instanceof ArrayBuffer || ArrayBuffer.isView(wasmInput)) { + return _WebAssembly.instantiate(wasmInput, imports); + } + if (wasmInput instanceof _WebAssembly.Module) { + return _WebAssembly.instantiate(wasmInput, imports).then((instance) => { + return { instance, module: wasmInput }; + }); + } + if (typeof wasmInput !== 'string' && !(wasmInput instanceof URL)) { + throw new TypeError('Invalid source'); + } + if (typeof _WebAssembly.instantiateStreaming === 'function') { + let responsePromise; + try { + responsePromise = fetch(wasmInput); + source = _WebAssembly.instantiateStreaming(responsePromise, imports).catch(() => { + return fetchWasm(wasmInput, imports); + }); + } + catch (_) { + source = fetchWasm(wasmInput, imports); + } + } + else { + source = fetchWasm(wasmInput, imports); + } + return source; +} +/** @public */ +export function asyncifyLoad(asyncify, urlOrBuffer, imports) { + validateImports(imports); + imports = imports !== null && imports !== void 0 ? imports : {}; + const asyncifyHelper = new Asyncify(); + imports = asyncifyHelper.wrapImports(imports); + return load(urlOrBuffer, imports).then(source => { + var _a; + const memory = source.instance.exports.memory || ((_a = imports.env) === null || _a === void 0 ? void 0 : _a.memory); + return { module: source.module, instance: asyncifyHelper.init(memory, source.instance, asyncify) }; + }); +} +/** @public */ +export function loadSync(wasmInput, imports) { + validateImports(imports); + imports = imports !== null && imports !== void 0 ? imports : {}; + let module; + if ((wasmInput instanceof ArrayBuffer) || ArrayBuffer.isView(wasmInput)) { + module = new _WebAssembly.Module(wasmInput); + } + else if (wasmInput instanceof WebAssembly.Module) { + module = wasmInput; + } + else { + throw new TypeError('Invalid source'); + } + const instance = new _WebAssembly.Instance(module, imports); + const source = { instance, module }; + return source; +} +/** @public */ +export function asyncifyLoadSync(asyncify, buffer, imports) { + var _a; + validateImports(imports); + imports = imports !== null && imports !== void 0 ? imports : {}; + const asyncifyHelper = new Asyncify(); + imports = asyncifyHelper.wrapImports(imports); + const source = loadSync(buffer, imports); + const memory = source.instance.exports.memory || ((_a = imports.env) === null || _a === void 0 ? void 0 : _a.memory); + return { module: source.module, instance: asyncifyHelper.init(memory, source.instance, asyncify) }; +} diff --git a/node_modules/@tybys/wasm-util/lib/mjs/memory.mjs b/node_modules/@tybys/wasm-util/lib/mjs/memory.mjs new file mode 100644 index 00000000..72050f7a --- /dev/null +++ b/node_modules/@tybys/wasm-util/lib/mjs/memory.mjs @@ -0,0 +1,28 @@ +import { _WebAssembly } from "./webassembly.mjs"; +/** @public */ +export const WebAssemblyMemory = /*#__PURE__*/ (function () { return _WebAssembly.Memory; })(); +/** @public */ +export class Memory extends WebAssemblyMemory { + // eslint-disable-next-line @typescript-eslint/no-useless-constructor + constructor(descriptor) { + super(descriptor); + } + get HEAP8() { return new Int8Array(super.buffer); } + get HEAPU8() { return new Uint8Array(super.buffer); } + get HEAP16() { return new Int16Array(super.buffer); } + get HEAPU16() { return new Uint16Array(super.buffer); } + get HEAP32() { return new Int32Array(super.buffer); } + get HEAPU32() { return new Uint32Array(super.buffer); } + get HEAP64() { return new BigInt64Array(super.buffer); } + get HEAPU64() { return new BigUint64Array(super.buffer); } + get HEAPF32() { return new Float32Array(super.buffer); } + get HEAPF64() { return new Float64Array(super.buffer); } + get view() { return new DataView(super.buffer); } +} +/** @public */ +export function extendMemory(memory) { + if (Object.getPrototypeOf(memory) === _WebAssembly.Memory.prototype) { + Object.setPrototypeOf(memory, Memory.prototype); + } + return memory; +} diff --git a/node_modules/@tybys/wasm-util/lib/mjs/wasi/error.mjs b/node_modules/@tybys/wasm-util/lib/mjs/wasi/error.mjs new file mode 100644 index 00000000..5c08120a --- /dev/null +++ b/node_modules/@tybys/wasm-util/lib/mjs/wasi/error.mjs @@ -0,0 +1,97 @@ +import { WasiErrno } from "./types.mjs"; +export function strerror(errno) { + switch (errno) { + case WasiErrno.ESUCCESS: return 'Success'; + case WasiErrno.E2BIG: return 'Argument list too long'; + case WasiErrno.EACCES: return 'Permission denied'; + case WasiErrno.EADDRINUSE: return 'Address in use'; + case WasiErrno.EADDRNOTAVAIL: return 'Address not available'; + case WasiErrno.EAFNOSUPPORT: return 'Address family not supported by protocol'; + case WasiErrno.EAGAIN: return 'Resource temporarily unavailable'; + case WasiErrno.EALREADY: return 'Operation already in progress'; + case WasiErrno.EBADF: return 'Bad file descriptor'; + case WasiErrno.EBADMSG: return 'Bad message'; + case WasiErrno.EBUSY: return 'Resource busy'; + case WasiErrno.ECANCELED: return 'Operation canceled'; + case WasiErrno.ECHILD: return 'No child process'; + case WasiErrno.ECONNABORTED: return 'Connection aborted'; + case WasiErrno.ECONNREFUSED: return 'Connection refused'; + case WasiErrno.ECONNRESET: return 'Connection reset by peer'; + case WasiErrno.EDEADLK: return 'Resource deadlock would occur'; + case WasiErrno.EDESTADDRREQ: return 'Destination address required'; + case WasiErrno.EDOM: return 'Domain error'; + case WasiErrno.EDQUOT: return 'Quota exceeded'; + case WasiErrno.EEXIST: return 'File exists'; + case WasiErrno.EFAULT: return 'Bad address'; + case WasiErrno.EFBIG: return 'File too large'; + case WasiErrno.EHOSTUNREACH: return 'Host is unreachable'; + case WasiErrno.EIDRM: return 'Identifier removed'; + case WasiErrno.EILSEQ: return 'Illegal byte sequence'; + case WasiErrno.EINPROGRESS: return 'Operation in progress'; + case WasiErrno.EINTR: return 'Interrupted system call'; + case WasiErrno.EINVAL: return 'Invalid argument'; + case WasiErrno.EIO: return 'I/O error'; + case WasiErrno.EISCONN: return 'Socket is connected'; + case WasiErrno.EISDIR: return 'Is a directory'; + case WasiErrno.ELOOP: return 'Symbolic link loop'; + case WasiErrno.EMFILE: return 'No file descriptors available'; + case WasiErrno.EMLINK: return 'Too many links'; + case WasiErrno.EMSGSIZE: return 'Message too large'; + case WasiErrno.EMULTIHOP: return 'Multihop attempted'; + case WasiErrno.ENAMETOOLONG: return 'Filename too long'; + case WasiErrno.ENETDOWN: return 'Network is down'; + case WasiErrno.ENETRESET: return 'Connection reset by network'; + case WasiErrno.ENETUNREACH: return 'Network unreachable'; + case WasiErrno.ENFILE: return 'Too many files open in system'; + case WasiErrno.ENOBUFS: return 'No buffer space available'; + case WasiErrno.ENODEV: return 'No such device'; + case WasiErrno.ENOENT: return 'No such file or directory'; + case WasiErrno.ENOEXEC: return 'Exec format error'; + case WasiErrno.ENOLCK: return 'No locks available'; + case WasiErrno.ENOLINK: return 'Link has been severed'; + case WasiErrno.ENOMEM: return 'Out of memory'; + case WasiErrno.ENOMSG: return 'No message of the desired type'; + case WasiErrno.ENOPROTOOPT: return 'Protocol not available'; + case WasiErrno.ENOSPC: return 'No space left on device'; + case WasiErrno.ENOSYS: return 'Function not implemented'; + case WasiErrno.ENOTCONN: return 'Socket not connected'; + case WasiErrno.ENOTDIR: return 'Not a directory'; + case WasiErrno.ENOTEMPTY: return 'Directory not empty'; + case WasiErrno.ENOTRECOVERABLE: return 'State not recoverable'; + case WasiErrno.ENOTSOCK: return 'Not a socket'; + case WasiErrno.ENOTSUP: return 'Not supported'; + case WasiErrno.ENOTTY: return 'Not a tty'; + case WasiErrno.ENXIO: return 'No such device or address'; + case WasiErrno.EOVERFLOW: return 'Value too large for data type'; + case WasiErrno.EOWNERDEAD: return 'Previous owner died'; + case WasiErrno.EPERM: return 'Operation not permitted'; + case WasiErrno.EPIPE: return 'Broken pipe'; + case WasiErrno.EPROTO: return 'Protocol error'; + case WasiErrno.EPROTONOSUPPORT: return 'Protocol not supported'; + case WasiErrno.EPROTOTYPE: return 'Protocol wrong type for socket'; + case WasiErrno.ERANGE: return 'Result not representable'; + case WasiErrno.EROFS: return 'Read-only file system'; + case WasiErrno.ESPIPE: return 'Invalid seek'; + case WasiErrno.ESRCH: return 'No such process'; + case WasiErrno.ESTALE: return 'Stale file handle'; + case WasiErrno.ETIMEDOUT: return 'Operation timed out'; + case WasiErrno.ETXTBSY: return 'Text file busy'; + case WasiErrno.EXDEV: return 'Cross-device link'; + case WasiErrno.ENOTCAPABLE: return 'Capabilities insufficient'; + default: return 'Unknown error'; + } +} +export class WasiError extends Error { + constructor(message, errno) { + super(message); + this.errno = errno; + } + getErrorMessage() { + return strerror(this.errno); + } +} +Object.defineProperty(WasiError.prototype, 'name', { + configurable: true, + writable: true, + value: 'WasiError' +}); diff --git a/node_modules/@tybys/wasm-util/lib/mjs/wasi/fd.mjs b/node_modules/@tybys/wasm-util/lib/mjs/wasi/fd.mjs new file mode 100644 index 00000000..9ff3d032 --- /dev/null +++ b/node_modules/@tybys/wasm-util/lib/mjs/wasi/fd.mjs @@ -0,0 +1,256 @@ +import { WasiErrno, FileControlFlag, WasiFileType, WasiWhence } from "./types.mjs"; +import { getRights } from "./rights.mjs"; +import { WasiError } from "./error.mjs"; +export function concatBuffer(buffers, size) { + let total = 0; + if (typeof size === 'number' && size >= 0) { + total = size; + } + else { + for (let i = 0; i < buffers.length; i++) { + const buffer = buffers[i]; + total += buffer.length; + } + } + let pos = 0; + const ret = new Uint8Array(total); + for (let i = 0; i < buffers.length; i++) { + const buffer = buffers[i]; + ret.set(buffer, pos); + pos += buffer.length; + } + return ret; +} +export class FileDescriptor { + constructor(id, fd, path, realPath, type, rightsBase, rightsInheriting, preopen) { + this.id = id; + this.fd = fd; + this.path = path; + this.realPath = realPath; + this.type = type; + this.rightsBase = rightsBase; + this.rightsInheriting = rightsInheriting; + this.preopen = preopen; + this.pos = BigInt(0); + this.size = BigInt(0); + } + seek(offset, whence) { + if (whence === WasiWhence.SET) { + this.pos = BigInt(offset); + } + else if (whence === WasiWhence.CUR) { + this.pos += BigInt(offset); + } + else if (whence === WasiWhence.END) { + this.pos = BigInt(this.size) - BigInt(offset); + } + else { + throw new WasiError('Unknown whence', WasiErrno.EIO); + } + return this.pos; + } +} +export class StandardOutput extends FileDescriptor { + constructor(log, id, fd, path, realPath, type, rightsBase, rightsInheriting, preopen) { + super(id, fd, path, realPath, type, rightsBase, rightsInheriting, preopen); + this._log = log; + this._buf = null; + } + write(buffer) { + const originalBuffer = buffer; + if (this._buf) { + buffer = concatBuffer([this._buf, buffer]); + this._buf = null; + } + if (buffer.indexOf(10) === -1) { + this._buf = buffer; + return originalBuffer.byteLength; + } + let written = 0; + let lastBegin = 0; + let index; + while ((index = buffer.indexOf(10, written)) !== -1) { + const str = new TextDecoder().decode(buffer.subarray(lastBegin, index)); + this._log(str); + written += index - lastBegin + 1; + lastBegin = index + 1; + } + if (written < buffer.length) { + this._buf = buffer.slice(written); + } + return originalBuffer.byteLength; + } +} +export function toFileType(stat) { + if (stat.isBlockDevice()) + return WasiFileType.BLOCK_DEVICE; + if (stat.isCharacterDevice()) + return WasiFileType.CHARACTER_DEVICE; + if (stat.isDirectory()) + return WasiFileType.DIRECTORY; + if (stat.isSocket()) + return WasiFileType.SOCKET_STREAM; + if (stat.isFile()) + return WasiFileType.REGULAR_FILE; + if (stat.isSymbolicLink()) + return WasiFileType.SYMBOLIC_LINK; + return WasiFileType.UNKNOWN; +} +export function toFileStat(view, buf, stat) { + view.setBigUint64(buf, stat.dev, true); + view.setBigUint64(buf + 8, stat.ino, true); + view.setBigUint64(buf + 16, BigInt(toFileType(stat)), true); + view.setBigUint64(buf + 24, stat.nlink, true); + view.setBigUint64(buf + 32, stat.size, true); + view.setBigUint64(buf + 40, stat.atimeMs * BigInt(1000000), true); + view.setBigUint64(buf + 48, stat.mtimeMs * BigInt(1000000), true); + view.setBigUint64(buf + 56, stat.ctimeMs * BigInt(1000000), true); +} +export class FileDescriptorTable { + constructor(options) { + this.used = 0; + this.size = options.size; + this.fds = Array(options.size); + this.stdio = [options.in, options.out, options.err]; + this.print = options.print; + this.printErr = options.printErr; + this.insertStdio(options.in, 0, ''); + this.insertStdio(options.out, 1, ''); + this.insertStdio(options.err, 2, ''); + } + insertStdio(fd, expected, name) { + const type = WasiFileType.CHARACTER_DEVICE; + const { base, inheriting } = getRights(this.stdio, fd, FileControlFlag.O_RDWR, type); + const wrap = this.insert(fd, name, name, type, base, inheriting, 0); + if (wrap.id !== expected) { + throw new WasiError(`id: ${wrap.id} !== expected: ${expected}`, WasiErrno.EBADF); + } + return wrap; + } + insert(fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen) { + var _a, _b; + let index = -1; + if (this.used >= this.size) { + const newSize = this.size * 2; + this.fds.length = newSize; + index = this.size; + this.size = newSize; + } + else { + for (let i = 0; i < this.size; ++i) { + if (this.fds[i] == null) { + index = i; + break; + } + } + } + let entry; + if (mappedPath === '') { + entry = new StandardOutput((_a = this.print) !== null && _a !== void 0 ? _a : console.log, index, fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen); + } + else if (mappedPath === '') { + entry = new StandardOutput((_b = this.printErr) !== null && _b !== void 0 ? _b : console.error, index, fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen); + } + else { + entry = new FileDescriptor(index, fd, mappedPath, realPath, type, rightsBase, rightsInheriting, preopen); + } + this.fds[index] = entry; + this.used++; + return entry; + } + get(id, base, inheriting) { + if (id >= this.size) { + throw new WasiError('Invalid fd', WasiErrno.EBADF); + } + const entry = this.fds[id]; + if (!entry || entry.id !== id) { + throw new WasiError('Bad file descriptor', WasiErrno.EBADF); + } + /* Validate that the fd has the necessary rights. */ + if ((~entry.rightsBase & base) !== BigInt(0) || (~entry.rightsInheriting & inheriting) !== BigInt(0)) { + throw new WasiError('Capabilities insufficient', WasiErrno.ENOTCAPABLE); + } + return entry; + } + remove(id) { + if (id >= this.size) { + throw new WasiError('Invalid fd', WasiErrno.EBADF); + } + const entry = this.fds[id]; + if (!entry || entry.id !== id) { + throw new WasiError('Bad file descriptor', WasiErrno.EBADF); + } + this.fds[id] = undefined; + this.used--; + } +} +export class SyncTable extends FileDescriptorTable { + constructor(options) { + super(options); + this.fs = options.fs; + } + getFileTypeByFd(fd) { + const stats = this.fs.fstatSync(fd, { bigint: true }); + return toFileType(stats); + } + insertPreopen(fd, mappedPath, realPath) { + const type = this.getFileTypeByFd(fd); + if (type !== WasiFileType.DIRECTORY) { + throw new WasiError(`Preopen not dir: ["${mappedPath}", "${realPath}"]`, WasiErrno.ENOTDIR); + } + const result = getRights(this.stdio, fd, 0, type); + return this.insert(fd, mappedPath, realPath, type, result.base, result.inheriting, 1); + } + renumber(dst, src) { + if (dst === src) + return; + if (dst >= this.size || src >= this.size) { + throw new WasiError('Invalid fd', WasiErrno.EBADF); + } + const dstEntry = this.fds[dst]; + const srcEntry = this.fds[src]; + if (!dstEntry || !srcEntry || dstEntry.id !== dst || srcEntry.id !== src) { + throw new WasiError('Invalid fd', WasiErrno.EBADF); + } + this.fs.closeSync(dstEntry.fd); + this.fds[dst] = this.fds[src]; + this.fds[dst].id = dst; + this.fds[src] = undefined; + this.used--; + } +} +export class AsyncTable extends FileDescriptorTable { + // eslint-disable-next-line @typescript-eslint/no-useless-constructor + constructor(options) { + super(options); + } + async getFileTypeByFd(fd) { + const stats = await fd.stat({ bigint: true }); + return toFileType(stats); + } + async insertPreopen(fd, mappedPath, realPath) { + const type = await this.getFileTypeByFd(fd); + if (type !== WasiFileType.DIRECTORY) { + throw new WasiError(`Preopen not dir: ["${mappedPath}", "${realPath}"]`, WasiErrno.ENOTDIR); + } + const result = getRights(this.stdio, fd.fd, 0, type); + return this.insert(fd, mappedPath, realPath, type, result.base, result.inheriting, 1); + } + async renumber(dst, src) { + if (dst === src) + return; + if (dst >= this.size || src >= this.size) { + throw new WasiError('Invalid fd', WasiErrno.EBADF); + } + const dstEntry = this.fds[dst]; + const srcEntry = this.fds[src]; + if (!dstEntry || !srcEntry || dstEntry.id !== dst || srcEntry.id !== src) { + throw new WasiError('Invalid fd', WasiErrno.EBADF); + } + await dstEntry.fd.close(); + this.fds[dst] = this.fds[src]; + this.fds[dst].id = dst; + this.fds[src] = undefined; + this.used--; + } +} diff --git a/node_modules/@tybys/wasm-util/lib/mjs/wasi/fs.mjs b/node_modules/@tybys/wasm-util/lib/mjs/wasi/fs.mjs new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/node_modules/@tybys/wasm-util/lib/mjs/wasi/fs.mjs @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@tybys/wasm-util/lib/mjs/wasi/index.mjs b/node_modules/@tybys/wasm-util/lib/mjs/wasi/index.mjs new file mode 100644 index 00000000..127ff997 --- /dev/null +++ b/node_modules/@tybys/wasm-util/lib/mjs/wasi/index.mjs @@ -0,0 +1,186 @@ +import { WASI as WASIPreview1 } from "./preview1.mjs"; +import { validateObject, validateArray, validateBoolean, validateFunction, validateUndefined, validateString } from "./util.mjs"; +// eslint-disable-next-line spaced-comment +const kEmptyObject = /*#__PURE__*/ Object.freeze(/*#__PURE__*/ Object.create(null)); +const kExitCode = Symbol('kExitCode'); +const kSetMemory = Symbol('kSetMemory'); +const kStarted = Symbol('kStarted'); +const kInstance = Symbol('kInstance'); +const kBindingName = Symbol('kBindingName'); +function validateOptions(options) { + var _a; + validateObject(options, 'options'); + let _WASI; + if (options.version !== undefined) { + validateString(options.version, 'options.version'); + switch (options.version) { + case 'unstable': + _WASI = WASIPreview1; + this[kBindingName] = 'wasi_unstable'; + break; + case 'preview1': + _WASI = WASIPreview1; + this[kBindingName] = 'wasi_snapshot_preview1'; + break; + default: + throw new TypeError(`unsupported WASI version "${options.version}"`); + } + } + else { + _WASI = WASIPreview1; + this[kBindingName] = 'wasi_snapshot_preview1'; + } + if (options.args !== undefined) { + validateArray(options.args, 'options.args'); + } + const args = ((_a = options.args) !== null && _a !== void 0 ? _a : []).map(String); + const env = []; + if (options.env !== undefined) { + validateObject(options.env, 'options.env'); + Object.entries(options.env).forEach(({ 0: key, 1: value }) => { + if (value !== undefined) { + env.push(`${key}=${value}`); + } + }); + } + const preopens = []; + if (options.preopens !== undefined) { + validateObject(options.preopens, 'options.preopens'); + Object.entries(options.preopens).forEach(({ 0: key, 1: value }) => preopens.push({ mappedPath: String(key), realPath: String(value) })); + } + if (preopens.length > 0) { + if (options.fs === undefined) { + throw new Error('filesystem is disabled, can not preopen directory'); + } + try { + validateObject(options.fs, 'options.fs'); + } + catch (_) { + throw new TypeError('Node.js fs like implementation is not provided'); + } + } + // if (options.filesystem !== undefined) { + // validateObject(options.filesystem, 'options.filesystem') + // validateString(options.filesystem.type, 'options.filesystem.type') + // if (options.filesystem.type !== 'memfs' && options.filesystem.type !== 'file-system-access-api') { + // throw new Error(`Filesystem type ${(options.filesystem as any).type as string} is not supported, only "memfs" and "file-system-access-api" is supported currently`) + // } + // try { + // validateObject(options.filesystem.fs, 'options.filesystem.fs') + // } catch (_) { + // throw new Error('Node.js fs like implementation is not provided') + // } + // } + if (options.print !== undefined) + validateFunction(options.print, 'options.print'); + if (options.printErr !== undefined) + validateFunction(options.printErr, 'options.printErr'); + if (options.returnOnExit !== undefined) { + validateBoolean(options.returnOnExit, 'options.returnOnExit'); + } + // const { stdin = 0, stdout = 1, stderr = 2 } = options + // validateInt32(stdin, 'options.stdin', 0) + // validateInt32(stdout, 'options.stdout', 0) + // validateInt32(stderr, 'options.stderr', 0) + // const stdio = [stdin, stdout, stderr] as const + const stdio = [0, 1, 2]; + return { + args, + env, + preopens, + stdio, + _WASI + }; +} +function initWASI(setMemory, wrap) { + this[kSetMemory] = setMemory; + this.wasiImport = wrap; + this[kStarted] = false; + this[kExitCode] = 0; + this[kInstance] = undefined; +} +/** @public */ +export class WASI { + constructor(options = kEmptyObject) { + const { args, env, preopens, stdio, _WASI } = validateOptions.call(this, options); + const wrap = _WASI.createSync(args, env, preopens, stdio, options.fs, options.print, options.printErr); + const setMemory = wrap._setMemory; + delete wrap._setMemory; + initWASI.call(this, setMemory, wrap); + if (options.returnOnExit) { + wrap.proc_exit = wasiReturnOnProcExit.bind(this); + } + } + finalizeBindings(instance, _a) { + var _b; + var { memory = (_b = instance === null || instance === void 0 ? void 0 : instance.exports) === null || _b === void 0 ? void 0 : _b.memory } = _a === void 0 ? {} : _a; + if (this[kStarted]) { + throw new Error('WASI instance has already started'); + } + validateObject(instance, 'instance'); + validateObject(instance.exports, 'instance.exports'); + this[kSetMemory](memory); + this[kInstance] = instance; + this[kStarted] = true; + } + // Must not export _initialize, must export _start + start(instance) { + this.finalizeBindings(instance); + const { _start, _initialize } = this[kInstance].exports; + validateFunction(_start, 'instance.exports._start'); + validateUndefined(_initialize, 'instance.exports._initialize'); + let ret; + try { + ret = _start(); + } + catch (err) { + if (err !== kExitCode) { + throw err; + } + } + if (ret instanceof Promise) { + return ret.then(() => this[kExitCode], (err) => { + if (err !== kExitCode) { + throw err; + } + return this[kExitCode]; + }); + } + return this[kExitCode]; + } + // Must not export _start, may optionally export _initialize + initialize(instance) { + this.finalizeBindings(instance); + const { _start, _initialize } = this[kInstance].exports; + validateUndefined(_start, 'instance.exports._start'); + if (_initialize !== undefined) { + validateFunction(_initialize, 'instance.exports._initialize'); + return _initialize(); + } + } + getImportObject() { + return { [this[kBindingName]]: this.wasiImport }; + } +} +function wasiReturnOnProcExit(rval) { + this[kExitCode] = rval; + // eslint-disable-next-line @typescript-eslint/no-throw-literal + throw kExitCode; +} +/** @public */ +export async function createAsyncWASI(options = kEmptyObject) { + const _this = Object.create(WASI.prototype); + const { args, env, preopens, stdio, _WASI } = validateOptions.call(_this, options); + if (options.asyncify !== undefined) { + validateObject(options.asyncify, 'options.asyncify'); + validateFunction(options.asyncify.wrapImportFunction, 'options.asyncify.wrapImportFunction'); + } + const wrap = await _WASI.createAsync(args, env, preopens, stdio, options.fs, options.print, options.printErr, options.asyncify); + const setMemory = wrap._setMemory; + delete wrap._setMemory; + initWASI.call(_this, setMemory, wrap); + if (options.returnOnExit) { + wrap.proc_exit = wasiReturnOnProcExit.bind(_this); + } + return _this; +} diff --git a/node_modules/@tybys/wasm-util/lib/mjs/wasi/path.mjs b/node_modules/@tybys/wasm-util/lib/mjs/wasi/path.mjs new file mode 100644 index 00000000..dca6e11d --- /dev/null +++ b/node_modules/@tybys/wasm-util/lib/mjs/wasi/path.mjs @@ -0,0 +1,168 @@ +import { validateString } from "./util.mjs"; +const CHAR_DOT = 46; /* . */ +const CHAR_FORWARD_SLASH = 47; /* / */ +function isPosixPathSeparator(code) { + return code === CHAR_FORWARD_SLASH; +} +function normalizeString(path, allowAboveRoot, separator, isPathSeparator) { + let res = ''; + let lastSegmentLength = 0; + let lastSlash = -1; + let dots = 0; + let code = 0; + for (let i = 0; i <= path.length; ++i) { + if (i < path.length) { + code = path.charCodeAt(i); + } + else if (isPathSeparator(code)) { + break; + } + else { + code = CHAR_FORWARD_SLASH; + } + if (isPathSeparator(code)) { + if (lastSlash === i - 1 || dots === 1) { + // NOOP + } + else if (dots === 2) { + if (res.length < 2 || lastSegmentLength !== 2 || + res.charCodeAt(res.length - 1) !== CHAR_DOT || + res.charCodeAt(res.length - 2) !== CHAR_DOT) { + if (res.length > 2) { + const lastSlashIndex = res.indexOf(separator); + if (lastSlashIndex === -1) { + res = ''; + lastSegmentLength = 0; + } + else { + res = res.slice(0, lastSlashIndex); + lastSegmentLength = + res.length - 1 - res.indexOf(separator); + } + lastSlash = i; + dots = 0; + continue; + } + else if (res.length !== 0) { + res = ''; + lastSegmentLength = 0; + lastSlash = i; + dots = 0; + continue; + } + } + if (allowAboveRoot) { + res += res.length > 0 ? `${separator}..` : '..'; + lastSegmentLength = 2; + } + } + else { + if (res.length > 0) { + res += `${separator}${path.slice(lastSlash + 1, i)}`; + } + else { + res = path.slice(lastSlash + 1, i); + } + lastSegmentLength = i - lastSlash - 1; + } + lastSlash = i; + dots = 0; + } + else if (code === CHAR_DOT && dots !== -1) { + ++dots; + } + else { + dots = -1; + } + } + return res; +} +export function resolve(...args) { + let resolvedPath = ''; + let resolvedAbsolute = false; + for (let i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) { + const path = i >= 0 ? args[i] : '/'; + validateString(path, 'path'); + // Skip empty entries + if (path.length === 0) { + continue; + } + resolvedPath = `${path}/${resolvedPath}`; + resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + } + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + // Normalize the path + resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, '/', isPosixPathSeparator); + if (resolvedAbsolute) { + return `/${resolvedPath}`; + } + return resolvedPath.length > 0 ? resolvedPath : '.'; +} +export function relative(from, to) { + validateString(from, 'from'); + validateString(to, 'to'); + if (from === to) + return ''; + // Trim leading forward slashes. + from = resolve(from); + to = resolve(to); + if (from === to) + return ''; + const fromStart = 1; + const fromEnd = from.length; + const fromLen = fromEnd - fromStart; + const toStart = 1; + const toLen = to.length - toStart; + // Compare paths to find the longest common path from root + const length = (fromLen < toLen ? fromLen : toLen); + let lastCommonSep = -1; + let i = 0; + for (; i < length; i++) { + const fromCode = from.charCodeAt(fromStart + i); + if (fromCode !== to.charCodeAt(toStart + i)) { + break; + } + else if (fromCode === CHAR_FORWARD_SLASH) { + lastCommonSep = i; + } + } + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === CHAR_FORWARD_SLASH) { + // We get here if `from` is the exact base path for `to`. + // For example: from='/foo/bar'; to='/foo/bar/baz' + return to.slice(toStart + i + 1); + } + if (i === 0) { + // We get here if `from` is the root + // For example: from='/'; to='/foo' + return to.slice(toStart + i); + } + } + else if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) { + // We get here if `to` is the exact base path for `from`. + // For example: from='/foo/bar/baz'; to='/foo/bar' + lastCommonSep = i; + } + else if (i === 0) { + // We get here if `to` is the root. + // For example: from='/foo/bar'; to='/' + lastCommonSep = 0; + } + } + } + let out = ''; + // Generate the relative path based on the path difference between `to` + // and `from`. + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || + from.charCodeAt(i) === CHAR_FORWARD_SLASH) { + out += out.length === 0 ? '..' : '/..'; + } + } + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts. + return `${out}${to.slice(toStart + lastCommonSep)}`; +} diff --git a/node_modules/@tybys/wasm-util/lib/mjs/wasi/preview1.mjs b/node_modules/@tybys/wasm-util/lib/mjs/wasi/preview1.mjs new file mode 100644 index 00000000..115a800c --- /dev/null +++ b/node_modules/@tybys/wasm-util/lib/mjs/wasi/preview1.mjs @@ -0,0 +1,1561 @@ +import { _WebAssembly } from "../webassembly.mjs"; +import { resolve } from "./path.mjs"; +import { WasiErrno, WasiRights, FileControlFlag, WasiFileControlFlag, WasiFdFlag, WasiFileType, WasiClockid, WasiFstFlag, WasiEventType, WasiSubclockflags } from "./types.mjs"; +import { concatBuffer, toFileStat, AsyncTable, SyncTable } from "./fd.mjs"; +import { WasiError } from "./error.mjs"; +import { isPromiseLike, sleepBreakIf, unsharedSlice } from "./util.mjs"; +import { getRights } from "./rights.mjs"; +import { extendMemory } from "../memory.mjs"; +import { wrapAsyncImport } from "../jspi.mjs"; +function copyMemory(targets, src) { + if (targets.length === 0 || src.length === 0) + return 0; + let copied = 0; + let left = src.length - copied; + for (let i = 0; i < targets.length; ++i) { + const target = targets[i]; + if (left < target.length) { + target.set(src.subarray(copied, copied + left), 0); + copied += left; + left = 0; + return copied; + } + target.set(src.subarray(copied, copied + target.length), 0); + copied += target.length; + left -= target.length; + } + return copied; +} +const _memory = new WeakMap(); +const _wasi = new WeakMap(); +const _fs = new WeakMap(); +function getMemory(wasi) { + return _memory.get(wasi); +} +function getFs(wasi) { + const fs = _fs.get(wasi); + if (!fs) + throw new Error('filesystem is unavailable'); + return fs; +} +function handleError(err) { + if (err instanceof WasiError) { + if (process.env.NODE_ENV !== 'production') { + console.warn(err); + } + return err.errno; + } + switch (err.code) { + case 'ENOENT': return WasiErrno.ENOENT; + case 'EBADF': return WasiErrno.EBADF; + case 'EINVAL': return WasiErrno.EINVAL; + case 'EPERM': return WasiErrno.EPERM; + case 'EPROTO': return WasiErrno.EPROTO; + case 'EEXIST': return WasiErrno.EEXIST; + case 'ENOTDIR': return WasiErrno.ENOTDIR; + case 'EMFILE': return WasiErrno.EMFILE; + case 'EACCES': return WasiErrno.EACCES; + case 'EISDIR': return WasiErrno.EISDIR; + case 'ENOTEMPTY': return WasiErrno.ENOTEMPTY; + case 'ENOSYS': return WasiErrno.ENOSYS; + } + throw err; +} +function defineName(name, f) { + Object.defineProperty(f, 'name', { value: name }); + return f; +} +function tryCall(f, wasi, args) { + let r; + try { + r = f.apply(wasi, args); + } + catch (err) { + return handleError(err); + } + if (isPromiseLike(r)) { + return r.then(_ => _, handleError); + } + return r; +} +function syscallWrap(self, name, f) { + let debug = false; + const NODE_DEBUG_NATIVE = (() => { + try { + return process.env.NODE_DEBUG_NATIVE; + } + catch (_) { + return undefined; + } + })(); + if (typeof NODE_DEBUG_NATIVE === 'string' && NODE_DEBUG_NATIVE.split(',').includes('wasi')) { + debug = true; + } + return debug + ? defineName(name, function () { + const args = Array.prototype.slice.call(arguments); + let debugArgs = [`${name}(${Array.from({ length: arguments.length }).map(() => '%d').join(', ')})`]; + debugArgs = debugArgs.concat(args); + console.debug.apply(console, debugArgs); + return tryCall(f, self, args); + }) + : defineName(name, function () { + return tryCall(f, self, arguments); + }); +} +function resolvePathSync(fs, fileDescriptor, path, flags) { + let resolvedPath = resolve(fileDescriptor.realPath, path); + if ((flags & 1) === 1) { + try { + resolvedPath = fs.readlinkSync(resolvedPath); + } + catch (err) { + if (err.code !== 'EINVAL' && err.code !== 'ENOENT') { + throw err; + } + } + } + return resolvedPath; +} +async function resolvePathAsync(fs, fileDescriptor, path, flags) { + let resolvedPath = resolve(fileDescriptor.realPath, path); + if ((flags & 1) === 1) { + try { + resolvedPath = await fs.promises.readlink(resolvedPath); + } + catch (err) { + if (err.code !== 'EINVAL' && err.code !== 'ENOENT') { + throw err; + } + } + } + return resolvedPath; +} +// eslint-disable-next-line spaced-comment +const encoder = /*#__PURE__*/ new TextEncoder(); +// eslint-disable-next-line spaced-comment +const decoder = /*#__PURE__*/ new TextDecoder(); +const INT64_MAX = (BigInt(1) << BigInt(63)) - BigInt(1); +function readStdin() { + const value = window.prompt(); + if (value === null) + return new Uint8Array(); + const buffer = new TextEncoder().encode(value + '\n'); + return buffer; +} +function validateFstFlagsOrReturn(flags) { + return (Boolean((flags) & ~(WasiFstFlag.SET_ATIM | WasiFstFlag.SET_ATIM_NOW | + WasiFstFlag.SET_MTIM | WasiFstFlag.SET_MTIM_NOW)) || + ((flags) & (WasiFstFlag.SET_ATIM | WasiFstFlag.SET_ATIM_NOW)) === + (WasiFstFlag.SET_ATIM | WasiFstFlag.SET_ATIM_NOW) || + ((flags) & (WasiFstFlag.SET_MTIM | WasiFstFlag.SET_MTIM_NOW)) === + (WasiFstFlag.SET_MTIM | WasiFstFlag.SET_MTIM_NOW)); +} +export class WASI { + constructor(args, env, fds, asyncFs, fs, asyncify) { + this.args_get = syscallWrap(this, 'args_get', function (argv, argv_buf) { + argv = Number(argv); + argv_buf = Number(argv_buf); + if (argv === 0 || argv_buf === 0) { + return WasiErrno.EINVAL; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const args = wasi.args; + for (let i = 0; i < args.length; ++i) { + const arg = args[i]; + view.setInt32(argv, argv_buf, true); + argv += 4; + const data = encoder.encode(arg + '\0'); + HEAPU8.set(data, argv_buf); + argv_buf += data.length; + } + return WasiErrno.ESUCCESS; + }); + this.args_sizes_get = syscallWrap(this, 'args_sizes_get', function (argc, argv_buf_size) { + argc = Number(argc); + argv_buf_size = Number(argv_buf_size); + if (argc === 0 || argv_buf_size === 0) { + return WasiErrno.EINVAL; + } + const { view } = getMemory(this); + const wasi = _wasi.get(this); + const args = wasi.args; + view.setUint32(argc, args.length, true); + view.setUint32(argv_buf_size, encoder.encode(args.join('\0') + '\0').length, true); + return WasiErrno.ESUCCESS; + }); + this.environ_get = syscallWrap(this, 'environ_get', function (environ, environ_buf) { + environ = Number(environ); + environ_buf = Number(environ_buf); + if (environ === 0 || environ_buf === 0) { + return WasiErrno.EINVAL; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const env = wasi.env; + for (let i = 0; i < env.length; ++i) { + const pair = env[i]; + view.setInt32(environ, environ_buf, true); + environ += 4; + const data = encoder.encode(pair + '\0'); + HEAPU8.set(data, environ_buf); + environ_buf += data.length; + } + return WasiErrno.ESUCCESS; + }); + this.environ_sizes_get = syscallWrap(this, 'environ_sizes_get', function (len, buflen) { + len = Number(len); + buflen = Number(buflen); + if (len === 0 || buflen === 0) { + return WasiErrno.EINVAL; + } + const { view } = getMemory(this); + const wasi = _wasi.get(this); + view.setUint32(len, wasi.env.length, true); + view.setUint32(buflen, encoder.encode(wasi.env.join('\0') + '\0').length, true); + return WasiErrno.ESUCCESS; + }); + this.clock_res_get = syscallWrap(this, 'clock_res_get', function (id, resolution) { + resolution = Number(resolution); + if (resolution === 0) { + return WasiErrno.EINVAL; + } + const { view } = getMemory(this); + switch (id) { + case WasiClockid.REALTIME: + view.setBigUint64(resolution, BigInt(1000000), true); + return WasiErrno.ESUCCESS; + case WasiClockid.MONOTONIC: + case WasiClockid.PROCESS_CPUTIME_ID: + case WasiClockid.THREAD_CPUTIME_ID: + view.setBigUint64(resolution, BigInt(1000), true); + return WasiErrno.ESUCCESS; + default: return WasiErrno.EINVAL; + } + }); + this.clock_time_get = syscallWrap(this, 'clock_time_get', function (id, _percision, time) { + time = Number(time); + if (time === 0) { + return WasiErrno.EINVAL; + } + const { view } = getMemory(this); + switch (id) { + case WasiClockid.REALTIME: + view.setBigUint64(time, BigInt(Date.now()) * BigInt(1000000), true); + return WasiErrno.ESUCCESS; + case WasiClockid.MONOTONIC: + case WasiClockid.PROCESS_CPUTIME_ID: + case WasiClockid.THREAD_CPUTIME_ID: { + const t = performance.now() / 1000; + const s = Math.trunc(t); + const ms = Math.floor((t - s) * 1000); + const result = BigInt(s) * BigInt(1000000000) + BigInt(ms) * BigInt(1000000); + view.setBigUint64(time, result, true); + return WasiErrno.ESUCCESS; + } + default: return WasiErrno.EINVAL; + } + }); + this.fd_advise = syscallWrap(this, 'fd_advise', function (_fd, _offset, _len, _advice) { + return WasiErrno.ENOSYS; + }); + this.fd_fdstat_get = syscallWrap(this, 'fd_fdstat_get', function (fd, fdstat) { + fdstat = Number(fdstat); + if (fdstat === 0) { + return WasiErrno.EINVAL; + } + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); + const { view } = getMemory(this); + view.setUint16(fdstat, fileDescriptor.type, true); + view.setUint16(fdstat + 2, 0, true); + view.setBigUint64(fdstat + 8, fileDescriptor.rightsBase, true); + view.setBigUint64(fdstat + 16, fileDescriptor.rightsInheriting, true); + return WasiErrno.ESUCCESS; + }); + this.fd_fdstat_set_flags = syscallWrap(this, 'fd_fdstat_set_flags', function (_fd, _flags) { + return WasiErrno.ENOSYS; + }); + this.fd_fdstat_set_rights = syscallWrap(this, 'fd_fdstat_set_rights', function (fd, rightsBase, rightsInheriting) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); + if ((rightsBase | fileDescriptor.rightsBase) > fileDescriptor.rightsBase) { + return WasiErrno.ENOTCAPABLE; + } + if ((rightsInheriting | fileDescriptor.rightsInheriting) > + fileDescriptor.rightsInheriting) { + return WasiErrno.ENOTCAPABLE; + } + fileDescriptor.rightsBase = rightsBase; + fileDescriptor.rightsInheriting = rightsInheriting; + return WasiErrno.ESUCCESS; + }); + this.fd_prestat_get = syscallWrap(this, 'fd_prestat_get', function (fd, prestat) { + prestat = Number(prestat); + if (prestat === 0) { + return WasiErrno.EINVAL; + } + const wasi = _wasi.get(this); + let fileDescriptor; + try { + fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); + } + catch (err) { + if (err instanceof WasiError) + return err.errno; + throw err; + } + if (fileDescriptor.preopen !== 1) + return WasiErrno.EINVAL; + const { view } = getMemory(this); + // preopen type is dir(0) + view.setUint32(prestat, 0, true); + view.setUint32(prestat + 4, encoder.encode(fileDescriptor.path).length, true); + return WasiErrno.ESUCCESS; + }); + this.fd_prestat_dir_name = syscallWrap(this, 'fd_prestat_dir_name', function (fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return WasiErrno.EINVAL; + } + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); + if (fileDescriptor.preopen !== 1) + return WasiErrno.EBADF; + const buffer = encoder.encode(fileDescriptor.path); + const size = buffer.length; + if (size > path_len) + return WasiErrno.ENOBUFS; + const { HEAPU8 } = getMemory(this); + HEAPU8.set(buffer, path); + return WasiErrno.ESUCCESS; + }); + this.fd_seek = syscallWrap(this, 'fd_seek', function (fd, offset, whence, newOffset) { + newOffset = Number(newOffset); + if (newOffset === 0) { + return WasiErrno.EINVAL; + } + if (fd === 0 || fd === 1 || fd === 2) + return WasiErrno.ESUCCESS; + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_SEEK, BigInt(0)); + const r = fileDescriptor.seek(offset, whence); + const { view } = getMemory(this); + view.setBigUint64(newOffset, r, true); + return WasiErrno.ESUCCESS; + }); + this.fd_tell = syscallWrap(this, 'fd_tell', function (fd, offset) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_TELL, BigInt(0)); + const pos = BigInt(fileDescriptor.pos); + const { view } = getMemory(this); + view.setBigUint64(Number(offset), pos, true); + return WasiErrno.ESUCCESS; + }); + this.poll_oneoff = syscallWrap(this, 'poll_oneoff', function (in_ptr, out_ptr, nsubscriptions, nevents) { + in_ptr = Number(in_ptr); + out_ptr = Number(out_ptr); + nevents = Number(nevents); + nsubscriptions = Number(nsubscriptions); + nsubscriptions = nsubscriptions >>> 0; + if (in_ptr === 0 || out_ptr === 0 || nsubscriptions === 0 || nevents === 0) { + return WasiErrno.EINVAL; + } + const { view } = getMemory(this); + view.setUint32(nevents, 0, true); + let i = 0; + let timer_userdata = BigInt(0); + let cur_timeout = BigInt(0); + let has_timeout = 0; + let min_timeout = BigInt(0); + let sub; + const subscriptions = Array(nsubscriptions); + for (i = 0; i < nsubscriptions; i++) { + sub = in_ptr + i * 48; + const userdata = view.getBigUint64(sub, true); + const type = view.getUint8(sub + 8); + const clockIdOrFd = view.getUint32(sub + 16, true); + const timeout = view.getBigUint64(sub + 24, true); + const precision = view.getBigUint64(sub + 32, true); + const flags = view.getUint16(sub + 40, true); + subscriptions[i] = { + userdata, + type, + u: { + clock: { + clock_id: clockIdOrFd, + timeout, + precision, + flags + }, + fd_readwrite: { + fd: clockIdOrFd + } + } + }; + } + const fdevents = []; + for (i = 0; i < nsubscriptions; i++) { + sub = subscriptions[i]; + switch (sub.type) { + case WasiEventType.CLOCK: { + if (sub.u.clock.flags === WasiSubclockflags.ABSTIME) { + /* Convert absolute time to relative delay. */ + const now = BigInt(Date.now()) * BigInt(1000000); + cur_timeout = sub.u.clock.timeout - now; + } + else { + cur_timeout = sub.u.clock.timeout; + } + if (has_timeout === 0 || cur_timeout < min_timeout) { + min_timeout = cur_timeout; + timer_userdata = sub.userdata; + has_timeout = 1; + } + break; + } + case WasiEventType.FD_READ: + case WasiEventType.FD_WRITE: + fdevents.push(sub); + break; + default: return WasiErrno.EINVAL; + } + } + if (fdevents.length > 0) { + for (i = 0; i < fdevents.length; i++) { + const fdevent = fdevents[i]; + const event = out_ptr + 32 * i; + view.setBigUint64(event, fdevent.userdata, true); + view.setUint32(event + 8, WasiErrno.ENOSYS, true); + view.setUint32(event + 12, fdevent.type, true); + view.setBigUint64(event + 16, BigInt(0), true); + view.setUint16(event + 24, 0, true); + view.setUint32(nevents, 1, true); + } + view.setUint32(nevents, fdevents.length, true); + return WasiErrno.ESUCCESS; + } + if (has_timeout) { + const delay = Number(min_timeout / BigInt(1000000)); + // if (isMainThread || typeof SharedArrayBuffer !== 'function') { + sleepBreakIf(delay, () => false); + // } else { + // const buf = new SharedArrayBuffer(4) + // const arr = new Int32Array(buf) + // postMsg({ + // __tybys_wasm_util_wasi__: { + // type: 'set-timeout', + // payload: { + // buffer: buf, + // delay + // } + // } + // }) + // Atomics.wait(arr, 0, 0) + // } + const event = out_ptr; + view.setBigUint64(event, timer_userdata, true); + view.setUint32(event + 8, WasiErrno.ESUCCESS, true); + view.setUint32(event + 12, WasiEventType.CLOCK, true); + view.setUint32(nevents, 1, true); + } + return WasiErrno.ESUCCESS; + }); + this.proc_exit = syscallWrap(this, 'proc_exit', function (rval) { + if ((typeof process === 'object') && (process !== null) && (typeof process.exit === 'function')) { + process.exit(rval); + } + return WasiErrno.ESUCCESS; + }); + this.proc_raise = syscallWrap(this, 'proc_raise', function (_sig) { + return WasiErrno.ENOSYS; + }); + this.sched_yield = syscallWrap(this, 'sched_yield', function () { + return WasiErrno.ESUCCESS; + }); + this.random_get = typeof crypto !== 'undefined' && typeof crypto.getRandomValues === 'function' + ? syscallWrap(this, 'random_get', function (buf, buf_len) { + buf = Number(buf); + if (buf === 0) { + return WasiErrno.EINVAL; + } + buf_len = Number(buf_len); + const { HEAPU8, view } = getMemory(this); + if ((typeof SharedArrayBuffer === 'function' && HEAPU8.buffer instanceof SharedArrayBuffer) || + (Object.prototype.toString.call(HEAPU8.buffer) === '[object SharedArrayBuffer]')) { + for (let i = buf; i < buf + buf_len; ++i) { + view.setUint8(i, Math.floor(Math.random() * 256)); + } + return WasiErrno.ESUCCESS; + } + let pos; + const stride = 65536; + for (pos = 0; pos + stride < buf_len; pos += stride) { + crypto.getRandomValues(HEAPU8.subarray(buf + pos, buf + pos + stride)); + } + crypto.getRandomValues(HEAPU8.subarray(buf + pos, buf + buf_len)); + return WasiErrno.ESUCCESS; + }) + : syscallWrap(this, 'random_get', function (buf, buf_len) { + buf = Number(buf); + if (buf === 0) { + return WasiErrno.EINVAL; + } + buf_len = Number(buf_len); + const { view } = getMemory(this); + for (let i = buf; i < buf + buf_len; ++i) { + view.setUint8(i, Math.floor(Math.random() * 256)); + } + return WasiErrno.ESUCCESS; + }); + this.sock_recv = syscallWrap(this, 'sock_recv', function () { + return WasiErrno.ENOTSUP; + }); + this.sock_send = syscallWrap(this, 'sock_send', function () { + return WasiErrno.ENOTSUP; + }); + this.sock_shutdown = syscallWrap(this, 'sock_shutdown', function () { + return WasiErrno.ENOTSUP; + }); + this.sock_accept = syscallWrap(this, 'sock_accept', function () { + return WasiErrno.ENOTSUP; + }); + _wasi.set(this, { + fds, + args, + env + }); + if (fs) + _fs.set(this, fs); + // eslint-disable-next-line @typescript-eslint/no-this-alias + const _this = this; + function defineImport(name, syncVersion, asyncVersion, parameterType, returnType) { + if (asyncFs) { + if (asyncify) { + _this[name] = asyncify.wrapImportFunction(syscallWrap(_this, name, asyncVersion)); + } + else { + _this[name] = wrapAsyncImport(syscallWrap(_this, name, asyncVersion), parameterType, returnType); + } + } + else { + _this[name] = syscallWrap(_this, name, syncVersion); + } + } + defineImport('fd_allocate', function fd_allocate(fd, offset, len) { + const wasi = _wasi.get(this); + const fs = getFs(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_ALLOCATE, BigInt(0)); + const stat = fs.fstatSync(fileDescriptor.fd, { bigint: true }); + if (stat.size < offset + len) { + fs.ftruncateSync(fileDescriptor.fd, Number(offset + len)); + } + return WasiErrno.ESUCCESS; + }, async function fd_allocate(fd, offset, len) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_ALLOCATE, BigInt(0)); + const h = fileDescriptor.fd; + const stat = await h.stat({ bigint: true }); + if (stat.size < offset + len) { + await h.truncate(Number(offset + len)); + } + return WasiErrno.ESUCCESS; + }, ['i32', 'i64', 'f64'], ['i32']); + defineImport('fd_close', function fd_close(fd) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); + const fs = getFs(this); + fs.closeSync(fileDescriptor.fd); + wasi.fds.remove(fd); + return WasiErrno.ESUCCESS; + }, async function fd_close(fd) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, BigInt(0), BigInt(0)); + await fileDescriptor.fd.close(); + wasi.fds.remove(fd); + return WasiErrno.ESUCCESS; + }, ['i32'], ['i32']); + defineImport('fd_datasync', function fd_datasync(fd) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_DATASYNC, BigInt(0)); + const fs = getFs(this); + fs.fdatasyncSync(fileDescriptor.fd); + return WasiErrno.ESUCCESS; + }, async function fd_datasync(fd) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_DATASYNC, BigInt(0)); + await fileDescriptor.fd.datasync(); + return WasiErrno.ESUCCESS; + }, ['i32'], ['i32']); + defineImport('fd_filestat_get', function fd_filestat_get(fd, buf) { + buf = Number(buf); + if (buf === 0) + return WasiErrno.EINVAL; + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_GET, BigInt(0)); + const fs = getFs(this); + const stat = fs.fstatSync(fileDescriptor.fd, { bigint: true }); + const { view } = getMemory(this); + toFileStat(view, buf, stat); + return WasiErrno.ESUCCESS; + }, async function fd_filestat_get(fd, buf) { + buf = Number(buf); + if (buf === 0) + return WasiErrno.EINVAL; + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_GET, BigInt(0)); + const h = fileDescriptor.fd; + const stat = await h.stat({ bigint: true }); + const { view } = getMemory(this); + toFileStat(view, buf, stat); + return WasiErrno.ESUCCESS; + }, ['i32', 'i32'], ['i32']); + defineImport('fd_filestat_set_size', function fd_filestat_set_size(fd, size) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_SET_SIZE, BigInt(0)); + const fs = getFs(this); + fs.ftruncateSync(fileDescriptor.fd, Number(size)); + return WasiErrno.ESUCCESS; + }, async function fd_filestat_set_size(fd, size) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_SET_SIZE, BigInt(0)); + const h = fileDescriptor.fd; + await h.truncate(Number(size)); + return WasiErrno.ESUCCESS; + }, ['i32', 'i64'], ['i32']); + function fdFilestatGetTimes(fd, atim, mtim, flags) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_FILESTAT_SET_TIMES, BigInt(0)); + if ((flags & WasiFstFlag.SET_ATIM_NOW) === WasiFstFlag.SET_ATIM_NOW) { + atim = BigInt(Date.now() * 1000000); + } + if ((flags & WasiFstFlag.SET_MTIM_NOW) === WasiFstFlag.SET_MTIM_NOW) { + mtim = BigInt(Date.now() * 1000000); + } + return { fileDescriptor, atim, mtim }; + } + defineImport('fd_filestat_set_times', function fd_filestat_set_times(fd, atim, mtim, flags) { + if (validateFstFlagsOrReturn(flags)) { + return WasiErrno.EINVAL; + } + const { fileDescriptor, atim: atimRes, mtim: mtimRes } = fdFilestatGetTimes.call(this, fd, atim, mtim, flags); + const fs = getFs(this); + fs.futimesSync(fileDescriptor.fd, Number(atimRes), Number(mtimRes)); + return WasiErrno.ESUCCESS; + }, async function fd_filestat_set_times(fd, atim, mtim, flags) { + if (validateFstFlagsOrReturn(flags)) { + return WasiErrno.EINVAL; + } + const { fileDescriptor, atim: atimRes, mtim: mtimRes } = fdFilestatGetTimes.call(this, fd, atim, mtim, flags); + const h = fileDescriptor.fd; + await h.utimes(Number(atimRes), Number(mtimRes)); + return WasiErrno.ESUCCESS; + }, ['i32', 'i64', 'i64', 'i32'], ['i32']); + defineImport('fd_pread', function fd_pread(fd, iovs, iovslen, offset, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { + return WasiErrno.EINVAL; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ | WasiRights.FD_SEEK, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return WasiErrno.ESUCCESS; + } + let totalSize = 0; + const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + totalSize += bufLen; + return HEAPU8.subarray(buf, buf + bufLen); + }); + let nread = 0; + const buffer = (() => { + try { + return new Uint8Array(new SharedArrayBuffer(totalSize)); + } + catch (_) { + return new Uint8Array(totalSize); + } + })(); + buffer._isBuffer = true; + const fs = getFs(this); + const bytesRead = fs.readSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(offset)); + nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; + view.setUint32(size, nread, true); + return WasiErrno.ESUCCESS; + }, async function (fd, iovs, iovslen, offset, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { + return WasiErrno.EINVAL; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ | WasiRights.FD_SEEK, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return WasiErrno.ESUCCESS; + } + let totalSize = 0; + const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + totalSize += bufLen; + return HEAPU8.subarray(buf, buf + bufLen); + }); + let nread = 0; + const buffer = new Uint8Array(totalSize); + buffer._isBuffer = true; + const { bytesRead } = await fileDescriptor.fd.read(buffer, 0, buffer.length, Number(offset)); + nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; + view.setUint32(size, nread, true); + return WasiErrno.ESUCCESS; + }, ['i32', 'i32', 'i32', 'i64', 'i32'], ['i32']); + defineImport('fd_pwrite', function fd_pwrite(fd, iovs, iovslen, offset, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { + return WasiErrno.EINVAL; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE | WasiRights.FD_SEEK, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return WasiErrno.ESUCCESS; + } + const buffer = concatBuffer(Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + return HEAPU8.subarray(buf, buf + bufLen); + })); + const fs = getFs(this); + const nwritten = fs.writeSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(offset)); + view.setUint32(size, nwritten, true); + return WasiErrno.ESUCCESS; + }, async function fd_pwrite(fd, iovs, iovslen, offset, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0 || offset > INT64_MAX) { + return WasiErrno.EINVAL; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE | WasiRights.FD_SEEK, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return WasiErrno.ESUCCESS; + } + const buffer = concatBuffer(Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + return HEAPU8.subarray(buf, buf + bufLen); + })); + const { bytesWritten } = await fileDescriptor.fd.write(buffer, 0, buffer.length, Number(offset)); + view.setUint32(size, bytesWritten, true); + return WasiErrno.ESUCCESS; + }, ['i32', 'i32', 'i32', 'i64', 'i32'], ['i32']); + defineImport('fd_read', function fd_read(fd, iovs, iovslen, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0) { + return WasiErrno.EINVAL; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return WasiErrno.ESUCCESS; + } + let totalSize = 0; + const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + totalSize += bufLen; + return HEAPU8.subarray(buf, buf + bufLen); + }); + let buffer; + let nread = 0; + if (fd === 0) { + if (typeof window === 'undefined' || typeof window.prompt !== 'function') { + return WasiErrno.ENOTSUP; + } + buffer = readStdin(); + nread = buffer ? copyMemory(ioVecs, buffer) : 0; + } + else { + buffer = (() => { + try { + return new Uint8Array(new SharedArrayBuffer(totalSize)); + } + catch (_) { + return new Uint8Array(totalSize); + } + })(); + buffer._isBuffer = true; + const fs = getFs(this); + const bytesRead = fs.readSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(fileDescriptor.pos)); + nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; + fileDescriptor.pos += BigInt(nread); + } + view.setUint32(size, nread, true); + return WasiErrno.ESUCCESS; + }, async function fd_read(fd, iovs, iovslen, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0) { + return WasiErrno.EINVAL; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READ, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return WasiErrno.ESUCCESS; + } + let totalSize = 0; + const ioVecs = Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + totalSize += bufLen; + return HEAPU8.subarray(buf, buf + bufLen); + }); + let buffer; + let nread = 0; + if (fd === 0) { + if (typeof window === 'undefined' || typeof window.prompt !== 'function') { + return WasiErrno.ENOTSUP; + } + buffer = readStdin(); + nread = buffer ? copyMemory(ioVecs, buffer) : 0; + } + else { + buffer = new Uint8Array(totalSize); + buffer._isBuffer = true; + const { bytesRead } = await fileDescriptor.fd.read(buffer, 0, buffer.length, Number(fileDescriptor.pos)); + nread = buffer ? copyMemory(ioVecs, buffer.subarray(0, bytesRead)) : 0; + fileDescriptor.pos += BigInt(nread); + } + view.setUint32(size, nread, true); + return WasiErrno.ESUCCESS; + }, ['i32', 'i32', 'i32', 'i32'], ['i32']); + defineImport('fd_readdir', function fd_readdir(fd, buf, buf_len, cookie, bufused) { + buf = Number(buf); + buf_len = Number(buf_len); + bufused = Number(bufused); + if (buf === 0 || bufused === 0) + return WasiErrno.ESUCCESS; + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READDIR, BigInt(0)); + const fs = getFs(this); + const entries = fs.readdirSync(fileDescriptor.realPath, { withFileTypes: true }); + const { HEAPU8, view } = getMemory(this); + let bufferUsed = 0; + for (let i = Number(cookie); i < entries.length; i++) { + const nameData = encoder.encode(entries[i].name); + const entryInfo = fs.statSync(resolve(fileDescriptor.realPath, entries[i].name), { bigint: true }); + const entryData = new Uint8Array(24 + nameData.byteLength); + const entryView = new DataView(entryData.buffer); + entryView.setBigUint64(0, BigInt(i + 1), true); + entryView.setBigUint64(8, BigInt(entryInfo.ino ? entryInfo.ino : 0), true); + entryView.setUint32(16, nameData.byteLength, true); + let type; + if (entries[i].isFile()) { + type = WasiFileType.REGULAR_FILE; + } + else if (entries[i].isDirectory()) { + type = WasiFileType.DIRECTORY; + } + else if (entries[i].isSymbolicLink()) { + type = WasiFileType.SYMBOLIC_LINK; + } + else if (entries[i].isCharacterDevice()) { + type = WasiFileType.CHARACTER_DEVICE; + } + else if (entries[i].isBlockDevice()) { + type = WasiFileType.BLOCK_DEVICE; + } + else if (entries[i].isSocket()) { + type = WasiFileType.SOCKET_STREAM; + } + else { + type = WasiFileType.UNKNOWN; + } + entryView.setUint8(20, type); + entryData.set(nameData, 24); + const data = entryData.slice(0, Math.min(entryData.length, buf_len - bufferUsed)); + HEAPU8.set(data, buf + bufferUsed); + bufferUsed += data.byteLength; + } + view.setUint32(bufused, bufferUsed, true); + return WasiErrno.ESUCCESS; + }, async function fd_readdir(fd, buf, buf_len, cookie, bufused) { + buf = Number(buf); + buf_len = Number(buf_len); + bufused = Number(bufused); + if (buf === 0 || bufused === 0) + return WasiErrno.ESUCCESS; + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_READDIR, BigInt(0)); + const fs = getFs(this); + const entries = await fs.promises.readdir(fileDescriptor.realPath, { withFileTypes: true }); + const { HEAPU8, view } = getMemory(this); + let bufferUsed = 0; + for (let i = Number(cookie); i < entries.length; i++) { + const nameData = encoder.encode(entries[i].name); + const entryInfo = await fs.promises.stat(resolve(fileDescriptor.realPath, entries[i].name), { bigint: true }); + const entryData = new Uint8Array(24 + nameData.byteLength); + const entryView = new DataView(entryData.buffer); + entryView.setBigUint64(0, BigInt(i + 1), true); + entryView.setBigUint64(8, BigInt(entryInfo.ino ? entryInfo.ino : 0), true); + entryView.setUint32(16, nameData.byteLength, true); + let type; + if (entries[i].isFile()) { + type = WasiFileType.REGULAR_FILE; + } + else if (entries[i].isDirectory()) { + type = WasiFileType.DIRECTORY; + } + else if (entries[i].isSymbolicLink()) { + type = WasiFileType.SYMBOLIC_LINK; + } + else if (entries[i].isCharacterDevice()) { + type = WasiFileType.CHARACTER_DEVICE; + } + else if (entries[i].isBlockDevice()) { + type = WasiFileType.BLOCK_DEVICE; + } + else if (entries[i].isSocket()) { + type = WasiFileType.SOCKET_STREAM; + } + else { + type = WasiFileType.UNKNOWN; + } + entryView.setUint8(20, type); + entryData.set(nameData, 24); + const data = entryData.slice(0, Math.min(entryData.length, buf_len - bufferUsed)); + HEAPU8.set(data, buf + bufferUsed); + bufferUsed += data.byteLength; + } + view.setUint32(bufused, bufferUsed, true); + return WasiErrno.ESUCCESS; + }, ['i32', 'i32', 'i32', 'i64', 'i32'], ['i32']); + defineImport('fd_renumber', function fd_renumber(from, to) { + const wasi = _wasi.get(this); + wasi.fds.renumber(to, from); + return WasiErrno.ESUCCESS; + }, async function fd_renumber(from, to) { + const wasi = _wasi.get(this); + await wasi.fds.renumber(to, from); + return WasiErrno.ESUCCESS; + }, ['i32', 'i32'], ['i32']); + defineImport('fd_sync', function fd_sync(fd) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_SYNC, BigInt(0)); + const fs = getFs(this); + fs.fsyncSync(fileDescriptor.fd); + return WasiErrno.ESUCCESS; + }, async function fd_sync(fd) { + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_SYNC, BigInt(0)); + await fileDescriptor.fd.sync(); + return WasiErrno.ESUCCESS; + }, ['i32'], ['i32']); + defineImport('fd_write', function fd_write(fd, iovs, iovslen, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0) { + return WasiErrno.EINVAL; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return WasiErrno.ESUCCESS; + } + const buffer = concatBuffer(Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + return HEAPU8.subarray(buf, buf + bufLen); + })); + let nwritten; + if (fd === 1 || fd === 2) { + nwritten = fileDescriptor.write(buffer); + } + else { + const fs = getFs(this); + nwritten = fs.writeSync(fileDescriptor.fd, buffer, 0, buffer.length, Number(fileDescriptor.pos)); + fileDescriptor.pos += BigInt(nwritten); + } + view.setUint32(size, nwritten, true); + return WasiErrno.ESUCCESS; + }, async function fd_write(fd, iovs, iovslen, size) { + iovs = Number(iovs); + size = Number(size); + if ((iovs === 0 && iovslen) || size === 0) { + return WasiErrno.EINVAL; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.FD_WRITE, BigInt(0)); + if (!iovslen) { + view.setUint32(size, 0, true); + return WasiErrno.ESUCCESS; + } + const buffer = concatBuffer(Array.from({ length: Number(iovslen) }, (_, i) => { + const offset = iovs + (i * 8); + const buf = view.getInt32(offset, true); + const bufLen = view.getUint32(offset + 4, true); + return HEAPU8.subarray(buf, buf + bufLen); + })); + let nwritten; + if (fd === 1 || fd === 2) { + nwritten = fileDescriptor.write(buffer); + } + else { + nwritten = await (await (fileDescriptor.fd.write(buffer, 0, buffer.length, Number(fileDescriptor.pos)))).bytesWritten; + fileDescriptor.pos += BigInt(nwritten); + } + view.setUint32(size, nwritten, true); + return WasiErrno.ESUCCESS; + }, ['i32', 'i32', 'i32', 'i32'], ['i32']); + defineImport('path_create_directory', function path_create_directory(fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return WasiErrno.EINVAL; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_CREATE_DIRECTORY, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + pathString = resolve(fileDescriptor.realPath, pathString); + const fs = getFs(this); + fs.mkdirSync(pathString); + return WasiErrno.ESUCCESS; + }, async function path_create_directory(fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return WasiErrno.EINVAL; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_CREATE_DIRECTORY, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + pathString = resolve(fileDescriptor.realPath, pathString); + const fs = getFs(this); + await fs.promises.mkdir(pathString); + return WasiErrno.ESUCCESS; + }, ['i32', 'i32', 'i32'], ['i32']); + defineImport('path_filestat_get', function path_filestat_get(fd, flags, path, path_len, filestat) { + path = Number(path); + path_len = Number(path_len); + filestat = Number(filestat); + if (path === 0 || filestat === 0) { + return WasiErrno.EINVAL; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_GET, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + const fs = getFs(this); + pathString = resolve(fileDescriptor.realPath, pathString); + let stat; + if ((flags & 1) === 1) { + stat = fs.statSync(pathString, { bigint: true }); + } + else { + stat = fs.lstatSync(pathString, { bigint: true }); + } + toFileStat(view, filestat, stat); + return WasiErrno.ESUCCESS; + }, async function path_filestat_get(fd, flags, path, path_len, filestat) { + path = Number(path); + path_len = Number(path_len); + filestat = Number(filestat); + if (path === 0 || filestat === 0) { + return WasiErrno.EINVAL; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_GET, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + const fs = getFs(this); + pathString = resolve(fileDescriptor.realPath, pathString); + let stat; + if ((flags & 1) === 1) { + stat = await fs.promises.stat(pathString, { bigint: true }); + } + else { + stat = await fs.promises.lstat(pathString, { bigint: true }); + } + toFileStat(view, filestat, stat); + return WasiErrno.ESUCCESS; + }, ['i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); + defineImport('path_filestat_set_times', function path_filestat_set_times(fd, flags, path, path_len, atim, mtim, fst_flags) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) + return WasiErrno.EINVAL; + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_SET_TIMES, BigInt(0)); + if (validateFstFlagsOrReturn(fst_flags)) { + return WasiErrno.EINVAL; + } + const fs = getFs(this); + const resolvedPath = resolvePathSync(fs, fileDescriptor, decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)), flags); + if ((fst_flags & WasiFstFlag.SET_ATIM_NOW) === WasiFstFlag.SET_ATIM_NOW) { + atim = BigInt(Date.now() * 1000000); + } + if ((fst_flags & WasiFstFlag.SET_MTIM_NOW) === WasiFstFlag.SET_MTIM_NOW) { + mtim = BigInt(Date.now() * 1000000); + } + fs.utimesSync(resolvedPath, Number(atim), Number(mtim)); + return WasiErrno.ESUCCESS; + }, async function path_filestat_set_times(fd, flags, path, path_len, atim, mtim, fst_flags) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) + return WasiErrno.EINVAL; + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_FILESTAT_SET_TIMES, BigInt(0)); + if (validateFstFlagsOrReturn(fst_flags)) { + return WasiErrno.EINVAL; + } + const fs = getFs(this); + const resolvedPath = await resolvePathAsync(fs, fileDescriptor, decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)), flags); + if ((fst_flags & WasiFstFlag.SET_ATIM_NOW) === WasiFstFlag.SET_ATIM_NOW) { + atim = BigInt(Date.now() * 1000000); + } + if ((fst_flags & WasiFstFlag.SET_MTIM_NOW) === WasiFstFlag.SET_MTIM_NOW) { + mtim = BigInt(Date.now() * 1000000); + } + await fs.promises.utimes(resolvedPath, Number(atim), Number(mtim)); + return WasiErrno.ESUCCESS; + }, ['i32', 'i32', 'i32', 'i32', 'i64', 'i64', 'i32'], ['i32']); + defineImport('path_link', function path_link(old_fd, old_flags, old_path, old_path_len, new_fd, new_path, new_path_len) { + old_path = Number(old_path); + old_path_len = Number(old_path_len); + new_path = Number(new_path); + new_path_len = Number(new_path_len); + if (old_path === 0 || new_path === 0) { + return WasiErrno.EINVAL; + } + const wasi = _wasi.get(this); + let oldWrap; + let newWrap; + if (old_fd === new_fd) { + oldWrap = newWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE | WasiRights.PATH_LINK_TARGET, BigInt(0)); + } + else { + oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE, BigInt(0)); + newWrap = wasi.fds.get(new_fd, WasiRights.PATH_LINK_TARGET, BigInt(0)); + } + const { HEAPU8 } = getMemory(this); + const fs = getFs(this); + const resolvedOldPath = resolvePathSync(fs, oldWrap, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)), old_flags); + const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len))); + fs.linkSync(resolvedOldPath, resolvedNewPath); + return WasiErrno.ESUCCESS; + }, async function path_link(old_fd, old_flags, old_path, old_path_len, new_fd, new_path, new_path_len) { + old_path = Number(old_path); + old_path_len = Number(old_path_len); + new_path = Number(new_path); + new_path_len = Number(new_path_len); + if (old_path === 0 || new_path === 0) { + return WasiErrno.EINVAL; + } + const wasi = _wasi.get(this); + let oldWrap; + let newWrap; + if (old_fd === new_fd) { + oldWrap = newWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE | WasiRights.PATH_LINK_TARGET, BigInt(0)); + } + else { + oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_LINK_SOURCE, BigInt(0)); + newWrap = wasi.fds.get(new_fd, WasiRights.PATH_LINK_TARGET, BigInt(0)); + } + const { HEAPU8 } = getMemory(this); + const fs = getFs(this); + const resolvedOldPath = await resolvePathAsync(fs, oldWrap, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)), old_flags); + const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len))); + await fs.promises.link(resolvedOldPath, resolvedNewPath); + return WasiErrno.ESUCCESS; + }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); + function pathOpen(o_flags, fs_rights_base, fs_rights_inheriting, fs_flags) { + const read = (fs_rights_base & (WasiRights.FD_READ | + WasiRights.FD_READDIR)) !== BigInt(0); + const write = (fs_rights_base & (WasiRights.FD_DATASYNC | + WasiRights.FD_WRITE | + WasiRights.FD_ALLOCATE | + WasiRights.FD_FILESTAT_SET_SIZE)) !== BigInt(0); + let flags = write ? read ? FileControlFlag.O_RDWR : FileControlFlag.O_WRONLY : FileControlFlag.O_RDONLY; + let needed_base = WasiRights.PATH_OPEN; + let needed_inheriting = fs_rights_base | fs_rights_inheriting; + if ((o_flags & WasiFileControlFlag.O_CREAT) !== 0) { + flags |= FileControlFlag.O_CREAT; + needed_base |= WasiRights.PATH_CREATE_FILE; + } + if ((o_flags & WasiFileControlFlag.O_DIRECTORY) !== 0) { + flags |= FileControlFlag.O_DIRECTORY; + } + if ((o_flags & WasiFileControlFlag.O_EXCL) !== 0) { + flags |= FileControlFlag.O_EXCL; + } + if ((o_flags & WasiFileControlFlag.O_TRUNC) !== 0) { + flags |= FileControlFlag.O_TRUNC; + needed_base |= WasiRights.PATH_FILESTAT_SET_SIZE; + } + if ((fs_flags & WasiFdFlag.APPEND) !== 0) { + flags |= FileControlFlag.O_APPEND; + } + if ((fs_flags & WasiFdFlag.DSYNC) !== 0) { + // flags |= FileControlFlag.O_DSYNC; + needed_inheriting |= WasiRights.FD_DATASYNC; + } + if ((fs_flags & WasiFdFlag.NONBLOCK) !== 0) { + flags |= FileControlFlag.O_NONBLOCK; + } + if ((fs_flags & WasiFdFlag.RSYNC) !== 0) { + flags |= FileControlFlag.O_SYNC; + needed_inheriting |= WasiRights.FD_SYNC; + } + if ((fs_flags & WasiFdFlag.SYNC) !== 0) { + flags |= FileControlFlag.O_SYNC; + needed_inheriting |= WasiRights.FD_SYNC; + } + if (write && (flags & (FileControlFlag.O_APPEND | FileControlFlag.O_TRUNC)) === 0) { + needed_inheriting |= WasiRights.FD_SEEK; + } + return { flags, needed_base, needed_inheriting }; + } + defineImport('path_open', function path_open(dirfd, dirflags, path, path_len, o_flags, fs_rights_base, fs_rights_inheriting, fs_flags, fd) { + path = Number(path); + fd = Number(fd); + if (path === 0 || fd === 0) { + return WasiErrno.EINVAL; + } + path_len = Number(path_len); + fs_rights_base = BigInt(fs_rights_base); + fs_rights_inheriting = BigInt(fs_rights_inheriting); + const { flags: flagsRes, needed_base: neededBase, needed_inheriting: neededInheriting } = pathOpen(o_flags, fs_rights_base, fs_rights_inheriting, fs_flags); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(dirfd, neededBase, neededInheriting); + const memory = getMemory(this); + const HEAPU8 = memory.HEAPU8; + const pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + const fs = getFs(this); + const resolved_path = resolvePathSync(fs, fileDescriptor, pathString, dirflags); + const r = fs.openSync(resolved_path, flagsRes, 0o666); + const filetype = wasi.fds.getFileTypeByFd(r); + if ((filetype !== WasiFileType.DIRECTORY) && + ((o_flags & WasiFileControlFlag.O_DIRECTORY) !== 0 || + (resolved_path.endsWith('/')))) { + return WasiErrno.ENOTDIR; + } + const { base: max_base, inheriting: max_inheriting } = getRights(wasi.fds.stdio, r, flagsRes, filetype); + const wrap = wasi.fds.insert(r, resolved_path, resolved_path, filetype, fs_rights_base & max_base, fs_rights_inheriting & max_inheriting, 0); + const stat = fs.fstatSync(r, { bigint: true }); + if (stat.isFile()) { + wrap.size = stat.size; + if ((flagsRes & FileControlFlag.O_APPEND) !== 0) { + wrap.pos = stat.size; + } + } + const view = memory.view; + view.setInt32(fd, wrap.id, true); + return WasiErrno.ESUCCESS; + }, async function path_open(dirfd, dirflags, path, path_len, o_flags, fs_rights_base, fs_rights_inheriting, fs_flags, fd) { + path = Number(path); + fd = Number(fd); + if (path === 0 || fd === 0) { + return WasiErrno.EINVAL; + } + path_len = Number(path_len); + fs_rights_base = BigInt(fs_rights_base); + fs_rights_inheriting = BigInt(fs_rights_inheriting); + const { flags: flagsRes, needed_base: neededBase, needed_inheriting: neededInheriting } = pathOpen(o_flags, fs_rights_base, fs_rights_inheriting, fs_flags); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(dirfd, neededBase, neededInheriting); + const memory = getMemory(this); + const HEAPU8 = memory.HEAPU8; + const pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + const fs = getFs(this); + const resolved_path = await resolvePathAsync(fs, fileDescriptor, pathString, dirflags); + const r = await fs.promises.open(resolved_path, flagsRes, 0o666); + const filetype = await wasi.fds.getFileTypeByFd(r); + if ((o_flags & WasiFileControlFlag.O_DIRECTORY) !== 0 && filetype !== WasiFileType.DIRECTORY) { + return WasiErrno.ENOTDIR; + } + const { base: max_base, inheriting: max_inheriting } = getRights(wasi.fds.stdio, r.fd, flagsRes, filetype); + const wrap = wasi.fds.insert(r, resolved_path, resolved_path, filetype, fs_rights_base & max_base, fs_rights_inheriting & max_inheriting, 0); + const stat = await r.stat({ bigint: true }); + if (stat.isFile()) { + wrap.size = stat.size; + if ((flagsRes & FileControlFlag.O_APPEND) !== 0) { + wrap.pos = stat.size; + } + } + const view = memory.view; + view.setInt32(fd, wrap.id, true); + return WasiErrno.ESUCCESS; + }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i64', 'i64', 'i32', 'i32'], ['i32']); + defineImport('path_readlink', function path_readlink(fd, path, path_len, buf, buf_len, bufused) { + path = Number(path); + path_len = Number(path_len); + buf = Number(buf); + buf_len = Number(buf_len); + bufused = Number(bufused); + if (path === 0 || buf === 0 || bufused === 0) { + return WasiErrno.EINVAL; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_READLINK, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + pathString = resolve(fileDescriptor.realPath, pathString); + const fs = getFs(this); + const link = fs.readlinkSync(pathString); + const linkData = encoder.encode(link); + const len = Math.min(linkData.length, buf_len); + if (len >= buf_len) + return WasiErrno.ENOBUFS; + HEAPU8.set(linkData.subarray(0, len), buf); + HEAPU8[buf + len] = 0; + view.setUint32(bufused, len, true); + return WasiErrno.ESUCCESS; + }, async function path_readlink(fd, path, path_len, buf, buf_len, bufused) { + path = Number(path); + path_len = Number(path_len); + buf = Number(buf); + buf_len = Number(buf_len); + bufused = Number(bufused); + if (path === 0 || buf === 0 || bufused === 0) { + return WasiErrno.EINVAL; + } + const { HEAPU8, view } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_READLINK, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + pathString = resolve(fileDescriptor.realPath, pathString); + const fs = getFs(this); + const link = await fs.promises.readlink(pathString); + const linkData = encoder.encode(link); + const len = Math.min(linkData.length, buf_len); + if (len >= buf_len) + return WasiErrno.ENOBUFS; + HEAPU8.set(linkData.subarray(0, len), buf); + HEAPU8[buf + len] = 0; + view.setUint32(bufused, len, true); + return WasiErrno.ESUCCESS; + }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); + defineImport('path_remove_directory', function path_remove_directory(fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return WasiErrno.EINVAL; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_REMOVE_DIRECTORY, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + pathString = resolve(fileDescriptor.realPath, pathString); + const fs = getFs(this); + fs.rmdirSync(pathString); + return WasiErrno.ESUCCESS; + }, async function path_remove_directory(fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return WasiErrno.EINVAL; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_REMOVE_DIRECTORY, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + pathString = resolve(fileDescriptor.realPath, pathString); + const fs = getFs(this); + await fs.promises.rmdir(pathString); + return WasiErrno.ESUCCESS; + }, ['i32', 'i32', 'i32'], ['i32']); + defineImport('path_rename', function path_rename(old_fd, old_path, old_path_len, new_fd, new_path, new_path_len) { + old_path = Number(old_path); + old_path_len = Number(old_path_len); + new_path = Number(new_path); + new_path_len = Number(new_path_len); + if (old_path === 0 || new_path === 0) { + return WasiErrno.EINVAL; + } + const wasi = _wasi.get(this); + let oldWrap; + let newWrap; + if (old_fd === new_fd) { + oldWrap = newWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE | WasiRights.PATH_RENAME_TARGET, BigInt(0)); + } + else { + oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE, BigInt(0)); + newWrap = wasi.fds.get(new_fd, WasiRights.PATH_RENAME_TARGET, BigInt(0)); + } + const { HEAPU8 } = getMemory(this); + const resolvedOldPath = resolve(oldWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len))); + const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len))); + const fs = getFs(this); + fs.renameSync(resolvedOldPath, resolvedNewPath); + return WasiErrno.ESUCCESS; + }, async function path_rename(old_fd, old_path, old_path_len, new_fd, new_path, new_path_len) { + old_path = Number(old_path); + old_path_len = Number(old_path_len); + new_path = Number(new_path); + new_path_len = Number(new_path_len); + if (old_path === 0 || new_path === 0) { + return WasiErrno.EINVAL; + } + const wasi = _wasi.get(this); + let oldWrap; + let newWrap; + if (old_fd === new_fd) { + oldWrap = newWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE | WasiRights.PATH_RENAME_TARGET, BigInt(0)); + } + else { + oldWrap = wasi.fds.get(old_fd, WasiRights.PATH_RENAME_SOURCE, BigInt(0)); + newWrap = wasi.fds.get(new_fd, WasiRights.PATH_RENAME_TARGET, BigInt(0)); + } + const { HEAPU8 } = getMemory(this); + const resolvedOldPath = resolve(oldWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len))); + const resolvedNewPath = resolve(newWrap.realPath, decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len))); + const fs = getFs(this); + await fs.promises.rename(resolvedOldPath, resolvedNewPath); + return WasiErrno.ESUCCESS; + }, ['i32', 'i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); + defineImport('path_symlink', function path_symlink(old_path, old_path_len, fd, new_path, new_path_len) { + old_path = Number(old_path); + old_path_len = Number(old_path_len); + new_path = Number(new_path); + new_path_len = Number(new_path_len); + if (old_path === 0 || new_path === 0) { + return WasiErrno.EINVAL; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_SYMLINK, BigInt(0)); + const oldPath = decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)); + if (oldPath.length > 0 && oldPath[0] === '/') { + return WasiErrno.EPERM; + } + let newPath = decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len)); + newPath = resolve(fileDescriptor.realPath, newPath); + const fs = getFs(this); + fs.symlinkSync(oldPath, newPath); + return WasiErrno.ESUCCESS; + }, async function path_symlink(old_path, old_path_len, fd, new_path, new_path_len) { + old_path = Number(old_path); + old_path_len = Number(old_path_len); + new_path = Number(new_path); + new_path_len = Number(new_path_len); + if (old_path === 0 || new_path === 0) { + return WasiErrno.EINVAL; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_SYMLINK, BigInt(0)); + const oldPath = decoder.decode(unsharedSlice(HEAPU8, old_path, old_path + old_path_len)); + let newPath = decoder.decode(unsharedSlice(HEAPU8, new_path, new_path + new_path_len)); + newPath = resolve(fileDescriptor.realPath, newPath); + const fs = getFs(this); + await fs.promises.symlink(oldPath, newPath); + return WasiErrno.ESUCCESS; + }, ['i32', 'i32', 'i32', 'i32', 'i32'], ['i32']); + defineImport('path_unlink_file', function path_unlink_file(fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return WasiErrno.EINVAL; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_UNLINK_FILE, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + pathString = resolve(fileDescriptor.realPath, pathString); + const fs = getFs(this); + fs.unlinkSync(pathString); + return WasiErrno.ESUCCESS; + }, async function path_unlink_file(fd, path, path_len) { + path = Number(path); + path_len = Number(path_len); + if (path === 0) { + return WasiErrno.EINVAL; + } + const { HEAPU8 } = getMemory(this); + const wasi = _wasi.get(this); + const fileDescriptor = wasi.fds.get(fd, WasiRights.PATH_UNLINK_FILE, BigInt(0)); + let pathString = decoder.decode(unsharedSlice(HEAPU8, path, path + path_len)); + pathString = resolve(fileDescriptor.realPath, pathString); + const fs = getFs(this); + await fs.promises.unlink(pathString); + return WasiErrno.ESUCCESS; + }, ['i32', 'i32', 'i32'], ['i32']); + this._setMemory = function setMemory(m) { + if (!(m instanceof _WebAssembly.Memory)) { + throw new TypeError('"instance.exports.memory" property must be a WebAssembly.Memory'); + } + _memory.set(_this, extendMemory(m)); + }; + } + static createSync(args, env, preopens, stdio, fs, print, printErr) { + const fds = new SyncTable({ + size: 3, + in: stdio[0], + out: stdio[1], + err: stdio[2], + fs, + print, + printErr + }); + const _this = new WASI(args, env, fds, false, fs); + if (preopens.length > 0) { + for (let i = 0; i < preopens.length; ++i) { + const realPath = fs.realpathSync(preopens[i].realPath, 'utf8'); + const fd = fs.openSync(realPath, 'r', 0o666); + fds.insertPreopen(fd, preopens[i].mappedPath, realPath); + } + } + return _this; + } + static async createAsync(args, env, preopens, stdio, fs, print, printErr, asyncify) { + const fds = new AsyncTable({ + size: 3, + in: stdio[0], + out: stdio[1], + err: stdio[2], + print, + printErr + }); + const _this = new WASI(args, env, fds, true, fs, asyncify); + if (preopens.length > 0) { + for (let i = 0; i < preopens.length; ++i) { + const entry = preopens[i]; + const realPath = await fs.promises.realpath(entry.realPath); + const fd = await fs.promises.open(realPath, 'r', 0o666); + await fds.insertPreopen(fd, entry.mappedPath, realPath); + } + } + return _this; + } +} diff --git a/node_modules/@tybys/wasm-util/lib/mjs/wasi/rights.mjs b/node_modules/@tybys/wasm-util/lib/mjs/wasi/rights.mjs new file mode 100644 index 00000000..b87351d5 --- /dev/null +++ b/node_modules/@tybys/wasm-util/lib/mjs/wasi/rights.mjs @@ -0,0 +1,135 @@ +import { WasiError } from "./error.mjs"; +import { WasiErrno, WasiRights, WasiFileType } from "./types.mjs"; +export const RIGHTS_ALL = WasiRights.FD_DATASYNC | + WasiRights.FD_READ | + WasiRights.FD_SEEK | + WasiRights.FD_FDSTAT_SET_FLAGS | + WasiRights.FD_SYNC | + WasiRights.FD_TELL | + WasiRights.FD_WRITE | + WasiRights.FD_ADVISE | + WasiRights.FD_ALLOCATE | + WasiRights.PATH_CREATE_DIRECTORY | + WasiRights.PATH_CREATE_FILE | + WasiRights.PATH_LINK_SOURCE | + WasiRights.PATH_LINK_TARGET | + WasiRights.PATH_OPEN | + WasiRights.FD_READDIR | + WasiRights.PATH_READLINK | + WasiRights.PATH_RENAME_SOURCE | + WasiRights.PATH_RENAME_TARGET | + WasiRights.PATH_FILESTAT_GET | + WasiRights.PATH_FILESTAT_SET_SIZE | + WasiRights.PATH_FILESTAT_SET_TIMES | + WasiRights.FD_FILESTAT_GET | + WasiRights.FD_FILESTAT_SET_TIMES | + WasiRights.FD_FILESTAT_SET_SIZE | + WasiRights.PATH_SYMLINK | + WasiRights.PATH_UNLINK_FILE | + WasiRights.PATH_REMOVE_DIRECTORY | + WasiRights.POLL_FD_READWRITE | + WasiRights.SOCK_SHUTDOWN | + WasiRights.SOCK_ACCEPT; +export const BLOCK_DEVICE_BASE = RIGHTS_ALL; +export const BLOCK_DEVICE_INHERITING = RIGHTS_ALL; +export const CHARACTER_DEVICE_BASE = RIGHTS_ALL; +export const CHARACTER_DEVICE_INHERITING = RIGHTS_ALL; +export const REGULAR_FILE_BASE = WasiRights.FD_DATASYNC | + WasiRights.FD_READ | + WasiRights.FD_SEEK | + WasiRights.FD_FDSTAT_SET_FLAGS | + WasiRights.FD_SYNC | + WasiRights.FD_TELL | + WasiRights.FD_WRITE | + WasiRights.FD_ADVISE | + WasiRights.FD_ALLOCATE | + WasiRights.FD_FILESTAT_GET | + WasiRights.FD_FILESTAT_SET_SIZE | + WasiRights.FD_FILESTAT_SET_TIMES | + WasiRights.POLL_FD_READWRITE; +export const REGULAR_FILE_INHERITING = /*#__PURE__*/ BigInt(0); +export const DIRECTORY_BASE = WasiRights.FD_FDSTAT_SET_FLAGS | + WasiRights.FD_SYNC | + WasiRights.FD_ADVISE | + WasiRights.PATH_CREATE_DIRECTORY | + WasiRights.PATH_CREATE_FILE | + WasiRights.PATH_LINK_SOURCE | + WasiRights.PATH_LINK_TARGET | + WasiRights.PATH_OPEN | + WasiRights.FD_READDIR | + WasiRights.PATH_READLINK | + WasiRights.PATH_RENAME_SOURCE | + WasiRights.PATH_RENAME_TARGET | + WasiRights.PATH_FILESTAT_GET | + WasiRights.PATH_FILESTAT_SET_SIZE | + WasiRights.PATH_FILESTAT_SET_TIMES | + WasiRights.FD_FILESTAT_GET | + WasiRights.FD_FILESTAT_SET_TIMES | + WasiRights.PATH_SYMLINK | + WasiRights.PATH_UNLINK_FILE | + WasiRights.PATH_REMOVE_DIRECTORY | + WasiRights.POLL_FD_READWRITE; +export const DIRECTORY_INHERITING = DIRECTORY_BASE | REGULAR_FILE_BASE; +export const SOCKET_BASE = (WasiRights.FD_READ | + WasiRights.FD_FDSTAT_SET_FLAGS | + WasiRights.FD_WRITE | + WasiRights.FD_FILESTAT_GET | + WasiRights.POLL_FD_READWRITE | + WasiRights.SOCK_SHUTDOWN); +export const SOCKET_INHERITING = RIGHTS_ALL; +export const TTY_BASE = WasiRights.FD_READ | + WasiRights.FD_FDSTAT_SET_FLAGS | + WasiRights.FD_WRITE | + WasiRights.FD_FILESTAT_GET | + WasiRights.POLL_FD_READWRITE; +export const TTY_INHERITING = /*#__PURE__*/ BigInt(0); +export function getRights(stdio, fd, flags, type) { + const ret = { + base: BigInt(0), + inheriting: BigInt(0) + }; + if (type === WasiFileType.UNKNOWN) { + throw new WasiError('Unknown file type', WasiErrno.EINVAL); + } + switch (type) { + case WasiFileType.REGULAR_FILE: + ret.base = REGULAR_FILE_BASE; + ret.inheriting = REGULAR_FILE_INHERITING; + break; + case WasiFileType.DIRECTORY: + ret.base = DIRECTORY_BASE; + ret.inheriting = DIRECTORY_INHERITING; + break; + case WasiFileType.SOCKET_STREAM: + case WasiFileType.SOCKET_DGRAM: + ret.base = SOCKET_BASE; + ret.inheriting = SOCKET_INHERITING; + break; + case WasiFileType.CHARACTER_DEVICE: + if (stdio.indexOf(fd) !== -1) { + ret.base = TTY_BASE; + ret.inheriting = TTY_INHERITING; + } + else { + ret.base = CHARACTER_DEVICE_BASE; + ret.inheriting = CHARACTER_DEVICE_INHERITING; + } + break; + case WasiFileType.BLOCK_DEVICE: + ret.base = BLOCK_DEVICE_BASE; + ret.inheriting = BLOCK_DEVICE_INHERITING; + break; + default: + ret.base = BigInt(0); + ret.inheriting = BigInt(0); + } + /* Disable read/write bits depending on access mode. */ + const read_or_write_only = flags & (0 | 1 | 2); + if (read_or_write_only === 0) { + ret.base &= ~WasiRights.FD_WRITE; + } + else if (read_or_write_only === 1) { + ret.base &= ~WasiRights.FD_READ; + } + return ret; +} diff --git a/node_modules/@tybys/wasm-util/lib/mjs/wasi/types.mjs b/node_modules/@tybys/wasm-util/lib/mjs/wasi/types.mjs new file mode 100644 index 00000000..c18bdd68 --- /dev/null +++ b/node_modules/@tybys/wasm-util/lib/mjs/wasi/types.mjs @@ -0,0 +1,216 @@ +/* eslint-disable spaced-comment */ +export var WasiErrno; +(function (WasiErrno) { + WasiErrno[WasiErrno["ESUCCESS"] = 0] = "ESUCCESS"; + WasiErrno[WasiErrno["E2BIG"] = 1] = "E2BIG"; + WasiErrno[WasiErrno["EACCES"] = 2] = "EACCES"; + WasiErrno[WasiErrno["EADDRINUSE"] = 3] = "EADDRINUSE"; + WasiErrno[WasiErrno["EADDRNOTAVAIL"] = 4] = "EADDRNOTAVAIL"; + WasiErrno[WasiErrno["EAFNOSUPPORT"] = 5] = "EAFNOSUPPORT"; + WasiErrno[WasiErrno["EAGAIN"] = 6] = "EAGAIN"; + WasiErrno[WasiErrno["EALREADY"] = 7] = "EALREADY"; + WasiErrno[WasiErrno["EBADF"] = 8] = "EBADF"; + WasiErrno[WasiErrno["EBADMSG"] = 9] = "EBADMSG"; + WasiErrno[WasiErrno["EBUSY"] = 10] = "EBUSY"; + WasiErrno[WasiErrno["ECANCELED"] = 11] = "ECANCELED"; + WasiErrno[WasiErrno["ECHILD"] = 12] = "ECHILD"; + WasiErrno[WasiErrno["ECONNABORTED"] = 13] = "ECONNABORTED"; + WasiErrno[WasiErrno["ECONNREFUSED"] = 14] = "ECONNREFUSED"; + WasiErrno[WasiErrno["ECONNRESET"] = 15] = "ECONNRESET"; + WasiErrno[WasiErrno["EDEADLK"] = 16] = "EDEADLK"; + WasiErrno[WasiErrno["EDESTADDRREQ"] = 17] = "EDESTADDRREQ"; + WasiErrno[WasiErrno["EDOM"] = 18] = "EDOM"; + WasiErrno[WasiErrno["EDQUOT"] = 19] = "EDQUOT"; + WasiErrno[WasiErrno["EEXIST"] = 20] = "EEXIST"; + WasiErrno[WasiErrno["EFAULT"] = 21] = "EFAULT"; + WasiErrno[WasiErrno["EFBIG"] = 22] = "EFBIG"; + WasiErrno[WasiErrno["EHOSTUNREACH"] = 23] = "EHOSTUNREACH"; + WasiErrno[WasiErrno["EIDRM"] = 24] = "EIDRM"; + WasiErrno[WasiErrno["EILSEQ"] = 25] = "EILSEQ"; + WasiErrno[WasiErrno["EINPROGRESS"] = 26] = "EINPROGRESS"; + WasiErrno[WasiErrno["EINTR"] = 27] = "EINTR"; + WasiErrno[WasiErrno["EINVAL"] = 28] = "EINVAL"; + WasiErrno[WasiErrno["EIO"] = 29] = "EIO"; + WasiErrno[WasiErrno["EISCONN"] = 30] = "EISCONN"; + WasiErrno[WasiErrno["EISDIR"] = 31] = "EISDIR"; + WasiErrno[WasiErrno["ELOOP"] = 32] = "ELOOP"; + WasiErrno[WasiErrno["EMFILE"] = 33] = "EMFILE"; + WasiErrno[WasiErrno["EMLINK"] = 34] = "EMLINK"; + WasiErrno[WasiErrno["EMSGSIZE"] = 35] = "EMSGSIZE"; + WasiErrno[WasiErrno["EMULTIHOP"] = 36] = "EMULTIHOP"; + WasiErrno[WasiErrno["ENAMETOOLONG"] = 37] = "ENAMETOOLONG"; + WasiErrno[WasiErrno["ENETDOWN"] = 38] = "ENETDOWN"; + WasiErrno[WasiErrno["ENETRESET"] = 39] = "ENETRESET"; + WasiErrno[WasiErrno["ENETUNREACH"] = 40] = "ENETUNREACH"; + WasiErrno[WasiErrno["ENFILE"] = 41] = "ENFILE"; + WasiErrno[WasiErrno["ENOBUFS"] = 42] = "ENOBUFS"; + WasiErrno[WasiErrno["ENODEV"] = 43] = "ENODEV"; + WasiErrno[WasiErrno["ENOENT"] = 44] = "ENOENT"; + WasiErrno[WasiErrno["ENOEXEC"] = 45] = "ENOEXEC"; + WasiErrno[WasiErrno["ENOLCK"] = 46] = "ENOLCK"; + WasiErrno[WasiErrno["ENOLINK"] = 47] = "ENOLINK"; + WasiErrno[WasiErrno["ENOMEM"] = 48] = "ENOMEM"; + WasiErrno[WasiErrno["ENOMSG"] = 49] = "ENOMSG"; + WasiErrno[WasiErrno["ENOPROTOOPT"] = 50] = "ENOPROTOOPT"; + WasiErrno[WasiErrno["ENOSPC"] = 51] = "ENOSPC"; + WasiErrno[WasiErrno["ENOSYS"] = 52] = "ENOSYS"; + WasiErrno[WasiErrno["ENOTCONN"] = 53] = "ENOTCONN"; + WasiErrno[WasiErrno["ENOTDIR"] = 54] = "ENOTDIR"; + WasiErrno[WasiErrno["ENOTEMPTY"] = 55] = "ENOTEMPTY"; + WasiErrno[WasiErrno["ENOTRECOVERABLE"] = 56] = "ENOTRECOVERABLE"; + WasiErrno[WasiErrno["ENOTSOCK"] = 57] = "ENOTSOCK"; + WasiErrno[WasiErrno["ENOTSUP"] = 58] = "ENOTSUP"; + WasiErrno[WasiErrno["ENOTTY"] = 59] = "ENOTTY"; + WasiErrno[WasiErrno["ENXIO"] = 60] = "ENXIO"; + WasiErrno[WasiErrno["EOVERFLOW"] = 61] = "EOVERFLOW"; + WasiErrno[WasiErrno["EOWNERDEAD"] = 62] = "EOWNERDEAD"; + WasiErrno[WasiErrno["EPERM"] = 63] = "EPERM"; + WasiErrno[WasiErrno["EPIPE"] = 64] = "EPIPE"; + WasiErrno[WasiErrno["EPROTO"] = 65] = "EPROTO"; + WasiErrno[WasiErrno["EPROTONOSUPPORT"] = 66] = "EPROTONOSUPPORT"; + WasiErrno[WasiErrno["EPROTOTYPE"] = 67] = "EPROTOTYPE"; + WasiErrno[WasiErrno["ERANGE"] = 68] = "ERANGE"; + WasiErrno[WasiErrno["EROFS"] = 69] = "EROFS"; + WasiErrno[WasiErrno["ESPIPE"] = 70] = "ESPIPE"; + WasiErrno[WasiErrno["ESRCH"] = 71] = "ESRCH"; + WasiErrno[WasiErrno["ESTALE"] = 72] = "ESTALE"; + WasiErrno[WasiErrno["ETIMEDOUT"] = 73] = "ETIMEDOUT"; + WasiErrno[WasiErrno["ETXTBSY"] = 74] = "ETXTBSY"; + WasiErrno[WasiErrno["EXDEV"] = 75] = "EXDEV"; + WasiErrno[WasiErrno["ENOTCAPABLE"] = 76] = "ENOTCAPABLE"; +})(WasiErrno || (WasiErrno = {})); +export var WasiFileType; +(function (WasiFileType) { + WasiFileType[WasiFileType["UNKNOWN"] = 0] = "UNKNOWN"; + WasiFileType[WasiFileType["BLOCK_DEVICE"] = 1] = "BLOCK_DEVICE"; + WasiFileType[WasiFileType["CHARACTER_DEVICE"] = 2] = "CHARACTER_DEVICE"; + WasiFileType[WasiFileType["DIRECTORY"] = 3] = "DIRECTORY"; + WasiFileType[WasiFileType["REGULAR_FILE"] = 4] = "REGULAR_FILE"; + WasiFileType[WasiFileType["SOCKET_DGRAM"] = 5] = "SOCKET_DGRAM"; + WasiFileType[WasiFileType["SOCKET_STREAM"] = 6] = "SOCKET_STREAM"; + WasiFileType[WasiFileType["SYMBOLIC_LINK"] = 7] = "SYMBOLIC_LINK"; +})(WasiFileType || (WasiFileType = {})); +const FD_DATASYNC = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(0)); +const FD_READ = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(1)); +const FD_SEEK = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(2)); +const FD_FDSTAT_SET_FLAGS = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(3)); +const FD_SYNC = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(4)); +const FD_TELL = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(5)); +const FD_WRITE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(6)); +const FD_ADVISE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(7)); +const FD_ALLOCATE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(8)); +const PATH_CREATE_DIRECTORY = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(9)); +const PATH_CREATE_FILE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(10)); +const PATH_LINK_SOURCE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(11)); +const PATH_LINK_TARGET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(12)); +const PATH_OPEN = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(13)); +const FD_READDIR = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(14)); +const PATH_READLINK = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(15)); +const PATH_RENAME_SOURCE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(16)); +const PATH_RENAME_TARGET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(17)); +const PATH_FILESTAT_GET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(18)); +const PATH_FILESTAT_SET_SIZE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(19)); +const PATH_FILESTAT_SET_TIMES = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(20)); +const FD_FILESTAT_GET = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(21)); +const FD_FILESTAT_SET_SIZE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(22)); +const FD_FILESTAT_SET_TIMES = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(23)); +const PATH_SYMLINK = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(24)); +const PATH_REMOVE_DIRECTORY = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(25)); +const PATH_UNLINK_FILE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(26)); +const POLL_FD_READWRITE = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(27)); +const SOCK_SHUTDOWN = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(28)); +const SOCK_ACCEPT = ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/ BigInt(29)); +export const WasiRights = { + FD_DATASYNC, + FD_READ, + FD_SEEK, + FD_FDSTAT_SET_FLAGS, + FD_SYNC, + FD_TELL, + FD_WRITE, + FD_ADVISE, + FD_ALLOCATE, + PATH_CREATE_DIRECTORY, + PATH_CREATE_FILE, + PATH_LINK_SOURCE, + PATH_LINK_TARGET, + PATH_OPEN, + FD_READDIR, + PATH_READLINK, + PATH_RENAME_SOURCE, + PATH_RENAME_TARGET, + PATH_FILESTAT_GET, + PATH_FILESTAT_SET_SIZE, + PATH_FILESTAT_SET_TIMES, + FD_FILESTAT_GET, + FD_FILESTAT_SET_SIZE, + FD_FILESTAT_SET_TIMES, + PATH_SYMLINK, + PATH_REMOVE_DIRECTORY, + PATH_UNLINK_FILE, + POLL_FD_READWRITE, + SOCK_SHUTDOWN, + SOCK_ACCEPT +}; +export var WasiWhence; +(function (WasiWhence) { + WasiWhence[WasiWhence["SET"] = 0] = "SET"; + WasiWhence[WasiWhence["CUR"] = 1] = "CUR"; + WasiWhence[WasiWhence["END"] = 2] = "END"; +})(WasiWhence || (WasiWhence = {})); +export var FileControlFlag; +(function (FileControlFlag) { + FileControlFlag[FileControlFlag["O_RDONLY"] = 0] = "O_RDONLY"; + FileControlFlag[FileControlFlag["O_WRONLY"] = 1] = "O_WRONLY"; + FileControlFlag[FileControlFlag["O_RDWR"] = 2] = "O_RDWR"; + FileControlFlag[FileControlFlag["O_CREAT"] = 64] = "O_CREAT"; + FileControlFlag[FileControlFlag["O_EXCL"] = 128] = "O_EXCL"; + FileControlFlag[FileControlFlag["O_NOCTTY"] = 256] = "O_NOCTTY"; + FileControlFlag[FileControlFlag["O_TRUNC"] = 512] = "O_TRUNC"; + FileControlFlag[FileControlFlag["O_APPEND"] = 1024] = "O_APPEND"; + FileControlFlag[FileControlFlag["O_DIRECTORY"] = 65536] = "O_DIRECTORY"; + FileControlFlag[FileControlFlag["O_NOATIME"] = 262144] = "O_NOATIME"; + FileControlFlag[FileControlFlag["O_NOFOLLOW"] = 131072] = "O_NOFOLLOW"; + FileControlFlag[FileControlFlag["O_SYNC"] = 1052672] = "O_SYNC"; + FileControlFlag[FileControlFlag["O_DIRECT"] = 16384] = "O_DIRECT"; + FileControlFlag[FileControlFlag["O_NONBLOCK"] = 2048] = "O_NONBLOCK"; +})(FileControlFlag || (FileControlFlag = {})); +export var WasiFileControlFlag; +(function (WasiFileControlFlag) { + WasiFileControlFlag[WasiFileControlFlag["O_CREAT"] = 1] = "O_CREAT"; + WasiFileControlFlag[WasiFileControlFlag["O_DIRECTORY"] = 2] = "O_DIRECTORY"; + WasiFileControlFlag[WasiFileControlFlag["O_EXCL"] = 4] = "O_EXCL"; + WasiFileControlFlag[WasiFileControlFlag["O_TRUNC"] = 8] = "O_TRUNC"; +})(WasiFileControlFlag || (WasiFileControlFlag = {})); +export var WasiFdFlag; +(function (WasiFdFlag) { + WasiFdFlag[WasiFdFlag["APPEND"] = 1] = "APPEND"; + WasiFdFlag[WasiFdFlag["DSYNC"] = 2] = "DSYNC"; + WasiFdFlag[WasiFdFlag["NONBLOCK"] = 4] = "NONBLOCK"; + WasiFdFlag[WasiFdFlag["RSYNC"] = 8] = "RSYNC"; + WasiFdFlag[WasiFdFlag["SYNC"] = 16] = "SYNC"; +})(WasiFdFlag || (WasiFdFlag = {})); +export var WasiClockid; +(function (WasiClockid) { + WasiClockid[WasiClockid["REALTIME"] = 0] = "REALTIME"; + WasiClockid[WasiClockid["MONOTONIC"] = 1] = "MONOTONIC"; + WasiClockid[WasiClockid["PROCESS_CPUTIME_ID"] = 2] = "PROCESS_CPUTIME_ID"; + WasiClockid[WasiClockid["THREAD_CPUTIME_ID"] = 3] = "THREAD_CPUTIME_ID"; +})(WasiClockid || (WasiClockid = {})); +export var WasiFstFlag; +(function (WasiFstFlag) { + WasiFstFlag[WasiFstFlag["SET_ATIM"] = 1] = "SET_ATIM"; + WasiFstFlag[WasiFstFlag["SET_ATIM_NOW"] = 2] = "SET_ATIM_NOW"; + WasiFstFlag[WasiFstFlag["SET_MTIM"] = 4] = "SET_MTIM"; + WasiFstFlag[WasiFstFlag["SET_MTIM_NOW"] = 8] = "SET_MTIM_NOW"; +})(WasiFstFlag || (WasiFstFlag = {})); +export var WasiEventType; +(function (WasiEventType) { + WasiEventType[WasiEventType["CLOCK"] = 0] = "CLOCK"; + WasiEventType[WasiEventType["FD_READ"] = 1] = "FD_READ"; + WasiEventType[WasiEventType["FD_WRITE"] = 2] = "FD_WRITE"; +})(WasiEventType || (WasiEventType = {})); +export var WasiSubclockflags; +(function (WasiSubclockflags) { + WasiSubclockflags[WasiSubclockflags["ABSTIME"] = 1] = "ABSTIME"; +})(WasiSubclockflags || (WasiSubclockflags = {})); diff --git a/node_modules/@tybys/wasm-util/lib/mjs/wasi/util.mjs b/node_modules/@tybys/wasm-util/lib/mjs/wasi/util.mjs new file mode 100644 index 00000000..a8ba3293 --- /dev/null +++ b/node_modules/@tybys/wasm-util/lib/mjs/wasi/util.mjs @@ -0,0 +1,113 @@ +/* eslint-disable spaced-comment */ +export function validateObject(value, name) { + if (value === null || typeof value !== 'object') { + throw new TypeError(`${name} must be an object. Received ${value === null ? 'null' : typeof value}`); + } +} +export function validateArray(value, name) { + if (!Array.isArray(value)) { + throw new TypeError(`${name} must be an array. Received ${value === null ? 'null' : typeof value}`); + } +} +export function validateBoolean(value, name) { + if (typeof value !== 'boolean') { + throw new TypeError(`${name} must be a boolean. Received ${value === null ? 'null' : typeof value}`); + } +} +export function validateString(value, name) { + if (typeof value !== 'string') { + throw new TypeError(`${name} must be a string. Received ${value === null ? 'null' : typeof value}`); + } +} +export function validateFunction(value, name) { + if (typeof value !== 'function') { + throw new TypeError(`${name} must be a function. Received ${value === null ? 'null' : typeof value}`); + } +} +export function validateUndefined(value, name) { + if (value !== undefined) { + throw new TypeError(`${name} must be undefined. Received ${value === null ? 'null' : typeof value}`); + } +} +export function validateInt32(value, name, min = -2147483648, max = 2147483647) { + if (typeof value !== 'number') { + throw new TypeError(`${name} must be a number. Received ${value === null ? 'null' : typeof value}`); + } + if (!Number.isInteger(value)) { + throw new RangeError(`${name} must be a integer.`); + } + if (value < min || value > max) { + throw new RangeError(`${name} must be >= ${min} && <= ${max}. Received ${value}`); + } +} +export function isPromiseLike(obj) { + return !!(obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function'); +} +export function wrapInstanceExports(exports, mapFn) { + const newExports = Object.create(null); + Object.keys(exports).forEach(name => { + const exportValue = exports[name]; + Object.defineProperty(newExports, name, { + enumerable: true, + value: mapFn(exportValue, name) + }); + }); + return newExports; +} +const _require = /*#__PURE__*/ (function () { + let nativeRequire; + if (typeof __webpack_public_path__ !== 'undefined') { + nativeRequire = (function () { + return typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : undefined; + })(); + } + else { + nativeRequire = (function () { + return typeof __webpack_public_path__ !== 'undefined' ? (typeof __non_webpack_require__ !== 'undefined' ? __non_webpack_require__ : undefined) : (typeof require !== 'undefined' ? require : undefined); + })(); + } + return nativeRequire; +})(); +export const isMainThread = /*#__PURE__*/ (function () { + let worker_threads; + try { + worker_threads = _require('worker_threads'); + } + catch (_) { } + if (!worker_threads) { + return typeof importScripts === 'undefined'; + } + return worker_threads.isMainThread; +})(); +export const postMsg = isMainThread + ? () => { } + : /*#__PURE__*/ (function () { + let worker_threads; + try { + worker_threads = _require('worker_threads'); + } + catch (_) { } + if (!worker_threads) { + return postMessage; + } + return function postMessage(data) { + worker_threads.parentPort.postMessage({ data }); + }; + })(); +export function sleepBreakIf(delay, breakIf) { + const start = Date.now(); + const end = start + delay; + let ret = false; + while (Date.now() < end) { + if (breakIf()) { + ret = true; + break; + } + } + return ret; +} +export function unsharedSlice(view, start, end) { + return ((typeof SharedArrayBuffer === 'function' && view.buffer instanceof SharedArrayBuffer) || (Object.prototype.toString.call(view.buffer.constructor) === '[object SharedArrayBuffer]')) + ? view.slice(start, end) + : view.subarray(start, end); +} diff --git a/node_modules/@tybys/wasm-util/lib/mjs/webassembly.mjs b/node_modules/@tybys/wasm-util/lib/mjs/webassembly.mjs new file mode 100644 index 00000000..b4192f7c --- /dev/null +++ b/node_modules/@tybys/wasm-util/lib/mjs/webassembly.mjs @@ -0,0 +1,9 @@ +const _WebAssembly = typeof WebAssembly !== 'undefined' + ? WebAssembly + : typeof WXWebAssembly !== 'undefined' + ? WXWebAssembly + : undefined; +if (!_WebAssembly) { + throw new Error('WebAssembly is not supported in this environment'); +} +export { _WebAssembly }; diff --git a/node_modules/@tybys/wasm-util/package.json b/node_modules/@tybys/wasm-util/package.json new file mode 100644 index 00000000..b3d9cac7 --- /dev/null +++ b/node_modules/@tybys/wasm-util/package.json @@ -0,0 +1,58 @@ +{ + "name": "@tybys/wasm-util", + "version": "0.10.1", + "description": "WASI polyfill for browser and some wasm util", + "main": "./lib/cjs/index.js", + "module": "./dist/wasm-util.esm-bundler.js", + "types": "./dist/wasm-util.d.ts", + "exports": { + ".": { + "module": "./dist/wasm-util.esm-bundler.js", + "import": "./lib/mjs/index.mjs", + "require": "./lib/cjs/index.js", + "types": "./dist/wasm-util.d.ts" + } + }, + "scripts": { + "build": "tsgo build", + "watch": "tsgo watch", + "test": "jest", + "lint": "eslint ./src/**/*.{ts,js} --fix", + "prepare": "npm run build" + }, + "publishConfig": { + "access": "public" + }, + "keywords": [ + "wasm", + "webassembly", + "wasi", + "polyfill" + ], + "repository": { + "type": "git", + "url": "https://github.com/toyobayashi/wasm-util.git" + }, + "author": "toyobayashi", + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + }, + "devDependencies": { + "@tybys/ts-transform-module-specifier": "^0.0.2", + "@tybys/ts-transform-pure-class": "^0.1.1", + "@tybys/tsgo": "^1.1.0", + "@types/node": "^14.14.31", + "@typescript-eslint/eslint-plugin": "^5.40.1", + "@typescript-eslint/parser": "^5.40.1", + "eslint": "^8.25.0", + "eslint-config-standard-with-typescript": "^23.0.0", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-n": "^15.3.0", + "eslint-plugin-promise": "^6.1.0", + "memfs-browser": "^3.4.13000", + "mocha": "^10.1.0", + "ts-node": "^10.9.1", + "typescript": "~4.8.3" + } +} diff --git a/node_modules/detect-libc/LICENSE b/node_modules/detect-libc/LICENSE new file mode 100644 index 00000000..8dada3ed --- /dev/null +++ b/node_modules/detect-libc/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/node_modules/detect-libc/README.md b/node_modules/detect-libc/README.md new file mode 100644 index 00000000..23212fdd --- /dev/null +++ b/node_modules/detect-libc/README.md @@ -0,0 +1,163 @@ +# detect-libc + +Node.js module to detect details of the C standard library (libc) +implementation provided by a given Linux system. + +Currently supports detection of GNU glibc and MUSL libc. + +Provides asychronous and synchronous functions for the +family (e.g. `glibc`, `musl`) and version (e.g. `1.23`, `1.2.3`). + +The version numbers of libc implementations +are not guaranteed to be semver-compliant. + +For previous v1.x releases, please see the +[v1](https://github.com/lovell/detect-libc/tree/v1) branch. + +## Install + +```sh +npm install detect-libc +``` + +## API + +### GLIBC + +```ts +const GLIBC: string = 'glibc'; +``` + +A String constant containing the value `glibc`. + +### MUSL + +```ts +const MUSL: string = 'musl'; +``` + +A String constant containing the value `musl`. + +### family + +```ts +function family(): Promise; +``` + +Resolves asychronously with: + +* `glibc` or `musl` when the libc family can be determined +* `null` when the libc family cannot be determined +* `null` when run on a non-Linux platform + +```js +const { family, GLIBC, MUSL } = require('detect-libc'); + +switch (await family()) { + case GLIBC: ... + case MUSL: ... + case null: ... +} +``` + +### familySync + +```ts +function familySync(): string | null; +``` + +Synchronous version of `family()`. + +```js +const { familySync, GLIBC, MUSL } = require('detect-libc'); + +switch (familySync()) { + case GLIBC: ... + case MUSL: ... + case null: ... +} +``` + +### version + +```ts +function version(): Promise; +``` + +Resolves asychronously with: + +* The version when it can be determined +* `null` when the libc family cannot be determined +* `null` when run on a non-Linux platform + +```js +const { version } = require('detect-libc'); + +const v = await version(); +if (v) { + const [major, minor, patch] = v.split('.'); +} +``` + +### versionSync + +```ts +function versionSync(): string | null; +``` + +Synchronous version of `version()`. + +```js +const { versionSync } = require('detect-libc'); + +const v = versionSync(); +if (v) { + const [major, minor, patch] = v.split('.'); +} +``` + +### isNonGlibcLinux + +```ts +function isNonGlibcLinux(): Promise; +``` + +Resolves asychronously with: + +* `false` when the libc family is `glibc` +* `true` when the libc family is not `glibc` +* `false` when run on a non-Linux platform + +```js +const { isNonGlibcLinux } = require('detect-libc'); + +if (await isNonGlibcLinux()) { ... } +``` + +### isNonGlibcLinuxSync + +```ts +function isNonGlibcLinuxSync(): boolean; +``` + +Synchronous version of `isNonGlibcLinux()`. + +```js +const { isNonGlibcLinuxSync } = require('detect-libc'); + +if (isNonGlibcLinuxSync()) { ... } +``` + +## Licensing + +Copyright 2017 Lovell Fuller and others. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0.html) + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/node_modules/detect-libc/index.d.ts b/node_modules/detect-libc/index.d.ts new file mode 100644 index 00000000..4c0fb2b0 --- /dev/null +++ b/node_modules/detect-libc/index.d.ts @@ -0,0 +1,14 @@ +// Copyright 2017 Lovell Fuller and others. +// SPDX-License-Identifier: Apache-2.0 + +export const GLIBC: 'glibc'; +export const MUSL: 'musl'; + +export function family(): Promise; +export function familySync(): string | null; + +export function isNonGlibcLinux(): Promise; +export function isNonGlibcLinuxSync(): boolean; + +export function version(): Promise; +export function versionSync(): string | null; diff --git a/node_modules/detect-libc/lib/detect-libc.js b/node_modules/detect-libc/lib/detect-libc.js new file mode 100644 index 00000000..01299b4d --- /dev/null +++ b/node_modules/detect-libc/lib/detect-libc.js @@ -0,0 +1,313 @@ +// Copyright 2017 Lovell Fuller and others. +// SPDX-License-Identifier: Apache-2.0 + +'use strict'; + +const childProcess = require('child_process'); +const { isLinux, getReport } = require('./process'); +const { LDD_PATH, SELF_PATH, readFile, readFileSync } = require('./filesystem'); +const { interpreterPath } = require('./elf'); + +let cachedFamilyInterpreter; +let cachedFamilyFilesystem; +let cachedVersionFilesystem; + +const command = 'getconf GNU_LIBC_VERSION 2>&1 || true; ldd --version 2>&1 || true'; +let commandOut = ''; + +const safeCommand = () => { + if (!commandOut) { + return new Promise((resolve) => { + childProcess.exec(command, (err, out) => { + commandOut = err ? ' ' : out; + resolve(commandOut); + }); + }); + } + return commandOut; +}; + +const safeCommandSync = () => { + if (!commandOut) { + try { + commandOut = childProcess.execSync(command, { encoding: 'utf8' }); + } catch (_err) { + commandOut = ' '; + } + } + return commandOut; +}; + +/** + * A String constant containing the value `glibc`. + * @type {string} + * @public + */ +const GLIBC = 'glibc'; + +/** + * A Regexp constant to get the GLIBC Version. + * @type {string} + */ +const RE_GLIBC_VERSION = /LIBC[a-z0-9 \-).]*?(\d+\.\d+)/i; + +/** + * A String constant containing the value `musl`. + * @type {string} + * @public + */ +const MUSL = 'musl'; + +const isFileMusl = (f) => f.includes('libc.musl-') || f.includes('ld-musl-'); + +const familyFromReport = () => { + const report = getReport(); + if (report.header && report.header.glibcVersionRuntime) { + return GLIBC; + } + if (Array.isArray(report.sharedObjects)) { + if (report.sharedObjects.some(isFileMusl)) { + return MUSL; + } + } + return null; +}; + +const familyFromCommand = (out) => { + const [getconf, ldd1] = out.split(/[\r\n]+/); + if (getconf && getconf.includes(GLIBC)) { + return GLIBC; + } + if (ldd1 && ldd1.includes(MUSL)) { + return MUSL; + } + return null; +}; + +const familyFromInterpreterPath = (path) => { + if (path) { + if (path.includes('/ld-musl-')) { + return MUSL; + } else if (path.includes('/ld-linux-')) { + return GLIBC; + } + } + return null; +}; + +const getFamilyFromLddContent = (content) => { + content = content.toString(); + if (content.includes('musl')) { + return MUSL; + } + if (content.includes('GNU C Library')) { + return GLIBC; + } + return null; +}; + +const familyFromFilesystem = async () => { + if (cachedFamilyFilesystem !== undefined) { + return cachedFamilyFilesystem; + } + cachedFamilyFilesystem = null; + try { + const lddContent = await readFile(LDD_PATH); + cachedFamilyFilesystem = getFamilyFromLddContent(lddContent); + } catch (e) {} + return cachedFamilyFilesystem; +}; + +const familyFromFilesystemSync = () => { + if (cachedFamilyFilesystem !== undefined) { + return cachedFamilyFilesystem; + } + cachedFamilyFilesystem = null; + try { + const lddContent = readFileSync(LDD_PATH); + cachedFamilyFilesystem = getFamilyFromLddContent(lddContent); + } catch (e) {} + return cachedFamilyFilesystem; +}; + +const familyFromInterpreter = async () => { + if (cachedFamilyInterpreter !== undefined) { + return cachedFamilyInterpreter; + } + cachedFamilyInterpreter = null; + try { + const selfContent = await readFile(SELF_PATH); + const path = interpreterPath(selfContent); + cachedFamilyInterpreter = familyFromInterpreterPath(path); + } catch (e) {} + return cachedFamilyInterpreter; +}; + +const familyFromInterpreterSync = () => { + if (cachedFamilyInterpreter !== undefined) { + return cachedFamilyInterpreter; + } + cachedFamilyInterpreter = null; + try { + const selfContent = readFileSync(SELF_PATH); + const path = interpreterPath(selfContent); + cachedFamilyInterpreter = familyFromInterpreterPath(path); + } catch (e) {} + return cachedFamilyInterpreter; +}; + +/** + * Resolves with the libc family when it can be determined, `null` otherwise. + * @returns {Promise} + */ +const family = async () => { + let family = null; + if (isLinux()) { + family = await familyFromInterpreter(); + if (!family) { + family = await familyFromFilesystem(); + if (!family) { + family = familyFromReport(); + } + if (!family) { + const out = await safeCommand(); + family = familyFromCommand(out); + } + } + } + return family; +}; + +/** + * Returns the libc family when it can be determined, `null` otherwise. + * @returns {?string} + */ +const familySync = () => { + let family = null; + if (isLinux()) { + family = familyFromInterpreterSync(); + if (!family) { + family = familyFromFilesystemSync(); + if (!family) { + family = familyFromReport(); + } + if (!family) { + const out = safeCommandSync(); + family = familyFromCommand(out); + } + } + } + return family; +}; + +/** + * Resolves `true` only when the platform is Linux and the libc family is not `glibc`. + * @returns {Promise} + */ +const isNonGlibcLinux = async () => isLinux() && await family() !== GLIBC; + +/** + * Returns `true` only when the platform is Linux and the libc family is not `glibc`. + * @returns {boolean} + */ +const isNonGlibcLinuxSync = () => isLinux() && familySync() !== GLIBC; + +const versionFromFilesystem = async () => { + if (cachedVersionFilesystem !== undefined) { + return cachedVersionFilesystem; + } + cachedVersionFilesystem = null; + try { + const lddContent = await readFile(LDD_PATH); + const versionMatch = lddContent.match(RE_GLIBC_VERSION); + if (versionMatch) { + cachedVersionFilesystem = versionMatch[1]; + } + } catch (e) {} + return cachedVersionFilesystem; +}; + +const versionFromFilesystemSync = () => { + if (cachedVersionFilesystem !== undefined) { + return cachedVersionFilesystem; + } + cachedVersionFilesystem = null; + try { + const lddContent = readFileSync(LDD_PATH); + const versionMatch = lddContent.match(RE_GLIBC_VERSION); + if (versionMatch) { + cachedVersionFilesystem = versionMatch[1]; + } + } catch (e) {} + return cachedVersionFilesystem; +}; + +const versionFromReport = () => { + const report = getReport(); + if (report.header && report.header.glibcVersionRuntime) { + return report.header.glibcVersionRuntime; + } + return null; +}; + +const versionSuffix = (s) => s.trim().split(/\s+/)[1]; + +const versionFromCommand = (out) => { + const [getconf, ldd1, ldd2] = out.split(/[\r\n]+/); + if (getconf && getconf.includes(GLIBC)) { + return versionSuffix(getconf); + } + if (ldd1 && ldd2 && ldd1.includes(MUSL)) { + return versionSuffix(ldd2); + } + return null; +}; + +/** + * Resolves with the libc version when it can be determined, `null` otherwise. + * @returns {Promise} + */ +const version = async () => { + let version = null; + if (isLinux()) { + version = await versionFromFilesystem(); + if (!version) { + version = versionFromReport(); + } + if (!version) { + const out = await safeCommand(); + version = versionFromCommand(out); + } + } + return version; +}; + +/** + * Returns the libc version when it can be determined, `null` otherwise. + * @returns {?string} + */ +const versionSync = () => { + let version = null; + if (isLinux()) { + version = versionFromFilesystemSync(); + if (!version) { + version = versionFromReport(); + } + if (!version) { + const out = safeCommandSync(); + version = versionFromCommand(out); + } + } + return version; +}; + +module.exports = { + GLIBC, + MUSL, + family, + familySync, + isNonGlibcLinux, + isNonGlibcLinuxSync, + version, + versionSync +}; diff --git a/node_modules/detect-libc/lib/elf.js b/node_modules/detect-libc/lib/elf.js new file mode 100644 index 00000000..aa166aa2 --- /dev/null +++ b/node_modules/detect-libc/lib/elf.js @@ -0,0 +1,39 @@ +// Copyright 2017 Lovell Fuller and others. +// SPDX-License-Identifier: Apache-2.0 + +'use strict'; + +const interpreterPath = (elf) => { + if (elf.length < 64) { + return null; + } + if (elf.readUInt32BE(0) !== 0x7F454C46) { + // Unexpected magic bytes + return null; + } + if (elf.readUInt8(4) !== 2) { + // Not a 64-bit ELF + return null; + } + if (elf.readUInt8(5) !== 1) { + // Not little-endian + return null; + } + const offset = elf.readUInt32LE(32); + const size = elf.readUInt16LE(54); + const count = elf.readUInt16LE(56); + for (let i = 0; i < count; i++) { + const headerOffset = offset + (i * size); + const type = elf.readUInt32LE(headerOffset); + if (type === 3) { + const fileOffset = elf.readUInt32LE(headerOffset + 8); + const fileSize = elf.readUInt32LE(headerOffset + 32); + return elf.subarray(fileOffset, fileOffset + fileSize).toString().replace(/\0.*$/g, ''); + } + } + return null; +}; + +module.exports = { + interpreterPath +}; diff --git a/node_modules/detect-libc/lib/filesystem.js b/node_modules/detect-libc/lib/filesystem.js new file mode 100644 index 00000000..4c2443cc --- /dev/null +++ b/node_modules/detect-libc/lib/filesystem.js @@ -0,0 +1,51 @@ +// Copyright 2017 Lovell Fuller and others. +// SPDX-License-Identifier: Apache-2.0 + +'use strict'; + +const fs = require('fs'); + +const LDD_PATH = '/usr/bin/ldd'; +const SELF_PATH = '/proc/self/exe'; +const MAX_LENGTH = 2048; + +/** + * Read the content of a file synchronous + * + * @param {string} path + * @returns {Buffer} + */ +const readFileSync = (path) => { + const fd = fs.openSync(path, 'r'); + const buffer = Buffer.alloc(MAX_LENGTH); + const bytesRead = fs.readSync(fd, buffer, 0, MAX_LENGTH, 0); + fs.close(fd, () => {}); + return buffer.subarray(0, bytesRead); +}; + +/** + * Read the content of a file + * + * @param {string} path + * @returns {Promise} + */ +const readFile = (path) => new Promise((resolve, reject) => { + fs.open(path, 'r', (err, fd) => { + if (err) { + reject(err); + } else { + const buffer = Buffer.alloc(MAX_LENGTH); + fs.read(fd, buffer, 0, MAX_LENGTH, 0, (_, bytesRead) => { + resolve(buffer.subarray(0, bytesRead)); + fs.close(fd, () => {}); + }); + } + }); +}); + +module.exports = { + LDD_PATH, + SELF_PATH, + readFileSync, + readFile +}; diff --git a/node_modules/detect-libc/lib/process.js b/node_modules/detect-libc/lib/process.js new file mode 100644 index 00000000..ee78ad26 --- /dev/null +++ b/node_modules/detect-libc/lib/process.js @@ -0,0 +1,24 @@ +// Copyright 2017 Lovell Fuller and others. +// SPDX-License-Identifier: Apache-2.0 + +'use strict'; + +const isLinux = () => process.platform === 'linux'; + +let report = null; +const getReport = () => { + if (!report) { + /* istanbul ignore next */ + if (isLinux() && process.report) { + const orig = process.report.excludeNetwork; + process.report.excludeNetwork = true; + report = process.report.getReport(); + process.report.excludeNetwork = orig; + } else { + report = {}; + } + } + return report; +}; + +module.exports = { isLinux, getReport }; diff --git a/node_modules/detect-libc/package.json b/node_modules/detect-libc/package.json new file mode 100644 index 00000000..36d0f2be --- /dev/null +++ b/node_modules/detect-libc/package.json @@ -0,0 +1,44 @@ +{ + "name": "detect-libc", + "version": "2.1.2", + "description": "Node.js module to detect the C standard library (libc) implementation family and version", + "main": "lib/detect-libc.js", + "files": [ + "lib/", + "index.d.ts" + ], + "scripts": { + "test": "semistandard && nyc --reporter=text --check-coverage --branches=100 ava test/unit.js", + "changelog": "conventional-changelog -i CHANGELOG.md -s", + "bench": "node benchmark/detect-libc", + "bench:calls": "node benchmark/call-familySync.js && sleep 1 && node benchmark/call-isNonGlibcLinuxSync.js && sleep 1 && node benchmark/call-versionSync.js" + }, + "repository": { + "type": "git", + "url": "git://github.com/lovell/detect-libc.git" + }, + "keywords": [ + "libc", + "glibc", + "musl" + ], + "author": "Lovell Fuller ", + "contributors": [ + "Niklas Salmoukas ", + "Vinícius Lourenço " + ], + "license": "Apache-2.0", + "devDependencies": { + "ava": "^2.4.0", + "benchmark": "^2.1.4", + "conventional-changelog-cli": "^5.0.0", + "eslint-config-standard": "^13.0.1", + "nyc": "^15.1.0", + "proxyquire": "^2.1.3", + "semistandard": "^14.2.3" + }, + "engines": { + "node": ">=8" + }, + "types": "index.d.ts" +} diff --git a/node_modules/enhanced-resolve/LICENSE b/node_modules/enhanced-resolve/LICENSE new file mode 100644 index 00000000..8c11fc72 --- /dev/null +++ b/node_modules/enhanced-resolve/LICENSE @@ -0,0 +1,20 @@ +Copyright JS Foundation and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/enhanced-resolve/README.md b/node_modules/enhanced-resolve/README.md new file mode 100644 index 00000000..970deb86 --- /dev/null +++ b/node_modules/enhanced-resolve/README.md @@ -0,0 +1,784 @@ +# enhanced-resolve + +[![npm][npm]][npm-url] +[![Build Status][build-status]][build-status-url] +[![codecov][codecov-badge]][codecov-url] +[![Install Size][size]][size-url] +[![GitHub Discussions][discussion]][discussion-url] + +Offers an async require.resolve function. It's highly configurable. + +## Features + +- plugin system +- provide a custom filesystem +- sync and async node.js filesystems included + +## Getting Started + +### Install + +```sh +# npm +npm install enhanced-resolve +# or Yarn +yarn add enhanced-resolve +# or pnpm +pnpm add enhanced-resolve +``` + +### Resolve + +There is a Node.js API which allows to resolve requests according to the Node.js resolving rules. +Sync, async (callback) and promise APIs are offered. A `create` method allows to create a custom resolve function. + +```js +const resolve = require("enhanced-resolve"); + +resolve("/some/path/to/folder", "module/dir", (err, result) => { + result; // === "/some/path/node_modules/module/dir/index.js" +}); + +resolve.sync("/some/path/to/folder", "../../dir"); +// === "/some/path/dir/index.js" + +const result = await resolve.promise("/some/path/to/folder", "../../dir"); +// === "/some/path/dir/index.js" + +const myResolve = resolve.create({ + // or resolve.create.sync / resolve.create.promise + extensions: [".ts", ".js"], + // see more options below +}); + +myResolve("/some/path/to/folder", "ts-module", (err, result) => { + result; // === "/some/node_modules/ts-module/index.ts" +}); +``` + +### Public API + +All of the following are exposed from `require("enhanced-resolve")`. + +#### `resolve(context?, path, request, resolveContext?, callback)` + +Async Node-style resolver using the built-in defaults (`conditionNames: ["node"]`, `extensions: [".js", ".json", ".node"]`). `context` is optional; when omitted, a built-in Node context is used. + +```js +const resolve = require("enhanced-resolve"); + +resolve(__dirname, "./utils", (err, result) => { + // result === "/abs/path/to/utils.js" +}); +``` + +#### `resolve.sync(context?, path, request, resolveContext?) => string | false` + +Synchronous variant. Throws on failure, returns `false` when the resolve yields no result. + +```js +const file = resolve.sync(__dirname, "./utils"); +``` + +#### `resolve.promise(context?, path, request, resolveContext?) => Promise` + +Promise variant of `resolve`. + +```js +const file = await resolve.promise(__dirname, "./utils"); +``` + +#### `resolve.create(options) => ResolveFunctionAsync` + +Builds a customized async resolve function. Options are the same as for [`ResolverFactory.createResolver`](#resolver-options); `fileSystem` defaults to the built-in Node.js filesystem. + +```js +const resolveTs = resolve.create({ extensions: [".ts", ".tsx", ".js"] }); + +resolveTs(__dirname, "./component", (err, result) => { + // result === "/abs/path/to/component.tsx" +}); +``` + +#### `resolve.create.sync(options) => ResolveFunction` + +Sync variant of `resolve.create`. + +```js +const resolveTsSync = resolve.create.sync({ extensions: [".ts", ".js"] }); +const file = resolveTsSync(__dirname, "./component"); +``` + +#### `resolve.create.promise(options) => ResolveFunctionPromise` + +Promise variant of `resolve.create`. + +```js +const resolveTsPromise = resolve.create.promise({ extensions: [".ts", ".js"] }); +const file = await resolveTsPromise(__dirname, "./component"); +``` + +#### `ResolverFactory.createResolver(options) => Resolver` + +Lower-level factory. Returns a `Resolver` whose `resolve`, `resolveSync`, and `resolvePromise` methods accept `(context, path, request, resolveContext, [callback])`. Use this when you need a reusable resolver instance or access to its `hooks` (see the [Plugins](#plugins) section). `fileSystem` is required here — the high-level `resolve.create` defaults it for you. + +```js +const fs = require("fs"); +const { CachedInputFileSystem, ResolverFactory } = require("enhanced-resolve"); + +const resolver = ResolverFactory.createResolver({ + fileSystem: new CachedInputFileSystem(fs, 4000), + extensions: [".js", ".json"], +}); + +// callback +resolver.resolve({}, __dirname, "./utils", {}, (err, file) => { + // ... +}); + +// sync (requires a sync fileSystem) +const fileSync = resolver.resolveSync({}, __dirname, "./utils"); + +// promise +const filePromise = await resolver.resolvePromise({}, __dirname, "./utils", {}); +``` + +#### `CachedInputFileSystem(fileSystem, duration)` + +Wraps any Node-compatible `fs` to add an in-memory cache for `stat`, `readdir`, `readFile`, `readJson`, and `readlink`. `duration` is the cache TTL in milliseconds (typically `4000`). Call `.purge()` to invalidate, or `.purge(path)` / `.purge([path, ...])` to invalidate specific entries — do this whenever you know files changed (e.g. from a watcher). + +```js +const fs = require("fs"); +const { CachedInputFileSystem } = require("enhanced-resolve"); + +const cachedFs = new CachedInputFileSystem(fs, 4000); +// later, when files change: +cachedFs.purge("/abs/path/to/changed-file.js"); +``` + +#### Exported plugins & helpers + +For use with the `plugins` option or as standalone utilities: + +- `ResolverFactory` — see above. +- `CachedInputFileSystem` — see above. +- `CloneBasenamePlugin(source, target)` — joins the directory's basename onto the path. See [Built-in Plugins](#built-in-plugins). +- `LogInfoPlugin(source)` — logs pipeline state at a hook; enable by passing a `log` function on the `resolveContext`. +- `TsconfigPathsPlugin(options)` — applies `tsconfig.json` `paths` / `baseUrl` mappings; typically configured via the `tsconfig` resolver option instead. +- `forEachBail(array, iterator, callback)` — bail-style async iterator used internally; useful when authoring plugins that try several candidates in order. + +```js +const { LogInfoPlugin } = require("enhanced-resolve"); + +const resolver = ResolverFactory.createResolver({ + fileSystem: cachedFs, + extensions: [".js"], + plugins: [new LogInfoPlugin("described-resolve")], +}); + +resolver.resolve( + {}, + __dirname, + "./utils", + { log: (msg) => console.log(msg) }, + () => {}, +); +``` + +### Creating a Resolver + +The easiest way to create a resolver is to use the `createResolver` function on `ResolveFactory`, along with one of the supplied File System implementations. + +```js +const fs = require("fs"); +const { CachedInputFileSystem, ResolverFactory } = require("enhanced-resolve"); + +// create a resolver +const myResolver = ResolverFactory.createResolver({ + // Typical usage will consume the `fs` + `CachedInputFileSystem`, which wraps Node.js `fs` to add caching. + fileSystem: new CachedInputFileSystem(fs, 4000), + extensions: [".js", ".json"], + /* any other resolver options here. Options/defaults can be seen below */ +}); + +// resolve a file with the new resolver +const context = {}; +const lookupStartPath = "/Users/webpack/some/root/dir"; +const request = "./path/to-look-up.js"; +const resolveContext = {}; + +// callback +myResolver.resolve( + context, + lookupStartPath, + request, + resolveContext, + (err /* Error */, filepath /* string */) => { + // Do something with the path + }, +); + +// promise +try { + const filepath = await myResolver.resolvePromise( + context, + lookupStartPath, + request, + resolveContext, + ); + // Do something with the path +} catch (err) { + // handle resolve failure +} + +// sync (requires a sync fileSystem, e.g. the default Node.js one) +const filepath = myResolver.resolveSync(context, lookupStartPath, request); +``` + +#### Resolver Options + +| Field | Default | Description | +| ------------------------ | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| alias | [] | A list of module alias configurations or an object which maps key to value | +| aliasFields | [] | A list of alias fields in description files | +| extensionAlias | {} | An object which maps extension to extension aliases | +| extensionAliasForExports | false | Also apply `extensionAlias` to paths resolved through the package.json `exports` field. Off by default (Node.js-aligned) | +| cachePredicate | function() { return true }; | A function which decides whether a request should be cached or not. An object is passed to the function with `path` and `request` properties. | +| cacheWithContext | true | If unsafe cache is enabled, includes `request.context` in the cache key | +| conditionNames | [] | A list of exports field condition names | +| descriptionFiles | ["package.json"] | A list of description files to read from | +| enforceExtension | false | Enforce that a extension from extensions must be used | +| exportsFields | ["exports"] | A list of exports fields in description files | +| extensions | [".js", ".json", ".node"] | A list of extensions which should be tried for files | +| fallback | [] | Same as `alias`, but only used if default resolving fails | +| fileSystem | | The file system which should be used | +| fullySpecified | false | Request passed to resolve is already fully specified and extensions or main files are not resolved for it (they are still resolved for internal requests) | +| mainFields | ["main"] | A list of main fields in description files | +| mainFiles | ["index"] | A list of main files in directories | +| modules | ["node_modules"] | A list of directories to resolve modules from, can be absolute path or folder name | +| plugins | [] | A list of additional resolve plugins which should be applied | +| resolver | undefined | A prepared Resolver to which the plugins are attached | +| resolveToContext | false | Resolve to a context instead of a file | +| preferRelative | false | Prefer to resolve module requests as relative request and fallback to resolving as module | +| preferAbsolute | false | Prefer to resolve server-relative urls as absolute paths before falling back to resolve in roots | +| restrictions | [] | A list of resolve restrictions | +| roots | [] | A list of root paths | +| symlinks | true | Whether to resolve symlinks to their symlinked location | +| tsconfig | false | TypeScript config for paths mapping. Can be `false` (disabled), `true` (use default `tsconfig.json`), a string path to `tsconfig.json`, or an object with `configFile`, `references`, and `baseUrl` options. Supports JSONC format (comments and trailing commas) like TypeScript compiler. | +| tsconfig.configFile | tsconfig.json | Path to the tsconfig.json file | +| tsconfig.references | [] | Project references. `'auto'` to load from tsconfig, or an array of paths to referenced projects | +| tsconfig.baseUrl | undefined | Override baseUrl from tsconfig.json. If provided, this value will be used instead of the baseUrl in the tsconfig file | +| unsafeCache | false | Use this cache object to unsafely cache the successful requests | + +#### Option Examples + +Small snippets for the non-obvious options. All options are passed to `resolve.create({ ... })` or `ResolverFactory.createResolver({ ... })`. + +**`alias`** — rewrite matching requests to a target path, module, or to `false` to ignore them. Accepts an object or an array of entries (array form lets you specify ordering / `onlyModule`). + +```js +const options = { + alias: { + "@": path.resolve(__dirname, "src"), // @/utils → src/utils + lodash$: "lodash-es", // exact "lodash", not "lodash/foo" + "ignored-module": false, // short-circuit to an empty module + }, +}; +``` + +**`aliasFields`** — read alias maps from fields in `package.json`. The `browser` field is the common case: + +```js +const options = { aliasFields: ["browser"] }; +``` + +**`extensionAlias`** — maps one request extension to a list of candidate extensions. Useful for TypeScript ESM where imports are written with `.js` but the source is `.ts`. Applies both to direct requests (e.g. `./foo.js`) and to paths produced by the package.json `imports` field (e.g. `#foo` → `./foo.js` → `./foo.ts`). By default it does **not** apply to paths produced by the `exports` field (to stay aligned with Node.js, which does not substitute extensions on package-exported paths) — see `extensionAliasForExports` below to opt in: + +```js +const options = { + extensionAlias: { + ".js": [".ts", ".js"], + ".mjs": [".mts", ".mjs"], + }, +}; +``` + +**`extensionAliasForExports`** — when `true`, also apply `extensionAlias` to paths resolved through the package.json `exports` field. Off by default to match Node.js. Turn it on if you want full alignment with TypeScript's resolver for packages that ship `.ts` sources alongside the compiled `.js` files they list in `exports` (e.g. monorepo source packages, or the `eslint-import-resolver-typescript` use case): + +```js +const options = { + extensionAlias: { ".js": [".ts", ".js"] }, + extensionAliasForExports: true, +}; +``` + +**`conditionNames` + `exportsFields`** — pick which conditions to match in the `exports` field of `package.json`: + +```js +const options = { + conditionNames: ["import", "node", "default"], + exportsFields: ["exports"], +}; +``` + +**`extensions`** — extensions to try for extensionless requests, in order: + +```js +const options = { extensions: [".ts", ".tsx", ".js", ".json"] }; +``` + +**`fallback`** — same shape as `alias`, but only consulted when the primary resolve fails. Handy for polyfills: + +```js +const options = { + fallback: { + crypto: require.resolve("crypto-browserify"), + stream: false, + }, +}; +``` + +**`modules`** — where to look for bare-module requests. Entries can be folder names (searched hierarchically up the tree) or absolute paths (searched directly): + +```js +const options = { modules: [path.resolve(__dirname, "src"), "node_modules"] }; +``` + +**`mainFields` / `mainFiles`** — fields in `package.json` to try for a package entry point, and filenames to try inside a directory: + +```js +const options = { + mainFields: ["browser", "module", "main"], + mainFiles: ["index"], +}; +``` + +**`roots` + `preferAbsolute`** — resolve server-relative URLs (starting with `/`) against one or more root directories. With `preferAbsolute: true`, absolute-path resolution is tried before the roots are consulted. + +```js +const options = { + roots: [path.resolve(__dirname, "public")], + preferAbsolute: false, +}; +``` + +**`restrictions`** — reject results that don't satisfy at least one restriction. Accepts strings (path prefixes) or `RegExp`s: + +```js +const options = { + restrictions: [path.resolve(__dirname, "src"), /\.(js|ts)$/], +}; +``` + +**`tsconfig`** — apply TypeScript `paths` / `baseUrl` mappings. Either pass `true` to load `./tsconfig.json`, a path string, or a configuration object: + +```js +const options = { + tsconfig: { + configFile: path.resolve(__dirname, "tsconfig.json"), + references: "auto", // honor project references declared in tsconfig + }, +}; +``` + +**`symlinks`** — resolve to the real path by following symlinks. Set to `false` to keep the symlinked path (common for monorepo / pnpm layouts where you want module identity tied to the workspace location): + +```js +const options = { symlinks: false }; +``` + +**`fullySpecified`** — require fully-specified requests (no extension inference, no `index` lookup) for non-internal requests. Matches Node.js ESM semantics: + +```js +const options = { fullySpecified: true }; +``` + +**`unsafeCache`** — pass an object to use as an in-memory cache of successful resolves. Set to `true` to let the resolver allocate its own: + +```js +const options = { + unsafeCache: {}, // or true + cacheWithContext: false, // skip context in the cache key — faster, but only safe if context doesn't change the result +}; +``` + +To observe whether a request was served from the cache, wrap the cache object in a `Proxy`. `UnsafeCachePlugin` reads entries with `cache[id]` (cache lookup) and writes them with `cache[id] = result` (cache store), so trapping `get` and `set` is enough to distinguish hits from misses: + +```js +const cache = {}; +const observedCache = new Proxy(cache, { + get(target, name, receiver) { + const hit = name in target; + console.log(hit ? `[cache hit] ${name}` : `[cache miss] ${name}`); + return Reflect.get(target, name, receiver); + }, + set(target, name, value, receiver) { + console.log(`[cache set] ${name}`); + return Reflect.set(target, name, value, receiver); + }, +}); + +const resolver = ResolverFactory.createResolver({ + fileSystem: new CachedInputFileSystem(fs, 4000), + extensions: [".js", ".json"], + unsafeCache: observedCache, +}); +``` + +The `name` argument is the cache id — a `JSON.stringify`'d object containing `type`, `context`, `path`, `query`, `fragment`, and `request` — so you can parse it to report on specific resolves. Only successful resolves go through the cache; failures never touch it. + +**`fileSystem`** — any `fs`-compatible implementation. Usually `new CachedInputFileSystem(fs, 4000)`; can be a virtual filesystem (e.g. `memfs`) for testing: + +```js +const options = { fileSystem: new CachedInputFileSystem(require("fs"), 4000) }; +``` + +**`plugins`** — additional plugin instances appended to the pipeline. See [Plugins](#plugins): + +```js +const options = { + plugins: [new TsconfigPathsPlugin({ configFile: "./tsconfig.json" })], +}; +``` + +## Plugins + +Similar to `webpack`, the core of `enhanced-resolve` functionality is implemented as individual plugins that are executed using [`tapable`](https://github.com/webpack/tapable). +These plugins can extend the functionality of the library, adding other ways for files/contexts to be resolved. + +A plugin should be a `class` (or its ES5 equivalent) with an `apply` method. The `apply` method will receive a `resolver` instance, that can be used to hook in to the event system. + +Plugins are executed in a pipeline, and register which event they should be executed before/after. `source` is the name of the event that starts the pipeline, and `target` is what event this plugin should fire, which is what continues the execution of the pipeline. For a full view of how these plugin events form a chain, see `lib/ResolverFactory.js`, in the `//// pipeline ////` section. + +### Built-in Plugins + +`enhanced-resolve` ships with the following plugins. Most of them are wired up automatically by `ResolverFactory` based on the [resolver options](#resolver-options); the ones exported from the package entry (`TsconfigPathsPlugin`, `CloneBasenamePlugin`, `LogInfoPlugin`) are the ones you're most likely to use explicitly. + +| Plugin | Purpose | +| ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `AliasPlugin` | Replaces a matching request with one or more alternative targets. Powers the `alias` and `fallback` options. | +| `AliasFieldPlugin` | Applies aliasing based on a field in the description file (e.g. the `browser` field). Powers `aliasFields`. | +| `AppendPlugin` | Appends a string (typically an extension) to the current path. Used for `extensions`. | +| `CloneBasenamePlugin` | Joins the current directory basename onto the path (e.g. `/foo/bar` → `/foo/bar/bar`). Useful for directory-named main-file schemes. | +| `ConditionalPlugin` | Forwards the request only when it matches a given partial request shape. | +| `DescriptionFilePlugin` | Finds and loads the nearest description file (e.g. `package.json`) so other plugins can read its fields. Powers `descriptionFiles`. | +| `DirectoryExistsPlugin` | Only continues the pipeline if the current path is an existing directory. | +| `ExportsFieldPlugin` | Resolves requests through the `exports` field of a package's description file. Powers `exportsFields` and `conditionNames`. | +| `ExtensionAliasPlugin` | Maps one extension to a list of alternative extensions (e.g. `.js` → `.ts`, `.js`). Powers `extensionAlias`. | +| `FileExistsPlugin` | Only continues the pipeline if the current path is an existing file, and records the file as a dependency. | +| `ImportsFieldPlugin` | Resolves `#name` requests through the `imports` field of the enclosing package. | +| `JoinRequestPlugin` | Joins the current path with the current request into a new path. | +| `JoinRequestPartPlugin` | Splits a module request into module name + inner request, joining the inner request onto the path. | +| `LogInfoPlugin` | Emits verbose log output at a given pipeline step. Handy for debugging resolves via `resolveContext.log`. | +| `MainFieldPlugin` | Uses a field in the description file (e.g. `main`) to point to the entry file of a package. Powers `mainFields`. | +| `ModulesInHierarchicalDirectoriesPlugin` | Searches for a module by walking up parent directories (the standard `node_modules` lookup). Powers `modules`. | +| `ModulesInRootPlugin` | Searches for a module in a single absolute directory. Powers absolute-path entries in `modules`. | +| `NextPlugin` | Forwards the request from one hook to another without modification — glue between pipeline steps. | +| `ParsePlugin` | Parses a raw request string into its components (path, query, fragment, module flag, etc.). | +| `PnpPlugin` | Resolves module requests through a Yarn PnP API when one is available. | +| `RestrictionsPlugin` | Rejects results that don't match a list of path restrictions (strings or regular expressions). Powers `restrictions`. | +| `ResultPlugin` | Terminal plugin that fires the `result` hook — signals a successful resolve. | +| `RootsPlugin` | Resolves server-relative URL requests (starting with `/`) against one or more root directories. Powers `roots`. | +| `SelfReferencePlugin` | Resolves a package self-reference (e.g. `my-pkg/foo` from within `my-pkg`). | +| `SymlinkPlugin` | Real paths the resolved file by following symlinks. Can be disabled via the `symlinks` option. | +| `TryNextPlugin` | Forwards the request to the next hook with a log message. Useful for trying alternative resolutions. | +| `TsconfigPathsPlugin` | Rewrites requests using the `paths` and `baseUrl` from a `tsconfig.json`. Powers the `tsconfig` option. | +| `UnsafeCachePlugin` | Caches successful resolves in an in-memory map to speed up repeated requests. Powers `unsafeCache`. | +| `UseFilePlugin` | Joins a fixed filename onto the current path (e.g. `index`). Powers `mainFiles`. | + +#### Plugin wiring and goals + +One-line goal and default wiring (`source → target`) for each plugin. `*` means the plugin is tapped on several hooks — the common ones are listed. Plugins without a fixed wiring are user-tapped. + +- **`AliasPlugin`** — Goal: redirect requests matching a configured key to an alternative target. `raw-resolve` → `internal-resolve` for `alias`; `file` → `internal-resolve` as a last-chance remap; `described-resolve` → `internal-resolve` for `fallback`. +- **`AliasFieldPlugin`** — Goal: apply aliases declared in a description-file field like `browser`, so environment-specific substitutions happen without user config. `raw-resolve` / `file` → `internal-resolve`. +- **`AppendPlugin`** — Goal: try appending a fixed string (usually an extension) to the current path. `raw-file` → `file`, one instance per entry in `extensions`. +- **`CloneBasenamePlugin`** — Goal: join the directory's basename onto the path (e.g. `/foo/bar` → `/foo/bar/bar`) for directory-named-main layouts. User-wired via `plugins`. +- **`ConditionalPlugin`** — Goal: gate a forward on a partial match of the request shape (e.g. `{ module: true }`), used to fan-out at branching hooks. Tapped on `after-normal-resolve`, `resolve-as-module`, `described-relative`, and `raw-file`. +- **`DescriptionFilePlugin`** — Goal: locate and attach the nearest description file (usually `package.json`) so downstream plugins can read its fields. `parsed-resolve` → `described-resolve`, `relative` → `described-relative`, `undescribed-resolve-in-package` → `resolve-in-package`, `undescribed-existing-directory` → `existing-directory`, `undescribed-raw-file` → `raw-file`. +- **`DirectoryExistsPlugin`** — Goal: only continue the pipeline if the current path exists as a directory. `resolve-as-module` → `undescribed-resolve-in-package`, `directory` → `undescribed-existing-directory`. +- **`ExportsFieldPlugin`** — Goal: map a request through the `exports` field of a package's description file (with `conditionNames`). `resolve-in-package` → `relative`. +- **`ExtensionAliasPlugin`** — Goal: rewrite a request's extension to a list of candidate extensions (e.g. `.js` → `.ts`, `.js`) for TypeScript ESM and similar. `raw-resolve` → `normal-resolve` for direct requests; also `imports-field-relative` → `relative` so extension substitution applies to `imports`-field targets. +- **`FileExistsPlugin`** — Goal: confirm a candidate path exists as a file and record it as a file dependency. `final-file` → `existing-file`. +- **`ImportsFieldPlugin`** — Goal: resolve `#name` requests through the `imports` field of the enclosing package. `internal` → `imports-field-relative` (relative target) or `imports-resolve` (bare target). +- **`JoinRequestPlugin`** — Goal: join the current path with the current request into a single concrete path. `after-normal-resolve` → `relative` (three stage-offset copies for `preferRelative`, `preferAbsolute`, and default), `resolve-in-existing-directory` → `relative`. +- **`JoinRequestPartPlugin`** — Goal: split a module request into module name + inner request, joining the inner part onto the path. `module` → `resolve-as-module`. +- **`LogInfoPlugin`** — Goal: emit verbose log output at a chosen hook; enable by passing a `log` function on `resolveContext`. User-wired via `plugins`. +- **`MainFieldPlugin`** — Goal: follow a description-file field (e.g. `main`, `module`, `browser`) to the entry file of a package. `existing-directory` → `resolve-in-existing-directory`, one instance per entry in `mainFields`. +- **`ModulesInHierarchicalDirectoriesPlugin`** — Goal: search for a module by walking up parent directories (the standard `node_modules` lookup). `raw-module` → `module`; when PnP is enabled, `alternate-raw-module` → `module` too. +- **`ModulesInRootPlugin`** — Goal: search for a module in a single absolute directory (powers absolute-path entries in `modules`). `raw-module` → `module`. +- **`NextPlugin`** — Goal: glue — forward the current request unchanged from one hook to another. Used across the pipeline wherever two hooks should run sequentially. +- **`ParsePlugin`** — Goal: split the raw request string into path / query / fragment / `module` / `directory` / `internal` flags. `resolve` → `parsed-resolve`; also wired on `internal-resolve` and `imports-resolve`. +- **`PnpPlugin`** — Goal: resolve bare-module requests through Yarn's PnP API when available. `raw-module` → `undescribed-resolve-in-package` on hit, `alternate-raw-module` on miss. +- **`RestrictionsPlugin`** — Goal: reject resolved paths that don't satisfy at least one string prefix or RegExp. Tapped on `resolved`. +- **`ResultPlugin`** — Goal: terminal plugin — fires the `result` lifecycle hook and signals a successful resolve. Tapped on `resolved`. +- **`RootsPlugin`** — Goal: resolve server-relative URL requests (starting with `/`) against one or more root directories. `after-normal-resolve` → `relative`. +- **`SelfReferencePlugin`** — Goal: resolve a package self-reference (`my-pkg/foo` from inside `my-pkg`) via its own `exports`. `raw-module` → `resolve-as-module`. +- **`SymlinkPlugin`** — Goal: real-path the resolved file by following symlinks; can be disabled via `symlinks: false`. `existing-file` → `existing-file` (runs via a stage offset on the same hook). +- **`TryNextPlugin`** — Goal: forward the request to another hook with a log message, useful for trying an alternative candidate. `raw-file` → `file` (as the "no extension" attempt) and user-wired. +- **`TsconfigPathsPlugin`** — Goal: rewrite requests using the `paths` and `baseUrl` from a `tsconfig.json` (including project references). Taps `described-resolve` internally and forwards to `internal-resolve`; exported for direct use as well. +- **`UnsafeCachePlugin`** — Goal: cache successful resolves in an in-memory map for repeated requests. `described-resolve` → `raw-resolve` (only when `unsafeCache` is enabled). +- **`UseFilePlugin`** — Goal: join a fixed filename (e.g. `index`) onto the current path to try as an entry file. `existing-directory` / `undescribed-existing-directory` → `undescribed-raw-file`, one instance per entry in `mainFiles`. + +### Hooks + +A resolver exposes two kinds of [`tapable`](https://github.com/webpack/tapable) hooks: + +- **Lifecycle hooks** on `resolver.hooks` — fired by the resolver itself around each `resolve` call. Use these to observe, not to transform the request. +- **Pipeline hooks** — the named steps that plugins tap as `source` and forward to as `target`. Every pipeline hook is an `AsyncSeriesBailHook<[request, resolveContext], request | null>`: return `callback()` to pass on, `callback(err)` to fail, or `callback(null, request)` to short-circuit with a result. Obtain them with `resolver.ensureHook(name)` (creates if missing) or `resolver.getHook(name)` (throws if missing); names are kebab-case or camelCase and are interchangeable. + +#### Lifecycle hooks + +| Hook | Type | Fires when | +| ------------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `resolveStep` | `SyncHook` | Every time the resolver hands a request to a pipeline hook. Arguments: `(hook, request)`. Ideal for tracing. | +| `noResolve` | `SyncHook` | When a top-level `resolve()` call can't produce a result. Arguments: `(request, error)`. | +| `resolve` | `AsyncSeriesBailHook` | Entry point of the pipeline (also listed below). Tap this to intercept requests before parsing. | +| `result` | `AsyncSeriesHook` | After a successful resolve, with the final request. Fired by `ResultPlugin`. Tap to observe/record results without short-circuiting. | + +#### Pipeline hooks + +Listed roughly in the order the default pipeline visits them. Full wiring lives in `lib/ResolverFactory.js` under `//// pipeline ////`. + +| Hook | Role | +| -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `resolve` | Entry point. `ParsePlugin` parses the raw request (path, query, fragment, module flag) and forwards to `parsed-resolve`. | +| `internal-resolve` | Re-entry point used by internal rewrites (e.g. after an `alias` fires). Same role as `resolve`, but `fullySpecified` is forced off. | +| `imports-resolve` | Re-entry point for the target of an `imports` field match; prevents recursive `#` resolution per the Node.js ESM spec. | +| `parsed-resolve` | Request has been parsed. `DescriptionFilePlugin` attaches the nearest `package.json`, then forwards to `described-resolve`. | +| `described-resolve` | Description file is attached. Where `unsafeCache`, `fallback`, and most user plugins (including `MyLibSrcPlugin` below) hook in. | +| `raw-resolve` | After description. Where `alias`, `aliasFields`, `tsconfig` paths, and `extensionAlias` rewrites fire before default resolution. | +| `normal-resolve` | Default resolution starts. Branches into `relative` (for `./`, `../`, absolute), `raw-module` (bare modules), or `internal` (`#imports`). | +| `internal` | `#name` imports-field entry. `ImportsFieldPlugin` maps the specifier and forwards to `imports-field-relative` or `imports-resolve`. | +| `imports-field-relative` | Concrete path from an `imports`-field match, before the normal `relative` flow. `ExtensionAliasPlugin` taps here so `.js` → `.ts` also fires for `#name` targets. Forwards to `relative`. | +| `raw-module` | Bare-module lookup. `SelfReferencePlugin`, `ModulesInHierarchicalDirectoriesPlugin`, `ModulesInRootPlugin`, and `PnpPlugin` all tap here. | +| `alternate-raw-module` | Fallback module lookup used by `PnpPlugin` when PnP can't resolve and `node_modules` should be tried. | +| `module` | A candidate module directory was built. `JoinRequestPartPlugin` splits off the inner request and forwards to `resolve-as-module`. | +| `resolve-as-module` | Treat candidate as a package. `DirectoryExistsPlugin` gates on existence; short single-file modules may re-enter via `undescribed-raw-file`. | +| `undescribed-resolve-in-package` | Inside a located package directory, before its `package.json` has been read. Loads the description, forwards to `resolve-in-package`. | +| `resolve-in-package` | Inside a package with its description loaded. `ExportsFieldPlugin` matches `exports`, otherwise forwards to `resolve-in-existing-directory`. | +| `resolve-in-existing-directory` | Package directory confirmed; join the remaining request onto it and continue at `relative`. | +| `relative` | A concrete path on disk. `DescriptionFilePlugin` loads the nearest `package.json` and forwards to `described-relative`. | +| `described-relative` | Branches to `raw-file` (treat as file) and `directory` (treat as directory). `resolveToContext` skips the file branch. | +| `directory` | Candidate directory. `DirectoryExistsPlugin` gates on existence and forwards to `undescribed-existing-directory`. | +| `undescribed-existing-directory` | Existing directory, before its `package.json` has been read. `UseFilePlugin` tries `mainFiles` via `undescribed-raw-file`. | +| `existing-directory` | Existing directory with description loaded. `MainFieldPlugin` tries `mainFields`; `UseFilePlugin` falls back to `mainFiles`. | +| `undescribed-raw-file` | Candidate file path, before description is read. Loads description, then forwards to `raw-file`. | +| `raw-file` | Apply extension handling: `ConditionalPlugin` short-circuits when `fullySpecified`, `TryNextPlugin` + `AppendPlugin` try each extension. | +| `file` | A specific file path. Last place `alias` and `aliasFields` can redirect; forwards to `final-file`. | +| `final-file` | `FileExistsPlugin` checks the file is real and records it as a file dependency, then forwards to `existing-file`. | +| `existing-file` | Real file on disk. `SymlinkPlugin` real-paths symlinks (unless `symlinks: false`), then forwards to `resolved`. | +| `resolved` | Terminal hook. `RestrictionsPlugin` enforces `restrictions`; `ResultPlugin` fires the `result` lifecycle hook. | + +#### `before-` and `after-` prefixes + +`ensureHook("before-foo")` and `getHook("before-foo")` return the `foo` hook with `stage: -10`; `after-foo` returns it with `stage: 10`. Use this to tap earlier or later than the default stage without creating a separate hook. You'll see `after-parsed-resolve`, `after-normal-resolve`, `after-relative`, and `after-undescribed-resolve-in-package` used this way inside `ResolverFactory`. + +#### Request flow by request type + +The same 26 pipeline hooks serve every request, but different request shapes take different paths through them. Each `➝` below is one `doResolve` / `NextPlugin` / plugin forward; `resolveStep` fires on every arrow, so tapping it (see [Hook examples](#hook-examples)) prints these chains live. + +Relative path (`./utils` from `/src/index.js`) — the default "resolve on disk" path: + +```text +resolve (ParsePlugin) + ➝ parsed-resolve (DescriptionFilePlugin attaches nearest package.json) + ➝ described-resolve (NextPlugin; or UnsafeCachePlugin short-circuit) + ➝ raw-resolve (NextPlugin; alias/tsconfig would branch here) + ➝ normal-resolve (JoinRequestPlugin: path=/src/utils, request="") + ➝ relative (DescriptionFilePlugin loads /src/package.json) + ➝ described-relative (branches to file and directory candidates) + ├─ ➝ raw-file (ConditionalPlugin / TryNextPlugin) + │ ➝ file (AppendPlugin tried each extension, e.g. .js) + │ ➝ final-file (FileExistsPlugin confirms the file) + │ ➝ existing-file (SymlinkPlugin real-paths it) + │ ➝ resolved (RestrictionsPlugin → ResultPlugin) + └─ ➝ directory (DirectoryExistsPlugin; used when path is a dir) + ➝ undescribed-existing-directory + ➝ existing-directory (MainFieldPlugin tries "main", UseFilePlugin tries "index") + ➝ undescribed-raw-file ➝ raw-file ➝ … +``` + +Bare module (`lodash/merge`) — walks up `node_modules`, then treats the hit as a package: + +```text +resolve ➝ parsed-resolve ➝ described-resolve ➝ raw-resolve ➝ normal-resolve + ➝ raw-module (ConditionalPlugin {module:true}) + ➝ module (ModulesInHierarchicalDirectoriesPlugin walks + /src/node_modules, /node_modules, …) + ➝ resolve-as-module (JoinRequestPartPlugin splits "lodash" / "./merge") + ➝ undescribed-resolve-in-package (DirectoryExistsPlugin gates on lodash/ existing) + ➝ resolve-in-package (DescriptionFilePlugin loads lodash/package.json) + ├─ ➝ relative (ExportsFieldPlugin, if "exports" matches) + └─ ➝ resolve-in-existing-directory (otherwise; JoinRequestPlugin joins "./merge") + ➝ relative ➝ … (same tail as the relative flow above) +``` + +Internal import (`#util` from inside a package) — re-enters the pipeline after mapping: + +```text +resolve ➝ parsed-resolve ➝ described-resolve ➝ raw-resolve ➝ normal-resolve + ➝ internal (ConditionalPlugin {internal:true}) + ➝ imports-resolve (ImportsFieldPlugin mapped "#util" to a bare target) + ➝ parsed-resolve ➝ … (fresh pipeline run, internal:false so # isn't remapped) +``` + +When the `imports` field maps to a relative target, the branch instead goes: + +```text + ➝ internal + ➝ imports-field-relative (ImportsFieldPlugin mapped "#util" to "./util.js"; + ExtensionAliasPlugin can swap .js → .ts here) + ➝ relative ➝ … (same tail as the relative flow above) +``` + +Alias hit (`@/button` with `alias: { "@": "/src" }`) — rewrites then restarts: + +```text +resolve ➝ parsed-resolve ➝ described-resolve + ➝ raw-resolve + ➝ internal-resolve (AliasPlugin rewrote request → "/src/button") + ➝ parsed-resolve ➝ … (fullySpecified forced off; AliasPlugin won't re-fire for the rewritten form) +``` + +`exports`-field hit inside a package (`pkg/feature` matching `"./feature"` in `exports`): + +```text +… ➝ raw-module ➝ module ➝ resolve-as-module ➝ undescribed-resolve-in-package + ➝ resolve-in-package + ➝ relative (ExportsFieldPlugin jumped to the exports target; + main-field / main-file logic is skipped) + ➝ described-relative ➝ raw-file ➝ file ➝ final-file ➝ existing-file ➝ resolved +``` + +Failure — every candidate opts out (`callback()`) and no handler ever short-circuits with a result. `noResolve` fires once, for the top-level request: + +```text +… ➝ final-file + ✗ FileExistsPlugin: ENOENT (opts out; no extension candidates left) + ⇠ bail hooks unwind, each tapped handler has already tried its alternatives + ⇒ top-level resolve() returns no result + ⇒ resolver.hooks.noResolve(request, error) (ResultPlugin never fires) +``` + +#### Hook examples + +Trace every pipeline step and observe failures via the lifecycle hooks: + +```js +resolver.hooks.resolveStep.tap("Trace", (hook, request) => { + console.log(`[step] ${hook.name}: ${request.request} @ ${request.path}`); +}); +resolver.hooks.noResolve.tap("Trace", (request, error) => { + console.log(`[fail] ${request.request}: ${error.message}`); +}); +resolver.hooks.result.tapAsync("Trace", (request, _ctx, callback) => { + console.log(`[done] ${request.path}`); + callback(); +}); +``` + +Short-circuit at `file` to redirect any `.css` request to a stub without continuing the pipeline: + +```js +class StubCssPlugin { + apply(resolver) { + resolver + .getHook("file") + .tapAsync("StubCssPlugin", (request, _ctx, callback) => { + if (!request.path || !request.path.endsWith(".css")) return callback(); + callback(null, { ...request, path: require.resolve("./empty.css") }); + }); + } +} +``` + +Forward to a different hook with `doResolve` to restart resolution with a rewritten request — see `MyLibSrcPlugin` in [Writing a Custom Plugin](#writing-a-custom-plugin) for the canonical pattern (`getHook("described-resolve")` → `doResolve(ensureHook("resolve"), …)`). + +### Writing a Custom Plugin + +The example below adds a plugin that rewrites any request starting with `my-lib/` to `my-lib/src/`. It taps the `described-resolve` hook (after the description file has been located) and forwards the rewritten request to `resolve`, so the pipeline restarts with the new request. + +```js +const fs = require("fs"); +const { CachedInputFileSystem, ResolverFactory } = require("enhanced-resolve"); + +class MyLibSrcPlugin { + apply(resolver) { + const target = resolver.ensureHook("resolve"); + resolver + .getHook("described-resolve") + .tapAsync("MyLibSrcPlugin", (request, resolveContext, callback) => { + if (!request.request || !request.request.startsWith("my-lib/")) { + return callback(); + } + const newRequest = { + ...request, + request: request.request.replace(/^my-lib\//, "my-lib/src/"), + }; + resolver.doResolve( + target, + newRequest, + "rewrote my-lib → my-lib/src", + resolveContext, + callback, + ); + }); + } +} + +const myResolver = ResolverFactory.createResolver({ + fileSystem: new CachedInputFileSystem(fs, 4000), + extensions: [".js", ".json"], + plugins: [new MyLibSrcPlugin()], +}); +``` + +Tips for writing your own plugin: + +- Call `callback()` with no arguments to pass the request on to the next tapped handler at the same `source` hook. This is how you "opt out" when a request doesn't apply. +- Call `resolver.doResolve(target, newRequest, message, resolveContext, callback)` to continue the pipeline at a different hook with a (possibly modified) request. +- Return early with `callback(null, result)` to short-circuit with a specific result, or `callback(err)` to fail the resolve. +- See [Hooks](#hooks) for the full list of pipeline hooks, their order, and the `before-` / `after-` stage modifiers. `lib/ResolverFactory.js` has the exact wiring under `//// pipeline ////`. + +## Escaping + +It's allowed to escape `#` as `\0#` to avoid parsing it as fragment. + +enhanced-resolve will try to resolve requests containing `#` as path and as fragment, so it will automatically figure out if `./some#thing` means `.../some.js#thing` or `.../some#thing.js`. When a `#` is resolved as path it will be escaped in the result. Here: `.../some\0#thing.js`. + +## Tests + +```sh +npm run test +``` + +## Passing options from webpack + +If you are using `webpack`, and you want to pass custom options to `enhanced-resolve`, the options are passed from the `resolve` key of your webpack configuration e.g.: + +``` +resolve: { + extensions: ['.js', '.jsx'], + modules: [path.resolve(__dirname, 'src'), 'node_modules'], + plugins: [new DirectoryNamedWebpackPlugin()] + ... +}, +``` + +## License + +Copyright (c) 2012-2019 JS Foundation and other contributors + +MIT (http://www.opensource.org/licenses/mit-license.php) + +[npm]: https://img.shields.io/npm/v/enhanced-resolve.svg +[npm-url]: https://www.npmjs.com/package/enhanced-resolve +[build-status]: https://github.com/webpack/enhanced-resolve/actions/workflows/test.yml/badge.svg +[build-status-url]: https://github.com/webpack/enhanced-resolve/actions +[codecov-badge]: https://codecov.io/gh/webpack/enhanced-resolve/branch/main/graph/badge.svg?token=6B6NxtsZc3 +[codecov-url]: https://codecov.io/gh/webpack/enhanced-resolve +[size]: https://packagephobia.com/badge?p=enhanced-resolve +[size-url]: https://packagephobia.com/result?p=enhanced-resolve +[discussion]: https://img.shields.io/github/discussions/webpack/webpack +[discussion-url]: https://github.com/webpack/webpack/discussions diff --git a/node_modules/enhanced-resolve/lib/AliasFieldPlugin.js b/node_modules/enhanced-resolve/lib/AliasFieldPlugin.js new file mode 100644 index 00000000..b03c2d9f --- /dev/null +++ b/node_modules/enhanced-resolve/lib/AliasFieldPlugin.js @@ -0,0 +1,128 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +const DescriptionFileUtils = require("./DescriptionFileUtils"); +const getInnerRequest = require("./getInnerRequest"); + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").JsonPrimitive} JsonPrimitive */ +/** @typedef {import("./Resolver").ResolveRequest} ResolveRequest */ +/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */ + +// Sentinel stored in `_fieldDataCache` when a description file does not +// contain a usable alias field object. Lets us distinguish "not cached yet" +// from "no valid field" without calling back into `getField`. +const NO_FIELD_OBJECT = Symbol("NoFieldObject"); + +module.exports = class AliasFieldPlugin { + /** + * @param {string | ResolveStepHook} source source + * @param {string | string[]} field field + * @param {string | ResolveStepHook} target target + */ + constructor(source, field, target) { + this.source = source; + this.field = field; + this.target = target; + // `this.field` is fixed for the plugin's lifetime, so caching + // per description-file content is safe. The cached value is either + // the resolved alias-map object or the `NO_FIELD_OBJECT` sentinel + // meaning "description file has no usable alias field". + /** @type {WeakMap} */ + this._fieldDataCache = new WeakMap(); + } + + /** + * @param {Resolver} resolver the resolver + * @returns {void} + */ + apply(resolver) { + const target = resolver.ensureHook(this.target); + resolver + .getHook(this.source) + .tapAsync("AliasFieldPlugin", (request, resolveContext, callback) => { + if (!request.descriptionFileData) return callback(); + const innerRequest = getInnerRequest(resolver, request); + if (!innerRequest) return callback(); + const { descriptionFileData } = request; + let fieldData = this._fieldDataCache.get(descriptionFileData); + if (fieldData === undefined) { + const raw = DescriptionFileUtils.getField( + descriptionFileData, + this.field, + ); + if (raw === null || typeof raw !== "object") { + this._fieldDataCache.set(descriptionFileData, NO_FIELD_OBJECT); + if (resolveContext.log) { + resolveContext.log( + `Field '${this.field}' doesn't contain a valid alias configuration`, + ); + } + return callback(); + } + fieldData = /** @type {{ [k: string]: JsonPrimitive }} */ (raw); + this._fieldDataCache.set(descriptionFileData, fieldData); + } else if (fieldData === NO_FIELD_OBJECT) { + if (resolveContext.log) { + resolveContext.log( + `Field '${this.field}' doesn't contain a valid alias configuration`, + ); + } + return callback(); + } + /** @type {JsonPrimitive | undefined} */ + const data = Object.prototype.hasOwnProperty.call( + fieldData, + innerRequest, + ) + ? /** @type {{ [Key in string]: JsonPrimitive }} */ (fieldData)[ + innerRequest + ] + : innerRequest.startsWith("./") + ? /** @type {{ [Key in string]: JsonPrimitive }} */ (fieldData)[ + innerRequest.slice(2) + ] + : undefined; + if (data === innerRequest) return callback(); + if (data === undefined) return callback(); + if (data === false) { + /** @type {ResolveRequest} */ + const ignoreObj = { + ...request, + path: false, + }; + if (typeof resolveContext.yield === "function") { + resolveContext.yield(ignoreObj); + return callback(null, null); + } + return callback(null, ignoreObj); + } + /** @type {ResolveRequest} */ + const obj = { + ...request, + path: /** @type {string} */ (request.descriptionFileRoot), + request: /** @type {string} */ (data), + fullySpecified: false, + }; + resolver.doResolve( + target, + obj, + `aliased from description file ${ + request.descriptionFilePath + } with mapping '${innerRequest}' to '${/** @type {string} */ data}'`, + resolveContext, + (err, result) => { + if (err) return callback(err); + + // Don't allow other aliasing or raw request + if (result === undefined) return callback(null, null); + callback(null, result); + }, + ); + }); + } +}; diff --git a/node_modules/enhanced-resolve/lib/AliasPlugin.js b/node_modules/enhanced-resolve/lib/AliasPlugin.js new file mode 100644 index 00000000..608d2707 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/AliasPlugin.js @@ -0,0 +1,63 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */ +/** @typedef {string | string[] | false} Alias */ +/** @typedef {{ alias: Alias, name: string, onlyModule?: boolean }} AliasOption */ + +const { aliasResolveHandler, compileAliasOptions } = require("./AliasUtils"); + +/** + * When `alias` is given as an array, the targets are tried in priority + * order and the first matching one wins. Tried-and-failed higher-priority + * targets are recorded on `resolveContext.missingDependencies` (via the + * downstream `FileExistsPlugin`) so that a consumer's watcher can + * invalidate the resolve once one of them appears. The winning target is + * recorded on `resolveContext.fileDependencies`; its removal triggers + * re-resolution, at which point the fallback target is returned. + * + * Callers that cache successful resolves (e.g. webpack's `unsafeCache`) + * are responsible for invalidating those entries when the tracked + * dependencies change -- otherwise a stale path may survive across + * rebuilds even though this plugin itself would return the correct + * fallback on a fresh resolve. + */ +module.exports = class AliasPlugin { + /** + * @param {string | ResolveStepHook} source source + * @param {AliasOption | AliasOption[]} options options + * @param {string | ResolveStepHook} target target + */ + constructor(source, options, target) { + this.source = source; + this.options = Array.isArray(options) ? options : [options]; + this.target = target; + } + + /** + * @param {Resolver} resolver the resolver + * @returns {void} + */ + apply(resolver) { + const target = resolver.ensureHook(this.target); + const compiled = compileAliasOptions(resolver, this.options); + + resolver + .getHook(this.source) + .tapAsync("AliasPlugin", (request, resolveContext, callback) => { + aliasResolveHandler( + resolver, + compiled, + target, + request, + resolveContext, + callback, + ); + }); + } +}; diff --git a/node_modules/enhanced-resolve/lib/AliasUtils.js b/node_modules/enhanced-resolve/lib/AliasUtils.js new file mode 100644 index 00000000..16a106c9 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/AliasUtils.js @@ -0,0 +1,257 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +const forEachBail = require("./forEachBail"); +const { PathType, getType } = require("./util/path"); + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").ResolveRequest} ResolveRequest */ +/** @typedef {import("./Resolver").ResolveContext} ResolveContext */ +/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */ +/** @typedef {import("./Resolver").ResolveCallback} ResolveCallback */ +/** @typedef {string | string[] | false} Alias */ +/** @typedef {{ alias: Alias, name: string, onlyModule?: boolean }} AliasOption */ + +/** + * @typedef {object} CompiledAliasOption + * @property {string} name original alias name + * @property {string} nameWithSlash name + "/" — precomputed to avoid per-resolve concat + * @property {Alias} alias alias target(s) + * @property {boolean} onlyModule normalized onlyModule flag + * @property {string | null} absolutePath absolute form of `name` (with slash ending), null when not absolute + * @property {string | null} wildcardPrefix substring before the single "*" in `name`, null when no wildcard + * @property {string | null} wildcardSuffix substring after the single "*" in `name`, null when no wildcard + * @property {number} firstCharCode first character code of `name` — used as a cheap screen on the hot path. `-1` indicates "matches any first char" (empty wildcard prefix). + * @property {boolean} arrayAlias true when `alias` is an array — precomputed so the hot path skips `Array.isArray` + */ + +const EMPTY_COMPILED_OPTIONS = /** @type {CompiledAliasOption[]} */ ([]); + +/** + * Precompute per-option strings used on every resolve so the hot path in + * `aliasResolveHandler` does no string concatenation / split work per entry. + * Called once per plugin apply — the returned array is stable for the + * lifetime of the resolver. + * @param {Resolver} resolver resolver + * @param {AliasOption[]} options options + * @returns {CompiledAliasOption[]} compiled options + */ +function compileAliasOptions(resolver, options) { + if (options.length === 0) return EMPTY_COMPILED_OPTIONS; + const result = Array.from({ length: options.length }); + for (let i = 0; i < options.length; i++) { + const item = options[i]; + const { name } = item; + let absolutePath = null; + const type = getType(name); + if (type === PathType.AbsolutePosix || type === PathType.AbsoluteWin) { + absolutePath = resolver.join(name, "_").slice(0, -1); + } + const firstStar = name.indexOf("*"); + let wildcardPrefix = null; + let wildcardSuffix = null; + if (firstStar !== -1 && !name.includes("*", firstStar + 1)) { + wildcardPrefix = name.slice(0, firstStar); + wildcardSuffix = name.slice(firstStar + 1); + } + // firstCharCode: used by `aliasResolveHandler` to quickly skip aliases + // whose name can't possibly match the current innerRequest. For a plain + // alias (no wildcard) the first char of the name is also the first char + // of `nameWithSlash` and of `absolutePath` (since the latter is derived + // from name via `resolver.join(name, "_")`, which only appends). For a + // wildcard with a non-empty prefix, the first char of that prefix is + // also the first char of name. Only the `name === "*"` case (empty + // wildcard prefix) can match arbitrary first chars — encode that as -1. + let firstCharCode; + if (wildcardPrefix !== null && wildcardPrefix.length === 0) { + firstCharCode = -1; + } else { + firstCharCode = name.length > 0 ? name.charCodeAt(0) : -1; + } + result[i] = { + name, + nameWithSlash: `${name}/`, + alias: item.alias, + onlyModule: Boolean(item.onlyModule), + absolutePath, + wildcardPrefix, + wildcardSuffix, + firstCharCode, + arrayAlias: Array.isArray(item.alias), + }; + } + return result; +} + +/** @typedef {(err?: null | Error, result?: null | ResolveRequest) => void} InnerCallback */ +/** + * @param {Resolver} resolver resolver + * @param {CompiledAliasOption[]} options compiled options + * @param {ResolveStepHook} target target + * @param {ResolveRequest} request request + * @param {ResolveContext} resolveContext resolve context + * @param {InnerCallback} callback callback + * @returns {void} + */ +function aliasResolveHandler( + resolver, + options, + target, + request, + resolveContext, + callback, +) { + if (options.length === 0) return callback(); + const innerRequest = request.request || request.path; + if (!innerRequest) return callback(); + + // Precompute values used in the inner scan loop so we don't recompute + // them per option. This is meaningful when `options` has hundreds of + // entries (e.g. monorepos with generated alias lists) — see the + // `huge-alias-list` / `huge-alias-miss` benchmarks. + const innerFirstCharCode = innerRequest.charCodeAt(0); + const hasRequestString = Boolean(request.request); + + forEachBail( + options, + (item, callback) => { + // Cheap char-code screen: when the compiled option's first char + // doesn't match the request's first char (and it isn't an + // "empty-prefix wildcard" — encoded as -1), this option cannot + // possibly match, so skip straight away and avoid the + // `startsWith` / `===` work below. + const { firstCharCode } = item; + if (firstCharCode !== -1 && firstCharCode !== innerFirstCharCode) { + return callback(); + } + + /** @type {boolean} */ + let shouldStop = false; + + // For absolute-name aliases, accept the normalized + // `absolutePath` form as well as the raw `nameWithSlash`. + // `nameWithSlash` unconditionally appends `/`, so a raw + // windows request with native backslashes + // (e.g. `C:\\abs\\foo\\baz` against `name: "C:\\abs\\foo"`) + // otherwise fails `startsWith("C:\\abs\\foo/")` and is + // silently skipped. The `!hasRequestString` branch already + // uses `absolutePath`; mirroring it here closes the gap + // without changing any existing matches. + const matchRequest = + innerRequest === item.name || + (!item.onlyModule && + (hasRequestString + ? innerRequest.startsWith(item.nameWithSlash) || + (item.absolutePath !== null && + innerRequest.startsWith(item.absolutePath)) + : item.absolutePath !== null && + innerRequest.startsWith(item.absolutePath))); + + const matchWildcard = !item.onlyModule && item.wildcardPrefix !== null; + + if (matchRequest || matchWildcard) { + /** + * @param {Alias} alias alias + * @param {(err?: null | Error, result?: null | ResolveRequest) => void} callback callback + * @returns {void} + */ + const resolveWithAlias = (alias, callback) => { + if (alias === false) { + /** @type {ResolveRequest} */ + const ignoreObj = { + ...request, + path: false, + }; + if (typeof resolveContext.yield === "function") { + resolveContext.yield(ignoreObj); + return callback(null, null); + } + return callback(null, ignoreObj); + } + + let newRequestStr; + + if ( + matchWildcard && + innerRequest.startsWith( + /** @type {string} */ (item.wildcardPrefix), + ) && + innerRequest.endsWith(/** @type {string} */ (item.wildcardSuffix)) + ) { + const match = innerRequest.slice( + /** @type {string} */ (item.wildcardPrefix).length, + innerRequest.length - + /** @type {string} */ (item.wildcardSuffix).length, + ); + newRequestStr = alias.toString().replace("*", match); + } + + if ( + matchRequest && + innerRequest !== alias && + !innerRequest.startsWith(`${alias}/`) + ) { + /** @type {string} */ + const remainingRequest = innerRequest.slice(item.name.length); + newRequestStr = alias + remainingRequest; + } + + if (newRequestStr !== undefined) { + shouldStop = true; + /** @type {ResolveRequest} */ + const obj = { + ...request, + request: newRequestStr, + fullySpecified: false, + }; + return resolver.doResolve( + target, + obj, + `aliased with mapping '${item.name}': '${alias}' to '${newRequestStr}'`, + resolveContext, + (err, result) => { + if (err) return callback(err); + if (result) return callback(null, result); + return callback(); + }, + ); + } + return callback(); + }; + + /** + * @param {(null | Error)=} err error + * @param {(null | ResolveRequest)=} result result + * @returns {void} + */ + const stoppingCallback = (err, result) => { + if (err) return callback(err); + + if (result) return callback(null, result); + // Don't allow other aliasing or raw request + if (shouldStop) return callback(null, null); + return callback(); + }; + + if (item.arrayAlias) { + return forEachBail( + /** @type {string[]} */ (item.alias), + resolveWithAlias, + stoppingCallback, + ); + } + return resolveWithAlias(item.alias, stoppingCallback); + } + + return callback(); + }, + callback, + ); +} + +module.exports.aliasResolveHandler = aliasResolveHandler; +module.exports.compileAliasOptions = compileAliasOptions; diff --git a/node_modules/enhanced-resolve/lib/AppendPlugin.js b/node_modules/enhanced-resolve/lib/AppendPlugin.js new file mode 100644 index 00000000..6763d528 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/AppendPlugin.js @@ -0,0 +1,49 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").ResolveRequest} ResolveRequest */ +/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */ + +module.exports = class AppendPlugin { + /** + * @param {string | ResolveStepHook} source source + * @param {string} appending appending + * @param {string | ResolveStepHook} target target + */ + constructor(source, appending, target) { + this.source = source; + this.appending = appending; + this.target = target; + } + + /** + * @param {Resolver} resolver the resolver + * @returns {void} + */ + apply(resolver) { + const target = resolver.ensureHook(this.target); + resolver + .getHook(this.source) + .tapAsync("AppendPlugin", (request, resolveContext, callback) => { + /** @type {ResolveRequest} */ + const obj = { + ...request, + path: request.path + this.appending, + relativePath: + request.relativePath && request.relativePath + this.appending, + }; + resolver.doResolve( + target, + obj, + this.appending, + resolveContext, + callback, + ); + }); + } +}; diff --git a/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js b/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js new file mode 100644 index 00000000..17e66a9d --- /dev/null +++ b/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js @@ -0,0 +1,686 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +// eslint-disable-next-line n/prefer-global/process +const { nextTick } = require("process"); + +/** @typedef {import("./Resolver").FileSystem} FileSystem */ +/** @typedef {import("./Resolver").PathLike} PathLike */ +/** @typedef {import("./Resolver").PathOrFileDescriptor} PathOrFileDescriptor */ +/** @typedef {import("./Resolver").SyncFileSystem} SyncFileSystem */ +/** @typedef {FileSystem & SyncFileSystem} BaseFileSystem */ + +/** + * @template T + * @typedef {import("./Resolver").FileSystemCallback} FileSystemCallback + */ + +/** + * @param {string} path path + * @returns {string} dirname + */ +const dirname = (path) => { + let idx = path.length - 1; + while (idx >= 0) { + const char = path.charCodeAt(idx); + // slash or backslash + if (char === 47 || char === 92) break; + idx--; + } + if (idx < 0) return ""; + return path.slice(0, idx); +}; + +/** + * @template T + * @param {FileSystemCallback[]} callbacks callbacks + * @param {Error | null} err error + * @param {T} result result + */ +const runCallbacks = (callbacks, err, result) => { + if (callbacks.length === 1) { + callbacks[0](err, result); + callbacks.length = 0; + return; + } + let error; + for (const callback of callbacks) { + try { + callback(err, result); + } catch (err) { + if (!error) error = err; + } + } + callbacks.length = 0; + if (error) throw error; +}; + +// eslint-disable-next-line jsdoc/reject-function-type +/** @typedef {Function} EXPECTED_FUNCTION */ +// eslint-disable-next-line jsdoc/reject-any-type +/** @typedef {any} EXPECTED_ANY */ + +class OperationMergerBackend { + /** + * @param {EXPECTED_FUNCTION | undefined} provider async method in filesystem + * @param {EXPECTED_FUNCTION | undefined} syncProvider sync method in filesystem + * @param {BaseFileSystem} providerContext call context for the provider methods + */ + constructor(provider, syncProvider, providerContext) { + this._provider = provider; + this._syncProvider = syncProvider; + this._providerContext = providerContext; + this._activeAsyncOperations = new Map(); + + this.provide = this._provider + ? // Comment to align jsdoc + /** + * @param {PathLike | PathOrFileDescriptor} path path + * @param {object | FileSystemCallback | undefined} options options + * @param {FileSystemCallback=} callback callback + * @returns {EXPECTED_ANY} result + */ + (path, options, callback) => { + if (typeof options === "function") { + callback = + /** @type {FileSystemCallback} */ + (options); + options = undefined; + } + if ( + typeof path !== "string" && + !Buffer.isBuffer(path) && + !(path instanceof URL) && + typeof path !== "number" + ) { + /** @type {EXPECTED_FUNCTION} */ + (callback)( + new TypeError("path must be a string, Buffer, URL or number"), + ); + return; + } + if (options) { + return /** @type {EXPECTED_FUNCTION} */ (this._provider).call( + this._providerContext, + path, + options, + callback, + ); + } + let callbacks = this._activeAsyncOperations.get(path); + if (callbacks) { + callbacks.push(callback); + return; + } + this._activeAsyncOperations.set(path, (callbacks = [callback])); + /** @type {EXPECTED_FUNCTION} */ + (provider)( + path, + /** + * @param {Error} err error + * @param {EXPECTED_ANY} result result + */ + (err, result) => { + this._activeAsyncOperations.delete(path); + runCallbacks(callbacks, err, result); + }, + ); + } + : null; + this.provideSync = this._syncProvider + ? // Comment to align jsdoc + /** + * @param {PathLike | PathOrFileDescriptor} path path + * @param {object=} options options + * @returns {EXPECTED_ANY} result + */ + (path, options) => + /** @type {EXPECTED_FUNCTION} */ (this._syncProvider).call( + this._providerContext, + path, + options, + ) + : null; + } + + purge() {} + + purgeParent() {} +} + +/* + +IDLE: + insert data: goto SYNC + +SYNC: + before provide: run ticks + event loop tick: goto ASYNC_ACTIVE + +ASYNC: + timeout: run tick, goto ASYNC_PASSIVE + +ASYNC_PASSIVE: + before provide: run ticks + +IDLE --[insert data]--> SYNC --[event loop tick]--> ASYNC_ACTIVE --[interval tick]-> ASYNC_PASSIVE + ^ | + +---------[insert data]-------+ +*/ + +const STORAGE_MODE_IDLE = 0; +const STORAGE_MODE_SYNC = 1; +const STORAGE_MODE_ASYNC = 2; + +/** + * @callback Provide + * @param {PathLike | PathOrFileDescriptor} path path + * @param {EXPECTED_ANY} options options + * @param {FileSystemCallback} callback callback + * @returns {void} + */ + +class CacheBackend { + /** + * @param {number} duration max cache duration of items + * @param {EXPECTED_FUNCTION | undefined} provider async method + * @param {EXPECTED_FUNCTION | undefined} syncProvider sync method + * @param {BaseFileSystem} providerContext call context for the provider methods + */ + constructor(duration, provider, syncProvider, providerContext) { + this._duration = duration; + this._provider = provider; + this._syncProvider = syncProvider; + this._providerContext = providerContext; + /** @type {Map[]>} */ + this._activeAsyncOperations = new Map(); + /** @type {Map }>} */ + this._data = new Map(); + /** @type {Set[]} */ + this._levels = []; + for (let i = 0; i < 10; i++) this._levels.push(new Set()); + if (duration !== Infinity) { + for (let i = 5000; i < duration; i += 500) { + this._levels.push(new Set()); + } + } + this._currentLevel = 0; + this._tickInterval = Math.floor(duration / this._levels.length); + /** @type {STORAGE_MODE_IDLE | STORAGE_MODE_SYNC | STORAGE_MODE_ASYNC} */ + this._mode = STORAGE_MODE_IDLE; + + /** @type {NodeJS.Timeout | undefined} */ + this._timeout = undefined; + /** @type {number | undefined} */ + this._nextDecay = undefined; + + // eslint-disable-next-line no-warning-comments + // @ts-ignore + this.provide = provider ? this.provide.bind(this) : null; + // eslint-disable-next-line no-warning-comments + // @ts-ignore + this.provideSync = syncProvider ? this.provideSync.bind(this) : null; + } + + /** + * @param {PathLike | PathOrFileDescriptor} path path + * @param {EXPECTED_ANY} options options + * @param {FileSystemCallback} callback callback + * @returns {void} + */ + provide(path, options, callback) { + if (typeof options === "function") { + callback = options; + options = undefined; + } + if ( + typeof path !== "string" && + !Buffer.isBuffer(path) && + !(path instanceof URL) && + typeof path !== "number" + ) { + callback(new TypeError("path must be a string, Buffer, URL or number")); + return; + } + const strPath = typeof path !== "string" ? path.toString() : path; + if (options) { + return /** @type {EXPECTED_FUNCTION} */ (this._provider).call( + this._providerContext, + path, + options, + callback, + ); + } + + // When in sync mode we can move to async mode + if (this._mode === STORAGE_MODE_SYNC) { + this._enterAsyncMode(); + } + + // Check in cache + const cacheEntry = this._data.get(strPath); + if (cacheEntry !== undefined) { + if (cacheEntry.err) return nextTick(callback, cacheEntry.err); + return nextTick(callback, null, cacheEntry.result); + } + + // Check if there is already the same operation running + let callbacks = this._activeAsyncOperations.get(strPath); + if (callbacks !== undefined) { + callbacks.push(callback); + return; + } + this._activeAsyncOperations.set(strPath, (callbacks = [callback])); + + // Run the operation + /** @type {EXPECTED_FUNCTION} */ + (this._provider).call( + this._providerContext, + path, + /** + * @param {Error | null} err error + * @param {EXPECTED_ANY=} result result + */ + (err, result) => { + this._activeAsyncOperations.delete(strPath); + this._storeResult(strPath, err, result); + + // Enter async mode if not yet done + this._enterAsyncMode(); + + runCallbacks( + /** @type {FileSystemCallback[]} */ (callbacks), + err, + result, + ); + }, + ); + } + + /** + * @param {PathLike | PathOrFileDescriptor} path path + * @param {EXPECTED_ANY} options options + * @returns {EXPECTED_ANY} result + */ + provideSync(path, options) { + if ( + typeof path !== "string" && + !Buffer.isBuffer(path) && + !(path instanceof URL) && + typeof path !== "number" + ) { + throw new TypeError("path must be a string"); + } + const strPath = typeof path !== "string" ? path.toString() : path; + if (options) { + return /** @type {EXPECTED_FUNCTION} */ (this._syncProvider).call( + this._providerContext, + path, + options, + ); + } + + // In sync mode we may have to decay some cache items + if (this._mode === STORAGE_MODE_SYNC) { + this._runDecays(); + } + + // Check in cache + const cacheEntry = this._data.get(strPath); + if (cacheEntry !== undefined) { + if (cacheEntry.err) throw cacheEntry.err; + return cacheEntry.result; + } + + // Get all active async operations + // This sync operation will also complete them + const callbacks = this._activeAsyncOperations.get(strPath); + this._activeAsyncOperations.delete(strPath); + + // Run the operation + // When in idle mode, we will enter sync mode + let result; + try { + result = /** @type {EXPECTED_FUNCTION} */ (this._syncProvider).call( + this._providerContext, + path, + ); + } catch (err) { + this._storeResult(strPath, /** @type {Error} */ (err), undefined); + this._enterSyncModeWhenIdle(); + if (callbacks) { + runCallbacks(callbacks, /** @type {Error} */ (err), undefined); + } + throw err; + } + this._storeResult(strPath, null, result); + this._enterSyncModeWhenIdle(); + if (callbacks) { + runCallbacks(callbacks, null, result); + } + return result; + } + + /** + * @param {(string | Buffer | URL | number | (string | URL | Buffer | number)[] | Set)=} what what to purge + */ + purge(what) { + if (!what) { + if (this._mode !== STORAGE_MODE_IDLE) { + this._data.clear(); + for (const level of this._levels) { + level.clear(); + } + this._enterIdleMode(); + } + } else if ( + typeof what === "string" || + Buffer.isBuffer(what) || + what instanceof URL || + typeof what === "number" + ) { + const strWhat = typeof what !== "string" ? what.toString() : what; + for (const [key, data] of this._data) { + if (key.startsWith(strWhat)) { + this._data.delete(key); + data.level.delete(key); + } + } + if (this._data.size === 0) { + this._enterIdleMode(); + } + } else { + for (const [key, data] of this._data) { + for (const item of what) { + const strItem = typeof item !== "string" ? item.toString() : item; + if (key.startsWith(strItem)) { + this._data.delete(key); + data.level.delete(key); + break; + } + } + } + if (this._data.size === 0) { + this._enterIdleMode(); + } + } + } + + /** + * @param {(string | Buffer | URL | number | (string | URL | Buffer | number)[] | Set)=} what what to purge + */ + purgeParent(what) { + if (!what) { + this.purge(); + } else if ( + typeof what === "string" || + Buffer.isBuffer(what) || + what instanceof URL || + typeof what === "number" + ) { + const strWhat = typeof what !== "string" ? what.toString() : what; + this.purge(dirname(strWhat)); + } else { + const set = new Set(); + for (const item of what) { + const strItem = typeof item !== "string" ? item.toString() : item; + set.add(dirname(strItem)); + } + this.purge(set); + } + } + + /** + * @param {string} path path + * @param {Error | null} err error + * @param {EXPECTED_ANY} result result + */ + _storeResult(path, err, result) { + if (this._data.has(path)) return; + const level = this._levels[this._currentLevel]; + this._data.set(path, { err, result, level }); + level.add(path); + } + + _decayLevel() { + const nextLevel = (this._currentLevel + 1) % this._levels.length; + const decay = this._levels[nextLevel]; + this._currentLevel = nextLevel; + for (const item of decay) { + this._data.delete(item); + } + decay.clear(); + if (this._data.size === 0) { + this._enterIdleMode(); + } else { + /** @type {number} */ + (this._nextDecay) += this._tickInterval; + } + } + + _runDecays() { + while ( + /** @type {number} */ (this._nextDecay) <= Date.now() && + this._mode !== STORAGE_MODE_IDLE + ) { + this._decayLevel(); + } + } + + _enterAsyncMode() { + let timeout = 0; + switch (this._mode) { + case STORAGE_MODE_ASYNC: + return; + case STORAGE_MODE_IDLE: + this._nextDecay = Date.now() + this._tickInterval; + timeout = this._tickInterval; + break; + case STORAGE_MODE_SYNC: + this._runDecays(); + // _runDecays may change the mode + if ( + /** @type {STORAGE_MODE_IDLE | STORAGE_MODE_SYNC | STORAGE_MODE_ASYNC} */ + (this._mode) === STORAGE_MODE_IDLE + ) { + return; + } + timeout = Math.max( + 0, + /** @type {number} */ (this._nextDecay) - Date.now(), + ); + break; + } + this._mode = STORAGE_MODE_ASYNC; + // When duration is Infinity, cache entries never expire, so there + // is no need to schedule a decay timer. + if (this._duration === Infinity) { + return; + } + const ref = setTimeout(() => { + this._mode = STORAGE_MODE_SYNC; + this._runDecays(); + }, timeout); + if (ref.unref) ref.unref(); + this._timeout = ref; + } + + _enterSyncModeWhenIdle() { + if (this._mode === STORAGE_MODE_IDLE) { + this._mode = STORAGE_MODE_SYNC; + this._nextDecay = Date.now() + this._tickInterval; + } + } + + _enterIdleMode() { + this._mode = STORAGE_MODE_IDLE; + this._nextDecay = undefined; + if (this._timeout) clearTimeout(this._timeout); + } +} + +/** + * @template {EXPECTED_FUNCTION} Provider + * @template {EXPECTED_FUNCTION} AsyncProvider + * @template FileSystem + * @param {number} duration duration in ms files are cached + * @param {Provider | undefined} provider provider + * @param {AsyncProvider | undefined} syncProvider sync provider + * @param {BaseFileSystem} providerContext provider context + * @returns {OperationMergerBackend | CacheBackend} backend + */ +const createBackend = (duration, provider, syncProvider, providerContext) => { + if (duration > 0) { + return new CacheBackend(duration, provider, syncProvider, providerContext); + } + return new OperationMergerBackend(provider, syncProvider, providerContext); +}; + +module.exports = class CachedInputFileSystem { + /** + * @param {BaseFileSystem} fileSystem file system + * @param {number} duration duration in ms files are cached + */ + constructor(fileSystem, duration) { + this.fileSystem = fileSystem; + + this._lstatBackend = createBackend( + duration, + this.fileSystem.lstat, + this.fileSystem.lstatSync, + this.fileSystem, + ); + const lstat = this._lstatBackend.provide; + this.lstat = /** @type {FileSystem["lstat"]} */ (lstat); + const lstatSync = this._lstatBackend.provideSync; + this.lstatSync = /** @type {SyncFileSystem["lstatSync"]} */ (lstatSync); + + this._statBackend = createBackend( + duration, + this.fileSystem.stat, + this.fileSystem.statSync, + this.fileSystem, + ); + const stat = this._statBackend.provide; + this.stat = /** @type {FileSystem["stat"]} */ (stat); + const statSync = this._statBackend.provideSync; + this.statSync = /** @type {SyncFileSystem["statSync"]} */ (statSync); + + this._readdirBackend = createBackend( + duration, + this.fileSystem.readdir, + this.fileSystem.readdirSync, + this.fileSystem, + ); + const readdir = this._readdirBackend.provide; + this.readdir = /** @type {FileSystem["readdir"]} */ (readdir); + const readdirSync = this._readdirBackend.provideSync; + this.readdirSync = /** @type {SyncFileSystem["readdirSync"]} */ ( + readdirSync + ); + + this._readFileBackend = createBackend( + duration, + this.fileSystem.readFile, + this.fileSystem.readFileSync, + this.fileSystem, + ); + const readFile = this._readFileBackend.provide; + this.readFile = /** @type {FileSystem["readFile"]} */ (readFile); + const readFileSync = this._readFileBackend.provideSync; + this.readFileSync = /** @type {SyncFileSystem["readFileSync"]} */ ( + readFileSync + ); + + this._readJsonBackend = createBackend( + duration, + // prettier-ignore + this.fileSystem.readJson || + (this.readFile && + ( + /** + * @param {string} path path + * @param {FileSystemCallback} callback callback + */ + (path, callback) => { + this.readFile(path, (err, buffer) => { + if (err) return callback(err); + if (!buffer || buffer.length === 0) + {return callback(new Error("No file content"));} + let data; + try { + data = JSON.parse(buffer.toString("utf8")); + } catch (err_) { + return callback(/** @type {Error} */ (err_)); + } + callback(null, data); + }); + }) + ), + // prettier-ignore + this.fileSystem.readJsonSync || + (this.readFileSync && + ( + /** + * @param {string} path path + * @returns {EXPECTED_ANY} result + */ + (path) => { + const buffer = this.readFileSync(path); + const data = JSON.parse(buffer.toString("utf8")); + return data; + } + )), + this.fileSystem, + ); + const readJson = this._readJsonBackend.provide; + this.readJson = /** @type {FileSystem["readJson"]} */ (readJson); + const readJsonSync = this._readJsonBackend.provideSync; + this.readJsonSync = /** @type {SyncFileSystem["readJsonSync"]} */ ( + readJsonSync + ); + + this._readlinkBackend = createBackend( + duration, + this.fileSystem.readlink, + this.fileSystem.readlinkSync, + this.fileSystem, + ); + const readlink = this._readlinkBackend.provide; + this.readlink = /** @type {FileSystem["readlink"]} */ (readlink); + const readlinkSync = this._readlinkBackend.provideSync; + this.readlinkSync = /** @type {SyncFileSystem["readlinkSync"]} */ ( + readlinkSync + ); + + this._realpathBackend = createBackend( + duration, + this.fileSystem.realpath, + this.fileSystem.realpathSync, + this.fileSystem, + ); + const realpath = this._realpathBackend.provide; + this.realpath = /** @type {FileSystem["realpath"]} */ (realpath); + const realpathSync = this._realpathBackend.provideSync; + this.realpathSync = /** @type {SyncFileSystem["realpathSync"]} */ ( + realpathSync + ); + } + + /** + * @param {(string | Buffer | URL | number | (string | URL | Buffer | number)[] | Set)=} what what to purge + */ + purge(what) { + this._statBackend.purge(what); + this._lstatBackend.purge(what); + this._readdirBackend.purgeParent(what); + this._readFileBackend.purge(what); + this._readlinkBackend.purge(what); + this._readJsonBackend.purge(what); + this._realpathBackend.purge(what); + } +}; diff --git a/node_modules/enhanced-resolve/lib/CloneBasenamePlugin.js b/node_modules/enhanced-resolve/lib/CloneBasenamePlugin.js new file mode 100644 index 00000000..f6080369 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/CloneBasenamePlugin.js @@ -0,0 +1,51 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").ResolveRequest} ResolveRequest */ +/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */ + +module.exports = class CloneBasenamePlugin { + /** + * @param {string | ResolveStepHook} source source + * @param {string | ResolveStepHook} target target + */ + constructor(source, target) { + this.source = source; + this.target = target; + } + + /** + * @param {Resolver} resolver the resolver + * @returns {void} + */ + apply(resolver) { + const target = resolver.ensureHook(this.target); + resolver + .getHook(this.source) + .tapAsync("CloneBasenamePlugin", (request, resolveContext, callback) => { + const requestPath = /** @type {string} */ (request.path); + const filename = resolver.basename(requestPath); + const filePath = resolver.join(requestPath, filename); + /** @type {ResolveRequest} */ + const obj = { + ...request, + path: filePath, + relativePath: + request.relativePath && + resolver.join(request.relativePath, filename), + }; + resolver.doResolve( + target, + obj, + `using path: ${filePath}`, + resolveContext, + callback, + ); + }); + } +}; diff --git a/node_modules/enhanced-resolve/lib/ConditionalPlugin.js b/node_modules/enhanced-resolve/lib/ConditionalPlugin.js new file mode 100644 index 00000000..99cc09d4 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/ConditionalPlugin.js @@ -0,0 +1,59 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").ResolveRequest} ResolveRequest */ +/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */ + +module.exports = class ConditionalPlugin { + /** + * @param {string | ResolveStepHook} source source + * @param {Partial} test compare object + * @param {string | null} message log message + * @param {boolean} allowAlternatives when false, do not continue with the current step when "test" matches + * @param {string | ResolveStepHook} target target + */ + constructor(source, test, message, allowAlternatives, target) { + this.source = source; + this.test = test; + this.message = message; + this.allowAlternatives = allowAlternatives; + this.target = target; + } + + /** + * @param {Resolver} resolver the resolver + * @returns {void} + */ + apply(resolver) { + const target = resolver.ensureHook(this.target); + const { test, message, allowAlternatives } = this; + const keys = /** @type {(keyof ResolveRequest)[]} */ (Object.keys(test)); + resolver + .getHook(this.source) + .tapAsync("ConditionalPlugin", (request, resolveContext, callback) => { + for (const prop of keys) { + if (request[prop] !== test[prop]) return callback(); + } + resolver.doResolve( + target, + request, + message, + resolveContext, + allowAlternatives + ? callback + : (err, result) => { + if (err) return callback(err); + + // Don't allow other alternatives + if (result === undefined) return callback(null, null); + callback(null, result); + }, + ); + }); + } +}; diff --git a/node_modules/enhanced-resolve/lib/DescriptionFilePlugin.js b/node_modules/enhanced-resolve/lib/DescriptionFilePlugin.js new file mode 100644 index 00000000..0db35231 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/DescriptionFilePlugin.js @@ -0,0 +1,106 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +const DescriptionFileUtils = require("./DescriptionFileUtils"); + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").ResolveRequest} ResolveRequest */ +/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */ + +module.exports = class DescriptionFilePlugin { + /** + * @param {string | ResolveStepHook} source source + * @param {string[]} filenames filenames + * @param {boolean} pathIsFile pathIsFile + * @param {string | ResolveStepHook} target target + */ + constructor(source, filenames, pathIsFile, target) { + this.source = source; + this.filenames = filenames; + this.pathIsFile = pathIsFile; + this.target = target; + } + + /** + * @param {Resolver} resolver the resolver + * @returns {void} + */ + apply(resolver) { + const target = resolver.ensureHook(this.target); + resolver + .getHook(this.source) + .tapAsync( + "DescriptionFilePlugin", + (request, resolveContext, callback) => { + const { path } = request; + if (!path) return callback(); + const directory = this.pathIsFile + ? DescriptionFileUtils.cdUp(path) + : path; + if (!directory) return callback(); + DescriptionFileUtils.loadDescriptionFile( + resolver, + directory, + this.filenames, + request.descriptionFilePath + ? { + path: request.descriptionFilePath, + content: request.descriptionFileData, + directory: + /** @type {string} */ + (request.descriptionFileRoot), + } + : undefined, + resolveContext, + (err, result) => { + if (err) return callback(err); + if (!result) { + if (resolveContext.log) { + resolveContext.log( + `No description file found in ${directory} or above`, + ); + } + return callback(); + } + // Normalize the relative path to use POSIX separators. On + // POSIX most paths never contain a backslash, so skip the + // regex replace when possible — `includes` is one pass, + // `replace` with a global regex allocates a lastIndex + // state machine. + const rawRelative = path.slice(result.directory.length); + const relativePath = `.${ + rawRelative.includes("\\") + ? rawRelative.replace(/\\/g, "/") + : rawRelative + }`; + /** @type {ResolveRequest} */ + const obj = { + ...request, + descriptionFilePath: result.path, + descriptionFileData: result.content, + descriptionFileRoot: result.directory, + relativePath, + }; + resolver.doResolve( + target, + obj, + `using description file: ${result.path} (relative path: ${relativePath})`, + resolveContext, + (err, result) => { + if (err) return callback(err); + + // Don't allow other processing + if (result === undefined) return callback(null, null); + callback(null, result); + }, + ); + }, + ); + }, + ); + } +}; diff --git a/node_modules/enhanced-resolve/lib/DescriptionFileUtils.js b/node_modules/enhanced-resolve/lib/DescriptionFileUtils.js new file mode 100644 index 00000000..b7e8e0e2 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/DescriptionFileUtils.js @@ -0,0 +1,221 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +const forEachBail = require("./forEachBail"); + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").JsonObject} JsonObject */ +/** @typedef {import("./Resolver").JsonValue} JsonValue */ +/** @typedef {import("./Resolver").ResolveContext} ResolveContext */ +/** @typedef {import("./Resolver").ResolveRequest} ResolveRequest */ + +/** + * @typedef {object} DescriptionFileInfo + * @property {JsonObject=} content content + * @property {string} path path + * @property {string} directory directory + */ + +/** + * @callback ErrorFirstCallback + * @param {Error | null=} error + * @param {DescriptionFileInfo=} result + */ + +/** + * @typedef {object} Result + * @property {string} path path to description file + * @property {string} directory directory of description file + * @property {JsonObject} content content of description file + */ + +const CHAR_SLASH = 47; +const CHAR_BACKSLASH = 92; + +/** + * Walk up one directory. Called once per package-root candidate and once per + * `described-resolve` (to find the enclosing description file), so it's on + * the resolver's hot path. + * + * Previous implementation called `lastIndexOf("/")` and `lastIndexOf("\\")` + * separately and then picked the larger. For any non-trivial directory + * string on POSIX, `lastIndexOf("\\")` scans the full string just to return + * -1. A single reverse char-code scan does the same work in one pass. + * + * Any single-character directory is treated as a root — `directory.length + * <= 1` collapses the `"/"`, `"\\"` and `""` branches into one compare. + * Without the `"\\"` case, `cdUp("\\")` (reached from a UNC root or a DOS + * device path like `\\?\…`) would return itself via `slice(0, i || 1)` + * and trap `loadDescriptionFile` in an infinite loop. Once single-char + * roots are filtered up front, the reverse scan always produces a + * strictly shorter string. + * @param {string} directory directory + * @returns {string | null} parent directory or null + */ +function cdUp(directory) { + if (directory.length <= 1) return null; + for (let i = directory.length - 1; i >= 0; i--) { + const code = directory.charCodeAt(i); + if (code === CHAR_SLASH || code === CHAR_BACKSLASH) { + return directory.slice(0, i || 1); + } + } + return null; +} + +/** + * @param {Resolver} resolver resolver + * @param {string} directory directory + * @param {string[]} filenames filenames + * @param {DescriptionFileInfo | undefined} oldInfo oldInfo + * @param {ResolveContext} resolveContext resolveContext + * @param {ErrorFirstCallback} callback callback + */ +function loadDescriptionFile( + resolver, + directory, + filenames, + oldInfo, + resolveContext, + callback, +) { + (function findDescriptionFile() { + if (oldInfo && oldInfo.directory === directory) { + // We already have info for this directory and can reuse it + return callback(null, oldInfo); + } + forEachBail( + filenames, + /** + * @param {string} filename filename + * @param {(err?: null | Error, result?: null | Result) => void} callback callback + * @returns {void} + */ + (filename, callback) => { + const descriptionFilePath = resolver.join(directory, filename); + + /** + * @param {(null | Error)=} err error + * @param {JsonObject=} resolvedContent content + * @returns {void} + */ + function onJson(err, resolvedContent) { + if (err) { + if (resolveContext.log) { + resolveContext.log( + `${descriptionFilePath} (directory description file): ${err}`, + ); + } else { + err.message = `${descriptionFilePath} (directory description file): ${err}`; + } + return callback(err); + } + callback(null, { + content: /** @type {JsonObject} */ (resolvedContent), + directory, + path: descriptionFilePath, + }); + } + + if (resolver.fileSystem.readJson) { + resolver.fileSystem.readJson(descriptionFilePath, (err, content) => { + if (err) { + if ( + typeof (/** @type {NodeJS.ErrnoException} */ (err).code) !== + "undefined" + ) { + if (resolveContext.missingDependencies) { + resolveContext.missingDependencies.add(descriptionFilePath); + } + return callback(); + } + if (resolveContext.fileDependencies) { + resolveContext.fileDependencies.add(descriptionFilePath); + } + return onJson(err); + } + if (resolveContext.fileDependencies) { + resolveContext.fileDependencies.add(descriptionFilePath); + } + onJson(null, content); + }); + } else { + resolver.fileSystem.readFile(descriptionFilePath, (err, content) => { + if (err) { + if (resolveContext.missingDependencies) { + resolveContext.missingDependencies.add(descriptionFilePath); + } + return callback(); + } + if (resolveContext.fileDependencies) { + resolveContext.fileDependencies.add(descriptionFilePath); + } + + /** @type {JsonObject | undefined} */ + let json; + + if (content) { + try { + json = JSON.parse(content.toString()); + } catch (/** @type {unknown} */ err_) { + return onJson(/** @type {Error} */ (err_)); + } + } else { + return onJson(new Error("No content in file")); + } + + onJson(null, json); + }); + } + }, + /** + * @param {(null | Error)=} err error + * @param {(null | Result)=} result result + * @returns {void} + */ + (err, result) => { + if (err) return callback(err); + if (result) return callback(null, result); + const dir = cdUp(directory); + if (!dir) { + return callback(); + } + directory = dir; + return findDescriptionFile(); + }, + ); + })(); +} + +/** + * @param {JsonObject} content content + * @param {string | string[]} field field + * @returns {JsonValue | undefined} field data + */ +function getField(content, field) { + if (!content) return undefined; + if (Array.isArray(field)) { + /** @type {JsonValue} */ + let current = content; + for (let j = 0; j < field.length; j++) { + if (current === null || typeof current !== "object") { + current = null; + break; + } + current = /** @type {JsonValue} */ ( + /** @type {JsonObject} */ + (current)[field[j]] + ); + } + return current; + } + return content[field]; +} + +module.exports.cdUp = cdUp; +module.exports.getField = getField; +module.exports.loadDescriptionFile = loadDescriptionFile; diff --git a/node_modules/enhanced-resolve/lib/DirectoryExistsPlugin.js b/node_modules/enhanced-resolve/lib/DirectoryExistsPlugin.js new file mode 100644 index 00000000..78a46394 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/DirectoryExistsPlugin.js @@ -0,0 +1,68 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */ + +module.exports = class DirectoryExistsPlugin { + /** + * @param {string | ResolveStepHook} source source + * @param {string | ResolveStepHook} target target + */ + constructor(source, target) { + this.source = source; + this.target = target; + } + + /** + * @param {Resolver} resolver the resolver + * @returns {void} + */ + apply(resolver) { + const target = resolver.ensureHook(this.target); + resolver + .getHook(this.source) + .tapAsync( + "DirectoryExistsPlugin", + (request, resolveContext, callback) => { + const fs = resolver.fileSystem; + const directory = request.path; + if (!directory) return callback(); + fs.stat(directory, (err, stat) => { + if (err || !stat) { + if (resolveContext.missingDependencies) { + resolveContext.missingDependencies.add(directory); + } + if (resolveContext.log) { + resolveContext.log(`${directory} doesn't exist`); + } + return callback(); + } + if (!stat.isDirectory()) { + if (resolveContext.missingDependencies) { + resolveContext.missingDependencies.add(directory); + } + if (resolveContext.log) { + resolveContext.log(`${directory} is not a directory`); + } + return callback(); + } + if (resolveContext.fileDependencies) { + resolveContext.fileDependencies.add(directory); + } + resolver.doResolve( + target, + request, + `existing directory ${directory}`, + resolveContext, + callback, + ); + }); + }, + ); + } +}; diff --git a/node_modules/enhanced-resolve/lib/ExportsFieldPlugin.js b/node_modules/enhanced-resolve/lib/ExportsFieldPlugin.js new file mode 100644 index 00000000..85d9449f --- /dev/null +++ b/node_modules/enhanced-resolve/lib/ExportsFieldPlugin.js @@ -0,0 +1,232 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Ivan Kopeykin @vankop +*/ + +"use strict"; + +const DescriptionFileUtils = require("./DescriptionFileUtils"); +const forEachBail = require("./forEachBail"); +const { processExportsField } = require("./util/entrypoints"); +const { parseIdentifier } = require("./util/identifier"); +const { + deprecatedInvalidSegmentRegEx, + invalidSegmentRegEx, +} = require("./util/path"); + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").JsonObject} JsonObject */ +/** @typedef {import("./Resolver").ResolveRequest} ResolveRequest */ +/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */ +/** @typedef {import("./util/entrypoints").ExportsField} ExportsField */ +/** @typedef {import("./util/entrypoints").FieldProcessor} FieldProcessor */ + +module.exports = class ExportsFieldPlugin { + /** + * @param {string | ResolveStepHook} source source + * @param {Set} conditionNames condition names + * @param {string | string[]} fieldNamePath name path + * @param {string | ResolveStepHook} target target + */ + constructor(source, conditionNames, fieldNamePath, target) { + this.source = source; + this.target = target; + this.conditionNames = conditionNames; + this.fieldName = fieldNamePath; + // `null` is cached for description files that have no exports field, + // so subsequent resolves against the same package.json skip the + // `DescriptionFileUtils.getField` walk entirely. + /** @type {WeakMap} */ + this._fieldProcessorCache = new WeakMap(); + } + + /** + * @param {Resolver} resolver the resolver + * @returns {void} + */ + apply(resolver) { + const target = resolver.ensureHook(this.target); + resolver + .getHook(this.source) + .tapAsync("ExportsFieldPlugin", (request, resolveContext, callback) => { + // When there is no description file, abort + if (!request.descriptionFileData) return callback(); + if ( + // When the description file is inherited from parent, abort + // (There is no description file inside of this package) + request.relativePath !== "." || + request.request === undefined + ) { + return callback(); + } + + const { descriptionFileData } = request; + const remainingRequest = + request.query || request.fragment + ? (request.request === "." ? "./" : request.request) + + request.query + + request.fragment + : request.request; + + /** @type {string[]} */ + let paths; + /** @type {string | null} */ + let usedField; + + try { + // Look up the cached processor first. On a cache hit we + // avoid re-walking the description file for the exports + // field — and `null` is cached for description files that + // have no exports field at all, so those skip the read + // entirely. `processExportsField` can throw on a malformed + // `exports` map (e.g. a key without a leading `.`), so + // building the processor must stay inside this try/catch. + let fieldProcessor = + this._fieldProcessorCache.get(descriptionFileData); + if ( + fieldProcessor === undefined && + !this._fieldProcessorCache.has(descriptionFileData) + ) { + const exportsField = + /** @type {ExportsField | null | undefined} */ + ( + DescriptionFileUtils.getField( + descriptionFileData, + this.fieldName, + ) + ); + fieldProcessor = exportsField + ? processExportsField(exportsField) + : null; + this._fieldProcessorCache.set(descriptionFileData, fieldProcessor); + } + if (!fieldProcessor) return callback(); + + if (request.directory) { + return callback( + new Error( + `Resolving to directories is not possible with the exports field (request was ${remainingRequest}/)`, + ), + ); + } + + [paths, usedField] = fieldProcessor( + remainingRequest, + this.conditionNames, + ); + } catch (/** @type {unknown} */ err) { + if (resolveContext.log) { + resolveContext.log( + `Exports field in ${request.descriptionFilePath} can't be processed: ${err}`, + ); + } + return callback(/** @type {Error} */ (err)); + } + + if (paths.length === 0) { + const conditions = [...this.conditionNames]; + const conditionsStr = + conditions.length === 1 + ? `the condition "${conditions[0]}"` + : `the conditions ${JSON.stringify(conditions)}`; + return callback( + new Error( + `"${remainingRequest}" is not exported under ${conditionsStr} from package ${request.descriptionFileRoot} (see exports field in ${request.descriptionFilePath})`, + ), + ); + } + + forEachBail( + paths, + /** + * @param {string} path path + * @param {(err?: null | Error, result?: null | ResolveRequest) => void} callback callback + * @param {number} i index + * @returns {void} + */ + (path, callback, i) => { + const parsedIdentifier = parseIdentifier(path); + + if (!parsedIdentifier) return callback(); + + const [relativePath, query, fragment] = parsedIdentifier; + + if (relativePath.length === 0 || !relativePath.startsWith("./")) { + if (paths.length === i) { + return callback( + new Error( + `Invalid "exports" target "${path}" defined for "${usedField}" in the package config ${request.descriptionFilePath}, targets must start with "./"`, + ), + ); + } + + return callback(); + } + + const withoutDotSlash = relativePath.slice(2); + if ( + invalidSegmentRegEx.exec(withoutDotSlash) !== null && + deprecatedInvalidSegmentRegEx.test(withoutDotSlash) + ) { + if (paths.length === i) { + return callback( + new Error( + `Invalid "exports" target "${path}" defined for "${usedField}" in the package config ${request.descriptionFilePath}, targets must start with "./"`, + ), + ); + } + + return callback(); + } + + /** @type {ResolveRequest} */ + const obj = { + ...request, + request: undefined, + path: resolver.join( + /** @type {string} */ (request.descriptionFileRoot), + relativePath, + ), + relativePath, + query, + fragment, + }; + + resolver.doResolve( + target, + obj, + `using exports field: ${path}`, + resolveContext, + (err, result) => { + if (err) return callback(err); + // Don't allow to continue - https://github.com/webpack/enhanced-resolve/issues/400 + if (result === undefined) return callback(null, null); + callback(null, result); + }, + ); + }, + /** + * @param {(null | Error)=} err error + * @param {(null | ResolveRequest)=} result result + * @returns {void} + */ + (err, result) => { + if (err) return callback(err); + // When an exports field match was found but the target file doesn't exist, + // return an error to prevent fallback to parent node_modules directories. + // Per the Node.js ESM spec, a matched exports entry that fails to resolve + // is a hard error, not a signal to continue searching up the directory tree. + // See: https://github.com/webpack/enhanced-resolve/issues/399 + if (!result) { + return callback( + new Error( + `Package path ${remainingRequest} is exported from package ${request.descriptionFileRoot}, but no valid target file was found (see exports field in ${request.descriptionFilePath})`, + ), + ); + } + callback(null, result); + }, + ); + }); + } +}; diff --git a/node_modules/enhanced-resolve/lib/ExtensionAliasPlugin.js b/node_modules/enhanced-resolve/lib/ExtensionAliasPlugin.js new file mode 100644 index 00000000..c1536320 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/ExtensionAliasPlugin.js @@ -0,0 +1,129 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Ivan Kopeykin @vankop +*/ + +"use strict"; + +const forEachBail = require("./forEachBail"); + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").ResolveRequest} ResolveRequest */ +/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */ +/** @typedef {{ alias: string | string[], extension: string }} ExtensionAliasOption */ + +module.exports = class ExtensionAliasPlugin { + /** + * @param {string | ResolveStepHook} source source + * @param {ExtensionAliasOption} options options + * @param {string | ResolveStepHook} target target + */ + constructor(source, options, target) { + this.source = source; + this.options = options; + this.target = target; + } + + /** + * @param {Resolver} resolver the resolver + * @returns {void} + */ + apply(resolver) { + const target = resolver.ensureHook(this.target); + const { extension, alias } = this.options; + resolver + .getHook(this.source) + .tapAsync("ExtensionAliasPlugin", (request, resolveContext, callback) => { + // Two modes of operation: + // - "request" mode: original request specifier still carries the + // extension (e.g. user wrote `./foo.js`). We swap the extension + // on `request.request` and re-resolve. + // - "path" mode: the specifier has already been joined into an + // absolute `request.path` (e.g. produced by the imports field). + // We swap the extension on `request.path` and `request.relativePath`. + const useRequest = request.request !== undefined; + const source = useRequest + ? /** @type {string} */ (request.request) + : request.path; + if (!source || !source.endsWith(extension)) return callback(); + const isAliasString = typeof alias === "string"; + // Hoist the base (everything before the old extension) out of the + // per-alias `resolve` callback. For an array `alias`, the callback + // runs once per candidate extension; the base does not change + // between iterations, so there's no reason to recompute it. + const sourceBase = source.slice(0, -extension.length); + const relativePathBase = + !useRequest && + request.relativePath && + request.relativePath.endsWith(extension) + ? request.relativePath.slice(0, -extension.length) + : null; + /** + * @param {string} alias extension alias + * @param {(err?: null | Error, result?: null | ResolveRequest) => void} callback callback + * @param {number=} index index + * @returns {void} + */ + const resolve = (alias, callback, index) => { + const newValue = `${sourceBase}${alias}`; + const nextRequest = useRequest + ? { + ...request, + request: newValue, + fullySpecified: true, + } + : { + ...request, + path: newValue, + relativePath: + relativePathBase !== null + ? `${relativePathBase}${alias}` + : request.relativePath, + fullySpecified: true, + }; + + return resolver.doResolve( + target, + nextRequest, + `aliased from extension alias with mapping '${extension}' to '${alias}'`, + resolveContext, + (err, result) => { + // Throw error if we are on the last alias (for multiple aliases) and it failed, always throw if we are not an array or we have only one alias + if (!isAliasString && index) { + if (index !== this.options.alias.length) { + if (resolveContext.log) { + resolveContext.log( + `Failed to alias from extension alias with mapping '${extension}' to '${alias}' for '${newValue}': ${err}`, + ); + } + + return callback(null, result); + } + + return callback(err, result); + } + callback(err, result); + }, + ); + }; + /** + * @param {(null | Error)=} err error + * @param {(null | ResolveRequest)=} result result + * @returns {void} + */ + const stoppingCallback = (err, result) => { + if (err) return callback(err); + if (result) return callback(null, result); + // Don't allow other aliasing or raw request + return callback(null, null); + }; + if (isAliasString) { + resolve(alias, stoppingCallback); + } else if (alias.length > 1) { + forEachBail(alias, resolve, stoppingCallback); + } else { + resolve(alias[0], stoppingCallback); + } + }); + } +}; diff --git a/node_modules/enhanced-resolve/lib/FileExistsPlugin.js b/node_modules/enhanced-resolve/lib/FileExistsPlugin.js new file mode 100644 index 00000000..cf9c8391 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/FileExistsPlugin.js @@ -0,0 +1,61 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */ + +module.exports = class FileExistsPlugin { + /** + * @param {string | ResolveStepHook} source source + * @param {string | ResolveStepHook} target target + */ + constructor(source, target) { + this.source = source; + this.target = target; + } + + /** + * @param {Resolver} resolver the resolver + * @returns {void} + */ + apply(resolver) { + const target = resolver.ensureHook(this.target); + const fs = resolver.fileSystem; + resolver + .getHook(this.source) + .tapAsync("FileExistsPlugin", (request, resolveContext, callback) => { + const file = request.path; + if (!file) return callback(); + fs.stat(file, (err, stat) => { + if (err || !stat) { + if (resolveContext.missingDependencies) { + resolveContext.missingDependencies.add(file); + } + if (resolveContext.log) resolveContext.log(`${file} doesn't exist`); + return callback(); + } + if (!stat.isFile()) { + if (resolveContext.missingDependencies) { + resolveContext.missingDependencies.add(file); + } + if (resolveContext.log) resolveContext.log(`${file} is not a file`); + return callback(); + } + if (resolveContext.fileDependencies) { + resolveContext.fileDependencies.add(file); + } + resolver.doResolve( + target, + request, + `existing file: ${file}`, + resolveContext, + callback, + ); + }); + }); + } +}; diff --git a/node_modules/enhanced-resolve/lib/ImportsFieldPlugin.js b/node_modules/enhanced-resolve/lib/ImportsFieldPlugin.js new file mode 100644 index 00000000..309c36d3 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/ImportsFieldPlugin.js @@ -0,0 +1,234 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Ivan Kopeykin @vankop +*/ + +"use strict"; + +const DescriptionFileUtils = require("./DescriptionFileUtils"); +const forEachBail = require("./forEachBail"); +const { processImportsField } = require("./util/entrypoints"); +const { parseIdentifier } = require("./util/identifier"); +const { + deprecatedInvalidSegmentRegEx, + invalidSegmentRegEx, +} = require("./util/path"); + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").JsonObject} JsonObject */ +/** @typedef {import("./Resolver").ResolveRequest} ResolveRequest */ +/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */ +/** @typedef {import("./util/entrypoints").FieldProcessor} FieldProcessor */ +/** @typedef {import("./util/entrypoints").ImportsField} ImportsField */ + +const dotCode = ".".charCodeAt(0); + +module.exports = class ImportsFieldPlugin { + /** + * @param {string | ResolveStepHook} source source + * @param {Set} conditionNames condition names + * @param {string | string[]} fieldNamePath name path + * @param {string | ResolveStepHook} targetFile target file + * @param {string | ResolveStepHook} targetPackage target package + */ + constructor( + source, + conditionNames, + fieldNamePath, + targetFile, + targetPackage, + ) { + this.source = source; + this.targetFile = targetFile; + this.targetPackage = targetPackage; + this.conditionNames = conditionNames; + this.fieldName = fieldNamePath; + // `null` is cached for description files that have no imports field, + // so subsequent resolves against the same package.json skip the + // `DescriptionFileUtils.getField` walk entirely. + /** @type {WeakMap} */ + this._fieldProcessorCache = new WeakMap(); + } + + /** + * @param {Resolver} resolver the resolver + * @returns {void} + */ + apply(resolver) { + const targetFile = resolver.ensureHook(this.targetFile); + const targetPackage = resolver.ensureHook(this.targetPackage); + + resolver + .getHook(this.source) + .tapAsync("ImportsFieldPlugin", (request, resolveContext, callback) => { + // When there is no description file, abort + if (!request.descriptionFileData || request.request === undefined) { + return callback(); + } + + const { descriptionFileData } = request; + const remainingRequest = + request.request + request.query + request.fragment; + + /** @type {string[]} */ + let paths; + /** @type {string | null} */ + let usedField; + + try { + // Look up the cached processor first. On a cache hit we + // avoid re-walking the description file for the imports + // field — and `null` is cached for description files that + // have no imports field at all, so those skip the read + // entirely. `processImportsField` can throw on a + // malformed `imports` map, so building the processor must + // stay inside this try/catch. + let fieldProcessor = + this._fieldProcessorCache.get(descriptionFileData); + if ( + fieldProcessor === undefined && + !this._fieldProcessorCache.has(descriptionFileData) + ) { + const importsField = + /** @type {ImportsField | null | undefined} */ + ( + DescriptionFileUtils.getField( + descriptionFileData, + this.fieldName, + ) + ); + fieldProcessor = importsField + ? processImportsField(importsField) + : null; + this._fieldProcessorCache.set(descriptionFileData, fieldProcessor); + } + if (!fieldProcessor) return callback(); + + if (request.directory) { + return callback( + new Error( + `Resolving to directories is not possible with the imports field (request was ${remainingRequest}/)`, + ), + ); + } + + [paths, usedField] = fieldProcessor( + remainingRequest, + this.conditionNames, + ); + } catch (/** @type {unknown} */ err) { + if (resolveContext.log) { + resolveContext.log( + `Imports field in ${request.descriptionFilePath} can't be processed: ${err}`, + ); + } + return callback(/** @type {Error} */ (err)); + } + + if (paths.length === 0) { + return callback( + new Error( + `Package import ${remainingRequest} is not imported from package ${request.descriptionFileRoot} (see imports field in ${request.descriptionFilePath})`, + ), + ); + } + + forEachBail( + paths, + /** + * @param {string} path path + * @param {(err?: null | Error, result?: null | ResolveRequest) => void} callback callback + * @param {number} i index + * @returns {void} + */ + (path, callback, i) => { + const parsedIdentifier = parseIdentifier(path); + + if (!parsedIdentifier) return callback(); + + const [path_, query, fragment] = parsedIdentifier; + + switch (path_.charCodeAt(0)) { + // should be relative + case dotCode: { + const withoutDotSlash = path_.slice(2); + if ( + invalidSegmentRegEx.exec(withoutDotSlash) !== null && + deprecatedInvalidSegmentRegEx.test(withoutDotSlash) !== null + ) { + if (paths.length === i) { + return callback( + new Error( + `Invalid "imports" target "${path}" defined for "${usedField}" in the package config ${request.descriptionFilePath}, targets must start with "./"`, + ), + ); + } + + return callback(); + } + + /** @type {ResolveRequest} */ + const obj = { + ...request, + request: undefined, + path: resolver.join( + /** @type {string} */ (request.descriptionFileRoot), + path_, + ), + relativePath: path_, + query, + fragment, + }; + + resolver.doResolve( + targetFile, + obj, + `using imports field: ${path}`, + resolveContext, + (err, result) => { + if (err) return callback(err); + // Don't allow to continue - https://github.com/webpack/enhanced-resolve/issues/400 + if (result === undefined) return callback(null, null); + callback(null, result); + }, + ); + break; + } + + // package resolving + default: { + /** @type {ResolveRequest} */ + const obj = { + ...request, + request: path_, + relativePath: path_, + fullySpecified: true, + query, + fragment, + }; + + resolver.doResolve( + targetPackage, + obj, + `using imports field: ${path}`, + resolveContext, + (err, result) => { + if (err) return callback(err); + // Don't allow to continue - https://github.com/webpack/enhanced-resolve/issues/400 + if (result === undefined) return callback(null, null); + callback(null, result); + }, + ); + } + } + }, + /** + * @param {null | Error=} err error + * @param {null | ResolveRequest=} result result + * @returns {void} + */ + (err, result) => callback(err, result || null), + ); + }); + } +}; diff --git a/node_modules/enhanced-resolve/lib/JoinRequestPartPlugin.js b/node_modules/enhanced-resolve/lib/JoinRequestPartPlugin.js new file mode 100644 index 00000000..a171b988 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/JoinRequestPartPlugin.js @@ -0,0 +1,75 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").ResolveRequest} ResolveRequest */ +/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */ + +const namespaceStartCharCode = "@".charCodeAt(0); + +module.exports = class JoinRequestPartPlugin { + /** + * @param {string | ResolveStepHook} source source + * @param {string | ResolveStepHook} target target + */ + constructor(source, target) { + this.source = source; + this.target = target; + } + + /** + * @param {Resolver} resolver the resolver + * @returns {void} + */ + apply(resolver) { + const target = resolver.ensureHook(this.target); + resolver + .getHook(this.source) + .tapAsync( + "JoinRequestPartPlugin", + (request, resolveContext, callback) => { + const req = request.request || ""; + let i = req.indexOf("/", 3); + + if (i >= 0 && req.charCodeAt(2) === namespaceStartCharCode) { + i = req.indexOf("/", i + 1); + } + + /** @type {string} */ + let moduleName; + /** @type {string} */ + let remainingRequest; + /** @type {boolean} */ + let fullySpecified; + if (i < 0) { + moduleName = req; + remainingRequest = "."; + fullySpecified = false; + } else { + moduleName = req.slice(0, i); + remainingRequest = `.${req.slice(i)}`; + fullySpecified = /** @type {boolean} */ (request.fullySpecified); + } + /** @type {ResolveRequest} */ + const obj = { + ...request, + path: resolver.join( + /** @type {string} */ + (request.path), + moduleName, + ), + relativePath: + request.relativePath && + resolver.join(request.relativePath, moduleName), + request: remainingRequest, + fullySpecified, + }; + resolver.doResolve(target, obj, null, resolveContext, callback); + }, + ); + } +}; diff --git a/node_modules/enhanced-resolve/lib/JoinRequestPlugin.js b/node_modules/enhanced-resolve/lib/JoinRequestPlugin.js new file mode 100644 index 00000000..108958ec --- /dev/null +++ b/node_modules/enhanced-resolve/lib/JoinRequestPlugin.js @@ -0,0 +1,45 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").ResolveRequest} ResolveRequest */ +/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */ + +module.exports = class JoinRequestPlugin { + /** + * @param {string | ResolveStepHook} source source + * @param {string | ResolveStepHook} target target + */ + constructor(source, target) { + this.source = source; + this.target = target; + } + + /** + * @param {Resolver} resolver the resolver + * @returns {void} + */ + apply(resolver) { + const target = resolver.ensureHook(this.target); + resolver + .getHook(this.source) + .tapAsync("JoinRequestPlugin", (request, resolveContext, callback) => { + const requestPath = /** @type {string} */ (request.path); + const requestRequest = /** @type {string} */ (request.request); + /** @type {ResolveRequest} */ + const obj = { + ...request, + path: resolver.join(requestPath, requestRequest), + relativePath: + request.relativePath && + resolver.join(request.relativePath, requestRequest), + request: undefined, + }; + resolver.doResolve(target, obj, null, resolveContext, callback); + }); + } +}; diff --git a/node_modules/enhanced-resolve/lib/LogInfoPlugin.js b/node_modules/enhanced-resolve/lib/LogInfoPlugin.js new file mode 100644 index 00000000..5dbb688e --- /dev/null +++ b/node_modules/enhanced-resolve/lib/LogInfoPlugin.js @@ -0,0 +1,58 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */ + +module.exports = class LogInfoPlugin { + /** + * @param {string | ResolveStepHook} source source + */ + constructor(source) { + this.source = source; + } + + /** + * @param {Resolver} resolver the resolver + * @returns {void} + */ + apply(resolver) { + const { source } = this; + resolver + .getHook(this.source) + .tapAsync("LogInfoPlugin", (request, resolveContext, callback) => { + if (!resolveContext.log) return callback(); + const { log } = resolveContext; + const prefix = `[${source}] `; + if (request.path) { + log(`${prefix}Resolving in directory: ${request.path}`); + } + if (request.request) { + log(`${prefix}Resolving request: ${request.request}`); + } + if (request.module) log(`${prefix}Request is an module request.`); + if (request.directory) log(`${prefix}Request is a directory request.`); + if (request.query) { + log(`${prefix}Resolving request query: ${request.query}`); + } + if (request.fragment) { + log(`${prefix}Resolving request fragment: ${request.fragment}`); + } + if (request.descriptionFilePath) { + log( + `${prefix}Has description data from ${request.descriptionFilePath}`, + ); + } + if (request.relativePath) { + log( + `${prefix}Relative path from description file is: ${request.relativePath}`, + ); + } + callback(); + }); + } +}; diff --git a/node_modules/enhanced-resolve/lib/MainFieldPlugin.js b/node_modules/enhanced-resolve/lib/MainFieldPlugin.js new file mode 100644 index 00000000..7616b9e2 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/MainFieldPlugin.js @@ -0,0 +1,97 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +const DescriptionFileUtils = require("./DescriptionFileUtils"); + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").JsonObject} JsonObject */ +/** @typedef {import("./Resolver").ResolveRequest} ResolveRequest */ +/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */ + +/** @typedef {{ name: string | string[], forceRelative: boolean }} MainFieldOptions */ + +const alreadyTriedMainField = Symbol("alreadyTriedMainField"); + +// Sentinel cached for description files where the main field resolves to a +// value we cannot use (missing, non-string, ".", "./"). Cheaper to store and +// check than to re-walk the description file on every resolve. +const NO_MAIN = Symbol("NoMain"); + +module.exports = class MainFieldPlugin { + /** + * @param {string | ResolveStepHook} source source + * @param {MainFieldOptions} options options + * @param {string | ResolveStepHook} target target + */ + constructor(source, options, target) { + this.source = source; + this.options = options; + this.target = target; + // Cache the resolved `mainModule` per description-file content. The + // options (`name`, `forceRelative`) are fixed for this plugin + // instance, so caching against content alone is safe. Stores either + // the ready-to-use request string or the `NO_MAIN` sentinel. + /** @type {WeakMap} */ + this._mainModuleCache = new WeakMap(); + } + + /** + * @param {Resolver} resolver the resolver + * @returns {void} + */ + apply(resolver) { + const target = resolver.ensureHook(this.target); + resolver + .getHook(this.source) + .tapAsync("MainFieldPlugin", (request, resolveContext, callback) => { + if ( + request.path !== request.descriptionFileRoot || + /** @type {ResolveRequest & { [alreadyTriedMainField]?: string }} */ + (request)[alreadyTriedMainField] === request.descriptionFilePath || + !request.descriptionFilePath + ) { + return callback(); + } + const descFileData = /** @type {JsonObject} */ ( + request.descriptionFileData + ); + let mainModule = this._mainModuleCache.get(descFileData); + if (mainModule === undefined) { + let raw = + /** @type {string | null | undefined} */ + (DescriptionFileUtils.getField(descFileData, this.options.name)); + if (!raw || typeof raw !== "string" || raw === "." || raw === "./") { + this._mainModuleCache.set(descFileData, NO_MAIN); + return callback(); + } + if (this.options.forceRelative && !/^\.\.?\//.test(raw)) { + raw = `./${raw}`; + } + mainModule = raw; + this._mainModuleCache.set(descFileData, mainModule); + } else if (mainModule === NO_MAIN) { + return callback(); + } + const filename = resolver.basename(request.descriptionFilePath); + /** @type {ResolveRequest & { [alreadyTriedMainField]?: string }} */ + const obj = { + ...request, + request: mainModule, + module: false, + directory: mainModule.endsWith("/"), + [alreadyTriedMainField]: request.descriptionFilePath, + }; + return resolver.doResolve( + target, + obj, + `use ${mainModule} from ${this.options.name} in ${filename}`, + resolveContext, + callback, + ); + }); + } +}; diff --git a/node_modules/enhanced-resolve/lib/ModulesInHierachicDirectoriesPlugin.js b/node_modules/enhanced-resolve/lib/ModulesInHierachicDirectoriesPlugin.js new file mode 100644 index 00000000..06065e82 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/ModulesInHierachicDirectoriesPlugin.js @@ -0,0 +1,9 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +// TODO remove in next major +module.exports = require("./ModulesInHierarchicalDirectoriesPlugin"); diff --git a/node_modules/enhanced-resolve/lib/ModulesInHierarchicalDirectoriesPlugin.js b/node_modules/enhanced-resolve/lib/ModulesInHierarchicalDirectoriesPlugin.js new file mode 100644 index 00000000..4f19fc31 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/ModulesInHierarchicalDirectoriesPlugin.js @@ -0,0 +1,47 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +const { modulesResolveHandler } = require("./ModulesUtils"); + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */ + +module.exports = class ModulesInHierarchicalDirectoriesPlugin { + /** + * @param {string | ResolveStepHook} source source + * @param {string | string[]} directories directories + * @param {string | ResolveStepHook} target target + */ + constructor(source, directories, target) { + this.source = source; + this.directories = /** @type {string[]} */ [...directories]; + this.target = target; + } + + /** + * @param {Resolver} resolver the resolver + * @returns {void} + */ + apply(resolver) { + const target = resolver.ensureHook(this.target); + resolver + .getHook(this.source) + .tapAsync( + "ModulesInHierarchicalDirectoriesPlugin", + (request, resolveContext, callback) => { + modulesResolveHandler( + resolver, + this.directories, + target, + request, + resolveContext, + callback, + ); + }, + ); + } +}; diff --git a/node_modules/enhanced-resolve/lib/ModulesInRootPlugin.js b/node_modules/enhanced-resolve/lib/ModulesInRootPlugin.js new file mode 100644 index 00000000..7797a11e --- /dev/null +++ b/node_modules/enhanced-resolve/lib/ModulesInRootPlugin.js @@ -0,0 +1,49 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").ResolveRequest} ResolveRequest */ +/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */ + +module.exports = class ModulesInRootPlugin { + /** + * @param {string | ResolveStepHook} source source + * @param {string} path path + * @param {string | ResolveStepHook} target target + */ + constructor(source, path, target) { + this.source = source; + this.path = path; + this.target = target; + } + + /** + * @param {Resolver} resolver the resolver + * @returns {void} + */ + apply(resolver) { + const target = resolver.ensureHook(this.target); + resolver + .getHook(this.source) + .tapAsync("ModulesInRootPlugin", (request, resolveContext, callback) => { + /** @type {ResolveRequest} */ + const obj = { + ...request, + path: this.path, + request: `./${request.request}`, + module: false, + }; + resolver.doResolve( + target, + obj, + `looking for modules in ${this.path}`, + resolveContext, + callback, + ); + }); + } +}; diff --git a/node_modules/enhanced-resolve/lib/ModulesUtils.js b/node_modules/enhanced-resolve/lib/ModulesUtils.js new file mode 100644 index 00000000..3de32dae --- /dev/null +++ b/node_modules/enhanced-resolve/lib/ModulesUtils.js @@ -0,0 +1,132 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +const forEachBail = require("./forEachBail"); +const { getPathsCached } = require("./getPaths"); + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").ResolveRequest} ResolveRequest */ +/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */ +/** @typedef {import("./Resolver").ResolveContext} ResolveContext */ +/** @typedef {(err?: null | Error, result?: null | ResolveRequest) => void} InnerCallback */ + +/** + * Per-(directories-array) cache of the flat `addrs` list produced for a given + * `request.path`. For a fixed directories configuration the fan-out of + * `ancestor × directory` is deterministic per request.path, and many resolves + * share the same starting directory (sibling files in one project, loops over + * a batch of imports, etc.) — caching avoids the `getPaths` regex split plus + * `len(paths) × len(directories)` join calls per resolve. + * + * The outer map is keyed on the directories array reference (plugin-owned, + * stable for the lifetime of the resolver), and the inner map on the + * starting `request.path`. Kept private to this module (rather than hung off + * `resolver.pathCache`) so the pathCache's hidden-class shape is unchanged — + * that avoids perturbing the interpreter-mode IC state for the + * `resolver.pathCache.{join,dirname,basename}.fn(...)` accesses that run on + * every resolve, which the CodSpeed instruction-count harness is sensitive to. + * @type {WeakMap>} + */ +const _addrsCacheByDirs = new WeakMap(); + +/** + * @param {Resolver} resolver resolver + * @param {string[]} directories directories + * @param {ResolveStepHook} target target + * @param {ResolveRequest} request request + * @param {ResolveContext} resolveContext resolve context + * @param {InnerCallback} callback callback + * @returns {void} + */ +function modulesResolveHandler( + resolver, + directories, + target, + request, + resolveContext, + callback, +) { + const fs = resolver.fileSystem; + const requestPath = /** @type {string} */ (request.path); + // Compute-or-reuse the flat `addrs` list. Inlined (rather than a helper + // function) so the cache-hit path — which is the vast majority of + // invocations — stays a single WeakMap + Map lookup with no function-call + // overhead. See `_addrsCacheByDirs` above for caching rationale. + let addrs; + let perPath = _addrsCacheByDirs.get(directories); + if (perPath === undefined) { + perPath = new Map(); + _addrsCacheByDirs.set(directories, perPath); + } else { + addrs = perPath.get(requestPath); + } + if (addrs === undefined) { + const { paths } = getPathsCached(fs, requestPath); + const pathsLen = paths.length; + const dirsLen = directories.length; + // Pre-size the flat array rather than going through `map().reduce()` + // with intermediate arrays + spreads. + // eslint-disable-next-line unicorn/no-new-array + addrs = new Array(pathsLen * dirsLen); + let idx = 0; + const joinFn = resolver.pathCache.join.fn; + for (let pi = 0; pi < pathsLen; pi++) { + const pathItem = paths[pi]; + for (let di = 0; di < dirsLen; di++) { + addrs[idx++] = joinFn(pathItem, directories[di]); + } + } + perPath.set(requestPath, addrs); + } + // Hoist the dot-prefixed request out of the per-addr iterator. `addrs` + // can have up to `paths.length × directories.length` entries (e.g. 36 + // for an 8-deep source dir × 4-module config), and concatenating the + // same `./${request.request}` string on every iteration is wasted + // work — it's constant for the whole fan-out. + const relRequest = `./${request.request}`; + forEachBail( + addrs, + /** + * @param {string} addr addr + * @param {(err?: null | Error, result?: null | ResolveRequest) => void} callback callback + * @returns {void} + */ + (addr, callback) => { + fs.stat(addr, (err, stat) => { + if (!err && stat && stat.isDirectory()) { + /** @type {ResolveRequest} */ + const obj = { + ...request, + path: addr, + request: relRequest, + module: false, + }; + const message = `looking for modules in ${addr}`; + return resolver.doResolve( + target, + obj, + message, + resolveContext, + callback, + ); + } + if (resolveContext.log) { + resolveContext.log(`${addr} doesn't exist or is not a directory`); + } + if (resolveContext.missingDependencies) { + resolveContext.missingDependencies.add(addr); + } + return callback(); + }); + }, + callback, + ); +} + +module.exports = { + modulesResolveHandler, +}; diff --git a/node_modules/enhanced-resolve/lib/NextPlugin.js b/node_modules/enhanced-resolve/lib/NextPlugin.js new file mode 100644 index 00000000..e59c56b8 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/NextPlugin.js @@ -0,0 +1,33 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */ + +module.exports = class NextPlugin { + /** + * @param {string | ResolveStepHook} source source + * @param {string | ResolveStepHook} target target + */ + constructor(source, target) { + this.source = source; + this.target = target; + } + + /** + * @param {Resolver} resolver the resolver + * @returns {void} + */ + apply(resolver) { + const target = resolver.ensureHook(this.target); + resolver + .getHook(this.source) + .tapAsync("NextPlugin", (request, resolveContext, callback) => { + resolver.doResolve(target, request, null, resolveContext, callback); + }); + } +}; diff --git a/node_modules/enhanced-resolve/lib/ParsePlugin.js b/node_modules/enhanced-resolve/lib/ParsePlugin.js new file mode 100644 index 00000000..c96c210b --- /dev/null +++ b/node_modules/enhanced-resolve/lib/ParsePlugin.js @@ -0,0 +1,77 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").ResolveRequest} ResolveRequest */ +/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */ + +module.exports = class ParsePlugin { + /** + * @param {string | ResolveStepHook} source source + * @param {Partial} requestOptions request options + * @param {string | ResolveStepHook} target target + */ + constructor(source, requestOptions, target) { + this.source = source; + this.requestOptions = requestOptions; + this.target = target; + } + + /** + * @param {Resolver} resolver the resolver + * @returns {void} + */ + apply(resolver) { + const target = resolver.ensureHook(this.target); + resolver + .getHook(this.source) + .tapAsync("ParsePlugin", (request, resolveContext, callback) => { + const parsed = resolver.parse(/** @type {string} */ (request.request)); + /** @type {ResolveRequest} */ + const obj = { ...request, ...parsed, ...this.requestOptions }; + if (request.query && !parsed.query) { + obj.query = request.query; + } + if (request.fragment && !parsed.fragment) { + obj.fragment = request.fragment; + } + if (parsed && resolveContext.log) { + if (parsed.module) resolveContext.log("Parsed request is a module"); + if (parsed.directory) { + resolveContext.log("Parsed request is a directory"); + } + } + // There is an edge-case where a request with # can be a path or a fragment -> try both + if (obj.request && !obj.query && obj.fragment) { + const directory = obj.fragment.endsWith("/"); + /** @type {ResolveRequest} */ + const alternative = { + ...obj, + directory, + request: + obj.request + + (obj.directory ? "/" : "") + + (directory ? obj.fragment.slice(0, -1) : obj.fragment), + fragment: "", + }; + resolver.doResolve( + target, + alternative, + null, + resolveContext, + (err, result) => { + if (err) return callback(err); + if (result) return callback(null, result); + resolver.doResolve(target, obj, null, resolveContext, callback); + }, + ); + return; + } + resolver.doResolve(target, obj, null, resolveContext, callback); + }); + } +}; diff --git a/node_modules/enhanced-resolve/lib/PnpPlugin.js b/node_modules/enhanced-resolve/lib/PnpPlugin.js new file mode 100644 index 00000000..42b230e7 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/PnpPlugin.js @@ -0,0 +1,134 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Maël Nison @arcanis +*/ + +"use strict"; + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */ +/** @typedef {import("./Resolver").ResolveRequest} ResolveRequest */ +/** + * @typedef {object} PnpApiImpl + * @property {(packageName: string, issuer: string, options: { considerBuiltins: boolean }) => string | null} resolveToUnqualified resolve to unqualified + */ + +module.exports = class PnpPlugin { + /** + * @param {string | ResolveStepHook} source source + * @param {PnpApiImpl} pnpApi pnpApi + * @param {string | ResolveStepHook} target target + * @param {string | ResolveStepHook} alternateTarget alternateTarget + */ + constructor(source, pnpApi, target, alternateTarget) { + this.source = source; + this.pnpApi = pnpApi; + this.target = target; + this.alternateTarget = alternateTarget; + } + + /** + * @param {Resolver} resolver the resolver + * @returns {void} + */ + apply(resolver) { + /** @type {ResolveStepHook} */ + const target = resolver.ensureHook(this.target); + const alternateTarget = resolver.ensureHook(this.alternateTarget); + resolver + .getHook(this.source) + .tapAsync("PnpPlugin", (request, resolveContext, callback) => { + const req = request.request; + if (!req) return callback(); + + // The trailing slash indicates to PnP that this value is a folder rather than a file + const issuer = `${request.path}/`; + + const packageMatch = /^(@[^/]+\/)?[^/]+/.exec(req); + if (!packageMatch) return callback(); + + const [packageName] = packageMatch; + const innerRequest = `.${req.slice(packageName.length)}`; + + /** @type {string | undefined | null} */ + let resolution; + /** @type {string | undefined | null} */ + let apiResolution; + try { + resolution = this.pnpApi.resolveToUnqualified(packageName, issuer, { + considerBuiltins: false, + }); + + if (resolution === null) { + // This is either not a PnP managed issuer or it's a Node builtin + // Try to continue resolving with our alternatives + resolver.doResolve( + alternateTarget, + request, + "issuer is not managed by a pnpapi", + resolveContext, + (err, result) => { + if (err) return callback(err); + if (result) return callback(null, result); + // Skip alternatives + return callback(null, null); + }, + ); + return; + } + + if (resolveContext.fileDependencies) { + apiResolution = this.pnpApi.resolveToUnqualified("pnpapi", issuer, { + considerBuiltins: false, + }); + } + } catch (/** @type {unknown} */ error) { + if ( + /** @type {Error & { code: string }} */ + (error).code === "MODULE_NOT_FOUND" && + /** @type {Error & { pnpCode: string }} */ + (error).pnpCode === "UNDECLARED_DEPENDENCY" + ) { + // This is not a PnP managed dependency. + // Try to continue resolving with our alternatives + if (resolveContext.log) { + resolveContext.log("request is not managed by the pnpapi"); + for (const line of /** @type {Error} */ (error).message + .split("\n") + .filter(Boolean)) { + resolveContext.log(` ${line}`); + } + } + return callback(); + } + return callback(/** @type {Error} */ (error)); + } + + if (resolution === packageName) return callback(); + + if (apiResolution && resolveContext.fileDependencies) { + resolveContext.fileDependencies.add(apiResolution); + } + /** @type {ResolveRequest} */ + const obj = { + ...request, + path: resolution, + request: innerRequest, + ignoreSymlinks: true, + fullySpecified: request.fullySpecified && innerRequest !== ".", + }; + resolver.doResolve( + target, + obj, + `resolved by pnp to ${resolution}`, + resolveContext, + (err, result) => { + if (err) return callback(err); + if (result) return callback(null, result); + // Skip alternatives + return callback(null, null); + }, + ); + }); + } +}; diff --git a/node_modules/enhanced-resolve/lib/Resolver.js b/node_modules/enhanced-resolve/lib/Resolver.js new file mode 100644 index 00000000..9fb6b148 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/Resolver.js @@ -0,0 +1,1179 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +const { AsyncSeriesBailHook, AsyncSeriesHook, SyncHook } = require("tapable"); +const createInnerContext = require("./createInnerContext"); +const { parseIdentifier } = require("./util/identifier"); +const { + PathType, + createCachedBasename, + createCachedDirname, + createCachedJoin, + getType, + normalize, +} = require("./util/path"); + +/* eslint-disable jsdoc/check-alignment */ +// TODO in the next major release use only `Promise.withResolvers()` +const _withResolvers = + // eslint-disable-next-line n/no-unsupported-features/es-syntax + Promise.withResolvers + ? /** + * @param {Resolver} self resolver + * @param {Context} context context information object + * @param {string} path context path + * @param {string} request request string + * @param {ResolveContext} resolveContext resolve context + * @returns {Promise} result + */ + (self, context, path, request, resolveContext) => { + // eslint-disable-next-line n/no-unsupported-features/es-syntax + const { promise, resolve, reject } = Promise.withResolvers(); + self.resolve(context, path, request, resolveContext, (err, res) => { + if (err) reject(err); + else resolve(/** @type {string | false} */ (res)); + }); + return promise; + } + : /** + * @param {Resolver} self resolver + * @param {Context} context context information object + * @param {string} path context path + * @param {string} request request string + * @param {ResolveContext} resolveContext resolve context + * @returns {Promise} result + */ + (self, context, path, request, resolveContext) => + new Promise((resolve, reject) => { + self.resolve(context, path, request, resolveContext, (err, res) => { + if (err) reject(err); + else resolve(/** @type {string | false} */ (res)); + }); + }); +/* eslint-enable jsdoc/check-alignment */ + +/** @typedef {import("./AliasUtils").AliasOption} AliasOption */ +/** @typedef {import("./util/path").CachedJoin} CachedJoin */ +/** @typedef {import("./util/path").CachedDirname} CachedDirname */ +/** @typedef {import("./util/path").CachedBasename} CachedBasename */ + +/** + * @typedef {object} JoinCacheEntry + * @property {CachedJoin["fn"]} fn cached join function + * @property {CachedJoin["cache"]} cache the underlying cache map + */ + +/** + * @typedef {object} DirnameCacheEntry + * @property {CachedDirname["fn"]} fn cached dirname function + * @property {CachedDirname["cache"]} cache the underlying cache map + */ + +/** + * @typedef {object} BasenameCacheEntry + * @property {CachedBasename["fn"]} fn cached dirname function + * @property {CachedBasename["cache"]} cache the underlying cache map + */ + +/** + * @typedef {object} PathCacheFunctions + * @property {JoinCacheEntry} join cached join + * @property {DirnameCacheEntry} dirname cached dirname + * @property {BasenameCacheEntry} basename cached basename + */ + +/** @type {WeakMap} */ +const _pathCacheByFs = new WeakMap(); + +/** @typedef {import("./ResolverFactory").ResolveOptions} ResolveOptions */ + +/** + * @typedef {object} KnownContext + * @property {string[]=} environments environments + */ + +// eslint-disable-next-line jsdoc/reject-any-type +/** @typedef {KnownContext & Record} Context */ + +/** @typedef {Error & { details?: string }} ErrorWithDetail */ + +/** @typedef {(err: ErrorWithDetail | null, res?: string | false, req?: ResolveRequest) => void} ResolveCallback */ + +/** + * @typedef {object} PossibleFileSystemError + * @property {string=} code code + * @property {number=} errno number + * @property {string=} path path + * @property {string=} syscall syscall + */ + +/** + * @template T + * @callback FileSystemCallback + * @param {PossibleFileSystemError & Error | null} err + * @param {T=} result + */ + +/** + * @typedef {string | Buffer | URL} PathLike + */ + +/** + * @typedef {PathLike | number} PathOrFileDescriptor + */ + +/** + * @typedef {object} ObjectEncodingOptions + * @property {BufferEncoding | null | undefined=} encoding encoding + */ + +/** + * @typedef {ObjectEncodingOptions | BufferEncoding | undefined | null} EncodingOption + */ + +/** @typedef {(err: NodeJS.ErrnoException | null, result?: string) => void} StringCallback */ +/** @typedef {(err: NodeJS.ErrnoException | null, result?: Buffer) => void} BufferCallback */ +/** @typedef {(err: NodeJS.ErrnoException | null, result?: (string | Buffer)) => void} StringOrBufferCallback */ +/** @typedef {(err: NodeJS.ErrnoException | null, result?: IStats) => void} StatsCallback */ +/** @typedef {(err: NodeJS.ErrnoException | null, result?: IBigIntStats) => void} BigIntStatsCallback */ +/** @typedef {(err: NodeJS.ErrnoException | null, result?: (IStats | IBigIntStats)) => void} StatsOrBigIntStatsCallback */ +/** @typedef {(err: NodeJS.ErrnoException | Error | null, result?: JsonObject) => void} ReadJsonCallback */ + +/** + * @template T + * @typedef {object} IStatsBase + * @property {() => boolean} isFile is file + * @property {() => boolean} isDirectory is directory + * @property {() => boolean} isBlockDevice is block device + * @property {() => boolean} isCharacterDevice is character device + * @property {() => boolean} isSymbolicLink is symbolic link + * @property {() => boolean} isFIFO is FIFO + * @property {() => boolean} isSocket is socket + * @property {T} dev dev + * @property {T} ino ino + * @property {T} mode mode + * @property {T} nlink nlink + * @property {T} uid uid + * @property {T} gid gid + * @property {T} rdev rdev + * @property {T} size size + * @property {T} blksize blksize + * @property {T} blocks blocks + * @property {T} atimeMs atime ms + * @property {T} mtimeMs mtime ms + * @property {T} ctimeMs ctime ms + * @property {T} birthtimeMs birthtime ms + * @property {Date} atime atime + * @property {Date} mtime mtime + * @property {Date} ctime ctime + * @property {Date} birthtime birthtime + */ + +/** + * @typedef {IStatsBase} IStats + */ + +/** + * @typedef {IStatsBase & { atimeNs: bigint, mtimeNs: bigint, ctimeNs: bigint, birthtimeNs: bigint }} IBigIntStats + */ + +/** + * @template {string | Buffer} [T=string] + * @typedef {object} Dirent + * @property {() => boolean} isFile true when is file, otherwise false + * @property {() => boolean} isDirectory true when is directory, otherwise false + * @property {() => boolean} isBlockDevice true when is block device, otherwise false + * @property {() => boolean} isCharacterDevice true when is character device, otherwise false + * @property {() => boolean} isSymbolicLink true when is symbolic link, otherwise false + * @property {() => boolean} isFIFO true when is FIFO, otherwise false + * @property {() => boolean} isSocket true when is socket, otherwise false + * @property {T} name name + * @property {string} parentPath path + * @property {string=} path path + */ + +/** + * @typedef {object} StatOptions + * @property {(boolean | undefined)=} bigint need bigint values + */ + +/** + * @typedef {object} StatSyncOptions + * @property {(boolean | undefined)=} bigint need bigint values + * @property {(boolean | undefined)=} throwIfNoEntry throw if no entry + */ + +/** + * @typedef {{ + * (path: PathOrFileDescriptor, options: ({ encoding?: null | undefined, flag?: string | undefined } & import("events").Abortable) | undefined | null, callback: BufferCallback): void, + * (path: PathOrFileDescriptor, options: ({ encoding: BufferEncoding, flag?: string | undefined } & import("events").Abortable) | BufferEncoding, callback: StringCallback): void, + * (path: PathOrFileDescriptor, options: (ObjectEncodingOptions & { flag?: string | undefined } & import("events").Abortable) | BufferEncoding | undefined | null, callback: StringOrBufferCallback): void, + * (path: PathOrFileDescriptor, callback: BufferCallback): void, + * }} ReadFile + */ + +/** + * @typedef {"buffer" | { encoding: "buffer" }} BufferEncodingOption + */ + +/** + * @typedef {{ + * (path: PathOrFileDescriptor, options?: { encoding?: null | undefined, flag?: string | undefined } | null): Buffer, + * (path: PathOrFileDescriptor, options: { encoding: BufferEncoding, flag?: string | undefined } | BufferEncoding): string, + * (path: PathOrFileDescriptor, options?: (ObjectEncodingOptions & { flag?: string | undefined }) | BufferEncoding | null): string | Buffer, + * }} ReadFileSync + */ + +/** + * @typedef {{ + * (path: PathLike, options: { encoding: BufferEncoding | null, withFileTypes?: false | undefined, recursive?: boolean | undefined } | BufferEncoding | undefined | null, callback: (err: NodeJS.ErrnoException | null, files?: string[]) => void): void, + * (path: PathLike, options: { encoding: "buffer", withFileTypes?: false | undefined, recursive?: boolean | undefined } | "buffer", callback: (err: NodeJS.ErrnoException | null, files?: Buffer[]) => void): void, + * (path: PathLike, options: (ObjectEncodingOptions & { withFileTypes?: false | undefined, recursive?: boolean | undefined }) | BufferEncoding | undefined | null, callback: (err: NodeJS.ErrnoException | null, files?: string[] | Buffer[]) => void): void, + * (path: PathLike, callback: (err: NodeJS.ErrnoException | null, files?: string[]) => void): void, + * (path: PathLike, options: ObjectEncodingOptions & { withFileTypes: true, recursive?: boolean | undefined }, callback: (err: NodeJS.ErrnoException | null, files?: Dirent[]) => void): void, + * (path: PathLike, options: { encoding: "buffer", withFileTypes: true, recursive?: boolean | undefined }, callback: (err: NodeJS.ErrnoException | null, files: Dirent[]) => void): void, + * }} Readdir + */ + +/** + * @typedef {{ + * (path: PathLike, options?: { encoding: BufferEncoding | null, withFileTypes?: false | undefined, recursive?: boolean | undefined } | BufferEncoding | null): string[], + * (path: PathLike, options: { encoding: "buffer", withFileTypes?: false | undefined, recursive?: boolean | undefined } | "buffer"): Buffer[], + * (path: PathLike, options?: (ObjectEncodingOptions & { withFileTypes?: false | undefined, recursive?: boolean | undefined }) | BufferEncoding | null): string[] | Buffer[], + * (path: PathLike, options: ObjectEncodingOptions & { withFileTypes: true, recursive?: boolean | undefined }): Dirent[], + * (path: PathLike, options: { encoding: "buffer", withFileTypes: true, recursive?: boolean | undefined }): Dirent[], + * }} ReaddirSync + */ + +/** + * @typedef {(pathOrFileDescription: PathOrFileDescriptor, callback: ReadJsonCallback) => void} ReadJson + */ + +/** + * @typedef {(pathOrFileDescription: PathOrFileDescriptor) => JsonObject} ReadJsonSync + */ + +/** + * @typedef {{ + * (path: PathLike, options: EncodingOption, callback: StringCallback): void, + * (path: PathLike, options: BufferEncodingOption, callback: BufferCallback): void, + * (path: PathLike, options: EncodingOption, callback: StringOrBufferCallback): void, + * (path: PathLike, callback: StringCallback): void, + * }} Readlink + */ + +/** + * @typedef {{ + * (path: PathLike, options?: EncodingOption): string, + * (path: PathLike, options: BufferEncodingOption): Buffer, + * (path: PathLike, options?: EncodingOption): string | Buffer, + * }} ReadlinkSync + */ + +/** + * @typedef {{ + * (path: PathLike, callback: StatsCallback): void, + * (path: PathLike, options: (StatOptions & { bigint?: false | undefined }) | undefined, callback: StatsCallback): void, + * (path: PathLike, options: StatOptions & { bigint: true }, callback: BigIntStatsCallback): void, + * (path: PathLike, options: StatOptions | undefined, callback: StatsOrBigIntStatsCallback): void, + * }} LStat + */ + +/** + * @typedef {{ + * (path: PathLike, options?: undefined): IStats, + * (path: PathLike, options?: StatSyncOptions & { bigint?: false | undefined, throwIfNoEntry: false }): IStats | undefined, + * (path: PathLike, options: StatSyncOptions & { bigint: true, throwIfNoEntry: false }): IBigIntStats | undefined, + * (path: PathLike, options?: StatSyncOptions & { bigint?: false | undefined }): IStats, + * (path: PathLike, options: StatSyncOptions & { bigint: true }): IBigIntStats, + * (path: PathLike, options: StatSyncOptions & { bigint: boolean, throwIfNoEntry?: false | undefined }): IStats | IBigIntStats, + * (path: PathLike, options?: StatSyncOptions): IStats | IBigIntStats | undefined, + * }} LStatSync + */ + +/** + * @typedef {{ + * (path: PathLike, callback: StatsCallback): void, + * (path: PathLike, options: (StatOptions & { bigint?: false | undefined }) | undefined, callback: StatsCallback): void, + * (path: PathLike, options: StatOptions & { bigint: true }, callback: BigIntStatsCallback): void, + * (path: PathLike, options: StatOptions | undefined, callback: StatsOrBigIntStatsCallback): void, + * }} Stat + */ + +/** + * @typedef {{ + * (path: PathLike, options?: undefined): IStats, + * (path: PathLike, options?: StatSyncOptions & { bigint?: false | undefined, throwIfNoEntry: false }): IStats | undefined, + * (path: PathLike, options: StatSyncOptions & { bigint: true, throwIfNoEntry: false }): IBigIntStats | undefined, + * (path: PathLike, options?: StatSyncOptions & { bigint?: false | undefined }): IStats, + * (path: PathLike, options: StatSyncOptions & { bigint: true }): IBigIntStats, + * (path: PathLike, options: StatSyncOptions & { bigint: boolean, throwIfNoEntry?: false | undefined }): IStats | IBigIntStats, + * (path: PathLike, options?: StatSyncOptions): IStats | IBigIntStats | undefined, + * }} StatSync + */ + +/** + * @typedef {{ + * (path: PathLike, options: EncodingOption, callback: StringCallback): void, + * (path: PathLike, options: BufferEncodingOption, callback: BufferCallback): void, + * (path: PathLike, options: EncodingOption, callback: StringOrBufferCallback): void, + * (path: PathLike, callback: StringCallback): void, + * }} RealPath + */ + +/** + * @typedef {{ + * (path: PathLike, options?: EncodingOption): string, + * (path: PathLike, options: BufferEncodingOption): Buffer, + * (path: PathLike, options?: EncodingOption): string | Buffer, + * }} RealPathSync + */ + +/** + * @typedef {object} FileSystem + * @property {ReadFile} readFile read file method + * @property {Readdir} readdir readdir method + * @property {ReadJson=} readJson read json method + * @property {Readlink} readlink read link method + * @property {LStat=} lstat lstat method + * @property {Stat} stat stat method + * @property {RealPath=} realpath realpath method + */ + +/** + * @typedef {object} SyncFileSystem + * @property {ReadFileSync} readFileSync read file sync method + * @property {ReaddirSync} readdirSync read dir sync method + * @property {ReadJsonSync=} readJsonSync read json sync method + * @property {ReadlinkSync} readlinkSync read link sync method + * @property {LStatSync=} lstatSync lstat sync method + * @property {StatSync} statSync stat sync method + * @property {RealPathSync=} realpathSync real path sync method + */ + +/** + * @typedef {object} ParsedIdentifier + * @property {string} request request + * @property {string} query query + * @property {string} fragment fragment + * @property {boolean} directory is directory + * @property {boolean} module is module + * @property {boolean} file is file + * @property {boolean} internal is internal + */ + +/** @typedef {string | number | boolean | null} JsonPrimitive */ +/** @typedef {JsonValue[]} JsonArray */ +/** @typedef {JsonPrimitive | JsonObject | JsonArray} JsonValue */ +/** @typedef {{ [Key in string]?: JsonValue | undefined }} JsonObject */ + +/** + * @typedef {object} TsconfigPathsMap + * @property {TsconfigPathsData} main main tsconfig paths data + * @property {string} mainContext main tsconfig base URL (absolute path) + * @property {{ [baseUrl: string]: TsconfigPathsData }} refs referenced tsconfig paths data mapped by baseUrl + * @property {{ [context: string]: TsconfigPathsData }} allContexts all contexts (main + refs) for quick lookup + * @property {string[]} contextList precomputed `Object.keys(allContexts)` — read-only; used on the `_selectPathsDataForContext` hot path + * @property {Set} fileDependencies file dependencies + */ + +/** + * @typedef {object} TsconfigPathsData + * @property {import("./AliasUtils").CompiledAliasOption[]} alias tsconfig file data + * @property {string[]} modules tsconfig file data + */ + +/** + * @typedef {object} BaseResolveRequest + * @property {string | false} path path + * @property {Context=} context content + * @property {string=} descriptionFilePath description file path + * @property {string=} descriptionFileRoot description file root + * @property {JsonObject=} descriptionFileData description file data + * @property {TsconfigPathsMap | null | undefined=} tsconfigPathsMap tsconfig paths map + * @property {string=} relativePath relative path + * @property {boolean=} ignoreSymlinks true when need to ignore symlinks, otherwise false + * @property {boolean=} fullySpecified true when full specified, otherwise false + * @property {string=} __innerRequest inner request for internal usage + * @property {string=} __innerRequest_request inner request for internal usage + * @property {string=} __innerRequest_relativePath inner relative path for internal usage + */ + +/** @typedef {BaseResolveRequest & Partial} ResolveRequest */ + +/** + * @template T + * @typedef {{ add: (item: T) => void }} WriteOnlySet + */ + +/** @typedef {(request: ResolveRequest) => void} ResolveContextYield */ + +/** + * Singly-linked stack entry that also exposes a Set-like API + * (`has`, `size`, iteration). Each `doResolve` call prepends a new + * `StackEntry` that points at the previous tip via `.parent`, so pushing + * is O(1) in time and memory. Recursion detection walks the linked list + * (O(n)) but the stack is typically shallow, so this is cheaper overall + * than cloning a `Set` per call. + */ +class StackEntry { + /** + * @param {ResolveStepHook} hook hook + * @param {ResolveRequest} request request + * @param {StackEntry=} parent previous tip + * @param {Set=} preSeeded entries pre-seeded via the legacy `Set` API + */ + constructor(hook, request, parent, preSeeded) { + this.name = hook.name; + this.path = request.path; + this.request = request.request || ""; + this.query = request.query || ""; + this.fragment = request.fragment || ""; + this.directory = Boolean(request.directory); + this.module = Boolean(request.module); + /** @type {StackEntry | undefined} */ + this.parent = parent; + /** + * Strings seeded by callers that still pass `stack: new Set([...])`. + * Propagated through the chain so deeper `doResolve` calls still see + * them during recursion checks. `undefined` in the common case so + * there is no extra work on the hot path. + * @type {Set | undefined} + */ + this.preSeeded = preSeeded; + } + + /** + * Walk the linked list looking for an entry with the same request shape. + * Set-compatible: callers that used `stack.has(entry)` keep working. + * @param {StackEntry} query entry to look for + * @returns {boolean} whether the stack already contains an equivalent entry + */ + has(query) { + /** @type {StackEntry | undefined} */ + let node = this; + while (node) { + if ( + node.name === query.name && + node.path === query.path && + node.request === query.request && + node.query === query.query && + node.fragment === query.fragment && + node.directory === query.directory && + node.module === query.module + ) { + return true; + } + node = node.parent; + } + return this.preSeeded !== undefined && this.preSeeded.has(query.toString()); + } + + /** + * Number of entries on the stack (oldest-to-newest length). + * @returns {number} size + */ + get size() { + let count = this.preSeeded ? this.preSeeded.size : 0; + /** @type {StackEntry | undefined} */ + let node = this; + while (node) { + count++; + node = node.parent; + } + return count; + } + + /** + * Iterate entries from oldest (root) to newest (tip), matching how a + * `Set` that was populated in insertion order would iterate. Pre-seeded + * legacy `Set` entries come first so error-message output stays + * ordered oldest-to-newest. + * @returns {IterableIterator} iterator + */ + *[Symbol.iterator]() { + if (this.preSeeded !== undefined) { + for (const entry of this.preSeeded) yield entry; + } + /** @type {StackEntry[]} */ + const entries = []; + /** @type {StackEntry | undefined} */ + let node = this; + while (node) { + entries.push(node); + node = node.parent; + } + for (let i = entries.length - 1; i >= 0; i--) yield entries[i]; + } + + /** + * Human-readable form used in recursion error messages and logs. + * Matches the historical string format so existing log parsers stay valid. + * @returns {string} formatted entry + */ + toString() { + return `${this.name}: (${this.path}) ${this.request}${this.query}${ + this.fragment + }${this.directory ? " directory" : ""}${this.module ? " module" : ""}`; + } +} + +/** + * Resolve context + * @typedef {object} ResolveContext + * @property {WriteOnlySet=} contextDependencies directories that was found on file system + * @property {WriteOnlySet=} fileDependencies files that was found on file system + * @property {WriteOnlySet=} missingDependencies dependencies that was not found on file system + * @property {StackEntry | Set=} stack tip of the resolver call stack (a singly-linked list with Set-like API). For instance, `resolve → parsedResolve → describedResolve`. Accepts a legacy `Set` for back-compat with older callers; it is normalized internally without a hot-path branch. + * @property {((str: string) => void)=} log log function + * @property {ResolveContextYield=} yield yield result, if provided plugins can return several results + */ + +/** @typedef {AsyncSeriesBailHook<[ResolveRequest, ResolveContext], ResolveRequest | null>} ResolveStepHook */ + +/** + * @typedef {object} KnownHooks + * @property {SyncHook<[ResolveStepHook, ResolveRequest], void>} resolveStep resolve step hook + * @property {SyncHook<[ResolveRequest, Error]>} noResolve no resolve hook + * @property {ResolveStepHook} resolve resolve hook + * @property {AsyncSeriesHook<[ResolveRequest, ResolveContext]>} result result hook + */ + +/** + * @typedef {{ [key: string]: ResolveStepHook }} EnsuredHooks + */ + +/** + * @param {string} str input string + * @returns {string} in camel case + */ +function toCamelCase(str) { + return str.replace(/-([a-z])/g, (str) => str.slice(1).toUpperCase()); +} + +class Resolver { + /** + * @param {ResolveStepHook} hook hook + * @param {ResolveRequest} request request + * @param {StackEntry=} parent previous tip of the stack + * @param {Set=} preSeeded entries pre-seeded via the legacy `Set` API + * @returns {StackEntry} stack entry + */ + static createStackEntry(hook, request, parent, preSeeded) { + return new StackEntry(hook, request, parent, preSeeded); + } + + /** + * @param {FileSystem} fileSystem a filesystem + * @param {ResolveOptions} options options + */ + constructor(fileSystem, options) { + /** @type {FileSystem} */ + this.fileSystem = fileSystem; + /** @type {ResolveOptions} */ + this.options = options; + let pathCache = _pathCacheByFs.get(fileSystem); + if (!pathCache) { + pathCache = { + join: createCachedJoin(), + dirname: createCachedDirname(), + basename: createCachedBasename(), + }; + _pathCacheByFs.set(fileSystem, pathCache); + } + /** @type {PathCacheFunctions} */ + this.pathCache = pathCache; + /** @type {KnownHooks} */ + this.hooks = { + resolveStep: new SyncHook(["hook", "request"], "resolveStep"), + noResolve: new SyncHook(["request", "error"], "noResolve"), + resolve: new AsyncSeriesBailHook( + ["request", "resolveContext"], + "resolve", + ), + result: new AsyncSeriesHook(["result", "resolveContext"], "result"), + }; + } + + /** + * @param {string | ResolveStepHook} name hook name or hook itself + * @returns {ResolveStepHook} the hook + */ + ensureHook(name) { + if (typeof name !== "string") { + return name; + } + name = toCamelCase(name); + if (name.startsWith("before")) { + return /** @type {ResolveStepHook} */ ( + this.ensureHook(name[6].toLowerCase() + name.slice(7)).withOptions({ + stage: -10, + }) + ); + } + if (name.startsWith("after")) { + return /** @type {ResolveStepHook} */ ( + this.ensureHook(name[5].toLowerCase() + name.slice(6)).withOptions({ + stage: 10, + }) + ); + } + /** @type {ResolveStepHook} */ + const hook = /** @type {KnownHooks & EnsuredHooks} */ (this.hooks)[name]; + if (!hook) { + /** @type {KnownHooks & EnsuredHooks} */ + (this.hooks)[name] = new AsyncSeriesBailHook( + ["request", "resolveContext"], + name, + ); + + return /** @type {KnownHooks & EnsuredHooks} */ (this.hooks)[name]; + } + return hook; + } + + /** + * @param {string | ResolveStepHook} name hook name or hook itself + * @returns {ResolveStepHook} the hook + */ + getHook(name) { + if (typeof name !== "string") { + return name; + } + name = toCamelCase(name); + if (name.startsWith("before")) { + return /** @type {ResolveStepHook} */ ( + this.getHook(name[6].toLowerCase() + name.slice(7)).withOptions({ + stage: -10, + }) + ); + } + if (name.startsWith("after")) { + return /** @type {ResolveStepHook} */ ( + this.getHook(name[5].toLowerCase() + name.slice(6)).withOptions({ + stage: 10, + }) + ); + } + /** @type {ResolveStepHook} */ + const hook = /** @type {KnownHooks & EnsuredHooks} */ (this.hooks)[name]; + if (!hook) { + throw new Error(`Hook ${name} doesn't exist`); + } + return hook; + } + + /** + * @overload + * @param {string} path context path + * @param {string} request request string + * @param {ResolveContext=} resolveContext resolve context + * @returns {string | false} result + */ + /** + * @overload + * @param {Context} context context information object + * @param {string} path context path + * @param {string} request request string + * @param {ResolveContext=} resolveContext resolve context + * @returns {string | false} result + */ + /** + * @param {Context | string} context context information object or context path when no context is provided + * @param {string | ResolveContext=} path context path or resolve context when no context is provided + * @param {string | ResolveContext=} request request string or resolve context when no context is provided + * @param {ResolveContext=} resolveContext resolve context + * @returns {string | false} result + */ + resolveSync(context, path, request, resolveContext) { + /** @type {Error | null | undefined} */ + let err; + /** @type {string | false | undefined} */ + let result; + let sync = false; + // `|| {}` so the underlying `resolve()` hits its 5-arg fast path + // (skips the overload-shifting prologue) regardless of whether the + // caller supplied a resolveContext. + this.resolve( + /** @type {Context} */ (context), + /** @type {string} */ (path), + /** @type {string} */ (request), + /** @type {ResolveContext} */ (resolveContext) || {}, + (_err, r) => { + err = _err; + result = r; + sync = true; + }, + ); + if (!sync) { + throw new Error( + "Cannot 'resolveSync' because the fileSystem is not sync. Use 'resolve'!", + ); + } + if (err) throw err; + if (result === undefined) throw new Error("No result"); + return result; + } + + /** + * @overload + * @param {string} path context path + * @param {string} request request string + * @param {ResolveContext=} resolveContext resolve context + * @returns {Promise} result + */ + /** + * @overload + * @param {Context} context context information object + * @param {string} path context path + * @param {string} request request string + * @param {ResolveContext=} resolveContext resolve context + * @returns {Promise} result + */ + /** + * @param {Context | string} context context information object or context path when no context is provided + * @param {string | ResolveContext=} path context path or resolve context when no context is provided + * @param {string | ResolveContext=} request request string or resolve context when no context is provided + * @param {ResolveContext=} resolveContext resolve context + * @returns {Promise} result + */ + resolvePromise(context, path, request, resolveContext) { + // `|| {}` ensures the 5-arg fast path inside `resolve()` is reached + // even when the caller doesn't pass a resolveContext. + return _withResolvers( + this, + /** @type {Context} */ (context), + /** @type {string} */ (path), + /** @type {string} */ (request), + /** @type {ResolveContext} */ (resolveContext) || {}, + ); + } + + /** + * @overload + * @param {string} path context path + * @param {string} request request string + * @param {ResolveCallback} callback callback function + * @returns {void} + */ + /** + * @overload + * @param {string} path context path + * @param {string} request request string + * @param {ResolveContext} resolveContext resolve context + * @param {ResolveCallback} callback callback function + * @returns {void} + */ + /** + * @overload + * @param {Context} context context information object + * @param {string} path context path + * @param {string} request request string + * @param {ResolveCallback} callback callback function + * @returns {void} + */ + /** + * @overload + * @param {Context} context context information object + * @param {string} path context path + * @param {string} request request string + * @param {ResolveContext} resolveContext resolve context + * @param {ResolveCallback} callback callback function + * @returns {void} + */ + /** + * @param {Context | string} context context information object or context path when no context is provided + * @param {string | ResolveContext | ResolveCallback=} path context path or (when no context) resolve context or callback + * @param {string | ResolveContext | ResolveCallback=} request request string or (when no context) resolve context or callback + * @param {ResolveContext | ResolveCallback=} resolveContext resolve context or callback when no resolve context is provided + * @param {ResolveCallback=} callback callback function + * @returns {void} + */ + resolve(context, path, request, resolveContext, callback) { + // Fast path for the common 5-arg call (`resolver.resolve(ctx, from, + // req, resolveCtx, cb)`) — every call from `resolveSync` / + // `resolvePromise` plus the vast majority of direct API callers. + // PR #536 added runtime overload-shifting to support optional + // `context` / `resolveContext`; that adds several `typeof` checks + // per resolve which show up as a measurable instruction-count + // regression on every benchmark that calls into this method. Skip + // the shifting entirely when all 5 args are already well-typed. + if ( + typeof callback === "function" && + typeof context === "object" && + context !== null && + typeof resolveContext === "object" && + resolveContext !== null + ) { + // proceed straight to per-arg validation below + } else { + // Slow path: shift positional args based on what was supplied. + // Shift when context is omitted (first positional arg is the path string). + if (typeof context === "string") { + // Keep an already-supplied callback (resolveSync / resolvePromise + // always pass one in the 5th position). + if (typeof callback !== "function") { + callback = /** @type {ResolveCallback | undefined} */ ( + resolveContext + ); + } + resolveContext = + /** @type {ResolveContext | ResolveCallback | undefined} */ (request); + request = /** @type {string} */ (path); + path = context; + context = {}; + } + // 4-arg form: the resolveContext slot holds the callback. + if (typeof resolveContext === "function") { + callback = resolveContext; + resolveContext = {}; + } else if (!resolveContext || typeof resolveContext !== "object") { + resolveContext = {}; + } + if (typeof callback !== "function") { + throw new TypeError("callback argument is not a function"); + } + if (!context || typeof context !== "object") { + context = {}; + } + } + if (typeof path !== "string") { + return callback(new Error("path argument is not a string")); + } + if (typeof request !== "string") { + return callback(new Error("request argument is not a string")); + } + + /** @type {ResolveRequest} */ + const obj = { + context, + path, + request, + }; + + /** @type {ResolveContextYield | undefined} */ + let yield_; + let yieldCalled = false; + /** @type {ResolveContextYield | undefined} */ + let finishYield; + if (typeof resolveContext.yield === "function") { + const old = resolveContext.yield; + /** + * @param {ResolveRequest} obj object + */ + yield_ = (obj) => { + old(obj); + yieldCalled = true; + }; + /** + * @param {ResolveRequest} result result + * @returns {void} + */ + finishYield = (result) => { + if (result) { + /** @type {ResolveContextYield} */ (yield_)(result); + } + callback(null); + }; + } + + const message = `resolve '${request}' in '${path}'`; + + /** + * @param {ResolveRequest} result result + * @returns {void} + */ + const finishResolved = (result) => + callback( + null, + result.path === false + ? false + : `${result.path.replace(/#/g, "\0#")}${ + result.query ? result.query.replace(/#/g, "\0#") : "" + }${result.fragment || ""}`, + result, + ); + + /** + * @param {string[]} log logs + * @returns {void} + */ + const finishWithoutResolve = (log) => { + /** + * @type {ErrorWithDetail} + */ + const error = new Error(`Can't ${message}`); + error.details = log.join("\n"); + this.hooks.noResolve.call(obj, error); + return callback(error); + }; + + if (resolveContext.log) { + // We need log anyway to capture it in case of an error + const parentLog = resolveContext.log; + /** @type {string[]} */ + const log = []; + return this.doResolve( + this.hooks.resolve, + obj, + message, + { + log: (msg) => { + parentLog(msg); + log.push(msg); + }, + yield: yield_, + fileDependencies: resolveContext.fileDependencies, + contextDependencies: resolveContext.contextDependencies, + missingDependencies: resolveContext.missingDependencies, + stack: resolveContext.stack, + }, + (err, result) => { + if (err) return callback(err); + + if (yieldCalled || (result && yield_)) { + return /** @type {ResolveContextYield} */ (finishYield)( + /** @type {ResolveRequest} */ (result), + ); + } + + if (result) return finishResolved(result); + + return finishWithoutResolve(log); + }, + ); + } + // Try to resolve assuming there is no error + // We don't log stuff in this case + return this.doResolve( + this.hooks.resolve, + obj, + message, + { + log: undefined, + yield: yield_, + fileDependencies: resolveContext.fileDependencies, + contextDependencies: resolveContext.contextDependencies, + missingDependencies: resolveContext.missingDependencies, + stack: resolveContext.stack, + }, + (err, result) => { + if (err) return callback(err); + + if (yieldCalled || (result && yield_)) { + return /** @type {ResolveContextYield} */ (finishYield)( + /** @type {ResolveRequest} */ (result), + ); + } + + if (result) return finishResolved(result); + + // log is missing for the error details + // so we redo the resolving for the log info + // this is more expensive to the success case + // is assumed by default + /** @type {string[]} */ + const log = []; + + return this.doResolve( + this.hooks.resolve, + obj, + message, + { + log: (msg) => log.push(msg), + yield: yield_, + stack: resolveContext.stack, + }, + (err, result) => { + if (err) return callback(err); + + // In a case that there is a race condition and yield will be called + if (yieldCalled || (result && yield_)) { + return /** @type {ResolveContextYield} */ (finishYield)( + /** @type {ResolveRequest} */ (result), + ); + } + + return finishWithoutResolve(log); + }, + ); + }, + ); + } + + /** + * @param {ResolveStepHook} hook hook + * @param {ResolveRequest} request request + * @param {null | string} message string + * @param {ResolveContext} resolveContext resolver context + * @param {(err?: null | Error, result?: ResolveRequest) => void} callback callback + * @returns {void} + */ + doResolve(hook, request, message, resolveContext, callback) { + const rawStack = resolveContext.stack; + /** @type {StackEntry | undefined} */ + let parent; + /** @type {Set | undefined} */ + let preSeeded; + if (rawStack instanceof StackEntry) { + parent = rawStack; + preSeeded = rawStack.preSeeded; + } else if (rawStack) { + // TODO in the next major remove `Set` support in favor of `StackEntry` + // Legacy `stack: new Set()` API: don't link the Set into + // the parent chain (it would pollute iteration and field-compare + // walks). Carry the strings on the StackEntry itself instead so + // deeper `doResolve` calls keep seeing pre-seeded entries. + preSeeded = /** @type {Set} */ (rawStack); + } + // Prepend a new linked-list node. O(1) allocation, no Set clone. + const stackEntry = Resolver.createStackEntry( + hook, + request, + parent, + preSeeded, + ); + + // When `parent` exists, its `has()` already consults `preSeeded` + // (inherited from the same chain), so we only need the direct Set + // lookup on the very first `doResolve` call (no parent yet). + if ( + parent !== undefined + ? parent.has(stackEntry) + : preSeeded !== undefined && preSeeded.has(stackEntry.toString()) + ) { + /** + * Prevent recursion + * @type {Error & { recursion?: boolean }} + */ + const recursionError = new Error( + `Recursion in resolving\nStack:\n ${[...stackEntry] + .map((entry) => entry.toString()) + .join("\n ")}`, + ); + recursionError.recursion = true; + if (resolveContext.log) { + resolveContext.log("abort resolving because of recursion"); + } + return callback(recursionError); + } + this.hooks.resolveStep.call(hook, request); + + if (hook.isUsed()) { + // Pass `resolveContext` and the override fields (stack, message) + // directly instead of constructing an intermediate options-object + // literal — `createInnerContext` reads from the parent and + // allocates exactly one inner context per step. See the comment + // on `createInnerContext` itself for the allocation rationale. + const innerContext = createInnerContext( + resolveContext, + stackEntry, + message, + ); + return hook.callAsync(request, innerContext, (err, result) => { + if (err) return callback(err); + if (result) return callback(null, result); + callback(); + }); + } + callback(); + } + + /** + * @param {string} identifier identifier + * @returns {ParsedIdentifier} parsed identifier + */ + parse(identifier) { + /** @type {ParsedIdentifier} */ + const part = { + request: "", + query: "", + fragment: "", + module: false, + directory: false, + file: false, + internal: false, + }; + + const parsedIdentifier = parseIdentifier(identifier); + + if (!parsedIdentifier) return part; + + [part.request, part.query, part.fragment] = parsedIdentifier; + + if (part.request.length > 0) { + part.internal = this.isPrivate(identifier); + part.module = this.isModule(part.request); + part.directory = this.isDirectory(part.request); + if (part.directory) { + part.request = part.request.slice(0, -1); + } + } + + return part; + } + + /** + * @param {string} path path + * @returns {boolean} true, if the path is a module + */ + isModule(path) { + return getType(path) === PathType.Normal; + } + + /** + * @param {string} path path + * @returns {boolean} true, if the path is private + */ + isPrivate(path) { + return getType(path) === PathType.Internal; + } + + /** + * @param {string} path a path + * @returns {boolean} true, if the path is a directory path + */ + isDirectory(path) { + return path.endsWith("/"); + } + + /** + * @param {string} path path + * @returns {string} normalized path + */ + normalize(path) { + return normalize(path); + } + + /** + * @param {string} path path + * @param {string} request request + * @returns {string} joined path + */ + join(path, request) { + return this.pathCache.join.fn(path, request); + } + + /** + * @param {string} path path + * @returns {string} parent directory + */ + dirname(path) { + return this.pathCache.dirname.fn(path); + } + + /** + * @param {string} path the path to evaluate + * @param {string=} suffix an extension to remove from the result + * @returns {string} the last portion of a path + */ + basename(path, suffix) { + return this.pathCache.basename.fn(path, suffix); + } +} + +module.exports = Resolver; diff --git a/node_modules/enhanced-resolve/lib/ResolverFactory.js b/node_modules/enhanced-resolve/lib/ResolverFactory.js new file mode 100644 index 00000000..2de82641 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/ResolverFactory.js @@ -0,0 +1,790 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +// eslint-disable-next-line n/prefer-global/process +const { versions } = require("process"); + +const AliasFieldPlugin = require("./AliasFieldPlugin"); +const AliasPlugin = require("./AliasPlugin"); +const AppendPlugin = require("./AppendPlugin"); +const ConditionalPlugin = require("./ConditionalPlugin"); +const DescriptionFilePlugin = require("./DescriptionFilePlugin"); +const DirectoryExistsPlugin = require("./DirectoryExistsPlugin"); +const ExportsFieldPlugin = require("./ExportsFieldPlugin"); +const ExtensionAliasPlugin = require("./ExtensionAliasPlugin"); +const FileExistsPlugin = require("./FileExistsPlugin"); +const ImportsFieldPlugin = require("./ImportsFieldPlugin"); +const JoinRequestPartPlugin = require("./JoinRequestPartPlugin"); +const JoinRequestPlugin = require("./JoinRequestPlugin"); +const MainFieldPlugin = require("./MainFieldPlugin"); +const ModulesInHierarchicalDirectoriesPlugin = require("./ModulesInHierarchicalDirectoriesPlugin"); +const ModulesInRootPlugin = require("./ModulesInRootPlugin"); +const NextPlugin = require("./NextPlugin"); +const ParsePlugin = require("./ParsePlugin"); +const PnpPlugin = require("./PnpPlugin"); +const Resolver = require("./Resolver"); +const RestrictionsPlugin = require("./RestrictionsPlugin"); +const ResultPlugin = require("./ResultPlugin"); +const RootsPlugin = require("./RootsPlugin"); +const SelfReferencePlugin = require("./SelfReferencePlugin"); +const SymlinkPlugin = require("./SymlinkPlugin"); +const SyncAsyncFileSystemDecorator = require("./SyncAsyncFileSystemDecorator"); +const TryNextPlugin = require("./TryNextPlugin"); +const TsconfigPathsPlugin = require("./TsconfigPathsPlugin"); +const UnsafeCachePlugin = require("./UnsafeCachePlugin"); +const UseFilePlugin = require("./UseFilePlugin"); +const { PathType, getType } = require("./util/path"); + +/** @typedef {import("./AliasPlugin").AliasOption} AliasOptionEntry */ +/** @typedef {import("./ExtensionAliasPlugin").ExtensionAliasOption} ExtensionAliasOption */ +/** @typedef {import("./PnpPlugin").PnpApiImpl} PnpApi */ +/** @typedef {import("./Resolver").EnsuredHooks} EnsuredHooks */ +/** @typedef {import("./Resolver").FileSystem} FileSystem */ +/** @typedef {import("./Resolver").KnownHooks} KnownHooks */ +/** @typedef {import("./Resolver").ResolveRequest} ResolveRequest */ +/** @typedef {import("./Resolver").SyncFileSystem} SyncFileSystem */ +/** @typedef {import("./UnsafeCachePlugin").Cache} Cache */ + +/** @typedef {string | string[] | false} AliasOptionNewRequest */ +/** @typedef {{ [k: string]: AliasOptionNewRequest }} AliasOptions */ +/** @typedef {{ [k: string]: string | string[] }} ExtensionAliasOptions */ +/** @typedef {false | 0 | "" | null | undefined} Falsy */ +/** @typedef {{ apply: (resolver: Resolver) => void } | ((this: Resolver, resolver: Resolver) => void) | Falsy} Plugin */ + +/** + * @typedef {object} TsconfigOptions + * @property {string=} configFile A relative path to the tsconfig file based on cwd, or an absolute path of tsconfig file + * @property {string[] | "auto"=} references References to other tsconfig files. 'auto' inherits from TypeScript config, or an array of relative/absolute paths + * @property {string=} baseUrl Override baseUrl from tsconfig.json. If provided, this value will be used instead of the baseUrl in the tsconfig file + */ + +/** + * @typedef {object} UserResolveOptions + * @property {(AliasOptions | AliasOptionEntry[])=} alias A list of module alias configurations or an object which maps key to value + * @property {(AliasOptions | AliasOptionEntry[])=} fallback A list of module alias configurations or an object which maps key to value, applied only after modules option + * @property {ExtensionAliasOptions=} extensionAlias An object which maps extension to extension aliases + * @property {boolean=} extensionAliasForExports Also apply `extensionAlias` to paths resolved through the package.json `exports` field. Off by default (Node.js-aligned); when enabled, matches TypeScript's behavior for packages that ship TS sources alongside compiled JS. + * @property {(string | string[])[]=} aliasFields A list of alias fields in description files + * @property {((predicate: ResolveRequest) => boolean)=} cachePredicate A function which decides whether a request should be cached or not. An object is passed with at least `path` and `request` properties. + * @property {boolean=} cacheWithContext Whether or not the unsafeCache should include request context as part of the cache key. + * @property {string[]=} descriptionFiles A list of description files to read from + * @property {string[]=} conditionNames A list of exports field condition names. + * @property {boolean=} enforceExtension Enforce that a extension from extensions must be used + * @property {(string | string[])[]=} exportsFields A list of exports fields in description files + * @property {(string | string[])[]=} importsFields A list of imports fields in description files + * @property {string[]=} extensions A list of extensions which should be tried for files + * @property {FileSystem} fileSystem The file system which should be used + * @property {(Cache | boolean)=} unsafeCache Use this cache object to unsafely cache the successful requests + * @property {boolean=} symlinks Resolve symlinks to their symlinked location + * @property {Resolver=} resolver A prepared Resolver to which the plugins are attached + * @property {string[] | string=} modules A list of directories to resolve modules from, can be absolute path or folder name + * @property {(string | string[] | { name: string | string[], forceRelative: boolean })[]=} mainFields A list of main fields in description files + * @property {string[]=} mainFiles A list of main files in directories + * @property {Plugin[]=} plugins A list of additional resolve plugins which should be applied + * @property {PnpApi | null=} pnpApi A PnP API that should be used - null is "never", undefined is "auto" + * @property {string[]=} roots A list of root paths + * @property {boolean=} fullySpecified The request is already fully specified and no extensions or directories are resolved for it + * @property {boolean=} resolveToContext Resolve to a context instead of a file + * @property {(string | RegExp)[]=} restrictions A list of resolve restrictions + * @property {boolean=} useSyncFileSystemCalls Use only the sync constraints of the file system calls + * @property {boolean=} preferRelative Prefer to resolve module requests as relative requests before falling back to modules + * @property {boolean=} preferAbsolute Prefer to resolve server-relative urls as absolute paths before falling back to resolve in roots + * @property {string | boolean | TsconfigOptions=} tsconfig TypeScript config file path or config object with configFile and references + */ + +/** + * @typedef {object} ResolveOptions + * @property {AliasOptionEntry[]} alias alias + * @property {AliasOptionEntry[]} fallback fallback + * @property {Set} aliasFields alias fields + * @property {ExtensionAliasOption[]} extensionAlias extension alias + * @property {boolean} extensionAliasForExports apply extension alias to exports field targets + * @property {(predicate: ResolveRequest) => boolean} cachePredicate cache predicate + * @property {boolean} cacheWithContext cache with context + * @property {Set} conditionNames A list of exports field condition names. + * @property {string[]} descriptionFiles description files + * @property {boolean} enforceExtension enforce extension + * @property {Set} exportsFields exports fields + * @property {Set} importsFields imports fields + * @property {Set} extensions extensions + * @property {FileSystem} fileSystem fileSystem + * @property {Cache | false} unsafeCache unsafe cache + * @property {boolean} symlinks symlinks + * @property {Resolver=} resolver resolver + * @property {(string | string[])[]} modules modules + * @property {{ name: string[], forceRelative: boolean }[]} mainFields main fields + * @property {Set} mainFiles main files + * @property {Plugin[]} plugins plugins + * @property {PnpApi | null} pnpApi pnp API + * @property {Set} roots roots + * @property {boolean} fullySpecified fully specified + * @property {boolean} resolveToContext resolve to context + * @property {Set} restrictions restrictions + * @property {boolean} preferRelative prefer relative + * @property {boolean} preferAbsolute prefer absolute + * @property {string | boolean | TsconfigOptions} tsconfig tsconfig file path or config object + */ + +/** + * @param {PnpApi | null=} option option + * @returns {PnpApi | null} processed option + */ +function processPnpApiOption(option) { + if ( + option === undefined && + /** @type {NodeJS.ProcessVersions & { pnp: string }} */ versions.pnp + ) { + const _findPnpApi = + /** @type {(issuer: string) => PnpApi | null}} */ + ( + // @ts-expect-error maybe nothing + require("module").findPnpApi + ); + + if (_findPnpApi) { + return { + resolveToUnqualified(request, issuer, opts) { + const pnpapi = _findPnpApi(issuer); + + if (!pnpapi) { + // Issuer isn't managed by PnP + return null; + } + + return pnpapi.resolveToUnqualified(request, issuer, opts); + }, + }; + } + } + + return option || null; +} + +/** + * @param {AliasOptions | AliasOptionEntry[] | undefined} alias alias + * @returns {AliasOptionEntry[]} normalized aliases + */ +function normalizeAlias(alias) { + return typeof alias === "object" && !Array.isArray(alias) && alias !== null + ? Object.keys(alias).map((key) => { + /** @type {AliasOptionEntry} */ + const obj = { name: key, onlyModule: false, alias: alias[key] }; + + if (/\$$/.test(key)) { + obj.onlyModule = true; + obj.name = key.slice(0, -1); + } + + return obj; + }) + : /** @type {AliasOptionEntry[]} */ (alias) || []; +} + +/** + * Merging filtered elements + * @param {string[]} array source array + * @param {(item: string) => boolean} filter predicate + * @returns {(string | string[])[]} merge result + */ +function mergeFilteredToArray(array, filter) { + /** @type {(string | string[])[]} */ + const result = []; + const set = new Set(array); + + for (const item of set) { + if (filter(item)) { + const lastElement = + result.length > 0 ? result[result.length - 1] : undefined; + if (Array.isArray(lastElement)) { + lastElement.push(item); + } else { + result.push([item]); + } + } else { + result.push(item); + } + } + + return result; +} + +/** + * @param {UserResolveOptions} options input options + * @returns {ResolveOptions} output options + */ +function createOptions(options) { + const mainFieldsSet = new Set(options.mainFields || ["main"]); + /** @type {ResolveOptions["mainFields"]} */ + const mainFields = []; + + for (const item of mainFieldsSet) { + if (typeof item === "string") { + mainFields.push({ + name: [item], + forceRelative: true, + }); + } else if (Array.isArray(item)) { + mainFields.push({ + name: item, + forceRelative: true, + }); + } else { + mainFields.push({ + name: Array.isArray(item.name) ? item.name : [item.name], + forceRelative: item.forceRelative, + }); + } + } + + return { + alias: normalizeAlias(options.alias), + fallback: normalizeAlias(options.fallback), + aliasFields: new Set(options.aliasFields), + cachePredicate: + options.cachePredicate || + function trueFn() { + return true; + }, + cacheWithContext: + typeof options.cacheWithContext !== "undefined" + ? options.cacheWithContext + : true, + exportsFields: new Set(options.exportsFields || ["exports"]), + importsFields: new Set(options.importsFields || ["imports"]), + conditionNames: new Set(options.conditionNames), + descriptionFiles: [ + ...new Set(options.descriptionFiles || ["package.json"]), + ], + enforceExtension: + options.enforceExtension === undefined + ? Boolean(options.extensions && options.extensions.includes("")) + : options.enforceExtension, + extensions: new Set(options.extensions || [".js", ".json", ".node"]), + extensionAlias: options.extensionAlias + ? Object.keys(options.extensionAlias).map((k) => ({ + extension: k, + alias: /** @type {ExtensionAliasOptions} */ (options.extensionAlias)[ + k + ], + })) + : [], + extensionAliasForExports: options.extensionAliasForExports || false, + fileSystem: options.useSyncFileSystemCalls + ? new SyncAsyncFileSystemDecorator( + /** @type {SyncFileSystem} */ ( + /** @type {unknown} */ (options.fileSystem) + ), + ) + : options.fileSystem, + unsafeCache: + options.unsafeCache && typeof options.unsafeCache !== "object" + ? /** @type {Cache} */ ({}) + : options.unsafeCache || false, + symlinks: typeof options.symlinks !== "undefined" ? options.symlinks : true, + resolver: options.resolver, + modules: mergeFilteredToArray( + Array.isArray(options.modules) + ? options.modules + : options.modules + ? [options.modules] + : ["node_modules"], + (item) => { + const type = getType(item); + return type === PathType.Normal || type === PathType.Relative; + }, + ), + mainFields, + mainFiles: new Set(options.mainFiles || ["index"]), + plugins: options.plugins || [], + pnpApi: processPnpApiOption(options.pnpApi), + roots: new Set(options.roots || undefined), + fullySpecified: options.fullySpecified || false, + resolveToContext: options.resolveToContext || false, + preferRelative: options.preferRelative || false, + preferAbsolute: options.preferAbsolute || false, + restrictions: new Set(options.restrictions), + tsconfig: + typeof options.tsconfig === "undefined" ? false : options.tsconfig, + }; +} + +/** + * @param {UserResolveOptions} options resolve options + * @returns {Resolver} created resolver + */ +module.exports.createResolver = function createResolver(options) { + const normalizedOptions = createOptions(options); + + const { + alias, + fallback, + aliasFields, + extensionAliasForExports, + cachePredicate, + cacheWithContext, + conditionNames, + descriptionFiles, + enforceExtension, + exportsFields, + extensionAlias, + importsFields, + extensions, + fileSystem, + fullySpecified, + mainFields, + mainFiles, + modules, + plugins: userPlugins, + pnpApi, + resolveToContext, + preferRelative, + preferAbsolute, + symlinks, + unsafeCache, + resolver: customResolver, + restrictions, + roots, + tsconfig, + } = normalizedOptions; + + const plugins = [...userPlugins]; + + const resolver = + customResolver || new Resolver(fileSystem, normalizedOptions); + + // // pipeline //// + + resolver.ensureHook("resolve"); + resolver.ensureHook("internalResolve"); + resolver.ensureHook("newInternalResolve"); + resolver.ensureHook("importsResolve"); + resolver.ensureHook("parsedResolve"); + resolver.ensureHook("describedResolve"); + resolver.ensureHook("rawResolve"); + resolver.ensureHook("normalResolve"); + resolver.ensureHook("internal"); + resolver.ensureHook("rawModule"); + resolver.ensureHook("alternateRawModule"); + resolver.ensureHook("module"); + resolver.ensureHook("resolveAsModule"); + resolver.ensureHook("undescribedResolveInPackage"); + resolver.ensureHook("resolveInPackage"); + resolver.ensureHook("resolveInExistingDirectory"); + resolver.ensureHook("importsFieldRelative"); + if (extensionAliasForExports) { + resolver.ensureHook("exportsFieldRelative"); + } + resolver.ensureHook("relative"); + resolver.ensureHook("describedRelative"); + resolver.ensureHook("directory"); + resolver.ensureHook("undescribedExistingDirectory"); + resolver.ensureHook("existingDirectory"); + resolver.ensureHook("undescribedRawFile"); + resolver.ensureHook("rawFile"); + resolver.ensureHook("file"); + resolver.ensureHook("finalFile"); + resolver.ensureHook("existingFile"); + resolver.ensureHook("resolved"); + + // TODO remove in next major + // cspell:word Interal + // Backward-compat + // @ts-expect-error + resolver.hooks.newInteralResolve = resolver.hooks.newInternalResolve; + + // resolve + for (const { source, resolveOptions } of [ + { source: "resolve", resolveOptions: { fullySpecified } }, + { source: "internal-resolve", resolveOptions: { fullySpecified: false } }, + // Entry point for non-relative targets from the imports field. + // Sets internal: false to prevent re-entering imports resolution, + // aligning with the Node.js ESM spec where PACKAGE_IMPORTS_RESOLVE + // does not recursively resolve # specifiers. + // https://nodejs.org/api/esm.html#resolution-algorithm-specification + { + source: "imports-resolve", + resolveOptions: { fullySpecified: false, internal: false }, + }, + ]) { + plugins.push(new ParsePlugin(source, resolveOptions, "parsed-resolve")); + } + + // parsed-resolve + plugins.push( + new DescriptionFilePlugin( + "parsed-resolve", + descriptionFiles, + false, + "described-resolve", + ), + ); + plugins.push(new NextPlugin("after-parsed-resolve", "described-resolve")); + + // described-resolve + if (unsafeCache) { + plugins.push( + new UnsafeCachePlugin( + "described-resolve", + cachePredicate, + /** @type {import("./UnsafeCachePlugin").Cache} */ (unsafeCache), + cacheWithContext, + "raw-resolve", + ), + ); + } else { + plugins.push(new NextPlugin("described-resolve", "raw-resolve")); + } + if (fallback.length > 0) { + plugins.push( + new AliasPlugin("described-resolve", fallback, "internal-resolve"), + ); + } + // raw-resolve + if (alias.length > 0) { + plugins.push(new AliasPlugin("raw-resolve", alias, "internal-resolve")); + } + if (tsconfig) { + plugins.push(new TsconfigPathsPlugin(tsconfig)); + } + for (const item of aliasFields) { + plugins.push(new AliasFieldPlugin("raw-resolve", item, "internal-resolve")); + } + for (const item of extensionAlias) { + plugins.push( + new ExtensionAliasPlugin("raw-resolve", item, "normal-resolve"), + ); + } + plugins.push(new NextPlugin("raw-resolve", "normal-resolve")); + + // normal-resolve + if (preferRelative) { + plugins.push(new JoinRequestPlugin("after-normal-resolve", "relative")); + } + plugins.push( + new ConditionalPlugin( + "after-normal-resolve", + { module: true }, + "resolve as module", + false, + "raw-module", + ), + ); + plugins.push( + new ConditionalPlugin( + "after-normal-resolve", + { internal: true }, + "resolve as internal import", + false, + "internal", + ), + ); + if (preferAbsolute) { + plugins.push(new JoinRequestPlugin("after-normal-resolve", "relative")); + } + if (roots.size > 0) { + plugins.push(new RootsPlugin("after-normal-resolve", roots, "relative")); + } + if (!preferRelative && !preferAbsolute) { + plugins.push(new JoinRequestPlugin("after-normal-resolve", "relative")); + } + + // internal + for (const importsField of importsFields) { + plugins.push( + new ImportsFieldPlugin( + "internal", + conditionNames, + importsField, + "imports-field-relative", + "imports-resolve", + ), + ); + } + // imports-field-relative: apply extensionAlias to paths produced by the + // imports field (TypeScript-style extension substitution for self-package + // imports like `#foo` -> `./foo.js` -> `./foo.ts`). Unlike the exports + // field, the imports field is internal to the package, so applying the + // consumer's extension aliases does not expose files the package author + // did not intend to export. See issue #413. + for (const item of extensionAlias) { + plugins.push( + new ExtensionAliasPlugin("imports-field-relative", item, "relative"), + ); + } + plugins.push(new NextPlugin("imports-field-relative", "relative")); + + // raw-module + for (const exportsField of exportsFields) { + plugins.push( + new SelfReferencePlugin("raw-module", exportsField, "resolve-as-module"), + ); + } + for (const item of modules) { + if (Array.isArray(item)) { + if (item.includes("node_modules") && pnpApi) { + plugins.push( + new ModulesInHierarchicalDirectoriesPlugin( + "raw-module", + item.filter((i) => i !== "node_modules"), + "module", + ), + ); + plugins.push( + new PnpPlugin( + "raw-module", + pnpApi, + "undescribed-resolve-in-package", + "alternate-raw-module", + ), + ); + + plugins.push( + new ModulesInHierarchicalDirectoriesPlugin( + "alternate-raw-module", + ["node_modules"], + "module", + ), + ); + } else { + plugins.push( + new ModulesInHierarchicalDirectoriesPlugin( + "raw-module", + item, + "module", + ), + ); + } + } else { + plugins.push(new ModulesInRootPlugin("raw-module", item, "module")); + } + } + + // module + plugins.push(new JoinRequestPartPlugin("module", "resolve-as-module")); + + // resolve-as-module + if (!resolveToContext) { + plugins.push( + new ConditionalPlugin( + "resolve-as-module", + { directory: false, request: "." }, + "single file module", + true, + "undescribed-raw-file", + ), + ); + } + plugins.push( + new DirectoryExistsPlugin( + "resolve-as-module", + "undescribed-resolve-in-package", + ), + ); + + // undescribed-resolve-in-package + plugins.push( + new DescriptionFilePlugin( + "undescribed-resolve-in-package", + descriptionFiles, + false, + "resolve-in-package", + ), + ); + plugins.push( + new NextPlugin( + "after-undescribed-resolve-in-package", + "resolve-in-package", + ), + ); + + // resolve-in-package + const exportsFieldTarget = extensionAliasForExports + ? "exports-field-relative" + : "relative"; + for (const exportsField of exportsFields) { + plugins.push( + new ExportsFieldPlugin( + "resolve-in-package", + conditionNames, + exportsField, + exportsFieldTarget, + ), + ); + } + plugins.push( + new NextPlugin("resolve-in-package", "resolve-in-existing-directory"), + ); + + // exports-field-relative (opt-in via `extensionAliasForExports`): + // apply `extensionAlias` to paths produced by the exports field. This is + // off by default to match Node.js (which does not substitute extensions on + // bare-module targets), and on opt-in aligns with TypeScript for packages + // that ship TS sources alongside the compiled JS they list in `exports`. + if (extensionAliasForExports) { + for (const item of extensionAlias) { + plugins.push( + new ExtensionAliasPlugin("exports-field-relative", item, "relative"), + ); + } + plugins.push(new NextPlugin("exports-field-relative", "relative")); + } + + // resolve-in-existing-directory + plugins.push( + new JoinRequestPlugin("resolve-in-existing-directory", "relative"), + ); + + // relative + plugins.push( + new DescriptionFilePlugin( + "relative", + descriptionFiles, + true, + "described-relative", + ), + ); + plugins.push(new NextPlugin("after-relative", "described-relative")); + + // described-relative + if (resolveToContext) { + plugins.push(new NextPlugin("described-relative", "directory")); + } else { + plugins.push( + new ConditionalPlugin( + "described-relative", + { directory: false }, + null, + true, + "raw-file", + ), + ); + plugins.push( + new ConditionalPlugin( + "described-relative", + { fullySpecified: false }, + "as directory", + true, + "directory", + ), + ); + } + + // directory + plugins.push( + new DirectoryExistsPlugin("directory", "undescribed-existing-directory"), + ); + + if (resolveToContext) { + // undescribed-existing-directory + plugins.push(new NextPlugin("undescribed-existing-directory", "resolved")); + } else { + // undescribed-existing-directory + plugins.push( + new DescriptionFilePlugin( + "undescribed-existing-directory", + descriptionFiles, + false, + "existing-directory", + ), + ); + for (const item of mainFiles) { + plugins.push( + new UseFilePlugin( + "undescribed-existing-directory", + item, + "undescribed-raw-file", + ), + ); + } + + // described-existing-directory + for (const item of mainFields) { + plugins.push( + new MainFieldPlugin( + "existing-directory", + item, + "resolve-in-existing-directory", + ), + ); + } + for (const item of mainFiles) { + plugins.push( + new UseFilePlugin("existing-directory", item, "undescribed-raw-file"), + ); + } + + // undescribed-raw-file + plugins.push( + new DescriptionFilePlugin( + "undescribed-raw-file", + descriptionFiles, + true, + "raw-file", + ), + ); + plugins.push(new NextPlugin("after-undescribed-raw-file", "raw-file")); + + // raw-file + plugins.push( + new ConditionalPlugin( + "raw-file", + { fullySpecified: true }, + null, + false, + "file", + ), + ); + if (!enforceExtension) { + plugins.push(new TryNextPlugin("raw-file", "no extension", "file")); + } + for (const item of extensions) { + plugins.push(new AppendPlugin("raw-file", item, "file")); + } + + // file + if (alias.length > 0) { + plugins.push(new AliasPlugin("file", alias, "internal-resolve")); + } + for (const item of aliasFields) { + plugins.push(new AliasFieldPlugin("file", item, "internal-resolve")); + } + plugins.push(new NextPlugin("file", "final-file")); + + // final-file + plugins.push(new FileExistsPlugin("final-file", "existing-file")); + + // existing-file + if (symlinks) { + plugins.push(new SymlinkPlugin("existing-file", "existing-file")); + } + plugins.push(new NextPlugin("existing-file", "resolved")); + } + + const { resolved } = + /** @type {KnownHooks & EnsuredHooks} */ + (resolver.hooks); + + // resolved + if (restrictions.size > 0) { + plugins.push(new RestrictionsPlugin(resolved, restrictions)); + } + + plugins.push(new ResultPlugin(resolved)); + + // // RESOLVER //// + + for (const plugin of plugins) { + if (typeof plugin === "function") { + /** @type {(this: Resolver, resolver: Resolver) => void} */ + (plugin).call(resolver, resolver); + } else if (plugin) { + plugin.apply(resolver); + } + } + + return resolver; +}; diff --git a/node_modules/enhanced-resolve/lib/RestrictionsPlugin.js b/node_modules/enhanced-resolve/lib/RestrictionsPlugin.js new file mode 100644 index 00000000..6faaa26b --- /dev/null +++ b/node_modules/enhanced-resolve/lib/RestrictionsPlugin.js @@ -0,0 +1,70 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Ivan Kopeykin @vankop +*/ + +"use strict"; + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */ + +const slashCode = "/".charCodeAt(0); +const backslashCode = "\\".charCodeAt(0); + +/** + * @param {string} path path + * @param {string} parent parent path + * @returns {boolean} true, if path is inside of parent + */ +const isInside = (path, parent) => { + if (!path.startsWith(parent)) return false; + if (path.length === parent.length) return true; + const charCode = path.charCodeAt(parent.length); + return charCode === slashCode || charCode === backslashCode; +}; + +module.exports = class RestrictionsPlugin { + /** + * @param {string | ResolveStepHook} source source + * @param {Set} restrictions restrictions + */ + constructor(source, restrictions) { + this.source = source; + this.restrictions = restrictions; + } + + /** + * @param {Resolver} resolver the resolver + * @returns {void} + */ + apply(resolver) { + resolver + .getHook(this.source) + .tapAsync("RestrictionsPlugin", (request, resolveContext, callback) => { + if (typeof request.path === "string") { + const { path } = request; + for (const rule of this.restrictions) { + if (typeof rule === "string") { + if (!isInside(path, rule)) { + if (resolveContext.log) { + resolveContext.log( + `${path} is not inside of the restriction ${rule}`, + ); + } + return callback(null, null); + } + } else if (!rule.test(path)) { + if (resolveContext.log) { + resolveContext.log( + `${path} doesn't match the restriction ${rule}`, + ); + } + return callback(null, null); + } + } + } + + callback(); + }); + } +}; diff --git a/node_modules/enhanced-resolve/lib/ResultPlugin.js b/node_modules/enhanced-resolve/lib/ResultPlugin.js new file mode 100644 index 00000000..57dbdddc --- /dev/null +++ b/node_modules/enhanced-resolve/lib/ResultPlugin.js @@ -0,0 +1,43 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */ + +module.exports = class ResultPlugin { + /** + * @param {ResolveStepHook} source source + */ + constructor(source) { + this.source = source; + } + + /** + * @param {Resolver} resolver the resolver + * @returns {void} + */ + apply(resolver) { + this.source.tapAsync( + "ResultPlugin", + (request, resolverContext, callback) => { + const obj = { ...request }; + if (resolverContext.log) { + resolverContext.log(`reporting result ${obj.path}`); + } + resolver.hooks.result.callAsync(obj, resolverContext, (err) => { + if (err) return callback(err); + if (typeof resolverContext.yield === "function") { + resolverContext.yield(obj); + callback(null, null); + } else { + callback(null, obj); + } + }); + }, + ); + } +}; diff --git a/node_modules/enhanced-resolve/lib/RootsPlugin.js b/node_modules/enhanced-resolve/lib/RootsPlugin.js new file mode 100644 index 00000000..539e08b6 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/RootsPlugin.js @@ -0,0 +1,69 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Ivan Kopeykin @vankop +*/ + +"use strict"; + +const forEachBail = require("./forEachBail"); + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").ResolveRequest} ResolveRequest */ +/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */ + +class RootsPlugin { + /** + * @param {string | ResolveStepHook} source source hook + * @param {Set} roots roots + * @param {string | ResolveStepHook} target target hook + */ + constructor(source, roots, target) { + this.roots = [...roots]; + this.source = source; + this.target = target; + } + + /** + * @param {Resolver} resolver the resolver + * @returns {void} + */ + apply(resolver) { + const target = resolver.ensureHook(this.target); + + resolver + .getHook(this.source) + .tapAsync("RootsPlugin", (request, resolveContext, callback) => { + const req = request.request; + if (!req) return callback(); + if (!req.startsWith("/")) return callback(); + + forEachBail( + this.roots, + /** + * @param {string} root root + * @param {(err?: null | Error, result?: null | ResolveRequest) => void} callback callback + * @returns {void} + */ + (root, callback) => { + const path = resolver.join(root, req.slice(1)); + /** @type {ResolveRequest} */ + const obj = { + ...request, + path, + relativePath: request.relativePath && path, + }; + resolver.doResolve( + target, + obj, + `root path ${root}`, + resolveContext, + callback, + ); + }, + callback, + ); + }); + } +} + +module.exports = RootsPlugin; diff --git a/node_modules/enhanced-resolve/lib/SelfReferencePlugin.js b/node_modules/enhanced-resolve/lib/SelfReferencePlugin.js new file mode 100644 index 00000000..b1ee64bc --- /dev/null +++ b/node_modules/enhanced-resolve/lib/SelfReferencePlugin.js @@ -0,0 +1,106 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +const DescriptionFileUtils = require("./DescriptionFileUtils"); + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").JsonObject} JsonObject */ +/** @typedef {import("./Resolver").ResolveRequest} ResolveRequest */ +/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */ + +const slashCode = "/".charCodeAt(0); + +// Sentinel stored in `_nameCache` when the description file either has no +// exports field (so self-reference can't apply) or no string `name`. +const NO_SELF_REF = Symbol("NoSelfRef"); + +module.exports = class SelfReferencePlugin { + /** + * @param {string | ResolveStepHook} source source + * @param {string | string[]} fieldNamePath name path + * @param {string | ResolveStepHook} target target + */ + constructor(source, fieldNamePath, target) { + this.source = source; + this.target = target; + this.fieldName = fieldNamePath; + // Self-reference needs both an exports field and a `"name"` string. + // Both are stable per description-file content, so cache the decision + // in one WeakMap: the resolved name when self-reference is possible, + // or `NO_SELF_REF` when it isn't. This skips the two per-resolve + // `DescriptionFileUtils.getField` walks for hot packages. + /** @type {WeakMap} */ + this._nameCache = new WeakMap(); + } + + /** + * @param {Resolver} resolver the resolver + * @returns {void} + */ + apply(resolver) { + const target = resolver.ensureHook(this.target); + resolver + .getHook(this.source) + .tapAsync("SelfReferencePlugin", (request, resolveContext, callback) => { + if (!request.descriptionFileData) return callback(); + + const req = request.request; + if (!req) return callback(); + + const { descriptionFileData } = request; + let name = this._nameCache.get(descriptionFileData); + if (name === undefined) { + // Feature is only enabled when an exports field is present + const exportsField = DescriptionFileUtils.getField( + descriptionFileData, + this.fieldName, + ); + if (!exportsField) { + this._nameCache.set(descriptionFileData, NO_SELF_REF); + return callback(); + } + const rawName = DescriptionFileUtils.getField( + descriptionFileData, + "name", + ); + if (typeof rawName !== "string") { + this._nameCache.set(descriptionFileData, NO_SELF_REF); + return callback(); + } + name = rawName; + this._nameCache.set(descriptionFileData, name); + } else if (name === NO_SELF_REF) { + return callback(); + } + + if ( + req.startsWith(name) && + (req.length === name.length || + req.charCodeAt(name.length) === slashCode) + ) { + const remainingRequest = `.${req.slice(name.length)}`; + /** @type {ResolveRequest} */ + const obj = { + ...request, + request: remainingRequest, + path: /** @type {string} */ (request.descriptionFileRoot), + relativePath: ".", + }; + + resolver.doResolve( + target, + obj, + "self reference", + resolveContext, + callback, + ); + } else { + return callback(); + } + }); + } +}; diff --git a/node_modules/enhanced-resolve/lib/SymlinkPlugin.js b/node_modules/enhanced-resolve/lib/SymlinkPlugin.js new file mode 100644 index 00000000..04779a62 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/SymlinkPlugin.js @@ -0,0 +1,121 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +const forEachBail = require("./forEachBail"); +const { getPathsCached } = require("./getPaths"); +const { PathType, getType } = require("./util/path"); + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").ResolveRequest} ResolveRequest */ +/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */ + +module.exports = class SymlinkPlugin { + /** + * @param {string | ResolveStepHook} source source + * @param {string | ResolveStepHook} target target + */ + constructor(source, target) { + this.source = source; + this.target = target; + } + + /** + * @param {Resolver} resolver the resolver + * @returns {void} + */ + apply(resolver) { + const target = resolver.ensureHook(this.target); + const fs = resolver.fileSystem; + resolver + .getHook(this.source) + .tapAsync("SymlinkPlugin", (request, resolveContext, callback) => { + if (request.ignoreSymlinks) return callback(); + const pathsResult = getPathsCached( + fs, + /** @type {string} */ (request.path), + ); + const { paths, segments } = pathsResult; + // `pathsResult.segments` is shared across callers via the cache. + // The only place we need to mutate is `pathSegments[idx] = result` + // when `fs.readlink` succeeds — which is rare (the vast majority + // of paths contain no symlinks, e.g. every resolve on + // `cache-predicate`'s no-symlink fixture). Defer the copy until + // we actually see a symlink so the common no-symlink path stays + // allocation-free. + /** @type {string[] | null} */ + let pathSegments = null; + + let containsSymlink = false; + let idx = -1; + forEachBail( + paths, + /** + * @param {string} path path + * @param {(err?: null | Error, result?: null | number) => void} callback callback + * @returns {void} + */ + (path, callback) => { + idx++; + if (resolveContext.fileDependencies) { + resolveContext.fileDependencies.add(path); + } + fs.readlink(path, (err, result) => { + if (!err && result) { + // First symlink seen — take our own copy now, so + // the cached `segments` array stays pristine for + // sibling resolves. + if (pathSegments === null) { + pathSegments = [...segments]; + } + pathSegments[idx] = /** @type {string} */ (result); + containsSymlink = true; + // Shortcut when absolute symlink found + const resultType = getType(result.toString()); + if ( + resultType === PathType.AbsoluteWin || + resultType === PathType.AbsolutePosix + ) { + return callback(null, idx); + } + } + callback(); + }); + }, + /** + * @param {null | Error=} err error + * @param {null | number=} idx result + * @returns {void} + */ + (err, idx) => { + if (!containsSymlink) return callback(); + // `containsSymlink === true` implies we took a copy in + // `pathSegments` already, so it's non-null. The copy is + // our own, so `slice` to trim is fine and spreading to + // "unshare" is no longer necessary. + const own = /** @type {string[]} */ (pathSegments); + const resultSegments = + typeof idx === "number" ? own.slice(0, idx + 1) : own; + const result = resultSegments.reduceRight((a, b) => + resolver.join(a, b), + ); + /** @type {ResolveRequest} */ + const obj = { + ...request, + path: result, + }; + resolver.doResolve( + target, + obj, + `resolved symlink to ${result}`, + resolveContext, + callback, + ); + }, + ); + }); + } +}; diff --git a/node_modules/enhanced-resolve/lib/SyncAsyncFileSystemDecorator.js b/node_modules/enhanced-resolve/lib/SyncAsyncFileSystemDecorator.js new file mode 100644 index 00000000..2a526d2f --- /dev/null +++ b/node_modules/enhanced-resolve/lib/SyncAsyncFileSystemDecorator.js @@ -0,0 +1,258 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +/** @typedef {import("./Resolver").FileSystem} FileSystem */ +/** @typedef {import("./Resolver").StringCallback} StringCallback */ +/** @typedef {import("./Resolver").SyncFileSystem} SyncFileSystem */ + +// eslint-disable-next-line jsdoc/reject-function-type +/** @typedef {Function} SyncOrAsyncFunction */ +// eslint-disable-next-line jsdoc/reject-any-type +/** @typedef {any} ResultOfSyncOrAsyncFunction */ + +/** + * @param {SyncFileSystem} fs file system implementation + * @constructor + */ +function SyncAsyncFileSystemDecorator(fs) { + this.fs = fs; + + this.lstat = undefined; + this.lstatSync = undefined; + const { lstatSync } = fs; + if (lstatSync) { + this.lstat = + /** @type {FileSystem["lstat"]} */ + ( + (arg, options, callback) => { + let result; + try { + result = /** @type {SyncOrAsyncFunction | undefined} */ (callback) + ? lstatSync.call(fs, arg, options) + : lstatSync.call(fs, arg); + } catch (err) { + return (callback || options)( + /** @type {NodeJS.ErrnoException | null} */ + (err), + ); + } + + (callback || options)( + null, + /** @type {ResultOfSyncOrAsyncFunction} */ + (result), + ); + } + ); + this.lstatSync = + /** @type {SyncFileSystem["lstatSync"]} */ + ((arg, options) => lstatSync.call(fs, arg, options)); + } + + this.stat = + /** @type {FileSystem["stat"]} */ + ( + (arg, options, callback) => { + let result; + try { + result = /** @type {SyncOrAsyncFunction | undefined} */ (callback) + ? fs.statSync(arg, options) + : fs.statSync(arg); + } catch (err) { + return (callback || options)( + /** @type {NodeJS.ErrnoException | null} */ + (err), + ); + } + + (callback || options)( + null, + /** @type {ResultOfSyncOrAsyncFunction} */ + (result), + ); + } + ); + this.statSync = + /** @type {SyncFileSystem["statSync"]} */ + ((arg, options) => fs.statSync(arg, options)); + + this.readdir = + /** @type {FileSystem["readdir"]} */ + ( + (arg, options, callback) => { + let result; + try { + result = /** @type {SyncOrAsyncFunction | undefined} */ (callback) + ? fs.readdirSync( + arg, + /** @type {Exclude[1], (err: NodeJS.ErrnoException | null, files: string[]) => void>} */ + (options), + ) + : fs.readdirSync(arg); + } catch (err) { + return (callback || options)( + /** @type {NodeJS.ErrnoException | null} */ + (err), + [], + ); + } + + (callback || options)( + null, + /** @type {ResultOfSyncOrAsyncFunction} */ + (result), + ); + } + ); + this.readdirSync = + /** @type {SyncFileSystem["readdirSync"]} */ + ( + (arg, options) => + fs.readdirSync( + arg, + /** @type {Parameters[1]} */ (options), + ) + ); + + this.readFile = + /** @type {FileSystem["readFile"]} */ + ( + (arg, options, callback) => { + let result; + try { + result = /** @type {SyncOrAsyncFunction | undefined} */ (callback) + ? fs.readFileSync(arg, options) + : fs.readFileSync(arg); + } catch (err) { + return (callback || options)( + /** @type {NodeJS.ErrnoException | null} */ + (err), + ); + } + + (callback || options)( + null, + /** @type {ResultOfSyncOrAsyncFunction} */ + (result), + ); + } + ); + this.readFileSync = + /** @type {SyncFileSystem["readFileSync"]} */ + ((arg, options) => fs.readFileSync(arg, options)); + + this.readlink = + /** @type {FileSystem["readlink"]} */ + ( + (arg, options, callback) => { + let result; + try { + result = /** @type {SyncOrAsyncFunction | undefined} */ (callback) + ? fs.readlinkSync( + arg, + /** @type {Exclude[1], StringCallback>} */ + (options), + ) + : fs.readlinkSync(arg); + } catch (err) { + return (callback || options)( + /** @type {NodeJS.ErrnoException | null} */ + (err), + ); + } + + (callback || options)( + null, + /** @type {ResultOfSyncOrAsyncFunction} */ + (result), + ); + } + ); + this.readlinkSync = + /** @type {SyncFileSystem["readlinkSync"]} */ + ( + (arg, options) => + fs.readlinkSync( + arg, + /** @type {Parameters[1]} */ ( + options + ), + ) + ); + + this.readJson = undefined; + this.readJsonSync = undefined; + const { readJsonSync } = fs; + if (readJsonSync) { + this.readJson = + /** @type {FileSystem["readJson"]} */ + ( + (arg, callback) => { + let result; + try { + result = readJsonSync.call(fs, arg); + } catch (err) { + return callback( + /** @type {NodeJS.ErrnoException | Error | null} */ (err), + ); + } + + callback(null, result); + } + ); + this.readJsonSync = + /** @type {SyncFileSystem["readJsonSync"]} */ + ((arg) => readJsonSync.call(fs, arg)); + } + + this.realpath = undefined; + this.realpathSync = undefined; + const { realpathSync } = fs; + if (realpathSync) { + this.realpath = + /** @type {FileSystem["realpath"]} */ + ( + (arg, options, callback) => { + let result; + try { + result = /** @type {SyncOrAsyncFunction | undefined} */ (callback) + ? realpathSync.call( + fs, + arg, + /** @type {Exclude>[1], StringCallback>} */ + (options), + ) + : realpathSync.call(fs, arg); + } catch (err) { + return (callback || options)( + /** @type {NodeJS.ErrnoException | null} */ + (err), + ); + } + + (callback || options)( + null, + /** @type {ResultOfSyncOrAsyncFunction} */ + (result), + ); + } + ); + this.realpathSync = + /** @type {SyncFileSystem["realpathSync"]} */ + ( + (arg, options) => + realpathSync.call( + fs, + arg, + /** @type {Parameters>[1]} */ + (options), + ) + ); + } +} + +module.exports = SyncAsyncFileSystemDecorator; diff --git a/node_modules/enhanced-resolve/lib/TryNextPlugin.js b/node_modules/enhanced-resolve/lib/TryNextPlugin.js new file mode 100644 index 00000000..4b467871 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/TryNextPlugin.js @@ -0,0 +1,41 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */ + +module.exports = class TryNextPlugin { + /** + * @param {string | ResolveStepHook} source source + * @param {string} message message + * @param {string | ResolveStepHook} target target + */ + constructor(source, message, target) { + this.source = source; + this.message = message; + this.target = target; + } + + /** + * @param {Resolver} resolver the resolver + * @returns {void} + */ + apply(resolver) { + const target = resolver.ensureHook(this.target); + resolver + .getHook(this.source) + .tapAsync("TryNextPlugin", (request, resolveContext, callback) => { + resolver.doResolve( + target, + request, + this.message, + resolveContext, + callback, + ); + }); + } +}; diff --git a/node_modules/enhanced-resolve/lib/TsconfigPathsPlugin.js b/node_modules/enhanced-resolve/lib/TsconfigPathsPlugin.js new file mode 100644 index 00000000..482bf6f5 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/TsconfigPathsPlugin.js @@ -0,0 +1,641 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Natsu @xiaoxiaojx +*/ + +"use strict"; + +const { aliasResolveHandler, compileAliasOptions } = require("./AliasUtils"); +const { modulesResolveHandler } = require("./ModulesUtils"); +const { readJson } = require("./util/fs"); +const { PathType: _PathType, isSubPath, normalize } = require("./util/path"); + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */ +/** @typedef {import("./AliasUtils").AliasOption} AliasOption */ +/** @typedef {import("./Resolver").ResolveRequest} ResolveRequest */ +/** @typedef {import("./Resolver").ResolveContext} ResolveContext */ +/** @typedef {import("./Resolver").FileSystem} FileSystem */ +/** @typedef {import("./Resolver").TsconfigPathsData} TsconfigPathsData */ +/** @typedef {import("./Resolver").TsconfigPathsMap} TsconfigPathsMap */ +/** @typedef {import("./ResolverFactory").TsconfigOptions} TsconfigOptions */ + +/** + * @typedef {object} TsconfigCompilerOptions + * @property {string=} baseUrl Base URL for resolving paths + * @property {{ [key: string]: string[] }=} paths TypeScript paths mapping + */ + +/** + * @typedef {object} TsconfigReference + * @property {string} path Path to the referenced project + */ + +/** + * @typedef {object} Tsconfig + * @property {TsconfigCompilerOptions=} compilerOptions Compiler options + * @property {string | string[]=} extends Extended configuration paths + * @property {TsconfigReference[]=} references Project references + */ + +const DEFAULT_CONFIG_FILE = "tsconfig.json"; + +/** + * @param {string} pattern Path pattern + * @returns {number} Length of the prefix + */ +function getPrefixLength(pattern) { + const prefixLength = pattern.indexOf("*"); + if (prefixLength === -1) { + return pattern.length; + } + return prefixLength; +} + +/** + * Sort path patterns. + * If a module name can be matched with multiple patterns then pattern with the longest prefix will be picked. + * @param {string[]} arr Array of path patterns + * @returns {string[]} Array of path patterns sorted by longest prefix + */ +function sortByLongestPrefix(arr) { + return [...arr].sort((a, b) => getPrefixLength(b) - getPrefixLength(a)); +} + +/** + * Merge two tsconfig objects + * @param {Tsconfig | null} base base config + * @param {Tsconfig | null} config config to merge + * @returns {Tsconfig} merged config + */ +function mergeTsconfigs(base, config) { + base = base || {}; + config = config || {}; + + return { + ...base, + ...config, + compilerOptions: { + .../** @type {TsconfigCompilerOptions} */ (base.compilerOptions), + .../** @type {TsconfigCompilerOptions} */ (config.compilerOptions), + }, + }; +} + +/** + * Substitute ${configDir} template variable in path + * @param {string} pathValue the path value + * @param {string} configDir the config directory + * @returns {string} the path with substituted template + */ +function substituteConfigDir(pathValue, configDir) { + return pathValue.replace(/\$\{configDir\}/g, configDir); +} + +/** + * Convert tsconfig paths to resolver options + * @param {string} configDir Config file directory + * @param {{ [key: string]: string[] }} paths TypeScript paths mapping + * @param {Resolver} resolver resolver instance + * @param {string=} baseUrl Base URL for resolving paths (relative to configDir) + * @returns {TsconfigPathsData} the resolver options + */ +function tsconfigPathsToResolveOptions(configDir, paths, resolver, baseUrl) { + // Calculate absolute base URL + const absoluteBaseUrl = !baseUrl + ? configDir + : resolver.join(configDir, baseUrl); + + /** @type {string[]} */ + const sortedKeys = sortByLongestPrefix(Object.keys(paths)); + /** @type {AliasOption[]} */ + const alias = []; + /** @type {string[]} */ + const modules = []; + + for (const pattern of sortedKeys) { + const mappings = paths[pattern]; + // Substitute ${configDir} in path mappings + const absolutePaths = mappings.map((mapping) => { + const substituted = substituteConfigDir(mapping, configDir); + return resolver.join(absoluteBaseUrl, substituted); + }); + + if (absolutePaths.length > 0) { + if (pattern === "*") { + modules.push( + ...absolutePaths + .map((dir) => { + if (/[/\\]\*$/.test(dir)) { + return dir.replace(/[/\\]\*$/, ""); + } + return ""; + }) + .filter(Boolean), + ); + } else { + alias.push({ name: pattern, alias: absolutePaths }); + } + } + } + + if (absoluteBaseUrl && !modules.includes(absoluteBaseUrl)) { + modules.push(absoluteBaseUrl); + } + + return { + alias: compileAliasOptions(resolver, alias), + modules, + }; +} + +/** + * Get the base context for the current project + * @param {string} context the context + * @param {Resolver} resolver resolver instance + * @param {string=} baseUrl base URL for resolving paths + * @returns {string} the base context + */ +function getAbsoluteBaseUrl(context, resolver, baseUrl) { + return !baseUrl ? context : resolver.join(context, baseUrl); +} + +module.exports = class TsconfigPathsPlugin { + /** + * @param {true | string | TsconfigOptions} configFileOrOptions tsconfig file path or options object + */ + constructor(configFileOrOptions) { + if ( + typeof configFileOrOptions === "object" && + configFileOrOptions !== null + ) { + // Options object format + const { configFile } = configFileOrOptions; + /** @type {boolean} */ + this.isAutoConfigFile = typeof configFile !== "string"; + /** @type {string} */ + this.configFile = this.isAutoConfigFile + ? DEFAULT_CONFIG_FILE + : /** @type {string} */ (configFile); + /** @type {string[] | "auto"} */ + if (Array.isArray(configFileOrOptions.references)) { + /** @type {TsconfigReference[] | "auto"} */ + this.references = configFileOrOptions.references.map((ref) => ({ + path: ref, + })); + } else if (configFileOrOptions.references === "auto") { + this.references = "auto"; + } else { + this.references = []; + } + /** @type {string | undefined} */ + this.baseUrl = configFileOrOptions.baseUrl; + } else { + /** @type {boolean} */ + this.isAutoConfigFile = configFileOrOptions === true; + /** @type {string} */ + this.configFile = this.isAutoConfigFile + ? DEFAULT_CONFIG_FILE + : /** @type {string} */ (configFileOrOptions); + /** @type {TsconfigReference[] | "auto"} */ + this.references = []; + /** @type {string | undefined} */ + this.baseUrl = undefined; + } + } + + /** + * @param {Resolver} resolver the resolver + * @returns {void} + */ + apply(resolver) { + const aliasTarget = resolver.ensureHook("internal-resolve"); + const moduleTarget = resolver.ensureHook("module"); + + resolver + .getHook("raw-resolve") + .tapAsync( + "TsconfigPathsPlugin", + async (request, resolveContext, callback) => { + try { + const tsconfigPathsMap = await this._getTsconfigPathsMap( + resolver, + request, + resolveContext, + ); + + if (!tsconfigPathsMap) return callback(); + + const selectedData = this._selectPathsDataForContext( + request.path, + tsconfigPathsMap, + ); + + if (!selectedData) return callback(); + + aliasResolveHandler( + resolver, + selectedData.alias, + aliasTarget, + request, + resolveContext, + callback, + ); + } catch (err) { + callback(/** @type {Error} */ (err)); + } + }, + ); + + resolver + .getHook("raw-module") + .tapAsync( + "TsconfigPathsPlugin", + async (request, resolveContext, callback) => { + try { + const tsconfigPathsMap = await this._getTsconfigPathsMap( + resolver, + request, + resolveContext, + ); + + if (!tsconfigPathsMap) return callback(); + + const selectedData = this._selectPathsDataForContext( + request.path, + tsconfigPathsMap, + ); + + if (!selectedData) return callback(); + + modulesResolveHandler( + resolver, + selectedData.modules, + moduleTarget, + request, + resolveContext, + callback, + ); + } catch (err) { + callback(/** @type {Error} */ (err)); + } + }, + ); + } + + /** + * Get TsconfigPathsMap for the request (with caching) + * @param {Resolver} resolver the resolver + * @param {ResolveRequest} request the request + * @param {ResolveContext} resolveContext the resolve context + * @returns {Promise} the tsconfig paths map or null + */ + async _getTsconfigPathsMap(resolver, request, resolveContext) { + if (typeof request.tsconfigPathsMap === "undefined") { + try { + const absTsconfigPath = resolver.join( + request.path || process.cwd(), + this.configFile, + ); + const result = await this._loadTsconfigPathsMap( + resolver, + absTsconfigPath, + ); + + request.tsconfigPathsMap = result; + } catch (err) { + request.tsconfigPathsMap = null; + if ( + this.isAutoConfigFile && + /** @type {NodeJS.ErrnoException} */ (err).code === "ENOENT" + ) { + return null; + } + throw err; + } + } + + if (!request.tsconfigPathsMap) { + return null; + } + + for (const fileDependency of request.tsconfigPathsMap.fileDependencies) { + if (resolveContext.fileDependencies) { + resolveContext.fileDependencies.add(fileDependency); + } + } + return request.tsconfigPathsMap; + } + + /** + * Load tsconfig.json and build complete TsconfigPathsMap + * Includes main project paths and all referenced projects + * @param {Resolver} resolver the resolver + * @param {string} absTsconfigPath absolute path to tsconfig.json + * @returns {Promise} the complete tsconfig paths map + */ + async _loadTsconfigPathsMap(resolver, absTsconfigPath) { + /** @type {Set} */ + const fileDependencies = new Set(); + const config = await this._loadTsconfig( + resolver, + absTsconfigPath, + fileDependencies, + ); + + const compilerOptions = config.compilerOptions || {}; + const mainContext = resolver.dirname(absTsconfigPath); + + const baseUrl = + this.baseUrl !== undefined ? this.baseUrl : compilerOptions.baseUrl; + + const main = tsconfigPathsToResolveOptions( + mainContext, + compilerOptions.paths || {}, + resolver, + baseUrl, + ); + /** @type {{ [baseUrl: string]: TsconfigPathsData }} */ + const refs = {}; + + let referencesToUse = null; + if (this.references === "auto") { + referencesToUse = config.references; + } else if (Array.isArray(this.references)) { + referencesToUse = this.references; + } + + if (Array.isArray(referencesToUse)) { + await this._loadTsconfigReferences( + resolver, + mainContext, + referencesToUse, + fileDependencies, + refs, + ); + } + + const allContexts = + /** @type {{ [context: string]: TsconfigPathsData }} */ ({ + [mainContext]: main, + ...refs, + }); + // Precompute the key list once per tsconfig load. `_selectPathsDataForContext` + // runs per resolve and otherwise would call `Object.entries(allContexts)` + // each time, allocating a fresh [key, value][] array. + const contextList = Object.keys(allContexts); + return { + main, + mainContext, + refs, + allContexts, + contextList, + fileDependencies, + }; + } + + /** + * Select the correct TsconfigPathsData based on request.path (context-aware) + * Matches the behavior of tsconfig-paths-webpack-plugin + * @param {string | false} requestPath the request path + * @param {TsconfigPathsMap} tsconfigPathsMap the tsconfig paths map + * @returns {TsconfigPathsData | null} the selected paths data + */ + _selectPathsDataForContext(requestPath, tsconfigPathsMap) { + const { main, allContexts, contextList } = tsconfigPathsMap; + if (!requestPath) { + return main; + } + let longestMatch = null; + let longestMatchLength = 0; + // Iterate over the pre-computed key list + indexed access into + // `allContexts` — the previous `Object.entries(allContexts)` form + // allocated a fresh `[key, value][]` array on every resolve. + for (let i = 0; i < contextList.length; i++) { + const context = contextList[i]; + const data = allContexts[context]; + if (context === requestPath) { + return data; + } + if ( + isSubPath(context, requestPath) && + context.length > longestMatchLength + ) { + longestMatch = data; + longestMatchLength = context.length; + } + } + if (longestMatch) { + return longestMatch; + } + return null; + } + + /** + * Load tsconfig from extends path + * @param {Resolver} resolver the resolver + * @param {string} configFilePath current config file path + * @param {string} extendedConfigValue extends value + * @param {Set} fileDependencies the file dependencies + * @param {Set} visitedConfigPaths config paths being loaded (for circular extends detection) + * @returns {Promise} the extended tsconfig + */ + async _loadTsconfigFromExtends( + resolver, + configFilePath, + extendedConfigValue, + fileDependencies, + visitedConfigPaths, + ) { + const { fileSystem } = resolver; + const currentDir = resolver.dirname(configFilePath); + + // Substitute ${configDir} in extends path + extendedConfigValue = substituteConfigDir(extendedConfigValue, currentDir); + + // Remember the original value before potentially appending .json + const originalExtendedConfigValue = extendedConfigValue; + + if ( + typeof extendedConfigValue === "string" && + !extendedConfigValue.includes(".json") + ) { + extendedConfigValue += ".json"; + } + + let extendedConfigPath = resolver.join(currentDir, extendedConfigValue); + + const exists = await new Promise((resolve) => { + fileSystem.readFile(extendedConfigPath, (err) => { + resolve(!err); + }); + }); + if (!exists) { + // Handle scoped package extends like "@scope/name" (no sub-path): + // "@scope/name" should resolve to node_modules/@scope/name/tsconfig.json, + // not node_modules/@scope/name.json + // See: test/fixtures/tsconfig-paths/extends-pkg-entry/ + if ( + typeof originalExtendedConfigValue === "string" && + originalExtendedConfigValue.startsWith("@") && + originalExtendedConfigValue.split("/").length === 2 + ) { + extendedConfigPath = resolver.join( + currentDir, + normalize( + `node_modules/${originalExtendedConfigValue}/${DEFAULT_CONFIG_FILE}`, + ), + ); + } else if (extendedConfigValue.includes("/")) { + // Handle package sub-path extends like "react/tsconfig": + // "react/tsconfig" resolves to node_modules/react/tsconfig.json + // See: test/fixtures/tsconfig-paths/extends-npm/ + extendedConfigPath = resolver.join( + currentDir, + normalize(`node_modules/${extendedConfigValue}`), + ); + } + } + + const config = await this._loadTsconfig( + resolver, + extendedConfigPath, + fileDependencies, + visitedConfigPaths, + ); + const compilerOptions = config.compilerOptions || { baseUrl: undefined }; + + if (compilerOptions.baseUrl) { + const extendedConfigDir = resolver.dirname(extendedConfigPath); + compilerOptions.baseUrl = getAbsoluteBaseUrl( + extendedConfigDir, + resolver, + compilerOptions.baseUrl, + ); + } + + delete config.references; + + return /** @type {Tsconfig} */ (config); + } + + /** + * Load referenced tsconfig projects and store in referenceMatchMap + * Simple implementation matching tsconfig-paths-webpack-plugin: + * Just load each reference and store independently + * @param {Resolver} resolver the resolver + * @param {string} context the context + * @param {TsconfigReference[]} references array of references + * @param {Set} fileDependencies the file dependencies + * @param {{ [baseUrl: string]: TsconfigPathsData }} referenceMatchMap the map to populate + * @returns {Promise} + */ + async _loadTsconfigReferences( + resolver, + context, + references, + fileDependencies, + referenceMatchMap, + ) { + await Promise.all( + references.map(async (ref) => { + const refPath = substituteConfigDir(ref.path, context); + const refConfigPath = resolver.join( + resolver.join(context, refPath), + DEFAULT_CONFIG_FILE, + ); + + try { + const refConfig = await this._loadTsconfig( + resolver, + refConfigPath, + fileDependencies, + ); + + if (refConfig.compilerOptions && refConfig.compilerOptions.paths) { + const refContext = resolver.dirname(refConfigPath); + + referenceMatchMap[refContext] = tsconfigPathsToResolveOptions( + refContext, + refConfig.compilerOptions.paths || {}, + resolver, + refConfig.compilerOptions.baseUrl, + ); + } + + if ( + this.references === "auto" && + Array.isArray(refConfig.references) + ) { + await this._loadTsconfigReferences( + resolver, + resolver.dirname(refConfigPath), + refConfig.references, + fileDependencies, + referenceMatchMap, + ); + } + } catch (_err) { + // continue + } + }), + ); + } + + /** + * Load tsconfig.json with extends support + * @param {Resolver} resolver the resolver + * @param {string} configFilePath absolute path to tsconfig.json + * @param {Set} fileDependencies the file dependencies + * @param {Set=} visitedConfigPaths config paths being loaded (for circular extends detection) + * @returns {Promise} the merged tsconfig + */ + async _loadTsconfig( + resolver, + configFilePath, + fileDependencies, + visitedConfigPaths = new Set(), + ) { + if (visitedConfigPaths.has(configFilePath)) { + return /** @type {Tsconfig} */ ({}); + } + visitedConfigPaths.add(configFilePath); + const config = await readJson(resolver.fileSystem, configFilePath, { + stripComments: true, + }); + fileDependencies.add(configFilePath); + + let result = config; + + const extendedConfig = config.extends; + if (extendedConfig) { + let base; + + if (Array.isArray(extendedConfig)) { + base = {}; + for (const extendedConfigElement of extendedConfig) { + const extendedTsconfig = await this._loadTsconfigFromExtends( + resolver, + configFilePath, + extendedConfigElement, + fileDependencies, + visitedConfigPaths, + ); + base = mergeTsconfigs(base, extendedTsconfig); + } + } else { + base = await this._loadTsconfigFromExtends( + resolver, + configFilePath, + extendedConfig, + fileDependencies, + visitedConfigPaths, + ); + } + + result = /** @type {Tsconfig} */ (mergeTsconfigs(base, config)); + } + + return result; + } +}; diff --git a/node_modules/enhanced-resolve/lib/UnsafeCachePlugin.js b/node_modules/enhanced-resolve/lib/UnsafeCachePlugin.js new file mode 100644 index 00000000..d661c1c4 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/UnsafeCachePlugin.js @@ -0,0 +1,200 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +const { isRelativeRequest } = require("./util/path"); + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").ResolveRequest} ResolveRequest */ +/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */ +/** @typedef {import("./Resolver").ResolveContextYield} ResolveContextYield */ +/** @typedef {{ [k: string]: undefined | ResolveRequest | ResolveRequest[] }} Cache */ + +/** + * @param {string} relativePath relative path from package root + * @param {string} request relative request + * @param {Resolver} resolver resolver instance + * @returns {string} normalized request with a preserved leading dot + */ +function joinRelativePreservingLeadingDot(relativePath, request, resolver) { + const normalized = resolver.join(relativePath, request); + return isRelativeRequest(normalized) ? normalized : `./${normalized}`; +} + +/** + * @param {ResolveRequest} request request + * @returns {string | false | undefined} normalized path + */ +function getCachePath(request) { + if (request.descriptionFileRoot && !request.module) { + return request.descriptionFileRoot; + } + return request.path; +} + +/** + * @param {ResolveRequest} request request + * @param {Resolver} resolver resolver instance + * @returns {string | undefined} normalized request string + */ +function getCacheRequest(request, resolver) { + const requestString = request.request; + if ( + !requestString || + !request.relativePath || + !isRelativeRequest(requestString) + ) { + return requestString; + } + return joinRelativePreservingLeadingDot( + request.relativePath, + requestString, + resolver, + ); +} + +// Cache-key separator: `\0` is safe because paths, requests, queries and +// fragments produced by `parseIdentifier` never contain a raw NUL (the +// \0-escape in identifier.js is decoded back to the original char), and the +// context, when included, is passed through `JSON.stringify`, which escapes +// any NUL to \u0000. +// const SEP = "\0"; + +/** + * Build the cache id for a request. Called on every `described-resolve` + * invocation when `unsafeCache` is on, so it's a hot path. + * + * Equivalent in meaning to the previous `JSON.stringify({ ... })` form, but + * ~3–5× faster since we avoid the object allocation and JSON serializer for + * the fields that are already plain strings. + * @param {string} type type of cache + * @param {ResolveRequest} request request + * @param {boolean} withContext cache with context? + * @param {Resolver} resolver resolver instance + * @returns {string} cache id + */ +function getCacheId(type, request, withContext, resolver) { + // TODO use it in the next major release, it is faster + // const contextPart = withContext ? JSON.stringify(request.context) : ""; + // const path = getCachePath(request); + // const cacheRequest = getCacheRequest(request, resolver); + // return ( + // type + + // SEP + + // contextPart + + // SEP + + // (path || "") + + // SEP + + // (request.query || "") + + // SEP + + // (request.fragment || "") + + // SEP + + // (cacheRequest || "") + // ); + + return JSON.stringify({ + type, + context: withContext ? request.context : "", + path: getCachePath(request), + query: request.query, + fragment: request.fragment, + request: getCacheRequest(request, resolver), + }); +} + +module.exports = class UnsafeCachePlugin { + /** + * @param {string | ResolveStepHook} source source + * @param {(request: ResolveRequest) => boolean} filterPredicate filterPredicate + * @param {Cache} cache cache + * @param {boolean} withContext withContext + * @param {string | ResolveStepHook} target target + */ + constructor(source, filterPredicate, cache, withContext, target) { + this.source = source; + this.filterPredicate = filterPredicate; + this.withContext = withContext; + this.cache = cache; + this.target = target; + } + + /** + * @param {Resolver} resolver the resolver + * @returns {void} + */ + apply(resolver) { + const target = resolver.ensureHook(this.target); + resolver + .getHook(this.source) + .tapAsync("UnsafeCachePlugin", (request, resolveContext, callback) => { + if (!this.filterPredicate(request)) { + return resolver.doResolve( + target, + request, + null, + resolveContext, + callback, + ); + } + const isYield = typeof resolveContext.yield === "function"; + const cacheId = getCacheId( + isYield ? "yield" : "default", + request, + this.withContext, + resolver, + ); + const cacheEntry = this.cache[cacheId]; + if (cacheEntry) { + if (isYield) { + const yield_ = + /** @type {ResolveContextYield} */ + (resolveContext.yield); + if (Array.isArray(cacheEntry)) { + for (const result of cacheEntry) yield_(result); + } else { + yield_(cacheEntry); + } + return callback(null, null); + } + return callback(null, /** @type {ResolveRequest} */ (cacheEntry)); + } + + /** @type {ResolveContextYield | undefined} */ + let yieldFn; + /** @type {ResolveContextYield | undefined} */ + let yield_; + /** @type {ResolveRequest[]} */ + const yieldResult = []; + if (isYield) { + yieldFn = resolveContext.yield; + yield_ = (result) => { + yieldResult.push(result); + }; + } + + resolver.doResolve( + target, + request, + null, + yield_ ? { ...resolveContext, yield: yield_ } : resolveContext, + (err, result) => { + if (err) return callback(err); + if (isYield) { + if (result) yieldResult.push(result); + for (const result of yieldResult) { + /** @type {ResolveContextYield} */ + (yieldFn)(result); + } + this.cache[cacheId] = yieldResult; + return callback(null, null); + } + if (result) return callback(null, (this.cache[cacheId] = result)); + callback(); + }, + ); + }); + } +}; diff --git a/node_modules/enhanced-resolve/lib/UseFilePlugin.js b/node_modules/enhanced-resolve/lib/UseFilePlugin.js new file mode 100644 index 00000000..f81c27f5 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/UseFilePlugin.js @@ -0,0 +1,55 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").ResolveRequest} ResolveRequest */ +/** @typedef {import("./Resolver").ResolveStepHook} ResolveStepHook */ + +module.exports = class UseFilePlugin { + /** + * @param {string | ResolveStepHook} source source + * @param {string} filename filename + * @param {string | ResolveStepHook} target target + */ + constructor(source, filename, target) { + this.source = source; + this.filename = filename; + this.target = target; + } + + /** + * @param {Resolver} resolver the resolver + * @returns {void} + */ + apply(resolver) { + const target = resolver.ensureHook(this.target); + resolver + .getHook(this.source) + .tapAsync("UseFilePlugin", (request, resolveContext, callback) => { + const filePath = resolver.join( + /** @type {string} */ (request.path), + this.filename, + ); + + /** @type {ResolveRequest} */ + const obj = { + ...request, + path: filePath, + relativePath: + request.relativePath && + resolver.join(request.relativePath, this.filename), + }; + resolver.doResolve( + target, + obj, + `using path: ${filePath}`, + resolveContext, + callback, + ); + }); + } +}; diff --git a/node_modules/enhanced-resolve/lib/createInnerContext.js b/node_modules/enhanced-resolve/lib/createInnerContext.js new file mode 100644 index 00000000..226d0984 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/createInnerContext.js @@ -0,0 +1,56 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +/** @typedef {import("./Resolver").ResolveContext} ResolveContext */ + +/** + * Build the `ResolveContext` passed into the next hook in the chain. + * + * The caller — `Resolver.doResolve` — runs on every resolve step, so we + * want to allocate as little as possible here. Previously the caller + * constructed a temporary `{ log, yield, fileDependencies, ... }` literal + * and handed it to this helper, which then copied those same fields into + * a second fresh object. That's two allocations per step for what is + * effectively a struct copy with one mutated field (`stack`) and one + * optionally-wrapped field (`log`). Taking the parent context and the + * two things we actually want to change (stack, message) as separate + * arguments lets us allocate exactly one inner context. + * @param {ResolveContext} parent parent resolve context to inherit dependency sets / yield from + * @param {ResolveContext["stack"]} stack new stack tip for the nested call + * @param {null | string} message log message prefix for this step + * @returns {ResolveContext} inner context + */ +module.exports = function createInnerContext(parent, stack, message) { + const parentLog = parent.log; + let innerLog; + if (parentLog) { + if (message) { + let messageReported = false; + /** + * @param {string} msg message + */ + innerLog = (msg) => { + if (!messageReported) { + parentLog(message); + messageReported = true; + } + parentLog(` ${msg}`); + }; + } else { + innerLog = parentLog; + } + } + + return { + log: innerLog, + yield: parent.yield, + fileDependencies: parent.fileDependencies, + contextDependencies: parent.contextDependencies, + missingDependencies: parent.missingDependencies, + stack, + }; +}; diff --git a/node_modules/enhanced-resolve/lib/forEachBail.js b/node_modules/enhanced-resolve/lib/forEachBail.js new file mode 100644 index 00000000..ec021848 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/forEachBail.js @@ -0,0 +1,50 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +/** @typedef {import("./Resolver").ResolveRequest} ResolveRequest */ + +/** + * @template T + * @template Z + * @callback Iterator + * @param {T} item item + * @param {(err?: null | Error, result?: null | Z) => void} callback callback + * @param {number} i index + * @returns {void} + */ + +/** + * @template T + * @template Z + * @param {T[]} array array + * @param {Iterator} iterator iterator + * @param {(err?: null | Error, result?: null | Z, i?: number) => void} callback callback after all items are iterated + * @returns {void} + */ +module.exports = function forEachBail(array, iterator, callback) { + if (array.length === 0) return callback(); + + let i = 0; + const next = () => { + /** @type {boolean | undefined} */ + let loop; + iterator( + array[i++], + (err, result) => { + if (err || result !== undefined || i >= array.length) { + return callback(err, result, i); + } + if (loop === false) while (next()); + loop = true; + }, + i, + ); + if (!loop) loop = false; + return loop; + }; + while (next()); +}; diff --git a/node_modules/enhanced-resolve/lib/getInnerRequest.js b/node_modules/enhanced-resolve/lib/getInnerRequest.js new file mode 100644 index 00000000..affa6c48 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/getInnerRequest.js @@ -0,0 +1,41 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +const { isRelativeRequest } = require("./util/path"); + +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").ResolveRequest} ResolveRequest */ + +/** + * @param {Resolver} resolver resolver + * @param {ResolveRequest} request string + * @returns {string} inner request + */ +module.exports = function getInnerRequest(resolver, request) { + if ( + typeof request.__innerRequest === "string" && + request.__innerRequest_request === request.request && + request.__innerRequest_relativePath === request.relativePath + ) { + return request.__innerRequest; + } + /** @type {string | undefined} */ + let innerRequest; + if (request.request) { + innerRequest = request.request; + if (request.relativePath && isRelativeRequest(innerRequest)) { + innerRequest = resolver.join(request.relativePath, innerRequest); + } + } else { + innerRequest = request.relativePath; + } + // eslint-disable-next-line camelcase + request.__innerRequest_request = request.request; + // eslint-disable-next-line camelcase + request.__innerRequest_relativePath = request.relativePath; + return (request.__innerRequest = /** @type {string} */ (innerRequest)); +}; diff --git a/node_modules/enhanced-resolve/lib/getPaths.js b/node_modules/enhanced-resolve/lib/getPaths.js new file mode 100644 index 00000000..3f1b9a3d --- /dev/null +++ b/node_modules/enhanced-resolve/lib/getPaths.js @@ -0,0 +1,82 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +/** @typedef {import("./Resolver").FileSystem} FileSystem */ +/** @typedef {{ paths: string[], segments: string[] }} GetPathsResult */ + +/** + * Walk `path` from tip to root, returning every ancestor directory (plus the + * input itself) in `paths`, and each corresponding segment name in `segments`. + * + * The return value may be shared across callers via `getPathsCached` — treat + * it as read-only. Callers that need to mutate (currently only + * `SymlinkPlugin`) should `slice()` the arrays locally before writing. + * @param {string} path path + * @returns {GetPathsResult} paths and segments + */ +function getPaths(path) { + if (path === "/") return { paths: ["/"], segments: [""] }; + const parts = path.split(/(.*?[\\/]+)/); + const paths = [path]; + const segments = [parts[parts.length - 1]]; + let part = parts[parts.length - 1]; + path = path.slice(0, Math.max(0, path.length - part.length - 1)); + for (let i = parts.length - 2; i > 2; i -= 2) { + paths.push(path); + part = parts[i]; + path = path.slice(0, Math.max(0, path.length - part.length)) || "/"; + segments.push(part.slice(0, -1)); + } + [, part] = parts; + segments.push(part); + paths.push(part); + return { + paths, + segments, + }; +} + +/** + * Per-filesystem memoization of `getPaths`. Kept in a standalone WeakMap + * rather than being hung off `resolver.pathCache` so that adding this cache + * does not change the hidden-class shape of `pathCache` — which is accessed + * on the hot path of every resolve as `resolver.pathCache.{join,dirname, + * basename}.fn(...)`. CodSpeed caught that shape change as a ~1–2% + * instruction-count regression on `cache-predicate`, so we keep pathCache + * shape-stable by owning this cache here instead. + * + * The cache lifetime is tied to the filesystem object (same invariant as + * `_pathCacheByFs` in `Resolver.js`): when the user swaps filesystems the + * entries become unreachable and get collected. + * @type {WeakMap>} + */ +const _getPathsCacheByFs = new WeakMap(); + +/** + * Memoized `getPaths`. The returned object is shared across callers — do + * not mutate the `paths` or `segments` arrays in-place; `slice()` first if + * you need a mutable copy. + * @param {FileSystem} fileSystem filesystem used as the cache namespace + * @param {string} path path + * @returns {GetPathsResult} paths and segments + */ +function getPathsCached(fileSystem, path) { + let cache = _getPathsCacheByFs.get(fileSystem); + if (cache === undefined) { + cache = new Map(); + _getPathsCacheByFs.set(fileSystem, cache); + } else { + const cached = cache.get(path); + if (cached !== undefined) return cached; + } + const result = getPaths(path); + cache.set(path, result); + return result; +} + +module.exports = getPaths; +module.exports.getPathsCached = getPathsCached; diff --git a/node_modules/enhanced-resolve/lib/index.js b/node_modules/enhanced-resolve/lib/index.js new file mode 100644 index 00000000..2efaf29f --- /dev/null +++ b/node_modules/enhanced-resolve/lib/index.js @@ -0,0 +1,310 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +const memoize = require("./util/memoize"); + +/** @typedef {import("./CachedInputFileSystem").BaseFileSystem} BaseFileSystem */ +/** @typedef {import("./PnpPlugin").PnpApiImpl} PnpApi */ +/** @typedef {import("./Resolver")} Resolver */ +/** @typedef {import("./Resolver").Context} Context */ +/** @typedef {import("./Resolver").FileSystem} FileSystem */ +/** @typedef {import("./Resolver").ResolveCallback} ResolveCallback */ +/** @typedef {import("./Resolver").ResolveContext} ResolveContext */ +/** @typedef {import("./Resolver").ResolveRequest} ResolveRequest */ +/** @typedef {import("./Resolver").SyncFileSystem} SyncFileSystem */ +/** @typedef {import("./ResolverFactory").Plugin} Plugin */ +/** @typedef {import("./ResolverFactory").UserResolveOptions} ResolveOptions */ + +/** + * @typedef {{ + * (context: Context, path: string, request: string, resolveContext: ResolveContext, callback: ResolveCallback): void, + * (context: Context, path: string, request: string, callback: ResolveCallback): void, + * (path: string, request: string, resolveContext: ResolveContext, callback: ResolveCallback): void, + * (path: string, request: string, callback: ResolveCallback): void, + * }} ResolveFunctionAsync + */ + +/** + * @typedef {{ + * (context: Context, path: string, request: string, resolveContext?: ResolveContext): string | false, + * (path: string, request: string, resolveContext?: ResolveContext): string | false, + * }} ResolveFunction + */ + +/** + * @typedef {{ + * (context: Context, path: string, request: string, resolveContext?: ResolveContext): Promise, + * (path: string, request: string, resolveContext?: ResolveContext): Promise, + * }} ResolveFunctionPromise + */ + +const getCachedFileSystem = memoize(() => require("./CachedInputFileSystem")); + +const getNodeFileSystem = memoize(() => { + const fs = require("graceful-fs"); + + const CachedInputFileSystem = getCachedFileSystem(); + + return new CachedInputFileSystem(fs, 4000); +}); +const getNodeContext = memoize(() => ({ + environments: ["node+es3+es5+process+native"], +})); + +const getResolverFactory = memoize(() => require("./ResolverFactory")); + +const getAsyncResolver = memoize(() => + getResolverFactory().createResolver({ + conditionNames: ["node"], + extensions: [".js", ".json", ".node"], + fileSystem: getNodeFileSystem(), + }), +); + +/** + * @type {ResolveFunctionAsync} + */ +const resolve = + /** + * @param {object | string} context context + * @param {string} path path + * @param {string | ResolveContext | ResolveCallback} request request + * @param {ResolveContext | ResolveCallback=} resolveContext resolve context + * @param {ResolveCallback=} callback callback + */ + (context, path, request, resolveContext, callback) => { + if (typeof context === "string") { + callback = /** @type {ResolveCallback} */ (resolveContext); + resolveContext = /** @type {ResolveContext} */ (request); + request = path; + path = context; + context = getNodeContext(); + } + if (typeof callback !== "function") { + callback = /** @type {ResolveCallback} */ (resolveContext); + } + getAsyncResolver().resolve( + context, + path, + /** @type {string} */ (request), + /** @type {ResolveContext} */ (resolveContext), + /** @type {ResolveCallback} */ (callback), + ); + }; + +const getSyncResolver = memoize(() => + getResolverFactory().createResolver({ + conditionNames: ["node"], + extensions: [".js", ".json", ".node"], + useSyncFileSystemCalls: true, + fileSystem: getNodeFileSystem(), + }), +); + +/** + * @type {ResolveFunction} + */ +const resolveSync = + /** + * @param {object | string} context context + * @param {string} path path + * @param {string | ResolveContext | undefined} request request + * @param {ResolveContext=} resolveContext resolve context + * @returns {string | false} resolved path + */ + (context, path, request, resolveContext) => { + if (typeof context === "string") { + resolveContext = /** @type {ResolveContext} */ (request); + request = path; + path = context; + context = getNodeContext(); + } + return getSyncResolver().resolveSync( + context, + path, + /** @type {string} */ (request), + /** @type {ResolveContext} */ (resolveContext), + ); + }; + +/** + * @type {ResolveFunctionPromise} + */ +const resolvePromise = + /** + * @param {object | string} context context + * @param {string} path path + * @param {string | ResolveContext | undefined} request request + * @param {ResolveContext=} resolveContext resolve context + * @returns {Promise} resolved path + */ + (context, path, request, resolveContext) => { + if (typeof context === "string") { + resolveContext = /** @type {ResolveContext} */ (request); + request = path; + path = context; + context = getNodeContext(); + } + return getAsyncResolver().resolvePromise( + context, + path, + /** @type {string} */ (request), + /** @type {ResolveContext} */ (resolveContext), + ); + }; + +/** @typedef {Omit & Partial>} ResolveOptionsOptionalFS */ + +/** + * @param {ResolveOptionsOptionalFS} options Resolver options + * @returns {ResolveFunctionAsync} Resolver function + */ +function create(options) { + const resolver = getResolverFactory().createResolver({ + fileSystem: getNodeFileSystem(), + ...options, + }); + /** + * @param {object | string} context Custom context + * @param {string} path Base path + * @param {string | ResolveContext | ResolveCallback} request String to resolve + * @param {ResolveContext | ResolveCallback=} resolveContext Resolve context + * @param {ResolveCallback=} callback Result callback + */ + return function create(context, path, request, resolveContext, callback) { + if (typeof context === "string") { + callback = /** @type {ResolveCallback} */ (resolveContext); + resolveContext = /** @type {ResolveContext} */ (request); + request = path; + path = context; + context = getNodeContext(); + } + if (typeof callback !== "function") { + callback = /** @type {ResolveCallback} */ (resolveContext); + } + resolver.resolve( + context, + path, + /** @type {string} */ (request), + /** @type {ResolveContext} */ (resolveContext), + callback, + ); + }; +} + +/** + * @param {ResolveOptionsOptionalFS} options Resolver options + * @returns {ResolveFunction} Resolver function + */ +function createSync(options) { + const resolver = getResolverFactory().createResolver({ + useSyncFileSystemCalls: true, + fileSystem: getNodeFileSystem(), + ...options, + }); + /** + * @param {object | string} context custom context + * @param {string} path base path + * @param {string | ResolveContext | undefined} request request to resolve + * @param {ResolveContext=} resolveContext Resolve context + * @returns {string | false} Resolved path or false + */ + return function createSync(context, path, request, resolveContext) { + if (typeof context === "string") { + resolveContext = /** @type {ResolveContext} */ (request); + request = path; + path = context; + context = getNodeContext(); + } + return resolver.resolveSync( + context, + path, + /** @type {string} */ (request), + /** @type {ResolveContext} */ (resolveContext), + ); + }; +} + +/** + * @param {ResolveOptionsOptionalFS} options Resolver options + * @returns {ResolveFunctionPromise} Resolver function + */ +function createPromise(options) { + const resolver = getResolverFactory().createResolver({ + fileSystem: getNodeFileSystem(), + ...options, + }); + /** + * @param {object | string} context Custom context + * @param {string} path Base path + * @param {string | ResolveContext | undefined} request String to resolve + * @param {ResolveContext=} resolveContext Resolve context + * @returns {Promise} resolved path + */ + return function createPromise(context, path, request, resolveContext) { + if (typeof context === "string") { + resolveContext = /** @type {ResolveContext} */ (request); + request = path; + path = context; + context = getNodeContext(); + } + return resolver.resolvePromise( + context, + path, + /** @type {string} */ (request), + /** @type {ResolveContext} */ (resolveContext), + ); + }; +} + +/** + * @template A + * @template B + * @param {A} obj input a + * @param {B} exports input b + * @returns {A & B} merged + */ +const mergeExports = (obj, exports) => { + const descriptors = Object.getOwnPropertyDescriptors(exports); + Object.defineProperties(obj, descriptors); + return /** @type {A & B} */ (Object.freeze(obj)); +}; + +module.exports = mergeExports(resolve, { + get sync() { + return resolveSync; + }, + get promise() { + return resolvePromise; + }, + create: mergeExports(create, { + get sync() { + return createSync; + }, + get promise() { + return createPromise; + }, + }), + get ResolverFactory() { + return getResolverFactory(); + }, + get CachedInputFileSystem() { + return getCachedFileSystem(); + }, + get CloneBasenamePlugin() { + return require("./CloneBasenamePlugin"); + }, + get LogInfoPlugin() { + return require("./LogInfoPlugin"); + }, + get TsconfigPathsPlugin() { + return require("./TsconfigPathsPlugin"); + }, + get forEachBail() { + return require("./forEachBail"); + }, +}); diff --git a/node_modules/enhanced-resolve/lib/util/entrypoints.js b/node_modules/enhanced-resolve/lib/util/entrypoints.js new file mode 100644 index 00000000..0aa001b0 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/util/entrypoints.js @@ -0,0 +1,758 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Ivan Kopeykin @vankop +*/ + +"use strict"; + +const { parseIdentifier } = require("./identifier"); + +/** @typedef {string | (string | ConditionalMapping)[]} DirectMapping */ +/** @typedef {{ [k: string]: MappingValue }} ConditionalMapping */ +/** @typedef {ConditionalMapping | DirectMapping | null} MappingValue */ +/** @typedef {Record | ConditionalMapping | DirectMapping} ExportsField */ +/** @typedef {Record} ImportsField */ + +/** + * Processing exports/imports field + * @callback FieldProcessor + * @param {string} request request + * @param {Set} conditionNames condition names + * @returns {[string[], string | null]} resolved paths with used field + */ + +/* +Example exports field: +{ + ".": "./main.js", + "./feature": { + "browser": "./feature-browser.js", + "default": "./feature.js" + } +} +Terminology: + +Enhanced-resolve name keys ("." and "./feature") as exports field keys. + +If value is string or string[], mapping is called as a direct mapping +and value called as a direct export. + +If value is key-value object, mapping is called as a conditional mapping +and value called as a conditional export. + +Key in conditional mapping is called condition name. + +Conditional mapping nested in another conditional mapping is called nested mapping. + +---------- + +Example imports field: +{ + "#a": "./main.js", + "#moment": { + "browser": "./moment/index.js", + "default": "moment" + }, + "#moment/": { + "browser": "./moment/", + "default": "moment/" + } +} +Terminology: + +Enhanced-resolve name keys ("#a" and "#moment/", "#moment") as imports field keys. + +If value is string or string[], mapping is called as a direct mapping +and value called as a direct export. + +If value is key-value object, mapping is called as a conditional mapping +and value called as a conditional export. + +Key in conditional mapping is called condition name. + +Conditional mapping nested in another conditional mapping is called nested mapping. + +*/ + +const slashCode = "/".charCodeAt(0); +const dotCode = ".".charCodeAt(0); +const hashCode = "#".charCodeAt(0); +const patternRegEx = /\*/g; + +/** @typedef {Record} RecordMapping */ + +/** + * Cached `Object.keys()` for objects whose shape does not change after the + * first observation — i.e. parsed `package.json` fields and the nested + * conditional mappings inside them. `Object.keys` allocates a fresh array + * on every call; since `findMatch` / `conditionalMapping` run on every + * bare-specifier resolve, the allocation adds up quickly. + * @type {WeakMap} + */ +const _keysCache = new WeakMap(); + +/** + * @param {RecordMapping} obj object to read keys from + * @returns {string[]} cached keys array (DO NOT mutate) + */ +function cachedKeys(obj) { + let keys = _keysCache.get(obj); + if (keys === undefined) { + keys = Object.keys(obj); + _keysCache.set(obj, keys); + } + return keys; +} + +/** + * Per-key precomputed info used by `findMatch`. Equivalent to what the + * previous implementation recomputed inline on every resolve. + * @typedef {object} FieldKeyInfo + * @property {string} key the original key + * @property {number} patternIndex position of the single "*" in the key, or -1 when absent + * @property {string} wildcardPrefix substring before "*" (empty when patternIndex === -1) + * @property {string} wildcardSuffix substring after "*" (empty when patternIndex === -1) + * @property {boolean} isLegacySubpath true when key is a legacy `./foo/`-style folder key with no "*" + * @property {boolean} isPattern true when key contains "*" + * @property {boolean} isSubpathMapping true when key ends with "/" + * @property {boolean} isValidPattern true when key has at most one "*" + */ + +/** + * Cached per-field key metadata, keyed by the exports/imports field + * object. Computed lazily on first `findMatch` call and reused forever. + * Safe because `package.json` fields are immutable JSON values. + * @type {WeakMap} + */ +const _fieldKeyInfoCache = new WeakMap(); + +/** + * @param {ExportsField | ImportsField} field field object + * @returns {FieldKeyInfo[]} precomputed per-key info + */ +function getFieldKeyInfos(field) { + const fieldKey = /** @type {RecordMapping} */ (field); + let infos = _fieldKeyInfoCache.get(fieldKey); + if (infos !== undefined) return infos; + const keys = Object.getOwnPropertyNames(field); + infos = Array.from({ length: keys.length }); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + const patternIndex = key.indexOf("*"); + const lastStar = patternIndex === -1 ? -1 : key.lastIndexOf("*"); + const keyLen = key.length; + const endsWithSlash = + keyLen > 0 && key.charCodeAt(keyLen - 1) === slashCode; + infos[i] = { + key, + patternIndex, + wildcardPrefix: patternIndex === -1 ? "" : key.slice(0, patternIndex), + wildcardSuffix: patternIndex === -1 ? "" : key.slice(patternIndex + 1), + isLegacySubpath: patternIndex === -1 && endsWithSlash, + isPattern: patternIndex !== -1, + isSubpathMapping: endsWithSlash, + isValidPattern: patternIndex === -1 || lastStar === patternIndex, + }; + } + _fieldKeyInfoCache.set(fieldKey, infos); + return infos; +} + +/** + * @param {string} a first string + * @param {string} b second string + * @returns {number} compare result + */ +function patternKeyCompare(a, b) { + const aPatternIndex = a.indexOf("*"); + const bPatternIndex = b.indexOf("*"); + const baseLenA = aPatternIndex === -1 ? a.length : aPatternIndex + 1; + const baseLenB = bPatternIndex === -1 ? b.length : bPatternIndex + 1; + + if (baseLenA > baseLenB) return -1; + if (baseLenB > baseLenA) return 1; + if (aPatternIndex === -1) return 1; + if (bPatternIndex === -1) return -1; + if (a.length > b.length) return -1; + if (b.length > a.length) return 1; + + return 0; +} + +/** @typedef {[MappingValue, string, boolean, boolean, string] | null} MatchTuple */ + +/** + * Per-field memoization of `findMatch(request, field)`. For a given field + * the result depends only on the `request` string (it does NOT depend on + * `conditionNames` — that's applied separately by `conditionalMapping`), + * so we can cache the tuple keyed by request. + * + * Typical build traffic runs the same request through the resolver + * repeatedly (same import re-resolved from different source files, module + * graph traversals that revisit a package, etc.), and every one of those + * hits walks the same key list and allocates the same tuple. Caching the + * tuple turns the second-and-onward call into a single Map lookup. + * + * Keyed on the field object via a module-level `WeakMap`, so the cache + * is freed automatically when the owning description file is GC'd. + * @type {WeakMap>} + */ +const _findMatchCache = new WeakMap(); + +/** + * @param {string} request request + * @param {ExportsField | ImportsField} field exports or import field + * @returns {MatchTuple} match result (uncached) + */ +function computeFindMatch(request, field) { + const requestLen = request.length; + const requestEndsWithSlash = + requestLen > 0 && request.charCodeAt(requestLen - 1) === slashCode; + const requestHasStar = request.includes("*"); + + if ( + !requestHasStar && + !requestEndsWithSlash && + Object.prototype.hasOwnProperty.call(field, request) + ) { + const target = /** @type {{ [k: string]: MappingValue }} */ (field)[ + request + ]; + + return [target, "", false, false, request]; + } + + /** @type {string} */ + let bestMatch = ""; + /** @type {FieldKeyInfo | null} */ + let bestMatchInfo = null; + /** @type {string | undefined} */ + let bestMatchSubpath; + + const infos = getFieldKeyInfos(field); + + for (let i = 0; i < infos.length; i++) { + const info = infos[i]; + const { key, patternIndex } = info; + + if (patternIndex !== -1) { + if ( + !info.isValidPattern || + !request.startsWith(info.wildcardPrefix) || + requestLen < key.length || + !request.endsWith(info.wildcardSuffix) || + patternKeyCompare(bestMatch, key) !== 1 + ) { + continue; + } + bestMatch = key; + bestMatchInfo = info; + bestMatchSubpath = request.slice( + patternIndex, + requestLen - info.wildcardSuffix.length, + ); + } else if ( + info.isLegacySubpath && + request.startsWith(key) && + patternKeyCompare(bestMatch, key) === 1 + ) { + bestMatch = key; + bestMatchInfo = info; + bestMatchSubpath = request.slice(key.length); + } + } + + if (bestMatch === "") return null; + + const target = + /** @type {{ [k: string]: MappingValue }} */ + (field)[bestMatch]; + + return [ + target, + /** @type {string} */ (bestMatchSubpath), + /** @type {FieldKeyInfo} */ (bestMatchInfo).isSubpathMapping, + /** @type {FieldKeyInfo} */ (bestMatchInfo).isPattern, + bestMatch, + ]; +} + +/** + * Trying to match request to field + * @param {string} request request + * @param {ExportsField | ImportsField} field exports or import field + * @returns {MatchTuple} match or null, number is negative and one less when it's a folder mapping, number is request.length + 1 for direct mappings + */ +function findMatch(request, field) { + const fieldKey = /** @type {RecordMapping} */ (field); + let perRequest = _findMatchCache.get(fieldKey); + if (perRequest !== undefined) { + const cached = perRequest.get(request); + if (cached !== undefined) return cached; + // `null` is a valid cached value (= "no match"), so a `get(...)` + // that returns undefined could either mean "not cached yet" or + // "cached null". Do the explicit `has` only in the undefined case. + if (perRequest.has(request)) return null; + } else { + perRequest = new Map(); + _findMatchCache.set(fieldKey, perRequest); + } + + const result = computeFindMatch(request, field); + perRequest.set(request, result); + return result; +} + +/** + * @param {ConditionalMapping | DirectMapping | null} mapping mapping + * @returns {boolean} is conditional mapping + */ +function isConditionalMapping(mapping) { + return ( + mapping !== null && typeof mapping === "object" && !Array.isArray(mapping) + ); +} + +/** + * Sentinel stored in the conditional-mapping cache for inputs whose walk + * returns `null` ("no condition matched"). Using a non-null marker lets the + * cache-hit path be a single `WeakMap.get()` — we distinguish + * "cached null" from "not cached yet" without a second `has` call. + */ +const NULL_RESULT = Symbol("NULL_RESULT"); + +/** + * Memoization of `conditionalMapping(mapping, conditionNames)`. The result + * depends only on the mapping object (immutable — owned by a parsed + * `package.json`) and the `conditionNames` Set (owned by the resolver's + * options and stable for its lifetime), so it is safe to cache per (mapping, + * conditionNames) pair. + * + * A conditional `exports` entry that appears inside a `directMapping` array + * (the common `"browser": [...fallback list...]` shape, plus nested + * conditions) gets walked on every resolve that traverses the parent entry. + * Without this cache each of those walks re-reads `Object.keys` on the + * mapping and re-visits every condition until one matches, even though the + * inputs are identical. + * + * Outer key is the conditional mapping itself; inner key is the condition + * Set. Both are object references, so WeakMap-of-WeakMap lets both levels + * be collected automatically when the description file or resolver go away. + * @type {WeakMap, DirectMapping | typeof NULL_RESULT>>} + */ +const _conditionalMappingCache = new WeakMap(); + +/** + * @param {ConditionalMapping} conditionalMapping_ conditional mapping + * @param {Set} conditionNames condition names + * @returns {DirectMapping | null} direct mapping if found (uncached) + */ +function computeConditionalMapping(conditionalMapping_, conditionNames) { + /** @type {[ConditionalMapping, string[], number][]} */ + const lookup = [[conditionalMapping_, cachedKeys(conditionalMapping_), 0]]; + + loop: while (lookup.length > 0) { + const [mapping, conditions, j] = lookup[lookup.length - 1]; + + for (let i = j; i < conditions.length; i++) { + const condition = conditions[i]; + + if (condition === "default") { + const innerMapping = mapping[condition]; + // is nested + if (isConditionalMapping(innerMapping)) { + const conditionalMapping = /** @type {ConditionalMapping} */ ( + innerMapping + ); + lookup[lookup.length - 1][2] = i + 1; + lookup.push([conditionalMapping, cachedKeys(conditionalMapping), 0]); + continue loop; + } + + return /** @type {DirectMapping} */ (innerMapping); + } + + if (conditionNames.has(condition)) { + const innerMapping = mapping[condition]; + // is nested + if (isConditionalMapping(innerMapping)) { + const conditionalMapping = /** @type {ConditionalMapping} */ ( + innerMapping + ); + lookup[lookup.length - 1][2] = i + 1; + lookup.push([conditionalMapping, cachedKeys(conditionalMapping), 0]); + continue loop; + } + + return /** @type {DirectMapping} */ (innerMapping); + } + } + + lookup.pop(); + } + + return null; +} + +/** + * @param {ConditionalMapping} conditionalMapping_ conditional mapping + * @param {Set} conditionNames condition names + * @returns {DirectMapping | null} direct mapping if found + */ +function conditionalMapping(conditionalMapping_, conditionNames) { + let perSet = _conditionalMappingCache.get(conditionalMapping_); + if (perSet !== undefined) { + const cached = perSet.get(conditionNames); + if (cached !== undefined) { + return cached === NULL_RESULT + ? null + : /** @type {DirectMapping} */ (cached); + } + } else { + perSet = new WeakMap(); + _conditionalMappingCache.set(conditionalMapping_, perSet); + } + const result = computeConditionalMapping(conditionalMapping_, conditionNames); + perSet.set(conditionNames, result === null ? NULL_RESULT : result); + return result; +} + +/** + * @param {string | undefined} remainingRequest remaining request when folder mapping, undefined for file mappings + * @param {boolean} isPattern true, if mapping is a pattern (contains "*") + * @param {boolean} isSubpathMapping true, for subpath mappings + * @param {string} mappingTarget direct export + * @param {(d: string, f: boolean) => void} assert asserting direct value + * @returns {string} mapping result + */ +function targetMapping( + remainingRequest, + isPattern, + isSubpathMapping, + mappingTarget, + assert, +) { + if (remainingRequest === undefined) { + assert(mappingTarget, false); + + return mappingTarget; + } + + if (isSubpathMapping) { + assert(mappingTarget, true); + + return mappingTarget + remainingRequest; + } + + assert(mappingTarget, false); + + let result = mappingTarget; + + if (isPattern) { + result = result.replace( + patternRegEx, + remainingRequest.replace(/\$/g, "$$"), + ); + } + + return result; +} + +/** + * @param {string | undefined} remainingRequest remaining request when folder mapping, undefined for file mappings + * @param {boolean} isPattern true, if mapping is a pattern (contains "*") + * @param {boolean} isSubpathMapping true, for subpath mappings + * @param {DirectMapping | null} mappingTarget direct export + * @param {Set} conditionNames condition names + * @param {(d: string, f: boolean) => void} assert asserting direct value + * @returns {string[]} mapping result + */ +function directMapping( + remainingRequest, + isPattern, + isSubpathMapping, + mappingTarget, + conditionNames, + assert, +) { + if (mappingTarget === null) return []; + + if (typeof mappingTarget === "string") { + return [ + targetMapping( + remainingRequest, + isPattern, + isSubpathMapping, + mappingTarget, + assert, + ), + ]; + } + + /** @type {string[]} */ + const targets = []; + + for (const exp of mappingTarget) { + if (typeof exp === "string") { + targets.push( + targetMapping( + remainingRequest, + isPattern, + isSubpathMapping, + exp, + assert, + ), + ); + continue; + } + + const mapping = conditionalMapping(exp, conditionNames); + if (!mapping) continue; + const innerExports = directMapping( + remainingRequest, + isPattern, + isSubpathMapping, + mapping, + conditionNames, + assert, + ); + for (const innerExport of innerExports) { + targets.push(innerExport); + } + } + + return targets; +} + +/** + * @param {ExportsField | ImportsField} field root + * @param {(s: string) => string} normalizeRequest Normalize request, for `imports` field it adds `#`, for `exports` field it adds `.` or `./` + * @param {(s: string) => string} assertRequest assertRequest + * @param {(s: string, f: boolean) => void} assertTarget assertTarget + * @returns {FieldProcessor} field processor + */ +function createFieldProcessor( + field, + normalizeRequest, + assertRequest, + assertTarget, +) { + return function fieldProcessor(request, conditionNames) { + request = assertRequest(request); + + const match = findMatch(normalizeRequest(request), field); + + if (match === null) return [[], null]; + + const [mapping, remainingRequest, isSubpathMapping, isPattern, usedField] = + match; + + /** @type {DirectMapping | null} */ + let direct = null; + + if (isConditionalMapping(mapping)) { + direct = conditionalMapping( + /** @type {ConditionalMapping} */ (mapping), + conditionNames, + ); + + // matching not found + if (direct === null) return [[], null]; + } else { + direct = /** @type {DirectMapping} */ (mapping); + } + + return [ + directMapping( + remainingRequest, + isPattern, + isSubpathMapping, + direct, + conditionNames, + assertTarget, + ), + usedField, + ]; + }; +} + +/** + * @param {string} request request + * @returns {string} updated request + */ +function assertExportsFieldRequest(request) { + if (request.charCodeAt(0) !== dotCode) { + throw new Error('Request should be relative path and start with "."'); + } + if (request.length === 1) return ""; + if (request.charCodeAt(1) !== slashCode) { + throw new Error('Request should be relative path and start with "./"'); + } + if (request.charCodeAt(request.length - 1) === slashCode) { + throw new Error("Only requesting file allowed"); + } + + return request.slice(2); +} + +/** + * @param {ExportsField} field exports field + * @returns {ExportsField} normalized exports field + */ +function buildExportsField(field) { + // handle syntax sugar, if exports field is direct mapping for "." + if (typeof field === "string" || Array.isArray(field)) { + return { ".": field }; + } + + const keys = Object.keys(field); + + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + + if (key.charCodeAt(0) !== dotCode) { + // handle syntax sugar, if exports field is conditional mapping for "." + if (i === 0) { + while (i < keys.length) { + const charCode = keys[i].charCodeAt(0); + if (charCode === dotCode || charCode === slashCode) { + throw new Error( + `Exports field key should be relative path and start with "." (key: ${JSON.stringify( + key, + )})`, + ); + } + i++; + } + + return { ".": field }; + } + + throw new Error( + `Exports field key should be relative path and start with "." (key: ${JSON.stringify( + key, + )})`, + ); + } + + if (key.length === 1) { + continue; + } + + if (key.charCodeAt(1) !== slashCode) { + throw new Error( + `Exports field key should be relative path and start with "./" (key: ${JSON.stringify( + key, + )})`, + ); + } + } + + return field; +} + +/** + * @param {string} exp export target + * @param {boolean} expectFolder is folder expected + */ +function assertExportTarget(exp, expectFolder) { + const parsedIdentifier = parseIdentifier(exp); + + if (!parsedIdentifier) { + return; + } + + const [relativePath] = parsedIdentifier; + const isFolder = + relativePath.charCodeAt(relativePath.length - 1) === slashCode; + + if (isFolder !== expectFolder) { + throw new Error( + expectFolder + ? `Expecting folder to folder mapping. ${JSON.stringify( + exp, + )} should end with "/"` + : `Expecting file to file mapping. ${JSON.stringify( + exp, + )} should not end with "/"`, + ); + } +} + +/** + * @param {ExportsField} exportsField the exports field + * @returns {FieldProcessor} process callback + */ +module.exports.processExportsField = function processExportsField( + exportsField, +) { + return createFieldProcessor( + buildExportsField(exportsField), + (request) => (request.length === 0 ? "." : `./${request}`), + assertExportsFieldRequest, + assertExportTarget, + ); +}; + +/** + * @param {string} request request + * @returns {string} updated request + */ +function assertImportsFieldRequest(request) { + if (request.charCodeAt(0) !== hashCode) { + throw new Error('Request should start with "#"'); + } + if (request.length === 1) { + throw new Error("Request should have at least 2 characters"); + } + // Note: #/ patterns are now allowed per Node.js PR #60864 + // https://github.com/nodejs/node/pull/60864 + if (request.charCodeAt(request.length - 1) === slashCode) { + throw new Error("Only requesting file allowed"); + } + + return request.slice(1); +} + +/** + * @param {string} imp import target + * @param {boolean} expectFolder is folder expected + */ +function assertImportTarget(imp, expectFolder) { + const parsedIdentifier = parseIdentifier(imp); + + if (!parsedIdentifier) { + return; + } + + const [relativePath] = parsedIdentifier; + const isFolder = + relativePath.charCodeAt(relativePath.length - 1) === slashCode; + + if (isFolder !== expectFolder) { + throw new Error( + expectFolder + ? `Expecting folder to folder mapping. ${JSON.stringify( + imp, + )} should end with "/"` + : `Expecting file to file mapping. ${JSON.stringify( + imp, + )} should not end with "/"`, + ); + } +} + +/** + * @param {ImportsField} importsField the exports field + * @returns {FieldProcessor} process callback + */ +module.exports.processImportsField = function processImportsField( + importsField, +) { + return createFieldProcessor( + importsField, + (request) => `#${request}`, + assertImportsFieldRequest, + assertImportTarget, + ); +}; diff --git a/node_modules/enhanced-resolve/lib/util/fs.js b/node_modules/enhanced-resolve/lib/util/fs.js new file mode 100644 index 00000000..8efc01f9 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/util/fs.js @@ -0,0 +1,67 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Natsu @xiaoxiaojx +*/ + +"use strict"; + +const stripJsonComments = require("./strip-json-comments"); + +/** @typedef {import("../Resolver").FileSystem} FileSystem */ +/** @typedef {import("../Resolver").JsonObject} JsonObject */ + +/** + * @typedef {object} ReadJsonOptions + * @property {boolean=} stripComments Whether to strip JSONC comments + */ + +/** @type {WeakMap} */ +const _stripCommentsCache = new WeakMap(); + +/** + * Read and parse JSON file (supports JSONC with comments) + * @template T + * @param {FileSystem} fileSystem the file system + * @param {string} jsonFilePath absolute path to JSON file + * @param {ReadJsonOptions} options Options + * @returns {Promise} parsed JSON content + */ +async function readJson(fileSystem, jsonFilePath, options = {}) { + const { stripComments = false } = options; + const { readJson } = fileSystem; + if (readJson && !stripComments) { + return new Promise((resolve, reject) => { + readJson(jsonFilePath, (err, content) => { + if (err) return reject(err); + resolve(/** @type {T} */ (content)); + }); + }); + } + + const buf = await new Promise((resolve, reject) => { + fileSystem.readFile(jsonFilePath, (err, data) => { + if (err) return reject(err); + resolve(data); + }); + }); + + if (stripComments) { + const cached = _stripCommentsCache.get(buf); + if (cached !== undefined) return /** @type {T} */ (cached); + } + + const jsonText = /** @type {string} */ (buf.toString()); + // Strip comments to support JSONC (e.g., tsconfig.json with comments) + const jsonWithoutComments = stripComments + ? stripJsonComments(jsonText, { trailingCommas: true, whitespace: true }) + : jsonText; + const result = JSON.parse(jsonWithoutComments); + + if (stripComments) { + _stripCommentsCache.set(buf, result); + } + + return result; +} + +module.exports.readJson = readJson; diff --git a/node_modules/enhanced-resolve/lib/util/identifier.js b/node_modules/enhanced-resolve/lib/util/identifier.js new file mode 100644 index 00000000..8eeb6ea2 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/util/identifier.js @@ -0,0 +1,103 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Ivan Kopeykin @vankop +*/ + +"use strict"; + +const memorize = require("./memoize"); + +const getUrl = memorize(() => require("url")); + +const PATH_QUERY_FRAGMENT_REGEXP = + /^(#?(?:\0.|[^?#\0])*)(\?(?:\0.|[^#\0])*)?(#.*)?$/; +const ZERO_ESCAPE_REGEXP = /\0(.)/g; +const FILE_REG_EXP = /file:/i; + +/** + * Index past a DOS device path prefix (`\\?\…` or `\\.\…`), or 0. Kept + * out of `parseIdentifier` on purpose: inlining it back bloats the caller + * beyond the size where V8's interpreter and JIT both handle it well + * (the cause of the description-files-multi CodSpeed regression). + * @param {string} identifier identifier known to start with `\` + * @returns {number} 4 if identifier starts with a DOS device prefix, else 0 + */ +function dosPrefixEnd(identifier) { + if ( + identifier.length >= 4 && + identifier.charCodeAt(1) === 92 && + identifier.charCodeAt(3) === 92 + ) { + const c2 = identifier.charCodeAt(2); + if (c2 === 63 || c2 === 46) return 4; + } + return 0; +} + +/** + * @param {string} identifier identifier + * @returns {[string, string, string] | null} parsed identifier + */ +function parseIdentifier(identifier) { + if (!identifier) { + return null; + } + + if (FILE_REG_EXP.test(identifier)) { + identifier = getUrl().fileURLToPath(identifier); + } + + const firstEscape = identifier.indexOf("\0"); + + // Handle `\0` + if (firstEscape !== -1) { + const match = PATH_QUERY_FRAGMENT_REGEXP.exec(identifier); + + if (!match) return null; + + return [ + match[1].replace(ZERO_ESCAPE_REGEXP, "$1"), + match[2] ? match[2].replace(ZERO_ESCAPE_REGEXP, "$1") : "", + match[3] || "", + ]; + } + + // Fast path for inputs that don't use \0 escaping. DOS device paths + // (`\\?\…`, `\\.\…`) embed a literal `?` / `.` that must not be read + // as a query separator; skip past the prefix when the input actually + // starts with `\`. Gate is a single char-code compare so this function + // stays inside V8's inline budget for its hot callers (resolver parse). + const scanStart = + identifier.charCodeAt(0) === 92 ? dosPrefixEnd(identifier) : 0; + const queryStart = identifier.indexOf("?", scanStart); + // Start at index 1 (or past a DOS prefix) to ignore a possible leading hash. + const fragmentStart = identifier.indexOf("#", scanStart || 1); + + if (fragmentStart < 0) { + if (queryStart < 0) { + // No fragment, no query + return [identifier, "", ""]; + } + + // Query, no fragment + return [identifier.slice(0, queryStart), identifier.slice(queryStart), ""]; + } + + if (queryStart < 0 || fragmentStart < queryStart) { + // Fragment, no query + return [ + identifier.slice(0, fragmentStart), + "", + identifier.slice(fragmentStart), + ]; + } + + // Query and fragment + return [ + identifier.slice(0, queryStart), + identifier.slice(queryStart, fragmentStart), + identifier.slice(fragmentStart), + ]; +} + +module.exports.parseIdentifier = parseIdentifier; diff --git a/node_modules/enhanced-resolve/lib/util/memoize.js b/node_modules/enhanced-resolve/lib/util/memoize.js new file mode 100644 index 00000000..b46e252a --- /dev/null +++ b/node_modules/enhanced-resolve/lib/util/memoize.js @@ -0,0 +1,37 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +/** + * @template T + * @typedef {() => T} FunctionReturning + */ + +/** + * @template T + * @param {FunctionReturning} fn memorized function + * @returns {FunctionReturning} new function + */ +const memoize = (fn) => { + let cache = false; + /** @type {T | undefined} */ + let result; + return () => { + if (cache) { + return /** @type {T} */ (result); + } + + result = fn(); + cache = true; + // Allow to clean up memory for fn + // and all dependent resources + /** @type {FunctionReturning | undefined} */ + (fn) = undefined; + return /** @type {T} */ (result); + }; +}; + +module.exports = memoize; diff --git a/node_modules/enhanced-resolve/lib/util/module-browser.js b/node_modules/enhanced-resolve/lib/util/module-browser.js new file mode 100644 index 00000000..1258c22e --- /dev/null +++ b/node_modules/enhanced-resolve/lib/util/module-browser.js @@ -0,0 +1,8 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +module.exports = {}; diff --git a/node_modules/enhanced-resolve/lib/util/path.js b/node_modules/enhanced-resolve/lib/util/path.js new file mode 100644 index 00000000..707b6144 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/util/path.js @@ -0,0 +1,344 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +const path = require("path"); + +const CHAR_HASH = "#".charCodeAt(0); +const CHAR_SLASH = "/".charCodeAt(0); +const CHAR_BACKSLASH = "\\".charCodeAt(0); +const CHAR_A = "A".charCodeAt(0); +const CHAR_Z = "Z".charCodeAt(0); +const CHAR_LOWER_A = "a".charCodeAt(0); +const CHAR_LOWER_Z = "z".charCodeAt(0); +const CHAR_DOT = ".".charCodeAt(0); +const CHAR_COLON = ":".charCodeAt(0); +const CHAR_QUESTION = "?".charCodeAt(0); + +const posixNormalize = path.posix.normalize; +const winNormalize = path.win32.normalize; + +/** + * @enum {number} + */ +const PathType = Object.freeze({ + Empty: 0, + Normal: 1, + Relative: 2, + AbsoluteWin: 3, + AbsolutePosix: 4, + Internal: 5, +}); + +const deprecatedInvalidSegmentRegEx = + /(^|\\|\/)((\.|%2e)(\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))(\\|\/|$)/i; + +const invalidSegmentRegEx = + /(^|\\|\/)((\.|%2e)(\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))?(\\|\/|$)/i; + +/** + * @param {string} maybePath a path known to start with `\\` + * @returns {PathType} AbsoluteWin for `\\?\…` / `\\.\…`, otherwise Normal + */ +const getDosDeviceType = (maybePath) => { + if (maybePath.length >= 4 && maybePath.charCodeAt(3) === CHAR_BACKSLASH) { + const c2 = maybePath.charCodeAt(2); + if (c2 === CHAR_QUESTION || c2 === CHAR_DOT) { + return PathType.AbsoluteWin; + } + } + return PathType.Normal; +}; + +/** + * @param {string} maybePath a path + * @returns {PathType} type of path + */ +const getType = (maybePath) => { + switch (maybePath.length) { + case 0: + return PathType.Empty; + case 1: { + const c0 = maybePath.charCodeAt(0); + switch (c0) { + case CHAR_DOT: + return PathType.Relative; + case CHAR_SLASH: + return PathType.AbsolutePosix; + case CHAR_HASH: + return PathType.Internal; + } + return PathType.Normal; + } + case 2: { + const c0 = maybePath.charCodeAt(0); + switch (c0) { + case CHAR_DOT: { + const c1 = maybePath.charCodeAt(1); + switch (c1) { + case CHAR_DOT: + case CHAR_SLASH: + return PathType.Relative; + } + return PathType.Normal; + } + case CHAR_SLASH: + return PathType.AbsolutePosix; + case CHAR_HASH: + return PathType.Internal; + } + const c1 = maybePath.charCodeAt(1); + if ( + c1 === CHAR_COLON && + ((c0 >= CHAR_A && c0 <= CHAR_Z) || + (c0 >= CHAR_LOWER_A && c0 <= CHAR_LOWER_Z)) + ) { + return PathType.AbsoluteWin; + } + return PathType.Normal; + } + } + const c0 = maybePath.charCodeAt(0); + switch (c0) { + case CHAR_DOT: { + const c1 = maybePath.charCodeAt(1); + switch (c1) { + case CHAR_SLASH: + return PathType.Relative; + case CHAR_DOT: { + const c2 = maybePath.charCodeAt(2); + if (c2 === CHAR_SLASH) return PathType.Relative; + return PathType.Normal; + } + } + return PathType.Normal; + } + case CHAR_SLASH: + return PathType.AbsolutePosix; + case CHAR_HASH: + return PathType.Internal; + } + const c1 = maybePath.charCodeAt(1); + if (c1 === CHAR_COLON) { + const c2 = maybePath.charCodeAt(2); + if ( + (c2 === CHAR_BACKSLASH || c2 === CHAR_SLASH) && + ((c0 >= CHAR_A && c0 <= CHAR_Z) || + (c0 >= CHAR_LOWER_A && c0 <= CHAR_LOWER_Z)) + ) { + return PathType.AbsoluteWin; + } + } + // DOS device paths (`\\?\…`, `\\.\…`) are handled in a cold helper so + // this function stays small — inlining the full check here regressed + // `description-files-multi` under `--no-opt` interpretation. Here we + // only pay the two-byte gate for non-DOS inputs. + if (c0 === CHAR_BACKSLASH && c1 === CHAR_BACKSLASH) { + return getDosDeviceType(maybePath); + } + return PathType.Normal; +}; + +/** + * @param {string} maybePath a path + * @returns {string} the normalized path + */ +const normalize = (maybePath) => { + switch (getType(maybePath)) { + case PathType.Empty: + return maybePath; + case PathType.AbsoluteWin: + return winNormalize(maybePath); + case PathType.Relative: { + const r = posixNormalize(maybePath); + return getType(r) === PathType.Relative ? r : `./${r}`; + } + } + return posixNormalize(maybePath); +}; + +/** + * @param {string} rootPath the root path + * @param {string | undefined} request the request path + * @returns {string} the joined path + */ +const join = (rootPath, request) => { + if (!request) return normalize(rootPath); + const requestType = getType(request); + switch (requestType) { + case PathType.AbsolutePosix: + return posixNormalize(request); + case PathType.AbsoluteWin: + return winNormalize(request); + } + switch (getType(rootPath)) { + case PathType.Normal: + case PathType.Relative: + case PathType.AbsolutePosix: + return posixNormalize(`${rootPath}/${request}`); + case PathType.AbsoluteWin: + return winNormalize(`${rootPath}\\${request}`); + } + switch (requestType) { + case PathType.Empty: + return rootPath; + case PathType.Relative: { + const r = posixNormalize(rootPath); + return getType(r) === PathType.Relative ? r : `./${r}`; + } + } + return posixNormalize(rootPath); +}; + +/** + * @param {string} maybePath a path + * @returns {string} the directory name + */ +const dirname = (maybePath) => { + switch (getType(maybePath)) { + case PathType.AbsoluteWin: + return path.win32.dirname(maybePath); + } + return path.posix.dirname(maybePath); +}; + +/** @typedef {{ fn: (rootPath: string, request: string) => string, cache: Map> }} CachedJoin */ + +/** + * @returns {CachedJoin} cached join + */ +const createCachedJoin = () => { + /** @type {CachedJoin["cache"]} */ + const cache = new Map(); + /** @type {CachedJoin["fn"]} */ + const fn = (rootPath, request) => { + /** @type {string | undefined} */ + let cacheEntry; + let inner = cache.get(rootPath); + if (inner === undefined) { + cache.set(rootPath, (inner = new Map())); + } else { + cacheEntry = inner.get(request); + if (cacheEntry !== undefined) return cacheEntry; + } + cacheEntry = join(rootPath, request); + inner.set(request, cacheEntry); + return cacheEntry; + }; + return { fn, cache }; +}; + +/** @typedef {{ fn: (maybePath: string) => string, cache: Map }} CachedDirname */ + +/** + * @returns {CachedDirname} cached dirname + */ +const createCachedDirname = () => { + /** @type {CachedDirname["cache"]} */ + const cache = new Map(); + /** @type {CachedDirname["fn"]} */ + const fn = (maybePath) => { + const cacheEntry = cache.get(maybePath); + if (cacheEntry !== undefined) return cacheEntry; + const result = dirname(maybePath); + cache.set(maybePath, result); + return result; + }; + return { fn, cache }; +}; + +/** @typedef {{ fn: (maybePath: string, suffix?: string) => string, cache: Map> }} CachedBasename */ + +/** + * @returns {CachedBasename} cached basename + */ +const createCachedBasename = () => { + /** @type {CachedBasename["cache"]} */ + const cache = new Map(); + /** @type {CachedBasename["fn"]} */ + const fn = (maybePath, suffix) => { + /** @type {string | undefined} */ + let cacheEntry; + let inner = cache.get(maybePath); + if (inner === undefined) { + cache.set(maybePath, (inner = new Map())); + } else { + cacheEntry = inner.get(suffix); + if (cacheEntry !== undefined) return cacheEntry; + } + cacheEntry = path.basename(maybePath, suffix); + inner.set(suffix, cacheEntry); + return cacheEntry; + }; + return { fn, cache }; +}; + +/** + * Whether `request` is a relative request — i.e. matches `^\.\.?(?:\/|$)`. + * + * This is called on every `doResolve` via `UnsafeCachePlugin` and + * `getInnerRequest`, so the char-code form is meaningfully faster than the + * equivalent regex test: no regex state machine, no string object churn. + * @param {string} request request string + * @returns {boolean} true if request is relative + */ +const isRelativeRequest = (request) => { + const len = request.length; + if (len === 0 || request.charCodeAt(0) !== CHAR_DOT) return false; + if (len === 1) return true; // "." + const c1 = request.charCodeAt(1); + if (c1 === CHAR_SLASH) return true; // "./..." + if (c1 !== CHAR_DOT) return false; // ".x..." + if (len === 2) return true; // ".." + return request.charCodeAt(2) === CHAR_SLASH; // "../..." +}; + +/** + * Check if childPath is a subdirectory of parentPath. + * + * Called from `TsconfigPathsPlugin._selectPathsDataForContext` inside a loop + * over every tsconfig-paths context on every resolve, so it's worth keeping + * cheap. Compared to the previous `startsWith(normalize(parent + "/"))` + * version, this: checks the last char with `charCodeAt` instead of two + * `endsWith` calls; and skips `normalize()` entirely in the common case + * (parent has no trailing separator), since all we really need is the same + * anchoring effect — a cheap `startsWith` plus a separator char check on the + * byte immediately after `parentPath.length`. + * @param {string} parentPath parent directory path + * @param {string} childPath child path to check + * @returns {boolean} true if childPath is under parentPath + */ +const isSubPath = (parentPath, childPath) => { + const parentLen = parentPath.length; + if (parentLen === 0) { + // Match the old `normalize("" + "/") === "/"` fallback: an empty + // parent only "contains" a child that starts with a forward slash. + return childPath.length > 0 && childPath.charCodeAt(0) === CHAR_SLASH; + } + const lastChar = parentPath.charCodeAt(parentLen - 1); + if (lastChar === CHAR_SLASH || lastChar === CHAR_BACKSLASH) { + // Parent already ends with a separator — a plain prefix test is enough. + return childPath.startsWith(parentPath); + } + if (childPath.length <= parentLen) return false; + if (!childPath.startsWith(parentPath)) return false; + // Must be followed by a separator so "/app" doesn't match "/app-other". + const nextChar = childPath.charCodeAt(parentLen); + return nextChar === CHAR_SLASH || nextChar === CHAR_BACKSLASH; +}; + +module.exports.PathType = PathType; +module.exports.createCachedBasename = createCachedBasename; +module.exports.createCachedDirname = createCachedDirname; +module.exports.createCachedJoin = createCachedJoin; +module.exports.deprecatedInvalidSegmentRegEx = deprecatedInvalidSegmentRegEx; +module.exports.dirname = dirname; +module.exports.getType = getType; +module.exports.invalidSegmentRegEx = invalidSegmentRegEx; +module.exports.isRelativeRequest = isRelativeRequest; +module.exports.isSubPath = isSubPath; +module.exports.join = join; +module.exports.normalize = normalize; diff --git a/node_modules/enhanced-resolve/lib/util/process-browser.js b/node_modules/enhanced-resolve/lib/util/process-browser.js new file mode 100644 index 00000000..95f8d5e0 --- /dev/null +++ b/node_modules/enhanced-resolve/lib/util/process-browser.js @@ -0,0 +1,23 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +module.exports = { + /** + * @type {Record} + */ + versions: {}, + // eslint-disable-next-line jsdoc/reject-function-type + /** @param {Function} fn function */ + nextTick(fn) { + // eslint-disable-next-line prefer-rest-params + const args = Array.prototype.slice.call(arguments, 1); + Promise.resolve().then(() => { + // eslint-disable-next-line prefer-spread + fn.apply(null, args); + }); + }, +}; diff --git a/node_modules/enhanced-resolve/lib/util/strip-json-comments.js b/node_modules/enhanced-resolve/lib/util/strip-json-comments.js new file mode 100644 index 00000000..5096f8bb --- /dev/null +++ b/node_modules/enhanced-resolve/lib/util/strip-json-comments.js @@ -0,0 +1,177 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Natsu @xiaoxiaojx + + This file contains code ported from strip-json-comments: + https://github.com/sindresorhus/strip-json-comments + Original license: MIT + Original author: Sindre Sorhus +*/ + +"use strict"; + +/** + * @typedef {object} StripJsonCommentsOptions + * @property {boolean=} whitespace Replace comments with whitespace + * @property {boolean=} trailingCommas Strip trailing commas + */ + +const singleComment = Symbol("singleComment"); +const multiComment = Symbol("multiComment"); + +/** + * Strip without whitespace (returns empty string) + * @param {string} _string Unused + * @param {number} _start Unused + * @param {number} _end Unused + * @returns {string} Empty string for all input + */ +const stripWithoutWhitespace = (_string, _start, _end) => ""; + +/** + * Replace all characters except ASCII spaces, tabs and line endings with regular spaces to ensure valid JSON output. + * @param {string} string String to process + * @param {number} start Start index + * @param {number} end End index + * @returns {string} Processed string with comments replaced by whitespace + */ +const stripWithWhitespace = (string, start, end) => + string.slice(start, end).replace(/[^ \t\r\n]/g, " "); + +/** + * Check if a quote is escaped + * @param {string} jsonString JSON string + * @param {number} quotePosition Position of the quote + * @returns {boolean} True if the quote at the given position is escaped + */ +const isEscaped = (jsonString, quotePosition) => { + let index = quotePosition - 1; + let backslashCount = 0; + + while (jsonString[index] === "\\") { + index -= 1; + backslashCount += 1; + } + + return Boolean(backslashCount % 2); +}; + +/** + * Strip comments from JSON string + * @param {string} jsonString JSON string with potential comments + * @param {StripJsonCommentsOptions} options Options + * @returns {string} JSON string without comments + */ +function stripJsonComments( + jsonString, + { whitespace = true, trailingCommas = false } = {}, +) { + if (typeof jsonString !== "string") { + throw new TypeError( + `Expected argument \`jsonString\` to be a \`string\`, got \`${typeof jsonString}\``, + ); + } + + const strip = whitespace ? stripWithWhitespace : stripWithoutWhitespace; + + let isInsideString = false; + /** @type {false | typeof singleComment | typeof multiComment} */ + let isInsideComment = false; + let offset = 0; + let buffer = ""; + let result = ""; + let commaIndex = -1; + + for (let index = 0; index < jsonString.length; index++) { + const currentCharacter = jsonString[index]; + const nextCharacter = jsonString[index + 1]; + + if (!isInsideComment && currentCharacter === '"') { + // Enter or exit string + const escaped = isEscaped(jsonString, index); + if (!escaped) { + isInsideString = !isInsideString; + } + } + + if (isInsideString) { + continue; + } + + if (!isInsideComment && currentCharacter + nextCharacter === "//") { + // Enter single-line comment + buffer += jsonString.slice(offset, index); + offset = index; + isInsideComment = singleComment; + index++; + } else if ( + isInsideComment === singleComment && + currentCharacter + nextCharacter === "\r\n" + ) { + // Exit single-line comment via \r\n + index++; + isInsideComment = false; + buffer += strip(jsonString, offset, index); + offset = index; + continue; + } else if (isInsideComment === singleComment && currentCharacter === "\n") { + // Exit single-line comment via \n + isInsideComment = false; + buffer += strip(jsonString, offset, index); + offset = index; + } else if (!isInsideComment && currentCharacter + nextCharacter === "/*") { + // Enter multiline comment + buffer += jsonString.slice(offset, index); + offset = index; + isInsideComment = multiComment; + index++; + continue; + } else if ( + isInsideComment === multiComment && + currentCharacter + nextCharacter === "*/" + ) { + // Exit multiline comment + index++; + isInsideComment = false; + buffer += strip(jsonString, offset, index + 1); + offset = index + 1; + continue; + } else if (trailingCommas && !isInsideComment) { + if (commaIndex !== -1) { + if (currentCharacter === "}" || currentCharacter === "]") { + // Strip trailing comma + buffer += jsonString.slice(offset, index); + result += strip(buffer, 0, 1) + buffer.slice(1); + buffer = ""; + offset = index; + commaIndex = -1; + } else if ( + currentCharacter !== " " && + currentCharacter !== "\t" && + currentCharacter !== "\r" && + currentCharacter !== "\n" + ) { + // Hit non-whitespace following a comma; comma is not trailing + buffer += jsonString.slice(offset, index); + offset = index; + commaIndex = -1; + } + } else if (currentCharacter === ",") { + // Flush buffer prior to this point, and save new comma index + result += buffer + jsonString.slice(offset, index); + buffer = ""; + offset = index; + commaIndex = index; + } + } + } + + const remaining = + isInsideComment === singleComment + ? strip(jsonString, offset, jsonString.length) + : jsonString.slice(offset); + + return result + buffer + remaining; +} + +module.exports = stripJsonComments; diff --git a/node_modules/enhanced-resolve/package.json b/node_modules/enhanced-resolve/package.json new file mode 100644 index 00000000..f6c80ee6 --- /dev/null +++ b/node_modules/enhanced-resolve/package.json @@ -0,0 +1,83 @@ +{ + "name": "enhanced-resolve", + "version": "5.21.0", + "description": "Offers a async require.resolve function. It's highly configurable.", + "homepage": "http://github.com/webpack/enhanced-resolve", + "repository": { + "type": "git", + "url": "git://github.com/webpack/enhanced-resolve.git" + }, + "license": "MIT", + "author": "Tobias Koppers @sokra", + "main": "lib/index.js", + "browser": { + "process": "./lib/util/process-browser.js", + "module": "./lib/util/module-browser.js" + }, + "types": "types.d.ts", + "files": [ + "lib", + "types.d.ts", + "LICENSE" + ], + "scripts": { + "prepare": "husky", + "lint": "npm run lint:code && npm run lint:types && npm run lint:types-test && npm run lint:special && npm run fmt:check && npm run lint:spellcheck", + "lint:code": "eslint --cache .", + "lint:special": "node node_modules/tooling/inherit-types && node node_modules/tooling/generate-types", + "lint:types": "tsc", + "lint:types-test": "tsc -p tsconfig.types.test.json", + "lint:spellcheck": "cspell --cache --no-must-find-files --quiet \"**/*.*\"", + "fmt": "npm run fmt:base -- --log-level warn --write", + "fmt:check": "npm run fmt:base -- --check", + "fmt:base": "node_modules/prettier/bin/prettier.cjs --cache --ignore-unknown .", + "fix": "npm run fix:code && npm run fix:special", + "fix:code": "npm run lint:code -- --fix", + "fix:special": "node node_modules/tooling/inherit-types --write && node node_modules/tooling/generate-types --write", + "type-report": "rimraf coverage && npm run cover:types && npm run cover:report && open-cli coverage/lcov-report/index.html", + "pretest": "npm run lint", + "test": "npm run test:coverage", + "test:only": "jest", + "test:watch": "npm run test:only -- --watch", + "test:coverage": "npm run test:only -- --collectCoverageFrom=\"lib/**/*.js\" --coverage", + "version": "changeset version", + "release": "changeset publish", + "benchmark": "node --max-old-space-size=4096 --hash-seed=1 --random-seed=1 --no-opt --predictable --predictable-gc-schedule --interpreted-frames-native-stack --allow-natives-syntax --expose-gc --no-concurrent-sweeping ./benchmark/run.mjs" + }, + "lint-staged": { + "*.{js,cjs,mjs}": [ + "eslint --cache --fix" + ], + "*": [ + "prettier --cache --write --ignore-unknown", + "cspell --cache --no-must-find-files" + ] + }, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.3" + }, + "devDependencies": { + "@changesets/cli": "^2.30.0", + "@changesets/get-github-info": "^0.8.0", + "@codspeed/core": "^5.2.0", + "@types/graceful-fs": "^4.1.6", + "@types/jest": "^30.0.0", + "@types/node": "^24.10.4", + "cspell": "^10.0.0", + "eslint": "^9.39.2", + "eslint-config-webpack": "^4.9.5", + "husky": "^9.1.7", + "jest": "^30.3.0", + "lint-staged": "^16.2.7", + "memfs": "^4.56.11", + "prettier": "^3.7.4", + "prettier-2": "npm:prettier@^2", + "tooling": "webpack/tooling#v1.26.1", + "tinybench": "^6.0.0", + "typescript": "^6.0.2" + }, + "engines": { + "node": ">=10.13.0" + } +} diff --git a/node_modules/enhanced-resolve/types.d.ts b/node_modules/enhanced-resolve/types.d.ts new file mode 100644 index 00000000..a234d6f3 --- /dev/null +++ b/node_modules/enhanced-resolve/types.d.ts @@ -0,0 +1,1974 @@ +/* + * This file was automatically generated. + * DO NOT MODIFY BY HAND. + * Run `yarn fix:special` to update + */ + +import { Buffer } from "buffer"; +import { AsyncSeriesBailHook, AsyncSeriesHook, SyncHook } from "tapable"; +import { URL as URL_Import } from "url"; + +declare interface Abortable { + /** + * When provided the corresponding `AbortController` can be used to cancel an asynchronous action. + */ + signal?: AbortSignal; +} +type Alias = string | false | string[]; +declare interface AliasOption { + alias: Alias; + name: string; + onlyModule?: boolean; +} +type AliasOptionNewRequest = string | false | string[]; +declare interface AliasOptions { + [index: string]: AliasOptionNewRequest; +} +type BaseFileSystem = FileSystem & SyncFileSystem; +declare interface BaseResolveRequest { + /** + * path + */ + path: string | false; + + /** + * content + */ + context?: Context; + + /** + * description file path + */ + descriptionFilePath?: string; + + /** + * description file root + */ + descriptionFileRoot?: string; + + /** + * description file data + */ + descriptionFileData?: JsonObject; + + /** + * tsconfig paths map + */ + tsconfigPathsMap?: null | TsconfigPathsMap; + + /** + * relative path + */ + relativePath?: string; + + /** + * true when need to ignore symlinks, otherwise false + */ + ignoreSymlinks?: boolean; + + /** + * true when full specified, otherwise false + */ + fullySpecified?: boolean; + + /** + * inner request for internal usage + */ + __innerRequest?: string; + + /** + * inner request for internal usage + */ + __innerRequest_request?: string; + + /** + * inner relative path for internal usage + */ + __innerRequest_relativePath?: string; +} +declare interface BasenameCacheEntry { + /** + * cached dirname function + */ + fn: (maybePath: string, suffix?: string) => string; + + /** + * the underlying cache map + */ + cache: Map>; +} +type BufferEncoding = + | "ascii" + | "utf8" + | "utf-8" + | "utf16le" + | "utf-16le" + | "ucs2" + | "ucs-2" + | "base64" + | "base64url" + | "latin1" + | "binary" + | "hex"; +type BufferEncodingOption = "buffer" | { encoding: "buffer" }; +declare interface Cache { + [index: string]: undefined | ResolveRequest | ResolveRequest[]; +} +declare class CachedInputFileSystem { + constructor(fileSystem: BaseFileSystem, duration: number); + fileSystem: BaseFileSystem; + lstat?: LStat; + lstatSync?: LStatSync; + stat: Stat; + statSync: StatSync; + readdir: Readdir; + readdirSync: ReaddirSync; + readFile: ReadFile; + readFileSync: ReadFileSync; + readJson?: ( + pathOrFileDescription: PathOrFileDescriptor, + callback: ( + err: null | Error | NodeJS.ErrnoException, + result?: JsonObject, + ) => void, + ) => void; + readJsonSync?: (pathOrFileDescription: PathOrFileDescriptor) => JsonObject; + readlink: Readlink; + readlinkSync: ReadlinkSync; + realpath?: RealPath; + realpathSync?: RealPathSync; + purge( + what?: + | string + | number + | Buffer + | URL_url + | (string | number | Buffer | URL_url)[] + | Set, + ): void; +} +declare class CloneBasenamePlugin { + constructor( + source: + | string + | AsyncSeriesBailHook< + [ResolveRequest, ResolveContext], + null | ResolveRequest + >, + target: + | string + | AsyncSeriesBailHook< + [ResolveRequest, ResolveContext], + null | ResolveRequest + >, + ); + source: + | string + | AsyncSeriesBailHook< + [ResolveRequest, ResolveContext], + null | ResolveRequest + >; + target: + | string + | AsyncSeriesBailHook< + [ResolveRequest, ResolveContext], + null | ResolveRequest + >; + apply(resolver: Resolver): void; +} +declare interface CompiledAliasOption { + /** + * original alias name + */ + name: string; + + /** + * name + "/" — precomputed to avoid per-resolve concat + */ + nameWithSlash: string; + + /** + * alias target(s) + */ + alias: Alias; + + /** + * normalized onlyModule flag + */ + onlyModule: boolean; + + /** + * absolute form of `name` (with slash ending), null when not absolute + */ + absolutePath: null | string; + + /** + * substring before the single "*" in `name`, null when no wildcard + */ + wildcardPrefix: null | string; + + /** + * substring after the single "*" in `name`, null when no wildcard + */ + wildcardSuffix: null | string; + + /** + * first character code of `name` — used as a cheap screen on the hot path. `-1` indicates "matches any first char" (empty wildcard prefix). + */ + firstCharCode: number; + + /** + * true when `alias` is an array — precomputed so the hot path skips `Array.isArray` + */ + arrayAlias: boolean; +} +type Context = KnownContext & Record; +declare interface Dirent { + /** + * true when is file, otherwise false + */ + isFile: () => boolean; + + /** + * true when is directory, otherwise false + */ + isDirectory: () => boolean; + + /** + * true when is block device, otherwise false + */ + isBlockDevice: () => boolean; + + /** + * true when is character device, otherwise false + */ + isCharacterDevice: () => boolean; + + /** + * true when is symbolic link, otherwise false + */ + isSymbolicLink: () => boolean; + + /** + * true when is FIFO, otherwise false + */ + isFIFO: () => boolean; + + /** + * true when is socket, otherwise false + */ + isSocket: () => boolean; + + /** + * name + */ + name: T; + + /** + * path + */ + parentPath: string; + + /** + * path + */ + path?: string; +} +declare interface DirnameCacheEntry { + /** + * cached dirname function + */ + fn: (maybePath: string) => string; + + /** + * the underlying cache map + */ + cache: Map; +} +type EncodingOption = + | undefined + | null + | "ascii" + | "utf8" + | "utf-8" + | "utf16le" + | "utf-16le" + | "ucs2" + | "ucs-2" + | "base64" + | "base64url" + | "latin1" + | "binary" + | "hex" + | ObjectEncodingOptions; +type ErrorWithDetail = Error & { details?: string }; +declare interface ExtensionAliasOption { + alias: string | string[]; + extension: string; +} +declare interface ExtensionAliasOptions { + [index: string]: string | string[]; +} +declare interface FileSystem { + /** + * read file method + */ + readFile: ReadFile; + + /** + * readdir method + */ + readdir: Readdir; + + /** + * read json method + */ + readJson?: ( + pathOrFileDescription: PathOrFileDescriptor, + callback: ( + err: null | Error | NodeJS.ErrnoException, + result?: JsonObject, + ) => void, + ) => void; + + /** + * read link method + */ + readlink: Readlink; + + /** + * lstat method + */ + lstat?: LStat; + + /** + * stat method + */ + stat: Stat; + + /** + * realpath method + */ + realpath?: RealPath; +} +type IBigIntStats = IStatsBase & { + atimeNs: bigint; + mtimeNs: bigint; + ctimeNs: bigint; + birthtimeNs: bigint; +}; +declare interface IStats { + /** + * is file + */ + isFile: () => boolean; + + /** + * is directory + */ + isDirectory: () => boolean; + + /** + * is block device + */ + isBlockDevice: () => boolean; + + /** + * is character device + */ + isCharacterDevice: () => boolean; + + /** + * is symbolic link + */ + isSymbolicLink: () => boolean; + + /** + * is FIFO + */ + isFIFO: () => boolean; + + /** + * is socket + */ + isSocket: () => boolean; + + /** + * dev + */ + dev: number; + + /** + * ino + */ + ino: number; + + /** + * mode + */ + mode: number; + + /** + * nlink + */ + nlink: number; + + /** + * uid + */ + uid: number; + + /** + * gid + */ + gid: number; + + /** + * rdev + */ + rdev: number; + + /** + * size + */ + size: number; + + /** + * blksize + */ + blksize: number; + + /** + * blocks + */ + blocks: number; + + /** + * atime ms + */ + atimeMs: number; + + /** + * mtime ms + */ + mtimeMs: number; + + /** + * ctime ms + */ + ctimeMs: number; + + /** + * birthtime ms + */ + birthtimeMs: number; + + /** + * atime + */ + atime: Date; + + /** + * mtime + */ + mtime: Date; + + /** + * ctime + */ + ctime: Date; + + /** + * birthtime + */ + birthtime: Date; +} +declare interface IStatsBase { + /** + * is file + */ + isFile: () => boolean; + + /** + * is directory + */ + isDirectory: () => boolean; + + /** + * is block device + */ + isBlockDevice: () => boolean; + + /** + * is character device + */ + isCharacterDevice: () => boolean; + + /** + * is symbolic link + */ + isSymbolicLink: () => boolean; + + /** + * is FIFO + */ + isFIFO: () => boolean; + + /** + * is socket + */ + isSocket: () => boolean; + + /** + * dev + */ + dev: T; + + /** + * ino + */ + ino: T; + + /** + * mode + */ + mode: T; + + /** + * nlink + */ + nlink: T; + + /** + * uid + */ + uid: T; + + /** + * gid + */ + gid: T; + + /** + * rdev + */ + rdev: T; + + /** + * size + */ + size: T; + + /** + * blksize + */ + blksize: T; + + /** + * blocks + */ + blocks: T; + + /** + * atime ms + */ + atimeMs: T; + + /** + * mtime ms + */ + mtimeMs: T; + + /** + * ctime ms + */ + ctimeMs: T; + + /** + * birthtime ms + */ + birthtimeMs: T; + + /** + * atime + */ + atime: Date; + + /** + * mtime + */ + mtime: Date; + + /** + * ctime + */ + ctime: Date; + + /** + * birthtime + */ + birthtime: Date; +} +declare interface Iterator { + ( + item: T, + callback: (err?: null | Error, result?: null | Z) => void, + i: number, + ): void; +} +declare interface JoinCacheEntry { + /** + * cached join function + */ + fn: (rootPath: string, request: string) => string; + + /** + * the underlying cache map + */ + cache: Map>; +} +declare interface JsonObject { + [index: string]: + | undefined + | null + | string + | number + | boolean + | JsonObject + | JsonValue[]; +} +type JsonValue = null | string | number | boolean | JsonObject | JsonValue[]; +declare interface KnownContext { + /** + * environments + */ + environments?: string[]; +} +declare interface KnownHooks { + /** + * resolve step hook + */ + resolveStep: SyncHook< + [ + AsyncSeriesBailHook< + [ResolveRequest, ResolveContext], + null | ResolveRequest + >, + ResolveRequest, + ] + >; + + /** + * no resolve hook + */ + noResolve: SyncHook<[ResolveRequest, Error]>; + + /** + * resolve hook + */ + resolve: AsyncSeriesBailHook< + [ResolveRequest, ResolveContext], + null | ResolveRequest + >; + + /** + * result hook + */ + result: AsyncSeriesHook<[ResolveRequest, ResolveContext]>; +} +declare interface LStat { + ( + path: PathLike, + callback: (err: null | NodeJS.ErrnoException, result?: IStats) => void, + ): void; + ( + path: PathLike, + options: undefined | (StatOptions & { bigint?: false }), + callback: (err: null | NodeJS.ErrnoException, result?: IStats) => void, + ): void; + ( + path: PathLike, + options: StatOptions & { bigint: true }, + callback: ( + err: null | NodeJS.ErrnoException, + result?: IBigIntStats, + ) => void, + ): void; + ( + path: PathLike, + options: undefined | StatOptions, + callback: ( + err: null | NodeJS.ErrnoException, + result?: IStats | IBigIntStats, + ) => void, + ): void; +} +declare interface LStatSync { + (path: PathLike, options?: undefined): IStats; + ( + path: PathLike, + options?: StatSyncOptions & { bigint?: false; throwIfNoEntry: false }, + ): undefined | IStats; + ( + path: PathLike, + options: StatSyncOptions & { bigint: true; throwIfNoEntry: false }, + ): undefined | IBigIntStats; + (path: PathLike, options?: StatSyncOptions & { bigint?: false }): IStats; + (path: PathLike, options: StatSyncOptions & { bigint: true }): IBigIntStats; + ( + path: PathLike, + options: StatSyncOptions & { bigint: boolean; throwIfNoEntry?: false }, + ): IStats | IBigIntStats; + ( + path: PathLike, + options?: StatSyncOptions, + ): undefined | IStats | IBigIntStats; +} +declare class LogInfoPlugin { + constructor( + source: + | string + | AsyncSeriesBailHook< + [ResolveRequest, ResolveContext], + null | ResolveRequest + >, + ); + source: + | string + | AsyncSeriesBailHook< + [ResolveRequest, ResolveContext], + null | ResolveRequest + >; + apply(resolver: Resolver): void; +} +declare interface ObjectEncodingOptions { + /** + * encoding + */ + encoding?: + | null + | "ascii" + | "utf8" + | "utf-8" + | "utf16le" + | "utf-16le" + | "ucs2" + | "ucs-2" + | "base64" + | "base64url" + | "latin1" + | "binary" + | "hex"; +} +declare interface ParsedIdentifier { + /** + * request + */ + request: string; + + /** + * query + */ + query: string; + + /** + * fragment + */ + fragment: string; + + /** + * is directory + */ + directory: boolean; + + /** + * is module + */ + module: boolean; + + /** + * is file + */ + file: boolean; + + /** + * is internal + */ + internal: boolean; +} +declare interface PathCacheFunctions { + /** + * cached join + */ + join: JoinCacheEntry; + + /** + * cached dirname + */ + dirname: DirnameCacheEntry; + + /** + * cached basename + */ + basename: BasenameCacheEntry; +} +type PathLike = string | Buffer | URL_url; +type PathOrFileDescriptor = string | number | Buffer | URL_url; +type Plugin = + | undefined + | null + | false + | "" + | 0 + | { apply: (this: Resolver, resolver: Resolver) => void } + | ((this: Resolver, resolver: Resolver) => void); +declare interface PnpApi { + /** + * resolve to unqualified + */ + resolveToUnqualified: ( + packageName: string, + issuer: string, + options: { considerBuiltins: boolean }, + ) => null | string; +} +declare interface ReadFile { + ( + path: PathOrFileDescriptor, + options: + | undefined + | null + | ({ encoding?: null; flag?: string } & Abortable), + callback: (err: null | NodeJS.ErrnoException, result?: Buffer) => void, + ): void; + ( + path: PathOrFileDescriptor, + options: + | ({ encoding: BufferEncoding; flag?: string } & Abortable) + | "ascii" + | "utf8" + | "utf-8" + | "utf16le" + | "utf-16le" + | "ucs2" + | "ucs-2" + | "base64" + | "base64url" + | "latin1" + | "binary" + | "hex", + callback: (err: null | NodeJS.ErrnoException, result?: string) => void, + ): void; + ( + path: PathOrFileDescriptor, + options: + | undefined + | null + | "ascii" + | "utf8" + | "utf-8" + | "utf16le" + | "utf-16le" + | "ucs2" + | "ucs-2" + | "base64" + | "base64url" + | "latin1" + | "binary" + | "hex" + | (ObjectEncodingOptions & { flag?: string } & Abortable), + callback: ( + err: null | NodeJS.ErrnoException, + result?: string | Buffer, + ) => void, + ): void; + ( + path: PathOrFileDescriptor, + callback: (err: null | NodeJS.ErrnoException, result?: Buffer) => void, + ): void; +} +declare interface ReadFileSync { + ( + path: PathOrFileDescriptor, + options?: null | { encoding?: null; flag?: string }, + ): Buffer; + ( + path: PathOrFileDescriptor, + options: + | "ascii" + | "utf8" + | "utf-8" + | "utf16le" + | "utf-16le" + | "ucs2" + | "ucs-2" + | "base64" + | "base64url" + | "latin1" + | "binary" + | "hex" + | { encoding: BufferEncoding; flag?: string }, + ): string; + ( + path: PathOrFileDescriptor, + options?: + | null + | "ascii" + | "utf8" + | "utf-8" + | "utf16le" + | "utf-16le" + | "ucs2" + | "ucs-2" + | "base64" + | "base64url" + | "latin1" + | "binary" + | "hex" + | (ObjectEncodingOptions & { flag?: string }), + ): string | Buffer; +} +declare interface Readdir { + ( + path: PathLike, + options: + | undefined + | null + | "ascii" + | "utf8" + | "utf-8" + | "utf16le" + | "utf-16le" + | "ucs2" + | "ucs-2" + | "base64" + | "base64url" + | "latin1" + | "binary" + | "hex" + | { + encoding: + | null + | "ascii" + | "utf8" + | "utf-8" + | "utf16le" + | "utf-16le" + | "ucs2" + | "ucs-2" + | "base64" + | "base64url" + | "latin1" + | "binary" + | "hex"; + withFileTypes?: false; + recursive?: boolean; + }, + callback: (err: null | NodeJS.ErrnoException, files?: string[]) => void, + ): void; + ( + path: PathLike, + options: + | { encoding: "buffer"; withFileTypes?: false; recursive?: boolean } + | "buffer", + callback: (err: null | NodeJS.ErrnoException, files?: Buffer[]) => void, + ): void; + ( + path: PathLike, + options: + | undefined + | null + | "ascii" + | "utf8" + | "utf-8" + | "utf16le" + | "utf-16le" + | "ucs2" + | "ucs-2" + | "base64" + | "base64url" + | "latin1" + | "binary" + | "hex" + | (ObjectEncodingOptions & { + withFileTypes?: false; + recursive?: boolean; + }), + callback: ( + err: null | NodeJS.ErrnoException, + files?: string[] | Buffer[], + ) => void, + ): void; + ( + path: PathLike, + callback: (err: null | NodeJS.ErrnoException, files?: string[]) => void, + ): void; + ( + path: PathLike, + options: ObjectEncodingOptions & { + withFileTypes: true; + recursive?: boolean; + }, + callback: ( + err: null | NodeJS.ErrnoException, + files?: Dirent[], + ) => void, + ): void; + ( + path: PathLike, + options: { encoding: "buffer"; withFileTypes: true; recursive?: boolean }, + callback: ( + err: null | NodeJS.ErrnoException, + files: Dirent[], + ) => void, + ): void; +} +declare interface ReaddirSync { + ( + path: PathLike, + options?: + | null + | "ascii" + | "utf8" + | "utf-8" + | "utf16le" + | "utf-16le" + | "ucs2" + | "ucs-2" + | "base64" + | "base64url" + | "latin1" + | "binary" + | "hex" + | { + encoding: + | null + | "ascii" + | "utf8" + | "utf-8" + | "utf16le" + | "utf-16le" + | "ucs2" + | "ucs-2" + | "base64" + | "base64url" + | "latin1" + | "binary" + | "hex"; + withFileTypes?: false; + recursive?: boolean; + }, + ): string[]; + ( + path: PathLike, + options: + | "buffer" + | { encoding: "buffer"; withFileTypes?: false; recursive?: boolean }, + ): Buffer[]; + ( + path: PathLike, + options?: + | null + | "ascii" + | "utf8" + | "utf-8" + | "utf16le" + | "utf-16le" + | "ucs2" + | "ucs-2" + | "base64" + | "base64url" + | "latin1" + | "binary" + | "hex" + | (ObjectEncodingOptions & { + withFileTypes?: false; + recursive?: boolean; + }), + ): string[] | Buffer[]; + ( + path: PathLike, + options: ObjectEncodingOptions & { + withFileTypes: true; + recursive?: boolean; + }, + ): Dirent[]; + ( + path: PathLike, + options: { encoding: "buffer"; withFileTypes: true; recursive?: boolean }, + ): Dirent[]; +} +declare interface Readlink { + ( + path: PathLike, + options: EncodingOption, + callback: (err: null | NodeJS.ErrnoException, result?: string) => void, + ): void; + ( + path: PathLike, + options: BufferEncodingOption, + callback: (err: null | NodeJS.ErrnoException, result?: Buffer) => void, + ): void; + ( + path: PathLike, + options: EncodingOption, + callback: ( + err: null | NodeJS.ErrnoException, + result?: string | Buffer, + ) => void, + ): void; + ( + path: PathLike, + callback: (err: null | NodeJS.ErrnoException, result?: string) => void, + ): void; +} +declare interface ReadlinkSync { + (path: PathLike, options?: EncodingOption): string; + (path: PathLike, options: BufferEncodingOption): Buffer; + (path: PathLike, options?: EncodingOption): string | Buffer; +} +declare interface RealPath { + ( + path: PathLike, + options: EncodingOption, + callback: (err: null | NodeJS.ErrnoException, result?: string) => void, + ): void; + ( + path: PathLike, + options: BufferEncodingOption, + callback: (err: null | NodeJS.ErrnoException, result?: Buffer) => void, + ): void; + ( + path: PathLike, + options: EncodingOption, + callback: ( + err: null | NodeJS.ErrnoException, + result?: string | Buffer, + ) => void, + ): void; + ( + path: PathLike, + callback: (err: null | NodeJS.ErrnoException, result?: string) => void, + ): void; +} +declare interface RealPathSync { + (path: PathLike, options?: EncodingOption): string; + (path: PathLike, options: BufferEncodingOption): Buffer; + (path: PathLike, options?: EncodingOption): string | Buffer; +} +declare interface ResolveContext { + /** + * directories that was found on file system + */ + contextDependencies?: WriteOnlySet; + + /** + * files that was found on file system + */ + fileDependencies?: WriteOnlySet; + + /** + * dependencies that was not found on file system + */ + missingDependencies?: WriteOnlySet; + + /** + * tip of the resolver call stack (a singly-linked list with Set-like API). For instance, `resolve → parsedResolve → describedResolve`. Accepts a legacy `Set` for back-compat with older callers; it is normalized internally without a hot-path branch. + */ + stack?: StackEntry | Set; + + /** + * log function + */ + log?: (str: string) => void; + + /** + * yield result, if provided plugins can return several results + */ + yield?: (request: ResolveRequest) => void; +} +declare interface ResolveFunction { + ( + context: Context, + path: string, + request: string, + resolveContext?: ResolveContext, + ): string | false; + ( + path: string, + request: string, + resolveContext?: ResolveContext, + ): string | false; +} +declare interface ResolveFunctionAsync { + ( + context: Context, + path: string, + request: string, + resolveContext: ResolveContext, + callback: ( + err: null | ErrorWithDetail, + res?: string | false, + req?: ResolveRequest, + ) => void, + ): void; + ( + context: Context, + path: string, + request: string, + callback: ( + err: null | ErrorWithDetail, + res?: string | false, + req?: ResolveRequest, + ) => void, + ): void; + ( + path: string, + request: string, + resolveContext: ResolveContext, + callback: ( + err: null | ErrorWithDetail, + res?: string | false, + req?: ResolveRequest, + ) => void, + ): void; + ( + path: string, + request: string, + callback: ( + err: null | ErrorWithDetail, + res?: string | false, + req?: ResolveRequest, + ) => void, + ): void; +} +declare interface ResolveFunctionPromise { + ( + context: Context, + path: string, + request: string, + resolveContext?: ResolveContext, + ): Promise; + ( + path: string, + request: string, + resolveContext?: ResolveContext, + ): Promise; +} +type ResolveOptionsOptionalFS = Omit< + ResolveOptionsResolverFactoryObject_2, + "fileSystem" +> & + Partial>; +declare interface ResolveOptionsResolverFactoryObject_1 { + /** + * alias + */ + alias: AliasOption[]; + + /** + * fallback + */ + fallback: AliasOption[]; + + /** + * alias fields + */ + aliasFields: Set; + + /** + * extension alias + */ + extensionAlias: ExtensionAliasOption[]; + + /** + * apply extension alias to exports field targets + */ + extensionAliasForExports: boolean; + + /** + * cache predicate + */ + cachePredicate: (predicate: ResolveRequest) => boolean; + + /** + * cache with context + */ + cacheWithContext: boolean; + + /** + * A list of exports field condition names. + */ + conditionNames: Set; + + /** + * description files + */ + descriptionFiles: string[]; + + /** + * enforce extension + */ + enforceExtension: boolean; + + /** + * exports fields + */ + exportsFields: Set; + + /** + * imports fields + */ + importsFields: Set; + + /** + * extensions + */ + extensions: Set; + + /** + * fileSystem + */ + fileSystem: FileSystem; + + /** + * unsafe cache + */ + unsafeCache: false | Cache; + + /** + * symlinks + */ + symlinks: boolean; + + /** + * resolver + */ + resolver?: Resolver; + + /** + * modules + */ + modules: (string | string[])[]; + + /** + * main fields + */ + mainFields: { name: string[]; forceRelative: boolean }[]; + + /** + * main files + */ + mainFiles: Set; + + /** + * plugins + */ + plugins: Plugin[]; + + /** + * pnp API + */ + pnpApi: null | PnpApi; + + /** + * roots + */ + roots: Set; + + /** + * fully specified + */ + fullySpecified: boolean; + + /** + * resolve to context + */ + resolveToContext: boolean; + + /** + * restrictions + */ + restrictions: Set; + + /** + * prefer relative + */ + preferRelative: boolean; + + /** + * prefer absolute + */ + preferAbsolute: boolean; + + /** + * tsconfig file path or config object + */ + tsconfig: string | boolean | TsconfigOptions; +} +declare interface ResolveOptionsResolverFactoryObject_2 { + /** + * A list of module alias configurations or an object which maps key to value + */ + alias?: AliasOptions | AliasOption[]; + + /** + * A list of module alias configurations or an object which maps key to value, applied only after modules option + */ + fallback?: AliasOptions | AliasOption[]; + + /** + * An object which maps extension to extension aliases + */ + extensionAlias?: ExtensionAliasOptions; + + /** + * Also apply `extensionAlias` to paths resolved through the package.json `exports` field. Off by default (Node.js-aligned); when enabled, matches TypeScript's behavior for packages that ship TS sources alongside compiled JS. + */ + extensionAliasForExports?: boolean; + + /** + * A list of alias fields in description files + */ + aliasFields?: (string | string[])[]; + + /** + * A function which decides whether a request should be cached or not. An object is passed with at least `path` and `request` properties. + */ + cachePredicate?: (predicate: ResolveRequest) => boolean; + + /** + * Whether or not the unsafeCache should include request context as part of the cache key. + */ + cacheWithContext?: boolean; + + /** + * A list of description files to read from + */ + descriptionFiles?: string[]; + + /** + * A list of exports field condition names. + */ + conditionNames?: string[]; + + /** + * Enforce that a extension from extensions must be used + */ + enforceExtension?: boolean; + + /** + * A list of exports fields in description files + */ + exportsFields?: (string | string[])[]; + + /** + * A list of imports fields in description files + */ + importsFields?: (string | string[])[]; + + /** + * A list of extensions which should be tried for files + */ + extensions?: string[]; + + /** + * The file system which should be used + */ + fileSystem: FileSystem; + + /** + * Use this cache object to unsafely cache the successful requests + */ + unsafeCache?: boolean | Cache; + + /** + * Resolve symlinks to their symlinked location + */ + symlinks?: boolean; + + /** + * A prepared Resolver to which the plugins are attached + */ + resolver?: Resolver; + + /** + * A list of directories to resolve modules from, can be absolute path or folder name + */ + modules?: string | string[]; + + /** + * A list of main fields in description files + */ + mainFields?: ( + | string + | string[] + | { name: string | string[]; forceRelative: boolean } + )[]; + + /** + * A list of main files in directories + */ + mainFiles?: string[]; + + /** + * A list of additional resolve plugins which should be applied + */ + plugins?: Plugin[]; + + /** + * A PnP API that should be used - null is "never", undefined is "auto" + */ + pnpApi?: null | PnpApi; + + /** + * A list of root paths + */ + roots?: string[]; + + /** + * The request is already fully specified and no extensions or directories are resolved for it + */ + fullySpecified?: boolean; + + /** + * Resolve to a context instead of a file + */ + resolveToContext?: boolean; + + /** + * A list of resolve restrictions + */ + restrictions?: (string | RegExp)[]; + + /** + * Use only the sync constraints of the file system calls + */ + useSyncFileSystemCalls?: boolean; + + /** + * Prefer to resolve module requests as relative requests before falling back to modules + */ + preferRelative?: boolean; + + /** + * Prefer to resolve server-relative urls as absolute paths before falling back to resolve in roots + */ + preferAbsolute?: boolean; + + /** + * TypeScript config file path or config object with configFile and references + */ + tsconfig?: string | boolean | TsconfigOptions; +} +type ResolveRequest = BaseResolveRequest & Partial; +declare abstract class Resolver { + fileSystem: FileSystem; + options: ResolveOptionsResolverFactoryObject_1; + pathCache: PathCacheFunctions; + hooks: KnownHooks; + ensureHook( + name: + | string + | AsyncSeriesBailHook< + [ResolveRequest, ResolveContext], + null | ResolveRequest + >, + ): AsyncSeriesBailHook< + [ResolveRequest, ResolveContext], + null | ResolveRequest + >; + getHook( + name: + | string + | AsyncSeriesBailHook< + [ResolveRequest, ResolveContext], + null | ResolveRequest + >, + ): AsyncSeriesBailHook< + [ResolveRequest, ResolveContext], + null | ResolveRequest + >; + resolveSync( + path: string, + request: string, + resolveContext?: ResolveContext, + ): string | false; + resolveSync( + context: Context, + path: string, + request: string, + resolveContext?: ResolveContext, + ): string | false; + resolvePromise( + path: string, + request: string, + resolveContext?: ResolveContext, + ): Promise; + resolvePromise( + context: Context, + path: string, + request: string, + resolveContext?: ResolveContext, + ): Promise; + resolve( + path: string, + request: string, + callback: ( + err: null | ErrorWithDetail, + res?: string | false, + req?: ResolveRequest, + ) => void, + ): void; + resolve( + path: string, + request: string, + resolveContext: ResolveContext, + callback: ( + err: null | ErrorWithDetail, + res?: string | false, + req?: ResolveRequest, + ) => void, + ): void; + resolve( + context: Context, + path: string, + request: string, + callback: ( + err: null | ErrorWithDetail, + res?: string | false, + req?: ResolveRequest, + ) => void, + ): void; + resolve( + context: Context, + path: string, + request: string, + resolveContext: ResolveContext, + callback: ( + err: null | ErrorWithDetail, + res?: string | false, + req?: ResolveRequest, + ) => void, + ): void; + doResolve( + hook: AsyncSeriesBailHook< + [ResolveRequest, ResolveContext], + null | ResolveRequest + >, + request: ResolveRequest, + message: null | string, + resolveContext: ResolveContext, + callback: (err?: null | Error, result?: ResolveRequest) => void, + ): void; + parse(identifier: string): ParsedIdentifier; + isModule(path: string): boolean; + isPrivate(path: string): boolean; + isDirectory(path: string): boolean; + normalize(path: string): string; + join(path: string, request: string): string; + dirname(path: string): string; + basename(path: string, suffix?: string): string; +} +declare abstract class StackEntry { + name?: string; + path: string | false; + request: string; + query: string; + fragment: string; + directory: boolean; + module: boolean; + parent?: StackEntry; + + /** + * Strings seeded by callers that still pass `stack: new Set([...])`. + * Propagated through the chain so deeper `doResolve` calls still see + * them during recursion checks. `undefined` in the common case so + * there is no extra work on the hot path. + */ + preSeeded?: Set; + + /** + * Walk the linked list looking for an entry with the same request shape. + * Set-compatible: callers that used `stack.has(entry)` keep working. + */ + has(query: StackEntry): boolean; + + /** + * Number of entries on the stack (oldest-to-newest length). + */ + get size(): number; + + /** + * Human-readable form used in recursion error messages and logs. + * Matches the historical string format so existing log parsers stay valid. + */ + toString(): string; +} +declare interface Stat { + ( + path: PathLike, + callback: (err: null | NodeJS.ErrnoException, result?: IStats) => void, + ): void; + ( + path: PathLike, + options: undefined | (StatOptions & { bigint?: false }), + callback: (err: null | NodeJS.ErrnoException, result?: IStats) => void, + ): void; + ( + path: PathLike, + options: StatOptions & { bigint: true }, + callback: ( + err: null | NodeJS.ErrnoException, + result?: IBigIntStats, + ) => void, + ): void; + ( + path: PathLike, + options: undefined | StatOptions, + callback: ( + err: null | NodeJS.ErrnoException, + result?: IStats | IBigIntStats, + ) => void, + ): void; +} +declare interface StatOptions { + /** + * need bigint values + */ + bigint?: boolean; +} +declare interface StatSync { + (path: PathLike, options?: undefined): IStats; + ( + path: PathLike, + options?: StatSyncOptions & { bigint?: false; throwIfNoEntry: false }, + ): undefined | IStats; + ( + path: PathLike, + options: StatSyncOptions & { bigint: true; throwIfNoEntry: false }, + ): undefined | IBigIntStats; + (path: PathLike, options?: StatSyncOptions & { bigint?: false }): IStats; + (path: PathLike, options: StatSyncOptions & { bigint: true }): IBigIntStats; + ( + path: PathLike, + options: StatSyncOptions & { bigint: boolean; throwIfNoEntry?: false }, + ): IStats | IBigIntStats; + ( + path: PathLike, + options?: StatSyncOptions, + ): undefined | IStats | IBigIntStats; +} +declare interface StatSyncOptions { + /** + * need bigint values + */ + bigint?: boolean; + + /** + * throw if no entry + */ + throwIfNoEntry?: boolean; +} +declare interface SyncFileSystem { + /** + * read file sync method + */ + readFileSync: ReadFileSync; + + /** + * read dir sync method + */ + readdirSync: ReaddirSync; + + /** + * read json sync method + */ + readJsonSync?: (pathOrFileDescription: PathOrFileDescriptor) => JsonObject; + + /** + * read link sync method + */ + readlinkSync: ReadlinkSync; + + /** + * lstat sync method + */ + lstatSync?: LStatSync; + + /** + * stat sync method + */ + statSync: StatSync; + + /** + * real path sync method + */ + realpathSync?: RealPathSync; +} +declare interface TsconfigOptions { + /** + * A relative path to the tsconfig file based on cwd, or an absolute path of tsconfig file + */ + configFile?: string; + + /** + * References to other tsconfig files. 'auto' inherits from TypeScript config, or an array of relative/absolute paths + */ + references?: string[] | "auto"; + + /** + * Override baseUrl from tsconfig.json. If provided, this value will be used instead of the baseUrl in the tsconfig file + */ + baseUrl?: string; +} +declare interface TsconfigPathsData { + /** + * tsconfig file data + */ + alias: CompiledAliasOption[]; + + /** + * tsconfig file data + */ + modules: string[]; +} +declare interface TsconfigPathsMap { + /** + * main tsconfig paths data + */ + main: TsconfigPathsData; + + /** + * main tsconfig base URL (absolute path) + */ + mainContext: string; + + /** + * referenced tsconfig paths data mapped by baseUrl + */ + refs: { [index: string]: TsconfigPathsData }; + + /** + * all contexts (main + refs) for quick lookup + */ + allContexts: { [index: string]: TsconfigPathsData }; + + /** + * precomputed `Object.keys(allContexts)` — read-only; used on the `_selectPathsDataForContext` hot path + */ + contextList: string[]; + + /** + * file dependencies + */ + fileDependencies: Set; +} +declare class TsconfigPathsPlugin { + constructor(configFileOrOptions: string | true | TsconfigOptions); + isAutoConfigFile: boolean; + configFile: string; + references: "auto" | TsconfigReference[]; + baseUrl?: string; + apply(resolver: Resolver): void; +} +declare interface TsconfigReference { + /** + * Path to the referenced project + */ + path: string; +} +declare interface URL_url extends URL_Import {} +declare interface WriteOnlySet { + add: (item: T) => void; +} +declare function exports( + context: Context, + path: string, + request: string, + resolveContext: ResolveContext, + callback: ( + err: null | ErrorWithDetail, + res?: string | false, + req?: ResolveRequest, + ) => void, +): void; +declare function exports( + context: Context, + path: string, + request: string, + callback: ( + err: null | ErrorWithDetail, + res?: string | false, + req?: ResolveRequest, + ) => void, +): void; +declare function exports( + path: string, + request: string, + resolveContext: ResolveContext, + callback: ( + err: null | ErrorWithDetail, + res?: string | false, + req?: ResolveRequest, + ) => void, +): void; +declare function exports( + path: string, + request: string, + callback: ( + err: null | ErrorWithDetail, + res?: string | false, + req?: ResolveRequest, + ) => void, +): void; +declare namespace exports { + export const sync: ResolveFunction; + export const promise: ResolveFunctionPromise; + export function create( + options: ResolveOptionsOptionalFS, + ): ResolveFunctionAsync; + export namespace create { + export const sync: (options: ResolveOptionsOptionalFS) => ResolveFunction; + export const promise: ( + options: ResolveOptionsOptionalFS, + ) => ResolveFunctionPromise; + } + export namespace ResolverFactory { + export let createResolver: ( + options: ResolveOptionsResolverFactoryObject_2, + ) => Resolver; + } + export const forEachBail: ( + array: T[], + iterator: Iterator, + callback: (err?: null | Error, result?: null | Z, i?: number) => void, + ) => void; + export type ResolveCallback = ( + err: null | ErrorWithDetail, + res?: string | false, + req?: ResolveRequest, + ) => void; + export { + CachedInputFileSystem, + CloneBasenamePlugin, + LogInfoPlugin, + TsconfigPathsPlugin, + ResolveOptionsOptionalFS, + BaseFileSystem, + PnpApi, + Resolver, + Context, + FileSystem, + ResolveContext, + ResolveRequest, + SyncFileSystem, + Plugin, + ResolveOptionsResolverFactoryObject_2 as ResolveOptions, + ResolveFunctionAsync, + ResolveFunction, + ResolveFunctionPromise, + }; +} + +export = exports; diff --git a/node_modules/fdir/LICENSE b/node_modules/fdir/LICENSE new file mode 100644 index 00000000..bb7fdee4 --- /dev/null +++ b/node_modules/fdir/LICENSE @@ -0,0 +1,7 @@ +Copyright 2023 Abdullah Atta + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/fdir/README.md b/node_modules/fdir/README.md new file mode 100644 index 00000000..5c70530f --- /dev/null +++ b/node_modules/fdir/README.md @@ -0,0 +1,91 @@ +

+ + +

The Fastest Directory Crawler & Globber for NodeJS

+

+ + + + + + + + +

+

+ +⚡ **The Fastest:** Nothing similar (in the NodeJS world) beats `fdir` in speed. It can easily crawl a directory containing **1 million files in < 1 second.** + +💡 **Stupidly Easy:** `fdir` uses expressive Builder pattern to build the crawler increasing code readability. + +🤖 **Zero Dependencies\*:** `fdir` only uses NodeJS `fs` & `path` modules. + +🕺 **Astonishingly Small:** < 2KB in size gzipped & minified. + +🖮 **Hackable:** Extending `fdir` is extremely simple now that the new Builder API is here. Feel free to experiment around. + +_\* `picomatch` must be installed manually by the user to support globbing._ + +## 🚄 Quickstart + +### Installation + +You can install using `npm`: + +```sh +$ npm i fdir +``` + +or Yarn: + +```sh +$ yarn add fdir +``` + +### Usage + +```ts +import { fdir } from "fdir"; + +// create the builder +const api = new fdir().withFullPaths().crawl("path/to/dir"); + +// get all files in a directory synchronously +const files = api.sync(); + +// or asynchronously +api.withPromise().then((files) => { + // do something with the result here. +}); +``` + +## Documentation: + +Documentation for all methods is available [here](/documentation.md). + +## 📊 Benchmarks: + +Please check the benchmark against the latest version [here](/BENCHMARKS.md). + +## 🙏Used by: + +`fdir` is downloaded over 200k+ times a week by projects around the world. Here's a list of some notable projects using `fdir` in production: + +> Note: if you think your project should be here, feel free to open an issue. Notable is anything with a considerable amount of GitHub stars. + +1. [rollup/plugins](https://github.com/rollup/plugins) +2. [SuperchupuDev/tinyglobby](https://github.com/SuperchupuDev/tinyglobby) +3. [pulumi/pulumi](https://github.com/pulumi/pulumi) +4. [dotenvx/dotenvx](https://github.com/dotenvx/dotenvx) +5. [mdn/yari](https://github.com/mdn/yari) +6. [streetwriters/notesnook](https://github.com/streetwriters/notesnook) +7. [imba/imba](https://github.com/imba/imba) +8. [moroshko/react-scanner](https://github.com/moroshko/react-scanner) +9. [netlify/build](https://github.com/netlify/build) +10. [yassinedoghri/astro-i18next](https://github.com/yassinedoghri/astro-i18next) +11. [selfrefactor/rambda](https://github.com/selfrefactor/rambda) +12. [whyboris/Video-Hub-App](https://github.com/whyboris/Video-Hub-App) + +## 🦮 LICENSE + +Copyright © 2024 Abdullah Atta under MIT. [Read full text here.](https://github.com/thecodrr/fdir/raw/master/LICENSE) diff --git a/node_modules/fdir/dist/index.cjs b/node_modules/fdir/dist/index.cjs new file mode 100644 index 00000000..4868ffba --- /dev/null +++ b/node_modules/fdir/dist/index.cjs @@ -0,0 +1,588 @@ +//#region rolldown:runtime +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) { + key = keys[i]; + if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { + get: ((k) => from[k]).bind(null, key), + enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable + }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { + value: mod, + enumerable: true +}) : target, mod)); + +//#endregion +const path = __toESM(require("path")); +const fs = __toESM(require("fs")); + +//#region src/utils.ts +function cleanPath(path$1) { + let normalized = (0, path.normalize)(path$1); + if (normalized.length > 1 && normalized[normalized.length - 1] === path.sep) normalized = normalized.substring(0, normalized.length - 1); + return normalized; +} +const SLASHES_REGEX = /[\\/]/g; +function convertSlashes(path$1, separator) { + return path$1.replace(SLASHES_REGEX, separator); +} +const WINDOWS_ROOT_DIR_REGEX = /^[a-z]:[\\/]$/i; +function isRootDirectory(path$1) { + return path$1 === "/" || WINDOWS_ROOT_DIR_REGEX.test(path$1); +} +function normalizePath(path$1, options) { + const { resolvePaths, normalizePath: normalizePath$1, pathSeparator } = options; + const pathNeedsCleaning = process.platform === "win32" && path$1.includes("/") || path$1.startsWith("."); + if (resolvePaths) path$1 = (0, path.resolve)(path$1); + if (normalizePath$1 || pathNeedsCleaning) path$1 = cleanPath(path$1); + if (path$1 === ".") return ""; + const needsSeperator = path$1[path$1.length - 1] !== pathSeparator; + return convertSlashes(needsSeperator ? path$1 + pathSeparator : path$1, pathSeparator); +} + +//#endregion +//#region src/api/functions/join-path.ts +function joinPathWithBasePath(filename, directoryPath) { + return directoryPath + filename; +} +function joinPathWithRelativePath(root, options) { + return function(filename, directoryPath) { + const sameRoot = directoryPath.startsWith(root); + if (sameRoot) return directoryPath.slice(root.length) + filename; + else return convertSlashes((0, path.relative)(root, directoryPath), options.pathSeparator) + options.pathSeparator + filename; + }; +} +function joinPath(filename) { + return filename; +} +function joinDirectoryPath(filename, directoryPath, separator) { + return directoryPath + filename + separator; +} +function build$7(root, options) { + const { relativePaths, includeBasePath } = options; + return relativePaths && root ? joinPathWithRelativePath(root, options) : includeBasePath ? joinPathWithBasePath : joinPath; +} + +//#endregion +//#region src/api/functions/push-directory.ts +function pushDirectoryWithRelativePath(root) { + return function(directoryPath, paths) { + paths.push(directoryPath.substring(root.length) || "."); + }; +} +function pushDirectoryFilterWithRelativePath(root) { + return function(directoryPath, paths, filters) { + const relativePath = directoryPath.substring(root.length) || "."; + if (filters.every((filter) => filter(relativePath, true))) paths.push(relativePath); + }; +} +const pushDirectory = (directoryPath, paths) => { + paths.push(directoryPath || "."); +}; +const pushDirectoryFilter = (directoryPath, paths, filters) => { + const path$1 = directoryPath || "."; + if (filters.every((filter) => filter(path$1, true))) paths.push(path$1); +}; +const empty$2 = () => {}; +function build$6(root, options) { + const { includeDirs, filters, relativePaths } = options; + if (!includeDirs) return empty$2; + if (relativePaths) return filters && filters.length ? pushDirectoryFilterWithRelativePath(root) : pushDirectoryWithRelativePath(root); + return filters && filters.length ? pushDirectoryFilter : pushDirectory; +} + +//#endregion +//#region src/api/functions/push-file.ts +const pushFileFilterAndCount = (filename, _paths, counts, filters) => { + if (filters.every((filter) => filter(filename, false))) counts.files++; +}; +const pushFileFilter = (filename, paths, _counts, filters) => { + if (filters.every((filter) => filter(filename, false))) paths.push(filename); +}; +const pushFileCount = (_filename, _paths, counts, _filters) => { + counts.files++; +}; +const pushFile = (filename, paths) => { + paths.push(filename); +}; +const empty$1 = () => {}; +function build$5(options) { + const { excludeFiles, filters, onlyCounts } = options; + if (excludeFiles) return empty$1; + if (filters && filters.length) return onlyCounts ? pushFileFilterAndCount : pushFileFilter; + else if (onlyCounts) return pushFileCount; + else return pushFile; +} + +//#endregion +//#region src/api/functions/get-array.ts +const getArray = (paths) => { + return paths; +}; +const getArrayGroup = () => { + return [""].slice(0, 0); +}; +function build$4(options) { + return options.group ? getArrayGroup : getArray; +} + +//#endregion +//#region src/api/functions/group-files.ts +const groupFiles = (groups, directory, files) => { + groups.push({ + directory, + files, + dir: directory + }); +}; +const empty = () => {}; +function build$3(options) { + return options.group ? groupFiles : empty; +} + +//#endregion +//#region src/api/functions/resolve-symlink.ts +const resolveSymlinksAsync = function(path$1, state, callback$1) { + const { queue, fs: fs$1, options: { suppressErrors } } = state; + queue.enqueue(); + fs$1.realpath(path$1, (error, resolvedPath) => { + if (error) return queue.dequeue(suppressErrors ? null : error, state); + fs$1.stat(resolvedPath, (error$1, stat) => { + if (error$1) return queue.dequeue(suppressErrors ? null : error$1, state); + if (stat.isDirectory() && isRecursive(path$1, resolvedPath, state)) return queue.dequeue(null, state); + callback$1(stat, resolvedPath); + queue.dequeue(null, state); + }); + }); +}; +const resolveSymlinks = function(path$1, state, callback$1) { + const { queue, fs: fs$1, options: { suppressErrors } } = state; + queue.enqueue(); + try { + const resolvedPath = fs$1.realpathSync(path$1); + const stat = fs$1.statSync(resolvedPath); + if (stat.isDirectory() && isRecursive(path$1, resolvedPath, state)) return; + callback$1(stat, resolvedPath); + } catch (e) { + if (!suppressErrors) throw e; + } +}; +function build$2(options, isSynchronous) { + if (!options.resolveSymlinks || options.excludeSymlinks) return null; + return isSynchronous ? resolveSymlinks : resolveSymlinksAsync; +} +function isRecursive(path$1, resolved, state) { + if (state.options.useRealPaths) return isRecursiveUsingRealPaths(resolved, state); + let parent = (0, path.dirname)(path$1); + let depth = 1; + while (parent !== state.root && depth < 2) { + const resolvedPath = state.symlinks.get(parent); + const isSameRoot = !!resolvedPath && (resolvedPath === resolved || resolvedPath.startsWith(resolved) || resolved.startsWith(resolvedPath)); + if (isSameRoot) depth++; + else parent = (0, path.dirname)(parent); + } + state.symlinks.set(path$1, resolved); + return depth > 1; +} +function isRecursiveUsingRealPaths(resolved, state) { + return state.visited.includes(resolved + state.options.pathSeparator); +} + +//#endregion +//#region src/api/functions/invoke-callback.ts +const onlyCountsSync = (state) => { + return state.counts; +}; +const groupsSync = (state) => { + return state.groups; +}; +const defaultSync = (state) => { + return state.paths; +}; +const limitFilesSync = (state) => { + return state.paths.slice(0, state.options.maxFiles); +}; +const onlyCountsAsync = (state, error, callback$1) => { + report(error, callback$1, state.counts, state.options.suppressErrors); + return null; +}; +const defaultAsync = (state, error, callback$1) => { + report(error, callback$1, state.paths, state.options.suppressErrors); + return null; +}; +const limitFilesAsync = (state, error, callback$1) => { + report(error, callback$1, state.paths.slice(0, state.options.maxFiles), state.options.suppressErrors); + return null; +}; +const groupsAsync = (state, error, callback$1) => { + report(error, callback$1, state.groups, state.options.suppressErrors); + return null; +}; +function report(error, callback$1, output, suppressErrors) { + if (error && !suppressErrors) callback$1(error, output); + else callback$1(null, output); +} +function build$1(options, isSynchronous) { + const { onlyCounts, group, maxFiles } = options; + if (onlyCounts) return isSynchronous ? onlyCountsSync : onlyCountsAsync; + else if (group) return isSynchronous ? groupsSync : groupsAsync; + else if (maxFiles) return isSynchronous ? limitFilesSync : limitFilesAsync; + else return isSynchronous ? defaultSync : defaultAsync; +} + +//#endregion +//#region src/api/functions/walk-directory.ts +const readdirOpts = { withFileTypes: true }; +const walkAsync = (state, crawlPath, directoryPath, currentDepth, callback$1) => { + state.queue.enqueue(); + if (currentDepth < 0) return state.queue.dequeue(null, state); + const { fs: fs$1 } = state; + state.visited.push(crawlPath); + state.counts.directories++; + fs$1.readdir(crawlPath || ".", readdirOpts, (error, entries = []) => { + callback$1(entries, directoryPath, currentDepth); + state.queue.dequeue(state.options.suppressErrors ? null : error, state); + }); +}; +const walkSync = (state, crawlPath, directoryPath, currentDepth, callback$1) => { + const { fs: fs$1 } = state; + if (currentDepth < 0) return; + state.visited.push(crawlPath); + state.counts.directories++; + let entries = []; + try { + entries = fs$1.readdirSync(crawlPath || ".", readdirOpts); + } catch (e) { + if (!state.options.suppressErrors) throw e; + } + callback$1(entries, directoryPath, currentDepth); +}; +function build(isSynchronous) { + return isSynchronous ? walkSync : walkAsync; +} + +//#endregion +//#region src/api/queue.ts +/** +* This is a custom stateless queue to track concurrent async fs calls. +* It increments a counter whenever a call is queued and decrements it +* as soon as it completes. When the counter hits 0, it calls onQueueEmpty. +*/ +var Queue = class { + count = 0; + constructor(onQueueEmpty) { + this.onQueueEmpty = onQueueEmpty; + } + enqueue() { + this.count++; + return this.count; + } + dequeue(error, output) { + if (this.onQueueEmpty && (--this.count <= 0 || error)) { + this.onQueueEmpty(error, output); + if (error) { + output.controller.abort(); + this.onQueueEmpty = void 0; + } + } + } +}; + +//#endregion +//#region src/api/counter.ts +var Counter = class { + _files = 0; + _directories = 0; + set files(num) { + this._files = num; + } + get files() { + return this._files; + } + set directories(num) { + this._directories = num; + } + get directories() { + return this._directories; + } + /** + * @deprecated use `directories` instead + */ + /* c8 ignore next 3 */ + get dirs() { + return this._directories; + } +}; + +//#endregion +//#region src/api/aborter.ts +/** +* AbortController is not supported on Node 14 so we use this until we can drop +* support for Node 14. +*/ +var Aborter = class { + aborted = false; + abort() { + this.aborted = true; + } +}; + +//#endregion +//#region src/api/walker.ts +var Walker = class { + root; + isSynchronous; + state; + joinPath; + pushDirectory; + pushFile; + getArray; + groupFiles; + resolveSymlink; + walkDirectory; + callbackInvoker; + constructor(root, options, callback$1) { + this.isSynchronous = !callback$1; + this.callbackInvoker = build$1(options, this.isSynchronous); + this.root = normalizePath(root, options); + this.state = { + root: isRootDirectory(this.root) ? this.root : this.root.slice(0, -1), + paths: [""].slice(0, 0), + groups: [], + counts: new Counter(), + options, + queue: new Queue((error, state) => this.callbackInvoker(state, error, callback$1)), + symlinks: /* @__PURE__ */ new Map(), + visited: [""].slice(0, 0), + controller: new Aborter(), + fs: options.fs || fs + }; + this.joinPath = build$7(this.root, options); + this.pushDirectory = build$6(this.root, options); + this.pushFile = build$5(options); + this.getArray = build$4(options); + this.groupFiles = build$3(options); + this.resolveSymlink = build$2(options, this.isSynchronous); + this.walkDirectory = build(this.isSynchronous); + } + start() { + this.pushDirectory(this.root, this.state.paths, this.state.options.filters); + this.walkDirectory(this.state, this.root, this.root, this.state.options.maxDepth, this.walk); + return this.isSynchronous ? this.callbackInvoker(this.state, null) : null; + } + walk = (entries, directoryPath, depth) => { + const { paths, options: { filters, resolveSymlinks: resolveSymlinks$1, excludeSymlinks, exclude, maxFiles, signal, useRealPaths, pathSeparator }, controller } = this.state; + if (controller.aborted || signal && signal.aborted || maxFiles && paths.length > maxFiles) return; + const files = this.getArray(this.state.paths); + for (let i = 0; i < entries.length; ++i) { + const entry = entries[i]; + if (entry.isFile() || entry.isSymbolicLink() && !resolveSymlinks$1 && !excludeSymlinks) { + const filename = this.joinPath(entry.name, directoryPath); + this.pushFile(filename, files, this.state.counts, filters); + } else if (entry.isDirectory()) { + let path$1 = joinDirectoryPath(entry.name, directoryPath, this.state.options.pathSeparator); + if (exclude && exclude(entry.name, path$1)) continue; + this.pushDirectory(path$1, paths, filters); + this.walkDirectory(this.state, path$1, path$1, depth - 1, this.walk); + } else if (this.resolveSymlink && entry.isSymbolicLink()) { + let path$1 = joinPathWithBasePath(entry.name, directoryPath); + this.resolveSymlink(path$1, this.state, (stat, resolvedPath) => { + if (stat.isDirectory()) { + resolvedPath = normalizePath(resolvedPath, this.state.options); + if (exclude && exclude(entry.name, useRealPaths ? resolvedPath : path$1 + pathSeparator)) return; + this.walkDirectory(this.state, resolvedPath, useRealPaths ? resolvedPath : path$1 + pathSeparator, depth - 1, this.walk); + } else { + resolvedPath = useRealPaths ? resolvedPath : path$1; + const filename = (0, path.basename)(resolvedPath); + const directoryPath$1 = normalizePath((0, path.dirname)(resolvedPath), this.state.options); + resolvedPath = this.joinPath(filename, directoryPath$1); + this.pushFile(resolvedPath, files, this.state.counts, filters); + } + }); + } + } + this.groupFiles(this.state.groups, directoryPath, files); + }; +}; + +//#endregion +//#region src/api/async.ts +function promise(root, options) { + return new Promise((resolve$1, reject) => { + callback(root, options, (err, output) => { + if (err) return reject(err); + resolve$1(output); + }); + }); +} +function callback(root, options, callback$1) { + let walker = new Walker(root, options, callback$1); + walker.start(); +} + +//#endregion +//#region src/api/sync.ts +function sync(root, options) { + const walker = new Walker(root, options); + return walker.start(); +} + +//#endregion +//#region src/builder/api-builder.ts +var APIBuilder = class { + constructor(root, options) { + this.root = root; + this.options = options; + } + withPromise() { + return promise(this.root, this.options); + } + withCallback(cb) { + callback(this.root, this.options, cb); + } + sync() { + return sync(this.root, this.options); + } +}; + +//#endregion +//#region src/builder/index.ts +let pm = null; +/* c8 ignore next 6 */ +try { + require.resolve("picomatch"); + pm = require("picomatch"); +} catch {} +var Builder = class { + globCache = {}; + options = { + maxDepth: Infinity, + suppressErrors: true, + pathSeparator: path.sep, + filters: [] + }; + globFunction; + constructor(options) { + this.options = { + ...this.options, + ...options + }; + this.globFunction = this.options.globFunction; + } + group() { + this.options.group = true; + return this; + } + withPathSeparator(separator) { + this.options.pathSeparator = separator; + return this; + } + withBasePath() { + this.options.includeBasePath = true; + return this; + } + withRelativePaths() { + this.options.relativePaths = true; + return this; + } + withDirs() { + this.options.includeDirs = true; + return this; + } + withMaxDepth(depth) { + this.options.maxDepth = depth; + return this; + } + withMaxFiles(limit) { + this.options.maxFiles = limit; + return this; + } + withFullPaths() { + this.options.resolvePaths = true; + this.options.includeBasePath = true; + return this; + } + withErrors() { + this.options.suppressErrors = false; + return this; + } + withSymlinks({ resolvePaths = true } = {}) { + this.options.resolveSymlinks = true; + this.options.useRealPaths = resolvePaths; + return this.withFullPaths(); + } + withAbortSignal(signal) { + this.options.signal = signal; + return this; + } + normalize() { + this.options.normalizePath = true; + return this; + } + filter(predicate) { + this.options.filters.push(predicate); + return this; + } + onlyDirs() { + this.options.excludeFiles = true; + this.options.includeDirs = true; + return this; + } + exclude(predicate) { + this.options.exclude = predicate; + return this; + } + onlyCounts() { + this.options.onlyCounts = true; + return this; + } + crawl(root) { + return new APIBuilder(root || ".", this.options); + } + withGlobFunction(fn) { + this.globFunction = fn; + return this; + } + /** + * @deprecated Pass options using the constructor instead: + * ```ts + * new fdir(options).crawl("/path/to/root"); + * ``` + * This method will be removed in v7.0 + */ + /* c8 ignore next 4 */ + crawlWithOptions(root, options) { + this.options = { + ...this.options, + ...options + }; + return new APIBuilder(root || ".", this.options); + } + glob(...patterns) { + if (this.globFunction) return this.globWithOptions(patterns); + return this.globWithOptions(patterns, ...[{ dot: true }]); + } + globWithOptions(patterns, ...options) { + const globFn = this.globFunction || pm; + /* c8 ignore next 5 */ + if (!globFn) throw new Error("Please specify a glob function to use glob matching."); + var isMatch = this.globCache[patterns.join("\0")]; + if (!isMatch) { + isMatch = globFn(patterns, ...options); + this.globCache[patterns.join("\0")] = isMatch; + } + this.options.filters.push((path$1) => isMatch(path$1)); + return this; + } +}; + +//#endregion +exports.fdir = Builder; \ No newline at end of file diff --git a/node_modules/fdir/dist/index.d.cts b/node_modules/fdir/dist/index.d.cts new file mode 100644 index 00000000..f448ef5d --- /dev/null +++ b/node_modules/fdir/dist/index.d.cts @@ -0,0 +1,155 @@ +/// +import * as nativeFs from "fs"; +import picomatch from "picomatch"; + +//#region src/api/aborter.d.ts +/** + * AbortController is not supported on Node 14 so we use this until we can drop + * support for Node 14. + */ +declare class Aborter { + aborted: boolean; + abort(): void; +} +//#endregion +//#region src/api/queue.d.ts +type OnQueueEmptyCallback = (error: Error | null, output: WalkerState) => void; +/** + * This is a custom stateless queue to track concurrent async fs calls. + * It increments a counter whenever a call is queued and decrements it + * as soon as it completes. When the counter hits 0, it calls onQueueEmpty. + */ +declare class Queue { + private onQueueEmpty?; + count: number; + constructor(onQueueEmpty?: OnQueueEmptyCallback | undefined); + enqueue(): number; + dequeue(error: Error | null, output: WalkerState): void; +} +//#endregion +//#region src/types.d.ts +type Counts = { + files: number; + directories: number; + /** + * @deprecated use `directories` instead. Will be removed in v7.0. + */ + dirs: number; +}; +type Group = { + directory: string; + files: string[]; + /** + * @deprecated use `directory` instead. Will be removed in v7.0. + */ + dir: string; +}; +type GroupOutput = Group[]; +type OnlyCountsOutput = Counts; +type PathsOutput = string[]; +type Output = OnlyCountsOutput | PathsOutput | GroupOutput; +type FSLike = { + readdir: typeof nativeFs.readdir; + readdirSync: typeof nativeFs.readdirSync; + realpath: typeof nativeFs.realpath; + realpathSync: typeof nativeFs.realpathSync; + stat: typeof nativeFs.stat; + statSync: typeof nativeFs.statSync; +}; +type WalkerState = { + root: string; + paths: string[]; + groups: Group[]; + counts: Counts; + options: Options; + queue: Queue; + controller: Aborter; + fs: FSLike; + symlinks: Map; + visited: string[]; +}; +type ResultCallback = (error: Error | null, output: TOutput) => void; +type FilterPredicate = (path: string, isDirectory: boolean) => boolean; +type ExcludePredicate = (dirName: string, dirPath: string) => boolean; +type PathSeparator = "/" | "\\"; +type Options = { + includeBasePath?: boolean; + includeDirs?: boolean; + normalizePath?: boolean; + maxDepth: number; + maxFiles?: number; + resolvePaths?: boolean; + suppressErrors: boolean; + group?: boolean; + onlyCounts?: boolean; + filters: FilterPredicate[]; + resolveSymlinks?: boolean; + useRealPaths?: boolean; + excludeFiles?: boolean; + excludeSymlinks?: boolean; + exclude?: ExcludePredicate; + relativePaths?: boolean; + pathSeparator: PathSeparator; + signal?: AbortSignal; + globFunction?: TGlobFunction; + fs?: FSLike; +}; +type GlobMatcher = (test: string) => boolean; +type GlobFunction = (glob: string | string[], ...params: unknown[]) => GlobMatcher; +type GlobParams = T extends ((globs: string | string[], ...params: infer TParams extends unknown[]) => GlobMatcher) ? TParams : []; +//#endregion +//#region src/builder/api-builder.d.ts +declare class APIBuilder { + private readonly root; + private readonly options; + constructor(root: string, options: Options); + withPromise(): Promise; + withCallback(cb: ResultCallback): void; + sync(): TReturnType; +} +//#endregion +//#region src/builder/index.d.ts +declare class Builder { + private readonly globCache; + private options; + private globFunction?; + constructor(options?: Partial>); + group(): Builder; + withPathSeparator(separator: "/" | "\\"): this; + withBasePath(): this; + withRelativePaths(): this; + withDirs(): this; + withMaxDepth(depth: number): this; + withMaxFiles(limit: number): this; + withFullPaths(): this; + withErrors(): this; + withSymlinks({ + resolvePaths + }?: { + resolvePaths?: boolean | undefined; + }): this; + withAbortSignal(signal: AbortSignal): this; + normalize(): this; + filter(predicate: FilterPredicate): this; + onlyDirs(): this; + exclude(predicate: ExcludePredicate): this; + onlyCounts(): Builder; + crawl(root?: string): APIBuilder; + withGlobFunction(fn: TFunc): Builder; + /** + * @deprecated Pass options using the constructor instead: + * ```ts + * new fdir(options).crawl("/path/to/root"); + * ``` + * This method will be removed in v7.0 + */ + crawlWithOptions(root: string, options: Partial>): APIBuilder; + glob(...patterns: string[]): Builder; + globWithOptions(patterns: string[]): Builder; + globWithOptions(patterns: string[], ...options: GlobParams): Builder; +} +//#endregion +//#region src/index.d.ts +type Fdir = typeof Builder; +//#endregion +export { Counts, ExcludePredicate, FSLike, Fdir, FilterPredicate, GlobFunction, GlobMatcher, GlobParams, Group, GroupOutput, OnlyCountsOutput, Options, Output, PathSeparator, PathsOutput, ResultCallback, WalkerState, Builder as fdir }; \ No newline at end of file diff --git a/node_modules/fdir/dist/index.d.mts b/node_modules/fdir/dist/index.d.mts new file mode 100644 index 00000000..f448ef5d --- /dev/null +++ b/node_modules/fdir/dist/index.d.mts @@ -0,0 +1,155 @@ +/// +import * as nativeFs from "fs"; +import picomatch from "picomatch"; + +//#region src/api/aborter.d.ts +/** + * AbortController is not supported on Node 14 so we use this until we can drop + * support for Node 14. + */ +declare class Aborter { + aborted: boolean; + abort(): void; +} +//#endregion +//#region src/api/queue.d.ts +type OnQueueEmptyCallback = (error: Error | null, output: WalkerState) => void; +/** + * This is a custom stateless queue to track concurrent async fs calls. + * It increments a counter whenever a call is queued and decrements it + * as soon as it completes. When the counter hits 0, it calls onQueueEmpty. + */ +declare class Queue { + private onQueueEmpty?; + count: number; + constructor(onQueueEmpty?: OnQueueEmptyCallback | undefined); + enqueue(): number; + dequeue(error: Error | null, output: WalkerState): void; +} +//#endregion +//#region src/types.d.ts +type Counts = { + files: number; + directories: number; + /** + * @deprecated use `directories` instead. Will be removed in v7.0. + */ + dirs: number; +}; +type Group = { + directory: string; + files: string[]; + /** + * @deprecated use `directory` instead. Will be removed in v7.0. + */ + dir: string; +}; +type GroupOutput = Group[]; +type OnlyCountsOutput = Counts; +type PathsOutput = string[]; +type Output = OnlyCountsOutput | PathsOutput | GroupOutput; +type FSLike = { + readdir: typeof nativeFs.readdir; + readdirSync: typeof nativeFs.readdirSync; + realpath: typeof nativeFs.realpath; + realpathSync: typeof nativeFs.realpathSync; + stat: typeof nativeFs.stat; + statSync: typeof nativeFs.statSync; +}; +type WalkerState = { + root: string; + paths: string[]; + groups: Group[]; + counts: Counts; + options: Options; + queue: Queue; + controller: Aborter; + fs: FSLike; + symlinks: Map; + visited: string[]; +}; +type ResultCallback = (error: Error | null, output: TOutput) => void; +type FilterPredicate = (path: string, isDirectory: boolean) => boolean; +type ExcludePredicate = (dirName: string, dirPath: string) => boolean; +type PathSeparator = "/" | "\\"; +type Options = { + includeBasePath?: boolean; + includeDirs?: boolean; + normalizePath?: boolean; + maxDepth: number; + maxFiles?: number; + resolvePaths?: boolean; + suppressErrors: boolean; + group?: boolean; + onlyCounts?: boolean; + filters: FilterPredicate[]; + resolveSymlinks?: boolean; + useRealPaths?: boolean; + excludeFiles?: boolean; + excludeSymlinks?: boolean; + exclude?: ExcludePredicate; + relativePaths?: boolean; + pathSeparator: PathSeparator; + signal?: AbortSignal; + globFunction?: TGlobFunction; + fs?: FSLike; +}; +type GlobMatcher = (test: string) => boolean; +type GlobFunction = (glob: string | string[], ...params: unknown[]) => GlobMatcher; +type GlobParams = T extends ((globs: string | string[], ...params: infer TParams extends unknown[]) => GlobMatcher) ? TParams : []; +//#endregion +//#region src/builder/api-builder.d.ts +declare class APIBuilder { + private readonly root; + private readonly options; + constructor(root: string, options: Options); + withPromise(): Promise; + withCallback(cb: ResultCallback): void; + sync(): TReturnType; +} +//#endregion +//#region src/builder/index.d.ts +declare class Builder { + private readonly globCache; + private options; + private globFunction?; + constructor(options?: Partial>); + group(): Builder; + withPathSeparator(separator: "/" | "\\"): this; + withBasePath(): this; + withRelativePaths(): this; + withDirs(): this; + withMaxDepth(depth: number): this; + withMaxFiles(limit: number): this; + withFullPaths(): this; + withErrors(): this; + withSymlinks({ + resolvePaths + }?: { + resolvePaths?: boolean | undefined; + }): this; + withAbortSignal(signal: AbortSignal): this; + normalize(): this; + filter(predicate: FilterPredicate): this; + onlyDirs(): this; + exclude(predicate: ExcludePredicate): this; + onlyCounts(): Builder; + crawl(root?: string): APIBuilder; + withGlobFunction(fn: TFunc): Builder; + /** + * @deprecated Pass options using the constructor instead: + * ```ts + * new fdir(options).crawl("/path/to/root"); + * ``` + * This method will be removed in v7.0 + */ + crawlWithOptions(root: string, options: Partial>): APIBuilder; + glob(...patterns: string[]): Builder; + globWithOptions(patterns: string[]): Builder; + globWithOptions(patterns: string[], ...options: GlobParams): Builder; +} +//#endregion +//#region src/index.d.ts +type Fdir = typeof Builder; +//#endregion +export { Counts, ExcludePredicate, FSLike, Fdir, FilterPredicate, GlobFunction, GlobMatcher, GlobParams, Group, GroupOutput, OnlyCountsOutput, Options, Output, PathSeparator, PathsOutput, ResultCallback, WalkerState, Builder as fdir }; \ No newline at end of file diff --git a/node_modules/fdir/dist/index.mjs b/node_modules/fdir/dist/index.mjs new file mode 100644 index 00000000..5c37e092 --- /dev/null +++ b/node_modules/fdir/dist/index.mjs @@ -0,0 +1,570 @@ +import { createRequire } from "module"; +import { basename, dirname, normalize, relative, resolve, sep } from "path"; +import * as nativeFs from "fs"; + +//#region rolldown:runtime +var __require = /* @__PURE__ */ createRequire(import.meta.url); + +//#endregion +//#region src/utils.ts +function cleanPath(path) { + let normalized = normalize(path); + if (normalized.length > 1 && normalized[normalized.length - 1] === sep) normalized = normalized.substring(0, normalized.length - 1); + return normalized; +} +const SLASHES_REGEX = /[\\/]/g; +function convertSlashes(path, separator) { + return path.replace(SLASHES_REGEX, separator); +} +const WINDOWS_ROOT_DIR_REGEX = /^[a-z]:[\\/]$/i; +function isRootDirectory(path) { + return path === "/" || WINDOWS_ROOT_DIR_REGEX.test(path); +} +function normalizePath(path, options) { + const { resolvePaths, normalizePath: normalizePath$1, pathSeparator } = options; + const pathNeedsCleaning = process.platform === "win32" && path.includes("/") || path.startsWith("."); + if (resolvePaths) path = resolve(path); + if (normalizePath$1 || pathNeedsCleaning) path = cleanPath(path); + if (path === ".") return ""; + const needsSeperator = path[path.length - 1] !== pathSeparator; + return convertSlashes(needsSeperator ? path + pathSeparator : path, pathSeparator); +} + +//#endregion +//#region src/api/functions/join-path.ts +function joinPathWithBasePath(filename, directoryPath) { + return directoryPath + filename; +} +function joinPathWithRelativePath(root, options) { + return function(filename, directoryPath) { + const sameRoot = directoryPath.startsWith(root); + if (sameRoot) return directoryPath.slice(root.length) + filename; + else return convertSlashes(relative(root, directoryPath), options.pathSeparator) + options.pathSeparator + filename; + }; +} +function joinPath(filename) { + return filename; +} +function joinDirectoryPath(filename, directoryPath, separator) { + return directoryPath + filename + separator; +} +function build$7(root, options) { + const { relativePaths, includeBasePath } = options; + return relativePaths && root ? joinPathWithRelativePath(root, options) : includeBasePath ? joinPathWithBasePath : joinPath; +} + +//#endregion +//#region src/api/functions/push-directory.ts +function pushDirectoryWithRelativePath(root) { + return function(directoryPath, paths) { + paths.push(directoryPath.substring(root.length) || "."); + }; +} +function pushDirectoryFilterWithRelativePath(root) { + return function(directoryPath, paths, filters) { + const relativePath = directoryPath.substring(root.length) || "."; + if (filters.every((filter) => filter(relativePath, true))) paths.push(relativePath); + }; +} +const pushDirectory = (directoryPath, paths) => { + paths.push(directoryPath || "."); +}; +const pushDirectoryFilter = (directoryPath, paths, filters) => { + const path = directoryPath || "."; + if (filters.every((filter) => filter(path, true))) paths.push(path); +}; +const empty$2 = () => {}; +function build$6(root, options) { + const { includeDirs, filters, relativePaths } = options; + if (!includeDirs) return empty$2; + if (relativePaths) return filters && filters.length ? pushDirectoryFilterWithRelativePath(root) : pushDirectoryWithRelativePath(root); + return filters && filters.length ? pushDirectoryFilter : pushDirectory; +} + +//#endregion +//#region src/api/functions/push-file.ts +const pushFileFilterAndCount = (filename, _paths, counts, filters) => { + if (filters.every((filter) => filter(filename, false))) counts.files++; +}; +const pushFileFilter = (filename, paths, _counts, filters) => { + if (filters.every((filter) => filter(filename, false))) paths.push(filename); +}; +const pushFileCount = (_filename, _paths, counts, _filters) => { + counts.files++; +}; +const pushFile = (filename, paths) => { + paths.push(filename); +}; +const empty$1 = () => {}; +function build$5(options) { + const { excludeFiles, filters, onlyCounts } = options; + if (excludeFiles) return empty$1; + if (filters && filters.length) return onlyCounts ? pushFileFilterAndCount : pushFileFilter; + else if (onlyCounts) return pushFileCount; + else return pushFile; +} + +//#endregion +//#region src/api/functions/get-array.ts +const getArray = (paths) => { + return paths; +}; +const getArrayGroup = () => { + return [""].slice(0, 0); +}; +function build$4(options) { + return options.group ? getArrayGroup : getArray; +} + +//#endregion +//#region src/api/functions/group-files.ts +const groupFiles = (groups, directory, files) => { + groups.push({ + directory, + files, + dir: directory + }); +}; +const empty = () => {}; +function build$3(options) { + return options.group ? groupFiles : empty; +} + +//#endregion +//#region src/api/functions/resolve-symlink.ts +const resolveSymlinksAsync = function(path, state, callback$1) { + const { queue, fs, options: { suppressErrors } } = state; + queue.enqueue(); + fs.realpath(path, (error, resolvedPath) => { + if (error) return queue.dequeue(suppressErrors ? null : error, state); + fs.stat(resolvedPath, (error$1, stat) => { + if (error$1) return queue.dequeue(suppressErrors ? null : error$1, state); + if (stat.isDirectory() && isRecursive(path, resolvedPath, state)) return queue.dequeue(null, state); + callback$1(stat, resolvedPath); + queue.dequeue(null, state); + }); + }); +}; +const resolveSymlinks = function(path, state, callback$1) { + const { queue, fs, options: { suppressErrors } } = state; + queue.enqueue(); + try { + const resolvedPath = fs.realpathSync(path); + const stat = fs.statSync(resolvedPath); + if (stat.isDirectory() && isRecursive(path, resolvedPath, state)) return; + callback$1(stat, resolvedPath); + } catch (e) { + if (!suppressErrors) throw e; + } +}; +function build$2(options, isSynchronous) { + if (!options.resolveSymlinks || options.excludeSymlinks) return null; + return isSynchronous ? resolveSymlinks : resolveSymlinksAsync; +} +function isRecursive(path, resolved, state) { + if (state.options.useRealPaths) return isRecursiveUsingRealPaths(resolved, state); + let parent = dirname(path); + let depth = 1; + while (parent !== state.root && depth < 2) { + const resolvedPath = state.symlinks.get(parent); + const isSameRoot = !!resolvedPath && (resolvedPath === resolved || resolvedPath.startsWith(resolved) || resolved.startsWith(resolvedPath)); + if (isSameRoot) depth++; + else parent = dirname(parent); + } + state.symlinks.set(path, resolved); + return depth > 1; +} +function isRecursiveUsingRealPaths(resolved, state) { + return state.visited.includes(resolved + state.options.pathSeparator); +} + +//#endregion +//#region src/api/functions/invoke-callback.ts +const onlyCountsSync = (state) => { + return state.counts; +}; +const groupsSync = (state) => { + return state.groups; +}; +const defaultSync = (state) => { + return state.paths; +}; +const limitFilesSync = (state) => { + return state.paths.slice(0, state.options.maxFiles); +}; +const onlyCountsAsync = (state, error, callback$1) => { + report(error, callback$1, state.counts, state.options.suppressErrors); + return null; +}; +const defaultAsync = (state, error, callback$1) => { + report(error, callback$1, state.paths, state.options.suppressErrors); + return null; +}; +const limitFilesAsync = (state, error, callback$1) => { + report(error, callback$1, state.paths.slice(0, state.options.maxFiles), state.options.suppressErrors); + return null; +}; +const groupsAsync = (state, error, callback$1) => { + report(error, callback$1, state.groups, state.options.suppressErrors); + return null; +}; +function report(error, callback$1, output, suppressErrors) { + if (error && !suppressErrors) callback$1(error, output); + else callback$1(null, output); +} +function build$1(options, isSynchronous) { + const { onlyCounts, group, maxFiles } = options; + if (onlyCounts) return isSynchronous ? onlyCountsSync : onlyCountsAsync; + else if (group) return isSynchronous ? groupsSync : groupsAsync; + else if (maxFiles) return isSynchronous ? limitFilesSync : limitFilesAsync; + else return isSynchronous ? defaultSync : defaultAsync; +} + +//#endregion +//#region src/api/functions/walk-directory.ts +const readdirOpts = { withFileTypes: true }; +const walkAsync = (state, crawlPath, directoryPath, currentDepth, callback$1) => { + state.queue.enqueue(); + if (currentDepth < 0) return state.queue.dequeue(null, state); + const { fs } = state; + state.visited.push(crawlPath); + state.counts.directories++; + fs.readdir(crawlPath || ".", readdirOpts, (error, entries = []) => { + callback$1(entries, directoryPath, currentDepth); + state.queue.dequeue(state.options.suppressErrors ? null : error, state); + }); +}; +const walkSync = (state, crawlPath, directoryPath, currentDepth, callback$1) => { + const { fs } = state; + if (currentDepth < 0) return; + state.visited.push(crawlPath); + state.counts.directories++; + let entries = []; + try { + entries = fs.readdirSync(crawlPath || ".", readdirOpts); + } catch (e) { + if (!state.options.suppressErrors) throw e; + } + callback$1(entries, directoryPath, currentDepth); +}; +function build(isSynchronous) { + return isSynchronous ? walkSync : walkAsync; +} + +//#endregion +//#region src/api/queue.ts +/** +* This is a custom stateless queue to track concurrent async fs calls. +* It increments a counter whenever a call is queued and decrements it +* as soon as it completes. When the counter hits 0, it calls onQueueEmpty. +*/ +var Queue = class { + count = 0; + constructor(onQueueEmpty) { + this.onQueueEmpty = onQueueEmpty; + } + enqueue() { + this.count++; + return this.count; + } + dequeue(error, output) { + if (this.onQueueEmpty && (--this.count <= 0 || error)) { + this.onQueueEmpty(error, output); + if (error) { + output.controller.abort(); + this.onQueueEmpty = void 0; + } + } + } +}; + +//#endregion +//#region src/api/counter.ts +var Counter = class { + _files = 0; + _directories = 0; + set files(num) { + this._files = num; + } + get files() { + return this._files; + } + set directories(num) { + this._directories = num; + } + get directories() { + return this._directories; + } + /** + * @deprecated use `directories` instead + */ + /* c8 ignore next 3 */ + get dirs() { + return this._directories; + } +}; + +//#endregion +//#region src/api/aborter.ts +/** +* AbortController is not supported on Node 14 so we use this until we can drop +* support for Node 14. +*/ +var Aborter = class { + aborted = false; + abort() { + this.aborted = true; + } +}; + +//#endregion +//#region src/api/walker.ts +var Walker = class { + root; + isSynchronous; + state; + joinPath; + pushDirectory; + pushFile; + getArray; + groupFiles; + resolveSymlink; + walkDirectory; + callbackInvoker; + constructor(root, options, callback$1) { + this.isSynchronous = !callback$1; + this.callbackInvoker = build$1(options, this.isSynchronous); + this.root = normalizePath(root, options); + this.state = { + root: isRootDirectory(this.root) ? this.root : this.root.slice(0, -1), + paths: [""].slice(0, 0), + groups: [], + counts: new Counter(), + options, + queue: new Queue((error, state) => this.callbackInvoker(state, error, callback$1)), + symlinks: /* @__PURE__ */ new Map(), + visited: [""].slice(0, 0), + controller: new Aborter(), + fs: options.fs || nativeFs + }; + this.joinPath = build$7(this.root, options); + this.pushDirectory = build$6(this.root, options); + this.pushFile = build$5(options); + this.getArray = build$4(options); + this.groupFiles = build$3(options); + this.resolveSymlink = build$2(options, this.isSynchronous); + this.walkDirectory = build(this.isSynchronous); + } + start() { + this.pushDirectory(this.root, this.state.paths, this.state.options.filters); + this.walkDirectory(this.state, this.root, this.root, this.state.options.maxDepth, this.walk); + return this.isSynchronous ? this.callbackInvoker(this.state, null) : null; + } + walk = (entries, directoryPath, depth) => { + const { paths, options: { filters, resolveSymlinks: resolveSymlinks$1, excludeSymlinks, exclude, maxFiles, signal, useRealPaths, pathSeparator }, controller } = this.state; + if (controller.aborted || signal && signal.aborted || maxFiles && paths.length > maxFiles) return; + const files = this.getArray(this.state.paths); + for (let i = 0; i < entries.length; ++i) { + const entry = entries[i]; + if (entry.isFile() || entry.isSymbolicLink() && !resolveSymlinks$1 && !excludeSymlinks) { + const filename = this.joinPath(entry.name, directoryPath); + this.pushFile(filename, files, this.state.counts, filters); + } else if (entry.isDirectory()) { + let path = joinDirectoryPath(entry.name, directoryPath, this.state.options.pathSeparator); + if (exclude && exclude(entry.name, path)) continue; + this.pushDirectory(path, paths, filters); + this.walkDirectory(this.state, path, path, depth - 1, this.walk); + } else if (this.resolveSymlink && entry.isSymbolicLink()) { + let path = joinPathWithBasePath(entry.name, directoryPath); + this.resolveSymlink(path, this.state, (stat, resolvedPath) => { + if (stat.isDirectory()) { + resolvedPath = normalizePath(resolvedPath, this.state.options); + if (exclude && exclude(entry.name, useRealPaths ? resolvedPath : path + pathSeparator)) return; + this.walkDirectory(this.state, resolvedPath, useRealPaths ? resolvedPath : path + pathSeparator, depth - 1, this.walk); + } else { + resolvedPath = useRealPaths ? resolvedPath : path; + const filename = basename(resolvedPath); + const directoryPath$1 = normalizePath(dirname(resolvedPath), this.state.options); + resolvedPath = this.joinPath(filename, directoryPath$1); + this.pushFile(resolvedPath, files, this.state.counts, filters); + } + }); + } + } + this.groupFiles(this.state.groups, directoryPath, files); + }; +}; + +//#endregion +//#region src/api/async.ts +function promise(root, options) { + return new Promise((resolve$1, reject) => { + callback(root, options, (err, output) => { + if (err) return reject(err); + resolve$1(output); + }); + }); +} +function callback(root, options, callback$1) { + let walker = new Walker(root, options, callback$1); + walker.start(); +} + +//#endregion +//#region src/api/sync.ts +function sync(root, options) { + const walker = new Walker(root, options); + return walker.start(); +} + +//#endregion +//#region src/builder/api-builder.ts +var APIBuilder = class { + constructor(root, options) { + this.root = root; + this.options = options; + } + withPromise() { + return promise(this.root, this.options); + } + withCallback(cb) { + callback(this.root, this.options, cb); + } + sync() { + return sync(this.root, this.options); + } +}; + +//#endregion +//#region src/builder/index.ts +let pm = null; +/* c8 ignore next 6 */ +try { + __require.resolve("picomatch"); + pm = __require("picomatch"); +} catch {} +var Builder = class { + globCache = {}; + options = { + maxDepth: Infinity, + suppressErrors: true, + pathSeparator: sep, + filters: [] + }; + globFunction; + constructor(options) { + this.options = { + ...this.options, + ...options + }; + this.globFunction = this.options.globFunction; + } + group() { + this.options.group = true; + return this; + } + withPathSeparator(separator) { + this.options.pathSeparator = separator; + return this; + } + withBasePath() { + this.options.includeBasePath = true; + return this; + } + withRelativePaths() { + this.options.relativePaths = true; + return this; + } + withDirs() { + this.options.includeDirs = true; + return this; + } + withMaxDepth(depth) { + this.options.maxDepth = depth; + return this; + } + withMaxFiles(limit) { + this.options.maxFiles = limit; + return this; + } + withFullPaths() { + this.options.resolvePaths = true; + this.options.includeBasePath = true; + return this; + } + withErrors() { + this.options.suppressErrors = false; + return this; + } + withSymlinks({ resolvePaths = true } = {}) { + this.options.resolveSymlinks = true; + this.options.useRealPaths = resolvePaths; + return this.withFullPaths(); + } + withAbortSignal(signal) { + this.options.signal = signal; + return this; + } + normalize() { + this.options.normalizePath = true; + return this; + } + filter(predicate) { + this.options.filters.push(predicate); + return this; + } + onlyDirs() { + this.options.excludeFiles = true; + this.options.includeDirs = true; + return this; + } + exclude(predicate) { + this.options.exclude = predicate; + return this; + } + onlyCounts() { + this.options.onlyCounts = true; + return this; + } + crawl(root) { + return new APIBuilder(root || ".", this.options); + } + withGlobFunction(fn) { + this.globFunction = fn; + return this; + } + /** + * @deprecated Pass options using the constructor instead: + * ```ts + * new fdir(options).crawl("/path/to/root"); + * ``` + * This method will be removed in v7.0 + */ + /* c8 ignore next 4 */ + crawlWithOptions(root, options) { + this.options = { + ...this.options, + ...options + }; + return new APIBuilder(root || ".", this.options); + } + glob(...patterns) { + if (this.globFunction) return this.globWithOptions(patterns); + return this.globWithOptions(patterns, ...[{ dot: true }]); + } + globWithOptions(patterns, ...options) { + const globFn = this.globFunction || pm; + /* c8 ignore next 5 */ + if (!globFn) throw new Error("Please specify a glob function to use glob matching."); + var isMatch = this.globCache[patterns.join("\0")]; + if (!isMatch) { + isMatch = globFn(patterns, ...options); + this.globCache[patterns.join("\0")] = isMatch; + } + this.options.filters.push((path) => isMatch(path)); + return this; + } +}; + +//#endregion +export { Builder as fdir }; \ No newline at end of file diff --git a/node_modules/fdir/package.json b/node_modules/fdir/package.json new file mode 100644 index 00000000..e229dff8 --- /dev/null +++ b/node_modules/fdir/package.json @@ -0,0 +1,103 @@ +{ + "name": "fdir", + "version": "6.5.0", + "description": "The fastest directory crawler & globbing alternative to glob, fast-glob, & tiny-glob. Crawls 1m files in < 1s", + "main": "./dist/index.cjs", + "types": "./dist/index.d.cts", + "type": "module", + "scripts": { + "prepublishOnly": "npm run test && npm run build", + "build": "tsdown", + "format": "prettier --write src __tests__ benchmarks", + "test": "vitest run __tests__/", + "test:coverage": "vitest run --coverage __tests__/", + "test:watch": "vitest __tests__/", + "bench": "ts-node benchmarks/benchmark.js", + "bench:glob": "ts-node benchmarks/glob-benchmark.ts", + "bench:fdir": "ts-node benchmarks/fdir-benchmark.ts", + "release": "./scripts/release.sh" + }, + "engines": { + "node": ">=12.0.0" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/thecodrr/fdir.git" + }, + "keywords": [ + "util", + "os", + "sys", + "fs", + "walk", + "crawler", + "directory", + "files", + "io", + "tiny-glob", + "glob", + "fast-glob", + "speed", + "javascript", + "nodejs" + ], + "author": "thecodrr ", + "license": "MIT", + "bugs": { + "url": "https://github.com/thecodrr/fdir/issues" + }, + "homepage": "https://github.com/thecodrr/fdir#readme", + "devDependencies": { + "@types/glob": "^8.1.0", + "@types/mock-fs": "^4.13.4", + "@types/node": "^20.9.4", + "@types/picomatch": "^4.0.0", + "@types/tap": "^15.0.11", + "@vitest/coverage-v8": "^0.34.6", + "all-files-in-tree": "^1.1.2", + "benny": "^3.7.1", + "csv-to-markdown-table": "^1.3.1", + "expect": "^29.7.0", + "fast-glob": "^3.3.2", + "fdir1": "npm:fdir@1.2.0", + "fdir2": "npm:fdir@2.1.0", + "fdir3": "npm:fdir@3.4.2", + "fdir4": "npm:fdir@4.1.0", + "fdir5": "npm:fdir@5.0.0", + "fs-readdir-recursive": "^1.1.0", + "get-all-files": "^4.1.0", + "glob": "^10.3.10", + "klaw-sync": "^6.0.0", + "mock-fs": "^5.2.0", + "picomatch": "^4.0.2", + "prettier": "^3.5.3", + "recur-readdir": "0.0.1", + "recursive-files": "^1.0.2", + "recursive-fs": "^2.1.0", + "recursive-readdir": "^2.2.3", + "rrdir": "^12.1.0", + "systeminformation": "^5.21.17", + "tiny-glob": "^0.2.9", + "ts-node": "^10.9.1", + "tsdown": "^0.12.5", + "typescript": "^5.3.2", + "vitest": "^0.34.6", + "walk-sync": "^3.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + }, + "module": "./dist/index.mjs", + "exports": { + ".": { + "import": "./dist/index.mjs", + "require": "./dist/index.cjs" + }, + "./package.json": "./package.json" + } +} diff --git a/node_modules/graceful-fs/LICENSE b/node_modules/graceful-fs/LICENSE new file mode 100644 index 00000000..e906a25a --- /dev/null +++ b/node_modules/graceful-fs/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) 2011-2022 Isaac Z. Schlueter, Ben Noordhuis, and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/graceful-fs/README.md b/node_modules/graceful-fs/README.md new file mode 100644 index 00000000..82d6e4da --- /dev/null +++ b/node_modules/graceful-fs/README.md @@ -0,0 +1,143 @@ +# graceful-fs + +graceful-fs functions as a drop-in replacement for the fs module, +making various improvements. + +The improvements are meant to normalize behavior across different +platforms and environments, and to make filesystem access more +resilient to errors. + +## Improvements over [fs module](https://nodejs.org/api/fs.html) + +* Queues up `open` and `readdir` calls, and retries them once + something closes if there is an EMFILE error from too many file + descriptors. +* fixes `lchmod` for Node versions prior to 0.6.2. +* implements `fs.lutimes` if possible. Otherwise it becomes a noop. +* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or + `lchown` if the user isn't root. +* makes `lchmod` and `lchown` become noops, if not available. +* retries reading a file if `read` results in EAGAIN error. + +On Windows, it retries renaming a file for up to one second if `EACCESS` +or `EPERM` error occurs, likely because antivirus software has locked +the directory. + +## USAGE + +```javascript +// use just like fs +var fs = require('graceful-fs') + +// now go and do stuff with it... +fs.readFile('some-file-or-whatever', (err, data) => { + // Do stuff here. +}) +``` + +## Sync methods + +This module cannot intercept or handle `EMFILE` or `ENFILE` errors from sync +methods. If you use sync methods which open file descriptors then you are +responsible for dealing with any errors. + +This is a known limitation, not a bug. + +## Global Patching + +If you want to patch the global fs module (or any other fs-like +module) you can do this: + +```javascript +// Make sure to read the caveat below. +var realFs = require('fs') +var gracefulFs = require('graceful-fs') +gracefulFs.gracefulify(realFs) +``` + +This should only ever be done at the top-level application layer, in +order to delay on EMFILE errors from any fs-using dependencies. You +should **not** do this in a library, because it can cause unexpected +delays in other parts of the program. + +## Changes + +This module is fairly stable at this point, and used by a lot of +things. That being said, because it implements a subtle behavior +change in a core part of the node API, even modest changes can be +extremely breaking, and the versioning is thus biased towards +bumping the major when in doubt. + +The main change between major versions has been switching between +providing a fully-patched `fs` module vs monkey-patching the node core +builtin, and the approach by which a non-monkey-patched `fs` was +created. + +The goal is to trade `EMFILE` errors for slower fs operations. So, if +you try to open a zillion files, rather than crashing, `open` +operations will be queued up and wait for something else to `close`. + +There are advantages to each approach. Monkey-patching the fs means +that no `EMFILE` errors can possibly occur anywhere in your +application, because everything is using the same core `fs` module, +which is patched. However, it can also obviously cause undesirable +side-effects, especially if the module is loaded multiple times. + +Implementing a separate-but-identical patched `fs` module is more +surgical (and doesn't run the risk of patching multiple times), but +also imposes the challenge of keeping in sync with the core module. + +The current approach loads the `fs` module, and then creates a +lookalike object that has all the same methods, except a few that are +patched. It is safe to use in all versions of Node from 0.8 through +7.0. + +### v4 + +* Do not monkey-patch the fs module. This module may now be used as a + drop-in dep, and users can opt into monkey-patching the fs builtin + if their app requires it. + +### v3 + +* Monkey-patch fs, because the eval approach no longer works on recent + node. +* fixed possible type-error throw if rename fails on windows +* verify that we *never* get EMFILE errors +* Ignore ENOSYS from chmod/chown +* clarify that graceful-fs must be used as a drop-in + +### v2.1.0 + +* Use eval rather than monkey-patching fs. +* readdir: Always sort the results +* win32: requeue a file if error has an OK status + +### v2.0 + +* A return to monkey patching +* wrap process.cwd + +### v1.1 + +* wrap readFile +* Wrap fs.writeFile. +* readdir protection +* Don't clobber the fs builtin +* Handle fs.read EAGAIN errors by trying again +* Expose the curOpen counter +* No-op lchown/lchmod if not implemented +* fs.rename patch only for win32 +* Patch fs.rename to handle AV software on Windows +* Close #4 Chown should not fail on einval or eperm if non-root +* Fix isaacs/fstream#1 Only wrap fs one time +* Fix #3 Start at 1024 max files, then back off on EMFILE +* lutimes that doens't blow up on Linux +* A full on-rewrite using a queue instead of just swallowing the EMFILE error +* Wrap Read/Write streams as well + +### 1.0 + +* Update engines for node 0.6 +* Be lstat-graceful on Windows +* first diff --git a/node_modules/graceful-fs/clone.js b/node_modules/graceful-fs/clone.js new file mode 100644 index 00000000..dff3cc8c --- /dev/null +++ b/node_modules/graceful-fs/clone.js @@ -0,0 +1,23 @@ +'use strict' + +module.exports = clone + +var getPrototypeOf = Object.getPrototypeOf || function (obj) { + return obj.__proto__ +} + +function clone (obj) { + if (obj === null || typeof obj !== 'object') + return obj + + if (obj instanceof Object) + var copy = { __proto__: getPrototypeOf(obj) } + else + var copy = Object.create(null) + + Object.getOwnPropertyNames(obj).forEach(function (key) { + Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key)) + }) + + return copy +} diff --git a/node_modules/graceful-fs/graceful-fs.js b/node_modules/graceful-fs/graceful-fs.js new file mode 100644 index 00000000..8d5b89e4 --- /dev/null +++ b/node_modules/graceful-fs/graceful-fs.js @@ -0,0 +1,448 @@ +var fs = require('fs') +var polyfills = require('./polyfills.js') +var legacy = require('./legacy-streams.js') +var clone = require('./clone.js') + +var util = require('util') + +/* istanbul ignore next - node 0.x polyfill */ +var gracefulQueue +var previousSymbol + +/* istanbul ignore else - node 0.x polyfill */ +if (typeof Symbol === 'function' && typeof Symbol.for === 'function') { + gracefulQueue = Symbol.for('graceful-fs.queue') + // This is used in testing by future versions + previousSymbol = Symbol.for('graceful-fs.previous') +} else { + gracefulQueue = '___graceful-fs.queue' + previousSymbol = '___graceful-fs.previous' +} + +function noop () {} + +function publishQueue(context, queue) { + Object.defineProperty(context, gracefulQueue, { + get: function() { + return queue + } + }) +} + +var debug = noop +if (util.debuglog) + debug = util.debuglog('gfs4') +else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) + debug = function() { + var m = util.format.apply(util, arguments) + m = 'GFS4: ' + m.split(/\n/).join('\nGFS4: ') + console.error(m) + } + +// Once time initialization +if (!fs[gracefulQueue]) { + // This queue can be shared by multiple loaded instances + var queue = global[gracefulQueue] || [] + publishQueue(fs, queue) + + // Patch fs.close/closeSync to shared queue version, because we need + // to retry() whenever a close happens *anywhere* in the program. + // This is essential when multiple graceful-fs instances are + // in play at the same time. + fs.close = (function (fs$close) { + function close (fd, cb) { + return fs$close.call(fs, fd, function (err) { + // This function uses the graceful-fs shared queue + if (!err) { + resetQueue() + } + + if (typeof cb === 'function') + cb.apply(this, arguments) + }) + } + + Object.defineProperty(close, previousSymbol, { + value: fs$close + }) + return close + })(fs.close) + + fs.closeSync = (function (fs$closeSync) { + function closeSync (fd) { + // This function uses the graceful-fs shared queue + fs$closeSync.apply(fs, arguments) + resetQueue() + } + + Object.defineProperty(closeSync, previousSymbol, { + value: fs$closeSync + }) + return closeSync + })(fs.closeSync) + + if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) { + process.on('exit', function() { + debug(fs[gracefulQueue]) + require('assert').equal(fs[gracefulQueue].length, 0) + }) + } +} + +if (!global[gracefulQueue]) { + publishQueue(global, fs[gracefulQueue]); +} + +module.exports = patch(clone(fs)) +if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) { + module.exports = patch(fs) + fs.__patched = true; +} + +function patch (fs) { + // Everything that references the open() function needs to be in here + polyfills(fs) + fs.gracefulify = patch + + fs.createReadStream = createReadStream + fs.createWriteStream = createWriteStream + var fs$readFile = fs.readFile + fs.readFile = readFile + function readFile (path, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + return go$readFile(path, options, cb) + + function go$readFile (path, options, cb, startTime) { + return fs$readFile(path, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + var fs$writeFile = fs.writeFile + fs.writeFile = writeFile + function writeFile (path, data, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + return go$writeFile(path, data, options, cb) + + function go$writeFile (path, data, options, cb, startTime) { + return fs$writeFile(path, data, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + var fs$appendFile = fs.appendFile + if (fs$appendFile) + fs.appendFile = appendFile + function appendFile (path, data, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + return go$appendFile(path, data, options, cb) + + function go$appendFile (path, data, options, cb, startTime) { + return fs$appendFile(path, data, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + var fs$copyFile = fs.copyFile + if (fs$copyFile) + fs.copyFile = copyFile + function copyFile (src, dest, flags, cb) { + if (typeof flags === 'function') { + cb = flags + flags = 0 + } + return go$copyFile(src, dest, flags, cb) + + function go$copyFile (src, dest, flags, cb, startTime) { + return fs$copyFile(src, dest, flags, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + var fs$readdir = fs.readdir + fs.readdir = readdir + var noReaddirOptionVersions = /^v[0-5]\./ + function readdir (path, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + var go$readdir = noReaddirOptionVersions.test(process.version) + ? function go$readdir (path, options, cb, startTime) { + return fs$readdir(path, fs$readdirCallback( + path, options, cb, startTime + )) + } + : function go$readdir (path, options, cb, startTime) { + return fs$readdir(path, options, fs$readdirCallback( + path, options, cb, startTime + )) + } + + return go$readdir(path, options, cb) + + function fs$readdirCallback (path, options, cb, startTime) { + return function (err, files) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([ + go$readdir, + [path, options, cb], + err, + startTime || Date.now(), + Date.now() + ]) + else { + if (files && files.sort) + files.sort() + + if (typeof cb === 'function') + cb.call(this, err, files) + } + } + } + } + + if (process.version.substr(0, 4) === 'v0.8') { + var legStreams = legacy(fs) + ReadStream = legStreams.ReadStream + WriteStream = legStreams.WriteStream + } + + var fs$ReadStream = fs.ReadStream + if (fs$ReadStream) { + ReadStream.prototype = Object.create(fs$ReadStream.prototype) + ReadStream.prototype.open = ReadStream$open + } + + var fs$WriteStream = fs.WriteStream + if (fs$WriteStream) { + WriteStream.prototype = Object.create(fs$WriteStream.prototype) + WriteStream.prototype.open = WriteStream$open + } + + Object.defineProperty(fs, 'ReadStream', { + get: function () { + return ReadStream + }, + set: function (val) { + ReadStream = val + }, + enumerable: true, + configurable: true + }) + Object.defineProperty(fs, 'WriteStream', { + get: function () { + return WriteStream + }, + set: function (val) { + WriteStream = val + }, + enumerable: true, + configurable: true + }) + + // legacy names + var FileReadStream = ReadStream + Object.defineProperty(fs, 'FileReadStream', { + get: function () { + return FileReadStream + }, + set: function (val) { + FileReadStream = val + }, + enumerable: true, + configurable: true + }) + var FileWriteStream = WriteStream + Object.defineProperty(fs, 'FileWriteStream', { + get: function () { + return FileWriteStream + }, + set: function (val) { + FileWriteStream = val + }, + enumerable: true, + configurable: true + }) + + function ReadStream (path, options) { + if (this instanceof ReadStream) + return fs$ReadStream.apply(this, arguments), this + else + return ReadStream.apply(Object.create(ReadStream.prototype), arguments) + } + + function ReadStream$open () { + var that = this + open(that.path, that.flags, that.mode, function (err, fd) { + if (err) { + if (that.autoClose) + that.destroy() + + that.emit('error', err) + } else { + that.fd = fd + that.emit('open', fd) + that.read() + } + }) + } + + function WriteStream (path, options) { + if (this instanceof WriteStream) + return fs$WriteStream.apply(this, arguments), this + else + return WriteStream.apply(Object.create(WriteStream.prototype), arguments) + } + + function WriteStream$open () { + var that = this + open(that.path, that.flags, that.mode, function (err, fd) { + if (err) { + that.destroy() + that.emit('error', err) + } else { + that.fd = fd + that.emit('open', fd) + } + }) + } + + function createReadStream (path, options) { + return new fs.ReadStream(path, options) + } + + function createWriteStream (path, options) { + return new fs.WriteStream(path, options) + } + + var fs$open = fs.open + fs.open = open + function open (path, flags, mode, cb) { + if (typeof mode === 'function') + cb = mode, mode = null + + return go$open(path, flags, mode, cb) + + function go$open (path, flags, mode, cb, startTime) { + return fs$open(path, flags, mode, function (err, fd) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + return fs +} + +function enqueue (elem) { + debug('ENQUEUE', elem[0].name, elem[1]) + fs[gracefulQueue].push(elem) + retry() +} + +// keep track of the timeout between retry() calls +var retryTimer + +// reset the startTime and lastTime to now +// this resets the start of the 60 second overall timeout as well as the +// delay between attempts so that we'll retry these jobs sooner +function resetQueue () { + var now = Date.now() + for (var i = 0; i < fs[gracefulQueue].length; ++i) { + // entries that are only a length of 2 are from an older version, don't + // bother modifying those since they'll be retried anyway. + if (fs[gracefulQueue][i].length > 2) { + fs[gracefulQueue][i][3] = now // startTime + fs[gracefulQueue][i][4] = now // lastTime + } + } + // call retry to make sure we're actively processing the queue + retry() +} + +function retry () { + // clear the timer and remove it to help prevent unintended concurrency + clearTimeout(retryTimer) + retryTimer = undefined + + if (fs[gracefulQueue].length === 0) + return + + var elem = fs[gracefulQueue].shift() + var fn = elem[0] + var args = elem[1] + // these items may be unset if they were added by an older graceful-fs + var err = elem[2] + var startTime = elem[3] + var lastTime = elem[4] + + // if we don't have a startTime we have no way of knowing if we've waited + // long enough, so go ahead and retry this item now + if (startTime === undefined) { + debug('RETRY', fn.name, args) + fn.apply(null, args) + } else if (Date.now() - startTime >= 60000) { + // it's been more than 60 seconds total, bail now + debug('TIMEOUT', fn.name, args) + var cb = args.pop() + if (typeof cb === 'function') + cb.call(null, err) + } else { + // the amount of time between the last attempt and right now + var sinceAttempt = Date.now() - lastTime + // the amount of time between when we first tried, and when we last tried + // rounded up to at least 1 + var sinceStart = Math.max(lastTime - startTime, 1) + // backoff. wait longer than the total time we've been retrying, but only + // up to a maximum of 100ms + var desiredDelay = Math.min(sinceStart * 1.2, 100) + // it's been long enough since the last retry, do it again + if (sinceAttempt >= desiredDelay) { + debug('RETRY', fn.name, args) + fn.apply(null, args.concat([startTime])) + } else { + // if we can't do this job yet, push it to the end of the queue + // and let the next iteration check again + fs[gracefulQueue].push(elem) + } + } + + // schedule our next run if one isn't already scheduled + if (retryTimer === undefined) { + retryTimer = setTimeout(retry, 0) + } +} diff --git a/node_modules/graceful-fs/legacy-streams.js b/node_modules/graceful-fs/legacy-streams.js new file mode 100644 index 00000000..d617b50f --- /dev/null +++ b/node_modules/graceful-fs/legacy-streams.js @@ -0,0 +1,118 @@ +var Stream = require('stream').Stream + +module.exports = legacy + +function legacy (fs) { + return { + ReadStream: ReadStream, + WriteStream: WriteStream + } + + function ReadStream (path, options) { + if (!(this instanceof ReadStream)) return new ReadStream(path, options); + + Stream.call(this); + + var self = this; + + this.path = path; + this.fd = null; + this.readable = true; + this.paused = false; + + this.flags = 'r'; + this.mode = 438; /*=0666*/ + this.bufferSize = 64 * 1024; + + options = options || {}; + + // Mixin options into this + var keys = Object.keys(options); + for (var index = 0, length = keys.length; index < length; index++) { + var key = keys[index]; + this[key] = options[key]; + } + + if (this.encoding) this.setEncoding(this.encoding); + + if (this.start !== undefined) { + if ('number' !== typeof this.start) { + throw TypeError('start must be a Number'); + } + if (this.end === undefined) { + this.end = Infinity; + } else if ('number' !== typeof this.end) { + throw TypeError('end must be a Number'); + } + + if (this.start > this.end) { + throw new Error('start must be <= end'); + } + + this.pos = this.start; + } + + if (this.fd !== null) { + process.nextTick(function() { + self._read(); + }); + return; + } + + fs.open(this.path, this.flags, this.mode, function (err, fd) { + if (err) { + self.emit('error', err); + self.readable = false; + return; + } + + self.fd = fd; + self.emit('open', fd); + self._read(); + }) + } + + function WriteStream (path, options) { + if (!(this instanceof WriteStream)) return new WriteStream(path, options); + + Stream.call(this); + + this.path = path; + this.fd = null; + this.writable = true; + + this.flags = 'w'; + this.encoding = 'binary'; + this.mode = 438; /*=0666*/ + this.bytesWritten = 0; + + options = options || {}; + + // Mixin options into this + var keys = Object.keys(options); + for (var index = 0, length = keys.length; index < length; index++) { + var key = keys[index]; + this[key] = options[key]; + } + + if (this.start !== undefined) { + if ('number' !== typeof this.start) { + throw TypeError('start must be a Number'); + } + if (this.start < 0) { + throw new Error('start must be >= zero'); + } + + this.pos = this.start; + } + + this.busy = false; + this._queue = []; + + if (this.fd === null) { + this._open = fs.open; + this._queue.push([this._open, this.path, this.flags, this.mode, undefined]); + this.flush(); + } + } +} diff --git a/node_modules/graceful-fs/package.json b/node_modules/graceful-fs/package.json new file mode 100644 index 00000000..87babf02 --- /dev/null +++ b/node_modules/graceful-fs/package.json @@ -0,0 +1,53 @@ +{ + "name": "graceful-fs", + "description": "A drop-in replacement for fs, making various improvements.", + "version": "4.2.11", + "repository": { + "type": "git", + "url": "https://github.com/isaacs/node-graceful-fs" + }, + "main": "graceful-fs.js", + "directories": { + "test": "test" + }, + "scripts": { + "preversion": "npm test", + "postversion": "npm publish", + "postpublish": "git push origin --follow-tags", + "test": "nyc --silent node test.js | tap -c -", + "posttest": "nyc report" + }, + "keywords": [ + "fs", + "module", + "reading", + "retry", + "retries", + "queue", + "error", + "errors", + "handling", + "EMFILE", + "EAGAIN", + "EINVAL", + "EPERM", + "EACCESS" + ], + "license": "ISC", + "devDependencies": { + "import-fresh": "^2.0.0", + "mkdirp": "^0.5.0", + "rimraf": "^2.2.8", + "tap": "^16.3.4" + }, + "files": [ + "fs.js", + "graceful-fs.js", + "legacy-streams.js", + "polyfills.js", + "clone.js" + ], + "tap": { + "reporter": "classic" + } +} diff --git a/node_modules/graceful-fs/polyfills.js b/node_modules/graceful-fs/polyfills.js new file mode 100644 index 00000000..453f1a9e --- /dev/null +++ b/node_modules/graceful-fs/polyfills.js @@ -0,0 +1,355 @@ +var constants = require('constants') + +var origCwd = process.cwd +var cwd = null + +var platform = process.env.GRACEFUL_FS_PLATFORM || process.platform + +process.cwd = function() { + if (!cwd) + cwd = origCwd.call(process) + return cwd +} +try { + process.cwd() +} catch (er) {} + +// This check is needed until node.js 12 is required +if (typeof process.chdir === 'function') { + var chdir = process.chdir + process.chdir = function (d) { + cwd = null + chdir.call(process, d) + } + if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir) +} + +module.exports = patch + +function patch (fs) { + // (re-)implement some things that are known busted or missing. + + // lchmod, broken prior to 0.6.2 + // back-port the fix here. + if (constants.hasOwnProperty('O_SYMLINK') && + process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { + patchLchmod(fs) + } + + // lutimes implementation, or no-op + if (!fs.lutimes) { + patchLutimes(fs) + } + + // https://github.com/isaacs/node-graceful-fs/issues/4 + // Chown should not fail on einval or eperm if non-root. + // It should not fail on enosys ever, as this just indicates + // that a fs doesn't support the intended operation. + + fs.chown = chownFix(fs.chown) + fs.fchown = chownFix(fs.fchown) + fs.lchown = chownFix(fs.lchown) + + fs.chmod = chmodFix(fs.chmod) + fs.fchmod = chmodFix(fs.fchmod) + fs.lchmod = chmodFix(fs.lchmod) + + fs.chownSync = chownFixSync(fs.chownSync) + fs.fchownSync = chownFixSync(fs.fchownSync) + fs.lchownSync = chownFixSync(fs.lchownSync) + + fs.chmodSync = chmodFixSync(fs.chmodSync) + fs.fchmodSync = chmodFixSync(fs.fchmodSync) + fs.lchmodSync = chmodFixSync(fs.lchmodSync) + + fs.stat = statFix(fs.stat) + fs.fstat = statFix(fs.fstat) + fs.lstat = statFix(fs.lstat) + + fs.statSync = statFixSync(fs.statSync) + fs.fstatSync = statFixSync(fs.fstatSync) + fs.lstatSync = statFixSync(fs.lstatSync) + + // if lchmod/lchown do not exist, then make them no-ops + if (fs.chmod && !fs.lchmod) { + fs.lchmod = function (path, mode, cb) { + if (cb) process.nextTick(cb) + } + fs.lchmodSync = function () {} + } + if (fs.chown && !fs.lchown) { + fs.lchown = function (path, uid, gid, cb) { + if (cb) process.nextTick(cb) + } + fs.lchownSync = function () {} + } + + // on Windows, A/V software can lock the directory, causing this + // to fail with an EACCES or EPERM if the directory contains newly + // created files. Try again on failure, for up to 60 seconds. + + // Set the timeout this long because some Windows Anti-Virus, such as Parity + // bit9, may lock files for up to a minute, causing npm package install + // failures. Also, take care to yield the scheduler. Windows scheduling gives + // CPU to a busy looping process, which can cause the program causing the lock + // contention to be starved of CPU by node, so the contention doesn't resolve. + if (platform === "win32") { + fs.rename = typeof fs.rename !== 'function' ? fs.rename + : (function (fs$rename) { + function rename (from, to, cb) { + var start = Date.now() + var backoff = 0; + fs$rename(from, to, function CB (er) { + if (er + && (er.code === "EACCES" || er.code === "EPERM" || er.code === "EBUSY") + && Date.now() - start < 60000) { + setTimeout(function() { + fs.stat(to, function (stater, st) { + if (stater && stater.code === "ENOENT") + fs$rename(from, to, CB); + else + cb(er) + }) + }, backoff) + if (backoff < 100) + backoff += 10; + return; + } + if (cb) cb(er) + }) + } + if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename) + return rename + })(fs.rename) + } + + // if read() returns EAGAIN, then just try it again. + fs.read = typeof fs.read !== 'function' ? fs.read + : (function (fs$read) { + function read (fd, buffer, offset, length, position, callback_) { + var callback + if (callback_ && typeof callback_ === 'function') { + var eagCounter = 0 + callback = function (er, _, __) { + if (er && er.code === 'EAGAIN' && eagCounter < 10) { + eagCounter ++ + return fs$read.call(fs, fd, buffer, offset, length, position, callback) + } + callback_.apply(this, arguments) + } + } + return fs$read.call(fs, fd, buffer, offset, length, position, callback) + } + + // This ensures `util.promisify` works as it does for native `fs.read`. + if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read) + return read + })(fs.read) + + fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync + : (function (fs$readSync) { return function (fd, buffer, offset, length, position) { + var eagCounter = 0 + while (true) { + try { + return fs$readSync.call(fs, fd, buffer, offset, length, position) + } catch (er) { + if (er.code === 'EAGAIN' && eagCounter < 10) { + eagCounter ++ + continue + } + throw er + } + } + }})(fs.readSync) + + function patchLchmod (fs) { + fs.lchmod = function (path, mode, callback) { + fs.open( path + , constants.O_WRONLY | constants.O_SYMLINK + , mode + , function (err, fd) { + if (err) { + if (callback) callback(err) + return + } + // prefer to return the chmod error, if one occurs, + // but still try to close, and report closing errors if they occur. + fs.fchmod(fd, mode, function (err) { + fs.close(fd, function(err2) { + if (callback) callback(err || err2) + }) + }) + }) + } + + fs.lchmodSync = function (path, mode) { + var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) + + // prefer to return the chmod error, if one occurs, + // but still try to close, and report closing errors if they occur. + var threw = true + var ret + try { + ret = fs.fchmodSync(fd, mode) + threw = false + } finally { + if (threw) { + try { + fs.closeSync(fd) + } catch (er) {} + } else { + fs.closeSync(fd) + } + } + return ret + } + } + + function patchLutimes (fs) { + if (constants.hasOwnProperty("O_SYMLINK") && fs.futimes) { + fs.lutimes = function (path, at, mt, cb) { + fs.open(path, constants.O_SYMLINK, function (er, fd) { + if (er) { + if (cb) cb(er) + return + } + fs.futimes(fd, at, mt, function (er) { + fs.close(fd, function (er2) { + if (cb) cb(er || er2) + }) + }) + }) + } + + fs.lutimesSync = function (path, at, mt) { + var fd = fs.openSync(path, constants.O_SYMLINK) + var ret + var threw = true + try { + ret = fs.futimesSync(fd, at, mt) + threw = false + } finally { + if (threw) { + try { + fs.closeSync(fd) + } catch (er) {} + } else { + fs.closeSync(fd) + } + } + return ret + } + + } else if (fs.futimes) { + fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) } + fs.lutimesSync = function () {} + } + } + + function chmodFix (orig) { + if (!orig) return orig + return function (target, mode, cb) { + return orig.call(fs, target, mode, function (er) { + if (chownErOk(er)) er = null + if (cb) cb.apply(this, arguments) + }) + } + } + + function chmodFixSync (orig) { + if (!orig) return orig + return function (target, mode) { + try { + return orig.call(fs, target, mode) + } catch (er) { + if (!chownErOk(er)) throw er + } + } + } + + + function chownFix (orig) { + if (!orig) return orig + return function (target, uid, gid, cb) { + return orig.call(fs, target, uid, gid, function (er) { + if (chownErOk(er)) er = null + if (cb) cb.apply(this, arguments) + }) + } + } + + function chownFixSync (orig) { + if (!orig) return orig + return function (target, uid, gid) { + try { + return orig.call(fs, target, uid, gid) + } catch (er) { + if (!chownErOk(er)) throw er + } + } + } + + function statFix (orig) { + if (!orig) return orig + // Older versions of Node erroneously returned signed integers for + // uid + gid. + return function (target, options, cb) { + if (typeof options === 'function') { + cb = options + options = null + } + function callback (er, stats) { + if (stats) { + if (stats.uid < 0) stats.uid += 0x100000000 + if (stats.gid < 0) stats.gid += 0x100000000 + } + if (cb) cb.apply(this, arguments) + } + return options ? orig.call(fs, target, options, callback) + : orig.call(fs, target, callback) + } + } + + function statFixSync (orig) { + if (!orig) return orig + // Older versions of Node erroneously returned signed integers for + // uid + gid. + return function (target, options) { + var stats = options ? orig.call(fs, target, options) + : orig.call(fs, target) + if (stats) { + if (stats.uid < 0) stats.uid += 0x100000000 + if (stats.gid < 0) stats.gid += 0x100000000 + } + return stats; + } + } + + // ENOSYS means that the fs doesn't support the op. Just ignore + // that, because it doesn't matter. + // + // if there's no getuid, or if getuid() is something other + // than 0, and the error is EINVAL or EPERM, then just ignore + // it. + // + // This specific case is a silent failure in cp, install, tar, + // and most other unix tools that manage permissions. + // + // When running as root, or if other types of errors are + // encountered, then it's strict. + function chownErOk (er) { + if (!er) + return true + + if (er.code === "ENOSYS") + return true + + var nonroot = !process.getuid || process.getuid() !== 0 + if (nonroot) { + if (er.code === "EINVAL" || er.code === "EPERM") + return true + } + + return false + } +} diff --git a/node_modules/jiti/LICENSE b/node_modules/jiti/LICENSE new file mode 100644 index 00000000..e739abce --- /dev/null +++ b/node_modules/jiti/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Pooya Parsa + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/jiti/README.md b/node_modules/jiti/README.md new file mode 100644 index 00000000..2c957a9f --- /dev/null +++ b/node_modules/jiti/README.md @@ -0,0 +1,243 @@ +# jiti + + + +[![npm version](https://img.shields.io/npm/v/jiti?color=F0DB4F)](https://npmjs.com/package/jiti) +[![npm downloads](https://img.shields.io/npm/dm/jiti?color=F0DB4F)](https://npmjs.com/package/jiti) +[![bundle size](https://img.shields.io/bundlephobia/minzip/jiti?color=F0DB4F)](https://bundlephobia.com/package/jiti) + + + +> This is the active development branch. Check out [jiti/v1](https://github.com/unjs/jiti/tree/v1) for legacy v1 docs and code. + +## 🌟 Used in + +[Docusaurus](https://docusaurus.io/), [ESLint](https://github.com/eslint/eslint), [FormKit](https://formkit.com/), [Histoire](https://histoire.dev/), [Knip](https://knip.dev/), [Nitro](https://nitro.unjs.io/), [Nuxt](https://nuxt.com/), [PostCSS loader](https://github.com/webpack-contrib/postcss-loader), [Rsbuild](https://rsbuild.dev/), [Size Limit](https://github.com/ai/size-limit), [Slidev](https://sli.dev/), [Tailwindcss](https://tailwindcss.com/), [Tokenami](https://github.com/tokenami/tokenami), [UnoCSS](https://unocss.dev/), [WXT](https://wxt.dev/), [Winglang](https://www.winglang.io/), [Graphql code generator](https://the-guild.dev/graphql/codegen), [Lingui](https://lingui.dev/), [Scaffdog](https://scaff.dog/), [Storybook](https://storybook.js.org), [...UnJS ecosystem](https://unjs.io/), [...60M+ npm monthly downloads](https://npm.chart.dev/jiti), [...6M+ public repositories](https://github.com/unjs/jiti/network/dependents). + +## ✅ Features + +- Seamless TypeScript and ESM syntax support for Node.js +- Seamless interoperability between ESM and CommonJS +- Asynchronous API to replace `import()` +- Synchronous API to replace `require()` (deprecated) +- Super slim and zero dependency +- Custom resolve aliases +- Smart syntax detection to avoid extra transforms +- Node.js native `require.cache` integration +- Filesystem transpile with hard disk caches +- ESM Loader support +- JSX support (opt-in) + +> [!IMPORTANT] +> To enhance compatibility, jiti `>=2.1` enabled [`interopDefault`](#interopdefault) using a new Proxy method. If you migrated to `2.0.0` earlier, this might have caused behavior changes. In case of any issues during the upgrade, please [report](https://github.com/unjs/jiti/issues) so we can investigate to solve them. 🙏🏼 + +## 💡 Usage + +### CLI + +You can use `jiti` CLI to quickly run any script with TypeScript and native ESM support! + +```bash +npx jiti ./index.ts +``` + +### Programmatic + +Initialize a jiti instance: + +```js +// ESM +import { createJiti } from "jiti"; +const jiti = createJiti(import.meta.url); + +// CommonJS (deprecated) +const { createJiti } = require("jiti"); +const jiti = createJiti(__filename); +``` + +Import (async) and resolve with ESM compatibility: + +```js +// jiti.import(id) is similar to import(id) +const mod = await jiti.import("./path/to/file.ts"); + +// jiti.esmResolve(id) is similar to import.meta.resolve(id) +const resolvedPath = jiti.esmResolve("./src"); +``` + +If you need the default export of module, you can use `jiti.import(id, { default: true })` as shortcut to `mod?.default ?? mod`. + +```js +// shortcut to mod?.default ?? mod +const modDefault = await jiti.import("./path/to/file.ts", { default: true }); +``` + +CommonJS (sync & deprecated): + +```js +// jiti() is similar to require(id) +const mod = jiti("./path/to/file.ts"); + +// jiti.resolve() is similar to require.resolve(id) +const resolvedPath = jiti.resolve("./src"); +``` + +You can also pass options as the second argument: + +```js +const jiti = createJiti(import.meta.url, { debug: true }); +``` + +### Register global ESM loader + +You can globally register jiti using [global hooks](https://nodejs.org/api/module.html#initialize). (Important: Requires Node.js > 20) + +```js +import "jiti/register"; +``` + +Or: + +```bash +node --import jiti/register index.ts +``` + +## 🎈 `jiti/native` + +You can alias `jiti` to `jiti/native` to directly depend on runtime's [`import.meta.resolve`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import.meta/resolve) and dynamic [`import()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import) support. This allows easing up the ecosystem transition to runtime native support by giving the same API of jiti. + +## ⚙️ Options + +### `debug` + +- Type: Boolean +- Default: `false` +- Environment variable: `JITI_DEBUG` + +Enable verbose logging. You can use `JITI_DEBUG=1 ` to enable it. + +### `fsCache` + +- Type: Boolean | String +- Default: `true` +- Environment variable: `JITI_FS_CACHE` + +Filesystem source cache (enabled by default) + +By default (when is `true`), jiti uses `node_modules/.cache/jiti` (if exists) or `{TMP_DIR}/jiti`. + +**Note:** It is recommended that this option be enabled for better performance. + +### `rebuildFsCache` + +- Type: Boolean +- Default: `false` +- Environment variable: `JITI_REBUILD_FS_CACHE` + +Rebuild filesystem source cache created by `fsCache`. + +### `moduleCache` + +- Type: String +- Default: `true` +- Environment variable: `JITI_MODULE_CACHE` + +Runtime module cache (enabled by default). + +Disabling allows editing code and importing the same module multiple times. + +When enabled, jiti integrates with Node.js native CommonJS cache-store. + +### `transform` + +- Type: Function +- Default: Babel (lazy loaded) + +Transform function. See [src/babel](./src/babel.ts) for more details + +### `sourceMaps` + +- Type: Boolean +- Default `false` +- Environment variable: `JITI_SOURCE_MAPS` + +Add inline source map to transformed source for better debugging. + +### `interopDefault` + +- Type: Boolean +- Default: `true` +- Environment variable: `JITI_INTEROP_DEFAULT` + +Jiti combines module exports with the `default` export using an internal Proxy to improve compatibility with mixed CJS/ESM usage. You can check the current implementation [here](https://github.com/unjs/jiti/blob/main/src/utils.ts#L105). + +### `alias` + +- Type: Object +- Default: - +- Environment variable: `JITI_ALIAS` + +You can also pass an object to the environment variable for inline config. Example: `JITI_ALIAS='{"~/*": "./src/*"}' jiti ...`. + +Custom alias map used to resolve IDs. + +### `nativeModules` + +- Type: Array +- Default: ['typescript'] +- Environment variable: `JITI_NATIVE_MODULES` + +List of modules (within `node_modules`) to always use native `require()` for them. + +### `transformModules` + +- Type: Array +- Default: [] +- Environment variable: `JITI_TRANSFORM_MODULES` + +List of modules (within `node_modules`) to transform them regardless of syntax. + +### `importMeta` + +Parent module's [`import.meta`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import.meta) context to use for ESM resolution. (only used for `jiti/native` import). + +### `tryNative` + +- Type: Boolean +- Default: Enabled if bun is detected +- Environment variable: `JITI_TRY_NATIVE` + +Try to use native require and import without jiti transformations first. + +### `jsx` + +- Type: Boolean | {options} +- Default: `false` +- Environment Variable: `JITI_JSX` + +Enable JSX support using [`@babel/plugin-transform-react-jsx`](https://babeljs.io/docs/babel-plugin-transform-react-jsx). + +See [`test/fixtures/jsx`](./test/fixtures/jsx) for framework integration examples. + +## Development + +- Clone this repository +- Enable [Corepack](https://github.com/nodejs/corepack) using `corepack enable` +- Install dependencies using `pnpm install` +- Run `pnpm dev` +- Run `pnpm jiti ./test/path/to/file.ts` + +## License + + + +Published under the [MIT](https://github.com/unjs/jiti/blob/main/LICENSE) license. +Made by [@pi0](https://github.com/pi0) and [community](https://github.com/unjs/jiti/graphs/contributors) 💛 +

+ + + + + + + diff --git a/node_modules/jiti/dist/babel.cjs b/node_modules/jiti/dist/babel.cjs new file mode 100644 index 00000000..088011dd --- /dev/null +++ b/node_modules/jiti/dist/babel.cjs @@ -0,0 +1,246 @@ +(()=>{var e={"./node_modules/.pnpm/@babel+core@7.28.4/node_modules/@babel/core/lib/config/files lazy recursive":function(e){function webpackEmptyAsyncContext(e){return Promise.resolve().then(function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}webpackEmptyAsyncContext.keys=()=>[],webpackEmptyAsyncContext.resolve=webpackEmptyAsyncContext,webpackEmptyAsyncContext.id="./node_modules/.pnpm/@babel+core@7.28.4/node_modules/@babel/core/lib/config/files lazy recursive",e.exports=webpackEmptyAsyncContext},"./node_modules/.pnpm/@babel+core@7.28.4/node_modules/@babel/core/lib/config/files sync recursive":function(e){function webpackEmptyContext(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}webpackEmptyContext.keys=()=>[],webpackEmptyContext.resolve=webpackEmptyContext,webpackEmptyContext.id="./node_modules/.pnpm/@babel+core@7.28.4/node_modules/@babel/core/lib/config/files sync recursive",e.exports=webpackEmptyContext},"./node_modules/.pnpm/@babel+plugin-syntax-class-properties@7.12.13_@babel+core@7.28.4/node_modules/@babel/plugin-syntax-class-properties/lib/index.js":function(e,t,r){"use strict";t.default=void 0;var n=(0,r("./node_modules/.pnpm/@babel+helper-plugin-utils@7.27.1/node_modules/@babel/helper-plugin-utils/lib/index.js").declare)(e=>(e.assertVersion(7),{name:"syntax-class-properties",manipulateOptions(e,t){t.plugins.push("classProperties","classPrivateProperties","classPrivateMethods")}}));t.default=n},"./node_modules/.pnpm/@jridgewell+gen-mapping@0.3.13/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.umd.js":function(e,t,r){var n;!function(e,t,r){"use strict";var n=Object.create,s=Object.defineProperty,i=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,a=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty,__commonJS=(e,t)=>function(){return t||(0,e[o(e)[0]])((t={exports:{}}).exports,t),t.exports},__export=(e,t)=>{for(var r in t)s(e,r,{get:t[r],enumerable:!0})},__copyProps=(e,t,r,n)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let a of o(t))l.call(e,a)||a===r||s(e,a,{get:()=>t[a],enumerable:!(n=i(t,a))||n.enumerable});return e},__toESM=(e,t,r)=>(r=null!=e?n(a(e)):{},__copyProps(!t&&e&&e.__esModule?r:s(r,"default",{value:e,enumerable:!0}),e)),__toCommonJS=e=>__copyProps(s({},"__esModule",{value:!0}),e),p=__commonJS({"umd:@jridgewell/sourcemap-codec"(e,r){r.exports=t}}),c=__commonJS({"umd:@jridgewell/trace-mapping"(e,t){t.exports=r}}),u={};__export(u,{GenMapping:()=>E,addMapping:()=>addMapping,addSegment:()=>addSegment,allMappings:()=>allMappings,fromMap:()=>fromMap,maybeAddMapping:()=>maybeAddMapping,maybeAddSegment:()=>maybeAddSegment,setIgnore:()=>setIgnore,setSourceContent:()=>setSourceContent,toDecodedMap:()=>toDecodedMap,toEncodedMap:()=>toEncodedMap}),e.exports=__toCommonJS(u);var d=class{constructor(){this._indexes={__proto__:null},this.array=[]}};function cast(e){return e}function get(e,t){return cast(e)._indexes[t]}function put(e,t){const r=get(e,t);if(void 0!==r)return r;const{array:n,_indexes:s}=cast(e),i=n.push(t);return s[t]=i-1}function remove(e,t){const r=get(e,t);if(void 0===r)return;const{array:n,_indexes:s}=cast(e);for(let e=r+1;eaddSegmentInternal(!0,e,t,r,n,s,i,o,a),maybeAddMapping=(e,t)=>addMappingInternal(!0,e,t);function setSourceContent(e,t,r){const{_sources:n,_sourcesContent:s}=cast2(e);s[put(n,t)]=r}function setIgnore(e,t,r=!0){const{_sources:n,_sourcesContent:s,_ignoreList:i}=cast2(e),o=put(n,t);o===s.length&&(s[o]=null),r?put(i,o):remove(i,o)}function toDecodedMap(e){const{_mappings:t,_sources:r,_sourcesContent:n,_names:s,_ignoreList:i}=cast2(e);return removeEmptyFinalLines(t),{version:3,file:e.file||void 0,names:s.array,sourceRoot:e.sourceRoot||void 0,sources:r.array,sourcesContent:n,mappings:t,ignoreList:i.array}}function toEncodedMap(e){const t=toDecodedMap(e);return Object.assign({},t,{mappings:(0,h.encode)(t.mappings)})}function fromMap(e){const t=new m.TraceMap(e),r=new E({file:t.file,sourceRoot:t.sourceRoot});return putAll(cast2(r)._names,t.names),putAll(cast2(r)._sources,t.sources),cast2(r)._sourcesContent=t.sourcesContent||t.sources.map(()=>null),cast2(r)._mappings=(0,m.decodedMappings)(t),t.ignoreList&&putAll(cast2(r)._ignoreList,t.ignoreList),r}function allMappings(e){const t=[],{_mappings:r,_sources:n,_names:s}=cast2(e);for(let e=0;e=0&&!(t>=e[n][f]);r=n--);return r}function insert(e,t,r){for(let r=e.length;r>t;r--)e[r]=e[r-1];e[t]=r}function removeEmptyFinalLines(e){const{length:t}=e;let r=t;for(let t=r-1;t>=0&&!(e[t].length>0);r=t,t--);rfunction(){return t||(0,e[o(e)[0]])((t={exports:{}}).exports,t),t.exports},__export=(e,t)=>{for(var r in t)s(e,r,{get:t[r],enumerable:!0})},__copyProps=(e,t,r,n)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let a of o(t))l.call(e,a)||a===r||s(e,a,{get:()=>t[a],enumerable:!(n=i(t,a))||n.enumerable});return e},__toESM=(e,t,r)=>(r=null!=e?n(a(e)):{},__copyProps(!t&&e&&e.__esModule?r:s(r,"default",{value:e,enumerable:!0}),e)),__toCommonJS=e=>__copyProps(s({},"__esModule",{value:!0}),e),p=__commonJS({"umd:@jridgewell/trace-mapping"(e,t){t.exports=r}}),c=__commonJS({"umd:@jridgewell/gen-mapping"(e,r){r.exports=t}}),u={};__export(u,{default:()=>remapping}),e.exports=__toCommonJS(u);var d=__toESM(p()),h=__toESM(c()),m=__toESM(p()),f=SegmentObject("",-1,-1,"",null,!1),y=[];function SegmentObject(e,t,r,n,s,i){return{source:e,line:t,column:r,name:n,content:s,ignore:i}}function Source(e,t,r,n,s){return{map:e,sources:t,source:r,content:n,ignore:s}}function MapSource(e,t){return Source(e,t,"",null,!1)}function OriginalSource(e,t,r){return Source(null,y,e,t,r)}function traceMappings(e){const t=new h.GenMapping({file:e.map.file}),{sources:r,map:n}=e,s=n.names,i=(0,m.decodedMappings)(n);for(let e=0;enew d.TraceMap(e,"")),n=r.pop();for(let e=0;e1)throw new Error(`Transformation map ${e} must have exactly one source file.\nDid you specify these with the most recent transformation maps first?`);let s=build(n,t,"",0);for(let e=r.length-1;e>=0;e--)s=MapSource(r[e],[s]);return s}function build(e,t,r,n){const{resolvedSources:s,sourcesContent:i,ignoreList:o}=e,a=n+1;return MapSource(e,s.map((e,n)=>{const s={importer:r,depth:a,source:e||"",content:void 0,ignore:void 0},l=t(s.source,s),{source:p,content:c,ignore:u}=s;return l?build(new d.TraceMap(l,p),t,p,a):OriginalSource(p,void 0!==c?c:i?i[n]:null,void 0!==u?u:!!o&&o.includes(n))}))}var b=__toESM(c()),g=class{constructor(e,t){const r=t.decodedMappings?(0,b.toDecodedMap)(e):(0,b.toEncodedMap)(e);this.version=r.version,this.file=r.file,this.mappings=r.mappings,this.names=r.names,this.ignoreList=r.ignoreList,this.sourceRoot=r.sourceRoot,this.sources=r.sources,t.excludeContent||(this.sourcesContent=r.sourcesContent)}toString(){return JSON.stringify(this)}};function remapping(e,t,r){const n="object"==typeof r?r:{excludeContent:!!r,decodedMappings:!1},s=buildSourceMapTree(e,t);return new g(traceMappings(s),n)}}(e=r.nmd(e),r("./node_modules/.pnpm/@jridgewell+gen-mapping@0.3.13/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.umd.js"),r("./node_modules/.pnpm/@jridgewell+trace-mapping@0.3.31/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.umd.js")),e.exports="default"in(n=e).exports?n.exports.default:n.exports},"./node_modules/.pnpm/@jridgewell+resolve-uri@3.1.2/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js":function(e){e.exports=function(){"use strict";const e=/^[\w+.-]+:\/\//,t=/^([\w+.-]+:)\/\/([^@/#?]*@)?([^:/#?]*)(:\d+)?(\/[^#?]*)?(\?[^#]*)?(#.*)?/,r=/^file:(?:\/\/((?![a-z]:)[^/#?]*)?)?(\/?[^#?]*)(\?[^#]*)?(#.*)?/i;function isAbsoluteUrl(t){return e.test(t)}function isSchemeRelativeUrl(e){return e.startsWith("//")}function isAbsolutePath(e){return e.startsWith("/")}function isFileUrl(e){return e.startsWith("file:")}function isRelative(e){return/^[.?#]/.test(e)}function parseAbsoluteUrl(e){const r=t.exec(e);return makeUrl(r[1],r[2]||"",r[3],r[4]||"",r[5]||"/",r[6]||"",r[7]||"")}function parseFileUrl(e){const t=r.exec(e),n=t[2];return makeUrl("file:","",t[1]||"","",isAbsolutePath(n)?n:"/"+n,t[3]||"",t[4]||"")}function makeUrl(e,t,r,n,s,i,o){return{scheme:e,user:t,host:r,port:n,path:s,query:i,hash:o,type:7}}function parseUrl(e){if(isSchemeRelativeUrl(e)){const t=parseAbsoluteUrl("http:"+e);return t.scheme="",t.type=6,t}if(isAbsolutePath(e)){const t=parseAbsoluteUrl("http://foo.com"+e);return t.scheme="",t.host="",t.type=5,t}if(isFileUrl(e))return parseFileUrl(e);if(isAbsoluteUrl(e))return parseAbsoluteUrl(e);const t=parseAbsoluteUrl("http://foo.com/"+e);return t.scheme="",t.host="",t.type=e?e.startsWith("?")?3:e.startsWith("#")?2:4:1,t}function stripPathFilename(e){if(e.endsWith("/.."))return e;const t=e.lastIndexOf("/");return e.slice(0,t+1)}function mergePaths(e,t){normalizePath(t,t.type),"/"===e.path?e.path=t.path:e.path=stripPathFilename(t.path)+e.path}function normalizePath(e,t){const r=t<=4,n=e.path.split("/");let s=1,i=0,o=!1;for(let e=1;en&&(n=s)}normalizePath(r,n);const s=r.query+r.hash;switch(n){case 2:case 3:return s;case 4:{const n=r.path.slice(1);return n?isRelative(t||e)&&!isRelative(n)?"./"+n+s:n+s:s||"."}case 5:return r.path+s;default:return r.scheme+"//"+r.user+r.host+r.port+r.path+s}}return resolve}()},"./node_modules/.pnpm/@jridgewell+sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js":function(e,t,r){var n;!function(e){"use strict";var t=Object.defineProperty,r=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,s=Object.prototype.hasOwnProperty,__copyProps=(e,i,o,a)=>{if(i&&"object"==typeof i||"function"==typeof i)for(let l of n(i))s.call(e,l)||l===o||t(e,l,{get:()=>i[l],enumerable:!(a=r(i,l))||a.enumerable});return e},__toCommonJS=e=>__copyProps(t({},"__esModule",{value:!0}),e),i={};((e,r)=>{for(var n in r)t(e,n,{get:r[n],enumerable:!0})})(i,{decode:()=>decode,decodeGeneratedRanges:()=>decodeGeneratedRanges,decodeOriginalScopes:()=>decodeOriginalScopes,encode:()=>encode,encodeGeneratedRanges:()=>encodeGeneratedRanges,encodeOriginalScopes:()=>encodeOriginalScopes}),e.exports=__toCommonJS(i);var o=",".charCodeAt(0),a=";".charCodeAt(0),l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",p=new Uint8Array(64),c=new Uint8Array(128);for(let e=0;e>>=1,i&&(r=-2147483648|-r),t+r}function encodeInteger(e,t,r){let n=t-r;n=n<0?-n<<1|1:n<<1;do{let t=31&n;n>>>=5,n>0&&(t|=32),e.write(p[t])}while(n>0);return t}function hasMoreVlq(e,t){return!(e.pos>=t)&&e.peek()!==o}var u=16384,d="undefined"!=typeof TextDecoder?new TextDecoder:"undefined"!=typeof Buffer?{decode:e=>Buffer.from(e.buffer,e.byteOffset,e.byteLength).toString()}:{decode(e){let t="";for(let r=0;r0?t+d.decode(e.subarray(0,r)):t}},m=class{constructor(e){this.pos=0,this.buffer=e}next(){return this.buffer.charCodeAt(this.pos++)}peek(){return this.buffer.charCodeAt(this.pos)}indexOf(e){const{buffer:t,pos:r}=this,n=t.indexOf(e,r);return-1===n?t.length:n}},f=[];function decodeOriginalScopes(e){const{length:t}=e,r=new m(e),n=[],s=[];let i=0;for(;r.pos0&&r.write(o),n[0]=encodeInteger(r,i,n[0]),encodeInteger(r,a,0),encodeInteger(r,c,0),encodeInteger(r,6===s.length?1:0,0),6===s.length&&encodeInteger(r,s[5],0);for(const e of u)encodeInteger(r,e,0);for(t++;tl||i===l&&o>=p)break;t=_encodeOriginalScopes(e,t,r,n)}return r.write(o),n[0]=encodeInteger(r,l,n[0]),encodeInteger(r,p,0),t}function decodeGeneratedRanges(e){const{length:t}=e,r=new m(e),n=[],s=[];let i=0,o=0,a=0,l=0,p=0,c=0,u=0,d=0;do{const e=r.indexOf(";");let t=0;for(;r.pose;t--){const e=u;u=decodeInteger(r,u),d=decodeInteger(r,u===e?d:0);const t=decodeInteger(r,0);n.push([t,u,d])}}else n=[[e]];x.push(n)}while(hasMoreVlq(r,e))}b.bindings=x,n.push(b),s.push(b)}i++,r.pos=e+1}while(r.pos0&&r.write(o),n[1]=encodeInteger(r,s[1],n[1]),encodeInteger(r,(6===s.length?1:0)|(u?2:0)|(c?4:0),0),6===s.length){const{4:e,5:t}=s;e!==n[2]&&(n[3]=0),n[2]=encodeInteger(r,e,n[2]),n[3]=encodeInteger(r,t,n[3])}if(u){const{0:e,1:t,2:i}=s.callsite;e!==n[4]?(n[5]=0,n[6]=0):t!==n[5]&&(n[6]=0),n[4]=encodeInteger(r,e,n[4]),n[5]=encodeInteger(r,t,n[5]),n[6]=encodeInteger(r,i,n[6])}if(d)for(const e of d){e.length>1&&encodeInteger(r,-e.length,0),encodeInteger(r,e[0][0],0);let t=i,n=a;for(let s=1;sl||i===l&&o>=p)break;t=_encodeGeneratedRanges(e,t,r,n)}return n[0]0&&t.write(a),0===p.length)continue;let c=0;for(let e=0;e0&&t.write(o),c=encodeInteger(t,a[0],c),1!==a.length&&(r=encodeInteger(t,a[1],r),n=encodeInteger(t,a[2],n),s=encodeInteger(t,a[3],s),4!==a.length&&(i=encodeInteger(t,a[4],i)))}}return t.flush()}}(e=r.nmd(e)),e.exports="default"in(n=e).exports?n.exports.default:n.exports},"./node_modules/.pnpm/@jridgewell+trace-mapping@0.3.31/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.umd.js":function(e,t,r){var n;!function(e,t,r){"use strict";var n=Object.create,s=Object.defineProperty,i=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,a=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty,__commonJS=(e,t)=>function(){return t||(0,e[o(e)[0]])((t={exports:{}}).exports,t),t.exports},__export=(e,t)=>{for(var r in t)s(e,r,{get:t[r],enumerable:!0})},__copyProps=(e,t,r,n)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let a of o(t))l.call(e,a)||a===r||s(e,a,{get:()=>t[a],enumerable:!(n=i(t,a))||n.enumerable});return e},__toESM=(e,t,r)=>(r=null!=e?n(a(e)):{},__copyProps(!t&&e&&e.__esModule?r:s(r,"default",{value:e,enumerable:!0}),e)),__toCommonJS=e=>__copyProps(s({},"__esModule",{value:!0}),e),p=__commonJS({"umd:@jridgewell/sourcemap-codec"(e,t){t.exports=r}}),c=__commonJS({"umd:@jridgewell/resolve-uri"(e,r){r.exports=t}}),u={};__export(u,{AnyMap:()=>FlattenMap,FlattenMap:()=>FlattenMap,GREATEST_LOWER_BOUND:()=>_,LEAST_UPPER_BOUND:()=>P,TraceMap:()=>A,allGeneratedPositionsFor:()=>allGeneratedPositionsFor,decodedMap:()=>decodedMap,decodedMappings:()=>decodedMappings,eachMapping:()=>eachMapping,encodedMap:()=>encodedMap,encodedMappings:()=>encodedMappings,generatedPositionFor:()=>generatedPositionFor,isIgnored:()=>isIgnored,originalPositionFor:()=>originalPositionFor,presortedDecodedMap:()=>presortedDecodedMap,sourceContentFor:()=>sourceContentFor,traceSegment:()=>traceSegment}),e.exports=__toCommonJS(u);var d=__toESM(p()),h=__toESM(c());function stripFilename(e){if(!e)return"";const t=e.lastIndexOf("/");return e.slice(0,t+1)}function resolver(e,t){const r=stripFilename(e),n=t?t+"/":"";return e=>(0,h.default)(n+(e||""),r)}var m=0,f=1,y=2,b=3,g=4,x=1,v=2;function maybeSort(e,t){const r=nextUnsortedSegmentLine(e,0);if(r===e.length)return e;t||(e=e.slice());for(let n=r;n[]);for(let t=0;t>1),i=e[s][m]-t;if(0===i)return E=!0,s;i<0?r=s+1:n=s-1}return E=!1,r-1}function upperBound(e,t,r){for(let n=r+1;n=0&&e[n][m]===t;r=n--);return r}function memoizedState(){return{lastKey:-1,lastNeedle:-1,lastIndex:-1}}function memoizedBinarySearch(e,t,r,n){const{lastKey:s,lastNeedle:i,lastIndex:o}=r;let a=0,l=e.length-1;if(n===s){if(t===i)return E=-1!==o&&e[o][m]===t,o;t>=i?a=-1===o?0:o:l=o}return r.lastKey=n,r.lastNeedle=t,r.lastIndex=binarySearch(e,t,a,l)}function parse(e){return"string"==typeof e?JSON.parse(e):e}var FlattenMap=function(e,t){const r=parse(e);if(!("sections"in r))return new A(r,t);const n=[],s=[],i=[],o=[],a=[];return recurse(r,t,n,s,i,o,a,0,0,1/0,1/0),presortedDecodedMap({version:3,file:r.file,names:o,sources:s,sourcesContent:i,mappings:n,ignoreList:a})};function recurse(e,t,r,n,s,i,o,a,l,p,c){const{sections:u}=e;for(let e=0;ep)return;const n=getLine(r,t),s=0===e?l:0,i=v[e];for(let e=0;e=c)return;if(1===r.length){n.push([o]);continue}const a=h+r[f],l=r[y],u=r[b];n.push(4===r.length?[o,a,l,u]:[o,a,l,u,x+r[g]])}}}function append(e,t){for(let r=0;r=n.length)return null;const s=n[t],i=traceSegmentInternal(s,cast(e)._decodedMemo,t,r,_);return-1===i?null:s[i]}function originalPositionFor(e,t){let{line:r,column:n,bias:s}=t;if(r--,r<0)throw new Error(T);if(n<0)throw new Error(S);const i=decodedMappings(e);if(r>=i.length)return OMapping(null,null,null,null);const o=i[r],a=traceSegmentInternal(o,cast(e)._decodedMemo,r,n,s||_);if(-1===a)return OMapping(null,null,null,null);const l=o[a];if(1===l.length)return OMapping(null,null,null,null);const{names:p,resolvedSources:c}=e;return OMapping(c[l[f]],l[y]+1,l[b],5===l.length?p[l[g]]:null)}function generatedPositionFor(e,t){const{source:r,line:n,column:s,bias:i}=t;return generatedPosition(e,r,n,s,i||_,!1)}function allGeneratedPositionsFor(e,t){const{source:r,line:n,column:s,bias:i}=t;return generatedPosition(e,r,n,s,i||P,!0)}function eachMapping(e,t){const r=decodedMappings(e),{names:n,resolvedSources:s}=e;for(let e=0;e{"%%"!==e&&(n++,"%c"===e&&(s=n))}),t.splice(s,0,r)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")||t.storage.getItem("DEBUG")}catch(e){}!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG);return e},t.useColors=function(){if("undefined"!=typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let e;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&(e=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(e[1],10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=r("./node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/common.js")(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},"./node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/common.js":function(e,t,r){e.exports=function(e){function createDebug(e){let t,r,n,s=null;function debug(...e){if(!debug.enabled)return;const r=debug,n=Number(new Date),s=n-(t||n);r.diff=s,r.prev=t,r.curr=n,t=n,e[0]=createDebug.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,(t,n)=>{if("%%"===t)return"%";i++;const s=createDebug.formatters[n];if("function"==typeof s){const n=e[i];t=s.call(r,n),e.splice(i,1),i--}return t}),createDebug.formatArgs.call(r,e);(r.log||createDebug.log).apply(r,e)}return debug.namespace=e,debug.useColors=createDebug.useColors(),debug.color=createDebug.selectColor(e),debug.extend=extend,debug.destroy=createDebug.destroy,Object.defineProperty(debug,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==s?s:(r!==createDebug.namespaces&&(r=createDebug.namespaces,n=createDebug.enabled(e)),n),set:e=>{s=e}}),"function"==typeof createDebug.init&&createDebug.init(debug),debug}function extend(e,t){const r=createDebug(this.namespace+(void 0===t?":":t)+e);return r.log=this.log,r}function matchesTemplate(e,t){let r=0,n=0,s=-1,i=0;for(;r"-"+e)].join(",");return createDebug.enable(""),e},createDebug.enable=function(e){createDebug.save(e),createDebug.namespaces=e,createDebug.names=[],createDebug.skips=[];const t=("string"==typeof e?e:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(const e of t)"-"===e[0]?createDebug.skips.push(e.slice(1)):createDebug.names.push(e)},createDebug.enabled=function(e){for(const t of createDebug.skips)if(matchesTemplate(e,t))return!1;for(const t of createDebug.names)if(matchesTemplate(e,t))return!0;return!1},createDebug.humanize=r("./node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js"),createDebug.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(e).forEach(t=>{createDebug[t]=e[t]}),createDebug.names=[],createDebug.skips=[],createDebug.formatters={},createDebug.selectColor=function(e){let t=0;for(let r=0;r{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),t.colors=[6,2,3,4,5,1];try{const e=r("./node_modules/.pnpm/supports-color@7.2.0/node_modules/supports-color/index.js");e&&(e.stderr||e).level>=2&&(t.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch(e){}t.inspectOpts=Object.keys(process.env).filter(e=>/^debug_/i.test(e)).reduce((e,t)=>{const r=t.substring(6).toLowerCase().replace(/_([a-z])/g,(e,t)=>t.toUpperCase());let n=process.env[t];return n=!!/^(yes|on|true|enabled)$/i.test(n)||!/^(no|off|false|disabled)$/i.test(n)&&("null"===n?null:Number(n)),e[r]=n,e},{}),e.exports=r("./node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/common.js")(t);const{formatters:i}=e.exports;i.o=function(e){return this.inspectOpts.colors=this.useColors,s.inspect(e,this.inspectOpts).split("\n").map(e=>e.trim()).join(" ")},i.O=function(e){return this.inspectOpts.colors=this.useColors,s.inspect(e,this.inspectOpts)}},"./node_modules/.pnpm/gensync@1.0.0-beta.2/node_modules/gensync/index.js":function(e){"use strict";const t=Symbol.for("gensync:v1:start"),r=Symbol.for("gensync:v1:suspend"),n="GENSYNC_OPTIONS_ERROR",s="GENSYNC_RACE_NONEMPTY",i="GENSYNC_ERRBACK_NO_CALLBACK";function assertTypeof(e,t,r,s){if(typeof r===e||s&&void 0===r)return;let i;throw i=s?`Expected opts.${t} to be either a ${e}, or undefined.`:`Expected opts.${t} to be a ${e}.`,makeError(i,n)}function makeError(e,t){return Object.assign(new Error(e),{code:t})}function buildOperation({name:e,arity:n,sync:s,async:i}){return setFunctionMetadata(e,n,function*(...e){const n=yield t;if(!n){return s.call(this,e)}let o;try{i.call(this,e,e=>{o||(o={value:e},n())},e=>{o||(o={err:e},n())})}catch(e){o={err:e},n()}if(yield r,o.hasOwnProperty("err"))throw o.err;return o.value})}function evaluateSync(e){let t;for(;!({value:t}=e.next()).done;)assertStart(t,e);return t}function evaluateAsync(e,t,r){!function step(){try{let r;for(;!({value:r}=e.next()).done;){assertStart(r,e);let t=!0,n=!1;const s=e.next(()=>{t?n=!0:step()});if(t=!1,assertSuspend(s,e),!n)return}return t(r)}catch(e){return r(e)}}()}function assertStart(e,r){e!==t&&throwError(r,makeError(`Got unexpected yielded value in gensync generator: ${JSON.stringify(e)}. Did you perhaps mean to use 'yield*' instead of 'yield'?`,"GENSYNC_EXPECTED_START"))}function assertSuspend({value:e,done:t},n){(t||e!==r)&&throwError(n,makeError(t?"Unexpected generator completion. If you get this, it is probably a gensync bug.":`Expected GENSYNC_SUSPEND, got ${JSON.stringify(e)}. If you get this, it is probably a gensync bug.`,"GENSYNC_EXPECTED_SUSPEND"))}function throwError(e,t){throw e.throw&&e.throw(t),t}function setFunctionMetadata(e,t,r){if("string"==typeof e){const t=Object.getOwnPropertyDescriptor(r,"name");t&&!t.configurable||Object.defineProperty(r,"name",Object.assign(t||{},{configurable:!0,value:e}))}if("number"==typeof t){const e=Object.getOwnPropertyDescriptor(r,"length");e&&!e.configurable||Object.defineProperty(r,"length",Object.assign(e||{},{configurable:!0,value:t}))}return r}e.exports=Object.assign(function(e){let t=e;return t="function"!=typeof e?function({name:e,arity:t,sync:r,async:s,errback:i}){if(assertTypeof("string","name",e,!0),assertTypeof("number","arity",t,!0),assertTypeof("function","sync",r),assertTypeof("function","async",s,!0),assertTypeof("function","errback",i,!0),s&&i)throw makeError("Expected one of either opts.async or opts.errback, but got _both_.",n);if("string"!=typeof e){let t;i&&i.name&&"errback"!==i.name&&(t=i.name),s&&s.name&&"async"!==s.name&&(t=s.name.replace(/Async$/,"")),r&&r.name&&"sync"!==r.name&&(t=r.name.replace(/Sync$/,"")),"string"==typeof t&&(e=t)}"number"!=typeof t&&(t=r.length);return buildOperation({name:e,arity:t,sync:function(e){return r.apply(this,e)},async:function(e,t,n){s?s.apply(this,e).then(t,n):i?i.call(this,...e,(e,r)=>{null==e?t(r):n(e)}):t(r.apply(this,e))}})}(e):function(e){return setFunctionMetadata(e.name,e.length,function(...t){return e.apply(this,t)})}(e),Object.assign(t,function(e){const t={sync:function(...t){return evaluateSync(e.apply(this,t))},async:function(...t){return new Promise((r,n)=>{evaluateAsync(e.apply(this,t),r,n)})},errback:function(...t){const r=t.pop();if("function"!=typeof r)throw makeError("Asynchronous function called without callback",i);let n;try{n=e.apply(this,t)}catch(e){return void r(e)}evaluateAsync(n,e=>r(void 0,e),e=>r(e))}};return t}(t))},{all:buildOperation({name:"all",arity:1,sync:function(e){return Array.from(e[0]).map(e=>evaluateSync(e))},async:function(e,t,r){const n=Array.from(e[0]);if(0===n.length)return void Promise.resolve().then(()=>t([]));let s=0;const i=n.map(()=>{});n.forEach((e,n)=>{evaluateAsync(e,e=>{i[n]=e,s+=1,s===i.length&&t(i)},r)})}}),race:buildOperation({name:"race",arity:1,sync:function(e){const t=Array.from(e[0]);if(0===t.length)throw makeError("Must race at least 1 item",s);return evaluateSync(t[0])},async:function(e,t,r){const n=Array.from(e[0]);if(0===n.length)throw makeError("Must race at least 1 item",s);for(const e of n)evaluateAsync(e,t,r)}})})},"./node_modules/.pnpm/has-flag@4.0.0/node_modules/has-flag/index.js":function(e){"use strict";e.exports=(e,t=process.argv)=>{const r=e.startsWith("-")?"":1===e.length?"-":"--",n=t.indexOf(r+e),s=t.indexOf("--");return-1!==n&&(-1===s||n{for(const n in e)r.call(e,n)&&t(n,e[n])},fourHexEscape=e=>"\\u"+("0000"+e).slice(-4),hexadecimal=(e,t)=>{let r=e.toString(16);return t?r:r.toUpperCase()},n=t.toString,s=Array.isArray,isBigInt=e=>"bigint"==typeof e,i={"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t"},o=/[\\\b\f\n\r\t]/,a=/[0-9]/,l=/[\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/,p=/([\uD800-\uDBFF][\uDC00-\uDFFF])|([\uD800-\uDFFF])|(['"`])|[^]/g,c=/([\uD800-\uDBFF][\uDC00-\uDFFF])|([\uD800-\uDFFF])|(['"`])|[^ !#-&\(-\[\]-_a-~]/g,jsesc=(e,t)=>{const increaseIndentation=()=>{g=b,++t.indentLevel,b=t.indent.repeat(t.indentLevel)},r={escapeEverything:!1,minimal:!1,isScriptContext:!1,quotes:"single",wrap:!1,es6:!1,json:!1,compact:!0,lowercaseHex:!1,numbers:"decimal",indent:"\t",indentLevel:0,__inline1__:!1,__inline2__:!1},u=t&&t.json;var d,h;u&&(r.quotes="double",r.wrap=!0),d=r,"single"!=(t=(h=t)?(forOwn(h,(e,t)=>{d[e]=t}),d):d).quotes&&"double"!=t.quotes&&"backtick"!=t.quotes&&(t.quotes="single");const m="double"==t.quotes?'"':"backtick"==t.quotes?"`":"'",f=t.compact,y=t.lowercaseHex;let b=t.indent.repeat(t.indentLevel),g="";const x=t.__inline1__,v=t.__inline2__,E=f?"":"\n";let T,S=!0;const P="binary"==t.numbers,_="octal"==t.numbers,A="decimal"==t.numbers,C="hexadecimal"==t.numbers;if(u&&e&&(e=>"function"==typeof e)(e.toJSON)&&(e=e.toJSON()),!(e=>"string"==typeof e||"[object String]"==n.call(e))(e)){if((e=>"[object Map]"==n.call(e))(e))return 0==e.size?"new Map()":(f||(t.__inline1__=!0,t.__inline2__=!1),"new Map("+jsesc(Array.from(e),t)+")");if((e=>"[object Set]"==n.call(e))(e))return 0==e.size?"new Set()":"new Set("+jsesc(Array.from(e),t)+")";if((e=>"function"==typeof Buffer&&Buffer.isBuffer(e))(e))return 0==e.length?"Buffer.from([])":"Buffer.from("+jsesc(Array.from(e),t)+")";if(s(e))return T=[],t.wrap=!0,x&&(t.__inline1__=!1,t.__inline2__=!0),v||increaseIndentation(),((e,t)=>{const r=e.length;let n=-1;for(;++n{S=!1,v&&(t.__inline2__=!1),T.push((f||v?"":b)+jsesc(e,t))}),S?"[]":v?"["+T.join(", ")+"]":"["+E+T.join(","+E)+E+(f?"":g)+"]";if((e=>"number"==typeof e||"[object Number]"==n.call(e))(e)||isBigInt(e)){if(u)return JSON.stringify(Number(e));let t;if(A)t=String(e);else if(C){let r=e.toString(16);y||(r=r.toUpperCase()),t="0x"+r}else P?t="0b"+e.toString(2):_&&(t="0o"+e.toString(8));return isBigInt(e)?t+"n":t}return isBigInt(e)?u?JSON.stringify(Number(e)):e+"n":(e=>"[object Object]"==n.call(e))(e)?(T=[],t.wrap=!0,increaseIndentation(),forOwn(e,(e,r)=>{S=!1,T.push((f?"":b)+jsesc(e,t)+":"+(f?"":" ")+jsesc(r,t))}),S?"{}":"{"+E+T.join(","+E)+E+(f?"":g)+"}"):u?JSON.stringify(e)||"null":String(e)}const w=t.escapeEverything?p:c;return T=e.replace(w,(e,r,n,s,p,c)=>{if(r){if(t.minimal)return r;const e=r.charCodeAt(0),n=r.charCodeAt(1);if(t.es6){return"\\u{"+hexadecimal(1024*(e-55296)+n-56320+65536,y)+"}"}return fourHexEscape(hexadecimal(e,y))+fourHexEscape(hexadecimal(n,y))}if(n)return fourHexEscape(hexadecimal(n.charCodeAt(0),y));if("\0"==e&&!u&&!a.test(c.charAt(p+1)))return"\\0";if(s)return s==m||t.escapeEverything?"\\"+s:s;if(o.test(e))return i[e];if(t.minimal&&!l.test(e))return e;const d=hexadecimal(e.charCodeAt(0),y);return u||d.length>2?fourHexEscape(d):"\\x"+("00"+d).slice(-2)}),"`"==m&&(T=T.replace(/\$\{/g,"\\${")),t.isScriptContext&&(T=T.replace(/<\/(script|style)/gi,"<\\/$1").replace(/ + +-------------------------------------------------------------------------------- + + + + + +## Table of Contents + +- [Examples](#examples) + - [Consuming a source map](#consuming-a-source-map) + - [Generating a source map](#generating-a-source-map) + - [With SourceNode (high level API)](#with-sourcenode-high-level-api) + - [With SourceMapGenerator (low level API)](#with-sourcemapgenerator-low-level-api) +- [API](#api) + - [SourceMapConsumer](#sourcemapconsumer) + - [new SourceMapConsumer(rawSourceMap)](#new-sourcemapconsumerrawsourcemap) + - [SourceMapConsumer.prototype.computeColumnSpans()](#sourcemapconsumerprototypecomputecolumnspans) + - [SourceMapConsumer.prototype.originalPositionFor(generatedPosition)](#sourcemapconsumerprototypeoriginalpositionforgeneratedposition) + - [SourceMapConsumer.prototype.generatedPositionFor(originalPosition)](#sourcemapconsumerprototypegeneratedpositionfororiginalposition) + - [SourceMapConsumer.prototype.allGeneratedPositionsFor(originalPosition)](#sourcemapconsumerprototypeallgeneratedpositionsfororiginalposition) + - [SourceMapConsumer.prototype.hasContentsOfAllSources()](#sourcemapconsumerprototypehascontentsofallsources) + - [SourceMapConsumer.prototype.sourceContentFor(source[, returnNullOnMissing])](#sourcemapconsumerprototypesourcecontentforsource-returnnullonmissing) + - [SourceMapConsumer.prototype.eachMapping(callback, context, order)](#sourcemapconsumerprototypeeachmappingcallback-context-order) + - [SourceMapGenerator](#sourcemapgenerator) + - [new SourceMapGenerator([startOfSourceMap])](#new-sourcemapgeneratorstartofsourcemap) + - [SourceMapGenerator.fromSourceMap(sourceMapConsumer)](#sourcemapgeneratorfromsourcemapsourcemapconsumer) + - [SourceMapGenerator.prototype.addMapping(mapping)](#sourcemapgeneratorprototypeaddmappingmapping) + - [SourceMapGenerator.prototype.setSourceContent(sourceFile, sourceContent)](#sourcemapgeneratorprototypesetsourcecontentsourcefile-sourcecontent) + - [SourceMapGenerator.prototype.applySourceMap(sourceMapConsumer[, sourceFile[, sourceMapPath]])](#sourcemapgeneratorprototypeapplysourcemapsourcemapconsumer-sourcefile-sourcemappath) + - [SourceMapGenerator.prototype.toString()](#sourcemapgeneratorprototypetostring) + - [SourceNode](#sourcenode) + - [new SourceNode([line, column, source[, chunk[, name]]])](#new-sourcenodeline-column-source-chunk-name) + - [SourceNode.fromStringWithSourceMap(code, sourceMapConsumer[, relativePath])](#sourcenodefromstringwithsourcemapcode-sourcemapconsumer-relativepath) + - [SourceNode.prototype.add(chunk)](#sourcenodeprototypeaddchunk) + - [SourceNode.prototype.prepend(chunk)](#sourcenodeprototypeprependchunk) + - [SourceNode.prototype.setSourceContent(sourceFile, sourceContent)](#sourcenodeprototypesetsourcecontentsourcefile-sourcecontent) + - [SourceNode.prototype.walk(fn)](#sourcenodeprototypewalkfn) + - [SourceNode.prototype.walkSourceContents(fn)](#sourcenodeprototypewalksourcecontentsfn) + - [SourceNode.prototype.join(sep)](#sourcenodeprototypejoinsep) + - [SourceNode.prototype.replaceRight(pattern, replacement)](#sourcenodeprototypereplacerightpattern-replacement) + - [SourceNode.prototype.toString()](#sourcenodeprototypetostring) + - [SourceNode.prototype.toStringWithSourceMap([startOfSourceMap])](#sourcenodeprototypetostringwithsourcemapstartofsourcemap) + + + +## Examples + +### Consuming a source map + +```js +var rawSourceMap = { + version: 3, + file: 'min.js', + names: ['bar', 'baz', 'n'], + sources: ['one.js', 'two.js'], + sourceRoot: 'http://example.com/www/js/', + mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA' +}; + +var smc = new SourceMapConsumer(rawSourceMap); + +console.log(smc.sources); +// [ 'http://example.com/www/js/one.js', +// 'http://example.com/www/js/two.js' ] + +console.log(smc.originalPositionFor({ + line: 2, + column: 28 +})); +// { source: 'http://example.com/www/js/two.js', +// line: 2, +// column: 10, +// name: 'n' } + +console.log(smc.generatedPositionFor({ + source: 'http://example.com/www/js/two.js', + line: 2, + column: 10 +})); +// { line: 2, column: 28 } + +smc.eachMapping(function (m) { + // ... +}); +``` + +### Generating a source map + +In depth guide: +[**Compiling to JavaScript, and Debugging with Source Maps**](https://hacks.mozilla.org/2013/05/compiling-to-javascript-and-debugging-with-source-maps/) + +#### With SourceNode (high level API) + +```js +function compile(ast) { + switch (ast.type) { + case 'BinaryExpression': + return new SourceNode( + ast.location.line, + ast.location.column, + ast.location.source, + [compile(ast.left), " + ", compile(ast.right)] + ); + case 'Literal': + return new SourceNode( + ast.location.line, + ast.location.column, + ast.location.source, + String(ast.value) + ); + // ... + default: + throw new Error("Bad AST"); + } +} + +var ast = parse("40 + 2", "add.js"); +console.log(compile(ast).toStringWithSourceMap({ + file: 'add.js' +})); +// { code: '40 + 2', +// map: [object SourceMapGenerator] } +``` + +#### With SourceMapGenerator (low level API) + +```js +var map = new SourceMapGenerator({ + file: "source-mapped.js" +}); + +map.addMapping({ + generated: { + line: 10, + column: 35 + }, + source: "foo.js", + original: { + line: 33, + column: 2 + }, + name: "christopher" +}); + +console.log(map.toString()); +// '{"version":3,"file":"source-mapped.js","sources":["foo.js"],"names":["christopher"],"mappings":";;;;;;;;;mCAgCEA"}' +``` + +## API + +Get a reference to the module: + +```js +// Node.js +var sourceMap = require('source-map'); + +// Browser builds +var sourceMap = window.sourceMap; + +// Inside Firefox +const sourceMap = require("devtools/toolkit/sourcemap/source-map.js"); +``` + +### SourceMapConsumer + +A SourceMapConsumer instance represents a parsed source map which we can query +for information about the original file positions by giving it a file position +in the generated source. + +#### new SourceMapConsumer(rawSourceMap) + +The only parameter is the raw source map (either as a string which can be +`JSON.parse`'d, or an object). According to the spec, source maps have the +following attributes: + +* `version`: Which version of the source map spec this map is following. + +* `sources`: An array of URLs to the original source files. + +* `names`: An array of identifiers which can be referenced by individual + mappings. + +* `sourceRoot`: Optional. The URL root from which all sources are relative. + +* `sourcesContent`: Optional. An array of contents of the original source files. + +* `mappings`: A string of base64 VLQs which contain the actual mappings. + +* `file`: Optional. The generated filename this source map is associated with. + +```js +var consumer = new sourceMap.SourceMapConsumer(rawSourceMapJsonData); +``` + +#### SourceMapConsumer.prototype.computeColumnSpans() + +Compute the last column for each generated mapping. The last column is +inclusive. + +```js +// Before: +consumer.allGeneratedPositionsFor({ line: 2, source: "foo.coffee" }) +// [ { line: 2, +// column: 1 }, +// { line: 2, +// column: 10 }, +// { line: 2, +// column: 20 } ] + +consumer.computeColumnSpans(); + +// After: +consumer.allGeneratedPositionsFor({ line: 2, source: "foo.coffee" }) +// [ { line: 2, +// column: 1, +// lastColumn: 9 }, +// { line: 2, +// column: 10, +// lastColumn: 19 }, +// { line: 2, +// column: 20, +// lastColumn: Infinity } ] + +``` + +#### SourceMapConsumer.prototype.originalPositionFor(generatedPosition) + +Returns the original source, line, and column information for the generated +source's line and column positions provided. The only argument is an object with +the following properties: + +* `line`: The line number in the generated source. Line numbers in + this library are 1-based (note that the underlying source map + specification uses 0-based line numbers -- this library handles the + translation). + +* `column`: The column number in the generated source. Column numbers + in this library are 0-based. + +* `bias`: Either `SourceMapConsumer.GREATEST_LOWER_BOUND` or + `SourceMapConsumer.LEAST_UPPER_BOUND`. Specifies whether to return the closest + element that is smaller than or greater than the one we are searching for, + respectively, if the exact element cannot be found. Defaults to + `SourceMapConsumer.GREATEST_LOWER_BOUND`. + +and an object is returned with the following properties: + +* `source`: The original source file, or null if this information is not + available. + +* `line`: The line number in the original source, or null if this information is + not available. The line number is 1-based. + +* `column`: The column number in the original source, or null if this + information is not available. The column number is 0-based. + +* `name`: The original identifier, or null if this information is not available. + +```js +consumer.originalPositionFor({ line: 2, column: 10 }) +// { source: 'foo.coffee', +// line: 2, +// column: 2, +// name: null } + +consumer.originalPositionFor({ line: 99999999999999999, column: 999999999999999 }) +// { source: null, +// line: null, +// column: null, +// name: null } +``` + +#### SourceMapConsumer.prototype.generatedPositionFor(originalPosition) + +Returns the generated line and column information for the original source, +line, and column positions provided. The only argument is an object with +the following properties: + +* `source`: The filename of the original source. + +* `line`: The line number in the original source. The line number is + 1-based. + +* `column`: The column number in the original source. The column + number is 0-based. + +and an object is returned with the following properties: + +* `line`: The line number in the generated source, or null. The line + number is 1-based. + +* `column`: The column number in the generated source, or null. The + column number is 0-based. + +```js +consumer.generatedPositionFor({ source: "example.js", line: 2, column: 10 }) +// { line: 1, +// column: 56 } +``` + +#### SourceMapConsumer.prototype.allGeneratedPositionsFor(originalPosition) + +Returns all generated line and column information for the original source, line, +and column provided. If no column is provided, returns all mappings +corresponding to a either the line we are searching for or the next closest line +that has any mappings. Otherwise, returns all mappings corresponding to the +given line and either the column we are searching for or the next closest column +that has any offsets. + +The only argument is an object with the following properties: + +* `source`: The filename of the original source. + +* `line`: The line number in the original source. The line number is + 1-based. + +* `column`: Optional. The column number in the original source. The + column number is 0-based. + +and an array of objects is returned, each with the following properties: + +* `line`: The line number in the generated source, or null. The line + number is 1-based. + +* `column`: The column number in the generated source, or null. The + column number is 0-based. + +```js +consumer.allGeneratedpositionsfor({ line: 2, source: "foo.coffee" }) +// [ { line: 2, +// column: 1 }, +// { line: 2, +// column: 10 }, +// { line: 2, +// column: 20 } ] +``` + +#### SourceMapConsumer.prototype.hasContentsOfAllSources() + +Return true if we have the embedded source content for every source listed in +the source map, false otherwise. + +In other words, if this method returns `true`, then +`consumer.sourceContentFor(s)` will succeed for every source `s` in +`consumer.sources`. + +```js +// ... +if (consumer.hasContentsOfAllSources()) { + consumerReadyCallback(consumer); +} else { + fetchSources(consumer, consumerReadyCallback); +} +// ... +``` + +#### SourceMapConsumer.prototype.sourceContentFor(source[, returnNullOnMissing]) + +Returns the original source content for the source provided. The only +argument is the URL of the original source file. + +If the source content for the given source is not found, then an error is +thrown. Optionally, pass `true` as the second param to have `null` returned +instead. + +```js +consumer.sources +// [ "my-cool-lib.clj" ] + +consumer.sourceContentFor("my-cool-lib.clj") +// "..." + +consumer.sourceContentFor("this is not in the source map"); +// Error: "this is not in the source map" is not in the source map + +consumer.sourceContentFor("this is not in the source map", true); +// null +``` + +#### SourceMapConsumer.prototype.eachMapping(callback, context, order) + +Iterate over each mapping between an original source/line/column and a +generated line/column in this source map. + +* `callback`: The function that is called with each mapping. Mappings have the + form `{ source, generatedLine, generatedColumn, originalLine, originalColumn, + name }` + +* `context`: Optional. If specified, this object will be the value of `this` + every time that `callback` is called. + +* `order`: Either `SourceMapConsumer.GENERATED_ORDER` or + `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to iterate over + the mappings sorted by the generated file's line/column order or the + original's source/line/column order, respectively. Defaults to + `SourceMapConsumer.GENERATED_ORDER`. + +```js +consumer.eachMapping(function (m) { console.log(m); }) +// ... +// { source: 'illmatic.js', +// generatedLine: 1, +// generatedColumn: 0, +// originalLine: 1, +// originalColumn: 0, +// name: null } +// { source: 'illmatic.js', +// generatedLine: 2, +// generatedColumn: 0, +// originalLine: 2, +// originalColumn: 0, +// name: null } +// ... +``` +### SourceMapGenerator + +An instance of the SourceMapGenerator represents a source map which is being +built incrementally. + +#### new SourceMapGenerator([startOfSourceMap]) + +You may pass an object with the following properties: + +* `file`: The filename of the generated source that this source map is + associated with. + +* `sourceRoot`: A root for all relative URLs in this source map. + +* `skipValidation`: Optional. When `true`, disables validation of mappings as + they are added. This can improve performance but should be used with + discretion, as a last resort. Even then, one should avoid using this flag when + running tests, if possible. + +* `ignoreInvalidMapping`: Optional. When `true`, instead of throwing error on + invalid mapping, it will be ignored. + +```js +var generator = new sourceMap.SourceMapGenerator({ + file: "my-generated-javascript-file.js", + sourceRoot: "http://example.com/app/js/" +}); +``` + +#### SourceMapGenerator.fromSourceMap(sourceMapConsumer, sourceMapGeneratorOptions) + +Creates a new `SourceMapGenerator` from an existing `SourceMapConsumer` instance. + +* `sourceMapConsumer` The SourceMap. + +* `sourceMapGeneratorOptions` options that will be passed to the SourceMapGenerator constructor which used under the hood. + +```js +var generator = sourceMap.SourceMapGenerator.fromSourceMap(consumer, { + ignoreInvalidMapping: true, +}); +``` + +#### SourceMapGenerator.prototype.addMapping(mapping) + +Add a single mapping from original source line and column to the generated +source's line and column for this source map being created. The mapping object +should have the following properties: + +* `generated`: An object with the generated line and column positions. + +* `original`: An object with the original line and column positions. + +* `source`: The original source file (relative to the sourceRoot). + +* `name`: An optional original token name for this mapping. + +```js +generator.addMapping({ + source: "module-one.scm", + original: { line: 128, column: 0 }, + generated: { line: 3, column: 456 } +}) +``` + +#### SourceMapGenerator.prototype.setSourceContent(sourceFile, sourceContent) + +Set the source content for an original source file. + +* `sourceFile` the URL of the original source file. + +* `sourceContent` the content of the source file. + +```js +generator.setSourceContent("module-one.scm", + fs.readFileSync("path/to/module-one.scm")) +``` + +#### SourceMapGenerator.prototype.applySourceMap(sourceMapConsumer[, sourceFile[, sourceMapPath]]) + +Applies a SourceMap for a source file to the SourceMap. +Each mapping to the supplied source file is rewritten using the +supplied SourceMap. Note: The resolution for the resulting mappings +is the minimum of this map and the supplied map. + +* `sourceMapConsumer`: The SourceMap to be applied. + +* `sourceFile`: Optional. The filename of the source file. + If omitted, sourceMapConsumer.file will be used, if it exists. + Otherwise an error will be thrown. + +* `sourceMapPath`: Optional. The dirname of the path to the SourceMap + to be applied. If relative, it is relative to the SourceMap. + + This parameter is needed when the two SourceMaps aren't in the same + directory, and the SourceMap to be applied contains relative source + paths. If so, those relative source paths need to be rewritten + relative to the SourceMap. + + If omitted, it is assumed that both SourceMaps are in the same directory, + thus not needing any rewriting. (Supplying `'.'` has the same effect.) + +#### SourceMapGenerator.prototype.toString() + +Renders the source map being generated to a string. + +```js +generator.toString() +// '{"version":3,"sources":["module-one.scm"],"names":[],"mappings":"...snip...","file":"my-generated-javascript-file.js","sourceRoot":"http://example.com/app/js/"}' +``` + +### SourceNode + +SourceNodes provide a way to abstract over interpolating and/or concatenating +snippets of generated JavaScript source code, while maintaining the line and +column information associated between those snippets and the original source +code. This is useful as the final intermediate representation a compiler might +use before outputting the generated JS and source map. + +#### new SourceNode([line, column, source[, chunk[, name]]]) + +* `line`: The original line number associated with this source node, or null if + it isn't associated with an original line. The line number is 1-based. + +* `column`: The original column number associated with this source node, or null + if it isn't associated with an original column. The column number + is 0-based. + +* `source`: The original source's filename; null if no filename is provided. + +* `chunk`: Optional. Is immediately passed to `SourceNode.prototype.add`, see + below. + +* `name`: Optional. The original identifier. + +```js +var node = new SourceNode(1, 2, "a.cpp", [ + new SourceNode(3, 4, "b.cpp", "extern int status;\n"), + new SourceNode(5, 6, "c.cpp", "std::string* make_string(size_t n);\n"), + new SourceNode(7, 8, "d.cpp", "int main(int argc, char** argv) {}\n"), +]); +``` + +#### SourceNode.fromStringWithSourceMap(code, sourceMapConsumer[, relativePath]) + +Creates a SourceNode from generated code and a SourceMapConsumer. + +* `code`: The generated code + +* `sourceMapConsumer` The SourceMap for the generated code + +* `relativePath` The optional path that relative sources in `sourceMapConsumer` + should be relative to. + +```js +var consumer = new SourceMapConsumer(fs.readFileSync("path/to/my-file.js.map", "utf8")); +var node = SourceNode.fromStringWithSourceMap(fs.readFileSync("path/to/my-file.js"), + consumer); +``` + +#### SourceNode.prototype.add(chunk) + +Add a chunk of generated JS to this source node. + +* `chunk`: A string snippet of generated JS code, another instance of + `SourceNode`, or an array where each member is one of those things. + +```js +node.add(" + "); +node.add(otherNode); +node.add([leftHandOperandNode, " + ", rightHandOperandNode]); +``` + +#### SourceNode.prototype.prepend(chunk) + +Prepend a chunk of generated JS to this source node. + +* `chunk`: A string snippet of generated JS code, another instance of + `SourceNode`, or an array where each member is one of those things. + +```js +node.prepend("/** Build Id: f783haef86324gf **/\n\n"); +``` + +#### SourceNode.prototype.setSourceContent(sourceFile, sourceContent) + +Set the source content for a source file. This will be added to the +`SourceMap` in the `sourcesContent` field. + +* `sourceFile`: The filename of the source file + +* `sourceContent`: The content of the source file + +```js +node.setSourceContent("module-one.scm", + fs.readFileSync("path/to/module-one.scm")) +``` + +#### SourceNode.prototype.walk(fn) + +Walk over the tree of JS snippets in this node and its children. The walking +function is called once for each snippet of JS and is passed that snippet and +the its original associated source's line/column location. + +* `fn`: The traversal function. + +```js +var node = new SourceNode(1, 2, "a.js", [ + new SourceNode(3, 4, "b.js", "uno"), + "dos", + [ + "tres", + new SourceNode(5, 6, "c.js", "quatro") + ] +]); + +node.walk(function (code, loc) { console.log("WALK:", code, loc); }) +// WALK: uno { source: 'b.js', line: 3, column: 4, name: null } +// WALK: dos { source: 'a.js', line: 1, column: 2, name: null } +// WALK: tres { source: 'a.js', line: 1, column: 2, name: null } +// WALK: quatro { source: 'c.js', line: 5, column: 6, name: null } +``` + +#### SourceNode.prototype.walkSourceContents(fn) + +Walk over the tree of SourceNodes. The walking function is called for each +source file content and is passed the filename and source content. + +* `fn`: The traversal function. + +```js +var a = new SourceNode(1, 2, "a.js", "generated from a"); +a.setSourceContent("a.js", "original a"); +var b = new SourceNode(1, 2, "b.js", "generated from b"); +b.setSourceContent("b.js", "original b"); +var c = new SourceNode(1, 2, "c.js", "generated from c"); +c.setSourceContent("c.js", "original c"); + +var node = new SourceNode(null, null, null, [a, b, c]); +node.walkSourceContents(function (source, contents) { console.log("WALK:", source, ":", contents); }) +// WALK: a.js : original a +// WALK: b.js : original b +// WALK: c.js : original c +``` + +#### SourceNode.prototype.join(sep) + +Like `Array.prototype.join` except for SourceNodes. Inserts the separator +between each of this source node's children. + +* `sep`: The separator. + +```js +var lhs = new SourceNode(1, 2, "a.rs", "my_copy"); +var operand = new SourceNode(3, 4, "a.rs", "="); +var rhs = new SourceNode(5, 6, "a.rs", "orig.clone()"); + +var node = new SourceNode(null, null, null, [ lhs, operand, rhs ]); +var joinedNode = node.join(" "); +``` + +#### SourceNode.prototype.replaceRight(pattern, replacement) + +Call `String.prototype.replace` on the very right-most source snippet. Useful +for trimming white space from the end of a source node, etc. + +* `pattern`: The pattern to replace. + +* `replacement`: The thing to replace the pattern with. + +```js +// Trim trailing white space. +node.replaceRight(/\s*$/, ""); +``` + +#### SourceNode.prototype.toString() + +Return the string representation of this source node. Walks over the tree and +concatenates all the various snippets together to one string. + +```js +var node = new SourceNode(1, 2, "a.js", [ + new SourceNode(3, 4, "b.js", "uno"), + "dos", + [ + "tres", + new SourceNode(5, 6, "c.js", "quatro") + ] +]); + +node.toString() +// 'unodostresquatro' +``` + +#### SourceNode.prototype.toStringWithSourceMap([startOfSourceMap]) + +Returns the string representation of this tree of source nodes, plus a +SourceMapGenerator which contains all the mappings between the generated and +original sources. + +The arguments are the same as those to `new SourceMapGenerator`. + +```js +var node = new SourceNode(1, 2, "a.js", [ + new SourceNode(3, 4, "b.js", "uno"), + "dos", + [ + "tres", + new SourceNode(5, 6, "c.js", "quatro") + ] +]); + +node.toStringWithSourceMap({ file: "my-output-file.js" }) +// { code: 'unodostresquatro', +// map: [object SourceMapGenerator] } +``` diff --git a/node_modules/source-map-js/lib/array-set.js b/node_modules/source-map-js/lib/array-set.js new file mode 100644 index 00000000..fbd5c81c --- /dev/null +++ b/node_modules/source-map-js/lib/array-set.js @@ -0,0 +1,121 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var util = require('./util'); +var has = Object.prototype.hasOwnProperty; +var hasNativeMap = typeof Map !== "undefined"; + +/** + * A data structure which is a combination of an array and a set. Adding a new + * member is O(1), testing for membership is O(1), and finding the index of an + * element is O(1). Removing elements from the set is not supported. Only + * strings are supported for membership. + */ +function ArraySet() { + this._array = []; + this._set = hasNativeMap ? new Map() : Object.create(null); +} + +/** + * Static method for creating ArraySet instances from an existing array. + */ +ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { + var set = new ArraySet(); + for (var i = 0, len = aArray.length; i < len; i++) { + set.add(aArray[i], aAllowDuplicates); + } + return set; +}; + +/** + * Return how many unique items are in this ArraySet. If duplicates have been + * added, than those do not count towards the size. + * + * @returns Number + */ +ArraySet.prototype.size = function ArraySet_size() { + return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; +}; + +/** + * Add the given string to this set. + * + * @param String aStr + */ +ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { + var sStr = hasNativeMap ? aStr : util.toSetString(aStr); + var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); + var idx = this._array.length; + if (!isDuplicate || aAllowDuplicates) { + this._array.push(aStr); + } + if (!isDuplicate) { + if (hasNativeMap) { + this._set.set(aStr, idx); + } else { + this._set[sStr] = idx; + } + } +}; + +/** + * Is the given string a member of this set? + * + * @param String aStr + */ +ArraySet.prototype.has = function ArraySet_has(aStr) { + if (hasNativeMap) { + return this._set.has(aStr); + } else { + var sStr = util.toSetString(aStr); + return has.call(this._set, sStr); + } +}; + +/** + * What is the index of the given string in the array? + * + * @param String aStr + */ +ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { + if (hasNativeMap) { + var idx = this._set.get(aStr); + if (idx >= 0) { + return idx; + } + } else { + var sStr = util.toSetString(aStr); + if (has.call(this._set, sStr)) { + return this._set[sStr]; + } + } + + throw new Error('"' + aStr + '" is not in the set.'); +}; + +/** + * What is the element at the given index? + * + * @param Number aIdx + */ +ArraySet.prototype.at = function ArraySet_at(aIdx) { + if (aIdx >= 0 && aIdx < this._array.length) { + return this._array[aIdx]; + } + throw new Error('No element indexed by ' + aIdx); +}; + +/** + * Returns the array representation of this set (which has the proper indices + * indicated by indexOf). Note that this is a copy of the internal array used + * for storing the members so that no one can mess with internal state. + */ +ArraySet.prototype.toArray = function ArraySet_toArray() { + return this._array.slice(); +}; + +exports.ArraySet = ArraySet; diff --git a/node_modules/source-map-js/lib/base64-vlq.js b/node_modules/source-map-js/lib/base64-vlq.js new file mode 100644 index 00000000..612b4040 --- /dev/null +++ b/node_modules/source-map-js/lib/base64-vlq.js @@ -0,0 +1,140 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + * + * Based on the Base 64 VLQ implementation in Closure Compiler: + * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java + * + * Copyright 2011 The Closure Compiler Authors. All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +var base64 = require('./base64'); + +// A single base 64 digit can contain 6 bits of data. For the base 64 variable +// length quantities we use in the source map spec, the first bit is the sign, +// the next four bits are the actual value, and the 6th bit is the +// continuation bit. The continuation bit tells us whether there are more +// digits in this value following this digit. +// +// Continuation +// | Sign +// | | +// V V +// 101011 + +var VLQ_BASE_SHIFT = 5; + +// binary: 100000 +var VLQ_BASE = 1 << VLQ_BASE_SHIFT; + +// binary: 011111 +var VLQ_BASE_MASK = VLQ_BASE - 1; + +// binary: 100000 +var VLQ_CONTINUATION_BIT = VLQ_BASE; + +/** + * Converts from a two-complement value to a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) + * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) + */ +function toVLQSigned(aValue) { + return aValue < 0 + ? ((-aValue) << 1) + 1 + : (aValue << 1) + 0; +} + +/** + * Converts to a two-complement value from a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 + * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 + */ +function fromVLQSigned(aValue) { + var isNegative = (aValue & 1) === 1; + var shifted = aValue >> 1; + return isNegative + ? -shifted + : shifted; +} + +/** + * Returns the base 64 VLQ encoded value. + */ +exports.encode = function base64VLQ_encode(aValue) { + var encoded = ""; + var digit; + + var vlq = toVLQSigned(aValue); + + do { + digit = vlq & VLQ_BASE_MASK; + vlq >>>= VLQ_BASE_SHIFT; + if (vlq > 0) { + // There are still more digits in this value, so we must make sure the + // continuation bit is marked. + digit |= VLQ_CONTINUATION_BIT; + } + encoded += base64.encode(digit); + } while (vlq > 0); + + return encoded; +}; + +/** + * Decodes the next base 64 VLQ value from the given string and returns the + * value and the rest of the string via the out parameter. + */ +exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { + var strLen = aStr.length; + var result = 0; + var shift = 0; + var continuation, digit; + + do { + if (aIndex >= strLen) { + throw new Error("Expected more digits in base 64 VLQ value."); + } + + digit = base64.decode(aStr.charCodeAt(aIndex++)); + if (digit === -1) { + throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); + } + + continuation = !!(digit & VLQ_CONTINUATION_BIT); + digit &= VLQ_BASE_MASK; + result = result + (digit << shift); + shift += VLQ_BASE_SHIFT; + } while (continuation); + + aOutParam.value = fromVLQSigned(result); + aOutParam.rest = aIndex; +}; diff --git a/node_modules/source-map-js/lib/base64.js b/node_modules/source-map-js/lib/base64.js new file mode 100644 index 00000000..8aa86b30 --- /dev/null +++ b/node_modules/source-map-js/lib/base64.js @@ -0,0 +1,67 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); + +/** + * Encode an integer in the range of 0 to 63 to a single base 64 digit. + */ +exports.encode = function (number) { + if (0 <= number && number < intToCharMap.length) { + return intToCharMap[number]; + } + throw new TypeError("Must be between 0 and 63: " + number); +}; + +/** + * Decode a single base 64 character code digit to an integer. Returns -1 on + * failure. + */ +exports.decode = function (charCode) { + var bigA = 65; // 'A' + var bigZ = 90; // 'Z' + + var littleA = 97; // 'a' + var littleZ = 122; // 'z' + + var zero = 48; // '0' + var nine = 57; // '9' + + var plus = 43; // '+' + var slash = 47; // '/' + + var littleOffset = 26; + var numberOffset = 52; + + // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ + if (bigA <= charCode && charCode <= bigZ) { + return (charCode - bigA); + } + + // 26 - 51: abcdefghijklmnopqrstuvwxyz + if (littleA <= charCode && charCode <= littleZ) { + return (charCode - littleA + littleOffset); + } + + // 52 - 61: 0123456789 + if (zero <= charCode && charCode <= nine) { + return (charCode - zero + numberOffset); + } + + // 62: + + if (charCode == plus) { + return 62; + } + + // 63: / + if (charCode == slash) { + return 63; + } + + // Invalid base64 digit. + return -1; +}; diff --git a/node_modules/source-map-js/lib/binary-search.js b/node_modules/source-map-js/lib/binary-search.js new file mode 100644 index 00000000..010ac941 --- /dev/null +++ b/node_modules/source-map-js/lib/binary-search.js @@ -0,0 +1,111 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +exports.GREATEST_LOWER_BOUND = 1; +exports.LEAST_UPPER_BOUND = 2; + +/** + * Recursive implementation of binary search. + * + * @param aLow Indices here and lower do not contain the needle. + * @param aHigh Indices here and higher do not contain the needle. + * @param aNeedle The element being searched for. + * @param aHaystack The non-empty array being searched. + * @param aCompare Function which takes two elements and returns -1, 0, or 1. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + */ +function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { + // This function terminates when one of the following is true: + // + // 1. We find the exact element we are looking for. + // + // 2. We did not find the exact element, but we can return the index of + // the next-closest element. + // + // 3. We did not find the exact element, and there is no next-closest + // element than the one we are searching for, so we return -1. + var mid = Math.floor((aHigh - aLow) / 2) + aLow; + var cmp = aCompare(aNeedle, aHaystack[mid], true); + if (cmp === 0) { + // Found the element we are looking for. + return mid; + } + else if (cmp > 0) { + // Our needle is greater than aHaystack[mid]. + if (aHigh - mid > 1) { + // The element is in the upper half. + return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); + } + + // The exact needle element was not found in this haystack. Determine if + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return aHigh < aHaystack.length ? aHigh : -1; + } else { + return mid; + } + } + else { + // Our needle is less than aHaystack[mid]. + if (mid - aLow > 1) { + // The element is in the lower half. + return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); + } + + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return mid; + } else { + return aLow < 0 ? -1 : aLow; + } + } +} + +/** + * This is an implementation of binary search which will always try and return + * the index of the closest element if there is no exact hit. This is because + * mappings between original and generated line/col pairs are single points, + * and there is an implicit region between each of them, so a miss just means + * that you aren't on the very start of a region. + * + * @param aNeedle The element you are looking for. + * @param aHaystack The array that is being searched. + * @param aCompare A function which takes the needle and an element in the + * array and returns -1, 0, or 1 depending on whether the needle is less + * than, equal to, or greater than the element, respectively. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. + */ +exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { + if (aHaystack.length === 0) { + return -1; + } + + var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, + aCompare, aBias || exports.GREATEST_LOWER_BOUND); + if (index < 0) { + return -1; + } + + // We have found either the exact element, or the next-closest element than + // the one we are searching for. However, there may be more than one such + // element. Make sure we always return the smallest of these. + while (index - 1 >= 0) { + if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { + break; + } + --index; + } + + return index; +}; diff --git a/node_modules/source-map-js/lib/mapping-list.js b/node_modules/source-map-js/lib/mapping-list.js new file mode 100644 index 00000000..06d1274a --- /dev/null +++ b/node_modules/source-map-js/lib/mapping-list.js @@ -0,0 +1,79 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2014 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var util = require('./util'); + +/** + * Determine whether mappingB is after mappingA with respect to generated + * position. + */ +function generatedPositionAfter(mappingA, mappingB) { + // Optimized for most common case + var lineA = mappingA.generatedLine; + var lineB = mappingB.generatedLine; + var columnA = mappingA.generatedColumn; + var columnB = mappingB.generatedColumn; + return lineB > lineA || lineB == lineA && columnB >= columnA || + util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; +} + +/** + * A data structure to provide a sorted view of accumulated mappings in a + * performance conscious manner. It trades a neglibable overhead in general + * case for a large speedup in case of mappings being added in order. + */ +function MappingList() { + this._array = []; + this._sorted = true; + // Serves as infimum + this._last = {generatedLine: -1, generatedColumn: 0}; +} + +/** + * Iterate through internal items. This method takes the same arguments that + * `Array.prototype.forEach` takes. + * + * NOTE: The order of the mappings is NOT guaranteed. + */ +MappingList.prototype.unsortedForEach = + function MappingList_forEach(aCallback, aThisArg) { + this._array.forEach(aCallback, aThisArg); + }; + +/** + * Add the given source mapping. + * + * @param Object aMapping + */ +MappingList.prototype.add = function MappingList_add(aMapping) { + if (generatedPositionAfter(this._last, aMapping)) { + this._last = aMapping; + this._array.push(aMapping); + } else { + this._sorted = false; + this._array.push(aMapping); + } +}; + +/** + * Returns the flat, sorted array of mappings. The mappings are sorted by + * generated position. + * + * WARNING: This method returns internal data without copying, for + * performance. The return value must NOT be mutated, and should be treated as + * an immutable borrow. If you want to take ownership, you must make your own + * copy. + */ +MappingList.prototype.toArray = function MappingList_toArray() { + if (!this._sorted) { + this._array.sort(util.compareByGeneratedPositionsInflated); + this._sorted = true; + } + return this._array; +}; + +exports.MappingList = MappingList; diff --git a/node_modules/source-map-js/lib/quick-sort.js b/node_modules/source-map-js/lib/quick-sort.js new file mode 100644 index 00000000..23f9eda5 --- /dev/null +++ b/node_modules/source-map-js/lib/quick-sort.js @@ -0,0 +1,132 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +// It turns out that some (most?) JavaScript engines don't self-host +// `Array.prototype.sort`. This makes sense because C++ will likely remain +// faster than JS when doing raw CPU-intensive sorting. However, when using a +// custom comparator function, calling back and forth between the VM's C++ and +// JIT'd JS is rather slow *and* loses JIT type information, resulting in +// worse generated code for the comparator function than would be optimal. In +// fact, when sorting with a comparator, these costs outweigh the benefits of +// sorting in C++. By using our own JS-implemented Quick Sort (below), we get +// a ~3500ms mean speed-up in `bench/bench.html`. + +function SortTemplate(comparator) { + +/** + * Swap the elements indexed by `x` and `y` in the array `ary`. + * + * @param {Array} ary + * The array. + * @param {Number} x + * The index of the first item. + * @param {Number} y + * The index of the second item. + */ +function swap(ary, x, y) { + var temp = ary[x]; + ary[x] = ary[y]; + ary[y] = temp; +} + +/** + * Returns a random integer within the range `low .. high` inclusive. + * + * @param {Number} low + * The lower bound on the range. + * @param {Number} high + * The upper bound on the range. + */ +function randomIntInRange(low, high) { + return Math.round(low + (Math.random() * (high - low))); +} + +/** + * The Quick Sort algorithm. + * + * @param {Array} ary + * An array to sort. + * @param {function} comparator + * Function to use to compare two items. + * @param {Number} p + * Start index of the array + * @param {Number} r + * End index of the array + */ +function doQuickSort(ary, comparator, p, r) { + // If our lower bound is less than our upper bound, we (1) partition the + // array into two pieces and (2) recurse on each half. If it is not, this is + // the empty array and our base case. + + if (p < r) { + // (1) Partitioning. + // + // The partitioning chooses a pivot between `p` and `r` and moves all + // elements that are less than or equal to the pivot to the before it, and + // all the elements that are greater than it after it. The effect is that + // once partition is done, the pivot is in the exact place it will be when + // the array is put in sorted order, and it will not need to be moved + // again. This runs in O(n) time. + + // Always choose a random pivot so that an input array which is reverse + // sorted does not cause O(n^2) running time. + var pivotIndex = randomIntInRange(p, r); + var i = p - 1; + + swap(ary, pivotIndex, r); + var pivot = ary[r]; + + // Immediately after `j` is incremented in this loop, the following hold + // true: + // + // * Every element in `ary[p .. i]` is less than or equal to the pivot. + // + // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. + for (var j = p; j < r; j++) { + if (comparator(ary[j], pivot, false) <= 0) { + i += 1; + swap(ary, i, j); + } + } + + swap(ary, i + 1, j); + var q = i + 1; + + // (2) Recurse on each half. + + doQuickSort(ary, comparator, p, q - 1); + doQuickSort(ary, comparator, q + 1, r); + } +} + + return doQuickSort; +} + +function cloneSort(comparator) { + let template = SortTemplate.toString(); + let templateFn = new Function(`return ${template}`)(); + return templateFn(comparator); +} + +/** + * Sort the given array in-place with the given comparator function. + * + * @param {Array} ary + * An array to sort. + * @param {function} comparator + * Function to use to compare two items. + */ + +let sortCache = new WeakMap(); +exports.quickSort = function (ary, comparator, start = 0) { + let doQuickSort = sortCache.get(comparator); + if (doQuickSort === void 0) { + doQuickSort = cloneSort(comparator); + sortCache.set(comparator, doQuickSort); + } + doQuickSort(ary, comparator, start, ary.length - 1); +}; diff --git a/node_modules/source-map-js/lib/source-map-consumer.d.ts b/node_modules/source-map-js/lib/source-map-consumer.d.ts new file mode 100644 index 00000000..744bda73 --- /dev/null +++ b/node_modules/source-map-js/lib/source-map-consumer.d.ts @@ -0,0 +1 @@ +export { SourceMapConsumer } from '..'; diff --git a/node_modules/source-map-js/lib/source-map-consumer.js b/node_modules/source-map-js/lib/source-map-consumer.js new file mode 100644 index 00000000..ee661146 --- /dev/null +++ b/node_modules/source-map-js/lib/source-map-consumer.js @@ -0,0 +1,1188 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var util = require('./util'); +var binarySearch = require('./binary-search'); +var ArraySet = require('./array-set').ArraySet; +var base64VLQ = require('./base64-vlq'); +var quickSort = require('./quick-sort').quickSort; + +function SourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + return sourceMap.sections != null + ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL) + : new BasicSourceMapConsumer(sourceMap, aSourceMapURL); +} + +SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) { + return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL); +} + +/** + * The version of the source mapping spec that we are consuming. + */ +SourceMapConsumer.prototype._version = 3; + +// `__generatedMappings` and `__originalMappings` are arrays that hold the +// parsed mapping coordinates from the source map's "mappings" attribute. They +// are lazily instantiated, accessed via the `_generatedMappings` and +// `_originalMappings` getters respectively, and we only parse the mappings +// and create these arrays once queried for a source location. We jump through +// these hoops because there can be many thousands of mappings, and parsing +// them is expensive, so we only want to do it if we must. +// +// Each object in the arrays is of the form: +// +// { +// generatedLine: The line number in the generated code, +// generatedColumn: The column number in the generated code, +// source: The path to the original source file that generated this +// chunk of code, +// originalLine: The line number in the original source that +// corresponds to this chunk of generated code, +// originalColumn: The column number in the original source that +// corresponds to this chunk of generated code, +// name: The name of the original symbol which generated this chunk of +// code. +// } +// +// All properties except for `generatedLine` and `generatedColumn` can be +// `null`. +// +// `_generatedMappings` is ordered by the generated positions. +// +// `_originalMappings` is ordered by the original positions. + +SourceMapConsumer.prototype.__generatedMappings = null; +Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { + configurable: true, + enumerable: true, + get: function () { + if (!this.__generatedMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } + + return this.__generatedMappings; + } +}); + +SourceMapConsumer.prototype.__originalMappings = null; +Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { + configurable: true, + enumerable: true, + get: function () { + if (!this.__originalMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } + + return this.__originalMappings; + } +}); + +SourceMapConsumer.prototype._charIsMappingSeparator = + function SourceMapConsumer_charIsMappingSeparator(aStr, index) { + var c = aStr.charAt(index); + return c === ";" || c === ","; + }; + +/** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ +SourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + throw new Error("Subclasses must implement _parseMappings"); + }; + +SourceMapConsumer.GENERATED_ORDER = 1; +SourceMapConsumer.ORIGINAL_ORDER = 2; + +SourceMapConsumer.GREATEST_LOWER_BOUND = 1; +SourceMapConsumer.LEAST_UPPER_BOUND = 2; + +/** + * Iterate over each mapping between an original source/line/column and a + * generated line/column in this source map. + * + * @param Function aCallback + * The function that is called with each mapping. + * @param Object aContext + * Optional. If specified, this object will be the value of `this` every + * time that `aCallback` is called. + * @param aOrder + * Either `SourceMapConsumer.GENERATED_ORDER` or + * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to + * iterate over the mappings sorted by the generated file's line/column + * order or the original's source/line/column order, respectively. Defaults to + * `SourceMapConsumer.GENERATED_ORDER`. + */ +SourceMapConsumer.prototype.eachMapping = + function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { + var context = aContext || null; + var order = aOrder || SourceMapConsumer.GENERATED_ORDER; + + var mappings; + switch (order) { + case SourceMapConsumer.GENERATED_ORDER: + mappings = this._generatedMappings; + break; + case SourceMapConsumer.ORIGINAL_ORDER: + mappings = this._originalMappings; + break; + default: + throw new Error("Unknown order of iteration."); + } + + var sourceRoot = this.sourceRoot; + var boundCallback = aCallback.bind(context); + var names = this._names; + var sources = this._sources; + var sourceMapURL = this._sourceMapURL; + + for (var i = 0, n = mappings.length; i < n; i++) { + var mapping = mappings[i]; + var source = mapping.source === null ? null : sources.at(mapping.source); + if(source !== null) { + source = util.computeSourceURL(sourceRoot, source, sourceMapURL); + } + boundCallback({ + source: source, + generatedLine: mapping.generatedLine, + generatedColumn: mapping.generatedColumn, + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: mapping.name === null ? null : names.at(mapping.name) + }); + } + }; + +/** + * Returns all generated line and column information for the original source, + * line, and column provided. If no column is provided, returns all mappings + * corresponding to a either the line we are searching for or the next + * closest line that has any mappings. Otherwise, returns all mappings + * corresponding to the given line and either the column we are searching for + * or the next closest column that has any offsets. + * + * The only argument is an object with the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number is 1-based. + * - column: Optional. the column number in the original source. + * The column number is 0-based. + * + * and an array of objects is returned, each with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ +SourceMapConsumer.prototype.allGeneratedPositionsFor = + function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { + var line = util.getArg(aArgs, 'line'); + + // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping + // returns the index of the closest mapping less than the needle. By + // setting needle.originalColumn to 0, we thus find the last mapping for + // the given line, provided such a mapping exists. + var needle = { + source: util.getArg(aArgs, 'source'), + originalLine: line, + originalColumn: util.getArg(aArgs, 'column', 0) + }; + + needle.source = this._findSourceIndex(needle.source); + if (needle.source < 0) { + return []; + } + + var mappings = []; + + var index = this._findMapping(needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + binarySearch.LEAST_UPPER_BOUND); + if (index >= 0) { + var mapping = this._originalMappings[index]; + + if (aArgs.column === undefined) { + var originalLine = mapping.originalLine; + + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we found. Since + // mappings are sorted, this is guaranteed to find all mappings for + // the line we found. + while (mapping && mapping.originalLine === originalLine) { + mappings.push({ + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }); + + mapping = this._originalMappings[++index]; + } + } else { + var originalColumn = mapping.originalColumn; + + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we were searching for. + // Since mappings are sorted, this is guaranteed to find all mappings for + // the line we are searching for. + while (mapping && + mapping.originalLine === line && + mapping.originalColumn == originalColumn) { + mappings.push({ + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }); + + mapping = this._originalMappings[++index]; + } + } + } + + return mappings; + }; + +exports.SourceMapConsumer = SourceMapConsumer; + +/** + * A BasicSourceMapConsumer instance represents a parsed source map which we can + * query for information about the original file positions by giving it a file + * position in the generated source. + * + * The first parameter is the raw source map (either as a JSON string, or + * already parsed to an object). According to the spec, source maps have the + * following attributes: + * + * - version: Which version of the source map spec this map is following. + * - sources: An array of URLs to the original source files. + * - names: An array of identifiers which can be referrenced by individual mappings. + * - sourceRoot: Optional. The URL root from which all sources are relative. + * - sourcesContent: Optional. An array of contents of the original source files. + * - mappings: A string of base64 VLQs which contain the actual mappings. + * - file: Optional. The generated file this source map is associated with. + * + * Here is an example source map, taken from the source map spec[0]: + * + * { + * version : 3, + * file: "out.js", + * sourceRoot : "", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AA,AB;;ABCDE;" + * } + * + * The second parameter, if given, is a string whose value is the URL + * at which the source map was found. This URL is used to compute the + * sources array. + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# + */ +function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + var version = util.getArg(sourceMap, 'version'); + var sources = util.getArg(sourceMap, 'sources'); + // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which + // requires the array) to play nice here. + var names = util.getArg(sourceMap, 'names', []); + var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); + var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); + var mappings = util.getArg(sourceMap, 'mappings'); + var file = util.getArg(sourceMap, 'file', null); + + // Once again, Sass deviates from the spec and supplies the version as a + // string rather than a number, so we use loose equality checking here. + if (version != this._version) { + throw new Error('Unsupported version: ' + version); + } + + if (sourceRoot) { + sourceRoot = util.normalize(sourceRoot); + } + + sources = sources + .map(String) + // Some source maps produce relative source paths like "./foo.js" instead of + // "foo.js". Normalize these first so that future comparisons will succeed. + // See bugzil.la/1090768. + .map(util.normalize) + // Always ensure that absolute sources are internally stored relative to + // the source root, if the source root is absolute. Not doing this would + // be particularly problematic when the source root is a prefix of the + // source (valid, but why??). See github issue #199 and bugzil.la/1188982. + .map(function (source) { + return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) + ? util.relative(sourceRoot, source) + : source; + }); + + // Pass `true` below to allow duplicate names and sources. While source maps + // are intended to be compressed and deduplicated, the TypeScript compiler + // sometimes generates source maps with duplicates in them. See Github issue + // #72 and bugzil.la/889492. + this._names = ArraySet.fromArray(names.map(String), true); + this._sources = ArraySet.fromArray(sources, true); + + this._absoluteSources = this._sources.toArray().map(function (s) { + return util.computeSourceURL(sourceRoot, s, aSourceMapURL); + }); + + this.sourceRoot = sourceRoot; + this.sourcesContent = sourcesContent; + this._mappings = mappings; + this._sourceMapURL = aSourceMapURL; + this.file = file; +} + +BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); +BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; + +/** + * Utility function to find the index of a source. Returns -1 if not + * found. + */ +BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) { + var relativeSource = aSource; + if (this.sourceRoot != null) { + relativeSource = util.relative(this.sourceRoot, relativeSource); + } + + if (this._sources.has(relativeSource)) { + return this._sources.indexOf(relativeSource); + } + + // Maybe aSource is an absolute URL as returned by |sources|. In + // this case we can't simply undo the transform. + var i; + for (i = 0; i < this._absoluteSources.length; ++i) { + if (this._absoluteSources[i] == aSource) { + return i; + } + } + + return -1; +}; + +/** + * Create a BasicSourceMapConsumer from a SourceMapGenerator. + * + * @param SourceMapGenerator aSourceMap + * The source map that will be consumed. + * @param String aSourceMapURL + * The URL at which the source map can be found (optional) + * @returns BasicSourceMapConsumer + */ +BasicSourceMapConsumer.fromSourceMap = + function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) { + var smc = Object.create(BasicSourceMapConsumer.prototype); + + var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); + var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); + smc.sourceRoot = aSourceMap._sourceRoot; + smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), + smc.sourceRoot); + smc.file = aSourceMap._file; + smc._sourceMapURL = aSourceMapURL; + smc._absoluteSources = smc._sources.toArray().map(function (s) { + return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL); + }); + + // Because we are modifying the entries (by converting string sources and + // names to indices into the sources and names ArraySets), we have to make + // a copy of the entry or else bad things happen. Shared mutable state + // strikes again! See github issue #191. + + var generatedMappings = aSourceMap._mappings.toArray().slice(); + var destGeneratedMappings = smc.__generatedMappings = []; + var destOriginalMappings = smc.__originalMappings = []; + + for (var i = 0, length = generatedMappings.length; i < length; i++) { + var srcMapping = generatedMappings[i]; + var destMapping = new Mapping; + destMapping.generatedLine = srcMapping.generatedLine; + destMapping.generatedColumn = srcMapping.generatedColumn; + + if (srcMapping.source) { + destMapping.source = sources.indexOf(srcMapping.source); + destMapping.originalLine = srcMapping.originalLine; + destMapping.originalColumn = srcMapping.originalColumn; + + if (srcMapping.name) { + destMapping.name = names.indexOf(srcMapping.name); + } + + destOriginalMappings.push(destMapping); + } + + destGeneratedMappings.push(destMapping); + } + + quickSort(smc.__originalMappings, util.compareByOriginalPositions); + + return smc; + }; + +/** + * The version of the source mapping spec that we are consuming. + */ +BasicSourceMapConsumer.prototype._version = 3; + +/** + * The list of original sources. + */ +Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { + get: function () { + return this._absoluteSources.slice(); + } +}); + +/** + * Provide the JIT with a nice shape / hidden class. + */ +function Mapping() { + this.generatedLine = 0; + this.generatedColumn = 0; + this.source = null; + this.originalLine = null; + this.originalColumn = null; + this.name = null; +} + +/** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ + +const compareGenerated = util.compareByGeneratedPositionsDeflatedNoLine; +function sortGenerated(array, start) { + let l = array.length; + let n = array.length - start; + if (n <= 1) { + return; + } else if (n == 2) { + let a = array[start]; + let b = array[start + 1]; + if (compareGenerated(a, b) > 0) { + array[start] = b; + array[start + 1] = a; + } + } else if (n < 20) { + for (let i = start; i < l; i++) { + for (let j = i; j > start; j--) { + let a = array[j - 1]; + let b = array[j]; + if (compareGenerated(a, b) <= 0) { + break; + } + array[j - 1] = b; + array[j] = a; + } + } + } else { + quickSort(array, compareGenerated, start); + } +} +BasicSourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + var generatedLine = 1; + var previousGeneratedColumn = 0; + var previousOriginalLine = 0; + var previousOriginalColumn = 0; + var previousSource = 0; + var previousName = 0; + var length = aStr.length; + var index = 0; + var cachedSegments = {}; + var temp = {}; + var originalMappings = []; + var generatedMappings = []; + var mapping, str, segment, end, value; + + let subarrayStart = 0; + while (index < length) { + if (aStr.charAt(index) === ';') { + generatedLine++; + index++; + previousGeneratedColumn = 0; + + sortGenerated(generatedMappings, subarrayStart); + subarrayStart = generatedMappings.length; + } + else if (aStr.charAt(index) === ',') { + index++; + } + else { + mapping = new Mapping(); + mapping.generatedLine = generatedLine; + + for (end = index; end < length; end++) { + if (this._charIsMappingSeparator(aStr, end)) { + break; + } + } + str = aStr.slice(index, end); + + segment = []; + while (index < end) { + base64VLQ.decode(aStr, index, temp); + value = temp.value; + index = temp.rest; + segment.push(value); + } + + if (segment.length === 2) { + throw new Error('Found a source, but no line and column'); + } + + if (segment.length === 3) { + throw new Error('Found a source and line, but no column'); + } + + // Generated column. + mapping.generatedColumn = previousGeneratedColumn + segment[0]; + previousGeneratedColumn = mapping.generatedColumn; + + if (segment.length > 1) { + // Original source. + mapping.source = previousSource + segment[1]; + previousSource += segment[1]; + + // Original line. + mapping.originalLine = previousOriginalLine + segment[2]; + previousOriginalLine = mapping.originalLine; + // Lines are stored 0-based + mapping.originalLine += 1; + + // Original column. + mapping.originalColumn = previousOriginalColumn + segment[3]; + previousOriginalColumn = mapping.originalColumn; + + if (segment.length > 4) { + // Original name. + mapping.name = previousName + segment[4]; + previousName += segment[4]; + } + } + + generatedMappings.push(mapping); + if (typeof mapping.originalLine === 'number') { + let currentSource = mapping.source; + while (originalMappings.length <= currentSource) { + originalMappings.push(null); + } + if (originalMappings[currentSource] === null) { + originalMappings[currentSource] = []; + } + originalMappings[currentSource].push(mapping); + } + } + } + + sortGenerated(generatedMappings, subarrayStart); + this.__generatedMappings = generatedMappings; + + for (var i = 0; i < originalMappings.length; i++) { + if (originalMappings[i] != null) { + quickSort(originalMappings[i], util.compareByOriginalPositionsNoSource); + } + } + this.__originalMappings = [].concat(...originalMappings); + }; + +/** + * Find the mapping that best matches the hypothetical "needle" mapping that + * we are searching for in the given "haystack" of mappings. + */ +BasicSourceMapConsumer.prototype._findMapping = + function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, + aColumnName, aComparator, aBias) { + // To return the position we are searching for, we must first find the + // mapping for the given position and then return the opposite position it + // points to. Because the mappings are sorted, we can use binary search to + // find the best mapping. + + if (aNeedle[aLineName] <= 0) { + throw new TypeError('Line must be greater than or equal to 1, got ' + + aNeedle[aLineName]); + } + if (aNeedle[aColumnName] < 0) { + throw new TypeError('Column must be greater than or equal to 0, got ' + + aNeedle[aColumnName]); + } + + return binarySearch.search(aNeedle, aMappings, aComparator, aBias); + }; + +/** + * Compute the last column for each generated mapping. The last column is + * inclusive. + */ +BasicSourceMapConsumer.prototype.computeColumnSpans = + function SourceMapConsumer_computeColumnSpans() { + for (var index = 0; index < this._generatedMappings.length; ++index) { + var mapping = this._generatedMappings[index]; + + // Mappings do not contain a field for the last generated columnt. We + // can come up with an optimistic estimate, however, by assuming that + // mappings are contiguous (i.e. given two consecutive mappings, the + // first mapping ends where the second one starts). + if (index + 1 < this._generatedMappings.length) { + var nextMapping = this._generatedMappings[index + 1]; + + if (mapping.generatedLine === nextMapping.generatedLine) { + mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; + continue; + } + } + + // The last mapping for each line spans the entire line. + mapping.lastGeneratedColumn = Infinity; + } + }; + +/** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. The line number + * is 1-based. + * - column: The column number in the generated source. The column + * number is 0-based. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. The + * line number is 1-based. + * - column: The column number in the original source, or null. The + * column number is 0-based. + * - name: The original identifier, or null. + */ +BasicSourceMapConsumer.prototype.originalPositionFor = + function SourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, 'line'), + generatedColumn: util.getArg(aArgs, 'column') + }; + + var index = this._findMapping( + needle, + this._generatedMappings, + "generatedLine", + "generatedColumn", + util.compareByGeneratedPositionsDeflated, + util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + + if (index >= 0) { + var mapping = this._generatedMappings[index]; + + if (mapping.generatedLine === needle.generatedLine) { + var source = util.getArg(mapping, 'source', null); + if (source !== null) { + source = this._sources.at(source); + source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL); + } + var name = util.getArg(mapping, 'name', null); + if (name !== null) { + name = this._names.at(name); + } + return { + source: source, + line: util.getArg(mapping, 'originalLine', null), + column: util.getArg(mapping, 'originalColumn', null), + name: name + }; + } + } + + return { + source: null, + line: null, + column: null, + name: null + }; + }; + +/** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ +BasicSourceMapConsumer.prototype.hasContentsOfAllSources = + function BasicSourceMapConsumer_hasContentsOfAllSources() { + if (!this.sourcesContent) { + return false; + } + return this.sourcesContent.length >= this._sources.size() && + !this.sourcesContent.some(function (sc) { return sc == null; }); + }; + +/** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ +BasicSourceMapConsumer.prototype.sourceContentFor = + function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + if (!this.sourcesContent) { + return null; + } + + var index = this._findSourceIndex(aSource); + if (index >= 0) { + return this.sourcesContent[index]; + } + + var relativeSource = aSource; + if (this.sourceRoot != null) { + relativeSource = util.relative(this.sourceRoot, relativeSource); + } + + var url; + if (this.sourceRoot != null + && (url = util.urlParse(this.sourceRoot))) { + // XXX: file:// URIs and absolute paths lead to unexpected behavior for + // many users. We can help them out when they expect file:// URIs to + // behave like it would if they were running a local HTTP server. See + // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. + var fileUriAbsPath = relativeSource.replace(/^file:\/\//, ""); + if (url.scheme == "file" + && this._sources.has(fileUriAbsPath)) { + return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] + } + + if ((!url.path || url.path == "/") + && this._sources.has("/" + relativeSource)) { + return this.sourcesContent[this._sources.indexOf("/" + relativeSource)]; + } + } + + // This function is used recursively from + // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we + // don't want to throw if we can't find the source - we just want to + // return null, so we provide a flag to exit gracefully. + if (nullOnMissing) { + return null; + } + else { + throw new Error('"' + relativeSource + '" is not in the SourceMap.'); + } + }; + +/** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number + * is 1-based. + * - column: The column number in the original source. The column + * number is 0-based. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ +BasicSourceMapConsumer.prototype.generatedPositionFor = + function SourceMapConsumer_generatedPositionFor(aArgs) { + var source = util.getArg(aArgs, 'source'); + source = this._findSourceIndex(source); + if (source < 0) { + return { + line: null, + column: null, + lastColumn: null + }; + } + + var needle = { + source: source, + originalLine: util.getArg(aArgs, 'line'), + originalColumn: util.getArg(aArgs, 'column') + }; + + var index = this._findMapping( + needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + + if (index >= 0) { + var mapping = this._originalMappings[index]; + + if (mapping.source === needle.source) { + return { + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }; + } + } + + return { + line: null, + column: null, + lastColumn: null + }; + }; + +exports.BasicSourceMapConsumer = BasicSourceMapConsumer; + +/** + * An IndexedSourceMapConsumer instance represents a parsed source map which + * we can query for information. It differs from BasicSourceMapConsumer in + * that it takes "indexed" source maps (i.e. ones with a "sections" field) as + * input. + * + * The first parameter is a raw source map (either as a JSON string, or already + * parsed to an object). According to the spec for indexed source maps, they + * have the following attributes: + * + * - version: Which version of the source map spec this map is following. + * - file: Optional. The generated file this source map is associated with. + * - sections: A list of section definitions. + * + * Each value under the "sections" field has two fields: + * - offset: The offset into the original specified at which this section + * begins to apply, defined as an object with a "line" and "column" + * field. + * - map: A source map definition. This source map could also be indexed, + * but doesn't have to be. + * + * Instead of the "map" field, it's also possible to have a "url" field + * specifying a URL to retrieve a source map from, but that's currently + * unsupported. + * + * Here's an example source map, taken from the source map spec[0], but + * modified to omit a section which uses the "url" field. + * + * { + * version : 3, + * file: "app.js", + * sections: [{ + * offset: {line:100, column:10}, + * map: { + * version : 3, + * file: "section.js", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AAAA,E;;ABCDE;" + * } + * }], + * } + * + * The second parameter, if given, is a string whose value is the URL + * at which the source map was found. This URL is used to compute the + * sources array. + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt + */ +function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + var version = util.getArg(sourceMap, 'version'); + var sections = util.getArg(sourceMap, 'sections'); + + if (version != this._version) { + throw new Error('Unsupported version: ' + version); + } + + this._sources = new ArraySet(); + this._names = new ArraySet(); + + var lastOffset = { + line: -1, + column: 0 + }; + this._sections = sections.map(function (s) { + if (s.url) { + // The url field will require support for asynchronicity. + // See https://github.com/mozilla/source-map/issues/16 + throw new Error('Support for url field in sections not implemented.'); + } + var offset = util.getArg(s, 'offset'); + var offsetLine = util.getArg(offset, 'line'); + var offsetColumn = util.getArg(offset, 'column'); + + if (offsetLine < lastOffset.line || + (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { + throw new Error('Section offsets must be ordered and non-overlapping.'); + } + lastOffset = offset; + + return { + generatedOffset: { + // The offset fields are 0-based, but we use 1-based indices when + // encoding/decoding from VLQ. + generatedLine: offsetLine + 1, + generatedColumn: offsetColumn + 1 + }, + consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL) + } + }); +} + +IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); +IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; + +/** + * The version of the source mapping spec that we are consuming. + */ +IndexedSourceMapConsumer.prototype._version = 3; + +/** + * The list of original sources. + */ +Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { + get: function () { + var sources = []; + for (var i = 0; i < this._sections.length; i++) { + for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { + sources.push(this._sections[i].consumer.sources[j]); + } + } + return sources; + } +}); + +/** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. The line number + * is 1-based. + * - column: The column number in the generated source. The column + * number is 0-based. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. The + * line number is 1-based. + * - column: The column number in the original source, or null. The + * column number is 0-based. + * - name: The original identifier, or null. + */ +IndexedSourceMapConsumer.prototype.originalPositionFor = + function IndexedSourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, 'line'), + generatedColumn: util.getArg(aArgs, 'column') + }; + + // Find the section containing the generated position we're trying to map + // to an original position. + var sectionIndex = binarySearch.search(needle, this._sections, + function(needle, section) { + var cmp = needle.generatedLine - section.generatedOffset.generatedLine; + if (cmp) { + return cmp; + } + + return (needle.generatedColumn - + section.generatedOffset.generatedColumn); + }); + var section = this._sections[sectionIndex]; + + if (!section) { + return { + source: null, + line: null, + column: null, + name: null + }; + } + + return section.consumer.originalPositionFor({ + line: needle.generatedLine - + (section.generatedOffset.generatedLine - 1), + column: needle.generatedColumn - + (section.generatedOffset.generatedLine === needle.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + bias: aArgs.bias + }); + }; + +/** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ +IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = + function IndexedSourceMapConsumer_hasContentsOfAllSources() { + return this._sections.every(function (s) { + return s.consumer.hasContentsOfAllSources(); + }); + }; + +/** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ +IndexedSourceMapConsumer.prototype.sourceContentFor = + function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + + var content = section.consumer.sourceContentFor(aSource, true); + if (content || content === '') { + return content; + } + } + if (nullOnMissing) { + return null; + } + else { + throw new Error('"' + aSource + '" is not in the SourceMap.'); + } + }; + +/** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number + * is 1-based. + * - column: The column number in the original source. The column + * number is 0-based. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ +IndexedSourceMapConsumer.prototype.generatedPositionFor = + function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + + // Only consider this section if the requested source is in the list of + // sources of the consumer. + if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) { + continue; + } + var generatedPosition = section.consumer.generatedPositionFor(aArgs); + if (generatedPosition) { + var ret = { + line: generatedPosition.line + + (section.generatedOffset.generatedLine - 1), + column: generatedPosition.column + + (section.generatedOffset.generatedLine === generatedPosition.line + ? section.generatedOffset.generatedColumn - 1 + : 0) + }; + return ret; + } + } + + return { + line: null, + column: null + }; + }; + +/** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ +IndexedSourceMapConsumer.prototype._parseMappings = + function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { + this.__generatedMappings = []; + this.__originalMappings = []; + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + var sectionMappings = section.consumer._generatedMappings; + for (var j = 0; j < sectionMappings.length; j++) { + var mapping = sectionMappings[j]; + + var source = section.consumer._sources.at(mapping.source); + if(source !== null) { + source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL); + } + this._sources.add(source); + source = this._sources.indexOf(source); + + var name = null; + if (mapping.name) { + name = section.consumer._names.at(mapping.name); + this._names.add(name); + name = this._names.indexOf(name); + } + + // The mappings coming from the consumer for the section have + // generated positions relative to the start of the section, so we + // need to offset them to be relative to the start of the concatenated + // generated file. + var adjustedMapping = { + source: source, + generatedLine: mapping.generatedLine + + (section.generatedOffset.generatedLine - 1), + generatedColumn: mapping.generatedColumn + + (section.generatedOffset.generatedLine === mapping.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: name + }; + + this.__generatedMappings.push(adjustedMapping); + if (typeof adjustedMapping.originalLine === 'number') { + this.__originalMappings.push(adjustedMapping); + } + } + } + + quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); + quickSort(this.__originalMappings, util.compareByOriginalPositions); + }; + +exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; diff --git a/node_modules/source-map-js/lib/source-map-generator.d.ts b/node_modules/source-map-js/lib/source-map-generator.d.ts new file mode 100644 index 00000000..f59d70aa --- /dev/null +++ b/node_modules/source-map-js/lib/source-map-generator.d.ts @@ -0,0 +1 @@ +export { SourceMapGenerator } from '..'; diff --git a/node_modules/source-map-js/lib/source-map-generator.js b/node_modules/source-map-js/lib/source-map-generator.js new file mode 100644 index 00000000..bab04ff8 --- /dev/null +++ b/node_modules/source-map-js/lib/source-map-generator.js @@ -0,0 +1,444 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var base64VLQ = require('./base64-vlq'); +var util = require('./util'); +var ArraySet = require('./array-set').ArraySet; +var MappingList = require('./mapping-list').MappingList; + +/** + * An instance of the SourceMapGenerator represents a source map which is + * being built incrementally. You may pass an object with the following + * properties: + * + * - file: The filename of the generated source. + * - sourceRoot: A root for all relative URLs in this source map. + */ +function SourceMapGenerator(aArgs) { + if (!aArgs) { + aArgs = {}; + } + this._file = util.getArg(aArgs, 'file', null); + this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); + this._skipValidation = util.getArg(aArgs, 'skipValidation', false); + this._ignoreInvalidMapping = util.getArg(aArgs, 'ignoreInvalidMapping', false); + this._sources = new ArraySet(); + this._names = new ArraySet(); + this._mappings = new MappingList(); + this._sourcesContents = null; +} + +SourceMapGenerator.prototype._version = 3; + +/** + * Creates a new SourceMapGenerator based on a SourceMapConsumer + * + * @param aSourceMapConsumer The SourceMap. + */ +SourceMapGenerator.fromSourceMap = + function SourceMapGenerator_fromSourceMap(aSourceMapConsumer, generatorOps) { + var sourceRoot = aSourceMapConsumer.sourceRoot; + var generator = new SourceMapGenerator(Object.assign(generatorOps || {}, { + file: aSourceMapConsumer.file, + sourceRoot: sourceRoot + })); + aSourceMapConsumer.eachMapping(function (mapping) { + var newMapping = { + generated: { + line: mapping.generatedLine, + column: mapping.generatedColumn + } + }; + + if (mapping.source != null) { + newMapping.source = mapping.source; + if (sourceRoot != null) { + newMapping.source = util.relative(sourceRoot, newMapping.source); + } + + newMapping.original = { + line: mapping.originalLine, + column: mapping.originalColumn + }; + + if (mapping.name != null) { + newMapping.name = mapping.name; + } + } + + generator.addMapping(newMapping); + }); + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var sourceRelative = sourceFile; + if (sourceRoot !== null) { + sourceRelative = util.relative(sourceRoot, sourceFile); + } + + if (!generator._sources.has(sourceRelative)) { + generator._sources.add(sourceRelative); + } + + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + generator.setSourceContent(sourceFile, content); + } + }); + return generator; + }; + +/** + * Add a single mapping from original source line and column to the generated + * source's line and column for this source map being created. The mapping + * object should have the following properties: + * + * - generated: An object with the generated line and column positions. + * - original: An object with the original line and column positions. + * - source: The original source file (relative to the sourceRoot). + * - name: An optional original token name for this mapping. + */ +SourceMapGenerator.prototype.addMapping = + function SourceMapGenerator_addMapping(aArgs) { + var generated = util.getArg(aArgs, 'generated'); + var original = util.getArg(aArgs, 'original', null); + var source = util.getArg(aArgs, 'source', null); + var name = util.getArg(aArgs, 'name', null); + + if (!this._skipValidation) { + if (this._validateMapping(generated, original, source, name) === false) { + return; + } + } + + if (source != null) { + source = String(source); + if (!this._sources.has(source)) { + this._sources.add(source); + } + } + + if (name != null) { + name = String(name); + if (!this._names.has(name)) { + this._names.add(name); + } + } + + this._mappings.add({ + generatedLine: generated.line, + generatedColumn: generated.column, + originalLine: original != null && original.line, + originalColumn: original != null && original.column, + source: source, + name: name + }); + }; + +/** + * Set the source content for a source file. + */ +SourceMapGenerator.prototype.setSourceContent = + function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { + var source = aSourceFile; + if (this._sourceRoot != null) { + source = util.relative(this._sourceRoot, source); + } + + if (aSourceContent != null) { + // Add the source content to the _sourcesContents map. + // Create a new _sourcesContents map if the property is null. + if (!this._sourcesContents) { + this._sourcesContents = Object.create(null); + } + this._sourcesContents[util.toSetString(source)] = aSourceContent; + } else if (this._sourcesContents) { + // Remove the source file from the _sourcesContents map. + // If the _sourcesContents map is empty, set the property to null. + delete this._sourcesContents[util.toSetString(source)]; + if (Object.keys(this._sourcesContents).length === 0) { + this._sourcesContents = null; + } + } + }; + +/** + * Applies the mappings of a sub-source-map for a specific source file to the + * source map being generated. Each mapping to the supplied source file is + * rewritten using the supplied source map. Note: The resolution for the + * resulting mappings is the minimium of this map and the supplied map. + * + * @param aSourceMapConsumer The source map to be applied. + * @param aSourceFile Optional. The filename of the source file. + * If omitted, SourceMapConsumer's file property will be used. + * @param aSourceMapPath Optional. The dirname of the path to the source map + * to be applied. If relative, it is relative to the SourceMapConsumer. + * This parameter is needed when the two source maps aren't in the same + * directory, and the source map to be applied contains relative source + * paths. If so, those relative source paths need to be rewritten + * relative to the SourceMapGenerator. + */ +SourceMapGenerator.prototype.applySourceMap = + function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { + var sourceFile = aSourceFile; + // If aSourceFile is omitted, we will use the file property of the SourceMap + if (aSourceFile == null) { + if (aSourceMapConsumer.file == null) { + throw new Error( + 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + + 'or the source map\'s "file" property. Both were omitted.' + ); + } + sourceFile = aSourceMapConsumer.file; + } + var sourceRoot = this._sourceRoot; + // Make "sourceFile" relative if an absolute Url is passed. + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + // Applying the SourceMap can add and remove items from the sources and + // the names array. + var newSources = new ArraySet(); + var newNames = new ArraySet(); + + // Find mappings for the "sourceFile" + this._mappings.unsortedForEach(function (mapping) { + if (mapping.source === sourceFile && mapping.originalLine != null) { + // Check if it can be mapped by the source map, then update the mapping. + var original = aSourceMapConsumer.originalPositionFor({ + line: mapping.originalLine, + column: mapping.originalColumn + }); + if (original.source != null) { + // Copy mapping + mapping.source = original.source; + if (aSourceMapPath != null) { + mapping.source = util.join(aSourceMapPath, mapping.source) + } + if (sourceRoot != null) { + mapping.source = util.relative(sourceRoot, mapping.source); + } + mapping.originalLine = original.line; + mapping.originalColumn = original.column; + if (original.name != null) { + mapping.name = original.name; + } + } + } + + var source = mapping.source; + if (source != null && !newSources.has(source)) { + newSources.add(source); + } + + var name = mapping.name; + if (name != null && !newNames.has(name)) { + newNames.add(name); + } + + }, this); + this._sources = newSources; + this._names = newNames; + + // Copy sourcesContents of applied map. + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aSourceMapPath != null) { + sourceFile = util.join(aSourceMapPath, sourceFile); + } + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + this.setSourceContent(sourceFile, content); + } + }, this); + }; + +/** + * A mapping can have one of the three levels of data: + * + * 1. Just the generated position. + * 2. The Generated position, original position, and original source. + * 3. Generated and original position, original source, as well as a name + * token. + * + * To maintain consistency, we validate that any new mapping being added falls + * in to one of these categories. + */ +SourceMapGenerator.prototype._validateMapping = + function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, + aName) { + // When aOriginal is truthy but has empty values for .line and .column, + // it is most likely a programmer error. In this case we throw a very + // specific error message to try to guide them the right way. + // For example: https://github.com/Polymer/polymer-bundler/pull/519 + if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') { + var message = 'original.line and original.column are not numbers -- you probably meant to omit ' + + 'the original mapping entirely and only map the generated position. If so, pass ' + + 'null for the original mapping instead of an object with empty or null values.' + + if (this._ignoreInvalidMapping) { + if (typeof console !== 'undefined' && console.warn) { + console.warn(message); + } + return false; + } else { + throw new Error(message); + } + } + + if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aGenerated.line > 0 && aGenerated.column >= 0 + && !aOriginal && !aSource && !aName) { + // Case 1. + return; + } + else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aOriginal && 'line' in aOriginal && 'column' in aOriginal + && aGenerated.line > 0 && aGenerated.column >= 0 + && aOriginal.line > 0 && aOriginal.column >= 0 + && aSource) { + // Cases 2 and 3. + return; + } + else { + var message = 'Invalid mapping: ' + JSON.stringify({ + generated: aGenerated, + source: aSource, + original: aOriginal, + name: aName + }); + + if (this._ignoreInvalidMapping) { + if (typeof console !== 'undefined' && console.warn) { + console.warn(message); + } + return false; + } else { + throw new Error(message) + } + } + }; + +/** + * Serialize the accumulated mappings in to the stream of base 64 VLQs + * specified by the source map format. + */ +SourceMapGenerator.prototype._serializeMappings = + function SourceMapGenerator_serializeMappings() { + var previousGeneratedColumn = 0; + var previousGeneratedLine = 1; + var previousOriginalColumn = 0; + var previousOriginalLine = 0; + var previousName = 0; + var previousSource = 0; + var result = ''; + var next; + var mapping; + var nameIdx; + var sourceIdx; + + var mappings = this._mappings.toArray(); + for (var i = 0, len = mappings.length; i < len; i++) { + mapping = mappings[i]; + next = '' + + if (mapping.generatedLine !== previousGeneratedLine) { + previousGeneratedColumn = 0; + while (mapping.generatedLine !== previousGeneratedLine) { + next += ';'; + previousGeneratedLine++; + } + } + else { + if (i > 0) { + if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { + continue; + } + next += ','; + } + } + + next += base64VLQ.encode(mapping.generatedColumn + - previousGeneratedColumn); + previousGeneratedColumn = mapping.generatedColumn; + + if (mapping.source != null) { + sourceIdx = this._sources.indexOf(mapping.source); + next += base64VLQ.encode(sourceIdx - previousSource); + previousSource = sourceIdx; + + // lines are stored 0-based in SourceMap spec version 3 + next += base64VLQ.encode(mapping.originalLine - 1 + - previousOriginalLine); + previousOriginalLine = mapping.originalLine - 1; + + next += base64VLQ.encode(mapping.originalColumn + - previousOriginalColumn); + previousOriginalColumn = mapping.originalColumn; + + if (mapping.name != null) { + nameIdx = this._names.indexOf(mapping.name); + next += base64VLQ.encode(nameIdx - previousName); + previousName = nameIdx; + } + } + + result += next; + } + + return result; + }; + +SourceMapGenerator.prototype._generateSourcesContent = + function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { + return aSources.map(function (source) { + if (!this._sourcesContents) { + return null; + } + if (aSourceRoot != null) { + source = util.relative(aSourceRoot, source); + } + var key = util.toSetString(source); + return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) + ? this._sourcesContents[key] + : null; + }, this); + }; + +/** + * Externalize the source map. + */ +SourceMapGenerator.prototype.toJSON = + function SourceMapGenerator_toJSON() { + var map = { + version: this._version, + sources: this._sources.toArray(), + names: this._names.toArray(), + mappings: this._serializeMappings() + }; + if (this._file != null) { + map.file = this._file; + } + if (this._sourceRoot != null) { + map.sourceRoot = this._sourceRoot; + } + if (this._sourcesContents) { + map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); + } + + return map; + }; + +/** + * Render the source map being generated to a string. + */ +SourceMapGenerator.prototype.toString = + function SourceMapGenerator_toString() { + return JSON.stringify(this.toJSON()); + }; + +exports.SourceMapGenerator = SourceMapGenerator; diff --git a/node_modules/source-map-js/lib/source-node.d.ts b/node_modules/source-map-js/lib/source-node.d.ts new file mode 100644 index 00000000..4df6a1ac --- /dev/null +++ b/node_modules/source-map-js/lib/source-node.d.ts @@ -0,0 +1 @@ +export { SourceNode } from '..'; diff --git a/node_modules/source-map-js/lib/source-node.js b/node_modules/source-map-js/lib/source-node.js new file mode 100644 index 00000000..8bcdbe38 --- /dev/null +++ b/node_modules/source-map-js/lib/source-node.js @@ -0,0 +1,413 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var SourceMapGenerator = require('./source-map-generator').SourceMapGenerator; +var util = require('./util'); + +// Matches a Windows-style `\r\n` newline or a `\n` newline used by all other +// operating systems these days (capturing the result). +var REGEX_NEWLINE = /(\r?\n)/; + +// Newline character code for charCodeAt() comparisons +var NEWLINE_CODE = 10; + +// Private symbol for identifying `SourceNode`s when multiple versions of +// the source-map library are loaded. This MUST NOT CHANGE across +// versions! +var isSourceNode = "$$$isSourceNode$$$"; + +/** + * SourceNodes provide a way to abstract over interpolating/concatenating + * snippets of generated JavaScript source code while maintaining the line and + * column information associated with the original source code. + * + * @param aLine The original line number. + * @param aColumn The original column number. + * @param aSource The original source's filename. + * @param aChunks Optional. An array of strings which are snippets of + * generated JS, or other SourceNodes. + * @param aName The original identifier. + */ +function SourceNode(aLine, aColumn, aSource, aChunks, aName) { + this.children = []; + this.sourceContents = {}; + this.line = aLine == null ? null : aLine; + this.column = aColumn == null ? null : aColumn; + this.source = aSource == null ? null : aSource; + this.name = aName == null ? null : aName; + this[isSourceNode] = true; + if (aChunks != null) this.add(aChunks); +} + +/** + * Creates a SourceNode from generated code and a SourceMapConsumer. + * + * @param aGeneratedCode The generated code + * @param aSourceMapConsumer The SourceMap for the generated code + * @param aRelativePath Optional. The path that relative sources in the + * SourceMapConsumer should be relative to. + */ +SourceNode.fromStringWithSourceMap = + function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { + // The SourceNode we want to fill with the generated code + // and the SourceMap + var node = new SourceNode(); + + // All even indices of this array are one line of the generated code, + // while all odd indices are the newlines between two adjacent lines + // (since `REGEX_NEWLINE` captures its match). + // Processed fragments are accessed by calling `shiftNextLine`. + var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); + var remainingLinesIndex = 0; + var shiftNextLine = function() { + var lineContents = getNextLine(); + // The last line of a file might not have a newline. + var newLine = getNextLine() || ""; + return lineContents + newLine; + + function getNextLine() { + return remainingLinesIndex < remainingLines.length ? + remainingLines[remainingLinesIndex++] : undefined; + } + }; + + // We need to remember the position of "remainingLines" + var lastGeneratedLine = 1, lastGeneratedColumn = 0; + + // The generate SourceNodes we need a code range. + // To extract it current and last mapping is used. + // Here we store the last mapping. + var lastMapping = null; + + aSourceMapConsumer.eachMapping(function (mapping) { + if (lastMapping !== null) { + // We add the code from "lastMapping" to "mapping": + // First check if there is a new line in between. + if (lastGeneratedLine < mapping.generatedLine) { + // Associate first line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + lastGeneratedLine++; + lastGeneratedColumn = 0; + // The remaining code is added without mapping + } else { + // There is no new line in between. + // Associate the code between "lastGeneratedColumn" and + // "mapping.generatedColumn" with "lastMapping" + var nextLine = remainingLines[remainingLinesIndex] || ''; + var code = nextLine.substr(0, mapping.generatedColumn - + lastGeneratedColumn); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - + lastGeneratedColumn); + lastGeneratedColumn = mapping.generatedColumn; + addMappingWithCode(lastMapping, code); + // No more remaining code, continue + lastMapping = mapping; + return; + } + } + // We add the generated code until the first mapping + // to the SourceNode without any mapping. + // Each line is added as separate string. + while (lastGeneratedLine < mapping.generatedLine) { + node.add(shiftNextLine()); + lastGeneratedLine++; + } + if (lastGeneratedColumn < mapping.generatedColumn) { + var nextLine = remainingLines[remainingLinesIndex] || ''; + node.add(nextLine.substr(0, mapping.generatedColumn)); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); + lastGeneratedColumn = mapping.generatedColumn; + } + lastMapping = mapping; + }, this); + // We have processed all mappings. + if (remainingLinesIndex < remainingLines.length) { + if (lastMapping) { + // Associate the remaining code in the current line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + } + // and add the remaining lines without any mapping + node.add(remainingLines.splice(remainingLinesIndex).join("")); + } + + // Copy sourcesContent into SourceNode + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aRelativePath != null) { + sourceFile = util.join(aRelativePath, sourceFile); + } + node.setSourceContent(sourceFile, content); + } + }); + + return node; + + function addMappingWithCode(mapping, code) { + if (mapping === null || mapping.source === undefined) { + node.add(code); + } else { + var source = aRelativePath + ? util.join(aRelativePath, mapping.source) + : mapping.source; + node.add(new SourceNode(mapping.originalLine, + mapping.originalColumn, + source, + code, + mapping.name)); + } + } + }; + +/** + * Add a chunk of generated JS to this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ +SourceNode.prototype.add = function SourceNode_add(aChunk) { + if (Array.isArray(aChunk)) { + aChunk.forEach(function (chunk) { + this.add(chunk); + }, this); + } + else if (aChunk[isSourceNode] || typeof aChunk === "string") { + if (aChunk) { + this.children.push(aChunk); + } + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; +}; + +/** + * Add a chunk of generated JS to the beginning of this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ +SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { + if (Array.isArray(aChunk)) { + for (var i = aChunk.length-1; i >= 0; i--) { + this.prepend(aChunk[i]); + } + } + else if (aChunk[isSourceNode] || typeof aChunk === "string") { + this.children.unshift(aChunk); + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; +}; + +/** + * Walk over the tree of JS snippets in this node and its children. The + * walking function is called once for each snippet of JS and is passed that + * snippet and the its original associated source's line/column location. + * + * @param aFn The traversal function. + */ +SourceNode.prototype.walk = function SourceNode_walk(aFn) { + var chunk; + for (var i = 0, len = this.children.length; i < len; i++) { + chunk = this.children[i]; + if (chunk[isSourceNode]) { + chunk.walk(aFn); + } + else { + if (chunk !== '') { + aFn(chunk, { source: this.source, + line: this.line, + column: this.column, + name: this.name }); + } + } + } +}; + +/** + * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between + * each of `this.children`. + * + * @param aSep The separator. + */ +SourceNode.prototype.join = function SourceNode_join(aSep) { + var newChildren; + var i; + var len = this.children.length; + if (len > 0) { + newChildren = []; + for (i = 0; i < len-1; i++) { + newChildren.push(this.children[i]); + newChildren.push(aSep); + } + newChildren.push(this.children[i]); + this.children = newChildren; + } + return this; +}; + +/** + * Call String.prototype.replace on the very right-most source snippet. Useful + * for trimming whitespace from the end of a source node, etc. + * + * @param aPattern The pattern to replace. + * @param aReplacement The thing to replace the pattern with. + */ +SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { + var lastChild = this.children[this.children.length - 1]; + if (lastChild[isSourceNode]) { + lastChild.replaceRight(aPattern, aReplacement); + } + else if (typeof lastChild === 'string') { + this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); + } + else { + this.children.push(''.replace(aPattern, aReplacement)); + } + return this; +}; + +/** + * Set the source content for a source file. This will be added to the SourceMapGenerator + * in the sourcesContent field. + * + * @param aSourceFile The filename of the source file + * @param aSourceContent The content of the source file + */ +SourceNode.prototype.setSourceContent = + function SourceNode_setSourceContent(aSourceFile, aSourceContent) { + this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; + }; + +/** + * Walk over the tree of SourceNodes. The walking function is called for each + * source file content and is passed the filename and source content. + * + * @param aFn The traversal function. + */ +SourceNode.prototype.walkSourceContents = + function SourceNode_walkSourceContents(aFn) { + for (var i = 0, len = this.children.length; i < len; i++) { + if (this.children[i][isSourceNode]) { + this.children[i].walkSourceContents(aFn); + } + } + + var sources = Object.keys(this.sourceContents); + for (var i = 0, len = sources.length; i < len; i++) { + aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); + } + }; + +/** + * Return the string representation of this source node. Walks over the tree + * and concatenates all the various snippets together to one string. + */ +SourceNode.prototype.toString = function SourceNode_toString() { + var str = ""; + this.walk(function (chunk) { + str += chunk; + }); + return str; +}; + +/** + * Returns the string representation of this source node along with a source + * map. + */ +SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { + var generated = { + code: "", + line: 1, + column: 0 + }; + var map = new SourceMapGenerator(aArgs); + var sourceMappingActive = false; + var lastOriginalSource = null; + var lastOriginalLine = null; + var lastOriginalColumn = null; + var lastOriginalName = null; + this.walk(function (chunk, original) { + generated.code += chunk; + if (original.source !== null + && original.line !== null + && original.column !== null) { + if(lastOriginalSource !== original.source + || lastOriginalLine !== original.line + || lastOriginalColumn !== original.column + || lastOriginalName !== original.name) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + lastOriginalSource = original.source; + lastOriginalLine = original.line; + lastOriginalColumn = original.column; + lastOriginalName = original.name; + sourceMappingActive = true; + } else if (sourceMappingActive) { + map.addMapping({ + generated: { + line: generated.line, + column: generated.column + } + }); + lastOriginalSource = null; + sourceMappingActive = false; + } + for (var idx = 0, length = chunk.length; idx < length; idx++) { + if (chunk.charCodeAt(idx) === NEWLINE_CODE) { + generated.line++; + generated.column = 0; + // Mappings end at eol + if (idx + 1 === length) { + lastOriginalSource = null; + sourceMappingActive = false; + } else if (sourceMappingActive) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + } else { + generated.column++; + } + } + }); + this.walkSourceContents(function (sourceFile, sourceContent) { + map.setSourceContent(sourceFile, sourceContent); + }); + + return { code: generated.code, map: map }; +}; + +exports.SourceNode = SourceNode; diff --git a/node_modules/source-map-js/lib/util.js b/node_modules/source-map-js/lib/util.js new file mode 100644 index 00000000..430e2d0f --- /dev/null +++ b/node_modules/source-map-js/lib/util.js @@ -0,0 +1,594 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +/** + * This is a helper function for getting values from parameter/options + * objects. + * + * @param args The object we are extracting values from + * @param name The name of the property we are getting. + * @param defaultValue An optional value to return if the property is missing + * from the object. If this is not specified and the property is missing, an + * error will be thrown. + */ +function getArg(aArgs, aName, aDefaultValue) { + if (aName in aArgs) { + return aArgs[aName]; + } else if (arguments.length === 3) { + return aDefaultValue; + } else { + throw new Error('"' + aName + '" is a required argument.'); + } +} +exports.getArg = getArg; + +var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/; +var dataUrlRegexp = /^data:.+\,.+$/; + +function urlParse(aUrl) { + var match = aUrl.match(urlRegexp); + if (!match) { + return null; + } + return { + scheme: match[1], + auth: match[2], + host: match[3], + port: match[4], + path: match[5] + }; +} +exports.urlParse = urlParse; + +function urlGenerate(aParsedUrl) { + var url = ''; + if (aParsedUrl.scheme) { + url += aParsedUrl.scheme + ':'; + } + url += '//'; + if (aParsedUrl.auth) { + url += aParsedUrl.auth + '@'; + } + if (aParsedUrl.host) { + url += aParsedUrl.host; + } + if (aParsedUrl.port) { + url += ":" + aParsedUrl.port + } + if (aParsedUrl.path) { + url += aParsedUrl.path; + } + return url; +} +exports.urlGenerate = urlGenerate; + +var MAX_CACHED_INPUTS = 32; + +/** + * Takes some function `f(input) -> result` and returns a memoized version of + * `f`. + * + * We keep at most `MAX_CACHED_INPUTS` memoized results of `f` alive. The + * memoization is a dumb-simple, linear least-recently-used cache. + */ +function lruMemoize(f) { + var cache = []; + + return function(input) { + for (var i = 0; i < cache.length; i++) { + if (cache[i].input === input) { + var temp = cache[0]; + cache[0] = cache[i]; + cache[i] = temp; + return cache[0].result; + } + } + + var result = f(input); + + cache.unshift({ + input, + result, + }); + + if (cache.length > MAX_CACHED_INPUTS) { + cache.pop(); + } + + return result; + }; +} + +/** + * Normalizes a path, or the path portion of a URL: + * + * - Replaces consecutive slashes with one slash. + * - Removes unnecessary '.' parts. + * - Removes unnecessary '/..' parts. + * + * Based on code in the Node.js 'path' core module. + * + * @param aPath The path or url to normalize. + */ +var normalize = lruMemoize(function normalize(aPath) { + var path = aPath; + var url = urlParse(aPath); + if (url) { + if (!url.path) { + return aPath; + } + path = url.path; + } + var isAbsolute = exports.isAbsolute(path); + // Split the path into parts between `/` characters. This is much faster than + // using `.split(/\/+/g)`. + var parts = []; + var start = 0; + var i = 0; + while (true) { + start = i; + i = path.indexOf("/", start); + if (i === -1) { + parts.push(path.slice(start)); + break; + } else { + parts.push(path.slice(start, i)); + while (i < path.length && path[i] === "/") { + i++; + } + } + } + + for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { + part = parts[i]; + if (part === '.') { + parts.splice(i, 1); + } else if (part === '..') { + up++; + } else if (up > 0) { + if (part === '') { + // The first part is blank if the path is absolute. Trying to go + // above the root is a no-op. Therefore we can remove all '..' parts + // directly after the root. + parts.splice(i + 1, up); + up = 0; + } else { + parts.splice(i, 2); + up--; + } + } + } + path = parts.join('/'); + + if (path === '') { + path = isAbsolute ? '/' : '.'; + } + + if (url) { + url.path = path; + return urlGenerate(url); + } + return path; +}); +exports.normalize = normalize; + +/** + * Joins two paths/URLs. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be joined with the root. + * + * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a + * scheme-relative URL: Then the scheme of aRoot, if any, is prepended + * first. + * - Otherwise aPath is a path. If aRoot is a URL, then its path portion + * is updated with the result and aRoot is returned. Otherwise the result + * is returned. + * - If aPath is absolute, the result is aPath. + * - Otherwise the two paths are joined with a slash. + * - Joining for example 'http://' and 'www.example.com' is also supported. + */ +function join(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + if (aPath === "") { + aPath = "."; + } + var aPathUrl = urlParse(aPath); + var aRootUrl = urlParse(aRoot); + if (aRootUrl) { + aRoot = aRootUrl.path || '/'; + } + + // `join(foo, '//www.example.org')` + if (aPathUrl && !aPathUrl.scheme) { + if (aRootUrl) { + aPathUrl.scheme = aRootUrl.scheme; + } + return urlGenerate(aPathUrl); + } + + if (aPathUrl || aPath.match(dataUrlRegexp)) { + return aPath; + } + + // `join('http://', 'www.example.com')` + if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { + aRootUrl.host = aPath; + return urlGenerate(aRootUrl); + } + + var joined = aPath.charAt(0) === '/' + ? aPath + : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); + + if (aRootUrl) { + aRootUrl.path = joined; + return urlGenerate(aRootUrl); + } + return joined; +} +exports.join = join; + +exports.isAbsolute = function (aPath) { + return aPath.charAt(0) === '/' || urlRegexp.test(aPath); +}; + +/** + * Make a path relative to a URL or another path. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be made relative to aRoot. + */ +function relative(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + + aRoot = aRoot.replace(/\/$/, ''); + + // It is possible for the path to be above the root. In this case, simply + // checking whether the root is a prefix of the path won't work. Instead, we + // need to remove components from the root one by one, until either we find + // a prefix that fits, or we run out of components to remove. + var level = 0; + while (aPath.indexOf(aRoot + '/') !== 0) { + var index = aRoot.lastIndexOf("/"); + if (index < 0) { + return aPath; + } + + // If the only part of the root that is left is the scheme (i.e. http://, + // file:///, etc.), one or more slashes (/), or simply nothing at all, we + // have exhausted all components, so the path is not relative to the root. + aRoot = aRoot.slice(0, index); + if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { + return aPath; + } + + ++level; + } + + // Make sure we add a "../" for each component we removed from the root. + return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); +} +exports.relative = relative; + +var supportsNullProto = (function () { + var obj = Object.create(null); + return !('__proto__' in obj); +}()); + +function identity (s) { + return s; +} + +/** + * Because behavior goes wacky when you set `__proto__` on objects, we + * have to prefix all the strings in our set with an arbitrary character. + * + * See https://github.com/mozilla/source-map/pull/31 and + * https://github.com/mozilla/source-map/issues/30 + * + * @param String aStr + */ +function toSetString(aStr) { + if (isProtoString(aStr)) { + return '$' + aStr; + } + + return aStr; +} +exports.toSetString = supportsNullProto ? identity : toSetString; + +function fromSetString(aStr) { + if (isProtoString(aStr)) { + return aStr.slice(1); + } + + return aStr; +} +exports.fromSetString = supportsNullProto ? identity : fromSetString; + +function isProtoString(s) { + if (!s) { + return false; + } + + var length = s.length; + + if (length < 9 /* "__proto__".length */) { + return false; + } + + if (s.charCodeAt(length - 1) !== 95 /* '_' */ || + s.charCodeAt(length - 2) !== 95 /* '_' */ || + s.charCodeAt(length - 3) !== 111 /* 'o' */ || + s.charCodeAt(length - 4) !== 116 /* 't' */ || + s.charCodeAt(length - 5) !== 111 /* 'o' */ || + s.charCodeAt(length - 6) !== 114 /* 'r' */ || + s.charCodeAt(length - 7) !== 112 /* 'p' */ || + s.charCodeAt(length - 8) !== 95 /* '_' */ || + s.charCodeAt(length - 9) !== 95 /* '_' */) { + return false; + } + + for (var i = length - 10; i >= 0; i--) { + if (s.charCodeAt(i) !== 36 /* '$' */) { + return false; + } + } + + return true; +} + +/** + * Comparator between two mappings where the original positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same original source/line/column, but different generated + * line and column the same. Useful when searching for a mapping with a + * stubbed out mapping. + */ +function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { + var cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0 || onlyCompareOriginal) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); +} +exports.compareByOriginalPositions = compareByOriginalPositions; + +function compareByOriginalPositionsNoSource(mappingA, mappingB, onlyCompareOriginal) { + var cmp + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0 || onlyCompareOriginal) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); +} +exports.compareByOriginalPositionsNoSource = compareByOriginalPositionsNoSource; + +/** + * Comparator between two mappings with deflated source and name indices where + * the generated positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same generated line and column, but different + * source/name/original line and column the same. Useful when searching for a + * mapping with a stubbed out mapping. + */ +function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0 || onlyCompareGenerated) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); +} +exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; + +function compareByGeneratedPositionsDeflatedNoLine(mappingA, mappingB, onlyCompareGenerated) { + var cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0 || onlyCompareGenerated) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); +} +exports.compareByGeneratedPositionsDeflatedNoLine = compareByGeneratedPositionsDeflatedNoLine; + +function strcmp(aStr1, aStr2) { + if (aStr1 === aStr2) { + return 0; + } + + if (aStr1 === null) { + return 1; // aStr2 !== null + } + + if (aStr2 === null) { + return -1; // aStr1 !== null + } + + if (aStr1 > aStr2) { + return 1; + } + + return -1; +} + +/** + * Comparator between two mappings with inflated source and name strings where + * the generated positions are compared. + */ +function compareByGeneratedPositionsInflated(mappingA, mappingB) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); +} +exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; + +/** + * Strip any JSON XSSI avoidance prefix from the string (as documented + * in the source maps specification), and then parse the string as + * JSON. + */ +function parseSourceMapInput(str) { + return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, '')); +} +exports.parseSourceMapInput = parseSourceMapInput; + +/** + * Compute the URL of a source given the the source root, the source's + * URL, and the source map's URL. + */ +function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) { + sourceURL = sourceURL || ''; + + if (sourceRoot) { + // This follows what Chrome does. + if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') { + sourceRoot += '/'; + } + // The spec says: + // Line 4: An optional source root, useful for relocating source + // files on a server or removing repeated values in the + // “sources” entry. This value is prepended to the individual + // entries in the “source” field. + sourceURL = sourceRoot + sourceURL; + } + + // Historically, SourceMapConsumer did not take the sourceMapURL as + // a parameter. This mode is still somewhat supported, which is why + // this code block is conditional. However, it's preferable to pass + // the source map URL to SourceMapConsumer, so that this function + // can implement the source URL resolution algorithm as outlined in + // the spec. This block is basically the equivalent of: + // new URL(sourceURL, sourceMapURL).toString() + // ... except it avoids using URL, which wasn't available in the + // older releases of node still supported by this library. + // + // The spec says: + // If the sources are not absolute URLs after prepending of the + // “sourceRoot”, the sources are resolved relative to the + // SourceMap (like resolving script src in a html document). + if (sourceMapURL) { + var parsed = urlParse(sourceMapURL); + if (!parsed) { + throw new Error("sourceMapURL could not be parsed"); + } + if (parsed.path) { + // Strip the last path component, but keep the "/". + var index = parsed.path.lastIndexOf('/'); + if (index >= 0) { + parsed.path = parsed.path.substring(0, index + 1); + } + } + sourceURL = join(urlGenerate(parsed), sourceURL); + } + + return normalize(sourceURL); +} +exports.computeSourceURL = computeSourceURL; diff --git a/node_modules/source-map-js/package.json b/node_modules/source-map-js/package.json new file mode 100644 index 00000000..f58dbeb4 --- /dev/null +++ b/node_modules/source-map-js/package.json @@ -0,0 +1,71 @@ +{ + "name": "source-map-js", + "description": "Generates and consumes source maps", + "version": "1.2.1", + "homepage": "https://github.com/7rulnik/source-map-js", + "author": "Valentin 7rulnik Semirulnik ", + "contributors": [ + "Nick Fitzgerald ", + "Tobias Koppers ", + "Duncan Beevers ", + "Stephen Crane ", + "Ryan Seddon ", + "Miles Elam ", + "Mihai Bazon ", + "Michael Ficarra ", + "Todd Wolfson ", + "Alexander Solovyov ", + "Felix Gnass ", + "Conrad Irwin ", + "usrbincc ", + "David Glasser ", + "Chase Douglas ", + "Evan Wallace ", + "Heather Arthur ", + "Hugh Kennedy ", + "David Glasser ", + "Simon Lydell ", + "Jmeas Smith ", + "Michael Z Goddard ", + "azu ", + "John Gozde ", + "Adam Kirkton ", + "Chris Montgomery ", + "J. Ryan Stinnett ", + "Jack Herrington ", + "Chris Truter ", + "Daniel Espeset ", + "Jamie Wong ", + "Eddy Bruël ", + "Hawken Rives ", + "Gilad Peleg ", + "djchie ", + "Gary Ye ", + "Nicolas Lalevée " + ], + "repository": "7rulnik/source-map-js", + "main": "./source-map.js", + "files": [ + "source-map.js", + "source-map.d.ts", + "lib/" + ], + "engines": { + "node": ">=0.10.0" + }, + "license": "BSD-3-Clause", + "scripts": { + "test": "npm run build && node test/run-tests.js", + "build": "webpack --color", + "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md" + }, + "devDependencies": { + "clean-publish": "^3.1.0", + "doctoc": "^0.15.0", + "webpack": "^1.12.0" + }, + "clean-publish": { + "cleanDocs": true + }, + "typings": "source-map.d.ts" +} diff --git a/node_modules/source-map-js/source-map.d.ts b/node_modules/source-map-js/source-map.d.ts new file mode 100644 index 00000000..ec8892fa --- /dev/null +++ b/node_modules/source-map-js/source-map.d.ts @@ -0,0 +1,104 @@ +export interface StartOfSourceMap { + file?: string; + sourceRoot?: string; +} + +export interface RawSourceMap extends StartOfSourceMap { + version: string; + sources: string[]; + names: string[]; + sourcesContent?: string[]; + mappings: string; +} + +export interface Position { + line: number; + column: number; +} + +export interface LineRange extends Position { + lastColumn: number; +} + +export interface FindPosition extends Position { + // SourceMapConsumer.GREATEST_LOWER_BOUND or SourceMapConsumer.LEAST_UPPER_BOUND + bias?: number; +} + +export interface SourceFindPosition extends FindPosition { + source: string; +} + +export interface MappedPosition extends Position { + source: string; + name?: string; +} + +export interface MappingItem { + source: string | null; + generatedLine: number; + generatedColumn: number; + originalLine: number | null; + originalColumn: number | null; + name: string | null; +} + +export class SourceMapConsumer { + static GENERATED_ORDER: number; + static ORIGINAL_ORDER: number; + + static GREATEST_LOWER_BOUND: number; + static LEAST_UPPER_BOUND: number; + + constructor(rawSourceMap: RawSourceMap); + readonly file: string | undefined | null; + readonly sourceRoot: string | undefined | null; + readonly sourcesContent: readonly string[] | null | undefined; + readonly sources: readonly string[] + + computeColumnSpans(): void; + originalPositionFor(generatedPosition: FindPosition): MappedPosition; + generatedPositionFor(originalPosition: SourceFindPosition): LineRange; + allGeneratedPositionsFor(originalPosition: MappedPosition): Position[]; + hasContentsOfAllSources(): boolean; + sourceContentFor(source: string, returnNullOnMissing?: boolean): string | null; + eachMapping(callback: (mapping: MappingItem) => void, context?: any, order?: number): void; +} + +export interface Mapping { + generated: Position; + original?: Position | null; + source?: string | null; + name?: string | null; +} + +export class SourceMapGenerator { + constructor(startOfSourceMap?: StartOfSourceMap); + static fromSourceMap(sourceMapConsumer: SourceMapConsumer, startOfSourceMap?: StartOfSourceMap): SourceMapGenerator; + addMapping(mapping: Mapping): void; + setSourceContent(sourceFile: string, sourceContent: string | null | undefined): void; + applySourceMap(sourceMapConsumer: SourceMapConsumer, sourceFile?: string, sourceMapPath?: string): void; + toString(): string; + toJSON(): RawSourceMap; +} + +export interface CodeWithSourceMap { + code: string; + map: SourceMapGenerator; +} + +export class SourceNode { + constructor(); + constructor(line: number, column: number, source: string); + constructor(line: number, column: number, source: string, chunk?: string, name?: string); + static fromStringWithSourceMap(code: string, sourceMapConsumer: SourceMapConsumer, relativePath?: string): SourceNode; + add(chunk: string): void; + prepend(chunk: string): void; + setSourceContent(sourceFile: string, sourceContent: string): void; + walk(fn: (chunk: string, mapping: MappedPosition) => void): void; + walkSourceContents(fn: (file: string, content: string) => void): void; + join(sep: string): SourceNode; + replaceRight(pattern: string, replacement: string): SourceNode; + toString(): string; + toStringWithSourceMap(startOfSourceMap?: StartOfSourceMap): CodeWithSourceMap; +} diff --git a/node_modules/source-map-js/source-map.js b/node_modules/source-map-js/source-map.js new file mode 100644 index 00000000..bc88fe82 --- /dev/null +++ b/node_modules/source-map-js/source-map.js @@ -0,0 +1,8 @@ +/* + * Copyright 2009-2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE.txt or: + * http://opensource.org/licenses/BSD-3-Clause + */ +exports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator; +exports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer; +exports.SourceNode = require('./lib/source-node').SourceNode; diff --git a/node_modules/tailwindcss/LICENSE b/node_modules/tailwindcss/LICENSE new file mode 100644 index 00000000..d6a82290 --- /dev/null +++ b/node_modules/tailwindcss/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Tailwind Labs, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/tailwindcss/README.md b/node_modules/tailwindcss/README.md new file mode 100644 index 00000000..5f532607 --- /dev/null +++ b/node_modules/tailwindcss/README.md @@ -0,0 +1,36 @@ +

+ + + + + Tailwind CSS + + +

+ +

+ A utility-first CSS framework for rapidly building custom user interfaces. +

+ +

+ Build Status + Total Downloads + Latest Release + License +

+ +--- + +## Documentation + +For full documentation, visit [tailwindcss.com](https://tailwindcss.com). + +## Community + +For help, discussion about best practices, or feature ideas: + +[Discuss Tailwind CSS on GitHub](https://github.com/tailwindlabs/tailwindcss/discussions) + +## Contributing + +If you're interested in contributing to Tailwind CSS, please read our [contributing docs](https://github.com/tailwindlabs/tailwindcss/blob/main/.github/CONTRIBUTING.md) **before submitting a pull request**. diff --git a/node_modules/tailwindcss/dist/chunk-3IR7ZFJX.mjs b/node_modules/tailwindcss/dist/chunk-3IR7ZFJX.mjs new file mode 100644 index 00000000..4b394ba1 --- /dev/null +++ b/node_modules/tailwindcss/dist/chunk-3IR7ZFJX.mjs @@ -0,0 +1,38 @@ +import{a as lr,b as L,c as H,d as ar,e as I,f as Nt,g as ee,h as nt,i as sr}from"./chunk-TDNFF6A4.mjs";import{a as or}from"./chunk-X4GG3EDV.mjs";var ur="4.2.4";function lt(t){let r=[0];for(let n=0;n0;){let u=(l|0)>>1,f=o+u;r[f]<=n?(o=f+1,l=l-u-1):l=u}o-=1;let c=n-r[o];return{line:o+1,column:c}}function e({line:n,column:o}){n-=1,n=Math.min(Math.max(n,0),r.length-1);let l=r[n],c=r[n+1]??l;return Math.min(Math.max(l+o,0),c)}return{find:i,findOffset:e}}var Be=92,at=47,ot=42,fr=34,cr=39,en=58,st=59,fe=10,ut=13,Ye=32,Ge=9,pr=123,Et=125,Pt=40,dr=41,tn=91,rn=93,mr=45,Rt=64,nn=33,ce=class t extends Error{loc;constructor(r,i){if(i){let e=i[0],n=lt(e.code).find(i[1]);r=`${e.file}:${n.line}:${n.column+1}: ${r}`}super(r),this.name="CssSyntaxError",this.loc=i,Error.captureStackTrace&&Error.captureStackTrace(this,t)}};function Te(t,r){let i=r?.from?{file:r.from,code:t}:null;t[0]==="\uFEFF"&&(t=" "+t.slice(1));let e=[],n=[],o=[],l=null,c=null,u="",f="",m=0,d;for(let p=0;p0&&t[A]===h[h.length-1]&&(h=h.slice(0,-1));let T=Ot(u,b);if(!T)throw new ce("Invalid custom property, expected a value",i?[i,y,p]:null);i&&(T.src=[i,y,p],T.dst=[i,y,p]),l?l.nodes.push(T):e.push(T),u=""}else if(v===st&&u.charCodeAt(0)===Rt)c=qe(u),i&&(c.src=[i,m,p],c.dst=[i,m,p]),l?l.nodes.push(c):e.push(c),u="",c=null;else if(v===st&&f[f.length-1]!==")"){let h=Ot(u);if(!h){if(u.length===0)continue;throw new ce(`Invalid declaration: \`${u.trim()}\``,i?[i,m,p]:null)}i&&(h.src=[i,m,p],h.dst=[i,m,p]),l?l.nodes.push(h):e.push(h),u=""}else if(v===pr&&f[f.length-1]!==")")f+="}",c=J(u.trim()),i&&(c.src=[i,m,p],c.dst=[i,m,p]),l&&l.nodes.push(c),o.push(l),l=c,u="",c=null;else if(v===Et&&f[f.length-1]!==")"){if(f==="")throw new ce("Missing opening {",i?[i,p,p]:null);if(f=f.slice(0,-1),u.length>0)if(u.charCodeAt(0)===Rt)c=qe(u),i&&(c.src=[i,m,p],c.dst=[i,m,p]),l?l.nodes.push(c):e.push(c),u="",c=null;else{let y=u.indexOf(":");if(l){let b=Ot(u,y);if(!b)throw new ce(`Invalid declaration: \`${u.trim()}\``,i?[i,m,p]:null);i&&(b.src=[i,m,p],b.dst=[i,m,p]),l.nodes.push(b)}}let h=o.pop()??null;h===null&&l&&e.push(l),l=h,u="",c=null}else if(v===Pt)f+=")",u+="(";else if(v===dr){if(f[f.length-1]!==")")throw new ce("Missing opening (",i?[i,p,p]:null);f=f.slice(0,-1),u+=")"}else{if(u.length===0&&(v===Ye||v===fe||v===Ge))continue;u===""&&(m=p),u+=String.fromCharCode(v)}}}if(u.charCodeAt(0)===Rt){let p=qe(u);i&&(p.src=[i,m,t.length],p.dst=[i,m,t.length]),e.push(p)}if(f.length>0&&l){if(l.kind==="rule")throw new ce(`Missing closing } at ${l.selector}`,l.src?[l.src[0],l.src[1],l.src[1]]:null);if(l.kind==="at-rule")throw new ce(`Missing closing } at ${l.name} ${l.params}`,l.src?[l.src[0],l.src[1],l.src[1]]:null)}return n.length>0?n.concat(e):e}function qe(t,r=[]){let i=t,e="";for(let n=5;n=1&&n<=31||n===127||e===0&&n>=48&&n<=57||e===1&&n>=48&&n<=57&&l===45){o+="\\"+n.toString(16)+" ";continue}if(n>=128||n===45||n===95||n>=48&&n<=57||n>=65&&n<=90||n>=97&&n<=122){o+=r.charAt(e);continue}o+="\\"+r.charAt(e)}return o}function ye(t){return t.replace(/\\([\dA-Fa-f]{1,6}[\t\n\f\r ]?|[\S\s])/g,r=>{if(r.length<=2)return r[1];let i=Number.parseInt(r.slice(1).trim(),16);return i===0||i>1114111||i>=55296&&i<=57343?"\uFFFD":String.fromCodePoint(i)})}var vr=new Map([["--font",["--font-weight","--font-size"]],["--inset",["--inset-shadow","--inset-ring"]],["--text",["--text-color","--text-decoration-color","--text-decoration-thickness","--text-indent","--text-shadow","--text-underline-offset"]],["--grid-column",["--grid-column-start","--grid-column-end"]],["--grid-row",["--grid-row-start","--grid-row-end"]]]);function hr(t,r){return(vr.get(r)??[]).some(i=>t===i||t.startsWith(`${i}-`))}var ct=class{constructor(r=new Map,i=new Set([])){this.values=r;this.keyframes=i}prefix=null;get size(){return this.values.size}add(r,i,e=0,n){if(r.endsWith("-*")){if(i!=="initial")throw new Error(`Invalid theme value \`${i}\` for namespace \`${r}\``);r==="--*"?this.values.clear():this.clearNamespace(r.slice(0,-2),0)}if(e&4){let o=this.values.get(r);if(o&&!(o.options&4))return}i==="initial"?this.values.delete(r):this.values.set(r,{value:i,options:e,src:n})}keysInNamespaces(r){let i=[];for(let e of r){let n=`${e}-`;for(let o of this.values.keys())o.startsWith(n)&&o.indexOf("--",2)===-1&&(hr(o,e)||i.push(o.slice(n.length)))}return i}get(r){for(let i of r){let e=this.values.get(i);if(e)return e.value}return null}hasDefault(r){return(this.getOptions(r)&4)===4}getOptions(r){return r=ye(this.#r(r)),this.values.get(r)?.options??0}entries(){return this.prefix?Array.from(this.values,r=>(r[0]=this.prefixKey(r[0]),r)):this.values.entries()}prefixKey(r){return this.prefix?`--${this.prefix}-${r.slice(2)}`:r}#r(r){return this.prefix?`--${r.slice(3+this.prefix.length)}`:r}clearNamespace(r,i){let e=vr.get(r)??[];e:for(let n of this.values.keys())if(n.startsWith(r)){if(i!==0&&(this.getOptions(n)&i)!==i)continue;for(let o of e)if(n.startsWith(o))continue e;this.values.delete(n)}}#e(r,i){for(let e of i){let n=r!==null?`${e}-${r}`:e;if(!this.values.has(n))if(r!==null&&r.includes(".")){if(n=`${e}-${r.replaceAll(".","_")}`,!this.values.has(n))continue}else continue;if(!hr(n,e))return n}return null}#t(r){let i=this.values.get(r);if(!i)return null;let e=null;return i.options&2&&(e=i.value),`var(${xe(this.prefixKey(r))}${e?`, ${e}`:""})`}markUsedVariable(r){let i=ye(this.#r(r)),e=this.values.get(i);if(!e)return!1;let n=e.options&16;return e.options|=16,!n}resolve(r,i,e=0){let n=this.#e(r,i);if(!n)return null;let o=this.values.get(n);return(e|o.options)&1?o.value:this.#t(n)}resolveValue(r,i){let e=this.#e(r,i);return e?this.values.get(e).value:null}resolveWith(r,i,e=[]){let n=this.#e(r,i);if(!n)return null;let o={};for(let c of e){let u=`${n}${c}`,f=this.values.get(u);f&&(f.options&1?o[c]=f.value:o[c]=this.#t(u))}let l=this.values.get(n);return l.options&1?[l.value,o]:[this.#t(n),o]}namespace(r){let i=new Map,e=`${r}-`;for(let[n,o]of this.values)n===r?i.set(null,o.value):n.startsWith(`${e}-`)?i.set(n.slice(r.length),o.value):n.startsWith(e)&&i.set(n.slice(e.length),o.value);return i}addKeyframes(r){this.keyframes.add(r)}getKeyframes(){return Array.from(this.keyframes)}};var z=class extends Map{constructor(i){super();this.factory=i}get(i){let e=super.get(i);return e===void 0&&(e=this.factory(i,this),this.set(i,e)),e}};function ne(t){return{kind:"word",value:t}}function ln(t,r){return{kind:"function",value:t,nodes:r}}function an(t){return{kind:"separator",value:t}}function Y(t){let r="";for(let i of t)switch(i.kind){case"word":case"separator":{r+=i.value;break}case"function":r+=i.value+"("+Y(i.nodes)+")"}return r}var wr=92,on=41,yr=58,kr=44,sn=34,br=61,xr=62,Ar=60,Cr=10,un=40,fn=39,cn=47,$r=32,Sr=9;function F(t){t=t.replaceAll(`\r +`,` +`);let r=[],i=[],e=null,n="",o;for(let l=0;l0){let f=ne(n);e?e.nodes.push(f):r.push(f),n=""}let u=ne(t[l]);e?e.nodes.push(u):r.push(u);break}case yr:case kr:case br:case xr:case Ar:case Cr:case $r:case Sr:{if(n.length>0){let d=ne(n);e?e.nodes.push(d):r.push(d),n=""}let u=l,f=l+1;for(;f0){let f=ne(n);u?.nodes.push(f),n=""}i.length>0?e=i[i.length-1]:e=null;break}default:n+=String.fromCharCode(c)}}return n.length>0&&r.push(ne(n)),r}var _t=(l=>(l[l.Continue=0]="Continue",l[l.Skip=1]="Skip",l[l.Stop=2]="Stop",l[l.Replace=3]="Replace",l[l.ReplaceSkip=4]="ReplaceSkip",l[l.ReplaceStop=5]="ReplaceStop",l))(_t||{}),R={Continue:{kind:0},Skip:{kind:1},Stop:{kind:2},Replace:t=>({kind:3,nodes:Array.isArray(t)?t:[t]}),ReplaceSkip:t=>({kind:4,nodes:Array.isArray(t)?t:[t]}),ReplaceStop:t=>({kind:5,nodes:Array.isArray(t)?t:[t]})};function _(t,r){typeof r=="function"?Vr(t,r):Vr(t,r.enter,r.exit)}function Vr(t,r=()=>R.Continue,i=()=>R.Continue){let e={value:[t,0,null],prev:null},n={parent:null,depth:0,path(){let o=[],l=e;for(;l;){let c=l.value[2];c&&o.push(c),l=l.prev}return o.reverse(),o}};for(;e!==null;){let o=e.value,l=o[0],c=o[1],u=o[2];if(c>=l.length){e=e.prev,n.depth-=1;continue}if(n.parent=u,c>=0){let p=l[c],v=r(p,n)??R.Continue;switch(v.kind){case 0:{p.nodes&&p.nodes.length>0&&(n.depth+=1,e={value:[p.nodes,0,p],prev:e}),o[1]=~c;continue}case 2:return;case 1:{o[1]=~c;continue}case 3:{l.splice(c,1,...v.nodes);continue}case 5:{l.splice(c,1,...v.nodes);return}case 4:{l.splice(c,1,...v.nodes),o[1]+=v.nodes.length;continue}default:throw new Error(`Invalid \`WalkAction.${_t[v.kind]??`Unknown(${v.kind})`}\` in enter.`)}}let f=~c,m=l[f],d=i(m,n)??R.Continue;switch(d.kind){case 0:o[1]=f+1;continue;case 2:return;case 3:{l.splice(f,1,...d.nodes),o[1]=f+d.nodes.length;continue}case 5:{l.splice(f,1,...d.nodes);return}case 4:{l.splice(f,1,...d.nodes),o[1]=f+d.nodes.length;continue}default:throw new Error(`Invalid \`WalkAction.${_t[d.kind]??`Unknown(${d.kind})`}\` in exit.`)}}}function pt(t){let r=[];return _(F(t),i=>{if(!(i.kind!=="function"||i.value!=="var"))return _(i.nodes,e=>{e.kind!=="word"||e.value[0]!=="-"||e.value[1]!=="-"||r.push(e.value)}),R.Skip}),r}var pn=64;function q(t,r=[]){return{kind:"rule",selector:t,nodes:r}}function W(t,r="",i=[]){return{kind:"at-rule",name:t,params:r,nodes:i}}function J(t,r=[]){return t.charCodeAt(0)===pn?qe(t,r):q(t,r)}function a(t,r,i=!1){return{kind:"declaration",property:t,value:r,important:i}}function ft(t){return{kind:"comment",value:t}}function ge(t,r){return{kind:"context",context:t,nodes:r}}function B(t){return{kind:"at-root",nodes:t}}function te(t){switch(t.kind){case"rule":return{kind:t.kind,selector:t.selector,nodes:t.nodes.map(te),src:t.src,dst:t.dst};case"at-rule":return{kind:t.kind,name:t.name,params:t.params,nodes:t.nodes.map(te),src:t.src,dst:t.dst};case"at-root":return{kind:t.kind,nodes:t.nodes.map(te),src:t.src,dst:t.dst};case"context":return{kind:t.kind,context:{...t.context},nodes:t.nodes.map(te),src:t.src,dst:t.dst};case"declaration":return{kind:t.kind,property:t.property,value:t.value,important:t.important,src:t.src,dst:t.dst};case"comment":return{kind:t.kind,value:t.value,src:t.src,dst:t.dst};default:throw new Error(`Unknown node kind: ${t.kind}`)}}function He(t){return{depth:t.depth,get context(){let r={};for(let i of t.path())i.kind==="context"&&Object.assign(r,i.context);return Object.defineProperty(this,"context",{value:r}),r},get parent(){let r=this.path().pop()??null;return Object.defineProperty(this,"parent",{value:r}),r},path(){return t.path().filter(r=>r.kind!=="context")}}}function Ne(t,r,i=3){let e=[],n=new Set,o=new z(()=>new Set),l=new z(()=>new Set),c=new Set,u=new Set,f=[],m=[],d=new z(()=>new Set);function p(h,y,b={},T=0){if(h.kind==="declaration"){if(h.property==="--tw-sort"||h.value===void 0||h.value===null)return;if(b.theme&&h.property[0]==="-"&&h.property[1]==="-"){if(h.value==="initial"){h.value=void 0;return}b.keyframes||o.get(y).add(h)}if(h.value.includes("var("))if(b.theme&&h.property[0]==="-"&&h.property[1]==="-")for(let A of pt(h.value))d.get(A).add(h.property);else r.trackUsedVariables(h.value);if(h.property==="animation")for(let A of Tr(h.value))u.add(A);i&2&&h.value.includes("color-mix(")&&!b.supportsColorMix&&!b.keyframes&&l.get(y).add(h),y.push(h)}else if(h.kind==="rule"){let A=[];for(let N of h.nodes)p(N,A,b,T+1);let k={},D=new Set;for(let N of A){if(N.kind!=="declaration")continue;let E=`${N.property}:${N.value}:${N.important}`;k[E]??=[],k[E].push(N)}for(let N in k)for(let E=0;E0&&(A=A.filter(N=>!D.has(N))),A.length===0)return;h.selector==="&"?y.push(...A):y.push({...h,nodes:A})}else if(h.kind==="at-rule"&&h.name==="@property"&&T===0){if(n.has(h.params))return;if(i&1){let k=h.params,D=null,N=!1;for(let U of h.nodes)U.kind==="declaration"&&(U.property==="initial-value"?D=U.value:U.property==="inherits"&&(N=U.value==="true"));let E=a(k,D??"initial");E.src=h.src,N?f.push(E):m.push(E)}n.add(h.params);let A={...h,nodes:[]};for(let k of h.nodes)p(k,A.nodes,b,T+1);y.push(A)}else if(h.kind==="at-rule"){h.name==="@keyframes"?b={...b,keyframes:!0}:h.name==="@supports"&&h.params.includes("color-mix(")&&(b={...b,supportsColorMix:!0});let A={...h,nodes:[]};for(let k of h.nodes)p(k,A.nodes,b,T+1);h.name==="@keyframes"&&b.theme&&c.add(A),(A.nodes.length>0||A.name==="@layer"||A.name==="@charset"||A.name==="@custom-media"||A.name==="@namespace"||A.name==="@import")&&y.push(A)}else if(h.kind==="at-root")for(let A of h.nodes){let k=[];p(A,k,b,0);for(let D of k)e.push(D)}else if(h.kind==="context"){if(h.context.reference)return;for(let A of h.nodes)p(A,y,{...b,...h.context},T)}else h.kind==="comment"&&y.push(h)}let v=[];for(let h of t)p(h,v,{},0);e:for(let[h,y]of o)for(let b of y){if(Nr(b.property,r.theme,d)){if(b.property.startsWith(r.theme.prefixKey("--animate-")))for(let k of Tr(b.value))u.add(k);continue}let A=h.indexOf(b);if(h.splice(A,1),h.length===0){let k=dn(v,D=>D.kind==="rule"&&D.nodes===h);if(!k||k.length===0)continue e;k.unshift({kind:"at-root",nodes:v});do{let D=k.pop();if(!D)break;let N=k[k.length-1];if(!N||N.kind!=="at-root"&&N.kind!=="at-rule")break;let E=N.nodes.indexOf(D);if(E===-1)break;N.nodes.splice(E,1)}while(!0);continue e}}for(let h of c)if(!u.has(h.params)){let y=e.indexOf(h);e.splice(y,1)}if(v=v.concat(e),i&2)for(let[h,y]of l)for(let b of y){let T=h.indexOf(b);if(T===-1||b.value==null)continue;let A=F(b.value),k=!1;if(_(A,E=>{if(E.kind!=="function"||E.value!=="color-mix")return;let U=!1,P=!1;if(_(E.nodes,j=>{if(j.kind=="word"&&j.value.toLowerCase()==="currentcolor"){P=!0,k=!0;return}let G=j,Z=null,se=new Set;do{if(G.kind!=="function"||G.value!=="var")return;let ue=G.nodes[0];if(!ue||ue.kind!=="word")return;let s=ue.value;if(se.has(s)){U=!0;return}if(se.add(s),k=!0,Z=r.theme.resolveValue(null,[ue.value]),!Z){U=!0;return}if(Z.toLowerCase()==="currentcolor"){P=!0;return}Z.startsWith("var(")?G=F(Z)[0]:G=null}while(G);return R.Replace({kind:"word",value:Z})}),U||P){let j=E.nodes.findIndex(Z=>Z.kind==="separator"&&Z.value.trim().includes(","));if(j===-1)return;let G=E.nodes.length>j?E.nodes[j+1]:null;return G?R.Replace(G):void 0}else if(k){let j=E.nodes[2];j.kind==="word"&&(j.value==="oklab"||j.value==="oklch"||j.value==="lab"||j.value==="lch")&&(j.value="srgb")}}),!k)continue;let D={...b,value:Y(A)},N=J("@supports (color: color-mix(in lab, red, red))",[b]);N.src=b.src,h.splice(T,1,D,N)}if(i&1){let h=[];if(f.length>0){let y=J(":root, :host",f);y.src=f[0].src,h.push(y)}if(m.length>0){let y=J("*, ::before, ::after, ::backdrop",m);y.src=m[0].src,h.push(y)}if(h.length>0){let y=v.findIndex(A=>!(A.kind==="comment"||A.kind==="at-rule"&&(A.name==="@charset"||A.name==="@import"))),b=W("@layer","properties",[]);b.src=h[0].src,v.splice(y<0?v.length:y,0,b);let T=J("@layer properties",[W("@supports","((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b))))",h)]);T.src=h[0].src,T.nodes[0].src=h[0].src,v.push(T)}}return v}function ie(t,r){let i=0,e={file:null,code:""};function n(l,c=0){let u="",f=" ".repeat(c);if(l.kind==="declaration"){if(u+=`${f}${l.property}: ${l.value}${l.important?" !important":""}; +`,r){i+=f.length;let m=i;i+=l.property.length,i+=2,i+=l.value?.length??0,l.important&&(i+=11);let d=i;i+=2,l.dst=[e,m,d]}}else if(l.kind==="rule"){if(u+=`${f}${l.selector} { +`,r){i+=f.length;let m=i;i+=l.selector.length,i+=1;let d=i;l.dst=[e,m,d],i+=2}for(let m of l.nodes)u+=n(m,c+1);u+=`${f}} +`,r&&(i+=f.length,i+=2)}else if(l.kind==="at-rule"){if(l.nodes.length===0){let m=`${f}${l.name} ${l.params}; +`;if(r){i+=f.length;let d=i;i+=l.name.length,i+=1,i+=l.params.length;let p=i;i+=2,l.dst=[e,d,p]}return m}if(u+=`${f}${l.name}${l.params?` ${l.params} `:" "}{ +`,r){i+=f.length;let m=i;i+=l.name.length,l.params&&(i+=1,i+=l.params.length),i+=1;let d=i;l.dst=[e,m,d],i+=2}for(let m of l.nodes)u+=n(m,c+1);u+=`${f}} +`,r&&(i+=f.length,i+=2)}else if(l.kind==="comment"){if(u+=`${f}/*${l.value}*/ +`,r){i+=f.length;let m=i;i+=2+l.value.length+2;let d=i;l.dst=[e,m,d],i+=1}}else if(l.kind==="context"||l.kind==="at-root")return"";return u}let o="";for(let l of t)o+=n(l,0);return e.code=o,o}function dn(t,r){let i=[];return _(t,(e,n)=>{if(r(e))return i=n.path(),i.push(e),R.Stop}),i}function Nr(t,r,i,e=new Set){if(e.has(t)||(e.add(t),r.getOptions(t)&24))return!0;{let o=i.get(t)??[];for(let l of o)if(Nr(l,r,i,e))return!0}return!1}function Tr(t){return t.split(/[\s,]+/)}function Ae(t){if(t.indexOf("(")===-1)return _e(t);let r=F(t);return Kt(r),t=Y(r),t=lr(t),t}function _e(t,r=!1){let i="";for(let e=0;e0&&n===Ut[r-1]&&r--;break;case 59:if(r===0)return!1;break}}return!0}var gn=58,Er=45,Rr=97,Or=122,jt=/^[a-zA-Z0-9_.%-]+$/;function Ke(t){switch(t.kind){case"arbitrary":return{kind:t.kind,property:t.property,value:t.value,modifier:t.modifier?{kind:t.modifier.kind,value:t.modifier.value}:null,variants:t.variants.map(De),important:t.important,raw:t.raw};case"static":return{kind:t.kind,root:t.root,variants:t.variants.map(De),important:t.important,raw:t.raw};case"functional":return{kind:t.kind,root:t.root,value:t.value?t.value.kind==="arbitrary"?{kind:t.value.kind,dataType:t.value.dataType,value:t.value.value}:{kind:t.value.kind,value:t.value.value,fraction:t.value.fraction}:null,modifier:t.modifier?{kind:t.modifier.kind,value:t.modifier.value}:null,variants:t.variants.map(De),important:t.important,raw:t.raw};default:throw new Error("Unknown candidate kind")}}function De(t){switch(t.kind){case"arbitrary":return{kind:t.kind,selector:t.selector,relative:t.relative};case"static":return{kind:t.kind,root:t.root};case"functional":return{kind:t.kind,root:t.root,value:t.value?{kind:t.value.kind,value:t.value.value}:null,modifier:t.modifier?{kind:t.modifier.kind,value:t.modifier.value}:null};case"compound":return{kind:t.kind,root:t.root,variant:De(t.variant),modifier:t.modifier?{kind:t.modifier.kind,value:t.modifier.value}:null};default:throw new Error("Unknown variant kind")}}function*Pr(t,r){let i=L(t,":");if(r.theme.prefix){if(i.length===1||i[0]!==r.theme.prefix)return null;i.shift()}let e=i.pop(),n=[];for(let d=i.length-1;d>=0;--d){let p=r.parseVariant(i[d]);if(p===null)return;n.push(p)}let o=!1;e[e.length-1]==="!"?(o=!0,e=e.slice(0,-1)):e[0]==="!"&&(o=!0,e=e.slice(1)),r.utilities.has(e,"static")&&!e.includes("[")&&(yield{kind:"static",root:e,variants:n,important:o,raw:t});let[l,c=null,u]=L(e,"/");if(u)return;let f=c===null?null:zt(c);if(c!==null&&f===null)return;if(l[0]==="["){if(l[l.length-1]!=="]")return;let d=l.charCodeAt(1);if(d!==Er&&!(d>=Rr&&d<=Or))return;l=l.slice(1,-1);let p=l.indexOf(":");if(p===-1||p===0||p===l.length-1)return;let v=l.slice(0,p),h=Ae(l.slice(p+1));if(!ke(h))return;yield{kind:"arbitrary",property:v,value:h,modifier:f,variants:n,important:o,raw:t};return}let m;if(l[l.length-1]==="]"){let d=l.indexOf("-[");if(d===-1)return;let p=l.slice(0,d);if(!r.utilities.has(p,"functional"))return;let v=l.slice(d+1);m=[[p,v]]}else if(l[l.length-1]===")"){let d=l.indexOf("-(");if(d===-1)return;let p=l.slice(0,d);if(!r.utilities.has(p,"functional"))return;let v=l.slice(d+2,-1),h=L(v,":"),y=null;if(h.length===2&&(y=h[0],v=h[1]),v[0]!=="-"||v[1]!=="-"||!ke(v))return;m=[[p,y===null?`[var(${v})]`:`[${y}:var(${v})]`]]}else m=_r(l,d=>r.utilities.has(d,"functional"));for(let[d,p]of m){let v={kind:"functional",root:d,modifier:f,value:null,variants:n,important:o,raw:t};if(p===null){yield v;continue}{let h=p.indexOf("[");if(h!==-1){if(p[p.length-1]!=="]")return;let b=Ae(p.slice(h+1,-1));if(!ke(b))continue;let T=null;for(let A=0;A=Rr&&k<=Or))break}if(b.length===0||b.trim().length===0||T==="")continue;v.value={kind:"arbitrary",dataType:T||null,value:b}}else{let b=c===null||v.modifier?.kind==="arbitrary"?null:`${p}/${c}`;if(!jt.test(p))continue;v.value={kind:"named",value:p,fraction:b}}}yield v}}function zt(t){if(t[0]==="["&&t[t.length-1]==="]"){let r=Ae(t.slice(1,-1));return!ke(r)||r.length===0||r.trim().length===0?null:{kind:"arbitrary",value:r}}return t[0]==="("&&t[t.length-1]===")"?(t=t.slice(1,-1),t[0]!=="-"||t[1]!=="-"||!ke(t)?null:(t=`var(${t})`,{kind:"arbitrary",value:Ae(t)})):jt.test(t)?{kind:"named",value:t}:null}function Ir(t,r){if(t[0]==="["&&t[t.length-1]==="]"){if(t[1]==="@"&&t.includes("&"))return null;let i=Ae(t.slice(1,-1));if(!ke(i)||i.length===0||i.trim().length===0)return null;let e=i[0]===">"||i[0]==="+"||i[0]==="~";return!e&&i[0]!=="@"&&!i.includes("&")&&(i=`&:is(${i})`),{kind:"arbitrary",selector:i,relative:e}}{let[i,e=null,n]=L(t,"/");if(n)return null;let o=_r(i,l=>r.variants.has(l));for(let[l,c]of o)switch(r.variants.kind(l)){case"static":return c!==null||e!==null?null:{kind:"static",root:l};case"functional":{let u=e===null?null:zt(e);if(e!==null&&u===null)return null;if(c===null)return{kind:"functional",root:l,modifier:u,value:null};if(c[c.length-1]==="]"){if(c[0]!=="[")continue;let f=Ae(c.slice(1,-1));return!ke(f)||f.length===0||f.trim().length===0?null:{kind:"functional",root:l,modifier:u,value:{kind:"arbitrary",value:f}}}if(c[c.length-1]===")"){if(c[0]!=="(")continue;let f=Ae(c.slice(1,-1));return!ke(f)||f.length===0||f.trim().length===0||f[0]!=="-"||f[1]!=="-"?null:{kind:"functional",root:l,modifier:u,value:{kind:"arbitrary",value:`var(${f})`}}}if(!jt.test(c))continue;return{kind:"functional",root:l,modifier:u,value:{kind:"named",value:c}}}case"compound":{if(c===null)return null;e&&(l==="not"||l==="has"||l==="in")&&(c=`${c}/${e}`,e=null);let u=r.parseVariant(c);if(u===null||!r.variants.compoundsWith(l,u))return null;let f=e===null?null:zt(e);return e!==null&&f===null?null:{kind:"compound",root:l,modifier:f,variant:u}}}}return null}function*_r(t,r){r(t)&&(yield[t,null]);let i=t.lastIndexOf("-");for(;i>0;){let e=t.slice(0,i);if(r(e)){let n=[e,t.slice(i+1)];if(n[1]===""||n[0]==="@"&&r("@")&&t[i]==="-")break;yield n}i=t.lastIndexOf("-",i-1)}t[0]==="@"&&r("@")&&(yield["@",t.slice(1)])}function Dr(t,r){let i=[];for(let n of r.variants)i.unshift(dt(n));t.theme.prefix&&i.unshift(t.theme.prefix);let e="";if(r.kind==="static"&&(e+=r.root),r.kind==="functional"&&(e+=r.root,r.value))if(r.value.kind==="arbitrary"){if(r.value!==null){let n=Mt(r.value.value),o=n?r.value.value.slice(4,-1):r.value.value,[l,c]=n?["(",")"]:["[","]"];r.value.dataType?e+=`-${l}${r.value.dataType}:${Ce(o)}${c}`:e+=`-${l}${Ce(o)}${c}`}}else r.value.kind==="named"&&(e+=`-${r.value.value}`);return r.kind==="arbitrary"&&(e+=`[${r.property}:${Ce(r.value)}]`),(r.kind==="arbitrary"||r.kind==="functional")&&(e+=Qe(r.modifier)),r.important&&(e+="!"),i.push(e),i.join(":")}function Qe(t){if(t===null)return"";let r=Mt(t.value),i=r?t.value.slice(4,-1):t.value,[e,n]=r?["(",")"]:["[","]"];return t.kind==="arbitrary"?`/${e}${Ce(i)}${n}`:t.kind==="named"?`/${t.value}`:""}function dt(t){if(t.kind==="static")return t.root;if(t.kind==="arbitrary")return`[${Ce(wn(t.selector))}]`;let r="";if(t.kind==="functional"){r+=t.root;let i=t.root!=="@";if(t.value)if(t.value.kind==="arbitrary"){let e=Mt(t.value.value),n=e?t.value.value.slice(4,-1):t.value.value,[o,l]=e?["(",")"]:["[","]"];r+=`${i?"-":""}${o}${Ce(n)}${l}`}else t.value.kind==="named"&&(r+=`${i?"-":""}${t.value.value}`)}return t.kind==="compound"&&(r+=t.root,r+="-",r+=dt(t.variant)),(t.kind==="functional"||t.kind==="compound")&&(r+=Qe(t.modifier)),r}var hn=new z(t=>{let r=F(t),i=new Set;return _(r,(e,n)=>{let o=n.parent===null?r:n.parent.nodes??[];if(e.kind==="word"&&(e.value==="+"||e.value==="-"||e.value==="*"||e.value==="/")){let l=o.indexOf(e)??-1;if(l===-1)return;let c=o[l-1];if(c?.kind!=="separator"||c.value!==" ")return;let u=o[l+1];if(u?.kind!=="separator"||u.value!==" ")return;i.add(c),i.add(u)}else e.kind==="separator"&&e.value.length>0&&e.value.trim()===""?(o[0]===e||o[o.length-1]===e)&&i.add(e):e.kind==="separator"&&e.value.trim()===","&&(e.value=",")}),i.size>0&&_(r,e=>{if(i.has(e))return i.delete(e),R.ReplaceSkip([])}),Lt(r),Y(r)});function Ce(t){return hn.get(t)}var vn=new z(t=>{let r=F(t);return r.length===3&&r[0].kind==="word"&&r[0].value==="&"&&r[1].kind==="separator"&&r[1].value===":"&&r[2].kind==="function"&&r[2].value==="is"?Y(r[2].nodes):t});function wn(t){return vn.get(t)}function Lt(t){for(let r of t)switch(r.kind){case"function":{if(r.value==="url"||r.value.endsWith("_url")){r.value=Je(r.value);break}if(r.value==="var"||r.value.endsWith("_var")||r.value==="theme"||r.value.endsWith("_theme")){r.value=Je(r.value);for(let i=0;i{let r=F(t);return r.length===1&&r[0].kind==="function"&&r[0].value==="var"});function Mt(t){return yn.get(t)}function kn(t){throw new Error(`Unexpected value: ${t}`)}function Je(t){return t.replaceAll("_",String.raw`\_`).replaceAll(" ","_")}function Ee(t,r,i){if(t===r)return 0;let e=t.indexOf("("),n=r.indexOf("("),o=e===-1?t.replace(/[\d.]+/g,""):t.slice(0,e),l=n===-1?r.replace(/[\d.]+/g,""):r.slice(0,n),c=(o===l?0:o{e=e.trim();let n=L(e," ").filter(f=>f.trim()!==""),o=null,l=null,c=null;for(let f of n)bn.has(f)||(Kr.test(f)?(l===null?l=f:c===null&&(c=f),Kr.lastIndex=0):o===null&&(o=f));if(l===null||c===null)return e;let u=r(o??"currentcolor");return o!==null?e.replace(o,u):`${e} ${u}`}).join(", ")}var vt=["0","0.5","1","1.5","2","2.5","3","3.5","4","5","6","7","8","9","10","11","12","14","16","20","24","28","32","36","40","44","48","52","56","60","64","72","80","96"],Ft=class{utilities=new z(()=>[]);completions=new Map;static(r,i){this.utilities.get(r).push({kind:"static",compileFn:i})}functional(r,i,e){this.utilities.get(r).push({kind:"functional",compileFn:i,options:e})}has(r,i){return this.utilities.has(r)&&this.utilities.get(r).some(e=>e.kind===i)}get(r){return this.utilities.has(r)?this.utilities.get(r):[]}getCompletions(r){return this.has(r,"static")?this.completions.get(r)?.()??[{supportsNegative:!1,values:[],modifiers:[]}]:this.completions.get(r)?.()??[]}suggest(r,i){let e=this.completions.get(r);e?this.completions.set(r,()=>[...e?.(),...i?.()]):this.completions.set(r,i)}keys(r){let i=[];for(let[e,n]of this.utilities.entries())for(let o of n)if(o.kind===r){i.push(e);break}return i}};function $(t,r,i){return W("@property",t,[a("syntax",i?`"${i}"`:'"*"'),a("inherits","false"),...r?[a("initial-value",r)]:[]])}function Q(t,r){if(r===null)return t;let i=Number(r);return Number.isNaN(i)||(r=`${i*100}%`),r==="100%"?t:`color-mix(in oklab, ${t} ${r}, transparent)`}function zr(t,r){let i=Number(r);return Number.isNaN(i)||(r=`${i*100}%`),`oklab(from ${t} l a b / ${r})`}function X(t,r,i){if(!r)return t;if(r.kind==="arbitrary")return Q(t,r.value);let e=i.resolve(r.value,["--opacity"]);return e?Q(t,e):nt(r.value)?Q(t,`${r.value}%`):null}function re(t,r,i){let e=null;switch(t.value.value){case"inherit":{e="inherit";break}case"transparent":{e="transparent";break}case"current":{e="currentcolor";break}default:{e=r.resolve(t.value.value,i);break}}return e?X(e,t.modifier,r):null}var Lr=/(\d+)_(\d+)/g;function jr(t){let r=new Ft;function i(s,g){function*w(x){for(let S of t.keysInNamespaces(x))yield S.replace(Lr,(K,V,O)=>`${V}.${O}`)}let C=["1/2","1/3","2/3","1/4","2/4","3/4","1/5","2/5","3/5","4/5","1/6","2/6","3/6","4/6","5/6","1/12","2/12","3/12","4/12","5/12","6/12","7/12","8/12","9/12","10/12","11/12"];r.suggest(s,()=>{let x=[];for(let S of g()){if(typeof S=="string"){x.push({values:[S],modifiers:[]});continue}let K=[...S.values??[],...w(S.valueThemeKeys??[])],V=[...S.modifiers??[],...w(S.modifierThemeKeys??[])];S.supportsFractions&&K.push(...C),S.hasDefaultValue&&K.unshift(null),x.push({supportsNegative:S.supportsNegative,values:K,modifiers:V})}return x})}function e(s,g){r.static(s,()=>g.map(w=>typeof w=="function"?w():a(w[0],w[1])))}function n(s,g){g.staticValues&&(g.staticValues=Object.assign(Object.create(null),g.staticValues));function w({negative:C}){return x=>{let S=null,K=null;if(x.value)if(x.value.kind==="arbitrary"){if(x.modifier)return;S=x.value.value,K=x.value.dataType}else{if(S=t.resolve(x.value.fraction??x.value.value,g.themeKeys??[]),S===null&&g.supportsFractions&&x.value.fraction){let[V,O]=L(x.value.fraction,"/");if(!I(V)||!I(O))return;S=`calc(${V} / ${O} * 100%)`}if(S===null&&C&&g.handleNegativeBareValue){if(S=g.handleNegativeBareValue(x.value),!S?.includes("/")&&x.modifier)return;if(S!==null)return g.handle(S,null)}if(S===null&&g.handleBareValue&&(S=g.handleBareValue(x.value),!S?.includes("/")&&x.modifier))return;if(S===null&&!C&&g.staticValues&&!x.modifier){let V=g.staticValues[x.value.value];if(V)return V.map(te)}}else{if(x.modifier)return;S=g.defaultValue!==void 0?g.defaultValue:t.resolve(null,g.themeKeys??[])}if(S!==null)return g.handle(C?`calc(${S} * -1)`:S,K)}}if(g.supportsNegative&&r.functional(`-${s}`,w({negative:!0})),r.functional(s,w({negative:!1})),i(s,()=>[{supportsNegative:g.supportsNegative,valueThemeKeys:g.themeKeys??[],hasDefaultValue:g.defaultValue!==void 0&&g.defaultValue!==null,supportsFractions:g.supportsFractions}]),g.staticValues&&Object.keys(g.staticValues).length>0){let C=Object.keys(g.staticValues);i(s,()=>[{values:C}])}}function o(s,g){r.functional(s,w=>{if(!w.value)return;let C=null;if(w.value.kind==="arbitrary"?(C=w.value.value,C=X(C,w.modifier,t)):C=re(w,t,g.themeKeys),C!==null)return g.handle(C)}),i(s,()=>[{values:["current","inherit","transparent"],valueThemeKeys:g.themeKeys,modifiers:Array.from({length:21},(w,C)=>`${C*5}`)}])}function l(s,g,w,{supportsNegative:C=!1,supportsFractions:x=!1,staticValues:S}={}){C&&r.static(`-${s}-px`,()=>w("-1px")),r.static(`${s}-px`,()=>w("1px")),n(s,{themeKeys:g,supportsFractions:x,supportsNegative:C,defaultValue:null,handleBareValue:({value:K})=>{let V=t.resolve(null,["--spacing"]);return!V||!ee(K)?null:`calc(${V} * ${K})`},handleNegativeBareValue:({value:K})=>{let V=t.resolve(null,["--spacing"]);return!V||!ee(K)?null:`calc(${V} * -${K})`},handle:w,staticValues:S}),i(s,()=>[{values:t.get(["--spacing"])?vt:[],supportsNegative:C,supportsFractions:x,valueThemeKeys:g}])}e("sr-only",[["position","absolute"],["width","1px"],["height","1px"],["padding","0"],["margin","-1px"],["overflow","hidden"],["clip-path","inset(50%)"],["white-space","nowrap"],["border-width","0"]]),e("not-sr-only",[["position","static"],["width","auto"],["height","auto"],["padding","0"],["margin","0"],["overflow","visible"],["clip-path","none"],["white-space","normal"]]),e("pointer-events-none",[["pointer-events","none"]]),e("pointer-events-auto",[["pointer-events","auto"]]),e("visible",[["visibility","visible"]]),e("invisible",[["visibility","hidden"]]),e("collapse",[["visibility","collapse"]]),e("static",[["position","static"]]),e("fixed",[["position","fixed"]]),e("absolute",[["position","absolute"]]),e("relative",[["position","relative"]]),e("sticky",[["position","sticky"]]);for(let[s,g]of[["inset","inset"],["inset-x","inset-inline"],["inset-y","inset-block"],["inset-s","inset-inline-start"],["inset-e","inset-inline-end"],["inset-bs","inset-block-start"],["inset-be","inset-block-end"],["top","top"],["right","right"],["bottom","bottom"],["left","left"]])e(`${s}-auto`,[[g,"auto"]]),e(`${s}-full`,[[g,"100%"]]),e(`-${s}-full`,[[g,"-100%"]]),l(s,["--inset","--spacing"],w=>[a(g,w)],{supportsNegative:!0,supportsFractions:!0});e("isolate",[["isolation","isolate"]]),e("isolation-auto",[["isolation","auto"]]),n("z",{supportsNegative:!0,handleBareValue:({value:s})=>I(s)?s:null,themeKeys:["--z-index"],handle:s=>[a("z-index",s)],staticValues:{auto:[a("z-index","auto")]}}),i("z",()=>[{supportsNegative:!0,values:["0","10","20","30","40","50"],valueThemeKeys:["--z-index"]}]),n("order",{supportsNegative:!0,handleBareValue:({value:s})=>I(s)?s:null,themeKeys:["--order"],handle:s=>[a("order",s)],staticValues:{first:[a("order","-9999")],last:[a("order","9999")]}}),i("order",()=>[{supportsNegative:!0,values:Array.from({length:12},(s,g)=>`${g+1}`),valueThemeKeys:["--order"]}]),n("col",{supportsNegative:!0,handleBareValue:({value:s})=>I(s)?s:null,themeKeys:["--grid-column"],handle:s=>[a("grid-column",s)],staticValues:{auto:[a("grid-column","auto")]}}),n("col-span",{handleBareValue:({value:s})=>I(s)?s:null,handle:s=>[a("grid-column",`span ${s} / span ${s}`)],staticValues:{full:[a("grid-column","1 / -1")]}}),n("col-start",{supportsNegative:!0,handleBareValue:({value:s})=>I(s)?s:null,themeKeys:["--grid-column-start"],handle:s=>[a("grid-column-start",s)],staticValues:{auto:[a("grid-column-start","auto")]}}),n("col-end",{supportsNegative:!0,handleBareValue:({value:s})=>I(s)?s:null,themeKeys:["--grid-column-end"],handle:s=>[a("grid-column-end",s)],staticValues:{auto:[a("grid-column-end","auto")]}}),i("col-span",()=>[{values:Array.from({length:12},(s,g)=>`${g+1}`),valueThemeKeys:[]}]),i("col-start",()=>[{supportsNegative:!0,values:Array.from({length:13},(s,g)=>`${g+1}`),valueThemeKeys:["--grid-column-start"]}]),i("col-end",()=>[{supportsNegative:!0,values:Array.from({length:13},(s,g)=>`${g+1}`),valueThemeKeys:["--grid-column-end"]}]),n("row",{supportsNegative:!0,handleBareValue:({value:s})=>I(s)?s:null,themeKeys:["--grid-row"],handle:s=>[a("grid-row",s)],staticValues:{auto:[a("grid-row","auto")]}}),n("row-span",{themeKeys:[],handleBareValue:({value:s})=>I(s)?s:null,handle:s=>[a("grid-row",`span ${s} / span ${s}`)],staticValues:{full:[a("grid-row","1 / -1")]}}),n("row-start",{supportsNegative:!0,handleBareValue:({value:s})=>I(s)?s:null,themeKeys:["--grid-row-start"],handle:s=>[a("grid-row-start",s)],staticValues:{auto:[a("grid-row-start","auto")]}}),n("row-end",{supportsNegative:!0,handleBareValue:({value:s})=>I(s)?s:null,themeKeys:["--grid-row-end"],handle:s=>[a("grid-row-end",s)],staticValues:{auto:[a("grid-row-end","auto")]}}),i("row-span",()=>[{values:Array.from({length:12},(s,g)=>`${g+1}`),valueThemeKeys:[]}]),i("row-start",()=>[{supportsNegative:!0,values:Array.from({length:13},(s,g)=>`${g+1}`),valueThemeKeys:["--grid-row-start"]}]),i("row-end",()=>[{supportsNegative:!0,values:Array.from({length:13},(s,g)=>`${g+1}`),valueThemeKeys:["--grid-row-end"]}]),e("float-start",[["float","inline-start"]]),e("float-end",[["float","inline-end"]]),e("float-right",[["float","right"]]),e("float-left",[["float","left"]]),e("float-none",[["float","none"]]),e("clear-start",[["clear","inline-start"]]),e("clear-end",[["clear","inline-end"]]),e("clear-right",[["clear","right"]]),e("clear-left",[["clear","left"]]),e("clear-both",[["clear","both"]]),e("clear-none",[["clear","none"]]);for(let[s,g]of[["m","margin"],["mx","margin-inline"],["my","margin-block"],["ms","margin-inline-start"],["me","margin-inline-end"],["mbs","margin-block-start"],["mbe","margin-block-end"],["mt","margin-top"],["mr","margin-right"],["mb","margin-bottom"],["ml","margin-left"]])e(`${s}-auto`,[[g,"auto"]]),l(s,["--margin","--spacing"],w=>[a(g,w)],{supportsNegative:!0});e("box-border",[["box-sizing","border-box"]]),e("box-content",[["box-sizing","content-box"]]),n("line-clamp",{themeKeys:["--line-clamp"],handleBareValue:({value:s})=>I(s)?s:null,handle:s=>[a("overflow","hidden"),a("display","-webkit-box"),a("-webkit-box-orient","vertical"),a("-webkit-line-clamp",s)],staticValues:{none:[a("overflow","visible"),a("display","block"),a("-webkit-box-orient","horizontal"),a("-webkit-line-clamp","unset")]}}),i("line-clamp",()=>[{values:["1","2","3","4","5","6"],valueThemeKeys:["--line-clamp"]}]),e("block",[["display","block"]]),e("inline-block",[["display","inline-block"]]),e("inline",[["display","inline"]]),e("hidden",[["display","none"]]),e("inline-flex",[["display","inline-flex"]]),e("table",[["display","table"]]),e("inline-table",[["display","inline-table"]]),e("table-caption",[["display","table-caption"]]),e("table-cell",[["display","table-cell"]]),e("table-column",[["display","table-column"]]),e("table-column-group",[["display","table-column-group"]]),e("table-footer-group",[["display","table-footer-group"]]),e("table-header-group",[["display","table-header-group"]]),e("table-row-group",[["display","table-row-group"]]),e("table-row",[["display","table-row"]]),e("flow-root",[["display","flow-root"]]),e("flex",[["display","flex"]]),e("grid",[["display","grid"]]),e("inline-grid",[["display","inline-grid"]]),e("contents",[["display","contents"]]),e("list-item",[["display","list-item"]]),e("field-sizing-content",[["field-sizing","content"]]),e("field-sizing-fixed",[["field-sizing","fixed"]]),n("aspect",{themeKeys:["--aspect"],handleBareValue:({fraction:s})=>{if(s===null)return null;let[g,w]=L(s,"/");return!ee(g)||!ee(w)?null:s},handle:s=>[a("aspect-ratio",s)],staticValues:{auto:[a("aspect-ratio","auto")],square:[a("aspect-ratio","1 / 1")]}});for(let[s,g]of[["full","100%"],["svw","100svw"],["lvw","100lvw"],["dvw","100dvw"],["svh","100svh"],["lvh","100lvh"],["dvh","100dvh"],["min","min-content"],["max","max-content"],["fit","fit-content"]])e(`size-${s}`,[["--tw-sort","size"],["width",g],["height",g]]),e(`w-${s}`,[["width",g]]),e(`h-${s}`,[["height",g]]),e(`min-w-${s}`,[["min-width",g]]),e(`min-h-${s}`,[["min-height",g]]),e(`max-w-${s}`,[["max-width",g]]),e(`max-h-${s}`,[["max-height",g]]);e("size-auto",[["--tw-sort","size"],["width","auto"],["height","auto"]]),e("w-auto",[["width","auto"]]),e("h-auto",[["height","auto"]]),e("min-w-auto",[["min-width","auto"]]),e("min-h-auto",[["min-height","auto"]]),e("h-lh",[["height","1lh"]]),e("min-h-lh",[["min-height","1lh"]]),e("max-h-lh",[["max-height","1lh"]]),e("w-screen",[["width","100vw"]]),e("min-w-screen",[["min-width","100vw"]]),e("max-w-screen",[["max-width","100vw"]]),e("h-screen",[["height","100vh"]]),e("min-h-screen",[["min-height","100vh"]]),e("max-h-screen",[["max-height","100vh"]]),e("max-w-none",[["max-width","none"]]),e("max-h-none",[["max-height","none"]]),l("size",["--size","--spacing"],s=>[a("--tw-sort","size"),a("width",s),a("height",s)],{supportsFractions:!0});for(let[s,g,w]of[["w",["--width","--spacing","--container"],"width"],["min-w",["--min-width","--spacing","--container"],"min-width"],["max-w",["--max-width","--spacing","--container"],"max-width"],["h",["--height","--spacing"],"height"],["min-h",["--min-height","--height","--spacing"],"min-height"],["max-h",["--max-height","--height","--spacing"],"max-height"]])l(s,g,C=>[a(w,C)],{supportsFractions:!0});for(let[s,g]of[["full","100%"],["min","min-content"],["max","max-content"],["fit","fit-content"]])e(`inline-${s}`,[["inline-size",g]]),e(`block-${s}`,[["block-size",g]]),e(`min-inline-${s}`,[["min-inline-size",g]]),e(`min-block-${s}`,[["min-block-size",g]]),e(`max-inline-${s}`,[["max-inline-size",g]]),e(`max-block-${s}`,[["max-block-size",g]]);for(let[s,g]of[["svw","100svw"],["lvw","100lvw"],["dvw","100dvw"]])e(`inline-${s}`,[["inline-size",g]]),e(`min-inline-${s}`,[["min-inline-size",g]]),e(`max-inline-${s}`,[["max-inline-size",g]]);for(let[s,g]of[["svh","100svh"],["lvh","100lvh"],["dvh","100dvh"]])e(`block-${s}`,[["block-size",g]]),e(`min-block-${s}`,[["min-block-size",g]]),e(`max-block-${s}`,[["max-block-size",g]]);e("inline-auto",[["inline-size","auto"]]),e("block-auto",[["block-size","auto"]]),e("min-inline-auto",[["min-inline-size","auto"]]),e("min-block-auto",[["min-block-size","auto"]]),e("block-lh",[["block-size","1lh"]]),e("min-block-lh",[["min-block-size","1lh"]]),e("max-block-lh",[["max-block-size","1lh"]]),e("inline-screen",[["inline-size","100vw"]]),e("min-inline-screen",[["min-inline-size","100vw"]]),e("max-inline-screen",[["max-inline-size","100vw"]]),e("block-screen",[["block-size","100vh"]]),e("min-block-screen",[["min-block-size","100vh"]]),e("max-block-screen",[["max-block-size","100vh"]]),e("max-inline-none",[["max-inline-size","none"]]),e("max-block-none",[["max-block-size","none"]]);for(let[s,g,w]of[["inline",["--spacing","--container"],"inline-size"],["min-inline",["--spacing","--container"],"min-inline-size"],["max-inline",["--spacing","--container"],"max-inline-size"],["block",["--spacing"],"block-size"],["min-block",["--spacing"],"min-block-size"],["max-block",["--spacing"],"max-block-size"]])l(s,g,C=>[a(w,C)],{supportsFractions:!0});r.static("container",()=>{let s=[...t.namespace("--breakpoint").values()];s.sort((w,C)=>Ee(w,C,"asc"));let g=[a("--tw-sort","--tw-container-component"),a("width","100%")];for(let w of s)g.push(W("@media",`(width >= ${w})`,[a("max-width",w)]));return g}),e("flex-auto",[["flex","auto"]]),e("flex-initial",[["flex","0 auto"]]),e("flex-none",[["flex","none"]]),r.functional("flex",s=>{if(s.value){if(s.value.kind==="arbitrary")return s.modifier?void 0:[a("flex",s.value.value)];if(s.value.fraction){let[g,w]=L(s.value.fraction,"/");return!I(g)||!I(w)?void 0:[a("flex",`calc(${s.value.fraction} * 100%)`)]}if(I(s.value.value))return s.modifier?void 0:[a("flex",s.value.value)]}}),i("flex",()=>[{supportsFractions:!0},{values:Array.from({length:12},(s,g)=>`${g+1}`)}]),n("shrink",{defaultValue:"1",handleBareValue:({value:s})=>I(s)?s:null,handle:s=>[a("flex-shrink",s)]}),n("grow",{defaultValue:"1",handleBareValue:({value:s})=>I(s)?s:null,handle:s=>[a("flex-grow",s)]}),i("shrink",()=>[{values:["0"],valueThemeKeys:[],hasDefaultValue:!0}]),i("grow",()=>[{values:["0"],valueThemeKeys:[],hasDefaultValue:!0}]),e("basis-auto",[["flex-basis","auto"]]),e("basis-full",[["flex-basis","100%"]]),l("basis",["--flex-basis","--spacing","--container"],s=>[a("flex-basis",s)],{supportsFractions:!0}),e("table-auto",[["table-layout","auto"]]),e("table-fixed",[["table-layout","fixed"]]),e("caption-top",[["caption-side","top"]]),e("caption-bottom",[["caption-side","bottom"]]),e("border-collapse",[["border-collapse","collapse"]]),e("border-separate",[["border-collapse","separate"]]);let c=()=>B([$("--tw-border-spacing-x","0",""),$("--tw-border-spacing-y","0","")]);l("border-spacing",["--border-spacing","--spacing"],s=>[c(),a("--tw-border-spacing-x",s),a("--tw-border-spacing-y",s),a("border-spacing","var(--tw-border-spacing-x) var(--tw-border-spacing-y)")]),l("border-spacing-x",["--border-spacing","--spacing"],s=>[c(),a("--tw-border-spacing-x",s),a("border-spacing","var(--tw-border-spacing-x) var(--tw-border-spacing-y)")]),l("border-spacing-y",["--border-spacing","--spacing"],s=>[c(),a("--tw-border-spacing-y",s),a("border-spacing","var(--tw-border-spacing-x) var(--tw-border-spacing-y)")]),n("origin",{themeKeys:["--transform-origin"],handle:s=>[a("transform-origin",s)],staticValues:{center:[a("transform-origin","center")],top:[a("transform-origin","top")],"top-right":[a("transform-origin","100% 0")],right:[a("transform-origin","100%")],"bottom-right":[a("transform-origin","100% 100%")],bottom:[a("transform-origin","bottom")],"bottom-left":[a("transform-origin","0 100%")],left:[a("transform-origin","0")],"top-left":[a("transform-origin","0 0")]}}),n("perspective-origin",{themeKeys:["--perspective-origin"],handle:s=>[a("perspective-origin",s)],staticValues:{center:[a("perspective-origin","center")],top:[a("perspective-origin","top")],"top-right":[a("perspective-origin","100% 0")],right:[a("perspective-origin","100%")],"bottom-right":[a("perspective-origin","100% 100%")],bottom:[a("perspective-origin","bottom")],"bottom-left":[a("perspective-origin","0 100%")],left:[a("perspective-origin","0")],"top-left":[a("perspective-origin","0 0")]}}),n("perspective",{themeKeys:["--perspective"],handle:s=>[a("perspective",s)],staticValues:{none:[a("perspective","none")]}});let u=()=>B([$("--tw-translate-x","0"),$("--tw-translate-y","0"),$("--tw-translate-z","0")]);e("translate-none",[["translate","none"]]),e("-translate-full",[u,["--tw-translate-x","-100%"],["--tw-translate-y","-100%"],["translate","var(--tw-translate-x) var(--tw-translate-y)"]]),e("translate-full",[u,["--tw-translate-x","100%"],["--tw-translate-y","100%"],["translate","var(--tw-translate-x) var(--tw-translate-y)"]]),l("translate",["--translate","--spacing"],s=>[u(),a("--tw-translate-x",s),a("--tw-translate-y",s),a("translate","var(--tw-translate-x) var(--tw-translate-y)")],{supportsNegative:!0,supportsFractions:!0});for(let s of["x","y"])e(`-translate-${s}-full`,[u,[`--tw-translate-${s}`,"-100%"],["translate","var(--tw-translate-x) var(--tw-translate-y)"]]),e(`translate-${s}-full`,[u,[`--tw-translate-${s}`,"100%"],["translate","var(--tw-translate-x) var(--tw-translate-y)"]]),l(`translate-${s}`,["--translate","--spacing"],g=>[u(),a(`--tw-translate-${s}`,g),a("translate","var(--tw-translate-x) var(--tw-translate-y)")],{supportsNegative:!0,supportsFractions:!0});l("translate-z",["--translate","--spacing"],s=>[u(),a("--tw-translate-z",s),a("translate","var(--tw-translate-x) var(--tw-translate-y) var(--tw-translate-z)")],{supportsNegative:!0}),e("translate-3d",[u,["translate","var(--tw-translate-x) var(--tw-translate-y) var(--tw-translate-z)"]]);let f=()=>B([$("--tw-scale-x","1"),$("--tw-scale-y","1"),$("--tw-scale-z","1")]);e("scale-none",[["scale","none"]]);function m({negative:s}){return g=>{if(!g.value||g.modifier)return;let w;return g.value.kind==="arbitrary"?(w=g.value.value,w=s?`calc(${w} * -1)`:w,[a("scale",w)]):(w=t.resolve(g.value.value,["--scale"]),!w&&I(g.value.value)&&(w=`${g.value.value}%`),w?(w=s?`calc(${w} * -1)`:w,[f(),a("--tw-scale-x",w),a("--tw-scale-y",w),a("--tw-scale-z",w),a("scale","var(--tw-scale-x) var(--tw-scale-y)")]):void 0)}}r.functional("-scale",m({negative:!0})),r.functional("scale",m({negative:!1})),i("scale",()=>[{supportsNegative:!0,values:["0","50","75","90","95","100","105","110","125","150","200"],valueThemeKeys:["--scale"]}]);for(let s of["x","y","z"])n(`scale-${s}`,{supportsNegative:!0,themeKeys:["--scale"],handleBareValue:({value:g})=>I(g)?`${g}%`:null,handle:g=>[f(),a(`--tw-scale-${s}`,g),a("scale",`var(--tw-scale-x) var(--tw-scale-y)${s==="z"?" var(--tw-scale-z)":""}`)]}),i(`scale-${s}`,()=>[{supportsNegative:!0,values:["0","50","75","90","95","100","105","110","125","150","200"],valueThemeKeys:["--scale"]}]);e("scale-3d",[f,["scale","var(--tw-scale-x) var(--tw-scale-y) var(--tw-scale-z)"]]),e("rotate-none",[["rotate","none"]]);function d({negative:s}){return g=>{if(!g.value||g.modifier)return;let w;if(g.value.kind==="arbitrary"){w=g.value.value;let C=g.value.dataType??H(w,["angle","vector"]);if(C==="vector")return[a("rotate",`${w} var(--tw-rotate)`)];if(C!=="angle")return[a("rotate",s?`calc(${w} * -1)`:w)]}else if(w=t.resolve(g.value.value,["--rotate"]),!w&&I(g.value.value)&&(w=`${g.value.value}deg`),!w)return;return[a("rotate",s?`calc(${w} * -1)`:w)]}}r.functional("-rotate",d({negative:!0})),r.functional("rotate",d({negative:!1})),i("rotate",()=>[{supportsNegative:!0,values:["0","1","2","3","6","12","45","90","180"],valueThemeKeys:["--rotate"]}]);{let s=["var(--tw-rotate-x,)","var(--tw-rotate-y,)","var(--tw-rotate-z,)","var(--tw-skew-x,)","var(--tw-skew-y,)"].join(" "),g=()=>B([$("--tw-rotate-x"),$("--tw-rotate-y"),$("--tw-rotate-z"),$("--tw-skew-x"),$("--tw-skew-y")]);for(let w of["x","y","z"])n(`rotate-${w}`,{supportsNegative:!0,themeKeys:["--rotate"],handleBareValue:({value:C})=>I(C)?`${C}deg`:null,handle:C=>[g(),a(`--tw-rotate-${w}`,`rotate${w.toUpperCase()}(${C})`),a("transform",s)]}),i(`rotate-${w}`,()=>[{supportsNegative:!0,values:["0","1","2","3","6","12","45","90","180"],valueThemeKeys:["--rotate"]}]);n("skew",{supportsNegative:!0,themeKeys:["--skew"],handleBareValue:({value:w})=>I(w)?`${w}deg`:null,handle:w=>[g(),a("--tw-skew-x",`skewX(${w})`),a("--tw-skew-y",`skewY(${w})`),a("transform",s)]}),n("skew-x",{supportsNegative:!0,themeKeys:["--skew"],handleBareValue:({value:w})=>I(w)?`${w}deg`:null,handle:w=>[g(),a("--tw-skew-x",`skewX(${w})`),a("transform",s)]}),n("skew-y",{supportsNegative:!0,themeKeys:["--skew"],handleBareValue:({value:w})=>I(w)?`${w}deg`:null,handle:w=>[g(),a("--tw-skew-y",`skewY(${w})`),a("transform",s)]}),i("skew",()=>[{supportsNegative:!0,values:["0","1","2","3","6","12"],valueThemeKeys:["--skew"]}]),i("skew-x",()=>[{supportsNegative:!0,values:["0","1","2","3","6","12"],valueThemeKeys:["--skew"]}]),i("skew-y",()=>[{supportsNegative:!0,values:["0","1","2","3","6","12"],valueThemeKeys:["--skew"]}]),r.functional("transform",w=>{if(w.modifier)return;let C=null;if(w.value?w.value.kind==="arbitrary"&&(C=w.value.value):C=s,C!==null)return[g(),a("transform",C)]}),i("transform",()=>[{hasDefaultValue:!0}]),e("transform-cpu",[["transform",s]]),e("transform-gpu",[["transform",`translateZ(0) ${s}`]]),e("transform-none",[["transform","none"]])}e("transform-flat",[["transform-style","flat"]]),e("transform-3d",[["transform-style","preserve-3d"]]),e("transform-content",[["transform-box","content-box"]]),e("transform-border",[["transform-box","border-box"]]),e("transform-fill",[["transform-box","fill-box"]]),e("transform-stroke",[["transform-box","stroke-box"]]),e("transform-view",[["transform-box","view-box"]]),e("backface-visible",[["backface-visibility","visible"]]),e("backface-hidden",[["backface-visibility","hidden"]]);for(let s of["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out"])e(`cursor-${s}`,[["cursor",s]]);n("cursor",{themeKeys:["--cursor"],handle:s=>[a("cursor",s)]});for(let s of["auto","none","manipulation"])e(`touch-${s}`,[["touch-action",s]]);let p=()=>B([$("--tw-pan-x"),$("--tw-pan-y"),$("--tw-pinch-zoom")]);for(let s of["x","left","right"])e(`touch-pan-${s}`,[p,["--tw-pan-x",`pan-${s}`],["touch-action","var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)"]]);for(let s of["y","up","down"])e(`touch-pan-${s}`,[p,["--tw-pan-y",`pan-${s}`],["touch-action","var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)"]]);e("touch-pinch-zoom",[p,["--tw-pinch-zoom","pinch-zoom"],["touch-action","var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)"]]);for(let s of["none","text","all","auto"])e(`select-${s}`,[["-webkit-user-select",s],["user-select",s]]);e("resize-none",[["resize","none"]]),e("resize-x",[["resize","horizontal"]]),e("resize-y",[["resize","vertical"]]),e("resize",[["resize","both"]]),e("snap-none",[["scroll-snap-type","none"]]);let v=()=>B([$("--tw-scroll-snap-strictness","proximity","*")]);for(let s of["x","y","both"])e(`snap-${s}`,[v,["scroll-snap-type",`${s} var(--tw-scroll-snap-strictness)`]]);e("snap-mandatory",[v,["--tw-scroll-snap-strictness","mandatory"]]),e("snap-proximity",[v,["--tw-scroll-snap-strictness","proximity"]]),e("snap-align-none",[["scroll-snap-align","none"]]),e("snap-start",[["scroll-snap-align","start"]]),e("snap-end",[["scroll-snap-align","end"]]),e("snap-center",[["scroll-snap-align","center"]]),e("snap-normal",[["scroll-snap-stop","normal"]]),e("snap-always",[["scroll-snap-stop","always"]]);for(let[s,g]of[["scroll-m","scroll-margin"],["scroll-mx","scroll-margin-inline"],["scroll-my","scroll-margin-block"],["scroll-ms","scroll-margin-inline-start"],["scroll-me","scroll-margin-inline-end"],["scroll-mbs","scroll-margin-block-start"],["scroll-mbe","scroll-margin-block-end"],["scroll-mt","scroll-margin-top"],["scroll-mr","scroll-margin-right"],["scroll-mb","scroll-margin-bottom"],["scroll-ml","scroll-margin-left"]])l(s,["--scroll-margin","--spacing"],w=>[a(g,w)],{supportsNegative:!0});for(let[s,g]of[["scroll-p","scroll-padding"],["scroll-px","scroll-padding-inline"],["scroll-py","scroll-padding-block"],["scroll-ps","scroll-padding-inline-start"],["scroll-pe","scroll-padding-inline-end"],["scroll-pbs","scroll-padding-block-start"],["scroll-pbe","scroll-padding-block-end"],["scroll-pt","scroll-padding-top"],["scroll-pr","scroll-padding-right"],["scroll-pb","scroll-padding-bottom"],["scroll-pl","scroll-padding-left"]])l(s,["--scroll-padding","--spacing"],w=>[a(g,w)]);e("list-inside",[["list-style-position","inside"]]),e("list-outside",[["list-style-position","outside"]]),n("list",{themeKeys:["--list-style-type"],handle:s=>[a("list-style-type",s)],staticValues:{none:[a("list-style-type","none")],disc:[a("list-style-type","disc")],decimal:[a("list-style-type","decimal")]}}),n("list-image",{themeKeys:["--list-style-image"],handle:s=>[a("list-style-image",s)],staticValues:{none:[a("list-style-image","none")]}}),e("appearance-none",[["appearance","none"]]),e("appearance-auto",[["appearance","auto"]]),e("scheme-normal",[["color-scheme","normal"]]),e("scheme-dark",[["color-scheme","dark"]]),e("scheme-light",[["color-scheme","light"]]),e("scheme-light-dark",[["color-scheme","light dark"]]),e("scheme-only-dark",[["color-scheme","only dark"]]),e("scheme-only-light",[["color-scheme","only light"]]),n("columns",{themeKeys:["--columns","--container"],handleBareValue:({value:s})=>I(s)?s:null,handle:s=>[a("columns",s)],staticValues:{auto:[a("columns","auto")]}}),i("columns",()=>[{values:Array.from({length:12},(s,g)=>`${g+1}`),valueThemeKeys:["--columns","--container"]}]);for(let s of["auto","avoid","all","avoid-page","page","left","right","column"])e(`break-before-${s}`,[["break-before",s]]);for(let s of["auto","avoid","avoid-page","avoid-column"])e(`break-inside-${s}`,[["break-inside",s]]);for(let s of["auto","avoid","all","avoid-page","page","left","right","column"])e(`break-after-${s}`,[["break-after",s]]);e("grid-flow-row",[["grid-auto-flow","row"]]),e("grid-flow-col",[["grid-auto-flow","column"]]),e("grid-flow-dense",[["grid-auto-flow","dense"]]),e("grid-flow-row-dense",[["grid-auto-flow","row dense"]]),e("grid-flow-col-dense",[["grid-auto-flow","column dense"]]),n("auto-cols",{themeKeys:["--grid-auto-columns"],handle:s=>[a("grid-auto-columns",s)],staticValues:{auto:[a("grid-auto-columns","auto")],min:[a("grid-auto-columns","min-content")],max:[a("grid-auto-columns","max-content")],fr:[a("grid-auto-columns","minmax(0, 1fr)")]}}),n("auto-rows",{themeKeys:["--grid-auto-rows"],handle:s=>[a("grid-auto-rows",s)],staticValues:{auto:[a("grid-auto-rows","auto")],min:[a("grid-auto-rows","min-content")],max:[a("grid-auto-rows","max-content")],fr:[a("grid-auto-rows","minmax(0, 1fr)")]}}),n("grid-cols",{themeKeys:["--grid-template-columns"],handleBareValue:({value:s})=>Nt(s)?`repeat(${s}, minmax(0, 1fr))`:null,handle:s=>[a("grid-template-columns",s)],staticValues:{none:[a("grid-template-columns","none")],subgrid:[a("grid-template-columns","subgrid")]}}),n("grid-rows",{themeKeys:["--grid-template-rows"],handleBareValue:({value:s})=>Nt(s)?`repeat(${s}, minmax(0, 1fr))`:null,handle:s=>[a("grid-template-rows",s)],staticValues:{none:[a("grid-template-rows","none")],subgrid:[a("grid-template-rows","subgrid")]}}),i("grid-cols",()=>[{values:Array.from({length:12},(s,g)=>`${g+1}`),valueThemeKeys:["--grid-template-columns"]}]),i("grid-rows",()=>[{values:Array.from({length:12},(s,g)=>`${g+1}`),valueThemeKeys:["--grid-template-rows"]}]),e("flex-row",[["flex-direction","row"]]),e("flex-row-reverse",[["flex-direction","row-reverse"]]),e("flex-col",[["flex-direction","column"]]),e("flex-col-reverse",[["flex-direction","column-reverse"]]),e("flex-wrap",[["flex-wrap","wrap"]]),e("flex-nowrap",[["flex-wrap","nowrap"]]),e("flex-wrap-reverse",[["flex-wrap","wrap-reverse"]]),e("place-content-center",[["place-content","center"]]),e("place-content-start",[["place-content","start"]]),e("place-content-end",[["place-content","end"]]),e("place-content-center-safe",[["place-content","safe center"]]),e("place-content-end-safe",[["place-content","safe end"]]),e("place-content-between",[["place-content","space-between"]]),e("place-content-around",[["place-content","space-around"]]),e("place-content-evenly",[["place-content","space-evenly"]]),e("place-content-baseline",[["place-content","baseline"]]),e("place-content-stretch",[["place-content","stretch"]]),e("place-items-center",[["place-items","center"]]),e("place-items-start",[["place-items","start"]]),e("place-items-end",[["place-items","end"]]),e("place-items-center-safe",[["place-items","safe center"]]),e("place-items-end-safe",[["place-items","safe end"]]),e("place-items-baseline",[["place-items","baseline"]]),e("place-items-stretch",[["place-items","stretch"]]),e("content-normal",[["align-content","normal"]]),e("content-center",[["align-content","center"]]),e("content-start",[["align-content","flex-start"]]),e("content-end",[["align-content","flex-end"]]),e("content-center-safe",[["align-content","safe center"]]),e("content-end-safe",[["align-content","safe flex-end"]]),e("content-between",[["align-content","space-between"]]),e("content-around",[["align-content","space-around"]]),e("content-evenly",[["align-content","space-evenly"]]),e("content-baseline",[["align-content","baseline"]]),e("content-stretch",[["align-content","stretch"]]),e("items-center",[["align-items","center"]]),e("items-start",[["align-items","flex-start"]]),e("items-end",[["align-items","flex-end"]]),e("items-center-safe",[["align-items","safe center"]]),e("items-end-safe",[["align-items","safe flex-end"]]),e("items-baseline",[["align-items","baseline"]]),e("items-baseline-last",[["align-items","last baseline"]]),e("items-stretch",[["align-items","stretch"]]),e("justify-normal",[["justify-content","normal"]]),e("justify-center",[["justify-content","center"]]),e("justify-start",[["justify-content","flex-start"]]),e("justify-end",[["justify-content","flex-end"]]),e("justify-center-safe",[["justify-content","safe center"]]),e("justify-end-safe",[["justify-content","safe flex-end"]]),e("justify-between",[["justify-content","space-between"]]),e("justify-around",[["justify-content","space-around"]]),e("justify-evenly",[["justify-content","space-evenly"]]),e("justify-baseline",[["justify-content","baseline"]]),e("justify-stretch",[["justify-content","stretch"]]),e("justify-items-normal",[["justify-items","normal"]]),e("justify-items-center",[["justify-items","center"]]),e("justify-items-start",[["justify-items","start"]]),e("justify-items-end",[["justify-items","end"]]),e("justify-items-center-safe",[["justify-items","safe center"]]),e("justify-items-end-safe",[["justify-items","safe end"]]),e("justify-items-stretch",[["justify-items","stretch"]]),l("gap",["--gap","--spacing"],s=>[a("gap",s)]),l("gap-x",["--gap","--spacing"],s=>[a("column-gap",s)]),l("gap-y",["--gap","--spacing"],s=>[a("row-gap",s)]),l("space-x",["--space","--spacing"],s=>[B([$("--tw-space-x-reverse","0")]),q(":where(& > :not(:last-child))",[a("--tw-sort","row-gap"),a("--tw-space-x-reverse","0"),a("margin-inline-start",`calc(${s} * var(--tw-space-x-reverse))`),a("margin-inline-end",`calc(${s} * calc(1 - var(--tw-space-x-reverse)))`)])],{supportsNegative:!0}),l("space-y",["--space","--spacing"],s=>[B([$("--tw-space-y-reverse","0")]),q(":where(& > :not(:last-child))",[a("--tw-sort","column-gap"),a("--tw-space-y-reverse","0"),a("margin-block-start",`calc(${s} * var(--tw-space-y-reverse))`),a("margin-block-end",`calc(${s} * calc(1 - var(--tw-space-y-reverse)))`)])],{supportsNegative:!0}),e("space-x-reverse",[()=>B([$("--tw-space-x-reverse","0")]),()=>q(":where(& > :not(:last-child))",[a("--tw-sort","row-gap"),a("--tw-space-x-reverse","1")])]),e("space-y-reverse",[()=>B([$("--tw-space-y-reverse","0")]),()=>q(":where(& > :not(:last-child))",[a("--tw-sort","column-gap"),a("--tw-space-y-reverse","1")])]),e("accent-auto",[["accent-color","auto"]]),o("accent",{themeKeys:["--accent-color","--color"],handle:s=>[a("accent-color",s)]}),o("caret",{themeKeys:["--caret-color","--color"],handle:s=>[a("caret-color",s)]}),o("divide",{themeKeys:["--divide-color","--border-color","--color"],handle:s=>[q(":where(& > :not(:last-child))",[a("--tw-sort","divide-color"),a("border-color",s)])]}),e("place-self-auto",[["place-self","auto"]]),e("place-self-start",[["place-self","start"]]),e("place-self-end",[["place-self","end"]]),e("place-self-center",[["place-self","center"]]),e("place-self-end-safe",[["place-self","safe end"]]),e("place-self-center-safe",[["place-self","safe center"]]),e("place-self-stretch",[["place-self","stretch"]]),e("self-auto",[["align-self","auto"]]),e("self-start",[["align-self","flex-start"]]),e("self-end",[["align-self","flex-end"]]),e("self-center",[["align-self","center"]]),e("self-end-safe",[["align-self","safe flex-end"]]),e("self-center-safe",[["align-self","safe center"]]),e("self-stretch",[["align-self","stretch"]]),e("self-baseline",[["align-self","baseline"]]),e("self-baseline-last",[["align-self","last baseline"]]),e("justify-self-auto",[["justify-self","auto"]]),e("justify-self-start",[["justify-self","flex-start"]]),e("justify-self-end",[["justify-self","flex-end"]]),e("justify-self-center",[["justify-self","center"]]),e("justify-self-end-safe",[["justify-self","safe flex-end"]]),e("justify-self-center-safe",[["justify-self","safe center"]]),e("justify-self-stretch",[["justify-self","stretch"]]);for(let s of["auto","hidden","clip","visible","scroll"])e(`overflow-${s}`,[["overflow",s]]),e(`overflow-x-${s}`,[["overflow-x",s]]),e(`overflow-y-${s}`,[["overflow-y",s]]);for(let s of["auto","contain","none"])e(`overscroll-${s}`,[["overscroll-behavior",s]]),e(`overscroll-x-${s}`,[["overscroll-behavior-x",s]]),e(`overscroll-y-${s}`,[["overscroll-behavior-y",s]]);e("scroll-auto",[["scroll-behavior","auto"]]),e("scroll-smooth",[["scroll-behavior","smooth"]]),e("truncate",[["overflow","hidden"],["text-overflow","ellipsis"],["white-space","nowrap"]]),e("text-ellipsis",[["text-overflow","ellipsis"]]),e("text-clip",[["text-overflow","clip"]]),e("hyphens-none",[["-webkit-hyphens","none"],["hyphens","none"]]),e("hyphens-manual",[["-webkit-hyphens","manual"],["hyphens","manual"]]),e("hyphens-auto",[["-webkit-hyphens","auto"],["hyphens","auto"]]),e("whitespace-normal",[["white-space","normal"]]),e("whitespace-nowrap",[["white-space","nowrap"]]),e("whitespace-pre",[["white-space","pre"]]),e("whitespace-pre-line",[["white-space","pre-line"]]),e("whitespace-pre-wrap",[["white-space","pre-wrap"]]),e("whitespace-break-spaces",[["white-space","break-spaces"]]),e("text-wrap",[["text-wrap","wrap"]]),e("text-nowrap",[["text-wrap","nowrap"]]),e("text-balance",[["text-wrap","balance"]]),e("text-pretty",[["text-wrap","pretty"]]),e("break-normal",[["overflow-wrap","normal"],["word-break","normal"]]),e("break-all",[["word-break","break-all"]]),e("break-keep",[["word-break","keep-all"]]),e("wrap-anywhere",[["overflow-wrap","anywhere"]]),e("wrap-break-word",[["overflow-wrap","break-word"]]),e("wrap-normal",[["overflow-wrap","normal"]]);for(let[s,g]of[["rounded",["border-radius"]],["rounded-s",["border-start-start-radius","border-end-start-radius"]],["rounded-e",["border-start-end-radius","border-end-end-radius"]],["rounded-t",["border-top-left-radius","border-top-right-radius"]],["rounded-r",["border-top-right-radius","border-bottom-right-radius"]],["rounded-b",["border-bottom-right-radius","border-bottom-left-radius"]],["rounded-l",["border-top-left-radius","border-bottom-left-radius"]],["rounded-ss",["border-start-start-radius"]],["rounded-se",["border-start-end-radius"]],["rounded-ee",["border-end-end-radius"]],["rounded-es",["border-end-start-radius"]],["rounded-tl",["border-top-left-radius"]],["rounded-tr",["border-top-right-radius"]],["rounded-br",["border-bottom-right-radius"]],["rounded-bl",["border-bottom-left-radius"]]])n(s,{themeKeys:["--radius"],handle:w=>g.map(C=>a(C,w)),staticValues:{none:g.map(w=>a(w,"0")),full:g.map(w=>a(w,"calc(infinity * 1px)"))}});e("border-solid",[["--tw-border-style","solid"],["border-style","solid"]]),e("border-dashed",[["--tw-border-style","dashed"],["border-style","dashed"]]),e("border-dotted",[["--tw-border-style","dotted"],["border-style","dotted"]]),e("border-double",[["--tw-border-style","double"],["border-style","double"]]),e("border-hidden",[["--tw-border-style","hidden"],["border-style","hidden"]]),e("border-none",[["--tw-border-style","none"],["border-style","none"]]);{let g=function(w,C){r.functional(w,x=>{if(!x.value){if(x.modifier)return;let S=t.get(["--default-border-width"])??"1px",K=C.width(S);return K?[s(),...K]:void 0}if(x.value.kind==="arbitrary"){let S=x.value.value;switch(x.value.dataType??H(S,["color","line-width","length"])){case"line-width":case"length":{if(x.modifier)return;let V=C.width(S);return V?[s(),...V]:void 0}default:return S=X(S,x.modifier,t),S===null?void 0:C.color(S)}}{let S=re(x,t,["--border-color","--color"]);if(S)return C.color(S)}{if(x.modifier)return;let S=t.resolve(x.value.value,["--border-width"]);if(S){let K=C.width(S);return K?[s(),...K]:void 0}if(I(x.value.value)){let K=C.width(`${x.value.value}px`);return K?[s(),...K]:void 0}}}),i(w,()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--border-color","--color"],modifiers:Array.from({length:21},(x,S)=>`${S*5}`),hasDefaultValue:!0},{values:["0","2","4","8"],valueThemeKeys:["--border-width"]}])};var P=g;let s=()=>B([$("--tw-border-style","solid")]);g("border",{width:w=>[a("border-style","var(--tw-border-style)"),a("border-width",w)],color:w=>[a("border-color",w)]}),g("border-x",{width:w=>[a("border-inline-style","var(--tw-border-style)"),a("border-inline-width",w)],color:w=>[a("border-inline-color",w)]}),g("border-y",{width:w=>[a("border-block-style","var(--tw-border-style)"),a("border-block-width",w)],color:w=>[a("border-block-color",w)]}),g("border-s",{width:w=>[a("border-inline-start-style","var(--tw-border-style)"),a("border-inline-start-width",w)],color:w=>[a("border-inline-start-color",w)]}),g("border-e",{width:w=>[a("border-inline-end-style","var(--tw-border-style)"),a("border-inline-end-width",w)],color:w=>[a("border-inline-end-color",w)]}),g("border-bs",{width:w=>[a("border-block-start-style","var(--tw-border-style)"),a("border-block-start-width",w)],color:w=>[a("border-block-start-color",w)]}),g("border-be",{width:w=>[a("border-block-end-style","var(--tw-border-style)"),a("border-block-end-width",w)],color:w=>[a("border-block-end-color",w)]}),g("border-t",{width:w=>[a("border-top-style","var(--tw-border-style)"),a("border-top-width",w)],color:w=>[a("border-top-color",w)]}),g("border-r",{width:w=>[a("border-right-style","var(--tw-border-style)"),a("border-right-width",w)],color:w=>[a("border-right-color",w)]}),g("border-b",{width:w=>[a("border-bottom-style","var(--tw-border-style)"),a("border-bottom-width",w)],color:w=>[a("border-bottom-color",w)]}),g("border-l",{width:w=>[a("border-left-style","var(--tw-border-style)"),a("border-left-width",w)],color:w=>[a("border-left-color",w)]}),n("divide-x",{defaultValue:t.get(["--default-border-width"])??"1px",themeKeys:["--divide-width","--border-width"],handleBareValue:({value:w})=>I(w)?`${w}px`:null,handle:w=>[B([$("--tw-divide-x-reverse","0")]),q(":where(& > :not(:last-child))",[a("--tw-sort","divide-x-width"),s(),a("--tw-divide-x-reverse","0"),a("border-inline-style","var(--tw-border-style)"),a("border-inline-start-width",`calc(${w} * var(--tw-divide-x-reverse))`),a("border-inline-end-width",`calc(${w} * calc(1 - var(--tw-divide-x-reverse)))`)])]}),n("divide-y",{defaultValue:t.get(["--default-border-width"])??"1px",themeKeys:["--divide-width","--border-width"],handleBareValue:({value:w})=>I(w)?`${w}px`:null,handle:w=>[B([$("--tw-divide-y-reverse","0")]),q(":where(& > :not(:last-child))",[a("--tw-sort","divide-y-width"),s(),a("--tw-divide-y-reverse","0"),a("border-bottom-style","var(--tw-border-style)"),a("border-top-style","var(--tw-border-style)"),a("border-top-width",`calc(${w} * var(--tw-divide-y-reverse))`),a("border-bottom-width",`calc(${w} * calc(1 - var(--tw-divide-y-reverse)))`)])]}),i("divide-x",()=>[{values:["0","2","4","8"],valueThemeKeys:["--divide-width","--border-width"],hasDefaultValue:!0}]),i("divide-y",()=>[{values:["0","2","4","8"],valueThemeKeys:["--divide-width","--border-width"],hasDefaultValue:!0}]),e("divide-x-reverse",[()=>B([$("--tw-divide-x-reverse","0")]),()=>q(":where(& > :not(:last-child))",[a("--tw-divide-x-reverse","1")])]),e("divide-y-reverse",[()=>B([$("--tw-divide-y-reverse","0")]),()=>q(":where(& > :not(:last-child))",[a("--tw-divide-y-reverse","1")])]);for(let w of["solid","dashed","dotted","double","none"])e(`divide-${w}`,[()=>q(":where(& > :not(:last-child))",[a("--tw-sort","divide-style"),a("--tw-border-style",w),a("border-style",w)])])}e("bg-auto",[["background-size","auto"]]),e("bg-cover",[["background-size","cover"]]),e("bg-contain",[["background-size","contain"]]),n("bg-size",{handle(s){if(s)return[a("background-size",s)]}}),e("bg-fixed",[["background-attachment","fixed"]]),e("bg-local",[["background-attachment","local"]]),e("bg-scroll",[["background-attachment","scroll"]]),e("bg-top",[["background-position","top"]]),e("bg-top-left",[["background-position","left top"]]),e("bg-top-right",[["background-position","right top"]]),e("bg-bottom",[["background-position","bottom"]]),e("bg-bottom-left",[["background-position","left bottom"]]),e("bg-bottom-right",[["background-position","right bottom"]]),e("bg-left",[["background-position","left"]]),e("bg-right",[["background-position","right"]]),e("bg-center",[["background-position","center"]]),n("bg-position",{handle(s){if(s)return[a("background-position",s)]}}),e("bg-repeat",[["background-repeat","repeat"]]),e("bg-no-repeat",[["background-repeat","no-repeat"]]),e("bg-repeat-x",[["background-repeat","repeat-x"]]),e("bg-repeat-y",[["background-repeat","repeat-y"]]),e("bg-repeat-round",[["background-repeat","round"]]),e("bg-repeat-space",[["background-repeat","space"]]),e("bg-none",[["background-image","none"]]);{let w=function(S){let K="in oklab";if(S?.kind==="named")switch(S.value){case"longer":case"shorter":case"increasing":case"decreasing":K=`in oklch ${S.value} hue`;break;default:K=`in ${S.value}`}else S?.kind==="arbitrary"&&(K=S.value);return K},C=function({negative:S}){return K=>{if(!K.value)return;if(K.value.kind==="arbitrary"){if(K.modifier)return;let M=K.value.value;switch(K.value.dataType??H(M,["angle"])){case"angle":return M=S?`calc(${M} * -1)`:`${M}`,[a("--tw-gradient-position",M),a("background-image",`linear-gradient(var(--tw-gradient-stops,${M}))`)];default:return S?void 0:[a("--tw-gradient-position",M),a("background-image",`linear-gradient(var(--tw-gradient-stops,${M}))`)]}}let V=K.value.value;if(!S&&g.has(V))V=g.get(V);else if(I(V))V=S?`calc(${V}deg * -1)`:`${V}deg`;else return;let O=w(K.modifier);return[a("--tw-gradient-position",`${V}`),J("@supports (background-image: linear-gradient(in lab, red, red))",[a("--tw-gradient-position",`${V} ${O}`)]),a("background-image","linear-gradient(var(--tw-gradient-stops))")]}},x=function({negative:S}){return K=>{if(K.value?.kind==="arbitrary"){if(K.modifier)return;let M=K.value.value;return[a("--tw-gradient-position",M),a("background-image",`conic-gradient(var(--tw-gradient-stops,${M}))`)]}let V=w(K.modifier);if(!K.value)return[a("--tw-gradient-position",V),a("background-image","conic-gradient(var(--tw-gradient-stops))")];let O=K.value.value;if(I(O))return O=S?`calc(${O}deg * -1)`:`${O}deg`,[a("--tw-gradient-position",`from ${O} ${V}`),a("background-image","conic-gradient(var(--tw-gradient-stops))")]}};var j=w,G=C,Z=x;let s=["oklab","oklch","srgb","hsl","longer","shorter","increasing","decreasing"],g=new Map([["to-t","to top"],["to-tr","to top right"],["to-r","to right"],["to-br","to bottom right"],["to-b","to bottom"],["to-bl","to bottom left"],["to-l","to left"],["to-tl","to top left"]]);r.functional("-bg-linear",C({negative:!0})),r.functional("bg-linear",C({negative:!1})),i("bg-linear",()=>[{values:[...g.keys()],modifiers:s},{values:["0","30","60","90","120","150","180","210","240","270","300","330"],supportsNegative:!0,modifiers:s}]),r.functional("-bg-conic",x({negative:!0})),r.functional("bg-conic",x({negative:!1})),i("bg-conic",()=>[{hasDefaultValue:!0,modifiers:s},{values:["0","30","60","90","120","150","180","210","240","270","300","330"],supportsNegative:!0,modifiers:s}]),r.functional("bg-radial",S=>{if(!S.value){let K=w(S.modifier);return[a("--tw-gradient-position",K),a("background-image","radial-gradient(var(--tw-gradient-stops))")]}if(S.value.kind==="arbitrary"){if(S.modifier)return;let K=S.value.value;return[a("--tw-gradient-position",K),a("background-image",`radial-gradient(var(--tw-gradient-stops,${K}))`)]}}),i("bg-radial",()=>[{hasDefaultValue:!0,modifiers:s}])}r.functional("bg",s=>{if(s.value){if(s.value.kind==="arbitrary"){let g=s.value.value;switch(s.value.dataType??H(g,["image","color","percentage","position","bg-size","length","url"])){case"percentage":case"position":return s.modifier?void 0:[a("background-position",g)];case"bg-size":case"length":case"size":return s.modifier?void 0:[a("background-size",g)];case"image":case"url":return s.modifier?void 0:[a("background-image",g)];default:return g=X(g,s.modifier,t),g===null?void 0:[a("background-color",g)]}}{let g=re(s,t,["--background-color","--color"]);if(g)return[a("background-color",g)]}{if(s.modifier)return;let g=t.resolve(s.value.value,["--background-image"]);if(g)return[a("background-image",g)]}}}),i("bg",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--background-color","--color"],modifiers:Array.from({length:21},(s,g)=>`${g*5}`)},{values:[],valueThemeKeys:["--background-image"]}]);let h=()=>B([$("--tw-gradient-position"),$("--tw-gradient-from","#0000",""),$("--tw-gradient-via","#0000",""),$("--tw-gradient-to","#0000",""),$("--tw-gradient-stops"),$("--tw-gradient-via-stops"),$("--tw-gradient-from-position","0%",""),$("--tw-gradient-via-position","50%",""),$("--tw-gradient-to-position","100%","")]);function y(s,g){r.functional(s,w=>{if(w.value){if(w.value.kind==="arbitrary"){let C=w.value.value;switch(w.value.dataType??H(C,["color","length","percentage"])){case"length":case"percentage":return w.modifier?void 0:g.position(C);default:return C=X(C,w.modifier,t),C===null?void 0:g.color(C)}}{let C=re(w,t,["--background-color","--color"]);if(C)return g.color(C)}{if(w.modifier)return;let C=t.resolve(w.value.value,["--gradient-color-stop-positions"]);if(C)return g.position(C);if(w.value.value[w.value.value.length-1]==="%"&&I(w.value.value.slice(0,-1)))return g.position(w.value.value)}}}),i(s,()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--background-color","--color"],modifiers:Array.from({length:21},(w,C)=>`${C*5}`)},{values:Array.from({length:21},(w,C)=>`${C*5}%`),valueThemeKeys:["--gradient-color-stop-positions"]}])}y("from",{color:s=>[h(),a("--tw-sort","--tw-gradient-from"),a("--tw-gradient-from",s),a("--tw-gradient-stops","var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))")],position:s=>[h(),a("--tw-gradient-from-position",s)]}),e("via-none",[["--tw-gradient-via-stops","initial"]]),y("via",{color:s=>[h(),a("--tw-sort","--tw-gradient-via"),a("--tw-gradient-via",s),a("--tw-gradient-via-stops","var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position)"),a("--tw-gradient-stops","var(--tw-gradient-via-stops)")],position:s=>[h(),a("--tw-gradient-via-position",s)]}),y("to",{color:s=>[h(),a("--tw-sort","--tw-gradient-to"),a("--tw-gradient-to",s),a("--tw-gradient-stops","var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))")],position:s=>[h(),a("--tw-gradient-to-position",s)]}),e("mask-none",[["mask-image","none"]]),r.functional("mask",s=>{if(!s.value||s.modifier||s.value.kind!=="arbitrary")return;let g=s.value.value;switch(s.value.dataType??H(g,["image","percentage","position","bg-size","length","url"])){case"percentage":case"position":return s.modifier?void 0:[a("mask-position",g)];case"bg-size":case"length":case"size":return[a("mask-size",g)];case"image":case"url":default:return[a("mask-image",g)]}}),e("mask-add",[["mask-composite","add"]]),e("mask-subtract",[["mask-composite","subtract"]]),e("mask-intersect",[["mask-composite","intersect"]]),e("mask-exclude",[["mask-composite","exclude"]]),e("mask-alpha",[["mask-mode","alpha"]]),e("mask-luminance",[["mask-mode","luminance"]]),e("mask-match",[["mask-mode","match-source"]]),e("mask-type-alpha",[["mask-type","alpha"]]),e("mask-type-luminance",[["mask-type","luminance"]]),e("mask-auto",[["mask-size","auto"]]),e("mask-cover",[["mask-size","cover"]]),e("mask-contain",[["mask-size","contain"]]),n("mask-size",{handle(s){if(s)return[a("mask-size",s)]}}),e("mask-top",[["mask-position","top"]]),e("mask-top-left",[["mask-position","left top"]]),e("mask-top-right",[["mask-position","right top"]]),e("mask-bottom",[["mask-position","bottom"]]),e("mask-bottom-left",[["mask-position","left bottom"]]),e("mask-bottom-right",[["mask-position","right bottom"]]),e("mask-left",[["mask-position","left"]]),e("mask-right",[["mask-position","right"]]),e("mask-center",[["mask-position","center"]]),n("mask-position",{handle(s){if(s)return[a("mask-position",s)]}}),e("mask-repeat",[["mask-repeat","repeat"]]),e("mask-no-repeat",[["mask-repeat","no-repeat"]]),e("mask-repeat-x",[["mask-repeat","repeat-x"]]),e("mask-repeat-y",[["mask-repeat","repeat-y"]]),e("mask-repeat-round",[["mask-repeat","round"]]),e("mask-repeat-space",[["mask-repeat","space"]]),e("mask-clip-border",[["mask-clip","border-box"]]),e("mask-clip-padding",[["mask-clip","padding-box"]]),e("mask-clip-content",[["mask-clip","content-box"]]),e("mask-clip-fill",[["mask-clip","fill-box"]]),e("mask-clip-stroke",[["mask-clip","stroke-box"]]),e("mask-clip-view",[["mask-clip","view-box"]]),e("mask-no-clip",[["mask-clip","no-clip"]]),e("mask-origin-border",[["mask-origin","border-box"]]),e("mask-origin-padding",[["mask-origin","padding-box"]]),e("mask-origin-content",[["mask-origin","content-box"]]),e("mask-origin-fill",[["mask-origin","fill-box"]]),e("mask-origin-stroke",[["mask-origin","stroke-box"]]),e("mask-origin-view",[["mask-origin","view-box"]]);let b=()=>B([$("--tw-mask-linear","linear-gradient(#fff, #fff)"),$("--tw-mask-radial","linear-gradient(#fff, #fff)"),$("--tw-mask-conic","linear-gradient(#fff, #fff)")]);function T(s,g){r.functional(s,w=>{if(w.value){if(w.value.kind==="arbitrary"){let C=w.value.value;switch(w.value.dataType??H(C,["length","percentage","color"])){case"color":return C=X(C,w.modifier,t),C===null?void 0:g.color(C);case"percentage":return w.modifier||!I(C.slice(0,-1))?void 0:g.position(C);default:return w.modifier?void 0:g.position(C)}}{let C=re(w,t,["--background-color","--color"]);if(C)return g.color(C)}{if(w.modifier)return;let C=H(w.value.value,["number","percentage"]);if(!C)return;switch(C){case"number":{let x=t.resolve(null,["--spacing"]);return!x||!ee(w.value.value)?void 0:g.position(`calc(${x} * ${w.value.value})`)}case"percentage":return I(w.value.value.slice(0,-1))?g.position(w.value.value):void 0;default:return}}}}),i(s,()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--background-color","--color"],modifiers:Array.from({length:21},(w,C)=>`${C*5}`)},{values:Array.from({length:21},(w,C)=>`${C*5}%`),valueThemeKeys:["--gradient-color-stop-positions"]}]),i(s,()=>[{values:Array.from({length:21},(w,C)=>`${C*5}%`)},{values:t.get(["--spacing"])?vt:[]},{values:["current","inherit","transparent"],valueThemeKeys:["--background-color","--color"],modifiers:Array.from({length:21},(w,C)=>`${C*5}`)}])}let A=()=>B([$("--tw-mask-left","linear-gradient(#fff, #fff)"),$("--tw-mask-right","linear-gradient(#fff, #fff)"),$("--tw-mask-bottom","linear-gradient(#fff, #fff)"),$("--tw-mask-top","linear-gradient(#fff, #fff)")]);function k(s,g,w){T(s,{color(C){let x=[b(),A(),a("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),a("mask-composite","intersect"),a("--tw-mask-linear","var(--tw-mask-left), var(--tw-mask-right), var(--tw-mask-bottom), var(--tw-mask-top)")];for(let S of["top","right","bottom","left"])w[S]&&(x.push(a(`--tw-mask-${S}`,`linear-gradient(to ${S}, var(--tw-mask-${S}-from-color) var(--tw-mask-${S}-from-position), var(--tw-mask-${S}-to-color) var(--tw-mask-${S}-to-position))`)),x.push(B([$(`--tw-mask-${S}-from-position`,"0%"),$(`--tw-mask-${S}-to-position`,"100%"),$(`--tw-mask-${S}-from-color`,"black"),$(`--tw-mask-${S}-to-color`,"transparent")])),x.push(a(`--tw-mask-${S}-${g}-color`,C)));return x},position(C){let x=[b(),A(),a("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),a("mask-composite","intersect"),a("--tw-mask-linear","var(--tw-mask-left), var(--tw-mask-right), var(--tw-mask-bottom), var(--tw-mask-top)")];for(let S of["top","right","bottom","left"])w[S]&&(x.push(a(`--tw-mask-${S}`,`linear-gradient(to ${S}, var(--tw-mask-${S}-from-color) var(--tw-mask-${S}-from-position), var(--tw-mask-${S}-to-color) var(--tw-mask-${S}-to-position))`)),x.push(B([$(`--tw-mask-${S}-from-position`,"0%"),$(`--tw-mask-${S}-to-position`,"100%"),$(`--tw-mask-${S}-from-color`,"black"),$(`--tw-mask-${S}-to-color`,"transparent")])),x.push(a(`--tw-mask-${S}-${g}-position`,C)));return x}})}k("mask-x-from","from",{top:!1,right:!0,bottom:!1,left:!0}),k("mask-x-to","to",{top:!1,right:!0,bottom:!1,left:!0}),k("mask-y-from","from",{top:!0,right:!1,bottom:!0,left:!1}),k("mask-y-to","to",{top:!0,right:!1,bottom:!0,left:!1}),k("mask-t-from","from",{top:!0,right:!1,bottom:!1,left:!1}),k("mask-t-to","to",{top:!0,right:!1,bottom:!1,left:!1}),k("mask-r-from","from",{top:!1,right:!0,bottom:!1,left:!1}),k("mask-r-to","to",{top:!1,right:!0,bottom:!1,left:!1}),k("mask-b-from","from",{top:!1,right:!1,bottom:!0,left:!1}),k("mask-b-to","to",{top:!1,right:!1,bottom:!0,left:!1}),k("mask-l-from","from",{top:!1,right:!1,bottom:!1,left:!0}),k("mask-l-to","to",{top:!1,right:!1,bottom:!1,left:!0});let D=()=>B([$("--tw-mask-linear-position","0deg"),$("--tw-mask-linear-from-position","0%"),$("--tw-mask-linear-to-position","100%"),$("--tw-mask-linear-from-color","black"),$("--tw-mask-linear-to-color","transparent")]);n("mask-linear",{defaultValue:null,supportsNegative:!0,supportsFractions:!1,handleBareValue(s){return I(s.value)?`calc(1deg * ${s.value})`:null},handleNegativeBareValue(s){return I(s.value)?`calc(1deg * -${s.value})`:null},handle:s=>[b(),D(),a("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),a("mask-composite","intersect"),a("--tw-mask-linear","linear-gradient(var(--tw-mask-linear-stops, var(--tw-mask-linear-position)))"),a("--tw-mask-linear-position",s)]}),i("mask-linear",()=>[{supportsNegative:!0,values:["0","1","2","3","6","12","45","90","180"]}]),T("mask-linear-from",{color:s=>[b(),D(),a("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),a("mask-composite","intersect"),a("--tw-mask-linear-stops","var(--tw-mask-linear-position), var(--tw-mask-linear-from-color) var(--tw-mask-linear-from-position), var(--tw-mask-linear-to-color) var(--tw-mask-linear-to-position)"),a("--tw-mask-linear","linear-gradient(var(--tw-mask-linear-stops))"),a("--tw-mask-linear-from-color",s)],position:s=>[b(),D(),a("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),a("mask-composite","intersect"),a("--tw-mask-linear-stops","var(--tw-mask-linear-position), var(--tw-mask-linear-from-color) var(--tw-mask-linear-from-position), var(--tw-mask-linear-to-color) var(--tw-mask-linear-to-position)"),a("--tw-mask-linear","linear-gradient(var(--tw-mask-linear-stops))"),a("--tw-mask-linear-from-position",s)]}),T("mask-linear-to",{color:s=>[b(),D(),a("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),a("mask-composite","intersect"),a("--tw-mask-linear-stops","var(--tw-mask-linear-position), var(--tw-mask-linear-from-color) var(--tw-mask-linear-from-position), var(--tw-mask-linear-to-color) var(--tw-mask-linear-to-position)"),a("--tw-mask-linear","linear-gradient(var(--tw-mask-linear-stops))"),a("--tw-mask-linear-to-color",s)],position:s=>[b(),D(),a("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),a("mask-composite","intersect"),a("--tw-mask-linear-stops","var(--tw-mask-linear-position), var(--tw-mask-linear-from-color) var(--tw-mask-linear-from-position), var(--tw-mask-linear-to-color) var(--tw-mask-linear-to-position)"),a("--tw-mask-linear","linear-gradient(var(--tw-mask-linear-stops))"),a("--tw-mask-linear-to-position",s)]});let N=()=>B([$("--tw-mask-radial-from-position","0%"),$("--tw-mask-radial-to-position","100%"),$("--tw-mask-radial-from-color","black"),$("--tw-mask-radial-to-color","transparent"),$("--tw-mask-radial-shape","ellipse"),$("--tw-mask-radial-size","farthest-corner"),$("--tw-mask-radial-position","center")]);e("mask-circle",[["--tw-mask-radial-shape","circle"]]),e("mask-ellipse",[["--tw-mask-radial-shape","ellipse"]]),e("mask-radial-closest-side",[["--tw-mask-radial-size","closest-side"]]),e("mask-radial-farthest-side",[["--tw-mask-radial-size","farthest-side"]]),e("mask-radial-closest-corner",[["--tw-mask-radial-size","closest-corner"]]),e("mask-radial-farthest-corner",[["--tw-mask-radial-size","farthest-corner"]]),e("mask-radial-at-top",[["--tw-mask-radial-position","top"]]),e("mask-radial-at-top-left",[["--tw-mask-radial-position","top left"]]),e("mask-radial-at-top-right",[["--tw-mask-radial-position","top right"]]),e("mask-radial-at-bottom",[["--tw-mask-radial-position","bottom"]]),e("mask-radial-at-bottom-left",[["--tw-mask-radial-position","bottom left"]]),e("mask-radial-at-bottom-right",[["--tw-mask-radial-position","bottom right"]]),e("mask-radial-at-left",[["--tw-mask-radial-position","left"]]),e("mask-radial-at-right",[["--tw-mask-radial-position","right"]]),e("mask-radial-at-center",[["--tw-mask-radial-position","center"]]),n("mask-radial-at",{defaultValue:null,supportsNegative:!1,supportsFractions:!1,handle:s=>[a("--tw-mask-radial-position",s)]}),n("mask-radial",{defaultValue:null,supportsNegative:!1,supportsFractions:!1,handle:s=>[b(),N(),a("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),a("mask-composite","intersect"),a("--tw-mask-radial","radial-gradient(var(--tw-mask-radial-stops, var(--tw-mask-radial-size)))"),a("--tw-mask-radial-size",s)]}),T("mask-radial-from",{color:s=>[b(),N(),a("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),a("mask-composite","intersect"),a("--tw-mask-radial-stops","var(--tw-mask-radial-shape) var(--tw-mask-radial-size) at var(--tw-mask-radial-position), var(--tw-mask-radial-from-color) var(--tw-mask-radial-from-position), var(--tw-mask-radial-to-color) var(--tw-mask-radial-to-position)"),a("--tw-mask-radial","radial-gradient(var(--tw-mask-radial-stops))"),a("--tw-mask-radial-from-color",s)],position:s=>[b(),N(),a("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),a("mask-composite","intersect"),a("--tw-mask-radial-stops","var(--tw-mask-radial-shape) var(--tw-mask-radial-size) at var(--tw-mask-radial-position), var(--tw-mask-radial-from-color) var(--tw-mask-radial-from-position), var(--tw-mask-radial-to-color) var(--tw-mask-radial-to-position)"),a("--tw-mask-radial","radial-gradient(var(--tw-mask-radial-stops))"),a("--tw-mask-radial-from-position",s)]}),T("mask-radial-to",{color:s=>[b(),N(),a("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),a("mask-composite","intersect"),a("--tw-mask-radial-stops","var(--tw-mask-radial-shape) var(--tw-mask-radial-size) at var(--tw-mask-radial-position), var(--tw-mask-radial-from-color) var(--tw-mask-radial-from-position), var(--tw-mask-radial-to-color) var(--tw-mask-radial-to-position)"),a("--tw-mask-radial","radial-gradient(var(--tw-mask-radial-stops))"),a("--tw-mask-radial-to-color",s)],position:s=>[b(),N(),a("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),a("mask-composite","intersect"),a("--tw-mask-radial-stops","var(--tw-mask-radial-shape) var(--tw-mask-radial-size) at var(--tw-mask-radial-position), var(--tw-mask-radial-from-color) var(--tw-mask-radial-from-position), var(--tw-mask-radial-to-color) var(--tw-mask-radial-to-position)"),a("--tw-mask-radial","radial-gradient(var(--tw-mask-radial-stops))"),a("--tw-mask-radial-to-position",s)]});let E=()=>B([$("--tw-mask-conic-position","0deg"),$("--tw-mask-conic-from-position","0%"),$("--tw-mask-conic-to-position","100%"),$("--tw-mask-conic-from-color","black"),$("--tw-mask-conic-to-color","transparent")]);n("mask-conic",{defaultValue:null,supportsNegative:!0,supportsFractions:!1,handleBareValue(s){return I(s.value)?`calc(1deg * ${s.value})`:null},handleNegativeBareValue(s){return I(s.value)?`calc(1deg * -${s.value})`:null},handle:s=>[b(),E(),a("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),a("mask-composite","intersect"),a("--tw-mask-conic","conic-gradient(var(--tw-mask-conic-stops, var(--tw-mask-conic-position)))"),a("--tw-mask-conic-position",s)]}),i("mask-conic",()=>[{supportsNegative:!0,values:["0","1","2","3","6","12","45","90","180"]}]),T("mask-conic-from",{color:s=>[b(),E(),a("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),a("mask-composite","intersect"),a("--tw-mask-conic-stops","from var(--tw-mask-conic-position), var(--tw-mask-conic-from-color) var(--tw-mask-conic-from-position), var(--tw-mask-conic-to-color) var(--tw-mask-conic-to-position)"),a("--tw-mask-conic","conic-gradient(var(--tw-mask-conic-stops))"),a("--tw-mask-conic-from-color",s)],position:s=>[b(),E(),a("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),a("mask-composite","intersect"),a("--tw-mask-conic-stops","from var(--tw-mask-conic-position), var(--tw-mask-conic-from-color) var(--tw-mask-conic-from-position), var(--tw-mask-conic-to-color) var(--tw-mask-conic-to-position)"),a("--tw-mask-conic","conic-gradient(var(--tw-mask-conic-stops))"),a("--tw-mask-conic-from-position",s)]}),T("mask-conic-to",{color:s=>[b(),E(),a("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),a("mask-composite","intersect"),a("--tw-mask-conic-stops","from var(--tw-mask-conic-position), var(--tw-mask-conic-from-color) var(--tw-mask-conic-from-position), var(--tw-mask-conic-to-color) var(--tw-mask-conic-to-position)"),a("--tw-mask-conic","conic-gradient(var(--tw-mask-conic-stops))"),a("--tw-mask-conic-to-color",s)],position:s=>[b(),E(),a("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),a("mask-composite","intersect"),a("--tw-mask-conic-stops","from var(--tw-mask-conic-position), var(--tw-mask-conic-from-color) var(--tw-mask-conic-from-position), var(--tw-mask-conic-to-color) var(--tw-mask-conic-to-position)"),a("--tw-mask-conic","conic-gradient(var(--tw-mask-conic-stops))"),a("--tw-mask-conic-to-position",s)]}),e("box-decoration-slice",[["-webkit-box-decoration-break","slice"],["box-decoration-break","slice"]]),e("box-decoration-clone",[["-webkit-box-decoration-break","clone"],["box-decoration-break","clone"]]),e("bg-clip-text",[["background-clip","text"]]),e("bg-clip-border",[["background-clip","border-box"]]),e("bg-clip-padding",[["background-clip","padding-box"]]),e("bg-clip-content",[["background-clip","content-box"]]),e("bg-origin-border",[["background-origin","border-box"]]),e("bg-origin-padding",[["background-origin","padding-box"]]),e("bg-origin-content",[["background-origin","content-box"]]);for(let s of["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"])e(`bg-blend-${s}`,[["background-blend-mode",s]]),e(`mix-blend-${s}`,[["mix-blend-mode",s]]);e("mix-blend-plus-darker",[["mix-blend-mode","plus-darker"]]),e("mix-blend-plus-lighter",[["mix-blend-mode","plus-lighter"]]),e("fill-none",[["fill","none"]]),r.functional("fill",s=>{if(!s.value)return;if(s.value.kind==="arbitrary"){let w=X(s.value.value,s.modifier,t);return w===null?void 0:[a("fill",w)]}let g=re(s,t,["--fill","--color"]);if(g)return[a("fill",g)]}),i("fill",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--fill","--color"],modifiers:Array.from({length:21},(s,g)=>`${g*5}`)}]),e("stroke-none",[["stroke","none"]]),r.functional("stroke",s=>{if(s.value){if(s.value.kind==="arbitrary"){let g=s.value.value;switch(s.value.dataType??H(g,["color","number","length","percentage"])){case"number":case"length":case"percentage":return s.modifier?void 0:[a("stroke-width",g)];default:return g=X(s.value.value,s.modifier,t),g===null?void 0:[a("stroke",g)]}}{let g=re(s,t,["--stroke","--color"]);if(g)return[a("stroke",g)]}{let g=t.resolve(s.value.value,["--stroke-width"]);if(g)return[a("stroke-width",g)];if(I(s.value.value))return[a("stroke-width",s.value.value)]}}}),i("stroke",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--stroke","--color"],modifiers:Array.from({length:21},(s,g)=>`${g*5}`)},{values:["0","1","2","3"],valueThemeKeys:["--stroke-width"]}]),e("object-contain",[["object-fit","contain"]]),e("object-cover",[["object-fit","cover"]]),e("object-fill",[["object-fit","fill"]]),e("object-none",[["object-fit","none"]]),e("object-scale-down",[["object-fit","scale-down"]]),n("object",{themeKeys:["--object-position"],handle:s=>[a("object-position",s)],staticValues:{top:[a("object-position","top")],"top-left":[a("object-position","left top")],"top-right":[a("object-position","right top")],bottom:[a("object-position","bottom")],"bottom-left":[a("object-position","left bottom")],"bottom-right":[a("object-position","right bottom")],left:[a("object-position","left")],right:[a("object-position","right")],center:[a("object-position","center")]}});for(let[s,g]of[["p","padding"],["px","padding-inline"],["py","padding-block"],["ps","padding-inline-start"],["pe","padding-inline-end"],["pbs","padding-block-start"],["pbe","padding-block-end"],["pt","padding-top"],["pr","padding-right"],["pb","padding-bottom"],["pl","padding-left"]])l(s,["--padding","--spacing"],w=>[a(g,w)]);e("text-left",[["text-align","left"]]),e("text-center",[["text-align","center"]]),e("text-right",[["text-align","right"]]),e("text-justify",[["text-align","justify"]]),e("text-start",[["text-align","start"]]),e("text-end",[["text-align","end"]]),l("indent",["--text-indent","--spacing"],s=>[a("text-indent",s)],{supportsNegative:!0}),e("align-baseline",[["vertical-align","baseline"]]),e("align-top",[["vertical-align","top"]]),e("align-middle",[["vertical-align","middle"]]),e("align-bottom",[["vertical-align","bottom"]]),e("align-text-top",[["vertical-align","text-top"]]),e("align-text-bottom",[["vertical-align","text-bottom"]]),e("align-sub",[["vertical-align","sub"]]),e("align-super",[["vertical-align","super"]]),n("align",{themeKeys:[],handle:s=>[a("vertical-align",s)]}),r.functional("font",s=>{if(!(!s.value||s.modifier)){if(s.value.kind==="arbitrary"){let g=s.value.value;switch(s.value.dataType??H(g,["number","generic-name","family-name"])){case"generic-name":case"family-name":return[a("font-family",g)];default:return[B([$("--tw-font-weight")]),a("--tw-font-weight",g),a("font-weight",g)]}}{let g=t.resolveWith(s.value.value,["--font"],["--font-feature-settings","--font-variation-settings"]);if(g){let[w,C={}]=g;return[a("font-family",w),a("font-feature-settings",C["--font-feature-settings"]),a("font-variation-settings",C["--font-variation-settings"])]}}{let g=t.resolve(s.value.value,["--font-weight"]);if(g)return[B([$("--tw-font-weight")]),a("--tw-font-weight",g),a("font-weight",g)]}}}),i("font",()=>[{values:[],valueThemeKeys:["--font"]},{values:[],valueThemeKeys:["--font-weight"]}]),n("font-features",{themeKeys:[],handle:s=>[a("font-feature-settings",s)]}),e("uppercase",[["text-transform","uppercase"]]),e("lowercase",[["text-transform","lowercase"]]),e("capitalize",[["text-transform","capitalize"]]),e("normal-case",[["text-transform","none"]]),e("italic",[["font-style","italic"]]),e("not-italic",[["font-style","normal"]]),e("underline",[["text-decoration-line","underline"]]),e("overline",[["text-decoration-line","overline"]]),e("line-through",[["text-decoration-line","line-through"]]),e("no-underline",[["text-decoration-line","none"]]),e("font-stretch-normal",[["font-stretch","normal"]]),e("font-stretch-ultra-condensed",[["font-stretch","ultra-condensed"]]),e("font-stretch-extra-condensed",[["font-stretch","extra-condensed"]]),e("font-stretch-condensed",[["font-stretch","condensed"]]),e("font-stretch-semi-condensed",[["font-stretch","semi-condensed"]]),e("font-stretch-semi-expanded",[["font-stretch","semi-expanded"]]),e("font-stretch-expanded",[["font-stretch","expanded"]]),e("font-stretch-extra-expanded",[["font-stretch","extra-expanded"]]),e("font-stretch-ultra-expanded",[["font-stretch","ultra-expanded"]]),n("font-stretch",{handleBareValue:({value:s})=>{if(!s.endsWith("%"))return null;let g=Number(s.slice(0,-1));return!I(g)||Number.isNaN(g)||g<50||g>200?null:s},handle:s=>[a("font-stretch",s)]}),i("font-stretch",()=>[{values:["50%","75%","90%","95%","100%","105%","110%","125%","150%","200%"]}]),o("placeholder",{themeKeys:["--placeholder-color","--color"],handle:s=>[q("&::placeholder",[a("--tw-sort","placeholder-color"),a("color",s)])]}),e("decoration-solid",[["text-decoration-style","solid"]]),e("decoration-double",[["text-decoration-style","double"]]),e("decoration-dotted",[["text-decoration-style","dotted"]]),e("decoration-dashed",[["text-decoration-style","dashed"]]),e("decoration-wavy",[["text-decoration-style","wavy"]]),e("decoration-auto",[["text-decoration-thickness","auto"]]),e("decoration-from-font",[["text-decoration-thickness","from-font"]]),r.functional("decoration",s=>{if(s.value){if(s.value.kind==="arbitrary"){let g=s.value.value;switch(s.value.dataType??H(g,["color","length","percentage"])){case"length":case"percentage":return s.modifier?void 0:[a("text-decoration-thickness",g)];default:return g=X(g,s.modifier,t),g===null?void 0:[a("text-decoration-color",g)]}}{let g=t.resolve(s.value.value,["--text-decoration-thickness"]);if(g)return s.modifier?void 0:[a("text-decoration-thickness",g)];if(I(s.value.value))return s.modifier?void 0:[a("text-decoration-thickness",`${s.value.value}px`)]}{let g=re(s,t,["--text-decoration-color","--color"]);if(g)return[a("text-decoration-color",g)]}}}),i("decoration",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--text-decoration-color","--color"],modifiers:Array.from({length:21},(s,g)=>`${g*5}`)},{values:["0","1","2"],valueThemeKeys:["--text-decoration-thickness"]}]),n("animate",{themeKeys:["--animate"],handle:s=>[a("animation",s)],staticValues:{none:[a("animation","none")]}});{let s=["var(--tw-blur,)","var(--tw-brightness,)","var(--tw-contrast,)","var(--tw-grayscale,)","var(--tw-hue-rotate,)","var(--tw-invert,)","var(--tw-saturate,)","var(--tw-sepia,)","var(--tw-drop-shadow,)"].join(" "),g=["var(--tw-backdrop-blur,)","var(--tw-backdrop-brightness,)","var(--tw-backdrop-contrast,)","var(--tw-backdrop-grayscale,)","var(--tw-backdrop-hue-rotate,)","var(--tw-backdrop-invert,)","var(--tw-backdrop-opacity,)","var(--tw-backdrop-saturate,)","var(--tw-backdrop-sepia,)"].join(" "),w=()=>B([$("--tw-blur"),$("--tw-brightness"),$("--tw-contrast"),$("--tw-grayscale"),$("--tw-hue-rotate"),$("--tw-invert"),$("--tw-opacity"),$("--tw-saturate"),$("--tw-sepia"),$("--tw-drop-shadow"),$("--tw-drop-shadow-color"),$("--tw-drop-shadow-alpha","100%",""),$("--tw-drop-shadow-size")]),C=()=>B([$("--tw-backdrop-blur"),$("--tw-backdrop-brightness"),$("--tw-backdrop-contrast"),$("--tw-backdrop-grayscale"),$("--tw-backdrop-hue-rotate"),$("--tw-backdrop-invert"),$("--tw-backdrop-opacity"),$("--tw-backdrop-saturate"),$("--tw-backdrop-sepia")]);r.functional("filter",x=>{if(!x.modifier){if(x.value===null)return[w(),a("filter",s)];if(x.value.kind==="arbitrary")return[a("filter",x.value.value)];switch(x.value.value){case"none":return[a("filter","none")]}}}),r.functional("backdrop-filter",x=>{if(!x.modifier){if(x.value===null)return[C(),a("-webkit-backdrop-filter",g),a("backdrop-filter",g)];if(x.value.kind==="arbitrary")return[a("-webkit-backdrop-filter",x.value.value),a("backdrop-filter",x.value.value)];switch(x.value.value){case"none":return[a("-webkit-backdrop-filter","none"),a("backdrop-filter","none")]}}}),n("blur",{themeKeys:["--blur"],handle:x=>[w(),a("--tw-blur",`blur(${x})`),a("filter",s)],staticValues:{none:[w(),a("--tw-blur"," "),a("filter",s)]}}),n("backdrop-blur",{themeKeys:["--backdrop-blur","--blur"],handle:x=>[C(),a("--tw-backdrop-blur",`blur(${x})`),a("-webkit-backdrop-filter",g),a("backdrop-filter",g)],staticValues:{none:[C(),a("--tw-backdrop-blur"," "),a("-webkit-backdrop-filter",g),a("backdrop-filter",g)]}}),n("brightness",{themeKeys:["--brightness"],handleBareValue:({value:x})=>I(x)?`${x}%`:null,handle:x=>[w(),a("--tw-brightness",`brightness(${x})`),a("filter",s)]}),n("backdrop-brightness",{themeKeys:["--backdrop-brightness","--brightness"],handleBareValue:({value:x})=>I(x)?`${x}%`:null,handle:x=>[C(),a("--tw-backdrop-brightness",`brightness(${x})`),a("-webkit-backdrop-filter",g),a("backdrop-filter",g)]}),i("brightness",()=>[{values:["0","50","75","90","95","100","105","110","125","150","200"],valueThemeKeys:["--brightness"]}]),i("backdrop-brightness",()=>[{values:["0","50","75","90","95","100","105","110","125","150","200"],valueThemeKeys:["--backdrop-brightness","--brightness"]}]),n("contrast",{themeKeys:["--contrast"],handleBareValue:({value:x})=>I(x)?`${x}%`:null,handle:x=>[w(),a("--tw-contrast",`contrast(${x})`),a("filter",s)]}),n("backdrop-contrast",{themeKeys:["--backdrop-contrast","--contrast"],handleBareValue:({value:x})=>I(x)?`${x}%`:null,handle:x=>[C(),a("--tw-backdrop-contrast",`contrast(${x})`),a("-webkit-backdrop-filter",g),a("backdrop-filter",g)]}),i("contrast",()=>[{values:["0","50","75","100","125","150","200"],valueThemeKeys:["--contrast"]}]),i("backdrop-contrast",()=>[{values:["0","50","75","100","125","150","200"],valueThemeKeys:["--backdrop-contrast","--contrast"]}]),n("grayscale",{themeKeys:["--grayscale"],handleBareValue:({value:x})=>I(x)?`${x}%`:null,defaultValue:"100%",handle:x=>[w(),a("--tw-grayscale",`grayscale(${x})`),a("filter",s)]}),n("backdrop-grayscale",{themeKeys:["--backdrop-grayscale","--grayscale"],handleBareValue:({value:x})=>I(x)?`${x}%`:null,defaultValue:"100%",handle:x=>[C(),a("--tw-backdrop-grayscale",`grayscale(${x})`),a("-webkit-backdrop-filter",g),a("backdrop-filter",g)]}),i("grayscale",()=>[{values:["0","25","50","75","100"],valueThemeKeys:["--grayscale"],hasDefaultValue:!0}]),i("backdrop-grayscale",()=>[{values:["0","25","50","75","100"],valueThemeKeys:["--backdrop-grayscale","--grayscale"],hasDefaultValue:!0}]),n("hue-rotate",{supportsNegative:!0,themeKeys:["--hue-rotate"],handleBareValue:({value:x})=>I(x)?`${x}deg`:null,handle:x=>[w(),a("--tw-hue-rotate",`hue-rotate(${x})`),a("filter",s)]}),n("backdrop-hue-rotate",{supportsNegative:!0,themeKeys:["--backdrop-hue-rotate","--hue-rotate"],handleBareValue:({value:x})=>I(x)?`${x}deg`:null,handle:x=>[C(),a("--tw-backdrop-hue-rotate",`hue-rotate(${x})`),a("-webkit-backdrop-filter",g),a("backdrop-filter",g)]}),i("hue-rotate",()=>[{values:["0","15","30","60","90","180"],valueThemeKeys:["--hue-rotate"]}]),i("backdrop-hue-rotate",()=>[{values:["0","15","30","60","90","180"],valueThemeKeys:["--backdrop-hue-rotate","--hue-rotate"]}]),n("invert",{themeKeys:["--invert"],handleBareValue:({value:x})=>I(x)?`${x}%`:null,defaultValue:"100%",handle:x=>[w(),a("--tw-invert",`invert(${x})`),a("filter",s)]}),n("backdrop-invert",{themeKeys:["--backdrop-invert","--invert"],handleBareValue:({value:x})=>I(x)?`${x}%`:null,defaultValue:"100%",handle:x=>[C(),a("--tw-backdrop-invert",`invert(${x})`),a("-webkit-backdrop-filter",g),a("backdrop-filter",g)]}),i("invert",()=>[{values:["0","25","50","75","100"],valueThemeKeys:["--invert"],hasDefaultValue:!0}]),i("backdrop-invert",()=>[{values:["0","25","50","75","100"],valueThemeKeys:["--backdrop-invert","--invert"],hasDefaultValue:!0}]),n("saturate",{themeKeys:["--saturate"],handleBareValue:({value:x})=>I(x)?`${x}%`:null,handle:x=>[w(),a("--tw-saturate",`saturate(${x})`),a("filter",s)]}),n("backdrop-saturate",{themeKeys:["--backdrop-saturate","--saturate"],handleBareValue:({value:x})=>I(x)?`${x}%`:null,handle:x=>[C(),a("--tw-backdrop-saturate",`saturate(${x})`),a("-webkit-backdrop-filter",g),a("backdrop-filter",g)]}),i("saturate",()=>[{values:["0","50","100","150","200"],valueThemeKeys:["--saturate"]}]),i("backdrop-saturate",()=>[{values:["0","50","100","150","200"],valueThemeKeys:["--backdrop-saturate","--saturate"]}]),n("sepia",{themeKeys:["--sepia"],handleBareValue:({value:x})=>I(x)?`${x}%`:null,defaultValue:"100%",handle:x=>[w(),a("--tw-sepia",`sepia(${x})`),a("filter",s)]}),n("backdrop-sepia",{themeKeys:["--backdrop-sepia","--sepia"],handleBareValue:({value:x})=>I(x)?`${x}%`:null,defaultValue:"100%",handle:x=>[C(),a("--tw-backdrop-sepia",`sepia(${x})`),a("-webkit-backdrop-filter",g),a("backdrop-filter",g)]}),i("sepia",()=>[{values:["0","50","100"],valueThemeKeys:["--sepia"],hasDefaultValue:!0}]),i("backdrop-sepia",()=>[{values:["0","50","100"],valueThemeKeys:["--backdrop-sepia","--sepia"],hasDefaultValue:!0}]),e("drop-shadow-none",[w,["--tw-drop-shadow"," "],["filter",s]]),r.functional("drop-shadow",x=>{let S;if(x.modifier&&(x.modifier.kind==="arbitrary"?S=x.modifier.value:I(x.modifier.value)&&(S=`${x.modifier.value}%`)),!x.value){let K=t.get(["--drop-shadow"]),V=t.resolve(null,["--drop-shadow"]);return K===null||V===null?void 0:[w(),a("--tw-drop-shadow-alpha",S),...mt("--tw-drop-shadow-size",K,S,O=>`var(--tw-drop-shadow-color, ${O})`),a("--tw-drop-shadow",L(V,",").map(O=>`drop-shadow(${O})`).join(" ")),a("filter",s)]}if(x.value.kind==="arbitrary"){let K=x.value.value;switch(x.value.dataType??H(K,["color"])){case"color":return K=X(K,x.modifier,t),K===null?void 0:[w(),a("--tw-drop-shadow-color",Q(K,"var(--tw-drop-shadow-alpha)")),a("--tw-drop-shadow","var(--tw-drop-shadow-size)")];default:return x.modifier&&!S?void 0:[w(),a("--tw-drop-shadow-alpha",S),...mt("--tw-drop-shadow-size",K,S,O=>`var(--tw-drop-shadow-color, ${O})`),a("--tw-drop-shadow","var(--tw-drop-shadow-size)"),a("filter",s)]}}{let K=t.get([`--drop-shadow-${x.value.value}`]),V=t.resolve(x.value.value,["--drop-shadow"]);if(K&&V)return x.modifier&&!S?void 0:S?[w(),a("--tw-drop-shadow-alpha",S),...mt("--tw-drop-shadow-size",K,S,O=>`var(--tw-drop-shadow-color, ${O})`),a("--tw-drop-shadow","var(--tw-drop-shadow-size)"),a("filter",s)]:[w(),a("--tw-drop-shadow-alpha",S),...mt("--tw-drop-shadow-size",K,S,O=>`var(--tw-drop-shadow-color, ${O})`),a("--tw-drop-shadow",L(V,",").map(O=>`drop-shadow(${O})`).join(" ")),a("filter",s)]}{let K=re(x,t,["--drop-shadow-color","--color"]);if(K)return K==="inherit"?[w(),a("--tw-drop-shadow-color","inherit"),a("--tw-drop-shadow","var(--tw-drop-shadow-size)")]:[w(),a("--tw-drop-shadow-color",Q(K,"var(--tw-drop-shadow-alpha)")),a("--tw-drop-shadow","var(--tw-drop-shadow-size)")]}}),i("drop-shadow",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--drop-shadow-color","--color"],modifiers:Array.from({length:21},(x,S)=>`${S*5}`)},{valueThemeKeys:["--drop-shadow"]}]),n("backdrop-opacity",{themeKeys:["--backdrop-opacity","--opacity"],handleBareValue:({value:x})=>nt(x)?`${x}%`:null,handle:x=>[C(),a("--tw-backdrop-opacity",`opacity(${x})`),a("-webkit-backdrop-filter",g),a("backdrop-filter",g)]}),i("backdrop-opacity",()=>[{values:Array.from({length:21},(x,S)=>`${S*5}`),valueThemeKeys:["--backdrop-opacity","--opacity"]}])}{let s=`var(--tw-ease, ${t.resolve(null,["--default-transition-timing-function"])??"ease"})`,g=`var(--tw-duration, ${t.resolve(null,["--default-transition-duration"])??"0s"})`;n("transition",{defaultValue:"color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events",themeKeys:["--transition-property"],handle:w=>[a("transition-property",w),a("transition-timing-function",s),a("transition-duration",g)],staticValues:{none:[a("transition-property","none")],all:[a("transition-property","all"),a("transition-timing-function",s),a("transition-duration",g)],colors:[a("transition-property","color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to"),a("transition-timing-function",s),a("transition-duration",g)],opacity:[a("transition-property","opacity"),a("transition-timing-function",s),a("transition-duration",g)],shadow:[a("transition-property","box-shadow"),a("transition-timing-function",s),a("transition-duration",g)],transform:[a("transition-property","transform, translate, scale, rotate"),a("transition-timing-function",s),a("transition-duration",g)]}}),e("transition-discrete",[["transition-behavior","allow-discrete"]]),e("transition-normal",[["transition-behavior","normal"]]),n("delay",{handleBareValue:({value:w})=>I(w)?`${w}ms`:null,themeKeys:["--transition-delay"],handle:w=>[a("transition-delay",w)]});{let w=()=>B([$("--tw-duration")]);e("duration-initial",[w,["--tw-duration","initial"]]),r.functional("duration",C=>{if(C.modifier||!C.value)return;let x=null;if(C.value.kind==="arbitrary"?x=C.value.value:(x=t.resolve(C.value.fraction??C.value.value,["--transition-duration"]),x===null&&I(C.value.value)&&(x=`${C.value.value}ms`)),x!==null)return[w(),a("--tw-duration",x),a("transition-duration",x)]})}i("delay",()=>[{values:["75","100","150","200","300","500","700","1000"],valueThemeKeys:["--transition-delay"]}]),i("duration",()=>[{values:["75","100","150","200","300","500","700","1000"],valueThemeKeys:["--transition-duration"]}])}{let s=()=>B([$("--tw-ease")]);n("ease",{themeKeys:["--ease"],handle:g=>[s(),a("--tw-ease",g),a("transition-timing-function",g)],staticValues:{initial:[s(),a("--tw-ease","initial")],linear:[s(),a("--tw-ease","linear"),a("transition-timing-function","linear")]}})}e("will-change-auto",[["will-change","auto"]]),e("will-change-scroll",[["will-change","scroll-position"]]),e("will-change-contents",[["will-change","contents"]]),e("will-change-transform",[["will-change","transform"]]),n("will-change",{themeKeys:[],handle:s=>[a("will-change",s)]}),e("content-none",[["--tw-content","none"],["content","none"]]),n("content",{themeKeys:["--content"],handle:s=>[B([$("--tw-content",'""')]),a("--tw-content",s),a("content","var(--tw-content)")]});{let s="var(--tw-contain-size,) var(--tw-contain-layout,) var(--tw-contain-paint,) var(--tw-contain-style,)",g=()=>B([$("--tw-contain-size"),$("--tw-contain-layout"),$("--tw-contain-paint"),$("--tw-contain-style")]);e("contain-none",[["contain","none"]]),e("contain-content",[["contain","content"]]),e("contain-strict",[["contain","strict"]]),e("contain-size",[g,["--tw-contain-size","size"],["contain",s]]),e("contain-inline-size",[g,["--tw-contain-size","inline-size"],["contain",s]]),e("contain-layout",[g,["--tw-contain-layout","layout"],["contain",s]]),e("contain-paint",[g,["--tw-contain-paint","paint"],["contain",s]]),e("contain-style",[g,["--tw-contain-style","style"],["contain",s]]),n("contain",{themeKeys:[],handle:w=>[a("contain",w)]})}e("forced-color-adjust-none",[["forced-color-adjust","none"]]),e("forced-color-adjust-auto",[["forced-color-adjust","auto"]]),l("leading",["--leading","--spacing"],s=>[B([$("--tw-leading")]),a("--tw-leading",s),a("line-height",s)],{staticValues:{none:[B([$("--tw-leading")]),a("--tw-leading","1"),a("line-height","1")]}}),n("tracking",{supportsNegative:!0,themeKeys:["--tracking"],handle:s=>[B([$("--tw-tracking")]),a("--tw-tracking",s),a("letter-spacing",s)]}),e("antialiased",[["-webkit-font-smoothing","antialiased"],["-moz-osx-font-smoothing","grayscale"]]),e("subpixel-antialiased",[["-webkit-font-smoothing","auto"],["-moz-osx-font-smoothing","auto"]]);{let s="var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)",g=()=>B([$("--tw-ordinal"),$("--tw-slashed-zero"),$("--tw-numeric-figure"),$("--tw-numeric-spacing"),$("--tw-numeric-fraction")]);e("normal-nums",[["font-variant-numeric","normal"]]),e("ordinal",[g,["--tw-ordinal","ordinal"],["font-variant-numeric",s]]),e("slashed-zero",[g,["--tw-slashed-zero","slashed-zero"],["font-variant-numeric",s]]),e("lining-nums",[g,["--tw-numeric-figure","lining-nums"],["font-variant-numeric",s]]),e("oldstyle-nums",[g,["--tw-numeric-figure","oldstyle-nums"],["font-variant-numeric",s]]),e("proportional-nums",[g,["--tw-numeric-spacing","proportional-nums"],["font-variant-numeric",s]]),e("tabular-nums",[g,["--tw-numeric-spacing","tabular-nums"],["font-variant-numeric",s]]),e("diagonal-fractions",[g,["--tw-numeric-fraction","diagonal-fractions"],["font-variant-numeric",s]]),e("stacked-fractions",[g,["--tw-numeric-fraction","stacked-fractions"],["font-variant-numeric",s]])}{let s=()=>B([$("--tw-outline-style","solid")]);r.static("outline-hidden",()=>[a("--tw-outline-style","none"),a("outline-style","none"),W("@media","(forced-colors: active)",[a("outline","2px solid transparent"),a("outline-offset","2px")])]),e("outline-none",[["--tw-outline-style","none"],["outline-style","none"]]),e("outline-solid",[["--tw-outline-style","solid"],["outline-style","solid"]]),e("outline-dashed",[["--tw-outline-style","dashed"],["outline-style","dashed"]]),e("outline-dotted",[["--tw-outline-style","dotted"],["outline-style","dotted"]]),e("outline-double",[["--tw-outline-style","double"],["outline-style","double"]]),r.functional("outline",g=>{if(g.value===null){if(g.modifier)return;let w=t.get(["--default-outline-width"])??"1px";return[s(),a("outline-style","var(--tw-outline-style)"),a("outline-width",w)]}if(g.value.kind==="arbitrary"){let w=g.value.value;switch(g.value.dataType??H(w,["color","length","number","percentage"])){case"length":case"number":case"percentage":return g.modifier?void 0:[s(),a("outline-style","var(--tw-outline-style)"),a("outline-width",w)];default:return w=X(w,g.modifier,t),w===null?void 0:[a("outline-color",w)]}}{let w=re(g,t,["--outline-color","--color"]);if(w)return[a("outline-color",w)]}{if(g.modifier)return;let w=t.resolve(g.value.value,["--outline-width"]);if(w)return[s(),a("outline-style","var(--tw-outline-style)"),a("outline-width",w)];if(I(g.value.value))return[s(),a("outline-style","var(--tw-outline-style)"),a("outline-width",`${g.value.value}px`)]}}),i("outline",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--outline-color","--color"],modifiers:Array.from({length:21},(g,w)=>`${w*5}`),hasDefaultValue:!0},{values:["0","1","2","4","8"],valueThemeKeys:["--outline-width"]}]),n("outline-offset",{supportsNegative:!0,themeKeys:["--outline-offset"],handleBareValue:({value:g})=>I(g)?`${g}px`:null,handle:g=>[a("outline-offset",g)]}),i("outline-offset",()=>[{supportsNegative:!0,values:["0","1","2","4","8"],valueThemeKeys:["--outline-offset"]}])}n("opacity",{themeKeys:["--opacity"],handleBareValue:({value:s})=>nt(s)?`${s}%`:null,handle:s=>[a("opacity",s)]}),i("opacity",()=>[{values:Array.from({length:21},(s,g)=>`${g*5}`),valueThemeKeys:["--opacity"]}]),n("underline-offset",{supportsNegative:!0,themeKeys:["--text-underline-offset"],handleBareValue:({value:s})=>I(s)?`${s}px`:null,handle:s=>[a("text-underline-offset",s)],staticValues:{auto:[a("text-underline-offset","auto")]}}),i("underline-offset",()=>[{supportsNegative:!0,values:["0","1","2","4","8"],valueThemeKeys:["--text-underline-offset"]}]),r.functional("text",s=>{if(s.value){if(s.value.kind==="arbitrary"){let g=s.value.value;switch(s.value.dataType??H(g,["color","length","percentage","absolute-size","relative-size"])){case"size":case"length":case"percentage":case"absolute-size":case"relative-size":{if(s.modifier){let C=s.modifier.kind==="arbitrary"?s.modifier.value:t.resolve(s.modifier.value,["--leading"]);if(!C&&ee(s.modifier.value)){let x=t.resolve(null,["--spacing"]);if(!x)return null;C=`calc(${x} * ${s.modifier.value})`}return!C&&s.modifier.value==="none"&&(C="1"),C?[a("font-size",g),a("line-height",C)]:null}return[a("font-size",g)]}default:return g=X(g,s.modifier,t),g===null?void 0:[a("color",g)]}}{let g=re(s,t,["--text-color","--color"]);if(g)return[a("color",g)]}{let g=t.resolveWith(s.value.value,["--text"],["--line-height","--letter-spacing","--font-weight"]);if(g){let[w,C={}]=Array.isArray(g)?g:[g];if(s.modifier){let x=s.modifier.kind==="arbitrary"?s.modifier.value:t.resolve(s.modifier.value,["--leading"]);if(!x&&ee(s.modifier.value)){let K=t.resolve(null,["--spacing"]);if(!K)return null;x=`calc(${K} * ${s.modifier.value})`}if(!x&&s.modifier.value==="none"&&(x="1"),!x)return null;let S=[a("font-size",w)];return x&&S.push(a("line-height",x)),S}return typeof C=="string"?[a("font-size",w),a("line-height",C)]:[a("font-size",w),a("line-height",C["--line-height"]?`var(--tw-leading, ${C["--line-height"]})`:void 0),a("letter-spacing",C["--letter-spacing"]?`var(--tw-tracking, ${C["--letter-spacing"]})`:void 0),a("font-weight",C["--font-weight"]?`var(--tw-font-weight, ${C["--font-weight"]})`:void 0)]}}}}),i("text",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--text-color","--color"],modifiers:Array.from({length:21},(s,g)=>`${g*5}`)},{values:[],valueThemeKeys:["--text"],modifiers:[],modifierThemeKeys:["--leading"]}]);let U=()=>B([$("--tw-text-shadow-color"),$("--tw-text-shadow-alpha","100%","")]);e("text-shadow-initial",[U,["--tw-text-shadow-color","initial"]]),r.functional("text-shadow",s=>{let g;if(s.modifier&&(s.modifier.kind==="arbitrary"?g=s.modifier.value:I(s.modifier.value)&&(g=`${s.modifier.value}%`)),!s.value){let w=t.get(["--text-shadow"]);return w===null?void 0:[U(),a("--tw-text-shadow-alpha",g),...be("text-shadow",w,g,C=>`var(--tw-text-shadow-color, ${C})`)]}if(s.value.kind==="arbitrary"){let w=s.value.value;switch(s.value.dataType??H(w,["color"])){case"color":return w=X(w,s.modifier,t),w===null?void 0:[U(),a("--tw-text-shadow-color",Q(w,"var(--tw-text-shadow-alpha)"))];default:return[U(),a("--tw-text-shadow-alpha",g),...be("text-shadow",w,g,x=>`var(--tw-text-shadow-color, ${x})`)]}}switch(s.value.value){case"none":return s.modifier?void 0:[U(),a("text-shadow","none")];case"inherit":return s.modifier?void 0:[U(),a("--tw-text-shadow-color","inherit")]}{let w=t.get([`--text-shadow-${s.value.value}`]);if(w)return[U(),a("--tw-text-shadow-alpha",g),...be("text-shadow",w,g,C=>`var(--tw-text-shadow-color, ${C})`)]}{let w=re(s,t,["--text-shadow-color","--color"]);if(w)return[U(),a("--tw-text-shadow-color",Q(w,"var(--tw-text-shadow-alpha)"))]}}),i("text-shadow",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--text-shadow-color","--color"],modifiers:Array.from({length:21},(s,g)=>`${g*5}`)},{values:["none"]},{valueThemeKeys:["--text-shadow"],modifiers:Array.from({length:21},(s,g)=>`${g*5}`),hasDefaultValue:t.get(["--text-shadow"])!==null}]);{let x=function(V){return`var(--tw-ring-inset,) 0 0 0 calc(${V} + var(--tw-ring-offset-width)) var(--tw-ring-color, ${C})`},S=function(V){return`inset 0 0 0 ${V} var(--tw-inset-ring-color, currentcolor)`};var se=x,ue=S;let s=["var(--tw-inset-shadow)","var(--tw-inset-ring-shadow)","var(--tw-ring-offset-shadow)","var(--tw-ring-shadow)","var(--tw-shadow)"].join(", "),g="0 0 #0000",w=()=>B([$("--tw-shadow",g),$("--tw-shadow-color"),$("--tw-shadow-alpha","100%",""),$("--tw-inset-shadow",g),$("--tw-inset-shadow-color"),$("--tw-inset-shadow-alpha","100%",""),$("--tw-ring-color"),$("--tw-ring-shadow",g),$("--tw-inset-ring-color"),$("--tw-inset-ring-shadow",g),$("--tw-ring-inset"),$("--tw-ring-offset-width","0px",""),$("--tw-ring-offset-color","#fff"),$("--tw-ring-offset-shadow",g)]);e("shadow-initial",[w,["--tw-shadow-color","initial"]]),r.functional("shadow",V=>{let O;if(V.modifier&&(V.modifier.kind==="arbitrary"?O=V.modifier.value:I(V.modifier.value)&&(O=`${V.modifier.value}%`)),!V.value){let M=t.get(["--shadow"]);return M===null?void 0:[w(),a("--tw-shadow-alpha",O),...be("--tw-shadow",M,O,de=>`var(--tw-shadow-color, ${de})`),a("box-shadow",s)]}if(V.value.kind==="arbitrary"){let M=V.value.value;switch(V.value.dataType??H(M,["color"])){case"color":return M=X(M,V.modifier,t),M===null?void 0:[w(),a("--tw-shadow-color",Q(M,"var(--tw-shadow-alpha)"))];default:return[w(),a("--tw-shadow-alpha",O),...be("--tw-shadow",M,O,Tt=>`var(--tw-shadow-color, ${Tt})`),a("box-shadow",s)]}}switch(V.value.value){case"none":return V.modifier?void 0:[w(),a("--tw-shadow",g),a("box-shadow",s)];case"inherit":return V.modifier?void 0:[w(),a("--tw-shadow-color","inherit")]}{let M=t.get([`--shadow-${V.value.value}`]);if(M)return[w(),a("--tw-shadow-alpha",O),...be("--tw-shadow",M,O,de=>`var(--tw-shadow-color, ${de})`),a("box-shadow",s)]}{let M=re(V,t,["--box-shadow-color","--color"]);if(M)return[w(),a("--tw-shadow-color",Q(M,"var(--tw-shadow-alpha)"))]}}),i("shadow",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--box-shadow-color","--color"],modifiers:Array.from({length:21},(V,O)=>`${O*5}`)},{values:["none"]},{valueThemeKeys:["--shadow"],modifiers:Array.from({length:21},(V,O)=>`${O*5}`),hasDefaultValue:t.get(["--shadow"])!==null}]),e("inset-shadow-initial",[w,["--tw-inset-shadow-color","initial"]]),r.functional("inset-shadow",V=>{let O;if(V.modifier&&(V.modifier.kind==="arbitrary"?O=V.modifier.value:I(V.modifier.value)&&(O=`${V.modifier.value}%`)),!V.value){let M=t.get(["--inset-shadow"]);return M===null?void 0:[w(),a("--tw-inset-shadow-alpha",O),...be("--tw-inset-shadow",M,O,de=>`var(--tw-inset-shadow-color, ${de})`),a("box-shadow",s)]}if(V.value.kind==="arbitrary"){let M=V.value.value;switch(V.value.dataType??H(M,["color"])){case"color":return M=X(M,V.modifier,t),M===null?void 0:[w(),a("--tw-inset-shadow-color",Q(M,"var(--tw-inset-shadow-alpha)"))];default:return[w(),a("--tw-inset-shadow-alpha",O),...be("--tw-inset-shadow",M,O,Tt=>`var(--tw-inset-shadow-color, ${Tt})`,"inset"),a("box-shadow",s)]}}switch(V.value.value){case"none":return V.modifier?void 0:[w(),a("--tw-inset-shadow",g),a("box-shadow",s)];case"inherit":return V.modifier?void 0:[w(),a("--tw-inset-shadow-color","inherit")]}{let M=t.get([`--inset-shadow-${V.value.value}`]);if(M)return[w(),a("--tw-inset-shadow-alpha",O),...be("--tw-inset-shadow",M,O,de=>`var(--tw-inset-shadow-color, ${de})`),a("box-shadow",s)]}{let M=re(V,t,["--box-shadow-color","--color"]);if(M)return[w(),a("--tw-inset-shadow-color",Q(M,"var(--tw-inset-shadow-alpha)"))]}}),i("inset-shadow",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--box-shadow-color","--color"],modifiers:Array.from({length:21},(V,O)=>`${O*5}`)},{values:["none"]},{valueThemeKeys:["--inset-shadow"],modifiers:Array.from({length:21},(V,O)=>`${O*5}`),hasDefaultValue:t.get(["--inset-shadow"])!==null}]),e("ring-inset",[w,["--tw-ring-inset","inset"]]);let C=t.get(["--default-ring-color"])??"currentcolor";r.functional("ring",V=>{if(!V.value){if(V.modifier)return;let O=t.get(["--default-ring-width"])??"1px";return[w(),a("--tw-ring-shadow",x(O)),a("box-shadow",s)]}if(V.value.kind==="arbitrary"){let O=V.value.value;switch(V.value.dataType??H(O,["color","length"])){case"length":return V.modifier?void 0:[w(),a("--tw-ring-shadow",x(O)),a("box-shadow",s)];default:return O=X(O,V.modifier,t),O===null?void 0:[a("--tw-ring-color",O)]}}{let O=re(V,t,["--ring-color","--color"]);if(O)return[a("--tw-ring-color",O)]}{if(V.modifier)return;let O=t.resolve(V.value.value,["--ring-width"]);if(O===null&&I(V.value.value)&&(O=`${V.value.value}px`),O)return[w(),a("--tw-ring-shadow",x(O)),a("box-shadow",s)]}}),i("ring",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--ring-color","--color"],modifiers:Array.from({length:21},(V,O)=>`${O*5}`)},{values:["0","1","2","4","8"],valueThemeKeys:["--ring-width"],hasDefaultValue:!0}]),r.functional("inset-ring",V=>{if(!V.value)return V.modifier?void 0:[w(),a("--tw-inset-ring-shadow",S("1px")),a("box-shadow",s)];if(V.value.kind==="arbitrary"){let O=V.value.value;switch(V.value.dataType??H(O,["color","length"])){case"length":return V.modifier?void 0:[w(),a("--tw-inset-ring-shadow",S(O)),a("box-shadow",s)];default:return O=X(O,V.modifier,t),O===null?void 0:[a("--tw-inset-ring-color",O)]}}{let O=re(V,t,["--ring-color","--color"]);if(O)return[a("--tw-inset-ring-color",O)]}{if(V.modifier)return;let O=t.resolve(V.value.value,["--ring-width"]);if(O===null&&I(V.value.value)&&(O=`${V.value.value}px`),O)return[w(),a("--tw-inset-ring-shadow",S(O)),a("box-shadow",s)]}}),i("inset-ring",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--ring-color","--color"],modifiers:Array.from({length:21},(V,O)=>`${O*5}`)},{values:["0","1","2","4","8"],valueThemeKeys:["--ring-width"],hasDefaultValue:!0}]);let K="var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)";r.functional("ring-offset",V=>{if(V.value){if(V.value.kind==="arbitrary"){let O=V.value.value;switch(V.value.dataType??H(O,["color","length"])){case"length":return V.modifier?void 0:[a("--tw-ring-offset-width",O),a("--tw-ring-offset-shadow",K)];default:return O=X(O,V.modifier,t),O===null?void 0:[a("--tw-ring-offset-color",O)]}}{let O=t.resolve(V.value.value,["--ring-offset-width"]);if(O)return V.modifier?void 0:[a("--tw-ring-offset-width",O),a("--tw-ring-offset-shadow",K)];if(I(V.value.value))return V.modifier?void 0:[a("--tw-ring-offset-width",`${V.value.value}px`),a("--tw-ring-offset-shadow",K)]}{let O=re(V,t,["--ring-offset-color","--color"]);if(O)return[a("--tw-ring-offset-color",O)]}}})}return i("ring-offset",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--ring-offset-color","--color"],modifiers:Array.from({length:21},(s,g)=>`${g*5}`)},{values:["0","1","2","4","8"],valueThemeKeys:["--ring-offset-width"]}]),r.functional("@container",s=>{let g=null;if(s.value===null?g="inline-size":s.value.kind==="arbitrary"?g=s.value.value:s.value.kind==="named"&&s.value.value==="normal"?g="normal":!1,g!==null)return s.modifier?[a("container-type",g),a("container-name",s.modifier.value)]:[a("container-type",g)]}),i("@container",()=>[{values:["normal"],valueThemeKeys:[],hasDefaultValue:!0}]),r}var Wt=["number","integer","ratio","percentage"];function Mr(t){let r=ye(t.params);return Pn(r)?i=>{let e={"--value":{usedSpacingInteger:!1,usedSpacingNumber:!1,themeKeys:new Set,literals:new Set},"--modifier":{usedSpacingInteger:!1,usedSpacingNumber:!1,themeKeys:new Set,literals:new Set}};_(t.nodes,n=>{if(n.kind!=="declaration"||!n.value||!n.value.includes("--value(")&&!n.value.includes("--modifier("))return;let o=F(n.value);_(o,l=>{if(l.kind!=="function")return;if(l.value==="--spacing"&&!(e["--modifier"].usedSpacingNumber&&e["--value"].usedSpacingNumber))return _(l.nodes,u=>{if(u.kind!=="function"||u.value!=="--value"&&u.value!=="--modifier")return;let f=u.value;for(let m of u.nodes)if(m.kind==="word"){if(m.value==="integer")e[f].usedSpacingInteger||=!0;else if(m.value==="number"&&(e[f].usedSpacingNumber||=!0,e["--modifier"].usedSpacingNumber&&e["--value"].usedSpacingNumber))return R.Stop}}),R.Continue;if(l.value!=="--value"&&l.value!=="--modifier")return;let c=L(Y(l.nodes),",");for(let[u,f]of c.entries())f=f.replace(/\\\*/g,"*"),f=f.replace(/--(.*?)\s--(.*?)/g,"--$1-*--$2"),f=f.replace(/\s+/g,""),f=f.replace(/(-\*){2,}/g,"-*"),f[0]==="-"&&f[1]==="-"&&!f.includes("-*")&&(f+="-*"),c[u]=f;l.nodes=F(c.join(","));for(let u of l.nodes)if(u.kind==="word"&&(u.value[0]==='"'||u.value[0]==="'")&&u.value[0]===u.value[u.value.length-1]){let f=u.value.slice(1,-1);e[l.value].literals.add(f)}else if(u.kind==="word"&&u.value[0]==="-"&&u.value[1]==="-"){let f=u.value.replace(/-\*.*$/g,"");e[l.value].themeKeys.add(f)}else if(u.kind==="word"&&!(u.value[0]==="["&&u.value[u.value.length-1]==="]")&&!Wt.includes(u.value)){console.warn(`Unsupported bare value data type: "${u.value}". +Only valid data types are: ${Wt.map(y=>`"${y}"`).join(", ")}. +`);let f=u.value,m=structuredClone(l),d="\xB6";_(m.nodes,y=>{if(y.kind==="word"&&y.value===f)return R.ReplaceSkip({kind:"word",value:d})});let p="^".repeat(Y([u]).length),v=Y([m]).indexOf(d),h=["```css",Y([l])," ".repeat(v)+p,"```"].join(` +`);console.warn(h)}}),n.value=Y(o)}),i.utilities.functional(r.slice(0,-2),n=>{let o=te(t),l=n.value,c=n.modifier;if(l===null)return;let u=!1,f=!1,m=!1,d=!1,p=new Map,v=!1;if(_([o],(h,y)=>{let b=y.parent;if(b?.kind!=="rule"&&b?.kind!=="at-rule"||h.kind!=="declaration"||!h.value)return;let T=!1,A=F(h.value);if(_(A,k=>{if(k.kind==="function"){if(k.value==="--value"){u=!0;let D=Ur(l,k,i);return D?(f=!0,D.ratio?v=!0:p.set(h,b),R.ReplaceSkip(D.nodes)):(u||=!1,T=!0,R.Stop)}else if(k.value==="--modifier"){if(c===null)return T=!0,R.Stop;m=!0;let D=Ur(c,k,i);return D?(d=!0,R.ReplaceSkip(D.nodes)):(m||=!1,T=!0,R.Stop)}}}),T)return R.ReplaceSkip([]);h.value=Y(A)}),u&&!f||m&&!d||v&&d||c&&!v&&!d)return null;if(v)for(let[h,y]of p){let b=y.nodes.indexOf(h);b!==-1&&y.nodes.splice(b,1)}return o.nodes}),i.utilities.suggest(r.slice(0,-2),()=>{let n=[],o=[];for(let[l,{literals:c,usedSpacingNumber:u,usedSpacingInteger:f,themeKeys:m}]of[[n,e["--value"]],[o,e["--modifier"]]]){for(let d of c)l.push(d);if(u)l.push(...vt);else if(f)for(let d of vt)I(d)&&l.push(d);for(let d of i.theme.keysInNamespaces(m))l.push(d.replace(Lr,(p,v,h)=>`${v}.${h}`))}return[{values:n,modifiers:o}]})}:On(r)?i=>{i.utilities.static(r,()=>t.nodes.map(te))}:null}function Ur(t,r,i){for(let e of r.nodes){if(t.kind==="named"&&e.kind==="word"&&(e.value[0]==="'"||e.value[0]==='"')&&e.value[e.value.length-1]===e.value[0]&&e.value.slice(1,-1)===t.value)return{nodes:F(t.value)};if(t.kind==="named"&&e.kind==="word"&&e.value[0]==="-"&&e.value[1]==="-"){let n=e.value;if(n.endsWith("-*")){n=n.slice(0,-2);let o=i.theme.resolve(t.value,[n]);if(o)return{nodes:F(o)}}else{let o=n.split("-*");if(o.length<=1)continue;let l=[o.shift()],c=i.theme.resolveWith(t.value,l,o);if(c){let[,u={}]=c;{let f=u[o.pop()];if(f)return{nodes:F(f)}}}}}else if(t.kind==="named"&&e.kind==="word"){if(!Wt.includes(e.value))continue;let n=e.value==="ratio"&&"fraction"in t?t.fraction:t.value;if(!n)continue;let o=H(n,[e.value]);if(o===null)continue;if(o==="ratio"){let[l,c]=L(n,"/").map(Number);if(!I(l)||!I(c))continue}else{if(o==="number"&&!ee(n))continue;if(o==="percentage"&&!I(n.slice(0,-1)))continue}if(o==="ratio"){let[l,c]=L(n,"/");return{nodes:F(`${l.trim()} / ${c.trim()}`),ratio:!0}}return{nodes:F(n),ratio:!1}}else if(t.kind==="arbitrary"&&e.kind==="word"&&e.value[0]==="["&&e.value[e.value.length-1]==="]"){let n=e.value.slice(1,-1);if(n==="*")return{nodes:F(t.value)};if("dataType"in t&&t.dataType&&t.dataType!==n)continue;if("dataType"in t&&t.dataType)return{nodes:F(t.value)};if(H(t.value,[n])!==null)return{nodes:F(t.value)}}}}function be(t,r,i,e,n=""){let o=!1,l=Xe(r,u=>i==null?e(u):u.startsWith("current")?e(Q(u,i)):((u.startsWith("var(")||i.startsWith("var("))&&(o=!0),e(zr(u,i))));function c(u){return n?L(u,",").map(f=>n.trim()+" "+f.trim()).join(", "):u}return o?[a(t,c(Xe(r,e))),J("@supports (color: lab(from red l a b))",[a(t,c(l))])]:[a(t,c(l))]}function mt(t,r,i,e,n=""){let o=!1,l=L(r,",").map(c=>Xe(c,u=>i==null?e(u):u.startsWith("current")?e(Q(u,i)):((u.startsWith("var(")||i.startsWith("var("))&&(o=!0),e(zr(u,i))))).map(c=>`drop-shadow(${c})`).join(" ");return o?[a(t,n+L(r,",").map(c=>`drop-shadow(${Xe(c,e)})`).join(" ")),J("@supports (color: lab(from red l a b))",[a(t,n+l)])]:[a(t,n+l)]}var Fr=/^-?[a-z][a-zA-Z0-9_-]*/,An=37,Cn=47,$n=46,Sn=97,Vn=122,Tn=65,Nn=90,gt=48,ht=57,En=95,Rn=45;function On(t){let r=Fr.exec(t);if(r===null)return!1;let i=r[0],e=t.slice(i.length);if(e.length===0&&i.endsWith("-"))return!1;if(e.length===0)return!0;let n=!1;for(let o=0;oht)return!1;break}case Cn:{if(o===e.length-1||n)return!1;n=!0;break}case $n:{let u=(e[o-1]||i[i.length-1]||"").charCodeAt(0);if(uht)return!1;let m=(e[o+1]||"").charCodeAt(0);if(mht)return!1;break}case En:case Rn:continue;default:{if(l>=Sn&&l<=Vn||l>=Tn&&l<=Nn||l>=gt&&l<=ht)continue;return!1}}}return!0}function Pn(t){if(!t.endsWith("-*"))return!1;t=t.slice(0,-2);let r=Fr.exec(t);if(r===null)return!1;let i=r[0];return t.slice(i.length).length===0}var Bt={"--alpha":In,"--spacing":_n,"--theme":Dn,theme:Kn};function In(t,r,i,...e){let[n,o]=L(i,"/").map(l=>l.trim());if(!n||!o)throw new Error(`The --alpha(\u2026) function requires a color and an alpha value, e.g.: \`--alpha(${n||"var(--my-color)"} / ${o||"50%"})\``);if(e.length>0)throw new Error(`The --alpha(\u2026) function only accepts one argument, e.g.: \`--alpha(${n||"var(--my-color)"} / ${o||"50%"})\``);return Q(n,o)}function _n(t,r,i,...e){if(!i)throw new Error("The --spacing(\u2026) function requires an argument, but received none.");if(e.length>0)throw new Error(`The --spacing(\u2026) function only accepts a single argument, but received ${e.length+1}.`);let n=t.theme.resolve(null,["--spacing"]);if(!n)throw new Error("The --spacing(\u2026) function requires that the `--spacing` theme variable exists, but it was not found.");return`calc(${n} * ${i})`}function Dn(t,r,i,...e){if(!i.startsWith("--"))throw new Error("The --theme(\u2026) function can only be used with CSS variables from your theme.");let n=!1;i.endsWith(" inline")&&(n=!0,i=i.slice(0,-7)),r.kind==="at-rule"&&(n=!0);let o=t.resolveThemeValue(i,n);if(!o){if(e.length>0)return e.join(", ");throw new Error(`Could not resolve value for theme function: \`theme(${i})\`. Consider checking if the variable name is correct or provide a fallback value to silence this error.`)}if(e.length===0)return o;let l=e.join(", ");if(l==="initial")return o;if(o==="initial")return l;if(o.startsWith("var(")||o.startsWith("theme(")||o.startsWith("--theme(")){let c=F(o);return zn(c,l),Y(c)}return o}function Kn(t,r,i,...e){i=Un(i);let n=t.resolveThemeValue(i);if(!n&&e.length>0)return e.join(", ");if(!n)throw new Error(`Could not resolve value for theme function: \`theme(${i})\`. Consider checking if the path is correct or provide a fallback value to silence this error.`);return n}var Wr=new RegExp(Object.keys(Bt).map(t=>`${t}\\(`).join("|"));function Ue(t,r){let i=0;return _(t,e=>{if(e.kind==="declaration"&&e.value&&Wr.test(e.value)){i|=8,e.value=Br(e.value,e,r);return}e.kind==="at-rule"&&(e.name==="@media"||e.name==="@custom-media"||e.name==="@container"||e.name==="@supports")&&Wr.test(e.params)&&(i|=8,e.params=Br(e.params,e,r))}),i}function Br(t,r,i){let e=F(t);return _(e,n=>{if(n.kind==="function"&&n.value in Bt){let o=L(Y(n.nodes).trim(),",").map(c=>c.trim()),l=Bt[n.value](i,r,...o);return R.Replace(F(l))}}),Y(e)}function Un(t){if(t[0]!=="'"&&t[0]!=='"')return t;let r="",i=t[0];for(let e=1;e{if(i.kind==="function"&&!(i.value!=="var"&&i.value!=="theme"&&i.value!=="--theme"))if(i.nodes.length===1)i.nodes.push({kind:"word",value:`, ${r}`});else{let e=i.nodes[i.nodes.length-1];e.kind==="word"&&e.value==="initial"&&(e.value=r)}})}function wt(t,r){let i=t.length,e=r.length,n=i=48&&l<=57&&c>=48&&c<=57){let u=o,f=o+1,m=o,d=o+1;for(l=t.charCodeAt(f);l>=48&&l<=57;)l=t.charCodeAt(++f);for(c=r.charCodeAt(d);c>=48&&c<=57;)c=r.charCodeAt(++d);let p=t.slice(u,f),v=r.slice(m,d),h=Number(p)-Number(v);if(h)return h;if(pv)return 1;continue}if(l!==c)return l-c}return t.length-r.length}function Yr(t){if(t[0]!=="["||t[t.length-1]!=="]")return null;let r=1,i=r,e=t.length-1;for(;Le(t.charCodeAt(r));)r++;{for(i=r;r=65&&m<=90)&&!(m>=97&&m<=122)&&!(m>=48&&m<=57)&&!(m===45||m===95))break}if(i===r)return null}let n=t.slice(i,r);for(;Le(t.charCodeAt(r));)r++;if(r===e)return{attribute:n,operator:null,quote:null,value:null,sensitivity:null};let o=null,l=t.charCodeAt(r);if(l===61)o="=",r++;else if((l===126||l===124||l===94||l===36||l===42)&&t.charCodeAt(r+1)===61)o=t[r]+"=",r+=2;else return null;for(;Le(t.charCodeAt(r));)r++;if(r===e)return null;let c="",u=null;if(l=t.charCodeAt(r),l===39||l===34){u=t[r],r++,i=r;for(let m=r;m[-+]?(?:\d*\.)?\d+)(?[a-z]+|%)?$/i,ae=new z(t=>{let r=jn.exec(t);if(!r)return null;let i=r.groups?.value;if(i===void 0)return null;let e=Number(i);if(Number.isNaN(e))return null;let n=r.groups?.unit;return n===void 0?[e,null]:[e,n]});function Gr(t){let r=!1;return _(t,{exit(i){if(i.kind!=="function"||i.value!=="calc"&&i.value!==""||i.nodes.length!==5||i.nodes[2].kind!=="word"||i.nodes[2].value!=="*"&&i.nodes[2].value!=="+")return;let e=i.nodes[0],n=i.nodes[4];if(Mn(e,n)){r=!0;let o={kind:"function",value:i.value,nodes:[n,i.nodes[1],i.nodes[2],i.nodes[3],e]};return R.ReplaceSkip(o)}}}),[r,t]}function Mn(t,r){let i=t.kind==="word"?ae.get(t.value):null,e=r.kind==="word"?ae.get(r.value):null;if(i!==null&&e===null)return!0;if(i===null&&e!==null)return!1;if(i!==null&&e!==null){let[n,o]=i,[l,c]=e;if(o===null&&c!==null)return!0;if(o!==null&&c===null)return!1;if(n!==l)return n-l>0;if(o!==c)return(o??"").localeCompare(c??"")>0}return Y([t]).localeCompare(Y([r]))>0}function je(t,r=null){return Array.isArray(t)&&t.length===2&&typeof t[1]=="object"&&typeof t[1]!==null?r?t[1][r]??null:t[0]:Array.isArray(t)&&r===null?t.join(", "):typeof t=="string"&&r===null?t:null}function qr(t,{theme:r},i){for(let e of i){let n=Me([e]);n&&t.theme.clearNamespace(`--${n}`,4)}for(let[e,n]of Fn(r)){if(typeof n!="string"&&typeof n!="number")continue;if(typeof n=="string"&&(n=n.replace(//g,"1")),e[0]==="opacity"&&(typeof n=="number"||typeof n=="string")){let l=typeof n=="string"?parseFloat(n):n;l>=0&&l<=1&&(n=l*100+"%")}let o=Me(e);o&&t.theme.add(`--${o}`,""+n,7)}if(Object.hasOwn(r,"fontFamily")){let e=5;{let n=je(r.fontFamily.sans);n&&t.theme.hasDefault("--font-sans")&&(t.theme.add("--default-font-family",n,e),t.theme.add("--default-font-feature-settings",je(r.fontFamily.sans,"fontFeatureSettings")??"normal",e),t.theme.add("--default-font-variation-settings",je(r.fontFamily.sans,"fontVariationSettings")??"normal",e))}{let n=je(r.fontFamily.mono);n&&t.theme.hasDefault("--font-mono")&&(t.theme.add("--default-mono-font-family",n,e),t.theme.add("--default-mono-font-feature-settings",je(r.fontFamily.mono,"fontFeatureSettings")??"normal",e),t.theme.add("--default-mono-font-variation-settings",je(r.fontFamily.mono,"fontVariationSettings")??"normal",e))}}return r}function Fn(t){let r=[];return Zr(t,[],(i,e)=>{if(Gn(i))return r.push([e,i]),1;if(qn(i)){r.push([e,i[0]]);for(let n of Reflect.ownKeys(i[1]))r.push([[...e,`-${n}`],i[1][n]]);return 1}if(Array.isArray(i)&&i.every(n=>typeof n=="string"))return e[0]==="fontSize"?(r.push([e,i[0]]),i.length>=2&&r.push([[...e,"-line-height"],i[1]])):r.push([e,i.join(", ")]),1}),r}var Wn={borderWidth:"border-width",outlineWidth:"outline-width",ringColor:"ring-color",ringWidth:"ring-width",transitionDuration:"transition-duration",transitionTimingFunction:"transition-timing-function"},Bn={animation:"animate",aspectRatio:"aspect",borderRadius:"radius",boxShadow:"shadow",colors:"color",containers:"container",fontFamily:"font",fontSize:"text",letterSpacing:"tracking",lineHeight:"leading",maxWidth:"container",screens:"breakpoint",transitionTimingFunction:"ease"},Yn=/^[a-zA-Z0-9-_%/.]+$/;function Me(t){let r=Wn[t[0]];if(r&&t[1]==="DEFAULT")return`default-${r}`;if(t[0]==="container")return null;for(let e of t)if(!Yn.test(e))return null;let i=Bn[t[0]];return i&&(t=t.slice(),t[0]=i),t.map((e,n,o)=>e==="1"&&n!==o.length-1?"":e).map((e,n)=>(e=e.replaceAll(".","_"),(n===0||e.startsWith("-")||e==="lineHeight")&&(e=e.replace(/([a-z])([A-Z])/g,(l,c,u)=>`${c}-${u.toLowerCase()}`)),e)).filter((e,n)=>e!=="DEFAULT"||n!==t.length-1).join("-")}function Gn(t){return typeof t=="number"||typeof t=="string"}function qn(t){if(!Array.isArray(t)||t.length!==2||typeof t[0]!="string"&&typeof t[0]!="number"||t[1]===void 0||t[1]===null||typeof t[1]!="object")return!1;for(let r of Reflect.ownKeys(t[1]))if(typeof r!="string"||typeof t[1][r]!="string"&&typeof t[1][r]!="number")return!1;return!0}function Zr(t,r=[],i){for(let e of Reflect.ownKeys(t)){let n=t[e];if(n==null)continue;let o=[...r,e],l=i(n,o)??0;if(l!==1){if(l===2)return 2;if(!(!Array.isArray(n)&&typeof n!="object")&&Zr(n,o,i)===2)return 2}}}function Yt(t,r=null){let[i,e]=et(F(t),r);return i?Y(e):t}function et(t,r=null){let i=!1;return _(t,{exit(e){if(e.kind==="word"&&e.value!=="0"){let n=Zn(e.value,r);return n===null||n===e.value?void 0:(i=!0,R.ReplaceSkip(ne(n)))}else if(e.kind==="function"&&(e.value==="calc"||e.value==="")){if(e.nodes.length!==5||e.nodes[2].kind!=="word")return;let n=e.nodes[0],o=e.nodes[2].value,l=e.nodes[4],c=n.kind==="word"?ae.get(n.value):null,u=l.kind==="word"?ae.get(l.value):null;if(o==="*"&&(c?.[0]===0&&c?.[1]===null||u?.[0]===0&&u?.[1]===null))return i=!0,R.ReplaceSkip(ne("0"));if(o==="*"){if(c?.[0]===1&&c?.[1]===null)return i=!0,R.ReplaceSkip(l);if(u?.[0]===1&&u?.[1]===null)return i=!0,R.ReplaceSkip(n)}if(o==="*"||o==="+"){let f=c??u,m=c===null?n:u===null?l:null;if(f!==null&&m!==null&&m.kind==="function"&&(m.value==="calc"||m.value==="")&&m.nodes.length===5&&m.nodes[2].kind==="word"&&m.nodes[2].value===o){let d=m.nodes[0],p=m.nodes[4],v=d.kind==="word"?ae.get(d.value):null,h=p.kind==="word"?ae.get(p.value):null,y=v??h,b=v===null?d:h===null?p:null;if(y!==null&&b!==null){if(o==="*"&&!(f[1]===null&&y[1]===null||f[1]===null&&y[1]!==null||f[1]!==null&&y[1]===null)||o==="+"&&f[1]!==y[1])return;let T;switch(o){case"*":{T=`${f[0]*y[0]}${f[1]??y[1]??""}`;break}case"+":{T=`${f[0]+y[0]}${f[1]??y[1]??""}`;break}default:return}if(i=!0,o==="*"&&T==="1")return R.ReplaceSkip(b);let A={kind:"function",value:e.value,nodes:[ne(T),e.nodes[1],e.nodes[2],e.nodes[3],b]};return R.ReplaceSkip(A)}}}if(c===null||u===null)return;switch(o){case"*":{if(c[1]===u[1]||c[1]===null&&u[1]!==null||c[1]!==null&&u[1]===null)return i=!0,R.ReplaceSkip(ne(`${c[0]*u[0]}${c[1]??u[1]??""}`));break}case"+":{if(c[1]===u[1])return i=!0,R.ReplaceSkip(ne(`${c[0]+u[0]}${c[1]??""}`));break}case"-":{if(c[1]===u[1])return i=!0,R.ReplaceSkip(ne(`${c[0]-u[0]}${c[1]??""}`));break}case"/":{if(u[0]!==0&&(c[1]===null&&u[1]===null||c[1]!==null&&u[1]===null))return i=!0,R.ReplaceSkip(ne(`${c[0]/u[0]}${c[1]??""}`));break}}}}}),[i,t]}function Zn(t,r=null){let i=ae.get(t);if(i===null)return null;let[e,n]=i;if(n===null)return`${e}`;if(e===0&&ar(t))return"0";switch(n.toLowerCase()){case"in":return`${e*96}px`;case"cm":return`${e*96/2.54}px`;case"mm":return`${e*96/2.54/10}px`;case"q":return`${e*96/2.54/10/4}px`;case"pc":return`${e*96/6}px`;case"pt":return`${e*96/72}px`;case"rem":return r!==null?`${e*r}px`:null;case"grad":return`${e*.9}deg`;case"rad":return`${e*180/Math.PI}deg`;case"turn":return`${e*360}deg`;case"ms":return`${e/1e3}s`;case"khz":return`${e*1e3}hz`;default:return`${e}${n}`}}function Re(t,r="top",i="right",e="bottom",n="left"){return Xr(`${t}-${r}`,`${t}-${i}`,`${t}-${e}`,`${t}-${n}`)}function Xr(t="top",r="right",i="bottom",e="left"){return{1:[[t,0],[r,0],[i,0],[e,0]],2:[[t,0],[r,1],[i,0],[e,1]],3:[[t,0],[r,1],[i,2],[e,1]],4:[[t,0],[r,1],[i,2],[e,3]]}}function le(t,r){return{1:[[t,0],[r,0]],2:[[t,0],[r,1]]}}var Hr={inset:Xr(),margin:Re("margin"),padding:Re("padding"),"scroll-margin":Re("scroll-margin"),"scroll-padding":Re("scroll-padding"),"border-width":Re("border","top-width","right-width","bottom-width","left-width"),"border-style":Re("border","top-style","right-style","bottom-style","left-style"),"border-color":Re("border","top-color","right-color","bottom-color","left-color"),gap:le("row-gap","column-gap"),overflow:le("overflow-x","overflow-y"),"overscroll-behavior":le("overscroll-behavior-x","overscroll-behavior-y")},Jr={"inset-block":le("top","bottom"),"inset-inline":le("left","right"),"margin-block":le("margin-top","margin-bottom"),"margin-inline":le("margin-left","margin-right"),"padding-block":le("padding-top","padding-bottom"),"padding-inline":le("padding-left","padding-right"),"scroll-margin-block":le("scroll-margin-top","scroll-margin-bottom"),"scroll-margin-inline":le("scroll-margin-left","scroll-margin-right"),"scroll-padding-block":le("scroll-padding-top","scroll-padding-bottom"),"scroll-padding-inline":le("scroll-padding-left","scroll-padding-right")},Qr={"border-block":["border-bottom","border-top"],"border-block-color":["border-bottom-color","border-top-color"],"border-block-style":["border-bottom-style","border-top-style"],"border-block-width":["border-bottom-width","border-top-width"],"border-inline":["border-left","border-right"],"border-inline-color":["border-left-color","border-right-color"],"border-inline-style":["border-left-style","border-right-style"],"border-inline-width":["border-left-width","border-right-width"]};function ei(t,r){if(r&2){if(t.property in Jr){let i=L(t.value," ");return Jr[t.property][i.length]?.map(([e,n])=>a(e,i[n],t.important))}if(t.property in Qr)return Qr[t.property]?.map(i=>a(i,t.value,t.important))}if(t.property in Hr){let i=L(t.value," ");return Hr[t.property][i.length]?.map(([e,n])=>a(e,i[n],t.important))}return null}function Hn(t){return{kind:"combinator",value:t}}function Jn(t,r){return{kind:"function",value:t,nodes:r}}function $e(t){return{kind:"selector",value:t}}function Qn(t){return{kind:"separator",value:t}}function Xn(t){return{kind:"value",value:t}}function he(t){let r="";for(let i of t)switch(i.kind){case"combinator":case"selector":case"separator":case"value":{r+=i.value;break}case"function":r+=i.value+"("+he(i.nodes)+")"}return r}var ti=92,el=93,ri=41,tl=58,ii=44,rl=34,il=46,ni=62,li=10,nl=35,ai=91,oi=40,si=43,ll=39,ui=32,fi=9,ci=126,al=38,ol=42;function Oe(t){t=t.replaceAll(`\r +`,` +`);let r=[],i=[],e=null,n="",o;for(let l=0;l0){let p=$e(n);e?e.nodes.push(p):r.push(p),n=""}let u=l,f=l+1;for(;f0){let f=$e(n);u.nodes.push(f),n=""}i.length>0?e=i[i.length-1]:e=null;break}case il:case tl:case nl:{if(n.length>0){let u=$e(n);e?e.nodes.push(u):r.push(u)}n=t[l];break}case ai:{if(n.length>0){let m=$e(n);e?e.nodes.push(m):r.push(m)}n="";let u=l,f=0;for(let m=l+1;m0){let u=$e(n);e?e.nodes.push(u):r.push(u),n=""}e?e.nodes.push($e(t[l])):r.push($e(t[l]));break}case ti:{n+=t[l]+t[l+1],l+=1;break}default:n+=t[l]}}return n.length>0&&r.push($e(n)),r}function pe(t,r){for(let i in t)delete t[i];return Object.assign(t,r)}function Pe(t){let r=[];for(let i of L(t,".")){if(!i.includes("[")){r.push(i);continue}let e=0;for(;;){let n=i.indexOf("[",e),o=i.indexOf("]",n);if(n===-1||o===-1)break;n>e&&r.push(i.slice(e,n)),r.push(i.slice(n+1,o)),e=o+1}e<=i.length-1&&r.push(i.slice(e))}return r}function Gt(t,r){let i=t;return i.storage[hi]??=sl(),i.storage[vi]??=cl(i),i.storage[wi]??=ml(),i.storage[yi]??=hl(),i.storage[ki]??=wl(),i.storage[Zt]??=Cl(i),i.storage[bt]??=Sl(i,r),i.storage[ve]??=jl(i),i.storage[Ht]??=Fl(),i.storage[xt]??=Wl(i),i.storage[Jt]??=Bl(i),i.storage[Ct]??=Yl(i),i.storage[Ci]??=Gl(i),i.storage[tt]??=ul(i),i}var hi=Symbol();function sl(){return new z(t=>new z(r=>({rem:t,features:r})))}var tt=Symbol();function ul(t){return new z(r=>{let i=t.storage[ve].get(r);return function(n,o){let l=typeof n=="string"?n:t.printCandidate(n),c=i.get(l);if(typeof c!="string")return!1;let u=typeof o=="string"?o:t.printCandidate(o),f=i.get(u);return typeof f!="string"?!1:c===f}})}function fl(t,r){let i=0;return r?.collapse&&(i|=1),r?.logicalToPhysical&&(i|=2),Gt(t,r).storage[hi].get(r?.rem??null).get(i)}var vi=Symbol();function cl(t){return new z(r=>new z(i=>({features:i,designSystem:t,signatureOptions:r})))}function pl(t,r,i){let e=0;return i?.collapse&&(e|=1),Gt(t).storage[vi].get(r).get(e)}function qt(t,r,i){let e=fl(t,i),n=pl(t,e,i),o=Gt(t),l=new Set,c=o.storage[wi].get(n);for(let u of r)l.add(c.get(u));return l.size<=1||!(n.features&1)?Array.from(l):dl(n,Array.from(l))}function dl(t,r){let i=t.designSystem,e=new z(c=>new z(u=>new Set)),n=t.designSystem.theme.prefix?`${t.designSystem.theme.prefix}:`:"";for(let c of r){let u=L(c,":"),f=u.pop(),m=f.endsWith("!");m&&(f=f.slice(0,-1));let d=u.length>0?`${u.join(":")}:`:"",p=m?"!":"";e.get(d).get(p).add(`${n}${f}`)}let o=new Set;for(let[c,u]of e.entries())for(let[f,m]of u.entries())for(let d of l(Array.from(m)))n&&d.startsWith(n)&&(d=d.slice(n.length)),o.add(`${c}${d}${f}`);return Array.from(o);function l(c){let u=t.signatureOptions,f=i.storage[xt].get(u),m=i.storage[Ht].get(u),d=c.map(A=>f.get(A));if(d.some(A=>A.has("line-height"))){let A=i.theme.keysInNamespaces(["--text"]);if(A.length>0){let k=new Set,D=new Set;for(let E of d)if(E.has("line-height"))for(let U of E.get("line-height")){if(D.has(U))continue;D.add(U);let P=i.storage[bt]?.get(U)??null;if(P!==null)if(ee(P)){k.add(P);for(let j of A)f.get(`text-${j}/${P}`)}else{k.add(U);for(let j of A)f.get(`text-${j}/[${U}]`)}}let N=new Set;for(let E of d)if(E.has("font-size")){for(let U of E.get("font-size"))if(!N.has(U)){N.add(U);for(let P of k)ee(P)?f.get(`text-[${U}]/${P}`):f.get(`text-[${U}]/[${P}]`)}}}}let p=new z(A=>{let k=new z(N=>new z(E=>new Set)),D=new Set(f.get(A).keys());if(D.size===0)return k;for(let N of oe(i,A))if(!(N.kind!=="functional"||N.value===null)){for(let E of i.utilities.keys("functional")){if(E===N.root)continue;let U=bi(i,{...Ke(N),root:E}),P=f.get(U);for(let[j,G]of P)if(D.has(j))for(let Z of G)k.get(j).get(Z).add(U)}return k}return k}),v=d.map((A,k)=>{let D=null;for(let N of A.keys()){let E=new Set;for(let U of m.get(N).values())for(let P of U)E.add(P);for(let U of A.get(N))for(let P of p.get(c[k]).get(N).get(U))E.add(P);if(D===null?D=E:D=gi(D,E),D.size===0)return D}return D??new Set}),h=new z(A=>new Set([A]));for(let A=0;AA.split(",").map(Number));for(let A of h.values()){let k=Array.from(A).sort((D,N)=>D-N);y.get(k.join(","))}let b=new Set(c),T=new Set;for(let A of y.values())for(let k of Zl(A)){if(k.some(E=>T.has(c[E])))continue;let D=k.flatMap(E=>v[E]).reduce(gi),N=i.storage[ve].get(u).get(k.map(E=>c[E]).sort((E,U)=>E.localeCompare(U)).join(" "));for(let E of D)if(i.storage[ve].get(u).get(E)===N){b.add(E);for(let P of k)c[P]!==E&&T.add(c[P]);break}}for(let A of T)b.delete(A);return Array.from(b)}}var wi=Symbol();function ml(){return new z(t=>{let r=t.designSystem,i=r.theme.prefix?`${r.theme.prefix}:`:"",e=r.storage[yi].get(t),n=r.storage[ki].get(t);return new z((o,l)=>{for(let c of r.parseCandidate(o)){let u=c.variants.slice().reverse().flatMap(d=>e.get(d)),f=c.important;if(f||u.length>0){let p=l.get(r.printCandidate({...c,variants:[],important:!1}));return r.theme.prefix!==null&&u.length>0&&(p=p.slice(i.length)),u.length>0&&(p=`${u.map(v=>r.printVariant(v)).join(":")}:${p}`),f&&(p+="!"),r.theme.prefix!==null&&u.length>0&&(p=`${i}${p}`),p}let m=n.get(o);if(m!==o)return m}return o})})}var gl=[xl,Kl,Ul,Il],yi=Symbol();function hl(){return new z(t=>new z(r=>{let i=[r];for(let e of gl)for(let n of i.splice(0)){let o=e(De(n),t);if(Array.isArray(o)){i.push(...o);continue}else i.push(o)}return i}))}var vl=[kl,bl,Al,zl,Vl,Nl,Pl,_l,Dl,Ll],ki=Symbol();function wl(){return new z(t=>{let r=t.designSystem;return new z(i=>{for(let e of r.parseCandidate(i)){let n=Ke(e);for(let l of vl)n=l(n,t);let o=r.printCandidate(n);if(i!==o)return o}return i})})}var yl=["t","tr","r","br","b","bl","l","tl"];function kl(t){if(t.kind==="static"&&t.root.startsWith("bg-gradient-to-")){let r=t.root.slice(15);return yl.includes(r)&&(t.root=`bg-linear-to-${r}`),t}return t}function bl(t,r){let i=r.designSystem.storage[Zt];if(t.kind==="arbitrary"){let[e,n]=i(t.value,t.modifier===null?1:0);e!==t.value&&(t.value=e,n!==null&&(t.modifier=n))}else if(t.kind==="functional"&&t.value?.kind==="arbitrary"){let[e,n]=i(t.value.value,t.modifier===null?1:0);e!==t.value.value&&(t.value.value=e,n!==null&&(t.modifier=n))}return t}function xl(t,r){let i=r.designSystem.storage[Zt],e=At(t);for(let[n]of e)if(n.kind==="arbitrary"){let[o]=i(n.selector,2);o!==n.selector&&(n.selector=o)}else if(n.kind==="functional"&&n.value?.kind==="arbitrary"){let[o]=i(n.value.value,2);o!==n.value.value&&(n.value.value=o)}return t}function Al(t,r){return t.kind==="arbitrary"?t.value=di(t.value,r.designSystem):t.kind==="functional"&&t.value?.kind==="arbitrary"&&(t.value.value=di(t.value.value,r.designSystem)),t}function di(t,r){let i=r.theme.prefix?`--${r.theme.prefix}-spacing`:"--spacing",e=F(t);return _(e,n=>{if(!(n.kind!=="function"||n.value!=="calc")&&n.nodes.length===5&&!(n.nodes[2].kind!=="word"||n.nodes[2].value!=="*")&&!(n.nodes[0].kind!=="function"||n.nodes[0].value!=="var"||n.nodes[0].nodes.length!==1||n.nodes[0].nodes[0].kind!=="word"||n.nodes[0].nodes[0].value!==i))return R.Replace(F(`--spacing(${Y([n.nodes[4]])})`))}),Y(e)}var Zt=Symbol();function Cl(t){return r(t);function r(i){function e(c,u=0){let f=F(c);if(u&2)return[yt(f,l),null];let m=0,d=0;if(_(f,h=>{h.kind==="function"&&h.value==="theme"&&(m+=1,_(h.nodes,y=>y.kind==="separator"&&y.value.includes(",")?R.Stop:y.kind==="word"&&y.value==="/"?(d+=1,R.Stop):R.Skip))}),m===0)return[c,null];if(d===0)return[yt(f,o),null];if(d>1)return[yt(f,l),null];let p=null;return[yt(f,(h,y)=>{let b=L(h,"/").map(T=>T.trim());if(b.length>2)return null;if(f.length===1&&b.length===2&&u&1){let[T,A]=b;if(/^\d+%$/.test(A))p={kind:"named",value:A.slice(0,-1)};else if(/^0?\.\d+$/.test(A)){let k=Number(A)*100;p={kind:Number.isInteger(k)?"named":"arbitrary",value:k.toString()}}else p={kind:"arbitrary",value:A};h=T}return o(h,y)||l(h,y)}),p]}function n(c,u=!0){let f=`--${Me(Pe(c))}`;return i.theme.get([f])?u&&i.theme.prefix?`--${i.theme.prefix}-${f.slice(2)}`:f:null}function o(c,u){let f=n(c);if(f)return u?`var(${f}, ${u})`:`var(${f})`;let m=Pe(c);if(m[0]==="spacing"&&i.theme.get(["--spacing"])){let d=m[1];return ee(d)?`--spacing(${d})`:null}return null}function l(c,u){let f=L(c,"/").map(p=>p.trim());c=f.shift();let m=n(c,!1);if(!m)return null;let d=f.length>0?`/${f.join("/")}`:"";return u?`--theme(${m}${d}, ${u})`:`--theme(${m}${d})`}return e}}function yt(t,r){return _(t,(i,e)=>{if(i.kind==="function"&&i.value==="theme"){if(i.nodes.length<1)return;i.nodes[0].kind==="separator"&&i.nodes[0].value.trim()===""&&i.nodes.shift();let n=i.nodes[0];if(n.kind!=="word")return;let o=n.value,l=1;for(let f=l;f0?r(o,Y(c)):r(o);if(u===null)return;if(e.parent){let f=e.parent.nodes.indexOf(i)-1;for(;f!==-1;){let m=e.parent.nodes[f];if(m.kind==="separator"&&m.value.trim()===""){f-=1;continue}/^[-+*/]$/.test(m.value.trim())&&(u=`(${u})`);break}}return R.Replace(F(u))}}),Y(t)}function $l(t){if(t[0]!=="'"&&t[0]!=='"')return t;let r="",i=t[0];for(let e=1;e{if(n===0)return null;let c=ae.get(Yt(l,r?.rem??null));if(!c)return null;let[u,f]=c;return f!==o?null:u/n})}function Vl(t,r){if(t.kind!=="arbitrary"&&!(t.kind==="functional"&&t.value?.kind==="arbitrary"))return t;let i=r.designSystem,e=i.storage[Jt].get(r.signatureOptions),n=i.storage[ve].get(r.signatureOptions),o=i.storage[tt].get(r.signatureOptions),l=i.printCandidate(t),c=n.get(l);if(typeof c!="string")return t;for(let f of u(c,t))if(o(t,f)&&Tl(i,t,f))return f;return t;function*u(f,m){let d=e.get(f);if(d.length>1){let p;for(let v of d)if(v[0]!=="-"){if(p)return;p=v}if(p)for(let v of oe(i,p))yield v;return}if(d.length===0&&m.modifier){let p={...m,modifier:null},v=n.get(i.printCandidate(p));if(typeof v=="string")for(let h of u(v,p))yield Object.assign({},h,{modifier:m.modifier})}if(d.length===1)for(let p of oe(i,d[0]))yield p;else if(d.length===0){let p=m.kind==="arbitrary"?m.value:m.value?.value??null;if(p===null)return;if(r.signatureOptions.rem!==null&&m.kind==="functional"&&m.value?.kind==="arbitrary"){let y=i.storage[bt]?.get(p)??null;y!==null&&ee(y)&&(yield Object.assign({},m,{value:{kind:"named",value:y,fraction:null}}))}let v=i.storage[bt]?.get(p)??null,h="";v!==null&&v<0&&(h="-",v=Math.abs(v));for(let y of Array.from(i.utilities.keys("functional")).sort((b,T)=>+(b[0]==="-")-+(T[0]==="-"))){h&&(y=`${h}${y}`);for(let b of oe(i,`${y}-${p}`))yield b;if(m.modifier)for(let b of oe(i,`${y}-${p}${m.modifier}`))yield b;if(v!==null){for(let b of oe(i,`${y}-${v}`))yield b;if(m.modifier)for(let b of oe(i,`${y}-${v}${Qe(m.modifier)}`))yield b}for(let b of oe(i,`${y}-[${p}]`))yield b;if(m.modifier)for(let b of oe(i,`${y}-[${p}]${Qe(m.modifier)}`))yield b}}}}function Tl(t,r,i){let e=null;if(r.kind==="functional"&&r.value?.kind==="arbitrary"&&r.value.value.includes("var(--")?e=r.value.value:r.kind==="arbitrary"&&r.value.includes("var(--")&&(e=r.value),e===null)return!0;let n=t.candidatesToCss([t.printCandidate(i)]).join(` +`),o=!0;return _(F(e),l=>{if(l.kind==="function"&&l.value==="var"){let c=l.nodes[0].value;if(!new RegExp(`var\\(${c}[,)]\\s*`,"g").test(n)||n.includes(`${c}:`))return o=!1,R.Stop}}),o}function Nl(t,r){if(t.kind!=="functional"||t.value?.kind!=="named")return t;let i=r.designSystem,e=i.storage[Jt].get(r.signatureOptions),n=i.storage[ve].get(r.signatureOptions),o=i.storage[tt].get(r.signatureOptions),l=i.printCandidate(t),c=n.get(l);if(typeof c!="string")return t;for(let f of u(c,t))if(o(t,f))return f;return t;function*u(f,m){let d=e.get(f);if(d.length>1){let p;for(let v of d)if(v[0]!=="-"){if(p)return;p=v}if(p)for(let v of oe(i,p))yield v;return}if(d.length===0&&m.modifier){let p={...m,modifier:null},v=n.get(i.printCandidate(p));if(typeof v=="string")for(let h of u(v,p))yield Object.assign({},h,{modifier:m.modifier})}if(d.length===1)for(let p of oe(i,d[0]))yield p}}var El=new Map([["order-none","order-0"],["break-words","wrap-break-word"],["overflow-ellipsis","text-ellipsis"]]),Rl=new Map([[/^(-)?start-(.*?)$/,"$1inset-s-$2"],[/^(-)?end-(.*?)$/,"$1inset-e-$2"]]);function*Ol(t){let r=El.get(t);r&&(yield r);for(let[i,e]of Rl){let n=t.replace(i,e);n!==t&&(yield n)}}function Pl(t,r){let i=r.designSystem,e=i.storage[tt].get(r.signatureOptions),n=bi(i,t);for(let o of Ol(n)){if(!e(t,o))continue;let[l]=oe(i,o);return l}return t}function Il(t,r){let i=r.designSystem,e=i.storage[Ct],n=i.storage[Ci],o=At(t);for(let[l]of o){if(l.kind==="compound")continue;let c=i.printVariant(l),u=e.get(c);if(typeof u!="string")continue;let f=n.get(u);if(f.length!==1)continue;let m=f[0],d=i.parseVariant(m);d!==null&&pe(l,d)}return t}function _l(t,r){let i=r.designSystem,e=i.storage[ve].get(r.signatureOptions);if(t.kind==="functional"&&t.value?.kind==="arbitrary"&&t.value.dataType!==null){let n=i.printCandidate({...t,value:{...t.value,dataType:null}});e.get(i.printCandidate(t))===e.get(n)&&(t.value.dataType=null)}return t}function Dl(t,r){if(t.kind!=="functional"||t.value?.kind!=="arbitrary")return t;let i=r.designSystem,e=i.storage[ve].get(r.signatureOptions),n=e.get(i.printCandidate(t));if(n===null)return t;for(let o of xi(t))if(e.get(i.printCandidate({...t,value:o}))===n)return t.value=o,t;return t}function Kl(t){let r=At(t);for(let[i]of r)if(i.kind==="functional"&&i.root==="data"&&i.value?.kind==="arbitrary"&&!i.value.value.includes("="))i.value={kind:"named",value:i.value.value};else if(i.kind==="functional"&&i.root==="aria"&&i.value?.kind==="arbitrary"&&(i.value.value.endsWith("=true")||i.value.value.endsWith('="true"')||i.value.value.endsWith("='true'"))){let[e,n]=L(i.value.value,"=");if(e[e.length-1]==="~"||e[e.length-1]==="|"||e[e.length-1]==="^"||e[e.length-1]==="$"||e[e.length-1]==="*")continue;i.value={kind:"named",value:i.value.value.slice(0,i.value.value.indexOf("="))}}else i.kind==="functional"&&i.root==="supports"&&i.value?.kind==="arbitrary"&&/^[a-z-][a-z0-9-]*$/i.test(i.value.value)&&(i.value={kind:"named",value:i.value.value});return t}function*xi(t,r=t.value?.value??"",i=new Set){if(i.has(r))return;if(i.add(r),yield{kind:"named",value:r,fraction:null},r.endsWith("%")&&ee(r.slice(0,-1))&&(yield{kind:"named",value:r.slice(0,-1),fraction:null}),r.includes("/")){let[o,l]=r.split("/");I(o)&&I(l)&&(yield{kind:"named",value:o,fraction:`${o}/${l}`})}let e=new Set;for(let o of r.matchAll(/(\d+\/\d+)|(\d+\.?\d+)/g))e.add(o[0].trim());let n=Array.from(e).sort((o,l)=>o.length-l.length);for(let o of n)yield*xi(t,o,i)}function mi(t){return!t.some(r=>r.kind==="separator"&&r.value.trim()===",")}function kt(t){let r=t.value.trim();return t.kind==="selector"&&r[0]==="["&&r[r.length-1]==="]"}function Ul(t,r){let i=[t],e=r.designSystem,n=e.storage[Ct],o=At(t);for(let[l,c]of o)if(l.kind==="compound"&&(l.root==="has"||l.root==="not"||l.root==="in")&&l.modifier!==null&&"modifier"in l.variant&&(l.variant.modifier=l.modifier,l.modifier=null),l.kind==="arbitrary"){if(l.relative)continue;let u=Oe(l.selector.trim());if(!mi(u))continue;if(c===null&&u.length===3&&u[0].kind==="selector"&&u[0].value==="&"&&u[1].kind==="combinator"&&u[1].value.trim()===">"&&u[2].kind==="selector"&&u[2].value==="*"){pe(l,e.parseVariant("*"));continue}if(c===null&&u.length===3&&u[0].kind==="selector"&&u[0].value==="&"&&u[1].kind==="combinator"&&u[1].value.trim()===""&&u[2].kind==="selector"&&u[2].value==="*"){pe(l,e.parseVariant("**"));continue}if(c===null&&u.length===3&&u[1].kind==="combinator"&&u[1].value.trim()===""&&u[2].kind==="selector"&&u[2].value==="&"){u.pop(),u.pop(),pe(l,e.parseVariant(`in-[${he(u)}]`));continue}if(c===null&&u[0].kind==="selector"&&(u[0].value==="@media"||u[0].value==="@supports")){let p=n.get(e.printVariant(l)),v=F(he(u)),h=!1;if(_(v,y=>{if(y.kind==="word"&&y.value==="not")return h=!0,R.Replace([])}),v=F(Y(v)),_(v,y=>{y.kind==="separator"&&y.value!==" "&&y.value.trim()===""&&(y.value=" ")}),h){let y=e.parseVariant(`not-[${Y(v)}]`);if(y===null)continue;let b=n.get(e.printVariant(y));if(p===b){pe(l,y);continue}}}let f=null;c===null&&u.length===3&&u[0].kind==="selector"&&u[0].value.trim()==="&"&&u[1].kind==="combinator"&&u[1].value.trim()===">"&&u[2].kind==="selector"&&(kt(u[2])||u[2].value[0]===":")&&(u=[u[2]],f=e.parseVariant("*")),c===null&&u.length===3&&u[0].kind==="selector"&&u[0].value.trim()==="&"&&u[1].kind==="combinator"&&u[1].value.trim()===""&&u[2].kind==="selector"&&(kt(u[2])||u[2].value[0]===":")&&(u=[u[2]],f=e.parseVariant("**"));let m=u.filter(p=>!(p.kind==="selector"&&p.value.trim()==="&"));if(m.length!==1)continue;let d=m[0];if(d.kind==="function"&&d.value===":is"){if(!mi(d.nodes)||d.nodes.length!==1||!kt(d.nodes[0]))continue;d=d.nodes[0]}if(d.kind==="function"&&d.value[0]===":"||d.kind==="selector"&&d.value[0]===":"){let p=d,v=!1;if(p.kind==="function"&&p.value===":not"){if(v=!0,p.nodes.length!==1||p.nodes[0].kind!=="selector"&&p.nodes[0].kind!=="function"||p.nodes[0].value[0]!==":")continue;p=p.nodes[0]}let h=(b=>{if(b===":nth-child"&&p.kind==="function"&&p.nodes.length===1&&p.nodes[0].kind==="value"&&p.nodes[0].value==="odd")return v?(v=!1,"even"):"odd";if(b===":nth-child"&&p.kind==="function"&&p.nodes.length===1&&p.nodes[0].kind==="value"&&p.nodes[0].value==="even")return v?(v=!1,"odd"):"even";for(let[T,A]of[[":nth-child","nth"],[":nth-last-child","nth-last"],[":nth-of-type","nth-of-type"],[":nth-last-of-type","nth-of-last-type"]])if(b===T&&p.kind==="function"&&p.nodes.length===1)return p.nodes.length===1&&p.nodes[0].kind==="value"&&I(p.nodes[0].value)?`${A}-${p.nodes[0].value}`:`${A}-[${he(p.nodes)}]`;if(v){let T=n.get(e.printVariant(l)),A=n.get(`not-[${b}]`);if(T===A)return`[&${b}]`}return null})(p.value);if(h===null){if(f)return pe(l,{kind:"arbitrary",selector:d.value,relative:!1}),[f,l];continue}v&&(h=`not-${h}`);let y=e.parseVariant(h);if(y===null)continue;pe(l,y)}else if(kt(d)){let p=Yr(d.value);if(p===null)continue;if(p.attribute.startsWith("data-")){let v=p.attribute.slice(5);pe(l,{kind:"functional",root:"data",modifier:null,value:p.value===null?{kind:"named",value:v}:{kind:"arbitrary",value:`${v}${p.operator}${p.quote??""}${p.value}${p.quote??""}${p.sensitivity?` ${p.sensitivity}`:""}`}})}else if(p.attribute.startsWith("aria-")){let v=p.attribute.slice(5);pe(l,{kind:"functional",root:"aria",modifier:null,value:p.value===null?{kind:"arbitrary",value:v}:p.operator==="="&&p.value==="true"&&p.sensitivity===null?{kind:"named",value:v}:{kind:"arbitrary",value:`${p.attribute}${p.operator}${p.quote??""}${p.value}${p.quote??""}${p.sensitivity?` ${p.sensitivity}`:""}`}})}else pe(l,{kind:"arbitrary",selector:d.value,relative:!1})}if(f)return[f,l]}return i}function zl(t,r){if(t.kind!=="functional"||t.value?.kind!=="arbitrary")return t;let e=r.designSystem.storage[tt].get(r.signatureOptions),n=F(t.value.value);if(n.length===1&&n[0].kind==="function"&&n[0].value==="calc"){let[o,l]=et(n);if(o){let c=Ke(t);c.value.value=Y(l),e(t,c)&&(t=c,n=l)}}if(t.root[0]==="-"){if(n.length===1&&n[0].kind==="function"&&n[0].value==="var")return t;let o=F(`calc(${t.value.value} * -1)`),[l,c]=et(o);if(l){let u=Ke(t);u.root=u.root.slice(1),u.value.value=Y(c),e(t,u)&&(t=u,n=c)}}if(n.length===1&&n[0].kind==="function"&&n[0].value==="calc"){let o=n[0].nodes;if(o.length===5&&o[1].kind==="separator"&&o[1].value===" "&&o[2].kind==="word"&&o[2].value==="*"&&o[3].kind==="separator"&&o[3].value===" "){let l=o[4].kind==="word"&&o[4].value==="-1"?o[0]:o[0].kind==="word"&&o[0].value==="-1"?o[4]:null;if(l){let c=Ke(t);c.root=`-${t.root}`,c.value.value=Y([l]),e(t,c)&&(t=c)}}}return t}function Ll(t,r){if(t.kind!=="functional"&&t.kind!=="arbitrary"||t.modifier===null)return t;let i=r.designSystem,e=i.storage[ve].get(r.signatureOptions),n=e.get(i.printCandidate(t)),o=t.modifier;if(n===e.get(i.printCandidate({...t,modifier:null})))return t.modifier=null,t;{let l={kind:"named",value:o.value.endsWith("%")?o.value.includes(".")?`${Number(o.value.slice(0,-1))}`:o.value.slice(0,-1):o.value,fraction:null};if(n===e.get(i.printCandidate({...t,modifier:l})))return t.modifier=l,t}{let l={kind:"named",value:`${parseFloat(o.value)*100}`,fraction:null};if(n===e.get(i.printCandidate({...t,modifier:l})))return t.modifier=l,t}return t}var ve=Symbol();function jl(t){return new z(r=>new z(i=>{try{i=t.theme.prefix&&!i.startsWith(t.theme.prefix)?`${t.theme.prefix}:${i}`:i;let e=[q(".x",[W("@apply",i)])];return ql(t,()=>{for(let o of t.parseCandidate(i))t.compileAstNodes(o,1);Se(e,t)}),Ai(t,e,r),ie(e)}catch{return Symbol()}}))}function Ai(t,r,i){let{rem:e}=i;return _(r,{enter(n,o){if(n.kind==="declaration"){if(n.value===void 0||n.property==="--tw-sort")return R.Replace([]);if(n.property.startsWith("--tw-")&&(o.parent?.nodes??[]).some(d=>d.kind==="declaration"&&n.value===d.value&&n.important===d.important&&!d.property.startsWith("--tw-")))return R.Replace([]);if(i.features&1){let d=ei(n,i.features);if(d)return R.Replace(d)}n.value.includes("var(")&&(n.value=Ml(n.value,t));let l=F(n.value),[c,u]=et(l,e),[f,m]=Gr(u);(c||f)&&(n.value=Y(m)),n.value=Ce(n.value)}else{if(n.kind==="context"||n.kind==="at-root")return R.Replace(n.nodes);if(n.kind==="comment")return R.Replace([]);if(n.kind==="at-rule"&&n.name==="@property")return R.Replace([])}},exit(n){if(n.kind==="rule"||n.kind==="at-rule"){if(n.nodes.length>1){let o=new Set;for(let l=n.nodes.length-1;l>=0;l--){let c=n.nodes[l];c.kind==="declaration"&&c.value!==void 0&&(o.has(c.property)&&n.nodes.splice(l,1),o.add(c.property))}}n.nodes.sort((o,l)=>o.kind!=="declaration"||l.kind!=="declaration"?0:o.property.localeCompare(l.property))}}}),r}function Ml(t,r){let i=!1,e=F(t),n=new Set;return _(e,o=>{if(o.kind!=="function"||o.value!=="var"||o.nodes.length!==1&&o.nodes.length<3)return;let l=o.nodes[0].value;r.theme.prefix&&l.startsWith(`--${r.theme.prefix}-`)&&(l=l.slice(`--${r.theme.prefix}-`.length));let c=r.resolveThemeValue(l);if(!n.has(l)&&(n.add(l),c!==void 0&&(o.nodes.length===1&&(i=!0,o.nodes.push(...F(`,${c}`))),o.nodes.length>=3))){let u=Y(o.nodes),f=`${o.nodes[0].value},${c}`;if(u===f)return i=!0,R.Replace(F(c))}}),i?Y(e):t}var Ht=Symbol();function Fl(){return new z(t=>new z(r=>new z(i=>new Set)))}var xt=Symbol();function Wl(t){return new z(r=>new z(i=>{let e=new z(o=>new Set);t.theme.prefix&&!i.startsWith(t.theme.prefix)&&(i=`${t.theme.prefix}:${i}`);let n=t.parseCandidate(i);return n.length===0||_(Ai(t,t.compileAstNodes(n[0]).map(o=>te(o.node)),r),o=>{o.kind==="declaration"&&(e.get(o.property).add(o.value),t.storage[Ht].get(r).get(o.property).get(o.value).add(i))}),e}))}var Jt=Symbol();function Bl(t){return new z(r=>{let i=t.storage[ve].get(r),e=new z(()=>[]);for(let[n,o]of t.getClassList()){let l=i.get(n);if(typeof l=="string"){if(n[0]==="-"&&n.endsWith("-0")){let c=i.get(n.slice(1));if(typeof c=="string"&&l===c)continue}e.get(l).push(n),t.storage[xt].get(r).get(n);for(let c of o.modifiers){if(ee(c))continue;let u=`${n}/${c}`,f=i.get(u);typeof f=="string"&&(e.get(f).push(u),t.storage[xt].get(r).get(u))}}}return e})}var Ct=Symbol();function Yl(t){return new z(r=>{try{r=t.theme.prefix&&!r.startsWith(t.theme.prefix)?`${t.theme.prefix}:${r}`:r;let i=[q(".x",[W("@apply",`${r}:flex`)])];return Se(i,t),_(i,n=>{if(n.kind==="at-rule"&&n.params.includes(" "))n.params=n.params.replaceAll(" ","");else if(n.kind==="rule"){let o=Oe(n.selector),l=!1;_(o,c=>{if(c.kind==="separator"&&c.value!==" ")c.value=c.value.trim(),l=!0;else if(c.kind==="function"&&c.value===":is"){if(c.nodes.length===1)return l=!0,R.Replace(c.nodes);if(c.nodes.length===2&&c.nodes[0].kind==="selector"&&c.nodes[0].value==="*"&&c.nodes[1].kind==="selector"&&c.nodes[1].value[0]===":")return l=!0,R.Replace(c.nodes[1])}else c.kind==="function"&&c.value[0]===":"&&c.nodes[0]?.kind==="selector"&&c.nodes[0]?.value[0]===":"&&(l=!0,c.nodes.unshift({kind:"selector",value:"*"}))}),l&&(n.selector=he(o))}}),ie(i)}catch{return Symbol()}})}var Ci=Symbol();function Gl(t){let r=t.storage[Ct],i=new z(()=>[]);for(let[e,n]of t.variants.entries())if(n.kind==="static"){let o=r.get(e);if(typeof o!="string")continue;i.get(o).push(e)}return i}function ql(t,r){let i=t.theme.values.get,e=new Set;t.theme.values.get=n=>{let o=i.call(t.theme.values,n);return o===void 0||o.options&1&&(e.add(o),o.options&=-2),o};try{return r()}finally{t.theme.values.get=i;for(let n of e)n.options|=1}}function*Zl(t){let r=t.length,i=1n<=2;e--){let n=(1n<>BigInt(u)&1n&&o.push(t[u]);yield o;let l=n&-n,c=n+l;n=((c^n)>>2n)/l|c}}}function gi(t,r){if(typeof t.intersection=="function")return t.intersection(r);if(t.size===0||r.size===0)return new Set;let i=new Set(t);for(let e of r)i.has(e)||i.delete(e);return i}var Jl=/^\d+\/\d+$/;function $i(t){let r=new z(n=>({name:n,utility:n,fraction:!1,modifiers:[]}));for(let n of t.utilities.keys("static")){if(t.utilities.getCompletions(n).length===0)continue;let l=r.get(n);l.fraction=!1,l.modifiers=[]}for(let n of t.utilities.keys("functional")){let o=t.utilities.getCompletions(n);for(let l of o)for(let c of l.values){let u=c!==null&&Jl.test(c),f=c===null?n:`${n}-${c}`,m=r.get(f);if(m.utility=n,m.fraction||=u,m.modifiers.push(...l.modifiers),l.supportsNegative){let d=r.get(`-${f}`);d.utility=`-${n}`,d.fraction||=u,d.modifiers.push(...l.modifiers)}m.modifiers=Array.from(new Set(m.modifiers))}}if(r.size===0)return[];let i=Array.from(r.values());return i.sort((n,o)=>wt(n.name,o.name)),Ql(i)}function Ql(t){let r=[],i=null,e=new Map,n=new z(()=>[]);for(let l of t){let{utility:c,fraction:u}=l;i||(i={utility:c,items:[]},e.set(c,i)),c!==i.utility&&(r.push(i),i={utility:c,items:[]},e.set(c,i)),u?n.get(c).push(l):i.items.push(l)}i&&r[r.length-1]!==i&&r.push(i);for(let[l,c]of n){let u=e.get(l);u&&u.items.push(...c)}let o=[];for(let l of r)for(let c of l.items)o.push([c.name,{modifiers:c.modifiers}]);return o}function Si(t){let r=[];for(let[e,n]of t.variants.entries()){let c=function({value:u,modifier:f}={}){let m=e;u&&(m+=o?`-${u}`:u),f&&(m+=`/${f}`);let d=t.parseVariant(m);if(!d)return[];let p=q(".__placeholder__",[]);if(Fe(p,d,t.variants)===null)return[];let v=[];return _(p.nodes,{exit(h,y){if(h.kind!=="rule"&&h.kind!=="at-rule"||h.nodes.length>0)return;let b=y.path();b.push(h),b.sort((k,D)=>{let N=k.kind==="at-rule",E=D.kind==="at-rule";return N&&!E?-1:!N&&E?1:0});let T=b.flatMap(k=>k.kind==="rule"?k.selector==="&"?[]:[k.selector]:k.kind==="at-rule"?[`${k.name} ${k.params}`]:[]),A="";for(let k=T.length-1;k>=0;k--)A=A===""?T[k]:`${T[k]} { ${A} }`;v.push(A)}}),v};var i=c;if(n.kind==="arbitrary")continue;let o=e!=="@",l=t.variants.getCompletions(e);switch(n.kind){case"static":{r.push({name:e,values:l,isArbitrary:!1,hasDash:o,selectors:c});break}case"functional":{r.push({name:e,values:l,isArbitrary:!0,hasDash:o,selectors:c});break}case"compound":{r.push({name:e,values:l,isArbitrary:!0,hasDash:o,selectors:c});break}}}return r}function Vi(t,r){let{astNodes:i,nodeSorting:e}=Ve(Array.from(r),t),n=new Map(r.map(l=>[l,null])),o=0n;for(let l of i){let c=e.get(l)?.candidate;c&&n.set(c,n.get(c)??o++)}return r.map(l=>[l,n.get(l)??null])}var $t=/^@?[a-z0-9][a-zA-Z0-9_-]*(?{l.kind==="rule"?n.push(l.selector):l.kind==="at-rule"&&l.name==="@variant"?o=!0:l.kind==="at-rule"&&l.name!=="@slot"&&n.push(`${l.name} ${l.params}`)}),this.static(r,l=>{let c=i.map(te);o&&rt(c,e),Xt(c,l.nodes),l.nodes=c},{compounds:Ie(n)})}functional(r,i,{compounds:e,order:n}={}){this.set(r,{kind:"functional",applyFn:i,compoundsWith:0,compounds:e??2,order:n})}compound(r,i,e,{compounds:n,order:o}={}){this.set(r,{kind:"compound",applyFn:e,compoundsWith:i,compounds:n??2,order:o})}group(r,i){this.groupOrder=this.nextOrder(),i&&this.compareFns.set(this.groupOrder,i),r(),this.groupOrder=null}has(r){return this.variants.has(r)}get(r){return this.variants.get(r)}kind(r){return this.variants.get(r)?.kind}compoundsWith(r,i){let e=this.variants.get(r),n=typeof i=="string"?this.variants.get(i):i.kind==="arbitrary"?{compounds:Ie([i.selector])}:this.variants.get(i.root);return!(!e||!n||e.kind!=="compound"||n.compounds===0||e.compoundsWith===0||(e.compoundsWith&n.compounds)===0)}suggest(r,i){this.completions.set(r,i)}getCompletions(r){return this.completions.get(r)?.()??[]}compare(r,i){if(r===i)return 0;if(r===null)return-1;if(i===null)return 1;if(r.kind==="arbitrary"&&i.kind==="arbitrary")return r.selector{p.nodes=m.map(v=>J(v,p.nodes))},{compounds:d})}i("*",[":is(& > *)"],{compounds:0}),i("**",[":is(& *)"],{compounds:0});function e(f,m){return m.map(d=>{d=d.trim();let p=L(d," ");return p[0]==="not"?p.slice(1).join(" "):f==="@container"?p[0][0]==="("?`not ${d}`:p[1]==="not"?`${p[0]} ${p.slice(2).join(" ")}`:`${p[0]} not ${p.slice(1).join(" ")}`:`not ${d}`})}let n=["@media","@supports","@container"];function o(f){for(let m of n){if(m!==f.name)continue;let d=L(f.params,",");return d.length>1?null:(d=e(f.name,d),W(f.name,d.join(", ")))}return null}function l(f){return f.includes("::")?null:`&:not(${L(f,",").map(d=>(d=d.replaceAll("&","*"),d)).join(", ")})`}r.compound("not",3,(f,m)=>{if(m.variant.kind==="arbitrary"&&m.variant.relative||m.modifier)return null;let d=!1;if(_([f],(p,v)=>{if(p.kind!=="rule"&&p.kind!=="at-rule")return R.Continue;if(p.nodes.length>0)return R.Continue;let h=[],y=[],b=v.path();b.push(p);for(let A of b)A.kind==="at-rule"?h.push(A):A.kind==="rule"&&y.push(A);if(h.length>1)return R.Stop;if(y.length>1)return R.Stop;let T=[];for(let A of y){let k=l(A.selector);if(!k)return d=!1,R.Stop;T.push(q(k,[]))}for(let A of h){let k=o(A);if(!k)return d=!1,R.Stop;T.push(k)}return Object.assign(f,q("&",T)),d=!0,R.Skip}),f.kind==="rule"&&f.selector==="&"&&f.nodes.length===1&&Object.assign(f,f.nodes[0]),!d)return null}),r.suggest("not",()=>Array.from(r.keys()).filter(f=>r.compoundsWith("not",f))),r.compound("group",2,(f,m)=>{if(m.variant.kind==="arbitrary"&&m.variant.relative)return null;let d=m.modifier?`:where(.${t.prefix?`${t.prefix}\\:`:""}group\\/${m.modifier.value})`:`:where(.${t.prefix?`${t.prefix}\\:`:""}group)`,p=!1;if(_([f],(v,h)=>{if(v.kind!=="rule")return R.Continue;for(let b of h.path())if(b.kind==="rule")return p=!1,R.Stop;let y=v.selector.replaceAll("&",d);L(y,",").length>1&&(y=`:is(${y})`),v.selector=`&:is(${y} *)`,p=!0}),!p)return null}),r.suggest("group",()=>Array.from(r.keys()).filter(f=>r.compoundsWith("group",f))),r.compound("peer",2,(f,m)=>{if(m.variant.kind==="arbitrary"&&m.variant.relative)return null;let d=m.modifier?`:where(.${t.prefix?`${t.prefix}\\:`:""}peer\\/${m.modifier.value})`:`:where(.${t.prefix?`${t.prefix}\\:`:""}peer)`,p=!1;if(_([f],(v,h)=>{if(v.kind!=="rule")return R.Continue;for(let b of h.path())if(b.kind==="rule")return p=!1,R.Stop;let y=v.selector.replaceAll("&",d);L(y,",").length>1&&(y=`:is(${y})`),v.selector=`&:is(${y} ~ *)`,p=!0}),!p)return null}),r.suggest("peer",()=>Array.from(r.keys()).filter(f=>r.compoundsWith("peer",f))),i("first-letter",["&::first-letter"]),i("first-line",["&::first-line"]),i("marker",["& *::marker","&::marker","& *::-webkit-details-marker","&::-webkit-details-marker"]),i("selection",["& *::selection","&::selection"]),i("file",["&::file-selector-button"]),i("placeholder",["&::placeholder"]),i("backdrop",["&::backdrop"]),i("details-content",["&::details-content"]);{let f=function(){return B([W("@property","--tw-content",[a("syntax",'"*"'),a("initial-value",'""'),a("inherits","false")])])};var c=f;r.static("before",m=>{m.nodes=[q("&::before",[f(),a("content","var(--tw-content)"),...m.nodes])]},{compounds:0}),r.static("after",m=>{m.nodes=[q("&::after",[f(),a("content","var(--tw-content)"),...m.nodes])]},{compounds:0})}i("first",["&:first-child"]),i("last",["&:last-child"]),i("only",["&:only-child"]),i("odd",["&:nth-child(odd)"]),i("even",["&:nth-child(even)"]),i("first-of-type",["&:first-of-type"]),i("last-of-type",["&:last-of-type"]),i("only-of-type",["&:only-of-type"]),i("visited",["&:visited"]),i("target",["&:target"]),i("open",["&:is([open], :popover-open, :open)"]),i("default",["&:default"]),i("checked",["&:checked"]),i("indeterminate",["&:indeterminate"]),i("placeholder-shown",["&:placeholder-shown"]),i("autofill",["&:autofill"]),i("optional",["&:optional"]),i("required",["&:required"]),i("valid",["&:valid"]),i("invalid",["&:invalid"]),i("user-valid",["&:user-valid"]),i("user-invalid",["&:user-invalid"]),i("in-range",["&:in-range"]),i("out-of-range",["&:out-of-range"]),i("read-only",["&:read-only"]),i("empty",["&:empty"]),i("focus-within",["&:focus-within"]),r.static("hover",f=>{f.nodes=[q("&:hover",[W("@media","(hover: hover)",f.nodes)])]}),i("focus",["&:focus"]),i("focus-visible",["&:focus-visible"]),i("active",["&:active"]),i("enabled",["&:enabled"]),i("disabled",["&:disabled"]),i("inert",["&:is([inert], [inert] *)"]),r.compound("in",2,(f,m)=>{if(m.modifier)return null;let d=!1;if(_([f],(p,v)=>{if(p.kind!=="rule")return R.Continue;for(let h of v.path())if(h.kind==="rule")return d=!1,R.Stop;p.selector=`:where(${p.selector.replaceAll("&","*")}) &`,d=!0}),!d)return null}),r.suggest("in",()=>Array.from(r.keys()).filter(f=>r.compoundsWith("in",f))),r.compound("has",2,(f,m)=>{if(m.modifier)return null;let d=!1;if(_([f],(p,v)=>{if(p.kind!=="rule")return R.Continue;for(let h of v.path())if(h.kind==="rule")return d=!1,R.Stop;p.selector=`&:has(${p.selector.replaceAll("&","*")})`,d=!0}),!d)return null}),r.suggest("has",()=>Array.from(r.keys()).filter(f=>r.compoundsWith("has",f))),r.functional("aria",(f,m)=>{if(!m.value||m.modifier)return null;m.value.kind==="arbitrary"?f.nodes=[q(`&[aria-${Ti(m.value.value)}]`,f.nodes)]:f.nodes=[q(`&[aria-${m.value.value}="true"]`,f.nodes)]}),r.suggest("aria",()=>["busy","checked","disabled","expanded","hidden","pressed","readonly","required","selected"]),r.functional("data",(f,m)=>{if(!m.value||m.modifier)return null;f.nodes=[q(`&[data-${Ti(m.value.value)}]`,f.nodes)]}),r.functional("nth",(f,m)=>{if(!m.value||m.modifier||m.value.kind==="named"&&!I(m.value.value))return null;f.nodes=[q(`&:nth-child(${m.value.value})`,f.nodes)]}),r.functional("nth-last",(f,m)=>{if(!m.value||m.modifier||m.value.kind==="named"&&!I(m.value.value))return null;f.nodes=[q(`&:nth-last-child(${m.value.value})`,f.nodes)]}),r.functional("nth-of-type",(f,m)=>{if(!m.value||m.modifier||m.value.kind==="named"&&!I(m.value.value))return null;f.nodes=[q(`&:nth-of-type(${m.value.value})`,f.nodes)]}),r.functional("nth-last-of-type",(f,m)=>{if(!m.value||m.modifier||m.value.kind==="named"&&!I(m.value.value))return null;f.nodes=[q(`&:nth-last-of-type(${m.value.value})`,f.nodes)]}),r.functional("supports",(f,m)=>{if(!m.value||m.modifier)return null;let d=m.value.value;if(d===null)return null;if(/^[\w-]*\s*\(/.test(d)){let p=d.replace(/\b(and|or|not)\b/g," $1 ");f.nodes=[W("@supports",p,f.nodes)];return}d.includes(":")||(d=`${d}: var(--tw)`),(d[0]!=="("||d[d.length-1]!==")")&&(d=`(${d})`),f.nodes=[W("@supports",d,f.nodes)]},{compounds:1}),i("motion-safe",["@media (prefers-reduced-motion: no-preference)"]),i("motion-reduce",["@media (prefers-reduced-motion: reduce)"]),i("contrast-more",["@media (prefers-contrast: more)"]),i("contrast-less",["@media (prefers-contrast: less)"]);{let f=function(m,d,p,v){if(m===d)return 0;let h=v.get(m);if(h===null)return p==="asc"?-1:1;let y=v.get(d);return y===null?p==="asc"?1:-1:Ee(h,y,p)};var u=f;{let m=t.namespace("--breakpoint"),d=new z(p=>{switch(p.kind){case"static":return t.resolveValue(p.root,["--breakpoint"])??null;case"functional":{if(!p.value||p.modifier)return null;let v=null;return p.value.kind==="arbitrary"?v=p.value.value:p.value.kind==="named"&&(v=t.resolveValue(p.value.value,["--breakpoint"])),!v||v.includes("var(")?null:v}case"arbitrary":case"compound":return null}});r.group(()=>{r.functional("max",(p,v)=>{if(v.modifier)return null;let h=d.get(v);if(h===null)return null;p.nodes=[W("@media",`(width < ${h})`,p.nodes)]},{compounds:1})},(p,v)=>f(p,v,"desc",d)),r.suggest("max",()=>Array.from(m.keys()).filter(p=>p!==null)),r.group(()=>{for(let[p,v]of t.namespace("--breakpoint"))p!==null&&r.static(p,h=>{h.nodes=[W("@media",`(width >= ${v})`,h.nodes)]},{compounds:1});r.functional("min",(p,v)=>{if(v.modifier)return null;let h=d.get(v);if(h===null)return null;p.nodes=[W("@media",`(width >= ${h})`,p.nodes)]},{compounds:1})},(p,v)=>f(p,v,"asc",d)),r.suggest("min",()=>Array.from(m.keys()).filter(p=>p!==null))}{let m=t.namespace("--container"),d=new z(p=>{switch(p.kind){case"functional":{if(p.value===null)return null;let v=null;return p.value.kind==="arbitrary"?v=p.value.value:p.value.kind==="named"&&(v=t.resolveValue(p.value.value,["--container"])),!v||v.includes("var(")?null:v}case"static":case"arbitrary":case"compound":return null}});r.group(()=>{r.functional("@max",(p,v)=>{let h=d.get(v);if(h===null)return null;p.nodes=[W("@container",v.modifier?`${v.modifier.value} (width < ${h})`:`(width < ${h})`,p.nodes)]},{compounds:1})},(p,v)=>f(p,v,"desc",d)),r.suggest("@max",()=>Array.from(m.keys()).filter(p=>p!==null)),r.group(()=>{r.functional("@",(p,v)=>{let h=d.get(v);if(h===null)return null;p.nodes=[W("@container",v.modifier?`${v.modifier.value} (width >= ${h})`:`(width >= ${h})`,p.nodes)]},{compounds:1}),r.functional("@min",(p,v)=>{let h=d.get(v);if(h===null)return null;p.nodes=[W("@container",v.modifier?`${v.modifier.value} (width >= ${h})`:`(width >= ${h})`,p.nodes)]},{compounds:1})},(p,v)=>f(p,v,"asc",d)),r.suggest("@min",()=>Array.from(m.keys()).filter(p=>p!==null)),r.suggest("@",()=>Array.from(m.keys()).filter(p=>p!==null))}}return i("portrait",["@media (orientation: portrait)"]),i("landscape",["@media (orientation: landscape)"]),i("ltr",['&:where(:dir(ltr), [dir="ltr"], [dir="ltr"] *)']),i("rtl",['&:where(:dir(rtl), [dir="rtl"], [dir="rtl"] *)']),i("dark",["@media (prefers-color-scheme: dark)"]),i("starting",["@starting-style"]),i("print",["@media print"]),i("forced-colors",["@media (forced-colors: active)"]),i("inverted-colors",["@media (inverted-colors: inverted)"]),i("pointer-none",["@media (pointer: none)"]),i("pointer-coarse",["@media (pointer: coarse)"]),i("pointer-fine",["@media (pointer: fine)"]),i("any-pointer-none",["@media (any-pointer: none)"]),i("any-pointer-coarse",["@media (any-pointer: coarse)"]),i("any-pointer-fine",["@media (any-pointer: fine)"]),i("noscript",["@media (scripting: none)"]),r}function Ti(t){if(t.includes("=")){let[r,...i]=L(t,"="),e=i.join("=").trim();if(e[0]==="'"||e[0]==='"')return t;if(e.length>1){let n=e[e.length-1];if(e[e.length-2]===" "&&(n==="i"||n==="I"||n==="s"||n==="S"))return`${r}="${e.slice(0,-2)}" ${n}`}return`${r}="${e}"`}return t}function Xt(t,r){_(t,i=>{if(i.kind==="at-rule"&&i.name==="@slot")return R.ReplaceSkip(r);if(i.kind==="at-rule"&&(i.name==="@keyframes"||i.name==="@property"))return Object.assign(i,B([W(i.name,i.params,i.nodes)])),R.Skip})}function rt(t,r){let i=0;return _(t,e=>{if(e.kind!=="at-rule"||e.name!=="@variant")return;let n=q("&",e.nodes),o=e.params,l=r.parseVariant(o);if(l===null)throw new Error(`Cannot use \`@variant\` with unknown variant: ${o}`);if(Fe(n,l,r.variants)===null)throw new Error(`Cannot use \`@variant\` with variant: ${o}`);return i|=32,R.Replace(n)}),i}function Ei(t,r){let i=jr(t),e=Ni(t),n=new z(d=>Ir(d,m)),o=new z(d=>Array.from(Pr(d,m))),l=new z(d=>new z(p=>{let v=Ri(p,m,d);try{Ue(v.map(({node:h})=>h),m),rt(v.map(({node:h})=>h),m)}catch{return[]}return v})),c=new z(d=>{for(let p of pt(d))t.markUsedVariable(p)});function u(d){let p=[];for(let v of d){let h=!0,{astNodes:y}=Ve([v],m,{onInvalidCandidate(){h=!1}});r&&_(y,b=>(b.src??=r,R.Continue)),y=Ne(y,m,0),p.push(h?y:[])}return p}function f(d){return u(d).map(p=>p.length>0?ie(p):null)}let m={theme:t,utilities:i,variants:e,invalidCandidates:new Set,important:!1,candidatesToCss:f,candidatesToAst:u,getClassOrder(d){return Vi(this,d)},getClassList(){return $i(this)},getVariants(){return Si(this)},parseCandidate(d){return o.get(d)},parseVariant(d){return n.get(d)},compileAstNodes(d,p=1){return l.get(p).get(d)},printCandidate(d){return Dr(m,d)},printVariant(d){return dt(d)},getVariantOrder(){let d=Array.from(n.values());d.sort((y,b)=>this.variants.compare(y,b));let p=new Map,v,h=0;for(let y of d)y!==null&&(v!==void 0&&this.variants.compare(v,y)!==0&&h++,p.set(y,h),v=y);return p},resolveThemeValue(d,p=!0){let v=d.lastIndexOf("/"),h=null;v!==-1&&(h=d.slice(v+1).trim(),d=d.slice(0,v).trim());let y=t.resolve(null,[d],p?1:0)??void 0;return h&&y?Q(y,h):y},trackUsedVariables(d){c.get(d)},canonicalizeCandidates(d,p){return qt(this,d,p)},storage:{}};return m}var er=["container-type","pointer-events","visibility","position","inset","inset-inline","inset-block","inset-inline-start","inset-inline-end","inset-block-start","inset-block-end","top","right","bottom","left","isolation","z-index","order","grid-column","grid-column-start","grid-column-end","grid-row","grid-row-start","grid-row-end","float","clear","--tw-container-component","margin","margin-inline","margin-block","margin-inline-start","margin-inline-end","margin-block-start","margin-block-end","margin-top","margin-right","margin-bottom","margin-left","box-sizing","display","field-sizing","aspect-ratio","height","max-height","min-height","width","max-width","min-width","flex","flex-shrink","flex-grow","flex-basis","table-layout","caption-side","border-collapse","border-spacing","transform-origin","translate","--tw-translate-x","--tw-translate-y","--tw-translate-z","scale","--tw-scale-x","--tw-scale-y","--tw-scale-z","rotate","--tw-rotate-x","--tw-rotate-y","--tw-rotate-z","--tw-skew-x","--tw-skew-y","transform","animation","cursor","touch-action","--tw-pan-x","--tw-pan-y","--tw-pinch-zoom","resize","scroll-snap-type","--tw-scroll-snap-strictness","scroll-snap-align","scroll-snap-stop","scroll-margin","scroll-margin-inline","scroll-margin-block","scroll-margin-inline-start","scroll-margin-inline-end","scroll-margin-block-start","scroll-margin-block-end","scroll-margin-top","scroll-margin-right","scroll-margin-bottom","scroll-margin-left","scroll-padding","scroll-padding-inline","scroll-padding-block","scroll-padding-inline-start","scroll-padding-inline-end","scroll-padding-block-start","scroll-padding-block-end","scroll-padding-top","scroll-padding-right","scroll-padding-bottom","scroll-padding-left","list-style-position","list-style-type","list-style-image","appearance","columns","break-before","break-inside","break-after","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-template-columns","grid-template-rows","flex-direction","flex-wrap","place-content","place-items","align-content","align-items","justify-content","justify-items","gap","column-gap","row-gap","--tw-space-x-reverse","--tw-space-y-reverse","divide-x-width","divide-y-width","--tw-divide-y-reverse","divide-style","divide-color","place-self","align-self","justify-self","overflow","overflow-x","overflow-y","overscroll-behavior","overscroll-behavior-x","overscroll-behavior-y","scroll-behavior","border-radius","border-start-radius","border-end-radius","border-top-radius","border-right-radius","border-bottom-radius","border-left-radius","border-start-start-radius","border-start-end-radius","border-end-end-radius","border-end-start-radius","border-top-left-radius","border-top-right-radius","border-bottom-right-radius","border-bottom-left-radius","border-width","border-inline-width","border-block-width","border-inline-start-width","border-inline-end-width","border-block-start-width","border-block-end-width","border-top-width","border-right-width","border-bottom-width","border-left-width","border-style","border-inline-style","border-block-style","border-inline-start-style","border-inline-end-style","border-block-start-style","border-block-end-style","border-top-style","border-right-style","border-bottom-style","border-left-style","border-color","border-inline-color","border-block-color","border-inline-start-color","border-inline-end-color","border-block-start-color","border-block-end-color","border-top-color","border-right-color","border-bottom-color","border-left-color","background-color","background-image","--tw-gradient-position","--tw-gradient-stops","--tw-gradient-via-stops","--tw-gradient-from","--tw-gradient-from-position","--tw-gradient-via","--tw-gradient-via-position","--tw-gradient-to","--tw-gradient-to-position","mask-image","--tw-mask-top","--tw-mask-top-from-color","--tw-mask-top-from-position","--tw-mask-top-to-color","--tw-mask-top-to-position","--tw-mask-right","--tw-mask-right-from-color","--tw-mask-right-from-position","--tw-mask-right-to-color","--tw-mask-right-to-position","--tw-mask-bottom","--tw-mask-bottom-from-color","--tw-mask-bottom-from-position","--tw-mask-bottom-to-color","--tw-mask-bottom-to-position","--tw-mask-left","--tw-mask-left-from-color","--tw-mask-left-from-position","--tw-mask-left-to-color","--tw-mask-left-to-position","--tw-mask-linear","--tw-mask-linear-position","--tw-mask-linear-from-color","--tw-mask-linear-from-position","--tw-mask-linear-to-color","--tw-mask-linear-to-position","--tw-mask-radial","--tw-mask-radial-shape","--tw-mask-radial-size","--tw-mask-radial-position","--tw-mask-radial-from-color","--tw-mask-radial-from-position","--tw-mask-radial-to-color","--tw-mask-radial-to-position","--tw-mask-conic","--tw-mask-conic-position","--tw-mask-conic-from-color","--tw-mask-conic-from-position","--tw-mask-conic-to-color","--tw-mask-conic-to-position","box-decoration-break","background-size","background-attachment","background-clip","background-position","background-repeat","background-origin","mask-composite","mask-mode","mask-type","mask-size","mask-clip","mask-position","mask-repeat","mask-origin","fill","stroke","stroke-width","object-fit","object-position","padding","padding-inline","padding-block","padding-inline-start","padding-inline-end","padding-block-start","padding-block-end","padding-top","padding-right","padding-bottom","padding-left","text-align","text-indent","vertical-align","font-family","font-feature-settings","font-size","line-height","font-weight","letter-spacing","text-wrap","overflow-wrap","word-break","text-overflow","hyphens","white-space","color","text-transform","font-style","font-stretch","font-variant-numeric","text-decoration-line","text-decoration-color","text-decoration-style","text-decoration-thickness","text-underline-offset","-webkit-font-smoothing","placeholder-color","caret-color","accent-color","color-scheme","opacity","background-blend-mode","mix-blend-mode","box-shadow","--tw-shadow","--tw-shadow-color","--tw-ring-shadow","--tw-ring-color","--tw-inset-shadow","--tw-inset-shadow-color","--tw-inset-ring-shadow","--tw-inset-ring-color","--tw-ring-offset-width","--tw-ring-offset-color","outline","outline-width","outline-offset","outline-color","--tw-blur","--tw-brightness","--tw-contrast","--tw-drop-shadow","--tw-grayscale","--tw-hue-rotate","--tw-invert","--tw-saturate","--tw-sepia","filter","--tw-backdrop-blur","--tw-backdrop-brightness","--tw-backdrop-contrast","--tw-backdrop-grayscale","--tw-backdrop-hue-rotate","--tw-backdrop-invert","--tw-backdrop-opacity","--tw-backdrop-saturate","--tw-backdrop-sepia","backdrop-filter","transition-property","transition-behavior","transition-delay","transition-duration","transition-timing-function","will-change","contain","content","forced-color-adjust"];function Ve(t,r,{onInvalidCandidate:i,respectImportant:e}={}){let n=new Map,o=[],l=new Map;for(let f of t){if(r.invalidCandidates.has(f)){i?.(f);continue}let m=r.parseCandidate(f);if(m.length===0){i?.(f);continue}l.set(f,m)}let c=0;(e??!0)&&(c|=1);let u=r.getVariantOrder();for(let[f,m]of l){let d=!1;for(let p of m){let v=r.compileAstNodes(p,c);if(v.length!==0){d=!0;for(let{node:h,propertySort:y}of v){let b=0n;for(let T of p.variants)b|=1n<{let d=n.get(f),p=n.get(m);if(d.variants-p.variants!==0n)return Number(d.variants-p.variants);let v=0;for(;v1)return null;for(let u of l.nodes)if(u.kind!=="rule"&&u.kind!=="at-rule"||n(u,r)===null)return null;_(l.nodes,u=>{if((u.kind==="rule"||u.kind==="at-rule")&&u.nodes.length<=0)return u.nodes=t.nodes,R.Skip}),t.nodes=l.nodes;return}if(n(t,r)===null)return null}function Oi(t){let r=t.options?.types??[];return r.length>1&&r.includes("any")}function Xl(t,r){if(t.kind==="arbitrary"){let l=t.value;return t.modifier&&(l=X(l,t.modifier,r.theme)),l===null?[]:[[a(t.property,l)]]}let i=r.utilities.get(t.root)??[],e=[],n=i.filter(l=>!Oi(l));for(let l of n){if(l.kind!==t.kind)continue;let c=l.compileFn(t);if(c!==void 0){if(c===null)return e;e.push(c)}}if(e.length>0)return e;let o=i.filter(l=>Oi(l));for(let l of o){if(l.kind!==t.kind)continue;let c=l.compileFn(t);if(c!==void 0){if(c===null)return e;e.push(c)}}return e}function Pi(t){for(let r of t)r.kind!=="at-root"&&(r.kind==="declaration"?r.important=!0:(r.kind==="rule"||r.kind==="at-rule")&&Pi(r.nodes))}function ea(t){let r=new Set,i=0,e=t.slice(),n=!1;for(;e.length>0;){let o=e.shift();if(o.kind==="declaration"){if(o.value===void 0||(i++,n))continue;if(o.property==="--tw-sort"){let c=er.indexOf(o.value??"");if(c!==-1){r.add(c),n=!0;continue}}let l=er.indexOf(o.property);l!==-1&&r.add(l)}else if(o.kind==="rule"||o.kind==="at-rule")for(let l of o.nodes)e.push(l)}return{order:Array.from(r).sort((o,l)=>o-l),count:i}}function Se(t,r){let i=0,e=J("&",t),n=new Set,o=new z(()=>new Set),l=new z(()=>new Set);_([e],(d,p)=>{if(d.kind==="at-rule"){if(d.name==="@keyframes")return _(d.nodes,v=>{if(v.kind==="at-rule"&&v.name==="@apply")throw new Error("You cannot use `@apply` inside `@keyframes`.")}),R.Skip;if(d.name==="@utility"){let v=d.params.replace(/-\*$/,"");l.get(v).add(d),_(d.nodes,h=>{if(!(h.kind!=="at-rule"||h.name!=="@apply")){n.add(d);for(let y of Ii(h,r))o.get(d).add(y)}});return}if(d.name==="@apply"){if(p.parent===null)return;i|=1,n.add(p.parent);for(let v of Ii(d,r))for(let h of p.path())n.has(h)&&o.get(h).add(v)}}});let c=new Set,u=[],f=new Set;function m(d,p=[]){if(!c.has(d)){if(f.has(d)){let v=p[(p.indexOf(d)+1)%p.length];throw d.kind==="at-rule"&&d.name==="@utility"&&v.kind==="at-rule"&&v.name==="@utility"&&_(d.nodes,h=>{if(h.kind!=="at-rule"||h.name!=="@apply")return;let y=h.params.split(/\s+/g);for(let b of y)for(let T of r.parseCandidate(b))switch(T.kind){case"arbitrary":break;case"static":case"functional":if(v.params.replace(/-\*$/,"")===T.root)throw new Error(`You cannot \`@apply\` the \`${b}\` utility here because it creates a circular dependency.`);break;default:}}),new Error(`Circular dependency detected: + +${ie([d])} +Relies on: + +${ie([v])}`)}f.add(d);for(let v of o.get(d))for(let h of l.get(v))p.push(d),m(h,p),p.pop();c.add(d),f.delete(d),u.push(d)}}for(let d of n)m(d);for(let d of u)"nodes"in d&&_(d.nodes,p=>{if(p.kind!=="at-rule"||p.name!=="@apply")return;let v=p.params.split(/(\s+)/g),h={},y=0;for(let[b,T]of v.entries())b%2===0&&(h[T]=y),y+=T.length;{let b=Object.keys(h),T=Ve(b,r,{respectImportant:!1,onInvalidCandidate:N=>{if(r.theme.prefix&&!N.startsWith(r.theme.prefix))throw new Error(`Cannot apply unprefixed utility class \`${N}\`. Did you mean \`${r.theme.prefix}:${N}\`?`);if(r.invalidCandidates.has(N))throw new Error(`Cannot apply utility class \`${N}\` because it has been explicitly disabled: https://tailwindcss.com/docs/detecting-classes-in-source-files#explicitly-excluding-classes`);let E=L(N,":");if(E.length>1){let U=E.pop();if(r.candidatesToCss([U])[0]){let P=r.candidatesToCss(E.map(G=>`${G}:[--tw-variant-check:1]`)),j=E.filter((G,Z)=>P[Z]===null);if(j.length>0){if(j.length===1)throw new Error(`Cannot apply utility class \`${N}\` because the ${j.map(G=>`\`${G}\``)} variant does not exist.`);{let G=new Intl.ListFormat("en",{style:"long",type:"conjunction"});throw new Error(`Cannot apply utility class \`${N}\` because the ${G.format(j.map(Z=>`\`${Z}\``))} variants do not exist.`)}}}}throw r.theme.size===0?new Error(`Cannot apply unknown utility class \`${N}\`. Are you using CSS modules or similar and missing \`@reference\`? https://tailwindcss.com/docs/functions-and-directives#reference-directive`):new Error(`Cannot apply unknown utility class \`${N}\``)}}),A=p.src,k=T.astNodes.map(N=>{let E=T.nodeSorting.get(N)?.candidate,U=E?h[E]:void 0;if(N=te(N),!A||!E||U===void 0)return _([N],j=>{j.src=A}),N;let P=[A[0],A[1],A[2]];return P[1]+=7+U,P[2]=P[1]+E.length,_([N],j=>{j.src=P}),N}),D=[];for(let N of k)if(N.kind==="rule")for(let E of N.nodes)D.push(E);else D.push(N);return R.Replace(D)}});return i}function*Ii(t,r){for(let i of t.params.split(/\s+/g))for(let e of r.parseCandidate(i))switch(e.kind){case"arbitrary":break;case"static":case"functional":yield e.root;break;default:}}async function tr(t,r,i,e=0,n=!1){let o=0,l=[];return _(t,c=>{if(c.kind==="at-rule"&&(c.name==="@import"||c.name==="@reference")){let u=ta(F(c.params));if(u===null)return;c.name==="@reference"&&(u.media="reference"),o|=2;let{uri:f,layer:m,media:d,supports:p}=u;if(f.startsWith("data:")||f.startsWith("http://")||f.startsWith("https://"))return;let v=ge({},[]);return l.push((async()=>{if(e>100)throw new Error(`Exceeded maximum recursion depth while resolving \`${f}\` in \`${r}\`)`);let h=await i(f,r),y=Te(h.content,{from:n?h.path:void 0});await tr(y,h.base,i,e+1,n),v.nodes=ra(c,[ge({base:h.base},y)],m,d,p)})()),R.ReplaceSkip(v)}}),l.length>0&&await Promise.all(l),o}function ta(t){let r,i=null,e=null,n=null;for(let o=0;o{let f=Pe(n),[m,d]=ia(t.theme,f),p=i(_i(r()??{},f)??null);if(typeof p=="string"&&(p=p.replace("","1")),typeof m!="object")return typeof d!="object"&&d&4?p??m:m;if(p!==null&&typeof p=="object"&&!Array.isArray(p)){let v=it({},[p],(h,y)=>y);if(m===null&&Object.hasOwn(p,"__CSS_VALUES__")){let h={};for(let y in p.__CSS_VALUES__)h[y]=p[y],delete v[y];m=h}for(let h in m)h!=="__CSS_VALUES__"&&(p?.__CSS_VALUES__?.[h]&4&&_i(v,h.split("-"))!==void 0||(v[ye(h)]=m[h]));return v}if(Array.isArray(m)&&Array.isArray(d)&&Array.isArray(p)){let v=m[0],h=m[1];d[0]&4&&(v=p[0]??v);for(let y of Object.keys(h))d[1][y]&4&&(h[y]=p[1][y]??h[y]);return[v,h]}return m??p})();return c&&typeof u=="string"&&(u=Q(u,c)),u??o}}function ia(t,r){if(r.length===1&&r[0].startsWith("--"))return[t.get([r[0]]),t.getOptions(r[0])];let i=Me(r),e=new Map,n=new z(()=>new Map),o=t.namespace(`--${i}`);if(o.size===0)return[null,0];let l=new Map;for(let[m,d]of o){if(!m||!m.includes("--")){e.set(m,d),l.set(m,t.getOptions(m?`--${i}-${m}`:`--${i}`));continue}let p=m.indexOf("--"),v=m.slice(0,p),h=m.slice(p+2);h=h.replace(/-([a-z])/g,(y,b)=>b.toUpperCase()),n.get(v===""?null:v).set(h,[d,t.getOptions(`--${i}${m}`)])}let c=t.getOptions(`--${i}`);for(let[m,d]of n){let p=e.get(m);if(typeof p!="string")continue;let v={},h={};for(let[y,[b,T]]of d)v[y]=b,h[y]=T;e.set(m,[p,v]),l.set(m,[c,h])}let u={},f={};for(let[m,d]of e)Di(u,[m??"DEFAULT"],d);for(let[m,d]of l)Di(f,[m??"DEFAULT"],d);return r[r.length-1]==="DEFAULT"?[u?.DEFAULT??null,f.DEFAULT??0]:"DEFAULT"in u&&Object.keys(u).length===1?[u.DEFAULT,f.DEFAULT??0]:(u.__CSS_VALUES__=f,[u,f])}function _i(t,r){for(let i=0;i{m.src=o}),r.push(f)},addVariant(c,u){if(!$t.test(c))throw new Error(`\`addVariant('${c}')\` defines an invalid variant name. Variants should only contain alphanumeric, dashes, or underscore characters and start with a lowercase letter or number.`);if(typeof u=="string"){if(u.includes(":merge("))return}else if(Array.isArray(u)){if(u.some(m=>m.includes(":merge(")))return}else if(typeof u=="object"){let m=function(d,p){return Object.entries(d).some(([v,h])=>v.includes(p)||typeof h=="object"&&m(h,p))};var f=m;if(m(u,":merge("))return}typeof u=="string"||Array.isArray(u)?t.variants.static(c,m=>{m.nodes=Ui(u,m.nodes)},{compounds:Ie(typeof u=="string"?[u]:u)}):typeof u=="object"&&t.variants.fromAst(c,we(u),t)},matchVariant(c,u,f){function m(p,v,h){let y=u(p,{modifier:v?.value??null});return Ui(y,h)}try{let p=u("a",{modifier:null});if(typeof p=="string"&&p.includes(":merge("))return;if(Array.isArray(p)&&p.some(v=>v.includes(":merge(")))return}catch{}let d=Object.keys(f?.values??{});t.variants.group(()=>{t.variants.functional(c,(p,v)=>{if(!v.value){if(f?.values&&"DEFAULT"in f.values){p.nodes=m(f.values.DEFAULT,v.modifier,p.nodes);return}return null}if(v.value.kind==="arbitrary")p.nodes=m(v.value.value,v.modifier,p.nodes);else if(v.value.kind==="named"&&f?.values){if(!Object.hasOwn(f.values,v.value.value))return null;let h=f.values[v.value.value];if(typeof h!="string")return null;p.nodes=m(h,v.modifier,p.nodes)}else return null})},(p,v)=>{if(p.kind!=="functional"||v.kind!=="functional")return 0;let h=p.value?p.value.value:"DEFAULT",y=v.value?v.value.value:"DEFAULT",b=(f?.values&&Object.hasOwn(f.values,h)?f.values[h]:void 0)??h,T=(f?.values&&Object.hasOwn(f.values,y)?f.values[y]:void 0)??y;if(f&&typeof f.sort=="function")return f.sort({value:b,modifier:p.modifier?.value??null},{value:T,modifier:v.modifier?.value??null});let A=d.indexOf(h),k=d.indexOf(y);return A=A===-1?d.length:A,k=k===-1?d.length:k,A!==k?A-k:bObject.keys(f?.values??{}).filter(p=>p!=="DEFAULT"))},addUtilities(c){c=Array.isArray(c)?c:[c];let u=c.flatMap(m=>Object.entries(m));u=u.flatMap(([m,d])=>L(m,",").map(p=>[p.trim(),d]));let f=new z(()=>[]);for(let[m,d]of u){if(m.startsWith("@keyframes ")){if(!n){let h=J(m,we(d));_([h],y=>{y.src=o}),r.push(h)}continue}let p=Oe(m),v=!1;if(_(p,h=>{if(h.kind==="selector"&&h.value[0]==="."&&Ki.test(h.value.slice(1))){let y=h.value;h.value="&";let b=he(p),T=y.slice(1),A=b==="&"?we(d):[J(b,we(d))];f.get(T).push(...A),v=!0,h.value=y;return}if(h.kind==="function"&&h.value===":not")return R.Skip}),!v)throw new Error(`\`addUtilities({ '${m}' : \u2026 })\` defines an invalid utility selector. Utilities must be a single class name and start with a lowercase letter, eg. \`.scrollbar-none\`.`)}for(let[m,d]of f)t.theme.prefix&&_(d,p=>{if(p.kind==="rule"){let v=Oe(p.selector);_(v,h=>{h.kind==="selector"&&h.value[0]==="."&&(h.value=`.${t.theme.prefix}\\:${h.value.slice(1)}`)}),p.selector=he(v)}}),t.utilities.static(m,p=>{let v=d.map(te);return zi(v,m,p.raw),e.current|=Se(v,t),v})},matchUtilities(c,u){let f=u?.type?Array.isArray(u?.type)?u.type:[u.type]:["any"];for(let[d,p]of Object.entries(c)){let v=function({negative:h}){return y=>{if(y.value?.kind==="arbitrary"&&f.length>0&&!f.includes("any")&&(y.value.dataType&&!f.includes(y.value.dataType)||!y.value.dataType&&!H(y.value.value,f)))return;let b=f.includes("color"),T=null,A=!1;{let N=u?.values??{};b&&(N=Object.assign({inherit:"inherit",transparent:"transparent",current:"currentcolor"},N)),y.value?y.value.kind==="arbitrary"?T=y.value.value:y.value.fraction&&Object.hasOwn(N,y.value.fraction)?(T=N[y.value.fraction],A=!0):Object.hasOwn(N,y.value.value)?T=N[y.value.value]:N.__BARE_VALUE__&&(T=N.__BARE_VALUE__(y.value)??null,A=(y.value.fraction!==null&&T?.includes("/"))??!1):T=N.DEFAULT??null}if(T===null)return;let k;{let N=u?.modifiers??null;y.modifier?N==="any"||y.modifier.kind==="arbitrary"?k=y.modifier.value:N&&Object.hasOwn(N,y.modifier.value)?k=N[y.modifier.value]:b&&!Number.isNaN(Number(y.modifier.value))?k=`${y.modifier.value}%`:k=null:k=null}if(y.modifier&&k===null&&!A)return y.value?.kind==="arbitrary"?null:void 0;b&&k!==null&&(T=Q(T,k)),h&&(T=`calc(${T} * -1)`);let D=we(p(T,{modifier:k}));return zi(D,d,y.raw),e.current|=Se(D,t),D}};var m=v;if(!Ki.test(d))throw new Error(`\`matchUtilities({ '${d}' : \u2026 })\` defines an invalid utility name. Utilities should be alphanumeric and start with a lowercase letter, eg. \`scrollbar\`.`);u?.supportsNegativeValues&&t.utilities.functional(`-${d}`,v({negative:!0}),{types:f}),t.utilities.functional(d,v({negative:!1}),{types:f}),t.utilities.suggest(d,()=>{let h=u?.values??{},y=new Set(Object.keys(h));y.delete("__BARE_VALUE__"),y.delete("__CSS_VALUES__"),y.has("DEFAULT")&&(y.delete("DEFAULT"),y.add(null));let b=u?.modifiers??{},T=b==="any"?[]:Object.keys(b);return[{supportsNegative:u?.supportsNegativeValues??!1,values:Array.from(y),modifiers:T}]})}},addComponents(c,u){this.addUtilities(c,u)},matchComponents(c,u){this.matchUtilities(c,u)},theme:St(t,()=>i.theme??{},c=>c),prefix(c){return c},config(c,u){let f=i;if(!c)return f;let m=Pe(c);for(let d=0;dObject.entries(e));for(let[e,n]of i)if(n!=null&&n!==!1)if(typeof n!="object"){if(!e.startsWith("--")){if(n==="@slot"){r.push(J(e,[W("@slot")]));continue}e=e.replace(/([A-Z])/g,"-$1").toLowerCase()}r.push(a(e,String(n)))}else if(Array.isArray(n))for(let o of n)typeof o=="string"?r.push(a(e,o)):r.push(J(e,we(o)));else r.push(J(e,we(n)));return r}function Ui(t,r){return(typeof t=="string"?[t]:t).flatMap(e=>{if(e.trim().endsWith("}")){let n=e.replace("}","{@slot}}"),o=Te(n);return Xt(o,r),o}else return J(e,r)})}function zi(t,r,i){_(t,e=>{if(e.kind==="rule"){let n=Oe(e.selector);_(n,o=>{o.kind==="selector"&&o.value===`.${r}`&&(o.value=`.${xe(i)}`)}),e.selector=he(n)}})}function Li(t,r){for(let i of na(r))t.theme.addKeyframes(i)}function na(t){let r=[];if("keyframes"in t.theme)for(let[i,e]of Object.entries(t.theme.keyframes))r.push(W("@keyframes",i,we(e)));return r}function ji(t){return{theme:{...sr,colors:({theme:r})=>r("color",{}),extend:{fontSize:({theme:r})=>({...r("text",{})}),boxShadow:({theme:r})=>({...r("shadow",{})}),animation:({theme:r})=>({...r("animate",{})}),aspectRatio:({theme:r})=>({...r("aspect",{})}),borderRadius:({theme:r})=>({...r("radius",{})}),screens:({theme:r})=>({...r("breakpoint",{})}),letterSpacing:({theme:r})=>({...r("tracking",{})}),lineHeight:({theme:r})=>({...r("leading",{})}),transitionDuration:{DEFAULT:t.get(["--default-transition-duration"])??null},transitionTimingFunction:{DEFAULT:t.get(["--default-transition-timing-function"])??null},maxWidth:({theme:r})=>({...r("container",{})})}}}}var la={blocklist:[],future:{},experimental:{},prefix:"",important:!1,darkMode:null,theme:{},plugins:[],content:{files:[]}};function nr(t,r){let i={design:t,configs:[],plugins:[],content:{files:[]},theme:{},extend:{},result:structuredClone(la)};for(let n of r)ir(i,n);for(let n of i.configs)"darkMode"in n&&n.darkMode!==void 0&&(i.result.darkMode=n.darkMode??null),"prefix"in n&&n.prefix!==void 0&&(i.result.prefix=n.prefix??""),"blocklist"in n&&n.blocklist!==void 0&&(i.result.blocklist=n.blocklist??[]),"important"in n&&n.important!==void 0&&(i.result.important=n.important??!1);let e=oa(i);return{resolvedConfig:{...i.result,content:i.content,theme:i.theme,plugins:i.plugins},replacedThemeKeys:e}}function aa(t,r){if(Array.isArray(t)&&We(t[0]))return t.concat(r);if(Array.isArray(r)&&We(r[0])&&We(t))return[t,...r];if(Array.isArray(r))return r}function ir(t,{config:r,base:i,path:e,reference:n,src:o}){let l=[];for(let f of r.plugins??[])"__isOptionsFunction"in f?l.push({...f(),reference:n,src:o}):"handler"in f?l.push({...f,reference:n,src:o}):l.push({handler:f,reference:n,src:o});if(Array.isArray(r.presets)&&r.presets.length===0)throw new Error("Error in the config file/plugin/preset. An empty preset (`preset: []`) is not currently supported.");for(let f of r.presets??[])ir(t,{path:e,base:i,config:f,reference:n,src:o});for(let f of l)t.plugins.push(f),f.config&&ir(t,{path:e,base:i,config:f.config,reference:!!f.reference,src:f.src??o});let c=r.content??[],u=Array.isArray(c)?c:c.files;for(let f of u)t.content.files.push(typeof f=="object"?f:{base:i,pattern:f});t.configs.push(r)}function oa(t){let r=new Set,i=St(t.design,()=>t.theme,n),e=Object.assign(i,{theme:i,colors:or});function n(o){return typeof o=="function"?o(e)??null:o??null}for(let o of t.configs){let l=o.theme??{},c=l.extend??{};for(let u in l)u!=="extend"&&r.add(u);Object.assign(t.theme,l);for(let u in c)t.extend[u]??=[],t.extend[u].push(c[u])}delete t.theme.extend;for(let o in t.extend){let l=[t.theme[o],...t.extend[o]];t.theme[o]=()=>{let c=l.map(n);return it({},c,aa)}}for(let o in t.theme)t.theme[o]=n(t.theme[o]);if(t.theme.screens&&typeof t.theme.screens=="object")for(let o of Object.keys(t.theme.screens)){let l=t.theme.screens[o];l&&typeof l=="object"&&("raw"in l||"max"in l||"min"in l&&(t.theme.screens[o]=l.min))}return r}function Mi(t,r){let i=t.theme.container||{};if(typeof i!="object"||i===null)return;let e=sa(i,r);e.length!==0&&r.utilities.static("container",()=>e.map(te))}function sa({center:t,padding:r,screens:i},e){let n=[],o=null;if(t&&n.push(a("margin-inline","auto")),(typeof r=="string"||typeof r=="object"&&r!==null&&"DEFAULT"in r)&&n.push(a("padding-inline",typeof r=="string"?r:r.DEFAULT)),typeof i=="object"&&i!==null){o=new Map;let l=Array.from(e.theme.namespace("--breakpoint").entries());if(l.sort((c,u)=>Ee(c[1],u[1],"asc")),l.length>0){let[c]=l[0];n.push(W("@media",`(width >= --theme(--breakpoint-${c}))`,[a("max-width","none")]))}for(let[c,u]of Object.entries(i)){if(typeof u=="object")if("min"in u)u=u.min;else continue;o.set(c,W("@media",`(width >= ${u})`,[a("max-width",u)]))}}if(typeof r=="object"&&r!==null){let l=Object.entries(r).filter(([c])=>c!=="DEFAULT").map(([c,u])=>[c,e.theme.resolveValue(c,["--breakpoint"]),u]).filter(Boolean);l.sort((c,u)=>Ee(c[1],u[1],"asc"));for(let[c,,u]of l)if(o&&o.has(c))o.get(c).nodes.push(a("padding-inline",u));else{if(o)continue;n.push(W("@media",`(width >= theme(--breakpoint-${c}))`,[a("padding-inline",u)]))}}if(o)for(let[,l]of o)n.push(l);return n}function Fi({addVariant:t,config:r}){let i=r("darkMode",null),[e,n=".dark"]=Array.isArray(i)?i:[i];if(e==="variant"){let o;if(Array.isArray(n)||typeof n=="function"?o=n:typeof n=="string"&&(o=[n]),Array.isArray(o))for(let l of o)l===".dark"?(e=!1,console.warn('When using `variant` for `darkMode`, you must provide a selector.\nExample: `darkMode: ["variant", ".your-selector &"]`')):l.includes("&")||(e=!1,console.warn('When using `variant` for `darkMode`, your selector must contain `&`.\nExample `darkMode: ["variant", ".your-selector &"]`'));n=o}e===null||(e==="selector"?t("dark",`&:where(${n}, ${n} *)`):e==="media"?t("dark","@media (prefers-color-scheme: dark)"):e==="variant"?t("dark",n):e==="class"&&t("dark",`&:is(${n} *)`))}function Wi(t){for(let[i,e]of[["t","top"],["tr","top right"],["r","right"],["br","bottom right"],["b","bottom"],["bl","bottom left"],["l","left"],["tl","top left"]])t.utilities.suggest(`bg-gradient-to-${i}`,()=>[]),t.utilities.static(`bg-gradient-to-${i}`,()=>[a("--tw-gradient-position",`to ${e} in oklab`),a("background-image","linear-gradient(var(--tw-gradient-stops))")]);t.utilities.suggest("bg-left-top",()=>[]),t.utilities.static("bg-left-top",()=>[a("background-position","left top")]),t.utilities.suggest("bg-right-top",()=>[]),t.utilities.static("bg-right-top",()=>[a("background-position","right top")]),t.utilities.suggest("bg-left-bottom",()=>[]),t.utilities.static("bg-left-bottom",()=>[a("background-position","left bottom")]),t.utilities.suggest("bg-right-bottom",()=>[]),t.utilities.static("bg-right-bottom",()=>[a("background-position","right bottom")]),t.utilities.suggest("object-left-top",()=>[]),t.utilities.static("object-left-top",()=>[a("object-position","left top")]),t.utilities.suggest("object-right-top",()=>[]),t.utilities.static("object-right-top",()=>[a("object-position","right top")]),t.utilities.suggest("object-left-bottom",()=>[]),t.utilities.static("object-left-bottom",()=>[a("object-position","left bottom")]),t.utilities.suggest("object-right-bottom",()=>[]),t.utilities.static("object-right-bottom",()=>[a("object-position","right bottom")]),t.utilities.suggest("max-w-screen",()=>[]),t.utilities.functional("max-w-screen",i=>{if(!i.value||i.value.kind==="arbitrary")return;let e=t.theme.resolve(i.value.value,["--breakpoint"]);if(e)return[a("max-width",e)]}),t.utilities.suggest("overflow-ellipsis",()=>[]),t.utilities.static("overflow-ellipsis",()=>[a("text-overflow","ellipsis")]),t.utilities.suggest("decoration-slice",()=>[]),t.utilities.static("decoration-slice",()=>[a("-webkit-box-decoration-break","slice"),a("box-decoration-break","slice")]),t.utilities.suggest("decoration-clone",()=>[]),t.utilities.static("decoration-clone",()=>[a("-webkit-box-decoration-break","clone"),a("box-decoration-break","clone")]),t.utilities.suggest("flex-shrink",()=>[]),t.utilities.functional("flex-shrink",i=>{if(!i.modifier){if(!i.value)return[a("flex-shrink","1")];if(i.value.kind==="arbitrary")return[a("flex-shrink",i.value.value)];if(I(i.value.value))return[a("flex-shrink",i.value.value)]}}),t.utilities.suggest("flex-grow",()=>[]),t.utilities.functional("flex-grow",i=>{if(!i.modifier){if(!i.value)return[a("flex-grow","1")];if(i.value.kind==="arbitrary")return[a("flex-grow",i.value.value)];if(I(i.value.value))return[a("flex-grow",i.value.value)]}}),t.utilities.suggest("order-none",()=>[]),t.utilities.static("order-none",()=>[a("order","0")]),t.utilities.suggest("break-words",()=>[]),t.utilities.static("break-words",()=>[a("overflow-wrap","break-word")]);for(let[i,e]of[["start","inset-inline-start"],["end","inset-inline-end"]]){let n=function({negative:o}){return l=>{if(!l.value){if(l.modifier)return;let u=t.theme.resolve(null,["--inset","--spacing"]);return u===null?void 0:[a(e,o?`calc(${u} * -1)`:u)]}if(l.value.kind==="arbitrary"){if(l.modifier)return;let u=l.value.value;return[a(e,o?`calc(${u} * -1)`:u)]}let c=t.theme.resolve(l.value.fraction??l.value.value,["--inset","--spacing"]);if(c===null&&l.value.fraction){let[u,f]=L(l.value.fraction,"/");if(!I(u)||!I(f))return;c=`calc(${l.value.fraction} * 100%)`}if(c===null&&o){let u=t.theme.resolve(null,["--spacing"]);if(u&&ee(l.value.value)&&(c=`calc(${u} * -${l.value.value})`,c!==null))return[a(e,c)]}if(c===null){let u=t.theme.resolve(null,["--spacing"]);u&&ee(l.value.value)&&(c=`calc(${u} * ${l.value.value})`)}if(c!==null)return[a(e,o?`calc(${c} * -1)`:c)]}};var r=n;t.utilities.static(`${i}-auto`,()=>[a(e,"auto")]),t.utilities.static(`${i}-full`,()=>[a(e,"100%")]),t.utilities.static(`-${i}-full`,()=>[a(e,"-100%")]),t.utilities.static(`${i}-px`,()=>[a(e,"1px")]),t.utilities.static(`-${i}-px`,()=>[a(e,"-1px")]),t.utilities.functional(`-${i}`,n({negative:!0})),t.utilities.functional(i,n({negative:!1}))}}function Bi(t,r){let i=t.theme.screens||{},e=r.variants.get("min")?.order??0,n=[];for(let[l,c]of Object.entries(i)){let p=function(v){r.variants.static(l,h=>{h.nodes=[W("@media",d,h.nodes)]},{order:v})};var o=p;let u=r.variants.get(l),f=r.theme.resolveValue(l,["--breakpoint"]);if(u&&f&&!r.theme.hasDefault(`--breakpoint-${l}`))continue;let m=!0;typeof c=="string"&&(m=!1);let d=ua(c);m?n.push(p):p(e)}if(n.length!==0){for(let[,l]of r.variants.variants)l.order>e&&(l.order+=n.length);r.variants.compareFns=new Map(Array.from(r.variants.compareFns).map(([l,c])=>(l>e&&(l+=n.length),[l,c])));for(let[l,c]of n.entries())c(e+l+1)}}function ua(t){return(Array.isArray(t)?t:[t]).map(i=>typeof i=="string"?{min:i}:i&&typeof i=="object"?i:null).map(i=>{if(i===null)return null;if("raw"in i)return i.raw;let e="";return i.max!==void 0&&(e+=`${i.max} >= `),e+="width",i.min!==void 0&&(e+=` >= ${i.min}`),`(${e})`}).filter(Boolean).join(", ")}function Yi(t,r){let i=t.theme.aria||{},e=t.theme.supports||{},n=t.theme.data||{};if(Object.keys(i).length>0){let o=r.variants.get("aria"),l=o?.applyFn,c=o?.compounds;r.variants.functional("aria",(u,f)=>{let m=f.value;return m&&m.kind==="named"&&m.value in i?l?.(u,{...f,value:{kind:"arbitrary",value:i[m.value]}}):l?.(u,f)},{compounds:c})}if(Object.keys(e).length>0){let o=r.variants.get("supports"),l=o?.applyFn,c=o?.compounds;r.variants.functional("supports",(u,f)=>{let m=f.value;return m&&m.kind==="named"&&m.value in e?l?.(u,{...f,value:{kind:"arbitrary",value:e[m.value]}}):l?.(u,f)},{compounds:c})}if(Object.keys(n).length>0){let o=r.variants.get("data"),l=o?.applyFn,c=o?.compounds;r.variants.functional("data",(u,f)=>{let m=f.value;return m&&m.kind==="named"&&m.value in n?l?.(u,{...f,value:{kind:"arbitrary",value:n[m.value]}}):l?.(u,f)},{compounds:c})}}var fa=/^[a-z]+$/;async function qi({designSystem:t,base:r,ast:i,loadModule:e,sources:n}){let o=0,l=[],c=[];_(i,(d,p)=>{if(d.kind!=="at-rule")return;let v=He(p);if(d.name==="@plugin"){if(v.parent!==null)throw new Error("`@plugin` cannot be nested.");let h=d.params.slice(1,-1);if(h.length===0)throw new Error("`@plugin` must have a path.");let y={};for(let b of d.nodes??[]){if(b.kind!=="declaration")throw new Error(`Unexpected \`@plugin\` option: + +${ie([b])} + +\`@plugin\` options must be a flat list of declarations.`);if(b.value===void 0)continue;let T=b.value,A=L(T,",").map(k=>{if(k=k.trim(),k==="null")return null;if(k==="true")return!0;if(k==="false")return!1;if(Number.isNaN(Number(k))){if(k[0]==='"'&&k[k.length-1]==='"'||k[0]==="'"&&k[k.length-1]==="'")return k.slice(1,-1);if(k[0]==="{"&&k[k.length-1]==="}")throw new Error(`Unexpected \`@plugin\` option: Value of declaration \`${ie([b]).trim()}\` is not supported. + +Using an object as a plugin option is currently only supported in JavaScript configuration files.`)}else return Number(k);return k});y[b.property]=A.length===1?A[0]:A}return l.push([{id:h,base:v.context.base,reference:!!v.context.reference,src:d.src},Object.keys(y).length>0?y:null]),o|=4,R.Replace([])}if(d.name==="@config"){if(d.nodes.length>0)throw new Error("`@config` cannot have a body.");if(v.parent!==null)throw new Error("`@config` cannot be nested.");return c.push({id:d.params.slice(1,-1),base:v.context.base,reference:!!v.context.reference,src:d.src}),o|=4,R.Replace([])}}),Wi(t);let u=t.resolveThemeValue;if(t.resolveThemeValue=function(p,v){return p.startsWith("--")?u(p,v):(o|=Gi({designSystem:t,base:r,ast:i,sources:n,configs:[],pluginDetails:[]}),t.resolveThemeValue(p,v))},!l.length&&!c.length)return 0;let[f,m]=await Promise.all([Promise.all(c.map(async({id:d,base:p,reference:v,src:h})=>{let y=await e(d,p,"config");return{path:d,base:y.base,config:y.module,reference:v,src:h}})),Promise.all(l.map(async([{id:d,base:p,reference:v,src:h},y])=>{let b=await e(d,p,"plugin");return{path:d,base:b.base,plugin:b.module,options:y,reference:v,src:h}}))]);return o|=Gi({designSystem:t,base:r,ast:i,sources:n,configs:f,pluginDetails:m}),o}function Gi({designSystem:t,base:r,ast:i,sources:e,configs:n,pluginDetails:o}){let l=0,u=[...o.map(y=>{if(!y.options)return{config:{plugins:[y.plugin]},base:y.base,reference:y.reference,src:y.src};if("__isOptionsFunction"in y.plugin)return{config:{plugins:[y.plugin(y.options)]},base:y.base,reference:y.reference,src:y.src};throw new Error(`The plugin "${y.path}" does not accept options`)}),...n],{resolvedConfig:f}=nr(t,[{config:ji(t.theme),base:r,reference:!0,src:void 0},...u,{config:{plugins:[Fi]},base:r,reference:!0,src:void 0}]),{resolvedConfig:m,replacedThemeKeys:d}=nr(t,u),p={designSystem:t,ast:i,resolvedConfig:f,featuresRef:{set current(y){l|=y}}},v=rr({...p,referenceMode:!1,src:void 0}),h=t.resolveThemeValue;t.resolveThemeValue=function(b,T){if(b[0]==="-"&&b[1]==="-")return h(b,T);let A=v.theme(b,void 0);if(Array.isArray(A)&&A.length===2)return A[0];if(Array.isArray(A))return A.join(", ");if(typeof A=="object"&&A!==null&&"DEFAULT"in A)return A.DEFAULT;if(typeof A=="string")return A};for(let{handler:y,reference:b,src:T}of f.plugins){let A=rr({...p,referenceMode:b??!1,src:T});y(A)}if(qr(t,m,d),Li(t,m),Yi(m,t),Bi(m,t),Mi(m,t),!t.theme.prefix&&f.prefix){if(f.prefix.endsWith("-")&&(f.prefix=f.prefix.slice(0,-1),console.warn(`The prefix "${f.prefix}" is invalid. Prefixes must be lowercase ASCII letters (a-z) only and is written as a variant before all utilities. We have fixed up the prefix for you. Remove the trailing \`-\` to silence this warning.`)),!fa.test(f.prefix))throw new Error(`The prefix "${f.prefix}" is invalid. Prefixes must be lowercase ASCII letters (a-z) only.`);t.theme.prefix=f.prefix}if(!t.important&&f.important===!0&&(t.important=!0),typeof f.important=="string"){let y=f.important;_(i,(b,T)=>{if(b.kind!=="at-rule"||b.name!=="@tailwind"||b.params!=="utilities")return;let A=He(T);return A.parent?.kind==="rule"&&A.parent.selector===y?R.Stop:R.ReplaceStop(q(y,[b]))})}for(let y of f.blocklist)t.invalidCandidates.add(y);for(let y of f.content.files){if("raw"in y)throw new Error(`Error in the config file/plugin/preset. The \`content\` key contains a \`raw\` entry: + +${JSON.stringify(y,null,2)} + +This feature is not currently supported.`);let b=!1;y.pattern[0]=="!"&&(b=!0,y.pattern=y.pattern.slice(1)),e.push({...y,negated:b})}return l}function Zi({ast:t}){let r=new z(n=>lt(n.code)),i=new z(n=>({url:n.file,content:n.code,ignore:!1})),e={file:null,sources:[],mappings:[]};_(t,n=>{if(!n.src||!n.dst)return;let o=i.get(n.src[0]);if(!o.content)return;let l=r.get(n.src[0]),c=r.get(n.dst[0]),u=o.content.slice(n.src[1],n.src[2]),f=0;for(let p of u.split(` +`)){if(p.trim()!==""){let v=l.find(n.src[1]+f),h=c.find(n.dst[1]);e.mappings.push({name:null,originalPosition:{source:o,...v},generatedPosition:h})}f+=p.length,f+=1}let m=l.find(n.src[2]),d=c.find(n.dst[2]);e.mappings.push({name:null,originalPosition:{source:o,...m},generatedPosition:d})});for(let n of r.keys())e.sources.push(i.get(n));return e.mappings.sort((n,o)=>n.generatedPosition.line-o.generatedPosition.line||n.generatedPosition.column-o.generatedPosition.column||(n.originalPosition?.line??0)-(o.originalPosition?.line??0)||(n.originalPosition?.column??0)-(o.originalPosition?.column??0)),e}var Hi=/^(-?\d+)\.\.(-?\d+)(?:\.\.(-?\d+))?$/;function Vt(t){let r=t.indexOf("{");if(r===-1)return[t];let i=[],e=t.slice(0,r),n=t.slice(r),o=0,l=n.lastIndexOf("}");for(let d=0;dVt(d));let m=Vt(u);for(let d of m)for(let p of f)i.push(e+p+d);return i}function ca(t){return Hi.test(t)}function pa(t){let r=t.match(Hi);if(!r)return[t];let[,i,e,n]=r,o=n?parseInt(n,10):void 0,l=[];if(/^-?\d+$/.test(i)&&/^-?\d+$/.test(e)){let c=parseInt(i,10),u=parseInt(e,10);if(o===void 0&&(o=c<=u?1:-1),o===0)throw new Error("Step cannot be zero in sequence expansion.");let f=c0&&(o=-o);for(let m=c;f?m<=u:m>=u;m+=o)l.push(m.toString())}return l}function Ji(t,r){let i=new Set,e=new Set,n=[];function o(l,c=[]){if(t.has(l)&&!i.has(l)){e.has(l)&&r.onCircularDependency?.(c,l),e.add(l);for(let u of t.get(l)??[])c.push(l),o(u,c),c.pop();i.add(l),e.delete(l),n.push(l)}}for(let l of t.keys())o(l);return n}var da=/^[a-z]+$/,Dt=(n=>(n[n.None=0]="None",n[n.AtProperty=1]="AtProperty",n[n.ColorMix=2]="ColorMix",n[n.All=3]="All",n))(Dt||{});function ma(){throw new Error("No `loadModule` function provided to `compile`")}function ga(){throw new Error("No `loadStylesheet` function provided to `compile`")}function ha(t){let r=0,i=null;for(let e of L(t," "))e==="reference"?r|=2:e==="inline"?r|=1:e==="default"?r|=4:e==="static"?r|=8:e.startsWith("prefix(")&&e.endsWith(")")&&(i=e.slice(7,-1));return[r,i]}var ze=(u=>(u[u.None=0]="None",u[u.AtApply=1]="AtApply",u[u.AtImport=2]="AtImport",u[u.JsPluginCompat=4]="JsPluginCompat",u[u.ThemeFunction=8]="ThemeFunction",u[u.Utilities=16]="Utilities",u[u.Variants=32]="Variants",u[u.AtTheme=64]="AtTheme",u))(ze||{});async function Qi(t,{base:r="",from:i,loadModule:e=ma,loadStylesheet:n=ga}={}){let o=0;t=[ge({base:r},t)],o|=await tr(t,r,n,0,i!==void 0);let l=null,c=new ct,u=new Map,f=new Map,m=[],d=null,p=null,v=[],h=[],y=[],b=[],T=null;_(t,(k,D)=>{if(k.kind!=="at-rule")return;let N=He(D);if(k.name==="@tailwind"&&(k.params==="utilities"||k.params.startsWith("utilities"))){if(p!==null)return R.Replace([]);if(N.context.reference)return R.Replace([]);let E=L(k.params," ");for(let U of E)if(U.startsWith("source(")){let P=U.slice(7,-1);if(P==="none"){T=P;continue}if(P[0]==='"'&&P[P.length-1]!=='"'||P[0]==="'"&&P[P.length-1]!=="'"||P[0]!=="'"&&P[0]!=='"')throw new Error("`source(\u2026)` paths must be quoted.");T={base:N.context.sourceBase??N.context.base,pattern:P.slice(1,-1)}}p=k,o|=16}if(k.name==="@utility"){if(N.parent!==null)throw new Error("`@utility` cannot be nested.");if(k.nodes.length===0)throw new Error(`\`@utility ${k.params}\` is empty. Utilities should include at least one property.`);let E=Mr(k);if(E===null){if(!k.params.endsWith("-*")){if(k.params.endsWith("*"))throw new Error(`\`@utility ${k.params}\` defines an invalid utility name. A functional utility must end in \`-*\`.`);if(k.params.includes("*"))throw new Error(`\`@utility ${k.params}\` defines an invalid utility name. The dynamic portion marked by \`-*\` must appear once at the end.`)}throw new Error(`\`@utility ${k.params}\` defines an invalid utility name. Utilities should be alphanumeric and start with a lowercase letter.`)}m.push(E)}if(k.name==="@source"){if(k.nodes.length>0)throw new Error("`@source` cannot have a body.");if(N.parent!==null)throw new Error("`@source` cannot be nested.");let E=!1,U=!1,P=k.params;if(P[0]==="n"&&P.startsWith("not ")&&(E=!0,P=P.slice(4)),P[0]==="i"&&P.startsWith("inline(")&&(U=!0,P=P.slice(7,-1).trim()),P[0]==='"'&&P[P.length-1]!=='"'||P[0]==="'"&&P[P.length-1]!=="'"||P[0]!=="'"&&P[0]!=='"')throw new Error("`@source` paths must be quoted.");let j=P.slice(1,-1);if(U){let G=E?b:y,Z=L(j," ");for(let se of Z)for(let ue of Vt(se))G.push(ue)}else h.push({base:N.context.base,pattern:j,negated:E});return R.ReplaceSkip([])}if(k.name==="@variant"&&(N.parent===null?k.nodes.length===0?k.name="@custom-variant":(_(k.nodes,E=>{if(E.kind==="at-rule"&&E.name==="@slot")return k.name="@custom-variant",R.Stop}),k.name==="@variant"&&v.push(k)):v.push(k)),k.name==="@custom-variant"){if(N.parent!==null)throw new Error("`@custom-variant` cannot be nested.");let[E,U]=L(k.params," ");if(!$t.test(E))throw new Error(`\`@custom-variant ${E}\` defines an invalid variant name. Variants should only contain alphanumeric, dashes, or underscore characters and start with a lowercase letter or number.`);if(k.nodes.length>0&&U)throw new Error(`\`@custom-variant ${E}\` cannot have both a selector and a body.`);if(k.nodes.length===0){if(!U)throw new Error(`\`@custom-variant ${E}\` has no selector or body.`);let P=L(U.slice(1,-1),",");if(P.length===0||P.some(Z=>Z.trim()===""))throw new Error(`\`@custom-variant ${E} (${P.join(",")})\` selector is invalid.`);let j=[],G=[];for(let Z of P)Z=Z.trim(),Z[0]==="@"?j.push(Z):G.push(Z);u.set(E,Z=>{Z.variants.static(E,se=>{let ue=[];G.length>0&&ue.push(q(G.join(", "),se.nodes));for(let s of j)ue.push(J(s,se.nodes));se.nodes=ue},{compounds:Ie([...G,...j])})}),f.set(E,new Set)}else{let P=new Set;_(k.nodes,j=>{j.kind==="at-rule"&&j.name==="@variant"&&P.add(j.params)}),u.set(E,j=>{j.variants.fromAst(E,k.nodes,j)}),f.set(E,P)}return R.ReplaceSkip([])}if(k.name==="@media"){let E=L(k.params," "),U=[];for(let P of E)if(P.startsWith("source(")){let j=P.slice(7,-1);_(k.nodes,G=>{if(G.kind==="at-rule"&&G.name==="@tailwind"&&G.params==="utilities")return G.params+=` source(${j})`,R.ReplaceStop([ge({sourceBase:N.context.base},[G])])})}else if(P.startsWith("theme(")){let j=P.slice(6,-1),G=j.includes("reference");_(k.nodes,Z=>{if(Z.kind!=="context"){if(Z.kind!=="at-rule"){if(G)throw new Error('Files imported with `@import "\u2026" theme(reference)` must only contain `@theme` blocks.\nUse `@reference "\u2026";` instead.');return R.Continue}if(Z.name==="@theme")return Z.params+=" "+j,R.Skip}})}else if(P.startsWith("prefix(")){let j=P.slice(7,-1);_(k.nodes,G=>{if(G.kind==="at-rule"&&G.name==="@theme")return G.params+=` prefix(${j})`,R.Skip})}else P==="important"?l=!0:P==="reference"?k.nodes=[ge({reference:!0},k.nodes)]:U.push(P);if(U.length>0)k.params=U.join(" ");else if(E.length>0)return R.Replace(k.nodes);return R.Continue}if(k.name==="@theme"){let[E,U]=ha(k.params);if(o|=64,N.context.reference&&(E|=2),U){if(!da.test(U))throw new Error(`The prefix "${U}" is invalid. Prefixes must be lowercase ASCII letters (a-z) only.`);c.prefix=U}return _(k.nodes,P=>{if(P.kind==="at-rule"&&P.name==="@keyframes")return c.addKeyframes(P),R.Skip;if(P.kind==="comment")return;if(P.kind==="declaration"&&P.property.startsWith("--")){c.add(ye(P.property),P.value??"",E,P.src);return}let j=ie([W(k.name,k.params,[P])]).split(` +`).map((G,Z,se)=>`${Z===0||Z>=se.length-2?" ":">"} ${G}`).join(` +`);throw new Error(`\`@theme\` blocks must only contain custom properties or \`@keyframes\`. + +${j}`)}),d?R.ReplaceSkip([]):(d=q(":root, :host",[]),d.src=k.src,R.ReplaceSkip(d))}});let A=Ei(c,p?.src);if(l&&(A.important=l),b.length>0)for(let k of b)A.invalidCandidates.add(k);o|=await qi({designSystem:A,base:r,ast:t,loadModule:e,sources:h});for(let k of u.keys())A.variants.static(k,()=>{});for(let k of Ji(f,{onCircularDependency(D,N){let E=ie(D.map((U,P)=>W("@custom-variant",U,[W("@variant",D[P+1]??N,[])]))).replaceAll(";"," { \u2026 }").replace(`@custom-variant ${N} {`,`@custom-variant ${N} { /* \u2190 */`);throw new Error(`Circular dependency detected in custom variants: + +${E}`)}}))u.get(k)?.(A);for(let k of m)k(A);if(d){let k=[];for(let[N,E]of A.theme.entries()){if(E.options&2)continue;let U=a(xe(N),E.value);U.src=E.src,k.push(U)}let D=A.theme.getKeyframes();for(let N of D)t.push(ge({theme:!0},[B([N])]));d.nodes=[ge({theme:!0},k)]}if(o|=rt(t,A),o|=Ue(t,A),o|=Se(t,A),p){let k=p;k.kind="context",k.context={}}return _(t,k=>{if(k.kind==="at-rule")return k.name==="@utility"?R.Replace([]):R.Skip}),{designSystem:A,ast:t,sources:h,root:T,utilitiesNode:p,features:o,inlineCandidates:y}}async function va(t,r={}){let{designSystem:i,ast:e,sources:n,root:o,utilitiesNode:l,features:c,inlineCandidates:u}=await Qi(t,r);e.unshift(ft(`! tailwindcss v${ur} | MIT License | https://tailwindcss.com `));function f(h){i.invalidCandidates.add(h)}let m=new Set,d=null,p=0,v=!1;for(let h of u)i.invalidCandidates.has(h)||(m.add(h),v=!0);return{sources:n,root:o,features:c,build(h){if(c===0)return t;if(!l)return d??=Ne(e,i,r.polyfills),d;let y=v,b=!1;v=!1;let T=m.size;for(let k of h)if(!i.invalidCandidates.has(k))if(k[0]==="-"&&k[1]==="-"){let D=i.theme.markUsedVariable(k);y||=D,b||=D}else m.add(k),y||=m.size!==T;if(!y)return d??=Ne(e,i,r.polyfills),d;let A=Ve(m,i,{onInvalidCandidate:f}).astNodes;return r.from&&_(A,k=>{k.src??=l.src}),!b&&p===A.length?(d??=Ne(e,i,r.polyfills),d):(p=A.length,l.nodes=A,d=Ne(e,i,r.polyfills),d)}}}async function Rf(t,r={}){let i=Te(t,{from:r.from}),e=await va(i,r),n=i,o=t;return{...e,build(l){let c=e.build(l);return c===n||(o=ie(c,!!r.from),n=c),o},buildSourceMap(){return Zi({ast:n})}}}async function Of(t,r={}){return(await Qi(Te(t,{from:r.from}),r)).designSystem}function wa(){throw new Error("It looks like you're trying to use `tailwindcss` directly as a PostCSS plugin. The PostCSS plugin has moved to a separate package, so to continue using Tailwind CSS with PostCSS you'll need to install `@tailwindcss/postcss` and update your PostCSS configuration.")}export{Dt as a,ze as b,va as c,Rf as d,Of as e,wa as f}; diff --git a/node_modules/tailwindcss/dist/chunk-TDNFF6A4.mjs b/node_modules/tailwindcss/dist/chunk-TDNFF6A4.mjs new file mode 100644 index 00000000..b9293419 --- /dev/null +++ b/node_modules/tailwindcss/dist/chunk-TDNFF6A4.mjs @@ -0,0 +1 @@ +import{a as k}from"./chunk-X4GG3EDV.mjs";var _=new Set(["black","silver","gray","white","maroon","red","purple","fuchsia","green","lime","olive","yellow","navy","blue","teal","aqua","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","transparent","currentcolor","canvas","canvastext","linktext","visitedtext","activetext","buttonface","buttontext","buttonborder","field","fieldtext","highlight","highlighttext","selecteditem","selecteditemtext","mark","marktext","graytext","accentcolor","accentcolortext"]),U=/^(rgba?|hsla?|hwb|color|(ok)?(lab|lch)|light-dark|color-mix)\(/i;function S(e){return e.charCodeAt(0)===35||U.test(e)||_.has(e.toLowerCase())}var A=["calc","min","max","clamp","mod","rem","sin","cos","tan","asin","acos","atan","atan2","pow","sqrt","hypot","log","exp","round"];function b(e){return e.indexOf("(")!==-1&&A.some(t=>e.includes(`${t}(`))}function oe(e){if(!A.some(n=>e.includes(n)))return e;let t="",r=[],s=null,m=null;for(let n=0;n=48&&a<=57||s!==null&&(a===37||a>=97&&a<=122||a>=65&&a<=90)?s=n:(m=s,s=null),a===40){t+=e[n];let i=n;for(let p=n-1;p>=0;p--){let c=e.charCodeAt(p);if(c>=48&&c<=57)i=p;else if(c>=97&&c<=122)i=p;else break}let o=e.slice(i,n);if(A.includes(o)){r.unshift(!0);continue}else if(r[0]&&o===""){r.unshift(!0);continue}r.unshift(!1);continue}else if(a===41)t+=e[n],r.shift();else if(a===44&&r[0]){t+=", ";continue}else{if(a===32&&r[0]&&t.charCodeAt(t.length-1)===32)continue;if((a===43||a===42||a===47||a===45)&&r[0]){let i=t.trimEnd(),o=i.charCodeAt(i.length-1),p=i.charCodeAt(i.length-2),c=e.charCodeAt(n+1);if((o===101||o===69)&&p>=48&&p<=57){t+=e[n];continue}else if(o===43||o===42||o===47||o===45){t+=e[n];continue}else if(o===40||o===44){t+=e[n];continue}else e.charCodeAt(n-1)===32?t+=`${e[n]} `:o>=48&&o<=57||c>=48&&c<=57||o===41||c===40||c===43||c===42||c===47||c===45||m!==null&&m===n-1?t+=` ${e[n]} `:t+=e[n]}else t+=e[n]}}return t}var E=new Uint8Array(256);function d(e,t){let r=0,s=[],m=0,n=e.length,a=t.charCodeAt(0);for(let i=0;i0&&o===E[r-1]&&r--;break}}return s.push(e.slice(m)),s}var P={color:S,length:y,percentage:C,ratio:G,number:v,integer:u,url:R,position:K,"bg-size":Y,"line-width":T,image:F,"family-name":M,"generic-name":H,"absolute-size":$,"relative-size":W,angle:X,vector:te};function me(e,t){if(e.startsWith("var("))return null;for(let r of t)if(P[r]?.(e))return r;return null}var z=/^url\(.*\)$/;function R(e){return z.test(e)}function T(e){return d(e," ").every(t=>y(t)||v(t)||t==="thin"||t==="medium"||t==="thick")}var D=/^(?:element|image|cross-fade|image-set)\(/,I=/^(repeating-)?(conic|linear|radial)-gradient\(/;function F(e){let t=0;for(let r of d(e,","))if(!r.startsWith("var(")){if(R(r)){t+=1;continue}if(I.test(r)){t+=1;continue}if(D.test(r)){t+=1;continue}return!1}return t>0}function H(e){return e==="serif"||e==="sans-serif"||e==="monospace"||e==="cursive"||e==="fantasy"||e==="system-ui"||e==="ui-serif"||e==="ui-sans-serif"||e==="ui-monospace"||e==="ui-rounded"||e==="math"||e==="emoji"||e==="fangsong"}function M(e){let t=0;for(let r of d(e,",")){let s=r.charCodeAt(0);if(s>=48&&s<=57)return!1;r.startsWith("var(")||(t+=1)}return t>0}function $(e){return e==="xx-small"||e==="x-small"||e==="small"||e==="medium"||e==="large"||e==="x-large"||e==="xx-large"||e==="xxx-large"}function W(e){return e==="larger"||e==="smaller"}var x=/[+-]?\d*\.?\d+(?:[eE][+-]?\d+)?/,B=new RegExp(`^${x.source}$`);function v(e){return B.test(e)||b(e)}var q=new RegExp(`^${x.source}%$`);function C(e){return q.test(e)||b(e)}var V=new RegExp(`^${x.source}\\s*/\\s*${x.source}$`);function G(e){return V.test(e)||b(e)}var Z=["cm","mm","Q","in","pc","pt","px","em","ex","ch","rem","lh","rlh","vw","vh","vmin","vmax","vb","vi","svw","svh","lvw","lvh","dvw","dvh","cqw","cqh","cqi","cqb","cqmin","cqmax"],j=new RegExp(`^${x.source}(${Z.join("|")})$`);function y(e){return j.test(e)||b(e)}function K(e){let t=0;for(let r of d(e," ")){if(r==="center"||r==="top"||r==="right"||r==="bottom"||r==="left"){t+=1;continue}if(!r.startsWith("var(")){if(y(r)||C(r)){t+=1;continue}return!1}}return t>0}function Y(e){let t=0;for(let r of d(e,",")){if(r==="cover"||r==="contain"){t+=1;continue}let s=d(r," ");if(s.length!==1&&s.length!==2)return!1;if(s.every(m=>m==="auto"||y(m)||C(m))){t+=1;continue}}return t>0}var Q=["deg","rad","grad","turn"],J=new RegExp(`^${x.source}(${Q.join("|")})$`);function X(e){return J.test(e)}var ee=new RegExp(`^${x.source} +${x.source} +${x.source}$`);function te(e){return ee.test(e)}function u(e){let t=Number(e);return Number.isInteger(t)&&t>=0&&String(t)===String(e)}function pe(e){let t=Number(e);return Number.isInteger(t)&&t>0&&String(t)===String(e)}function ge(e){return N(e,.25)}function ue(e){return N(e,.25)}function N(e,t){let r=Number(e);return r>=0&&r%t===0&&String(r)===String(e)}function h(e){return{__BARE_VALUE__:e}}var g=h(e=>{if(u(e.value))return e.value}),l=h(e=>{if(u(e.value))return`${e.value}%`}),f=h(e=>{if(u(e.value))return`${e.value}px`}),O=h(e=>{if(u(e.value))return`${e.value}ms`}),w=h(e=>{if(u(e.value))return`${e.value}deg`}),re=h(e=>{if(e.fraction===null)return;let[t,r]=d(e.fraction,"/");if(!(!u(t)||!u(r)))return e.fraction}),L=h(e=>{if(u(Number(e.value)))return`repeat(${e.value}, minmax(0, 1fr))`}),be={accentColor:({theme:e})=>e("colors"),animation:{none:"none",spin:"spin 1s linear infinite",ping:"ping 1s cubic-bezier(0, 0, 0.2, 1) infinite",pulse:"pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite",bounce:"bounce 1s infinite"},aria:{busy:'busy="true"',checked:'checked="true"',disabled:'disabled="true"',expanded:'expanded="true"',hidden:'hidden="true"',pressed:'pressed="true"',readonly:'readonly="true"',required:'required="true"',selected:'selected="true"'},aspectRatio:{auto:"auto",square:"1 / 1",video:"16 / 9",...re},backdropBlur:({theme:e})=>e("blur"),backdropBrightness:({theme:e})=>({...e("brightness"),...l}),backdropContrast:({theme:e})=>({...e("contrast"),...l}),backdropGrayscale:({theme:e})=>({...e("grayscale"),...l}),backdropHueRotate:({theme:e})=>({...e("hueRotate"),...w}),backdropInvert:({theme:e})=>({...e("invert"),...l}),backdropOpacity:({theme:e})=>({...e("opacity"),...l}),backdropSaturate:({theme:e})=>({...e("saturate"),...l}),backdropSepia:({theme:e})=>({...e("sepia"),...l}),backgroundColor:({theme:e})=>e("colors"),backgroundImage:{none:"none","gradient-to-t":"linear-gradient(to top, var(--tw-gradient-stops))","gradient-to-tr":"linear-gradient(to top right, var(--tw-gradient-stops))","gradient-to-r":"linear-gradient(to right, var(--tw-gradient-stops))","gradient-to-br":"linear-gradient(to bottom right, var(--tw-gradient-stops))","gradient-to-b":"linear-gradient(to bottom, var(--tw-gradient-stops))","gradient-to-bl":"linear-gradient(to bottom left, var(--tw-gradient-stops))","gradient-to-l":"linear-gradient(to left, var(--tw-gradient-stops))","gradient-to-tl":"linear-gradient(to top left, var(--tw-gradient-stops))"},backgroundOpacity:({theme:e})=>e("opacity"),backgroundPosition:{bottom:"bottom",center:"center",left:"left","left-bottom":"left bottom","left-top":"left top",right:"right","right-bottom":"right bottom","right-top":"right top",top:"top"},backgroundSize:{auto:"auto",cover:"cover",contain:"contain"},blur:{0:"0",none:"",sm:"4px",DEFAULT:"8px",md:"12px",lg:"16px",xl:"24px","2xl":"40px","3xl":"64px"},borderColor:({theme:e})=>({DEFAULT:"currentcolor",...e("colors")}),borderOpacity:({theme:e})=>e("opacity"),borderRadius:{none:"0px",sm:"0.125rem",DEFAULT:"0.25rem",md:"0.375rem",lg:"0.5rem",xl:"0.75rem","2xl":"1rem","3xl":"1.5rem",full:"9999px"},borderSpacing:({theme:e})=>e("spacing"),borderWidth:{DEFAULT:"1px",0:"0px",2:"2px",4:"4px",8:"8px",...f},boxShadow:{sm:"0 1px 2px 0 rgb(0 0 0 / 0.05)",DEFAULT:"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)",md:"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",lg:"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",xl:"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)","2xl":"0 25px 50px -12px rgb(0 0 0 / 0.25)",inner:"inset 0 2px 4px 0 rgb(0 0 0 / 0.05)",none:"none"},boxShadowColor:({theme:e})=>e("colors"),brightness:{0:"0",50:".5",75:".75",90:".9",95:".95",100:"1",105:"1.05",110:"1.1",125:"1.25",150:"1.5",200:"2",...l},caretColor:({theme:e})=>e("colors"),colors:()=>({...k}),columns:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12","3xs":"16rem","2xs":"18rem",xs:"20rem",sm:"24rem",md:"28rem",lg:"32rem",xl:"36rem","2xl":"42rem","3xl":"48rem","4xl":"56rem","5xl":"64rem","6xl":"72rem","7xl":"80rem",...g},container:{},content:{none:"none"},contrast:{0:"0",50:".5",75:".75",100:"1",125:"1.25",150:"1.5",200:"2",...l},cursor:{auto:"auto",default:"default",pointer:"pointer",wait:"wait",text:"text",move:"move",help:"help","not-allowed":"not-allowed",none:"none","context-menu":"context-menu",progress:"progress",cell:"cell",crosshair:"crosshair","vertical-text":"vertical-text",alias:"alias",copy:"copy","no-drop":"no-drop",grab:"grab",grabbing:"grabbing","all-scroll":"all-scroll","col-resize":"col-resize","row-resize":"row-resize","n-resize":"n-resize","e-resize":"e-resize","s-resize":"s-resize","w-resize":"w-resize","ne-resize":"ne-resize","nw-resize":"nw-resize","se-resize":"se-resize","sw-resize":"sw-resize","ew-resize":"ew-resize","ns-resize":"ns-resize","nesw-resize":"nesw-resize","nwse-resize":"nwse-resize","zoom-in":"zoom-in","zoom-out":"zoom-out"},divideColor:({theme:e})=>e("borderColor"),divideOpacity:({theme:e})=>e("borderOpacity"),divideWidth:({theme:e})=>({...e("borderWidth"),...f}),dropShadow:{sm:"0 1px 1px rgb(0 0 0 / 0.05)",DEFAULT:["0 1px 2px rgb(0 0 0 / 0.1)","0 1px 1px rgb(0 0 0 / 0.06)"],md:["0 4px 3px rgb(0 0 0 / 0.07)","0 2px 2px rgb(0 0 0 / 0.06)"],lg:["0 10px 8px rgb(0 0 0 / 0.04)","0 4px 3px rgb(0 0 0 / 0.1)"],xl:["0 20px 13px rgb(0 0 0 / 0.03)","0 8px 5px rgb(0 0 0 / 0.08)"],"2xl":"0 25px 25px rgb(0 0 0 / 0.15)",none:"0 0 #0000"},fill:({theme:e})=>e("colors"),flex:{1:"1 1 0%",auto:"1 1 auto",initial:"0 1 auto",none:"none"},flexBasis:({theme:e})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%","1/12":"8.333333%","2/12":"16.666667%","3/12":"25%","4/12":"33.333333%","5/12":"41.666667%","6/12":"50%","7/12":"58.333333%","8/12":"66.666667%","9/12":"75%","10/12":"83.333333%","11/12":"91.666667%",full:"100%",...e("spacing")}),flexGrow:{0:"0",DEFAULT:"1",...g},flexShrink:{0:"0",DEFAULT:"1",...g},fontFamily:{sans:["ui-sans-serif","system-ui","sans-serif",'"Apple Color Emoji"','"Segoe UI Emoji"','"Segoe UI Symbol"','"Noto Color Emoji"'],serif:["ui-serif","Georgia","Cambria",'"Times New Roman"',"Times","serif"],mono:["ui-monospace","SFMono-Regular","Menlo","Monaco","Consolas",'"Liberation Mono"','"Courier New"',"monospace"]},fontSize:{xs:["0.75rem",{lineHeight:"1rem"}],sm:["0.875rem",{lineHeight:"1.25rem"}],base:["1rem",{lineHeight:"1.5rem"}],lg:["1.125rem",{lineHeight:"1.75rem"}],xl:["1.25rem",{lineHeight:"1.75rem"}],"2xl":["1.5rem",{lineHeight:"2rem"}],"3xl":["1.875rem",{lineHeight:"2.25rem"}],"4xl":["2.25rem",{lineHeight:"2.5rem"}],"5xl":["3rem",{lineHeight:"1"}],"6xl":["3.75rem",{lineHeight:"1"}],"7xl":["4.5rem",{lineHeight:"1"}],"8xl":["6rem",{lineHeight:"1"}],"9xl":["8rem",{lineHeight:"1"}]},fontWeight:{thin:"100",extralight:"200",light:"300",normal:"400",medium:"500",semibold:"600",bold:"700",extrabold:"800",black:"900"},gap:({theme:e})=>e("spacing"),gradientColorStops:({theme:e})=>e("colors"),gradientColorStopPositions:{"0%":"0%","5%":"5%","10%":"10%","15%":"15%","20%":"20%","25%":"25%","30%":"30%","35%":"35%","40%":"40%","45%":"45%","50%":"50%","55%":"55%","60%":"60%","65%":"65%","70%":"70%","75%":"75%","80%":"80%","85%":"85%","90%":"90%","95%":"95%","100%":"100%",...l},grayscale:{0:"0",DEFAULT:"100%",...l},gridAutoColumns:{auto:"auto",min:"min-content",max:"max-content",fr:"minmax(0, 1fr)"},gridAutoRows:{auto:"auto",min:"min-content",max:"max-content",fr:"minmax(0, 1fr)"},gridColumn:{auto:"auto","span-1":"span 1 / span 1","span-2":"span 2 / span 2","span-3":"span 3 / span 3","span-4":"span 4 / span 4","span-5":"span 5 / span 5","span-6":"span 6 / span 6","span-7":"span 7 / span 7","span-8":"span 8 / span 8","span-9":"span 9 / span 9","span-10":"span 10 / span 10","span-11":"span 11 / span 11","span-12":"span 12 / span 12","span-full":"1 / -1"},gridColumnEnd:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13",...g},gridColumnStart:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13",...g},gridRow:{auto:"auto","span-1":"span 1 / span 1","span-2":"span 2 / span 2","span-3":"span 3 / span 3","span-4":"span 4 / span 4","span-5":"span 5 / span 5","span-6":"span 6 / span 6","span-7":"span 7 / span 7","span-8":"span 8 / span 8","span-9":"span 9 / span 9","span-10":"span 10 / span 10","span-11":"span 11 / span 11","span-12":"span 12 / span 12","span-full":"1 / -1"},gridRowEnd:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13",...g},gridRowStart:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13",...g},gridTemplateColumns:{none:"none",subgrid:"subgrid",1:"repeat(1, minmax(0, 1fr))",2:"repeat(2, minmax(0, 1fr))",3:"repeat(3, minmax(0, 1fr))",4:"repeat(4, minmax(0, 1fr))",5:"repeat(5, minmax(0, 1fr))",6:"repeat(6, minmax(0, 1fr))",7:"repeat(7, minmax(0, 1fr))",8:"repeat(8, minmax(0, 1fr))",9:"repeat(9, minmax(0, 1fr))",10:"repeat(10, minmax(0, 1fr))",11:"repeat(11, minmax(0, 1fr))",12:"repeat(12, minmax(0, 1fr))",...L},gridTemplateRows:{none:"none",subgrid:"subgrid",1:"repeat(1, minmax(0, 1fr))",2:"repeat(2, minmax(0, 1fr))",3:"repeat(3, minmax(0, 1fr))",4:"repeat(4, minmax(0, 1fr))",5:"repeat(5, minmax(0, 1fr))",6:"repeat(6, minmax(0, 1fr))",7:"repeat(7, minmax(0, 1fr))",8:"repeat(8, minmax(0, 1fr))",9:"repeat(9, minmax(0, 1fr))",10:"repeat(10, minmax(0, 1fr))",11:"repeat(11, minmax(0, 1fr))",12:"repeat(12, minmax(0, 1fr))",...L},height:({theme:e})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%",full:"100%",screen:"100vh",svh:"100svh",lvh:"100lvh",dvh:"100dvh",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),hueRotate:{0:"0deg",15:"15deg",30:"30deg",60:"60deg",90:"90deg",180:"180deg",...w},inset:({theme:e})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%",full:"100%",...e("spacing")}),invert:{0:"0",DEFAULT:"100%",...l},keyframes:{spin:{to:{transform:"rotate(360deg)"}},ping:{"75%, 100%":{transform:"scale(2)",opacity:"0"}},pulse:{"50%":{opacity:".5"}},bounce:{"0%, 100%":{transform:"translateY(-25%)",animationTimingFunction:"cubic-bezier(0.8,0,1,1)"},"50%":{transform:"none",animationTimingFunction:"cubic-bezier(0,0,0.2,1)"}}},letterSpacing:{tighter:"-0.05em",tight:"-0.025em",normal:"0em",wide:"0.025em",wider:"0.05em",widest:"0.1em"},lineHeight:{none:"1",tight:"1.25",snug:"1.375",normal:"1.5",relaxed:"1.625",loose:"2",3:".75rem",4:"1rem",5:"1.25rem",6:"1.5rem",7:"1.75rem",8:"2rem",9:"2.25rem",10:"2.5rem"},listStyleType:{none:"none",disc:"disc",decimal:"decimal"},listStyleImage:{none:"none"},margin:({theme:e})=>({auto:"auto",...e("spacing")}),lineClamp:{1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",...g},maxHeight:({theme:e})=>({none:"none",full:"100%",screen:"100vh",svh:"100svh",lvh:"100lvh",dvh:"100dvh",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),maxWidth:({theme:e})=>({none:"none",xs:"20rem",sm:"24rem",md:"28rem",lg:"32rem",xl:"36rem","2xl":"42rem","3xl":"48rem","4xl":"56rem","5xl":"64rem","6xl":"72rem","7xl":"80rem",full:"100%",min:"min-content",max:"max-content",fit:"fit-content",prose:"65ch",...e("spacing")}),minHeight:({theme:e})=>({full:"100%",screen:"100vh",svh:"100svh",lvh:"100lvh",dvh:"100dvh",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),minWidth:({theme:e})=>({full:"100%",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),objectPosition:{bottom:"bottom",center:"center",left:"left","left-bottom":"left bottom","left-top":"left top",right:"right","right-bottom":"right bottom","right-top":"right top",top:"top"},opacity:{0:"0",5:"0.05",10:"0.1",15:"0.15",20:"0.2",25:"0.25",30:"0.3",35:"0.35",40:"0.4",45:"0.45",50:"0.5",55:"0.55",60:"0.6",65:"0.65",70:"0.7",75:"0.75",80:"0.8",85:"0.85",90:"0.9",95:"0.95",100:"1",...l},order:{first:"-9999",last:"9999",none:"0",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",...g},outlineColor:({theme:e})=>e("colors"),outlineOffset:{0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...f},outlineWidth:{0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...f},padding:({theme:e})=>e("spacing"),placeholderColor:({theme:e})=>e("colors"),placeholderOpacity:({theme:e})=>e("opacity"),ringColor:({theme:e})=>({DEFAULT:"currentcolor",...e("colors")}),ringOffsetColor:({theme:e})=>e("colors"),ringOffsetWidth:{0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...f},ringOpacity:({theme:e})=>({DEFAULT:"0.5",...e("opacity")}),ringWidth:{DEFAULT:"3px",0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...f},rotate:{0:"0deg",1:"1deg",2:"2deg",3:"3deg",6:"6deg",12:"12deg",45:"45deg",90:"90deg",180:"180deg",...w},saturate:{0:"0",50:".5",100:"1",150:"1.5",200:"2",...l},scale:{0:"0",50:".5",75:".75",90:".9",95:".95",100:"1",105:"1.05",110:"1.1",125:"1.25",150:"1.5",...l},screens:{sm:"40rem",md:"48rem",lg:"64rem",xl:"80rem","2xl":"96rem"},scrollMargin:({theme:e})=>e("spacing"),scrollPadding:({theme:e})=>e("spacing"),sepia:{0:"0",DEFAULT:"100%",...l},skew:{0:"0deg",1:"1deg",2:"2deg",3:"3deg",6:"6deg",12:"12deg",...w},space:({theme:e})=>e("spacing"),spacing:{px:"1px",0:"0px",.5:"0.125rem",1:"0.25rem",1.5:"0.375rem",2:"0.5rem",2.5:"0.625rem",3:"0.75rem",3.5:"0.875rem",4:"1rem",5:"1.25rem",6:"1.5rem",7:"1.75rem",8:"2rem",9:"2.25rem",10:"2.5rem",11:"2.75rem",12:"3rem",14:"3.5rem",16:"4rem",20:"5rem",24:"6rem",28:"7rem",32:"8rem",36:"9rem",40:"10rem",44:"11rem",48:"12rem",52:"13rem",56:"14rem",60:"15rem",64:"16rem",72:"18rem",80:"20rem",96:"24rem"},stroke:({theme:e})=>({none:"none",...e("colors")}),strokeWidth:{0:"0",1:"1",2:"2",...g},supports:{},data:{},textColor:({theme:e})=>e("colors"),textDecorationColor:({theme:e})=>e("colors"),textDecorationThickness:{auto:"auto","from-font":"from-font",0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...f},textIndent:({theme:e})=>e("spacing"),textOpacity:({theme:e})=>e("opacity"),textUnderlineOffset:{auto:"auto",0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...f},transformOrigin:{center:"center",top:"top","top-right":"top right",right:"right","bottom-right":"bottom right",bottom:"bottom","bottom-left":"bottom left",left:"left","top-left":"top left"},transitionDelay:{0:"0s",75:"75ms",100:"100ms",150:"150ms",200:"200ms",300:"300ms",500:"500ms",700:"700ms",1e3:"1000ms",...O},transitionDuration:{DEFAULT:"150ms",0:"0s",75:"75ms",100:"100ms",150:"150ms",200:"200ms",300:"300ms",500:"500ms",700:"700ms",1e3:"1000ms",...O},transitionProperty:{none:"none",all:"all",DEFAULT:"color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter",colors:"color, background-color, border-color, outline-color, text-decoration-color, fill, stroke",opacity:"opacity",shadow:"box-shadow",transform:"transform"},transitionTimingFunction:{DEFAULT:"cubic-bezier(0.4, 0, 0.2, 1)",linear:"linear",in:"cubic-bezier(0.4, 0, 1, 1)",out:"cubic-bezier(0, 0, 0.2, 1)","in-out":"cubic-bezier(0.4, 0, 0.2, 1)"},translate:({theme:e})=>({"1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%",full:"100%",...e("spacing")}),size:({theme:e})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%","1/12":"8.333333%","2/12":"16.666667%","3/12":"25%","4/12":"33.333333%","5/12":"41.666667%","6/12":"50%","7/12":"58.333333%","8/12":"66.666667%","9/12":"75%","10/12":"83.333333%","11/12":"91.666667%",full:"100%",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),width:({theme:e})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%","1/12":"8.333333%","2/12":"16.666667%","3/12":"25%","4/12":"33.333333%","5/12":"41.666667%","6/12":"50%","7/12":"58.333333%","8/12":"66.666667%","9/12":"75%","10/12":"83.333333%","11/12":"91.666667%",full:"100%",screen:"100vw",svw:"100svw",lvw:"100lvw",dvw:"100dvw",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),willChange:{auto:"auto",scroll:"scroll-position",contents:"contents",transform:"transform"},zIndex:{auto:"auto",0:"0",10:"10",20:"20",30:"30",40:"40",50:"50",...g}};export{oe as a,d as b,me as c,y as d,u as e,pe as f,ge as g,ue as h,be as i}; diff --git a/node_modules/tailwindcss/dist/chunk-X4GG3EDV.mjs b/node_modules/tailwindcss/dist/chunk-X4GG3EDV.mjs new file mode 100644 index 00000000..66dc57e7 --- /dev/null +++ b/node_modules/tailwindcss/dist/chunk-X4GG3EDV.mjs @@ -0,0 +1 @@ +var l={inherit:"inherit",current:"currentcolor",transparent:"transparent",black:"#000",white:"#fff",slate:{50:"oklch(98.4% 0.003 247.858)",100:"oklch(96.8% 0.007 247.896)",200:"oklch(92.9% 0.013 255.508)",300:"oklch(86.9% 0.022 252.894)",400:"oklch(70.4% 0.04 256.788)",500:"oklch(55.4% 0.046 257.417)",600:"oklch(44.6% 0.043 257.281)",700:"oklch(37.2% 0.044 257.287)",800:"oklch(27.9% 0.041 260.031)",900:"oklch(20.8% 0.042 265.755)",950:"oklch(12.9% 0.042 264.695)"},gray:{50:"oklch(98.5% 0.002 247.839)",100:"oklch(96.7% 0.003 264.542)",200:"oklch(92.8% 0.006 264.531)",300:"oklch(87.2% 0.01 258.338)",400:"oklch(70.7% 0.022 261.325)",500:"oklch(55.1% 0.027 264.364)",600:"oklch(44.6% 0.03 256.802)",700:"oklch(37.3% 0.034 259.733)",800:"oklch(27.8% 0.033 256.848)",900:"oklch(21% 0.034 264.665)",950:"oklch(13% 0.028 261.692)"},zinc:{50:"oklch(98.5% 0 0)",100:"oklch(96.7% 0.001 286.375)",200:"oklch(92% 0.004 286.32)",300:"oklch(87.1% 0.006 286.286)",400:"oklch(70.5% 0.015 286.067)",500:"oklch(55.2% 0.016 285.938)",600:"oklch(44.2% 0.017 285.786)",700:"oklch(37% 0.013 285.805)",800:"oklch(27.4% 0.006 286.033)",900:"oklch(21% 0.006 285.885)",950:"oklch(14.1% 0.005 285.823)"},neutral:{50:"oklch(98.5% 0 0)",100:"oklch(97% 0 0)",200:"oklch(92.2% 0 0)",300:"oklch(87% 0 0)",400:"oklch(70.8% 0 0)",500:"oklch(55.6% 0 0)",600:"oklch(43.9% 0 0)",700:"oklch(37.1% 0 0)",800:"oklch(26.9% 0 0)",900:"oklch(20.5% 0 0)",950:"oklch(14.5% 0 0)"},stone:{50:"oklch(98.5% 0.001 106.423)",100:"oklch(97% 0.001 106.424)",200:"oklch(92.3% 0.003 48.717)",300:"oklch(86.9% 0.005 56.366)",400:"oklch(70.9% 0.01 56.259)",500:"oklch(55.3% 0.013 58.071)",600:"oklch(44.4% 0.011 73.639)",700:"oklch(37.4% 0.01 67.558)",800:"oklch(26.8% 0.007 34.298)",900:"oklch(21.6% 0.006 56.043)",950:"oklch(14.7% 0.004 49.25)"},mauve:{50:"oklch(98.5% 0 0)",100:"oklch(96% 0.003 325.6)",200:"oklch(92.2% 0.005 325.62)",300:"oklch(86.5% 0.012 325.68)",400:"oklch(71.1% 0.019 323.02)",500:"oklch(54.2% 0.034 322.5)",600:"oklch(43.5% 0.029 321.78)",700:"oklch(36.4% 0.029 323.89)",800:"oklch(26.3% 0.024 320.12)",900:"oklch(21.2% 0.019 322.12)",950:"oklch(14.5% 0.008 326)"},olive:{50:"oklch(98.8% 0.003 106.5)",100:"oklch(96.6% 0.005 106.5)",200:"oklch(93% 0.007 106.5)",300:"oklch(88% 0.011 106.6)",400:"oklch(73.7% 0.021 106.9)",500:"oklch(58% 0.031 107.3)",600:"oklch(46.6% 0.025 107.3)",700:"oklch(39.4% 0.023 107.4)",800:"oklch(28.6% 0.016 107.4)",900:"oklch(22.8% 0.013 107.4)",950:"oklch(15.3% 0.006 107.1)"},mist:{50:"oklch(98.7% 0.002 197.1)",100:"oklch(96.3% 0.002 197.1)",200:"oklch(92.5% 0.005 214.3)",300:"oklch(87.2% 0.007 219.6)",400:"oklch(72.3% 0.014 214.4)",500:"oklch(56% 0.021 213.5)",600:"oklch(45% 0.017 213.2)",700:"oklch(37.8% 0.015 216)",800:"oklch(27.5% 0.011 216.9)",900:"oklch(21.8% 0.008 223.9)",950:"oklch(14.8% 0.004 228.8)"},taupe:{50:"oklch(98.6% 0.002 67.8)",100:"oklch(96% 0.002 17.2)",200:"oklch(92.2% 0.005 34.3)",300:"oklch(86.8% 0.007 39.5)",400:"oklch(71.4% 0.014 41.2)",500:"oklch(54.7% 0.021 43.1)",600:"oklch(43.8% 0.017 39.3)",700:"oklch(36.7% 0.016 35.7)",800:"oklch(26.8% 0.011 36.5)",900:"oklch(21.4% 0.009 43.1)",950:"oklch(14.7% 0.004 49.3)"},red:{50:"oklch(97.1% 0.013 17.38)",100:"oklch(93.6% 0.032 17.717)",200:"oklch(88.5% 0.062 18.334)",300:"oklch(80.8% 0.114 19.571)",400:"oklch(70.4% 0.191 22.216)",500:"oklch(63.7% 0.237 25.331)",600:"oklch(57.7% 0.245 27.325)",700:"oklch(50.5% 0.213 27.518)",800:"oklch(44.4% 0.177 26.899)",900:"oklch(39.6% 0.141 25.723)",950:"oklch(25.8% 0.092 26.042)"},orange:{50:"oklch(98% 0.016 73.684)",100:"oklch(95.4% 0.038 75.164)",200:"oklch(90.1% 0.076 70.697)",300:"oklch(83.7% 0.128 66.29)",400:"oklch(75% 0.183 55.934)",500:"oklch(70.5% 0.213 47.604)",600:"oklch(64.6% 0.222 41.116)",700:"oklch(55.3% 0.195 38.402)",800:"oklch(47% 0.157 37.304)",900:"oklch(40.8% 0.123 38.172)",950:"oklch(26.6% 0.079 36.259)"},amber:{50:"oklch(98.7% 0.022 95.277)",100:"oklch(96.2% 0.059 95.617)",200:"oklch(92.4% 0.12 95.746)",300:"oklch(87.9% 0.169 91.605)",400:"oklch(82.8% 0.189 84.429)",500:"oklch(76.9% 0.188 70.08)",600:"oklch(66.6% 0.179 58.318)",700:"oklch(55.5% 0.163 48.998)",800:"oklch(47.3% 0.137 46.201)",900:"oklch(41.4% 0.112 45.904)",950:"oklch(27.9% 0.077 45.635)"},yellow:{50:"oklch(98.7% 0.026 102.212)",100:"oklch(97.3% 0.071 103.193)",200:"oklch(94.5% 0.129 101.54)",300:"oklch(90.5% 0.182 98.111)",400:"oklch(85.2% 0.199 91.936)",500:"oklch(79.5% 0.184 86.047)",600:"oklch(68.1% 0.162 75.834)",700:"oklch(55.4% 0.135 66.442)",800:"oklch(47.6% 0.114 61.907)",900:"oklch(42.1% 0.095 57.708)",950:"oklch(28.6% 0.066 53.813)"},lime:{50:"oklch(98.6% 0.031 120.757)",100:"oklch(96.7% 0.067 122.328)",200:"oklch(93.8% 0.127 124.321)",300:"oklch(89.7% 0.196 126.665)",400:"oklch(84.1% 0.238 128.85)",500:"oklch(76.8% 0.233 130.85)",600:"oklch(64.8% 0.2 131.684)",700:"oklch(53.2% 0.157 131.589)",800:"oklch(45.3% 0.124 130.933)",900:"oklch(40.5% 0.101 131.063)",950:"oklch(27.4% 0.072 132.109)"},green:{50:"oklch(98.2% 0.018 155.826)",100:"oklch(96.2% 0.044 156.743)",200:"oklch(92.5% 0.084 155.995)",300:"oklch(87.1% 0.15 154.449)",400:"oklch(79.2% 0.209 151.711)",500:"oklch(72.3% 0.219 149.579)",600:"oklch(62.7% 0.194 149.214)",700:"oklch(52.7% 0.154 150.069)",800:"oklch(44.8% 0.119 151.328)",900:"oklch(39.3% 0.095 152.535)",950:"oklch(26.6% 0.065 152.934)"},emerald:{50:"oklch(97.9% 0.021 166.113)",100:"oklch(95% 0.052 163.051)",200:"oklch(90.5% 0.093 164.15)",300:"oklch(84.5% 0.143 164.978)",400:"oklch(76.5% 0.177 163.223)",500:"oklch(69.6% 0.17 162.48)",600:"oklch(59.6% 0.145 163.225)",700:"oklch(50.8% 0.118 165.612)",800:"oklch(43.2% 0.095 166.913)",900:"oklch(37.8% 0.077 168.94)",950:"oklch(26.2% 0.051 172.552)"},teal:{50:"oklch(98.4% 0.014 180.72)",100:"oklch(95.3% 0.051 180.801)",200:"oklch(91% 0.096 180.426)",300:"oklch(85.5% 0.138 181.071)",400:"oklch(77.7% 0.152 181.912)",500:"oklch(70.4% 0.14 182.503)",600:"oklch(60% 0.118 184.704)",700:"oklch(51.1% 0.096 186.391)",800:"oklch(43.7% 0.078 188.216)",900:"oklch(38.6% 0.063 188.416)",950:"oklch(27.7% 0.046 192.524)"},cyan:{50:"oklch(98.4% 0.019 200.873)",100:"oklch(95.6% 0.045 203.388)",200:"oklch(91.7% 0.08 205.041)",300:"oklch(86.5% 0.127 207.078)",400:"oklch(78.9% 0.154 211.53)",500:"oklch(71.5% 0.143 215.221)",600:"oklch(60.9% 0.126 221.723)",700:"oklch(52% 0.105 223.128)",800:"oklch(45% 0.085 224.283)",900:"oklch(39.8% 0.07 227.392)",950:"oklch(30.2% 0.056 229.695)"},sky:{50:"oklch(97.7% 0.013 236.62)",100:"oklch(95.1% 0.026 236.824)",200:"oklch(90.1% 0.058 230.902)",300:"oklch(82.8% 0.111 230.318)",400:"oklch(74.6% 0.16 232.661)",500:"oklch(68.5% 0.169 237.323)",600:"oklch(58.8% 0.158 241.966)",700:"oklch(50% 0.134 242.749)",800:"oklch(44.3% 0.11 240.79)",900:"oklch(39.1% 0.09 240.876)",950:"oklch(29.3% 0.066 243.157)"},blue:{50:"oklch(97% 0.014 254.604)",100:"oklch(93.2% 0.032 255.585)",200:"oklch(88.2% 0.059 254.128)",300:"oklch(80.9% 0.105 251.813)",400:"oklch(70.7% 0.165 254.624)",500:"oklch(62.3% 0.214 259.815)",600:"oklch(54.6% 0.245 262.881)",700:"oklch(48.8% 0.243 264.376)",800:"oklch(42.4% 0.199 265.638)",900:"oklch(37.9% 0.146 265.522)",950:"oklch(28.2% 0.091 267.935)"},indigo:{50:"oklch(96.2% 0.018 272.314)",100:"oklch(93% 0.034 272.788)",200:"oklch(87% 0.065 274.039)",300:"oklch(78.5% 0.115 274.713)",400:"oklch(67.3% 0.182 276.935)",500:"oklch(58.5% 0.233 277.117)",600:"oklch(51.1% 0.262 276.966)",700:"oklch(45.7% 0.24 277.023)",800:"oklch(39.8% 0.195 277.366)",900:"oklch(35.9% 0.144 278.697)",950:"oklch(25.7% 0.09 281.288)"},violet:{50:"oklch(96.9% 0.016 293.756)",100:"oklch(94.3% 0.029 294.588)",200:"oklch(89.4% 0.057 293.283)",300:"oklch(81.1% 0.111 293.571)",400:"oklch(70.2% 0.183 293.541)",500:"oklch(60.6% 0.25 292.717)",600:"oklch(54.1% 0.281 293.009)",700:"oklch(49.1% 0.27 292.581)",800:"oklch(43.2% 0.232 292.759)",900:"oklch(38% 0.189 293.745)",950:"oklch(28.3% 0.141 291.089)"},purple:{50:"oklch(97.7% 0.014 308.299)",100:"oklch(94.6% 0.033 307.174)",200:"oklch(90.2% 0.063 306.703)",300:"oklch(82.7% 0.119 306.383)",400:"oklch(71.4% 0.203 305.504)",500:"oklch(62.7% 0.265 303.9)",600:"oklch(55.8% 0.288 302.321)",700:"oklch(49.6% 0.265 301.924)",800:"oklch(43.8% 0.218 303.724)",900:"oklch(38.1% 0.176 304.987)",950:"oklch(29.1% 0.149 302.717)"},fuchsia:{50:"oklch(97.7% 0.017 320.058)",100:"oklch(95.2% 0.037 318.852)",200:"oklch(90.3% 0.076 319.62)",300:"oklch(83.3% 0.145 321.434)",400:"oklch(74% 0.238 322.16)",500:"oklch(66.7% 0.295 322.15)",600:"oklch(59.1% 0.293 322.896)",700:"oklch(51.8% 0.253 323.949)",800:"oklch(45.2% 0.211 324.591)",900:"oklch(40.1% 0.17 325.612)",950:"oklch(29.3% 0.136 325.661)"},pink:{50:"oklch(97.1% 0.014 343.198)",100:"oklch(94.8% 0.028 342.258)",200:"oklch(89.9% 0.061 343.231)",300:"oklch(82.3% 0.12 346.018)",400:"oklch(71.8% 0.202 349.761)",500:"oklch(65.6% 0.241 354.308)",600:"oklch(59.2% 0.249 0.584)",700:"oklch(52.5% 0.223 3.958)",800:"oklch(45.9% 0.187 3.815)",900:"oklch(40.8% 0.153 2.432)",950:"oklch(28.4% 0.109 3.907)"},rose:{50:"oklch(96.9% 0.015 12.422)",100:"oklch(94.1% 0.03 12.58)",200:"oklch(89.2% 0.058 10.001)",300:"oklch(81% 0.117 11.638)",400:"oklch(71.2% 0.194 13.428)",500:"oklch(64.5% 0.246 16.439)",600:"oklch(58.6% 0.253 17.585)",700:"oklch(51.4% 0.222 16.935)",800:"oklch(45.5% 0.188 13.697)",900:"oklch(41% 0.159 10.272)",950:"oklch(27.1% 0.105 12.094)"}};export{l as a}; diff --git a/node_modules/tailwindcss/dist/colors-C__qRT83.d.ts b/node_modules/tailwindcss/dist/colors-C__qRT83.d.ts new file mode 100644 index 00000000..ca685d6e --- /dev/null +++ b/node_modules/tailwindcss/dist/colors-C__qRT83.d.ts @@ -0,0 +1,347 @@ +declare const _default: { + inherit: string; + current: string; + transparent: string; + black: string; + white: string; + slate: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + gray: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + zinc: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + neutral: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + stone: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + mauve: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + olive: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + mist: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + taupe: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + red: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + orange: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + amber: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + yellow: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + lime: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + green: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + emerald: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + teal: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + cyan: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + sky: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + blue: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + indigo: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + violet: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + purple: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + fuchsia: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + pink: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + rose: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; +}; + +export { _default as _ }; diff --git a/node_modules/tailwindcss/dist/colors.d.mts b/node_modules/tailwindcss/dist/colors.d.mts new file mode 100644 index 00000000..96785cb7 --- /dev/null +++ b/node_modules/tailwindcss/dist/colors.d.mts @@ -0,0 +1,347 @@ +declare const _default: { + inherit: string; + current: string; + transparent: string; + black: string; + white: string; + slate: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + gray: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + zinc: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + neutral: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + stone: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + mauve: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + olive: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + mist: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + taupe: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + red: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + orange: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + amber: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + yellow: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + lime: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + green: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + emerald: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + teal: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + cyan: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + sky: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + blue: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + indigo: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + violet: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + purple: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + fuchsia: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + pink: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + rose: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; +}; + +export { _default as default }; diff --git a/node_modules/tailwindcss/dist/colors.d.ts b/node_modules/tailwindcss/dist/colors.d.ts new file mode 100644 index 00000000..f99c9553 --- /dev/null +++ b/node_modules/tailwindcss/dist/colors.d.ts @@ -0,0 +1,5 @@ +import { _ as _default } from './colors-C__qRT83.js'; + + + +export { _default as default }; diff --git a/node_modules/tailwindcss/dist/colors.js b/node_modules/tailwindcss/dist/colors.js new file mode 100644 index 00000000..20a4a3d3 --- /dev/null +++ b/node_modules/tailwindcss/dist/colors.js @@ -0,0 +1 @@ +"use strict";var l={inherit:"inherit",current:"currentcolor",transparent:"transparent",black:"#000",white:"#fff",slate:{50:"oklch(98.4% 0.003 247.858)",100:"oklch(96.8% 0.007 247.896)",200:"oklch(92.9% 0.013 255.508)",300:"oklch(86.9% 0.022 252.894)",400:"oklch(70.4% 0.04 256.788)",500:"oklch(55.4% 0.046 257.417)",600:"oklch(44.6% 0.043 257.281)",700:"oklch(37.2% 0.044 257.287)",800:"oklch(27.9% 0.041 260.031)",900:"oklch(20.8% 0.042 265.755)",950:"oklch(12.9% 0.042 264.695)"},gray:{50:"oklch(98.5% 0.002 247.839)",100:"oklch(96.7% 0.003 264.542)",200:"oklch(92.8% 0.006 264.531)",300:"oklch(87.2% 0.01 258.338)",400:"oklch(70.7% 0.022 261.325)",500:"oklch(55.1% 0.027 264.364)",600:"oklch(44.6% 0.03 256.802)",700:"oklch(37.3% 0.034 259.733)",800:"oklch(27.8% 0.033 256.848)",900:"oklch(21% 0.034 264.665)",950:"oklch(13% 0.028 261.692)"},zinc:{50:"oklch(98.5% 0 0)",100:"oklch(96.7% 0.001 286.375)",200:"oklch(92% 0.004 286.32)",300:"oklch(87.1% 0.006 286.286)",400:"oklch(70.5% 0.015 286.067)",500:"oklch(55.2% 0.016 285.938)",600:"oklch(44.2% 0.017 285.786)",700:"oklch(37% 0.013 285.805)",800:"oklch(27.4% 0.006 286.033)",900:"oklch(21% 0.006 285.885)",950:"oklch(14.1% 0.005 285.823)"},neutral:{50:"oklch(98.5% 0 0)",100:"oklch(97% 0 0)",200:"oklch(92.2% 0 0)",300:"oklch(87% 0 0)",400:"oklch(70.8% 0 0)",500:"oklch(55.6% 0 0)",600:"oklch(43.9% 0 0)",700:"oklch(37.1% 0 0)",800:"oklch(26.9% 0 0)",900:"oklch(20.5% 0 0)",950:"oklch(14.5% 0 0)"},stone:{50:"oklch(98.5% 0.001 106.423)",100:"oklch(97% 0.001 106.424)",200:"oklch(92.3% 0.003 48.717)",300:"oklch(86.9% 0.005 56.366)",400:"oklch(70.9% 0.01 56.259)",500:"oklch(55.3% 0.013 58.071)",600:"oklch(44.4% 0.011 73.639)",700:"oklch(37.4% 0.01 67.558)",800:"oklch(26.8% 0.007 34.298)",900:"oklch(21.6% 0.006 56.043)",950:"oklch(14.7% 0.004 49.25)"},mauve:{50:"oklch(98.5% 0 0)",100:"oklch(96% 0.003 325.6)",200:"oklch(92.2% 0.005 325.62)",300:"oklch(86.5% 0.012 325.68)",400:"oklch(71.1% 0.019 323.02)",500:"oklch(54.2% 0.034 322.5)",600:"oklch(43.5% 0.029 321.78)",700:"oklch(36.4% 0.029 323.89)",800:"oklch(26.3% 0.024 320.12)",900:"oklch(21.2% 0.019 322.12)",950:"oklch(14.5% 0.008 326)"},olive:{50:"oklch(98.8% 0.003 106.5)",100:"oklch(96.6% 0.005 106.5)",200:"oklch(93% 0.007 106.5)",300:"oklch(88% 0.011 106.6)",400:"oklch(73.7% 0.021 106.9)",500:"oklch(58% 0.031 107.3)",600:"oklch(46.6% 0.025 107.3)",700:"oklch(39.4% 0.023 107.4)",800:"oklch(28.6% 0.016 107.4)",900:"oklch(22.8% 0.013 107.4)",950:"oklch(15.3% 0.006 107.1)"},mist:{50:"oklch(98.7% 0.002 197.1)",100:"oklch(96.3% 0.002 197.1)",200:"oklch(92.5% 0.005 214.3)",300:"oklch(87.2% 0.007 219.6)",400:"oklch(72.3% 0.014 214.4)",500:"oklch(56% 0.021 213.5)",600:"oklch(45% 0.017 213.2)",700:"oklch(37.8% 0.015 216)",800:"oklch(27.5% 0.011 216.9)",900:"oklch(21.8% 0.008 223.9)",950:"oklch(14.8% 0.004 228.8)"},taupe:{50:"oklch(98.6% 0.002 67.8)",100:"oklch(96% 0.002 17.2)",200:"oklch(92.2% 0.005 34.3)",300:"oklch(86.8% 0.007 39.5)",400:"oklch(71.4% 0.014 41.2)",500:"oklch(54.7% 0.021 43.1)",600:"oklch(43.8% 0.017 39.3)",700:"oklch(36.7% 0.016 35.7)",800:"oklch(26.8% 0.011 36.5)",900:"oklch(21.4% 0.009 43.1)",950:"oklch(14.7% 0.004 49.3)"},red:{50:"oklch(97.1% 0.013 17.38)",100:"oklch(93.6% 0.032 17.717)",200:"oklch(88.5% 0.062 18.334)",300:"oklch(80.8% 0.114 19.571)",400:"oklch(70.4% 0.191 22.216)",500:"oklch(63.7% 0.237 25.331)",600:"oklch(57.7% 0.245 27.325)",700:"oklch(50.5% 0.213 27.518)",800:"oklch(44.4% 0.177 26.899)",900:"oklch(39.6% 0.141 25.723)",950:"oklch(25.8% 0.092 26.042)"},orange:{50:"oklch(98% 0.016 73.684)",100:"oklch(95.4% 0.038 75.164)",200:"oklch(90.1% 0.076 70.697)",300:"oklch(83.7% 0.128 66.29)",400:"oklch(75% 0.183 55.934)",500:"oklch(70.5% 0.213 47.604)",600:"oklch(64.6% 0.222 41.116)",700:"oklch(55.3% 0.195 38.402)",800:"oklch(47% 0.157 37.304)",900:"oklch(40.8% 0.123 38.172)",950:"oklch(26.6% 0.079 36.259)"},amber:{50:"oklch(98.7% 0.022 95.277)",100:"oklch(96.2% 0.059 95.617)",200:"oklch(92.4% 0.12 95.746)",300:"oklch(87.9% 0.169 91.605)",400:"oklch(82.8% 0.189 84.429)",500:"oklch(76.9% 0.188 70.08)",600:"oklch(66.6% 0.179 58.318)",700:"oklch(55.5% 0.163 48.998)",800:"oklch(47.3% 0.137 46.201)",900:"oklch(41.4% 0.112 45.904)",950:"oklch(27.9% 0.077 45.635)"},yellow:{50:"oklch(98.7% 0.026 102.212)",100:"oklch(97.3% 0.071 103.193)",200:"oklch(94.5% 0.129 101.54)",300:"oklch(90.5% 0.182 98.111)",400:"oklch(85.2% 0.199 91.936)",500:"oklch(79.5% 0.184 86.047)",600:"oklch(68.1% 0.162 75.834)",700:"oklch(55.4% 0.135 66.442)",800:"oklch(47.6% 0.114 61.907)",900:"oklch(42.1% 0.095 57.708)",950:"oklch(28.6% 0.066 53.813)"},lime:{50:"oklch(98.6% 0.031 120.757)",100:"oklch(96.7% 0.067 122.328)",200:"oklch(93.8% 0.127 124.321)",300:"oklch(89.7% 0.196 126.665)",400:"oklch(84.1% 0.238 128.85)",500:"oklch(76.8% 0.233 130.85)",600:"oklch(64.8% 0.2 131.684)",700:"oklch(53.2% 0.157 131.589)",800:"oklch(45.3% 0.124 130.933)",900:"oklch(40.5% 0.101 131.063)",950:"oklch(27.4% 0.072 132.109)"},green:{50:"oklch(98.2% 0.018 155.826)",100:"oklch(96.2% 0.044 156.743)",200:"oklch(92.5% 0.084 155.995)",300:"oklch(87.1% 0.15 154.449)",400:"oklch(79.2% 0.209 151.711)",500:"oklch(72.3% 0.219 149.579)",600:"oklch(62.7% 0.194 149.214)",700:"oklch(52.7% 0.154 150.069)",800:"oklch(44.8% 0.119 151.328)",900:"oklch(39.3% 0.095 152.535)",950:"oklch(26.6% 0.065 152.934)"},emerald:{50:"oklch(97.9% 0.021 166.113)",100:"oklch(95% 0.052 163.051)",200:"oklch(90.5% 0.093 164.15)",300:"oklch(84.5% 0.143 164.978)",400:"oklch(76.5% 0.177 163.223)",500:"oklch(69.6% 0.17 162.48)",600:"oklch(59.6% 0.145 163.225)",700:"oklch(50.8% 0.118 165.612)",800:"oklch(43.2% 0.095 166.913)",900:"oklch(37.8% 0.077 168.94)",950:"oklch(26.2% 0.051 172.552)"},teal:{50:"oklch(98.4% 0.014 180.72)",100:"oklch(95.3% 0.051 180.801)",200:"oklch(91% 0.096 180.426)",300:"oklch(85.5% 0.138 181.071)",400:"oklch(77.7% 0.152 181.912)",500:"oklch(70.4% 0.14 182.503)",600:"oklch(60% 0.118 184.704)",700:"oklch(51.1% 0.096 186.391)",800:"oklch(43.7% 0.078 188.216)",900:"oklch(38.6% 0.063 188.416)",950:"oklch(27.7% 0.046 192.524)"},cyan:{50:"oklch(98.4% 0.019 200.873)",100:"oklch(95.6% 0.045 203.388)",200:"oklch(91.7% 0.08 205.041)",300:"oklch(86.5% 0.127 207.078)",400:"oklch(78.9% 0.154 211.53)",500:"oklch(71.5% 0.143 215.221)",600:"oklch(60.9% 0.126 221.723)",700:"oklch(52% 0.105 223.128)",800:"oklch(45% 0.085 224.283)",900:"oklch(39.8% 0.07 227.392)",950:"oklch(30.2% 0.056 229.695)"},sky:{50:"oklch(97.7% 0.013 236.62)",100:"oklch(95.1% 0.026 236.824)",200:"oklch(90.1% 0.058 230.902)",300:"oklch(82.8% 0.111 230.318)",400:"oklch(74.6% 0.16 232.661)",500:"oklch(68.5% 0.169 237.323)",600:"oklch(58.8% 0.158 241.966)",700:"oklch(50% 0.134 242.749)",800:"oklch(44.3% 0.11 240.79)",900:"oklch(39.1% 0.09 240.876)",950:"oklch(29.3% 0.066 243.157)"},blue:{50:"oklch(97% 0.014 254.604)",100:"oklch(93.2% 0.032 255.585)",200:"oklch(88.2% 0.059 254.128)",300:"oklch(80.9% 0.105 251.813)",400:"oklch(70.7% 0.165 254.624)",500:"oklch(62.3% 0.214 259.815)",600:"oklch(54.6% 0.245 262.881)",700:"oklch(48.8% 0.243 264.376)",800:"oklch(42.4% 0.199 265.638)",900:"oklch(37.9% 0.146 265.522)",950:"oklch(28.2% 0.091 267.935)"},indigo:{50:"oklch(96.2% 0.018 272.314)",100:"oklch(93% 0.034 272.788)",200:"oklch(87% 0.065 274.039)",300:"oklch(78.5% 0.115 274.713)",400:"oklch(67.3% 0.182 276.935)",500:"oklch(58.5% 0.233 277.117)",600:"oklch(51.1% 0.262 276.966)",700:"oklch(45.7% 0.24 277.023)",800:"oklch(39.8% 0.195 277.366)",900:"oklch(35.9% 0.144 278.697)",950:"oklch(25.7% 0.09 281.288)"},violet:{50:"oklch(96.9% 0.016 293.756)",100:"oklch(94.3% 0.029 294.588)",200:"oklch(89.4% 0.057 293.283)",300:"oklch(81.1% 0.111 293.571)",400:"oklch(70.2% 0.183 293.541)",500:"oklch(60.6% 0.25 292.717)",600:"oklch(54.1% 0.281 293.009)",700:"oklch(49.1% 0.27 292.581)",800:"oklch(43.2% 0.232 292.759)",900:"oklch(38% 0.189 293.745)",950:"oklch(28.3% 0.141 291.089)"},purple:{50:"oklch(97.7% 0.014 308.299)",100:"oklch(94.6% 0.033 307.174)",200:"oklch(90.2% 0.063 306.703)",300:"oklch(82.7% 0.119 306.383)",400:"oklch(71.4% 0.203 305.504)",500:"oklch(62.7% 0.265 303.9)",600:"oklch(55.8% 0.288 302.321)",700:"oklch(49.6% 0.265 301.924)",800:"oklch(43.8% 0.218 303.724)",900:"oklch(38.1% 0.176 304.987)",950:"oklch(29.1% 0.149 302.717)"},fuchsia:{50:"oklch(97.7% 0.017 320.058)",100:"oklch(95.2% 0.037 318.852)",200:"oklch(90.3% 0.076 319.62)",300:"oklch(83.3% 0.145 321.434)",400:"oklch(74% 0.238 322.16)",500:"oklch(66.7% 0.295 322.15)",600:"oklch(59.1% 0.293 322.896)",700:"oklch(51.8% 0.253 323.949)",800:"oklch(45.2% 0.211 324.591)",900:"oklch(40.1% 0.17 325.612)",950:"oklch(29.3% 0.136 325.661)"},pink:{50:"oklch(97.1% 0.014 343.198)",100:"oklch(94.8% 0.028 342.258)",200:"oklch(89.9% 0.061 343.231)",300:"oklch(82.3% 0.12 346.018)",400:"oklch(71.8% 0.202 349.761)",500:"oklch(65.6% 0.241 354.308)",600:"oklch(59.2% 0.249 0.584)",700:"oklch(52.5% 0.223 3.958)",800:"oklch(45.9% 0.187 3.815)",900:"oklch(40.8% 0.153 2.432)",950:"oklch(28.4% 0.109 3.907)"},rose:{50:"oklch(96.9% 0.015 12.422)",100:"oklch(94.1% 0.03 12.58)",200:"oklch(89.2% 0.058 10.001)",300:"oklch(81% 0.117 11.638)",400:"oklch(71.2% 0.194 13.428)",500:"oklch(64.5% 0.246 16.439)",600:"oklch(58.6% 0.253 17.585)",700:"oklch(51.4% 0.222 16.935)",800:"oklch(45.5% 0.188 13.697)",900:"oklch(41% 0.159 10.272)",950:"oklch(27.1% 0.105 12.094)"}};module.exports=l; diff --git a/node_modules/tailwindcss/dist/colors.mjs b/node_modules/tailwindcss/dist/colors.mjs new file mode 100644 index 00000000..2495a4d8 --- /dev/null +++ b/node_modules/tailwindcss/dist/colors.mjs @@ -0,0 +1 @@ +import{a}from"./chunk-X4GG3EDV.mjs";export{a as default}; diff --git a/node_modules/tailwindcss/dist/default-theme.d.mts b/node_modules/tailwindcss/dist/default-theme.d.mts new file mode 100644 index 00000000..ac3c6a42 --- /dev/null +++ b/node_modules/tailwindcss/dist/default-theme.d.mts @@ -0,0 +1,1199 @@ +import { P as PluginUtils, N as NamedUtilityValue } from './resolve-config-QUZ9b-Gn.mjs'; +import './colors.mjs'; + +declare const _default: { + accentColor: ({ theme }: PluginUtils) => any; + animation: { + none: string; + spin: string; + ping: string; + pulse: string; + bounce: string; + }; + aria: { + busy: string; + checked: string; + disabled: string; + expanded: string; + hidden: string; + pressed: string; + readonly: string; + required: string; + selected: string; + }; + aspectRatio: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + auto: string; + square: string; + video: string; + }; + backdropBlur: ({ theme }: PluginUtils) => any; + backdropBrightness: ({ theme }: PluginUtils) => any; + backdropContrast: ({ theme }: PluginUtils) => any; + backdropGrayscale: ({ theme }: PluginUtils) => any; + backdropHueRotate: ({ theme }: PluginUtils) => any; + backdropInvert: ({ theme }: PluginUtils) => any; + backdropOpacity: ({ theme }: PluginUtils) => any; + backdropSaturate: ({ theme }: PluginUtils) => any; + backdropSepia: ({ theme }: PluginUtils) => any; + backgroundColor: ({ theme }: PluginUtils) => any; + backgroundImage: { + none: string; + 'gradient-to-t': string; + 'gradient-to-tr': string; + 'gradient-to-r': string; + 'gradient-to-br': string; + 'gradient-to-b': string; + 'gradient-to-bl': string; + 'gradient-to-l': string; + 'gradient-to-tl': string; + }; + backgroundOpacity: ({ theme }: PluginUtils) => any; + backgroundPosition: { + bottom: string; + center: string; + left: string; + 'left-bottom': string; + 'left-top': string; + right: string; + 'right-bottom': string; + 'right-top': string; + top: string; + }; + backgroundSize: { + auto: string; + cover: string; + contain: string; + }; + blur: { + 0: string; + none: string; + sm: string; + DEFAULT: string; + md: string; + lg: string; + xl: string; + '2xl': string; + '3xl': string; + }; + borderColor: ({ theme }: PluginUtils) => any; + borderOpacity: ({ theme }: PluginUtils) => any; + borderRadius: { + none: string; + sm: string; + DEFAULT: string; + md: string; + lg: string; + xl: string; + '2xl': string; + '3xl': string; + full: string; + }; + borderSpacing: ({ theme }: PluginUtils) => any; + borderWidth: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + DEFAULT: string; + 0: string; + 2: string; + 4: string; + 8: string; + }; + boxShadow: { + sm: string; + DEFAULT: string; + md: string; + lg: string; + xl: string; + '2xl': string; + inner: string; + none: string; + }; + boxShadowColor: ({ theme }: PluginUtils) => any; + brightness: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + 50: string; + 75: string; + 90: string; + 95: string; + 100: string; + 105: string; + 110: string; + 125: string; + 150: string; + 200: string; + }; + caretColor: ({ theme }: PluginUtils) => any; + colors: () => { + inherit: string; + current: string; + transparent: string; + black: string; + white: string; + slate: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + gray: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + zinc: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + neutral: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + stone: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + mauve: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + olive: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + mist: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + taupe: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + red: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + orange: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + amber: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + yellow: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + lime: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + green: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + emerald: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + teal: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + cyan: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + sky: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + blue: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + indigo: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + violet: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + purple: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + fuchsia: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + pink: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + rose: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + }; + columns: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + auto: string; + 1: string; + 2: string; + 3: string; + 4: string; + 5: string; + 6: string; + 7: string; + 8: string; + 9: string; + 10: string; + 11: string; + 12: string; + '3xs': string; + '2xs': string; + xs: string; + sm: string; + md: string; + lg: string; + xl: string; + '2xl': string; + '3xl': string; + '4xl': string; + '5xl': string; + '6xl': string; + '7xl': string; + }; + container: {}; + content: { + none: string; + }; + contrast: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + 50: string; + 75: string; + 100: string; + 125: string; + 150: string; + 200: string; + }; + cursor: { + auto: string; + default: string; + pointer: string; + wait: string; + text: string; + move: string; + help: string; + 'not-allowed': string; + none: string; + 'context-menu': string; + progress: string; + cell: string; + crosshair: string; + 'vertical-text': string; + alias: string; + copy: string; + 'no-drop': string; + grab: string; + grabbing: string; + 'all-scroll': string; + 'col-resize': string; + 'row-resize': string; + 'n-resize': string; + 'e-resize': string; + 's-resize': string; + 'w-resize': string; + 'ne-resize': string; + 'nw-resize': string; + 'se-resize': string; + 'sw-resize': string; + 'ew-resize': string; + 'ns-resize': string; + 'nesw-resize': string; + 'nwse-resize': string; + 'zoom-in': string; + 'zoom-out': string; + }; + divideColor: ({ theme }: PluginUtils) => any; + divideOpacity: ({ theme }: PluginUtils) => any; + divideWidth: ({ theme }: PluginUtils) => any; + dropShadow: { + sm: string; + DEFAULT: string[]; + md: string[]; + lg: string[]; + xl: string[]; + '2xl': string; + none: string; + }; + fill: ({ theme }: PluginUtils) => any; + flex: { + 1: string; + auto: string; + initial: string; + none: string; + }; + flexBasis: ({ theme }: PluginUtils) => any; + flexGrow: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + DEFAULT: string; + }; + flexShrink: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + DEFAULT: string; + }; + fontFamily: { + sans: string[]; + serif: string[]; + mono: string[]; + }; + fontSize: { + xs: (string | { + lineHeight: string; + })[]; + sm: (string | { + lineHeight: string; + })[]; + base: (string | { + lineHeight: string; + })[]; + lg: (string | { + lineHeight: string; + })[]; + xl: (string | { + lineHeight: string; + })[]; + '2xl': (string | { + lineHeight: string; + })[]; + '3xl': (string | { + lineHeight: string; + })[]; + '4xl': (string | { + lineHeight: string; + })[]; + '5xl': (string | { + lineHeight: string; + })[]; + '6xl': (string | { + lineHeight: string; + })[]; + '7xl': (string | { + lineHeight: string; + })[]; + '8xl': (string | { + lineHeight: string; + })[]; + '9xl': (string | { + lineHeight: string; + })[]; + }; + fontWeight: { + thin: string; + extralight: string; + light: string; + normal: string; + medium: string; + semibold: string; + bold: string; + extrabold: string; + black: string; + }; + gap: ({ theme }: PluginUtils) => any; + gradientColorStops: ({ theme }: PluginUtils) => any; + gradientColorStopPositions: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + '0%': string; + '5%': string; + '10%': string; + '15%': string; + '20%': string; + '25%': string; + '30%': string; + '35%': string; + '40%': string; + '45%': string; + '50%': string; + '55%': string; + '60%': string; + '65%': string; + '70%': string; + '75%': string; + '80%': string; + '85%': string; + '90%': string; + '95%': string; + '100%': string; + }; + grayscale: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + DEFAULT: string; + }; + gridAutoColumns: { + auto: string; + min: string; + max: string; + fr: string; + }; + gridAutoRows: { + auto: string; + min: string; + max: string; + fr: string; + }; + gridColumn: { + auto: string; + 'span-1': string; + 'span-2': string; + 'span-3': string; + 'span-4': string; + 'span-5': string; + 'span-6': string; + 'span-7': string; + 'span-8': string; + 'span-9': string; + 'span-10': string; + 'span-11': string; + 'span-12': string; + 'span-full': string; + }; + gridColumnEnd: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + auto: string; + 1: string; + 2: string; + 3: string; + 4: string; + 5: string; + 6: string; + 7: string; + 8: string; + 9: string; + 10: string; + 11: string; + 12: string; + 13: string; + }; + gridColumnStart: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + auto: string; + 1: string; + 2: string; + 3: string; + 4: string; + 5: string; + 6: string; + 7: string; + 8: string; + 9: string; + 10: string; + 11: string; + 12: string; + 13: string; + }; + gridRow: { + auto: string; + 'span-1': string; + 'span-2': string; + 'span-3': string; + 'span-4': string; + 'span-5': string; + 'span-6': string; + 'span-7': string; + 'span-8': string; + 'span-9': string; + 'span-10': string; + 'span-11': string; + 'span-12': string; + 'span-full': string; + }; + gridRowEnd: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + auto: string; + 1: string; + 2: string; + 3: string; + 4: string; + 5: string; + 6: string; + 7: string; + 8: string; + 9: string; + 10: string; + 11: string; + 12: string; + 13: string; + }; + gridRowStart: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + auto: string; + 1: string; + 2: string; + 3: string; + 4: string; + 5: string; + 6: string; + 7: string; + 8: string; + 9: string; + 10: string; + 11: string; + 12: string; + 13: string; + }; + gridTemplateColumns: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + none: string; + subgrid: string; + 1: string; + 2: string; + 3: string; + 4: string; + 5: string; + 6: string; + 7: string; + 8: string; + 9: string; + 10: string; + 11: string; + 12: string; + }; + gridTemplateRows: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + none: string; + subgrid: string; + 1: string; + 2: string; + 3: string; + 4: string; + 5: string; + 6: string; + 7: string; + 8: string; + 9: string; + 10: string; + 11: string; + 12: string; + }; + height: ({ theme }: PluginUtils) => any; + hueRotate: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + 15: string; + 30: string; + 60: string; + 90: string; + 180: string; + }; + inset: ({ theme }: PluginUtils) => any; + invert: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + DEFAULT: string; + }; + keyframes: { + spin: { + to: { + transform: string; + }; + }; + ping: { + '75%, 100%': { + transform: string; + opacity: string; + }; + }; + pulse: { + '50%': { + opacity: string; + }; + }; + bounce: { + '0%, 100%': { + transform: string; + animationTimingFunction: string; + }; + '50%': { + transform: string; + animationTimingFunction: string; + }; + }; + }; + letterSpacing: { + tighter: string; + tight: string; + normal: string; + wide: string; + wider: string; + widest: string; + }; + lineHeight: { + none: string; + tight: string; + snug: string; + normal: string; + relaxed: string; + loose: string; + 3: string; + 4: string; + 5: string; + 6: string; + 7: string; + 8: string; + 9: string; + 10: string; + }; + listStyleType: { + none: string; + disc: string; + decimal: string; + }; + listStyleImage: { + none: string; + }; + margin: ({ theme }: PluginUtils) => any; + lineClamp: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 1: string; + 2: string; + 3: string; + 4: string; + 5: string; + 6: string; + }; + maxHeight: ({ theme }: PluginUtils) => any; + maxWidth: ({ theme }: PluginUtils) => any; + minHeight: ({ theme }: PluginUtils) => any; + minWidth: ({ theme }: PluginUtils) => any; + objectPosition: { + bottom: string; + center: string; + left: string; + 'left-bottom': string; + 'left-top': string; + right: string; + 'right-bottom': string; + 'right-top': string; + top: string; + }; + opacity: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + 5: string; + 10: string; + 15: string; + 20: string; + 25: string; + 30: string; + 35: string; + 40: string; + 45: string; + 50: string; + 55: string; + 60: string; + 65: string; + 70: string; + 75: string; + 80: string; + 85: string; + 90: string; + 95: string; + 100: string; + }; + order: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + first: string; + last: string; + none: string; + 1: string; + 2: string; + 3: string; + 4: string; + 5: string; + 6: string; + 7: string; + 8: string; + 9: string; + 10: string; + 11: string; + 12: string; + }; + outlineColor: ({ theme }: PluginUtils) => any; + outlineOffset: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + 1: string; + 2: string; + 4: string; + 8: string; + }; + outlineWidth: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + 1: string; + 2: string; + 4: string; + 8: string; + }; + padding: ({ theme }: PluginUtils) => any; + placeholderColor: ({ theme }: PluginUtils) => any; + placeholderOpacity: ({ theme }: PluginUtils) => any; + ringColor: ({ theme }: PluginUtils) => any; + ringOffsetColor: ({ theme }: PluginUtils) => any; + ringOffsetWidth: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + 1: string; + 2: string; + 4: string; + 8: string; + }; + ringOpacity: ({ theme }: PluginUtils) => any; + ringWidth: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + DEFAULT: string; + 0: string; + 1: string; + 2: string; + 4: string; + 8: string; + }; + rotate: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + 1: string; + 2: string; + 3: string; + 6: string; + 12: string; + 45: string; + 90: string; + 180: string; + }; + saturate: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + 50: string; + 100: string; + 150: string; + 200: string; + }; + scale: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + 50: string; + 75: string; + 90: string; + 95: string; + 100: string; + 105: string; + 110: string; + 125: string; + 150: string; + }; + screens: { + sm: string; + md: string; + lg: string; + xl: string; + '2xl': string; + }; + scrollMargin: ({ theme }: PluginUtils) => any; + scrollPadding: ({ theme }: PluginUtils) => any; + sepia: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + DEFAULT: string; + }; + skew: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + 1: string; + 2: string; + 3: string; + 6: string; + 12: string; + }; + space: ({ theme }: PluginUtils) => any; + spacing: { + px: string; + 0: string; + 0.5: string; + 1: string; + 1.5: string; + 2: string; + 2.5: string; + 3: string; + 3.5: string; + 4: string; + 5: string; + 6: string; + 7: string; + 8: string; + 9: string; + 10: string; + 11: string; + 12: string; + 14: string; + 16: string; + 20: string; + 24: string; + 28: string; + 32: string; + 36: string; + 40: string; + 44: string; + 48: string; + 52: string; + 56: string; + 60: string; + 64: string; + 72: string; + 80: string; + 96: string; + }; + stroke: ({ theme }: PluginUtils) => any; + strokeWidth: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + 1: string; + 2: string; + }; + supports: {}; + data: {}; + textColor: ({ theme }: PluginUtils) => any; + textDecorationColor: ({ theme }: PluginUtils) => any; + textDecorationThickness: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + auto: string; + 'from-font': string; + 0: string; + 1: string; + 2: string; + 4: string; + 8: string; + }; + textIndent: ({ theme }: PluginUtils) => any; + textOpacity: ({ theme }: PluginUtils) => any; + textUnderlineOffset: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + auto: string; + 0: string; + 1: string; + 2: string; + 4: string; + 8: string; + }; + transformOrigin: { + center: string; + top: string; + 'top-right': string; + right: string; + 'bottom-right': string; + bottom: string; + 'bottom-left': string; + left: string; + 'top-left': string; + }; + transitionDelay: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + 75: string; + 100: string; + 150: string; + 200: string; + 300: string; + 500: string; + 700: string; + 1000: string; + }; + transitionDuration: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + DEFAULT: string; + 0: string; + 75: string; + 100: string; + 150: string; + 200: string; + 300: string; + 500: string; + 700: string; + 1000: string; + }; + transitionProperty: { + none: string; + all: string; + DEFAULT: string; + colors: string; + opacity: string; + shadow: string; + transform: string; + }; + transitionTimingFunction: { + DEFAULT: string; + linear: string; + in: string; + out: string; + 'in-out': string; + }; + translate: ({ theme }: PluginUtils) => any; + size: ({ theme }: PluginUtils) => any; + width: ({ theme }: PluginUtils) => any; + willChange: { + auto: string; + scroll: string; + contents: string; + transform: string; + }; + zIndex: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + auto: string; + 0: string; + 10: string; + 20: string; + 30: string; + 40: string; + 50: string; + }; +}; + +export { _default as default }; diff --git a/node_modules/tailwindcss/dist/default-theme.d.ts b/node_modules/tailwindcss/dist/default-theme.d.ts new file mode 100644 index 00000000..e9962f20 --- /dev/null +++ b/node_modules/tailwindcss/dist/default-theme.d.ts @@ -0,0 +1,1199 @@ +import { P as PluginUtils, N as NamedUtilityValue } from './resolve-config-B4yBzhca.js'; +import './colors-C__qRT83.js'; + +declare const _default: { + accentColor: ({ theme }: PluginUtils) => any; + animation: { + none: string; + spin: string; + ping: string; + pulse: string; + bounce: string; + }; + aria: { + busy: string; + checked: string; + disabled: string; + expanded: string; + hidden: string; + pressed: string; + readonly: string; + required: string; + selected: string; + }; + aspectRatio: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + auto: string; + square: string; + video: string; + }; + backdropBlur: ({ theme }: PluginUtils) => any; + backdropBrightness: ({ theme }: PluginUtils) => any; + backdropContrast: ({ theme }: PluginUtils) => any; + backdropGrayscale: ({ theme }: PluginUtils) => any; + backdropHueRotate: ({ theme }: PluginUtils) => any; + backdropInvert: ({ theme }: PluginUtils) => any; + backdropOpacity: ({ theme }: PluginUtils) => any; + backdropSaturate: ({ theme }: PluginUtils) => any; + backdropSepia: ({ theme }: PluginUtils) => any; + backgroundColor: ({ theme }: PluginUtils) => any; + backgroundImage: { + none: string; + 'gradient-to-t': string; + 'gradient-to-tr': string; + 'gradient-to-r': string; + 'gradient-to-br': string; + 'gradient-to-b': string; + 'gradient-to-bl': string; + 'gradient-to-l': string; + 'gradient-to-tl': string; + }; + backgroundOpacity: ({ theme }: PluginUtils) => any; + backgroundPosition: { + bottom: string; + center: string; + left: string; + 'left-bottom': string; + 'left-top': string; + right: string; + 'right-bottom': string; + 'right-top': string; + top: string; + }; + backgroundSize: { + auto: string; + cover: string; + contain: string; + }; + blur: { + 0: string; + none: string; + sm: string; + DEFAULT: string; + md: string; + lg: string; + xl: string; + '2xl': string; + '3xl': string; + }; + borderColor: ({ theme }: PluginUtils) => any; + borderOpacity: ({ theme }: PluginUtils) => any; + borderRadius: { + none: string; + sm: string; + DEFAULT: string; + md: string; + lg: string; + xl: string; + '2xl': string; + '3xl': string; + full: string; + }; + borderSpacing: ({ theme }: PluginUtils) => any; + borderWidth: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + DEFAULT: string; + 0: string; + 2: string; + 4: string; + 8: string; + }; + boxShadow: { + sm: string; + DEFAULT: string; + md: string; + lg: string; + xl: string; + '2xl': string; + inner: string; + none: string; + }; + boxShadowColor: ({ theme }: PluginUtils) => any; + brightness: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + 50: string; + 75: string; + 90: string; + 95: string; + 100: string; + 105: string; + 110: string; + 125: string; + 150: string; + 200: string; + }; + caretColor: ({ theme }: PluginUtils) => any; + colors: () => { + inherit: string; + current: string; + transparent: string; + black: string; + white: string; + slate: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + gray: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + zinc: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + neutral: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + stone: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + mauve: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + olive: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + mist: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + taupe: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + red: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + orange: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + amber: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + yellow: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + lime: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + green: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + emerald: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + teal: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + cyan: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + sky: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + blue: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + indigo: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + violet: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + purple: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + fuchsia: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + pink: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + rose: { + '50': string; + '100': string; + '200': string; + '300': string; + '400': string; + '500': string; + '600': string; + '700': string; + '800': string; + '900': string; + '950': string; + }; + }; + columns: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + auto: string; + 1: string; + 2: string; + 3: string; + 4: string; + 5: string; + 6: string; + 7: string; + 8: string; + 9: string; + 10: string; + 11: string; + 12: string; + '3xs': string; + '2xs': string; + xs: string; + sm: string; + md: string; + lg: string; + xl: string; + '2xl': string; + '3xl': string; + '4xl': string; + '5xl': string; + '6xl': string; + '7xl': string; + }; + container: {}; + content: { + none: string; + }; + contrast: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + 50: string; + 75: string; + 100: string; + 125: string; + 150: string; + 200: string; + }; + cursor: { + auto: string; + default: string; + pointer: string; + wait: string; + text: string; + move: string; + help: string; + 'not-allowed': string; + none: string; + 'context-menu': string; + progress: string; + cell: string; + crosshair: string; + 'vertical-text': string; + alias: string; + copy: string; + 'no-drop': string; + grab: string; + grabbing: string; + 'all-scroll': string; + 'col-resize': string; + 'row-resize': string; + 'n-resize': string; + 'e-resize': string; + 's-resize': string; + 'w-resize': string; + 'ne-resize': string; + 'nw-resize': string; + 'se-resize': string; + 'sw-resize': string; + 'ew-resize': string; + 'ns-resize': string; + 'nesw-resize': string; + 'nwse-resize': string; + 'zoom-in': string; + 'zoom-out': string; + }; + divideColor: ({ theme }: PluginUtils) => any; + divideOpacity: ({ theme }: PluginUtils) => any; + divideWidth: ({ theme }: PluginUtils) => any; + dropShadow: { + sm: string; + DEFAULT: string[]; + md: string[]; + lg: string[]; + xl: string[]; + '2xl': string; + none: string; + }; + fill: ({ theme }: PluginUtils) => any; + flex: { + 1: string; + auto: string; + initial: string; + none: string; + }; + flexBasis: ({ theme }: PluginUtils) => any; + flexGrow: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + DEFAULT: string; + }; + flexShrink: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + DEFAULT: string; + }; + fontFamily: { + sans: string[]; + serif: string[]; + mono: string[]; + }; + fontSize: { + xs: (string | { + lineHeight: string; + })[]; + sm: (string | { + lineHeight: string; + })[]; + base: (string | { + lineHeight: string; + })[]; + lg: (string | { + lineHeight: string; + })[]; + xl: (string | { + lineHeight: string; + })[]; + '2xl': (string | { + lineHeight: string; + })[]; + '3xl': (string | { + lineHeight: string; + })[]; + '4xl': (string | { + lineHeight: string; + })[]; + '5xl': (string | { + lineHeight: string; + })[]; + '6xl': (string | { + lineHeight: string; + })[]; + '7xl': (string | { + lineHeight: string; + })[]; + '8xl': (string | { + lineHeight: string; + })[]; + '9xl': (string | { + lineHeight: string; + })[]; + }; + fontWeight: { + thin: string; + extralight: string; + light: string; + normal: string; + medium: string; + semibold: string; + bold: string; + extrabold: string; + black: string; + }; + gap: ({ theme }: PluginUtils) => any; + gradientColorStops: ({ theme }: PluginUtils) => any; + gradientColorStopPositions: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + '0%': string; + '5%': string; + '10%': string; + '15%': string; + '20%': string; + '25%': string; + '30%': string; + '35%': string; + '40%': string; + '45%': string; + '50%': string; + '55%': string; + '60%': string; + '65%': string; + '70%': string; + '75%': string; + '80%': string; + '85%': string; + '90%': string; + '95%': string; + '100%': string; + }; + grayscale: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + DEFAULT: string; + }; + gridAutoColumns: { + auto: string; + min: string; + max: string; + fr: string; + }; + gridAutoRows: { + auto: string; + min: string; + max: string; + fr: string; + }; + gridColumn: { + auto: string; + 'span-1': string; + 'span-2': string; + 'span-3': string; + 'span-4': string; + 'span-5': string; + 'span-6': string; + 'span-7': string; + 'span-8': string; + 'span-9': string; + 'span-10': string; + 'span-11': string; + 'span-12': string; + 'span-full': string; + }; + gridColumnEnd: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + auto: string; + 1: string; + 2: string; + 3: string; + 4: string; + 5: string; + 6: string; + 7: string; + 8: string; + 9: string; + 10: string; + 11: string; + 12: string; + 13: string; + }; + gridColumnStart: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + auto: string; + 1: string; + 2: string; + 3: string; + 4: string; + 5: string; + 6: string; + 7: string; + 8: string; + 9: string; + 10: string; + 11: string; + 12: string; + 13: string; + }; + gridRow: { + auto: string; + 'span-1': string; + 'span-2': string; + 'span-3': string; + 'span-4': string; + 'span-5': string; + 'span-6': string; + 'span-7': string; + 'span-8': string; + 'span-9': string; + 'span-10': string; + 'span-11': string; + 'span-12': string; + 'span-full': string; + }; + gridRowEnd: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + auto: string; + 1: string; + 2: string; + 3: string; + 4: string; + 5: string; + 6: string; + 7: string; + 8: string; + 9: string; + 10: string; + 11: string; + 12: string; + 13: string; + }; + gridRowStart: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + auto: string; + 1: string; + 2: string; + 3: string; + 4: string; + 5: string; + 6: string; + 7: string; + 8: string; + 9: string; + 10: string; + 11: string; + 12: string; + 13: string; + }; + gridTemplateColumns: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + none: string; + subgrid: string; + 1: string; + 2: string; + 3: string; + 4: string; + 5: string; + 6: string; + 7: string; + 8: string; + 9: string; + 10: string; + 11: string; + 12: string; + }; + gridTemplateRows: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + none: string; + subgrid: string; + 1: string; + 2: string; + 3: string; + 4: string; + 5: string; + 6: string; + 7: string; + 8: string; + 9: string; + 10: string; + 11: string; + 12: string; + }; + height: ({ theme }: PluginUtils) => any; + hueRotate: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + 15: string; + 30: string; + 60: string; + 90: string; + 180: string; + }; + inset: ({ theme }: PluginUtils) => any; + invert: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + DEFAULT: string; + }; + keyframes: { + spin: { + to: { + transform: string; + }; + }; + ping: { + '75%, 100%': { + transform: string; + opacity: string; + }; + }; + pulse: { + '50%': { + opacity: string; + }; + }; + bounce: { + '0%, 100%': { + transform: string; + animationTimingFunction: string; + }; + '50%': { + transform: string; + animationTimingFunction: string; + }; + }; + }; + letterSpacing: { + tighter: string; + tight: string; + normal: string; + wide: string; + wider: string; + widest: string; + }; + lineHeight: { + none: string; + tight: string; + snug: string; + normal: string; + relaxed: string; + loose: string; + 3: string; + 4: string; + 5: string; + 6: string; + 7: string; + 8: string; + 9: string; + 10: string; + }; + listStyleType: { + none: string; + disc: string; + decimal: string; + }; + listStyleImage: { + none: string; + }; + margin: ({ theme }: PluginUtils) => any; + lineClamp: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 1: string; + 2: string; + 3: string; + 4: string; + 5: string; + 6: string; + }; + maxHeight: ({ theme }: PluginUtils) => any; + maxWidth: ({ theme }: PluginUtils) => any; + minHeight: ({ theme }: PluginUtils) => any; + minWidth: ({ theme }: PluginUtils) => any; + objectPosition: { + bottom: string; + center: string; + left: string; + 'left-bottom': string; + 'left-top': string; + right: string; + 'right-bottom': string; + 'right-top': string; + top: string; + }; + opacity: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + 5: string; + 10: string; + 15: string; + 20: string; + 25: string; + 30: string; + 35: string; + 40: string; + 45: string; + 50: string; + 55: string; + 60: string; + 65: string; + 70: string; + 75: string; + 80: string; + 85: string; + 90: string; + 95: string; + 100: string; + }; + order: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + first: string; + last: string; + none: string; + 1: string; + 2: string; + 3: string; + 4: string; + 5: string; + 6: string; + 7: string; + 8: string; + 9: string; + 10: string; + 11: string; + 12: string; + }; + outlineColor: ({ theme }: PluginUtils) => any; + outlineOffset: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + 1: string; + 2: string; + 4: string; + 8: string; + }; + outlineWidth: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + 1: string; + 2: string; + 4: string; + 8: string; + }; + padding: ({ theme }: PluginUtils) => any; + placeholderColor: ({ theme }: PluginUtils) => any; + placeholderOpacity: ({ theme }: PluginUtils) => any; + ringColor: ({ theme }: PluginUtils) => any; + ringOffsetColor: ({ theme }: PluginUtils) => any; + ringOffsetWidth: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + 1: string; + 2: string; + 4: string; + 8: string; + }; + ringOpacity: ({ theme }: PluginUtils) => any; + ringWidth: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + DEFAULT: string; + 0: string; + 1: string; + 2: string; + 4: string; + 8: string; + }; + rotate: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + 1: string; + 2: string; + 3: string; + 6: string; + 12: string; + 45: string; + 90: string; + 180: string; + }; + saturate: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + 50: string; + 100: string; + 150: string; + 200: string; + }; + scale: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + 50: string; + 75: string; + 90: string; + 95: string; + 100: string; + 105: string; + 110: string; + 125: string; + 150: string; + }; + screens: { + sm: string; + md: string; + lg: string; + xl: string; + '2xl': string; + }; + scrollMargin: ({ theme }: PluginUtils) => any; + scrollPadding: ({ theme }: PluginUtils) => any; + sepia: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + DEFAULT: string; + }; + skew: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + 1: string; + 2: string; + 3: string; + 6: string; + 12: string; + }; + space: ({ theme }: PluginUtils) => any; + spacing: { + px: string; + 0: string; + 0.5: string; + 1: string; + 1.5: string; + 2: string; + 2.5: string; + 3: string; + 3.5: string; + 4: string; + 5: string; + 6: string; + 7: string; + 8: string; + 9: string; + 10: string; + 11: string; + 12: string; + 14: string; + 16: string; + 20: string; + 24: string; + 28: string; + 32: string; + 36: string; + 40: string; + 44: string; + 48: string; + 52: string; + 56: string; + 60: string; + 64: string; + 72: string; + 80: string; + 96: string; + }; + stroke: ({ theme }: PluginUtils) => any; + strokeWidth: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + 1: string; + 2: string; + }; + supports: {}; + data: {}; + textColor: ({ theme }: PluginUtils) => any; + textDecorationColor: ({ theme }: PluginUtils) => any; + textDecorationThickness: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + auto: string; + 'from-font': string; + 0: string; + 1: string; + 2: string; + 4: string; + 8: string; + }; + textIndent: ({ theme }: PluginUtils) => any; + textOpacity: ({ theme }: PluginUtils) => any; + textUnderlineOffset: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + auto: string; + 0: string; + 1: string; + 2: string; + 4: string; + 8: string; + }; + transformOrigin: { + center: string; + top: string; + 'top-right': string; + right: string; + 'bottom-right': string; + bottom: string; + 'bottom-left': string; + left: string; + 'top-left': string; + }; + transitionDelay: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + 0: string; + 75: string; + 100: string; + 150: string; + 200: string; + 300: string; + 500: string; + 700: string; + 1000: string; + }; + transitionDuration: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + DEFAULT: string; + 0: string; + 75: string; + 100: string; + 150: string; + 200: string; + 300: string; + 500: string; + 700: string; + 1000: string; + }; + transitionProperty: { + none: string; + all: string; + DEFAULT: string; + colors: string; + opacity: string; + shadow: string; + transform: string; + }; + transitionTimingFunction: { + DEFAULT: string; + linear: string; + in: string; + out: string; + 'in-out': string; + }; + translate: ({ theme }: PluginUtils) => any; + size: ({ theme }: PluginUtils) => any; + width: ({ theme }: PluginUtils) => any; + willChange: { + auto: string; + scroll: string; + contents: string; + transform: string; + }; + zIndex: { + __BARE_VALUE__: (value: NamedUtilityValue) => string | undefined; + auto: string; + 0: string; + 10: string; + 20: string; + 30: string; + 40: string; + 50: string; + }; +}; + +export { _default as default }; diff --git a/node_modules/tailwindcss/dist/default-theme.js b/node_modules/tailwindcss/dist/default-theme.js new file mode 100644 index 00000000..0b1ebb49 --- /dev/null +++ b/node_modules/tailwindcss/dist/default-theme.js @@ -0,0 +1 @@ +"use strict";var m=new Uint8Array(256);function u(e,c){let t=0,g=[],k=0,d=e.length,w=c.charCodeAt(0);for(let n=0;n0&&h===m[t-1]&&t--;break}}return g.push(e.slice(k)),g}var l=/[+-]?\d*\.?\d+(?:[eE][+-]?\d+)?/,z=new RegExp(`^${l.source}$`);var T=new RegExp(`^${l.source}%$`);var D=new RegExp(`^${l.source}\\s*/\\s*${l.source}$`);var A=["cm","mm","Q","in","pc","pt","px","em","ex","ch","rem","lh","rlh","vw","vh","vmin","vmax","vb","vi","svw","svh","lvw","lvh","dvw","dvh","cqw","cqh","cqi","cqb","cqmin","cqmax"],I=new RegExp(`^${l.source}(${A.join("|")})$`);var C=["deg","rad","grad","turn"],F=new RegExp(`^${l.source}(${C.join("|")})$`);var H=new RegExp(`^${l.source} +${l.source} +${l.source}$`);function i(e){let c=Number(e);return Number.isInteger(c)&&c>=0&&String(c)===String(e)}var f={inherit:"inherit",current:"currentcolor",transparent:"transparent",black:"#000",white:"#fff",slate:{50:"oklch(98.4% 0.003 247.858)",100:"oklch(96.8% 0.007 247.896)",200:"oklch(92.9% 0.013 255.508)",300:"oklch(86.9% 0.022 252.894)",400:"oklch(70.4% 0.04 256.788)",500:"oklch(55.4% 0.046 257.417)",600:"oklch(44.6% 0.043 257.281)",700:"oklch(37.2% 0.044 257.287)",800:"oklch(27.9% 0.041 260.031)",900:"oklch(20.8% 0.042 265.755)",950:"oklch(12.9% 0.042 264.695)"},gray:{50:"oklch(98.5% 0.002 247.839)",100:"oklch(96.7% 0.003 264.542)",200:"oklch(92.8% 0.006 264.531)",300:"oklch(87.2% 0.01 258.338)",400:"oklch(70.7% 0.022 261.325)",500:"oklch(55.1% 0.027 264.364)",600:"oklch(44.6% 0.03 256.802)",700:"oklch(37.3% 0.034 259.733)",800:"oklch(27.8% 0.033 256.848)",900:"oklch(21% 0.034 264.665)",950:"oklch(13% 0.028 261.692)"},zinc:{50:"oklch(98.5% 0 0)",100:"oklch(96.7% 0.001 286.375)",200:"oklch(92% 0.004 286.32)",300:"oklch(87.1% 0.006 286.286)",400:"oklch(70.5% 0.015 286.067)",500:"oklch(55.2% 0.016 285.938)",600:"oklch(44.2% 0.017 285.786)",700:"oklch(37% 0.013 285.805)",800:"oklch(27.4% 0.006 286.033)",900:"oklch(21% 0.006 285.885)",950:"oklch(14.1% 0.005 285.823)"},neutral:{50:"oklch(98.5% 0 0)",100:"oklch(97% 0 0)",200:"oklch(92.2% 0 0)",300:"oklch(87% 0 0)",400:"oklch(70.8% 0 0)",500:"oklch(55.6% 0 0)",600:"oklch(43.9% 0 0)",700:"oklch(37.1% 0 0)",800:"oklch(26.9% 0 0)",900:"oklch(20.5% 0 0)",950:"oklch(14.5% 0 0)"},stone:{50:"oklch(98.5% 0.001 106.423)",100:"oklch(97% 0.001 106.424)",200:"oklch(92.3% 0.003 48.717)",300:"oklch(86.9% 0.005 56.366)",400:"oklch(70.9% 0.01 56.259)",500:"oklch(55.3% 0.013 58.071)",600:"oklch(44.4% 0.011 73.639)",700:"oklch(37.4% 0.01 67.558)",800:"oklch(26.8% 0.007 34.298)",900:"oklch(21.6% 0.006 56.043)",950:"oklch(14.7% 0.004 49.25)"},mauve:{50:"oklch(98.5% 0 0)",100:"oklch(96% 0.003 325.6)",200:"oklch(92.2% 0.005 325.62)",300:"oklch(86.5% 0.012 325.68)",400:"oklch(71.1% 0.019 323.02)",500:"oklch(54.2% 0.034 322.5)",600:"oklch(43.5% 0.029 321.78)",700:"oklch(36.4% 0.029 323.89)",800:"oklch(26.3% 0.024 320.12)",900:"oklch(21.2% 0.019 322.12)",950:"oklch(14.5% 0.008 326)"},olive:{50:"oklch(98.8% 0.003 106.5)",100:"oklch(96.6% 0.005 106.5)",200:"oklch(93% 0.007 106.5)",300:"oklch(88% 0.011 106.6)",400:"oklch(73.7% 0.021 106.9)",500:"oklch(58% 0.031 107.3)",600:"oklch(46.6% 0.025 107.3)",700:"oklch(39.4% 0.023 107.4)",800:"oklch(28.6% 0.016 107.4)",900:"oklch(22.8% 0.013 107.4)",950:"oklch(15.3% 0.006 107.1)"},mist:{50:"oklch(98.7% 0.002 197.1)",100:"oklch(96.3% 0.002 197.1)",200:"oklch(92.5% 0.005 214.3)",300:"oklch(87.2% 0.007 219.6)",400:"oklch(72.3% 0.014 214.4)",500:"oklch(56% 0.021 213.5)",600:"oklch(45% 0.017 213.2)",700:"oklch(37.8% 0.015 216)",800:"oklch(27.5% 0.011 216.9)",900:"oklch(21.8% 0.008 223.9)",950:"oklch(14.8% 0.004 228.8)"},taupe:{50:"oklch(98.6% 0.002 67.8)",100:"oklch(96% 0.002 17.2)",200:"oklch(92.2% 0.005 34.3)",300:"oklch(86.8% 0.007 39.5)",400:"oklch(71.4% 0.014 41.2)",500:"oklch(54.7% 0.021 43.1)",600:"oklch(43.8% 0.017 39.3)",700:"oklch(36.7% 0.016 35.7)",800:"oklch(26.8% 0.011 36.5)",900:"oklch(21.4% 0.009 43.1)",950:"oklch(14.7% 0.004 49.3)"},red:{50:"oklch(97.1% 0.013 17.38)",100:"oklch(93.6% 0.032 17.717)",200:"oklch(88.5% 0.062 18.334)",300:"oklch(80.8% 0.114 19.571)",400:"oklch(70.4% 0.191 22.216)",500:"oklch(63.7% 0.237 25.331)",600:"oklch(57.7% 0.245 27.325)",700:"oklch(50.5% 0.213 27.518)",800:"oklch(44.4% 0.177 26.899)",900:"oklch(39.6% 0.141 25.723)",950:"oklch(25.8% 0.092 26.042)"},orange:{50:"oklch(98% 0.016 73.684)",100:"oklch(95.4% 0.038 75.164)",200:"oklch(90.1% 0.076 70.697)",300:"oklch(83.7% 0.128 66.29)",400:"oklch(75% 0.183 55.934)",500:"oklch(70.5% 0.213 47.604)",600:"oklch(64.6% 0.222 41.116)",700:"oklch(55.3% 0.195 38.402)",800:"oklch(47% 0.157 37.304)",900:"oklch(40.8% 0.123 38.172)",950:"oklch(26.6% 0.079 36.259)"},amber:{50:"oklch(98.7% 0.022 95.277)",100:"oklch(96.2% 0.059 95.617)",200:"oklch(92.4% 0.12 95.746)",300:"oklch(87.9% 0.169 91.605)",400:"oklch(82.8% 0.189 84.429)",500:"oklch(76.9% 0.188 70.08)",600:"oklch(66.6% 0.179 58.318)",700:"oklch(55.5% 0.163 48.998)",800:"oklch(47.3% 0.137 46.201)",900:"oklch(41.4% 0.112 45.904)",950:"oklch(27.9% 0.077 45.635)"},yellow:{50:"oklch(98.7% 0.026 102.212)",100:"oklch(97.3% 0.071 103.193)",200:"oklch(94.5% 0.129 101.54)",300:"oklch(90.5% 0.182 98.111)",400:"oklch(85.2% 0.199 91.936)",500:"oklch(79.5% 0.184 86.047)",600:"oklch(68.1% 0.162 75.834)",700:"oklch(55.4% 0.135 66.442)",800:"oklch(47.6% 0.114 61.907)",900:"oklch(42.1% 0.095 57.708)",950:"oklch(28.6% 0.066 53.813)"},lime:{50:"oklch(98.6% 0.031 120.757)",100:"oklch(96.7% 0.067 122.328)",200:"oklch(93.8% 0.127 124.321)",300:"oklch(89.7% 0.196 126.665)",400:"oklch(84.1% 0.238 128.85)",500:"oklch(76.8% 0.233 130.85)",600:"oklch(64.8% 0.2 131.684)",700:"oklch(53.2% 0.157 131.589)",800:"oklch(45.3% 0.124 130.933)",900:"oklch(40.5% 0.101 131.063)",950:"oklch(27.4% 0.072 132.109)"},green:{50:"oklch(98.2% 0.018 155.826)",100:"oklch(96.2% 0.044 156.743)",200:"oklch(92.5% 0.084 155.995)",300:"oklch(87.1% 0.15 154.449)",400:"oklch(79.2% 0.209 151.711)",500:"oklch(72.3% 0.219 149.579)",600:"oklch(62.7% 0.194 149.214)",700:"oklch(52.7% 0.154 150.069)",800:"oklch(44.8% 0.119 151.328)",900:"oklch(39.3% 0.095 152.535)",950:"oklch(26.6% 0.065 152.934)"},emerald:{50:"oklch(97.9% 0.021 166.113)",100:"oklch(95% 0.052 163.051)",200:"oklch(90.5% 0.093 164.15)",300:"oklch(84.5% 0.143 164.978)",400:"oklch(76.5% 0.177 163.223)",500:"oklch(69.6% 0.17 162.48)",600:"oklch(59.6% 0.145 163.225)",700:"oklch(50.8% 0.118 165.612)",800:"oklch(43.2% 0.095 166.913)",900:"oklch(37.8% 0.077 168.94)",950:"oklch(26.2% 0.051 172.552)"},teal:{50:"oklch(98.4% 0.014 180.72)",100:"oklch(95.3% 0.051 180.801)",200:"oklch(91% 0.096 180.426)",300:"oklch(85.5% 0.138 181.071)",400:"oklch(77.7% 0.152 181.912)",500:"oklch(70.4% 0.14 182.503)",600:"oklch(60% 0.118 184.704)",700:"oklch(51.1% 0.096 186.391)",800:"oklch(43.7% 0.078 188.216)",900:"oklch(38.6% 0.063 188.416)",950:"oklch(27.7% 0.046 192.524)"},cyan:{50:"oklch(98.4% 0.019 200.873)",100:"oklch(95.6% 0.045 203.388)",200:"oklch(91.7% 0.08 205.041)",300:"oklch(86.5% 0.127 207.078)",400:"oklch(78.9% 0.154 211.53)",500:"oklch(71.5% 0.143 215.221)",600:"oklch(60.9% 0.126 221.723)",700:"oklch(52% 0.105 223.128)",800:"oklch(45% 0.085 224.283)",900:"oklch(39.8% 0.07 227.392)",950:"oklch(30.2% 0.056 229.695)"},sky:{50:"oklch(97.7% 0.013 236.62)",100:"oklch(95.1% 0.026 236.824)",200:"oklch(90.1% 0.058 230.902)",300:"oklch(82.8% 0.111 230.318)",400:"oklch(74.6% 0.16 232.661)",500:"oklch(68.5% 0.169 237.323)",600:"oklch(58.8% 0.158 241.966)",700:"oklch(50% 0.134 242.749)",800:"oklch(44.3% 0.11 240.79)",900:"oklch(39.1% 0.09 240.876)",950:"oklch(29.3% 0.066 243.157)"},blue:{50:"oklch(97% 0.014 254.604)",100:"oklch(93.2% 0.032 255.585)",200:"oklch(88.2% 0.059 254.128)",300:"oklch(80.9% 0.105 251.813)",400:"oklch(70.7% 0.165 254.624)",500:"oklch(62.3% 0.214 259.815)",600:"oklch(54.6% 0.245 262.881)",700:"oklch(48.8% 0.243 264.376)",800:"oklch(42.4% 0.199 265.638)",900:"oklch(37.9% 0.146 265.522)",950:"oklch(28.2% 0.091 267.935)"},indigo:{50:"oklch(96.2% 0.018 272.314)",100:"oklch(93% 0.034 272.788)",200:"oklch(87% 0.065 274.039)",300:"oklch(78.5% 0.115 274.713)",400:"oklch(67.3% 0.182 276.935)",500:"oklch(58.5% 0.233 277.117)",600:"oklch(51.1% 0.262 276.966)",700:"oklch(45.7% 0.24 277.023)",800:"oklch(39.8% 0.195 277.366)",900:"oklch(35.9% 0.144 278.697)",950:"oklch(25.7% 0.09 281.288)"},violet:{50:"oklch(96.9% 0.016 293.756)",100:"oklch(94.3% 0.029 294.588)",200:"oklch(89.4% 0.057 293.283)",300:"oklch(81.1% 0.111 293.571)",400:"oklch(70.2% 0.183 293.541)",500:"oklch(60.6% 0.25 292.717)",600:"oklch(54.1% 0.281 293.009)",700:"oklch(49.1% 0.27 292.581)",800:"oklch(43.2% 0.232 292.759)",900:"oklch(38% 0.189 293.745)",950:"oklch(28.3% 0.141 291.089)"},purple:{50:"oklch(97.7% 0.014 308.299)",100:"oklch(94.6% 0.033 307.174)",200:"oklch(90.2% 0.063 306.703)",300:"oklch(82.7% 0.119 306.383)",400:"oklch(71.4% 0.203 305.504)",500:"oklch(62.7% 0.265 303.9)",600:"oklch(55.8% 0.288 302.321)",700:"oklch(49.6% 0.265 301.924)",800:"oklch(43.8% 0.218 303.724)",900:"oklch(38.1% 0.176 304.987)",950:"oklch(29.1% 0.149 302.717)"},fuchsia:{50:"oklch(97.7% 0.017 320.058)",100:"oklch(95.2% 0.037 318.852)",200:"oklch(90.3% 0.076 319.62)",300:"oklch(83.3% 0.145 321.434)",400:"oklch(74% 0.238 322.16)",500:"oklch(66.7% 0.295 322.15)",600:"oklch(59.1% 0.293 322.896)",700:"oklch(51.8% 0.253 323.949)",800:"oklch(45.2% 0.211 324.591)",900:"oklch(40.1% 0.17 325.612)",950:"oklch(29.3% 0.136 325.661)"},pink:{50:"oklch(97.1% 0.014 343.198)",100:"oklch(94.8% 0.028 342.258)",200:"oklch(89.9% 0.061 343.231)",300:"oklch(82.3% 0.12 346.018)",400:"oklch(71.8% 0.202 349.761)",500:"oklch(65.6% 0.241 354.308)",600:"oklch(59.2% 0.249 0.584)",700:"oklch(52.5% 0.223 3.958)",800:"oklch(45.9% 0.187 3.815)",900:"oklch(40.8% 0.153 2.432)",950:"oklch(28.4% 0.109 3.907)"},rose:{50:"oklch(96.9% 0.015 12.422)",100:"oklch(94.1% 0.03 12.58)",200:"oklch(89.2% 0.058 10.001)",300:"oklch(81% 0.117 11.638)",400:"oklch(71.2% 0.194 13.428)",500:"oklch(64.5% 0.246 16.439)",600:"oklch(58.6% 0.253 17.585)",700:"oklch(51.4% 0.222 16.935)",800:"oklch(45.5% 0.188 13.697)",900:"oklch(41% 0.159 10.272)",950:"oklch(27.1% 0.105 12.094)"}};function s(e){return{__BARE_VALUE__:e}}var r=s(e=>{if(i(e.value))return e.value}),o=s(e=>{if(i(e.value))return`${e.value}%`}),a=s(e=>{if(i(e.value))return`${e.value}px`}),b=s(e=>{if(i(e.value))return`${e.value}ms`}),p=s(e=>{if(i(e.value))return`${e.value}deg`}),S=s(e=>{if(e.fraction===null)return;let[c,t]=u(e.fraction,"/");if(!(!i(c)||!i(t)))return e.fraction}),E=s(e=>{if(i(Number(e.value)))return`repeat(${e.value}, minmax(0, 1fr))`}),y={accentColor:({theme:e})=>e("colors"),animation:{none:"none",spin:"spin 1s linear infinite",ping:"ping 1s cubic-bezier(0, 0, 0.2, 1) infinite",pulse:"pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite",bounce:"bounce 1s infinite"},aria:{busy:'busy="true"',checked:'checked="true"',disabled:'disabled="true"',expanded:'expanded="true"',hidden:'hidden="true"',pressed:'pressed="true"',readonly:'readonly="true"',required:'required="true"',selected:'selected="true"'},aspectRatio:{auto:"auto",square:"1 / 1",video:"16 / 9",...S},backdropBlur:({theme:e})=>e("blur"),backdropBrightness:({theme:e})=>({...e("brightness"),...o}),backdropContrast:({theme:e})=>({...e("contrast"),...o}),backdropGrayscale:({theme:e})=>({...e("grayscale"),...o}),backdropHueRotate:({theme:e})=>({...e("hueRotate"),...p}),backdropInvert:({theme:e})=>({...e("invert"),...o}),backdropOpacity:({theme:e})=>({...e("opacity"),...o}),backdropSaturate:({theme:e})=>({...e("saturate"),...o}),backdropSepia:({theme:e})=>({...e("sepia"),...o}),backgroundColor:({theme:e})=>e("colors"),backgroundImage:{none:"none","gradient-to-t":"linear-gradient(to top, var(--tw-gradient-stops))","gradient-to-tr":"linear-gradient(to top right, var(--tw-gradient-stops))","gradient-to-r":"linear-gradient(to right, var(--tw-gradient-stops))","gradient-to-br":"linear-gradient(to bottom right, var(--tw-gradient-stops))","gradient-to-b":"linear-gradient(to bottom, var(--tw-gradient-stops))","gradient-to-bl":"linear-gradient(to bottom left, var(--tw-gradient-stops))","gradient-to-l":"linear-gradient(to left, var(--tw-gradient-stops))","gradient-to-tl":"linear-gradient(to top left, var(--tw-gradient-stops))"},backgroundOpacity:({theme:e})=>e("opacity"),backgroundPosition:{bottom:"bottom",center:"center",left:"left","left-bottom":"left bottom","left-top":"left top",right:"right","right-bottom":"right bottom","right-top":"right top",top:"top"},backgroundSize:{auto:"auto",cover:"cover",contain:"contain"},blur:{0:"0",none:"",sm:"4px",DEFAULT:"8px",md:"12px",lg:"16px",xl:"24px","2xl":"40px","3xl":"64px"},borderColor:({theme:e})=>({DEFAULT:"currentcolor",...e("colors")}),borderOpacity:({theme:e})=>e("opacity"),borderRadius:{none:"0px",sm:"0.125rem",DEFAULT:"0.25rem",md:"0.375rem",lg:"0.5rem",xl:"0.75rem","2xl":"1rem","3xl":"1.5rem",full:"9999px"},borderSpacing:({theme:e})=>e("spacing"),borderWidth:{DEFAULT:"1px",0:"0px",2:"2px",4:"4px",8:"8px",...a},boxShadow:{sm:"0 1px 2px 0 rgb(0 0 0 / 0.05)",DEFAULT:"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)",md:"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",lg:"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",xl:"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)","2xl":"0 25px 50px -12px rgb(0 0 0 / 0.25)",inner:"inset 0 2px 4px 0 rgb(0 0 0 / 0.05)",none:"none"},boxShadowColor:({theme:e})=>e("colors"),brightness:{0:"0",50:".5",75:".75",90:".9",95:".95",100:"1",105:"1.05",110:"1.1",125:"1.25",150:"1.5",200:"2",...o},caretColor:({theme:e})=>e("colors"),colors:()=>({...f}),columns:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12","3xs":"16rem","2xs":"18rem",xs:"20rem",sm:"24rem",md:"28rem",lg:"32rem",xl:"36rem","2xl":"42rem","3xl":"48rem","4xl":"56rem","5xl":"64rem","6xl":"72rem","7xl":"80rem",...r},container:{},content:{none:"none"},contrast:{0:"0",50:".5",75:".75",100:"1",125:"1.25",150:"1.5",200:"2",...o},cursor:{auto:"auto",default:"default",pointer:"pointer",wait:"wait",text:"text",move:"move",help:"help","not-allowed":"not-allowed",none:"none","context-menu":"context-menu",progress:"progress",cell:"cell",crosshair:"crosshair","vertical-text":"vertical-text",alias:"alias",copy:"copy","no-drop":"no-drop",grab:"grab",grabbing:"grabbing","all-scroll":"all-scroll","col-resize":"col-resize","row-resize":"row-resize","n-resize":"n-resize","e-resize":"e-resize","s-resize":"s-resize","w-resize":"w-resize","ne-resize":"ne-resize","nw-resize":"nw-resize","se-resize":"se-resize","sw-resize":"sw-resize","ew-resize":"ew-resize","ns-resize":"ns-resize","nesw-resize":"nesw-resize","nwse-resize":"nwse-resize","zoom-in":"zoom-in","zoom-out":"zoom-out"},divideColor:({theme:e})=>e("borderColor"),divideOpacity:({theme:e})=>e("borderOpacity"),divideWidth:({theme:e})=>({...e("borderWidth"),...a}),dropShadow:{sm:"0 1px 1px rgb(0 0 0 / 0.05)",DEFAULT:["0 1px 2px rgb(0 0 0 / 0.1)","0 1px 1px rgb(0 0 0 / 0.06)"],md:["0 4px 3px rgb(0 0 0 / 0.07)","0 2px 2px rgb(0 0 0 / 0.06)"],lg:["0 10px 8px rgb(0 0 0 / 0.04)","0 4px 3px rgb(0 0 0 / 0.1)"],xl:["0 20px 13px rgb(0 0 0 / 0.03)","0 8px 5px rgb(0 0 0 / 0.08)"],"2xl":"0 25px 25px rgb(0 0 0 / 0.15)",none:"0 0 #0000"},fill:({theme:e})=>e("colors"),flex:{1:"1 1 0%",auto:"1 1 auto",initial:"0 1 auto",none:"none"},flexBasis:({theme:e})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%","1/12":"8.333333%","2/12":"16.666667%","3/12":"25%","4/12":"33.333333%","5/12":"41.666667%","6/12":"50%","7/12":"58.333333%","8/12":"66.666667%","9/12":"75%","10/12":"83.333333%","11/12":"91.666667%",full:"100%",...e("spacing")}),flexGrow:{0:"0",DEFAULT:"1",...r},flexShrink:{0:"0",DEFAULT:"1",...r},fontFamily:{sans:["ui-sans-serif","system-ui","sans-serif",'"Apple Color Emoji"','"Segoe UI Emoji"','"Segoe UI Symbol"','"Noto Color Emoji"'],serif:["ui-serif","Georgia","Cambria",'"Times New Roman"',"Times","serif"],mono:["ui-monospace","SFMono-Regular","Menlo","Monaco","Consolas",'"Liberation Mono"','"Courier New"',"monospace"]},fontSize:{xs:["0.75rem",{lineHeight:"1rem"}],sm:["0.875rem",{lineHeight:"1.25rem"}],base:["1rem",{lineHeight:"1.5rem"}],lg:["1.125rem",{lineHeight:"1.75rem"}],xl:["1.25rem",{lineHeight:"1.75rem"}],"2xl":["1.5rem",{lineHeight:"2rem"}],"3xl":["1.875rem",{lineHeight:"2.25rem"}],"4xl":["2.25rem",{lineHeight:"2.5rem"}],"5xl":["3rem",{lineHeight:"1"}],"6xl":["3.75rem",{lineHeight:"1"}],"7xl":["4.5rem",{lineHeight:"1"}],"8xl":["6rem",{lineHeight:"1"}],"9xl":["8rem",{lineHeight:"1"}]},fontWeight:{thin:"100",extralight:"200",light:"300",normal:"400",medium:"500",semibold:"600",bold:"700",extrabold:"800",black:"900"},gap:({theme:e})=>e("spacing"),gradientColorStops:({theme:e})=>e("colors"),gradientColorStopPositions:{"0%":"0%","5%":"5%","10%":"10%","15%":"15%","20%":"20%","25%":"25%","30%":"30%","35%":"35%","40%":"40%","45%":"45%","50%":"50%","55%":"55%","60%":"60%","65%":"65%","70%":"70%","75%":"75%","80%":"80%","85%":"85%","90%":"90%","95%":"95%","100%":"100%",...o},grayscale:{0:"0",DEFAULT:"100%",...o},gridAutoColumns:{auto:"auto",min:"min-content",max:"max-content",fr:"minmax(0, 1fr)"},gridAutoRows:{auto:"auto",min:"min-content",max:"max-content",fr:"minmax(0, 1fr)"},gridColumn:{auto:"auto","span-1":"span 1 / span 1","span-2":"span 2 / span 2","span-3":"span 3 / span 3","span-4":"span 4 / span 4","span-5":"span 5 / span 5","span-6":"span 6 / span 6","span-7":"span 7 / span 7","span-8":"span 8 / span 8","span-9":"span 9 / span 9","span-10":"span 10 / span 10","span-11":"span 11 / span 11","span-12":"span 12 / span 12","span-full":"1 / -1"},gridColumnEnd:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13",...r},gridColumnStart:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13",...r},gridRow:{auto:"auto","span-1":"span 1 / span 1","span-2":"span 2 / span 2","span-3":"span 3 / span 3","span-4":"span 4 / span 4","span-5":"span 5 / span 5","span-6":"span 6 / span 6","span-7":"span 7 / span 7","span-8":"span 8 / span 8","span-9":"span 9 / span 9","span-10":"span 10 / span 10","span-11":"span 11 / span 11","span-12":"span 12 / span 12","span-full":"1 / -1"},gridRowEnd:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13",...r},gridRowStart:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13",...r},gridTemplateColumns:{none:"none",subgrid:"subgrid",1:"repeat(1, minmax(0, 1fr))",2:"repeat(2, minmax(0, 1fr))",3:"repeat(3, minmax(0, 1fr))",4:"repeat(4, minmax(0, 1fr))",5:"repeat(5, minmax(0, 1fr))",6:"repeat(6, minmax(0, 1fr))",7:"repeat(7, minmax(0, 1fr))",8:"repeat(8, minmax(0, 1fr))",9:"repeat(9, minmax(0, 1fr))",10:"repeat(10, minmax(0, 1fr))",11:"repeat(11, minmax(0, 1fr))",12:"repeat(12, minmax(0, 1fr))",...E},gridTemplateRows:{none:"none",subgrid:"subgrid",1:"repeat(1, minmax(0, 1fr))",2:"repeat(2, minmax(0, 1fr))",3:"repeat(3, minmax(0, 1fr))",4:"repeat(4, minmax(0, 1fr))",5:"repeat(5, minmax(0, 1fr))",6:"repeat(6, minmax(0, 1fr))",7:"repeat(7, minmax(0, 1fr))",8:"repeat(8, minmax(0, 1fr))",9:"repeat(9, minmax(0, 1fr))",10:"repeat(10, minmax(0, 1fr))",11:"repeat(11, minmax(0, 1fr))",12:"repeat(12, minmax(0, 1fr))",...E},height:({theme:e})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%",full:"100%",screen:"100vh",svh:"100svh",lvh:"100lvh",dvh:"100dvh",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),hueRotate:{0:"0deg",15:"15deg",30:"30deg",60:"60deg",90:"90deg",180:"180deg",...p},inset:({theme:e})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%",full:"100%",...e("spacing")}),invert:{0:"0",DEFAULT:"100%",...o},keyframes:{spin:{to:{transform:"rotate(360deg)"}},ping:{"75%, 100%":{transform:"scale(2)",opacity:"0"}},pulse:{"50%":{opacity:".5"}},bounce:{"0%, 100%":{transform:"translateY(-25%)",animationTimingFunction:"cubic-bezier(0.8,0,1,1)"},"50%":{transform:"none",animationTimingFunction:"cubic-bezier(0,0,0.2,1)"}}},letterSpacing:{tighter:"-0.05em",tight:"-0.025em",normal:"0em",wide:"0.025em",wider:"0.05em",widest:"0.1em"},lineHeight:{none:"1",tight:"1.25",snug:"1.375",normal:"1.5",relaxed:"1.625",loose:"2",3:".75rem",4:"1rem",5:"1.25rem",6:"1.5rem",7:"1.75rem",8:"2rem",9:"2.25rem",10:"2.5rem"},listStyleType:{none:"none",disc:"disc",decimal:"decimal"},listStyleImage:{none:"none"},margin:({theme:e})=>({auto:"auto",...e("spacing")}),lineClamp:{1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",...r},maxHeight:({theme:e})=>({none:"none",full:"100%",screen:"100vh",svh:"100svh",lvh:"100lvh",dvh:"100dvh",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),maxWidth:({theme:e})=>({none:"none",xs:"20rem",sm:"24rem",md:"28rem",lg:"32rem",xl:"36rem","2xl":"42rem","3xl":"48rem","4xl":"56rem","5xl":"64rem","6xl":"72rem","7xl":"80rem",full:"100%",min:"min-content",max:"max-content",fit:"fit-content",prose:"65ch",...e("spacing")}),minHeight:({theme:e})=>({full:"100%",screen:"100vh",svh:"100svh",lvh:"100lvh",dvh:"100dvh",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),minWidth:({theme:e})=>({full:"100%",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),objectPosition:{bottom:"bottom",center:"center",left:"left","left-bottom":"left bottom","left-top":"left top",right:"right","right-bottom":"right bottom","right-top":"right top",top:"top"},opacity:{0:"0",5:"0.05",10:"0.1",15:"0.15",20:"0.2",25:"0.25",30:"0.3",35:"0.35",40:"0.4",45:"0.45",50:"0.5",55:"0.55",60:"0.6",65:"0.65",70:"0.7",75:"0.75",80:"0.8",85:"0.85",90:"0.9",95:"0.95",100:"1",...o},order:{first:"-9999",last:"9999",none:"0",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",...r},outlineColor:({theme:e})=>e("colors"),outlineOffset:{0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...a},outlineWidth:{0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...a},padding:({theme:e})=>e("spacing"),placeholderColor:({theme:e})=>e("colors"),placeholderOpacity:({theme:e})=>e("opacity"),ringColor:({theme:e})=>({DEFAULT:"currentcolor",...e("colors")}),ringOffsetColor:({theme:e})=>e("colors"),ringOffsetWidth:{0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...a},ringOpacity:({theme:e})=>({DEFAULT:"0.5",...e("opacity")}),ringWidth:{DEFAULT:"3px",0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...a},rotate:{0:"0deg",1:"1deg",2:"2deg",3:"3deg",6:"6deg",12:"12deg",45:"45deg",90:"90deg",180:"180deg",...p},saturate:{0:"0",50:".5",100:"1",150:"1.5",200:"2",...o},scale:{0:"0",50:".5",75:".75",90:".9",95:".95",100:"1",105:"1.05",110:"1.1",125:"1.25",150:"1.5",...o},screens:{sm:"40rem",md:"48rem",lg:"64rem",xl:"80rem","2xl":"96rem"},scrollMargin:({theme:e})=>e("spacing"),scrollPadding:({theme:e})=>e("spacing"),sepia:{0:"0",DEFAULT:"100%",...o},skew:{0:"0deg",1:"1deg",2:"2deg",3:"3deg",6:"6deg",12:"12deg",...p},space:({theme:e})=>e("spacing"),spacing:{px:"1px",0:"0px",.5:"0.125rem",1:"0.25rem",1.5:"0.375rem",2:"0.5rem",2.5:"0.625rem",3:"0.75rem",3.5:"0.875rem",4:"1rem",5:"1.25rem",6:"1.5rem",7:"1.75rem",8:"2rem",9:"2.25rem",10:"2.5rem",11:"2.75rem",12:"3rem",14:"3.5rem",16:"4rem",20:"5rem",24:"6rem",28:"7rem",32:"8rem",36:"9rem",40:"10rem",44:"11rem",48:"12rem",52:"13rem",56:"14rem",60:"15rem",64:"16rem",72:"18rem",80:"20rem",96:"24rem"},stroke:({theme:e})=>({none:"none",...e("colors")}),strokeWidth:{0:"0",1:"1",2:"2",...r},supports:{},data:{},textColor:({theme:e})=>e("colors"),textDecorationColor:({theme:e})=>e("colors"),textDecorationThickness:{auto:"auto","from-font":"from-font",0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...a},textIndent:({theme:e})=>e("spacing"),textOpacity:({theme:e})=>e("opacity"),textUnderlineOffset:{auto:"auto",0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...a},transformOrigin:{center:"center",top:"top","top-right":"top right",right:"right","bottom-right":"bottom right",bottom:"bottom","bottom-left":"bottom left",left:"left","top-left":"top left"},transitionDelay:{0:"0s",75:"75ms",100:"100ms",150:"150ms",200:"200ms",300:"300ms",500:"500ms",700:"700ms",1e3:"1000ms",...b},transitionDuration:{DEFAULT:"150ms",0:"0s",75:"75ms",100:"100ms",150:"150ms",200:"200ms",300:"300ms",500:"500ms",700:"700ms",1e3:"1000ms",...b},transitionProperty:{none:"none",all:"all",DEFAULT:"color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter",colors:"color, background-color, border-color, outline-color, text-decoration-color, fill, stroke",opacity:"opacity",shadow:"box-shadow",transform:"transform"},transitionTimingFunction:{DEFAULT:"cubic-bezier(0.4, 0, 0.2, 1)",linear:"linear",in:"cubic-bezier(0.4, 0, 1, 1)",out:"cubic-bezier(0, 0, 0.2, 1)","in-out":"cubic-bezier(0.4, 0, 0.2, 1)"},translate:({theme:e})=>({"1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%",full:"100%",...e("spacing")}),size:({theme:e})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%","1/12":"8.333333%","2/12":"16.666667%","3/12":"25%","4/12":"33.333333%","5/12":"41.666667%","6/12":"50%","7/12":"58.333333%","8/12":"66.666667%","9/12":"75%","10/12":"83.333333%","11/12":"91.666667%",full:"100%",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),width:({theme:e})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%","1/12":"8.333333%","2/12":"16.666667%","3/12":"25%","4/12":"33.333333%","5/12":"41.666667%","6/12":"50%","7/12":"58.333333%","8/12":"66.666667%","9/12":"75%","10/12":"83.333333%","11/12":"91.666667%",full:"100%",screen:"100vw",svw:"100svw",lvw:"100lvw",dvw:"100dvw",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),willChange:{auto:"auto",scroll:"scroll-position",contents:"contents",transform:"transform"},zIndex:{auto:"auto",0:"0",10:"10",20:"20",30:"30",40:"40",50:"50",...r}};module.exports=y; diff --git a/node_modules/tailwindcss/dist/default-theme.mjs b/node_modules/tailwindcss/dist/default-theme.mjs new file mode 100644 index 00000000..4026f546 --- /dev/null +++ b/node_modules/tailwindcss/dist/default-theme.mjs @@ -0,0 +1 @@ +import{i as a}from"./chunk-TDNFF6A4.mjs";import"./chunk-X4GG3EDV.mjs";export{a as default}; diff --git a/node_modules/tailwindcss/dist/flatten-color-palette.d.mts b/node_modules/tailwindcss/dist/flatten-color-palette.d.mts new file mode 100644 index 00000000..11516048 --- /dev/null +++ b/node_modules/tailwindcss/dist/flatten-color-palette.d.mts @@ -0,0 +1,6 @@ +type Colors = { + [key: string | number]: string | Colors; +}; +declare function flattenColorPalette(colors: Colors): Record; + +export { flattenColorPalette as default }; diff --git a/node_modules/tailwindcss/dist/flatten-color-palette.d.ts b/node_modules/tailwindcss/dist/flatten-color-palette.d.ts new file mode 100644 index 00000000..11516048 --- /dev/null +++ b/node_modules/tailwindcss/dist/flatten-color-palette.d.ts @@ -0,0 +1,6 @@ +type Colors = { + [key: string | number]: string | Colors; +}; +declare function flattenColorPalette(colors: Colors): Record; + +export { flattenColorPalette as default }; diff --git a/node_modules/tailwindcss/dist/flatten-color-palette.js b/node_modules/tailwindcss/dist/flatten-color-palette.js new file mode 100644 index 00000000..b0706f75 --- /dev/null +++ b/node_modules/tailwindcss/dist/flatten-color-palette.js @@ -0,0 +1,3 @@ +"use strict";function E(e){return{kind:"word",value:e}}function we(e,t){return{kind:"function",value:e,nodes:t}}function be(e){return{kind:"separator",value:e}}function h(e){let t="";for(let n of e)switch(n.kind){case"word":case"separator":{t+=n.value;break}case"function":t+=n.value+"("+h(n.nodes)+")"}return t}var Q=92,ye=41,J=58,X=44,xe=34,ee=61,te=62,re=60,ne=10,Ae=40,Ce=39,Se=47,ie=32,oe=9;function g(e){e=e.replaceAll(`\r +`,` +`);let t=[],n=[],r=null,o="",i;for(let l=0;l0){let s=E(o);r?r.nodes.push(s):t.push(s),o=""}let u=E(e[l]);r?r.nodes.push(u):t.push(u);break}case J:case X:case ee:case te:case re:case ne:case ie:case oe:{if(o.length>0){let w=E(o);r?r.nodes.push(w):t.push(w),o=""}let u=l,s=l+1;for(;s0){let s=E(o);u?.nodes.push(s),o=""}n.length>0?r=n[n.length-1]:r=null;break}default:o+=String.fromCharCode(a)}}return o.length>0&&t.push(E(o)),t}var p=class extends Map{constructor(n){super();this.factory=n}get(n){let r=super.get(n);return r===void 0&&(r=this.factory(n,this),this.set(n,r)),r}};var ct=new Uint8Array(256);var L=new Uint8Array(256);function d(e,t){let n=0,r=[],o=0,i=e.length,l=t.charCodeAt(0);for(let a=0;a0&&u===L[n-1]&&n--;break}}return r.push(e.slice(o)),r}var j=(l=>(l[l.Continue=0]="Continue",l[l.Skip=1]="Skip",l[l.Stop=2]="Stop",l[l.Replace=3]="Replace",l[l.ReplaceSkip=4]="ReplaceSkip",l[l.ReplaceStop=5]="ReplaceStop",l))(j||{}),c={Continue:{kind:0},Skip:{kind:1},Stop:{kind:2},Replace:e=>({kind:3,nodes:Array.isArray(e)?e:[e]}),ReplaceSkip:e=>({kind:4,nodes:Array.isArray(e)?e:[e]}),ReplaceStop:e=>({kind:5,nodes:Array.isArray(e)?e:[e]})};function f(e,t){typeof t=="function"?le(e,t):le(e,t.enter,t.exit)}function le(e,t=()=>c.Continue,n=()=>c.Continue){let r={value:[e,0,null],prev:null},o={parent:null,depth:0,path(){let i=[],l=r;for(;l;){let a=l.value[2];a&&i.push(a),l=l.prev}return i.reverse(),i}};for(;r!==null;){let i=r.value,l=i[0],a=i[1],u=i[2];if(a>=l.length){r=r.prev,o.depth-=1;continue}if(o.parent=u,a>=0){let O=l[a],C=t(O,o)??c.Continue;switch(C.kind){case 0:{O.nodes&&O.nodes.length>0&&(o.depth+=1,r={value:[O.nodes,0,O],prev:r}),i[1]=~a;continue}case 2:return;case 1:{i[1]=~a;continue}case 3:{l.splice(a,1,...C.nodes);continue}case 5:{l.splice(a,1,...C.nodes);return}case 4:{l.splice(a,1,...C.nodes),i[1]+=C.nodes.length;continue}default:throw new Error(`Invalid \`WalkAction.${j[C.kind]??`Unknown(${C.kind})`}\` in enter.`)}}let s=~a,U=l[s],w=n(U,o)??c.Continue;switch(w.kind){case 0:i[1]=s+1;continue;case 2:return;case 3:{l.splice(s,1,...w.nodes),i[1]=s+w.nodes.length;continue}case 5:{l.splice(s,1,...w.nodes);return}case 4:{l.splice(s,1,...w.nodes),i[1]=s+w.nodes.length;continue}default:throw new Error(`Invalid \`WalkAction.${j[w.kind]??`Unknown(${w.kind})`}\` in exit.`)}}}var yt=new p(e=>{let t=g(e),n=new Set;return f(t,(r,o)=>{let i=o.parent===null?t:o.parent.nodes??[];if(r.kind==="word"&&(r.value==="+"||r.value==="-"||r.value==="*"||r.value==="/")){let l=i.indexOf(r)??-1;if(l===-1)return;let a=i[l-1];if(a?.kind!=="separator"||a.value!==" ")return;let u=i[l+1];if(u?.kind!=="separator"||u.value!==" ")return;n.add(a),n.add(u)}else r.kind==="separator"&&r.value.length>0&&r.value.trim()===""?(i[0]===r||i[i.length-1]===r)&&n.add(r):r.kind==="separator"&&r.value.trim()===","&&(r.value=",")}),n.size>0&&f(t,r=>{if(n.has(r))return n.delete(r),c.ReplaceSkip([])}),W(t),h(t)});var xt=new p(e=>{let t=g(e);return t.length===3&&t[0].kind==="word"&&t[0].value==="&"&&t[1].kind==="separator"&&t[1].value===":"&&t[2].kind==="function"&&t[2].value==="is"?h(t[2].nodes):e});function W(e){for(let t of e)switch(t.kind){case"function":{if(t.value==="url"||t.value.endsWith("_url")){t.value=P(t.value);break}if(t.value==="var"||t.value.endsWith("_var")||t.value==="theme"||t.value.endsWith("_theme")){t.value=P(t.value);for(let n=0;n{let t=g(e);return t.length===1&&t[0].kind==="function"&&t[0].value==="var"});function $e(e){throw new Error(`Unexpected value: ${e}`)}function P(e){return e.replaceAll("_",String.raw`\_`).replaceAll(" ","_")}var A=/[+-]?\d*\.?\d+(?:[eE][+-]?\d+)?/,_t=new RegExp(`^${A.source}$`);var It=new RegExp(`^${A.source}%$`);var Dt=new RegExp(`^${A.source}\\s*/\\s*${A.source}$`);var Ve=["cm","mm","Q","in","pc","pt","px","em","ex","ch","rem","lh","rlh","vw","vh","vmin","vmax","vb","vi","svw","svh","lvw","lvh","dvw","dvh","cqw","cqh","cqi","cqb","cqmin","cqmax"],Ut=new RegExp(`^${A.source}(${Ve.join("|")})$`);var Te=["deg","rad","grad","turn"],Lt=new RegExp(`^${A.source}(${Te.join("|")})$`);var zt=new RegExp(`^${A.source} +${A.source} +${A.source}$`);function v(e){let t=Number(e);return Number.isInteger(t)&&t>=0&&String(t)===String(e)}function _(e,t){if(t===null)return e;let n=Number(t);return Number.isNaN(n)||(t=`${n*100}%`),t==="100%"?e:`color-mix(in oklab, ${e} ${t}, transparent)`}var Ne={"--alpha":Re,"--spacing":Oe,"--theme":Pe,theme:_e};function Re(e,t,n,...r){let[o,i]=d(n,"/").map(l=>l.trim());if(!o||!i)throw new Error(`The --alpha(\u2026) function requires a color and an alpha value, e.g.: \`--alpha(${o||"var(--my-color)"} / ${i||"50%"})\``);if(r.length>0)throw new Error(`The --alpha(\u2026) function only accepts one argument, e.g.: \`--alpha(${o||"var(--my-color)"} / ${i||"50%"})\``);return _(o,i)}function Oe(e,t,n,...r){if(!n)throw new Error("The --spacing(\u2026) function requires an argument, but received none.");if(r.length>0)throw new Error(`The --spacing(\u2026) function only accepts a single argument, but received ${r.length+1}.`);let o=e.theme.resolve(null,["--spacing"]);if(!o)throw new Error("The --spacing(\u2026) function requires that the `--spacing` theme variable exists, but it was not found.");return`calc(${o} * ${n})`}function Pe(e,t,n,...r){if(!n.startsWith("--"))throw new Error("The --theme(\u2026) function can only be used with CSS variables from your theme.");let o=!1;n.endsWith(" inline")&&(o=!0,n=n.slice(0,-7)),t.kind==="at-rule"&&(o=!0);let i=e.resolveThemeValue(n,o);if(!i){if(r.length>0)return r.join(", ");throw new Error(`Could not resolve value for theme function: \`theme(${n})\`. Consider checking if the variable name is correct or provide a fallback value to silence this error.`)}if(r.length===0)return i;let l=r.join(", ");if(l==="initial")return i;if(i==="initial")return l;if(i.startsWith("var(")||i.startsWith("theme(")||i.startsWith("--theme(")){let a=g(i);return De(a,l),h(a)}return i}function _e(e,t,n,...r){n=Ie(n);let o=e.resolveThemeValue(n);if(!o&&r.length>0)return r.join(", ");if(!o)throw new Error(`Could not resolve value for theme function: \`theme(${n})\`. Consider checking if the path is correct or provide a fallback value to silence this error.`);return o}var sr=new RegExp(Object.keys(Ne).map(e=>`${e}\\(`).join("|"));function Ie(e){if(e[0]!=="'"&&e[0]!=='"')return e;let t="",n=e[0];for(let r=1;r{if(n.kind==="function"&&!(n.value!=="var"&&n.value!=="theme"&&n.value!=="--theme"))if(n.nodes.length===1)n.nodes.push({kind:"word",value:`, ${t}`});else{let r=n.nodes[n.nodes.length-1];r.kind==="word"&&r.value==="initial"&&(r.value=t)}})}var Le=/^(?[-+]?(?:\d*\.)?\d+)(?[a-z]+|%)?$/i,Y=new p(e=>{let t=Le.exec(e);if(!t)return null;let n=t.groups?.value;if(n===void 0)return null;let r=Number(n);if(Number.isNaN(r))return null;let o=t.groups?.unit;return o===void 0?[r,null]:[r,o]});function V(e,t="top",n="right",r="bottom",o="left"){return ce(`${e}-${t}`,`${e}-${n}`,`${e}-${r}`,`${e}-${o}`)}function ce(e="top",t="right",n="bottom",r="left"){return{1:[[e,0],[t,0],[n,0],[r,0]],2:[[e,0],[t,1],[n,0],[r,1]],3:[[e,0],[t,1],[n,2],[r,1]],4:[[e,0],[t,1],[n,2],[r,3]]}}function k(e,t){return{1:[[e,0],[t,0]],2:[[e,0],[t,1]]}}var $r={inset:ce(),margin:V("margin"),padding:V("padding"),"scroll-margin":V("scroll-margin"),"scroll-padding":V("scroll-padding"),"border-width":V("border","top-width","right-width","bottom-width","left-width"),"border-style":V("border","top-style","right-style","bottom-style","left-style"),"border-color":V("border","top-color","right-color","bottom-color","left-color"),gap:k("row-gap","column-gap"),overflow:k("overflow-x","overflow-y"),"overscroll-behavior":k("overscroll-behavior-x","overscroll-behavior-y")},Vr={"inset-block":k("top","bottom"),"inset-inline":k("left","right"),"margin-block":k("margin-top","margin-bottom"),"margin-inline":k("margin-left","margin-right"),"padding-block":k("padding-top","padding-bottom"),"padding-inline":k("padding-left","padding-right"),"scroll-margin-block":k("scroll-margin-top","scroll-margin-bottom"),"scroll-margin-inline":k("scroll-margin-left","scroll-margin-right"),"scroll-padding-block":k("scroll-padding-top","scroll-padding-bottom"),"scroll-padding-inline":k("scroll-padding-left","scroll-padding-right")};var ln=Symbol();var an=Symbol();var sn=Symbol();var un=Symbol();var cn=Symbol();var fn=Symbol();var pn=Symbol();var dn=Symbol();var mn=Symbol();var gn=Symbol();var hn=Symbol();var vn=Symbol();var kn=Symbol();var wn=Symbol();var Z={inherit:"inherit",current:"currentcolor",transparent:"transparent",black:"#000",white:"#fff",slate:{50:"oklch(98.4% 0.003 247.858)",100:"oklch(96.8% 0.007 247.896)",200:"oklch(92.9% 0.013 255.508)",300:"oklch(86.9% 0.022 252.894)",400:"oklch(70.4% 0.04 256.788)",500:"oklch(55.4% 0.046 257.417)",600:"oklch(44.6% 0.043 257.281)",700:"oklch(37.2% 0.044 257.287)",800:"oklch(27.9% 0.041 260.031)",900:"oklch(20.8% 0.042 265.755)",950:"oklch(12.9% 0.042 264.695)"},gray:{50:"oklch(98.5% 0.002 247.839)",100:"oklch(96.7% 0.003 264.542)",200:"oklch(92.8% 0.006 264.531)",300:"oklch(87.2% 0.01 258.338)",400:"oklch(70.7% 0.022 261.325)",500:"oklch(55.1% 0.027 264.364)",600:"oklch(44.6% 0.03 256.802)",700:"oklch(37.3% 0.034 259.733)",800:"oklch(27.8% 0.033 256.848)",900:"oklch(21% 0.034 264.665)",950:"oklch(13% 0.028 261.692)"},zinc:{50:"oklch(98.5% 0 0)",100:"oklch(96.7% 0.001 286.375)",200:"oklch(92% 0.004 286.32)",300:"oklch(87.1% 0.006 286.286)",400:"oklch(70.5% 0.015 286.067)",500:"oklch(55.2% 0.016 285.938)",600:"oklch(44.2% 0.017 285.786)",700:"oklch(37% 0.013 285.805)",800:"oklch(27.4% 0.006 286.033)",900:"oklch(21% 0.006 285.885)",950:"oklch(14.1% 0.005 285.823)"},neutral:{50:"oklch(98.5% 0 0)",100:"oklch(97% 0 0)",200:"oklch(92.2% 0 0)",300:"oklch(87% 0 0)",400:"oklch(70.8% 0 0)",500:"oklch(55.6% 0 0)",600:"oklch(43.9% 0 0)",700:"oklch(37.1% 0 0)",800:"oklch(26.9% 0 0)",900:"oklch(20.5% 0 0)",950:"oklch(14.5% 0 0)"},stone:{50:"oklch(98.5% 0.001 106.423)",100:"oklch(97% 0.001 106.424)",200:"oklch(92.3% 0.003 48.717)",300:"oklch(86.9% 0.005 56.366)",400:"oklch(70.9% 0.01 56.259)",500:"oklch(55.3% 0.013 58.071)",600:"oklch(44.4% 0.011 73.639)",700:"oklch(37.4% 0.01 67.558)",800:"oklch(26.8% 0.007 34.298)",900:"oklch(21.6% 0.006 56.043)",950:"oklch(14.7% 0.004 49.25)"},mauve:{50:"oklch(98.5% 0 0)",100:"oklch(96% 0.003 325.6)",200:"oklch(92.2% 0.005 325.62)",300:"oklch(86.5% 0.012 325.68)",400:"oklch(71.1% 0.019 323.02)",500:"oklch(54.2% 0.034 322.5)",600:"oklch(43.5% 0.029 321.78)",700:"oklch(36.4% 0.029 323.89)",800:"oklch(26.3% 0.024 320.12)",900:"oklch(21.2% 0.019 322.12)",950:"oklch(14.5% 0.008 326)"},olive:{50:"oklch(98.8% 0.003 106.5)",100:"oklch(96.6% 0.005 106.5)",200:"oklch(93% 0.007 106.5)",300:"oklch(88% 0.011 106.6)",400:"oklch(73.7% 0.021 106.9)",500:"oklch(58% 0.031 107.3)",600:"oklch(46.6% 0.025 107.3)",700:"oklch(39.4% 0.023 107.4)",800:"oklch(28.6% 0.016 107.4)",900:"oklch(22.8% 0.013 107.4)",950:"oklch(15.3% 0.006 107.1)"},mist:{50:"oklch(98.7% 0.002 197.1)",100:"oklch(96.3% 0.002 197.1)",200:"oklch(92.5% 0.005 214.3)",300:"oklch(87.2% 0.007 219.6)",400:"oklch(72.3% 0.014 214.4)",500:"oklch(56% 0.021 213.5)",600:"oklch(45% 0.017 213.2)",700:"oklch(37.8% 0.015 216)",800:"oklch(27.5% 0.011 216.9)",900:"oklch(21.8% 0.008 223.9)",950:"oklch(14.8% 0.004 228.8)"},taupe:{50:"oklch(98.6% 0.002 67.8)",100:"oklch(96% 0.002 17.2)",200:"oklch(92.2% 0.005 34.3)",300:"oklch(86.8% 0.007 39.5)",400:"oklch(71.4% 0.014 41.2)",500:"oklch(54.7% 0.021 43.1)",600:"oklch(43.8% 0.017 39.3)",700:"oklch(36.7% 0.016 35.7)",800:"oklch(26.8% 0.011 36.5)",900:"oklch(21.4% 0.009 43.1)",950:"oklch(14.7% 0.004 49.3)"},red:{50:"oklch(97.1% 0.013 17.38)",100:"oklch(93.6% 0.032 17.717)",200:"oklch(88.5% 0.062 18.334)",300:"oklch(80.8% 0.114 19.571)",400:"oklch(70.4% 0.191 22.216)",500:"oklch(63.7% 0.237 25.331)",600:"oklch(57.7% 0.245 27.325)",700:"oklch(50.5% 0.213 27.518)",800:"oklch(44.4% 0.177 26.899)",900:"oklch(39.6% 0.141 25.723)",950:"oklch(25.8% 0.092 26.042)"},orange:{50:"oklch(98% 0.016 73.684)",100:"oklch(95.4% 0.038 75.164)",200:"oklch(90.1% 0.076 70.697)",300:"oklch(83.7% 0.128 66.29)",400:"oklch(75% 0.183 55.934)",500:"oklch(70.5% 0.213 47.604)",600:"oklch(64.6% 0.222 41.116)",700:"oklch(55.3% 0.195 38.402)",800:"oklch(47% 0.157 37.304)",900:"oklch(40.8% 0.123 38.172)",950:"oklch(26.6% 0.079 36.259)"},amber:{50:"oklch(98.7% 0.022 95.277)",100:"oklch(96.2% 0.059 95.617)",200:"oklch(92.4% 0.12 95.746)",300:"oklch(87.9% 0.169 91.605)",400:"oklch(82.8% 0.189 84.429)",500:"oklch(76.9% 0.188 70.08)",600:"oklch(66.6% 0.179 58.318)",700:"oklch(55.5% 0.163 48.998)",800:"oklch(47.3% 0.137 46.201)",900:"oklch(41.4% 0.112 45.904)",950:"oklch(27.9% 0.077 45.635)"},yellow:{50:"oklch(98.7% 0.026 102.212)",100:"oklch(97.3% 0.071 103.193)",200:"oklch(94.5% 0.129 101.54)",300:"oklch(90.5% 0.182 98.111)",400:"oklch(85.2% 0.199 91.936)",500:"oklch(79.5% 0.184 86.047)",600:"oklch(68.1% 0.162 75.834)",700:"oklch(55.4% 0.135 66.442)",800:"oklch(47.6% 0.114 61.907)",900:"oklch(42.1% 0.095 57.708)",950:"oklch(28.6% 0.066 53.813)"},lime:{50:"oklch(98.6% 0.031 120.757)",100:"oklch(96.7% 0.067 122.328)",200:"oklch(93.8% 0.127 124.321)",300:"oklch(89.7% 0.196 126.665)",400:"oklch(84.1% 0.238 128.85)",500:"oklch(76.8% 0.233 130.85)",600:"oklch(64.8% 0.2 131.684)",700:"oklch(53.2% 0.157 131.589)",800:"oklch(45.3% 0.124 130.933)",900:"oklch(40.5% 0.101 131.063)",950:"oklch(27.4% 0.072 132.109)"},green:{50:"oklch(98.2% 0.018 155.826)",100:"oklch(96.2% 0.044 156.743)",200:"oklch(92.5% 0.084 155.995)",300:"oklch(87.1% 0.15 154.449)",400:"oklch(79.2% 0.209 151.711)",500:"oklch(72.3% 0.219 149.579)",600:"oklch(62.7% 0.194 149.214)",700:"oklch(52.7% 0.154 150.069)",800:"oklch(44.8% 0.119 151.328)",900:"oklch(39.3% 0.095 152.535)",950:"oklch(26.6% 0.065 152.934)"},emerald:{50:"oklch(97.9% 0.021 166.113)",100:"oklch(95% 0.052 163.051)",200:"oklch(90.5% 0.093 164.15)",300:"oklch(84.5% 0.143 164.978)",400:"oklch(76.5% 0.177 163.223)",500:"oklch(69.6% 0.17 162.48)",600:"oklch(59.6% 0.145 163.225)",700:"oklch(50.8% 0.118 165.612)",800:"oklch(43.2% 0.095 166.913)",900:"oklch(37.8% 0.077 168.94)",950:"oklch(26.2% 0.051 172.552)"},teal:{50:"oklch(98.4% 0.014 180.72)",100:"oklch(95.3% 0.051 180.801)",200:"oklch(91% 0.096 180.426)",300:"oklch(85.5% 0.138 181.071)",400:"oklch(77.7% 0.152 181.912)",500:"oklch(70.4% 0.14 182.503)",600:"oklch(60% 0.118 184.704)",700:"oklch(51.1% 0.096 186.391)",800:"oklch(43.7% 0.078 188.216)",900:"oklch(38.6% 0.063 188.416)",950:"oklch(27.7% 0.046 192.524)"},cyan:{50:"oklch(98.4% 0.019 200.873)",100:"oklch(95.6% 0.045 203.388)",200:"oklch(91.7% 0.08 205.041)",300:"oklch(86.5% 0.127 207.078)",400:"oklch(78.9% 0.154 211.53)",500:"oklch(71.5% 0.143 215.221)",600:"oklch(60.9% 0.126 221.723)",700:"oklch(52% 0.105 223.128)",800:"oklch(45% 0.085 224.283)",900:"oklch(39.8% 0.07 227.392)",950:"oklch(30.2% 0.056 229.695)"},sky:{50:"oklch(97.7% 0.013 236.62)",100:"oklch(95.1% 0.026 236.824)",200:"oklch(90.1% 0.058 230.902)",300:"oklch(82.8% 0.111 230.318)",400:"oklch(74.6% 0.16 232.661)",500:"oklch(68.5% 0.169 237.323)",600:"oklch(58.8% 0.158 241.966)",700:"oklch(50% 0.134 242.749)",800:"oklch(44.3% 0.11 240.79)",900:"oklch(39.1% 0.09 240.876)",950:"oklch(29.3% 0.066 243.157)"},blue:{50:"oklch(97% 0.014 254.604)",100:"oklch(93.2% 0.032 255.585)",200:"oklch(88.2% 0.059 254.128)",300:"oklch(80.9% 0.105 251.813)",400:"oklch(70.7% 0.165 254.624)",500:"oklch(62.3% 0.214 259.815)",600:"oklch(54.6% 0.245 262.881)",700:"oklch(48.8% 0.243 264.376)",800:"oklch(42.4% 0.199 265.638)",900:"oklch(37.9% 0.146 265.522)",950:"oklch(28.2% 0.091 267.935)"},indigo:{50:"oklch(96.2% 0.018 272.314)",100:"oklch(93% 0.034 272.788)",200:"oklch(87% 0.065 274.039)",300:"oklch(78.5% 0.115 274.713)",400:"oklch(67.3% 0.182 276.935)",500:"oklch(58.5% 0.233 277.117)",600:"oklch(51.1% 0.262 276.966)",700:"oklch(45.7% 0.24 277.023)",800:"oklch(39.8% 0.195 277.366)",900:"oklch(35.9% 0.144 278.697)",950:"oklch(25.7% 0.09 281.288)"},violet:{50:"oklch(96.9% 0.016 293.756)",100:"oklch(94.3% 0.029 294.588)",200:"oklch(89.4% 0.057 293.283)",300:"oklch(81.1% 0.111 293.571)",400:"oklch(70.2% 0.183 293.541)",500:"oklch(60.6% 0.25 292.717)",600:"oklch(54.1% 0.281 293.009)",700:"oklch(49.1% 0.27 292.581)",800:"oklch(43.2% 0.232 292.759)",900:"oklch(38% 0.189 293.745)",950:"oklch(28.3% 0.141 291.089)"},purple:{50:"oklch(97.7% 0.014 308.299)",100:"oklch(94.6% 0.033 307.174)",200:"oklch(90.2% 0.063 306.703)",300:"oklch(82.7% 0.119 306.383)",400:"oklch(71.4% 0.203 305.504)",500:"oklch(62.7% 0.265 303.9)",600:"oklch(55.8% 0.288 302.321)",700:"oklch(49.6% 0.265 301.924)",800:"oklch(43.8% 0.218 303.724)",900:"oklch(38.1% 0.176 304.987)",950:"oklch(29.1% 0.149 302.717)"},fuchsia:{50:"oklch(97.7% 0.017 320.058)",100:"oklch(95.2% 0.037 318.852)",200:"oklch(90.3% 0.076 319.62)",300:"oklch(83.3% 0.145 321.434)",400:"oklch(74% 0.238 322.16)",500:"oklch(66.7% 0.295 322.15)",600:"oklch(59.1% 0.293 322.896)",700:"oklch(51.8% 0.253 323.949)",800:"oklch(45.2% 0.211 324.591)",900:"oklch(40.1% 0.17 325.612)",950:"oklch(29.3% 0.136 325.661)"},pink:{50:"oklch(97.1% 0.014 343.198)",100:"oklch(94.8% 0.028 342.258)",200:"oklch(89.9% 0.061 343.231)",300:"oklch(82.3% 0.12 346.018)",400:"oklch(71.8% 0.202 349.761)",500:"oklch(65.6% 0.241 354.308)",600:"oklch(59.2% 0.249 0.584)",700:"oklch(52.5% 0.223 3.958)",800:"oklch(45.9% 0.187 3.815)",900:"oklch(40.8% 0.153 2.432)",950:"oklch(28.4% 0.109 3.907)"},rose:{50:"oklch(96.9% 0.015 12.422)",100:"oklch(94.1% 0.03 12.58)",200:"oklch(89.2% 0.058 10.001)",300:"oklch(81% 0.117 11.638)",400:"oklch(71.2% 0.194 13.428)",500:"oklch(64.5% 0.246 16.439)",600:"oklch(58.6% 0.253 17.585)",700:"oklch(51.4% 0.222 16.935)",800:"oklch(45.5% 0.188 13.697)",900:"oklch(41% 0.159 10.272)",950:"oklch(27.1% 0.105 12.094)"}};function T(e){return{__BARE_VALUE__:e}}var b=T(e=>{if(v(e.value))return e.value}),m=T(e=>{if(v(e.value))return`${e.value}%`}),$=T(e=>{if(v(e.value))return`${e.value}px`}),ve=T(e=>{if(v(e.value))return`${e.value}ms`}),M=T(e=>{if(v(e.value))return`${e.value}deg`}),rt=T(e=>{if(e.fraction===null)return;let[t,n]=d(e.fraction,"/");if(!(!v(t)||!v(n)))return e.fraction}),ke=T(e=>{if(v(Number(e.value)))return`repeat(${e.value}, minmax(0, 1fr))`}),nt={accentColor:({theme:e})=>e("colors"),animation:{none:"none",spin:"spin 1s linear infinite",ping:"ping 1s cubic-bezier(0, 0, 0.2, 1) infinite",pulse:"pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite",bounce:"bounce 1s infinite"},aria:{busy:'busy="true"',checked:'checked="true"',disabled:'disabled="true"',expanded:'expanded="true"',hidden:'hidden="true"',pressed:'pressed="true"',readonly:'readonly="true"',required:'required="true"',selected:'selected="true"'},aspectRatio:{auto:"auto",square:"1 / 1",video:"16 / 9",...rt},backdropBlur:({theme:e})=>e("blur"),backdropBrightness:({theme:e})=>({...e("brightness"),...m}),backdropContrast:({theme:e})=>({...e("contrast"),...m}),backdropGrayscale:({theme:e})=>({...e("grayscale"),...m}),backdropHueRotate:({theme:e})=>({...e("hueRotate"),...M}),backdropInvert:({theme:e})=>({...e("invert"),...m}),backdropOpacity:({theme:e})=>({...e("opacity"),...m}),backdropSaturate:({theme:e})=>({...e("saturate"),...m}),backdropSepia:({theme:e})=>({...e("sepia"),...m}),backgroundColor:({theme:e})=>e("colors"),backgroundImage:{none:"none","gradient-to-t":"linear-gradient(to top, var(--tw-gradient-stops))","gradient-to-tr":"linear-gradient(to top right, var(--tw-gradient-stops))","gradient-to-r":"linear-gradient(to right, var(--tw-gradient-stops))","gradient-to-br":"linear-gradient(to bottom right, var(--tw-gradient-stops))","gradient-to-b":"linear-gradient(to bottom, var(--tw-gradient-stops))","gradient-to-bl":"linear-gradient(to bottom left, var(--tw-gradient-stops))","gradient-to-l":"linear-gradient(to left, var(--tw-gradient-stops))","gradient-to-tl":"linear-gradient(to top left, var(--tw-gradient-stops))"},backgroundOpacity:({theme:e})=>e("opacity"),backgroundPosition:{bottom:"bottom",center:"center",left:"left","left-bottom":"left bottom","left-top":"left top",right:"right","right-bottom":"right bottom","right-top":"right top",top:"top"},backgroundSize:{auto:"auto",cover:"cover",contain:"contain"},blur:{0:"0",none:"",sm:"4px",DEFAULT:"8px",md:"12px",lg:"16px",xl:"24px","2xl":"40px","3xl":"64px"},borderColor:({theme:e})=>({DEFAULT:"currentcolor",...e("colors")}),borderOpacity:({theme:e})=>e("opacity"),borderRadius:{none:"0px",sm:"0.125rem",DEFAULT:"0.25rem",md:"0.375rem",lg:"0.5rem",xl:"0.75rem","2xl":"1rem","3xl":"1.5rem",full:"9999px"},borderSpacing:({theme:e})=>e("spacing"),borderWidth:{DEFAULT:"1px",0:"0px",2:"2px",4:"4px",8:"8px",...$},boxShadow:{sm:"0 1px 2px 0 rgb(0 0 0 / 0.05)",DEFAULT:"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)",md:"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",lg:"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",xl:"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)","2xl":"0 25px 50px -12px rgb(0 0 0 / 0.25)",inner:"inset 0 2px 4px 0 rgb(0 0 0 / 0.05)",none:"none"},boxShadowColor:({theme:e})=>e("colors"),brightness:{0:"0",50:".5",75:".75",90:".9",95:".95",100:"1",105:"1.05",110:"1.1",125:"1.25",150:"1.5",200:"2",...m},caretColor:({theme:e})=>e("colors"),colors:()=>({...Z}),columns:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12","3xs":"16rem","2xs":"18rem",xs:"20rem",sm:"24rem",md:"28rem",lg:"32rem",xl:"36rem","2xl":"42rem","3xl":"48rem","4xl":"56rem","5xl":"64rem","6xl":"72rem","7xl":"80rem",...b},container:{},content:{none:"none"},contrast:{0:"0",50:".5",75:".75",100:"1",125:"1.25",150:"1.5",200:"2",...m},cursor:{auto:"auto",default:"default",pointer:"pointer",wait:"wait",text:"text",move:"move",help:"help","not-allowed":"not-allowed",none:"none","context-menu":"context-menu",progress:"progress",cell:"cell",crosshair:"crosshair","vertical-text":"vertical-text",alias:"alias",copy:"copy","no-drop":"no-drop",grab:"grab",grabbing:"grabbing","all-scroll":"all-scroll","col-resize":"col-resize","row-resize":"row-resize","n-resize":"n-resize","e-resize":"e-resize","s-resize":"s-resize","w-resize":"w-resize","ne-resize":"ne-resize","nw-resize":"nw-resize","se-resize":"se-resize","sw-resize":"sw-resize","ew-resize":"ew-resize","ns-resize":"ns-resize","nesw-resize":"nesw-resize","nwse-resize":"nwse-resize","zoom-in":"zoom-in","zoom-out":"zoom-out"},divideColor:({theme:e})=>e("borderColor"),divideOpacity:({theme:e})=>e("borderOpacity"),divideWidth:({theme:e})=>({...e("borderWidth"),...$}),dropShadow:{sm:"0 1px 1px rgb(0 0 0 / 0.05)",DEFAULT:["0 1px 2px rgb(0 0 0 / 0.1)","0 1px 1px rgb(0 0 0 / 0.06)"],md:["0 4px 3px rgb(0 0 0 / 0.07)","0 2px 2px rgb(0 0 0 / 0.06)"],lg:["0 10px 8px rgb(0 0 0 / 0.04)","0 4px 3px rgb(0 0 0 / 0.1)"],xl:["0 20px 13px rgb(0 0 0 / 0.03)","0 8px 5px rgb(0 0 0 / 0.08)"],"2xl":"0 25px 25px rgb(0 0 0 / 0.15)",none:"0 0 #0000"},fill:({theme:e})=>e("colors"),flex:{1:"1 1 0%",auto:"1 1 auto",initial:"0 1 auto",none:"none"},flexBasis:({theme:e})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%","1/12":"8.333333%","2/12":"16.666667%","3/12":"25%","4/12":"33.333333%","5/12":"41.666667%","6/12":"50%","7/12":"58.333333%","8/12":"66.666667%","9/12":"75%","10/12":"83.333333%","11/12":"91.666667%",full:"100%",...e("spacing")}),flexGrow:{0:"0",DEFAULT:"1",...b},flexShrink:{0:"0",DEFAULT:"1",...b},fontFamily:{sans:["ui-sans-serif","system-ui","sans-serif",'"Apple Color Emoji"','"Segoe UI Emoji"','"Segoe UI Symbol"','"Noto Color Emoji"'],serif:["ui-serif","Georgia","Cambria",'"Times New Roman"',"Times","serif"],mono:["ui-monospace","SFMono-Regular","Menlo","Monaco","Consolas",'"Liberation Mono"','"Courier New"',"monospace"]},fontSize:{xs:["0.75rem",{lineHeight:"1rem"}],sm:["0.875rem",{lineHeight:"1.25rem"}],base:["1rem",{lineHeight:"1.5rem"}],lg:["1.125rem",{lineHeight:"1.75rem"}],xl:["1.25rem",{lineHeight:"1.75rem"}],"2xl":["1.5rem",{lineHeight:"2rem"}],"3xl":["1.875rem",{lineHeight:"2.25rem"}],"4xl":["2.25rem",{lineHeight:"2.5rem"}],"5xl":["3rem",{lineHeight:"1"}],"6xl":["3.75rem",{lineHeight:"1"}],"7xl":["4.5rem",{lineHeight:"1"}],"8xl":["6rem",{lineHeight:"1"}],"9xl":["8rem",{lineHeight:"1"}]},fontWeight:{thin:"100",extralight:"200",light:"300",normal:"400",medium:"500",semibold:"600",bold:"700",extrabold:"800",black:"900"},gap:({theme:e})=>e("spacing"),gradientColorStops:({theme:e})=>e("colors"),gradientColorStopPositions:{"0%":"0%","5%":"5%","10%":"10%","15%":"15%","20%":"20%","25%":"25%","30%":"30%","35%":"35%","40%":"40%","45%":"45%","50%":"50%","55%":"55%","60%":"60%","65%":"65%","70%":"70%","75%":"75%","80%":"80%","85%":"85%","90%":"90%","95%":"95%","100%":"100%",...m},grayscale:{0:"0",DEFAULT:"100%",...m},gridAutoColumns:{auto:"auto",min:"min-content",max:"max-content",fr:"minmax(0, 1fr)"},gridAutoRows:{auto:"auto",min:"min-content",max:"max-content",fr:"minmax(0, 1fr)"},gridColumn:{auto:"auto","span-1":"span 1 / span 1","span-2":"span 2 / span 2","span-3":"span 3 / span 3","span-4":"span 4 / span 4","span-5":"span 5 / span 5","span-6":"span 6 / span 6","span-7":"span 7 / span 7","span-8":"span 8 / span 8","span-9":"span 9 / span 9","span-10":"span 10 / span 10","span-11":"span 11 / span 11","span-12":"span 12 / span 12","span-full":"1 / -1"},gridColumnEnd:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13",...b},gridColumnStart:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13",...b},gridRow:{auto:"auto","span-1":"span 1 / span 1","span-2":"span 2 / span 2","span-3":"span 3 / span 3","span-4":"span 4 / span 4","span-5":"span 5 / span 5","span-6":"span 6 / span 6","span-7":"span 7 / span 7","span-8":"span 8 / span 8","span-9":"span 9 / span 9","span-10":"span 10 / span 10","span-11":"span 11 / span 11","span-12":"span 12 / span 12","span-full":"1 / -1"},gridRowEnd:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13",...b},gridRowStart:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13",...b},gridTemplateColumns:{none:"none",subgrid:"subgrid",1:"repeat(1, minmax(0, 1fr))",2:"repeat(2, minmax(0, 1fr))",3:"repeat(3, minmax(0, 1fr))",4:"repeat(4, minmax(0, 1fr))",5:"repeat(5, minmax(0, 1fr))",6:"repeat(6, minmax(0, 1fr))",7:"repeat(7, minmax(0, 1fr))",8:"repeat(8, minmax(0, 1fr))",9:"repeat(9, minmax(0, 1fr))",10:"repeat(10, minmax(0, 1fr))",11:"repeat(11, minmax(0, 1fr))",12:"repeat(12, minmax(0, 1fr))",...ke},gridTemplateRows:{none:"none",subgrid:"subgrid",1:"repeat(1, minmax(0, 1fr))",2:"repeat(2, minmax(0, 1fr))",3:"repeat(3, minmax(0, 1fr))",4:"repeat(4, minmax(0, 1fr))",5:"repeat(5, minmax(0, 1fr))",6:"repeat(6, minmax(0, 1fr))",7:"repeat(7, minmax(0, 1fr))",8:"repeat(8, minmax(0, 1fr))",9:"repeat(9, minmax(0, 1fr))",10:"repeat(10, minmax(0, 1fr))",11:"repeat(11, minmax(0, 1fr))",12:"repeat(12, minmax(0, 1fr))",...ke},height:({theme:e})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%",full:"100%",screen:"100vh",svh:"100svh",lvh:"100lvh",dvh:"100dvh",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),hueRotate:{0:"0deg",15:"15deg",30:"30deg",60:"60deg",90:"90deg",180:"180deg",...M},inset:({theme:e})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%",full:"100%",...e("spacing")}),invert:{0:"0",DEFAULT:"100%",...m},keyframes:{spin:{to:{transform:"rotate(360deg)"}},ping:{"75%, 100%":{transform:"scale(2)",opacity:"0"}},pulse:{"50%":{opacity:".5"}},bounce:{"0%, 100%":{transform:"translateY(-25%)",animationTimingFunction:"cubic-bezier(0.8,0,1,1)"},"50%":{transform:"none",animationTimingFunction:"cubic-bezier(0,0,0.2,1)"}}},letterSpacing:{tighter:"-0.05em",tight:"-0.025em",normal:"0em",wide:"0.025em",wider:"0.05em",widest:"0.1em"},lineHeight:{none:"1",tight:"1.25",snug:"1.375",normal:"1.5",relaxed:"1.625",loose:"2",3:".75rem",4:"1rem",5:"1.25rem",6:"1.5rem",7:"1.75rem",8:"2rem",9:"2.25rem",10:"2.5rem"},listStyleType:{none:"none",disc:"disc",decimal:"decimal"},listStyleImage:{none:"none"},margin:({theme:e})=>({auto:"auto",...e("spacing")}),lineClamp:{1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",...b},maxHeight:({theme:e})=>({none:"none",full:"100%",screen:"100vh",svh:"100svh",lvh:"100lvh",dvh:"100dvh",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),maxWidth:({theme:e})=>({none:"none",xs:"20rem",sm:"24rem",md:"28rem",lg:"32rem",xl:"36rem","2xl":"42rem","3xl":"48rem","4xl":"56rem","5xl":"64rem","6xl":"72rem","7xl":"80rem",full:"100%",min:"min-content",max:"max-content",fit:"fit-content",prose:"65ch",...e("spacing")}),minHeight:({theme:e})=>({full:"100%",screen:"100vh",svh:"100svh",lvh:"100lvh",dvh:"100dvh",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),minWidth:({theme:e})=>({full:"100%",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),objectPosition:{bottom:"bottom",center:"center",left:"left","left-bottom":"left bottom","left-top":"left top",right:"right","right-bottom":"right bottom","right-top":"right top",top:"top"},opacity:{0:"0",5:"0.05",10:"0.1",15:"0.15",20:"0.2",25:"0.25",30:"0.3",35:"0.35",40:"0.4",45:"0.45",50:"0.5",55:"0.55",60:"0.6",65:"0.65",70:"0.7",75:"0.75",80:"0.8",85:"0.85",90:"0.9",95:"0.95",100:"1",...m},order:{first:"-9999",last:"9999",none:"0",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",...b},outlineColor:({theme:e})=>e("colors"),outlineOffset:{0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...$},outlineWidth:{0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...$},padding:({theme:e})=>e("spacing"),placeholderColor:({theme:e})=>e("colors"),placeholderOpacity:({theme:e})=>e("opacity"),ringColor:({theme:e})=>({DEFAULT:"currentcolor",...e("colors")}),ringOffsetColor:({theme:e})=>e("colors"),ringOffsetWidth:{0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...$},ringOpacity:({theme:e})=>({DEFAULT:"0.5",...e("opacity")}),ringWidth:{DEFAULT:"3px",0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...$},rotate:{0:"0deg",1:"1deg",2:"2deg",3:"3deg",6:"6deg",12:"12deg",45:"45deg",90:"90deg",180:"180deg",...M},saturate:{0:"0",50:".5",100:"1",150:"1.5",200:"2",...m},scale:{0:"0",50:".5",75:".75",90:".9",95:".95",100:"1",105:"1.05",110:"1.1",125:"1.25",150:"1.5",...m},screens:{sm:"40rem",md:"48rem",lg:"64rem",xl:"80rem","2xl":"96rem"},scrollMargin:({theme:e})=>e("spacing"),scrollPadding:({theme:e})=>e("spacing"),sepia:{0:"0",DEFAULT:"100%",...m},skew:{0:"0deg",1:"1deg",2:"2deg",3:"3deg",6:"6deg",12:"12deg",...M},space:({theme:e})=>e("spacing"),spacing:{px:"1px",0:"0px",.5:"0.125rem",1:"0.25rem",1.5:"0.375rem",2:"0.5rem",2.5:"0.625rem",3:"0.75rem",3.5:"0.875rem",4:"1rem",5:"1.25rem",6:"1.5rem",7:"1.75rem",8:"2rem",9:"2.25rem",10:"2.5rem",11:"2.75rem",12:"3rem",14:"3.5rem",16:"4rem",20:"5rem",24:"6rem",28:"7rem",32:"8rem",36:"9rem",40:"10rem",44:"11rem",48:"12rem",52:"13rem",56:"14rem",60:"15rem",64:"16rem",72:"18rem",80:"20rem",96:"24rem"},stroke:({theme:e})=>({none:"none",...e("colors")}),strokeWidth:{0:"0",1:"1",2:"2",...b},supports:{},data:{},textColor:({theme:e})=>e("colors"),textDecorationColor:({theme:e})=>e("colors"),textDecorationThickness:{auto:"auto","from-font":"from-font",0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...$},textIndent:({theme:e})=>e("spacing"),textOpacity:({theme:e})=>e("opacity"),textUnderlineOffset:{auto:"auto",0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...$},transformOrigin:{center:"center",top:"top","top-right":"top right",right:"right","bottom-right":"bottom right",bottom:"bottom","bottom-left":"bottom left",left:"left","top-left":"top left"},transitionDelay:{0:"0s",75:"75ms",100:"100ms",150:"150ms",200:"200ms",300:"300ms",500:"500ms",700:"700ms",1e3:"1000ms",...ve},transitionDuration:{DEFAULT:"150ms",0:"0s",75:"75ms",100:"100ms",150:"150ms",200:"200ms",300:"300ms",500:"500ms",700:"700ms",1e3:"1000ms",...ve},transitionProperty:{none:"none",all:"all",DEFAULT:"color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter",colors:"color, background-color, border-color, outline-color, text-decoration-color, fill, stroke",opacity:"opacity",shadow:"box-shadow",transform:"transform"},transitionTimingFunction:{DEFAULT:"cubic-bezier(0.4, 0, 0.2, 1)",linear:"linear",in:"cubic-bezier(0.4, 0, 1, 1)",out:"cubic-bezier(0, 0, 0.2, 1)","in-out":"cubic-bezier(0.4, 0, 0.2, 1)"},translate:({theme:e})=>({"1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%",full:"100%",...e("spacing")}),size:({theme:e})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%","1/12":"8.333333%","2/12":"16.666667%","3/12":"25%","4/12":"33.333333%","5/12":"41.666667%","6/12":"50%","7/12":"58.333333%","8/12":"66.666667%","9/12":"75%","10/12":"83.333333%","11/12":"91.666667%",full:"100%",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),width:({theme:e})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%","1/12":"8.333333%","2/12":"16.666667%","3/12":"25%","4/12":"33.333333%","5/12":"41.666667%","6/12":"50%","7/12":"58.333333%","8/12":"66.666667%","9/12":"75%","10/12":"83.333333%","11/12":"91.666667%",full:"100%",screen:"100vw",svw:"100svw",lvw:"100lvw",dvw:"100dvw",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),willChange:{auto:"auto",scroll:"scroll-position",contents:"contents",transform:"transform"},zIndex:{auto:"auto",0:"0",10:"10",20:"20",30:"30",40:"40",50:"50",...b}};function F(e){let t={};for(let[n,r]of Object.entries(e??{}))if(n!=="__CSS_VALUES__")if(typeof r=="object"&&r!==null)for(let[o,i]of Object.entries(F(r)))t[`${n}${o==="DEFAULT"?"":`-${o}`}`]=i;else t[n]=r;if("__CSS_VALUES__"in e)for(let[n,r]of Object.entries(e.__CSS_VALUES__))(Number(r)&4)===0&&(t[n]=e[n]);return t}module.exports=F; diff --git a/node_modules/tailwindcss/dist/flatten-color-palette.mjs b/node_modules/tailwindcss/dist/flatten-color-palette.mjs new file mode 100644 index 00000000..11eceeac --- /dev/null +++ b/node_modules/tailwindcss/dist/flatten-color-palette.mjs @@ -0,0 +1 @@ +import"./chunk-3IR7ZFJX.mjs";import"./chunk-TDNFF6A4.mjs";import"./chunk-X4GG3EDV.mjs";function i(r){let n={};for(let[e,t]of Object.entries(r??{}))if(e!=="__CSS_VALUES__")if(typeof t=="object"&&t!==null)for(let[o,f]of Object.entries(i(t)))n[`${e}${o==="DEFAULT"?"":`-${o}`}`]=f;else n[e]=t;if("__CSS_VALUES__"in r)for(let[e,t]of Object.entries(r.__CSS_VALUES__))(Number(t)&4)===0&&(n[e]=r[e]);return n}export{i as default}; diff --git a/node_modules/tailwindcss/dist/lib.d.mts b/node_modules/tailwindcss/dist/lib.d.mts new file mode 100644 index 00000000..a8508839 --- /dev/null +++ b/node_modules/tailwindcss/dist/lib.d.mts @@ -0,0 +1,378 @@ +import { S as SourceLocation, U as UserConfig, P as Plugin } from './types-CJYAW1ql.mjs'; +import { V as Variant, C as Candidate } from './resolve-config-QUZ9b-Gn.mjs'; +import './colors.mjs'; + +declare const enum ThemeOptions { + NONE = 0, + INLINE = 1, + REFERENCE = 2, + DEFAULT = 4, + STATIC = 8, + USED = 16 +} +declare class Theme { + #private; + private values; + private keyframes; + prefix: string | null; + constructor(values?: Map, keyframes?: Set); + get size(): number; + add(key: string, value: string, options?: ThemeOptions, src?: Declaration['src']): void; + keysInNamespaces(themeKeys: Iterable): string[]; + get(themeKeys: ThemeKey[]): string | null; + hasDefault(key: string): boolean; + getOptions(key: string): ThemeOptions; + entries(): IterableIterator<[string, { + value: string; + options: ThemeOptions; + src: Declaration["src"]; + }]> | [string, { + value: string; + options: ThemeOptions; + src: Declaration["src"]; + }][]; + prefixKey(key: string): string; + clearNamespace(namespace: string, clearOptions: ThemeOptions): void; + markUsedVariable(themeKey: string): boolean; + resolve(candidateValue: string | null, themeKeys: ThemeKey[], options?: ThemeOptions): string | null; + resolveValue(candidateValue: string | null, themeKeys: ThemeKey[]): string | null; + resolveWith(candidateValue: string, themeKeys: ThemeKey[], nestedKeys?: `--${string}`[]): [string, Record] | null; + namespace(namespace: string): Map; + addKeyframes(value: AtRule): void; + getKeyframes(): AtRule[]; +} +type ThemeKey = `--${string}`; + +type VariantFn = (rule: Rule, variant: Extract) => null | void; +type CompareFn = (a: Variant, z: Variant) => number; +declare const enum Compounds { + Never = 0, + AtRules = 1, + StyleRules = 2 +} +declare class Variants { + compareFns: Map; + variants: Map; + compoundsWith: Compounds; + compounds: Compounds; + }>; + private completions; + /** + * Registering a group of variants should result in the same sort number for + * all the variants. This is to ensure that the variants are applied in the + * correct order. + */ + private groupOrder; + /** + * Keep track of the last sort order instead of using the size of the map to + * avoid unnecessarily skipping order numbers. + */ + private lastOrder; + static(name: string, applyFn: VariantFn<'static'>, { compounds, order }?: { + compounds?: Compounds; + order?: number; + }): void; + fromAst(name: string, ast: AstNode[], designSystem: DesignSystem): void; + functional(name: string, applyFn: VariantFn<'functional'>, { compounds, order }?: { + compounds?: Compounds; + order?: number; + }): void; + compound(name: string, compoundsWith: Compounds, applyFn: VariantFn<'compound'>, { compounds, order }?: { + compounds?: Compounds; + order?: number; + }): void; + group(fn: () => void, compareFn?: CompareFn): void; + has(name: string): boolean; + get(name: string): { + kind: Variant["kind"]; + order: number; + applyFn: VariantFn; + compoundsWith: Compounds; + compounds: Compounds; + } | undefined; + kind(name: string): "static" | "arbitrary" | "functional" | "compound"; + compoundsWith(parent: string, child: string | Variant): boolean; + suggest(name: string, suggestions: () => string[]): void; + getCompletions(name: string): string[]; + compare(a: Variant | null, z: Variant | null): number; + keys(): IterableIterator; + entries(): IterableIterator<[string, { + kind: Variant["kind"]; + order: number; + applyFn: VariantFn; + compoundsWith: Compounds; + compounds: Compounds; + }]>; + private set; + private nextOrder; +} + +declare function compileAstNodes(candidate: Candidate, designSystem: DesignSystem, flags: CompileAstFlags): { + node: AstNode; + propertySort: { + order: number[]; + count: number; + }; +}[]; + +interface CanonicalizeOptions { + /** + * The root font size in pixels. If provided, `rem` values will be normalized + * to `px` values. + * + * E.g.: `mt-[16px]` with `rem: 16` will become `mt-4` (assuming `--spacing: 0.25rem`). + */ + rem?: number; + /** + * Whether to collapse multiple utilities into a single utility if possible. + * + * E.g.: `mt-2 mr-2 mb-2 ml-2` → `m-2` + */ + collapse?: boolean; + /** + * Whether to convert between logical and physical properties when collapsing + * utilities. + * + * E.g.: `mr-2 ml-2` → `mx-2` + */ + logicalToPhysical?: boolean; +} + +interface ClassMetadata { + modifiers: string[]; +} +type ClassEntry = [string, ClassMetadata]; +interface SelectorOptions { + modifier?: string; + value?: string; +} +interface VariantEntry { + name: string; + isArbitrary: boolean; + values: string[]; + hasDash: boolean; + selectors: (options: SelectorOptions) => string[]; +} + +type CompileFn = (value: Extract) => AstNode[] | undefined | null; +interface SuggestionGroup { + supportsNegative?: boolean; + values: (string | null)[]; + modifiers: string[]; +} +type UtilityOptions = { + types: string[]; +}; +type Utility = { + kind: 'static' | 'functional'; + compileFn: CompileFn; + options?: UtilityOptions; +}; +declare class Utilities { + private utilities; + private completions; + static(name: string, compileFn: CompileFn<'static'>): void; + functional(name: string, compileFn: CompileFn<'functional'>, options?: UtilityOptions): void; + has(name: string, kind: 'static' | 'functional'): boolean; + get(name: string): Utility[]; + getCompletions(name: string): SuggestionGroup[]; + suggest(name: string, groups: () => SuggestionGroup[]): void; + keys(kind: 'static' | 'functional'): string[]; +} + +declare const enum CompileAstFlags { + None = 0, + RespectImportant = 1 +} +type DesignSystem = { + theme: Theme; + utilities: Utilities; + variants: Variants; + invalidCandidates: Set; + important: boolean; + getClassOrder(classes: string[]): [string, bigint | null][]; + getClassList(): ClassEntry[]; + getVariants(): VariantEntry[]; + parseCandidate(candidate: string): Readonly[]; + parseVariant(variant: string): Readonly | null; + compileAstNodes(candidate: Candidate, flags?: CompileAstFlags): ReturnType; + printCandidate(candidate: Candidate): string; + printVariant(variant: Variant): string; + getVariantOrder(): Map; + resolveThemeValue(path: string, forceInline?: boolean): string | undefined; + trackUsedVariables(raw: string): void; + canonicalizeCandidates(candidates: string[], options?: CanonicalizeOptions): string[]; + candidatesToCss(classes: string[]): (string | null)[]; + candidatesToAst(classes: string[]): AstNode[][]; + storage: Record; +}; + +type StyleRule = { + kind: 'rule'; + selector: string; + nodes: AstNode[]; + src?: SourceLocation; + dst?: SourceLocation; +}; +type AtRule = { + kind: 'at-rule'; + name: string; + params: string; + nodes: AstNode[]; + src?: SourceLocation; + dst?: SourceLocation; +}; +type Declaration = { + kind: 'declaration'; + property: string; + value: string | undefined; + important: boolean; + src?: SourceLocation; + dst?: SourceLocation; +}; +type Comment = { + kind: 'comment'; + value: string; + src?: SourceLocation; + dst?: SourceLocation; +}; +type Context = { + kind: 'context'; + context: Record; + nodes: AstNode[]; + src?: undefined; + dst?: undefined; +}; +type AtRoot = { + kind: 'at-root'; + nodes: AstNode[]; + src?: undefined; + dst?: undefined; +}; +type Rule = StyleRule | AtRule; +type AstNode = StyleRule | AtRule | Declaration | Comment | Context | AtRoot; + +/** + * Line offset tables are the key to generating our source maps. They allow us + * to store indexes with our AST nodes and later convert them into positions as + * when given the source that the indexes refer to. + */ +/** + * A position in source code + * + * https://tc39.es/ecma426/#sec-position-record-type + */ +interface Position { + /** The line number, one-based */ + line: number; + /** The column/character number, one-based */ + column: number; +} + +interface OriginalPosition extends Position { + source: DecodedSource; +} +/** + * A "decoded" sourcemap + * + * @see https://tc39.es/ecma426/#decoded-source-map-record + */ +interface DecodedSourceMap { + file: string | null; + sources: DecodedSource[]; + mappings: DecodedMapping[]; +} +/** + * A "decoded" source + * + * @see https://tc39.es/ecma426/#decoded-source-record + */ +interface DecodedSource { + url: string | null; + content: string | null; + ignore: boolean; +} +/** + * A "decoded" mapping + * + * @see https://tc39.es/ecma426/#decoded-mapping-record + */ +interface DecodedMapping { + originalPosition: OriginalPosition | null; + generatedPosition: Position; + name: string | null; +} + +type Config = UserConfig; +declare const enum Polyfills { + None = 0, + AtProperty = 1, + ColorMix = 2, + All = 3 +} +type CompileOptions = { + base?: string; + from?: string; + polyfills?: Polyfills; + loadModule?: (id: string, base: string, resourceHint: 'plugin' | 'config') => Promise<{ + path: string; + base: string; + module: Plugin | Config; + }>; + loadStylesheet?: (id: string, base: string) => Promise<{ + path: string; + base: string; + content: string; + }>; +}; +type Root = null | 'none' | { + base: string; + pattern: string; +}; +declare const enum Features { + None = 0, + AtApply = 1, + AtImport = 2, + JsPluginCompat = 4, + ThemeFunction = 8, + Utilities = 16, + Variants = 32, + AtTheme = 64 +} +declare function compileAst(input: AstNode[], opts?: CompileOptions): Promise<{ + sources: { + base: string; + pattern: string; + negated: boolean; + }[]; + root: Root; + features: Features; + build(candidates: string[]): AstNode[]; +}>; + +declare function compile(css: string, opts?: CompileOptions): Promise<{ + sources: { + base: string; + pattern: string; + negated: boolean; + }[]; + root: Root; + features: Features; + build(candidates: string[]): string; + buildSourceMap(): DecodedSourceMap; +}>; +declare function __unstable__loadDesignSystem(css: string, opts?: CompileOptions): Promise; +declare function postcssPluginWarning(): void; + +export { type Config, type DecodedSourceMap, Features, Polyfills, __unstable__loadDesignSystem, compile, compileAst, postcssPluginWarning as default }; diff --git a/node_modules/tailwindcss/dist/lib.d.ts b/node_modules/tailwindcss/dist/lib.d.ts new file mode 100644 index 00000000..411ce060 --- /dev/null +++ b/node_modules/tailwindcss/dist/lib.d.ts @@ -0,0 +1,3 @@ +declare function postcssPluginWarning(): void; + +export { postcssPluginWarning as default }; diff --git a/node_modules/tailwindcss/dist/lib.js b/node_modules/tailwindcss/dist/lib.js new file mode 100644 index 00000000..505afdef --- /dev/null +++ b/node_modules/tailwindcss/dist/lib.js @@ -0,0 +1,38 @@ +"use strict";var wn=Object.defineProperty;var bn=(e,r)=>{for(var i in r)wn(e,i,{get:r[i],enumerable:!0})};var Kt={};bn(Kt,{Features:()=>Ie,Polyfills:()=>bt,__unstable__loadDesignSystem:()=>pa,compile:()=>fa,compileAst:()=>kn,default:()=>ft});var wr="4.2.4";function pt(e){let r=[0];for(let n=0;n0;){let u=(o|0)>>1,c=a+u;r[c]<=n?(a=c+1,o=o-u-1):o=u}a-=1;let f=n-r[a];return{line:a+1,column:f}}function t({line:n,column:a}){n-=1,n=Math.min(Math.max(n,0),r.length-1);let o=r[n],f=r[n+1]??o;return Math.min(Math.max(o+a,0),f)}return{find:i,findOffset:t}}var Qe=92,dt=47,mt=42,br=34,yr=39,xn=58,gt=59,fe=10,ht=13,Je=32,Xe=9,xr=123,jt=125,Bt=40,Ar=41,An=91,Cn=93,Cr=45,Ft=64,Sn=33,pe=class e extends Error{loc;constructor(r,i){if(i){let t=i[0],n=pt(t.code).find(i[1]);r=`${t.file}:${n.line}:${n.column+1}: ${r}`}super(r),this.name="CssSyntaxError",this.loc=i,Error.captureStackTrace&&Error.captureStackTrace(this,e)}};function Oe(e,r){let i=r?.from?{file:r.from,code:e}:null;e[0]==="\uFEFF"&&(e=" "+e.slice(1));let t=[],n=[],a=[],o=null,f=null,u="",c="",m=0,d;for(let p=0;p0&&e[A]===h[h.length-1]&&(h=h.slice(0,-1));let V=Wt(u,y);if(!V)throw new pe("Invalid custom property, expected a value",i?[i,w,p]:null);i&&(V.src=[i,w,p],V.dst=[i,w,p]),o?o.nodes.push(V):t.push(V),u=""}else if(v===gt&&u.charCodeAt(0)===Ft)f=et(u),i&&(f.src=[i,m,p],f.dst=[i,m,p]),o?o.nodes.push(f):t.push(f),u="",f=null;else if(v===gt&&c[c.length-1]!==")"){let h=Wt(u);if(!h){if(u.length===0)continue;throw new pe(`Invalid declaration: \`${u.trim()}\``,i?[i,m,p]:null)}i&&(h.src=[i,m,p],h.dst=[i,m,p]),o?o.nodes.push(h):t.push(h),u=""}else if(v===xr&&c[c.length-1]!==")")c+="}",f=Z(u.trim()),i&&(f.src=[i,m,p],f.dst=[i,m,p]),o&&o.nodes.push(f),a.push(o),o=f,u="",f=null;else if(v===jt&&c[c.length-1]!==")"){if(c==="")throw new pe("Missing opening {",i?[i,p,p]:null);if(c=c.slice(0,-1),u.length>0)if(u.charCodeAt(0)===Ft)f=et(u),i&&(f.src=[i,m,p],f.dst=[i,m,p]),o?o.nodes.push(f):t.push(f),u="",f=null;else{let w=u.indexOf(":");if(o){let y=Wt(u,w);if(!y)throw new pe(`Invalid declaration: \`${u.trim()}\``,i?[i,m,p]:null);i&&(y.src=[i,m,p],y.dst=[i,m,p]),o.nodes.push(y)}}let h=a.pop()??null;h===null&&o&&t.push(o),o=h,u="",f=null}else if(v===Bt)c+=")",u+="(";else if(v===Ar){if(c[c.length-1]!==")")throw new pe("Missing opening (",i?[i,p,p]:null);c=c.slice(0,-1),u+=")"}else{if(u.length===0&&(v===Je||v===fe||v===Xe))continue;u===""&&(m=p),u+=String.fromCharCode(v)}}}if(u.charCodeAt(0)===Ft){let p=et(u);i&&(p.src=[i,m,e.length],p.dst=[i,m,e.length]),t.push(p)}if(c.length>0&&o){if(o.kind==="rule")throw new pe(`Missing closing } at ${o.selector}`,o.src?[o.src[0],o.src[1],o.src[1]]:null);if(o.kind==="at-rule")throw new pe(`Missing closing } at ${o.name} ${o.params}`,o.src?[o.src[0],o.src[1],o.src[1]]:null)}return n.length>0?n.concat(t):t}function et(e,r=[]){let i=e,t="";for(let n=5;n=1&&n<=31||n===127||t===0&&n>=48&&n<=57||t===1&&n>=48&&n<=57&&o===45){a+="\\"+n.toString(16)+" ";continue}if(n>=128||n===45||n===95||n>=48&&n<=57||n>=65&&n<=90||n>=97&&n<=122){a+=r.charAt(t);continue}a+="\\"+r.charAt(t)}return a}function ye(e){return e.replace(/\\([\dA-Fa-f]{1,6}[\t\n\f\r ]?|[\S\s])/g,r=>{if(r.length<=2)return r[1];let i=Number.parseInt(r.slice(1).trim(),16);return i===0||i>1114111||i>=55296&&i<=57343?"\uFFFD":String.fromCodePoint(i)})}var Tr=new Map([["--font",["--font-weight","--font-size"]],["--inset",["--inset-shadow","--inset-ring"]],["--text",["--text-color","--text-decoration-color","--text-decoration-thickness","--text-indent","--text-shadow","--text-underline-offset"]],["--grid-column",["--grid-column-start","--grid-column-end"]],["--grid-row",["--grid-row-start","--grid-row-end"]]]);function $r(e,r){return(Tr.get(r)??[]).some(i=>e===i||e.startsWith(`${i}-`))}var kt=class{constructor(r=new Map,i=new Set([])){this.values=r;this.keyframes=i}prefix=null;get size(){return this.values.size}add(r,i,t=0,n){if(r.endsWith("-*")){if(i!=="initial")throw new Error(`Invalid theme value \`${i}\` for namespace \`${r}\``);r==="--*"?this.values.clear():this.clearNamespace(r.slice(0,-2),0)}if(t&4){let a=this.values.get(r);if(a&&!(a.options&4))return}i==="initial"?this.values.delete(r):this.values.set(r,{value:i,options:t,src:n})}keysInNamespaces(r){let i=[];for(let t of r){let n=`${t}-`;for(let a of this.values.keys())a.startsWith(n)&&a.indexOf("--",2)===-1&&($r(a,t)||i.push(a.slice(n.length)))}return i}get(r){for(let i of r){let t=this.values.get(i);if(t)return t.value}return null}hasDefault(r){return(this.getOptions(r)&4)===4}getOptions(r){return r=ye(this.#r(r)),this.values.get(r)?.options??0}entries(){return this.prefix?Array.from(this.values,r=>(r[0]=this.prefixKey(r[0]),r)):this.values.entries()}prefixKey(r){return this.prefix?`--${this.prefix}-${r.slice(2)}`:r}#r(r){return this.prefix?`--${r.slice(3+this.prefix.length)}`:r}clearNamespace(r,i){let t=Tr.get(r)??[];e:for(let n of this.values.keys())if(n.startsWith(r)){if(i!==0&&(this.getOptions(n)&i)!==i)continue;for(let a of t)if(n.startsWith(a))continue e;this.values.delete(n)}}#e(r,i){for(let t of i){let n=r!==null?`${t}-${r}`:t;if(!this.values.has(n))if(r!==null&&r.includes(".")){if(n=`${t}-${r.replaceAll(".","_")}`,!this.values.has(n))continue}else continue;if(!$r(n,t))return n}return null}#t(r){let i=this.values.get(r);if(!i)return null;let t=null;return i.options&2&&(t=i.value),`var(${Se(this.prefixKey(r))}${t?`, ${t}`:""})`}markUsedVariable(r){let i=ye(this.#r(r)),t=this.values.get(i);if(!t)return!1;let n=t.options&16;return t.options|=16,!n}resolve(r,i,t=0){let n=this.#e(r,i);if(!n)return null;let a=this.values.get(n);return(t|a.options)&1?a.value:this.#t(n)}resolveValue(r,i){let t=this.#e(r,i);return t?this.values.get(t).value:null}resolveWith(r,i,t=[]){let n=this.#e(r,i);if(!n)return null;let a={};for(let f of t){let u=`${n}${f}`,c=this.values.get(u);c&&(c.options&1?a[f]=c.value:a[f]=this.#t(u))}let o=this.values.get(n);return o.options&1?[o.value,a]:[this.#t(n),a]}namespace(r){let i=new Map,t=`${r}-`;for(let[n,a]of this.values)n===r?i.set(null,a.value):n.startsWith(`${t}-`)?i.set(n.slice(r.length),a.value):n.startsWith(t)&&i.set(n.slice(t.length),a.value);return i}addKeyframes(r){this.keyframes.add(r)}getKeyframes(){return Array.from(this.keyframes)}};var z=class extends Map{constructor(i){super();this.factory=i}get(i){let t=super.get(i);return t===void 0&&(t=this.factory(i,this),this.set(i,t)),t}};function oe(e){return{kind:"word",value:e}}function $n(e,r){return{kind:"function",value:e,nodes:r}}function Tn(e){return{kind:"separator",value:e}}function Y(e){let r="";for(let i of e)switch(i.kind){case"word":case"separator":{r+=i.value;break}case"function":r+=i.value+"("+Y(i.nodes)+")"}return r}var Vr=92,Vn=41,Er=58,Nr=44,En=34,Rr=61,Or=62,Pr=60,_r=10,Nn=40,Rn=39,On=47,Ir=32,Dr=9;function F(e){e=e.replaceAll(`\r +`,` +`);let r=[],i=[],t=null,n="",a;for(let o=0;o0){let c=oe(n);t?t.nodes.push(c):r.push(c),n=""}let u=oe(e[o]);t?t.nodes.push(u):r.push(u);break}case Er:case Nr:case Rr:case Or:case Pr:case _r:case Ir:case Dr:{if(n.length>0){let d=oe(n);t?t.nodes.push(d):r.push(d),n=""}let u=o,c=o+1;for(;c0){let c=oe(n);u?.nodes.push(c),n=""}i.length>0?t=i[i.length-1]:t=null;break}default:n+=String.fromCharCode(f)}}return n.length>0&&r.push(oe(n)),r}var qt=(o=>(o[o.Continue=0]="Continue",o[o.Skip=1]="Skip",o[o.Stop=2]="Stop",o[o.Replace=3]="Replace",o[o.ReplaceSkip=4]="ReplaceSkip",o[o.ReplaceStop=5]="ReplaceStop",o))(qt||{}),R={Continue:{kind:0},Skip:{kind:1},Stop:{kind:2},Replace:e=>({kind:3,nodes:Array.isArray(e)?e:[e]}),ReplaceSkip:e=>({kind:4,nodes:Array.isArray(e)?e:[e]}),ReplaceStop:e=>({kind:5,nodes:Array.isArray(e)?e:[e]})};function I(e,r){typeof r=="function"?Ur(e,r):Ur(e,r.enter,r.exit)}function Ur(e,r=()=>R.Continue,i=()=>R.Continue){let t={value:[e,0,null],prev:null},n={parent:null,depth:0,path(){let a=[],o=t;for(;o;){let f=o.value[2];f&&a.push(f),o=o.prev}return a.reverse(),a}};for(;t!==null;){let a=t.value,o=a[0],f=a[1],u=a[2];if(f>=o.length){t=t.prev,n.depth-=1;continue}if(n.parent=u,f>=0){let p=o[f],v=r(p,n)??R.Continue;switch(v.kind){case 0:{p.nodes&&p.nodes.length>0&&(n.depth+=1,t={value:[p.nodes,0,p],prev:t}),a[1]=~f;continue}case 2:return;case 1:{a[1]=~f;continue}case 3:{o.splice(f,1,...v.nodes);continue}case 5:{o.splice(f,1,...v.nodes);return}case 4:{o.splice(f,1,...v.nodes),a[1]+=v.nodes.length;continue}default:throw new Error(`Invalid \`WalkAction.${qt[v.kind]??`Unknown(${v.kind})`}\` in enter.`)}}let c=~f,m=o[c],d=i(m,n)??R.Continue;switch(d.kind){case 0:a[1]=c+1;continue;case 2:return;case 3:{o.splice(c,1,...d.nodes),a[1]=c+d.nodes.length;continue}case 5:{o.splice(c,1,...d.nodes);return}case 4:{o.splice(c,1,...d.nodes),a[1]=c+d.nodes.length;continue}default:throw new Error(`Invalid \`WalkAction.${qt[d.kind]??`Unknown(${d.kind})`}\` in exit.`)}}}function wt(e){let r=[];return I(F(e),i=>{if(!(i.kind!=="function"||i.value!=="var"))return I(i.nodes,t=>{t.kind!=="word"||t.value[0]!=="-"||t.value[1]!=="-"||r.push(t.value)}),R.Skip}),r}var Pn=64;function G(e,r=[]){return{kind:"rule",selector:e,nodes:r}}function W(e,r="",i=[]){return{kind:"at-rule",name:e,params:r,nodes:i}}function Z(e,r=[]){return e.charCodeAt(0)===Pn?et(e,r):G(e,r)}function l(e,r,i=!1){return{kind:"declaration",property:e,value:r,important:i}}function vt(e){return{kind:"comment",value:e}}function ve(e,r){return{kind:"context",context:e,nodes:r}}function B(e){return{kind:"at-root",nodes:e}}function te(e){switch(e.kind){case"rule":return{kind:e.kind,selector:e.selector,nodes:e.nodes.map(te),src:e.src,dst:e.dst};case"at-rule":return{kind:e.kind,name:e.name,params:e.params,nodes:e.nodes.map(te),src:e.src,dst:e.dst};case"at-root":return{kind:e.kind,nodes:e.nodes.map(te),src:e.src,dst:e.dst};case"context":return{kind:e.kind,context:{...e.context},nodes:e.nodes.map(te),src:e.src,dst:e.dst};case"declaration":return{kind:e.kind,property:e.property,value:e.value,important:e.important,src:e.src,dst:e.dst};case"comment":return{kind:e.kind,value:e.value,src:e.src,dst:e.dst};default:throw new Error(`Unknown node kind: ${e.kind}`)}}function rt(e){return{depth:e.depth,get context(){let r={};for(let i of e.path())i.kind==="context"&&Object.assign(r,i.context);return Object.defineProperty(this,"context",{value:r}),r},get parent(){let r=this.path().pop()??null;return Object.defineProperty(this,"parent",{value:r}),r},path(){return e.path().filter(r=>r.kind!=="context")}}}function Pe(e,r,i=3){let t=[],n=new Set,a=new z(()=>new Set),o=new z(()=>new Set),f=new Set,u=new Set,c=[],m=[],d=new z(()=>new Set);function p(h,w,y={},V=0){if(h.kind==="declaration"){if(h.property==="--tw-sort"||h.value===void 0||h.value===null)return;if(y.theme&&h.property[0]==="-"&&h.property[1]==="-"){if(h.value==="initial"){h.value=void 0;return}y.keyframes||a.get(w).add(h)}if(h.value.includes("var("))if(y.theme&&h.property[0]==="-"&&h.property[1]==="-")for(let A of wt(h.value))d.get(A).add(h.property);else r.trackUsedVariables(h.value);if(h.property==="animation")for(let A of Lr(h.value))u.add(A);i&2&&h.value.includes("color-mix(")&&!y.supportsColorMix&&!y.keyframes&&o.get(w).add(h),w.push(h)}else if(h.kind==="rule"){let A=[];for(let E of h.nodes)p(E,A,y,V+1);let b={},D=new Set;for(let E of A){if(E.kind!=="declaration")continue;let N=`${E.property}:${E.value}:${E.important}`;b[N]??=[],b[N].push(E)}for(let E in b)for(let N=0;N0&&(A=A.filter(E=>!D.has(E))),A.length===0)return;h.selector==="&"?w.push(...A):w.push({...h,nodes:A})}else if(h.kind==="at-rule"&&h.name==="@property"&&V===0){if(n.has(h.params))return;if(i&1){let b=h.params,D=null,E=!1;for(let L of h.nodes)L.kind==="declaration"&&(L.property==="initial-value"?D=L.value:L.property==="inherits"&&(E=L.value==="true"));let N=l(b,D??"initial");N.src=h.src,E?c.push(N):m.push(N)}n.add(h.params);let A={...h,nodes:[]};for(let b of h.nodes)p(b,A.nodes,y,V+1);w.push(A)}else if(h.kind==="at-rule"){h.name==="@keyframes"?y={...y,keyframes:!0}:h.name==="@supports"&&h.params.includes("color-mix(")&&(y={...y,supportsColorMix:!0});let A={...h,nodes:[]};for(let b of h.nodes)p(b,A.nodes,y,V+1);h.name==="@keyframes"&&y.theme&&f.add(A),(A.nodes.length>0||A.name==="@layer"||A.name==="@charset"||A.name==="@custom-media"||A.name==="@namespace"||A.name==="@import")&&w.push(A)}else if(h.kind==="at-root")for(let A of h.nodes){let b=[];p(A,b,y,0);for(let D of b)t.push(D)}else if(h.kind==="context"){if(h.context.reference)return;for(let A of h.nodes)p(A,w,{...y,...h.context},V)}else h.kind==="comment"&&w.push(h)}let v=[];for(let h of e)p(h,v,{},0);e:for(let[h,w]of a)for(let y of w){if(zr(y.property,r.theme,d)){if(y.property.startsWith(r.theme.prefixKey("--animate-")))for(let b of Lr(y.value))u.add(b);continue}let A=h.indexOf(y);if(h.splice(A,1),h.length===0){let b=_n(v,D=>D.kind==="rule"&&D.nodes===h);if(!b||b.length===0)continue e;b.unshift({kind:"at-root",nodes:v});do{let D=b.pop();if(!D)break;let E=b[b.length-1];if(!E||E.kind!=="at-root"&&E.kind!=="at-rule")break;let N=E.nodes.indexOf(D);if(N===-1)break;E.nodes.splice(N,1)}while(!0);continue e}}for(let h of f)if(!u.has(h.params)){let w=t.indexOf(h);t.splice(w,1)}if(v=v.concat(t),i&2)for(let[h,w]of o)for(let y of w){let V=h.indexOf(y);if(V===-1||y.value==null)continue;let A=F(y.value),b=!1;if(I(A,N=>{if(N.kind!=="function"||N.value!=="color-mix")return;let L=!1,_=!1;if(I(N.nodes,M=>{if(M.kind=="word"&&M.value.toLowerCase()==="currentcolor"){_=!0,b=!0;return}let q=M,H=null,ue=new Set;do{if(q.kind!=="function"||q.value!=="var")return;let ce=q.nodes[0];if(!ce||ce.kind!=="word")return;let s=ce.value;if(ue.has(s)){L=!0;return}if(ue.add(s),b=!0,H=r.theme.resolveValue(null,[ce.value]),!H){L=!0;return}if(H.toLowerCase()==="currentcolor"){_=!0;return}H.startsWith("var(")?q=F(H)[0]:q=null}while(q);return R.Replace({kind:"word",value:H})}),L||_){let M=N.nodes.findIndex(H=>H.kind==="separator"&&H.value.trim().includes(","));if(M===-1)return;let q=N.nodes.length>M?N.nodes[M+1]:null;return q?R.Replace(q):void 0}else if(b){let M=N.nodes[2];M.kind==="word"&&(M.value==="oklab"||M.value==="oklch"||M.value==="lab"||M.value==="lch")&&(M.value="srgb")}}),!b)continue;let D={...y,value:Y(A)},E=Z("@supports (color: color-mix(in lab, red, red))",[y]);E.src=y.src,h.splice(V,1,D,E)}if(i&1){let h=[];if(c.length>0){let w=Z(":root, :host",c);w.src=c[0].src,h.push(w)}if(m.length>0){let w=Z("*, ::before, ::after, ::backdrop",m);w.src=m[0].src,h.push(w)}if(h.length>0){let w=v.findIndex(A=>!(A.kind==="comment"||A.kind==="at-rule"&&(A.name==="@charset"||A.name==="@import"))),y=W("@layer","properties",[]);y.src=h[0].src,v.splice(w<0?v.length:w,0,y);let V=Z("@layer properties",[W("@supports","((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b))))",h)]);V.src=h[0].src,V.nodes[0].src=h[0].src,v.push(V)}}return v}function ne(e,r){let i=0,t={file:null,code:""};function n(o,f=0){let u="",c=" ".repeat(f);if(o.kind==="declaration"){if(u+=`${c}${o.property}: ${o.value}${o.important?" !important":""}; +`,r){i+=c.length;let m=i;i+=o.property.length,i+=2,i+=o.value?.length??0,o.important&&(i+=11);let d=i;i+=2,o.dst=[t,m,d]}}else if(o.kind==="rule"){if(u+=`${c}${o.selector} { +`,r){i+=c.length;let m=i;i+=o.selector.length,i+=1;let d=i;o.dst=[t,m,d],i+=2}for(let m of o.nodes)u+=n(m,f+1);u+=`${c}} +`,r&&(i+=c.length,i+=2)}else if(o.kind==="at-rule"){if(o.nodes.length===0){let m=`${c}${o.name} ${o.params}; +`;if(r){i+=c.length;let d=i;i+=o.name.length,i+=1,i+=o.params.length;let p=i;i+=2,o.dst=[t,d,p]}return m}if(u+=`${c}${o.name}${o.params?` ${o.params} `:" "}{ +`,r){i+=c.length;let m=i;i+=o.name.length,o.params&&(i+=1,i+=o.params.length),i+=1;let d=i;o.dst=[t,m,d],i+=2}for(let m of o.nodes)u+=n(m,f+1);u+=`${c}} +`,r&&(i+=c.length,i+=2)}else if(o.kind==="comment"){if(u+=`${c}/*${o.value}*/ +`,r){i+=c.length;let m=i;i+=2+o.value.length+2;let d=i;o.dst=[t,m,d],i+=1}}else if(o.kind==="context"||o.kind==="at-root")return"";return u}let a="";for(let o of e)a+=n(o,0);return t.code=a,a}function _n(e,r){let i=[];return I(e,(t,n)=>{if(r(t))return i=n.path(),i.push(t),R.Stop}),i}function zr(e,r,i,t=new Set){if(t.has(e)||(t.add(e),r.getOptions(e)&24))return!0;{let a=i.get(e)??[];for(let o of a)if(zr(o,r,i,t))return!0}return!1}function Lr(e){return e.split(/[\s,]+/)}var Gt=["calc","min","max","clamp","mod","rem","sin","cos","tan","asin","acos","atan","atan2","pow","sqrt","hypot","log","exp","round"];function it(e){return e.indexOf("(")!==-1&&Gt.some(r=>e.includes(`${r}(`))}function Kr(e){if(!Gt.some(a=>e.includes(a)))return e;let r="",i=[],t=null,n=null;for(let a=0;a=48&&o<=57||t!==null&&(o===37||o>=97&&o<=122||o>=65&&o<=90)?t=a:(n=t,t=null),o===40){r+=e[a];let f=a;for(let c=a-1;c>=0;c--){let m=e.charCodeAt(c);if(m>=48&&m<=57)f=c;else if(m>=97&&m<=122)f=c;else break}let u=e.slice(f,a);if(Gt.includes(u)){i.unshift(!0);continue}else if(i[0]&&u===""){i.unshift(!0);continue}i.unshift(!1);continue}else if(o===41)r+=e[a],i.shift();else if(o===44&&i[0]){r+=", ";continue}else{if(o===32&&i[0]&&r.charCodeAt(r.length-1)===32)continue;if((o===43||o===42||o===47||o===45)&&i[0]){let f=r.trimEnd(),u=f.charCodeAt(f.length-1),c=f.charCodeAt(f.length-2),m=e.charCodeAt(a+1);if((u===101||u===69)&&c>=48&&c<=57){r+=e[a];continue}else if(u===43||u===42||u===47||u===45){r+=e[a];continue}else if(u===40||u===44){r+=e[a];continue}else e.charCodeAt(a-1)===32?r+=`${e[a]} `:u>=48&&u<=57||m>=48&&m<=57||u===41||m===40||m===43||m===42||m===47||m===45||n!==null&&n===a-1?r+=` ${e[a]} `:r+=e[a]}else r+=e[a]}}return r}function $e(e){if(e.indexOf("(")===-1)return Me(e);let r=F(e);return Ht(r),e=Y(r),e=Kr(e),e}function Me(e,r=!1){let i="";for(let t=0;t0&&n===Zt[r-1]&&r--;break;case 59:if(r===0)return!1;break}}return!0}var yt=new Uint8Array(256);function K(e,r){let i=0,t=[],n=0,a=e.length,o=r.charCodeAt(0);for(let f=0;f0&&u===yt[i-1]&&i--;break}}return t.push(e.slice(n)),t}var Dn=58,Mr=45,jr=97,Fr=122,Xt=/^[a-zA-Z0-9_.%-]+$/;function Fe(e){switch(e.kind){case"arbitrary":return{kind:e.kind,property:e.property,value:e.value,modifier:e.modifier?{kind:e.modifier.kind,value:e.modifier.value}:null,variants:e.variants.map(je),important:e.important,raw:e.raw};case"static":return{kind:e.kind,root:e.root,variants:e.variants.map(je),important:e.important,raw:e.raw};case"functional":return{kind:e.kind,root:e.root,value:e.value?e.value.kind==="arbitrary"?{kind:e.value.kind,dataType:e.value.dataType,value:e.value.value}:{kind:e.value.kind,value:e.value.value,fraction:e.value.fraction}:null,modifier:e.modifier?{kind:e.modifier.kind,value:e.modifier.value}:null,variants:e.variants.map(je),important:e.important,raw:e.raw};default:throw new Error("Unknown candidate kind")}}function je(e){switch(e.kind){case"arbitrary":return{kind:e.kind,selector:e.selector,relative:e.relative};case"static":return{kind:e.kind,root:e.root};case"functional":return{kind:e.kind,root:e.root,value:e.value?{kind:e.value.kind,value:e.value.value}:null,modifier:e.modifier?{kind:e.modifier.kind,value:e.modifier.value}:null};case"compound":return{kind:e.kind,root:e.root,variant:je(e.variant),modifier:e.modifier?{kind:e.modifier.kind,value:e.modifier.value}:null};default:throw new Error("Unknown variant kind")}}function*Wr(e,r){let i=K(e,":");if(r.theme.prefix){if(i.length===1||i[0]!==r.theme.prefix)return null;i.shift()}let t=i.pop(),n=[];for(let d=i.length-1;d>=0;--d){let p=r.parseVariant(i[d]);if(p===null)return;n.push(p)}let a=!1;t[t.length-1]==="!"?(a=!0,t=t.slice(0,-1)):t[0]==="!"&&(a=!0,t=t.slice(1)),r.utilities.has(t,"static")&&!t.includes("[")&&(yield{kind:"static",root:t,variants:n,important:a,raw:e});let[o,f=null,u]=K(t,"/");if(u)return;let c=f===null?null:Qt(f);if(f!==null&&c===null)return;if(o[0]==="["){if(o[o.length-1]!=="]")return;let d=o.charCodeAt(1);if(d!==Mr&&!(d>=jr&&d<=Fr))return;o=o.slice(1,-1);let p=o.indexOf(":");if(p===-1||p===0||p===o.length-1)return;let v=o.slice(0,p),h=$e(o.slice(p+1));if(!xe(h))return;yield{kind:"arbitrary",property:v,value:h,modifier:c,variants:n,important:a,raw:e};return}let m;if(o[o.length-1]==="]"){let d=o.indexOf("-[");if(d===-1)return;let p=o.slice(0,d);if(!r.utilities.has(p,"functional"))return;let v=o.slice(d+1);m=[[p,v]]}else if(o[o.length-1]===")"){let d=o.indexOf("-(");if(d===-1)return;let p=o.slice(0,d);if(!r.utilities.has(p,"functional"))return;let v=o.slice(d+2,-1),h=K(v,":"),w=null;if(h.length===2&&(w=h[0],v=h[1]),v[0]!=="-"||v[1]!=="-"||!xe(v))return;m=[[p,w===null?`[var(${v})]`:`[${w}:var(${v})]`]]}else m=Yr(o,d=>r.utilities.has(d,"functional"));for(let[d,p]of m){let v={kind:"functional",root:d,modifier:c,value:null,variants:n,important:a,raw:e};if(p===null){yield v;continue}{let h=p.indexOf("[");if(h!==-1){if(p[p.length-1]!=="]")return;let y=$e(p.slice(h+1,-1));if(!xe(y))continue;let V=null;for(let A=0;A=jr&&b<=Fr))break}if(y.length===0||y.trim().length===0||V==="")continue;v.value={kind:"arbitrary",dataType:V||null,value:y}}else{let y=f===null||v.modifier?.kind==="arbitrary"?null:`${p}/${f}`;if(!Xt.test(p))continue;v.value={kind:"named",value:p,fraction:y}}}yield v}}function Qt(e){if(e[0]==="["&&e[e.length-1]==="]"){let r=$e(e.slice(1,-1));return!xe(r)||r.length===0||r.trim().length===0?null:{kind:"arbitrary",value:r}}return e[0]==="("&&e[e.length-1]===")"?(e=e.slice(1,-1),e[0]!=="-"||e[1]!=="-"||!xe(e)?null:(e=`var(${e})`,{kind:"arbitrary",value:$e(e)})):Xt.test(e)?{kind:"named",value:e}:null}function Br(e,r){if(e[0]==="["&&e[e.length-1]==="]"){if(e[1]==="@"&&e.includes("&"))return null;let i=$e(e.slice(1,-1));if(!xe(i)||i.length===0||i.trim().length===0)return null;let t=i[0]===">"||i[0]==="+"||i[0]==="~";return!t&&i[0]!=="@"&&!i.includes("&")&&(i=`&:is(${i})`),{kind:"arbitrary",selector:i,relative:t}}{let[i,t=null,n]=K(e,"/");if(n)return null;let a=Yr(i,o=>r.variants.has(o));for(let[o,f]of a)switch(r.variants.kind(o)){case"static":return f!==null||t!==null?null:{kind:"static",root:o};case"functional":{let u=t===null?null:Qt(t);if(t!==null&&u===null)return null;if(f===null)return{kind:"functional",root:o,modifier:u,value:null};if(f[f.length-1]==="]"){if(f[0]!=="[")continue;let c=$e(f.slice(1,-1));return!xe(c)||c.length===0||c.trim().length===0?null:{kind:"functional",root:o,modifier:u,value:{kind:"arbitrary",value:c}}}if(f[f.length-1]===")"){if(f[0]!=="(")continue;let c=$e(f.slice(1,-1));return!xe(c)||c.length===0||c.trim().length===0||c[0]!=="-"||c[1]!=="-"?null:{kind:"functional",root:o,modifier:u,value:{kind:"arbitrary",value:`var(${c})`}}}if(!Xt.test(f))continue;return{kind:"functional",root:o,modifier:u,value:{kind:"named",value:f}}}case"compound":{if(f===null)return null;t&&(o==="not"||o==="has"||o==="in")&&(f=`${f}/${t}`,t=null);let u=r.parseVariant(f);if(u===null||!r.variants.compoundsWith(o,u))return null;let c=t===null?null:Qt(t);return t!==null&&c===null?null:{kind:"compound",root:o,modifier:c,variant:u}}}}return null}function*Yr(e,r){r(e)&&(yield[e,null]);let i=e.lastIndexOf("-");for(;i>0;){let t=e.slice(0,i);if(r(t)){let n=[t,e.slice(i+1)];if(n[1]===""||n[0]==="@"&&r("@")&&e[i]==="-")break;yield n}i=e.lastIndexOf("-",i-1)}e[0]==="@"&&r("@")&&(yield["@",e.slice(1)])}function qr(e,r){let i=[];for(let n of r.variants)i.unshift(xt(n));e.theme.prefix&&i.unshift(e.theme.prefix);let t="";if(r.kind==="static"&&(t+=r.root),r.kind==="functional"&&(t+=r.root,r.value))if(r.value.kind==="arbitrary"){if(r.value!==null){let n=er(r.value.value),a=n?r.value.value.slice(4,-1):r.value.value,[o,f]=n?["(",")"]:["[","]"];r.value.dataType?t+=`-${o}${r.value.dataType}:${Te(a)}${f}`:t+=`-${o}${Te(a)}${f}`}}else r.value.kind==="named"&&(t+=`-${r.value.value}`);return r.kind==="arbitrary"&&(t+=`[${r.property}:${Te(r.value)}]`),(r.kind==="arbitrary"||r.kind==="functional")&&(t+=ot(r.modifier)),r.important&&(t+="!"),i.push(t),i.join(":")}function ot(e){if(e===null)return"";let r=er(e.value),i=r?e.value.slice(4,-1):e.value,[t,n]=r?["(",")"]:["[","]"];return e.kind==="arbitrary"?`/${t}${Te(i)}${n}`:e.kind==="named"?`/${e.value}`:""}function xt(e){if(e.kind==="static")return e.root;if(e.kind==="arbitrary")return`[${Te(zn(e.selector))}]`;let r="";if(e.kind==="functional"){r+=e.root;let i=e.root!=="@";if(e.value)if(e.value.kind==="arbitrary"){let t=er(e.value.value),n=t?e.value.value.slice(4,-1):e.value.value,[a,o]=t?["(",")"]:["[","]"];r+=`${i?"-":""}${a}${Te(n)}${o}`}else e.value.kind==="named"&&(r+=`${i?"-":""}${e.value.value}`)}return e.kind==="compound"&&(r+=e.root,r+="-",r+=xt(e.variant)),(e.kind==="functional"||e.kind==="compound")&&(r+=ot(e.modifier)),r}var Un=new z(e=>{let r=F(e),i=new Set;return I(r,(t,n)=>{let a=n.parent===null?r:n.parent.nodes??[];if(t.kind==="word"&&(t.value==="+"||t.value==="-"||t.value==="*"||t.value==="/")){let o=a.indexOf(t)??-1;if(o===-1)return;let f=a[o-1];if(f?.kind!=="separator"||f.value!==" ")return;let u=a[o+1];if(u?.kind!=="separator"||u.value!==" ")return;i.add(f),i.add(u)}else t.kind==="separator"&&t.value.length>0&&t.value.trim()===""?(a[0]===t||a[a.length-1]===t)&&i.add(t):t.kind==="separator"&&t.value.trim()===","&&(t.value=",")}),i.size>0&&I(r,t=>{if(i.has(t))return i.delete(t),R.ReplaceSkip([])}),Jt(r),Y(r)});function Te(e){return Un.get(e)}var Ln=new z(e=>{let r=F(e);return r.length===3&&r[0].kind==="word"&&r[0].value==="&"&&r[1].kind==="separator"&&r[1].value===":"&&r[2].kind==="function"&&r[2].value==="is"?Y(r[2].nodes):e});function zn(e){return Ln.get(e)}function Jt(e){for(let r of e)switch(r.kind){case"function":{if(r.value==="url"||r.value.endsWith("_url")){r.value=nt(r.value);break}if(r.value==="var"||r.value.endsWith("_var")||r.value==="theme"||r.value.endsWith("_theme")){r.value=nt(r.value);for(let i=0;i{let r=F(e);return r.length===1&&r[0].kind==="function"&&r[0].value==="var"});function er(e){return Kn.get(e)}function Mn(e){throw new Error(`Unexpected value: ${e}`)}function nt(e){return e.replaceAll("_",String.raw`\_`).replaceAll(" ","_")}function _e(e,r,i){if(e===r)return 0;let t=e.indexOf("("),n=r.indexOf("("),a=t===-1?e.replace(/[\d.]+/g,""):e.slice(0,t),o=n===-1?r.replace(/[\d.]+/g,""):r.slice(0,n),f=(a===o?0:aWe(r)||Zr(r)||r==="thin"||r==="medium"||r==="thick")}var qn=/^(?:element|image|cross-fade|image-set)\(/,Gn=/^(repeating-)?(conic|linear|radial)-gradient\(/;function Hn(e){let r=0;for(let i of K(e,","))if(!i.startsWith("var(")){if(Hr(i)){r+=1;continue}if(Gn.test(i)){r+=1;continue}if(qn.test(i)){r+=1;continue}return!1}return r>0}function Zn(e){return e==="serif"||e==="sans-serif"||e==="monospace"||e==="cursive"||e==="fantasy"||e==="system-ui"||e==="ui-serif"||e==="ui-sans-serif"||e==="ui-monospace"||e==="ui-rounded"||e==="math"||e==="emoji"||e==="fangsong"}function Qn(e){let r=0;for(let i of K(e,",")){let t=i.charCodeAt(0);if(t>=48&&t<=57)return!1;i.startsWith("var(")||(r+=1)}return r>0}function Jn(e){return e==="xx-small"||e==="x-small"||e==="small"||e==="medium"||e==="large"||e==="x-large"||e==="xx-large"||e==="xxx-large"}function Xn(e){return e==="larger"||e==="smaller"}var Ae=/[+-]?\d*\.?\d+(?:[eE][+-]?\d+)?/,eo=new RegExp(`^${Ae.source}$`);function Zr(e){return eo.test(e)||it(e)}var to=new RegExp(`^${Ae.source}%$`);function tr(e){return to.test(e)||it(e)}var ro=new RegExp(`^${Ae.source}\\s*/\\s*${Ae.source}$`);function io(e){return ro.test(e)||it(e)}var no=["cm","mm","Q","in","pc","pt","px","em","ex","ch","rem","lh","rlh","vw","vh","vmin","vmax","vb","vi","svw","svh","lvw","lvh","dvw","dvh","cqw","cqh","cqi","cqb","cqmin","cqmax"],oo=new RegExp(`^${Ae.source}(${no.join("|")})$`);function We(e){return oo.test(e)||it(e)}function lo(e){let r=0;for(let i of K(e," ")){if(i==="center"||i==="top"||i==="right"||i==="bottom"||i==="left"){r+=1;continue}if(!i.startsWith("var(")){if(We(i)||tr(i)){r+=1;continue}return!1}}return r>0}function ao(e){let r=0;for(let i of K(e,",")){if(i==="cover"||i==="contain"){r+=1;continue}let t=K(i," ");if(t.length!==1&&t.length!==2)return!1;if(t.every(n=>n==="auto"||We(n)||tr(n))){r+=1;continue}}return r>0}var so=["deg","rad","grad","turn"],uo=new RegExp(`^${Ae.source}(${so.join("|")})$`);function co(e){return uo.test(e)}var fo=new RegExp(`^${Ae.source} +${Ae.source} +${Ae.source}$`);function po(e){return fo.test(e)}function P(e){let r=Number(e);return Number.isInteger(r)&&r>=0&&String(r)===String(e)}function rr(e){let r=Number(e);return Number.isInteger(r)&&r>0&&String(r)===String(e)}function ee(e){return Qr(e,.25)}function At(e){return Qr(e,.25)}function Qr(e,r){let i=Number(e);return i>=0&&i%r===0&&String(i)===String(e)}var mo=new Set(["inset","inherit","initial","revert","unset"]),Jr=/^-?(\d+|\.\d+)(.*?)$/g;function lt(e,r){return K(e,",").map(t=>{t=t.trim();let n=K(t," ").filter(c=>c.trim()!==""),a=null,o=null,f=null;for(let c of n)mo.has(c)||(Jr.test(c)?(o===null?o=c:f===null&&(f=c),Jr.lastIndex=0):a===null&&(a=c));if(o===null||f===null)return t;let u=r(a??"currentcolor");return a!==null?t.replace(a,u):`${t} ${u}`}).join(", ")}var Tt=["0","0.5","1","1.5","2","2.5","3","3.5","4","5","6","7","8","9","10","11","12","14","16","20","24","28","32","36","40","44","48","52","56","60","64","72","80","96"],ir=class{utilities=new z(()=>[]);completions=new Map;static(r,i){this.utilities.get(r).push({kind:"static",compileFn:i})}functional(r,i,t){this.utilities.get(r).push({kind:"functional",compileFn:i,options:t})}has(r,i){return this.utilities.has(r)&&this.utilities.get(r).some(t=>t.kind===i)}get(r){return this.utilities.has(r)?this.utilities.get(r):[]}getCompletions(r){return this.has(r,"static")?this.completions.get(r)?.()??[{supportsNegative:!1,values:[],modifiers:[]}]:this.completions.get(r)?.()??[]}suggest(r,i){let t=this.completions.get(r);t?this.completions.set(r,()=>[...t?.(),...i?.()]):this.completions.set(r,i)}keys(r){let i=[];for(let[t,n]of this.utilities.entries())for(let a of n)if(a.kind===r){i.push(t);break}return i}};function S(e,r,i){return W("@property",e,[l("syntax",i?`"${i}"`:'"*"'),l("inherits","false"),...r?[l("initial-value",r)]:[]])}function J(e,r){if(r===null)return e;let i=Number(r);return Number.isNaN(i)||(r=`${i*100}%`),r==="100%"?e:`color-mix(in oklab, ${e} ${r}, transparent)`}function ei(e,r){let i=Number(r);return Number.isNaN(i)||(r=`${i*100}%`),`oklab(from ${e} l a b / ${r})`}function X(e,r,i){if(!r)return e;if(r.kind==="arbitrary")return J(e,r.value);let t=i.resolve(r.value,["--opacity"]);return t?J(e,t):At(r.value)?J(e,`${r.value}%`):null}function re(e,r,i){let t=null;switch(e.value.value){case"inherit":{t="inherit";break}case"transparent":{t="transparent";break}case"current":{t="currentcolor";break}default:{t=r.resolve(e.value.value,i);break}}return t?X(t,e.modifier,r):null}var ti=/(\d+)_(\d+)/g;function ri(e){let r=new ir;function i(s,g){function*k(x){for(let $ of e.keysInNamespaces(x))yield $.replace(ti,(U,T,O)=>`${T}.${O}`)}let C=["1/2","1/3","2/3","1/4","2/4","3/4","1/5","2/5","3/5","4/5","1/6","2/6","3/6","4/6","5/6","1/12","2/12","3/12","4/12","5/12","6/12","7/12","8/12","9/12","10/12","11/12"];r.suggest(s,()=>{let x=[];for(let $ of g()){if(typeof $=="string"){x.push({values:[$],modifiers:[]});continue}let U=[...$.values??[],...k($.valueThemeKeys??[])],T=[...$.modifiers??[],...k($.modifierThemeKeys??[])];$.supportsFractions&&U.push(...C),$.hasDefaultValue&&U.unshift(null),x.push({supportsNegative:$.supportsNegative,values:U,modifiers:T})}return x})}function t(s,g){r.static(s,()=>g.map(k=>typeof k=="function"?k():l(k[0],k[1])))}function n(s,g){g.staticValues&&(g.staticValues=Object.assign(Object.create(null),g.staticValues));function k({negative:C}){return x=>{let $=null,U=null;if(x.value)if(x.value.kind==="arbitrary"){if(x.modifier)return;$=x.value.value,U=x.value.dataType}else{if($=e.resolve(x.value.fraction??x.value.value,g.themeKeys??[]),$===null&&g.supportsFractions&&x.value.fraction){let[T,O]=K(x.value.fraction,"/");if(!P(T)||!P(O))return;$=`calc(${T} / ${O} * 100%)`}if($===null&&C&&g.handleNegativeBareValue){if($=g.handleNegativeBareValue(x.value),!$?.includes("/")&&x.modifier)return;if($!==null)return g.handle($,null)}if($===null&&g.handleBareValue&&($=g.handleBareValue(x.value),!$?.includes("/")&&x.modifier))return;if($===null&&!C&&g.staticValues&&!x.modifier){let T=g.staticValues[x.value.value];if(T)return T.map(te)}}else{if(x.modifier)return;$=g.defaultValue!==void 0?g.defaultValue:e.resolve(null,g.themeKeys??[])}if($!==null)return g.handle(C?`calc(${$} * -1)`:$,U)}}if(g.supportsNegative&&r.functional(`-${s}`,k({negative:!0})),r.functional(s,k({negative:!1})),i(s,()=>[{supportsNegative:g.supportsNegative,valueThemeKeys:g.themeKeys??[],hasDefaultValue:g.defaultValue!==void 0&&g.defaultValue!==null,supportsFractions:g.supportsFractions}]),g.staticValues&&Object.keys(g.staticValues).length>0){let C=Object.keys(g.staticValues);i(s,()=>[{values:C}])}}function a(s,g){r.functional(s,k=>{if(!k.value)return;let C=null;if(k.value.kind==="arbitrary"?(C=k.value.value,C=X(C,k.modifier,e)):C=re(k,e,g.themeKeys),C!==null)return g.handle(C)}),i(s,()=>[{values:["current","inherit","transparent"],valueThemeKeys:g.themeKeys,modifiers:Array.from({length:21},(k,C)=>`${C*5}`)}])}function o(s,g,k,{supportsNegative:C=!1,supportsFractions:x=!1,staticValues:$}={}){C&&r.static(`-${s}-px`,()=>k("-1px")),r.static(`${s}-px`,()=>k("1px")),n(s,{themeKeys:g,supportsFractions:x,supportsNegative:C,defaultValue:null,handleBareValue:({value:U})=>{let T=e.resolve(null,["--spacing"]);return!T||!ee(U)?null:`calc(${T} * ${U})`},handleNegativeBareValue:({value:U})=>{let T=e.resolve(null,["--spacing"]);return!T||!ee(U)?null:`calc(${T} * -${U})`},handle:k,staticValues:$}),i(s,()=>[{values:e.get(["--spacing"])?Tt:[],supportsNegative:C,supportsFractions:x,valueThemeKeys:g}])}t("sr-only",[["position","absolute"],["width","1px"],["height","1px"],["padding","0"],["margin","-1px"],["overflow","hidden"],["clip-path","inset(50%)"],["white-space","nowrap"],["border-width","0"]]),t("not-sr-only",[["position","static"],["width","auto"],["height","auto"],["padding","0"],["margin","0"],["overflow","visible"],["clip-path","none"],["white-space","normal"]]),t("pointer-events-none",[["pointer-events","none"]]),t("pointer-events-auto",[["pointer-events","auto"]]),t("visible",[["visibility","visible"]]),t("invisible",[["visibility","hidden"]]),t("collapse",[["visibility","collapse"]]),t("static",[["position","static"]]),t("fixed",[["position","fixed"]]),t("absolute",[["position","absolute"]]),t("relative",[["position","relative"]]),t("sticky",[["position","sticky"]]);for(let[s,g]of[["inset","inset"],["inset-x","inset-inline"],["inset-y","inset-block"],["inset-s","inset-inline-start"],["inset-e","inset-inline-end"],["inset-bs","inset-block-start"],["inset-be","inset-block-end"],["top","top"],["right","right"],["bottom","bottom"],["left","left"]])t(`${s}-auto`,[[g,"auto"]]),t(`${s}-full`,[[g,"100%"]]),t(`-${s}-full`,[[g,"-100%"]]),o(s,["--inset","--spacing"],k=>[l(g,k)],{supportsNegative:!0,supportsFractions:!0});t("isolate",[["isolation","isolate"]]),t("isolation-auto",[["isolation","auto"]]),n("z",{supportsNegative:!0,handleBareValue:({value:s})=>P(s)?s:null,themeKeys:["--z-index"],handle:s=>[l("z-index",s)],staticValues:{auto:[l("z-index","auto")]}}),i("z",()=>[{supportsNegative:!0,values:["0","10","20","30","40","50"],valueThemeKeys:["--z-index"]}]),n("order",{supportsNegative:!0,handleBareValue:({value:s})=>P(s)?s:null,themeKeys:["--order"],handle:s=>[l("order",s)],staticValues:{first:[l("order","-9999")],last:[l("order","9999")]}}),i("order",()=>[{supportsNegative:!0,values:Array.from({length:12},(s,g)=>`${g+1}`),valueThemeKeys:["--order"]}]),n("col",{supportsNegative:!0,handleBareValue:({value:s})=>P(s)?s:null,themeKeys:["--grid-column"],handle:s=>[l("grid-column",s)],staticValues:{auto:[l("grid-column","auto")]}}),n("col-span",{handleBareValue:({value:s})=>P(s)?s:null,handle:s=>[l("grid-column",`span ${s} / span ${s}`)],staticValues:{full:[l("grid-column","1 / -1")]}}),n("col-start",{supportsNegative:!0,handleBareValue:({value:s})=>P(s)?s:null,themeKeys:["--grid-column-start"],handle:s=>[l("grid-column-start",s)],staticValues:{auto:[l("grid-column-start","auto")]}}),n("col-end",{supportsNegative:!0,handleBareValue:({value:s})=>P(s)?s:null,themeKeys:["--grid-column-end"],handle:s=>[l("grid-column-end",s)],staticValues:{auto:[l("grid-column-end","auto")]}}),i("col-span",()=>[{values:Array.from({length:12},(s,g)=>`${g+1}`),valueThemeKeys:[]}]),i("col-start",()=>[{supportsNegative:!0,values:Array.from({length:13},(s,g)=>`${g+1}`),valueThemeKeys:["--grid-column-start"]}]),i("col-end",()=>[{supportsNegative:!0,values:Array.from({length:13},(s,g)=>`${g+1}`),valueThemeKeys:["--grid-column-end"]}]),n("row",{supportsNegative:!0,handleBareValue:({value:s})=>P(s)?s:null,themeKeys:["--grid-row"],handle:s=>[l("grid-row",s)],staticValues:{auto:[l("grid-row","auto")]}}),n("row-span",{themeKeys:[],handleBareValue:({value:s})=>P(s)?s:null,handle:s=>[l("grid-row",`span ${s} / span ${s}`)],staticValues:{full:[l("grid-row","1 / -1")]}}),n("row-start",{supportsNegative:!0,handleBareValue:({value:s})=>P(s)?s:null,themeKeys:["--grid-row-start"],handle:s=>[l("grid-row-start",s)],staticValues:{auto:[l("grid-row-start","auto")]}}),n("row-end",{supportsNegative:!0,handleBareValue:({value:s})=>P(s)?s:null,themeKeys:["--grid-row-end"],handle:s=>[l("grid-row-end",s)],staticValues:{auto:[l("grid-row-end","auto")]}}),i("row-span",()=>[{values:Array.from({length:12},(s,g)=>`${g+1}`),valueThemeKeys:[]}]),i("row-start",()=>[{supportsNegative:!0,values:Array.from({length:13},(s,g)=>`${g+1}`),valueThemeKeys:["--grid-row-start"]}]),i("row-end",()=>[{supportsNegative:!0,values:Array.from({length:13},(s,g)=>`${g+1}`),valueThemeKeys:["--grid-row-end"]}]),t("float-start",[["float","inline-start"]]),t("float-end",[["float","inline-end"]]),t("float-right",[["float","right"]]),t("float-left",[["float","left"]]),t("float-none",[["float","none"]]),t("clear-start",[["clear","inline-start"]]),t("clear-end",[["clear","inline-end"]]),t("clear-right",[["clear","right"]]),t("clear-left",[["clear","left"]]),t("clear-both",[["clear","both"]]),t("clear-none",[["clear","none"]]);for(let[s,g]of[["m","margin"],["mx","margin-inline"],["my","margin-block"],["ms","margin-inline-start"],["me","margin-inline-end"],["mbs","margin-block-start"],["mbe","margin-block-end"],["mt","margin-top"],["mr","margin-right"],["mb","margin-bottom"],["ml","margin-left"]])t(`${s}-auto`,[[g,"auto"]]),o(s,["--margin","--spacing"],k=>[l(g,k)],{supportsNegative:!0});t("box-border",[["box-sizing","border-box"]]),t("box-content",[["box-sizing","content-box"]]),n("line-clamp",{themeKeys:["--line-clamp"],handleBareValue:({value:s})=>P(s)?s:null,handle:s=>[l("overflow","hidden"),l("display","-webkit-box"),l("-webkit-box-orient","vertical"),l("-webkit-line-clamp",s)],staticValues:{none:[l("overflow","visible"),l("display","block"),l("-webkit-box-orient","horizontal"),l("-webkit-line-clamp","unset")]}}),i("line-clamp",()=>[{values:["1","2","3","4","5","6"],valueThemeKeys:["--line-clamp"]}]),t("block",[["display","block"]]),t("inline-block",[["display","inline-block"]]),t("inline",[["display","inline"]]),t("hidden",[["display","none"]]),t("inline-flex",[["display","inline-flex"]]),t("table",[["display","table"]]),t("inline-table",[["display","inline-table"]]),t("table-caption",[["display","table-caption"]]),t("table-cell",[["display","table-cell"]]),t("table-column",[["display","table-column"]]),t("table-column-group",[["display","table-column-group"]]),t("table-footer-group",[["display","table-footer-group"]]),t("table-header-group",[["display","table-header-group"]]),t("table-row-group",[["display","table-row-group"]]),t("table-row",[["display","table-row"]]),t("flow-root",[["display","flow-root"]]),t("flex",[["display","flex"]]),t("grid",[["display","grid"]]),t("inline-grid",[["display","inline-grid"]]),t("contents",[["display","contents"]]),t("list-item",[["display","list-item"]]),t("field-sizing-content",[["field-sizing","content"]]),t("field-sizing-fixed",[["field-sizing","fixed"]]),n("aspect",{themeKeys:["--aspect"],handleBareValue:({fraction:s})=>{if(s===null)return null;let[g,k]=K(s,"/");return!ee(g)||!ee(k)?null:s},handle:s=>[l("aspect-ratio",s)],staticValues:{auto:[l("aspect-ratio","auto")],square:[l("aspect-ratio","1 / 1")]}});for(let[s,g]of[["full","100%"],["svw","100svw"],["lvw","100lvw"],["dvw","100dvw"],["svh","100svh"],["lvh","100lvh"],["dvh","100dvh"],["min","min-content"],["max","max-content"],["fit","fit-content"]])t(`size-${s}`,[["--tw-sort","size"],["width",g],["height",g]]),t(`w-${s}`,[["width",g]]),t(`h-${s}`,[["height",g]]),t(`min-w-${s}`,[["min-width",g]]),t(`min-h-${s}`,[["min-height",g]]),t(`max-w-${s}`,[["max-width",g]]),t(`max-h-${s}`,[["max-height",g]]);t("size-auto",[["--tw-sort","size"],["width","auto"],["height","auto"]]),t("w-auto",[["width","auto"]]),t("h-auto",[["height","auto"]]),t("min-w-auto",[["min-width","auto"]]),t("min-h-auto",[["min-height","auto"]]),t("h-lh",[["height","1lh"]]),t("min-h-lh",[["min-height","1lh"]]),t("max-h-lh",[["max-height","1lh"]]),t("w-screen",[["width","100vw"]]),t("min-w-screen",[["min-width","100vw"]]),t("max-w-screen",[["max-width","100vw"]]),t("h-screen",[["height","100vh"]]),t("min-h-screen",[["min-height","100vh"]]),t("max-h-screen",[["max-height","100vh"]]),t("max-w-none",[["max-width","none"]]),t("max-h-none",[["max-height","none"]]),o("size",["--size","--spacing"],s=>[l("--tw-sort","size"),l("width",s),l("height",s)],{supportsFractions:!0});for(let[s,g,k]of[["w",["--width","--spacing","--container"],"width"],["min-w",["--min-width","--spacing","--container"],"min-width"],["max-w",["--max-width","--spacing","--container"],"max-width"],["h",["--height","--spacing"],"height"],["min-h",["--min-height","--height","--spacing"],"min-height"],["max-h",["--max-height","--height","--spacing"],"max-height"]])o(s,g,C=>[l(k,C)],{supportsFractions:!0});for(let[s,g]of[["full","100%"],["min","min-content"],["max","max-content"],["fit","fit-content"]])t(`inline-${s}`,[["inline-size",g]]),t(`block-${s}`,[["block-size",g]]),t(`min-inline-${s}`,[["min-inline-size",g]]),t(`min-block-${s}`,[["min-block-size",g]]),t(`max-inline-${s}`,[["max-inline-size",g]]),t(`max-block-${s}`,[["max-block-size",g]]);for(let[s,g]of[["svw","100svw"],["lvw","100lvw"],["dvw","100dvw"]])t(`inline-${s}`,[["inline-size",g]]),t(`min-inline-${s}`,[["min-inline-size",g]]),t(`max-inline-${s}`,[["max-inline-size",g]]);for(let[s,g]of[["svh","100svh"],["lvh","100lvh"],["dvh","100dvh"]])t(`block-${s}`,[["block-size",g]]),t(`min-block-${s}`,[["min-block-size",g]]),t(`max-block-${s}`,[["max-block-size",g]]);t("inline-auto",[["inline-size","auto"]]),t("block-auto",[["block-size","auto"]]),t("min-inline-auto",[["min-inline-size","auto"]]),t("min-block-auto",[["min-block-size","auto"]]),t("block-lh",[["block-size","1lh"]]),t("min-block-lh",[["min-block-size","1lh"]]),t("max-block-lh",[["max-block-size","1lh"]]),t("inline-screen",[["inline-size","100vw"]]),t("min-inline-screen",[["min-inline-size","100vw"]]),t("max-inline-screen",[["max-inline-size","100vw"]]),t("block-screen",[["block-size","100vh"]]),t("min-block-screen",[["min-block-size","100vh"]]),t("max-block-screen",[["max-block-size","100vh"]]),t("max-inline-none",[["max-inline-size","none"]]),t("max-block-none",[["max-block-size","none"]]);for(let[s,g,k]of[["inline",["--spacing","--container"],"inline-size"],["min-inline",["--spacing","--container"],"min-inline-size"],["max-inline",["--spacing","--container"],"max-inline-size"],["block",["--spacing"],"block-size"],["min-block",["--spacing"],"min-block-size"],["max-block",["--spacing"],"max-block-size"]])o(s,g,C=>[l(k,C)],{supportsFractions:!0});r.static("container",()=>{let s=[...e.namespace("--breakpoint").values()];s.sort((k,C)=>_e(k,C,"asc"));let g=[l("--tw-sort","--tw-container-component"),l("width","100%")];for(let k of s)g.push(W("@media",`(width >= ${k})`,[l("max-width",k)]));return g}),t("flex-auto",[["flex","auto"]]),t("flex-initial",[["flex","0 auto"]]),t("flex-none",[["flex","none"]]),r.functional("flex",s=>{if(s.value){if(s.value.kind==="arbitrary")return s.modifier?void 0:[l("flex",s.value.value)];if(s.value.fraction){let[g,k]=K(s.value.fraction,"/");return!P(g)||!P(k)?void 0:[l("flex",`calc(${s.value.fraction} * 100%)`)]}if(P(s.value.value))return s.modifier?void 0:[l("flex",s.value.value)]}}),i("flex",()=>[{supportsFractions:!0},{values:Array.from({length:12},(s,g)=>`${g+1}`)}]),n("shrink",{defaultValue:"1",handleBareValue:({value:s})=>P(s)?s:null,handle:s=>[l("flex-shrink",s)]}),n("grow",{defaultValue:"1",handleBareValue:({value:s})=>P(s)?s:null,handle:s=>[l("flex-grow",s)]}),i("shrink",()=>[{values:["0"],valueThemeKeys:[],hasDefaultValue:!0}]),i("grow",()=>[{values:["0"],valueThemeKeys:[],hasDefaultValue:!0}]),t("basis-auto",[["flex-basis","auto"]]),t("basis-full",[["flex-basis","100%"]]),o("basis",["--flex-basis","--spacing","--container"],s=>[l("flex-basis",s)],{supportsFractions:!0}),t("table-auto",[["table-layout","auto"]]),t("table-fixed",[["table-layout","fixed"]]),t("caption-top",[["caption-side","top"]]),t("caption-bottom",[["caption-side","bottom"]]),t("border-collapse",[["border-collapse","collapse"]]),t("border-separate",[["border-collapse","separate"]]);let f=()=>B([S("--tw-border-spacing-x","0",""),S("--tw-border-spacing-y","0","")]);o("border-spacing",["--border-spacing","--spacing"],s=>[f(),l("--tw-border-spacing-x",s),l("--tw-border-spacing-y",s),l("border-spacing","var(--tw-border-spacing-x) var(--tw-border-spacing-y)")]),o("border-spacing-x",["--border-spacing","--spacing"],s=>[f(),l("--tw-border-spacing-x",s),l("border-spacing","var(--tw-border-spacing-x) var(--tw-border-spacing-y)")]),o("border-spacing-y",["--border-spacing","--spacing"],s=>[f(),l("--tw-border-spacing-y",s),l("border-spacing","var(--tw-border-spacing-x) var(--tw-border-spacing-y)")]),n("origin",{themeKeys:["--transform-origin"],handle:s=>[l("transform-origin",s)],staticValues:{center:[l("transform-origin","center")],top:[l("transform-origin","top")],"top-right":[l("transform-origin","100% 0")],right:[l("transform-origin","100%")],"bottom-right":[l("transform-origin","100% 100%")],bottom:[l("transform-origin","bottom")],"bottom-left":[l("transform-origin","0 100%")],left:[l("transform-origin","0")],"top-left":[l("transform-origin","0 0")]}}),n("perspective-origin",{themeKeys:["--perspective-origin"],handle:s=>[l("perspective-origin",s)],staticValues:{center:[l("perspective-origin","center")],top:[l("perspective-origin","top")],"top-right":[l("perspective-origin","100% 0")],right:[l("perspective-origin","100%")],"bottom-right":[l("perspective-origin","100% 100%")],bottom:[l("perspective-origin","bottom")],"bottom-left":[l("perspective-origin","0 100%")],left:[l("perspective-origin","0")],"top-left":[l("perspective-origin","0 0")]}}),n("perspective",{themeKeys:["--perspective"],handle:s=>[l("perspective",s)],staticValues:{none:[l("perspective","none")]}});let u=()=>B([S("--tw-translate-x","0"),S("--tw-translate-y","0"),S("--tw-translate-z","0")]);t("translate-none",[["translate","none"]]),t("-translate-full",[u,["--tw-translate-x","-100%"],["--tw-translate-y","-100%"],["translate","var(--tw-translate-x) var(--tw-translate-y)"]]),t("translate-full",[u,["--tw-translate-x","100%"],["--tw-translate-y","100%"],["translate","var(--tw-translate-x) var(--tw-translate-y)"]]),o("translate",["--translate","--spacing"],s=>[u(),l("--tw-translate-x",s),l("--tw-translate-y",s),l("translate","var(--tw-translate-x) var(--tw-translate-y)")],{supportsNegative:!0,supportsFractions:!0});for(let s of["x","y"])t(`-translate-${s}-full`,[u,[`--tw-translate-${s}`,"-100%"],["translate","var(--tw-translate-x) var(--tw-translate-y)"]]),t(`translate-${s}-full`,[u,[`--tw-translate-${s}`,"100%"],["translate","var(--tw-translate-x) var(--tw-translate-y)"]]),o(`translate-${s}`,["--translate","--spacing"],g=>[u(),l(`--tw-translate-${s}`,g),l("translate","var(--tw-translate-x) var(--tw-translate-y)")],{supportsNegative:!0,supportsFractions:!0});o("translate-z",["--translate","--spacing"],s=>[u(),l("--tw-translate-z",s),l("translate","var(--tw-translate-x) var(--tw-translate-y) var(--tw-translate-z)")],{supportsNegative:!0}),t("translate-3d",[u,["translate","var(--tw-translate-x) var(--tw-translate-y) var(--tw-translate-z)"]]);let c=()=>B([S("--tw-scale-x","1"),S("--tw-scale-y","1"),S("--tw-scale-z","1")]);t("scale-none",[["scale","none"]]);function m({negative:s}){return g=>{if(!g.value||g.modifier)return;let k;return g.value.kind==="arbitrary"?(k=g.value.value,k=s?`calc(${k} * -1)`:k,[l("scale",k)]):(k=e.resolve(g.value.value,["--scale"]),!k&&P(g.value.value)&&(k=`${g.value.value}%`),k?(k=s?`calc(${k} * -1)`:k,[c(),l("--tw-scale-x",k),l("--tw-scale-y",k),l("--tw-scale-z",k),l("scale","var(--tw-scale-x) var(--tw-scale-y)")]):void 0)}}r.functional("-scale",m({negative:!0})),r.functional("scale",m({negative:!1})),i("scale",()=>[{supportsNegative:!0,values:["0","50","75","90","95","100","105","110","125","150","200"],valueThemeKeys:["--scale"]}]);for(let s of["x","y","z"])n(`scale-${s}`,{supportsNegative:!0,themeKeys:["--scale"],handleBareValue:({value:g})=>P(g)?`${g}%`:null,handle:g=>[c(),l(`--tw-scale-${s}`,g),l("scale",`var(--tw-scale-x) var(--tw-scale-y)${s==="z"?" var(--tw-scale-z)":""}`)]}),i(`scale-${s}`,()=>[{supportsNegative:!0,values:["0","50","75","90","95","100","105","110","125","150","200"],valueThemeKeys:["--scale"]}]);t("scale-3d",[c,["scale","var(--tw-scale-x) var(--tw-scale-y) var(--tw-scale-z)"]]),t("rotate-none",[["rotate","none"]]);function d({negative:s}){return g=>{if(!g.value||g.modifier)return;let k;if(g.value.kind==="arbitrary"){k=g.value.value;let C=g.value.dataType??Q(k,["angle","vector"]);if(C==="vector")return[l("rotate",`${k} var(--tw-rotate)`)];if(C!=="angle")return[l("rotate",s?`calc(${k} * -1)`:k)]}else if(k=e.resolve(g.value.value,["--rotate"]),!k&&P(g.value.value)&&(k=`${g.value.value}deg`),!k)return;return[l("rotate",s?`calc(${k} * -1)`:k)]}}r.functional("-rotate",d({negative:!0})),r.functional("rotate",d({negative:!1})),i("rotate",()=>[{supportsNegative:!0,values:["0","1","2","3","6","12","45","90","180"],valueThemeKeys:["--rotate"]}]);{let s=["var(--tw-rotate-x,)","var(--tw-rotate-y,)","var(--tw-rotate-z,)","var(--tw-skew-x,)","var(--tw-skew-y,)"].join(" "),g=()=>B([S("--tw-rotate-x"),S("--tw-rotate-y"),S("--tw-rotate-z"),S("--tw-skew-x"),S("--tw-skew-y")]);for(let k of["x","y","z"])n(`rotate-${k}`,{supportsNegative:!0,themeKeys:["--rotate"],handleBareValue:({value:C})=>P(C)?`${C}deg`:null,handle:C=>[g(),l(`--tw-rotate-${k}`,`rotate${k.toUpperCase()}(${C})`),l("transform",s)]}),i(`rotate-${k}`,()=>[{supportsNegative:!0,values:["0","1","2","3","6","12","45","90","180"],valueThemeKeys:["--rotate"]}]);n("skew",{supportsNegative:!0,themeKeys:["--skew"],handleBareValue:({value:k})=>P(k)?`${k}deg`:null,handle:k=>[g(),l("--tw-skew-x",`skewX(${k})`),l("--tw-skew-y",`skewY(${k})`),l("transform",s)]}),n("skew-x",{supportsNegative:!0,themeKeys:["--skew"],handleBareValue:({value:k})=>P(k)?`${k}deg`:null,handle:k=>[g(),l("--tw-skew-x",`skewX(${k})`),l("transform",s)]}),n("skew-y",{supportsNegative:!0,themeKeys:["--skew"],handleBareValue:({value:k})=>P(k)?`${k}deg`:null,handle:k=>[g(),l("--tw-skew-y",`skewY(${k})`),l("transform",s)]}),i("skew",()=>[{supportsNegative:!0,values:["0","1","2","3","6","12"],valueThemeKeys:["--skew"]}]),i("skew-x",()=>[{supportsNegative:!0,values:["0","1","2","3","6","12"],valueThemeKeys:["--skew"]}]),i("skew-y",()=>[{supportsNegative:!0,values:["0","1","2","3","6","12"],valueThemeKeys:["--skew"]}]),r.functional("transform",k=>{if(k.modifier)return;let C=null;if(k.value?k.value.kind==="arbitrary"&&(C=k.value.value):C=s,C!==null)return[g(),l("transform",C)]}),i("transform",()=>[{hasDefaultValue:!0}]),t("transform-cpu",[["transform",s]]),t("transform-gpu",[["transform",`translateZ(0) ${s}`]]),t("transform-none",[["transform","none"]])}t("transform-flat",[["transform-style","flat"]]),t("transform-3d",[["transform-style","preserve-3d"]]),t("transform-content",[["transform-box","content-box"]]),t("transform-border",[["transform-box","border-box"]]),t("transform-fill",[["transform-box","fill-box"]]),t("transform-stroke",[["transform-box","stroke-box"]]),t("transform-view",[["transform-box","view-box"]]),t("backface-visible",[["backface-visibility","visible"]]),t("backface-hidden",[["backface-visibility","hidden"]]);for(let s of["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out"])t(`cursor-${s}`,[["cursor",s]]);n("cursor",{themeKeys:["--cursor"],handle:s=>[l("cursor",s)]});for(let s of["auto","none","manipulation"])t(`touch-${s}`,[["touch-action",s]]);let p=()=>B([S("--tw-pan-x"),S("--tw-pan-y"),S("--tw-pinch-zoom")]);for(let s of["x","left","right"])t(`touch-pan-${s}`,[p,["--tw-pan-x",`pan-${s}`],["touch-action","var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)"]]);for(let s of["y","up","down"])t(`touch-pan-${s}`,[p,["--tw-pan-y",`pan-${s}`],["touch-action","var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)"]]);t("touch-pinch-zoom",[p,["--tw-pinch-zoom","pinch-zoom"],["touch-action","var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)"]]);for(let s of["none","text","all","auto"])t(`select-${s}`,[["-webkit-user-select",s],["user-select",s]]);t("resize-none",[["resize","none"]]),t("resize-x",[["resize","horizontal"]]),t("resize-y",[["resize","vertical"]]),t("resize",[["resize","both"]]),t("snap-none",[["scroll-snap-type","none"]]);let v=()=>B([S("--tw-scroll-snap-strictness","proximity","*")]);for(let s of["x","y","both"])t(`snap-${s}`,[v,["scroll-snap-type",`${s} var(--tw-scroll-snap-strictness)`]]);t("snap-mandatory",[v,["--tw-scroll-snap-strictness","mandatory"]]),t("snap-proximity",[v,["--tw-scroll-snap-strictness","proximity"]]),t("snap-align-none",[["scroll-snap-align","none"]]),t("snap-start",[["scroll-snap-align","start"]]),t("snap-end",[["scroll-snap-align","end"]]),t("snap-center",[["scroll-snap-align","center"]]),t("snap-normal",[["scroll-snap-stop","normal"]]),t("snap-always",[["scroll-snap-stop","always"]]);for(let[s,g]of[["scroll-m","scroll-margin"],["scroll-mx","scroll-margin-inline"],["scroll-my","scroll-margin-block"],["scroll-ms","scroll-margin-inline-start"],["scroll-me","scroll-margin-inline-end"],["scroll-mbs","scroll-margin-block-start"],["scroll-mbe","scroll-margin-block-end"],["scroll-mt","scroll-margin-top"],["scroll-mr","scroll-margin-right"],["scroll-mb","scroll-margin-bottom"],["scroll-ml","scroll-margin-left"]])o(s,["--scroll-margin","--spacing"],k=>[l(g,k)],{supportsNegative:!0});for(let[s,g]of[["scroll-p","scroll-padding"],["scroll-px","scroll-padding-inline"],["scroll-py","scroll-padding-block"],["scroll-ps","scroll-padding-inline-start"],["scroll-pe","scroll-padding-inline-end"],["scroll-pbs","scroll-padding-block-start"],["scroll-pbe","scroll-padding-block-end"],["scroll-pt","scroll-padding-top"],["scroll-pr","scroll-padding-right"],["scroll-pb","scroll-padding-bottom"],["scroll-pl","scroll-padding-left"]])o(s,["--scroll-padding","--spacing"],k=>[l(g,k)]);t("list-inside",[["list-style-position","inside"]]),t("list-outside",[["list-style-position","outside"]]),n("list",{themeKeys:["--list-style-type"],handle:s=>[l("list-style-type",s)],staticValues:{none:[l("list-style-type","none")],disc:[l("list-style-type","disc")],decimal:[l("list-style-type","decimal")]}}),n("list-image",{themeKeys:["--list-style-image"],handle:s=>[l("list-style-image",s)],staticValues:{none:[l("list-style-image","none")]}}),t("appearance-none",[["appearance","none"]]),t("appearance-auto",[["appearance","auto"]]),t("scheme-normal",[["color-scheme","normal"]]),t("scheme-dark",[["color-scheme","dark"]]),t("scheme-light",[["color-scheme","light"]]),t("scheme-light-dark",[["color-scheme","light dark"]]),t("scheme-only-dark",[["color-scheme","only dark"]]),t("scheme-only-light",[["color-scheme","only light"]]),n("columns",{themeKeys:["--columns","--container"],handleBareValue:({value:s})=>P(s)?s:null,handle:s=>[l("columns",s)],staticValues:{auto:[l("columns","auto")]}}),i("columns",()=>[{values:Array.from({length:12},(s,g)=>`${g+1}`),valueThemeKeys:["--columns","--container"]}]);for(let s of["auto","avoid","all","avoid-page","page","left","right","column"])t(`break-before-${s}`,[["break-before",s]]);for(let s of["auto","avoid","avoid-page","avoid-column"])t(`break-inside-${s}`,[["break-inside",s]]);for(let s of["auto","avoid","all","avoid-page","page","left","right","column"])t(`break-after-${s}`,[["break-after",s]]);t("grid-flow-row",[["grid-auto-flow","row"]]),t("grid-flow-col",[["grid-auto-flow","column"]]),t("grid-flow-dense",[["grid-auto-flow","dense"]]),t("grid-flow-row-dense",[["grid-auto-flow","row dense"]]),t("grid-flow-col-dense",[["grid-auto-flow","column dense"]]),n("auto-cols",{themeKeys:["--grid-auto-columns"],handle:s=>[l("grid-auto-columns",s)],staticValues:{auto:[l("grid-auto-columns","auto")],min:[l("grid-auto-columns","min-content")],max:[l("grid-auto-columns","max-content")],fr:[l("grid-auto-columns","minmax(0, 1fr)")]}}),n("auto-rows",{themeKeys:["--grid-auto-rows"],handle:s=>[l("grid-auto-rows",s)],staticValues:{auto:[l("grid-auto-rows","auto")],min:[l("grid-auto-rows","min-content")],max:[l("grid-auto-rows","max-content")],fr:[l("grid-auto-rows","minmax(0, 1fr)")]}}),n("grid-cols",{themeKeys:["--grid-template-columns"],handleBareValue:({value:s})=>rr(s)?`repeat(${s}, minmax(0, 1fr))`:null,handle:s=>[l("grid-template-columns",s)],staticValues:{none:[l("grid-template-columns","none")],subgrid:[l("grid-template-columns","subgrid")]}}),n("grid-rows",{themeKeys:["--grid-template-rows"],handleBareValue:({value:s})=>rr(s)?`repeat(${s}, minmax(0, 1fr))`:null,handle:s=>[l("grid-template-rows",s)],staticValues:{none:[l("grid-template-rows","none")],subgrid:[l("grid-template-rows","subgrid")]}}),i("grid-cols",()=>[{values:Array.from({length:12},(s,g)=>`${g+1}`),valueThemeKeys:["--grid-template-columns"]}]),i("grid-rows",()=>[{values:Array.from({length:12},(s,g)=>`${g+1}`),valueThemeKeys:["--grid-template-rows"]}]),t("flex-row",[["flex-direction","row"]]),t("flex-row-reverse",[["flex-direction","row-reverse"]]),t("flex-col",[["flex-direction","column"]]),t("flex-col-reverse",[["flex-direction","column-reverse"]]),t("flex-wrap",[["flex-wrap","wrap"]]),t("flex-nowrap",[["flex-wrap","nowrap"]]),t("flex-wrap-reverse",[["flex-wrap","wrap-reverse"]]),t("place-content-center",[["place-content","center"]]),t("place-content-start",[["place-content","start"]]),t("place-content-end",[["place-content","end"]]),t("place-content-center-safe",[["place-content","safe center"]]),t("place-content-end-safe",[["place-content","safe end"]]),t("place-content-between",[["place-content","space-between"]]),t("place-content-around",[["place-content","space-around"]]),t("place-content-evenly",[["place-content","space-evenly"]]),t("place-content-baseline",[["place-content","baseline"]]),t("place-content-stretch",[["place-content","stretch"]]),t("place-items-center",[["place-items","center"]]),t("place-items-start",[["place-items","start"]]),t("place-items-end",[["place-items","end"]]),t("place-items-center-safe",[["place-items","safe center"]]),t("place-items-end-safe",[["place-items","safe end"]]),t("place-items-baseline",[["place-items","baseline"]]),t("place-items-stretch",[["place-items","stretch"]]),t("content-normal",[["align-content","normal"]]),t("content-center",[["align-content","center"]]),t("content-start",[["align-content","flex-start"]]),t("content-end",[["align-content","flex-end"]]),t("content-center-safe",[["align-content","safe center"]]),t("content-end-safe",[["align-content","safe flex-end"]]),t("content-between",[["align-content","space-between"]]),t("content-around",[["align-content","space-around"]]),t("content-evenly",[["align-content","space-evenly"]]),t("content-baseline",[["align-content","baseline"]]),t("content-stretch",[["align-content","stretch"]]),t("items-center",[["align-items","center"]]),t("items-start",[["align-items","flex-start"]]),t("items-end",[["align-items","flex-end"]]),t("items-center-safe",[["align-items","safe center"]]),t("items-end-safe",[["align-items","safe flex-end"]]),t("items-baseline",[["align-items","baseline"]]),t("items-baseline-last",[["align-items","last baseline"]]),t("items-stretch",[["align-items","stretch"]]),t("justify-normal",[["justify-content","normal"]]),t("justify-center",[["justify-content","center"]]),t("justify-start",[["justify-content","flex-start"]]),t("justify-end",[["justify-content","flex-end"]]),t("justify-center-safe",[["justify-content","safe center"]]),t("justify-end-safe",[["justify-content","safe flex-end"]]),t("justify-between",[["justify-content","space-between"]]),t("justify-around",[["justify-content","space-around"]]),t("justify-evenly",[["justify-content","space-evenly"]]),t("justify-baseline",[["justify-content","baseline"]]),t("justify-stretch",[["justify-content","stretch"]]),t("justify-items-normal",[["justify-items","normal"]]),t("justify-items-center",[["justify-items","center"]]),t("justify-items-start",[["justify-items","start"]]),t("justify-items-end",[["justify-items","end"]]),t("justify-items-center-safe",[["justify-items","safe center"]]),t("justify-items-end-safe",[["justify-items","safe end"]]),t("justify-items-stretch",[["justify-items","stretch"]]),o("gap",["--gap","--spacing"],s=>[l("gap",s)]),o("gap-x",["--gap","--spacing"],s=>[l("column-gap",s)]),o("gap-y",["--gap","--spacing"],s=>[l("row-gap",s)]),o("space-x",["--space","--spacing"],s=>[B([S("--tw-space-x-reverse","0")]),G(":where(& > :not(:last-child))",[l("--tw-sort","row-gap"),l("--tw-space-x-reverse","0"),l("margin-inline-start",`calc(${s} * var(--tw-space-x-reverse))`),l("margin-inline-end",`calc(${s} * calc(1 - var(--tw-space-x-reverse)))`)])],{supportsNegative:!0}),o("space-y",["--space","--spacing"],s=>[B([S("--tw-space-y-reverse","0")]),G(":where(& > :not(:last-child))",[l("--tw-sort","column-gap"),l("--tw-space-y-reverse","0"),l("margin-block-start",`calc(${s} * var(--tw-space-y-reverse))`),l("margin-block-end",`calc(${s} * calc(1 - var(--tw-space-y-reverse)))`)])],{supportsNegative:!0}),t("space-x-reverse",[()=>B([S("--tw-space-x-reverse","0")]),()=>G(":where(& > :not(:last-child))",[l("--tw-sort","row-gap"),l("--tw-space-x-reverse","1")])]),t("space-y-reverse",[()=>B([S("--tw-space-y-reverse","0")]),()=>G(":where(& > :not(:last-child))",[l("--tw-sort","column-gap"),l("--tw-space-y-reverse","1")])]),t("accent-auto",[["accent-color","auto"]]),a("accent",{themeKeys:["--accent-color","--color"],handle:s=>[l("accent-color",s)]}),a("caret",{themeKeys:["--caret-color","--color"],handle:s=>[l("caret-color",s)]}),a("divide",{themeKeys:["--divide-color","--border-color","--color"],handle:s=>[G(":where(& > :not(:last-child))",[l("--tw-sort","divide-color"),l("border-color",s)])]}),t("place-self-auto",[["place-self","auto"]]),t("place-self-start",[["place-self","start"]]),t("place-self-end",[["place-self","end"]]),t("place-self-center",[["place-self","center"]]),t("place-self-end-safe",[["place-self","safe end"]]),t("place-self-center-safe",[["place-self","safe center"]]),t("place-self-stretch",[["place-self","stretch"]]),t("self-auto",[["align-self","auto"]]),t("self-start",[["align-self","flex-start"]]),t("self-end",[["align-self","flex-end"]]),t("self-center",[["align-self","center"]]),t("self-end-safe",[["align-self","safe flex-end"]]),t("self-center-safe",[["align-self","safe center"]]),t("self-stretch",[["align-self","stretch"]]),t("self-baseline",[["align-self","baseline"]]),t("self-baseline-last",[["align-self","last baseline"]]),t("justify-self-auto",[["justify-self","auto"]]),t("justify-self-start",[["justify-self","flex-start"]]),t("justify-self-end",[["justify-self","flex-end"]]),t("justify-self-center",[["justify-self","center"]]),t("justify-self-end-safe",[["justify-self","safe flex-end"]]),t("justify-self-center-safe",[["justify-self","safe center"]]),t("justify-self-stretch",[["justify-self","stretch"]]);for(let s of["auto","hidden","clip","visible","scroll"])t(`overflow-${s}`,[["overflow",s]]),t(`overflow-x-${s}`,[["overflow-x",s]]),t(`overflow-y-${s}`,[["overflow-y",s]]);for(let s of["auto","contain","none"])t(`overscroll-${s}`,[["overscroll-behavior",s]]),t(`overscroll-x-${s}`,[["overscroll-behavior-x",s]]),t(`overscroll-y-${s}`,[["overscroll-behavior-y",s]]);t("scroll-auto",[["scroll-behavior","auto"]]),t("scroll-smooth",[["scroll-behavior","smooth"]]),t("truncate",[["overflow","hidden"],["text-overflow","ellipsis"],["white-space","nowrap"]]),t("text-ellipsis",[["text-overflow","ellipsis"]]),t("text-clip",[["text-overflow","clip"]]),t("hyphens-none",[["-webkit-hyphens","none"],["hyphens","none"]]),t("hyphens-manual",[["-webkit-hyphens","manual"],["hyphens","manual"]]),t("hyphens-auto",[["-webkit-hyphens","auto"],["hyphens","auto"]]),t("whitespace-normal",[["white-space","normal"]]),t("whitespace-nowrap",[["white-space","nowrap"]]),t("whitespace-pre",[["white-space","pre"]]),t("whitespace-pre-line",[["white-space","pre-line"]]),t("whitespace-pre-wrap",[["white-space","pre-wrap"]]),t("whitespace-break-spaces",[["white-space","break-spaces"]]),t("text-wrap",[["text-wrap","wrap"]]),t("text-nowrap",[["text-wrap","nowrap"]]),t("text-balance",[["text-wrap","balance"]]),t("text-pretty",[["text-wrap","pretty"]]),t("break-normal",[["overflow-wrap","normal"],["word-break","normal"]]),t("break-all",[["word-break","break-all"]]),t("break-keep",[["word-break","keep-all"]]),t("wrap-anywhere",[["overflow-wrap","anywhere"]]),t("wrap-break-word",[["overflow-wrap","break-word"]]),t("wrap-normal",[["overflow-wrap","normal"]]);for(let[s,g]of[["rounded",["border-radius"]],["rounded-s",["border-start-start-radius","border-end-start-radius"]],["rounded-e",["border-start-end-radius","border-end-end-radius"]],["rounded-t",["border-top-left-radius","border-top-right-radius"]],["rounded-r",["border-top-right-radius","border-bottom-right-radius"]],["rounded-b",["border-bottom-right-radius","border-bottom-left-radius"]],["rounded-l",["border-top-left-radius","border-bottom-left-radius"]],["rounded-ss",["border-start-start-radius"]],["rounded-se",["border-start-end-radius"]],["rounded-ee",["border-end-end-radius"]],["rounded-es",["border-end-start-radius"]],["rounded-tl",["border-top-left-radius"]],["rounded-tr",["border-top-right-radius"]],["rounded-br",["border-bottom-right-radius"]],["rounded-bl",["border-bottom-left-radius"]]])n(s,{themeKeys:["--radius"],handle:k=>g.map(C=>l(C,k)),staticValues:{none:g.map(k=>l(k,"0")),full:g.map(k=>l(k,"calc(infinity * 1px)"))}});t("border-solid",[["--tw-border-style","solid"],["border-style","solid"]]),t("border-dashed",[["--tw-border-style","dashed"],["border-style","dashed"]]),t("border-dotted",[["--tw-border-style","dotted"],["border-style","dotted"]]),t("border-double",[["--tw-border-style","double"],["border-style","double"]]),t("border-hidden",[["--tw-border-style","hidden"],["border-style","hidden"]]),t("border-none",[["--tw-border-style","none"],["border-style","none"]]);{let g=function(k,C){r.functional(k,x=>{if(!x.value){if(x.modifier)return;let $=e.get(["--default-border-width"])??"1px",U=C.width($);return U?[s(),...U]:void 0}if(x.value.kind==="arbitrary"){let $=x.value.value;switch(x.value.dataType??Q($,["color","line-width","length"])){case"line-width":case"length":{if(x.modifier)return;let T=C.width($);return T?[s(),...T]:void 0}default:return $=X($,x.modifier,e),$===null?void 0:C.color($)}}{let $=re(x,e,["--border-color","--color"]);if($)return C.color($)}{if(x.modifier)return;let $=e.resolve(x.value.value,["--border-width"]);if($){let U=C.width($);return U?[s(),...U]:void 0}if(P(x.value.value)){let U=C.width(`${x.value.value}px`);return U?[s(),...U]:void 0}}}),i(k,()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--border-color","--color"],modifiers:Array.from({length:21},(x,$)=>`${$*5}`),hasDefaultValue:!0},{values:["0","2","4","8"],valueThemeKeys:["--border-width"]}])};var _=g;let s=()=>B([S("--tw-border-style","solid")]);g("border",{width:k=>[l("border-style","var(--tw-border-style)"),l("border-width",k)],color:k=>[l("border-color",k)]}),g("border-x",{width:k=>[l("border-inline-style","var(--tw-border-style)"),l("border-inline-width",k)],color:k=>[l("border-inline-color",k)]}),g("border-y",{width:k=>[l("border-block-style","var(--tw-border-style)"),l("border-block-width",k)],color:k=>[l("border-block-color",k)]}),g("border-s",{width:k=>[l("border-inline-start-style","var(--tw-border-style)"),l("border-inline-start-width",k)],color:k=>[l("border-inline-start-color",k)]}),g("border-e",{width:k=>[l("border-inline-end-style","var(--tw-border-style)"),l("border-inline-end-width",k)],color:k=>[l("border-inline-end-color",k)]}),g("border-bs",{width:k=>[l("border-block-start-style","var(--tw-border-style)"),l("border-block-start-width",k)],color:k=>[l("border-block-start-color",k)]}),g("border-be",{width:k=>[l("border-block-end-style","var(--tw-border-style)"),l("border-block-end-width",k)],color:k=>[l("border-block-end-color",k)]}),g("border-t",{width:k=>[l("border-top-style","var(--tw-border-style)"),l("border-top-width",k)],color:k=>[l("border-top-color",k)]}),g("border-r",{width:k=>[l("border-right-style","var(--tw-border-style)"),l("border-right-width",k)],color:k=>[l("border-right-color",k)]}),g("border-b",{width:k=>[l("border-bottom-style","var(--tw-border-style)"),l("border-bottom-width",k)],color:k=>[l("border-bottom-color",k)]}),g("border-l",{width:k=>[l("border-left-style","var(--tw-border-style)"),l("border-left-width",k)],color:k=>[l("border-left-color",k)]}),n("divide-x",{defaultValue:e.get(["--default-border-width"])??"1px",themeKeys:["--divide-width","--border-width"],handleBareValue:({value:k})=>P(k)?`${k}px`:null,handle:k=>[B([S("--tw-divide-x-reverse","0")]),G(":where(& > :not(:last-child))",[l("--tw-sort","divide-x-width"),s(),l("--tw-divide-x-reverse","0"),l("border-inline-style","var(--tw-border-style)"),l("border-inline-start-width",`calc(${k} * var(--tw-divide-x-reverse))`),l("border-inline-end-width",`calc(${k} * calc(1 - var(--tw-divide-x-reverse)))`)])]}),n("divide-y",{defaultValue:e.get(["--default-border-width"])??"1px",themeKeys:["--divide-width","--border-width"],handleBareValue:({value:k})=>P(k)?`${k}px`:null,handle:k=>[B([S("--tw-divide-y-reverse","0")]),G(":where(& > :not(:last-child))",[l("--tw-sort","divide-y-width"),s(),l("--tw-divide-y-reverse","0"),l("border-bottom-style","var(--tw-border-style)"),l("border-top-style","var(--tw-border-style)"),l("border-top-width",`calc(${k} * var(--tw-divide-y-reverse))`),l("border-bottom-width",`calc(${k} * calc(1 - var(--tw-divide-y-reverse)))`)])]}),i("divide-x",()=>[{values:["0","2","4","8"],valueThemeKeys:["--divide-width","--border-width"],hasDefaultValue:!0}]),i("divide-y",()=>[{values:["0","2","4","8"],valueThemeKeys:["--divide-width","--border-width"],hasDefaultValue:!0}]),t("divide-x-reverse",[()=>B([S("--tw-divide-x-reverse","0")]),()=>G(":where(& > :not(:last-child))",[l("--tw-divide-x-reverse","1")])]),t("divide-y-reverse",[()=>B([S("--tw-divide-y-reverse","0")]),()=>G(":where(& > :not(:last-child))",[l("--tw-divide-y-reverse","1")])]);for(let k of["solid","dashed","dotted","double","none"])t(`divide-${k}`,[()=>G(":where(& > :not(:last-child))",[l("--tw-sort","divide-style"),l("--tw-border-style",k),l("border-style",k)])])}t("bg-auto",[["background-size","auto"]]),t("bg-cover",[["background-size","cover"]]),t("bg-contain",[["background-size","contain"]]),n("bg-size",{handle(s){if(s)return[l("background-size",s)]}}),t("bg-fixed",[["background-attachment","fixed"]]),t("bg-local",[["background-attachment","local"]]),t("bg-scroll",[["background-attachment","scroll"]]),t("bg-top",[["background-position","top"]]),t("bg-top-left",[["background-position","left top"]]),t("bg-top-right",[["background-position","right top"]]),t("bg-bottom",[["background-position","bottom"]]),t("bg-bottom-left",[["background-position","left bottom"]]),t("bg-bottom-right",[["background-position","right bottom"]]),t("bg-left",[["background-position","left"]]),t("bg-right",[["background-position","right"]]),t("bg-center",[["background-position","center"]]),n("bg-position",{handle(s){if(s)return[l("background-position",s)]}}),t("bg-repeat",[["background-repeat","repeat"]]),t("bg-no-repeat",[["background-repeat","no-repeat"]]),t("bg-repeat-x",[["background-repeat","repeat-x"]]),t("bg-repeat-y",[["background-repeat","repeat-y"]]),t("bg-repeat-round",[["background-repeat","round"]]),t("bg-repeat-space",[["background-repeat","space"]]),t("bg-none",[["background-image","none"]]);{let k=function($){let U="in oklab";if($?.kind==="named")switch($.value){case"longer":case"shorter":case"increasing":case"decreasing":U=`in oklch ${$.value} hue`;break;default:U=`in ${$.value}`}else $?.kind==="arbitrary"&&(U=$.value);return U},C=function({negative:$}){return U=>{if(!U.value)return;if(U.value.kind==="arbitrary"){if(U.modifier)return;let j=U.value.value;switch(U.value.dataType??Q(j,["angle"])){case"angle":return j=$?`calc(${j} * -1)`:`${j}`,[l("--tw-gradient-position",j),l("background-image",`linear-gradient(var(--tw-gradient-stops,${j}))`)];default:return $?void 0:[l("--tw-gradient-position",j),l("background-image",`linear-gradient(var(--tw-gradient-stops,${j}))`)]}}let T=U.value.value;if(!$&&g.has(T))T=g.get(T);else if(P(T))T=$?`calc(${T}deg * -1)`:`${T}deg`;else return;let O=k(U.modifier);return[l("--tw-gradient-position",`${T}`),Z("@supports (background-image: linear-gradient(in lab, red, red))",[l("--tw-gradient-position",`${T} ${O}`)]),l("background-image","linear-gradient(var(--tw-gradient-stops))")]}},x=function({negative:$}){return U=>{if(U.value?.kind==="arbitrary"){if(U.modifier)return;let j=U.value.value;return[l("--tw-gradient-position",j),l("background-image",`conic-gradient(var(--tw-gradient-stops,${j}))`)]}let T=k(U.modifier);if(!U.value)return[l("--tw-gradient-position",T),l("background-image","conic-gradient(var(--tw-gradient-stops))")];let O=U.value.value;if(P(O))return O=$?`calc(${O}deg * -1)`:`${O}deg`,[l("--tw-gradient-position",`from ${O} ${T}`),l("background-image","conic-gradient(var(--tw-gradient-stops))")]}};var M=k,q=C,H=x;let s=["oklab","oklch","srgb","hsl","longer","shorter","increasing","decreasing"],g=new Map([["to-t","to top"],["to-tr","to top right"],["to-r","to right"],["to-br","to bottom right"],["to-b","to bottom"],["to-bl","to bottom left"],["to-l","to left"],["to-tl","to top left"]]);r.functional("-bg-linear",C({negative:!0})),r.functional("bg-linear",C({negative:!1})),i("bg-linear",()=>[{values:[...g.keys()],modifiers:s},{values:["0","30","60","90","120","150","180","210","240","270","300","330"],supportsNegative:!0,modifiers:s}]),r.functional("-bg-conic",x({negative:!0})),r.functional("bg-conic",x({negative:!1})),i("bg-conic",()=>[{hasDefaultValue:!0,modifiers:s},{values:["0","30","60","90","120","150","180","210","240","270","300","330"],supportsNegative:!0,modifiers:s}]),r.functional("bg-radial",$=>{if(!$.value){let U=k($.modifier);return[l("--tw-gradient-position",U),l("background-image","radial-gradient(var(--tw-gradient-stops))")]}if($.value.kind==="arbitrary"){if($.modifier)return;let U=$.value.value;return[l("--tw-gradient-position",U),l("background-image",`radial-gradient(var(--tw-gradient-stops,${U}))`)]}}),i("bg-radial",()=>[{hasDefaultValue:!0,modifiers:s}])}r.functional("bg",s=>{if(s.value){if(s.value.kind==="arbitrary"){let g=s.value.value;switch(s.value.dataType??Q(g,["image","color","percentage","position","bg-size","length","url"])){case"percentage":case"position":return s.modifier?void 0:[l("background-position",g)];case"bg-size":case"length":case"size":return s.modifier?void 0:[l("background-size",g)];case"image":case"url":return s.modifier?void 0:[l("background-image",g)];default:return g=X(g,s.modifier,e),g===null?void 0:[l("background-color",g)]}}{let g=re(s,e,["--background-color","--color"]);if(g)return[l("background-color",g)]}{if(s.modifier)return;let g=e.resolve(s.value.value,["--background-image"]);if(g)return[l("background-image",g)]}}}),i("bg",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--background-color","--color"],modifiers:Array.from({length:21},(s,g)=>`${g*5}`)},{values:[],valueThemeKeys:["--background-image"]}]);let h=()=>B([S("--tw-gradient-position"),S("--tw-gradient-from","#0000",""),S("--tw-gradient-via","#0000",""),S("--tw-gradient-to","#0000",""),S("--tw-gradient-stops"),S("--tw-gradient-via-stops"),S("--tw-gradient-from-position","0%",""),S("--tw-gradient-via-position","50%",""),S("--tw-gradient-to-position","100%","")]);function w(s,g){r.functional(s,k=>{if(k.value){if(k.value.kind==="arbitrary"){let C=k.value.value;switch(k.value.dataType??Q(C,["color","length","percentage"])){case"length":case"percentage":return k.modifier?void 0:g.position(C);default:return C=X(C,k.modifier,e),C===null?void 0:g.color(C)}}{let C=re(k,e,["--background-color","--color"]);if(C)return g.color(C)}{if(k.modifier)return;let C=e.resolve(k.value.value,["--gradient-color-stop-positions"]);if(C)return g.position(C);if(k.value.value[k.value.value.length-1]==="%"&&P(k.value.value.slice(0,-1)))return g.position(k.value.value)}}}),i(s,()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--background-color","--color"],modifiers:Array.from({length:21},(k,C)=>`${C*5}`)},{values:Array.from({length:21},(k,C)=>`${C*5}%`),valueThemeKeys:["--gradient-color-stop-positions"]}])}w("from",{color:s=>[h(),l("--tw-sort","--tw-gradient-from"),l("--tw-gradient-from",s),l("--tw-gradient-stops","var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))")],position:s=>[h(),l("--tw-gradient-from-position",s)]}),t("via-none",[["--tw-gradient-via-stops","initial"]]),w("via",{color:s=>[h(),l("--tw-sort","--tw-gradient-via"),l("--tw-gradient-via",s),l("--tw-gradient-via-stops","var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position)"),l("--tw-gradient-stops","var(--tw-gradient-via-stops)")],position:s=>[h(),l("--tw-gradient-via-position",s)]}),w("to",{color:s=>[h(),l("--tw-sort","--tw-gradient-to"),l("--tw-gradient-to",s),l("--tw-gradient-stops","var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))")],position:s=>[h(),l("--tw-gradient-to-position",s)]}),t("mask-none",[["mask-image","none"]]),r.functional("mask",s=>{if(!s.value||s.modifier||s.value.kind!=="arbitrary")return;let g=s.value.value;switch(s.value.dataType??Q(g,["image","percentage","position","bg-size","length","url"])){case"percentage":case"position":return s.modifier?void 0:[l("mask-position",g)];case"bg-size":case"length":case"size":return[l("mask-size",g)];case"image":case"url":default:return[l("mask-image",g)]}}),t("mask-add",[["mask-composite","add"]]),t("mask-subtract",[["mask-composite","subtract"]]),t("mask-intersect",[["mask-composite","intersect"]]),t("mask-exclude",[["mask-composite","exclude"]]),t("mask-alpha",[["mask-mode","alpha"]]),t("mask-luminance",[["mask-mode","luminance"]]),t("mask-match",[["mask-mode","match-source"]]),t("mask-type-alpha",[["mask-type","alpha"]]),t("mask-type-luminance",[["mask-type","luminance"]]),t("mask-auto",[["mask-size","auto"]]),t("mask-cover",[["mask-size","cover"]]),t("mask-contain",[["mask-size","contain"]]),n("mask-size",{handle(s){if(s)return[l("mask-size",s)]}}),t("mask-top",[["mask-position","top"]]),t("mask-top-left",[["mask-position","left top"]]),t("mask-top-right",[["mask-position","right top"]]),t("mask-bottom",[["mask-position","bottom"]]),t("mask-bottom-left",[["mask-position","left bottom"]]),t("mask-bottom-right",[["mask-position","right bottom"]]),t("mask-left",[["mask-position","left"]]),t("mask-right",[["mask-position","right"]]),t("mask-center",[["mask-position","center"]]),n("mask-position",{handle(s){if(s)return[l("mask-position",s)]}}),t("mask-repeat",[["mask-repeat","repeat"]]),t("mask-no-repeat",[["mask-repeat","no-repeat"]]),t("mask-repeat-x",[["mask-repeat","repeat-x"]]),t("mask-repeat-y",[["mask-repeat","repeat-y"]]),t("mask-repeat-round",[["mask-repeat","round"]]),t("mask-repeat-space",[["mask-repeat","space"]]),t("mask-clip-border",[["mask-clip","border-box"]]),t("mask-clip-padding",[["mask-clip","padding-box"]]),t("mask-clip-content",[["mask-clip","content-box"]]),t("mask-clip-fill",[["mask-clip","fill-box"]]),t("mask-clip-stroke",[["mask-clip","stroke-box"]]),t("mask-clip-view",[["mask-clip","view-box"]]),t("mask-no-clip",[["mask-clip","no-clip"]]),t("mask-origin-border",[["mask-origin","border-box"]]),t("mask-origin-padding",[["mask-origin","padding-box"]]),t("mask-origin-content",[["mask-origin","content-box"]]),t("mask-origin-fill",[["mask-origin","fill-box"]]),t("mask-origin-stroke",[["mask-origin","stroke-box"]]),t("mask-origin-view",[["mask-origin","view-box"]]);let y=()=>B([S("--tw-mask-linear","linear-gradient(#fff, #fff)"),S("--tw-mask-radial","linear-gradient(#fff, #fff)"),S("--tw-mask-conic","linear-gradient(#fff, #fff)")]);function V(s,g){r.functional(s,k=>{if(k.value){if(k.value.kind==="arbitrary"){let C=k.value.value;switch(k.value.dataType??Q(C,["length","percentage","color"])){case"color":return C=X(C,k.modifier,e),C===null?void 0:g.color(C);case"percentage":return k.modifier||!P(C.slice(0,-1))?void 0:g.position(C);default:return k.modifier?void 0:g.position(C)}}{let C=re(k,e,["--background-color","--color"]);if(C)return g.color(C)}{if(k.modifier)return;let C=Q(k.value.value,["number","percentage"]);if(!C)return;switch(C){case"number":{let x=e.resolve(null,["--spacing"]);return!x||!ee(k.value.value)?void 0:g.position(`calc(${x} * ${k.value.value})`)}case"percentage":return P(k.value.value.slice(0,-1))?g.position(k.value.value):void 0;default:return}}}}),i(s,()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--background-color","--color"],modifiers:Array.from({length:21},(k,C)=>`${C*5}`)},{values:Array.from({length:21},(k,C)=>`${C*5}%`),valueThemeKeys:["--gradient-color-stop-positions"]}]),i(s,()=>[{values:Array.from({length:21},(k,C)=>`${C*5}%`)},{values:e.get(["--spacing"])?Tt:[]},{values:["current","inherit","transparent"],valueThemeKeys:["--background-color","--color"],modifiers:Array.from({length:21},(k,C)=>`${C*5}`)}])}let A=()=>B([S("--tw-mask-left","linear-gradient(#fff, #fff)"),S("--tw-mask-right","linear-gradient(#fff, #fff)"),S("--tw-mask-bottom","linear-gradient(#fff, #fff)"),S("--tw-mask-top","linear-gradient(#fff, #fff)")]);function b(s,g,k){V(s,{color(C){let x=[y(),A(),l("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),l("mask-composite","intersect"),l("--tw-mask-linear","var(--tw-mask-left), var(--tw-mask-right), var(--tw-mask-bottom), var(--tw-mask-top)")];for(let $ of["top","right","bottom","left"])k[$]&&(x.push(l(`--tw-mask-${$}`,`linear-gradient(to ${$}, var(--tw-mask-${$}-from-color) var(--tw-mask-${$}-from-position), var(--tw-mask-${$}-to-color) var(--tw-mask-${$}-to-position))`)),x.push(B([S(`--tw-mask-${$}-from-position`,"0%"),S(`--tw-mask-${$}-to-position`,"100%"),S(`--tw-mask-${$}-from-color`,"black"),S(`--tw-mask-${$}-to-color`,"transparent")])),x.push(l(`--tw-mask-${$}-${g}-color`,C)));return x},position(C){let x=[y(),A(),l("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),l("mask-composite","intersect"),l("--tw-mask-linear","var(--tw-mask-left), var(--tw-mask-right), var(--tw-mask-bottom), var(--tw-mask-top)")];for(let $ of["top","right","bottom","left"])k[$]&&(x.push(l(`--tw-mask-${$}`,`linear-gradient(to ${$}, var(--tw-mask-${$}-from-color) var(--tw-mask-${$}-from-position), var(--tw-mask-${$}-to-color) var(--tw-mask-${$}-to-position))`)),x.push(B([S(`--tw-mask-${$}-from-position`,"0%"),S(`--tw-mask-${$}-to-position`,"100%"),S(`--tw-mask-${$}-from-color`,"black"),S(`--tw-mask-${$}-to-color`,"transparent")])),x.push(l(`--tw-mask-${$}-${g}-position`,C)));return x}})}b("mask-x-from","from",{top:!1,right:!0,bottom:!1,left:!0}),b("mask-x-to","to",{top:!1,right:!0,bottom:!1,left:!0}),b("mask-y-from","from",{top:!0,right:!1,bottom:!0,left:!1}),b("mask-y-to","to",{top:!0,right:!1,bottom:!0,left:!1}),b("mask-t-from","from",{top:!0,right:!1,bottom:!1,left:!1}),b("mask-t-to","to",{top:!0,right:!1,bottom:!1,left:!1}),b("mask-r-from","from",{top:!1,right:!0,bottom:!1,left:!1}),b("mask-r-to","to",{top:!1,right:!0,bottom:!1,left:!1}),b("mask-b-from","from",{top:!1,right:!1,bottom:!0,left:!1}),b("mask-b-to","to",{top:!1,right:!1,bottom:!0,left:!1}),b("mask-l-from","from",{top:!1,right:!1,bottom:!1,left:!0}),b("mask-l-to","to",{top:!1,right:!1,bottom:!1,left:!0});let D=()=>B([S("--tw-mask-linear-position","0deg"),S("--tw-mask-linear-from-position","0%"),S("--tw-mask-linear-to-position","100%"),S("--tw-mask-linear-from-color","black"),S("--tw-mask-linear-to-color","transparent")]);n("mask-linear",{defaultValue:null,supportsNegative:!0,supportsFractions:!1,handleBareValue(s){return P(s.value)?`calc(1deg * ${s.value})`:null},handleNegativeBareValue(s){return P(s.value)?`calc(1deg * -${s.value})`:null},handle:s=>[y(),D(),l("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),l("mask-composite","intersect"),l("--tw-mask-linear","linear-gradient(var(--tw-mask-linear-stops, var(--tw-mask-linear-position)))"),l("--tw-mask-linear-position",s)]}),i("mask-linear",()=>[{supportsNegative:!0,values:["0","1","2","3","6","12","45","90","180"]}]),V("mask-linear-from",{color:s=>[y(),D(),l("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),l("mask-composite","intersect"),l("--tw-mask-linear-stops","var(--tw-mask-linear-position), var(--tw-mask-linear-from-color) var(--tw-mask-linear-from-position), var(--tw-mask-linear-to-color) var(--tw-mask-linear-to-position)"),l("--tw-mask-linear","linear-gradient(var(--tw-mask-linear-stops))"),l("--tw-mask-linear-from-color",s)],position:s=>[y(),D(),l("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),l("mask-composite","intersect"),l("--tw-mask-linear-stops","var(--tw-mask-linear-position), var(--tw-mask-linear-from-color) var(--tw-mask-linear-from-position), var(--tw-mask-linear-to-color) var(--tw-mask-linear-to-position)"),l("--tw-mask-linear","linear-gradient(var(--tw-mask-linear-stops))"),l("--tw-mask-linear-from-position",s)]}),V("mask-linear-to",{color:s=>[y(),D(),l("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),l("mask-composite","intersect"),l("--tw-mask-linear-stops","var(--tw-mask-linear-position), var(--tw-mask-linear-from-color) var(--tw-mask-linear-from-position), var(--tw-mask-linear-to-color) var(--tw-mask-linear-to-position)"),l("--tw-mask-linear","linear-gradient(var(--tw-mask-linear-stops))"),l("--tw-mask-linear-to-color",s)],position:s=>[y(),D(),l("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),l("mask-composite","intersect"),l("--tw-mask-linear-stops","var(--tw-mask-linear-position), var(--tw-mask-linear-from-color) var(--tw-mask-linear-from-position), var(--tw-mask-linear-to-color) var(--tw-mask-linear-to-position)"),l("--tw-mask-linear","linear-gradient(var(--tw-mask-linear-stops))"),l("--tw-mask-linear-to-position",s)]});let E=()=>B([S("--tw-mask-radial-from-position","0%"),S("--tw-mask-radial-to-position","100%"),S("--tw-mask-radial-from-color","black"),S("--tw-mask-radial-to-color","transparent"),S("--tw-mask-radial-shape","ellipse"),S("--tw-mask-radial-size","farthest-corner"),S("--tw-mask-radial-position","center")]);t("mask-circle",[["--tw-mask-radial-shape","circle"]]),t("mask-ellipse",[["--tw-mask-radial-shape","ellipse"]]),t("mask-radial-closest-side",[["--tw-mask-radial-size","closest-side"]]),t("mask-radial-farthest-side",[["--tw-mask-radial-size","farthest-side"]]),t("mask-radial-closest-corner",[["--tw-mask-radial-size","closest-corner"]]),t("mask-radial-farthest-corner",[["--tw-mask-radial-size","farthest-corner"]]),t("mask-radial-at-top",[["--tw-mask-radial-position","top"]]),t("mask-radial-at-top-left",[["--tw-mask-radial-position","top left"]]),t("mask-radial-at-top-right",[["--tw-mask-radial-position","top right"]]),t("mask-radial-at-bottom",[["--tw-mask-radial-position","bottom"]]),t("mask-radial-at-bottom-left",[["--tw-mask-radial-position","bottom left"]]),t("mask-radial-at-bottom-right",[["--tw-mask-radial-position","bottom right"]]),t("mask-radial-at-left",[["--tw-mask-radial-position","left"]]),t("mask-radial-at-right",[["--tw-mask-radial-position","right"]]),t("mask-radial-at-center",[["--tw-mask-radial-position","center"]]),n("mask-radial-at",{defaultValue:null,supportsNegative:!1,supportsFractions:!1,handle:s=>[l("--tw-mask-radial-position",s)]}),n("mask-radial",{defaultValue:null,supportsNegative:!1,supportsFractions:!1,handle:s=>[y(),E(),l("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),l("mask-composite","intersect"),l("--tw-mask-radial","radial-gradient(var(--tw-mask-radial-stops, var(--tw-mask-radial-size)))"),l("--tw-mask-radial-size",s)]}),V("mask-radial-from",{color:s=>[y(),E(),l("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),l("mask-composite","intersect"),l("--tw-mask-radial-stops","var(--tw-mask-radial-shape) var(--tw-mask-radial-size) at var(--tw-mask-radial-position), var(--tw-mask-radial-from-color) var(--tw-mask-radial-from-position), var(--tw-mask-radial-to-color) var(--tw-mask-radial-to-position)"),l("--tw-mask-radial","radial-gradient(var(--tw-mask-radial-stops))"),l("--tw-mask-radial-from-color",s)],position:s=>[y(),E(),l("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),l("mask-composite","intersect"),l("--tw-mask-radial-stops","var(--tw-mask-radial-shape) var(--tw-mask-radial-size) at var(--tw-mask-radial-position), var(--tw-mask-radial-from-color) var(--tw-mask-radial-from-position), var(--tw-mask-radial-to-color) var(--tw-mask-radial-to-position)"),l("--tw-mask-radial","radial-gradient(var(--tw-mask-radial-stops))"),l("--tw-mask-radial-from-position",s)]}),V("mask-radial-to",{color:s=>[y(),E(),l("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),l("mask-composite","intersect"),l("--tw-mask-radial-stops","var(--tw-mask-radial-shape) var(--tw-mask-radial-size) at var(--tw-mask-radial-position), var(--tw-mask-radial-from-color) var(--tw-mask-radial-from-position), var(--tw-mask-radial-to-color) var(--tw-mask-radial-to-position)"),l("--tw-mask-radial","radial-gradient(var(--tw-mask-radial-stops))"),l("--tw-mask-radial-to-color",s)],position:s=>[y(),E(),l("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),l("mask-composite","intersect"),l("--tw-mask-radial-stops","var(--tw-mask-radial-shape) var(--tw-mask-radial-size) at var(--tw-mask-radial-position), var(--tw-mask-radial-from-color) var(--tw-mask-radial-from-position), var(--tw-mask-radial-to-color) var(--tw-mask-radial-to-position)"),l("--tw-mask-radial","radial-gradient(var(--tw-mask-radial-stops))"),l("--tw-mask-radial-to-position",s)]});let N=()=>B([S("--tw-mask-conic-position","0deg"),S("--tw-mask-conic-from-position","0%"),S("--tw-mask-conic-to-position","100%"),S("--tw-mask-conic-from-color","black"),S("--tw-mask-conic-to-color","transparent")]);n("mask-conic",{defaultValue:null,supportsNegative:!0,supportsFractions:!1,handleBareValue(s){return P(s.value)?`calc(1deg * ${s.value})`:null},handleNegativeBareValue(s){return P(s.value)?`calc(1deg * -${s.value})`:null},handle:s=>[y(),N(),l("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),l("mask-composite","intersect"),l("--tw-mask-conic","conic-gradient(var(--tw-mask-conic-stops, var(--tw-mask-conic-position)))"),l("--tw-mask-conic-position",s)]}),i("mask-conic",()=>[{supportsNegative:!0,values:["0","1","2","3","6","12","45","90","180"]}]),V("mask-conic-from",{color:s=>[y(),N(),l("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),l("mask-composite","intersect"),l("--tw-mask-conic-stops","from var(--tw-mask-conic-position), var(--tw-mask-conic-from-color) var(--tw-mask-conic-from-position), var(--tw-mask-conic-to-color) var(--tw-mask-conic-to-position)"),l("--tw-mask-conic","conic-gradient(var(--tw-mask-conic-stops))"),l("--tw-mask-conic-from-color",s)],position:s=>[y(),N(),l("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),l("mask-composite","intersect"),l("--tw-mask-conic-stops","from var(--tw-mask-conic-position), var(--tw-mask-conic-from-color) var(--tw-mask-conic-from-position), var(--tw-mask-conic-to-color) var(--tw-mask-conic-to-position)"),l("--tw-mask-conic","conic-gradient(var(--tw-mask-conic-stops))"),l("--tw-mask-conic-from-position",s)]}),V("mask-conic-to",{color:s=>[y(),N(),l("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),l("mask-composite","intersect"),l("--tw-mask-conic-stops","from var(--tw-mask-conic-position), var(--tw-mask-conic-from-color) var(--tw-mask-conic-from-position), var(--tw-mask-conic-to-color) var(--tw-mask-conic-to-position)"),l("--tw-mask-conic","conic-gradient(var(--tw-mask-conic-stops))"),l("--tw-mask-conic-to-color",s)],position:s=>[y(),N(),l("mask-image","var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)"),l("mask-composite","intersect"),l("--tw-mask-conic-stops","from var(--tw-mask-conic-position), var(--tw-mask-conic-from-color) var(--tw-mask-conic-from-position), var(--tw-mask-conic-to-color) var(--tw-mask-conic-to-position)"),l("--tw-mask-conic","conic-gradient(var(--tw-mask-conic-stops))"),l("--tw-mask-conic-to-position",s)]}),t("box-decoration-slice",[["-webkit-box-decoration-break","slice"],["box-decoration-break","slice"]]),t("box-decoration-clone",[["-webkit-box-decoration-break","clone"],["box-decoration-break","clone"]]),t("bg-clip-text",[["background-clip","text"]]),t("bg-clip-border",[["background-clip","border-box"]]),t("bg-clip-padding",[["background-clip","padding-box"]]),t("bg-clip-content",[["background-clip","content-box"]]),t("bg-origin-border",[["background-origin","border-box"]]),t("bg-origin-padding",[["background-origin","padding-box"]]),t("bg-origin-content",[["background-origin","content-box"]]);for(let s of["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"])t(`bg-blend-${s}`,[["background-blend-mode",s]]),t(`mix-blend-${s}`,[["mix-blend-mode",s]]);t("mix-blend-plus-darker",[["mix-blend-mode","plus-darker"]]),t("mix-blend-plus-lighter",[["mix-blend-mode","plus-lighter"]]),t("fill-none",[["fill","none"]]),r.functional("fill",s=>{if(!s.value)return;if(s.value.kind==="arbitrary"){let k=X(s.value.value,s.modifier,e);return k===null?void 0:[l("fill",k)]}let g=re(s,e,["--fill","--color"]);if(g)return[l("fill",g)]}),i("fill",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--fill","--color"],modifiers:Array.from({length:21},(s,g)=>`${g*5}`)}]),t("stroke-none",[["stroke","none"]]),r.functional("stroke",s=>{if(s.value){if(s.value.kind==="arbitrary"){let g=s.value.value;switch(s.value.dataType??Q(g,["color","number","length","percentage"])){case"number":case"length":case"percentage":return s.modifier?void 0:[l("stroke-width",g)];default:return g=X(s.value.value,s.modifier,e),g===null?void 0:[l("stroke",g)]}}{let g=re(s,e,["--stroke","--color"]);if(g)return[l("stroke",g)]}{let g=e.resolve(s.value.value,["--stroke-width"]);if(g)return[l("stroke-width",g)];if(P(s.value.value))return[l("stroke-width",s.value.value)]}}}),i("stroke",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--stroke","--color"],modifiers:Array.from({length:21},(s,g)=>`${g*5}`)},{values:["0","1","2","3"],valueThemeKeys:["--stroke-width"]}]),t("object-contain",[["object-fit","contain"]]),t("object-cover",[["object-fit","cover"]]),t("object-fill",[["object-fit","fill"]]),t("object-none",[["object-fit","none"]]),t("object-scale-down",[["object-fit","scale-down"]]),n("object",{themeKeys:["--object-position"],handle:s=>[l("object-position",s)],staticValues:{top:[l("object-position","top")],"top-left":[l("object-position","left top")],"top-right":[l("object-position","right top")],bottom:[l("object-position","bottom")],"bottom-left":[l("object-position","left bottom")],"bottom-right":[l("object-position","right bottom")],left:[l("object-position","left")],right:[l("object-position","right")],center:[l("object-position","center")]}});for(let[s,g]of[["p","padding"],["px","padding-inline"],["py","padding-block"],["ps","padding-inline-start"],["pe","padding-inline-end"],["pbs","padding-block-start"],["pbe","padding-block-end"],["pt","padding-top"],["pr","padding-right"],["pb","padding-bottom"],["pl","padding-left"]])o(s,["--padding","--spacing"],k=>[l(g,k)]);t("text-left",[["text-align","left"]]),t("text-center",[["text-align","center"]]),t("text-right",[["text-align","right"]]),t("text-justify",[["text-align","justify"]]),t("text-start",[["text-align","start"]]),t("text-end",[["text-align","end"]]),o("indent",["--text-indent","--spacing"],s=>[l("text-indent",s)],{supportsNegative:!0}),t("align-baseline",[["vertical-align","baseline"]]),t("align-top",[["vertical-align","top"]]),t("align-middle",[["vertical-align","middle"]]),t("align-bottom",[["vertical-align","bottom"]]),t("align-text-top",[["vertical-align","text-top"]]),t("align-text-bottom",[["vertical-align","text-bottom"]]),t("align-sub",[["vertical-align","sub"]]),t("align-super",[["vertical-align","super"]]),n("align",{themeKeys:[],handle:s=>[l("vertical-align",s)]}),r.functional("font",s=>{if(!(!s.value||s.modifier)){if(s.value.kind==="arbitrary"){let g=s.value.value;switch(s.value.dataType??Q(g,["number","generic-name","family-name"])){case"generic-name":case"family-name":return[l("font-family",g)];default:return[B([S("--tw-font-weight")]),l("--tw-font-weight",g),l("font-weight",g)]}}{let g=e.resolveWith(s.value.value,["--font"],["--font-feature-settings","--font-variation-settings"]);if(g){let[k,C={}]=g;return[l("font-family",k),l("font-feature-settings",C["--font-feature-settings"]),l("font-variation-settings",C["--font-variation-settings"])]}}{let g=e.resolve(s.value.value,["--font-weight"]);if(g)return[B([S("--tw-font-weight")]),l("--tw-font-weight",g),l("font-weight",g)]}}}),i("font",()=>[{values:[],valueThemeKeys:["--font"]},{values:[],valueThemeKeys:["--font-weight"]}]),n("font-features",{themeKeys:[],handle:s=>[l("font-feature-settings",s)]}),t("uppercase",[["text-transform","uppercase"]]),t("lowercase",[["text-transform","lowercase"]]),t("capitalize",[["text-transform","capitalize"]]),t("normal-case",[["text-transform","none"]]),t("italic",[["font-style","italic"]]),t("not-italic",[["font-style","normal"]]),t("underline",[["text-decoration-line","underline"]]),t("overline",[["text-decoration-line","overline"]]),t("line-through",[["text-decoration-line","line-through"]]),t("no-underline",[["text-decoration-line","none"]]),t("font-stretch-normal",[["font-stretch","normal"]]),t("font-stretch-ultra-condensed",[["font-stretch","ultra-condensed"]]),t("font-stretch-extra-condensed",[["font-stretch","extra-condensed"]]),t("font-stretch-condensed",[["font-stretch","condensed"]]),t("font-stretch-semi-condensed",[["font-stretch","semi-condensed"]]),t("font-stretch-semi-expanded",[["font-stretch","semi-expanded"]]),t("font-stretch-expanded",[["font-stretch","expanded"]]),t("font-stretch-extra-expanded",[["font-stretch","extra-expanded"]]),t("font-stretch-ultra-expanded",[["font-stretch","ultra-expanded"]]),n("font-stretch",{handleBareValue:({value:s})=>{if(!s.endsWith("%"))return null;let g=Number(s.slice(0,-1));return!P(g)||Number.isNaN(g)||g<50||g>200?null:s},handle:s=>[l("font-stretch",s)]}),i("font-stretch",()=>[{values:["50%","75%","90%","95%","100%","105%","110%","125%","150%","200%"]}]),a("placeholder",{themeKeys:["--placeholder-color","--color"],handle:s=>[G("&::placeholder",[l("--tw-sort","placeholder-color"),l("color",s)])]}),t("decoration-solid",[["text-decoration-style","solid"]]),t("decoration-double",[["text-decoration-style","double"]]),t("decoration-dotted",[["text-decoration-style","dotted"]]),t("decoration-dashed",[["text-decoration-style","dashed"]]),t("decoration-wavy",[["text-decoration-style","wavy"]]),t("decoration-auto",[["text-decoration-thickness","auto"]]),t("decoration-from-font",[["text-decoration-thickness","from-font"]]),r.functional("decoration",s=>{if(s.value){if(s.value.kind==="arbitrary"){let g=s.value.value;switch(s.value.dataType??Q(g,["color","length","percentage"])){case"length":case"percentage":return s.modifier?void 0:[l("text-decoration-thickness",g)];default:return g=X(g,s.modifier,e),g===null?void 0:[l("text-decoration-color",g)]}}{let g=e.resolve(s.value.value,["--text-decoration-thickness"]);if(g)return s.modifier?void 0:[l("text-decoration-thickness",g)];if(P(s.value.value))return s.modifier?void 0:[l("text-decoration-thickness",`${s.value.value}px`)]}{let g=re(s,e,["--text-decoration-color","--color"]);if(g)return[l("text-decoration-color",g)]}}}),i("decoration",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--text-decoration-color","--color"],modifiers:Array.from({length:21},(s,g)=>`${g*5}`)},{values:["0","1","2"],valueThemeKeys:["--text-decoration-thickness"]}]),n("animate",{themeKeys:["--animate"],handle:s=>[l("animation",s)],staticValues:{none:[l("animation","none")]}});{let s=["var(--tw-blur,)","var(--tw-brightness,)","var(--tw-contrast,)","var(--tw-grayscale,)","var(--tw-hue-rotate,)","var(--tw-invert,)","var(--tw-saturate,)","var(--tw-sepia,)","var(--tw-drop-shadow,)"].join(" "),g=["var(--tw-backdrop-blur,)","var(--tw-backdrop-brightness,)","var(--tw-backdrop-contrast,)","var(--tw-backdrop-grayscale,)","var(--tw-backdrop-hue-rotate,)","var(--tw-backdrop-invert,)","var(--tw-backdrop-opacity,)","var(--tw-backdrop-saturate,)","var(--tw-backdrop-sepia,)"].join(" "),k=()=>B([S("--tw-blur"),S("--tw-brightness"),S("--tw-contrast"),S("--tw-grayscale"),S("--tw-hue-rotate"),S("--tw-invert"),S("--tw-opacity"),S("--tw-saturate"),S("--tw-sepia"),S("--tw-drop-shadow"),S("--tw-drop-shadow-color"),S("--tw-drop-shadow-alpha","100%",""),S("--tw-drop-shadow-size")]),C=()=>B([S("--tw-backdrop-blur"),S("--tw-backdrop-brightness"),S("--tw-backdrop-contrast"),S("--tw-backdrop-grayscale"),S("--tw-backdrop-hue-rotate"),S("--tw-backdrop-invert"),S("--tw-backdrop-opacity"),S("--tw-backdrop-saturate"),S("--tw-backdrop-sepia")]);r.functional("filter",x=>{if(!x.modifier){if(x.value===null)return[k(),l("filter",s)];if(x.value.kind==="arbitrary")return[l("filter",x.value.value)];switch(x.value.value){case"none":return[l("filter","none")]}}}),r.functional("backdrop-filter",x=>{if(!x.modifier){if(x.value===null)return[C(),l("-webkit-backdrop-filter",g),l("backdrop-filter",g)];if(x.value.kind==="arbitrary")return[l("-webkit-backdrop-filter",x.value.value),l("backdrop-filter",x.value.value)];switch(x.value.value){case"none":return[l("-webkit-backdrop-filter","none"),l("backdrop-filter","none")]}}}),n("blur",{themeKeys:["--blur"],handle:x=>[k(),l("--tw-blur",`blur(${x})`),l("filter",s)],staticValues:{none:[k(),l("--tw-blur"," "),l("filter",s)]}}),n("backdrop-blur",{themeKeys:["--backdrop-blur","--blur"],handle:x=>[C(),l("--tw-backdrop-blur",`blur(${x})`),l("-webkit-backdrop-filter",g),l("backdrop-filter",g)],staticValues:{none:[C(),l("--tw-backdrop-blur"," "),l("-webkit-backdrop-filter",g),l("backdrop-filter",g)]}}),n("brightness",{themeKeys:["--brightness"],handleBareValue:({value:x})=>P(x)?`${x}%`:null,handle:x=>[k(),l("--tw-brightness",`brightness(${x})`),l("filter",s)]}),n("backdrop-brightness",{themeKeys:["--backdrop-brightness","--brightness"],handleBareValue:({value:x})=>P(x)?`${x}%`:null,handle:x=>[C(),l("--tw-backdrop-brightness",`brightness(${x})`),l("-webkit-backdrop-filter",g),l("backdrop-filter",g)]}),i("brightness",()=>[{values:["0","50","75","90","95","100","105","110","125","150","200"],valueThemeKeys:["--brightness"]}]),i("backdrop-brightness",()=>[{values:["0","50","75","90","95","100","105","110","125","150","200"],valueThemeKeys:["--backdrop-brightness","--brightness"]}]),n("contrast",{themeKeys:["--contrast"],handleBareValue:({value:x})=>P(x)?`${x}%`:null,handle:x=>[k(),l("--tw-contrast",`contrast(${x})`),l("filter",s)]}),n("backdrop-contrast",{themeKeys:["--backdrop-contrast","--contrast"],handleBareValue:({value:x})=>P(x)?`${x}%`:null,handle:x=>[C(),l("--tw-backdrop-contrast",`contrast(${x})`),l("-webkit-backdrop-filter",g),l("backdrop-filter",g)]}),i("contrast",()=>[{values:["0","50","75","100","125","150","200"],valueThemeKeys:["--contrast"]}]),i("backdrop-contrast",()=>[{values:["0","50","75","100","125","150","200"],valueThemeKeys:["--backdrop-contrast","--contrast"]}]),n("grayscale",{themeKeys:["--grayscale"],handleBareValue:({value:x})=>P(x)?`${x}%`:null,defaultValue:"100%",handle:x=>[k(),l("--tw-grayscale",`grayscale(${x})`),l("filter",s)]}),n("backdrop-grayscale",{themeKeys:["--backdrop-grayscale","--grayscale"],handleBareValue:({value:x})=>P(x)?`${x}%`:null,defaultValue:"100%",handle:x=>[C(),l("--tw-backdrop-grayscale",`grayscale(${x})`),l("-webkit-backdrop-filter",g),l("backdrop-filter",g)]}),i("grayscale",()=>[{values:["0","25","50","75","100"],valueThemeKeys:["--grayscale"],hasDefaultValue:!0}]),i("backdrop-grayscale",()=>[{values:["0","25","50","75","100"],valueThemeKeys:["--backdrop-grayscale","--grayscale"],hasDefaultValue:!0}]),n("hue-rotate",{supportsNegative:!0,themeKeys:["--hue-rotate"],handleBareValue:({value:x})=>P(x)?`${x}deg`:null,handle:x=>[k(),l("--tw-hue-rotate",`hue-rotate(${x})`),l("filter",s)]}),n("backdrop-hue-rotate",{supportsNegative:!0,themeKeys:["--backdrop-hue-rotate","--hue-rotate"],handleBareValue:({value:x})=>P(x)?`${x}deg`:null,handle:x=>[C(),l("--tw-backdrop-hue-rotate",`hue-rotate(${x})`),l("-webkit-backdrop-filter",g),l("backdrop-filter",g)]}),i("hue-rotate",()=>[{values:["0","15","30","60","90","180"],valueThemeKeys:["--hue-rotate"]}]),i("backdrop-hue-rotate",()=>[{values:["0","15","30","60","90","180"],valueThemeKeys:["--backdrop-hue-rotate","--hue-rotate"]}]),n("invert",{themeKeys:["--invert"],handleBareValue:({value:x})=>P(x)?`${x}%`:null,defaultValue:"100%",handle:x=>[k(),l("--tw-invert",`invert(${x})`),l("filter",s)]}),n("backdrop-invert",{themeKeys:["--backdrop-invert","--invert"],handleBareValue:({value:x})=>P(x)?`${x}%`:null,defaultValue:"100%",handle:x=>[C(),l("--tw-backdrop-invert",`invert(${x})`),l("-webkit-backdrop-filter",g),l("backdrop-filter",g)]}),i("invert",()=>[{values:["0","25","50","75","100"],valueThemeKeys:["--invert"],hasDefaultValue:!0}]),i("backdrop-invert",()=>[{values:["0","25","50","75","100"],valueThemeKeys:["--backdrop-invert","--invert"],hasDefaultValue:!0}]),n("saturate",{themeKeys:["--saturate"],handleBareValue:({value:x})=>P(x)?`${x}%`:null,handle:x=>[k(),l("--tw-saturate",`saturate(${x})`),l("filter",s)]}),n("backdrop-saturate",{themeKeys:["--backdrop-saturate","--saturate"],handleBareValue:({value:x})=>P(x)?`${x}%`:null,handle:x=>[C(),l("--tw-backdrop-saturate",`saturate(${x})`),l("-webkit-backdrop-filter",g),l("backdrop-filter",g)]}),i("saturate",()=>[{values:["0","50","100","150","200"],valueThemeKeys:["--saturate"]}]),i("backdrop-saturate",()=>[{values:["0","50","100","150","200"],valueThemeKeys:["--backdrop-saturate","--saturate"]}]),n("sepia",{themeKeys:["--sepia"],handleBareValue:({value:x})=>P(x)?`${x}%`:null,defaultValue:"100%",handle:x=>[k(),l("--tw-sepia",`sepia(${x})`),l("filter",s)]}),n("backdrop-sepia",{themeKeys:["--backdrop-sepia","--sepia"],handleBareValue:({value:x})=>P(x)?`${x}%`:null,defaultValue:"100%",handle:x=>[C(),l("--tw-backdrop-sepia",`sepia(${x})`),l("-webkit-backdrop-filter",g),l("backdrop-filter",g)]}),i("sepia",()=>[{values:["0","50","100"],valueThemeKeys:["--sepia"],hasDefaultValue:!0}]),i("backdrop-sepia",()=>[{values:["0","50","100"],valueThemeKeys:["--backdrop-sepia","--sepia"],hasDefaultValue:!0}]),t("drop-shadow-none",[k,["--tw-drop-shadow"," "],["filter",s]]),r.functional("drop-shadow",x=>{let $;if(x.modifier&&(x.modifier.kind==="arbitrary"?$=x.modifier.value:P(x.modifier.value)&&($=`${x.modifier.value}%`)),!x.value){let U=e.get(["--drop-shadow"]),T=e.resolve(null,["--drop-shadow"]);return U===null||T===null?void 0:[k(),l("--tw-drop-shadow-alpha",$),...Ct("--tw-drop-shadow-size",U,$,O=>`var(--tw-drop-shadow-color, ${O})`),l("--tw-drop-shadow",K(T,",").map(O=>`drop-shadow(${O})`).join(" ")),l("filter",s)]}if(x.value.kind==="arbitrary"){let U=x.value.value;switch(x.value.dataType??Q(U,["color"])){case"color":return U=X(U,x.modifier,e),U===null?void 0:[k(),l("--tw-drop-shadow-color",J(U,"var(--tw-drop-shadow-alpha)")),l("--tw-drop-shadow","var(--tw-drop-shadow-size)")];default:return x.modifier&&!$?void 0:[k(),l("--tw-drop-shadow-alpha",$),...Ct("--tw-drop-shadow-size",U,$,O=>`var(--tw-drop-shadow-color, ${O})`),l("--tw-drop-shadow","var(--tw-drop-shadow-size)"),l("filter",s)]}}{let U=e.get([`--drop-shadow-${x.value.value}`]),T=e.resolve(x.value.value,["--drop-shadow"]);if(U&&T)return x.modifier&&!$?void 0:$?[k(),l("--tw-drop-shadow-alpha",$),...Ct("--tw-drop-shadow-size",U,$,O=>`var(--tw-drop-shadow-color, ${O})`),l("--tw-drop-shadow","var(--tw-drop-shadow-size)"),l("filter",s)]:[k(),l("--tw-drop-shadow-alpha",$),...Ct("--tw-drop-shadow-size",U,$,O=>`var(--tw-drop-shadow-color, ${O})`),l("--tw-drop-shadow",K(T,",").map(O=>`drop-shadow(${O})`).join(" ")),l("filter",s)]}{let U=re(x,e,["--drop-shadow-color","--color"]);if(U)return U==="inherit"?[k(),l("--tw-drop-shadow-color","inherit"),l("--tw-drop-shadow","var(--tw-drop-shadow-size)")]:[k(),l("--tw-drop-shadow-color",J(U,"var(--tw-drop-shadow-alpha)")),l("--tw-drop-shadow","var(--tw-drop-shadow-size)")]}}),i("drop-shadow",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--drop-shadow-color","--color"],modifiers:Array.from({length:21},(x,$)=>`${$*5}`)},{valueThemeKeys:["--drop-shadow"]}]),n("backdrop-opacity",{themeKeys:["--backdrop-opacity","--opacity"],handleBareValue:({value:x})=>At(x)?`${x}%`:null,handle:x=>[C(),l("--tw-backdrop-opacity",`opacity(${x})`),l("-webkit-backdrop-filter",g),l("backdrop-filter",g)]}),i("backdrop-opacity",()=>[{values:Array.from({length:21},(x,$)=>`${$*5}`),valueThemeKeys:["--backdrop-opacity","--opacity"]}])}{let s=`var(--tw-ease, ${e.resolve(null,["--default-transition-timing-function"])??"ease"})`,g=`var(--tw-duration, ${e.resolve(null,["--default-transition-duration"])??"0s"})`;n("transition",{defaultValue:"color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events",themeKeys:["--transition-property"],handle:k=>[l("transition-property",k),l("transition-timing-function",s),l("transition-duration",g)],staticValues:{none:[l("transition-property","none")],all:[l("transition-property","all"),l("transition-timing-function",s),l("transition-duration",g)],colors:[l("transition-property","color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to"),l("transition-timing-function",s),l("transition-duration",g)],opacity:[l("transition-property","opacity"),l("transition-timing-function",s),l("transition-duration",g)],shadow:[l("transition-property","box-shadow"),l("transition-timing-function",s),l("transition-duration",g)],transform:[l("transition-property","transform, translate, scale, rotate"),l("transition-timing-function",s),l("transition-duration",g)]}}),t("transition-discrete",[["transition-behavior","allow-discrete"]]),t("transition-normal",[["transition-behavior","normal"]]),n("delay",{handleBareValue:({value:k})=>P(k)?`${k}ms`:null,themeKeys:["--transition-delay"],handle:k=>[l("transition-delay",k)]});{let k=()=>B([S("--tw-duration")]);t("duration-initial",[k,["--tw-duration","initial"]]),r.functional("duration",C=>{if(C.modifier||!C.value)return;let x=null;if(C.value.kind==="arbitrary"?x=C.value.value:(x=e.resolve(C.value.fraction??C.value.value,["--transition-duration"]),x===null&&P(C.value.value)&&(x=`${C.value.value}ms`)),x!==null)return[k(),l("--tw-duration",x),l("transition-duration",x)]})}i("delay",()=>[{values:["75","100","150","200","300","500","700","1000"],valueThemeKeys:["--transition-delay"]}]),i("duration",()=>[{values:["75","100","150","200","300","500","700","1000"],valueThemeKeys:["--transition-duration"]}])}{let s=()=>B([S("--tw-ease")]);n("ease",{themeKeys:["--ease"],handle:g=>[s(),l("--tw-ease",g),l("transition-timing-function",g)],staticValues:{initial:[s(),l("--tw-ease","initial")],linear:[s(),l("--tw-ease","linear"),l("transition-timing-function","linear")]}})}t("will-change-auto",[["will-change","auto"]]),t("will-change-scroll",[["will-change","scroll-position"]]),t("will-change-contents",[["will-change","contents"]]),t("will-change-transform",[["will-change","transform"]]),n("will-change",{themeKeys:[],handle:s=>[l("will-change",s)]}),t("content-none",[["--tw-content","none"],["content","none"]]),n("content",{themeKeys:["--content"],handle:s=>[B([S("--tw-content",'""')]),l("--tw-content",s),l("content","var(--tw-content)")]});{let s="var(--tw-contain-size,) var(--tw-contain-layout,) var(--tw-contain-paint,) var(--tw-contain-style,)",g=()=>B([S("--tw-contain-size"),S("--tw-contain-layout"),S("--tw-contain-paint"),S("--tw-contain-style")]);t("contain-none",[["contain","none"]]),t("contain-content",[["contain","content"]]),t("contain-strict",[["contain","strict"]]),t("contain-size",[g,["--tw-contain-size","size"],["contain",s]]),t("contain-inline-size",[g,["--tw-contain-size","inline-size"],["contain",s]]),t("contain-layout",[g,["--tw-contain-layout","layout"],["contain",s]]),t("contain-paint",[g,["--tw-contain-paint","paint"],["contain",s]]),t("contain-style",[g,["--tw-contain-style","style"],["contain",s]]),n("contain",{themeKeys:[],handle:k=>[l("contain",k)]})}t("forced-color-adjust-none",[["forced-color-adjust","none"]]),t("forced-color-adjust-auto",[["forced-color-adjust","auto"]]),o("leading",["--leading","--spacing"],s=>[B([S("--tw-leading")]),l("--tw-leading",s),l("line-height",s)],{staticValues:{none:[B([S("--tw-leading")]),l("--tw-leading","1"),l("line-height","1")]}}),n("tracking",{supportsNegative:!0,themeKeys:["--tracking"],handle:s=>[B([S("--tw-tracking")]),l("--tw-tracking",s),l("letter-spacing",s)]}),t("antialiased",[["-webkit-font-smoothing","antialiased"],["-moz-osx-font-smoothing","grayscale"]]),t("subpixel-antialiased",[["-webkit-font-smoothing","auto"],["-moz-osx-font-smoothing","auto"]]);{let s="var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)",g=()=>B([S("--tw-ordinal"),S("--tw-slashed-zero"),S("--tw-numeric-figure"),S("--tw-numeric-spacing"),S("--tw-numeric-fraction")]);t("normal-nums",[["font-variant-numeric","normal"]]),t("ordinal",[g,["--tw-ordinal","ordinal"],["font-variant-numeric",s]]),t("slashed-zero",[g,["--tw-slashed-zero","slashed-zero"],["font-variant-numeric",s]]),t("lining-nums",[g,["--tw-numeric-figure","lining-nums"],["font-variant-numeric",s]]),t("oldstyle-nums",[g,["--tw-numeric-figure","oldstyle-nums"],["font-variant-numeric",s]]),t("proportional-nums",[g,["--tw-numeric-spacing","proportional-nums"],["font-variant-numeric",s]]),t("tabular-nums",[g,["--tw-numeric-spacing","tabular-nums"],["font-variant-numeric",s]]),t("diagonal-fractions",[g,["--tw-numeric-fraction","diagonal-fractions"],["font-variant-numeric",s]]),t("stacked-fractions",[g,["--tw-numeric-fraction","stacked-fractions"],["font-variant-numeric",s]])}{let s=()=>B([S("--tw-outline-style","solid")]);r.static("outline-hidden",()=>[l("--tw-outline-style","none"),l("outline-style","none"),W("@media","(forced-colors: active)",[l("outline","2px solid transparent"),l("outline-offset","2px")])]),t("outline-none",[["--tw-outline-style","none"],["outline-style","none"]]),t("outline-solid",[["--tw-outline-style","solid"],["outline-style","solid"]]),t("outline-dashed",[["--tw-outline-style","dashed"],["outline-style","dashed"]]),t("outline-dotted",[["--tw-outline-style","dotted"],["outline-style","dotted"]]),t("outline-double",[["--tw-outline-style","double"],["outline-style","double"]]),r.functional("outline",g=>{if(g.value===null){if(g.modifier)return;let k=e.get(["--default-outline-width"])??"1px";return[s(),l("outline-style","var(--tw-outline-style)"),l("outline-width",k)]}if(g.value.kind==="arbitrary"){let k=g.value.value;switch(g.value.dataType??Q(k,["color","length","number","percentage"])){case"length":case"number":case"percentage":return g.modifier?void 0:[s(),l("outline-style","var(--tw-outline-style)"),l("outline-width",k)];default:return k=X(k,g.modifier,e),k===null?void 0:[l("outline-color",k)]}}{let k=re(g,e,["--outline-color","--color"]);if(k)return[l("outline-color",k)]}{if(g.modifier)return;let k=e.resolve(g.value.value,["--outline-width"]);if(k)return[s(),l("outline-style","var(--tw-outline-style)"),l("outline-width",k)];if(P(g.value.value))return[s(),l("outline-style","var(--tw-outline-style)"),l("outline-width",`${g.value.value}px`)]}}),i("outline",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--outline-color","--color"],modifiers:Array.from({length:21},(g,k)=>`${k*5}`),hasDefaultValue:!0},{values:["0","1","2","4","8"],valueThemeKeys:["--outline-width"]}]),n("outline-offset",{supportsNegative:!0,themeKeys:["--outline-offset"],handleBareValue:({value:g})=>P(g)?`${g}px`:null,handle:g=>[l("outline-offset",g)]}),i("outline-offset",()=>[{supportsNegative:!0,values:["0","1","2","4","8"],valueThemeKeys:["--outline-offset"]}])}n("opacity",{themeKeys:["--opacity"],handleBareValue:({value:s})=>At(s)?`${s}%`:null,handle:s=>[l("opacity",s)]}),i("opacity",()=>[{values:Array.from({length:21},(s,g)=>`${g*5}`),valueThemeKeys:["--opacity"]}]),n("underline-offset",{supportsNegative:!0,themeKeys:["--text-underline-offset"],handleBareValue:({value:s})=>P(s)?`${s}px`:null,handle:s=>[l("text-underline-offset",s)],staticValues:{auto:[l("text-underline-offset","auto")]}}),i("underline-offset",()=>[{supportsNegative:!0,values:["0","1","2","4","8"],valueThemeKeys:["--text-underline-offset"]}]),r.functional("text",s=>{if(s.value){if(s.value.kind==="arbitrary"){let g=s.value.value;switch(s.value.dataType??Q(g,["color","length","percentage","absolute-size","relative-size"])){case"size":case"length":case"percentage":case"absolute-size":case"relative-size":{if(s.modifier){let C=s.modifier.kind==="arbitrary"?s.modifier.value:e.resolve(s.modifier.value,["--leading"]);if(!C&&ee(s.modifier.value)){let x=e.resolve(null,["--spacing"]);if(!x)return null;C=`calc(${x} * ${s.modifier.value})`}return!C&&s.modifier.value==="none"&&(C="1"),C?[l("font-size",g),l("line-height",C)]:null}return[l("font-size",g)]}default:return g=X(g,s.modifier,e),g===null?void 0:[l("color",g)]}}{let g=re(s,e,["--text-color","--color"]);if(g)return[l("color",g)]}{let g=e.resolveWith(s.value.value,["--text"],["--line-height","--letter-spacing","--font-weight"]);if(g){let[k,C={}]=Array.isArray(g)?g:[g];if(s.modifier){let x=s.modifier.kind==="arbitrary"?s.modifier.value:e.resolve(s.modifier.value,["--leading"]);if(!x&&ee(s.modifier.value)){let U=e.resolve(null,["--spacing"]);if(!U)return null;x=`calc(${U} * ${s.modifier.value})`}if(!x&&s.modifier.value==="none"&&(x="1"),!x)return null;let $=[l("font-size",k)];return x&&$.push(l("line-height",x)),$}return typeof C=="string"?[l("font-size",k),l("line-height",C)]:[l("font-size",k),l("line-height",C["--line-height"]?`var(--tw-leading, ${C["--line-height"]})`:void 0),l("letter-spacing",C["--letter-spacing"]?`var(--tw-tracking, ${C["--letter-spacing"]})`:void 0),l("font-weight",C["--font-weight"]?`var(--tw-font-weight, ${C["--font-weight"]})`:void 0)]}}}}),i("text",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--text-color","--color"],modifiers:Array.from({length:21},(s,g)=>`${g*5}`)},{values:[],valueThemeKeys:["--text"],modifiers:[],modifierThemeKeys:["--leading"]}]);let L=()=>B([S("--tw-text-shadow-color"),S("--tw-text-shadow-alpha","100%","")]);t("text-shadow-initial",[L,["--tw-text-shadow-color","initial"]]),r.functional("text-shadow",s=>{let g;if(s.modifier&&(s.modifier.kind==="arbitrary"?g=s.modifier.value:P(s.modifier.value)&&(g=`${s.modifier.value}%`)),!s.value){let k=e.get(["--text-shadow"]);return k===null?void 0:[L(),l("--tw-text-shadow-alpha",g),...Ce("text-shadow",k,g,C=>`var(--tw-text-shadow-color, ${C})`)]}if(s.value.kind==="arbitrary"){let k=s.value.value;switch(s.value.dataType??Q(k,["color"])){case"color":return k=X(k,s.modifier,e),k===null?void 0:[L(),l("--tw-text-shadow-color",J(k,"var(--tw-text-shadow-alpha)"))];default:return[L(),l("--tw-text-shadow-alpha",g),...Ce("text-shadow",k,g,x=>`var(--tw-text-shadow-color, ${x})`)]}}switch(s.value.value){case"none":return s.modifier?void 0:[L(),l("text-shadow","none")];case"inherit":return s.modifier?void 0:[L(),l("--tw-text-shadow-color","inherit")]}{let k=e.get([`--text-shadow-${s.value.value}`]);if(k)return[L(),l("--tw-text-shadow-alpha",g),...Ce("text-shadow",k,g,C=>`var(--tw-text-shadow-color, ${C})`)]}{let k=re(s,e,["--text-shadow-color","--color"]);if(k)return[L(),l("--tw-text-shadow-color",J(k,"var(--tw-text-shadow-alpha)"))]}}),i("text-shadow",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--text-shadow-color","--color"],modifiers:Array.from({length:21},(s,g)=>`${g*5}`)},{values:["none"]},{valueThemeKeys:["--text-shadow"],modifiers:Array.from({length:21},(s,g)=>`${g*5}`),hasDefaultValue:e.get(["--text-shadow"])!==null}]);{let x=function(T){return`var(--tw-ring-inset,) 0 0 0 calc(${T} + var(--tw-ring-offset-width)) var(--tw-ring-color, ${C})`},$=function(T){return`inset 0 0 0 ${T} var(--tw-inset-ring-color, currentcolor)`};var ue=x,ce=$;let s=["var(--tw-inset-shadow)","var(--tw-inset-ring-shadow)","var(--tw-ring-offset-shadow)","var(--tw-ring-shadow)","var(--tw-shadow)"].join(", "),g="0 0 #0000",k=()=>B([S("--tw-shadow",g),S("--tw-shadow-color"),S("--tw-shadow-alpha","100%",""),S("--tw-inset-shadow",g),S("--tw-inset-shadow-color"),S("--tw-inset-shadow-alpha","100%",""),S("--tw-ring-color"),S("--tw-ring-shadow",g),S("--tw-inset-ring-color"),S("--tw-inset-ring-shadow",g),S("--tw-ring-inset"),S("--tw-ring-offset-width","0px",""),S("--tw-ring-offset-color","#fff"),S("--tw-ring-offset-shadow",g)]);t("shadow-initial",[k,["--tw-shadow-color","initial"]]),r.functional("shadow",T=>{let O;if(T.modifier&&(T.modifier.kind==="arbitrary"?O=T.modifier.value:P(T.modifier.value)&&(O=`${T.modifier.value}%`)),!T.value){let j=e.get(["--shadow"]);return j===null?void 0:[k(),l("--tw-shadow-alpha",O),...Ce("--tw-shadow",j,O,ge=>`var(--tw-shadow-color, ${ge})`),l("box-shadow",s)]}if(T.value.kind==="arbitrary"){let j=T.value.value;switch(T.value.dataType??Q(j,["color"])){case"color":return j=X(j,T.modifier,e),j===null?void 0:[k(),l("--tw-shadow-color",J(j,"var(--tw-shadow-alpha)"))];default:return[k(),l("--tw-shadow-alpha",O),...Ce("--tw-shadow",j,O,Mt=>`var(--tw-shadow-color, ${Mt})`),l("box-shadow",s)]}}switch(T.value.value){case"none":return T.modifier?void 0:[k(),l("--tw-shadow",g),l("box-shadow",s)];case"inherit":return T.modifier?void 0:[k(),l("--tw-shadow-color","inherit")]}{let j=e.get([`--shadow-${T.value.value}`]);if(j)return[k(),l("--tw-shadow-alpha",O),...Ce("--tw-shadow",j,O,ge=>`var(--tw-shadow-color, ${ge})`),l("box-shadow",s)]}{let j=re(T,e,["--box-shadow-color","--color"]);if(j)return[k(),l("--tw-shadow-color",J(j,"var(--tw-shadow-alpha)"))]}}),i("shadow",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--box-shadow-color","--color"],modifiers:Array.from({length:21},(T,O)=>`${O*5}`)},{values:["none"]},{valueThemeKeys:["--shadow"],modifiers:Array.from({length:21},(T,O)=>`${O*5}`),hasDefaultValue:e.get(["--shadow"])!==null}]),t("inset-shadow-initial",[k,["--tw-inset-shadow-color","initial"]]),r.functional("inset-shadow",T=>{let O;if(T.modifier&&(T.modifier.kind==="arbitrary"?O=T.modifier.value:P(T.modifier.value)&&(O=`${T.modifier.value}%`)),!T.value){let j=e.get(["--inset-shadow"]);return j===null?void 0:[k(),l("--tw-inset-shadow-alpha",O),...Ce("--tw-inset-shadow",j,O,ge=>`var(--tw-inset-shadow-color, ${ge})`),l("box-shadow",s)]}if(T.value.kind==="arbitrary"){let j=T.value.value;switch(T.value.dataType??Q(j,["color"])){case"color":return j=X(j,T.modifier,e),j===null?void 0:[k(),l("--tw-inset-shadow-color",J(j,"var(--tw-inset-shadow-alpha)"))];default:return[k(),l("--tw-inset-shadow-alpha",O),...Ce("--tw-inset-shadow",j,O,Mt=>`var(--tw-inset-shadow-color, ${Mt})`,"inset"),l("box-shadow",s)]}}switch(T.value.value){case"none":return T.modifier?void 0:[k(),l("--tw-inset-shadow",g),l("box-shadow",s)];case"inherit":return T.modifier?void 0:[k(),l("--tw-inset-shadow-color","inherit")]}{let j=e.get([`--inset-shadow-${T.value.value}`]);if(j)return[k(),l("--tw-inset-shadow-alpha",O),...Ce("--tw-inset-shadow",j,O,ge=>`var(--tw-inset-shadow-color, ${ge})`),l("box-shadow",s)]}{let j=re(T,e,["--box-shadow-color","--color"]);if(j)return[k(),l("--tw-inset-shadow-color",J(j,"var(--tw-inset-shadow-alpha)"))]}}),i("inset-shadow",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--box-shadow-color","--color"],modifiers:Array.from({length:21},(T,O)=>`${O*5}`)},{values:["none"]},{valueThemeKeys:["--inset-shadow"],modifiers:Array.from({length:21},(T,O)=>`${O*5}`),hasDefaultValue:e.get(["--inset-shadow"])!==null}]),t("ring-inset",[k,["--tw-ring-inset","inset"]]);let C=e.get(["--default-ring-color"])??"currentcolor";r.functional("ring",T=>{if(!T.value){if(T.modifier)return;let O=e.get(["--default-ring-width"])??"1px";return[k(),l("--tw-ring-shadow",x(O)),l("box-shadow",s)]}if(T.value.kind==="arbitrary"){let O=T.value.value;switch(T.value.dataType??Q(O,["color","length"])){case"length":return T.modifier?void 0:[k(),l("--tw-ring-shadow",x(O)),l("box-shadow",s)];default:return O=X(O,T.modifier,e),O===null?void 0:[l("--tw-ring-color",O)]}}{let O=re(T,e,["--ring-color","--color"]);if(O)return[l("--tw-ring-color",O)]}{if(T.modifier)return;let O=e.resolve(T.value.value,["--ring-width"]);if(O===null&&P(T.value.value)&&(O=`${T.value.value}px`),O)return[k(),l("--tw-ring-shadow",x(O)),l("box-shadow",s)]}}),i("ring",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--ring-color","--color"],modifiers:Array.from({length:21},(T,O)=>`${O*5}`)},{values:["0","1","2","4","8"],valueThemeKeys:["--ring-width"],hasDefaultValue:!0}]),r.functional("inset-ring",T=>{if(!T.value)return T.modifier?void 0:[k(),l("--tw-inset-ring-shadow",$("1px")),l("box-shadow",s)];if(T.value.kind==="arbitrary"){let O=T.value.value;switch(T.value.dataType??Q(O,["color","length"])){case"length":return T.modifier?void 0:[k(),l("--tw-inset-ring-shadow",$(O)),l("box-shadow",s)];default:return O=X(O,T.modifier,e),O===null?void 0:[l("--tw-inset-ring-color",O)]}}{let O=re(T,e,["--ring-color","--color"]);if(O)return[l("--tw-inset-ring-color",O)]}{if(T.modifier)return;let O=e.resolve(T.value.value,["--ring-width"]);if(O===null&&P(T.value.value)&&(O=`${T.value.value}px`),O)return[k(),l("--tw-inset-ring-shadow",$(O)),l("box-shadow",s)]}}),i("inset-ring",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--ring-color","--color"],modifiers:Array.from({length:21},(T,O)=>`${O*5}`)},{values:["0","1","2","4","8"],valueThemeKeys:["--ring-width"],hasDefaultValue:!0}]);let U="var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)";r.functional("ring-offset",T=>{if(T.value){if(T.value.kind==="arbitrary"){let O=T.value.value;switch(T.value.dataType??Q(O,["color","length"])){case"length":return T.modifier?void 0:[l("--tw-ring-offset-width",O),l("--tw-ring-offset-shadow",U)];default:return O=X(O,T.modifier,e),O===null?void 0:[l("--tw-ring-offset-color",O)]}}{let O=e.resolve(T.value.value,["--ring-offset-width"]);if(O)return T.modifier?void 0:[l("--tw-ring-offset-width",O),l("--tw-ring-offset-shadow",U)];if(P(T.value.value))return T.modifier?void 0:[l("--tw-ring-offset-width",`${T.value.value}px`),l("--tw-ring-offset-shadow",U)]}{let O=re(T,e,["--ring-offset-color","--color"]);if(O)return[l("--tw-ring-offset-color",O)]}}})}return i("ring-offset",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--ring-offset-color","--color"],modifiers:Array.from({length:21},(s,g)=>`${g*5}`)},{values:["0","1","2","4","8"],valueThemeKeys:["--ring-offset-width"]}]),r.functional("@container",s=>{let g=null;if(s.value===null?g="inline-size":s.value.kind==="arbitrary"?g=s.value.value:s.value.kind==="named"&&s.value.value==="normal"?g="normal":!1,g!==null)return s.modifier?[l("container-type",g),l("container-name",s.modifier.value)]:[l("container-type",g)]}),i("@container",()=>[{values:["normal"],valueThemeKeys:[],hasDefaultValue:!0}]),r}var nr=["number","integer","ratio","percentage"];function ii(e){let r=ye(e.params);return $o(r)?i=>{let t={"--value":{usedSpacingInteger:!1,usedSpacingNumber:!1,themeKeys:new Set,literals:new Set},"--modifier":{usedSpacingInteger:!1,usedSpacingNumber:!1,themeKeys:new Set,literals:new Set}};I(e.nodes,n=>{if(n.kind!=="declaration"||!n.value||!n.value.includes("--value(")&&!n.value.includes("--modifier("))return;let a=F(n.value);I(a,o=>{if(o.kind!=="function")return;if(o.value==="--spacing"&&!(t["--modifier"].usedSpacingNumber&&t["--value"].usedSpacingNumber))return I(o.nodes,u=>{if(u.kind!=="function"||u.value!=="--value"&&u.value!=="--modifier")return;let c=u.value;for(let m of u.nodes)if(m.kind==="word"){if(m.value==="integer")t[c].usedSpacingInteger||=!0;else if(m.value==="number"&&(t[c].usedSpacingNumber||=!0,t["--modifier"].usedSpacingNumber&&t["--value"].usedSpacingNumber))return R.Stop}}),R.Continue;if(o.value!=="--value"&&o.value!=="--modifier")return;let f=K(Y(o.nodes),",");for(let[u,c]of f.entries())c=c.replace(/\\\*/g,"*"),c=c.replace(/--(.*?)\s--(.*?)/g,"--$1-*--$2"),c=c.replace(/\s+/g,""),c=c.replace(/(-\*){2,}/g,"-*"),c[0]==="-"&&c[1]==="-"&&!c.includes("-*")&&(c+="-*"),f[u]=c;o.nodes=F(f.join(","));for(let u of o.nodes)if(u.kind==="word"&&(u.value[0]==='"'||u.value[0]==="'")&&u.value[0]===u.value[u.value.length-1]){let c=u.value.slice(1,-1);t[o.value].literals.add(c)}else if(u.kind==="word"&&u.value[0]==="-"&&u.value[1]==="-"){let c=u.value.replace(/-\*.*$/g,"");t[o.value].themeKeys.add(c)}else if(u.kind==="word"&&!(u.value[0]==="["&&u.value[u.value.length-1]==="]")&&!nr.includes(u.value)){console.warn(`Unsupported bare value data type: "${u.value}". +Only valid data types are: ${nr.map(w=>`"${w}"`).join(", ")}. +`);let c=u.value,m=structuredClone(o),d="\xB6";I(m.nodes,w=>{if(w.kind==="word"&&w.value===c)return R.ReplaceSkip({kind:"word",value:d})});let p="^".repeat(Y([u]).length),v=Y([m]).indexOf(d),h=["```css",Y([o])," ".repeat(v)+p,"```"].join(` +`);console.warn(h)}}),n.value=Y(a)}),i.utilities.functional(r.slice(0,-2),n=>{let a=te(e),o=n.value,f=n.modifier;if(o===null)return;let u=!1,c=!1,m=!1,d=!1,p=new Map,v=!1;if(I([a],(h,w)=>{let y=w.parent;if(y?.kind!=="rule"&&y?.kind!=="at-rule"||h.kind!=="declaration"||!h.value)return;let V=!1,A=F(h.value);if(I(A,b=>{if(b.kind==="function"){if(b.value==="--value"){u=!0;let D=Xr(o,b,i);return D?(c=!0,D.ratio?v=!0:p.set(h,y),R.ReplaceSkip(D.nodes)):(u||=!1,V=!0,R.Stop)}else if(b.value==="--modifier"){if(f===null)return V=!0,R.Stop;m=!0;let D=Xr(f,b,i);return D?(d=!0,R.ReplaceSkip(D.nodes)):(m||=!1,V=!0,R.Stop)}}}),V)return R.ReplaceSkip([]);h.value=Y(A)}),u&&!c||m&&!d||v&&d||f&&!v&&!d)return null;if(v)for(let[h,w]of p){let y=w.nodes.indexOf(h);y!==-1&&w.nodes.splice(y,1)}return a.nodes}),i.utilities.suggest(r.slice(0,-2),()=>{let n=[],a=[];for(let[o,{literals:f,usedSpacingNumber:u,usedSpacingInteger:c,themeKeys:m}]of[[n,t["--value"]],[a,t["--modifier"]]]){for(let d of f)o.push(d);if(u)o.push(...Tt);else if(c)for(let d of Tt)P(d)&&o.push(d);for(let d of i.theme.keysInNamespaces(m))o.push(d.replace(ti,(p,v,h)=>`${v}.${h}`))}return[{values:n,modifiers:a}]})}:So(r)?i=>{i.utilities.static(r,()=>e.nodes.map(te))}:null}function Xr(e,r,i){for(let t of r.nodes){if(e.kind==="named"&&t.kind==="word"&&(t.value[0]==="'"||t.value[0]==='"')&&t.value[t.value.length-1]===t.value[0]&&t.value.slice(1,-1)===e.value)return{nodes:F(e.value)};if(e.kind==="named"&&t.kind==="word"&&t.value[0]==="-"&&t.value[1]==="-"){let n=t.value;if(n.endsWith("-*")){n=n.slice(0,-2);let a=i.theme.resolve(e.value,[n]);if(a)return{nodes:F(a)}}else{let a=n.split("-*");if(a.length<=1)continue;let o=[a.shift()],f=i.theme.resolveWith(e.value,o,a);if(f){let[,u={}]=f;{let c=u[a.pop()];if(c)return{nodes:F(c)}}}}}else if(e.kind==="named"&&t.kind==="word"){if(!nr.includes(t.value))continue;let n=t.value==="ratio"&&"fraction"in e?e.fraction:e.value;if(!n)continue;let a=Q(n,[t.value]);if(a===null)continue;if(a==="ratio"){let[o,f]=K(n,"/").map(Number);if(!P(o)||!P(f))continue}else{if(a==="number"&&!ee(n))continue;if(a==="percentage"&&!P(n.slice(0,-1)))continue}if(a==="ratio"){let[o,f]=K(n,"/");return{nodes:F(`${o.trim()} / ${f.trim()}`),ratio:!0}}return{nodes:F(n),ratio:!1}}else if(e.kind==="arbitrary"&&t.kind==="word"&&t.value[0]==="["&&t.value[t.value.length-1]==="]"){let n=t.value.slice(1,-1);if(n==="*")return{nodes:F(e.value)};if("dataType"in e&&e.dataType&&e.dataType!==n)continue;if("dataType"in e&&e.dataType)return{nodes:F(e.value)};if(Q(e.value,[n])!==null)return{nodes:F(e.value)}}}}function Ce(e,r,i,t,n=""){let a=!1,o=lt(r,u=>i==null?t(u):u.startsWith("current")?t(J(u,i)):((u.startsWith("var(")||i.startsWith("var("))&&(a=!0),t(ei(u,i))));function f(u){return n?K(u,",").map(c=>n.trim()+" "+c.trim()).join(", "):u}return a?[l(e,f(lt(r,t))),Z("@supports (color: lab(from red l a b))",[l(e,f(o))])]:[l(e,f(o))]}function Ct(e,r,i,t,n=""){let a=!1,o=K(r,",").map(f=>lt(f,u=>i==null?t(u):u.startsWith("current")?t(J(u,i)):((u.startsWith("var(")||i.startsWith("var("))&&(a=!0),t(ei(u,i))))).map(f=>`drop-shadow(${f})`).join(" ");return a?[l(e,n+K(r,",").map(f=>`drop-shadow(${lt(f,t)})`).join(" ")),Z("@supports (color: lab(from red l a b))",[l(e,n+o)])]:[l(e,n+o)]}var ni=/^-?[a-z][a-zA-Z0-9_-]*/,ho=37,vo=47,ko=46,wo=97,bo=122,yo=65,xo=90,St=48,$t=57,Ao=95,Co=45;function So(e){let r=ni.exec(e);if(r===null)return!1;let i=r[0],t=e.slice(i.length);if(t.length===0&&i.endsWith("-"))return!1;if(t.length===0)return!0;let n=!1;for(let a=0;a$t)return!1;break}case vo:{if(a===t.length-1||n)return!1;n=!0;break}case ko:{let u=(t[a-1]||i[i.length-1]||"").charCodeAt(0);if(u$t)return!1;let m=(t[a+1]||"").charCodeAt(0);if(m$t)return!1;break}case Ao:case Co:continue;default:{if(o>=wo&&o<=bo||o>=yo&&o<=xo||o>=St&&o<=$t)continue;return!1}}}return!0}function $o(e){if(!e.endsWith("-*"))return!1;e=e.slice(0,-2);let r=ni.exec(e);if(r===null)return!1;let i=r[0];return e.slice(i.length).length===0}var or={"--alpha":To,"--spacing":Vo,"--theme":Eo,theme:No};function To(e,r,i,...t){let[n,a]=K(i,"/").map(o=>o.trim());if(!n||!a)throw new Error(`The --alpha(\u2026) function requires a color and an alpha value, e.g.: \`--alpha(${n||"var(--my-color)"} / ${a||"50%"})\``);if(t.length>0)throw new Error(`The --alpha(\u2026) function only accepts one argument, e.g.: \`--alpha(${n||"var(--my-color)"} / ${a||"50%"})\``);return J(n,a)}function Vo(e,r,i,...t){if(!i)throw new Error("The --spacing(\u2026) function requires an argument, but received none.");if(t.length>0)throw new Error(`The --spacing(\u2026) function only accepts a single argument, but received ${t.length+1}.`);let n=e.theme.resolve(null,["--spacing"]);if(!n)throw new Error("The --spacing(\u2026) function requires that the `--spacing` theme variable exists, but it was not found.");return`calc(${n} * ${i})`}function Eo(e,r,i,...t){if(!i.startsWith("--"))throw new Error("The --theme(\u2026) function can only be used with CSS variables from your theme.");let n=!1;i.endsWith(" inline")&&(n=!0,i=i.slice(0,-7)),r.kind==="at-rule"&&(n=!0);let a=e.resolveThemeValue(i,n);if(!a){if(t.length>0)return t.join(", ");throw new Error(`Could not resolve value for theme function: \`theme(${i})\`. Consider checking if the variable name is correct or provide a fallback value to silence this error.`)}if(t.length===0)return a;let o=t.join(", ");if(o==="initial")return a;if(a==="initial")return o;if(a.startsWith("var(")||a.startsWith("theme(")||a.startsWith("--theme(")){let f=F(a);return Oo(f,o),Y(f)}return a}function No(e,r,i,...t){i=Ro(i);let n=e.resolveThemeValue(i);if(!n&&t.length>0)return t.join(", ");if(!n)throw new Error(`Could not resolve value for theme function: \`theme(${i})\`. Consider checking if the path is correct or provide a fallback value to silence this error.`);return n}var oi=new RegExp(Object.keys(or).map(e=>`${e}\\(`).join("|"));function Be(e,r){let i=0;return I(e,t=>{if(t.kind==="declaration"&&t.value&&oi.test(t.value)){i|=8,t.value=li(t.value,t,r);return}t.kind==="at-rule"&&(t.name==="@media"||t.name==="@custom-media"||t.name==="@container"||t.name==="@supports")&&oi.test(t.params)&&(i|=8,t.params=li(t.params,t,r))}),i}function li(e,r,i){let t=F(e);return I(t,n=>{if(n.kind==="function"&&n.value in or){let a=K(Y(n.nodes).trim(),",").map(f=>f.trim()),o=or[n.value](i,r,...a);return R.Replace(F(o))}}),Y(t)}function Ro(e){if(e[0]!=="'"&&e[0]!=='"')return e;let r="",i=e[0];for(let t=1;t{if(i.kind==="function"&&!(i.value!=="var"&&i.value!=="theme"&&i.value!=="--theme"))if(i.nodes.length===1)i.nodes.push({kind:"word",value:`, ${r}`});else{let t=i.nodes[i.nodes.length-1];t.kind==="word"&&t.value==="initial"&&(t.value=r)}})}function Vt(e,r){let i=e.length,t=r.length,n=i=48&&o<=57&&f>=48&&f<=57){let u=a,c=a+1,m=a,d=a+1;for(o=e.charCodeAt(c);o>=48&&o<=57;)o=e.charCodeAt(++c);for(f=r.charCodeAt(d);f>=48&&f<=57;)f=r.charCodeAt(++d);let p=e.slice(u,c),v=r.slice(m,d),h=Number(p)-Number(v);if(h)return h;if(pv)return 1;continue}if(o!==f)return o-f}return e.length-r.length}function ai(e){if(e[0]!=="["||e[e.length-1]!=="]")return null;let r=1,i=r,t=e.length-1;for(;Ye(e.charCodeAt(r));)r++;{for(i=r;r=65&&m<=90)&&!(m>=97&&m<=122)&&!(m>=48&&m<=57)&&!(m===45||m===95))break}if(i===r)return null}let n=e.slice(i,r);for(;Ye(e.charCodeAt(r));)r++;if(r===t)return{attribute:n,operator:null,quote:null,value:null,sensitivity:null};let a=null,o=e.charCodeAt(r);if(o===61)a="=",r++;else if((o===126||o===124||o===94||o===36||o===42)&&e.charCodeAt(r+1)===61)a=e[r]+"=",r+=2;else return null;for(;Ye(e.charCodeAt(r));)r++;if(r===t)return null;let f="",u=null;if(o=e.charCodeAt(r),o===39||o===34){u=e[r],r++,i=r;for(let m=r;m[-+]?(?:\d*\.)?\d+)(?[a-z]+|%)?$/i,ae=new z(e=>{let r=_o.exec(e);if(!r)return null;let i=r.groups?.value;if(i===void 0)return null;let t=Number(i);if(Number.isNaN(t))return null;let n=r.groups?.unit;return n===void 0?[t,null]:[t,n]});function si(e){let r=!1;return I(e,{exit(i){if(i.kind!=="function"||i.value!=="calc"&&i.value!==""||i.nodes.length!==5||i.nodes[2].kind!=="word"||i.nodes[2].value!=="*"&&i.nodes[2].value!=="+")return;let t=i.nodes[0],n=i.nodes[4];if(Io(t,n)){r=!0;let a={kind:"function",value:i.value,nodes:[n,i.nodes[1],i.nodes[2],i.nodes[3],t]};return R.ReplaceSkip(a)}}}),[r,e]}function Io(e,r){let i=e.kind==="word"?ae.get(e.value):null,t=r.kind==="word"?ae.get(r.value):null;if(i!==null&&t===null)return!0;if(i===null&&t!==null)return!1;if(i!==null&&t!==null){let[n,a]=i,[o,f]=t;if(a===null&&f!==null)return!0;if(a!==null&&f===null)return!1;if(n!==o)return n-o>0;if(a!==f)return(a??"").localeCompare(f??"")>0}return Y([e]).localeCompare(Y([r]))>0}function qe(e,r=null){return Array.isArray(e)&&e.length===2&&typeof e[1]=="object"&&typeof e[1]!==null?r?e[1][r]??null:e[0]:Array.isArray(e)&&r===null?e.join(", "):typeof e=="string"&&r===null?e:null}function ui(e,{theme:r},i){for(let t of i){let n=Ge([t]);n&&e.theme.clearNamespace(`--${n}`,4)}for(let[t,n]of Do(r)){if(typeof n!="string"&&typeof n!="number")continue;if(typeof n=="string"&&(n=n.replace(//g,"1")),t[0]==="opacity"&&(typeof n=="number"||typeof n=="string")){let o=typeof n=="string"?parseFloat(n):n;o>=0&&o<=1&&(n=o*100+"%")}let a=Ge(t);a&&e.theme.add(`--${a}`,""+n,7)}if(Object.hasOwn(r,"fontFamily")){let t=5;{let n=qe(r.fontFamily.sans);n&&e.theme.hasDefault("--font-sans")&&(e.theme.add("--default-font-family",n,t),e.theme.add("--default-font-feature-settings",qe(r.fontFamily.sans,"fontFeatureSettings")??"normal",t),e.theme.add("--default-font-variation-settings",qe(r.fontFamily.sans,"fontVariationSettings")??"normal",t))}{let n=qe(r.fontFamily.mono);n&&e.theme.hasDefault("--font-mono")&&(e.theme.add("--default-mono-font-family",n,t),e.theme.add("--default-mono-font-feature-settings",qe(r.fontFamily.mono,"fontFeatureSettings")??"normal",t),e.theme.add("--default-mono-font-variation-settings",qe(r.fontFamily.mono,"fontVariationSettings")??"normal",t))}}return r}function Do(e){let r=[];return ci(e,[],(i,t)=>{if(Ko(i))return r.push([t,i]),1;if(Mo(i)){r.push([t,i[0]]);for(let n of Reflect.ownKeys(i[1]))r.push([[...t,`-${n}`],i[1][n]]);return 1}if(Array.isArray(i)&&i.every(n=>typeof n=="string"))return t[0]==="fontSize"?(r.push([t,i[0]]),i.length>=2&&r.push([[...t,"-line-height"],i[1]])):r.push([t,i.join(", ")]),1}),r}var Uo={borderWidth:"border-width",outlineWidth:"outline-width",ringColor:"ring-color",ringWidth:"ring-width",transitionDuration:"transition-duration",transitionTimingFunction:"transition-timing-function"},Lo={animation:"animate",aspectRatio:"aspect",borderRadius:"radius",boxShadow:"shadow",colors:"color",containers:"container",fontFamily:"font",fontSize:"text",letterSpacing:"tracking",lineHeight:"leading",maxWidth:"container",screens:"breakpoint",transitionTimingFunction:"ease"},zo=/^[a-zA-Z0-9-_%/.]+$/;function Ge(e){let r=Uo[e[0]];if(r&&e[1]==="DEFAULT")return`default-${r}`;if(e[0]==="container")return null;for(let t of e)if(!zo.test(t))return null;let i=Lo[e[0]];return i&&(e=e.slice(),e[0]=i),e.map((t,n,a)=>t==="1"&&n!==a.length-1?"":t).map((t,n)=>(t=t.replaceAll(".","_"),(n===0||t.startsWith("-")||t==="lineHeight")&&(t=t.replace(/([a-z])([A-Z])/g,(o,f,u)=>`${f}-${u.toLowerCase()}`)),t)).filter((t,n)=>t!=="DEFAULT"||n!==e.length-1).join("-")}function Ko(e){return typeof e=="number"||typeof e=="string"}function Mo(e){if(!Array.isArray(e)||e.length!==2||typeof e[0]!="string"&&typeof e[0]!="number"||e[1]===void 0||e[1]===null||typeof e[1]!="object")return!1;for(let r of Reflect.ownKeys(e[1]))if(typeof r!="string"||typeof e[1][r]!="string"&&typeof e[1][r]!="number")return!1;return!0}function ci(e,r=[],i){for(let t of Reflect.ownKeys(e)){let n=e[t];if(n==null)continue;let a=[...r,t],o=i(n,a)??0;if(o!==1){if(o===2)return 2;if(!(!Array.isArray(n)&&typeof n!="object")&&ci(n,a,i)===2)return 2}}}function lr(e,r=null){let[i,t]=at(F(e),r);return i?Y(t):e}function at(e,r=null){let i=!1;return I(e,{exit(t){if(t.kind==="word"&&t.value!=="0"){let n=jo(t.value,r);return n===null||n===t.value?void 0:(i=!0,R.ReplaceSkip(oe(n)))}else if(t.kind==="function"&&(t.value==="calc"||t.value==="")){if(t.nodes.length!==5||t.nodes[2].kind!=="word")return;let n=t.nodes[0],a=t.nodes[2].value,o=t.nodes[4],f=n.kind==="word"?ae.get(n.value):null,u=o.kind==="word"?ae.get(o.value):null;if(a==="*"&&(f?.[0]===0&&f?.[1]===null||u?.[0]===0&&u?.[1]===null))return i=!0,R.ReplaceSkip(oe("0"));if(a==="*"){if(f?.[0]===1&&f?.[1]===null)return i=!0,R.ReplaceSkip(o);if(u?.[0]===1&&u?.[1]===null)return i=!0,R.ReplaceSkip(n)}if(a==="*"||a==="+"){let c=f??u,m=f===null?n:u===null?o:null;if(c!==null&&m!==null&&m.kind==="function"&&(m.value==="calc"||m.value==="")&&m.nodes.length===5&&m.nodes[2].kind==="word"&&m.nodes[2].value===a){let d=m.nodes[0],p=m.nodes[4],v=d.kind==="word"?ae.get(d.value):null,h=p.kind==="word"?ae.get(p.value):null,w=v??h,y=v===null?d:h===null?p:null;if(w!==null&&y!==null){if(a==="*"&&!(c[1]===null&&w[1]===null||c[1]===null&&w[1]!==null||c[1]!==null&&w[1]===null)||a==="+"&&c[1]!==w[1])return;let V;switch(a){case"*":{V=`${c[0]*w[0]}${c[1]??w[1]??""}`;break}case"+":{V=`${c[0]+w[0]}${c[1]??w[1]??""}`;break}default:return}if(i=!0,a==="*"&&V==="1")return R.ReplaceSkip(y);let A={kind:"function",value:t.value,nodes:[oe(V),t.nodes[1],t.nodes[2],t.nodes[3],y]};return R.ReplaceSkip(A)}}}if(f===null||u===null)return;switch(a){case"*":{if(f[1]===u[1]||f[1]===null&&u[1]!==null||f[1]!==null&&u[1]===null)return i=!0,R.ReplaceSkip(oe(`${f[0]*u[0]}${f[1]??u[1]??""}`));break}case"+":{if(f[1]===u[1])return i=!0,R.ReplaceSkip(oe(`${f[0]+u[0]}${f[1]??""}`));break}case"-":{if(f[1]===u[1])return i=!0,R.ReplaceSkip(oe(`${f[0]-u[0]}${f[1]??""}`));break}case"/":{if(u[0]!==0&&(f[1]===null&&u[1]===null||f[1]!==null&&u[1]===null))return i=!0,R.ReplaceSkip(oe(`${f[0]/u[0]}${f[1]??""}`));break}}}}}),[i,e]}function jo(e,r=null){let i=ae.get(e);if(i===null)return null;let[t,n]=i;if(n===null)return`${t}`;if(t===0&&We(e))return"0";switch(n.toLowerCase()){case"in":return`${t*96}px`;case"cm":return`${t*96/2.54}px`;case"mm":return`${t*96/2.54/10}px`;case"q":return`${t*96/2.54/10/4}px`;case"pc":return`${t*96/6}px`;case"pt":return`${t*96/72}px`;case"rem":return r!==null?`${t*r}px`:null;case"grad":return`${t*.9}deg`;case"rad":return`${t*180/Math.PI}deg`;case"turn":return`${t*360}deg`;case"ms":return`${t/1e3}s`;case"khz":return`${t*1e3}hz`;default:return`${t}${n}`}}function De(e,r="top",i="right",t="bottom",n="left"){return mi(`${e}-${r}`,`${e}-${i}`,`${e}-${t}`,`${e}-${n}`)}function mi(e="top",r="right",i="bottom",t="left"){return{1:[[e,0],[r,0],[i,0],[t,0]],2:[[e,0],[r,1],[i,0],[t,1]],3:[[e,0],[r,1],[i,2],[t,1]],4:[[e,0],[r,1],[i,2],[t,3]]}}function le(e,r){return{1:[[e,0],[r,0]],2:[[e,0],[r,1]]}}var fi={inset:mi(),margin:De("margin"),padding:De("padding"),"scroll-margin":De("scroll-margin"),"scroll-padding":De("scroll-padding"),"border-width":De("border","top-width","right-width","bottom-width","left-width"),"border-style":De("border","top-style","right-style","bottom-style","left-style"),"border-color":De("border","top-color","right-color","bottom-color","left-color"),gap:le("row-gap","column-gap"),overflow:le("overflow-x","overflow-y"),"overscroll-behavior":le("overscroll-behavior-x","overscroll-behavior-y")},pi={"inset-block":le("top","bottom"),"inset-inline":le("left","right"),"margin-block":le("margin-top","margin-bottom"),"margin-inline":le("margin-left","margin-right"),"padding-block":le("padding-top","padding-bottom"),"padding-inline":le("padding-left","padding-right"),"scroll-margin-block":le("scroll-margin-top","scroll-margin-bottom"),"scroll-margin-inline":le("scroll-margin-left","scroll-margin-right"),"scroll-padding-block":le("scroll-padding-top","scroll-padding-bottom"),"scroll-padding-inline":le("scroll-padding-left","scroll-padding-right")},di={"border-block":["border-bottom","border-top"],"border-block-color":["border-bottom-color","border-top-color"],"border-block-style":["border-bottom-style","border-top-style"],"border-block-width":["border-bottom-width","border-top-width"],"border-inline":["border-left","border-right"],"border-inline-color":["border-left-color","border-right-color"],"border-inline-style":["border-left-style","border-right-style"],"border-inline-width":["border-left-width","border-right-width"]};function gi(e,r){if(r&2){if(e.property in pi){let i=K(e.value," ");return pi[e.property][i.length]?.map(([t,n])=>l(t,i[n],e.important))}if(e.property in di)return di[e.property]?.map(i=>l(i,e.value,e.important))}if(e.property in fi){let i=K(e.value," ");return fi[e.property][i.length]?.map(([t,n])=>l(t,i[n],e.important))}return null}function Fo(e){return{kind:"combinator",value:e}}function Wo(e,r){return{kind:"function",value:e,nodes:r}}function Ve(e){return{kind:"selector",value:e}}function Bo(e){return{kind:"separator",value:e}}function Yo(e){return{kind:"value",value:e}}function ke(e){let r="";for(let i of e)switch(i.kind){case"combinator":case"selector":case"separator":case"value":{r+=i.value;break}case"function":r+=i.value+"("+ke(i.nodes)+")"}return r}var hi=92,qo=93,vi=41,Go=58,ki=44,Ho=34,Zo=46,wi=62,bi=10,Qo=35,yi=91,xi=40,Ai=43,Jo=39,Ci=32,Si=9,$i=126,Xo=38,el=42;function Ue(e){e=e.replaceAll(`\r +`,` +`);let r=[],i=[],t=null,n="",a;for(let o=0;o0){let p=Ve(n);t?t.nodes.push(p):r.push(p),n=""}let u=o,c=o+1;for(;c0){let c=Ve(n);u.nodes.push(c),n=""}i.length>0?t=i[i.length-1]:t=null;break}case Zo:case Go:case Qo:{if(n.length>0){let u=Ve(n);t?t.nodes.push(u):r.push(u)}n=e[o];break}case yi:{if(n.length>0){let m=Ve(n);t?t.nodes.push(m):r.push(m)}n="";let u=o,c=0;for(let m=o+1;m0){let u=Ve(n);t?t.nodes.push(u):r.push(u),n=""}t?t.nodes.push(Ve(e[o])):r.push(Ve(e[o]));break}case hi:{n+=e[o]+e[o+1],o+=1;break}default:n+=e[o]}}return n.length>0&&r.push(Ve(n)),r}function de(e,r){for(let i in e)delete e[i];return Object.assign(e,r)}function Le(e){let r=[];for(let i of K(e,".")){if(!i.includes("[")){r.push(i);continue}let t=0;for(;;){let n=i.indexOf("[",t),a=i.indexOf("]",n);if(n===-1||a===-1)break;n>t&&r.push(i.slice(t,n)),r.push(i.slice(n+1,a)),t=a+1}t<=i.length-1&&r.push(i.slice(t))}return r}function ar(e,r){let i=e;return i.storage[Ri]??=tl(),i.storage[Oi]??=nl(i),i.storage[Pi]??=al(),i.storage[_i]??=ul(),i.storage[Ii]??=fl(),i.storage[ur]??=vl(i),i.storage[Rt]??=wl(i,r),i.storage[we]??=_l(i),i.storage[cr]??=Dl(),i.storage[Ot]??=Ul(i),i.storage[fr]??=Ll(i),i.storage[_t]??=zl(i),i.storage[zi]??=Kl(i),i.storage[st]??=rl(i),i}var Ri=Symbol();function tl(){return new z(e=>new z(r=>({rem:e,features:r})))}var st=Symbol();function rl(e){return new z(r=>{let i=e.storage[we].get(r);return function(n,a){let o=typeof n=="string"?n:e.printCandidate(n),f=i.get(o);if(typeof f!="string")return!1;let u=typeof a=="string"?a:e.printCandidate(a),c=i.get(u);return typeof c!="string"?!1:f===c}})}function il(e,r){let i=0;return r?.collapse&&(i|=1),r?.logicalToPhysical&&(i|=2),ar(e,r).storage[Ri].get(r?.rem??null).get(i)}var Oi=Symbol();function nl(e){return new z(r=>new z(i=>({features:i,designSystem:e,signatureOptions:r})))}function ol(e,r,i){let t=0;return i?.collapse&&(t|=1),ar(e).storage[Oi].get(r).get(t)}function sr(e,r,i){let t=il(e,i),n=ol(e,t,i),a=ar(e),o=new Set,f=a.storage[Pi].get(n);for(let u of r)o.add(f.get(u));return o.size<=1||!(n.features&1)?Array.from(o):ll(n,Array.from(o))}function ll(e,r){let i=e.designSystem,t=new z(f=>new z(u=>new Set)),n=e.designSystem.theme.prefix?`${e.designSystem.theme.prefix}:`:"";for(let f of r){let u=K(f,":"),c=u.pop(),m=c.endsWith("!");m&&(c=c.slice(0,-1));let d=u.length>0?`${u.join(":")}:`:"",p=m?"!":"";t.get(d).get(p).add(`${n}${c}`)}let a=new Set;for(let[f,u]of t.entries())for(let[c,m]of u.entries())for(let d of o(Array.from(m)))n&&d.startsWith(n)&&(d=d.slice(n.length)),a.add(`${f}${d}${c}`);return Array.from(a);function o(f){let u=e.signatureOptions,c=i.storage[Ot].get(u),m=i.storage[cr].get(u),d=f.map(A=>c.get(A));if(d.some(A=>A.has("line-height"))){let A=i.theme.keysInNamespaces(["--text"]);if(A.length>0){let b=new Set,D=new Set;for(let N of d)if(N.has("line-height"))for(let L of N.get("line-height")){if(D.has(L))continue;D.add(L);let _=i.storage[Rt]?.get(L)??null;if(_!==null)if(ee(_)){b.add(_);for(let M of A)c.get(`text-${M}/${_}`)}else{b.add(L);for(let M of A)c.get(`text-${M}/[${L}]`)}}let E=new Set;for(let N of d)if(N.has("font-size")){for(let L of N.get("font-size"))if(!E.has(L)){E.add(L);for(let _ of b)ee(_)?c.get(`text-[${L}]/${_}`):c.get(`text-[${L}]/[${_}]`)}}}}let p=new z(A=>{let b=new z(E=>new z(N=>new Set)),D=new Set(c.get(A).keys());if(D.size===0)return b;for(let E of se(i,A))if(!(E.kind!=="functional"||E.value===null)){for(let N of i.utilities.keys("functional")){if(N===E.root)continue;let L=Di(i,{...Fe(E),root:N}),_=c.get(L);for(let[M,q]of _)if(D.has(M))for(let H of q)b.get(M).get(H).add(L)}return b}return b}),v=d.map((A,b)=>{let D=null;for(let E of A.keys()){let N=new Set;for(let L of m.get(E).values())for(let _ of L)N.add(_);for(let L of A.get(E))for(let _ of p.get(f[b]).get(E).get(L))N.add(_);if(D===null?D=N:D=Ni(D,N),D.size===0)return D}return D??new Set}),h=new z(A=>new Set([A]));for(let A=0;AA.split(",").map(Number));for(let A of h.values()){let b=Array.from(A).sort((D,E)=>D-E);w.get(b.join(","))}let y=new Set(f),V=new Set;for(let A of w.values())for(let b of jl(A)){if(b.some(N=>V.has(f[N])))continue;let D=b.flatMap(N=>v[N]).reduce(Ni),E=i.storage[we].get(u).get(b.map(N=>f[N]).sort((N,L)=>N.localeCompare(L)).join(" "));for(let N of D)if(i.storage[we].get(u).get(N)===E){y.add(N);for(let _ of b)f[_]!==N&&V.add(f[_]);break}}for(let A of V)y.delete(A);return Array.from(y)}}var Pi=Symbol();function al(){return new z(e=>{let r=e.designSystem,i=r.theme.prefix?`${r.theme.prefix}:`:"",t=r.storage[_i].get(e),n=r.storage[Ii].get(e);return new z((a,o)=>{for(let f of r.parseCandidate(a)){let u=f.variants.slice().reverse().flatMap(d=>t.get(d)),c=f.important;if(c||u.length>0){let p=o.get(r.printCandidate({...f,variants:[],important:!1}));return r.theme.prefix!==null&&u.length>0&&(p=p.slice(i.length)),u.length>0&&(p=`${u.map(v=>r.printVariant(v)).join(":")}:${p}`),c&&(p+="!"),r.theme.prefix!==null&&u.length>0&&(p=`${i}${p}`),p}let m=n.get(a);if(m!==a)return m}return a})})}var sl=[gl,Nl,Rl,Tl],_i=Symbol();function ul(){return new z(e=>new z(r=>{let i=[r];for(let t of sl)for(let n of i.splice(0)){let a=t(je(n),e);if(Array.isArray(a)){i.push(...a);continue}else i.push(a)}return i}))}var cl=[dl,ml,hl,Ol,bl,xl,$l,Vl,El,Pl],Ii=Symbol();function fl(){return new z(e=>{let r=e.designSystem;return new z(i=>{for(let t of r.parseCandidate(i)){let n=Fe(t);for(let o of cl)n=o(n,e);let a=r.printCandidate(n);if(i!==a)return a}return i})})}var pl=["t","tr","r","br","b","bl","l","tl"];function dl(e){if(e.kind==="static"&&e.root.startsWith("bg-gradient-to-")){let r=e.root.slice(15);return pl.includes(r)&&(e.root=`bg-linear-to-${r}`),e}return e}function ml(e,r){let i=r.designSystem.storage[ur];if(e.kind==="arbitrary"){let[t,n]=i(e.value,e.modifier===null?1:0);t!==e.value&&(e.value=t,n!==null&&(e.modifier=n))}else if(e.kind==="functional"&&e.value?.kind==="arbitrary"){let[t,n]=i(e.value.value,e.modifier===null?1:0);t!==e.value.value&&(e.value.value=t,n!==null&&(e.modifier=n))}return e}function gl(e,r){let i=r.designSystem.storage[ur],t=Pt(e);for(let[n]of t)if(n.kind==="arbitrary"){let[a]=i(n.selector,2);a!==n.selector&&(n.selector=a)}else if(n.kind==="functional"&&n.value?.kind==="arbitrary"){let[a]=i(n.value.value,2);a!==n.value.value&&(n.value.value=a)}return e}function hl(e,r){return e.kind==="arbitrary"?e.value=Vi(e.value,r.designSystem):e.kind==="functional"&&e.value?.kind==="arbitrary"&&(e.value.value=Vi(e.value.value,r.designSystem)),e}function Vi(e,r){let i=r.theme.prefix?`--${r.theme.prefix}-spacing`:"--spacing",t=F(e);return I(t,n=>{if(!(n.kind!=="function"||n.value!=="calc")&&n.nodes.length===5&&!(n.nodes[2].kind!=="word"||n.nodes[2].value!=="*")&&!(n.nodes[0].kind!=="function"||n.nodes[0].value!=="var"||n.nodes[0].nodes.length!==1||n.nodes[0].nodes[0].kind!=="word"||n.nodes[0].nodes[0].value!==i))return R.Replace(F(`--spacing(${Y([n.nodes[4]])})`))}),Y(t)}var ur=Symbol();function vl(e){return r(e);function r(i){function t(f,u=0){let c=F(f);if(u&2)return[Et(c,o),null];let m=0,d=0;if(I(c,h=>{h.kind==="function"&&h.value==="theme"&&(m+=1,I(h.nodes,w=>w.kind==="separator"&&w.value.includes(",")?R.Stop:w.kind==="word"&&w.value==="/"?(d+=1,R.Stop):R.Skip))}),m===0)return[f,null];if(d===0)return[Et(c,a),null];if(d>1)return[Et(c,o),null];let p=null;return[Et(c,(h,w)=>{let y=K(h,"/").map(V=>V.trim());if(y.length>2)return null;if(c.length===1&&y.length===2&&u&1){let[V,A]=y;if(/^\d+%$/.test(A))p={kind:"named",value:A.slice(0,-1)};else if(/^0?\.\d+$/.test(A)){let b=Number(A)*100;p={kind:Number.isInteger(b)?"named":"arbitrary",value:b.toString()}}else p={kind:"arbitrary",value:A};h=V}return a(h,w)||o(h,w)}),p]}function n(f,u=!0){let c=`--${Ge(Le(f))}`;return i.theme.get([c])?u&&i.theme.prefix?`--${i.theme.prefix}-${c.slice(2)}`:c:null}function a(f,u){let c=n(f);if(c)return u?`var(${c}, ${u})`:`var(${c})`;let m=Le(f);if(m[0]==="spacing"&&i.theme.get(["--spacing"])){let d=m[1];return ee(d)?`--spacing(${d})`:null}return null}function o(f,u){let c=K(f,"/").map(p=>p.trim());f=c.shift();let m=n(f,!1);if(!m)return null;let d=c.length>0?`/${c.join("/")}`:"";return u?`--theme(${m}${d}, ${u})`:`--theme(${m}${d})`}return t}}function Et(e,r){return I(e,(i,t)=>{if(i.kind==="function"&&i.value==="theme"){if(i.nodes.length<1)return;i.nodes[0].kind==="separator"&&i.nodes[0].value.trim()===""&&i.nodes.shift();let n=i.nodes[0];if(n.kind!=="word")return;let a=n.value,o=1;for(let c=o;c0?r(a,Y(f)):r(a);if(u===null)return;if(t.parent){let c=t.parent.nodes.indexOf(i)-1;for(;c!==-1;){let m=t.parent.nodes[c];if(m.kind==="separator"&&m.value.trim()===""){c-=1;continue}/^[-+*/]$/.test(m.value.trim())&&(u=`(${u})`);break}}return R.Replace(F(u))}}),Y(e)}function kl(e){if(e[0]!=="'"&&e[0]!=='"')return e;let r="",i=e[0];for(let t=1;t{if(n===0)return null;let f=ae.get(lr(o,r?.rem??null));if(!f)return null;let[u,c]=f;return c!==a?null:u/n})}function bl(e,r){if(e.kind!=="arbitrary"&&!(e.kind==="functional"&&e.value?.kind==="arbitrary"))return e;let i=r.designSystem,t=i.storage[fr].get(r.signatureOptions),n=i.storage[we].get(r.signatureOptions),a=i.storage[st].get(r.signatureOptions),o=i.printCandidate(e),f=n.get(o);if(typeof f!="string")return e;for(let c of u(f,e))if(a(e,c)&&yl(i,e,c))return c;return e;function*u(c,m){let d=t.get(c);if(d.length>1){let p;for(let v of d)if(v[0]!=="-"){if(p)return;p=v}if(p)for(let v of se(i,p))yield v;return}if(d.length===0&&m.modifier){let p={...m,modifier:null},v=n.get(i.printCandidate(p));if(typeof v=="string")for(let h of u(v,p))yield Object.assign({},h,{modifier:m.modifier})}if(d.length===1)for(let p of se(i,d[0]))yield p;else if(d.length===0){let p=m.kind==="arbitrary"?m.value:m.value?.value??null;if(p===null)return;if(r.signatureOptions.rem!==null&&m.kind==="functional"&&m.value?.kind==="arbitrary"){let w=i.storage[Rt]?.get(p)??null;w!==null&&ee(w)&&(yield Object.assign({},m,{value:{kind:"named",value:w,fraction:null}}))}let v=i.storage[Rt]?.get(p)??null,h="";v!==null&&v<0&&(h="-",v=Math.abs(v));for(let w of Array.from(i.utilities.keys("functional")).sort((y,V)=>+(y[0]==="-")-+(V[0]==="-"))){h&&(w=`${h}${w}`);for(let y of se(i,`${w}-${p}`))yield y;if(m.modifier)for(let y of se(i,`${w}-${p}${m.modifier}`))yield y;if(v!==null){for(let y of se(i,`${w}-${v}`))yield y;if(m.modifier)for(let y of se(i,`${w}-${v}${ot(m.modifier)}`))yield y}for(let y of se(i,`${w}-[${p}]`))yield y;if(m.modifier)for(let y of se(i,`${w}-[${p}]${ot(m.modifier)}`))yield y}}}}function yl(e,r,i){let t=null;if(r.kind==="functional"&&r.value?.kind==="arbitrary"&&r.value.value.includes("var(--")?t=r.value.value:r.kind==="arbitrary"&&r.value.includes("var(--")&&(t=r.value),t===null)return!0;let n=e.candidatesToCss([e.printCandidate(i)]).join(` +`),a=!0;return I(F(t),o=>{if(o.kind==="function"&&o.value==="var"){let f=o.nodes[0].value;if(!new RegExp(`var\\(${f}[,)]\\s*`,"g").test(n)||n.includes(`${f}:`))return a=!1,R.Stop}}),a}function xl(e,r){if(e.kind!=="functional"||e.value?.kind!=="named")return e;let i=r.designSystem,t=i.storage[fr].get(r.signatureOptions),n=i.storage[we].get(r.signatureOptions),a=i.storage[st].get(r.signatureOptions),o=i.printCandidate(e),f=n.get(o);if(typeof f!="string")return e;for(let c of u(f,e))if(a(e,c))return c;return e;function*u(c,m){let d=t.get(c);if(d.length>1){let p;for(let v of d)if(v[0]!=="-"){if(p)return;p=v}if(p)for(let v of se(i,p))yield v;return}if(d.length===0&&m.modifier){let p={...m,modifier:null},v=n.get(i.printCandidate(p));if(typeof v=="string")for(let h of u(v,p))yield Object.assign({},h,{modifier:m.modifier})}if(d.length===1)for(let p of se(i,d[0]))yield p}}var Al=new Map([["order-none","order-0"],["break-words","wrap-break-word"],["overflow-ellipsis","text-ellipsis"]]),Cl=new Map([[/^(-)?start-(.*?)$/,"$1inset-s-$2"],[/^(-)?end-(.*?)$/,"$1inset-e-$2"]]);function*Sl(e){let r=Al.get(e);r&&(yield r);for(let[i,t]of Cl){let n=e.replace(i,t);n!==e&&(yield n)}}function $l(e,r){let i=r.designSystem,t=i.storage[st].get(r.signatureOptions),n=Di(i,e);for(let a of Sl(n)){if(!t(e,a))continue;let[o]=se(i,a);return o}return e}function Tl(e,r){let i=r.designSystem,t=i.storage[_t],n=i.storage[zi],a=Pt(e);for(let[o]of a){if(o.kind==="compound")continue;let f=i.printVariant(o),u=t.get(f);if(typeof u!="string")continue;let c=n.get(u);if(c.length!==1)continue;let m=c[0],d=i.parseVariant(m);d!==null&&de(o,d)}return e}function Vl(e,r){let i=r.designSystem,t=i.storage[we].get(r.signatureOptions);if(e.kind==="functional"&&e.value?.kind==="arbitrary"&&e.value.dataType!==null){let n=i.printCandidate({...e,value:{...e.value,dataType:null}});t.get(i.printCandidate(e))===t.get(n)&&(e.value.dataType=null)}return e}function El(e,r){if(e.kind!=="functional"||e.value?.kind!=="arbitrary")return e;let i=r.designSystem,t=i.storage[we].get(r.signatureOptions),n=t.get(i.printCandidate(e));if(n===null)return e;for(let a of Ui(e))if(t.get(i.printCandidate({...e,value:a}))===n)return e.value=a,e;return e}function Nl(e){let r=Pt(e);for(let[i]of r)if(i.kind==="functional"&&i.root==="data"&&i.value?.kind==="arbitrary"&&!i.value.value.includes("="))i.value={kind:"named",value:i.value.value};else if(i.kind==="functional"&&i.root==="aria"&&i.value?.kind==="arbitrary"&&(i.value.value.endsWith("=true")||i.value.value.endsWith('="true"')||i.value.value.endsWith("='true'"))){let[t,n]=K(i.value.value,"=");if(t[t.length-1]==="~"||t[t.length-1]==="|"||t[t.length-1]==="^"||t[t.length-1]==="$"||t[t.length-1]==="*")continue;i.value={kind:"named",value:i.value.value.slice(0,i.value.value.indexOf("="))}}else i.kind==="functional"&&i.root==="supports"&&i.value?.kind==="arbitrary"&&/^[a-z-][a-z0-9-]*$/i.test(i.value.value)&&(i.value={kind:"named",value:i.value.value});return e}function*Ui(e,r=e.value?.value??"",i=new Set){if(i.has(r))return;if(i.add(r),yield{kind:"named",value:r,fraction:null},r.endsWith("%")&&ee(r.slice(0,-1))&&(yield{kind:"named",value:r.slice(0,-1),fraction:null}),r.includes("/")){let[a,o]=r.split("/");P(a)&&P(o)&&(yield{kind:"named",value:a,fraction:`${a}/${o}`})}let t=new Set;for(let a of r.matchAll(/(\d+\/\d+)|(\d+\.?\d+)/g))t.add(a[0].trim());let n=Array.from(t).sort((a,o)=>a.length-o.length);for(let a of n)yield*Ui(e,a,i)}function Ei(e){return!e.some(r=>r.kind==="separator"&&r.value.trim()===",")}function Nt(e){let r=e.value.trim();return e.kind==="selector"&&r[0]==="["&&r[r.length-1]==="]"}function Rl(e,r){let i=[e],t=r.designSystem,n=t.storage[_t],a=Pt(e);for(let[o,f]of a)if(o.kind==="compound"&&(o.root==="has"||o.root==="not"||o.root==="in")&&o.modifier!==null&&"modifier"in o.variant&&(o.variant.modifier=o.modifier,o.modifier=null),o.kind==="arbitrary"){if(o.relative)continue;let u=Ue(o.selector.trim());if(!Ei(u))continue;if(f===null&&u.length===3&&u[0].kind==="selector"&&u[0].value==="&"&&u[1].kind==="combinator"&&u[1].value.trim()===">"&&u[2].kind==="selector"&&u[2].value==="*"){de(o,t.parseVariant("*"));continue}if(f===null&&u.length===3&&u[0].kind==="selector"&&u[0].value==="&"&&u[1].kind==="combinator"&&u[1].value.trim()===""&&u[2].kind==="selector"&&u[2].value==="*"){de(o,t.parseVariant("**"));continue}if(f===null&&u.length===3&&u[1].kind==="combinator"&&u[1].value.trim()===""&&u[2].kind==="selector"&&u[2].value==="&"){u.pop(),u.pop(),de(o,t.parseVariant(`in-[${ke(u)}]`));continue}if(f===null&&u[0].kind==="selector"&&(u[0].value==="@media"||u[0].value==="@supports")){let p=n.get(t.printVariant(o)),v=F(ke(u)),h=!1;if(I(v,w=>{if(w.kind==="word"&&w.value==="not")return h=!0,R.Replace([])}),v=F(Y(v)),I(v,w=>{w.kind==="separator"&&w.value!==" "&&w.value.trim()===""&&(w.value=" ")}),h){let w=t.parseVariant(`not-[${Y(v)}]`);if(w===null)continue;let y=n.get(t.printVariant(w));if(p===y){de(o,w);continue}}}let c=null;f===null&&u.length===3&&u[0].kind==="selector"&&u[0].value.trim()==="&"&&u[1].kind==="combinator"&&u[1].value.trim()===">"&&u[2].kind==="selector"&&(Nt(u[2])||u[2].value[0]===":")&&(u=[u[2]],c=t.parseVariant("*")),f===null&&u.length===3&&u[0].kind==="selector"&&u[0].value.trim()==="&"&&u[1].kind==="combinator"&&u[1].value.trim()===""&&u[2].kind==="selector"&&(Nt(u[2])||u[2].value[0]===":")&&(u=[u[2]],c=t.parseVariant("**"));let m=u.filter(p=>!(p.kind==="selector"&&p.value.trim()==="&"));if(m.length!==1)continue;let d=m[0];if(d.kind==="function"&&d.value===":is"){if(!Ei(d.nodes)||d.nodes.length!==1||!Nt(d.nodes[0]))continue;d=d.nodes[0]}if(d.kind==="function"&&d.value[0]===":"||d.kind==="selector"&&d.value[0]===":"){let p=d,v=!1;if(p.kind==="function"&&p.value===":not"){if(v=!0,p.nodes.length!==1||p.nodes[0].kind!=="selector"&&p.nodes[0].kind!=="function"||p.nodes[0].value[0]!==":")continue;p=p.nodes[0]}let h=(y=>{if(y===":nth-child"&&p.kind==="function"&&p.nodes.length===1&&p.nodes[0].kind==="value"&&p.nodes[0].value==="odd")return v?(v=!1,"even"):"odd";if(y===":nth-child"&&p.kind==="function"&&p.nodes.length===1&&p.nodes[0].kind==="value"&&p.nodes[0].value==="even")return v?(v=!1,"odd"):"even";for(let[V,A]of[[":nth-child","nth"],[":nth-last-child","nth-last"],[":nth-of-type","nth-of-type"],[":nth-last-of-type","nth-of-last-type"]])if(y===V&&p.kind==="function"&&p.nodes.length===1)return p.nodes.length===1&&p.nodes[0].kind==="value"&&P(p.nodes[0].value)?`${A}-${p.nodes[0].value}`:`${A}-[${ke(p.nodes)}]`;if(v){let V=n.get(t.printVariant(o)),A=n.get(`not-[${y}]`);if(V===A)return`[&${y}]`}return null})(p.value);if(h===null){if(c)return de(o,{kind:"arbitrary",selector:d.value,relative:!1}),[c,o];continue}v&&(h=`not-${h}`);let w=t.parseVariant(h);if(w===null)continue;de(o,w)}else if(Nt(d)){let p=ai(d.value);if(p===null)continue;if(p.attribute.startsWith("data-")){let v=p.attribute.slice(5);de(o,{kind:"functional",root:"data",modifier:null,value:p.value===null?{kind:"named",value:v}:{kind:"arbitrary",value:`${v}${p.operator}${p.quote??""}${p.value}${p.quote??""}${p.sensitivity?` ${p.sensitivity}`:""}`}})}else if(p.attribute.startsWith("aria-")){let v=p.attribute.slice(5);de(o,{kind:"functional",root:"aria",modifier:null,value:p.value===null?{kind:"arbitrary",value:v}:p.operator==="="&&p.value==="true"&&p.sensitivity===null?{kind:"named",value:v}:{kind:"arbitrary",value:`${p.attribute}${p.operator}${p.quote??""}${p.value}${p.quote??""}${p.sensitivity?` ${p.sensitivity}`:""}`}})}else de(o,{kind:"arbitrary",selector:d.value,relative:!1})}if(c)return[c,o]}return i}function Ol(e,r){if(e.kind!=="functional"||e.value?.kind!=="arbitrary")return e;let t=r.designSystem.storage[st].get(r.signatureOptions),n=F(e.value.value);if(n.length===1&&n[0].kind==="function"&&n[0].value==="calc"){let[a,o]=at(n);if(a){let f=Fe(e);f.value.value=Y(o),t(e,f)&&(e=f,n=o)}}if(e.root[0]==="-"){if(n.length===1&&n[0].kind==="function"&&n[0].value==="var")return e;let a=F(`calc(${e.value.value} * -1)`),[o,f]=at(a);if(o){let u=Fe(e);u.root=u.root.slice(1),u.value.value=Y(f),t(e,u)&&(e=u,n=f)}}if(n.length===1&&n[0].kind==="function"&&n[0].value==="calc"){let a=n[0].nodes;if(a.length===5&&a[1].kind==="separator"&&a[1].value===" "&&a[2].kind==="word"&&a[2].value==="*"&&a[3].kind==="separator"&&a[3].value===" "){let o=a[4].kind==="word"&&a[4].value==="-1"?a[0]:a[0].kind==="word"&&a[0].value==="-1"?a[4]:null;if(o){let f=Fe(e);f.root=`-${e.root}`,f.value.value=Y([o]),t(e,f)&&(e=f)}}}return e}function Pl(e,r){if(e.kind!=="functional"&&e.kind!=="arbitrary"||e.modifier===null)return e;let i=r.designSystem,t=i.storage[we].get(r.signatureOptions),n=t.get(i.printCandidate(e)),a=e.modifier;if(n===t.get(i.printCandidate({...e,modifier:null})))return e.modifier=null,e;{let o={kind:"named",value:a.value.endsWith("%")?a.value.includes(".")?`${Number(a.value.slice(0,-1))}`:a.value.slice(0,-1):a.value,fraction:null};if(n===t.get(i.printCandidate({...e,modifier:o})))return e.modifier=o,e}{let o={kind:"named",value:`${parseFloat(a.value)*100}`,fraction:null};if(n===t.get(i.printCandidate({...e,modifier:o})))return e.modifier=o,e}return e}var we=Symbol();function _l(e){return new z(r=>new z(i=>{try{i=e.theme.prefix&&!i.startsWith(e.theme.prefix)?`${e.theme.prefix}:${i}`:i;let t=[G(".x",[W("@apply",i)])];return Ml(e,()=>{for(let a of e.parseCandidate(i))e.compileAstNodes(a,1);Ee(t,e)}),Li(e,t,r),ne(t)}catch{return Symbol()}}))}function Li(e,r,i){let{rem:t}=i;return I(r,{enter(n,a){if(n.kind==="declaration"){if(n.value===void 0||n.property==="--tw-sort")return R.Replace([]);if(n.property.startsWith("--tw-")&&(a.parent?.nodes??[]).some(d=>d.kind==="declaration"&&n.value===d.value&&n.important===d.important&&!d.property.startsWith("--tw-")))return R.Replace([]);if(i.features&1){let d=gi(n,i.features);if(d)return R.Replace(d)}n.value.includes("var(")&&(n.value=Il(n.value,e));let o=F(n.value),[f,u]=at(o,t),[c,m]=si(u);(f||c)&&(n.value=Y(m)),n.value=Te(n.value)}else{if(n.kind==="context"||n.kind==="at-root")return R.Replace(n.nodes);if(n.kind==="comment")return R.Replace([]);if(n.kind==="at-rule"&&n.name==="@property")return R.Replace([])}},exit(n){if(n.kind==="rule"||n.kind==="at-rule"){if(n.nodes.length>1){let a=new Set;for(let o=n.nodes.length-1;o>=0;o--){let f=n.nodes[o];f.kind==="declaration"&&f.value!==void 0&&(a.has(f.property)&&n.nodes.splice(o,1),a.add(f.property))}}n.nodes.sort((a,o)=>a.kind!=="declaration"||o.kind!=="declaration"?0:a.property.localeCompare(o.property))}}}),r}function Il(e,r){let i=!1,t=F(e),n=new Set;return I(t,a=>{if(a.kind!=="function"||a.value!=="var"||a.nodes.length!==1&&a.nodes.length<3)return;let o=a.nodes[0].value;r.theme.prefix&&o.startsWith(`--${r.theme.prefix}-`)&&(o=o.slice(`--${r.theme.prefix}-`.length));let f=r.resolveThemeValue(o);if(!n.has(o)&&(n.add(o),f!==void 0&&(a.nodes.length===1&&(i=!0,a.nodes.push(...F(`,${f}`))),a.nodes.length>=3))){let u=Y(a.nodes),c=`${a.nodes[0].value},${f}`;if(u===c)return i=!0,R.Replace(F(f))}}),i?Y(t):e}var cr=Symbol();function Dl(){return new z(e=>new z(r=>new z(i=>new Set)))}var Ot=Symbol();function Ul(e){return new z(r=>new z(i=>{let t=new z(a=>new Set);e.theme.prefix&&!i.startsWith(e.theme.prefix)&&(i=`${e.theme.prefix}:${i}`);let n=e.parseCandidate(i);return n.length===0||I(Li(e,e.compileAstNodes(n[0]).map(a=>te(a.node)),r),a=>{a.kind==="declaration"&&(t.get(a.property).add(a.value),e.storage[cr].get(r).get(a.property).get(a.value).add(i))}),t}))}var fr=Symbol();function Ll(e){return new z(r=>{let i=e.storage[we].get(r),t=new z(()=>[]);for(let[n,a]of e.getClassList()){let o=i.get(n);if(typeof o=="string"){if(n[0]==="-"&&n.endsWith("-0")){let f=i.get(n.slice(1));if(typeof f=="string"&&o===f)continue}t.get(o).push(n),e.storage[Ot].get(r).get(n);for(let f of a.modifiers){if(ee(f))continue;let u=`${n}/${f}`,c=i.get(u);typeof c=="string"&&(t.get(c).push(u),e.storage[Ot].get(r).get(u))}}}return t})}var _t=Symbol();function zl(e){return new z(r=>{try{r=e.theme.prefix&&!r.startsWith(e.theme.prefix)?`${e.theme.prefix}:${r}`:r;let i=[G(".x",[W("@apply",`${r}:flex`)])];return Ee(i,e),I(i,n=>{if(n.kind==="at-rule"&&n.params.includes(" "))n.params=n.params.replaceAll(" ","");else if(n.kind==="rule"){let a=Ue(n.selector),o=!1;I(a,f=>{if(f.kind==="separator"&&f.value!==" ")f.value=f.value.trim(),o=!0;else if(f.kind==="function"&&f.value===":is"){if(f.nodes.length===1)return o=!0,R.Replace(f.nodes);if(f.nodes.length===2&&f.nodes[0].kind==="selector"&&f.nodes[0].value==="*"&&f.nodes[1].kind==="selector"&&f.nodes[1].value[0]===":")return o=!0,R.Replace(f.nodes[1])}else f.kind==="function"&&f.value[0]===":"&&f.nodes[0]?.kind==="selector"&&f.nodes[0]?.value[0]===":"&&(o=!0,f.nodes.unshift({kind:"selector",value:"*"}))}),o&&(n.selector=ke(a))}}),ne(i)}catch{return Symbol()}})}var zi=Symbol();function Kl(e){let r=e.storage[_t],i=new z(()=>[]);for(let[t,n]of e.variants.entries())if(n.kind==="static"){let a=r.get(t);if(typeof a!="string")continue;i.get(a).push(t)}return i}function Ml(e,r){let i=e.theme.values.get,t=new Set;e.theme.values.get=n=>{let a=i.call(e.theme.values,n);return a===void 0||a.options&1&&(t.add(a),a.options&=-2),a};try{return r()}finally{e.theme.values.get=i;for(let n of t)n.options|=1}}function*jl(e){let r=e.length,i=1n<=2;t--){let n=(1n<>BigInt(u)&1n&&a.push(e[u]);yield a;let o=n&-n,f=n+o;n=((f^n)>>2n)/o|f}}}function Ni(e,r){if(typeof e.intersection=="function")return e.intersection(r);if(e.size===0||r.size===0)return new Set;let i=new Set(e);for(let t of r)i.has(t)||i.delete(t);return i}var Wl=/^\d+\/\d+$/;function Ki(e){let r=new z(n=>({name:n,utility:n,fraction:!1,modifiers:[]}));for(let n of e.utilities.keys("static")){if(e.utilities.getCompletions(n).length===0)continue;let o=r.get(n);o.fraction=!1,o.modifiers=[]}for(let n of e.utilities.keys("functional")){let a=e.utilities.getCompletions(n);for(let o of a)for(let f of o.values){let u=f!==null&&Wl.test(f),c=f===null?n:`${n}-${f}`,m=r.get(c);if(m.utility=n,m.fraction||=u,m.modifiers.push(...o.modifiers),o.supportsNegative){let d=r.get(`-${c}`);d.utility=`-${n}`,d.fraction||=u,d.modifiers.push(...o.modifiers)}m.modifiers=Array.from(new Set(m.modifiers))}}if(r.size===0)return[];let i=Array.from(r.values());return i.sort((n,a)=>Vt(n.name,a.name)),Bl(i)}function Bl(e){let r=[],i=null,t=new Map,n=new z(()=>[]);for(let o of e){let{utility:f,fraction:u}=o;i||(i={utility:f,items:[]},t.set(f,i)),f!==i.utility&&(r.push(i),i={utility:f,items:[]},t.set(f,i)),u?n.get(f).push(o):i.items.push(o)}i&&r[r.length-1]!==i&&r.push(i);for(let[o,f]of n){let u=t.get(o);u&&u.items.push(...f)}let a=[];for(let o of r)for(let f of o.items)a.push([f.name,{modifiers:f.modifiers}]);return a}function Mi(e){let r=[];for(let[t,n]of e.variants.entries()){let f=function({value:u,modifier:c}={}){let m=t;u&&(m+=a?`-${u}`:u),c&&(m+=`/${c}`);let d=e.parseVariant(m);if(!d)return[];let p=G(".__placeholder__",[]);if(He(p,d,e.variants)===null)return[];let v=[];return I(p.nodes,{exit(h,w){if(h.kind!=="rule"&&h.kind!=="at-rule"||h.nodes.length>0)return;let y=w.path();y.push(h),y.sort((b,D)=>{let E=b.kind==="at-rule",N=D.kind==="at-rule";return E&&!N?-1:!E&&N?1:0});let V=y.flatMap(b=>b.kind==="rule"?b.selector==="&"?[]:[b.selector]:b.kind==="at-rule"?[`${b.name} ${b.params}`]:[]),A="";for(let b=V.length-1;b>=0;b--)A=A===""?V[b]:`${V[b]} { ${A} }`;v.push(A)}}),v};var i=f;if(n.kind==="arbitrary")continue;let a=t!=="@",o=e.variants.getCompletions(t);switch(n.kind){case"static":{r.push({name:t,values:o,isArbitrary:!1,hasDash:a,selectors:f});break}case"functional":{r.push({name:t,values:o,isArbitrary:!0,hasDash:a,selectors:f});break}case"compound":{r.push({name:t,values:o,isArbitrary:!0,hasDash:a,selectors:f});break}}}return r}function ji(e,r){let{astNodes:i,nodeSorting:t}=Ne(Array.from(r),e),n=new Map(r.map(o=>[o,null])),a=0n;for(let o of i){let f=t.get(o)?.candidate;f&&n.set(f,n.get(f)??a++)}return r.map(o=>[o,n.get(o)??null])}var It=/^@?[a-z0-9][a-zA-Z0-9_-]*(?{o.kind==="rule"?n.push(o.selector):o.kind==="at-rule"&&o.name==="@variant"?a=!0:o.kind==="at-rule"&&o.name!=="@slot"&&n.push(`${o.name} ${o.params}`)}),this.static(r,o=>{let f=i.map(te);a&&ut(f,t),dr(f,o.nodes),o.nodes=f},{compounds:ze(n)})}functional(r,i,{compounds:t,order:n}={}){this.set(r,{kind:"functional",applyFn:i,compoundsWith:0,compounds:t??2,order:n})}compound(r,i,t,{compounds:n,order:a}={}){this.set(r,{kind:"compound",applyFn:t,compoundsWith:i,compounds:n??2,order:a})}group(r,i){this.groupOrder=this.nextOrder(),i&&this.compareFns.set(this.groupOrder,i),r(),this.groupOrder=null}has(r){return this.variants.has(r)}get(r){return this.variants.get(r)}kind(r){return this.variants.get(r)?.kind}compoundsWith(r,i){let t=this.variants.get(r),n=typeof i=="string"?this.variants.get(i):i.kind==="arbitrary"?{compounds:ze([i.selector])}:this.variants.get(i.root);return!(!t||!n||t.kind!=="compound"||n.compounds===0||t.compoundsWith===0||(t.compoundsWith&n.compounds)===0)}suggest(r,i){this.completions.set(r,i)}getCompletions(r){return this.completions.get(r)?.()??[]}compare(r,i){if(r===i)return 0;if(r===null)return-1;if(i===null)return 1;if(r.kind==="arbitrary"&&i.kind==="arbitrary")return r.selector{p.nodes=m.map(v=>Z(v,p.nodes))},{compounds:d})}i("*",[":is(& > *)"],{compounds:0}),i("**",[":is(& *)"],{compounds:0});function t(c,m){return m.map(d=>{d=d.trim();let p=K(d," ");return p[0]==="not"?p.slice(1).join(" "):c==="@container"?p[0][0]==="("?`not ${d}`:p[1]==="not"?`${p[0]} ${p.slice(2).join(" ")}`:`${p[0]} not ${p.slice(1).join(" ")}`:`not ${d}`})}let n=["@media","@supports","@container"];function a(c){for(let m of n){if(m!==c.name)continue;let d=K(c.params,",");return d.length>1?null:(d=t(c.name,d),W(c.name,d.join(", ")))}return null}function o(c){return c.includes("::")?null:`&:not(${K(c,",").map(d=>(d=d.replaceAll("&","*"),d)).join(", ")})`}r.compound("not",3,(c,m)=>{if(m.variant.kind==="arbitrary"&&m.variant.relative||m.modifier)return null;let d=!1;if(I([c],(p,v)=>{if(p.kind!=="rule"&&p.kind!=="at-rule")return R.Continue;if(p.nodes.length>0)return R.Continue;let h=[],w=[],y=v.path();y.push(p);for(let A of y)A.kind==="at-rule"?h.push(A):A.kind==="rule"&&w.push(A);if(h.length>1)return R.Stop;if(w.length>1)return R.Stop;let V=[];for(let A of w){let b=o(A.selector);if(!b)return d=!1,R.Stop;V.push(G(b,[]))}for(let A of h){let b=a(A);if(!b)return d=!1,R.Stop;V.push(b)}return Object.assign(c,G("&",V)),d=!0,R.Skip}),c.kind==="rule"&&c.selector==="&"&&c.nodes.length===1&&Object.assign(c,c.nodes[0]),!d)return null}),r.suggest("not",()=>Array.from(r.keys()).filter(c=>r.compoundsWith("not",c))),r.compound("group",2,(c,m)=>{if(m.variant.kind==="arbitrary"&&m.variant.relative)return null;let d=m.modifier?`:where(.${e.prefix?`${e.prefix}\\:`:""}group\\/${m.modifier.value})`:`:where(.${e.prefix?`${e.prefix}\\:`:""}group)`,p=!1;if(I([c],(v,h)=>{if(v.kind!=="rule")return R.Continue;for(let y of h.path())if(y.kind==="rule")return p=!1,R.Stop;let w=v.selector.replaceAll("&",d);K(w,",").length>1&&(w=`:is(${w})`),v.selector=`&:is(${w} *)`,p=!0}),!p)return null}),r.suggest("group",()=>Array.from(r.keys()).filter(c=>r.compoundsWith("group",c))),r.compound("peer",2,(c,m)=>{if(m.variant.kind==="arbitrary"&&m.variant.relative)return null;let d=m.modifier?`:where(.${e.prefix?`${e.prefix}\\:`:""}peer\\/${m.modifier.value})`:`:where(.${e.prefix?`${e.prefix}\\:`:""}peer)`,p=!1;if(I([c],(v,h)=>{if(v.kind!=="rule")return R.Continue;for(let y of h.path())if(y.kind==="rule")return p=!1,R.Stop;let w=v.selector.replaceAll("&",d);K(w,",").length>1&&(w=`:is(${w})`),v.selector=`&:is(${w} ~ *)`,p=!0}),!p)return null}),r.suggest("peer",()=>Array.from(r.keys()).filter(c=>r.compoundsWith("peer",c))),i("first-letter",["&::first-letter"]),i("first-line",["&::first-line"]),i("marker",["& *::marker","&::marker","& *::-webkit-details-marker","&::-webkit-details-marker"]),i("selection",["& *::selection","&::selection"]),i("file",["&::file-selector-button"]),i("placeholder",["&::placeholder"]),i("backdrop",["&::backdrop"]),i("details-content",["&::details-content"]);{let c=function(){return B([W("@property","--tw-content",[l("syntax",'"*"'),l("initial-value",'""'),l("inherits","false")])])};var f=c;r.static("before",m=>{m.nodes=[G("&::before",[c(),l("content","var(--tw-content)"),...m.nodes])]},{compounds:0}),r.static("after",m=>{m.nodes=[G("&::after",[c(),l("content","var(--tw-content)"),...m.nodes])]},{compounds:0})}i("first",["&:first-child"]),i("last",["&:last-child"]),i("only",["&:only-child"]),i("odd",["&:nth-child(odd)"]),i("even",["&:nth-child(even)"]),i("first-of-type",["&:first-of-type"]),i("last-of-type",["&:last-of-type"]),i("only-of-type",["&:only-of-type"]),i("visited",["&:visited"]),i("target",["&:target"]),i("open",["&:is([open], :popover-open, :open)"]),i("default",["&:default"]),i("checked",["&:checked"]),i("indeterminate",["&:indeterminate"]),i("placeholder-shown",["&:placeholder-shown"]),i("autofill",["&:autofill"]),i("optional",["&:optional"]),i("required",["&:required"]),i("valid",["&:valid"]),i("invalid",["&:invalid"]),i("user-valid",["&:user-valid"]),i("user-invalid",["&:user-invalid"]),i("in-range",["&:in-range"]),i("out-of-range",["&:out-of-range"]),i("read-only",["&:read-only"]),i("empty",["&:empty"]),i("focus-within",["&:focus-within"]),r.static("hover",c=>{c.nodes=[G("&:hover",[W("@media","(hover: hover)",c.nodes)])]}),i("focus",["&:focus"]),i("focus-visible",["&:focus-visible"]),i("active",["&:active"]),i("enabled",["&:enabled"]),i("disabled",["&:disabled"]),i("inert",["&:is([inert], [inert] *)"]),r.compound("in",2,(c,m)=>{if(m.modifier)return null;let d=!1;if(I([c],(p,v)=>{if(p.kind!=="rule")return R.Continue;for(let h of v.path())if(h.kind==="rule")return d=!1,R.Stop;p.selector=`:where(${p.selector.replaceAll("&","*")}) &`,d=!0}),!d)return null}),r.suggest("in",()=>Array.from(r.keys()).filter(c=>r.compoundsWith("in",c))),r.compound("has",2,(c,m)=>{if(m.modifier)return null;let d=!1;if(I([c],(p,v)=>{if(p.kind!=="rule")return R.Continue;for(let h of v.path())if(h.kind==="rule")return d=!1,R.Stop;p.selector=`&:has(${p.selector.replaceAll("&","*")})`,d=!0}),!d)return null}),r.suggest("has",()=>Array.from(r.keys()).filter(c=>r.compoundsWith("has",c))),r.functional("aria",(c,m)=>{if(!m.value||m.modifier)return null;m.value.kind==="arbitrary"?c.nodes=[G(`&[aria-${Fi(m.value.value)}]`,c.nodes)]:c.nodes=[G(`&[aria-${m.value.value}="true"]`,c.nodes)]}),r.suggest("aria",()=>["busy","checked","disabled","expanded","hidden","pressed","readonly","required","selected"]),r.functional("data",(c,m)=>{if(!m.value||m.modifier)return null;c.nodes=[G(`&[data-${Fi(m.value.value)}]`,c.nodes)]}),r.functional("nth",(c,m)=>{if(!m.value||m.modifier||m.value.kind==="named"&&!P(m.value.value))return null;c.nodes=[G(`&:nth-child(${m.value.value})`,c.nodes)]}),r.functional("nth-last",(c,m)=>{if(!m.value||m.modifier||m.value.kind==="named"&&!P(m.value.value))return null;c.nodes=[G(`&:nth-last-child(${m.value.value})`,c.nodes)]}),r.functional("nth-of-type",(c,m)=>{if(!m.value||m.modifier||m.value.kind==="named"&&!P(m.value.value))return null;c.nodes=[G(`&:nth-of-type(${m.value.value})`,c.nodes)]}),r.functional("nth-last-of-type",(c,m)=>{if(!m.value||m.modifier||m.value.kind==="named"&&!P(m.value.value))return null;c.nodes=[G(`&:nth-last-of-type(${m.value.value})`,c.nodes)]}),r.functional("supports",(c,m)=>{if(!m.value||m.modifier)return null;let d=m.value.value;if(d===null)return null;if(/^[\w-]*\s*\(/.test(d)){let p=d.replace(/\b(and|or|not)\b/g," $1 ");c.nodes=[W("@supports",p,c.nodes)];return}d.includes(":")||(d=`${d}: var(--tw)`),(d[0]!=="("||d[d.length-1]!==")")&&(d=`(${d})`),c.nodes=[W("@supports",d,c.nodes)]},{compounds:1}),i("motion-safe",["@media (prefers-reduced-motion: no-preference)"]),i("motion-reduce",["@media (prefers-reduced-motion: reduce)"]),i("contrast-more",["@media (prefers-contrast: more)"]),i("contrast-less",["@media (prefers-contrast: less)"]);{let c=function(m,d,p,v){if(m===d)return 0;let h=v.get(m);if(h===null)return p==="asc"?-1:1;let w=v.get(d);return w===null?p==="asc"?1:-1:_e(h,w,p)};var u=c;{let m=e.namespace("--breakpoint"),d=new z(p=>{switch(p.kind){case"static":return e.resolveValue(p.root,["--breakpoint"])??null;case"functional":{if(!p.value||p.modifier)return null;let v=null;return p.value.kind==="arbitrary"?v=p.value.value:p.value.kind==="named"&&(v=e.resolveValue(p.value.value,["--breakpoint"])),!v||v.includes("var(")?null:v}case"arbitrary":case"compound":return null}});r.group(()=>{r.functional("max",(p,v)=>{if(v.modifier)return null;let h=d.get(v);if(h===null)return null;p.nodes=[W("@media",`(width < ${h})`,p.nodes)]},{compounds:1})},(p,v)=>c(p,v,"desc",d)),r.suggest("max",()=>Array.from(m.keys()).filter(p=>p!==null)),r.group(()=>{for(let[p,v]of e.namespace("--breakpoint"))p!==null&&r.static(p,h=>{h.nodes=[W("@media",`(width >= ${v})`,h.nodes)]},{compounds:1});r.functional("min",(p,v)=>{if(v.modifier)return null;let h=d.get(v);if(h===null)return null;p.nodes=[W("@media",`(width >= ${h})`,p.nodes)]},{compounds:1})},(p,v)=>c(p,v,"asc",d)),r.suggest("min",()=>Array.from(m.keys()).filter(p=>p!==null))}{let m=e.namespace("--container"),d=new z(p=>{switch(p.kind){case"functional":{if(p.value===null)return null;let v=null;return p.value.kind==="arbitrary"?v=p.value.value:p.value.kind==="named"&&(v=e.resolveValue(p.value.value,["--container"])),!v||v.includes("var(")?null:v}case"static":case"arbitrary":case"compound":return null}});r.group(()=>{r.functional("@max",(p,v)=>{let h=d.get(v);if(h===null)return null;p.nodes=[W("@container",v.modifier?`${v.modifier.value} (width < ${h})`:`(width < ${h})`,p.nodes)]},{compounds:1})},(p,v)=>c(p,v,"desc",d)),r.suggest("@max",()=>Array.from(m.keys()).filter(p=>p!==null)),r.group(()=>{r.functional("@",(p,v)=>{let h=d.get(v);if(h===null)return null;p.nodes=[W("@container",v.modifier?`${v.modifier.value} (width >= ${h})`:`(width >= ${h})`,p.nodes)]},{compounds:1}),r.functional("@min",(p,v)=>{let h=d.get(v);if(h===null)return null;p.nodes=[W("@container",v.modifier?`${v.modifier.value} (width >= ${h})`:`(width >= ${h})`,p.nodes)]},{compounds:1})},(p,v)=>c(p,v,"asc",d)),r.suggest("@min",()=>Array.from(m.keys()).filter(p=>p!==null)),r.suggest("@",()=>Array.from(m.keys()).filter(p=>p!==null))}}return i("portrait",["@media (orientation: portrait)"]),i("landscape",["@media (orientation: landscape)"]),i("ltr",['&:where(:dir(ltr), [dir="ltr"], [dir="ltr"] *)']),i("rtl",['&:where(:dir(rtl), [dir="rtl"], [dir="rtl"] *)']),i("dark",["@media (prefers-color-scheme: dark)"]),i("starting",["@starting-style"]),i("print",["@media print"]),i("forced-colors",["@media (forced-colors: active)"]),i("inverted-colors",["@media (inverted-colors: inverted)"]),i("pointer-none",["@media (pointer: none)"]),i("pointer-coarse",["@media (pointer: coarse)"]),i("pointer-fine",["@media (pointer: fine)"]),i("any-pointer-none",["@media (any-pointer: none)"]),i("any-pointer-coarse",["@media (any-pointer: coarse)"]),i("any-pointer-fine",["@media (any-pointer: fine)"]),i("noscript",["@media (scripting: none)"]),r}function Fi(e){if(e.includes("=")){let[r,...i]=K(e,"="),t=i.join("=").trim();if(t[0]==="'"||t[0]==='"')return e;if(t.length>1){let n=t[t.length-1];if(t[t.length-2]===" "&&(n==="i"||n==="I"||n==="s"||n==="S"))return`${r}="${t.slice(0,-2)}" ${n}`}return`${r}="${t}"`}return e}function dr(e,r){I(e,i=>{if(i.kind==="at-rule"&&i.name==="@slot")return R.ReplaceSkip(r);if(i.kind==="at-rule"&&(i.name==="@keyframes"||i.name==="@property"))return Object.assign(i,B([W(i.name,i.params,i.nodes)])),R.Skip})}function ut(e,r){let i=0;return I(e,t=>{if(t.kind!=="at-rule"||t.name!=="@variant")return;let n=G("&",t.nodes),a=t.params,o=r.parseVariant(a);if(o===null)throw new Error(`Cannot use \`@variant\` with unknown variant: ${a}`);if(He(n,o,r.variants)===null)throw new Error(`Cannot use \`@variant\` with variant: ${a}`);return i|=32,R.Replace(n)}),i}function Bi(e,r){let i=ri(e),t=Wi(e),n=new z(d=>Br(d,m)),a=new z(d=>Array.from(Wr(d,m))),o=new z(d=>new z(p=>{let v=Yi(p,m,d);try{Be(v.map(({node:h})=>h),m),ut(v.map(({node:h})=>h),m)}catch{return[]}return v})),f=new z(d=>{for(let p of wt(d))e.markUsedVariable(p)});function u(d){let p=[];for(let v of d){let h=!0,{astNodes:w}=Ne([v],m,{onInvalidCandidate(){h=!1}});r&&I(w,y=>(y.src??=r,R.Continue)),w=Pe(w,m,0),p.push(h?w:[])}return p}function c(d){return u(d).map(p=>p.length>0?ne(p):null)}let m={theme:e,utilities:i,variants:t,invalidCandidates:new Set,important:!1,candidatesToCss:c,candidatesToAst:u,getClassOrder(d){return ji(this,d)},getClassList(){return Ki(this)},getVariants(){return Mi(this)},parseCandidate(d){return a.get(d)},parseVariant(d){return n.get(d)},compileAstNodes(d,p=1){return o.get(p).get(d)},printCandidate(d){return qr(m,d)},printVariant(d){return xt(d)},getVariantOrder(){let d=Array.from(n.values());d.sort((w,y)=>this.variants.compare(w,y));let p=new Map,v,h=0;for(let w of d)w!==null&&(v!==void 0&&this.variants.compare(v,w)!==0&&h++,p.set(w,h),v=w);return p},resolveThemeValue(d,p=!0){let v=d.lastIndexOf("/"),h=null;v!==-1&&(h=d.slice(v+1).trim(),d=d.slice(0,v).trim());let w=e.resolve(null,[d],p?1:0)??void 0;return h&&w?J(w,h):w},trackUsedVariables(d){f.get(d)},canonicalizeCandidates(d,p){return sr(this,d,p)},storage:{}};return m}var mr=["container-type","pointer-events","visibility","position","inset","inset-inline","inset-block","inset-inline-start","inset-inline-end","inset-block-start","inset-block-end","top","right","bottom","left","isolation","z-index","order","grid-column","grid-column-start","grid-column-end","grid-row","grid-row-start","grid-row-end","float","clear","--tw-container-component","margin","margin-inline","margin-block","margin-inline-start","margin-inline-end","margin-block-start","margin-block-end","margin-top","margin-right","margin-bottom","margin-left","box-sizing","display","field-sizing","aspect-ratio","height","max-height","min-height","width","max-width","min-width","flex","flex-shrink","flex-grow","flex-basis","table-layout","caption-side","border-collapse","border-spacing","transform-origin","translate","--tw-translate-x","--tw-translate-y","--tw-translate-z","scale","--tw-scale-x","--tw-scale-y","--tw-scale-z","rotate","--tw-rotate-x","--tw-rotate-y","--tw-rotate-z","--tw-skew-x","--tw-skew-y","transform","animation","cursor","touch-action","--tw-pan-x","--tw-pan-y","--tw-pinch-zoom","resize","scroll-snap-type","--tw-scroll-snap-strictness","scroll-snap-align","scroll-snap-stop","scroll-margin","scroll-margin-inline","scroll-margin-block","scroll-margin-inline-start","scroll-margin-inline-end","scroll-margin-block-start","scroll-margin-block-end","scroll-margin-top","scroll-margin-right","scroll-margin-bottom","scroll-margin-left","scroll-padding","scroll-padding-inline","scroll-padding-block","scroll-padding-inline-start","scroll-padding-inline-end","scroll-padding-block-start","scroll-padding-block-end","scroll-padding-top","scroll-padding-right","scroll-padding-bottom","scroll-padding-left","list-style-position","list-style-type","list-style-image","appearance","columns","break-before","break-inside","break-after","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-template-columns","grid-template-rows","flex-direction","flex-wrap","place-content","place-items","align-content","align-items","justify-content","justify-items","gap","column-gap","row-gap","--tw-space-x-reverse","--tw-space-y-reverse","divide-x-width","divide-y-width","--tw-divide-y-reverse","divide-style","divide-color","place-self","align-self","justify-self","overflow","overflow-x","overflow-y","overscroll-behavior","overscroll-behavior-x","overscroll-behavior-y","scroll-behavior","border-radius","border-start-radius","border-end-radius","border-top-radius","border-right-radius","border-bottom-radius","border-left-radius","border-start-start-radius","border-start-end-radius","border-end-end-radius","border-end-start-radius","border-top-left-radius","border-top-right-radius","border-bottom-right-radius","border-bottom-left-radius","border-width","border-inline-width","border-block-width","border-inline-start-width","border-inline-end-width","border-block-start-width","border-block-end-width","border-top-width","border-right-width","border-bottom-width","border-left-width","border-style","border-inline-style","border-block-style","border-inline-start-style","border-inline-end-style","border-block-start-style","border-block-end-style","border-top-style","border-right-style","border-bottom-style","border-left-style","border-color","border-inline-color","border-block-color","border-inline-start-color","border-inline-end-color","border-block-start-color","border-block-end-color","border-top-color","border-right-color","border-bottom-color","border-left-color","background-color","background-image","--tw-gradient-position","--tw-gradient-stops","--tw-gradient-via-stops","--tw-gradient-from","--tw-gradient-from-position","--tw-gradient-via","--tw-gradient-via-position","--tw-gradient-to","--tw-gradient-to-position","mask-image","--tw-mask-top","--tw-mask-top-from-color","--tw-mask-top-from-position","--tw-mask-top-to-color","--tw-mask-top-to-position","--tw-mask-right","--tw-mask-right-from-color","--tw-mask-right-from-position","--tw-mask-right-to-color","--tw-mask-right-to-position","--tw-mask-bottom","--tw-mask-bottom-from-color","--tw-mask-bottom-from-position","--tw-mask-bottom-to-color","--tw-mask-bottom-to-position","--tw-mask-left","--tw-mask-left-from-color","--tw-mask-left-from-position","--tw-mask-left-to-color","--tw-mask-left-to-position","--tw-mask-linear","--tw-mask-linear-position","--tw-mask-linear-from-color","--tw-mask-linear-from-position","--tw-mask-linear-to-color","--tw-mask-linear-to-position","--tw-mask-radial","--tw-mask-radial-shape","--tw-mask-radial-size","--tw-mask-radial-position","--tw-mask-radial-from-color","--tw-mask-radial-from-position","--tw-mask-radial-to-color","--tw-mask-radial-to-position","--tw-mask-conic","--tw-mask-conic-position","--tw-mask-conic-from-color","--tw-mask-conic-from-position","--tw-mask-conic-to-color","--tw-mask-conic-to-position","box-decoration-break","background-size","background-attachment","background-clip","background-position","background-repeat","background-origin","mask-composite","mask-mode","mask-type","mask-size","mask-clip","mask-position","mask-repeat","mask-origin","fill","stroke","stroke-width","object-fit","object-position","padding","padding-inline","padding-block","padding-inline-start","padding-inline-end","padding-block-start","padding-block-end","padding-top","padding-right","padding-bottom","padding-left","text-align","text-indent","vertical-align","font-family","font-feature-settings","font-size","line-height","font-weight","letter-spacing","text-wrap","overflow-wrap","word-break","text-overflow","hyphens","white-space","color","text-transform","font-style","font-stretch","font-variant-numeric","text-decoration-line","text-decoration-color","text-decoration-style","text-decoration-thickness","text-underline-offset","-webkit-font-smoothing","placeholder-color","caret-color","accent-color","color-scheme","opacity","background-blend-mode","mix-blend-mode","box-shadow","--tw-shadow","--tw-shadow-color","--tw-ring-shadow","--tw-ring-color","--tw-inset-shadow","--tw-inset-shadow-color","--tw-inset-ring-shadow","--tw-inset-ring-color","--tw-ring-offset-width","--tw-ring-offset-color","outline","outline-width","outline-offset","outline-color","--tw-blur","--tw-brightness","--tw-contrast","--tw-drop-shadow","--tw-grayscale","--tw-hue-rotate","--tw-invert","--tw-saturate","--tw-sepia","filter","--tw-backdrop-blur","--tw-backdrop-brightness","--tw-backdrop-contrast","--tw-backdrop-grayscale","--tw-backdrop-hue-rotate","--tw-backdrop-invert","--tw-backdrop-opacity","--tw-backdrop-saturate","--tw-backdrop-sepia","backdrop-filter","transition-property","transition-behavior","transition-delay","transition-duration","transition-timing-function","will-change","contain","content","forced-color-adjust"];function Ne(e,r,{onInvalidCandidate:i,respectImportant:t}={}){let n=new Map,a=[],o=new Map;for(let c of e){if(r.invalidCandidates.has(c)){i?.(c);continue}let m=r.parseCandidate(c);if(m.length===0){i?.(c);continue}o.set(c,m)}let f=0;(t??!0)&&(f|=1);let u=r.getVariantOrder();for(let[c,m]of o){let d=!1;for(let p of m){let v=r.compileAstNodes(p,f);if(v.length!==0){d=!0;for(let{node:h,propertySort:w}of v){let y=0n;for(let V of p.variants)y|=1n<{let d=n.get(c),p=n.get(m);if(d.variants-p.variants!==0n)return Number(d.variants-p.variants);let v=0;for(;v1)return null;for(let u of o.nodes)if(u.kind!=="rule"&&u.kind!=="at-rule"||n(u,r)===null)return null;I(o.nodes,u=>{if((u.kind==="rule"||u.kind==="at-rule")&&u.nodes.length<=0)return u.nodes=e.nodes,R.Skip}),e.nodes=o.nodes;return}if(n(e,r)===null)return null}function qi(e){let r=e.options?.types??[];return r.length>1&&r.includes("any")}function Yl(e,r){if(e.kind==="arbitrary"){let o=e.value;return e.modifier&&(o=X(o,e.modifier,r.theme)),o===null?[]:[[l(e.property,o)]]}let i=r.utilities.get(e.root)??[],t=[],n=i.filter(o=>!qi(o));for(let o of n){if(o.kind!==e.kind)continue;let f=o.compileFn(e);if(f!==void 0){if(f===null)return t;t.push(f)}}if(t.length>0)return t;let a=i.filter(o=>qi(o));for(let o of a){if(o.kind!==e.kind)continue;let f=o.compileFn(e);if(f!==void 0){if(f===null)return t;t.push(f)}}return t}function Gi(e){for(let r of e)r.kind!=="at-root"&&(r.kind==="declaration"?r.important=!0:(r.kind==="rule"||r.kind==="at-rule")&&Gi(r.nodes))}function ql(e){let r=new Set,i=0,t=e.slice(),n=!1;for(;t.length>0;){let a=t.shift();if(a.kind==="declaration"){if(a.value===void 0||(i++,n))continue;if(a.property==="--tw-sort"){let f=mr.indexOf(a.value??"");if(f!==-1){r.add(f),n=!0;continue}}let o=mr.indexOf(a.property);o!==-1&&r.add(o)}else if(a.kind==="rule"||a.kind==="at-rule")for(let o of a.nodes)t.push(o)}return{order:Array.from(r).sort((a,o)=>a-o),count:i}}function Ee(e,r){let i=0,t=Z("&",e),n=new Set,a=new z(()=>new Set),o=new z(()=>new Set);I([t],(d,p)=>{if(d.kind==="at-rule"){if(d.name==="@keyframes")return I(d.nodes,v=>{if(v.kind==="at-rule"&&v.name==="@apply")throw new Error("You cannot use `@apply` inside `@keyframes`.")}),R.Skip;if(d.name==="@utility"){let v=d.params.replace(/-\*$/,"");o.get(v).add(d),I(d.nodes,h=>{if(!(h.kind!=="at-rule"||h.name!=="@apply")){n.add(d);for(let w of Hi(h,r))a.get(d).add(w)}});return}if(d.name==="@apply"){if(p.parent===null)return;i|=1,n.add(p.parent);for(let v of Hi(d,r))for(let h of p.path())n.has(h)&&a.get(h).add(v)}}});let f=new Set,u=[],c=new Set;function m(d,p=[]){if(!f.has(d)){if(c.has(d)){let v=p[(p.indexOf(d)+1)%p.length];throw d.kind==="at-rule"&&d.name==="@utility"&&v.kind==="at-rule"&&v.name==="@utility"&&I(d.nodes,h=>{if(h.kind!=="at-rule"||h.name!=="@apply")return;let w=h.params.split(/\s+/g);for(let y of w)for(let V of r.parseCandidate(y))switch(V.kind){case"arbitrary":break;case"static":case"functional":if(v.params.replace(/-\*$/,"")===V.root)throw new Error(`You cannot \`@apply\` the \`${y}\` utility here because it creates a circular dependency.`);break;default:}}),new Error(`Circular dependency detected: + +${ne([d])} +Relies on: + +${ne([v])}`)}c.add(d);for(let v of a.get(d))for(let h of o.get(v))p.push(d),m(h,p),p.pop();f.add(d),c.delete(d),u.push(d)}}for(let d of n)m(d);for(let d of u)"nodes"in d&&I(d.nodes,p=>{if(p.kind!=="at-rule"||p.name!=="@apply")return;let v=p.params.split(/(\s+)/g),h={},w=0;for(let[y,V]of v.entries())y%2===0&&(h[V]=w),w+=V.length;{let y=Object.keys(h),V=Ne(y,r,{respectImportant:!1,onInvalidCandidate:E=>{if(r.theme.prefix&&!E.startsWith(r.theme.prefix))throw new Error(`Cannot apply unprefixed utility class \`${E}\`. Did you mean \`${r.theme.prefix}:${E}\`?`);if(r.invalidCandidates.has(E))throw new Error(`Cannot apply utility class \`${E}\` because it has been explicitly disabled: https://tailwindcss.com/docs/detecting-classes-in-source-files#explicitly-excluding-classes`);let N=K(E,":");if(N.length>1){let L=N.pop();if(r.candidatesToCss([L])[0]){let _=r.candidatesToCss(N.map(q=>`${q}:[--tw-variant-check:1]`)),M=N.filter((q,H)=>_[H]===null);if(M.length>0){if(M.length===1)throw new Error(`Cannot apply utility class \`${E}\` because the ${M.map(q=>`\`${q}\``)} variant does not exist.`);{let q=new Intl.ListFormat("en",{style:"long",type:"conjunction"});throw new Error(`Cannot apply utility class \`${E}\` because the ${q.format(M.map(H=>`\`${H}\``))} variants do not exist.`)}}}}throw r.theme.size===0?new Error(`Cannot apply unknown utility class \`${E}\`. Are you using CSS modules or similar and missing \`@reference\`? https://tailwindcss.com/docs/functions-and-directives#reference-directive`):new Error(`Cannot apply unknown utility class \`${E}\``)}}),A=p.src,b=V.astNodes.map(E=>{let N=V.nodeSorting.get(E)?.candidate,L=N?h[N]:void 0;if(E=te(E),!A||!N||L===void 0)return I([E],M=>{M.src=A}),E;let _=[A[0],A[1],A[2]];return _[1]+=7+L,_[2]=_[1]+N.length,I([E],M=>{M.src=_}),E}),D=[];for(let E of b)if(E.kind==="rule")for(let N of E.nodes)D.push(N);else D.push(E);return R.Replace(D)}});return i}function*Hi(e,r){for(let i of e.params.split(/\s+/g))for(let t of r.parseCandidate(i))switch(t.kind){case"arbitrary":break;case"static":case"functional":yield t.root;break;default:}}async function gr(e,r,i,t=0,n=!1){let a=0,o=[];return I(e,f=>{if(f.kind==="at-rule"&&(f.name==="@import"||f.name==="@reference")){let u=Gl(F(f.params));if(u===null)return;f.name==="@reference"&&(u.media="reference"),a|=2;let{uri:c,layer:m,media:d,supports:p}=u;if(c.startsWith("data:")||c.startsWith("http://")||c.startsWith("https://"))return;let v=ve({},[]);return o.push((async()=>{if(t>100)throw new Error(`Exceeded maximum recursion depth while resolving \`${c}\` in \`${r}\`)`);let h=await i(c,r),w=Oe(h.content,{from:n?h.path:void 0});await gr(w,h.base,i,t+1,n),v.nodes=Hl(f,[ve({base:h.base},w)],m,d,p)})()),R.ReplaceSkip(v)}}),o.length>0&&await Promise.all(o),a}function Gl(e){let r,i=null,t=null,n=null;for(let a=0;a{let c=Le(n),[m,d]=Zl(e.theme,c),p=i(Zi(r()??{},c)??null);if(typeof p=="string"&&(p=p.replace("","1")),typeof m!="object")return typeof d!="object"&&d&4?p??m:m;if(p!==null&&typeof p=="object"&&!Array.isArray(p)){let v=ct({},[p],(h,w)=>w);if(m===null&&Object.hasOwn(p,"__CSS_VALUES__")){let h={};for(let w in p.__CSS_VALUES__)h[w]=p[w],delete v[w];m=h}for(let h in m)h!=="__CSS_VALUES__"&&(p?.__CSS_VALUES__?.[h]&4&&Zi(v,h.split("-"))!==void 0||(v[ye(h)]=m[h]));return v}if(Array.isArray(m)&&Array.isArray(d)&&Array.isArray(p)){let v=m[0],h=m[1];d[0]&4&&(v=p[0]??v);for(let w of Object.keys(h))d[1][w]&4&&(h[w]=p[1][w]??h[w]);return[v,h]}return m??p})();return f&&typeof u=="string"&&(u=J(u,f)),u??a}}function Zl(e,r){if(r.length===1&&r[0].startsWith("--"))return[e.get([r[0]]),e.getOptions(r[0])];let i=Ge(r),t=new Map,n=new z(()=>new Map),a=e.namespace(`--${i}`);if(a.size===0)return[null,0];let o=new Map;for(let[m,d]of a){if(!m||!m.includes("--")){t.set(m,d),o.set(m,e.getOptions(m?`--${i}-${m}`:`--${i}`));continue}let p=m.indexOf("--"),v=m.slice(0,p),h=m.slice(p+2);h=h.replace(/-([a-z])/g,(w,y)=>y.toUpperCase()),n.get(v===""?null:v).set(h,[d,e.getOptions(`--${i}${m}`)])}let f=e.getOptions(`--${i}`);for(let[m,d]of n){let p=t.get(m);if(typeof p!="string")continue;let v={},h={};for(let[w,[y,V]]of d)v[w]=y,h[w]=V;t.set(m,[p,v]),o.set(m,[f,h])}let u={},c={};for(let[m,d]of t)Qi(u,[m??"DEFAULT"],d);for(let[m,d]of o)Qi(c,[m??"DEFAULT"],d);return r[r.length-1]==="DEFAULT"?[u?.DEFAULT??null,c.DEFAULT??0]:"DEFAULT"in u&&Object.keys(u).length===1?[u.DEFAULT,c.DEFAULT??0]:(u.__CSS_VALUES__=c,[u,c])}function Zi(e,r){for(let i=0;i{m.src=a}),r.push(c)},addVariant(f,u){if(!It.test(f))throw new Error(`\`addVariant('${f}')\` defines an invalid variant name. Variants should only contain alphanumeric, dashes, or underscore characters and start with a lowercase letter or number.`);if(typeof u=="string"){if(u.includes(":merge("))return}else if(Array.isArray(u)){if(u.some(m=>m.includes(":merge(")))return}else if(typeof u=="object"){let m=function(d,p){return Object.entries(d).some(([v,h])=>v.includes(p)||typeof h=="object"&&m(h,p))};var c=m;if(m(u,":merge("))return}typeof u=="string"||Array.isArray(u)?e.variants.static(f,m=>{m.nodes=Xi(u,m.nodes)},{compounds:ze(typeof u=="string"?[u]:u)}):typeof u=="object"&&e.variants.fromAst(f,be(u),e)},matchVariant(f,u,c){function m(p,v,h){let w=u(p,{modifier:v?.value??null});return Xi(w,h)}try{let p=u("a",{modifier:null});if(typeof p=="string"&&p.includes(":merge("))return;if(Array.isArray(p)&&p.some(v=>v.includes(":merge(")))return}catch{}let d=Object.keys(c?.values??{});e.variants.group(()=>{e.variants.functional(f,(p,v)=>{if(!v.value){if(c?.values&&"DEFAULT"in c.values){p.nodes=m(c.values.DEFAULT,v.modifier,p.nodes);return}return null}if(v.value.kind==="arbitrary")p.nodes=m(v.value.value,v.modifier,p.nodes);else if(v.value.kind==="named"&&c?.values){if(!Object.hasOwn(c.values,v.value.value))return null;let h=c.values[v.value.value];if(typeof h!="string")return null;p.nodes=m(h,v.modifier,p.nodes)}else return null})},(p,v)=>{if(p.kind!=="functional"||v.kind!=="functional")return 0;let h=p.value?p.value.value:"DEFAULT",w=v.value?v.value.value:"DEFAULT",y=(c?.values&&Object.hasOwn(c.values,h)?c.values[h]:void 0)??h,V=(c?.values&&Object.hasOwn(c.values,w)?c.values[w]:void 0)??w;if(c&&typeof c.sort=="function")return c.sort({value:y,modifier:p.modifier?.value??null},{value:V,modifier:v.modifier?.value??null});let A=d.indexOf(h),b=d.indexOf(w);return A=A===-1?d.length:A,b=b===-1?d.length:b,A!==b?A-b:yObject.keys(c?.values??{}).filter(p=>p!=="DEFAULT"))},addUtilities(f){f=Array.isArray(f)?f:[f];let u=f.flatMap(m=>Object.entries(m));u=u.flatMap(([m,d])=>K(m,",").map(p=>[p.trim(),d]));let c=new z(()=>[]);for(let[m,d]of u){if(m.startsWith("@keyframes ")){if(!n){let h=Z(m,be(d));I([h],w=>{w.src=a}),r.push(h)}continue}let p=Ue(m),v=!1;if(I(p,h=>{if(h.kind==="selector"&&h.value[0]==="."&&Ji.test(h.value.slice(1))){let w=h.value;h.value="&";let y=ke(p),V=w.slice(1),A=y==="&"?be(d):[Z(y,be(d))];c.get(V).push(...A),v=!0,h.value=w;return}if(h.kind==="function"&&h.value===":not")return R.Skip}),!v)throw new Error(`\`addUtilities({ '${m}' : \u2026 })\` defines an invalid utility selector. Utilities must be a single class name and start with a lowercase letter, eg. \`.scrollbar-none\`.`)}for(let[m,d]of c)e.theme.prefix&&I(d,p=>{if(p.kind==="rule"){let v=Ue(p.selector);I(v,h=>{h.kind==="selector"&&h.value[0]==="."&&(h.value=`.${e.theme.prefix}\\:${h.value.slice(1)}`)}),p.selector=ke(v)}}),e.utilities.static(m,p=>{let v=d.map(te);return en(v,m,p.raw),t.current|=Ee(v,e),v})},matchUtilities(f,u){let c=u?.type?Array.isArray(u?.type)?u.type:[u.type]:["any"];for(let[d,p]of Object.entries(f)){let v=function({negative:h}){return w=>{if(w.value?.kind==="arbitrary"&&c.length>0&&!c.includes("any")&&(w.value.dataType&&!c.includes(w.value.dataType)||!w.value.dataType&&!Q(w.value.value,c)))return;let y=c.includes("color"),V=null,A=!1;{let E=u?.values??{};y&&(E=Object.assign({inherit:"inherit",transparent:"transparent",current:"currentcolor"},E)),w.value?w.value.kind==="arbitrary"?V=w.value.value:w.value.fraction&&Object.hasOwn(E,w.value.fraction)?(V=E[w.value.fraction],A=!0):Object.hasOwn(E,w.value.value)?V=E[w.value.value]:E.__BARE_VALUE__&&(V=E.__BARE_VALUE__(w.value)??null,A=(w.value.fraction!==null&&V?.includes("/"))??!1):V=E.DEFAULT??null}if(V===null)return;let b;{let E=u?.modifiers??null;w.modifier?E==="any"||w.modifier.kind==="arbitrary"?b=w.modifier.value:E&&Object.hasOwn(E,w.modifier.value)?b=E[w.modifier.value]:y&&!Number.isNaN(Number(w.modifier.value))?b=`${w.modifier.value}%`:b=null:b=null}if(w.modifier&&b===null&&!A)return w.value?.kind==="arbitrary"?null:void 0;y&&b!==null&&(V=J(V,b)),h&&(V=`calc(${V} * -1)`);let D=be(p(V,{modifier:b}));return en(D,d,w.raw),t.current|=Ee(D,e),D}};var m=v;if(!Ji.test(d))throw new Error(`\`matchUtilities({ '${d}' : \u2026 })\` defines an invalid utility name. Utilities should be alphanumeric and start with a lowercase letter, eg. \`scrollbar\`.`);u?.supportsNegativeValues&&e.utilities.functional(`-${d}`,v({negative:!0}),{types:c}),e.utilities.functional(d,v({negative:!1}),{types:c}),e.utilities.suggest(d,()=>{let h=u?.values??{},w=new Set(Object.keys(h));w.delete("__BARE_VALUE__"),w.delete("__CSS_VALUES__"),w.has("DEFAULT")&&(w.delete("DEFAULT"),w.add(null));let y=u?.modifiers??{},V=y==="any"?[]:Object.keys(y);return[{supportsNegative:u?.supportsNegativeValues??!1,values:Array.from(w),modifiers:V}]})}},addComponents(f,u){this.addUtilities(f,u)},matchComponents(f,u){this.matchUtilities(f,u)},theme:Dt(e,()=>i.theme??{},f=>f),prefix(f){return f},config(f,u){let c=i;if(!f)return c;let m=Le(f);for(let d=0;dObject.entries(t));for(let[t,n]of i)if(n!=null&&n!==!1)if(typeof n!="object"){if(!t.startsWith("--")){if(n==="@slot"){r.push(Z(t,[W("@slot")]));continue}t=t.replace(/([A-Z])/g,"-$1").toLowerCase()}r.push(l(t,String(n)))}else if(Array.isArray(n))for(let a of n)typeof a=="string"?r.push(l(t,a)):r.push(Z(t,be(a)));else r.push(Z(t,be(n)));return r}function Xi(e,r){return(typeof e=="string"?[e]:e).flatMap(t=>{if(t.trim().endsWith("}")){let n=t.replace("}","{@slot}}"),a=Oe(n);return dr(a,r),a}else return Z(t,r)})}function en(e,r,i){I(e,t=>{if(t.kind==="rule"){let n=Ue(t.selector);I(n,a=>{a.kind==="selector"&&a.value===`.${r}`&&(a.value=`.${Se(i)}`)}),t.selector=ke(n)}})}function tn(e,r){for(let i of Ql(r))e.theme.addKeyframes(i)}function Ql(e){let r=[];if("keyframes"in e.theme)for(let[i,t]of Object.entries(e.theme.keyframes))r.push(W("@keyframes",i,be(t)));return r}var Ut={inherit:"inherit",current:"currentcolor",transparent:"transparent",black:"#000",white:"#fff",slate:{50:"oklch(98.4% 0.003 247.858)",100:"oklch(96.8% 0.007 247.896)",200:"oklch(92.9% 0.013 255.508)",300:"oklch(86.9% 0.022 252.894)",400:"oklch(70.4% 0.04 256.788)",500:"oklch(55.4% 0.046 257.417)",600:"oklch(44.6% 0.043 257.281)",700:"oklch(37.2% 0.044 257.287)",800:"oklch(27.9% 0.041 260.031)",900:"oklch(20.8% 0.042 265.755)",950:"oklch(12.9% 0.042 264.695)"},gray:{50:"oklch(98.5% 0.002 247.839)",100:"oklch(96.7% 0.003 264.542)",200:"oklch(92.8% 0.006 264.531)",300:"oklch(87.2% 0.01 258.338)",400:"oklch(70.7% 0.022 261.325)",500:"oklch(55.1% 0.027 264.364)",600:"oklch(44.6% 0.03 256.802)",700:"oklch(37.3% 0.034 259.733)",800:"oklch(27.8% 0.033 256.848)",900:"oklch(21% 0.034 264.665)",950:"oklch(13% 0.028 261.692)"},zinc:{50:"oklch(98.5% 0 0)",100:"oklch(96.7% 0.001 286.375)",200:"oklch(92% 0.004 286.32)",300:"oklch(87.1% 0.006 286.286)",400:"oklch(70.5% 0.015 286.067)",500:"oklch(55.2% 0.016 285.938)",600:"oklch(44.2% 0.017 285.786)",700:"oklch(37% 0.013 285.805)",800:"oklch(27.4% 0.006 286.033)",900:"oklch(21% 0.006 285.885)",950:"oklch(14.1% 0.005 285.823)"},neutral:{50:"oklch(98.5% 0 0)",100:"oklch(97% 0 0)",200:"oklch(92.2% 0 0)",300:"oklch(87% 0 0)",400:"oklch(70.8% 0 0)",500:"oklch(55.6% 0 0)",600:"oklch(43.9% 0 0)",700:"oklch(37.1% 0 0)",800:"oklch(26.9% 0 0)",900:"oklch(20.5% 0 0)",950:"oklch(14.5% 0 0)"},stone:{50:"oklch(98.5% 0.001 106.423)",100:"oklch(97% 0.001 106.424)",200:"oklch(92.3% 0.003 48.717)",300:"oklch(86.9% 0.005 56.366)",400:"oklch(70.9% 0.01 56.259)",500:"oklch(55.3% 0.013 58.071)",600:"oklch(44.4% 0.011 73.639)",700:"oklch(37.4% 0.01 67.558)",800:"oklch(26.8% 0.007 34.298)",900:"oklch(21.6% 0.006 56.043)",950:"oklch(14.7% 0.004 49.25)"},mauve:{50:"oklch(98.5% 0 0)",100:"oklch(96% 0.003 325.6)",200:"oklch(92.2% 0.005 325.62)",300:"oklch(86.5% 0.012 325.68)",400:"oklch(71.1% 0.019 323.02)",500:"oklch(54.2% 0.034 322.5)",600:"oklch(43.5% 0.029 321.78)",700:"oklch(36.4% 0.029 323.89)",800:"oklch(26.3% 0.024 320.12)",900:"oklch(21.2% 0.019 322.12)",950:"oklch(14.5% 0.008 326)"},olive:{50:"oklch(98.8% 0.003 106.5)",100:"oklch(96.6% 0.005 106.5)",200:"oklch(93% 0.007 106.5)",300:"oklch(88% 0.011 106.6)",400:"oklch(73.7% 0.021 106.9)",500:"oklch(58% 0.031 107.3)",600:"oklch(46.6% 0.025 107.3)",700:"oklch(39.4% 0.023 107.4)",800:"oklch(28.6% 0.016 107.4)",900:"oklch(22.8% 0.013 107.4)",950:"oklch(15.3% 0.006 107.1)"},mist:{50:"oklch(98.7% 0.002 197.1)",100:"oklch(96.3% 0.002 197.1)",200:"oklch(92.5% 0.005 214.3)",300:"oklch(87.2% 0.007 219.6)",400:"oklch(72.3% 0.014 214.4)",500:"oklch(56% 0.021 213.5)",600:"oklch(45% 0.017 213.2)",700:"oklch(37.8% 0.015 216)",800:"oklch(27.5% 0.011 216.9)",900:"oklch(21.8% 0.008 223.9)",950:"oklch(14.8% 0.004 228.8)"},taupe:{50:"oklch(98.6% 0.002 67.8)",100:"oklch(96% 0.002 17.2)",200:"oklch(92.2% 0.005 34.3)",300:"oklch(86.8% 0.007 39.5)",400:"oklch(71.4% 0.014 41.2)",500:"oklch(54.7% 0.021 43.1)",600:"oklch(43.8% 0.017 39.3)",700:"oklch(36.7% 0.016 35.7)",800:"oklch(26.8% 0.011 36.5)",900:"oklch(21.4% 0.009 43.1)",950:"oklch(14.7% 0.004 49.3)"},red:{50:"oklch(97.1% 0.013 17.38)",100:"oklch(93.6% 0.032 17.717)",200:"oklch(88.5% 0.062 18.334)",300:"oklch(80.8% 0.114 19.571)",400:"oklch(70.4% 0.191 22.216)",500:"oklch(63.7% 0.237 25.331)",600:"oklch(57.7% 0.245 27.325)",700:"oklch(50.5% 0.213 27.518)",800:"oklch(44.4% 0.177 26.899)",900:"oklch(39.6% 0.141 25.723)",950:"oklch(25.8% 0.092 26.042)"},orange:{50:"oklch(98% 0.016 73.684)",100:"oklch(95.4% 0.038 75.164)",200:"oklch(90.1% 0.076 70.697)",300:"oklch(83.7% 0.128 66.29)",400:"oklch(75% 0.183 55.934)",500:"oklch(70.5% 0.213 47.604)",600:"oklch(64.6% 0.222 41.116)",700:"oklch(55.3% 0.195 38.402)",800:"oklch(47% 0.157 37.304)",900:"oklch(40.8% 0.123 38.172)",950:"oklch(26.6% 0.079 36.259)"},amber:{50:"oklch(98.7% 0.022 95.277)",100:"oklch(96.2% 0.059 95.617)",200:"oklch(92.4% 0.12 95.746)",300:"oklch(87.9% 0.169 91.605)",400:"oklch(82.8% 0.189 84.429)",500:"oklch(76.9% 0.188 70.08)",600:"oklch(66.6% 0.179 58.318)",700:"oklch(55.5% 0.163 48.998)",800:"oklch(47.3% 0.137 46.201)",900:"oklch(41.4% 0.112 45.904)",950:"oklch(27.9% 0.077 45.635)"},yellow:{50:"oklch(98.7% 0.026 102.212)",100:"oklch(97.3% 0.071 103.193)",200:"oklch(94.5% 0.129 101.54)",300:"oklch(90.5% 0.182 98.111)",400:"oklch(85.2% 0.199 91.936)",500:"oklch(79.5% 0.184 86.047)",600:"oklch(68.1% 0.162 75.834)",700:"oklch(55.4% 0.135 66.442)",800:"oklch(47.6% 0.114 61.907)",900:"oklch(42.1% 0.095 57.708)",950:"oklch(28.6% 0.066 53.813)"},lime:{50:"oklch(98.6% 0.031 120.757)",100:"oklch(96.7% 0.067 122.328)",200:"oklch(93.8% 0.127 124.321)",300:"oklch(89.7% 0.196 126.665)",400:"oklch(84.1% 0.238 128.85)",500:"oklch(76.8% 0.233 130.85)",600:"oklch(64.8% 0.2 131.684)",700:"oklch(53.2% 0.157 131.589)",800:"oklch(45.3% 0.124 130.933)",900:"oklch(40.5% 0.101 131.063)",950:"oklch(27.4% 0.072 132.109)"},green:{50:"oklch(98.2% 0.018 155.826)",100:"oklch(96.2% 0.044 156.743)",200:"oklch(92.5% 0.084 155.995)",300:"oklch(87.1% 0.15 154.449)",400:"oklch(79.2% 0.209 151.711)",500:"oklch(72.3% 0.219 149.579)",600:"oklch(62.7% 0.194 149.214)",700:"oklch(52.7% 0.154 150.069)",800:"oklch(44.8% 0.119 151.328)",900:"oklch(39.3% 0.095 152.535)",950:"oklch(26.6% 0.065 152.934)"},emerald:{50:"oklch(97.9% 0.021 166.113)",100:"oklch(95% 0.052 163.051)",200:"oklch(90.5% 0.093 164.15)",300:"oklch(84.5% 0.143 164.978)",400:"oklch(76.5% 0.177 163.223)",500:"oklch(69.6% 0.17 162.48)",600:"oklch(59.6% 0.145 163.225)",700:"oklch(50.8% 0.118 165.612)",800:"oklch(43.2% 0.095 166.913)",900:"oklch(37.8% 0.077 168.94)",950:"oklch(26.2% 0.051 172.552)"},teal:{50:"oklch(98.4% 0.014 180.72)",100:"oklch(95.3% 0.051 180.801)",200:"oklch(91% 0.096 180.426)",300:"oklch(85.5% 0.138 181.071)",400:"oklch(77.7% 0.152 181.912)",500:"oklch(70.4% 0.14 182.503)",600:"oklch(60% 0.118 184.704)",700:"oklch(51.1% 0.096 186.391)",800:"oklch(43.7% 0.078 188.216)",900:"oklch(38.6% 0.063 188.416)",950:"oklch(27.7% 0.046 192.524)"},cyan:{50:"oklch(98.4% 0.019 200.873)",100:"oklch(95.6% 0.045 203.388)",200:"oklch(91.7% 0.08 205.041)",300:"oklch(86.5% 0.127 207.078)",400:"oklch(78.9% 0.154 211.53)",500:"oklch(71.5% 0.143 215.221)",600:"oklch(60.9% 0.126 221.723)",700:"oklch(52% 0.105 223.128)",800:"oklch(45% 0.085 224.283)",900:"oklch(39.8% 0.07 227.392)",950:"oklch(30.2% 0.056 229.695)"},sky:{50:"oklch(97.7% 0.013 236.62)",100:"oklch(95.1% 0.026 236.824)",200:"oklch(90.1% 0.058 230.902)",300:"oklch(82.8% 0.111 230.318)",400:"oklch(74.6% 0.16 232.661)",500:"oklch(68.5% 0.169 237.323)",600:"oklch(58.8% 0.158 241.966)",700:"oklch(50% 0.134 242.749)",800:"oklch(44.3% 0.11 240.79)",900:"oklch(39.1% 0.09 240.876)",950:"oklch(29.3% 0.066 243.157)"},blue:{50:"oklch(97% 0.014 254.604)",100:"oklch(93.2% 0.032 255.585)",200:"oklch(88.2% 0.059 254.128)",300:"oklch(80.9% 0.105 251.813)",400:"oklch(70.7% 0.165 254.624)",500:"oklch(62.3% 0.214 259.815)",600:"oklch(54.6% 0.245 262.881)",700:"oklch(48.8% 0.243 264.376)",800:"oklch(42.4% 0.199 265.638)",900:"oklch(37.9% 0.146 265.522)",950:"oklch(28.2% 0.091 267.935)"},indigo:{50:"oklch(96.2% 0.018 272.314)",100:"oklch(93% 0.034 272.788)",200:"oklch(87% 0.065 274.039)",300:"oklch(78.5% 0.115 274.713)",400:"oklch(67.3% 0.182 276.935)",500:"oklch(58.5% 0.233 277.117)",600:"oklch(51.1% 0.262 276.966)",700:"oklch(45.7% 0.24 277.023)",800:"oklch(39.8% 0.195 277.366)",900:"oklch(35.9% 0.144 278.697)",950:"oklch(25.7% 0.09 281.288)"},violet:{50:"oklch(96.9% 0.016 293.756)",100:"oklch(94.3% 0.029 294.588)",200:"oklch(89.4% 0.057 293.283)",300:"oklch(81.1% 0.111 293.571)",400:"oklch(70.2% 0.183 293.541)",500:"oklch(60.6% 0.25 292.717)",600:"oklch(54.1% 0.281 293.009)",700:"oklch(49.1% 0.27 292.581)",800:"oklch(43.2% 0.232 292.759)",900:"oklch(38% 0.189 293.745)",950:"oklch(28.3% 0.141 291.089)"},purple:{50:"oklch(97.7% 0.014 308.299)",100:"oklch(94.6% 0.033 307.174)",200:"oklch(90.2% 0.063 306.703)",300:"oklch(82.7% 0.119 306.383)",400:"oklch(71.4% 0.203 305.504)",500:"oklch(62.7% 0.265 303.9)",600:"oklch(55.8% 0.288 302.321)",700:"oklch(49.6% 0.265 301.924)",800:"oklch(43.8% 0.218 303.724)",900:"oklch(38.1% 0.176 304.987)",950:"oklch(29.1% 0.149 302.717)"},fuchsia:{50:"oklch(97.7% 0.017 320.058)",100:"oklch(95.2% 0.037 318.852)",200:"oklch(90.3% 0.076 319.62)",300:"oklch(83.3% 0.145 321.434)",400:"oklch(74% 0.238 322.16)",500:"oklch(66.7% 0.295 322.15)",600:"oklch(59.1% 0.293 322.896)",700:"oklch(51.8% 0.253 323.949)",800:"oklch(45.2% 0.211 324.591)",900:"oklch(40.1% 0.17 325.612)",950:"oklch(29.3% 0.136 325.661)"},pink:{50:"oklch(97.1% 0.014 343.198)",100:"oklch(94.8% 0.028 342.258)",200:"oklch(89.9% 0.061 343.231)",300:"oklch(82.3% 0.12 346.018)",400:"oklch(71.8% 0.202 349.761)",500:"oklch(65.6% 0.241 354.308)",600:"oklch(59.2% 0.249 0.584)",700:"oklch(52.5% 0.223 3.958)",800:"oklch(45.9% 0.187 3.815)",900:"oklch(40.8% 0.153 2.432)",950:"oklch(28.4% 0.109 3.907)"},rose:{50:"oklch(96.9% 0.015 12.422)",100:"oklch(94.1% 0.03 12.58)",200:"oklch(89.2% 0.058 10.001)",300:"oklch(81% 0.117 11.638)",400:"oklch(71.2% 0.194 13.428)",500:"oklch(64.5% 0.246 16.439)",600:"oklch(58.6% 0.253 17.585)",700:"oklch(51.4% 0.222 16.935)",800:"oklch(45.5% 0.188 13.697)",900:"oklch(41% 0.159 10.272)",950:"oklch(27.1% 0.105 12.094)"}};function Ke(e){return{__BARE_VALUE__:e}}var me=Ke(e=>{if(P(e.value))return e.value}),ie=Ke(e=>{if(P(e.value))return`${e.value}%`}),Re=Ke(e=>{if(P(e.value))return`${e.value}px`}),rn=Ke(e=>{if(P(e.value))return`${e.value}ms`}),Lt=Ke(e=>{if(P(e.value))return`${e.value}deg`}),Jl=Ke(e=>{if(e.fraction===null)return;let[r,i]=K(e.fraction,"/");if(!(!P(r)||!P(i)))return e.fraction}),nn=Ke(e=>{if(P(Number(e.value)))return`repeat(${e.value}, minmax(0, 1fr))`}),on={accentColor:({theme:e})=>e("colors"),animation:{none:"none",spin:"spin 1s linear infinite",ping:"ping 1s cubic-bezier(0, 0, 0.2, 1) infinite",pulse:"pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite",bounce:"bounce 1s infinite"},aria:{busy:'busy="true"',checked:'checked="true"',disabled:'disabled="true"',expanded:'expanded="true"',hidden:'hidden="true"',pressed:'pressed="true"',readonly:'readonly="true"',required:'required="true"',selected:'selected="true"'},aspectRatio:{auto:"auto",square:"1 / 1",video:"16 / 9",...Jl},backdropBlur:({theme:e})=>e("blur"),backdropBrightness:({theme:e})=>({...e("brightness"),...ie}),backdropContrast:({theme:e})=>({...e("contrast"),...ie}),backdropGrayscale:({theme:e})=>({...e("grayscale"),...ie}),backdropHueRotate:({theme:e})=>({...e("hueRotate"),...Lt}),backdropInvert:({theme:e})=>({...e("invert"),...ie}),backdropOpacity:({theme:e})=>({...e("opacity"),...ie}),backdropSaturate:({theme:e})=>({...e("saturate"),...ie}),backdropSepia:({theme:e})=>({...e("sepia"),...ie}),backgroundColor:({theme:e})=>e("colors"),backgroundImage:{none:"none","gradient-to-t":"linear-gradient(to top, var(--tw-gradient-stops))","gradient-to-tr":"linear-gradient(to top right, var(--tw-gradient-stops))","gradient-to-r":"linear-gradient(to right, var(--tw-gradient-stops))","gradient-to-br":"linear-gradient(to bottom right, var(--tw-gradient-stops))","gradient-to-b":"linear-gradient(to bottom, var(--tw-gradient-stops))","gradient-to-bl":"linear-gradient(to bottom left, var(--tw-gradient-stops))","gradient-to-l":"linear-gradient(to left, var(--tw-gradient-stops))","gradient-to-tl":"linear-gradient(to top left, var(--tw-gradient-stops))"},backgroundOpacity:({theme:e})=>e("opacity"),backgroundPosition:{bottom:"bottom",center:"center",left:"left","left-bottom":"left bottom","left-top":"left top",right:"right","right-bottom":"right bottom","right-top":"right top",top:"top"},backgroundSize:{auto:"auto",cover:"cover",contain:"contain"},blur:{0:"0",none:"",sm:"4px",DEFAULT:"8px",md:"12px",lg:"16px",xl:"24px","2xl":"40px","3xl":"64px"},borderColor:({theme:e})=>({DEFAULT:"currentcolor",...e("colors")}),borderOpacity:({theme:e})=>e("opacity"),borderRadius:{none:"0px",sm:"0.125rem",DEFAULT:"0.25rem",md:"0.375rem",lg:"0.5rem",xl:"0.75rem","2xl":"1rem","3xl":"1.5rem",full:"9999px"},borderSpacing:({theme:e})=>e("spacing"),borderWidth:{DEFAULT:"1px",0:"0px",2:"2px",4:"4px",8:"8px",...Re},boxShadow:{sm:"0 1px 2px 0 rgb(0 0 0 / 0.05)",DEFAULT:"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)",md:"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",lg:"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",xl:"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)","2xl":"0 25px 50px -12px rgb(0 0 0 / 0.25)",inner:"inset 0 2px 4px 0 rgb(0 0 0 / 0.05)",none:"none"},boxShadowColor:({theme:e})=>e("colors"),brightness:{0:"0",50:".5",75:".75",90:".9",95:".95",100:"1",105:"1.05",110:"1.1",125:"1.25",150:"1.5",200:"2",...ie},caretColor:({theme:e})=>e("colors"),colors:()=>({...Ut}),columns:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12","3xs":"16rem","2xs":"18rem",xs:"20rem",sm:"24rem",md:"28rem",lg:"32rem",xl:"36rem","2xl":"42rem","3xl":"48rem","4xl":"56rem","5xl":"64rem","6xl":"72rem","7xl":"80rem",...me},container:{},content:{none:"none"},contrast:{0:"0",50:".5",75:".75",100:"1",125:"1.25",150:"1.5",200:"2",...ie},cursor:{auto:"auto",default:"default",pointer:"pointer",wait:"wait",text:"text",move:"move",help:"help","not-allowed":"not-allowed",none:"none","context-menu":"context-menu",progress:"progress",cell:"cell",crosshair:"crosshair","vertical-text":"vertical-text",alias:"alias",copy:"copy","no-drop":"no-drop",grab:"grab",grabbing:"grabbing","all-scroll":"all-scroll","col-resize":"col-resize","row-resize":"row-resize","n-resize":"n-resize","e-resize":"e-resize","s-resize":"s-resize","w-resize":"w-resize","ne-resize":"ne-resize","nw-resize":"nw-resize","se-resize":"se-resize","sw-resize":"sw-resize","ew-resize":"ew-resize","ns-resize":"ns-resize","nesw-resize":"nesw-resize","nwse-resize":"nwse-resize","zoom-in":"zoom-in","zoom-out":"zoom-out"},divideColor:({theme:e})=>e("borderColor"),divideOpacity:({theme:e})=>e("borderOpacity"),divideWidth:({theme:e})=>({...e("borderWidth"),...Re}),dropShadow:{sm:"0 1px 1px rgb(0 0 0 / 0.05)",DEFAULT:["0 1px 2px rgb(0 0 0 / 0.1)","0 1px 1px rgb(0 0 0 / 0.06)"],md:["0 4px 3px rgb(0 0 0 / 0.07)","0 2px 2px rgb(0 0 0 / 0.06)"],lg:["0 10px 8px rgb(0 0 0 / 0.04)","0 4px 3px rgb(0 0 0 / 0.1)"],xl:["0 20px 13px rgb(0 0 0 / 0.03)","0 8px 5px rgb(0 0 0 / 0.08)"],"2xl":"0 25px 25px rgb(0 0 0 / 0.15)",none:"0 0 #0000"},fill:({theme:e})=>e("colors"),flex:{1:"1 1 0%",auto:"1 1 auto",initial:"0 1 auto",none:"none"},flexBasis:({theme:e})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%","1/12":"8.333333%","2/12":"16.666667%","3/12":"25%","4/12":"33.333333%","5/12":"41.666667%","6/12":"50%","7/12":"58.333333%","8/12":"66.666667%","9/12":"75%","10/12":"83.333333%","11/12":"91.666667%",full:"100%",...e("spacing")}),flexGrow:{0:"0",DEFAULT:"1",...me},flexShrink:{0:"0",DEFAULT:"1",...me},fontFamily:{sans:["ui-sans-serif","system-ui","sans-serif",'"Apple Color Emoji"','"Segoe UI Emoji"','"Segoe UI Symbol"','"Noto Color Emoji"'],serif:["ui-serif","Georgia","Cambria",'"Times New Roman"',"Times","serif"],mono:["ui-monospace","SFMono-Regular","Menlo","Monaco","Consolas",'"Liberation Mono"','"Courier New"',"monospace"]},fontSize:{xs:["0.75rem",{lineHeight:"1rem"}],sm:["0.875rem",{lineHeight:"1.25rem"}],base:["1rem",{lineHeight:"1.5rem"}],lg:["1.125rem",{lineHeight:"1.75rem"}],xl:["1.25rem",{lineHeight:"1.75rem"}],"2xl":["1.5rem",{lineHeight:"2rem"}],"3xl":["1.875rem",{lineHeight:"2.25rem"}],"4xl":["2.25rem",{lineHeight:"2.5rem"}],"5xl":["3rem",{lineHeight:"1"}],"6xl":["3.75rem",{lineHeight:"1"}],"7xl":["4.5rem",{lineHeight:"1"}],"8xl":["6rem",{lineHeight:"1"}],"9xl":["8rem",{lineHeight:"1"}]},fontWeight:{thin:"100",extralight:"200",light:"300",normal:"400",medium:"500",semibold:"600",bold:"700",extrabold:"800",black:"900"},gap:({theme:e})=>e("spacing"),gradientColorStops:({theme:e})=>e("colors"),gradientColorStopPositions:{"0%":"0%","5%":"5%","10%":"10%","15%":"15%","20%":"20%","25%":"25%","30%":"30%","35%":"35%","40%":"40%","45%":"45%","50%":"50%","55%":"55%","60%":"60%","65%":"65%","70%":"70%","75%":"75%","80%":"80%","85%":"85%","90%":"90%","95%":"95%","100%":"100%",...ie},grayscale:{0:"0",DEFAULT:"100%",...ie},gridAutoColumns:{auto:"auto",min:"min-content",max:"max-content",fr:"minmax(0, 1fr)"},gridAutoRows:{auto:"auto",min:"min-content",max:"max-content",fr:"minmax(0, 1fr)"},gridColumn:{auto:"auto","span-1":"span 1 / span 1","span-2":"span 2 / span 2","span-3":"span 3 / span 3","span-4":"span 4 / span 4","span-5":"span 5 / span 5","span-6":"span 6 / span 6","span-7":"span 7 / span 7","span-8":"span 8 / span 8","span-9":"span 9 / span 9","span-10":"span 10 / span 10","span-11":"span 11 / span 11","span-12":"span 12 / span 12","span-full":"1 / -1"},gridColumnEnd:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13",...me},gridColumnStart:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13",...me},gridRow:{auto:"auto","span-1":"span 1 / span 1","span-2":"span 2 / span 2","span-3":"span 3 / span 3","span-4":"span 4 / span 4","span-5":"span 5 / span 5","span-6":"span 6 / span 6","span-7":"span 7 / span 7","span-8":"span 8 / span 8","span-9":"span 9 / span 9","span-10":"span 10 / span 10","span-11":"span 11 / span 11","span-12":"span 12 / span 12","span-full":"1 / -1"},gridRowEnd:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13",...me},gridRowStart:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13",...me},gridTemplateColumns:{none:"none",subgrid:"subgrid",1:"repeat(1, minmax(0, 1fr))",2:"repeat(2, minmax(0, 1fr))",3:"repeat(3, minmax(0, 1fr))",4:"repeat(4, minmax(0, 1fr))",5:"repeat(5, minmax(0, 1fr))",6:"repeat(6, minmax(0, 1fr))",7:"repeat(7, minmax(0, 1fr))",8:"repeat(8, minmax(0, 1fr))",9:"repeat(9, minmax(0, 1fr))",10:"repeat(10, minmax(0, 1fr))",11:"repeat(11, minmax(0, 1fr))",12:"repeat(12, minmax(0, 1fr))",...nn},gridTemplateRows:{none:"none",subgrid:"subgrid",1:"repeat(1, minmax(0, 1fr))",2:"repeat(2, minmax(0, 1fr))",3:"repeat(3, minmax(0, 1fr))",4:"repeat(4, minmax(0, 1fr))",5:"repeat(5, minmax(0, 1fr))",6:"repeat(6, minmax(0, 1fr))",7:"repeat(7, minmax(0, 1fr))",8:"repeat(8, minmax(0, 1fr))",9:"repeat(9, minmax(0, 1fr))",10:"repeat(10, minmax(0, 1fr))",11:"repeat(11, minmax(0, 1fr))",12:"repeat(12, minmax(0, 1fr))",...nn},height:({theme:e})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%",full:"100%",screen:"100vh",svh:"100svh",lvh:"100lvh",dvh:"100dvh",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),hueRotate:{0:"0deg",15:"15deg",30:"30deg",60:"60deg",90:"90deg",180:"180deg",...Lt},inset:({theme:e})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%",full:"100%",...e("spacing")}),invert:{0:"0",DEFAULT:"100%",...ie},keyframes:{spin:{to:{transform:"rotate(360deg)"}},ping:{"75%, 100%":{transform:"scale(2)",opacity:"0"}},pulse:{"50%":{opacity:".5"}},bounce:{"0%, 100%":{transform:"translateY(-25%)",animationTimingFunction:"cubic-bezier(0.8,0,1,1)"},"50%":{transform:"none",animationTimingFunction:"cubic-bezier(0,0,0.2,1)"}}},letterSpacing:{tighter:"-0.05em",tight:"-0.025em",normal:"0em",wide:"0.025em",wider:"0.05em",widest:"0.1em"},lineHeight:{none:"1",tight:"1.25",snug:"1.375",normal:"1.5",relaxed:"1.625",loose:"2",3:".75rem",4:"1rem",5:"1.25rem",6:"1.5rem",7:"1.75rem",8:"2rem",9:"2.25rem",10:"2.5rem"},listStyleType:{none:"none",disc:"disc",decimal:"decimal"},listStyleImage:{none:"none"},margin:({theme:e})=>({auto:"auto",...e("spacing")}),lineClamp:{1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",...me},maxHeight:({theme:e})=>({none:"none",full:"100%",screen:"100vh",svh:"100svh",lvh:"100lvh",dvh:"100dvh",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),maxWidth:({theme:e})=>({none:"none",xs:"20rem",sm:"24rem",md:"28rem",lg:"32rem",xl:"36rem","2xl":"42rem","3xl":"48rem","4xl":"56rem","5xl":"64rem","6xl":"72rem","7xl":"80rem",full:"100%",min:"min-content",max:"max-content",fit:"fit-content",prose:"65ch",...e("spacing")}),minHeight:({theme:e})=>({full:"100%",screen:"100vh",svh:"100svh",lvh:"100lvh",dvh:"100dvh",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),minWidth:({theme:e})=>({full:"100%",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),objectPosition:{bottom:"bottom",center:"center",left:"left","left-bottom":"left bottom","left-top":"left top",right:"right","right-bottom":"right bottom","right-top":"right top",top:"top"},opacity:{0:"0",5:"0.05",10:"0.1",15:"0.15",20:"0.2",25:"0.25",30:"0.3",35:"0.35",40:"0.4",45:"0.45",50:"0.5",55:"0.55",60:"0.6",65:"0.65",70:"0.7",75:"0.75",80:"0.8",85:"0.85",90:"0.9",95:"0.95",100:"1",...ie},order:{first:"-9999",last:"9999",none:"0",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",...me},outlineColor:({theme:e})=>e("colors"),outlineOffset:{0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...Re},outlineWidth:{0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...Re},padding:({theme:e})=>e("spacing"),placeholderColor:({theme:e})=>e("colors"),placeholderOpacity:({theme:e})=>e("opacity"),ringColor:({theme:e})=>({DEFAULT:"currentcolor",...e("colors")}),ringOffsetColor:({theme:e})=>e("colors"),ringOffsetWidth:{0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...Re},ringOpacity:({theme:e})=>({DEFAULT:"0.5",...e("opacity")}),ringWidth:{DEFAULT:"3px",0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...Re},rotate:{0:"0deg",1:"1deg",2:"2deg",3:"3deg",6:"6deg",12:"12deg",45:"45deg",90:"90deg",180:"180deg",...Lt},saturate:{0:"0",50:".5",100:"1",150:"1.5",200:"2",...ie},scale:{0:"0",50:".5",75:".75",90:".9",95:".95",100:"1",105:"1.05",110:"1.1",125:"1.25",150:"1.5",...ie},screens:{sm:"40rem",md:"48rem",lg:"64rem",xl:"80rem","2xl":"96rem"},scrollMargin:({theme:e})=>e("spacing"),scrollPadding:({theme:e})=>e("spacing"),sepia:{0:"0",DEFAULT:"100%",...ie},skew:{0:"0deg",1:"1deg",2:"2deg",3:"3deg",6:"6deg",12:"12deg",...Lt},space:({theme:e})=>e("spacing"),spacing:{px:"1px",0:"0px",.5:"0.125rem",1:"0.25rem",1.5:"0.375rem",2:"0.5rem",2.5:"0.625rem",3:"0.75rem",3.5:"0.875rem",4:"1rem",5:"1.25rem",6:"1.5rem",7:"1.75rem",8:"2rem",9:"2.25rem",10:"2.5rem",11:"2.75rem",12:"3rem",14:"3.5rem",16:"4rem",20:"5rem",24:"6rem",28:"7rem",32:"8rem",36:"9rem",40:"10rem",44:"11rem",48:"12rem",52:"13rem",56:"14rem",60:"15rem",64:"16rem",72:"18rem",80:"20rem",96:"24rem"},stroke:({theme:e})=>({none:"none",...e("colors")}),strokeWidth:{0:"0",1:"1",2:"2",...me},supports:{},data:{},textColor:({theme:e})=>e("colors"),textDecorationColor:({theme:e})=>e("colors"),textDecorationThickness:{auto:"auto","from-font":"from-font",0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...Re},textIndent:({theme:e})=>e("spacing"),textOpacity:({theme:e})=>e("opacity"),textUnderlineOffset:{auto:"auto",0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...Re},transformOrigin:{center:"center",top:"top","top-right":"top right",right:"right","bottom-right":"bottom right",bottom:"bottom","bottom-left":"bottom left",left:"left","top-left":"top left"},transitionDelay:{0:"0s",75:"75ms",100:"100ms",150:"150ms",200:"200ms",300:"300ms",500:"500ms",700:"700ms",1e3:"1000ms",...rn},transitionDuration:{DEFAULT:"150ms",0:"0s",75:"75ms",100:"100ms",150:"150ms",200:"200ms",300:"300ms",500:"500ms",700:"700ms",1e3:"1000ms",...rn},transitionProperty:{none:"none",all:"all",DEFAULT:"color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter",colors:"color, background-color, border-color, outline-color, text-decoration-color, fill, stroke",opacity:"opacity",shadow:"box-shadow",transform:"transform"},transitionTimingFunction:{DEFAULT:"cubic-bezier(0.4, 0, 0.2, 1)",linear:"linear",in:"cubic-bezier(0.4, 0, 1, 1)",out:"cubic-bezier(0, 0, 0.2, 1)","in-out":"cubic-bezier(0.4, 0, 0.2, 1)"},translate:({theme:e})=>({"1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%",full:"100%",...e("spacing")}),size:({theme:e})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%","1/12":"8.333333%","2/12":"16.666667%","3/12":"25%","4/12":"33.333333%","5/12":"41.666667%","6/12":"50%","7/12":"58.333333%","8/12":"66.666667%","9/12":"75%","10/12":"83.333333%","11/12":"91.666667%",full:"100%",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),width:({theme:e})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%","1/12":"8.333333%","2/12":"16.666667%","3/12":"25%","4/12":"33.333333%","5/12":"41.666667%","6/12":"50%","7/12":"58.333333%","8/12":"66.666667%","9/12":"75%","10/12":"83.333333%","11/12":"91.666667%",full:"100%",screen:"100vw",svw:"100svw",lvw:"100lvw",dvw:"100dvw",min:"min-content",max:"max-content",fit:"fit-content",...e("spacing")}),willChange:{auto:"auto",scroll:"scroll-position",contents:"contents",transform:"transform"},zIndex:{auto:"auto",0:"0",10:"10",20:"20",30:"30",40:"40",50:"50",...me}};function ln(e){return{theme:{...on,colors:({theme:r})=>r("color",{}),extend:{fontSize:({theme:r})=>({...r("text",{})}),boxShadow:({theme:r})=>({...r("shadow",{})}),animation:({theme:r})=>({...r("animate",{})}),aspectRatio:({theme:r})=>({...r("aspect",{})}),borderRadius:({theme:r})=>({...r("radius",{})}),screens:({theme:r})=>({...r("breakpoint",{})}),letterSpacing:({theme:r})=>({...r("tracking",{})}),lineHeight:({theme:r})=>({...r("leading",{})}),transitionDuration:{DEFAULT:e.get(["--default-transition-duration"])??null},transitionTimingFunction:{DEFAULT:e.get(["--default-transition-timing-function"])??null},maxWidth:({theme:r})=>({...r("container",{})})}}}}var Xl={blocklist:[],future:{},experimental:{},prefix:"",important:!1,darkMode:null,theme:{},plugins:[],content:{files:[]}};function kr(e,r){let i={design:e,configs:[],plugins:[],content:{files:[]},theme:{},extend:{},result:structuredClone(Xl)};for(let n of r)vr(i,n);for(let n of i.configs)"darkMode"in n&&n.darkMode!==void 0&&(i.result.darkMode=n.darkMode??null),"prefix"in n&&n.prefix!==void 0&&(i.result.prefix=n.prefix??""),"blocklist"in n&&n.blocklist!==void 0&&(i.result.blocklist=n.blocklist??[]),"important"in n&&n.important!==void 0&&(i.result.important=n.important??!1);let t=ta(i);return{resolvedConfig:{...i.result,content:i.content,theme:i.theme,plugins:i.plugins},replacedThemeKeys:t}}function ea(e,r){if(Array.isArray(e)&&Ze(e[0]))return e.concat(r);if(Array.isArray(r)&&Ze(r[0])&&Ze(e))return[e,...r];if(Array.isArray(r))return r}function vr(e,{config:r,base:i,path:t,reference:n,src:a}){let o=[];for(let c of r.plugins??[])"__isOptionsFunction"in c?o.push({...c(),reference:n,src:a}):"handler"in c?o.push({...c,reference:n,src:a}):o.push({handler:c,reference:n,src:a});if(Array.isArray(r.presets)&&r.presets.length===0)throw new Error("Error in the config file/plugin/preset. An empty preset (`preset: []`) is not currently supported.");for(let c of r.presets??[])vr(e,{path:t,base:i,config:c,reference:n,src:a});for(let c of o)e.plugins.push(c),c.config&&vr(e,{path:t,base:i,config:c.config,reference:!!c.reference,src:c.src??a});let f=r.content??[],u=Array.isArray(f)?f:f.files;for(let c of u)e.content.files.push(typeof c=="object"?c:{base:i,pattern:c});e.configs.push(r)}function ta(e){let r=new Set,i=Dt(e.design,()=>e.theme,n),t=Object.assign(i,{theme:i,colors:Ut});function n(a){return typeof a=="function"?a(t)??null:a??null}for(let a of e.configs){let o=a.theme??{},f=o.extend??{};for(let u in o)u!=="extend"&&r.add(u);Object.assign(e.theme,o);for(let u in f)e.extend[u]??=[],e.extend[u].push(f[u])}delete e.theme.extend;for(let a in e.extend){let o=[e.theme[a],...e.extend[a]];e.theme[a]=()=>{let f=o.map(n);return ct({},f,ea)}}for(let a in e.theme)e.theme[a]=n(e.theme[a]);if(e.theme.screens&&typeof e.theme.screens=="object")for(let a of Object.keys(e.theme.screens)){let o=e.theme.screens[a];o&&typeof o=="object"&&("raw"in o||"max"in o||"min"in o&&(e.theme.screens[a]=o.min))}return r}function an(e,r){let i=e.theme.container||{};if(typeof i!="object"||i===null)return;let t=ra(i,r);t.length!==0&&r.utilities.static("container",()=>t.map(te))}function ra({center:e,padding:r,screens:i},t){let n=[],a=null;if(e&&n.push(l("margin-inline","auto")),(typeof r=="string"||typeof r=="object"&&r!==null&&"DEFAULT"in r)&&n.push(l("padding-inline",typeof r=="string"?r:r.DEFAULT)),typeof i=="object"&&i!==null){a=new Map;let o=Array.from(t.theme.namespace("--breakpoint").entries());if(o.sort((f,u)=>_e(f[1],u[1],"asc")),o.length>0){let[f]=o[0];n.push(W("@media",`(width >= --theme(--breakpoint-${f}))`,[l("max-width","none")]))}for(let[f,u]of Object.entries(i)){if(typeof u=="object")if("min"in u)u=u.min;else continue;a.set(f,W("@media",`(width >= ${u})`,[l("max-width",u)]))}}if(typeof r=="object"&&r!==null){let o=Object.entries(r).filter(([f])=>f!=="DEFAULT").map(([f,u])=>[f,t.theme.resolveValue(f,["--breakpoint"]),u]).filter(Boolean);o.sort((f,u)=>_e(f[1],u[1],"asc"));for(let[f,,u]of o)if(a&&a.has(f))a.get(f).nodes.push(l("padding-inline",u));else{if(a)continue;n.push(W("@media",`(width >= theme(--breakpoint-${f}))`,[l("padding-inline",u)]))}}if(a)for(let[,o]of a)n.push(o);return n}function sn({addVariant:e,config:r}){let i=r("darkMode",null),[t,n=".dark"]=Array.isArray(i)?i:[i];if(t==="variant"){let a;if(Array.isArray(n)||typeof n=="function"?a=n:typeof n=="string"&&(a=[n]),Array.isArray(a))for(let o of a)o===".dark"?(t=!1,console.warn('When using `variant` for `darkMode`, you must provide a selector.\nExample: `darkMode: ["variant", ".your-selector &"]`')):o.includes("&")||(t=!1,console.warn('When using `variant` for `darkMode`, your selector must contain `&`.\nExample `darkMode: ["variant", ".your-selector &"]`'));n=a}t===null||(t==="selector"?e("dark",`&:where(${n}, ${n} *)`):t==="media"?e("dark","@media (prefers-color-scheme: dark)"):t==="variant"?e("dark",n):t==="class"&&e("dark",`&:is(${n} *)`))}function un(e){for(let[i,t]of[["t","top"],["tr","top right"],["r","right"],["br","bottom right"],["b","bottom"],["bl","bottom left"],["l","left"],["tl","top left"]])e.utilities.suggest(`bg-gradient-to-${i}`,()=>[]),e.utilities.static(`bg-gradient-to-${i}`,()=>[l("--tw-gradient-position",`to ${t} in oklab`),l("background-image","linear-gradient(var(--tw-gradient-stops))")]);e.utilities.suggest("bg-left-top",()=>[]),e.utilities.static("bg-left-top",()=>[l("background-position","left top")]),e.utilities.suggest("bg-right-top",()=>[]),e.utilities.static("bg-right-top",()=>[l("background-position","right top")]),e.utilities.suggest("bg-left-bottom",()=>[]),e.utilities.static("bg-left-bottom",()=>[l("background-position","left bottom")]),e.utilities.suggest("bg-right-bottom",()=>[]),e.utilities.static("bg-right-bottom",()=>[l("background-position","right bottom")]),e.utilities.suggest("object-left-top",()=>[]),e.utilities.static("object-left-top",()=>[l("object-position","left top")]),e.utilities.suggest("object-right-top",()=>[]),e.utilities.static("object-right-top",()=>[l("object-position","right top")]),e.utilities.suggest("object-left-bottom",()=>[]),e.utilities.static("object-left-bottom",()=>[l("object-position","left bottom")]),e.utilities.suggest("object-right-bottom",()=>[]),e.utilities.static("object-right-bottom",()=>[l("object-position","right bottom")]),e.utilities.suggest("max-w-screen",()=>[]),e.utilities.functional("max-w-screen",i=>{if(!i.value||i.value.kind==="arbitrary")return;let t=e.theme.resolve(i.value.value,["--breakpoint"]);if(t)return[l("max-width",t)]}),e.utilities.suggest("overflow-ellipsis",()=>[]),e.utilities.static("overflow-ellipsis",()=>[l("text-overflow","ellipsis")]),e.utilities.suggest("decoration-slice",()=>[]),e.utilities.static("decoration-slice",()=>[l("-webkit-box-decoration-break","slice"),l("box-decoration-break","slice")]),e.utilities.suggest("decoration-clone",()=>[]),e.utilities.static("decoration-clone",()=>[l("-webkit-box-decoration-break","clone"),l("box-decoration-break","clone")]),e.utilities.suggest("flex-shrink",()=>[]),e.utilities.functional("flex-shrink",i=>{if(!i.modifier){if(!i.value)return[l("flex-shrink","1")];if(i.value.kind==="arbitrary")return[l("flex-shrink",i.value.value)];if(P(i.value.value))return[l("flex-shrink",i.value.value)]}}),e.utilities.suggest("flex-grow",()=>[]),e.utilities.functional("flex-grow",i=>{if(!i.modifier){if(!i.value)return[l("flex-grow","1")];if(i.value.kind==="arbitrary")return[l("flex-grow",i.value.value)];if(P(i.value.value))return[l("flex-grow",i.value.value)]}}),e.utilities.suggest("order-none",()=>[]),e.utilities.static("order-none",()=>[l("order","0")]),e.utilities.suggest("break-words",()=>[]),e.utilities.static("break-words",()=>[l("overflow-wrap","break-word")]);for(let[i,t]of[["start","inset-inline-start"],["end","inset-inline-end"]]){let n=function({negative:a}){return o=>{if(!o.value){if(o.modifier)return;let u=e.theme.resolve(null,["--inset","--spacing"]);return u===null?void 0:[l(t,a?`calc(${u} * -1)`:u)]}if(o.value.kind==="arbitrary"){if(o.modifier)return;let u=o.value.value;return[l(t,a?`calc(${u} * -1)`:u)]}let f=e.theme.resolve(o.value.fraction??o.value.value,["--inset","--spacing"]);if(f===null&&o.value.fraction){let[u,c]=K(o.value.fraction,"/");if(!P(u)||!P(c))return;f=`calc(${o.value.fraction} * 100%)`}if(f===null&&a){let u=e.theme.resolve(null,["--spacing"]);if(u&&ee(o.value.value)&&(f=`calc(${u} * -${o.value.value})`,f!==null))return[l(t,f)]}if(f===null){let u=e.theme.resolve(null,["--spacing"]);u&&ee(o.value.value)&&(f=`calc(${u} * ${o.value.value})`)}if(f!==null)return[l(t,a?`calc(${f} * -1)`:f)]}};var r=n;e.utilities.static(`${i}-auto`,()=>[l(t,"auto")]),e.utilities.static(`${i}-full`,()=>[l(t,"100%")]),e.utilities.static(`-${i}-full`,()=>[l(t,"-100%")]),e.utilities.static(`${i}-px`,()=>[l(t,"1px")]),e.utilities.static(`-${i}-px`,()=>[l(t,"-1px")]),e.utilities.functional(`-${i}`,n({negative:!0})),e.utilities.functional(i,n({negative:!1}))}}function cn(e,r){let i=e.theme.screens||{},t=r.variants.get("min")?.order??0,n=[];for(let[o,f]of Object.entries(i)){let p=function(v){r.variants.static(o,h=>{h.nodes=[W("@media",d,h.nodes)]},{order:v})};var a=p;let u=r.variants.get(o),c=r.theme.resolveValue(o,["--breakpoint"]);if(u&&c&&!r.theme.hasDefault(`--breakpoint-${o}`))continue;let m=!0;typeof f=="string"&&(m=!1);let d=ia(f);m?n.push(p):p(t)}if(n.length!==0){for(let[,o]of r.variants.variants)o.order>t&&(o.order+=n.length);r.variants.compareFns=new Map(Array.from(r.variants.compareFns).map(([o,f])=>(o>t&&(o+=n.length),[o,f])));for(let[o,f]of n.entries())f(t+o+1)}}function ia(e){return(Array.isArray(e)?e:[e]).map(i=>typeof i=="string"?{min:i}:i&&typeof i=="object"?i:null).map(i=>{if(i===null)return null;if("raw"in i)return i.raw;let t="";return i.max!==void 0&&(t+=`${i.max} >= `),t+="width",i.min!==void 0&&(t+=` >= ${i.min}`),`(${t})`}).filter(Boolean).join(", ")}function fn(e,r){let i=e.theme.aria||{},t=e.theme.supports||{},n=e.theme.data||{};if(Object.keys(i).length>0){let a=r.variants.get("aria"),o=a?.applyFn,f=a?.compounds;r.variants.functional("aria",(u,c)=>{let m=c.value;return m&&m.kind==="named"&&m.value in i?o?.(u,{...c,value:{kind:"arbitrary",value:i[m.value]}}):o?.(u,c)},{compounds:f})}if(Object.keys(t).length>0){let a=r.variants.get("supports"),o=a?.applyFn,f=a?.compounds;r.variants.functional("supports",(u,c)=>{let m=c.value;return m&&m.kind==="named"&&m.value in t?o?.(u,{...c,value:{kind:"arbitrary",value:t[m.value]}}):o?.(u,c)},{compounds:f})}if(Object.keys(n).length>0){let a=r.variants.get("data"),o=a?.applyFn,f=a?.compounds;r.variants.functional("data",(u,c)=>{let m=c.value;return m&&m.kind==="named"&&m.value in n?o?.(u,{...c,value:{kind:"arbitrary",value:n[m.value]}}):o?.(u,c)},{compounds:f})}}var na=/^[a-z]+$/;async function dn({designSystem:e,base:r,ast:i,loadModule:t,sources:n}){let a=0,o=[],f=[];I(i,(d,p)=>{if(d.kind!=="at-rule")return;let v=rt(p);if(d.name==="@plugin"){if(v.parent!==null)throw new Error("`@plugin` cannot be nested.");let h=d.params.slice(1,-1);if(h.length===0)throw new Error("`@plugin` must have a path.");let w={};for(let y of d.nodes??[]){if(y.kind!=="declaration")throw new Error(`Unexpected \`@plugin\` option: + +${ne([y])} + +\`@plugin\` options must be a flat list of declarations.`);if(y.value===void 0)continue;let V=y.value,A=K(V,",").map(b=>{if(b=b.trim(),b==="null")return null;if(b==="true")return!0;if(b==="false")return!1;if(Number.isNaN(Number(b))){if(b[0]==='"'&&b[b.length-1]==='"'||b[0]==="'"&&b[b.length-1]==="'")return b.slice(1,-1);if(b[0]==="{"&&b[b.length-1]==="}")throw new Error(`Unexpected \`@plugin\` option: Value of declaration \`${ne([y]).trim()}\` is not supported. + +Using an object as a plugin option is currently only supported in JavaScript configuration files.`)}else return Number(b);return b});w[y.property]=A.length===1?A[0]:A}return o.push([{id:h,base:v.context.base,reference:!!v.context.reference,src:d.src},Object.keys(w).length>0?w:null]),a|=4,R.Replace([])}if(d.name==="@config"){if(d.nodes.length>0)throw new Error("`@config` cannot have a body.");if(v.parent!==null)throw new Error("`@config` cannot be nested.");return f.push({id:d.params.slice(1,-1),base:v.context.base,reference:!!v.context.reference,src:d.src}),a|=4,R.Replace([])}}),un(e);let u=e.resolveThemeValue;if(e.resolveThemeValue=function(p,v){return p.startsWith("--")?u(p,v):(a|=pn({designSystem:e,base:r,ast:i,sources:n,configs:[],pluginDetails:[]}),e.resolveThemeValue(p,v))},!o.length&&!f.length)return 0;let[c,m]=await Promise.all([Promise.all(f.map(async({id:d,base:p,reference:v,src:h})=>{let w=await t(d,p,"config");return{path:d,base:w.base,config:w.module,reference:v,src:h}})),Promise.all(o.map(async([{id:d,base:p,reference:v,src:h},w])=>{let y=await t(d,p,"plugin");return{path:d,base:y.base,plugin:y.module,options:w,reference:v,src:h}}))]);return a|=pn({designSystem:e,base:r,ast:i,sources:n,configs:c,pluginDetails:m}),a}function pn({designSystem:e,base:r,ast:i,sources:t,configs:n,pluginDetails:a}){let o=0,u=[...a.map(w=>{if(!w.options)return{config:{plugins:[w.plugin]},base:w.base,reference:w.reference,src:w.src};if("__isOptionsFunction"in w.plugin)return{config:{plugins:[w.plugin(w.options)]},base:w.base,reference:w.reference,src:w.src};throw new Error(`The plugin "${w.path}" does not accept options`)}),...n],{resolvedConfig:c}=kr(e,[{config:ln(e.theme),base:r,reference:!0,src:void 0},...u,{config:{plugins:[sn]},base:r,reference:!0,src:void 0}]),{resolvedConfig:m,replacedThemeKeys:d}=kr(e,u),p={designSystem:e,ast:i,resolvedConfig:c,featuresRef:{set current(w){o|=w}}},v=hr({...p,referenceMode:!1,src:void 0}),h=e.resolveThemeValue;e.resolveThemeValue=function(y,V){if(y[0]==="-"&&y[1]==="-")return h(y,V);let A=v.theme(y,void 0);if(Array.isArray(A)&&A.length===2)return A[0];if(Array.isArray(A))return A.join(", ");if(typeof A=="object"&&A!==null&&"DEFAULT"in A)return A.DEFAULT;if(typeof A=="string")return A};for(let{handler:w,reference:y,src:V}of c.plugins){let A=hr({...p,referenceMode:y??!1,src:V});w(A)}if(ui(e,m,d),tn(e,m),fn(m,e),cn(m,e),an(m,e),!e.theme.prefix&&c.prefix){if(c.prefix.endsWith("-")&&(c.prefix=c.prefix.slice(0,-1),console.warn(`The prefix "${c.prefix}" is invalid. Prefixes must be lowercase ASCII letters (a-z) only and is written as a variant before all utilities. We have fixed up the prefix for you. Remove the trailing \`-\` to silence this warning.`)),!na.test(c.prefix))throw new Error(`The prefix "${c.prefix}" is invalid. Prefixes must be lowercase ASCII letters (a-z) only.`);e.theme.prefix=c.prefix}if(!e.important&&c.important===!0&&(e.important=!0),typeof c.important=="string"){let w=c.important;I(i,(y,V)=>{if(y.kind!=="at-rule"||y.name!=="@tailwind"||y.params!=="utilities")return;let A=rt(V);return A.parent?.kind==="rule"&&A.parent.selector===w?R.Stop:R.ReplaceStop(G(w,[y]))})}for(let w of c.blocklist)e.invalidCandidates.add(w);for(let w of c.content.files){if("raw"in w)throw new Error(`Error in the config file/plugin/preset. The \`content\` key contains a \`raw\` entry: + +${JSON.stringify(w,null,2)} + +This feature is not currently supported.`);let y=!1;w.pattern[0]=="!"&&(y=!0,w.pattern=w.pattern.slice(1)),t.push({...w,negated:y})}return o}function mn({ast:e}){let r=new z(n=>pt(n.code)),i=new z(n=>({url:n.file,content:n.code,ignore:!1})),t={file:null,sources:[],mappings:[]};I(e,n=>{if(!n.src||!n.dst)return;let a=i.get(n.src[0]);if(!a.content)return;let o=r.get(n.src[0]),f=r.get(n.dst[0]),u=a.content.slice(n.src[1],n.src[2]),c=0;for(let p of u.split(` +`)){if(p.trim()!==""){let v=o.find(n.src[1]+c),h=f.find(n.dst[1]);t.mappings.push({name:null,originalPosition:{source:a,...v},generatedPosition:h})}c+=p.length,c+=1}let m=o.find(n.src[2]),d=f.find(n.dst[2]);t.mappings.push({name:null,originalPosition:{source:a,...m},generatedPosition:d})});for(let n of r.keys())t.sources.push(i.get(n));return t.mappings.sort((n,a)=>n.generatedPosition.line-a.generatedPosition.line||n.generatedPosition.column-a.generatedPosition.column||(n.originalPosition?.line??0)-(a.originalPosition?.line??0)||(n.originalPosition?.column??0)-(a.originalPosition?.column??0)),t}var gn=/^(-?\d+)\.\.(-?\d+)(?:\.\.(-?\d+))?$/;function zt(e){let r=e.indexOf("{");if(r===-1)return[e];let i=[],t=e.slice(0,r),n=e.slice(r),a=0,o=n.lastIndexOf("}");for(let d=0;dzt(d));let m=zt(u);for(let d of m)for(let p of c)i.push(t+p+d);return i}function oa(e){return gn.test(e)}function la(e){let r=e.match(gn);if(!r)return[e];let[,i,t,n]=r,a=n?parseInt(n,10):void 0,o=[];if(/^-?\d+$/.test(i)&&/^-?\d+$/.test(t)){let f=parseInt(i,10),u=parseInt(t,10);if(a===void 0&&(a=f<=u?1:-1),a===0)throw new Error("Step cannot be zero in sequence expansion.");let c=f0&&(a=-a);for(let m=f;c?m<=u:m>=u;m+=a)o.push(m.toString())}return o}function hn(e,r){let i=new Set,t=new Set,n=[];function a(o,f=[]){if(e.has(o)&&!i.has(o)){t.has(o)&&r.onCircularDependency?.(f,o),t.add(o);for(let u of e.get(o)??[])f.push(o),a(u,f),f.pop();i.add(o),t.delete(o),n.push(o)}}for(let o of e.keys())a(o);return n}var aa=/^[a-z]+$/,bt=(n=>(n[n.None=0]="None",n[n.AtProperty=1]="AtProperty",n[n.ColorMix=2]="ColorMix",n[n.All=3]="All",n))(bt||{});function sa(){throw new Error("No `loadModule` function provided to `compile`")}function ua(){throw new Error("No `loadStylesheet` function provided to `compile`")}function ca(e){let r=0,i=null;for(let t of K(e," "))t==="reference"?r|=2:t==="inline"?r|=1:t==="default"?r|=4:t==="static"?r|=8:t.startsWith("prefix(")&&t.endsWith(")")&&(i=t.slice(7,-1));return[r,i]}var Ie=(u=>(u[u.None=0]="None",u[u.AtApply=1]="AtApply",u[u.AtImport=2]="AtImport",u[u.JsPluginCompat=4]="JsPluginCompat",u[u.ThemeFunction=8]="ThemeFunction",u[u.Utilities=16]="Utilities",u[u.Variants=32]="Variants",u[u.AtTheme=64]="AtTheme",u))(Ie||{});async function vn(e,{base:r="",from:i,loadModule:t=sa,loadStylesheet:n=ua}={}){let a=0;e=[ve({base:r},e)],a|=await gr(e,r,n,0,i!==void 0);let o=null,f=new kt,u=new Map,c=new Map,m=[],d=null,p=null,v=[],h=[],w=[],y=[],V=null;I(e,(b,D)=>{if(b.kind!=="at-rule")return;let E=rt(D);if(b.name==="@tailwind"&&(b.params==="utilities"||b.params.startsWith("utilities"))){if(p!==null)return R.Replace([]);if(E.context.reference)return R.Replace([]);let N=K(b.params," ");for(let L of N)if(L.startsWith("source(")){let _=L.slice(7,-1);if(_==="none"){V=_;continue}if(_[0]==='"'&&_[_.length-1]!=='"'||_[0]==="'"&&_[_.length-1]!=="'"||_[0]!=="'"&&_[0]!=='"')throw new Error("`source(\u2026)` paths must be quoted.");V={base:E.context.sourceBase??E.context.base,pattern:_.slice(1,-1)}}p=b,a|=16}if(b.name==="@utility"){if(E.parent!==null)throw new Error("`@utility` cannot be nested.");if(b.nodes.length===0)throw new Error(`\`@utility ${b.params}\` is empty. Utilities should include at least one property.`);let N=ii(b);if(N===null){if(!b.params.endsWith("-*")){if(b.params.endsWith("*"))throw new Error(`\`@utility ${b.params}\` defines an invalid utility name. A functional utility must end in \`-*\`.`);if(b.params.includes("*"))throw new Error(`\`@utility ${b.params}\` defines an invalid utility name. The dynamic portion marked by \`-*\` must appear once at the end.`)}throw new Error(`\`@utility ${b.params}\` defines an invalid utility name. Utilities should be alphanumeric and start with a lowercase letter.`)}m.push(N)}if(b.name==="@source"){if(b.nodes.length>0)throw new Error("`@source` cannot have a body.");if(E.parent!==null)throw new Error("`@source` cannot be nested.");let N=!1,L=!1,_=b.params;if(_[0]==="n"&&_.startsWith("not ")&&(N=!0,_=_.slice(4)),_[0]==="i"&&_.startsWith("inline(")&&(L=!0,_=_.slice(7,-1).trim()),_[0]==='"'&&_[_.length-1]!=='"'||_[0]==="'"&&_[_.length-1]!=="'"||_[0]!=="'"&&_[0]!=='"')throw new Error("`@source` paths must be quoted.");let M=_.slice(1,-1);if(L){let q=N?y:w,H=K(M," ");for(let ue of H)for(let ce of zt(ue))q.push(ce)}else h.push({base:E.context.base,pattern:M,negated:N});return R.ReplaceSkip([])}if(b.name==="@variant"&&(E.parent===null?b.nodes.length===0?b.name="@custom-variant":(I(b.nodes,N=>{if(N.kind==="at-rule"&&N.name==="@slot")return b.name="@custom-variant",R.Stop}),b.name==="@variant"&&v.push(b)):v.push(b)),b.name==="@custom-variant"){if(E.parent!==null)throw new Error("`@custom-variant` cannot be nested.");let[N,L]=K(b.params," ");if(!It.test(N))throw new Error(`\`@custom-variant ${N}\` defines an invalid variant name. Variants should only contain alphanumeric, dashes, or underscore characters and start with a lowercase letter or number.`);if(b.nodes.length>0&&L)throw new Error(`\`@custom-variant ${N}\` cannot have both a selector and a body.`);if(b.nodes.length===0){if(!L)throw new Error(`\`@custom-variant ${N}\` has no selector or body.`);let _=K(L.slice(1,-1),",");if(_.length===0||_.some(H=>H.trim()===""))throw new Error(`\`@custom-variant ${N} (${_.join(",")})\` selector is invalid.`);let M=[],q=[];for(let H of _)H=H.trim(),H[0]==="@"?M.push(H):q.push(H);u.set(N,H=>{H.variants.static(N,ue=>{let ce=[];q.length>0&&ce.push(G(q.join(", "),ue.nodes));for(let s of M)ce.push(Z(s,ue.nodes));ue.nodes=ce},{compounds:ze([...q,...M])})}),c.set(N,new Set)}else{let _=new Set;I(b.nodes,M=>{M.kind==="at-rule"&&M.name==="@variant"&&_.add(M.params)}),u.set(N,M=>{M.variants.fromAst(N,b.nodes,M)}),c.set(N,_)}return R.ReplaceSkip([])}if(b.name==="@media"){let N=K(b.params," "),L=[];for(let _ of N)if(_.startsWith("source(")){let M=_.slice(7,-1);I(b.nodes,q=>{if(q.kind==="at-rule"&&q.name==="@tailwind"&&q.params==="utilities")return q.params+=` source(${M})`,R.ReplaceStop([ve({sourceBase:E.context.base},[q])])})}else if(_.startsWith("theme(")){let M=_.slice(6,-1),q=M.includes("reference");I(b.nodes,H=>{if(H.kind!=="context"){if(H.kind!=="at-rule"){if(q)throw new Error('Files imported with `@import "\u2026" theme(reference)` must only contain `@theme` blocks.\nUse `@reference "\u2026";` instead.');return R.Continue}if(H.name==="@theme")return H.params+=" "+M,R.Skip}})}else if(_.startsWith("prefix(")){let M=_.slice(7,-1);I(b.nodes,q=>{if(q.kind==="at-rule"&&q.name==="@theme")return q.params+=` prefix(${M})`,R.Skip})}else _==="important"?o=!0:_==="reference"?b.nodes=[ve({reference:!0},b.nodes)]:L.push(_);if(L.length>0)b.params=L.join(" ");else if(N.length>0)return R.Replace(b.nodes);return R.Continue}if(b.name==="@theme"){let[N,L]=ca(b.params);if(a|=64,E.context.reference&&(N|=2),L){if(!aa.test(L))throw new Error(`The prefix "${L}" is invalid. Prefixes must be lowercase ASCII letters (a-z) only.`);f.prefix=L}return I(b.nodes,_=>{if(_.kind==="at-rule"&&_.name==="@keyframes")return f.addKeyframes(_),R.Skip;if(_.kind==="comment")return;if(_.kind==="declaration"&&_.property.startsWith("--")){f.add(ye(_.property),_.value??"",N,_.src);return}let M=ne([W(b.name,b.params,[_])]).split(` +`).map((q,H,ue)=>`${H===0||H>=ue.length-2?" ":">"} ${q}`).join(` +`);throw new Error(`\`@theme\` blocks must only contain custom properties or \`@keyframes\`. + +${M}`)}),d?R.ReplaceSkip([]):(d=G(":root, :host",[]),d.src=b.src,R.ReplaceSkip(d))}});let A=Bi(f,p?.src);if(o&&(A.important=o),y.length>0)for(let b of y)A.invalidCandidates.add(b);a|=await dn({designSystem:A,base:r,ast:e,loadModule:t,sources:h});for(let b of u.keys())A.variants.static(b,()=>{});for(let b of hn(c,{onCircularDependency(D,E){let N=ne(D.map((L,_)=>W("@custom-variant",L,[W("@variant",D[_+1]??E,[])]))).replaceAll(";"," { \u2026 }").replace(`@custom-variant ${E} {`,`@custom-variant ${E} { /* \u2190 */`);throw new Error(`Circular dependency detected in custom variants: + +${N}`)}}))u.get(b)?.(A);for(let b of m)b(A);if(d){let b=[];for(let[E,N]of A.theme.entries()){if(N.options&2)continue;let L=l(Se(E),N.value);L.src=N.src,b.push(L)}let D=A.theme.getKeyframes();for(let E of D)e.push(ve({theme:!0},[B([E])]));d.nodes=[ve({theme:!0},b)]}if(a|=ut(e,A),a|=Be(e,A),a|=Ee(e,A),p){let b=p;b.kind="context",b.context={}}return I(e,b=>{if(b.kind==="at-rule")return b.name==="@utility"?R.Replace([]):R.Skip}),{designSystem:A,ast:e,sources:h,root:V,utilitiesNode:p,features:a,inlineCandidates:w}}async function kn(e,r={}){let{designSystem:i,ast:t,sources:n,root:a,utilitiesNode:o,features:f,inlineCandidates:u}=await vn(e,r);t.unshift(vt(`! tailwindcss v${wr} | MIT License | https://tailwindcss.com `));function c(h){i.invalidCandidates.add(h)}let m=new Set,d=null,p=0,v=!1;for(let h of u)i.invalidCandidates.has(h)||(m.add(h),v=!0);return{sources:n,root:a,features:f,build(h){if(f===0)return e;if(!o)return d??=Pe(t,i,r.polyfills),d;let w=v,y=!1;v=!1;let V=m.size;for(let b of h)if(!i.invalidCandidates.has(b))if(b[0]==="-"&&b[1]==="-"){let D=i.theme.markUsedVariable(b);w||=D,y||=D}else m.add(b),w||=m.size!==V;if(!w)return d??=Pe(t,i,r.polyfills),d;let A=Ne(m,i,{onInvalidCandidate:c}).astNodes;return r.from&&I(A,b=>{b.src??=o.src}),!y&&p===A.length?(d??=Pe(t,i,r.polyfills),d):(p=A.length,o.nodes=A,d=Pe(t,i,r.polyfills),d)}}}async function fa(e,r={}){let i=Oe(e,{from:r.from}),t=await kn(i,r),n=i,a=e;return{...t,build(o){let f=t.build(o);return f===n||(a=ne(f,!!r.from),n=f),a},buildSourceMap(){return mn({ast:n})}}}async function pa(e,r={}){return(await vn(Oe(e,{from:r.from}),r)).designSystem}function ft(){throw new Error("It looks like you're trying to use `tailwindcss` directly as a PostCSS plugin. The PostCSS plugin has moved to a separate package, so to continue using Tailwind CSS with PostCSS you'll need to install `@tailwindcss/postcss` and update your PostCSS configuration.")}for(let e in Kt)e!=="default"&&(ft[e]=Kt[e]);module.exports=ft; diff --git a/node_modules/tailwindcss/dist/lib.mjs b/node_modules/tailwindcss/dist/lib.mjs new file mode 100644 index 00000000..6f805788 --- /dev/null +++ b/node_modules/tailwindcss/dist/lib.mjs @@ -0,0 +1 @@ +import{a,b,c,d,e,f}from"./chunk-3IR7ZFJX.mjs";import"./chunk-TDNFF6A4.mjs";import"./chunk-X4GG3EDV.mjs";export{b as Features,a as Polyfills,e as __unstable__loadDesignSystem,d as compile,c as compileAst,f as default}; diff --git a/node_modules/tailwindcss/dist/plugin.d.mts b/node_modules/tailwindcss/dist/plugin.d.mts new file mode 100644 index 00000000..5c32fa73 --- /dev/null +++ b/node_modules/tailwindcss/dist/plugin.d.mts @@ -0,0 +1,11 @@ +export { P as PluginUtils } from './resolve-config-QUZ9b-Gn.mjs'; +import { a as PluginFn, C as Config, b as PluginWithConfig, c as PluginWithOptions } from './types-CJYAW1ql.mjs'; +export { d as PluginAPI, P as PluginsConfig, T as ThemeConfig } from './types-CJYAW1ql.mjs'; +import './colors.mjs'; + +declare function createPlugin(handler: PluginFn, config?: Partial): PluginWithConfig; +declare namespace createPlugin { + var withOptions: (pluginFunction: (options?: T) => PluginFn, configFunction?: (options?: T) => Partial) => PluginWithOptions; +} + +export { Config, PluginFn as PluginCreator, createPlugin as default }; diff --git a/node_modules/tailwindcss/dist/plugin.d.ts b/node_modules/tailwindcss/dist/plugin.d.ts new file mode 100644 index 00000000..8715495b --- /dev/null +++ b/node_modules/tailwindcss/dist/plugin.d.ts @@ -0,0 +1,134 @@ +import { N as NamedUtilityValue, P as PluginUtils } from './resolve-config-B4yBzhca.js'; +import './colors-C__qRT83.js'; + +/** + * The source code for one or more nodes in the AST + * + * This generally corresponds to a stylesheet + */ +interface Source { + /** + * The path to the file that contains the referenced source code + * + * If this references the *output* source code, this is `null`. + */ + file: string | null; + /** + * The referenced source code + */ + code: string; +} +/** + * The file and offsets within it that this node covers + * + * This can represent either: + * - A location in the original CSS which caused this node to be created + * - A location in the output CSS where this node resides + */ +type SourceLocation = [source: Source, start: number, end: number]; + +type Config = UserConfig; +type PluginFn = (api: PluginAPI) => void; +type PluginWithConfig = { + handler: PluginFn; + config?: UserConfig; + /** @internal */ + reference?: boolean; + src?: SourceLocation | undefined; +}; +type PluginWithOptions = { + (options?: T): PluginWithConfig; + __isOptionsFunction: true; +}; +type Plugin = PluginFn | PluginWithConfig | PluginWithOptions; +type PluginAPI = { + addBase(base: CssInJs): void; + addVariant(name: string, variant: string | string[] | CssInJs): void; + matchVariant(name: string, cb: (value: T | string, extra: { + modifier: string | null; + }) => string | string[], options?: { + values?: Record; + sort?(a: { + value: T | string; + modifier: string | null; + }, b: { + value: T | string; + modifier: string | null; + }): number; + }): void; + addUtilities(utilities: Record | Record[], options?: {}): void; + matchUtilities(utilities: Record CssInJs | CssInJs[]>, options?: Partial<{ + type: string | string[]; + supportsNegativeValues: boolean; + values: Record & { + __BARE_VALUE__?: (value: NamedUtilityValue) => string | undefined; + }; + modifiers: 'any' | Record; + }>): void; + addComponents(utilities: Record | Record[], options?: {}): void; + matchComponents(utilities: Record CssInJs>, options?: Partial<{ + type: string | string[]; + supportsNegativeValues: boolean; + values: Record & { + __BARE_VALUE__?: (value: NamedUtilityValue) => string | undefined; + }; + modifiers: 'any' | Record; + }>): void; + theme(path: string, defaultValue?: any): any; + config(path?: string, defaultValue?: any): any; + prefix(className: string): string; +}; +type CssInJs = { + [key: string]: string | string[] | CssInJs | CssInJs[]; +}; + +type ResolvableTo = T | ((utils: PluginUtils) => T); +type ThemeValue = ResolvableTo> | null | undefined; +type ThemeConfig = Record & { + extend?: Record; +}; +type ContentFile = string | { + raw: string; + extension?: string; +}; +type DarkModeStrategy = false | 'media' | 'class' | ['class', string] | 'selector' | ['selector', string] | ['variant', string | string[]]; +interface UserConfig { + presets?: UserConfig[]; + theme?: ThemeConfig; + plugins?: Plugin[]; +} +interface UserConfig { + content?: ContentFile[] | { + relative?: boolean; + files: ContentFile[]; + }; +} +interface UserConfig { + darkMode?: DarkModeStrategy; +} +interface UserConfig { + prefix?: string; +} +interface UserConfig { + blocklist?: string[]; +} +interface UserConfig { + important?: boolean | string; +} +interface UserConfig { + future?: 'all' | Record; +} +interface UserConfig { + experimental?: 'all' | Record; +} + +declare function createPlugin(handler: PluginFn, config?: Partial): PluginWithConfig; +declare namespace createPlugin { + var withOptions: (pluginFunction: (options?: T) => PluginFn, configFunction?: (options?: T) => Partial) => PluginWithOptions; +} + +export { createPlugin as default }; diff --git a/node_modules/tailwindcss/dist/plugin.js b/node_modules/tailwindcss/dist/plugin.js new file mode 100644 index 00000000..eca100ca --- /dev/null +++ b/node_modules/tailwindcss/dist/plugin.js @@ -0,0 +1 @@ +"use strict";function g(i,n){return{handler:i,config:n}}g.withOptions=function(i,n=()=>({})){function t(o){return{handler:i(o),config:n(o)}}return t.__isOptionsFunction=!0,t};var u=g;module.exports=u; diff --git a/node_modules/tailwindcss/dist/plugin.mjs b/node_modules/tailwindcss/dist/plugin.mjs new file mode 100644 index 00000000..430fa252 --- /dev/null +++ b/node_modules/tailwindcss/dist/plugin.mjs @@ -0,0 +1 @@ +function g(i,n){return{handler:i,config:n}}g.withOptions=function(i,n=()=>({})){function t(o){return{handler:i(o),config:n(o)}}return t.__isOptionsFunction=!0,t};var u=g;export{u as default}; diff --git a/node_modules/tailwindcss/dist/resolve-config-B4yBzhca.d.ts b/node_modules/tailwindcss/dist/resolve-config-B4yBzhca.d.ts new file mode 100644 index 00000000..de182efa --- /dev/null +++ b/node_modules/tailwindcss/dist/resolve-config-B4yBzhca.d.ts @@ -0,0 +1,29 @@ +import { _ as _default } from './colors-C__qRT83.js'; + +type NamedUtilityValue = { + kind: 'named'; + /** + * ``` + * bg-red-500 + * ^^^^^^^ + * + * w-1/2 + * ^ + * ``` + */ + value: string; + /** + * ``` + * w-1/2 + * ^^^ + * ``` + */ + fraction: string | null; +}; + +type PluginUtils = { + theme: (keypath: string, defaultValue?: any) => any; + colors: typeof _default; +}; + +export type { NamedUtilityValue as N, PluginUtils as P }; diff --git a/node_modules/tailwindcss/dist/resolve-config-QUZ9b-Gn.d.mts b/node_modules/tailwindcss/dist/resolve-config-QUZ9b-Gn.d.mts new file mode 100644 index 00000000..e1cde16e --- /dev/null +++ b/node_modules/tailwindcss/dist/resolve-config-QUZ9b-Gn.d.mts @@ -0,0 +1,190 @@ +import _default from './colors.mjs'; + +type ArbitraryUtilityValue = { + kind: 'arbitrary'; + /** + * ``` + * bg-[color:var(--my-color)] + * ^^^^^ + * + * bg-(color:--my-color) + * ^^^^^ + * ``` + */ + dataType: string | null; + /** + * ``` + * bg-[#0088cc] + * ^^^^^^^ + * + * bg-[var(--my_variable)] + * ^^^^^^^^^^^^^^^^^^ + * + * bg-(--my_variable) + * ^^^^^^^^^^^^^^ + * ``` + */ + value: string; +}; +type NamedUtilityValue = { + kind: 'named'; + /** + * ``` + * bg-red-500 + * ^^^^^^^ + * + * w-1/2 + * ^ + * ``` + */ + value: string; + /** + * ``` + * w-1/2 + * ^^^ + * ``` + */ + fraction: string | null; +}; +type ArbitraryModifier = { + kind: 'arbitrary'; + /** + * ``` + * bg-red-500/[50%] + * ^^^ + * ``` + */ + value: string; +}; +type NamedModifier = { + kind: 'named'; + /** + * ``` + * bg-red-500/50 + * ^^ + * ``` + */ + value: string; +}; +type ArbitraryVariantValue = { + kind: 'arbitrary'; + value: string; +}; +type NamedVariantValue = { + kind: 'named'; + value: string; +}; +type Variant = +/** + * Arbitrary variants are variants that take a selector and generate a variant + * on the fly. + * + * E.g.: `[&_p]` + */ +{ + kind: 'arbitrary'; + selector: string; + relative: boolean; +} +/** + * Static variants are variants that don't take any arguments. + * + * E.g.: `hover` + */ + | { + kind: 'static'; + root: string; +} +/** + * Functional variants are variants that can take an argument. The argument is + * either a named variant value or an arbitrary variant value. + * + * E.g.: + * + * - `aria-disabled` + * - `aria-[disabled]` + * - `@container-size` -> @container, with named value `size` + * - `@container-[inline-size]` -> @container, with arbitrary variant value `inline-size` + * - `@container` -> @container, with no value + */ + | { + kind: 'functional'; + root: string; + value: ArbitraryVariantValue | NamedVariantValue | null; + modifier: ArbitraryModifier | NamedModifier | null; +} +/** + * Compound variants are variants that take another variant as an argument. + * + * E.g.: + * + * - `has-[&_p]` + * - `group-*` + * - `peer-*` + */ + | { + kind: 'compound'; + root: string; + modifier: ArbitraryModifier | NamedModifier | null; + variant: Variant; +}; +type Candidate = +/** + * Arbitrary candidates are candidates that register utilities on the fly with + * a property and a value. + * + * E.g.: + * + * - `[color:red]` + * - `[color:red]/50` + * - `[color:red]/50!` + */ +{ + kind: 'arbitrary'; + property: string; + value: string; + modifier: ArbitraryModifier | NamedModifier | null; + variants: Variant[]; + important: boolean; + raw: string; +} +/** + * Static candidates are candidates that don't take any arguments. + * + * E.g.: + * + * - `underline` + * - `box-border` + */ + | { + kind: 'static'; + root: string; + variants: Variant[]; + important: boolean; + raw: string; +} +/** + * Functional candidates are candidates that can take an argument. + * + * E.g.: + * + * - `bg-red-500` + * - `bg-[#0088cc]` + * - `w-1/2` + */ + | { + kind: 'functional'; + root: string; + value: ArbitraryUtilityValue | NamedUtilityValue | null; + modifier: ArbitraryModifier | NamedModifier | null; + variants: Variant[]; + important: boolean; + raw: string; +}; + +type PluginUtils = { + theme: (keypath: string, defaultValue?: any) => any; + colors: typeof _default; +}; + +export type { Candidate as C, NamedUtilityValue as N, PluginUtils as P, Variant as V }; diff --git a/node_modules/tailwindcss/dist/types-CJYAW1ql.d.mts b/node_modules/tailwindcss/dist/types-CJYAW1ql.d.mts new file mode 100644 index 00000000..6d5ca4a8 --- /dev/null +++ b/node_modules/tailwindcss/dist/types-CJYAW1ql.d.mts @@ -0,0 +1,128 @@ +import { N as NamedUtilityValue, P as PluginUtils } from './resolve-config-QUZ9b-Gn.mjs'; + +/** + * The source code for one or more nodes in the AST + * + * This generally corresponds to a stylesheet + */ +interface Source { + /** + * The path to the file that contains the referenced source code + * + * If this references the *output* source code, this is `null`. + */ + file: string | null; + /** + * The referenced source code + */ + code: string; +} +/** + * The file and offsets within it that this node covers + * + * This can represent either: + * - A location in the original CSS which caused this node to be created + * - A location in the output CSS where this node resides + */ +type SourceLocation = [source: Source, start: number, end: number]; + +type Config = UserConfig; +type PluginFn = (api: PluginAPI) => void; +type PluginWithConfig = { + handler: PluginFn; + config?: UserConfig; + /** @internal */ + reference?: boolean; + src?: SourceLocation | undefined; +}; +type PluginWithOptions = { + (options?: T): PluginWithConfig; + __isOptionsFunction: true; +}; +type Plugin = PluginFn | PluginWithConfig | PluginWithOptions; +type PluginAPI = { + addBase(base: CssInJs): void; + addVariant(name: string, variant: string | string[] | CssInJs): void; + matchVariant(name: string, cb: (value: T | string, extra: { + modifier: string | null; + }) => string | string[], options?: { + values?: Record; + sort?(a: { + value: T | string; + modifier: string | null; + }, b: { + value: T | string; + modifier: string | null; + }): number; + }): void; + addUtilities(utilities: Record | Record[], options?: {}): void; + matchUtilities(utilities: Record CssInJs | CssInJs[]>, options?: Partial<{ + type: string | string[]; + supportsNegativeValues: boolean; + values: Record & { + __BARE_VALUE__?: (value: NamedUtilityValue) => string | undefined; + }; + modifiers: 'any' | Record; + }>): void; + addComponents(utilities: Record | Record[], options?: {}): void; + matchComponents(utilities: Record CssInJs>, options?: Partial<{ + type: string | string[]; + supportsNegativeValues: boolean; + values: Record & { + __BARE_VALUE__?: (value: NamedUtilityValue) => string | undefined; + }; + modifiers: 'any' | Record; + }>): void; + theme(path: string, defaultValue?: any): any; + config(path?: string, defaultValue?: any): any; + prefix(className: string): string; +}; +type CssInJs = { + [key: string]: string | string[] | CssInJs | CssInJs[]; +}; + +type ResolvableTo = T | ((utils: PluginUtils) => T); +type ThemeValue = ResolvableTo> | null | undefined; +type ThemeConfig = Record & { + extend?: Record; +}; +type ContentFile = string | { + raw: string; + extension?: string; +}; +type DarkModeStrategy = false | 'media' | 'class' | ['class', string] | 'selector' | ['selector', string] | ['variant', string | string[]]; +interface UserConfig { + presets?: UserConfig[]; + theme?: ThemeConfig; + plugins?: Plugin[]; +} +interface UserConfig { + content?: ContentFile[] | { + relative?: boolean; + files: ContentFile[]; + }; +} +interface UserConfig { + darkMode?: DarkModeStrategy; +} +interface UserConfig { + prefix?: string; +} +interface UserConfig { + blocklist?: string[]; +} +interface UserConfig { + important?: boolean | string; +} +interface UserConfig { + future?: 'all' | Record; +} +interface UserConfig { + experimental?: 'all' | Record; +} + +export type { Config as C, Plugin as P, SourceLocation as S, ThemeConfig as T, UserConfig as U, PluginFn as a, PluginWithConfig as b, PluginWithOptions as c, PluginAPI as d }; diff --git a/node_modules/tailwindcss/index.css b/node_modules/tailwindcss/index.css new file mode 100644 index 00000000..06c8a4e9 --- /dev/null +++ b/node_modules/tailwindcss/index.css @@ -0,0 +1,944 @@ +@layer theme, base, components, utilities; + +@layer theme { + @theme default { + --font-sans: + ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", + "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif; + --font-mono: + ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", + "Courier New", monospace; + + --color-red-50: oklch(97.1% 0.013 17.38); + --color-red-100: oklch(93.6% 0.032 17.717); + --color-red-200: oklch(88.5% 0.062 18.334); + --color-red-300: oklch(80.8% 0.114 19.571); + --color-red-400: oklch(70.4% 0.191 22.216); + --color-red-500: oklch(63.7% 0.237 25.331); + --color-red-600: oklch(57.7% 0.245 27.325); + --color-red-700: oklch(50.5% 0.213 27.518); + --color-red-800: oklch(44.4% 0.177 26.899); + --color-red-900: oklch(39.6% 0.141 25.723); + --color-red-950: oklch(25.8% 0.092 26.042); + + --color-orange-50: oklch(98% 0.016 73.684); + --color-orange-100: oklch(95.4% 0.038 75.164); + --color-orange-200: oklch(90.1% 0.076 70.697); + --color-orange-300: oklch(83.7% 0.128 66.29); + --color-orange-400: oklch(75% 0.183 55.934); + --color-orange-500: oklch(70.5% 0.213 47.604); + --color-orange-600: oklch(64.6% 0.222 41.116); + --color-orange-700: oklch(55.3% 0.195 38.402); + --color-orange-800: oklch(47% 0.157 37.304); + --color-orange-900: oklch(40.8% 0.123 38.172); + --color-orange-950: oklch(26.6% 0.079 36.259); + + --color-amber-50: oklch(98.7% 0.022 95.277); + --color-amber-100: oklch(96.2% 0.059 95.617); + --color-amber-200: oklch(92.4% 0.12 95.746); + --color-amber-300: oklch(87.9% 0.169 91.605); + --color-amber-400: oklch(82.8% 0.189 84.429); + --color-amber-500: oklch(76.9% 0.188 70.08); + --color-amber-600: oklch(66.6% 0.179 58.318); + --color-amber-700: oklch(55.5% 0.163 48.998); + --color-amber-800: oklch(47.3% 0.137 46.201); + --color-amber-900: oklch(41.4% 0.112 45.904); + --color-amber-950: oklch(27.9% 0.077 45.635); + + --color-yellow-50: oklch(98.7% 0.026 102.212); + --color-yellow-100: oklch(97.3% 0.071 103.193); + --color-yellow-200: oklch(94.5% 0.129 101.54); + --color-yellow-300: oklch(90.5% 0.182 98.111); + --color-yellow-400: oklch(85.2% 0.199 91.936); + --color-yellow-500: oklch(79.5% 0.184 86.047); + --color-yellow-600: oklch(68.1% 0.162 75.834); + --color-yellow-700: oklch(55.4% 0.135 66.442); + --color-yellow-800: oklch(47.6% 0.114 61.907); + --color-yellow-900: oklch(42.1% 0.095 57.708); + --color-yellow-950: oklch(28.6% 0.066 53.813); + + --color-lime-50: oklch(98.6% 0.031 120.757); + --color-lime-100: oklch(96.7% 0.067 122.328); + --color-lime-200: oklch(93.8% 0.127 124.321); + --color-lime-300: oklch(89.7% 0.196 126.665); + --color-lime-400: oklch(84.1% 0.238 128.85); + --color-lime-500: oklch(76.8% 0.233 130.85); + --color-lime-600: oklch(64.8% 0.2 131.684); + --color-lime-700: oklch(53.2% 0.157 131.589); + --color-lime-800: oklch(45.3% 0.124 130.933); + --color-lime-900: oklch(40.5% 0.101 131.063); + --color-lime-950: oklch(27.4% 0.072 132.109); + + --color-green-50: oklch(98.2% 0.018 155.826); + --color-green-100: oklch(96.2% 0.044 156.743); + --color-green-200: oklch(92.5% 0.084 155.995); + --color-green-300: oklch(87.1% 0.15 154.449); + --color-green-400: oklch(79.2% 0.209 151.711); + --color-green-500: oklch(72.3% 0.219 149.579); + --color-green-600: oklch(62.7% 0.194 149.214); + --color-green-700: oklch(52.7% 0.154 150.069); + --color-green-800: oklch(44.8% 0.119 151.328); + --color-green-900: oklch(39.3% 0.095 152.535); + --color-green-950: oklch(26.6% 0.065 152.934); + + --color-emerald-50: oklch(97.9% 0.021 166.113); + --color-emerald-100: oklch(95% 0.052 163.051); + --color-emerald-200: oklch(90.5% 0.093 164.15); + --color-emerald-300: oklch(84.5% 0.143 164.978); + --color-emerald-400: oklch(76.5% 0.177 163.223); + --color-emerald-500: oklch(69.6% 0.17 162.48); + --color-emerald-600: oklch(59.6% 0.145 163.225); + --color-emerald-700: oklch(50.8% 0.118 165.612); + --color-emerald-800: oklch(43.2% 0.095 166.913); + --color-emerald-900: oklch(37.8% 0.077 168.94); + --color-emerald-950: oklch(26.2% 0.051 172.552); + + --color-teal-50: oklch(98.4% 0.014 180.72); + --color-teal-100: oklch(95.3% 0.051 180.801); + --color-teal-200: oklch(91% 0.096 180.426); + --color-teal-300: oklch(85.5% 0.138 181.071); + --color-teal-400: oklch(77.7% 0.152 181.912); + --color-teal-500: oklch(70.4% 0.14 182.503); + --color-teal-600: oklch(60% 0.118 184.704); + --color-teal-700: oklch(51.1% 0.096 186.391); + --color-teal-800: oklch(43.7% 0.078 188.216); + --color-teal-900: oklch(38.6% 0.063 188.416); + --color-teal-950: oklch(27.7% 0.046 192.524); + + --color-cyan-50: oklch(98.4% 0.019 200.873); + --color-cyan-100: oklch(95.6% 0.045 203.388); + --color-cyan-200: oklch(91.7% 0.08 205.041); + --color-cyan-300: oklch(86.5% 0.127 207.078); + --color-cyan-400: oklch(78.9% 0.154 211.53); + --color-cyan-500: oklch(71.5% 0.143 215.221); + --color-cyan-600: oklch(60.9% 0.126 221.723); + --color-cyan-700: oklch(52% 0.105 223.128); + --color-cyan-800: oklch(45% 0.085 224.283); + --color-cyan-900: oklch(39.8% 0.07 227.392); + --color-cyan-950: oklch(30.2% 0.056 229.695); + + --color-sky-50: oklch(97.7% 0.013 236.62); + --color-sky-100: oklch(95.1% 0.026 236.824); + --color-sky-200: oklch(90.1% 0.058 230.902); + --color-sky-300: oklch(82.8% 0.111 230.318); + --color-sky-400: oklch(74.6% 0.16 232.661); + --color-sky-500: oklch(68.5% 0.169 237.323); + --color-sky-600: oklch(58.8% 0.158 241.966); + --color-sky-700: oklch(50% 0.134 242.749); + --color-sky-800: oklch(44.3% 0.11 240.79); + --color-sky-900: oklch(39.1% 0.09 240.876); + --color-sky-950: oklch(29.3% 0.066 243.157); + + --color-blue-50: oklch(97% 0.014 254.604); + --color-blue-100: oklch(93.2% 0.032 255.585); + --color-blue-200: oklch(88.2% 0.059 254.128); + --color-blue-300: oklch(80.9% 0.105 251.813); + --color-blue-400: oklch(70.7% 0.165 254.624); + --color-blue-500: oklch(62.3% 0.214 259.815); + --color-blue-600: oklch(54.6% 0.245 262.881); + --color-blue-700: oklch(48.8% 0.243 264.376); + --color-blue-800: oklch(42.4% 0.199 265.638); + --color-blue-900: oklch(37.9% 0.146 265.522); + --color-blue-950: oklch(28.2% 0.091 267.935); + + --color-indigo-50: oklch(96.2% 0.018 272.314); + --color-indigo-100: oklch(93% 0.034 272.788); + --color-indigo-200: oklch(87% 0.065 274.039); + --color-indigo-300: oklch(78.5% 0.115 274.713); + --color-indigo-400: oklch(67.3% 0.182 276.935); + --color-indigo-500: oklch(58.5% 0.233 277.117); + --color-indigo-600: oklch(51.1% 0.262 276.966); + --color-indigo-700: oklch(45.7% 0.24 277.023); + --color-indigo-800: oklch(39.8% 0.195 277.366); + --color-indigo-900: oklch(35.9% 0.144 278.697); + --color-indigo-950: oklch(25.7% 0.09 281.288); + + --color-violet-50: oklch(96.9% 0.016 293.756); + --color-violet-100: oklch(94.3% 0.029 294.588); + --color-violet-200: oklch(89.4% 0.057 293.283); + --color-violet-300: oklch(81.1% 0.111 293.571); + --color-violet-400: oklch(70.2% 0.183 293.541); + --color-violet-500: oklch(60.6% 0.25 292.717); + --color-violet-600: oklch(54.1% 0.281 293.009); + --color-violet-700: oklch(49.1% 0.27 292.581); + --color-violet-800: oklch(43.2% 0.232 292.759); + --color-violet-900: oklch(38% 0.189 293.745); + --color-violet-950: oklch(28.3% 0.141 291.089); + + --color-purple-50: oklch(97.7% 0.014 308.299); + --color-purple-100: oklch(94.6% 0.033 307.174); + --color-purple-200: oklch(90.2% 0.063 306.703); + --color-purple-300: oklch(82.7% 0.119 306.383); + --color-purple-400: oklch(71.4% 0.203 305.504); + --color-purple-500: oklch(62.7% 0.265 303.9); + --color-purple-600: oklch(55.8% 0.288 302.321); + --color-purple-700: oklch(49.6% 0.265 301.924); + --color-purple-800: oklch(43.8% 0.218 303.724); + --color-purple-900: oklch(38.1% 0.176 304.987); + --color-purple-950: oklch(29.1% 0.149 302.717); + + --color-fuchsia-50: oklch(97.7% 0.017 320.058); + --color-fuchsia-100: oklch(95.2% 0.037 318.852); + --color-fuchsia-200: oklch(90.3% 0.076 319.62); + --color-fuchsia-300: oklch(83.3% 0.145 321.434); + --color-fuchsia-400: oklch(74% 0.238 322.16); + --color-fuchsia-500: oklch(66.7% 0.295 322.15); + --color-fuchsia-600: oklch(59.1% 0.293 322.896); + --color-fuchsia-700: oklch(51.8% 0.253 323.949); + --color-fuchsia-800: oklch(45.2% 0.211 324.591); + --color-fuchsia-900: oklch(40.1% 0.17 325.612); + --color-fuchsia-950: oklch(29.3% 0.136 325.661); + + --color-pink-50: oklch(97.1% 0.014 343.198); + --color-pink-100: oklch(94.8% 0.028 342.258); + --color-pink-200: oklch(89.9% 0.061 343.231); + --color-pink-300: oklch(82.3% 0.12 346.018); + --color-pink-400: oklch(71.8% 0.202 349.761); + --color-pink-500: oklch(65.6% 0.241 354.308); + --color-pink-600: oklch(59.2% 0.249 0.584); + --color-pink-700: oklch(52.5% 0.223 3.958); + --color-pink-800: oklch(45.9% 0.187 3.815); + --color-pink-900: oklch(40.8% 0.153 2.432); + --color-pink-950: oklch(28.4% 0.109 3.907); + + --color-rose-50: oklch(96.9% 0.015 12.422); + --color-rose-100: oklch(94.1% 0.03 12.58); + --color-rose-200: oklch(89.2% 0.058 10.001); + --color-rose-300: oklch(81% 0.117 11.638); + --color-rose-400: oklch(71.2% 0.194 13.428); + --color-rose-500: oklch(64.5% 0.246 16.439); + --color-rose-600: oklch(58.6% 0.253 17.585); + --color-rose-700: oklch(51.4% 0.222 16.935); + --color-rose-800: oklch(45.5% 0.188 13.697); + --color-rose-900: oklch(41% 0.159 10.272); + --color-rose-950: oklch(27.1% 0.105 12.094); + + --color-slate-50: oklch(98.4% 0.003 247.858); + --color-slate-100: oklch(96.8% 0.007 247.896); + --color-slate-200: oklch(92.9% 0.013 255.508); + --color-slate-300: oklch(86.9% 0.022 252.894); + --color-slate-400: oklch(70.4% 0.04 256.788); + --color-slate-500: oklch(55.4% 0.046 257.417); + --color-slate-600: oklch(44.6% 0.043 257.281); + --color-slate-700: oklch(37.2% 0.044 257.287); + --color-slate-800: oklch(27.9% 0.041 260.031); + --color-slate-900: oklch(20.8% 0.042 265.755); + --color-slate-950: oklch(12.9% 0.042 264.695); + + --color-gray-50: oklch(98.5% 0.002 247.839); + --color-gray-100: oklch(96.7% 0.003 264.542); + --color-gray-200: oklch(92.8% 0.006 264.531); + --color-gray-300: oklch(87.2% 0.01 258.338); + --color-gray-400: oklch(70.7% 0.022 261.325); + --color-gray-500: oklch(55.1% 0.027 264.364); + --color-gray-600: oklch(44.6% 0.03 256.802); + --color-gray-700: oklch(37.3% 0.034 259.733); + --color-gray-800: oklch(27.8% 0.033 256.848); + --color-gray-900: oklch(21% 0.034 264.665); + --color-gray-950: oklch(13% 0.028 261.692); + + --color-zinc-50: oklch(98.5% 0 0); + --color-zinc-100: oklch(96.7% 0.001 286.375); + --color-zinc-200: oklch(92% 0.004 286.32); + --color-zinc-300: oklch(87.1% 0.006 286.286); + --color-zinc-400: oklch(70.5% 0.015 286.067); + --color-zinc-500: oklch(55.2% 0.016 285.938); + --color-zinc-600: oklch(44.2% 0.017 285.786); + --color-zinc-700: oklch(37% 0.013 285.805); + --color-zinc-800: oklch(27.4% 0.006 286.033); + --color-zinc-900: oklch(21% 0.006 285.885); + --color-zinc-950: oklch(14.1% 0.005 285.823); + + --color-neutral-50: oklch(98.5% 0 0); + --color-neutral-100: oklch(97% 0 0); + --color-neutral-200: oklch(92.2% 0 0); + --color-neutral-300: oklch(87% 0 0); + --color-neutral-400: oklch(70.8% 0 0); + --color-neutral-500: oklch(55.6% 0 0); + --color-neutral-600: oklch(43.9% 0 0); + --color-neutral-700: oklch(37.1% 0 0); + --color-neutral-800: oklch(26.9% 0 0); + --color-neutral-900: oklch(20.5% 0 0); + --color-neutral-950: oklch(14.5% 0 0); + + --color-stone-50: oklch(98.5% 0.001 106.423); + --color-stone-100: oklch(97% 0.001 106.424); + --color-stone-200: oklch(92.3% 0.003 48.717); + --color-stone-300: oklch(86.9% 0.005 56.366); + --color-stone-400: oklch(70.9% 0.01 56.259); + --color-stone-500: oklch(55.3% 0.013 58.071); + --color-stone-600: oklch(44.4% 0.011 73.639); + --color-stone-700: oklch(37.4% 0.01 67.558); + --color-stone-800: oklch(26.8% 0.007 34.298); + --color-stone-900: oklch(21.6% 0.006 56.043); + --color-stone-950: oklch(14.7% 0.004 49.25); + + --color-mauve-50: oklch(98.5% 0 0); + --color-mauve-100: oklch(96% 0.003 325.6); + --color-mauve-200: oklch(92.2% 0.005 325.62); + --color-mauve-300: oklch(86.5% 0.012 325.68); + --color-mauve-400: oklch(71.1% 0.019 323.02); + --color-mauve-500: oklch(54.2% 0.034 322.5); + --color-mauve-600: oklch(43.5% 0.029 321.78); + --color-mauve-700: oklch(36.4% 0.029 323.89); + --color-mauve-800: oklch(26.3% 0.024 320.12); + --color-mauve-900: oklch(21.2% 0.019 322.12); + --color-mauve-950: oklch(14.5% 0.008 326); + + --color-olive-50: oklch(98.8% 0.003 106.5); + --color-olive-100: oklch(96.6% 0.005 106.5); + --color-olive-200: oklch(93% 0.007 106.5); + --color-olive-300: oklch(88% 0.011 106.6); + --color-olive-400: oklch(73.7% 0.021 106.9); + --color-olive-500: oklch(58% 0.031 107.3); + --color-olive-600: oklch(46.6% 0.025 107.3); + --color-olive-700: oklch(39.4% 0.023 107.4); + --color-olive-800: oklch(28.6% 0.016 107.4); + --color-olive-900: oklch(22.8% 0.013 107.4); + --color-olive-950: oklch(15.3% 0.006 107.1); + + --color-mist-50: oklch(98.7% 0.002 197.1); + --color-mist-100: oklch(96.3% 0.002 197.1); + --color-mist-200: oklch(92.5% 0.005 214.3); + --color-mist-300: oklch(87.2% 0.007 219.6); + --color-mist-400: oklch(72.3% 0.014 214.4); + --color-mist-500: oklch(56% 0.021 213.5); + --color-mist-600: oklch(45% 0.017 213.2); + --color-mist-700: oklch(37.8% 0.015 216); + --color-mist-800: oklch(27.5% 0.011 216.9); + --color-mist-900: oklch(21.8% 0.008 223.9); + --color-mist-950: oklch(14.8% 0.004 228.8); + + --color-taupe-50: oklch(98.6% 0.002 67.8); + --color-taupe-100: oklch(96% 0.002 17.2); + --color-taupe-200: oklch(92.2% 0.005 34.3); + --color-taupe-300: oklch(86.8% 0.007 39.5); + --color-taupe-400: oklch(71.4% 0.014 41.2); + --color-taupe-500: oklch(54.7% 0.021 43.1); + --color-taupe-600: oklch(43.8% 0.017 39.3); + --color-taupe-700: oklch(36.7% 0.016 35.7); + --color-taupe-800: oklch(26.8% 0.011 36.5); + --color-taupe-900: oklch(21.4% 0.009 43.1); + --color-taupe-950: oklch(14.7% 0.004 49.3); + + --color-black: #000; + --color-white: #fff; + + --spacing: 0.25rem; + + --breakpoint-sm: 40rem; + --breakpoint-md: 48rem; + --breakpoint-lg: 64rem; + --breakpoint-xl: 80rem; + --breakpoint-2xl: 96rem; + + --container-3xs: 16rem; + --container-2xs: 18rem; + --container-xs: 20rem; + --container-sm: 24rem; + --container-md: 28rem; + --container-lg: 32rem; + --container-xl: 36rem; + --container-2xl: 42rem; + --container-3xl: 48rem; + --container-4xl: 56rem; + --container-5xl: 64rem; + --container-6xl: 72rem; + --container-7xl: 80rem; + + --text-xs: 0.75rem; + --text-xs--line-height: calc(1 / 0.75); + --text-sm: 0.875rem; + --text-sm--line-height: calc(1.25 / 0.875); + --text-base: 1rem; + --text-base--line-height: calc(1.5 / 1); + --text-lg: 1.125rem; + --text-lg--line-height: calc(1.75 / 1.125); + --text-xl: 1.25rem; + --text-xl--line-height: calc(1.75 / 1.25); + --text-2xl: 1.5rem; + --text-2xl--line-height: calc(2 / 1.5); + --text-3xl: 1.875rem; + --text-3xl--line-height: calc(2.25 / 1.875); + --text-4xl: 2.25rem; + --text-4xl--line-height: calc(2.5 / 2.25); + --text-5xl: 3rem; + --text-5xl--line-height: 1; + --text-6xl: 3.75rem; + --text-6xl--line-height: 1; + --text-7xl: 4.5rem; + --text-7xl--line-height: 1; + --text-8xl: 6rem; + --text-8xl--line-height: 1; + --text-9xl: 8rem; + --text-9xl--line-height: 1; + + --font-weight-thin: 100; + --font-weight-extralight: 200; + --font-weight-light: 300; + --font-weight-normal: 400; + --font-weight-medium: 500; + --font-weight-semibold: 600; + --font-weight-bold: 700; + --font-weight-extrabold: 800; + --font-weight-black: 900; + + --tracking-tighter: -0.05em; + --tracking-tight: -0.025em; + --tracking-normal: 0em; + --tracking-wide: 0.025em; + --tracking-wider: 0.05em; + --tracking-widest: 0.1em; + + --leading-tight: 1.25; + --leading-snug: 1.375; + --leading-normal: 1.5; + --leading-relaxed: 1.625; + --leading-loose: 2; + + --radius-xs: 0.125rem; + --radius-sm: 0.25rem; + --radius-md: 0.375rem; + --radius-lg: 0.5rem; + --radius-xl: 0.75rem; + --radius-2xl: 1rem; + --radius-3xl: 1.5rem; + --radius-4xl: 2rem; + + --shadow-2xs: 0 1px rgb(0 0 0 / 0.05); + --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); + --shadow-md: + 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --shadow-lg: + 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); + --shadow-xl: + 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1); + --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25); + + --inset-shadow-2xs: inset 0 1px rgb(0 0 0 / 0.05); + --inset-shadow-xs: inset 0 1px 1px rgb(0 0 0 / 0.05); + --inset-shadow-sm: inset 0 2px 4px rgb(0 0 0 / 0.05); + + --drop-shadow-xs: 0 1px 1px rgb(0 0 0 / 0.05); + --drop-shadow-sm: 0 1px 2px rgb(0 0 0 / 0.15); + --drop-shadow-md: 0 3px 3px rgb(0 0 0 / 0.12); + --drop-shadow-lg: 0 4px 4px rgb(0 0 0 / 0.15); + --drop-shadow-xl: 0 9px 7px rgb(0 0 0 / 0.1); + --drop-shadow-2xl: 0 25px 25px rgb(0 0 0 / 0.15); + + --text-shadow-2xs: 0px 1px 0px rgb(0 0 0 / 0.15); + --text-shadow-xs: 0px 1px 1px rgb(0 0 0 / 0.2); + --text-shadow-sm: + 0px 1px 0px rgb(0 0 0 / 0.075), 0px 1px 1px rgb(0 0 0 / 0.075), + 0px 2px 2px rgb(0 0 0 / 0.075); + --text-shadow-md: + 0px 1px 1px rgb(0 0 0 / 0.1), 0px 1px 2px rgb(0 0 0 / 0.1), + 0px 2px 4px rgb(0 0 0 / 0.1); + --text-shadow-lg: + 0px 1px 2px rgb(0 0 0 / 0.1), 0px 3px 2px rgb(0 0 0 / 0.1), + 0px 4px 8px rgb(0 0 0 / 0.1); + + --ease-in: cubic-bezier(0.4, 0, 1, 1); + --ease-out: cubic-bezier(0, 0, 0.2, 1); + --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1); + + --animate-spin: spin 1s linear infinite; + --animate-ping: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite; + --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; + --animate-bounce: bounce 1s infinite; + + @keyframes spin { + to { + transform: rotate(360deg); + } + } + + @keyframes ping { + 75%, + 100% { + transform: scale(2); + opacity: 0; + } + } + + @keyframes pulse { + 50% { + opacity: 0.5; + } + } + + @keyframes bounce { + 0%, + 100% { + transform: translateY(-25%); + animation-timing-function: cubic-bezier(0.8, 0, 1, 1); + } + + 50% { + transform: none; + animation-timing-function: cubic-bezier(0, 0, 0.2, 1); + } + } + + --blur-xs: 4px; + --blur-sm: 8px; + --blur-md: 12px; + --blur-lg: 16px; + --blur-xl: 24px; + --blur-2xl: 40px; + --blur-3xl: 64px; + + --perspective-dramatic: 100px; + --perspective-near: 300px; + --perspective-normal: 500px; + --perspective-midrange: 800px; + --perspective-distant: 1200px; + + --aspect-video: 16 / 9; + + --default-transition-duration: 150ms; + --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + --default-font-family: --theme(--font-sans, initial); + --default-font-feature-settings: --theme( + --font-sans--font-feature-settings, + initial + ); + --default-font-variation-settings: --theme( + --font-sans--font-variation-settings, + initial + ); + --default-mono-font-family: --theme(--font-mono, initial); + --default-mono-font-feature-settings: --theme( + --font-mono--font-feature-settings, + initial + ); + --default-mono-font-variation-settings: --theme( + --font-mono--font-variation-settings, + initial + ); + } + + /* Deprecated */ + @theme default inline reference { + --blur: 8px; + --shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); + --shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 0.05); + --drop-shadow: 0 1px 2px rgb(0 0 0 / 0.1), 0 1px 1px rgb(0 0 0 / 0.06); + --radius: 0.25rem; + --max-width-prose: 65ch; + } +} + +@layer base { + /* + 1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) + 2. Remove default margins and padding + 3. Reset all borders. +*/ + + *, + ::after, + ::before, + ::backdrop, + ::file-selector-button { + box-sizing: border-box; /* 1 */ + margin: 0; /* 2 */ + padding: 0; /* 2 */ + border: 0 solid; /* 3 */ + } + + /* + 1. Use a consistent sensible line-height in all browsers. + 2. Prevent adjustments of font size after orientation changes in iOS. + 3. Use a more readable tab size. + 4. Use the user's configured `sans` font-family by default. + 5. Use the user's configured `sans` font-feature-settings by default. + 6. Use the user's configured `sans` font-variation-settings by default. + 7. Disable tap highlights on iOS. +*/ + + html, + :host { + line-height: 1.5; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ + tab-size: 4; /* 3 */ + font-family: --theme( + --default-font-family, + ui-sans-serif, + system-ui, + sans-serif, + "Apple Color Emoji", + "Segoe UI Emoji", + "Segoe UI Symbol", + "Noto Color Emoji" + ); /* 4 */ + font-feature-settings: --theme( + --default-font-feature-settings, + normal + ); /* 5 */ + font-variation-settings: --theme( + --default-font-variation-settings, + normal + ); /* 6 */ + -webkit-tap-highlight-color: transparent; /* 7 */ + } + + /* + 1. Add the correct height in Firefox. + 2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) + 3. Reset the default border style to a 1px solid border. +*/ + + hr { + height: 0; /* 1 */ + color: inherit; /* 2 */ + border-top-width: 1px; /* 3 */ + } + + /* + Add the correct text decoration in Chrome, Edge, and Safari. +*/ + + abbr:where([title]) { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + } + + /* + Remove the default font size and weight for headings. +*/ + + h1, + h2, + h3, + h4, + h5, + h6 { + font-size: inherit; + font-weight: inherit; + } + + /* + Reset links to optimize for opt-in styling instead of opt-out. +*/ + + a { + color: inherit; + -webkit-text-decoration: inherit; + text-decoration: inherit; + } + + /* + Add the correct font weight in Edge and Safari. +*/ + + b, + strong { + font-weight: bolder; + } + + /* + 1. Use the user's configured `mono` font-family by default. + 2. Use the user's configured `mono` font-feature-settings by default. + 3. Use the user's configured `mono` font-variation-settings by default. + 4. Correct the odd `em` font sizing in all browsers. +*/ + + code, + kbd, + samp, + pre { + font-family: --theme( + --default-mono-font-family, + ui-monospace, + SFMono-Regular, + Menlo, + Monaco, + Consolas, + "Liberation Mono", + "Courier New", + monospace + ); /* 1 */ + font-feature-settings: --theme( + --default-mono-font-feature-settings, + normal + ); /* 2 */ + font-variation-settings: --theme( + --default-mono-font-variation-settings, + normal + ); /* 3 */ + font-size: 1em; /* 4 */ + } + + /* + Add the correct font size in all browsers. +*/ + + small { + font-size: 80%; + } + + /* + Prevent `sub` and `sup` elements from affecting the line height in all browsers. +*/ + + sub, + sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; + } + + sub { + bottom: -0.25em; + } + + sup { + top: -0.5em; + } + + /* + 1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) + 2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) + 3. Remove gaps between table borders by default. +*/ + + table { + text-indent: 0; /* 1 */ + border-color: inherit; /* 2 */ + border-collapse: collapse; /* 3 */ + } + + /* + Use the modern Firefox focus style for all focusable elements. +*/ + + :-moz-focusring { + outline: auto; + } + + /* + Add the correct vertical alignment in Chrome and Firefox. +*/ + + progress { + vertical-align: baseline; + } + + /* + Add the correct display in Chrome and Safari. +*/ + + summary { + display: list-item; + } + + /* + Make lists unstyled by default. +*/ + + ol, + ul, + menu { + list-style: none; + } + + /* + 1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) + 2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) + This can trigger a poorly considered lint error in some tools but is included by design. +*/ + + img, + svg, + video, + canvas, + audio, + iframe, + embed, + object { + display: block; /* 1 */ + vertical-align: middle; /* 2 */ + } + + /* + Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) +*/ + + img, + video { + max-width: 100%; + height: auto; + } + + /* + 1. Inherit font styles in all browsers. + 2. Remove border radius in all browsers. + 3. Remove background color in all browsers. + 4. Ensure consistent opacity for disabled states in all browsers. +*/ + + button, + input, + select, + optgroup, + textarea, + ::file-selector-button { + font: inherit; /* 1 */ + font-feature-settings: inherit; /* 1 */ + font-variation-settings: inherit; /* 1 */ + letter-spacing: inherit; /* 1 */ + color: inherit; /* 1 */ + border-radius: 0; /* 2 */ + background-color: transparent; /* 3 */ + opacity: 1; /* 4 */ + } + + /* + Restore default font weight. +*/ + + :where(select:is([multiple], [size])) optgroup { + font-weight: bolder; + } + + /* + Restore indentation. +*/ + + :where(select:is([multiple], [size])) optgroup option { + padding-inline-start: 20px; + } + + /* + Restore space after button. +*/ + + ::file-selector-button { + margin-inline-end: 4px; + } + + /* + Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) +*/ + + ::placeholder { + opacity: 1; + } + + /* + Set the default placeholder color to a semi-transparent version of the current text color in browsers that do not + crash when using `color-mix(…)` with `currentcolor`. (https://github.com/tailwindlabs/tailwindcss/issues/17194) +*/ + + @supports (not (-webkit-appearance: -apple-pay-button)) /* Not Safari */ or + (contain-intrinsic-size: 1px) /* Safari 17+ */ { + ::placeholder { + color: color-mix(in oklab, currentcolor 50%, transparent); + } + } + + /* + Prevent resizing textareas horizontally by default. +*/ + + textarea { + resize: vertical; + } + + /* + Remove the inner padding in Chrome and Safari on macOS. +*/ + + ::-webkit-search-decoration { + -webkit-appearance: none; + } + + /* + 1. Ensure date/time inputs have the same height when empty in iOS Safari. + 2. Ensure text alignment can be changed on date/time inputs in iOS Safari. +*/ + + ::-webkit-date-and-time-value { + min-height: 1lh; /* 1 */ + text-align: inherit; /* 2 */ + } + + /* + Prevent height from changing on date/time inputs in macOS Safari when the input is set to `display: block`. +*/ + + ::-webkit-datetime-edit { + display: inline-flex; + } + + /* + Remove excess padding from pseudo-elements in date/time inputs to ensure consistent height across browsers. +*/ + + ::-webkit-datetime-edit-fields-wrapper { + padding: 0; + } + + ::-webkit-datetime-edit, + ::-webkit-datetime-edit-year-field, + ::-webkit-datetime-edit-month-field, + ::-webkit-datetime-edit-day-field, + ::-webkit-datetime-edit-hour-field, + ::-webkit-datetime-edit-minute-field, + ::-webkit-datetime-edit-second-field, + ::-webkit-datetime-edit-millisecond-field, + ::-webkit-datetime-edit-meridiem-field { + padding-block: 0; + } + + /* + Center dropdown marker shown on inputs with paired ``s in Chrome. (https://github.com/tailwindlabs/tailwindcss/issues/18499) +*/ + + ::-webkit-calendar-picker-indicator { + line-height: 1; + } + + /* + Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) +*/ + + :-moz-ui-invalid { + box-shadow: none; + } + + /* + Correct the inability to style the border radius in iOS Safari. +*/ + + button, + input:where([type="button"], [type="reset"], [type="submit"]), + ::file-selector-button { + appearance: button; + } + + /* + Correct the cursor style of increment and decrement buttons in Safari. +*/ + + ::-webkit-inner-spin-button, + ::-webkit-outer-spin-button { + height: auto; + } + + /* + Make elements with the HTML hidden attribute stay hidden by default. +*/ + + [hidden]:where(:not([hidden="until-found"])) { + display: none !important; + } +} + +@layer utilities { + @tailwind utilities; +} diff --git a/node_modules/tailwindcss/package.json b/node_modules/tailwindcss/package.json new file mode 100644 index 00000000..071120a3 --- /dev/null +++ b/node_modules/tailwindcss/package.json @@ -0,0 +1,89 @@ +{ + "name": "tailwindcss", + "version": "4.2.4", + "description": "A utility-first CSS framework for rapidly building custom user interfaces.", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/tailwindlabs/tailwindcss.git", + "directory": "packages/tailwindcss" + }, + "bugs": "https://github.com/tailwindlabs/tailwindcss/issues", + "homepage": "https://tailwindcss.com", + "exports": { + ".": { + "types": "./dist/lib.d.mts", + "style": "./index.css", + "require": "./dist/lib.js", + "import": "./dist/lib.mjs" + }, + "./plugin": { + "require": "./dist/plugin.js", + "import": "./dist/plugin.mjs" + }, + "./plugin.js": { + "require": "./dist/plugin.js", + "import": "./dist/plugin.mjs" + }, + "./defaultTheme": { + "require": "./dist/default-theme.js", + "import": "./dist/default-theme.mjs" + }, + "./defaultTheme.js": { + "require": "./dist/default-theme.js", + "import": "./dist/default-theme.mjs" + }, + "./colors": { + "require": "./dist/colors.js", + "import": "./dist/colors.mjs" + }, + "./colors.js": { + "require": "./dist/colors.js", + "import": "./dist/colors.mjs" + }, + "./lib/util/flattenColorPalette": { + "require": "./dist/flatten-color-palette.js", + "import": "./dist/flatten-color-palette.mjs" + }, + "./lib/util/flattenColorPalette.js": { + "require": "./dist/flatten-color-palette.js", + "import": "./dist/flatten-color-palette.mjs" + }, + "./package.json": "./package.json", + "./index.css": "./index.css", + "./index": "./index.css", + "./preflight.css": "./preflight.css", + "./preflight": "./preflight.css", + "./theme.css": "./theme.css", + "./theme": "./theme.css", + "./utilities.css": "./utilities.css", + "./utilities": "./utilities.css" + }, + "publishConfig": { + "provenance": true, + "access": "public" + }, + "style": "index.css", + "files": [ + "dist", + "index.css", + "preflight.css", + "theme.css", + "utilities.css" + ], + "devDependencies": { + "@jridgewell/remapping": "^2.3.5", + "@types/node": "^20.19.0", + "dedent": "1.7.1", + "lightningcss": "1.32.0", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "@tailwindcss/oxide": "^4.2.4" + }, + "scripts": { + "lint": "tsc --noEmit", + "build": "tsup-node --env.NODE_ENV production", + "dev": "tsup-node --env.NODE_ENV development --watch", + "test:ui": "playwright test" + } +} \ No newline at end of file diff --git a/node_modules/tailwindcss/preflight.css b/node_modules/tailwindcss/preflight.css new file mode 100644 index 00000000..753e79ef --- /dev/null +++ b/node_modules/tailwindcss/preflight.css @@ -0,0 +1,393 @@ +/* + 1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) + 2. Remove default margins and padding + 3. Reset all borders. +*/ + +*, +::after, +::before, +::backdrop, +::file-selector-button { + box-sizing: border-box; /* 1 */ + margin: 0; /* 2 */ + padding: 0; /* 2 */ + border: 0 solid; /* 3 */ +} + +/* + 1. Use a consistent sensible line-height in all browsers. + 2. Prevent adjustments of font size after orientation changes in iOS. + 3. Use a more readable tab size. + 4. Use the user's configured `sans` font-family by default. + 5. Use the user's configured `sans` font-feature-settings by default. + 6. Use the user's configured `sans` font-variation-settings by default. + 7. Disable tap highlights on iOS. +*/ + +html, +:host { + line-height: 1.5; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ + tab-size: 4; /* 3 */ + font-family: --theme( + --default-font-family, + ui-sans-serif, + system-ui, + sans-serif, + 'Apple Color Emoji', + 'Segoe UI Emoji', + 'Segoe UI Symbol', + 'Noto Color Emoji' + ); /* 4 */ + font-feature-settings: --theme(--default-font-feature-settings, normal); /* 5 */ + font-variation-settings: --theme(--default-font-variation-settings, normal); /* 6 */ + -webkit-tap-highlight-color: transparent; /* 7 */ +} + +/* + 1. Add the correct height in Firefox. + 2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) + 3. Reset the default border style to a 1px solid border. +*/ + +hr { + height: 0; /* 1 */ + color: inherit; /* 2 */ + border-top-width: 1px; /* 3 */ +} + +/* + Add the correct text decoration in Chrome, Edge, and Safari. +*/ + +abbr:where([title]) { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; +} + +/* + Remove the default font size and weight for headings. +*/ + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: inherit; + font-weight: inherit; +} + +/* + Reset links to optimize for opt-in styling instead of opt-out. +*/ + +a { + color: inherit; + -webkit-text-decoration: inherit; + text-decoration: inherit; +} + +/* + Add the correct font weight in Edge and Safari. +*/ + +b, +strong { + font-weight: bolder; +} + +/* + 1. Use the user's configured `mono` font-family by default. + 2. Use the user's configured `mono` font-feature-settings by default. + 3. Use the user's configured `mono` font-variation-settings by default. + 4. Correct the odd `em` font sizing in all browsers. +*/ + +code, +kbd, +samp, +pre { + font-family: --theme( + --default-mono-font-family, + ui-monospace, + SFMono-Regular, + Menlo, + Monaco, + Consolas, + 'Liberation Mono', + 'Courier New', + monospace + ); /* 1 */ + font-feature-settings: --theme(--default-mono-font-feature-settings, normal); /* 2 */ + font-variation-settings: --theme(--default-mono-font-variation-settings, normal); /* 3 */ + font-size: 1em; /* 4 */ +} + +/* + Add the correct font size in all browsers. +*/ + +small { + font-size: 80%; +} + +/* + Prevent `sub` and `sup` elements from affecting the line height in all browsers. +*/ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* + 1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) + 2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) + 3. Remove gaps between table borders by default. +*/ + +table { + text-indent: 0; /* 1 */ + border-color: inherit; /* 2 */ + border-collapse: collapse; /* 3 */ +} + +/* + Use the modern Firefox focus style for all focusable elements. +*/ + +:-moz-focusring { + outline: auto; +} + +/* + Add the correct vertical alignment in Chrome and Firefox. +*/ + +progress { + vertical-align: baseline; +} + +/* + Add the correct display in Chrome and Safari. +*/ + +summary { + display: list-item; +} + +/* + Make lists unstyled by default. +*/ + +ol, +ul, +menu { + list-style: none; +} + +/* + 1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) + 2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) + This can trigger a poorly considered lint error in some tools but is included by design. +*/ + +img, +svg, +video, +canvas, +audio, +iframe, +embed, +object { + display: block; /* 1 */ + vertical-align: middle; /* 2 */ +} + +/* + Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) +*/ + +img, +video { + max-width: 100%; + height: auto; +} + +/* + 1. Inherit font styles in all browsers. + 2. Remove border radius in all browsers. + 3. Remove background color in all browsers. + 4. Ensure consistent opacity for disabled states in all browsers. +*/ + +button, +input, +select, +optgroup, +textarea, +::file-selector-button { + font: inherit; /* 1 */ + font-feature-settings: inherit; /* 1 */ + font-variation-settings: inherit; /* 1 */ + letter-spacing: inherit; /* 1 */ + color: inherit; /* 1 */ + border-radius: 0; /* 2 */ + background-color: transparent; /* 3 */ + opacity: 1; /* 4 */ +} + +/* + Restore default font weight. +*/ + +:where(select:is([multiple], [size])) optgroup { + font-weight: bolder; +} + +/* + Restore indentation. +*/ + +:where(select:is([multiple], [size])) optgroup option { + padding-inline-start: 20px; +} + +/* + Restore space after button. +*/ + +::file-selector-button { + margin-inline-end: 4px; +} + +/* + Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) +*/ + +::placeholder { + opacity: 1; +} + +/* + Set the default placeholder color to a semi-transparent version of the current text color in browsers that do not + crash when using `color-mix(…)` with `currentcolor`. (https://github.com/tailwindlabs/tailwindcss/issues/17194) +*/ + +@supports (not (-webkit-appearance: -apple-pay-button)) /* Not Safari */ or + (contain-intrinsic-size: 1px) /* Safari 17+ */ { + ::placeholder { + color: color-mix(in oklab, currentcolor 50%, transparent); + } +} + +/* + Prevent resizing textareas horizontally by default. +*/ + +textarea { + resize: vertical; +} + +/* + Remove the inner padding in Chrome and Safari on macOS. +*/ + +::-webkit-search-decoration { + -webkit-appearance: none; +} + +/* + 1. Ensure date/time inputs have the same height when empty in iOS Safari. + 2. Ensure text alignment can be changed on date/time inputs in iOS Safari. +*/ + +::-webkit-date-and-time-value { + min-height: 1lh; /* 1 */ + text-align: inherit; /* 2 */ +} + +/* + Prevent height from changing on date/time inputs in macOS Safari when the input is set to `display: block`. +*/ + +::-webkit-datetime-edit { + display: inline-flex; +} + +/* + Remove excess padding from pseudo-elements in date/time inputs to ensure consistent height across browsers. +*/ + +::-webkit-datetime-edit-fields-wrapper { + padding: 0; +} + +::-webkit-datetime-edit, +::-webkit-datetime-edit-year-field, +::-webkit-datetime-edit-month-field, +::-webkit-datetime-edit-day-field, +::-webkit-datetime-edit-hour-field, +::-webkit-datetime-edit-minute-field, +::-webkit-datetime-edit-second-field, +::-webkit-datetime-edit-millisecond-field, +::-webkit-datetime-edit-meridiem-field { + padding-block: 0; +} + +/* + Center dropdown marker shown on inputs with paired ``s in Chrome. (https://github.com/tailwindlabs/tailwindcss/issues/18499) +*/ + +::-webkit-calendar-picker-indicator { + line-height: 1; +} + +/* + Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) +*/ + +:-moz-ui-invalid { + box-shadow: none; +} + +/* + Correct the inability to style the border radius in iOS Safari. +*/ + +button, +input:where([type='button'], [type='reset'], [type='submit']), +::file-selector-button { + appearance: button; +} + +/* + Correct the cursor style of increment and decrement buttons in Safari. +*/ + +::-webkit-inner-spin-button, +::-webkit-outer-spin-button { + height: auto; +} + +/* + Make elements with the HTML hidden attribute stay hidden by default. +*/ + +[hidden]:where(:not([hidden='until-found'])) { + display: none !important; +} diff --git a/node_modules/tailwindcss/theme.css b/node_modules/tailwindcss/theme.css new file mode 100644 index 00000000..502f5c75 --- /dev/null +++ b/node_modules/tailwindcss/theme.css @@ -0,0 +1,510 @@ +@theme default { + --font-sans: + ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', + 'Noto Color Emoji'; + --font-serif: ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif; + --font-mono: + ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', + monospace; + + --color-red-50: oklch(97.1% 0.013 17.38); + --color-red-100: oklch(93.6% 0.032 17.717); + --color-red-200: oklch(88.5% 0.062 18.334); + --color-red-300: oklch(80.8% 0.114 19.571); + --color-red-400: oklch(70.4% 0.191 22.216); + --color-red-500: oklch(63.7% 0.237 25.331); + --color-red-600: oklch(57.7% 0.245 27.325); + --color-red-700: oklch(50.5% 0.213 27.518); + --color-red-800: oklch(44.4% 0.177 26.899); + --color-red-900: oklch(39.6% 0.141 25.723); + --color-red-950: oklch(25.8% 0.092 26.042); + + --color-orange-50: oklch(98% 0.016 73.684); + --color-orange-100: oklch(95.4% 0.038 75.164); + --color-orange-200: oklch(90.1% 0.076 70.697); + --color-orange-300: oklch(83.7% 0.128 66.29); + --color-orange-400: oklch(75% 0.183 55.934); + --color-orange-500: oklch(70.5% 0.213 47.604); + --color-orange-600: oklch(64.6% 0.222 41.116); + --color-orange-700: oklch(55.3% 0.195 38.402); + --color-orange-800: oklch(47% 0.157 37.304); + --color-orange-900: oklch(40.8% 0.123 38.172); + --color-orange-950: oklch(26.6% 0.079 36.259); + + --color-amber-50: oklch(98.7% 0.022 95.277); + --color-amber-100: oklch(96.2% 0.059 95.617); + --color-amber-200: oklch(92.4% 0.12 95.746); + --color-amber-300: oklch(87.9% 0.169 91.605); + --color-amber-400: oklch(82.8% 0.189 84.429); + --color-amber-500: oklch(76.9% 0.188 70.08); + --color-amber-600: oklch(66.6% 0.179 58.318); + --color-amber-700: oklch(55.5% 0.163 48.998); + --color-amber-800: oklch(47.3% 0.137 46.201); + --color-amber-900: oklch(41.4% 0.112 45.904); + --color-amber-950: oklch(27.9% 0.077 45.635); + + --color-yellow-50: oklch(98.7% 0.026 102.212); + --color-yellow-100: oklch(97.3% 0.071 103.193); + --color-yellow-200: oklch(94.5% 0.129 101.54); + --color-yellow-300: oklch(90.5% 0.182 98.111); + --color-yellow-400: oklch(85.2% 0.199 91.936); + --color-yellow-500: oklch(79.5% 0.184 86.047); + --color-yellow-600: oklch(68.1% 0.162 75.834); + --color-yellow-700: oklch(55.4% 0.135 66.442); + --color-yellow-800: oklch(47.6% 0.114 61.907); + --color-yellow-900: oklch(42.1% 0.095 57.708); + --color-yellow-950: oklch(28.6% 0.066 53.813); + + --color-lime-50: oklch(98.6% 0.031 120.757); + --color-lime-100: oklch(96.7% 0.067 122.328); + --color-lime-200: oklch(93.8% 0.127 124.321); + --color-lime-300: oklch(89.7% 0.196 126.665); + --color-lime-400: oklch(84.1% 0.238 128.85); + --color-lime-500: oklch(76.8% 0.233 130.85); + --color-lime-600: oklch(64.8% 0.2 131.684); + --color-lime-700: oklch(53.2% 0.157 131.589); + --color-lime-800: oklch(45.3% 0.124 130.933); + --color-lime-900: oklch(40.5% 0.101 131.063); + --color-lime-950: oklch(27.4% 0.072 132.109); + + --color-green-50: oklch(98.2% 0.018 155.826); + --color-green-100: oklch(96.2% 0.044 156.743); + --color-green-200: oklch(92.5% 0.084 155.995); + --color-green-300: oklch(87.1% 0.15 154.449); + --color-green-400: oklch(79.2% 0.209 151.711); + --color-green-500: oklch(72.3% 0.219 149.579); + --color-green-600: oklch(62.7% 0.194 149.214); + --color-green-700: oklch(52.7% 0.154 150.069); + --color-green-800: oklch(44.8% 0.119 151.328); + --color-green-900: oklch(39.3% 0.095 152.535); + --color-green-950: oklch(26.6% 0.065 152.934); + + --color-emerald-50: oklch(97.9% 0.021 166.113); + --color-emerald-100: oklch(95% 0.052 163.051); + --color-emerald-200: oklch(90.5% 0.093 164.15); + --color-emerald-300: oklch(84.5% 0.143 164.978); + --color-emerald-400: oklch(76.5% 0.177 163.223); + --color-emerald-500: oklch(69.6% 0.17 162.48); + --color-emerald-600: oklch(59.6% 0.145 163.225); + --color-emerald-700: oklch(50.8% 0.118 165.612); + --color-emerald-800: oklch(43.2% 0.095 166.913); + --color-emerald-900: oklch(37.8% 0.077 168.94); + --color-emerald-950: oklch(26.2% 0.051 172.552); + + --color-teal-50: oklch(98.4% 0.014 180.72); + --color-teal-100: oklch(95.3% 0.051 180.801); + --color-teal-200: oklch(91% 0.096 180.426); + --color-teal-300: oklch(85.5% 0.138 181.071); + --color-teal-400: oklch(77.7% 0.152 181.912); + --color-teal-500: oklch(70.4% 0.14 182.503); + --color-teal-600: oklch(60% 0.118 184.704); + --color-teal-700: oklch(51.1% 0.096 186.391); + --color-teal-800: oklch(43.7% 0.078 188.216); + --color-teal-900: oklch(38.6% 0.063 188.416); + --color-teal-950: oklch(27.7% 0.046 192.524); + + --color-cyan-50: oklch(98.4% 0.019 200.873); + --color-cyan-100: oklch(95.6% 0.045 203.388); + --color-cyan-200: oklch(91.7% 0.08 205.041); + --color-cyan-300: oklch(86.5% 0.127 207.078); + --color-cyan-400: oklch(78.9% 0.154 211.53); + --color-cyan-500: oklch(71.5% 0.143 215.221); + --color-cyan-600: oklch(60.9% 0.126 221.723); + --color-cyan-700: oklch(52% 0.105 223.128); + --color-cyan-800: oklch(45% 0.085 224.283); + --color-cyan-900: oklch(39.8% 0.07 227.392); + --color-cyan-950: oklch(30.2% 0.056 229.695); + + --color-sky-50: oklch(97.7% 0.013 236.62); + --color-sky-100: oklch(95.1% 0.026 236.824); + --color-sky-200: oklch(90.1% 0.058 230.902); + --color-sky-300: oklch(82.8% 0.111 230.318); + --color-sky-400: oklch(74.6% 0.16 232.661); + --color-sky-500: oklch(68.5% 0.169 237.323); + --color-sky-600: oklch(58.8% 0.158 241.966); + --color-sky-700: oklch(50% 0.134 242.749); + --color-sky-800: oklch(44.3% 0.11 240.79); + --color-sky-900: oklch(39.1% 0.09 240.876); + --color-sky-950: oklch(29.3% 0.066 243.157); + + --color-blue-50: oklch(97% 0.014 254.604); + --color-blue-100: oklch(93.2% 0.032 255.585); + --color-blue-200: oklch(88.2% 0.059 254.128); + --color-blue-300: oklch(80.9% 0.105 251.813); + --color-blue-400: oklch(70.7% 0.165 254.624); + --color-blue-500: oklch(62.3% 0.214 259.815); + --color-blue-600: oklch(54.6% 0.245 262.881); + --color-blue-700: oklch(48.8% 0.243 264.376); + --color-blue-800: oklch(42.4% 0.199 265.638); + --color-blue-900: oklch(37.9% 0.146 265.522); + --color-blue-950: oklch(28.2% 0.091 267.935); + + --color-indigo-50: oklch(96.2% 0.018 272.314); + --color-indigo-100: oklch(93% 0.034 272.788); + --color-indigo-200: oklch(87% 0.065 274.039); + --color-indigo-300: oklch(78.5% 0.115 274.713); + --color-indigo-400: oklch(67.3% 0.182 276.935); + --color-indigo-500: oklch(58.5% 0.233 277.117); + --color-indigo-600: oklch(51.1% 0.262 276.966); + --color-indigo-700: oklch(45.7% 0.24 277.023); + --color-indigo-800: oklch(39.8% 0.195 277.366); + --color-indigo-900: oklch(35.9% 0.144 278.697); + --color-indigo-950: oklch(25.7% 0.09 281.288); + + --color-violet-50: oklch(96.9% 0.016 293.756); + --color-violet-100: oklch(94.3% 0.029 294.588); + --color-violet-200: oklch(89.4% 0.057 293.283); + --color-violet-300: oklch(81.1% 0.111 293.571); + --color-violet-400: oklch(70.2% 0.183 293.541); + --color-violet-500: oklch(60.6% 0.25 292.717); + --color-violet-600: oklch(54.1% 0.281 293.009); + --color-violet-700: oklch(49.1% 0.27 292.581); + --color-violet-800: oklch(43.2% 0.232 292.759); + --color-violet-900: oklch(38% 0.189 293.745); + --color-violet-950: oklch(28.3% 0.141 291.089); + + --color-purple-50: oklch(97.7% 0.014 308.299); + --color-purple-100: oklch(94.6% 0.033 307.174); + --color-purple-200: oklch(90.2% 0.063 306.703); + --color-purple-300: oklch(82.7% 0.119 306.383); + --color-purple-400: oklch(71.4% 0.203 305.504); + --color-purple-500: oklch(62.7% 0.265 303.9); + --color-purple-600: oklch(55.8% 0.288 302.321); + --color-purple-700: oklch(49.6% 0.265 301.924); + --color-purple-800: oklch(43.8% 0.218 303.724); + --color-purple-900: oklch(38.1% 0.176 304.987); + --color-purple-950: oklch(29.1% 0.149 302.717); + + --color-fuchsia-50: oklch(97.7% 0.017 320.058); + --color-fuchsia-100: oklch(95.2% 0.037 318.852); + --color-fuchsia-200: oklch(90.3% 0.076 319.62); + --color-fuchsia-300: oklch(83.3% 0.145 321.434); + --color-fuchsia-400: oklch(74% 0.238 322.16); + --color-fuchsia-500: oklch(66.7% 0.295 322.15); + --color-fuchsia-600: oklch(59.1% 0.293 322.896); + --color-fuchsia-700: oklch(51.8% 0.253 323.949); + --color-fuchsia-800: oklch(45.2% 0.211 324.591); + --color-fuchsia-900: oklch(40.1% 0.17 325.612); + --color-fuchsia-950: oklch(29.3% 0.136 325.661); + + --color-pink-50: oklch(97.1% 0.014 343.198); + --color-pink-100: oklch(94.8% 0.028 342.258); + --color-pink-200: oklch(89.9% 0.061 343.231); + --color-pink-300: oklch(82.3% 0.12 346.018); + --color-pink-400: oklch(71.8% 0.202 349.761); + --color-pink-500: oklch(65.6% 0.241 354.308); + --color-pink-600: oklch(59.2% 0.249 0.584); + --color-pink-700: oklch(52.5% 0.223 3.958); + --color-pink-800: oklch(45.9% 0.187 3.815); + --color-pink-900: oklch(40.8% 0.153 2.432); + --color-pink-950: oklch(28.4% 0.109 3.907); + + --color-rose-50: oklch(96.9% 0.015 12.422); + --color-rose-100: oklch(94.1% 0.03 12.58); + --color-rose-200: oklch(89.2% 0.058 10.001); + --color-rose-300: oklch(81% 0.117 11.638); + --color-rose-400: oklch(71.2% 0.194 13.428); + --color-rose-500: oklch(64.5% 0.246 16.439); + --color-rose-600: oklch(58.6% 0.253 17.585); + --color-rose-700: oklch(51.4% 0.222 16.935); + --color-rose-800: oklch(45.5% 0.188 13.697); + --color-rose-900: oklch(41% 0.159 10.272); + --color-rose-950: oklch(27.1% 0.105 12.094); + + --color-slate-50: oklch(98.4% 0.003 247.858); + --color-slate-100: oklch(96.8% 0.007 247.896); + --color-slate-200: oklch(92.9% 0.013 255.508); + --color-slate-300: oklch(86.9% 0.022 252.894); + --color-slate-400: oklch(70.4% 0.04 256.788); + --color-slate-500: oklch(55.4% 0.046 257.417); + --color-slate-600: oklch(44.6% 0.043 257.281); + --color-slate-700: oklch(37.2% 0.044 257.287); + --color-slate-800: oklch(27.9% 0.041 260.031); + --color-slate-900: oklch(20.8% 0.042 265.755); + --color-slate-950: oklch(12.9% 0.042 264.695); + + --color-gray-50: oklch(98.5% 0.002 247.839); + --color-gray-100: oklch(96.7% 0.003 264.542); + --color-gray-200: oklch(92.8% 0.006 264.531); + --color-gray-300: oklch(87.2% 0.01 258.338); + --color-gray-400: oklch(70.7% 0.022 261.325); + --color-gray-500: oklch(55.1% 0.027 264.364); + --color-gray-600: oklch(44.6% 0.03 256.802); + --color-gray-700: oklch(37.3% 0.034 259.733); + --color-gray-800: oklch(27.8% 0.033 256.848); + --color-gray-900: oklch(21% 0.034 264.665); + --color-gray-950: oklch(13% 0.028 261.692); + + --color-zinc-50: oklch(98.5% 0 0); + --color-zinc-100: oklch(96.7% 0.001 286.375); + --color-zinc-200: oklch(92% 0.004 286.32); + --color-zinc-300: oklch(87.1% 0.006 286.286); + --color-zinc-400: oklch(70.5% 0.015 286.067); + --color-zinc-500: oklch(55.2% 0.016 285.938); + --color-zinc-600: oklch(44.2% 0.017 285.786); + --color-zinc-700: oklch(37% 0.013 285.805); + --color-zinc-800: oklch(27.4% 0.006 286.033); + --color-zinc-900: oklch(21% 0.006 285.885); + --color-zinc-950: oklch(14.1% 0.005 285.823); + + --color-neutral-50: oklch(98.5% 0 0); + --color-neutral-100: oklch(97% 0 0); + --color-neutral-200: oklch(92.2% 0 0); + --color-neutral-300: oklch(87% 0 0); + --color-neutral-400: oklch(70.8% 0 0); + --color-neutral-500: oklch(55.6% 0 0); + --color-neutral-600: oklch(43.9% 0 0); + --color-neutral-700: oklch(37.1% 0 0); + --color-neutral-800: oklch(26.9% 0 0); + --color-neutral-900: oklch(20.5% 0 0); + --color-neutral-950: oklch(14.5% 0 0); + + --color-stone-50: oklch(98.5% 0.001 106.423); + --color-stone-100: oklch(97% 0.001 106.424); + --color-stone-200: oklch(92.3% 0.003 48.717); + --color-stone-300: oklch(86.9% 0.005 56.366); + --color-stone-400: oklch(70.9% 0.01 56.259); + --color-stone-500: oklch(55.3% 0.013 58.071); + --color-stone-600: oklch(44.4% 0.011 73.639); + --color-stone-700: oklch(37.4% 0.01 67.558); + --color-stone-800: oklch(26.8% 0.007 34.298); + --color-stone-900: oklch(21.6% 0.006 56.043); + --color-stone-950: oklch(14.7% 0.004 49.25); + + --color-mauve-50: oklch(98.5% 0 0); + --color-mauve-100: oklch(96% 0.003 325.6); + --color-mauve-200: oklch(92.2% 0.005 325.62); + --color-mauve-300: oklch(86.5% 0.012 325.68); + --color-mauve-400: oklch(71.1% 0.019 323.02); + --color-mauve-500: oklch(54.2% 0.034 322.5); + --color-mauve-600: oklch(43.5% 0.029 321.78); + --color-mauve-700: oklch(36.4% 0.029 323.89); + --color-mauve-800: oklch(26.3% 0.024 320.12); + --color-mauve-900: oklch(21.2% 0.019 322.12); + --color-mauve-950: oklch(14.5% 0.008 326); + + --color-olive-50: oklch(98.8% 0.003 106.5); + --color-olive-100: oklch(96.6% 0.005 106.5); + --color-olive-200: oklch(93% 0.007 106.5); + --color-olive-300: oklch(88% 0.011 106.6); + --color-olive-400: oklch(73.7% 0.021 106.9); + --color-olive-500: oklch(58% 0.031 107.3); + --color-olive-600: oklch(46.6% 0.025 107.3); + --color-olive-700: oklch(39.4% 0.023 107.4); + --color-olive-800: oklch(28.6% 0.016 107.4); + --color-olive-900: oklch(22.8% 0.013 107.4); + --color-olive-950: oklch(15.3% 0.006 107.1); + + --color-mist-50: oklch(98.7% 0.002 197.1); + --color-mist-100: oklch(96.3% 0.002 197.1); + --color-mist-200: oklch(92.5% 0.005 214.3); + --color-mist-300: oklch(87.2% 0.007 219.6); + --color-mist-400: oklch(72.3% 0.014 214.4); + --color-mist-500: oklch(56% 0.021 213.5); + --color-mist-600: oklch(45% 0.017 213.2); + --color-mist-700: oklch(37.8% 0.015 216); + --color-mist-800: oklch(27.5% 0.011 216.9); + --color-mist-900: oklch(21.8% 0.008 223.9); + --color-mist-950: oklch(14.8% 0.004 228.8); + + --color-taupe-50: oklch(98.6% 0.002 67.8); + --color-taupe-100: oklch(96% 0.002 17.2); + --color-taupe-200: oklch(92.2% 0.005 34.3); + --color-taupe-300: oklch(86.8% 0.007 39.5); + --color-taupe-400: oklch(71.4% 0.014 41.2); + --color-taupe-500: oklch(54.7% 0.021 43.1); + --color-taupe-600: oklch(43.8% 0.017 39.3); + --color-taupe-700: oklch(36.7% 0.016 35.7); + --color-taupe-800: oklch(26.8% 0.011 36.5); + --color-taupe-900: oklch(21.4% 0.009 43.1); + --color-taupe-950: oklch(14.7% 0.004 49.3); + + --color-black: #000; + --color-white: #fff; + + --spacing: 0.25rem; + + --breakpoint-sm: 40rem; + --breakpoint-md: 48rem; + --breakpoint-lg: 64rem; + --breakpoint-xl: 80rem; + --breakpoint-2xl: 96rem; + + --container-3xs: 16rem; + --container-2xs: 18rem; + --container-xs: 20rem; + --container-sm: 24rem; + --container-md: 28rem; + --container-lg: 32rem; + --container-xl: 36rem; + --container-2xl: 42rem; + --container-3xl: 48rem; + --container-4xl: 56rem; + --container-5xl: 64rem; + --container-6xl: 72rem; + --container-7xl: 80rem; + + --text-xs: 0.75rem; + --text-xs--line-height: calc(1 / 0.75); + --text-sm: 0.875rem; + --text-sm--line-height: calc(1.25 / 0.875); + --text-base: 1rem; + --text-base--line-height: calc(1.5 / 1); + --text-lg: 1.125rem; + --text-lg--line-height: calc(1.75 / 1.125); + --text-xl: 1.25rem; + --text-xl--line-height: calc(1.75 / 1.25); + --text-2xl: 1.5rem; + --text-2xl--line-height: calc(2 / 1.5); + --text-3xl: 1.875rem; + --text-3xl--line-height: calc(2.25 / 1.875); + --text-4xl: 2.25rem; + --text-4xl--line-height: calc(2.5 / 2.25); + --text-5xl: 3rem; + --text-5xl--line-height: 1; + --text-6xl: 3.75rem; + --text-6xl--line-height: 1; + --text-7xl: 4.5rem; + --text-7xl--line-height: 1; + --text-8xl: 6rem; + --text-8xl--line-height: 1; + --text-9xl: 8rem; + --text-9xl--line-height: 1; + + --font-weight-thin: 100; + --font-weight-extralight: 200; + --font-weight-light: 300; + --font-weight-normal: 400; + --font-weight-medium: 500; + --font-weight-semibold: 600; + --font-weight-bold: 700; + --font-weight-extrabold: 800; + --font-weight-black: 900; + + --tracking-tighter: -0.05em; + --tracking-tight: -0.025em; + --tracking-normal: 0em; + --tracking-wide: 0.025em; + --tracking-wider: 0.05em; + --tracking-widest: 0.1em; + + --leading-tight: 1.25; + --leading-snug: 1.375; + --leading-normal: 1.5; + --leading-relaxed: 1.625; + --leading-loose: 2; + + --radius-xs: 0.125rem; + --radius-sm: 0.25rem; + --radius-md: 0.375rem; + --radius-lg: 0.5rem; + --radius-xl: 0.75rem; + --radius-2xl: 1rem; + --radius-3xl: 1.5rem; + --radius-4xl: 2rem; + + --shadow-2xs: 0 1px rgb(0 0 0 / 0.05); + --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); + --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); + --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1); + --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25); + + --inset-shadow-2xs: inset 0 1px rgb(0 0 0 / 0.05); + --inset-shadow-xs: inset 0 1px 1px rgb(0 0 0 / 0.05); + --inset-shadow-sm: inset 0 2px 4px rgb(0 0 0 / 0.05); + + --drop-shadow-xs: 0 1px 1px rgb(0 0 0 / 0.05); + --drop-shadow-sm: 0 1px 2px rgb(0 0 0 / 0.15); + --drop-shadow-md: 0 3px 3px rgb(0 0 0 / 0.12); + --drop-shadow-lg: 0 4px 4px rgb(0 0 0 / 0.15); + --drop-shadow-xl: 0 9px 7px rgb(0 0 0 / 0.1); + --drop-shadow-2xl: 0 25px 25px rgb(0 0 0 / 0.15); + + --text-shadow-2xs: 0px 1px 0px rgb(0 0 0 / 0.15); + --text-shadow-xs: 0px 1px 1px rgb(0 0 0 / 0.2); + --text-shadow-sm: + 0px 1px 0px rgb(0 0 0 / 0.075), 0px 1px 1px rgb(0 0 0 / 0.075), 0px 2px 2px rgb(0 0 0 / 0.075); + --text-shadow-md: + 0px 1px 1px rgb(0 0 0 / 0.1), 0px 1px 2px rgb(0 0 0 / 0.1), 0px 2px 4px rgb(0 0 0 / 0.1); + --text-shadow-lg: + 0px 1px 2px rgb(0 0 0 / 0.1), 0px 3px 2px rgb(0 0 0 / 0.1), 0px 4px 8px rgb(0 0 0 / 0.1); + + --ease-in: cubic-bezier(0.4, 0, 1, 1); + --ease-out: cubic-bezier(0, 0, 0.2, 1); + --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1); + + --animate-spin: spin 1s linear infinite; + --animate-ping: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite; + --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; + --animate-bounce: bounce 1s infinite; + + @keyframes spin { + to { + transform: rotate(360deg); + } + } + + @keyframes ping { + 75%, + 100% { + transform: scale(2); + opacity: 0; + } + } + + @keyframes pulse { + 50% { + opacity: 0.5; + } + } + + @keyframes bounce { + 0%, + 100% { + transform: translateY(-25%); + animation-timing-function: cubic-bezier(0.8, 0, 1, 1); + } + + 50% { + transform: none; + animation-timing-function: cubic-bezier(0, 0, 0.2, 1); + } + } + + --blur-xs: 4px; + --blur-sm: 8px; + --blur-md: 12px; + --blur-lg: 16px; + --blur-xl: 24px; + --blur-2xl: 40px; + --blur-3xl: 64px; + + --perspective-dramatic: 100px; + --perspective-near: 300px; + --perspective-normal: 500px; + --perspective-midrange: 800px; + --perspective-distant: 1200px; + + --aspect-video: 16 / 9; + + --default-transition-duration: 150ms; + --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + --default-font-family: --theme(--font-sans, initial); + --default-font-feature-settings: --theme(--font-sans--font-feature-settings, initial); + --default-font-variation-settings: --theme(--font-sans--font-variation-settings, initial); + --default-mono-font-family: --theme(--font-mono, initial); + --default-mono-font-feature-settings: --theme(--font-mono--font-feature-settings, initial); + --default-mono-font-variation-settings: --theme(--font-mono--font-variation-settings, initial); +} + +/* Deprecated */ +@theme default inline reference { + --blur: 8px; + --shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); + --shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 0.05); + --drop-shadow: 0 1px 2px rgb(0 0 0 / 0.1), 0 1px 1px rgb(0 0 0 / 0.06); + --radius: 0.25rem; + --max-width-prose: 65ch; +} diff --git a/node_modules/tailwindcss/utilities.css b/node_modules/tailwindcss/utilities.css new file mode 100644 index 00000000..65dd5f63 --- /dev/null +++ b/node_modules/tailwindcss/utilities.css @@ -0,0 +1 @@ +@tailwind utilities; diff --git a/node_modules/tapable/LICENSE b/node_modules/tapable/LICENSE new file mode 100644 index 00000000..03c083ce --- /dev/null +++ b/node_modules/tapable/LICENSE @@ -0,0 +1,21 @@ +The MIT License + +Copyright JS Foundation and other contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/tapable/README.md b/node_modules/tapable/README.md new file mode 100644 index 00000000..1415a31e --- /dev/null +++ b/node_modules/tapable/README.md @@ -0,0 +1,715 @@ +# Tapable + +The tapable package exposes many Hook classes, which can be used to create hooks for plugins. + +```javascript +const { + AsyncParallelBailHook, + AsyncParallelHook, + AsyncSeriesBailHook, + AsyncSeriesHook, + AsyncSeriesWaterfallHook, + SyncBailHook, + SyncHook, + SyncLoopHook, + SyncWaterfallHook +} = require("tapable"); +``` + +## Installation + +```shell +npm install --save tapable +``` + +## Usage + +All Hook constructors take one optional argument, which is a list of argument names as strings. + +```js +const hook = new SyncHook(["arg1", "arg2", "arg3"]); +``` + +The best practice is to expose all hooks of a class in a `hooks` property: + +```js +class Car { + constructor() { + this.hooks = { + accelerate: new SyncHook(["newSpeed"]), + brake: new SyncHook(), + calculateRoutes: new AsyncParallelHook(["source", "target", "routesList"]) + }; + } + + /* ... */ +} +``` + +Other people can now use these hooks: + +```js +const myCar = new Car(); + +// Use the tap method to add a consumer (plugin) +myCar.hooks.brake.tap("WarningLampPlugin", () => warningLamp.on()); +``` + +It's required to pass a name to identify the plugin/reason. + +You may receive arguments: + +```js +myCar.hooks.accelerate.tap("LoggerPlugin", (newSpeed) => + console.log(`Accelerating to ${newSpeed}`) +); +``` + +For sync hooks, `tap` is the only valid method to add a plugin. Async hooks also support async plugins: + +```js +myCar.hooks.calculateRoutes.tapPromise( + "GoogleMapsPlugin", + (source, target, routesList) => + // return a promise + google.maps.findRoute(source, target).then((route) => { + routesList.add(route); + }) +); +myCar.hooks.calculateRoutes.tapAsync( + "BingMapsPlugin", + (source, target, routesList, callback) => { + bing.findRoute(source, target, (err, route) => { + if (err) return callback(err); + routesList.add(route); + // call the callback + callback(); + }); + } +); + +// You can still use sync plugins +myCar.hooks.calculateRoutes.tap( + "CachedRoutesPlugin", + (source, target, routesList) => { + const cachedRoute = cache.get(source, target); + if (cachedRoute) routesList.add(cachedRoute); + } +); +``` + +The class declaring these hooks needs to call them: + +```js +class Car { + /** + * You won't get returned value from SyncHook or AsyncParallelHook, + * to do that, use SyncWaterfallHook and AsyncSeriesWaterfallHook respectively + */ + + setSpeed(newSpeed) { + // following call returns undefined even when you returned values + this.hooks.accelerate.call(newSpeed); + } + + useNavigationSystemPromise(source, target) { + const routesList = new List(); + return this.hooks.calculateRoutes + .promise(source, target, routesList) + .then((res) => + // res is undefined for AsyncParallelHook + routesList.getRoutes() + ); + } + + useNavigationSystemAsync(source, target, callback) { + const routesList = new List(); + this.hooks.calculateRoutes.callAsync(source, target, routesList, (err) => { + if (err) return callback(err); + callback(null, routesList.getRoutes()); + }); + } +} +``` + +The Hook will compile a method with the most efficient way of running your plugins. It generates code depending on: + +- The number of registered plugins (none, one, many) +- The kind of registered plugins (sync, async, promise) +- The used call method (sync, async, promise) +- The number of arguments +- Whether interception is used + +This ensures fastest possible execution. See [Code generation](#code-generation) for more details on the runtime compilation. + +## Plugin API + +A plugin registers a callback on a hook using one of the `tap*` methods. The hook type determines which of these are valid (see [Hook classes](#hook-classes)): + +- `hook.tap(nameOrOptions, fn)` — register a synchronous callback. +- `hook.tapAsync(nameOrOptions, fn)` — register a callback-based async callback. The last argument passed to `fn` is a node-style callback `(err, result)`. +- `hook.tapPromise(nameOrOptions, fn)` — register a promise-returning async callback. If `fn` returns something that is not thenable, the hook throws. + +The first argument can be either a string (the plugin name) or an options object that also allows influencing the order in which taps run: + +```js +hook.tap( + { + name: "MyPlugin", + stage: -10, // lower stages run earlier, default is 0 + before: "OtherPlugin" // run before a named tap (string or string[]) + }, + (...args) => { + /* ... */ + } +); +``` + +| Option | Type | Description | +| -------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `name` | `string` | Required. Identifies the tap for debugging, interceptors, and the `before` option. | +| `stage` | `number` | Defaults to `0`. Taps with a lower stage run before taps with a higher stage. Taps with the same stage run in registration order. | +| `before` | `string` \| `string[]` | The tap is inserted before the named tap(s). Unknown names are ignored. Combined with `stage`, `before` wins for the taps it targets; other taps are still ordered by `stage`. | + +The `name` is also used by some ecosystems (like webpack) for profiling and error messages. Within a single tap registration, later interceptors' `register` hooks may still replace the tap object (see [Interception](#interception)). + +### `hook.withOptions(options)` + +`withOptions` returns a facade around the hook whose `tap*` methods automatically merge `options` into every registration. It is useful for libraries that want to pre-configure a `stage` or `before` for all the taps they add: + +```js +const lateHook = myCar.hooks.accelerate.withOptions({ stage: 10 }); +lateHook.tap("LogAfterOthers", (speed) => console.log("final speed", speed)); +// equivalent to: myCar.hooks.accelerate.tap({ name: "LogAfterOthers", stage: 10 }, ...) +``` + +The returned object does not expose the `call*` methods, so it is safe to hand out to plugins. + +A runnable example showing how `withOptions` influences tap ordering: + +```js +const { SyncHook } = require("tapable"); + +const hook = new SyncHook(["value"]); + +hook.tap("Default", (v) => console.log("default", v)); + +// Pre-configure stage: 10 so all taps registered through `late` run last. +const late = hook.withOptions({ stage: 10 }); +late.tap("RunLast", (v) => console.log("last", v)); + +// Pre-configure stage: -10 so these taps run first. Each facade can also +// be further narrowed via `withOptions`. +const early = hook.withOptions({ stage: -10 }); +early.tap("RunFirst", (v) => console.log("first", v)); + +hook.call(1); +// first 1 +// default 1 +// last 1 +``` + +Per-tap options override values from `withOptions`. For example, `late.tap({ name: "Override", stage: 0 }, fn)` ignores the facade's `stage: 10` and registers `fn` at stage `0`. + +## Hook types + +Each hook can be tapped with one or several functions. How they are executed depends on the hook type: + +- Basic hook (without “Waterfall”, “Bail” or “Loop” in its name). This hook simply calls every function it tapped in a row. + +- **Waterfall**. A waterfall hook also calls each tapped function in a row. Unlike the basic hook, it passes a return value from each function to the next function. + +- **Bail**. A bail hook allows exiting early. When any of the tapped function returns anything, the bail hook will stop executing the remaining ones. + +- **Loop**. When a plugin in a loop hook returns a non-undefined value the hook will restart from the first plugin. It will loop until all plugins return undefined. + +Additionally, hooks can be synchronous or asynchronous. To reflect this, there’re “Sync”, “AsyncSeries”, and “AsyncParallel” hook classes: + +- **Sync**. A sync hook can only be tapped with synchronous functions (using `myHook.tap()`). + +- **AsyncSeries**. An async-series hook can be tapped with synchronous, callback-based and promise-based functions (using `myHook.tap()`, `myHook.tapAsync()` and `myHook.tapPromise()`). They call each async method in a row. + +- **AsyncParallel**. An async-parallel hook can also be tapped with synchronous, callback-based and promise-based functions (using `myHook.tap()`, `myHook.tapAsync()` and `myHook.tapPromise()`). However, they run each async method in parallel. + +The hook type is reflected in its class name. E.g., `AsyncSeriesWaterfallHook` allows asynchronous functions and runs them in series, passing each function’s return value into the next function. + +## Hook classes + +The table below summarizes the 9 built-in hook classes. For each class: + +- **Tap methods** are the `tapX` variants that may be used to register a handler. +- **Call methods** are the ways the owner of the hook can trigger it. +- **Result** is the value returned from `call` (or passed to the `callAsync` callback / resolved from the `promise` call). +- **Returned value from tap** describes whether the value returned from a tapped function has an effect. + +| Class | Tap methods | Call methods | Result | Returned value from tap | +| -------------------------- | ------------------------------- | ---------------------- | ----------------------------------------------- | ---------------------------------------------------- | +| `SyncHook` | `tap` | `call` | `undefined` | ignored | +| `SyncBailHook` | `tap` | `call` | first non-`undefined` value, or `undefined` | short-circuits the hook | +| `SyncWaterfallHook` | `tap` | `call` | final value (first argument after the last tap) | passed as first argument to the next tap | +| `SyncLoopHook` | `tap` | `call` | `undefined` | non-`undefined` restarts the loop from the first tap | +| `AsyncParallelHook` | `tap`, `tapAsync`, `tapPromise` | `callAsync`, `promise` | `undefined` | ignored | +| `AsyncParallelBailHook` | `tap`, `tapAsync`, `tapPromise` | `callAsync`, `promise` | first non-`undefined` value, or `undefined` | short-circuits the hook | +| `AsyncSeriesHook` | `tap`, `tapAsync`, `tapPromise` | `callAsync`, `promise` | `undefined` | ignored | +| `AsyncSeriesBailHook` | `tap`, `tapAsync`, `tapPromise` | `callAsync`, `promise` | first non-`undefined` value, or `undefined` | short-circuits the hook | +| `AsyncSeriesLoopHook` | `tap`, `tapAsync`, `tapPromise` | `callAsync`, `promise` | `undefined` | non-`undefined` restarts the loop from the first tap | +| `AsyncSeriesWaterfallHook` | `tap`, `tapAsync`, `tapPromise` | `callAsync`, `promise` | final value (first argument after the last tap) | passed as first argument to the next tap | + +Detailed behavior of each class: + +### SyncHook + +A basic synchronous hook. Every tapped function is called in registration order with the arguments passed to `call`. Return values from tapped functions are ignored and `call` returns `undefined`. + +- Tap methods: `tap` +- Call methods: `call` +- `tapAsync` and `tapPromise` throw an error. + +```js +const hook = new SyncHook(["name"]); +hook.tap("A", (name) => console.log(`hello ${name}`)); +hook.tap("B", (name) => console.log(`hi ${name}`)); +hook.call("world"); +// hello world +// hi world +``` + +### SyncBailHook + +A synchronous hook that allows exiting early. Every tapped function is called in order until one returns a non-`undefined` value; that value becomes the result of `call` and the remaining taps are skipped. If all taps return `undefined`, `call` returns `undefined`. + +- Tap methods: `tap` +- Call methods: `call` + +```js +const hook = new SyncBailHook(["value"]); +hook.tap("Negative", (v) => (v < 0 ? "negative" : undefined)); +hook.tap("Zero", (v) => (v === 0 ? "zero" : undefined)); +hook.tap("Positive", (v) => "positive"); + +hook.call(-1); // "negative" (later taps skipped) +hook.call(5); // "positive" +``` + +### SyncWaterfallHook + +A synchronous hook that threads a value through its tapped functions. The first argument passed to `call` is forwarded to the first tap. If a tap returns a non-`undefined` value it replaces that argument for the next tap; otherwise the previous value is kept. `call` returns the value after the last tap has run. Additional arguments (if any) are passed through unchanged. + +- Tap methods: `tap` +- Call methods: `call` + +```js +const hook = new SyncWaterfallHook(["value"]); +hook.tap("Double", (v) => v * 2); +hook.tap("PlusOne", (v) => v + 1); + +hook.call(3); // 7 -> (3 * 2) + 1 +``` + +### SyncLoopHook + +A synchronous hook that keeps re-running its taps until all of them return `undefined` for a full pass. Whenever a tap returns a non-`undefined` value the hook restarts from the first tap. `call` returns `undefined`. + +- Tap methods: `tap` +- Call methods: `call` + +```js +const hook = new SyncLoopHook(["state"]); +let retries = 3; +hook.tap("Retry", () => { + if (retries-- > 0) return true; // non-undefined restarts the loop +}); +hook.tap("Log", () => console.log("pass")); + +hook.call({}); +// pass (runs once all taps return undefined) +``` + +### AsyncParallelHook + +An asynchronous hook that runs all of its tapped functions in parallel. It completes when every tap has signalled completion (sync return, callback, or promise resolution). Return values and resolution values are ignored; `callAsync`'s callback is invoked with no result and `promise()` resolves to `undefined`. If any tap errors, the error is forwarded and remaining taps still complete but their results are discarded. + +- Tap methods: `tap`, `tapAsync`, `tapPromise` +- Call methods: `callAsync`, `promise` + +```js +const hook = new AsyncParallelHook(["source"]); +hook.tapPromise("Fetch", (src) => fetch(src)); +hook.tapAsync("Log", (src, cb) => { + console.log("fetching", src); + cb(); +}); + +await hook.promise("https://example.com"); +``` + +### AsyncParallelBailHook + +Like `AsyncParallelHook`, but designed to bail out with a result. All tapped functions start in parallel; the first tap to produce a non-`undefined` value (synchronously, via its callback, or by resolving its promise) determines the hook’s result. The remaining taps continue to run but their results are ignored. Order is determined by tap registration order: an earlier tap’s value takes precedence over a later one’s, even if the later one finishes first. + +- Tap methods: `tap`, `tapAsync`, `tapPromise` +- Call methods: `callAsync`, `promise` + +```js +const hook = new AsyncParallelBailHook(["key"]); +hook.tapPromise("Cache", async (key) => cache.get(key)); +hook.tapPromise("Db", async (key) => db.lookup(key)); + +const value = await hook.promise("user:42"); +// First non-undefined result (by registration order) wins. +``` + +### AsyncSeriesHook + +An asynchronous hook that runs tapped functions one after another, waiting for each to finish before starting the next. Results are ignored; `callAsync`'s callback is invoked with no result and `promise()` resolves to `undefined`. The first error aborts the series. + +- Tap methods: `tap`, `tapAsync`, `tapPromise` +- Call methods: `callAsync`, `promise` + +```js +const hook = new AsyncSeriesHook(["request"]); +hook.tapPromise("Authenticate", async (req) => authenticate(req)); +hook.tapPromise("Log", async (req) => logger.info(req.url)); + +await hook.promise(request); +``` + +### AsyncSeriesBailHook + +An asynchronous series hook that allows exiting early. Tapped functions run one after another; as soon as one produces a non-`undefined` value, that value becomes the hook’s result and the remaining taps are skipped. + +- Tap methods: `tap`, `tapAsync`, `tapPromise` +- Call methods: `callAsync`, `promise` + +```js +const hook = new AsyncSeriesBailHook(["id"]); +hook.tapPromise("Memory", async (id) => memory.get(id)); +hook.tapPromise("Disk", async (id) => disk.read(id)); + +const value = await hook.promise("doc-1"); +// Stops at the first tap that produces a value. +``` + +### AsyncSeriesLoopHook + +An asynchronous series hook that loops. Tapped functions run one after another; whenever a tap produces a non-`undefined` value the hook restarts from the first tap. The hook completes once a full pass yields `undefined` from every tap. The result is always `undefined`. + +- Tap methods: `tap`, `tapAsync`, `tapPromise` +- Call methods: `callAsync`, `promise` + +```js +const hook = new AsyncSeriesLoopHook(["job"]); +hook.tapPromise("Process", async (job) => { + const more = await job.step(); + if (more) return true; // restart the loop +}); + +await hook.promise(job); +``` + +### AsyncSeriesWaterfallHook + +An asynchronous series hook that threads a value through its taps. The first argument passed to `callAsync` / `promise` is forwarded to the first tap. A tap's non-`undefined` return / callback / resolution value replaces it for the next tap; `undefined` keeps the previous value. The hook completes with the value after the last tap. + +- Tap methods: `tap`, `tapAsync`, `tapPromise` +- Call methods: `callAsync`, `promise` + +```js +const hook = new AsyncSeriesWaterfallHook(["source"]); +hook.tapPromise("Read", async (src) => fs.readFile(src, "utf8")); +hook.tapPromise("Trim", async (text) => text.trim()); + +const output = await hook.promise("./input.txt"); +``` + +## Interception + +All hooks expose an `intercept(interceptor)` method. An interceptor is a plain object whose methods are invoked at specific points during the lifetime of the hook. Interceptors are invoked in registration order before the taps, and are useful for logging, tracing, profiling, or re-mapping tap options. + +```js +myCar.hooks.calculateRoutes.intercept({ + name: "LoggingInterceptor", + call: (source, target, routesList) => { + console.log("Starting to calculate routes"); + }, + tap: (tapInfo) => { + // tapInfo = { type: "promise", name: "GoogleMapsPlugin", fn: ..., stage: 0 } + console.log(`${tapInfo.name} is running`); + }, + register: (tapInfo) => { + // Called once per tap (and for each tap already registered when the + // interceptor is added). Return a new tapInfo object to replace it. + console.log(`${tapInfo.name} is registered`); + + return tapInfo; + } +}); +``` + +| Handler | Signature | When it runs | +| ---------- | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | +| `call` | `(...args) => void` | Before the hook starts executing its taps. Receives the arguments passed to `call` / `callAsync` / `promise`. | +| `tap` | `(tap: Tap) => void` | Before each tap runs. The `tap` object is a snapshot — mutations are ignored. | +| `loop` | `(...args) => void` | At the start of each iteration of a `SyncLoopHook` / `AsyncSeriesLoopHook`. | +| `error` | `(err: Error) => void` | Whenever a tap throws, rejects, or calls its callback with an error. | +| `result` | `(result: any) => void` | When a bail or waterfall hook produces a value, or when a tap produces one for a loop hook. | +| `done` | `() => void` | When the hook finishes successfully (no error, no early bail). | +| `register` | `(tap: Tap) => Tap \| undefined` | Once per tap at registration time (including taps that existed before the interceptor was added). Return a new `Tap` object to replace it. | +| `name` | `string` | Optional label used by ecosystems for debugging. | +| `context` | `boolean` | Opt into the shared `context` object. See [Context](#context). | + +Adding an interceptor invalidates the hook's compiled call function — the next `call` / `callAsync` / `promise` recompiles it so that the new interceptor is woven in. + +## Context + +Plugins and interceptors can opt-in to access an optional `context` object, which can be used to pass arbitrary values to subsequent plugins and interceptors. + +```js +myCar.hooks.accelerate.intercept({ + context: true, + tap: (context, tapInfo) => { + // tapInfo = { type: "sync", name: "NoisePlugin", fn: ... } + console.log(`${tapInfo.name} is doing it's job`); + + // `context` starts as an empty object if at least one plugin uses `context: true`. + // If no plugins use `context: true`, then `context` is undefined. + if (context) { + // Arbitrary properties can be added to `context`, which plugins can then access. + context.hasMuffler = true; + } + } +}); + +myCar.hooks.accelerate.tap( + { + name: "NoisePlugin", + context: true + }, + (context, newSpeed) => { + if (context && context.hasMuffler) { + console.log("Silence..."); + } else { + console.log("Vroom!"); + } + } +); +``` + +## HookMap + +A `HookMap` is a helper class that lazily creates hooks per key. The constructor takes a factory function; the first time a key is requested via `for(key)`, the factory is called and the resulting hook is cached. + +```js +const keyedHook = new HookMap((key) => new SyncHook(["arg"])); +``` + +Plugins use `for(key)` to obtain the hook for a specific key (creating it on demand) and then `tap` on it as usual: + +```js +keyedHook.for("some-key").tap("MyPlugin", (arg) => { + /* ... */ +}); +keyedHook.for("some-key").tapAsync("MyPlugin", (arg, callback) => { + /* ... */ +}); +keyedHook.for("some-key").tapPromise("MyPlugin", (arg) => { + /* ... */ +}); +``` + +The owner of the `HookMap` uses `get(key)` to look up an existing hook without creating one. This is typically preferred on the calling side so that keys no plugin cares about are never materialized: + +```js +const hook = keyedHook.get("some-key"); +if (hook !== undefined) { + hook.callAsync("arg", (err) => { + /* ... */ + }); +} +``` + +A `HookMap` can also be intercepted. `intercept({ factory })` wraps the factory so you can customize or replace the hook returned for each new key. + +## Code generation + +Tapable does not iterate over taps at call time. Instead, the first time `call`, `callAsync` or `promise` is invoked after the hook has been modified, the hook compiles a specialized function using `new Function(...)` and caches it on the instance. This is what the README means by "evals in code": the hook's dispatch logic is generated as a string and turned into a real JavaScript function the engine can inline and optimize. + +The generated function is tailored to: + +- **Call type** — whether the owner called `call` (sync), `callAsync` (callback), or `promise`. Each produces a different skeleton — e.g. `promise()` wraps the body in `new Promise((_resolve, _reject) => { ... })`. +- **Tap types** — for each tap, the generator emits the right invocation pattern: direct call for `tap`, node-style callback wrapping for `tapAsync`, and `.then(...)` chaining for `tapPromise`. +- **Hook class** — `SyncHook` emits a straight-line sequence of calls; `SyncBailHook` emits early-return checks; `SyncWaterfallHook` threads a value through calls; loop hooks wrap the body in a re-entry loop; `AsyncParallel*` fans the taps out and counts completions; `AsyncSeries*` chains them. +- **Interceptors** — if interceptors are attached, calls to their `call`/`tap`/`loop`/`error`/`result`/`done` handlers are spliced into the generated body; otherwise they cost nothing. +- **Context** — a `_context` object is only created when at least one tap or interceptor opts into it with `context: true`. +- **Arity** — the generated code hard-codes the number of arguments declared when the hook was constructed, so no `arguments`/rest handling happens at runtime. + +The compiled function is invalidated (reset back to a one-shot "recompile then call" trampoline) whenever the hook's shape changes — i.e. on any new `tap*` or `intercept` call. Steady-state calls therefore run straight through the cached function with no per-tap branching. + +### Why this matters + +- You only pay for features you use. An interceptor-free, sync-only hook compiles down to a short sequence of direct function calls. +- Debugging a hook means reading the generated source. If you need to see it, `Hook.prototype.compile` returns the `new Function(...)` result — log `hook._createCall("sync").toString()` (or `"async"` / `"promise"`) to inspect the body. +- Because the dispatch is code-generated, a hook's behavior is fully determined at compile time. Mutating tap options after registration (for example, changing `stage` on an existing `Tap` object) will not reorder taps until you cause a recompile. + +## Hook/HookMap interface + +Public (callable by anyone holding a reference to the hook, i.e. the plugins): + +```ts +interface Hook { + tap: (name: string | Tap, fn: (context?, ...args) => Result) => void; + tapAsync: ( + name: string | Tap, + fn: ( + context?, + ...args, + callback: (err: Error | null, result: Result) => void + ) => void + ) => void; + tapPromise: ( + name: string | Tap, + fn: (context?, ...args) => Promise + ) => void; + intercept: (interceptor: HookInterceptor) => void; + withOptions: ( + options: TapOptions + ) => Omit; +} + +interface HookInterceptor { + name?: string; + call?: (context?, ...args) => void; + loop?: (context?, ...args) => void; + tap?: (context?, tap: Tap) => void; + error?: (err: Error) => void; + result?: (result: any) => void; + done?: () => void; + register?: (tap: Tap) => Tap | undefined; + context?: boolean; +} + +interface HookMap { + for: (key: any) => Hook; + intercept: (interceptor: HookMapInterceptor) => void; +} + +interface HookMapInterceptor { + factory: (key: any, hook: Hook) => Hook; +} + +interface Tap { + name: string; + type: "sync" | "async" | "promise"; + fn: Function; + stage: number; + context: boolean; + before?: string | Array; +} +``` + +Protected (only for the class containing the hook — it owns the right to trigger it): + +```ts +interface Hook { + isUsed: () => boolean; + call: (...args) => Result; + promise: (...args) => Promise; + callAsync: ( + ...args, + callback: (err: Error | null, result: Result) => void + ) => void; +} + +interface HookMap { + get: (key: any) => Hook | undefined; + for: (key: any) => Hook; +} +``` + +`isUsed()` returns `true` when the hook has at least one tap or interceptor registered. Hook owners can use it to skip expensive argument preparation when no plugin is listening: + +```js +class Car { + // ... + setSpeed(newSpeed) { + if (this.hooks.accelerate.isUsed()) { + this.hooks.accelerate.call(newSpeed); + } + } + // ... +} +``` + +## MultiHook + +A `MultiHook` is a Hook-like facade that forwards `tap`, `tapAsync`, `tapPromise`, `intercept`, and `withOptions` to several underlying hooks at once. It does not expose `call*` methods — only the owners of the wrapped hooks decide when each of them runs. It is the typical way a class exposes a "happens on any of these events" listening surface without having the plugin wire itself up to every hook individually. + +### Fan out a tap to several hooks + +```js +const { MultiHook, SyncHook } = require("tapable"); + +class Car { + constructor() { + const accelerate = new SyncHook(["newSpeed"]); + const brake = new SyncHook(); + this.hooks = { + accelerate, + brake, + // `anyMovement` is not a real hook — it simply re-registers taps + // on both `accelerate` and `brake`. + anyMovement: new MultiHook([accelerate, brake]) + }; + } +} + +const car = new Car(); +car.hooks.anyMovement.tap("Telemetry", () => console.log("car moved")); + +car.hooks.accelerate.call(42); // "car moved" +car.hooks.brake.call(); // "car moved" +``` + +The `MultiHook` has no state of its own: the tap above ends up inside `accelerate.taps` and `brake.taps`. + +### Forwarding async taps + +`tapAsync` / `tapPromise` forward to every wrapped hook — it is the plugin's job to make sure they are all compatible. Registering a `tapPromise` on a `MultiHook` that wraps a `SyncHook` will throw at registration time for that hook. + +```js +const build = new AsyncSeriesHook(["stats"]); +const rebuild = new AsyncSeriesHook(["stats"]); +const anyBuild = new MultiHook([build, rebuild]); + +anyBuild.tapPromise("Report", async (stats) => report.send(stats)); +``` + +### Shared interceptors and options + +`intercept` and `withOptions` are also forwarded, so a `MultiHook` can be used to attach the same interceptor or pre-configured options to a group of hooks: + +```js +const anyBuild = new MultiHook([build, rebuild]); + +anyBuild.intercept({ + call: () => console.log("build started"), + done: () => console.log("build done") +}); + +// Every tap added through `late` is staged late on both underlying hooks. +const late = anyBuild.withOptions({ stage: 10 }); +late.tap("RunLast", () => { + /* ... */ +}); +``` + +### `isUsed` + +`isUsed()` returns `true` if any of the wrapped hooks has at least one tap or interceptor, which lets the owner cheaply skip work when no one is listening on any of them: + +```js +if (this.hooks.anyMovement.isUsed()) { + // expensive telemetry payload is only built when a plugin actually cares + this.hooks.accelerate.call(computeSpeed()); +} +``` diff --git a/node_modules/tapable/lib/AsyncParallelBailHook.js b/node_modules/tapable/lib/AsyncParallelBailHook.js new file mode 100644 index 00000000..5cabeaab --- /dev/null +++ b/node_modules/tapable/lib/AsyncParallelBailHook.js @@ -0,0 +1,87 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +"use strict"; + +const Hook = require("./Hook"); +const HookCodeFactory = require("./HookCodeFactory"); + +class AsyncParallelBailHookCodeFactory extends HookCodeFactory { + content({ onError, onResult, onDone }) { + let code = ""; + code += `var _results = new Array(${this.options.taps.length});\n`; + code += "var _checkDone = function() {\n"; + code += "for(var i = 0; i < _results.length; i++) {\n"; + code += "var item = _results[i];\n"; + code += "if(item === undefined) return false;\n"; + code += "if(item.result !== undefined) {\n"; + code += onResult("item.result"); + code += "return true;\n"; + code += "}\n"; + code += "if(item.error) {\n"; + code += onError("item.error"); + code += "return true;\n"; + code += "}\n"; + code += "}\n"; + code += "return false;\n"; + code += "}\n"; + code += this.callTapsParallel({ + onError: (i, err, done, doneBreak) => { + let code = ""; + code += `if(${i} < _results.length && ((_results.length = ${ + i + 1 + }), (_results[${i}] = { error: ${err} }), _checkDone())) {\n`; + code += doneBreak(true); + code += "} else {\n"; + code += done(); + code += "}\n"; + return code; + }, + onResult: (i, result, done, doneBreak) => { + let code = ""; + code += `if(${i} < _results.length && (${result} !== undefined && (_results.length = ${ + i + 1 + }), (_results[${i}] = { result: ${result} }), _checkDone())) {\n`; + code += doneBreak(true); + code += "} else {\n"; + code += done(); + code += "}\n"; + return code; + }, + onTap: (i, run, done, _doneBreak) => { + let code = ""; + if (i > 0) { + code += `if(${i} >= _results.length) {\n`; + code += done(); + code += "} else {\n"; + } + code += run(); + if (i > 0) code += "}\n"; + return code; + }, + onDone + }); + return code; + } +} + +const factory = new AsyncParallelBailHookCodeFactory(); + +function COMPILE(options) { + factory.setup(this, options); + return factory.create(options); +} + +function AsyncParallelBailHook(args = [], name = undefined) { + const hook = new Hook(args, name); + hook.constructor = AsyncParallelBailHook; + hook.compile = COMPILE; + hook._call = undefined; + hook.call = undefined; + return hook; +} + +AsyncParallelBailHook.prototype = null; + +module.exports = AsyncParallelBailHook; diff --git a/node_modules/tapable/lib/AsyncParallelHook.js b/node_modules/tapable/lib/AsyncParallelHook.js new file mode 100644 index 00000000..3fa07222 --- /dev/null +++ b/node_modules/tapable/lib/AsyncParallelHook.js @@ -0,0 +1,37 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +"use strict"; + +const Hook = require("./Hook"); +const HookCodeFactory = require("./HookCodeFactory"); + +class AsyncParallelHookCodeFactory extends HookCodeFactory { + content({ onError, onDone }) { + return this.callTapsParallel({ + onError: (i, err, done, doneBreak) => onError(err) + doneBreak(true), + onDone + }); + } +} + +const factory = new AsyncParallelHookCodeFactory(); + +function COMPILE(options) { + factory.setup(this, options); + return factory.create(options); +} + +function AsyncParallelHook(args = [], name = undefined) { + const hook = new Hook(args, name); + hook.constructor = AsyncParallelHook; + hook.compile = COMPILE; + hook._call = undefined; + hook.call = undefined; + return hook; +} + +AsyncParallelHook.prototype = null; + +module.exports = AsyncParallelHook; diff --git a/node_modules/tapable/lib/AsyncSeriesBailHook.js b/node_modules/tapable/lib/AsyncSeriesBailHook.js new file mode 100644 index 00000000..a46d3d2d --- /dev/null +++ b/node_modules/tapable/lib/AsyncSeriesBailHook.js @@ -0,0 +1,42 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +"use strict"; + +const Hook = require("./Hook"); +const HookCodeFactory = require("./HookCodeFactory"); + +class AsyncSeriesBailHookCodeFactory extends HookCodeFactory { + content({ onError, onResult, resultReturns, onDone }) { + return this.callTapsSeries({ + onError: (i, err, next, doneBreak) => onError(err) + doneBreak(true), + onResult: (i, result, next) => + `if(${result} !== undefined) {\n${onResult( + result + )}\n} else {\n${next()}}\n`, + resultReturns, + onDone + }); + } +} + +const factory = new AsyncSeriesBailHookCodeFactory(); + +function COMPILE(options) { + factory.setup(this, options); + return factory.create(options); +} + +function AsyncSeriesBailHook(args = [], name = undefined) { + const hook = new Hook(args, name); + hook.constructor = AsyncSeriesBailHook; + hook.compile = COMPILE; + hook._call = undefined; + hook.call = undefined; + return hook; +} + +AsyncSeriesBailHook.prototype = null; + +module.exports = AsyncSeriesBailHook; diff --git a/node_modules/tapable/lib/AsyncSeriesHook.js b/node_modules/tapable/lib/AsyncSeriesHook.js new file mode 100644 index 00000000..569d4802 --- /dev/null +++ b/node_modules/tapable/lib/AsyncSeriesHook.js @@ -0,0 +1,37 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +"use strict"; + +const Hook = require("./Hook"); +const HookCodeFactory = require("./HookCodeFactory"); + +class AsyncSeriesHookCodeFactory extends HookCodeFactory { + content({ onError, onDone }) { + return this.callTapsSeries({ + onError: (i, err, next, doneBreak) => onError(err) + doneBreak(true), + onDone + }); + } +} + +const factory = new AsyncSeriesHookCodeFactory(); + +function COMPILE(options) { + factory.setup(this, options); + return factory.create(options); +} + +function AsyncSeriesHook(args = [], name = undefined) { + const hook = new Hook(args, name); + hook.constructor = AsyncSeriesHook; + hook.compile = COMPILE; + hook._call = undefined; + hook.call = undefined; + return hook; +} + +AsyncSeriesHook.prototype = null; + +module.exports = AsyncSeriesHook; diff --git a/node_modules/tapable/lib/AsyncSeriesLoopHook.js b/node_modules/tapable/lib/AsyncSeriesLoopHook.js new file mode 100644 index 00000000..5c3c21dd --- /dev/null +++ b/node_modules/tapable/lib/AsyncSeriesLoopHook.js @@ -0,0 +1,37 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +"use strict"; + +const Hook = require("./Hook"); +const HookCodeFactory = require("./HookCodeFactory"); + +class AsyncSeriesLoopHookCodeFactory extends HookCodeFactory { + content({ onError, onDone }) { + return this.callTapsLooping({ + onError: (i, err, next, doneBreak) => onError(err) + doneBreak(true), + onDone + }); + } +} + +const factory = new AsyncSeriesLoopHookCodeFactory(); + +function COMPILE(options) { + factory.setup(this, options); + return factory.create(options); +} + +function AsyncSeriesLoopHook(args = [], name = undefined) { + const hook = new Hook(args, name); + hook.constructor = AsyncSeriesLoopHook; + hook.compile = COMPILE; + hook._call = undefined; + hook.call = undefined; + return hook; +} + +AsyncSeriesLoopHook.prototype = null; + +module.exports = AsyncSeriesLoopHook; diff --git a/node_modules/tapable/lib/AsyncSeriesWaterfallHook.js b/node_modules/tapable/lib/AsyncSeriesWaterfallHook.js new file mode 100644 index 00000000..21a07013 --- /dev/null +++ b/node_modules/tapable/lib/AsyncSeriesWaterfallHook.js @@ -0,0 +1,48 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +"use strict"; + +const Hook = require("./Hook"); +const HookCodeFactory = require("./HookCodeFactory"); + +class AsyncSeriesWaterfallHookCodeFactory extends HookCodeFactory { + content({ onError, onResult, _onDone }) { + return this.callTapsSeries({ + onError: (i, err, next, doneBreak) => onError(err) + doneBreak(true), + onResult: (i, result, next) => { + let code = ""; + code += `if(${result} !== undefined) {\n`; + code += `${this._args[0]} = ${result};\n`; + code += "}\n"; + code += next(); + return code; + }, + onDone: () => onResult(this._args[0]) + }); + } +} + +const factory = new AsyncSeriesWaterfallHookCodeFactory(); + +function COMPILE(options) { + factory.setup(this, options); + return factory.create(options); +} + +function AsyncSeriesWaterfallHook(args = [], name = undefined) { + if (args.length < 1) { + throw new Error("Waterfall hooks must have at least one argument"); + } + const hook = new Hook(args, name); + hook.constructor = AsyncSeriesWaterfallHook; + hook.compile = COMPILE; + hook._call = undefined; + hook.call = undefined; + return hook; +} + +AsyncSeriesWaterfallHook.prototype = null; + +module.exports = AsyncSeriesWaterfallHook; diff --git a/node_modules/tapable/lib/Hook.js b/node_modules/tapable/lib/Hook.js new file mode 100644 index 00000000..5bf74179 --- /dev/null +++ b/node_modules/tapable/lib/Hook.js @@ -0,0 +1,233 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +"use strict"; + +const util = require("util"); + +const deprecateContext = util.deprecate( + () => {}, + "Hook.context is deprecated and will be removed" +); + +function CALL_DELEGATE(...args) { + this.call = this._createCall("sync"); + return this.call(...args); +} + +function CALL_ASYNC_DELEGATE(...args) { + this.callAsync = this._createCall("async"); + return this.callAsync(...args); +} + +function PROMISE_DELEGATE(...args) { + this.promise = this._createCall("promise"); + return this.promise(...args); +} + +class Hook { + constructor(args = [], name = undefined) { + this._args = args; + this.name = name; + this.taps = []; + this.interceptors = []; + this._call = CALL_DELEGATE; + this.call = CALL_DELEGATE; + this._callAsync = CALL_ASYNC_DELEGATE; + this.callAsync = CALL_ASYNC_DELEGATE; + this._promise = PROMISE_DELEGATE; + this.promise = PROMISE_DELEGATE; + this._x = undefined; + + // eslint-disable-next-line no-self-assign + this.compile = this.compile; + // eslint-disable-next-line no-self-assign + this.tap = this.tap; + // eslint-disable-next-line no-self-assign + this.tapAsync = this.tapAsync; + // eslint-disable-next-line no-self-assign + this.tapPromise = this.tapPromise; + } + + compile(_options) { + throw new Error("Abstract: should be overridden"); + } + + _createCall(type) { + return this.compile({ + taps: this.taps, + interceptors: this.interceptors, + args: this._args, + type + }); + } + + _tap(type, options, fn) { + if (typeof options === "string") { + // Fast path: a string options ("name") is by far the most common + // case. Build the final descriptor in a single allocation instead + // of creating `{ name }` and then `Object.assign`ing it. + const name = options.trim(); + if (name === "") { + throw new Error("Missing name for tap"); + } + options = { type, fn, name }; + } else { + if (typeof options !== "object" || options === null) { + throw new Error("Invalid tap options"); + } + let { name } = options; + if (typeof name === "string") { + name = name.trim(); + } + if (typeof name !== "string" || name === "") { + throw new Error("Missing name for tap"); + } + if (typeof options.context !== "undefined") { + deprecateContext(); + } + // Fast path: only `name` is set. Build the descriptor as a literal + // so `_insert` and downstream consumers see the same hidden class + // as the string-options path, avoiding a polymorphic call site. + // Scan with `for...in` (cheaper than allocating `Object.keys`) + // to verify no other user-provided properties exist - e.g. + // webpack's `additionalAssets` - otherwise they'd be dropped. + let onlyName = true; + for (const key in options) { + if (key !== "name") { + onlyName = false; + break; + } + } + if (onlyName) { + options = { type, fn, name }; + } else { + options.name = name; + // Preserve previous precedence: user-provided keys win over the internal `type`/`fn`. + options = Object.assign({ type, fn }, options); + } + } + options = this._runRegisterInterceptors(options); + this._insert(options); + } + + tap(options, fn) { + this._tap("sync", options, fn); + } + + tapAsync(options, fn) { + this._tap("async", options, fn); + } + + tapPromise(options, fn) { + this._tap("promise", options, fn); + } + + _runRegisterInterceptors(options) { + const { interceptors } = this; + const { length } = interceptors; + // Common case: no interceptors. + if (length === 0) return options; + for (let i = 0; i < length; i++) { + const interceptor = interceptors[i]; + if (interceptor.register) { + const newOptions = interceptor.register(options); + if (newOptions !== undefined) { + options = newOptions; + } + } + } + return options; + } + + withOptions(options) { + const mergeOptions = (opt) => + Object.assign({}, options, typeof opt === "string" ? { name: opt } : opt); + + return { + name: this.name, + tap: (opt, fn) => this.tap(mergeOptions(opt), fn), + tapAsync: (opt, fn) => this.tapAsync(mergeOptions(opt), fn), + tapPromise: (opt, fn) => this.tapPromise(mergeOptions(opt), fn), + intercept: (interceptor) => this.intercept(interceptor), + isUsed: () => this.isUsed(), + withOptions: (opt) => this.withOptions(mergeOptions(opt)) + }; + } + + isUsed() { + return this.taps.length > 0 || this.interceptors.length > 0; + } + + intercept(interceptor) { + this._resetCompilation(); + this.interceptors.push(Object.assign({}, interceptor)); + if (interceptor.register) { + for (let i = 0; i < this.taps.length; i++) { + this.taps[i] = interceptor.register(this.taps[i]); + } + } + } + + _resetCompilation() { + this.call = this._call; + this.callAsync = this._callAsync; + this.promise = this._promise; + } + + _insert(item) { + this._resetCompilation(); + const { taps } = this; + const stage = typeof item.stage === "number" ? item.stage : 0; + + // Fast path: the overwhelmingly common `hook.tap("name", fn)` case + // has no `before` and default stage 0. If the list is empty or the + // last tap's stage is <= the new item's stage the item belongs at + // the end - append in O(1), skipping the Set allocation and the + // shift loop. + if (!(typeof item.before === "string" || Array.isArray(item.before))) { + const n = taps.length; + if (n === 0 || (taps[n - 1].stage || 0) <= stage) { + taps[n] = item; + return; + } + } + + let before; + + if (typeof item.before === "string") { + before = new Set([item.before]); + } else if (Array.isArray(item.before)) { + before = new Set(item.before); + } + + let i = taps.length; + + while (i > 0) { + i--; + const tap = taps[i]; + taps[i + 1] = tap; + const xStage = tap.stage || 0; + if (before) { + if (before.has(tap.name)) { + before.delete(tap.name); + continue; + } + if (before.size > 0) { + continue; + } + } + if (xStage > stage) { + continue; + } + i++; + break; + } + taps[i] = item; + } +} + +Object.setPrototypeOf(Hook.prototype, null); + +module.exports = Hook; diff --git a/node_modules/tapable/lib/HookCodeFactory.js b/node_modules/tapable/lib/HookCodeFactory.js new file mode 100644 index 00000000..2e0e6c10 --- /dev/null +++ b/node_modules/tapable/lib/HookCodeFactory.js @@ -0,0 +1,490 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +"use strict"; + +class HookCodeFactory { + constructor(config) { + this.config = config; + this.options = undefined; + this._args = undefined; + } + + create(options) { + this.init(options); + let fn; + switch (options.type) { + case "sync": + fn = new Function( + this.args(), + `"use strict";\n${this.header()}${this.contentWithInterceptors({ + onError: (err) => `throw ${err};\n`, + onResult: (result) => `return ${result};\n`, + resultReturns: true, + onDone: () => "", + rethrowIfPossible: true + })}` + ); + break; + case "async": + fn = new Function( + this.args({ + after: "_callback" + }), + `"use strict";\n${this.header()}${this.contentWithInterceptors({ + onError: (err) => `_callback(${err});\n`, + onResult: (result) => `_callback(null, ${result});\n`, + onDone: () => "_callback();\n" + })}` + ); + break; + case "promise": { + let errorHelperUsed = false; + const content = this.contentWithInterceptors({ + onError: (err) => { + errorHelperUsed = true; + return `_error(${err});\n`; + }, + onResult: (result) => `_resolve(${result});\n`, + onDone: () => "_resolve();\n" + }); + let code = ""; + code += '"use strict";\n'; + code += this.header(); + code += "return new Promise((function(_resolve, _reject) {\n"; + if (errorHelperUsed) { + code += "var _sync = true;\n"; + code += "function _error(_err) {\n"; + code += "if(_sync)\n"; + code += + "_resolve(Promise.resolve().then((function() { throw _err; })));\n"; + code += "else\n"; + code += "_reject(_err);\n"; + code += "};\n"; + } + code += content; + if (errorHelperUsed) { + code += "_sync = false;\n"; + } + code += "}));\n"; + fn = new Function(this.args(), code); + break; + } + } + this.deinit(); + return fn; + } + + setup(instance, options) { + const { taps } = options; + const { length } = taps; + const fns = Array.from({ length }); + for (let i = 0; i < length; i++) { + fns[i] = taps[i].fn; + } + instance._x = fns; + } + + /** + * @param {{ type: "sync" | "promise" | "async", taps: Array, interceptors: Array }} options + */ + init(options) { + this.options = options; + // `_args` is only read (length / join / [0]) - never mutated - so we + // can share the caller's array directly instead of paying for a copy + // on every compile. + this._args = options.args; + this._joinedArgs = undefined; + } + + deinit() { + this.options = undefined; + this._args = undefined; + this._joinedArgs = undefined; + } + + contentWithInterceptors(options) { + if (this.options.interceptors.length > 0) { + const { onError, onResult, onDone } = options; + let code = ""; + for (let i = 0; i < this.options.interceptors.length; i++) { + const interceptor = this.options.interceptors[i]; + if (interceptor.call) { + code += `${this.getInterceptor(i)}.call(${this.args({ + before: interceptor.context ? "_context" : undefined + })});\n`; + } + } + code += this.content( + Object.assign(options, { + onError: + onError && + ((err) => { + let code = ""; + for (let i = 0; i < this.options.interceptors.length; i++) { + const interceptor = this.options.interceptors[i]; + if (interceptor.error) { + code += `${this.getInterceptor(i)}.error(${err});\n`; + } + } + code += onError(err); + return code; + }), + onResult: + onResult && + ((result) => { + let code = ""; + for (let i = 0; i < this.options.interceptors.length; i++) { + const interceptor = this.options.interceptors[i]; + if (interceptor.result) { + code += `${this.getInterceptor(i)}.result(${result});\n`; + } + } + code += onResult(result); + return code; + }), + onDone: + onDone && + (() => { + let code = ""; + for (let i = 0; i < this.options.interceptors.length; i++) { + const interceptor = this.options.interceptors[i]; + if (interceptor.done) { + code += `${this.getInterceptor(i)}.done();\n`; + } + } + code += onDone(); + return code; + }) + }) + ); + return code; + } + return this.content(options); + } + + header() { + let code = ""; + code += this.needContext() ? "var _context = {};\n" : "var _context;\n"; + code += "var _x = this._x;\n"; + if (this.options.interceptors.length > 0) { + code += "var _taps = this.taps;\n"; + code += "var _interceptors = this.interceptors;\n"; + } + return code; + } + + needContext() { + const { taps } = this.options; + for (let i = 0; i < taps.length; i++) { + if (taps[i].context) return true; + } + return false; + } + + callTap(tapIndex, { onError, onResult, onDone, rethrowIfPossible }) { + let code = ""; + let hasTapCached = false; + for (let i = 0; i < this.options.interceptors.length; i++) { + const interceptor = this.options.interceptors[i]; + if (interceptor.tap) { + if (!hasTapCached) { + code += `var _tap${tapIndex} = ${this.getTap(tapIndex)};\n`; + hasTapCached = true; + } + code += `${this.getInterceptor(i)}.tap(${ + interceptor.context ? "_context, " : "" + }_tap${tapIndex});\n`; + } + } + code += `var _fn${tapIndex} = ${this.getTapFn(tapIndex)};\n`; + const tap = this.options.taps[tapIndex]; + switch (tap.type) { + case "sync": + if (!rethrowIfPossible) { + code += `var _hasError${tapIndex} = false;\n`; + code += "try {\n"; + } + if (onResult) { + code += `var _result${tapIndex} = _fn${tapIndex}(${this.args({ + before: tap.context ? "_context" : undefined + })});\n`; + } else { + code += `_fn${tapIndex}(${this.args({ + before: tap.context ? "_context" : undefined + })});\n`; + } + if (!rethrowIfPossible) { + code += "} catch(_err) {\n"; + code += `_hasError${tapIndex} = true;\n`; + code += onError("_err"); + code += "}\n"; + code += `if(!_hasError${tapIndex}) {\n`; + } + if (onResult) { + code += onResult(`_result${tapIndex}`); + } + if (onDone) { + code += onDone(); + } + if (!rethrowIfPossible) { + code += "}\n"; + } + break; + case "async": { + let cbCode = ""; + cbCode += onResult + ? `(function(_err${tapIndex}, _result${tapIndex}) {\n` + : `(function(_err${tapIndex}) {\n`; + cbCode += `if(_err${tapIndex}) {\n`; + cbCode += onError(`_err${tapIndex}`); + cbCode += "} else {\n"; + if (onResult) { + cbCode += onResult(`_result${tapIndex}`); + } + if (onDone) { + cbCode += onDone(); + } + cbCode += "}\n"; + cbCode += "})"; + code += `_fn${tapIndex}(${this.args({ + before: tap.context ? "_context" : undefined, + after: cbCode + })});\n`; + break; + } + case "promise": + code += `var _hasResult${tapIndex} = false;\n`; + code += `var _promise${tapIndex} = _fn${tapIndex}(${this.args({ + before: tap.context ? "_context" : undefined + })});\n`; + code += `if (!_promise${tapIndex} || !_promise${tapIndex}.then)\n`; + code += ` throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise${tapIndex} + ')');\n`; + code += `_promise${tapIndex}.then((function(_result${tapIndex}) {\n`; + code += `_hasResult${tapIndex} = true;\n`; + if (onResult) { + code += onResult(`_result${tapIndex}`); + } + if (onDone) { + code += onDone(); + } + code += `}), function(_err${tapIndex}) {\n`; + code += `if(_hasResult${tapIndex}) throw _err${tapIndex};\n`; + code += onError( + `!_err${tapIndex} ? new Error('Tap function (tapPromise) rejects "' + _err${tapIndex} + '" value') : _err${tapIndex}` + ); + code += "});\n"; + break; + } + return code; + } + + callTapsSeries({ + onError, + onResult, + resultReturns, + onDone, + doneReturns, + rethrowIfPossible + }) { + const { taps } = this.options; + const tapsLength = taps.length; + if (tapsLength === 0) return onDone(); + // Inlined findIndex to avoid the callback allocation. + let firstAsync = -1; + for (let i = 0; i < tapsLength; i++) { + if (taps[i].type !== "sync") { + firstAsync = i; + break; + } + } + const somethingReturns = resultReturns || doneReturns; + // doneBreak doesn't depend on the loop variable - hoist to allocate once. + const doneBreak = (skipDone) => { + if (skipDone) return ""; + return onDone(); + }; + let code = ""; + let current = onDone; + let unrollCounter = 0; + for (let j = tapsLength - 1; j >= 0; j--) { + const i = j; + const unroll = + current !== onDone && (taps[i].type !== "sync" || unrollCounter++ > 20); + if (unroll) { + unrollCounter = 0; + code += `function _next${i}() {\n`; + code += current(); + code += "}\n"; + current = () => `${somethingReturns ? "return " : ""}_next${i}();\n`; + } + const done = current; + const content = this.callTap(i, { + onError: (error) => onError(i, error, done, doneBreak), + onResult: + onResult && ((result) => onResult(i, result, done, doneBreak)), + onDone: !onResult && done, + rethrowIfPossible: + rethrowIfPossible && (firstAsync < 0 || i < firstAsync) + }); + current = () => content; + } + code += current(); + return code; + } + + callTapsLooping({ onError, onDone, rethrowIfPossible }) { + if (this.options.taps.length === 0) return onDone(); + const syncOnly = this.options.taps.every((t) => t.type === "sync"); + let code = ""; + if (!syncOnly) { + code += "var _looper = (function() {\n"; + code += "var _loopAsync = false;\n"; + } + code += "var _loop;\n"; + code += "do {\n"; + code += "_loop = false;\n"; + for (let i = 0; i < this.options.interceptors.length; i++) { + const interceptor = this.options.interceptors[i]; + if (interceptor.loop) { + code += `${this.getInterceptor(i)}.loop(${this.args({ + before: interceptor.context ? "_context" : undefined + })});\n`; + } + } + code += this.callTapsSeries({ + onError, + onResult: (i, result, next, doneBreak) => { + let code = ""; + code += `if(${result} !== undefined) {\n`; + code += "_loop = true;\n"; + if (!syncOnly) code += "if(_loopAsync) _looper();\n"; + code += doneBreak(true); + code += "} else {\n"; + code += next(); + code += "}\n"; + return code; + }, + onDone: + onDone && + (() => { + let code = ""; + code += "if(!_loop) {\n"; + code += onDone(); + code += "}\n"; + return code; + }), + rethrowIfPossible: rethrowIfPossible && syncOnly + }); + code += "} while(_loop);\n"; + if (!syncOnly) { + code += "_loopAsync = true;\n"; + code += "});\n"; + code += "_looper();\n"; + } + return code; + } + + callTapsParallel({ + onError, + onResult, + onDone, + rethrowIfPossible, + onTap = (i, run) => run() + }) { + const { taps } = this.options; + const tapsLength = taps.length; + if (tapsLength <= 1) { + return this.callTapsSeries({ + onError, + onResult, + onDone, + rethrowIfPossible + }); + } + // done and doneBreak don't depend on the loop variable - hoist them + // so they're allocated once per compile instead of once per tap. + const done = () => { + if (onDone) return "if(--_counter === 0) _done();\n"; + return "--_counter;"; + }; + const doneBreak = (skipDone) => { + if (skipDone || !onDone) return "_counter = 0;\n"; + return "_counter = 0;\n_done();\n"; + }; + let code = ""; + code += "do {\n"; + code += `var _counter = ${tapsLength};\n`; + if (onDone) { + code += "var _done = (function() {\n"; + code += onDone(); + code += "});\n"; + } + for (let i = 0; i < tapsLength; i++) { + code += "if(_counter <= 0) break;\n"; + code += onTap( + i, + () => + this.callTap(i, { + onError: (error) => { + let code = ""; + code += "if(_counter > 0) {\n"; + code += onError(i, error, done, doneBreak); + code += "}\n"; + return code; + }, + onResult: + onResult && + ((result) => { + let code = ""; + code += "if(_counter > 0) {\n"; + code += onResult(i, result, done, doneBreak); + code += "}\n"; + return code; + }), + onDone: !onResult && (() => done()), + rethrowIfPossible + }), + done, + doneBreak + ); + } + code += "} while(false);\n"; + return code; + } + + args({ before, after } = {}) { + // Hot during code generation. Join `_args` once and cache the result, + // then build the customized variants via string concat instead of + // allocating temporary `[before, ...allArgs]` / `[...allArgs, after]` + // arrays and re-joining. + let joined = this._joinedArgs; + if (joined === undefined) { + joined = this._args.length === 0 ? "" : this._args.join(", "); + this._joinedArgs = joined; + } + if (!before && !after) return joined; + if (joined.length === 0) { + if (before && after) return `${before}, ${after}`; + return before || after; + } + if (before && after) return `${before}, ${joined}, ${after}`; + if (before) return `${before}, ${joined}`; + return `${joined}, ${after}`; + } + + getTapFn(idx) { + return `_x[${idx}]`; + } + + getTap(idx) { + return `_taps[${idx}]`; + } + + getInterceptor(idx) { + return `_interceptors[${idx}]`; + } +} + +module.exports = HookCodeFactory; diff --git a/node_modules/tapable/lib/HookMap.js b/node_modules/tapable/lib/HookMap.js new file mode 100644 index 00000000..ca91cd64 --- /dev/null +++ b/node_modules/tapable/lib/HookMap.js @@ -0,0 +1,73 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +"use strict"; + +const util = require("util"); + +const defaultFactory = (key, hook) => hook; + +class HookMap { + constructor(factory, name = undefined) { + this._map = new Map(); + this.name = name; + this._factory = factory; + this._interceptors = []; + } + + get(key) { + return this._map.get(key); + } + + for(key) { + // Hot path: inline the map lookup to skip the `this.get(key)` + // indirection. This gets hit on every hook access in consumers + // like webpack. + const map = this._map; + const hook = map.get(key); + if (hook !== undefined) { + return hook; + } + let newHook = this._factory(key); + const interceptors = this._interceptors; + for (let i = 0; i < interceptors.length; i++) { + newHook = interceptors[i].factory(key, newHook); + } + map.set(key, newHook); + return newHook; + } + + intercept(interceptor) { + this._interceptors.push( + Object.assign( + { + factory: defaultFactory + }, + interceptor + ) + ); + } +} + +HookMap.prototype.tap = util.deprecate(function tap(key, options, fn) { + return this.for(key).tap(options, fn); +}, "HookMap#tap(key,…) is deprecated. Use HookMap#for(key).tap(…) instead."); + +HookMap.prototype.tapAsync = util.deprecate(function tapAsync( + key, + options, + fn +) { + return this.for(key).tapAsync(options, fn); +}, "HookMap#tapAsync(key,…) is deprecated. Use HookMap#for(key).tapAsync(…) instead."); + +HookMap.prototype.tapPromise = util.deprecate(function tapPromise( + key, + options, + fn +) { + return this.for(key).tapPromise(options, fn); +}, "HookMap#tapPromise(key,…) is deprecated. Use HookMap#for(key).tapPromise(…) instead."); + +module.exports = HookMap; diff --git a/node_modules/tapable/lib/MultiHook.js b/node_modules/tapable/lib/MultiHook.js new file mode 100644 index 00000000..900abbde --- /dev/null +++ b/node_modules/tapable/lib/MultiHook.js @@ -0,0 +1,57 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +"use strict"; + +class MultiHook { + constructor(hooks, name = undefined) { + this.hooks = hooks; + this.name = name; + } + + tap(options, fn) { + const { hooks } = this; + for (let i = 0; i < hooks.length; i++) { + hooks[i].tap(options, fn); + } + } + + tapAsync(options, fn) { + const { hooks } = this; + for (let i = 0; i < hooks.length; i++) { + hooks[i].tapAsync(options, fn); + } + } + + tapPromise(options, fn) { + const { hooks } = this; + for (let i = 0; i < hooks.length; i++) { + hooks[i].tapPromise(options, fn); + } + } + + isUsed() { + const { hooks } = this; + for (let i = 0; i < hooks.length; i++) { + if (hooks[i].isUsed()) return true; + } + return false; + } + + intercept(interceptor) { + const { hooks } = this; + for (let i = 0; i < hooks.length; i++) { + hooks[i].intercept(interceptor); + } + } + + withOptions(options) { + return new MultiHook( + this.hooks.map((hook) => hook.withOptions(options)), + this.name + ); + } +} + +module.exports = MultiHook; diff --git a/node_modules/tapable/lib/SyncBailHook.js b/node_modules/tapable/lib/SyncBailHook.js new file mode 100644 index 00000000..4b538c35 --- /dev/null +++ b/node_modules/tapable/lib/SyncBailHook.js @@ -0,0 +1,51 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +"use strict"; + +const Hook = require("./Hook"); +const HookCodeFactory = require("./HookCodeFactory"); + +class SyncBailHookCodeFactory extends HookCodeFactory { + content({ onError, onResult, resultReturns, onDone, rethrowIfPossible }) { + return this.callTapsSeries({ + onError: (i, err) => onError(err), + onResult: (i, result, next) => + `if(${result} !== undefined) {\n${onResult( + result + )};\n} else {\n${next()}}\n`, + resultReturns, + onDone, + rethrowIfPossible + }); + } +} + +const factory = new SyncBailHookCodeFactory(); + +const TAP_ASYNC = () => { + throw new Error("tapAsync is not supported on a SyncBailHook"); +}; + +const TAP_PROMISE = () => { + throw new Error("tapPromise is not supported on a SyncBailHook"); +}; + +function COMPILE(options) { + factory.setup(this, options); + return factory.create(options); +} + +function SyncBailHook(args = [], name = undefined) { + const hook = new Hook(args, name); + hook.constructor = SyncBailHook; + hook.tapAsync = TAP_ASYNC; + hook.tapPromise = TAP_PROMISE; + hook.compile = COMPILE; + return hook; +} + +SyncBailHook.prototype = null; + +module.exports = SyncBailHook; diff --git a/node_modules/tapable/lib/SyncHook.js b/node_modules/tapable/lib/SyncHook.js new file mode 100644 index 00000000..968dea2b --- /dev/null +++ b/node_modules/tapable/lib/SyncHook.js @@ -0,0 +1,46 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +"use strict"; + +const Hook = require("./Hook"); +const HookCodeFactory = require("./HookCodeFactory"); + +class SyncHookCodeFactory extends HookCodeFactory { + content({ onError, onDone, rethrowIfPossible }) { + return this.callTapsSeries({ + onError: (i, err) => onError(err), + onDone, + rethrowIfPossible + }); + } +} + +const factory = new SyncHookCodeFactory(); + +const TAP_ASYNC = () => { + throw new Error("tapAsync is not supported on a SyncHook"); +}; + +const TAP_PROMISE = () => { + throw new Error("tapPromise is not supported on a SyncHook"); +}; + +function COMPILE(options) { + factory.setup(this, options); + return factory.create(options); +} + +function SyncHook(args = [], name = undefined) { + const hook = new Hook(args, name); + hook.constructor = SyncHook; + hook.tapAsync = TAP_ASYNC; + hook.tapPromise = TAP_PROMISE; + hook.compile = COMPILE; + return hook; +} + +SyncHook.prototype = null; + +module.exports = SyncHook; diff --git a/node_modules/tapable/lib/SyncLoopHook.js b/node_modules/tapable/lib/SyncLoopHook.js new file mode 100644 index 00000000..da48ca1e --- /dev/null +++ b/node_modules/tapable/lib/SyncLoopHook.js @@ -0,0 +1,46 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +"use strict"; + +const Hook = require("./Hook"); +const HookCodeFactory = require("./HookCodeFactory"); + +class SyncLoopHookCodeFactory extends HookCodeFactory { + content({ onError, onDone, rethrowIfPossible }) { + return this.callTapsLooping({ + onError: (i, err) => onError(err), + onDone, + rethrowIfPossible + }); + } +} + +const factory = new SyncLoopHookCodeFactory(); + +const TAP_ASYNC = () => { + throw new Error("tapAsync is not supported on a SyncLoopHook"); +}; + +const TAP_PROMISE = () => { + throw new Error("tapPromise is not supported on a SyncLoopHook"); +}; + +function COMPILE(options) { + factory.setup(this, options); + return factory.create(options); +} + +function SyncLoopHook(args = [], name = undefined) { + const hook = new Hook(args, name); + hook.constructor = SyncLoopHook; + hook.tapAsync = TAP_ASYNC; + hook.tapPromise = TAP_PROMISE; + hook.compile = COMPILE; + return hook; +} + +SyncLoopHook.prototype = null; + +module.exports = SyncLoopHook; diff --git a/node_modules/tapable/lib/SyncWaterfallHook.js b/node_modules/tapable/lib/SyncWaterfallHook.js new file mode 100644 index 00000000..8eca528c --- /dev/null +++ b/node_modules/tapable/lib/SyncWaterfallHook.js @@ -0,0 +1,58 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +"use strict"; + +const Hook = require("./Hook"); +const HookCodeFactory = require("./HookCodeFactory"); + +class SyncWaterfallHookCodeFactory extends HookCodeFactory { + content({ onError, onResult, resultReturns, rethrowIfPossible }) { + return this.callTapsSeries({ + onError: (i, err) => onError(err), + onResult: (i, result, next) => { + let code = ""; + code += `if(${result} !== undefined) {\n`; + code += `${this._args[0]} = ${result};\n`; + code += "}\n"; + code += next(); + return code; + }, + onDone: () => onResult(this._args[0]), + doneReturns: resultReturns, + rethrowIfPossible + }); + } +} + +const factory = new SyncWaterfallHookCodeFactory(); + +const TAP_ASYNC = () => { + throw new Error("tapAsync is not supported on a SyncWaterfallHook"); +}; + +const TAP_PROMISE = () => { + throw new Error("tapPromise is not supported on a SyncWaterfallHook"); +}; + +function COMPILE(options) { + factory.setup(this, options); + return factory.create(options); +} + +function SyncWaterfallHook(args = [], name = undefined) { + if (args.length < 1) { + throw new Error("Waterfall hooks must have at least one argument"); + } + const hook = new Hook(args, name); + hook.constructor = SyncWaterfallHook; + hook.tapAsync = TAP_ASYNC; + hook.tapPromise = TAP_PROMISE; + hook.compile = COMPILE; + return hook; +} + +SyncWaterfallHook.prototype = null; + +module.exports = SyncWaterfallHook; diff --git a/node_modules/tapable/lib/index.js b/node_modules/tapable/lib/index.js new file mode 100644 index 00000000..3a0dc67d --- /dev/null +++ b/node_modules/tapable/lib/index.js @@ -0,0 +1,19 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +"use strict"; + +module.exports.AsyncParallelBailHook = require("./AsyncParallelBailHook"); +module.exports.AsyncParallelHook = require("./AsyncParallelHook"); +module.exports.AsyncSeriesBailHook = require("./AsyncSeriesBailHook"); +module.exports.AsyncSeriesHook = require("./AsyncSeriesHook"); +module.exports.AsyncSeriesLoopHook = require("./AsyncSeriesLoopHook"); +module.exports.AsyncSeriesWaterfallHook = require("./AsyncSeriesWaterfallHook"); +module.exports.HookMap = require("./HookMap"); +module.exports.MultiHook = require("./MultiHook"); +module.exports.SyncBailHook = require("./SyncBailHook"); +module.exports.SyncHook = require("./SyncHook"); +module.exports.SyncLoopHook = require("./SyncLoopHook"); +module.exports.SyncWaterfallHook = require("./SyncWaterfallHook"); +module.exports.__esModule = true; diff --git a/node_modules/tapable/lib/util-browser.js b/node_modules/tapable/lib/util-browser.js new file mode 100644 index 00000000..d07eb6ca --- /dev/null +++ b/node_modules/tapable/lib/util-browser.js @@ -0,0 +1,18 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +"use strict"; + +module.exports.deprecate = (fn, msg) => { + let once = true; + return function deprecate() { + if (once) { + // eslint-disable-next-line no-console + console.warn(`DeprecationWarning: ${msg}`); + once = false; + } + // eslint-disable-next-line prefer-rest-params + return fn.apply(this, arguments); + }; +}; diff --git a/node_modules/tapable/package.json b/node_modules/tapable/package.json new file mode 100644 index 00000000..9d63912b --- /dev/null +++ b/node_modules/tapable/package.json @@ -0,0 +1,65 @@ +{ + "name": "tapable", + "version": "2.3.3", + "description": "Just a little module for plugins.", + "homepage": "https://github.com/webpack/tapable", + "repository": { + "type": "git", + "url": "http://github.com/webpack/tapable.git" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "license": "MIT", + "author": "Tobias Koppers @sokra", + "main": "lib/index.js", + "browser": { + "util": "./lib/util-browser.js" + }, + "types": "./tapable.d.ts", + "files": [ + "lib", + "tapable.d.ts" + ], + "scripts": { + "lint": "npm run lint:code && npm run fmt:check", + "lint:code": "eslint --cache .", + "fmt": "npm run fmt:base -- --log-level warn --write", + "fmt:check": "npm run fmt:base -- --check", + "fmt:base": "node ./node_modules/prettier/bin/prettier.cjs --cache --ignore-unknown .", + "fix": "npm run fix:code && npm run fmt", + "fix:code": "npm run lint:code -- --fix", + "test": "jest", + "benchmark": "node --max-old-space-size=4096 --hash-seed=1 --random-seed=1 --no-opt --predictable --predictable-gc-schedule --interpreted-frames-native-stack --allow-natives-syntax --expose-gc --no-concurrent-sweeping ./benchmark/run.mjs", + "version": "changeset version", + "release": "changeset publish" + }, + "jest": { + "transform": { + "test[\\\\/].+\\.js$": "babel-jest" + }, + "snapshotFormat": { + "escapeString": true, + "printBasicPrototype": true + } + }, + "devDependencies": { + "@babel/core": "^7.4.4", + "@babel/preset-env": "^7.4.4", + "@changesets/cli": "^2.31.0", + "@changesets/get-github-info": "^0.8.0", + "@codspeed/core": "^5.3.0", + "@stylistic/eslint-plugin": "^5.2.3", + "babel-jest": "^30.3.0", + "eslint": "^9.28.0", + "eslint-config-webpack": "^4.6.3", + "jest": "^30.3.0", + "prettier": "^3.8.3", + "prettier-1": "npm:prettier@^1", + "tinybench": "^6.0.0" + }, + "engines": { + "node": ">=6" + } +} diff --git a/node_modules/tapable/tapable.d.ts b/node_modules/tapable/tapable.d.ts new file mode 100644 index 00000000..e2ca8c2f --- /dev/null +++ b/node_modules/tapable/tapable.d.ts @@ -0,0 +1,174 @@ +type FixedSizeArray = T extends 0 + ? void[] + : ReadonlyArray & { + 0: U; + length: T; + }; +type Measure = T extends 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 + ? T + : never; +type Append = { + 0: [U]; + 1: [T[0], U]; + 2: [T[0], T[1], U]; + 3: [T[0], T[1], T[2], U]; + 4: [T[0], T[1], T[2], T[3], U]; + 5: [T[0], T[1], T[2], T[3], T[4], U]; + 6: [T[0], T[1], T[2], T[3], T[4], T[5], U]; + 7: [T[0], T[1], T[2], T[3], T[4], T[5], T[6], U]; + 8: [T[0], T[1], T[2], T[3], T[4], T[5], T[6], T[7], U]; +}[Measure]; +type AsArray = T extends any[] ? T : [T]; + +declare class UnsetAdditionalOptions { + _UnsetAdditionalOptions: true; +} +type IfSet = X extends UnsetAdditionalOptions ? {} : X; + +type Callback = (error: E | null, result?: T) => void; +type InnerCallback = (error?: E | null | false, result?: T) => void; + +type FullTap = Tap & { + type: "sync" | "async" | "promise"; + fn: Function; +}; + +type Tap = TapOptions & { + name: string; +}; + +type TapOptions = { + before?: string; + stage?: number; +}; + +interface HookInterceptor { + name?: string; + tap?: (tap: FullTap & IfSet) => void; + call?: (...args: any[]) => void; + loop?: (...args: any[]) => void; + error?: (err: Error) => void; + result?: (result: R) => void; + done?: () => void; + register?: ( + tap: FullTap & IfSet + ) => FullTap & IfSet; +} + +type ArgumentNames = FixedSizeArray; + +declare class Hook { + constructor(args?: ArgumentNames>, name?: string); + name: string | undefined; + interceptors: HookInterceptor[]; + taps: FullTap[]; + intercept(interceptor: HookInterceptor): void; + isUsed(): boolean; + callAsync(...args: Append, Callback>): void; + promise(...args: AsArray): Promise; + tap( + options: string | (Tap & IfSet), + fn: (...args: AsArray) => R + ): void; + withOptions( + options: TapOptions & IfSet + ): Omit; +} + +export class SyncHook< + T, + R = void, + AdditionalOptions = UnsetAdditionalOptions +> extends Hook { + call(...args: AsArray): R; +} + +export class SyncBailHook< + T, + R, + AdditionalOptions = UnsetAdditionalOptions +> extends SyncHook {} +export class SyncLoopHook< + T, + AdditionalOptions = UnsetAdditionalOptions +> extends SyncHook {} +export class SyncWaterfallHook< + T, + R = AsArray[0], + AdditionalOptions = UnsetAdditionalOptions +> extends SyncHook {} + +declare class AsyncHook< + T, + R, + AdditionalOptions = UnsetAdditionalOptions +> extends Hook { + tapAsync( + options: string | (Tap & IfSet), + fn: (...args: Append, InnerCallback>) => void + ): void; + tapPromise( + options: string | (Tap & IfSet), + fn: (...args: AsArray) => Promise + ): void; +} + +export class AsyncParallelHook< + T, + AdditionalOptions = UnsetAdditionalOptions +> extends AsyncHook {} +export class AsyncParallelBailHook< + T, + R, + AdditionalOptions = UnsetAdditionalOptions +> extends AsyncHook {} +export class AsyncSeriesHook< + T, + AdditionalOptions = UnsetAdditionalOptions +> extends AsyncHook {} +export class AsyncSeriesBailHook< + T, + R, + AdditionalOptions = UnsetAdditionalOptions +> extends AsyncHook {} +export class AsyncSeriesLoopHook< + T, + AdditionalOptions = UnsetAdditionalOptions +> extends AsyncHook {} +export class AsyncSeriesWaterfallHook< + T, + R = AsArray[0], + AdditionalOptions = UnsetAdditionalOptions +> extends AsyncHook {} + +type HookFactory = (key: K) => H; + +interface HookMapInterceptor { + factory?: (key: K, hook: H) => H; +} + +export class HookMap { + constructor(factory: HookFactory, name?: string); + name: string | undefined; + get(key: any): H | undefined; + for(key: any): H; + intercept(interceptor: HookMapInterceptor): void; +} + +type AnyHook = Hook; + +export class TypedHookMap> { + constructor(factory: HookFactory, name?: string); + name: string | undefined; + get(key: K): M[K] | undefined; + for(key: K): M[K]; + intercept(interceptor: HookMapInterceptor): void; +} + +export class MultiHook { + constructor(hooks: H[], name?: string); + name: string | undefined; + tap(options: string | Tap, fn?: Function): void; + tapAsync(options: string | Tap, fn?: Function): void; + tapPromise(options: string | Tap, fn?: Function): void; +} diff --git a/node_modules/tinyglobby/LICENSE b/node_modules/tinyglobby/LICENSE new file mode 100644 index 00000000..8657364b --- /dev/null +++ b/node_modules/tinyglobby/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Madeline Gurriarán + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/tinyglobby/README.md b/node_modules/tinyglobby/README.md new file mode 100644 index 00000000..f10b4598 --- /dev/null +++ b/node_modules/tinyglobby/README.md @@ -0,0 +1,25 @@ +# tinyglobby + +[![npm version](https://img.shields.io/npm/v/tinyglobby.svg?maxAge=3600)](https://npmjs.com/package/tinyglobby) +[![monthly downloads](https://img.shields.io/npm/dm/tinyglobby.svg?maxAge=3600)](https://npmjs.com/package/tinyglobby) + +A fast and minimal alternative to globby and fast-glob, meant to behave the same way. + +Both globby and fast-glob present some behavior no other globbing lib has, +which makes it hard to manually replace with something smaller and better. + +This library uses only two subdependencies, compared to `globby`'s [23](https://npmgraph.js.org/?q=globby@16.2.0) +and `fast-glob`'s [17](https://npmgraph.js.org/?q=fast-glob@3.3.3). + +## Usage + +```js +import { glob, globSync } from 'tinyglobby'; + +await glob(['files/*.ts', '!**/*.d.ts'], { cwd: 'src' }); +globSync('src/**/*.ts', { ignore: '**/*.d.ts' }); +``` + +## Documentation + +Visit https://superchupu.dev/tinyglobby to read the full documentation. diff --git a/node_modules/tinyglobby/dist/index.cjs b/node_modules/tinyglobby/dist/index.cjs new file mode 100644 index 00000000..5badacb5 --- /dev/null +++ b/node_modules/tinyglobby/dist/index.cjs @@ -0,0 +1,334 @@ +Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); +//#region \0rolldown/runtime.js +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) { + key = keys[i]; + if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { + get: ((k) => from[k]).bind(null, key), + enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable + }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { + value: mod, + enumerable: true +}) : target, mod)); +//#endregion +let fs = require("fs"); +let path = require("path"); +let url = require("url"); +let fdir = require("fdir"); +let picomatch = require("picomatch"); +picomatch = __toESM(picomatch); +//#region src/utils.ts +const isReadonlyArray = Array.isArray; +const BACKSLASHES = /\\/g; +const isWin = process.platform === "win32"; +const ONLY_PARENT_DIRECTORIES = /^(\/?\.\.)+$/; +function getPartialMatcher(patterns, options = {}) { + const patternsCount = patterns.length; + const patternsParts = Array(patternsCount); + const matchers = Array(patternsCount); + let i, j; + for (i = 0; i < patternsCount; i++) { + const parts = splitPattern(patterns[i]); + patternsParts[i] = parts; + const partsCount = parts.length; + const partMatchers = Array(partsCount); + for (j = 0; j < partsCount; j++) partMatchers[j] = (0, picomatch.default)(parts[j], options); + matchers[i] = partMatchers; + } + return (input) => { + const inputParts = input.split("/"); + if (inputParts[0] === ".." && ONLY_PARENT_DIRECTORIES.test(input)) return true; + for (i = 0; i < patternsCount; i++) { + const patternParts = patternsParts[i]; + const matcher = matchers[i]; + const inputPatternCount = inputParts.length; + const minParts = Math.min(inputPatternCount, patternParts.length); + j = 0; + while (j < minParts) { + const part = patternParts[j]; + if (part.includes("/")) return true; + if (!matcher[j](inputParts[j])) break; + if (!options.noglobstar && part === "**") return true; + j++; + } + if (j === inputPatternCount) return true; + } + return false; + }; +} +/* node:coverage ignore next 2 */ +const WIN32_ROOT_DIR = /^[A-Z]:\/$/i; +const isRoot = isWin ? (p) => WIN32_ROOT_DIR.test(p) : (p) => p === "/"; +function buildFormat(cwd, root, absolute) { + if (cwd === root || root.startsWith(`${cwd}/`)) { + if (absolute) { + const start = cwd.length + +!isRoot(cwd); + return (p, isDir) => p.slice(start, isDir ? -1 : void 0) || "."; + } + const prefix = root.slice(cwd.length + 1); + if (prefix) return (p, isDir) => { + if (p === ".") return prefix; + const result = `${prefix}/${p}`; + return isDir ? result.slice(0, -1) : result; + }; + return (p, isDir) => isDir && p !== "." ? p.slice(0, -1) : p; + } + if (absolute) return (p) => path.posix.relative(cwd, p) || "."; + return (p) => path.posix.relative(cwd, `${root}/${p}`) || "."; +} +function buildRelative(cwd, root) { + if (root.startsWith(`${cwd}/`)) { + const prefix = root.slice(cwd.length + 1); + return (p) => `${prefix}/${p}`; + } + return (p) => { + const result = path.posix.relative(cwd, `${root}/${p}`); + return p[p.length - 1] === "/" && result !== "" ? `${result}/` : result || "."; + }; +} +const splitPatternOptions = { parts: true }; +function splitPattern(path$1) { + var _result$parts; + const result = picomatch.default.scan(path$1, splitPatternOptions); + return ((_result$parts = result.parts) === null || _result$parts === void 0 ? void 0 : _result$parts.length) ? result.parts : [path$1]; +} +const ESCAPED_WIN32_BACKSLASHES = /\\(?![()[\]{}!+@])/g; +function convertPosixPathToPattern(path$2) { + return escapePosixPath(path$2); +} +function convertWin32PathToPattern(path$3) { + return escapeWin32Path(path$3).replace(ESCAPED_WIN32_BACKSLASHES, "/"); +} +/** +* Converts a path to a pattern depending on the platform. +* Identical to {@link escapePath} on POSIX systems. +* @see {@link https://superchupu.dev/tinyglobby/documentation#convertPathToPattern} +*/ +/* node:coverage ignore next 3 */ +const convertPathToPattern = isWin ? convertWin32PathToPattern : convertPosixPathToPattern; +const POSIX_UNESCAPED_GLOB_SYMBOLS = /(? path$4.replace(POSIX_UNESCAPED_GLOB_SYMBOLS, "\\$&"); +const escapeWin32Path = (path$5) => path$5.replace(WIN32_UNESCAPED_GLOB_SYMBOLS, "\\$&"); +/** +* Escapes a path's special characters depending on the platform. +* @see {@link https://superchupu.dev/tinyglobby/documentation#escapePath} +*/ +/* node:coverage ignore next */ +const escapePath = isWin ? escapeWin32Path : escapePosixPath; +/** +* Checks if a pattern has dynamic parts. +* +* Has a few minor differences with [`fast-glob`](https://github.com/mrmlnc/fast-glob) for better accuracy: +* +* - Doesn't necessarily return `false` on patterns that include `\`. +* - Returns `true` if the pattern includes parentheses, regardless of them representing one single pattern or not. +* - Returns `true` for unfinished glob extensions i.e. `(h`, `+(h`. +* - Returns `true` for unfinished brace expansions as long as they include `,` or `..`. +* +* @see {@link https://superchupu.dev/tinyglobby/documentation#isDynamicPattern} +*/ +function isDynamicPattern(pattern, options) { + if ((options === null || options === void 0 ? void 0 : options.caseSensitiveMatch) === false) return true; + const scan = picomatch.default.scan(pattern); + return scan.isGlob || scan.negated; +} +function log(...tasks) { + console.log(`[tinyglobby ${(/* @__PURE__ */ new Date()).toLocaleTimeString("es")}]`, ...tasks); +} +function ensureStringArray(value) { + return typeof value === "string" ? [value] : value !== null && value !== void 0 ? value : []; +} +//#endregion +//#region src/patterns.ts +const PARENT_DIRECTORY = /^(\/?\.\.)+/; +const ESCAPING_BACKSLASHES = /\\(?=[()[\]{}!*+?@|])/g; +function normalizePattern(pattern, opts, props, isIgnore) { + var _PARENT_DIRECTORY$exe; + const cwd = opts.cwd; + let result = pattern; + if (pattern[pattern.length - 1] === "/") result = pattern.slice(0, -1); + if (result[result.length - 1] !== "*" && opts.expandDirectories) result += "/**"; + const escapedCwd = escapePath(cwd); + result = (0, path.isAbsolute)(result.replace(ESCAPING_BACKSLASHES, "")) ? path.posix.relative(escapedCwd, result) : path.posix.normalize(result); + const parentDir = (_PARENT_DIRECTORY$exe = PARENT_DIRECTORY.exec(result)) === null || _PARENT_DIRECTORY$exe === void 0 ? void 0 : _PARENT_DIRECTORY$exe[0]; + const parts = splitPattern(result); + if (parentDir) { + const n = (parentDir.length + 1) / 3; + let i = 0; + const cwdParts = escapedCwd.split("/"); + while (i < n && parts[i + n] === cwdParts[cwdParts.length + i - n]) { + result = result.slice(0, (n - i - 1) * 3) + result.slice((n - i) * 3 + parts[i + n].length + 1) || "."; + i++; + } + const potentialRoot = path.posix.join(cwd, parentDir.slice(i * 3)); + if (potentialRoot[0] !== "." && props.root.length > potentialRoot.length) { + props.root = potentialRoot; + props.depthOffset = -n + i; + } + } + if (!isIgnore && props.depthOffset >= 0) { + var _props$commonPath; + (_props$commonPath = props.commonPath) !== null && _props$commonPath !== void 0 || (props.commonPath = parts); + const newCommonPath = []; + const length = Math.min(props.commonPath.length, parts.length); + for (let i = 0; i < length; i++) { + const part = parts[i]; + if (part === "**" && !parts[i + 1]) { + newCommonPath.pop(); + break; + } + if (i === parts.length - 1 || part !== props.commonPath[i] || isDynamicPattern(part)) break; + newCommonPath.push(part); + } + props.depthOffset = newCommonPath.length; + props.commonPath = newCommonPath; + props.root = newCommonPath.length > 0 ? path.posix.join(cwd, ...newCommonPath) : cwd; + } + return result; +} +function processPatterns(options, patterns, props) { + const matchPatterns = []; + const ignorePatterns = []; + for (const pattern of options.ignore) { + if (!pattern) continue; + if (pattern[0] !== "!" || pattern[1] === "(") ignorePatterns.push(normalizePattern(pattern, options, props, true)); + } + for (const pattern of patterns) { + if (!pattern) continue; + if (pattern[0] !== "!" || pattern[1] === "(") matchPatterns.push(normalizePattern(pattern, options, props, false)); + else if (pattern[1] !== "!" || pattern[2] === "(") ignorePatterns.push(normalizePattern(pattern.slice(1), options, props, true)); + } + return { + match: matchPatterns, + ignore: ignorePatterns + }; +} +//#endregion +//#region src/crawler.ts +function buildCrawler(options, patterns) { + const cwd = options.cwd; + const props = { + root: cwd, + depthOffset: 0 + }; + const processed = processPatterns(options, patterns, props); + if (options.debug) log("internal processing patterns:", processed); + const { absolute, caseSensitiveMatch, debug, dot, followSymbolicLinks, onlyDirectories } = options; + const root = props.root.replace(BACKSLASHES, ""); + const matchOptions = { + dot, + nobrace: options.braceExpansion === false, + nocase: !caseSensitiveMatch, + noextglob: options.extglob === false, + noglobstar: options.globstar === false, + posix: true + }; + const matcher = (0, picomatch.default)(processed.match, matchOptions); + const ignore = (0, picomatch.default)(processed.ignore, matchOptions); + const partialMatcher = getPartialMatcher(processed.match, matchOptions); + const format = buildFormat(cwd, root, absolute); + const excludeFormatter = absolute ? format : buildFormat(cwd, root, true); + const excludePredicate = (_, p) => { + const relativePath = excludeFormatter(p, true); + return relativePath !== "." && !partialMatcher(relativePath) || ignore(relativePath); + }; + let maxDepth; + if (options.deep !== void 0) maxDepth = Math.round(options.deep - props.depthOffset); + const crawler = new fdir.fdir({ + filters: [debug ? (p, isDirectory) => { + const path = format(p, isDirectory); + const matches = matcher(path) && !ignore(path); + if (matches) log(`matched ${path}`); + return matches; + } : (p, isDirectory) => { + const path = format(p, isDirectory); + return matcher(path) && !ignore(path); + }], + exclude: debug ? (_, p) => { + const skipped = excludePredicate(_, p); + log(`${skipped ? "skipped" : "crawling"} ${p}`); + return skipped; + } : excludePredicate, + fs: options.fs, + pathSeparator: "/", + relativePaths: !absolute, + resolvePaths: absolute, + includeBasePath: absolute, + resolveSymlinks: followSymbolicLinks, + excludeSymlinks: !followSymbolicLinks, + excludeFiles: onlyDirectories, + includeDirs: onlyDirectories || !options.onlyFiles, + maxDepth, + signal: options.signal + }).crawl(root); + if (options.debug) log("internal properties:", { + ...props, + root + }); + return [crawler, cwd !== root && !absolute && buildRelative(cwd, root)]; +} +//#endregion +//#region src/index.ts +function formatPaths(paths, mapper) { + if (mapper) for (let i = paths.length - 1; i >= 0; i--) paths[i] = mapper(paths[i]); + return paths; +} +const defaultOptions = { + caseSensitiveMatch: true, + cwd: process.cwd(), + debug: !!process.env.TINYGLOBBY_DEBUG, + expandDirectories: true, + followSymbolicLinks: true, + onlyFiles: true +}; +function getOptions(options) { + const opts = { + ...defaultOptions, + ...options + }; + opts.cwd = (opts.cwd instanceof URL ? (0, url.fileURLToPath)(opts.cwd) : (0, path.resolve)(opts.cwd)).replace(BACKSLASHES, "/"); + opts.ignore = ensureStringArray(opts.ignore); + opts.fs && (opts.fs = { + readdir: opts.fs.readdir || fs.readdir, + readdirSync: opts.fs.readdirSync || fs.readdirSync, + realpath: opts.fs.realpath || fs.realpath, + realpathSync: opts.fs.realpathSync || fs.realpathSync, + stat: opts.fs.stat || fs.stat, + statSync: opts.fs.statSync || fs.statSync + }); + if (opts.debug) log("globbing with options:", opts); + return opts; +} +function getCrawler(globInput, inputOptions = {}) { + var _ref; + if (globInput && (inputOptions === null || inputOptions === void 0 ? void 0 : inputOptions.patterns)) throw new Error("Cannot pass patterns as both an argument and an option"); + const isModern = isReadonlyArray(globInput) || typeof globInput === "string"; + const patterns = ensureStringArray((_ref = isModern ? globInput : globInput.patterns) !== null && _ref !== void 0 ? _ref : "**/*"); + const options = getOptions(isModern ? inputOptions : globInput); + return patterns.length > 0 ? buildCrawler(options, patterns) : []; +} +async function glob(globInput, options) { + const [crawler, relative] = getCrawler(globInput, options); + return crawler ? formatPaths(await crawler.withPromise(), relative) : []; +} +function globSync(globInput, options) { + const [crawler, relative] = getCrawler(globInput, options); + return crawler ? formatPaths(crawler.sync(), relative) : []; +} +//#endregion +exports.convertPathToPattern = convertPathToPattern; +exports.escapePath = escapePath; +exports.glob = glob; +exports.globSync = globSync; +exports.isDynamicPattern = isDynamicPattern; diff --git a/node_modules/tinyglobby/dist/index.d.cts b/node_modules/tinyglobby/dist/index.d.cts new file mode 100644 index 00000000..3e8e16aa --- /dev/null +++ b/node_modules/tinyglobby/dist/index.d.cts @@ -0,0 +1,148 @@ +import { FSLike } from "fdir"; + +//#region src/types.d.ts +type FileSystemAdapter = Partial; +interface GlobOptions { + /** + * Whether to return absolute paths. Disable to have relative paths. + * @default false + */ + absolute?: boolean; + /** + * Enables support for brace expansion syntax, like `{a,b}` or `{1..9}`. + * @default true + */ + braceExpansion?: boolean; + /** + * Whether to match in case-sensitive mode. + * @default true + */ + caseSensitiveMatch?: boolean; + /** + * The working directory in which to search. Results will be returned relative to this directory, unless + * {@link absolute} is set. + * + * It is important to avoid globbing outside this directory when possible, even with absolute paths enabled, + * as doing so can harm performance due to having to recalculate relative paths. + * @default process.cwd() + */ + cwd?: string | URL; + /** + * Logs useful debug information. Meant for development purposes. Logs can change at any time. + * @default false + */ + debug?: boolean; + /** + * Maximum directory depth to crawl. + * @default Infinity + */ + deep?: number; + /** + * Whether to return entries that start with a dot, like `.gitignore` or `.prettierrc`. + * @default false + */ + dot?: boolean; + /** + * Whether to automatically expand directory patterns. + * + * Important to disable if migrating from [`fast-glob`](https://github.com/mrmlnc/fast-glob). + * @default true + */ + expandDirectories?: boolean; + /** + * Enables support for extglobs, like `+(pattern)`. + * @default true + */ + extglob?: boolean; + /** + * Whether to traverse and include symbolic links. Can slightly affect performance. + * @default true + */ + followSymbolicLinks?: boolean; + /** + * An object that overrides `node:fs` functions. + * @default import('node:fs') + */ + fs?: FileSystemAdapter; + /** + * Enables support for matching nested directories with globstars (`**`). + * If `false`, `**` behaves exactly like `*`. + * @default true + */ + globstar?: boolean; + /** + * Glob patterns to exclude from the results. + * @default [] + */ + ignore?: string | readonly string[]; + /** + * Enable to only return directories. + * If `true`, disables {@link onlyFiles}. + * @default false + */ + onlyDirectories?: boolean; + /** + * Enable to only return files. + * @default true + */ + onlyFiles?: boolean; + /** + * @deprecated Provide patterns as the first argument instead. + */ + patterns?: string | readonly string[]; + /** + * An `AbortSignal` to abort crawling the file system. + * @default undefined + */ + signal?: AbortSignal; +} +//#endregion +//#region src/utils.d.ts +/** +* Converts a path to a pattern depending on the platform. +* Identical to {@link escapePath} on POSIX systems. +* @see {@link https://superchupu.dev/tinyglobby/documentation#convertPathToPattern} +*/ +declare const convertPathToPattern: (path: string) => string; +/** +* Escapes a path's special characters depending on the platform. +* @see {@link https://superchupu.dev/tinyglobby/documentation#escapePath} +*/ +declare const escapePath: (path: string) => string; +/** +* Checks if a pattern has dynamic parts. +* +* Has a few minor differences with [`fast-glob`](https://github.com/mrmlnc/fast-glob) for better accuracy: +* +* - Doesn't necessarily return `false` on patterns that include `\`. +* - Returns `true` if the pattern includes parentheses, regardless of them representing one single pattern or not. +* - Returns `true` for unfinished glob extensions i.e. `(h`, `+(h`. +* - Returns `true` for unfinished brace expansions as long as they include `,` or `..`. +* +* @see {@link https://superchupu.dev/tinyglobby/documentation#isDynamicPattern} +*/ +declare function isDynamicPattern(pattern: string, options?: { + caseSensitiveMatch: boolean; +}): boolean; +//#endregion +//#region src/index.d.ts +/** +* Asynchronously match files following a glob pattern. +* @see {@link https://superchupu.dev/tinyglobby/documentation#glob} +*/ +declare function glob(patterns: string | readonly string[], options?: Omit): Promise; +/** +* @deprecated Provide patterns as the first argument instead. +*/ +declare function glob(options: GlobOptions): Promise; +/** +* Synchronously match files following a glob pattern. +* @see {@link https://superchupu.dev/tinyglobby/documentation#globSync} +*/ +declare function globSync(patterns: string | readonly string[], options?: Omit): string[]; +/** +* @deprecated Provide patterns as the first argument instead. +*/ +declare function globSync(options: GlobOptions): string[]; +//#endregion +export { type GlobOptions, convertPathToPattern, escapePath, glob, globSync, isDynamicPattern }; \ No newline at end of file diff --git a/node_modules/tinyglobby/dist/index.d.mts b/node_modules/tinyglobby/dist/index.d.mts new file mode 100644 index 00000000..3e8e16aa --- /dev/null +++ b/node_modules/tinyglobby/dist/index.d.mts @@ -0,0 +1,148 @@ +import { FSLike } from "fdir"; + +//#region src/types.d.ts +type FileSystemAdapter = Partial; +interface GlobOptions { + /** + * Whether to return absolute paths. Disable to have relative paths. + * @default false + */ + absolute?: boolean; + /** + * Enables support for brace expansion syntax, like `{a,b}` or `{1..9}`. + * @default true + */ + braceExpansion?: boolean; + /** + * Whether to match in case-sensitive mode. + * @default true + */ + caseSensitiveMatch?: boolean; + /** + * The working directory in which to search. Results will be returned relative to this directory, unless + * {@link absolute} is set. + * + * It is important to avoid globbing outside this directory when possible, even with absolute paths enabled, + * as doing so can harm performance due to having to recalculate relative paths. + * @default process.cwd() + */ + cwd?: string | URL; + /** + * Logs useful debug information. Meant for development purposes. Logs can change at any time. + * @default false + */ + debug?: boolean; + /** + * Maximum directory depth to crawl. + * @default Infinity + */ + deep?: number; + /** + * Whether to return entries that start with a dot, like `.gitignore` or `.prettierrc`. + * @default false + */ + dot?: boolean; + /** + * Whether to automatically expand directory patterns. + * + * Important to disable if migrating from [`fast-glob`](https://github.com/mrmlnc/fast-glob). + * @default true + */ + expandDirectories?: boolean; + /** + * Enables support for extglobs, like `+(pattern)`. + * @default true + */ + extglob?: boolean; + /** + * Whether to traverse and include symbolic links. Can slightly affect performance. + * @default true + */ + followSymbolicLinks?: boolean; + /** + * An object that overrides `node:fs` functions. + * @default import('node:fs') + */ + fs?: FileSystemAdapter; + /** + * Enables support for matching nested directories with globstars (`**`). + * If `false`, `**` behaves exactly like `*`. + * @default true + */ + globstar?: boolean; + /** + * Glob patterns to exclude from the results. + * @default [] + */ + ignore?: string | readonly string[]; + /** + * Enable to only return directories. + * If `true`, disables {@link onlyFiles}. + * @default false + */ + onlyDirectories?: boolean; + /** + * Enable to only return files. + * @default true + */ + onlyFiles?: boolean; + /** + * @deprecated Provide patterns as the first argument instead. + */ + patterns?: string | readonly string[]; + /** + * An `AbortSignal` to abort crawling the file system. + * @default undefined + */ + signal?: AbortSignal; +} +//#endregion +//#region src/utils.d.ts +/** +* Converts a path to a pattern depending on the platform. +* Identical to {@link escapePath} on POSIX systems. +* @see {@link https://superchupu.dev/tinyglobby/documentation#convertPathToPattern} +*/ +declare const convertPathToPattern: (path: string) => string; +/** +* Escapes a path's special characters depending on the platform. +* @see {@link https://superchupu.dev/tinyglobby/documentation#escapePath} +*/ +declare const escapePath: (path: string) => string; +/** +* Checks if a pattern has dynamic parts. +* +* Has a few minor differences with [`fast-glob`](https://github.com/mrmlnc/fast-glob) for better accuracy: +* +* - Doesn't necessarily return `false` on patterns that include `\`. +* - Returns `true` if the pattern includes parentheses, regardless of them representing one single pattern or not. +* - Returns `true` for unfinished glob extensions i.e. `(h`, `+(h`. +* - Returns `true` for unfinished brace expansions as long as they include `,` or `..`. +* +* @see {@link https://superchupu.dev/tinyglobby/documentation#isDynamicPattern} +*/ +declare function isDynamicPattern(pattern: string, options?: { + caseSensitiveMatch: boolean; +}): boolean; +//#endregion +//#region src/index.d.ts +/** +* Asynchronously match files following a glob pattern. +* @see {@link https://superchupu.dev/tinyglobby/documentation#glob} +*/ +declare function glob(patterns: string | readonly string[], options?: Omit): Promise; +/** +* @deprecated Provide patterns as the first argument instead. +*/ +declare function glob(options: GlobOptions): Promise; +/** +* Synchronously match files following a glob pattern. +* @see {@link https://superchupu.dev/tinyglobby/documentation#globSync} +*/ +declare function globSync(patterns: string | readonly string[], options?: Omit): string[]; +/** +* @deprecated Provide patterns as the first argument instead. +*/ +declare function globSync(options: GlobOptions): string[]; +//#endregion +export { type GlobOptions, convertPathToPattern, escapePath, glob, globSync, isDynamicPattern }; \ No newline at end of file diff --git a/node_modules/tinyglobby/dist/index.mjs b/node_modules/tinyglobby/dist/index.mjs new file mode 100644 index 00000000..ac043aae --- /dev/null +++ b/node_modules/tinyglobby/dist/index.mjs @@ -0,0 +1,306 @@ +import { readdir, readdirSync, realpath, realpathSync, stat, statSync } from "fs"; +import { isAbsolute, posix, resolve } from "path"; +import { fileURLToPath } from "url"; +import { fdir } from "fdir"; +import picomatch from "picomatch"; +//#region src/utils.ts +const isReadonlyArray = Array.isArray; +const BACKSLASHES = /\\/g; +const isWin = process.platform === "win32"; +const ONLY_PARENT_DIRECTORIES = /^(\/?\.\.)+$/; +function getPartialMatcher(patterns, options = {}) { + const patternsCount = patterns.length; + const patternsParts = Array(patternsCount); + const matchers = Array(patternsCount); + let i, j; + for (i = 0; i < patternsCount; i++) { + const parts = splitPattern(patterns[i]); + patternsParts[i] = parts; + const partsCount = parts.length; + const partMatchers = Array(partsCount); + for (j = 0; j < partsCount; j++) partMatchers[j] = picomatch(parts[j], options); + matchers[i] = partMatchers; + } + return (input) => { + const inputParts = input.split("/"); + if (inputParts[0] === ".." && ONLY_PARENT_DIRECTORIES.test(input)) return true; + for (i = 0; i < patternsCount; i++) { + const patternParts = patternsParts[i]; + const matcher = matchers[i]; + const inputPatternCount = inputParts.length; + const minParts = Math.min(inputPatternCount, patternParts.length); + j = 0; + while (j < minParts) { + const part = patternParts[j]; + if (part.includes("/")) return true; + if (!matcher[j](inputParts[j])) break; + if (!options.noglobstar && part === "**") return true; + j++; + } + if (j === inputPatternCount) return true; + } + return false; + }; +} +/* node:coverage ignore next 2 */ +const WIN32_ROOT_DIR = /^[A-Z]:\/$/i; +const isRoot = isWin ? (p) => WIN32_ROOT_DIR.test(p) : (p) => p === "/"; +function buildFormat(cwd, root, absolute) { + if (cwd === root || root.startsWith(`${cwd}/`)) { + if (absolute) { + const start = cwd.length + +!isRoot(cwd); + return (p, isDir) => p.slice(start, isDir ? -1 : void 0) || "."; + } + const prefix = root.slice(cwd.length + 1); + if (prefix) return (p, isDir) => { + if (p === ".") return prefix; + const result = `${prefix}/${p}`; + return isDir ? result.slice(0, -1) : result; + }; + return (p, isDir) => isDir && p !== "." ? p.slice(0, -1) : p; + } + if (absolute) return (p) => posix.relative(cwd, p) || "."; + return (p) => posix.relative(cwd, `${root}/${p}`) || "."; +} +function buildRelative(cwd, root) { + if (root.startsWith(`${cwd}/`)) { + const prefix = root.slice(cwd.length + 1); + return (p) => `${prefix}/${p}`; + } + return (p) => { + const result = posix.relative(cwd, `${root}/${p}`); + return p[p.length - 1] === "/" && result !== "" ? `${result}/` : result || "."; + }; +} +const splitPatternOptions = { parts: true }; +function splitPattern(path) { + var _result$parts; + const result = picomatch.scan(path, splitPatternOptions); + return ((_result$parts = result.parts) === null || _result$parts === void 0 ? void 0 : _result$parts.length) ? result.parts : [path]; +} +const ESCAPED_WIN32_BACKSLASHES = /\\(?![()[\]{}!+@])/g; +function convertPosixPathToPattern(path) { + return escapePosixPath(path); +} +function convertWin32PathToPattern(path) { + return escapeWin32Path(path).replace(ESCAPED_WIN32_BACKSLASHES, "/"); +} +/** +* Converts a path to a pattern depending on the platform. +* Identical to {@link escapePath} on POSIX systems. +* @see {@link https://superchupu.dev/tinyglobby/documentation#convertPathToPattern} +*/ +/* node:coverage ignore next 3 */ +const convertPathToPattern = isWin ? convertWin32PathToPattern : convertPosixPathToPattern; +const POSIX_UNESCAPED_GLOB_SYMBOLS = /(? path.replace(POSIX_UNESCAPED_GLOB_SYMBOLS, "\\$&"); +const escapeWin32Path = (path) => path.replace(WIN32_UNESCAPED_GLOB_SYMBOLS, "\\$&"); +/** +* Escapes a path's special characters depending on the platform. +* @see {@link https://superchupu.dev/tinyglobby/documentation#escapePath} +*/ +/* node:coverage ignore next */ +const escapePath = isWin ? escapeWin32Path : escapePosixPath; +/** +* Checks if a pattern has dynamic parts. +* +* Has a few minor differences with [`fast-glob`](https://github.com/mrmlnc/fast-glob) for better accuracy: +* +* - Doesn't necessarily return `false` on patterns that include `\`. +* - Returns `true` if the pattern includes parentheses, regardless of them representing one single pattern or not. +* - Returns `true` for unfinished glob extensions i.e. `(h`, `+(h`. +* - Returns `true` for unfinished brace expansions as long as they include `,` or `..`. +* +* @see {@link https://superchupu.dev/tinyglobby/documentation#isDynamicPattern} +*/ +function isDynamicPattern(pattern, options) { + if ((options === null || options === void 0 ? void 0 : options.caseSensitiveMatch) === false) return true; + const scan = picomatch.scan(pattern); + return scan.isGlob || scan.negated; +} +function log(...tasks) { + console.log(`[tinyglobby ${(/* @__PURE__ */ new Date()).toLocaleTimeString("es")}]`, ...tasks); +} +function ensureStringArray(value) { + return typeof value === "string" ? [value] : value !== null && value !== void 0 ? value : []; +} +//#endregion +//#region src/patterns.ts +const PARENT_DIRECTORY = /^(\/?\.\.)+/; +const ESCAPING_BACKSLASHES = /\\(?=[()[\]{}!*+?@|])/g; +function normalizePattern(pattern, opts, props, isIgnore) { + var _PARENT_DIRECTORY$exe; + const cwd = opts.cwd; + let result = pattern; + if (pattern[pattern.length - 1] === "/") result = pattern.slice(0, -1); + if (result[result.length - 1] !== "*" && opts.expandDirectories) result += "/**"; + const escapedCwd = escapePath(cwd); + result = isAbsolute(result.replace(ESCAPING_BACKSLASHES, "")) ? posix.relative(escapedCwd, result) : posix.normalize(result); + const parentDir = (_PARENT_DIRECTORY$exe = PARENT_DIRECTORY.exec(result)) === null || _PARENT_DIRECTORY$exe === void 0 ? void 0 : _PARENT_DIRECTORY$exe[0]; + const parts = splitPattern(result); + if (parentDir) { + const n = (parentDir.length + 1) / 3; + let i = 0; + const cwdParts = escapedCwd.split("/"); + while (i < n && parts[i + n] === cwdParts[cwdParts.length + i - n]) { + result = result.slice(0, (n - i - 1) * 3) + result.slice((n - i) * 3 + parts[i + n].length + 1) || "."; + i++; + } + const potentialRoot = posix.join(cwd, parentDir.slice(i * 3)); + if (potentialRoot[0] !== "." && props.root.length > potentialRoot.length) { + props.root = potentialRoot; + props.depthOffset = -n + i; + } + } + if (!isIgnore && props.depthOffset >= 0) { + var _props$commonPath; + (_props$commonPath = props.commonPath) !== null && _props$commonPath !== void 0 || (props.commonPath = parts); + const newCommonPath = []; + const length = Math.min(props.commonPath.length, parts.length); + for (let i = 0; i < length; i++) { + const part = parts[i]; + if (part === "**" && !parts[i + 1]) { + newCommonPath.pop(); + break; + } + if (i === parts.length - 1 || part !== props.commonPath[i] || isDynamicPattern(part)) break; + newCommonPath.push(part); + } + props.depthOffset = newCommonPath.length; + props.commonPath = newCommonPath; + props.root = newCommonPath.length > 0 ? posix.join(cwd, ...newCommonPath) : cwd; + } + return result; +} +function processPatterns(options, patterns, props) { + const matchPatterns = []; + const ignorePatterns = []; + for (const pattern of options.ignore) { + if (!pattern) continue; + if (pattern[0] !== "!" || pattern[1] === "(") ignorePatterns.push(normalizePattern(pattern, options, props, true)); + } + for (const pattern of patterns) { + if (!pattern) continue; + if (pattern[0] !== "!" || pattern[1] === "(") matchPatterns.push(normalizePattern(pattern, options, props, false)); + else if (pattern[1] !== "!" || pattern[2] === "(") ignorePatterns.push(normalizePattern(pattern.slice(1), options, props, true)); + } + return { + match: matchPatterns, + ignore: ignorePatterns + }; +} +//#endregion +//#region src/crawler.ts +function buildCrawler(options, patterns) { + const cwd = options.cwd; + const props = { + root: cwd, + depthOffset: 0 + }; + const processed = processPatterns(options, patterns, props); + if (options.debug) log("internal processing patterns:", processed); + const { absolute, caseSensitiveMatch, debug, dot, followSymbolicLinks, onlyDirectories } = options; + const root = props.root.replace(BACKSLASHES, ""); + const matchOptions = { + dot, + nobrace: options.braceExpansion === false, + nocase: !caseSensitiveMatch, + noextglob: options.extglob === false, + noglobstar: options.globstar === false, + posix: true + }; + const matcher = picomatch(processed.match, matchOptions); + const ignore = picomatch(processed.ignore, matchOptions); + const partialMatcher = getPartialMatcher(processed.match, matchOptions); + const format = buildFormat(cwd, root, absolute); + const excludeFormatter = absolute ? format : buildFormat(cwd, root, true); + const excludePredicate = (_, p) => { + const relativePath = excludeFormatter(p, true); + return relativePath !== "." && !partialMatcher(relativePath) || ignore(relativePath); + }; + let maxDepth; + if (options.deep !== void 0) maxDepth = Math.round(options.deep - props.depthOffset); + const crawler = new fdir({ + filters: [debug ? (p, isDirectory) => { + const path = format(p, isDirectory); + const matches = matcher(path) && !ignore(path); + if (matches) log(`matched ${path}`); + return matches; + } : (p, isDirectory) => { + const path = format(p, isDirectory); + return matcher(path) && !ignore(path); + }], + exclude: debug ? (_, p) => { + const skipped = excludePredicate(_, p); + log(`${skipped ? "skipped" : "crawling"} ${p}`); + return skipped; + } : excludePredicate, + fs: options.fs, + pathSeparator: "/", + relativePaths: !absolute, + resolvePaths: absolute, + includeBasePath: absolute, + resolveSymlinks: followSymbolicLinks, + excludeSymlinks: !followSymbolicLinks, + excludeFiles: onlyDirectories, + includeDirs: onlyDirectories || !options.onlyFiles, + maxDepth, + signal: options.signal + }).crawl(root); + if (options.debug) log("internal properties:", { + ...props, + root + }); + return [crawler, cwd !== root && !absolute && buildRelative(cwd, root)]; +} +//#endregion +//#region src/index.ts +function formatPaths(paths, mapper) { + if (mapper) for (let i = paths.length - 1; i >= 0; i--) paths[i] = mapper(paths[i]); + return paths; +} +const defaultOptions = { + caseSensitiveMatch: true, + cwd: process.cwd(), + debug: !!process.env.TINYGLOBBY_DEBUG, + expandDirectories: true, + followSymbolicLinks: true, + onlyFiles: true +}; +function getOptions(options) { + const opts = { + ...defaultOptions, + ...options + }; + opts.cwd = (opts.cwd instanceof URL ? fileURLToPath(opts.cwd) : resolve(opts.cwd)).replace(BACKSLASHES, "/"); + opts.ignore = ensureStringArray(opts.ignore); + opts.fs && (opts.fs = { + readdir: opts.fs.readdir || readdir, + readdirSync: opts.fs.readdirSync || readdirSync, + realpath: opts.fs.realpath || realpath, + realpathSync: opts.fs.realpathSync || realpathSync, + stat: opts.fs.stat || stat, + statSync: opts.fs.statSync || statSync + }); + if (opts.debug) log("globbing with options:", opts); + return opts; +} +function getCrawler(globInput, inputOptions = {}) { + var _ref; + if (globInput && (inputOptions === null || inputOptions === void 0 ? void 0 : inputOptions.patterns)) throw new Error("Cannot pass patterns as both an argument and an option"); + const isModern = isReadonlyArray(globInput) || typeof globInput === "string"; + const patterns = ensureStringArray((_ref = isModern ? globInput : globInput.patterns) !== null && _ref !== void 0 ? _ref : "**/*"); + const options = getOptions(isModern ? inputOptions : globInput); + return patterns.length > 0 ? buildCrawler(options, patterns) : []; +} +async function glob(globInput, options) { + const [crawler, relative] = getCrawler(globInput, options); + return crawler ? formatPaths(await crawler.withPromise(), relative) : []; +} +function globSync(globInput, options) { + const [crawler, relative] = getCrawler(globInput, options); + return crawler ? formatPaths(crawler.sync(), relative) : []; +} +//#endregion +export { convertPathToPattern, escapePath, glob, globSync, isDynamicPattern }; diff --git a/node_modules/tinyglobby/package.json b/node_modules/tinyglobby/package.json new file mode 100644 index 00000000..06dadac3 --- /dev/null +++ b/node_modules/tinyglobby/package.json @@ -0,0 +1,73 @@ +{ + "name": "tinyglobby", + "version": "0.2.16", + "description": "A fast and minimal alternative to globby and fast-glob", + "type": "module", + "main": "./dist/index.cjs", + "module": "./dist/index.mjs", + "types": "./dist/index.d.cts", + "exports": { + ".": { + "import": "./dist/index.mjs", + "require": "./dist/index.cjs" + }, + "./package.json": "./package.json" + }, + "sideEffects": false, + "files": [ + "dist" + ], + "author": "Superchupu", + "license": "MIT", + "keywords": [ + "glob", + "patterns", + "fast", + "implementation" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/SuperchupuDev/tinyglobby.git" + }, + "bugs": { + "url": "https://github.com/SuperchupuDev/tinyglobby/issues" + }, + "homepage": "https://superchupu.dev/tinyglobby", + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + }, + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "devDependencies": { + "@biomejs/biome": "^2.4.10", + "@types/node": "^25.5.2", + "@types/picomatch": "^4.0.3", + "fast-glob": "^3.3.3", + "fs-fixture": "^2.13.0", + "glob": "^13.0.6", + "tinybench": "^6.0.0", + "tsdown": "^0.21.7", + "typescript": "^6.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "publishConfig": { + "provenance": true + }, + "scripts": { + "bench": "node benchmark/bench.ts", + "bench:setup": "node benchmark/setup.ts", + "build": "tsdown", + "check": "biome check", + "check:fix": "biome check --write --unsafe", + "format": "biome format --write", + "lint": "biome lint", + "test": "node --test \"test/**/*.ts\"", + "test:coverage": "node --test --experimental-test-coverage \"test/**/*.ts\"", + "test:only": "node --test --test-only \"test/**/*.ts\"", + "typecheck": "tsc --noEmit" + } +} \ No newline at end of file diff --git a/node_modules/tslib/CopyrightNotice.txt b/node_modules/tslib/CopyrightNotice.txt new file mode 100644 index 00000000..0e425423 --- /dev/null +++ b/node_modules/tslib/CopyrightNotice.txt @@ -0,0 +1,15 @@ +/****************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ + diff --git a/node_modules/tslib/LICENSE.txt b/node_modules/tslib/LICENSE.txt new file mode 100644 index 00000000..bfe6430c --- /dev/null +++ b/node_modules/tslib/LICENSE.txt @@ -0,0 +1,12 @@ +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. \ No newline at end of file diff --git a/node_modules/tslib/README.md b/node_modules/tslib/README.md new file mode 100644 index 00000000..290cc618 --- /dev/null +++ b/node_modules/tslib/README.md @@ -0,0 +1,164 @@ +# tslib + +This is a runtime library for [TypeScript](https://www.typescriptlang.org/) that contains all of the TypeScript helper functions. + +This library is primarily used by the `--importHelpers` flag in TypeScript. +When using `--importHelpers`, a module that uses helper functions like `__extends` and `__assign` in the following emitted file: + +```ts +var __assign = (this && this.__assign) || Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; +}; +exports.x = {}; +exports.y = __assign({}, exports.x); + +``` + +will instead be emitted as something like the following: + +```ts +var tslib_1 = require("tslib"); +exports.x = {}; +exports.y = tslib_1.__assign({}, exports.x); +``` + +Because this can avoid duplicate declarations of things like `__extends`, `__assign`, etc., this means delivering users smaller files on average, as well as less runtime overhead. +For optimized bundles with TypeScript, you should absolutely consider using `tslib` and `--importHelpers`. + +# Installing + +For the latest stable version, run: + +## npm + +```sh +# TypeScript 3.9.2 or later +npm install tslib + +# TypeScript 3.8.4 or earlier +npm install tslib@^1 + +# TypeScript 2.3.2 or earlier +npm install tslib@1.6.1 +``` + +## yarn + +```sh +# TypeScript 3.9.2 or later +yarn add tslib + +# TypeScript 3.8.4 or earlier +yarn add tslib@^1 + +# TypeScript 2.3.2 or earlier +yarn add tslib@1.6.1 +``` + +## bower + +```sh +# TypeScript 3.9.2 or later +bower install tslib + +# TypeScript 3.8.4 or earlier +bower install tslib@^1 + +# TypeScript 2.3.2 or earlier +bower install tslib@1.6.1 +``` + +## JSPM + +```sh +# TypeScript 3.9.2 or later +jspm install tslib + +# TypeScript 3.8.4 or earlier +jspm install tslib@^1 + +# TypeScript 2.3.2 or earlier +jspm install tslib@1.6.1 +``` + +# Usage + +Set the `importHelpers` compiler option on the command line: + +``` +tsc --importHelpers file.ts +``` + +or in your tsconfig.json: + +```json +{ + "compilerOptions": { + "importHelpers": true + } +} +``` + +#### For bower and JSPM users + +You will need to add a `paths` mapping for `tslib`, e.g. For Bower users: + +```json +{ + "compilerOptions": { + "module": "amd", + "importHelpers": true, + "baseUrl": "./", + "paths": { + "tslib" : ["bower_components/tslib/tslib.d.ts"] + } + } +} +``` + +For JSPM users: + +```json +{ + "compilerOptions": { + "module": "system", + "importHelpers": true, + "baseUrl": "./", + "paths": { + "tslib" : ["jspm_packages/npm/tslib@2.x.y/tslib.d.ts"] + } + } +} +``` + +## Deployment + +- Choose your new version number +- Set it in `package.json` and `bower.json` +- Create a tag: `git tag [version]` +- Push the tag: `git push --tags` +- Create a [release in GitHub](https://github.com/microsoft/tslib/releases) +- Run the [publish to npm](https://github.com/microsoft/tslib/actions?query=workflow%3A%22Publish+to+NPM%22) workflow + +Done. + +# Contribute + +There are many ways to [contribute](https://github.com/Microsoft/TypeScript/blob/master/CONTRIBUTING.md) to TypeScript. + +* [Submit bugs](https://github.com/Microsoft/TypeScript/issues) and help us verify fixes as they are checked in. +* Review the [source code changes](https://github.com/Microsoft/TypeScript/pulls). +* Engage with other TypeScript users and developers on [StackOverflow](http://stackoverflow.com/questions/tagged/typescript). +* Join the [#typescript](http://twitter.com/#!/search/realtime/%23typescript) discussion on Twitter. +* [Contribute bug fixes](https://github.com/Microsoft/TypeScript/blob/master/CONTRIBUTING.md). + +# Documentation + +* [Quick tutorial](http://www.typescriptlang.org/Tutorial) +* [Programming handbook](http://www.typescriptlang.org/Handbook) +* [Homepage](http://www.typescriptlang.org/) diff --git a/node_modules/tslib/SECURITY.md b/node_modules/tslib/SECURITY.md new file mode 100644 index 00000000..869fdfe2 --- /dev/null +++ b/node_modules/tslib/SECURITY.md @@ -0,0 +1,41 @@ + + +## Security + +Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/). + +If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/opensource/security/definition), please report it to us as described below. + +## Reporting Security Issues + +**Please do not report security vulnerabilities through public GitHub issues.** + +Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). + +If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey). + +You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). + +Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue: + + * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) + * Full paths of source file(s) related to the manifestation of the issue + * The location of the affected source code (tag/branch/commit or direct URL) + * Any special configuration required to reproduce the issue + * Step-by-step instructions to reproduce the issue + * Proof-of-concept or exploit code (if possible) + * Impact of the issue, including how an attacker might exploit the issue + +This information will help us triage your report more quickly. + +If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) page for more details about our active programs. + +## Preferred Languages + +We prefer all communications to be in English. + +## Policy + +Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd). + + diff --git a/node_modules/tslib/modules/index.d.ts b/node_modules/tslib/modules/index.d.ts new file mode 100644 index 00000000..3244fabe --- /dev/null +++ b/node_modules/tslib/modules/index.d.ts @@ -0,0 +1,38 @@ +// Note: named reexports are used instead of `export *` because +// TypeScript itself doesn't resolve the `export *` when checking +// if a particular helper exists. +export { + __extends, + __assign, + __rest, + __decorate, + __param, + __esDecorate, + __runInitializers, + __propKey, + __setFunctionName, + __metadata, + __awaiter, + __generator, + __exportStar, + __values, + __read, + __spread, + __spreadArrays, + __spreadArray, + __await, + __asyncGenerator, + __asyncDelegator, + __asyncValues, + __makeTemplateObject, + __importStar, + __importDefault, + __classPrivateFieldGet, + __classPrivateFieldSet, + __classPrivateFieldIn, + __createBinding, + __addDisposableResource, + __disposeResources, + __rewriteRelativeImportExtension, +} from '../tslib.js'; +export * as default from '../tslib.js'; diff --git a/node_modules/tslib/modules/index.js b/node_modules/tslib/modules/index.js new file mode 100644 index 00000000..c91f6186 --- /dev/null +++ b/node_modules/tslib/modules/index.js @@ -0,0 +1,70 @@ +import tslib from '../tslib.js'; +const { + __extends, + __assign, + __rest, + __decorate, + __param, + __esDecorate, + __runInitializers, + __propKey, + __setFunctionName, + __metadata, + __awaiter, + __generator, + __exportStar, + __createBinding, + __values, + __read, + __spread, + __spreadArrays, + __spreadArray, + __await, + __asyncGenerator, + __asyncDelegator, + __asyncValues, + __makeTemplateObject, + __importStar, + __importDefault, + __classPrivateFieldGet, + __classPrivateFieldSet, + __classPrivateFieldIn, + __addDisposableResource, + __disposeResources, + __rewriteRelativeImportExtension, +} = tslib; +export { + __extends, + __assign, + __rest, + __decorate, + __param, + __esDecorate, + __runInitializers, + __propKey, + __setFunctionName, + __metadata, + __awaiter, + __generator, + __exportStar, + __createBinding, + __values, + __read, + __spread, + __spreadArrays, + __spreadArray, + __await, + __asyncGenerator, + __asyncDelegator, + __asyncValues, + __makeTemplateObject, + __importStar, + __importDefault, + __classPrivateFieldGet, + __classPrivateFieldSet, + __classPrivateFieldIn, + __addDisposableResource, + __disposeResources, + __rewriteRelativeImportExtension, +}; +export default tslib; diff --git a/node_modules/tslib/modules/package.json b/node_modules/tslib/modules/package.json new file mode 100644 index 00000000..aafa0e4b --- /dev/null +++ b/node_modules/tslib/modules/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} \ No newline at end of file diff --git a/node_modules/tslib/package.json b/node_modules/tslib/package.json new file mode 100644 index 00000000..57d05787 --- /dev/null +++ b/node_modules/tslib/package.json @@ -0,0 +1,47 @@ +{ + "name": "tslib", + "author": "Microsoft Corp.", + "homepage": "https://www.typescriptlang.org/", + "version": "2.8.1", + "license": "0BSD", + "description": "Runtime library for TypeScript helper functions", + "keywords": [ + "TypeScript", + "Microsoft", + "compiler", + "language", + "javascript", + "tslib", + "runtime" + ], + "bugs": { + "url": "https://github.com/Microsoft/TypeScript/issues" + }, + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/tslib.git" + }, + "main": "tslib.js", + "module": "tslib.es6.js", + "jsnext:main": "tslib.es6.js", + "typings": "tslib.d.ts", + "sideEffects": false, + "exports": { + ".": { + "module": { + "types": "./modules/index.d.ts", + "default": "./tslib.es6.mjs" + }, + "import": { + "node": "./modules/index.js", + "default": { + "types": "./modules/index.d.ts", + "default": "./tslib.es6.mjs" + } + }, + "default": "./tslib.js" + }, + "./*": "./*", + "./": "./" + } +} diff --git a/node_modules/tslib/tslib.d.ts b/node_modules/tslib/tslib.d.ts new file mode 100644 index 00000000..f23df559 --- /dev/null +++ b/node_modules/tslib/tslib.d.ts @@ -0,0 +1,460 @@ +/****************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ + +/** + * Used to shim class extends. + * + * @param d The derived class. + * @param b The base class. + */ +export declare function __extends(d: Function, b: Function): void; + +/** + * Copy the values of all of the enumerable own properties from one or more source objects to a + * target object. Returns the target object. + * + * @param t The target object to copy to. + * @param sources One or more source objects from which to copy properties + */ +export declare function __assign(t: any, ...sources: any[]): any; + +/** + * Performs a rest spread on an object. + * + * @param t The source value. + * @param propertyNames The property names excluded from the rest spread. + */ +export declare function __rest(t: any, propertyNames: (string | symbol)[]): any; + +/** + * Applies decorators to a target object + * + * @param decorators The set of decorators to apply. + * @param target The target object. + * @param key If specified, the own property to apply the decorators to. + * @param desc The property descriptor, defaults to fetching the descriptor from the target object. + * @experimental + */ +export declare function __decorate(decorators: Function[], target: any, key?: string | symbol, desc?: any): any; + +/** + * Creates an observing function decorator from a parameter decorator. + * + * @param paramIndex The parameter index to apply the decorator to. + * @param decorator The parameter decorator to apply. Note that the return value is ignored. + * @experimental + */ +export declare function __param(paramIndex: number, decorator: Function): Function; + +/** + * Applies decorators to a class or class member, following the native ECMAScript decorator specification. + * @param ctor For non-field class members, the class constructor. Otherwise, `null`. + * @param descriptorIn The `PropertyDescriptor` to use when unable to look up the property from `ctor`. + * @param decorators The decorators to apply + * @param contextIn The `DecoratorContext` to clone for each decorator application. + * @param initializers An array of field initializer mutation functions into which new initializers are written. + * @param extraInitializers An array of extra initializer functions into which new initializers are written. + */ +export declare function __esDecorate(ctor: Function | null, descriptorIn: object | null, decorators: Function[], contextIn: object, initializers: Function[] | null, extraInitializers: Function[]): void; + +/** + * Runs field initializers or extra initializers generated by `__esDecorate`. + * @param thisArg The `this` argument to use. + * @param initializers The array of initializers to evaluate. + * @param value The initial value to pass to the initializers. + */ +export declare function __runInitializers(thisArg: unknown, initializers: Function[], value?: any): any; + +/** + * Converts a computed property name into a `string` or `symbol` value. + */ +export declare function __propKey(x: any): string | symbol; + +/** + * Assigns the name of a function derived from the left-hand side of an assignment. + * @param f The function to rename. + * @param name The new name for the function. + * @param prefix A prefix (such as `"get"` or `"set"`) to insert before the name. + */ +export declare function __setFunctionName(f: Function, name: string | symbol, prefix?: string): Function; + +/** + * Creates a decorator that sets metadata. + * + * @param metadataKey The metadata key + * @param metadataValue The metadata value + * @experimental + */ +export declare function __metadata(metadataKey: any, metadataValue: any): Function; + +/** + * Converts a generator function into a pseudo-async function, by treating each `yield` as an `await`. + * + * @param thisArg The reference to use as the `this` value in the generator function + * @param _arguments The optional arguments array + * @param P The optional promise constructor argument, defaults to the `Promise` property of the global object. + * @param generator The generator function + */ +export declare function __awaiter(thisArg: any, _arguments: any, P: Function, generator: Function): any; + +/** + * Creates an Iterator object using the body as the implementation. + * + * @param thisArg The reference to use as the `this` value in the function + * @param body The generator state-machine based implementation. + * + * @see [./docs/generator.md] + */ +export declare function __generator(thisArg: any, body: Function): any; + +/** + * Creates bindings for all enumerable properties of `m` on `exports` + * + * @param m The source object + * @param o The `exports` object. + */ +export declare function __exportStar(m: any, o: any): void; + +/** + * Creates a value iterator from an `Iterable` or `ArrayLike` object. + * + * @param o The object. + * @throws {TypeError} If `o` is neither `Iterable`, nor an `ArrayLike`. + */ +export declare function __values(o: any): any; + +/** + * Reads values from an `Iterable` or `ArrayLike` object and returns the resulting array. + * + * @param o The object to read from. + * @param n The maximum number of arguments to read, defaults to `Infinity`. + */ +export declare function __read(o: any, n?: number): any[]; + +/** + * Creates an array from iterable spread. + * + * @param args The Iterable objects to spread. + * @deprecated since TypeScript 4.2 - Use `__spreadArray` + */ +export declare function __spread(...args: any[][]): any[]; + +/** + * Creates an array from array spread. + * + * @param args The ArrayLikes to spread into the resulting array. + * @deprecated since TypeScript 4.2 - Use `__spreadArray` + */ +export declare function __spreadArrays(...args: any[][]): any[]; + +/** + * Spreads the `from` array into the `to` array. + * + * @param pack Replace empty elements with `undefined`. + */ +export declare function __spreadArray(to: any[], from: any[], pack?: boolean): any[]; + +/** + * Creates an object that signals to `__asyncGenerator` that it shouldn't be yielded, + * and instead should be awaited and the resulting value passed back to the generator. + * + * @param v The value to await. + */ +export declare function __await(v: any): any; + +/** + * Converts a generator function into an async generator function, by using `yield __await` + * in place of normal `await`. + * + * @param thisArg The reference to use as the `this` value in the generator function + * @param _arguments The optional arguments array + * @param generator The generator function + */ +export declare function __asyncGenerator(thisArg: any, _arguments: any, generator: Function): any; + +/** + * Used to wrap a potentially async iterator in such a way so that it wraps the result + * of calling iterator methods of `o` in `__await` instances, and then yields the awaited values. + * + * @param o The potentially async iterator. + * @returns A synchronous iterator yielding `__await` instances on every odd invocation + * and returning the awaited `IteratorResult` passed to `next` every even invocation. + */ +export declare function __asyncDelegator(o: any): any; + +/** + * Creates a value async iterator from an `AsyncIterable`, `Iterable` or `ArrayLike` object. + * + * @param o The object. + * @throws {TypeError} If `o` is neither `AsyncIterable`, `Iterable`, nor an `ArrayLike`. + */ +export declare function __asyncValues(o: any): any; + +/** + * Creates a `TemplateStringsArray` frozen object from the `cooked` and `raw` arrays. + * + * @param cooked The cooked possibly-sparse array. + * @param raw The raw string content. + */ +export declare function __makeTemplateObject(cooked: string[], raw: string[]): TemplateStringsArray; + +/** + * Used to shim default and named imports in ECMAScript Modules transpiled to CommonJS. + * + * ```js + * import Default, { Named, Other } from "mod"; + * // or + * import { default as Default, Named, Other } from "mod"; + * ``` + * + * @param mod The CommonJS module exports object. + */ +export declare function __importStar(mod: T): T; + +/** + * Used to shim default imports in ECMAScript Modules transpiled to CommonJS. + * + * ```js + * import Default from "mod"; + * ``` + * + * @param mod The CommonJS module exports object. + */ +export declare function __importDefault(mod: T): T | { default: T }; + +/** + * Emulates reading a private instance field. + * + * @param receiver The instance from which to read the private field. + * @param state A WeakMap containing the private field value for an instance. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * + * @throws {TypeError} If `state` doesn't have an entry for `receiver`. + */ +export declare function __classPrivateFieldGet( + receiver: T, + state: { has(o: T): boolean, get(o: T): V | undefined }, + kind?: "f" +): V; + +/** + * Emulates reading a private static field. + * + * @param receiver The object from which to read the private static field. + * @param state The class constructor containing the definition of the static field. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * @param f The descriptor that holds the static field value. + * + * @throws {TypeError} If `receiver` is not `state`. + */ +export declare function __classPrivateFieldGet unknown, V>( + receiver: T, + state: T, + kind: "f", + f: { value: V } +): V; + +/** + * Emulates evaluating a private instance "get" accessor. + * + * @param receiver The instance on which to evaluate the private "get" accessor. + * @param state A WeakSet used to verify an instance supports the private "get" accessor. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * @param f The "get" accessor function to evaluate. + * + * @throws {TypeError} If `state` doesn't have an entry for `receiver`. + */ +export declare function __classPrivateFieldGet( + receiver: T, + state: { has(o: T): boolean }, + kind: "a", + f: () => V +): V; + +/** + * Emulates evaluating a private static "get" accessor. + * + * @param receiver The object on which to evaluate the private static "get" accessor. + * @param state The class constructor containing the definition of the static "get" accessor. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * @param f The "get" accessor function to evaluate. + * + * @throws {TypeError} If `receiver` is not `state`. + */ +export declare function __classPrivateFieldGet unknown, V>( + receiver: T, + state: T, + kind: "a", + f: () => V +): V; + +/** + * Emulates reading a private instance method. + * + * @param receiver The instance from which to read a private method. + * @param state A WeakSet used to verify an instance supports the private method. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * @param f The function to return as the private instance method. + * + * @throws {TypeError} If `state` doesn't have an entry for `receiver`. + */ +export declare function __classPrivateFieldGet unknown>( + receiver: T, + state: { has(o: T): boolean }, + kind: "m", + f: V +): V; + +/** + * Emulates reading a private static method. + * + * @param receiver The object from which to read the private static method. + * @param state The class constructor containing the definition of the static method. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * @param f The function to return as the private static method. + * + * @throws {TypeError} If `receiver` is not `state`. + */ +export declare function __classPrivateFieldGet unknown, V extends (...args: any[]) => unknown>( + receiver: T, + state: T, + kind: "m", + f: V +): V; + +/** + * Emulates writing to a private instance field. + * + * @param receiver The instance on which to set a private field value. + * @param state A WeakMap used to store the private field value for an instance. + * @param value The value to store in the private field. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * + * @throws {TypeError} If `state` doesn't have an entry for `receiver`. + */ +export declare function __classPrivateFieldSet( + receiver: T, + state: { has(o: T): boolean, set(o: T, value: V): unknown }, + value: V, + kind?: "f" +): V; + +/** + * Emulates writing to a private static field. + * + * @param receiver The object on which to set the private static field. + * @param state The class constructor containing the definition of the private static field. + * @param value The value to store in the private field. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * @param f The descriptor that holds the static field value. + * + * @throws {TypeError} If `receiver` is not `state`. + */ +export declare function __classPrivateFieldSet unknown, V>( + receiver: T, + state: T, + value: V, + kind: "f", + f: { value: V } +): V; + +/** + * Emulates writing to a private instance "set" accessor. + * + * @param receiver The instance on which to evaluate the private instance "set" accessor. + * @param state A WeakSet used to verify an instance supports the private "set" accessor. + * @param value The value to store in the private accessor. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * @param f The "set" accessor function to evaluate. + * + * @throws {TypeError} If `state` doesn't have an entry for `receiver`. + */ +export declare function __classPrivateFieldSet( + receiver: T, + state: { has(o: T): boolean }, + value: V, + kind: "a", + f: (v: V) => void +): V; + +/** + * Emulates writing to a private static "set" accessor. + * + * @param receiver The object on which to evaluate the private static "set" accessor. + * @param state The class constructor containing the definition of the static "set" accessor. + * @param value The value to store in the private field. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * @param f The "set" accessor function to evaluate. + * + * @throws {TypeError} If `receiver` is not `state`. + */ +export declare function __classPrivateFieldSet unknown, V>( + receiver: T, + state: T, + value: V, + kind: "a", + f: (v: V) => void +): V; + +/** + * Checks for the existence of a private field/method/accessor. + * + * @param state The class constructor containing the static member, or the WeakMap or WeakSet associated with a private instance member. + * @param receiver The object for which to test the presence of the private member. + */ +export declare function __classPrivateFieldIn( + state: (new (...args: any[]) => unknown) | { has(o: any): boolean }, + receiver: unknown, +): boolean; + +/** + * Creates a re-export binding on `object` with key `objectKey` that references `target[key]`. + * + * @param object The local `exports` object. + * @param target The object to re-export from. + * @param key The property key of `target` to re-export. + * @param objectKey The property key to re-export as. Defaults to `key`. + */ +export declare function __createBinding(object: object, target: object, key: PropertyKey, objectKey?: PropertyKey): void; + +/** + * Adds a disposable resource to a resource-tracking environment object. + * @param env A resource-tracking environment object. + * @param value Either a Disposable or AsyncDisposable object, `null`, or `undefined`. + * @param async When `true`, `AsyncDisposable` resources can be added. When `false`, `AsyncDisposable` resources cannot be added. + * @returns The {@link value} argument. + * + * @throws {TypeError} If {@link value} is not an object, or if either `Symbol.dispose` or `Symbol.asyncDispose` are not + * defined, or if {@link value} does not have an appropriate `Symbol.dispose` or `Symbol.asyncDispose` method. + */ +export declare function __addDisposableResource(env: { stack: { value?: unknown, dispose?: Function, async: boolean }[]; error: unknown; hasError: boolean; }, value: T, async: boolean): T; + +/** + * Disposes all resources in a resource-tracking environment object. + * @param env A resource-tracking environment object. + * @returns A {@link Promise} if any resources in the environment were marked as `async` when added; otherwise, `void`. + * + * @throws {SuppressedError} if an error thrown during disposal would have suppressed a prior error from disposal or the + * error recorded in the resource-tracking environment object. + * @seealso {@link __addDisposableResource} + */ +export declare function __disposeResources(env: { stack: { value?: unknown, dispose?: Function, async: boolean }[]; error: unknown; hasError: boolean; }): any; + +/** + * Transforms a relative import specifier ending in a non-declaration TypeScript file extension to its JavaScript file extension counterpart. + * @param path The import specifier. + * @param preserveJsx Causes '*.tsx' to transform to '*.jsx' instead of '*.js'. Should be true when `--jsx` is set to `preserve`. + */ +export declare function __rewriteRelativeImportExtension(path: string, preserveJsx?: boolean): string; \ No newline at end of file diff --git a/node_modules/tslib/tslib.es6.html b/node_modules/tslib/tslib.es6.html new file mode 100644 index 00000000..b122e41b --- /dev/null +++ b/node_modules/tslib/tslib.es6.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/node_modules/tslib/tslib.es6.js b/node_modules/tslib/tslib.es6.js new file mode 100644 index 00000000..6c1739b3 --- /dev/null +++ b/node_modules/tslib/tslib.es6.js @@ -0,0 +1,402 @@ +/****************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +/* global Reflect, Promise, SuppressedError, Symbol, Iterator */ + +var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); +}; + +export function __extends(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +} + +export var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + } + return __assign.apply(this, arguments); +} + +export function __rest(s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; +} + +export function __decorate(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + 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; + return c > 3 && r && Object.defineProperty(target, key, r), r; +} + +export function __param(paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } +} + +export function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { + function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; } + var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; + var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; + var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); + var _, done = false; + for (var i = decorators.length - 1; i >= 0; i--) { + var context = {}; + for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p]; + for (var p in contextIn.access) context.access[p] = contextIn.access[p]; + context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); }; + var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context); + if (kind === "accessor") { + if (result === void 0) continue; + if (result === null || typeof result !== "object") throw new TypeError("Object expected"); + if (_ = accept(result.get)) descriptor.get = _; + if (_ = accept(result.set)) descriptor.set = _; + if (_ = accept(result.init)) initializers.unshift(_); + } + else if (_ = accept(result)) { + if (kind === "field") initializers.unshift(_); + else descriptor[key] = _; + } + } + if (target) Object.defineProperty(target, contextIn.name, descriptor); + done = true; +}; + +export function __runInitializers(thisArg, initializers, value) { + var useValue = arguments.length > 2; + for (var i = 0; i < initializers.length; i++) { + value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); + } + return useValue ? value : void 0; +}; + +export function __propKey(x) { + return typeof x === "symbol" ? x : "".concat(x); +}; + +export function __setFunctionName(f, name, prefix) { + if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; + return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); +}; + +export function __metadata(metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); +} + +export function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} + +export function __generator(thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype); + return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (g && (g = 0, op[0] && (_ = 0)), _) try { + 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; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +} + +export var __createBinding = Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +}); + +export function __exportStar(m, o) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p); +} + +export function __values(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +} + +export function __read(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; +} + +/** @deprecated */ +export function __spread() { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; +} + +/** @deprecated */ +export function __spreadArrays() { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; +} + +export function __spreadArray(to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +} + +export function __await(v) { + return this instanceof __await ? (this.v = v, this) : new __await(v); +} + +export function __asyncGenerator(thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i; + function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; } + function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } } + function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function fulfill(value) { resume("next", value); } + function reject(value) { resume("throw", value); } + function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } +} + +export function __asyncDelegator(o) { + var i, p; + return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; + function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; } +} + +export function __asyncValues(o) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + 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); + 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); }); }; } + function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } +} + +export function __makeTemplateObject(cooked, raw) { + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } + return cooked; +}; + +var __setModuleDefault = Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}; + +var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); +}; + +export function __importStar(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; +} + +export function __importDefault(mod) { + return (mod && mod.__esModule) ? mod : { default: mod }; +} + +export function __classPrivateFieldGet(receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + 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"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); +} + +export function __classPrivateFieldSet(receiver, state, value, kind, f) { + if (kind === "m") throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); + 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"); + return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; +} + +export function __classPrivateFieldIn(state, receiver) { + if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function")) throw new TypeError("Cannot use 'in' operator on non-object"); + return typeof state === "function" ? receiver === state : state.has(receiver); +} + +export function __addDisposableResource(env, value, async) { + if (value !== null && value !== void 0) { + if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected."); + var dispose, inner; + if (async) { + if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined."); + dispose = value[Symbol.asyncDispose]; + } + if (dispose === void 0) { + if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined."); + dispose = value[Symbol.dispose]; + if (async) inner = dispose; + } + if (typeof dispose !== "function") throw new TypeError("Object not disposable."); + if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } }; + env.stack.push({ value: value, dispose: dispose, async: async }); + } + else if (async) { + env.stack.push({ async: true }); + } + return value; + +} + +var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { + var e = new Error(message); + return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; +}; + +export function __disposeResources(env) { + function fail(e) { + env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e; + env.hasError = true; + } + var r, s = 0; + function next() { + while (r = env.stack.pop()) { + try { + if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next); + if (r.dispose) { + var result = r.dispose.call(r.value); + if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); }); + } + else s |= 1; + } + catch (e) { + fail(e); + } + } + if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve(); + if (env.hasError) throw env.error; + } + return next(); +} + +export function __rewriteRelativeImportExtension(path, preserveJsx) { + if (typeof path === "string" && /^\.\.?\//.test(path)) { + return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) { + return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js"); + }); + } + return path; +} + +export default { + __extends: __extends, + __assign: __assign, + __rest: __rest, + __decorate: __decorate, + __param: __param, + __esDecorate: __esDecorate, + __runInitializers: __runInitializers, + __propKey: __propKey, + __setFunctionName: __setFunctionName, + __metadata: __metadata, + __awaiter: __awaiter, + __generator: __generator, + __createBinding: __createBinding, + __exportStar: __exportStar, + __values: __values, + __read: __read, + __spread: __spread, + __spreadArrays: __spreadArrays, + __spreadArray: __spreadArray, + __await: __await, + __asyncGenerator: __asyncGenerator, + __asyncDelegator: __asyncDelegator, + __asyncValues: __asyncValues, + __makeTemplateObject: __makeTemplateObject, + __importStar: __importStar, + __importDefault: __importDefault, + __classPrivateFieldGet: __classPrivateFieldGet, + __classPrivateFieldSet: __classPrivateFieldSet, + __classPrivateFieldIn: __classPrivateFieldIn, + __addDisposableResource: __addDisposableResource, + __disposeResources: __disposeResources, + __rewriteRelativeImportExtension: __rewriteRelativeImportExtension, +}; diff --git a/node_modules/tslib/tslib.es6.mjs b/node_modules/tslib/tslib.es6.mjs new file mode 100644 index 00000000..c17990a1 --- /dev/null +++ b/node_modules/tslib/tslib.es6.mjs @@ -0,0 +1,401 @@ +/****************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +/* global Reflect, Promise, SuppressedError, Symbol, Iterator */ + +var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); +}; + +export function __extends(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +} + +export var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + } + return __assign.apply(this, arguments); +} + +export function __rest(s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; +} + +export function __decorate(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + 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; + return c > 3 && r && Object.defineProperty(target, key, r), r; +} + +export function __param(paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } +} + +export function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { + function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; } + var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; + var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; + var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); + var _, done = false; + for (var i = decorators.length - 1; i >= 0; i--) { + var context = {}; + for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p]; + for (var p in contextIn.access) context.access[p] = contextIn.access[p]; + context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); }; + var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context); + if (kind === "accessor") { + if (result === void 0) continue; + if (result === null || typeof result !== "object") throw new TypeError("Object expected"); + if (_ = accept(result.get)) descriptor.get = _; + if (_ = accept(result.set)) descriptor.set = _; + if (_ = accept(result.init)) initializers.unshift(_); + } + else if (_ = accept(result)) { + if (kind === "field") initializers.unshift(_); + else descriptor[key] = _; + } + } + if (target) Object.defineProperty(target, contextIn.name, descriptor); + done = true; +}; + +export function __runInitializers(thisArg, initializers, value) { + var useValue = arguments.length > 2; + for (var i = 0; i < initializers.length; i++) { + value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); + } + return useValue ? value : void 0; +}; + +export function __propKey(x) { + return typeof x === "symbol" ? x : "".concat(x); +}; + +export function __setFunctionName(f, name, prefix) { + if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; + return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); +}; + +export function __metadata(metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); +} + +export function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} + +export function __generator(thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype); + return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (g && (g = 0, op[0] && (_ = 0)), _) try { + 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; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +} + +export var __createBinding = Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +}); + +export function __exportStar(m, o) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p); +} + +export function __values(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +} + +export function __read(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; +} + +/** @deprecated */ +export function __spread() { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; +} + +/** @deprecated */ +export function __spreadArrays() { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; +} + +export function __spreadArray(to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +} + +export function __await(v) { + return this instanceof __await ? (this.v = v, this) : new __await(v); +} + +export function __asyncGenerator(thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i; + function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; } + function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } } + function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function fulfill(value) { resume("next", value); } + function reject(value) { resume("throw", value); } + function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } +} + +export function __asyncDelegator(o) { + var i, p; + return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; + function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; } +} + +export function __asyncValues(o) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + 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); + 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); }); }; } + function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } +} + +export function __makeTemplateObject(cooked, raw) { + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } + return cooked; +}; + +var __setModuleDefault = Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}; + +var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); +}; + +export function __importStar(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; +} + +export function __importDefault(mod) { + return (mod && mod.__esModule) ? mod : { default: mod }; +} + +export function __classPrivateFieldGet(receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + 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"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); +} + +export function __classPrivateFieldSet(receiver, state, value, kind, f) { + if (kind === "m") throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); + 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"); + return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; +} + +export function __classPrivateFieldIn(state, receiver) { + if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function")) throw new TypeError("Cannot use 'in' operator on non-object"); + return typeof state === "function" ? receiver === state : state.has(receiver); +} + +export function __addDisposableResource(env, value, async) { + if (value !== null && value !== void 0) { + if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected."); + var dispose, inner; + if (async) { + if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined."); + dispose = value[Symbol.asyncDispose]; + } + if (dispose === void 0) { + if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined."); + dispose = value[Symbol.dispose]; + if (async) inner = dispose; + } + if (typeof dispose !== "function") throw new TypeError("Object not disposable."); + if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } }; + env.stack.push({ value: value, dispose: dispose, async: async }); + } + else if (async) { + env.stack.push({ async: true }); + } + return value; +} + +var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { + var e = new Error(message); + return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; +}; + +export function __disposeResources(env) { + function fail(e) { + env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e; + env.hasError = true; + } + var r, s = 0; + function next() { + while (r = env.stack.pop()) { + try { + if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next); + if (r.dispose) { + var result = r.dispose.call(r.value); + if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); }); + } + else s |= 1; + } + catch (e) { + fail(e); + } + } + if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve(); + if (env.hasError) throw env.error; + } + return next(); +} + +export function __rewriteRelativeImportExtension(path, preserveJsx) { + if (typeof path === "string" && /^\.\.?\//.test(path)) { + return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) { + return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js"); + }); + } + return path; +} + +export default { + __extends, + __assign, + __rest, + __decorate, + __param, + __esDecorate, + __runInitializers, + __propKey, + __setFunctionName, + __metadata, + __awaiter, + __generator, + __createBinding, + __exportStar, + __values, + __read, + __spread, + __spreadArrays, + __spreadArray, + __await, + __asyncGenerator, + __asyncDelegator, + __asyncValues, + __makeTemplateObject, + __importStar, + __importDefault, + __classPrivateFieldGet, + __classPrivateFieldSet, + __classPrivateFieldIn, + __addDisposableResource, + __disposeResources, + __rewriteRelativeImportExtension, +}; diff --git a/node_modules/tslib/tslib.html b/node_modules/tslib/tslib.html new file mode 100644 index 00000000..44c9ba51 --- /dev/null +++ b/node_modules/tslib/tslib.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/node_modules/tslib/tslib.js b/node_modules/tslib/tslib.js new file mode 100644 index 00000000..5e12ace6 --- /dev/null +++ b/node_modules/tslib/tslib.js @@ -0,0 +1,484 @@ +/****************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +/* global global, define, Symbol, Reflect, Promise, SuppressedError, Iterator */ +var __extends; +var __assign; +var __rest; +var __decorate; +var __param; +var __esDecorate; +var __runInitializers; +var __propKey; +var __setFunctionName; +var __metadata; +var __awaiter; +var __generator; +var __exportStar; +var __values; +var __read; +var __spread; +var __spreadArrays; +var __spreadArray; +var __await; +var __asyncGenerator; +var __asyncDelegator; +var __asyncValues; +var __makeTemplateObject; +var __importStar; +var __importDefault; +var __classPrivateFieldGet; +var __classPrivateFieldSet; +var __classPrivateFieldIn; +var __createBinding; +var __addDisposableResource; +var __disposeResources; +var __rewriteRelativeImportExtension; +(function (factory) { + var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {}; + if (typeof define === "function" && define.amd) { + define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); }); + } + else if (typeof module === "object" && typeof module.exports === "object") { + factory(createExporter(root, createExporter(module.exports))); + } + else { + factory(createExporter(root)); + } + function createExporter(exports, previous) { + if (exports !== root) { + if (typeof Object.create === "function") { + Object.defineProperty(exports, "__esModule", { value: true }); + } + else { + exports.__esModule = true; + } + } + return function (id, v) { return exports[id] = previous ? previous(id, v) : v; }; + } +}) +(function (exporter) { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + + __extends = function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + + __assign = Object.assign || function (t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + + __rest = function (s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; + }; + + __decorate = function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + 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; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + + __param = function (paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } + }; + + __esDecorate = function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { + function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; } + var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; + var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; + var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); + var _, done = false; + for (var i = decorators.length - 1; i >= 0; i--) { + var context = {}; + for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p]; + for (var p in contextIn.access) context.access[p] = contextIn.access[p]; + context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); }; + var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context); + if (kind === "accessor") { + if (result === void 0) continue; + if (result === null || typeof result !== "object") throw new TypeError("Object expected"); + if (_ = accept(result.get)) descriptor.get = _; + if (_ = accept(result.set)) descriptor.set = _; + if (_ = accept(result.init)) initializers.unshift(_); + } + else if (_ = accept(result)) { + if (kind === "field") initializers.unshift(_); + else descriptor[key] = _; + } + } + if (target) Object.defineProperty(target, contextIn.name, descriptor); + done = true; + }; + + __runInitializers = function (thisArg, initializers, value) { + var useValue = arguments.length > 2; + for (var i = 0; i < initializers.length; i++) { + value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); + } + return useValue ? value : void 0; + }; + + __propKey = function (x) { + return typeof x === "symbol" ? x : "".concat(x); + }; + + __setFunctionName = function (f, name, prefix) { + if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; + return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); + }; + + __metadata = function (metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); + }; + + __awaiter = function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + + __generator = function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype); + return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (g && (g = 0, op[0] && (_ = 0)), _) try { + 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; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } + }; + + __exportStar = function(m, o) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p); + }; + + __createBinding = Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); + }) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; + }); + + __values = function (o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); + }; + + __read = function (o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; + }; + + /** @deprecated */ + __spread = function () { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; + }; + + /** @deprecated */ + __spreadArrays = function () { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; + }; + + __spreadArray = function (to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); + }; + + __await = function (v) { + return this instanceof __await ? (this.v = v, this) : new __await(v); + }; + + __asyncGenerator = function (thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i; + function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; } + function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } } + function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function fulfill(value) { resume("next", value); } + function reject(value) { resume("throw", value); } + function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } + }; + + __asyncDelegator = function (o) { + var i, p; + return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; + function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; } + }; + + __asyncValues = function (o) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + 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); + 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); }); }; } + function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } + }; + + __makeTemplateObject = function (cooked, raw) { + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } + return cooked; + }; + + var __setModuleDefault = Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + }) : function(o, v) { + o["default"] = v; + }; + + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + + __importStar = function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; + }; + + __importDefault = function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; + }; + + __classPrivateFieldGet = function (receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + 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"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); + }; + + __classPrivateFieldSet = function (receiver, state, value, kind, f) { + if (kind === "m") throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); + 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"); + return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; + }; + + __classPrivateFieldIn = function (state, receiver) { + if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function")) throw new TypeError("Cannot use 'in' operator on non-object"); + return typeof state === "function" ? receiver === state : state.has(receiver); + }; + + __addDisposableResource = function (env, value, async) { + if (value !== null && value !== void 0) { + if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected."); + var dispose, inner; + if (async) { + if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined."); + dispose = value[Symbol.asyncDispose]; + } + if (dispose === void 0) { + if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined."); + dispose = value[Symbol.dispose]; + if (async) inner = dispose; + } + if (typeof dispose !== "function") throw new TypeError("Object not disposable."); + if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } }; + env.stack.push({ value: value, dispose: dispose, async: async }); + } + else if (async) { + env.stack.push({ async: true }); + } + return value; + }; + + var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { + var e = new Error(message); + return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; + }; + + __disposeResources = function (env) { + function fail(e) { + env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e; + env.hasError = true; + } + var r, s = 0; + function next() { + while (r = env.stack.pop()) { + try { + if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next); + if (r.dispose) { + var result = r.dispose.call(r.value); + if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); }); + } + else s |= 1; + } + catch (e) { + fail(e); + } + } + if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve(); + if (env.hasError) throw env.error; + } + return next(); + }; + + __rewriteRelativeImportExtension = function (path, preserveJsx) { + if (typeof path === "string" && /^\.\.?\//.test(path)) { + return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) { + return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js"); + }); + } + return path; + }; + + exporter("__extends", __extends); + exporter("__assign", __assign); + exporter("__rest", __rest); + exporter("__decorate", __decorate); + exporter("__param", __param); + exporter("__esDecorate", __esDecorate); + exporter("__runInitializers", __runInitializers); + exporter("__propKey", __propKey); + exporter("__setFunctionName", __setFunctionName); + exporter("__metadata", __metadata); + exporter("__awaiter", __awaiter); + exporter("__generator", __generator); + exporter("__exportStar", __exportStar); + exporter("__createBinding", __createBinding); + exporter("__values", __values); + exporter("__read", __read); + exporter("__spread", __spread); + exporter("__spreadArrays", __spreadArrays); + exporter("__spreadArray", __spreadArray); + exporter("__await", __await); + exporter("__asyncGenerator", __asyncGenerator); + exporter("__asyncDelegator", __asyncDelegator); + exporter("__asyncValues", __asyncValues); + exporter("__makeTemplateObject", __makeTemplateObject); + exporter("__importStar", __importStar); + exporter("__importDefault", __importDefault); + exporter("__classPrivateFieldGet", __classPrivateFieldGet); + exporter("__classPrivateFieldSet", __classPrivateFieldSet); + exporter("__classPrivateFieldIn", __classPrivateFieldIn); + exporter("__addDisposableResource", __addDisposableResource); + exporter("__disposeResources", __disposeResources); + exporter("__rewriteRelativeImportExtension", __rewriteRelativeImportExtension); +}); + +0 && (module.exports = { + __extends: __extends, + __assign: __assign, + __rest: __rest, + __decorate: __decorate, + __param: __param, + __esDecorate: __esDecorate, + __runInitializers: __runInitializers, + __propKey: __propKey, + __setFunctionName: __setFunctionName, + __metadata: __metadata, + __awaiter: __awaiter, + __generator: __generator, + __exportStar: __exportStar, + __createBinding: __createBinding, + __values: __values, + __read: __read, + __spread: __spread, + __spreadArrays: __spreadArrays, + __spreadArray: __spreadArray, + __await: __await, + __asyncGenerator: __asyncGenerator, + __asyncDelegator: __asyncDelegator, + __asyncValues: __asyncValues, + __makeTemplateObject: __makeTemplateObject, + __importStar: __importStar, + __importDefault: __importDefault, + __classPrivateFieldGet: __classPrivateFieldGet, + __classPrivateFieldSet: __classPrivateFieldSet, + __classPrivateFieldIn: __classPrivateFieldIn, + __addDisposableResource: __addDisposableResource, + __disposeResources: __disposeResources, + __rewriteRelativeImportExtension: __rewriteRelativeImportExtension, +}); diff --git a/node_modules/vite/LICENSE.md b/node_modules/vite/LICENSE.md new file mode 100644 index 00000000..0aabee59 --- /dev/null +++ b/node_modules/vite/LICENSE.md @@ -0,0 +1,2230 @@ +# Vite core license +Vite is released under the MIT license: + +MIT License + +Copyright (c) 2019-present, VoidZero Inc. and Vite contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +# Licenses of bundled dependencies +The published Vite artifact additionally contains code with the following licenses: +Apache-2.0, BSD-2-Clause, CC0-1.0, ISC, MIT + +# Bundled dependencies: +## @jridgewell/gen-mapping, @jridgewell/remapping, @jridgewell/sourcemap-codec, @jridgewell/trace-mapping +License: MIT +By: Justin Ridgewell +Repositories: https://github.com/jridgewell/sourcemaps, https://github.com/jridgewell/sourcemaps, https://github.com/jridgewell/sourcemaps, https://github.com/jridgewell/sourcemaps + +> Copyright 2024 Justin Ridgewell +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +> SOFTWARE. + +--------------------------------------- + +## @jridgewell/resolve-uri +License: MIT +By: Justin Ridgewell +Repository: https://github.com/jridgewell/resolve-uri + +> Copyright 2019 Justin Ridgewell +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +> SOFTWARE. + +--------------------------------------- + +## @polka/compression +License: MIT +Repository: https://github.com/lukeed/polka + +--------------------------------------- + +## @polka/url +License: MIT +By: Luke Edwards +Repository: https://github.com/lukeed/polka + +--------------------------------------- + +## @rollup/plugin-alias, @rollup/plugin-dynamic-import-vars, @rollup/pluginutils +License: MIT +By: Johannes Stein +Repository: https://github.com/rollup/plugins + +License: MIT +By: LarsDenBakker +Repository: https://github.com/rollup/plugins + +License: MIT +By: Rich Harris +Repository: https://github.com/rollup/plugins + +> The MIT License (MIT) +> +> Copyright (c) 2019 RollupJS Plugin Contributors (https://github.com/rollup/plugins/graphs/contributors) +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + +--------------------------------------- + +## @vercel/detect-agent +License: Apache-2.0 +By: Vercel +Repository: https://github.com/vercel/vercel + +> Apache License +> Version 2.0, January 2004 +> http://www.apache.org/licenses/ +> +> TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION +> +> 1. Definitions. +> +> "License" shall mean the terms and conditions for use, reproduction, +> and distribution as defined by Sections 1 through 9 of this document. +> +> "Licensor" shall mean the copyright owner or entity authorized by +> the copyright owner that is granting the License. +> +> "Legal Entity" shall mean the union of the acting entity and all +> other entities that control, are controlled by, or are under common +> control with that entity. For the purposes of this definition, +> "control" means (i) the power, direct or indirect, to cause the +> direction or management of such entity, whether by contract or +> otherwise, or (ii) ownership of fifty percent (50%) or more of the +> outstanding shares, or (iii) beneficial ownership of such entity. +> +> "You" (or "Your") shall mean an individual or Legal Entity +> exercising permissions granted by this License. +> +> "Source" form shall mean the preferred form for making modifications, +> including but not limited to software source code, documentation +> source, and configuration files. +> +> "Object" form shall mean any form resulting from mechanical +> transformation or translation of a Source form, including but +> not limited to compiled object code, generated documentation, +> and conversions to other media types. +> +> "Work" shall mean the work of authorship, whether in Source or +> Object form, made available under the License, as indicated by a +> copyright notice that is included in or attached to the work +> (an example is provided in the Appendix below). +> +> "Derivative Works" shall mean any work, whether in Source or Object +> form, that is based on (or derived from) the Work and for which the +> editorial revisions, annotations, elaborations, or other modifications +> represent, as a whole, an original work of authorship. For the purposes +> of this License, Derivative Works shall not include works that remain +> separable from, or merely link (or bind by name) to the interfaces of, +> the Work and Derivative Works thereof. +> +> "Contribution" shall mean any work of authorship, including +> the original version of the Work and any modifications or additions +> to that Work or Derivative Works thereof, that is intentionally +> submitted to Licensor for inclusion in the Work by the copyright owner +> or by an individual or Legal Entity authorized to submit on behalf of +> the copyright owner. For the purposes of this definition, "submitted" +> means any form of electronic, verbal, or written communication sent +> to the Licensor or its representatives, including but not limited to +> communication on electronic mailing lists, source code control systems, +> and issue tracking systems that are managed by, or on behalf of, the +> Licensor for the purpose of discussing and improving the Work, but +> excluding communication that is conspicuously marked or otherwise +> designated in writing by the copyright owner as "Not a Contribution." +> +> "Contributor" shall mean Licensor and any individual or Legal Entity +> on behalf of whom a Contribution has been received by Licensor and +> subsequently incorporated within the Work. +> +> 2. Grant of Copyright License. Subject to the terms and conditions of +> this License, each Contributor hereby grants to You a perpetual, +> worldwide, non-exclusive, no-charge, royalty-free, irrevocable +> copyright license to reproduce, prepare Derivative Works of, +> publicly display, publicly perform, sublicense, and distribute the +> Work and such Derivative Works in Source or Object form. +> +> 3. Grant of Patent License. Subject to the terms and conditions of +> this License, each Contributor hereby grants to You a perpetual, +> worldwide, non-exclusive, no-charge, royalty-free, irrevocable +> (except as stated in this section) patent license to make, have made, +> use, offer to sell, sell, import, and otherwise transfer the Work, +> where such license applies only to those patent claims licensable +> by such Contributor that are necessarily infringed by their +> Contribution(s) alone or by combination of their Contribution(s) +> with the Work to which such Contribution(s) was submitted. If You +> institute patent litigation against any entity (including a +> cross-claim or counterclaim in a lawsuit) alleging that the Work +> or a Contribution incorporated within the Work constitutes direct +> or contributory patent infringement, then any patent licenses +> granted to You under this License for that Work shall terminate +> as of the date such litigation is filed. +> +> 4. Redistribution. You may reproduce and distribute copies of the +> Work or Derivative Works thereof in any medium, with or without +> modifications, and in Source or Object form, provided that You +> meet the following conditions: +> +> (a) You must give any other recipients of the Work or +> Derivative Works a copy of this License; and +> +> (b) You must cause any modified files to carry prominent notices +> stating that You changed the files; and +> +> (c) You must retain, in the Source form of any Derivative Works +> that You distribute, all copyright, patent, trademark, and +> attribution notices from the Source form of the Work, +> excluding those notices that do not pertain to any part of +> the Derivative Works; and +> +> (d) If the Work includes a "NOTICE" text file as part of its +> distribution, then any Derivative Works that You distribute must +> include a readable copy of the attribution notices contained +> within such NOTICE file, excluding those notices that do not +> pertain to any part of the Derivative Works, in at least one +> of the following places: within a NOTICE text file distributed +> as part of the Derivative Works; within the Source form or +> documentation, if provided along with the Derivative Works; or, +> within a display generated by the Derivative Works, if and +> wherever such third-party notices normally appear. The contents +> of the NOTICE file are for informational purposes only and +> do not modify the License. You may add Your own attribution +> notices within Derivative Works that You distribute, alongside +> or as an addendum to the NOTICE text from the Work, provided +> that such additional attribution notices cannot be construed +> as modifying the License. +> +> You may add Your own copyright statement to Your modifications and +> may provide additional or different license terms and conditions +> for use, reproduction, or distribution of Your modifications, or +> for any such Derivative Works as a whole, provided Your use, +> reproduction, and distribution of the Work otherwise complies with +> the conditions stated in this License. +> +> 5. Submission of Contributions. Unless You explicitly state otherwise, +> any Contribution intentionally submitted for inclusion in the Work +> by You to the Licensor shall be under the terms and conditions of +> this License, without any additional terms or conditions. +> Notwithstanding the above, nothing herein shall supersede or modify +> the terms of any separate license agreement you may have executed +> with Licensor regarding such Contributions. +> +> 6. Trademarks. This License does not grant permission to use the trade +> names, trademarks, service marks, or product names of the Licensor, +> except as required for reasonable and customary use in describing the +> origin of the Work and reproducing the content of the NOTICE file. +> +> 7. Disclaimer of Warranty. Unless required by applicable law or +> agreed to in writing, Licensor provides the Work (and each +> Contributor provides its Contributions) on an "AS IS" BASIS, +> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +> implied, including, without limitation, any warranties or conditions +> of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A +> PARTICULAR PURPOSE. You are solely responsible for determining the +> appropriateness of using or redistributing the Work and assume any +> risks associated with Your exercise of permissions under this License. +> +> 8. Limitation of Liability. In no event and under no legal theory, +> whether in tort (including negligence), contract, or otherwise, +> unless required by applicable law (such as deliberate and grossly +> negligent acts) or agreed to in writing, shall any Contributor be +> liable to You for damages, including any direct, indirect, special, +> incidental, or consequential damages of any character arising as a +> result of this License or out of the use or inability to use the +> Work (including but not limited to damages for loss of goodwill, +> work stoppage, computer failure or malfunction, or any and all +> other commercial damages or losses), even if such Contributor +> has been advised of the possibility of such damages. +> +> 9. Accepting Warranty or Additional Liability. While redistributing +> the Work or Derivative Works thereof, You may choose to offer, +> and charge a fee for, acceptance of support, warranty, indemnity, +> or other liability obligations and/or rights consistent with this +> License. However, in accepting such obligations, You may act only +> on Your own behalf and on Your sole responsibility, not on behalf +> of any other Contributor, and only if You agree to indemnify, +> defend, and hold each Contributor harmless for any liability +> incurred by, or claims asserted against, such Contributor by reason +> of your accepting any such warranty or additional liability. +> +> END OF TERMS AND CONDITIONS +> +> APPENDIX: How to apply the Apache License to your work. +> +> To apply the Apache License to your work, attach the following +> boilerplate notice, with the fields enclosed by brackets "[]" +> replaced with your own identifying information. (Don't include +> the brackets!) The text should be enclosed in the appropriate +> comment syntax for the file format. We also recommend that a +> file or class name and description of purpose be included on the +> same "printed page" as the copyright notice for easier +> identification within third-party archives. +> +> Copyright 2017 Vercel, Inc. +> +> Licensed under the Apache License, Version 2.0 (the "License"); +> you may not use this file except in compliance with the License. +> You may obtain a copy of the License at +> +> http://www.apache.org/licenses/LICENSE-2.0 +> +> Unless required by applicable law or agreed to in writing, software +> distributed under the License is distributed on an "AS IS" BASIS, +> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +> See the License for the specific language governing permissions and +> limitations under the License. + +--------------------------------------- + +## @vitest/utils +License: MIT +Repository: https://github.com/vitest-dev/vitest + +> MIT License +> +> Copyright (c) 2021-Present VoidZero Inc. and Vitest contributors +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all +> copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +> SOFTWARE. + +--------------------------------------- + +## anymatch +License: ISC +By: Elan Shanker +Repository: https://github.com/micromatch/anymatch + +> The ISC License +> +> Copyright (c) 2019 Elan Shanker, Paul Miller (https://paulmillr.com) +> +> Permission to use, copy, modify, and/or distribute this software for any +> purpose with or without fee is hereby granted, provided that the above +> copyright notice and this permission notice appear in all copies. +> +> THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +> WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +> MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +> ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +> WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +> ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +> IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +--------------------------------------- + +## artichokie +License: MIT +By: sapphi-red, Evan You +Repository: https://github.com/sapphi-red/artichokie + +> MIT License +> +> Copyright (c) 2020-present, Yuxi (Evan) You +> Copyright (c) 2023-present, sapphi-red +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all +> copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +> SOFTWARE. + +--------------------------------------- + +## binary-extensions +License: MIT +By: Sindre Sorhus +Repository: https://github.com/sindresorhus/binary-extensions + +> MIT License +> +> Copyright (c) Sindre Sorhus (https://sindresorhus.com) +> Copyright (c) Paul Miller (https://paulmillr.com) +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## braces, fill-range, is-number +License: MIT +By: Jon Schlinkert, Brian Woodward, Elan Shanker, Eugene Sharygin, hemanth.hm +Repository: https://github.com/micromatch/braces + +License: MIT +By: Jon Schlinkert, Edo Rivai, Paul Miller, Rouven Weßling +Repository: https://github.com/jonschlinkert/fill-range + +License: MIT +By: Jon Schlinkert, Olsten Larck, Rouven Weßling +Repository: https://github.com/jonschlinkert/is-number + +> The MIT License (MIT) +> +> Copyright (c) 2014-present, Jon Schlinkert. +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + +--------------------------------------- + +## bundle-name, default-browser, default-browser-id, define-lazy-prop, is-docker, is-inside-container, is-wsl, open, run-applescript, wsl-utils +License: MIT +By: Sindre Sorhus +Repositories: https://github.com/sindresorhus/bundle-name, https://github.com/sindresorhus/default-browser, https://github.com/sindresorhus/default-browser-id, https://github.com/sindresorhus/define-lazy-prop, https://github.com/sindresorhus/is-docker, https://github.com/sindresorhus/is-inside-container, https://github.com/sindresorhus/is-wsl, https://github.com/sindresorhus/open, https://github.com/sindresorhus/run-applescript, https://github.com/sindresorhus/wsl-utils + +> MIT License +> +> Copyright (c) Sindre Sorhus (https://sindresorhus.com) +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## cac +License: MIT +By: egoist +Repository: https://github.com/cacjs/cac + +> The MIT License (MIT) +> +> Copyright (c) EGOIST <0x142857@gmail.com> (https://github.com/egoist) +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + +--------------------------------------- + +## chokidar +License: MIT +By: Paul Miller, Elan Shanker +Repository: https://github.com/paulmillr/chokidar + +> The MIT License (MIT) +> +> Copyright (c) 2012-2019 Paul Miller (https://paulmillr.com), Elan Shanker +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the “Software”), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + +--------------------------------------- + +## connect +License: MIT +By: TJ Holowaychuk, Douglas Christopher Wilson, Jonathan Ong, Tim Caswell +Repository: https://github.com/senchalabs/connect + +> (The MIT License) +> +> Copyright (c) 2010 Sencha Inc. +> Copyright (c) 2011 LearnBoost +> Copyright (c) 2011-2014 TJ Holowaychuk +> Copyright (c) 2015 Douglas Christopher Wilson +> +> Permission is hereby granted, free of charge, to any person obtaining +> a copy of this software and associated documentation files (the +> 'Software'), to deal in the Software without restriction, including +> without limitation the rights to use, copy, modify, merge, publish, +> distribute, sublicense, and/or sell copies of the Software, and to +> permit persons to whom the Software is furnished to do so, subject to +> the following conditions: +> +> The above copyright notice and this permission notice shall be +> included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +> MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +> IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +> CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +> TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +> SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## convert-source-map +License: MIT +By: Thorsten Lorenz +Repository: https://github.com/thlorenz/convert-source-map + +> Copyright 2013 Thorsten Lorenz. +> All rights reserved. +> +> Permission is hereby granted, free of charge, to any person +> obtaining a copy of this software and associated documentation +> files (the "Software"), to deal in the Software without +> restriction, including without limitation the rights to use, +> copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the +> Software is furnished to do so, subject to the following +> conditions: +> +> The above copyright notice and this permission notice shall be +> included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +> OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +> NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +> HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +> WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +> FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +> OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## cors +License: MIT +By: Troy Goode +Repository: https://github.com/expressjs/cors + +> (The MIT License) +> +> Copyright (c) 2013 Troy Goode +> +> Permission is hereby granted, free of charge, to any person obtaining +> a copy of this software and associated documentation files (the +> 'Software'), to deal in the Software without restriction, including +> without limitation the rights to use, copy, modify, merge, publish, +> distribute, sublicense, and/or sell copies of the Software, and to +> permit persons to whom the Software is furnished to do so, subject to +> the following conditions: +> +> The above copyright notice and this permission notice shall be +> included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +> MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +> IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +> CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +> TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +> SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## cross-spawn +License: MIT +By: André Cruz +Repository: https://github.com/moxystudio/node-cross-spawn + +> The MIT License (MIT) +> +> Copyright (c) 2018 Made With MOXY Lda +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + +--------------------------------------- + +## cssesc +License: MIT +By: Mathias Bynens +Repository: https://github.com/mathiasbynens/cssesc + +> Copyright Mathias Bynens +> +> Permission is hereby granted, free of charge, to any person obtaining +> a copy of this software and associated documentation files (the +> "Software"), to deal in the Software without restriction, including +> without limitation the rights to use, copy, modify, merge, publish, +> distribute, sublicense, and/or sell copies of the Software, and to +> permit persons to whom the Software is furnished to do so, subject to +> the following conditions: +> +> The above copyright notice and this permission notice shall be +> included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +> MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +> NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +> LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +> OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +> WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## dotenv-expand +License: BSD-2-Clause +By: motdotla +Repository: https://github.com/motdotla/dotenv-expand + +> Copyright (c) 2016, Scott Motte +> All rights reserved. +> +> Redistribution and use in source and binary forms, with or without +> modification, are permitted provided that the following conditions are met: +> +> * Redistributions of source code must retain the above copyright notice, this +> list of conditions and the following disclaimer. +> +> * Redistributions in binary form must reproduce the above copyright notice, +> this list of conditions and the following disclaimer in the documentation +> and/or other materials provided with the distribution. +> +> THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +> AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +> IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +> DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +> FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +> DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +> SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +> CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +> OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +> OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +--------------------------------------- + +## ee-first +License: MIT +By: Jonathan Ong, Douglas Christopher Wilson +Repository: https://github.com/jonathanong/ee-first + +> The MIT License (MIT) +> +> Copyright (c) 2014 Jonathan Ong me@jongleberry.com +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + +--------------------------------------- + +## encodeurl +License: MIT +By: Douglas Christopher Wilson +Repository: https://github.com/pillarjs/encodeurl + +> (The MIT License) +> +> Copyright (c) 2016 Douglas Christopher Wilson +> +> Permission is hereby granted, free of charge, to any person obtaining +> a copy of this software and associated documentation files (the +> 'Software'), to deal in the Software without restriction, including +> without limitation the rights to use, copy, modify, merge, publish, +> distribute, sublicense, and/or sell copies of the Software, and to +> permit persons to whom the Software is furnished to do so, subject to +> the following conditions: +> +> The above copyright notice and this permission notice shall be +> included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +> MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +> IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +> CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +> TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +> SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## entities +License: BSD-2-Clause +By: Felix Boehm +Repository: https://github.com/fb55/entities + +> Copyright (c) Felix Böhm +> All rights reserved. +> +> Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +> +> Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +> +> Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +> +> THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS, +> EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +--------------------------------------- + +## es-module-lexer +License: MIT +By: Guy Bedford +Repository: https://github.com/guybedford/es-module-lexer + +> MIT License +> ----------- +> +> Copyright (C) 2018-2022 Guy Bedford +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## escape-html +License: MIT +Repository: https://github.com/component/escape-html + +> (The MIT License) +> +> Copyright (c) 2012-2013 TJ Holowaychuk +> Copyright (c) 2015 Andreas Lubbe +> Copyright (c) 2015 Tiancheng "Timothy" Gu +> +> Permission is hereby granted, free of charge, to any person obtaining +> a copy of this software and associated documentation files (the +> 'Software'), to deal in the Software without restriction, including +> without limitation the rights to use, copy, modify, merge, publish, +> distribute, sublicense, and/or sell copies of the Software, and to +> permit persons to whom the Software is furnished to do so, subject to +> the following conditions: +> +> The above copyright notice and this permission notice shall be +> included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +> MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +> IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +> CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +> TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +> SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## estree-walker +License: MIT +By: Rich Harris +Repository: https://github.com/Rich-Harris/estree-walker + +> Copyright (c) 2015-20 [these people](https://github.com/Rich-Harris/estree-walker/graphs/contributors) +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## etag +License: MIT +By: Douglas Christopher Wilson, David Björklund +Repository: https://github.com/jshttp/etag + +> (The MIT License) +> +> Copyright (c) 2014-2016 Douglas Christopher Wilson +> +> Permission is hereby granted, free of charge, to any person obtaining +> a copy of this software and associated documentation files (the +> 'Software'), to deal in the Software without restriction, including +> without limitation the rights to use, copy, modify, merge, publish, +> distribute, sublicense, and/or sell copies of the Software, and to +> permit persons to whom the Software is furnished to do so, subject to +> the following conditions: +> +> The above copyright notice and this permission notice shall be +> included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +> MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +> IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +> CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +> TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +> SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## finalhandler +License: MIT +By: Douglas Christopher Wilson +Repository: https://github.com/pillarjs/finalhandler + +> (The MIT License) +> +> Copyright (c) 2014-2017 Douglas Christopher Wilson +> +> Permission is hereby granted, free of charge, to any person obtaining +> a copy of this software and associated documentation files (the +> 'Software'), to deal in the Software without restriction, including +> without limitation the rights to use, copy, modify, merge, publish, +> distribute, sublicense, and/or sell copies of the Software, and to +> permit persons to whom the Software is furnished to do so, subject to +> the following conditions: +> +> The above copyright notice and this permission notice shall be +> included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +> MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +> IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +> CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +> TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +> SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## follow-redirects +License: MIT +By: Ruben Verborgh, Olivier Lalonde, James Talmage +Repository: https://github.com/follow-redirects/follow-redirects + +> Copyright 2014–present Olivier Lalonde , James Talmage , Ruben Verborgh +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of +> this software and associated documentation files (the "Software"), to deal in +> the Software without restriction, including without limitation the rights to +> use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +> of the Software, and to permit persons to whom the Software is furnished to do +> so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all +> copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +> WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +> IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## generic-names +License: MIT +By: Alexey Litvinov +Repository: https://github.com/css-modules/generic-names + +> The MIT License (MIT) +> +> Copyright (c) 2015 Alexey Litvinov +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all +> copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +> SOFTWARE. + +--------------------------------------- + +## glob-parent +License: ISC +By: Gulp Team, Elan Shanker, Blaine Bublitz +Repository: https://github.com/gulpjs/glob-parent + +> The ISC License +> +> Copyright (c) 2015, 2019 Elan Shanker +> +> Permission to use, copy, modify, and/or distribute this software for any +> purpose with or without fee is hereby granted, provided that the above +> copyright notice and this permission notice appear in all copies. +> +> THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +> WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +> MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +> ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +> WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +> ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +> IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +--------------------------------------- + +## host-validation-middleware +License: MIT +By: sapphi-red +Repository: https://github.com/sapphi-red/host-validation-middleware + +> MIT License +> +> Copyright (c) 2025 sapphi-red +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all +> copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +> SOFTWARE. + +--------------------------------------- + +## http-proxy-3 +License: MIT +By: William Stein, Charlie Robbins, Jimb Esser, jcrugzz +Repository: https://github.com/sagemathinc/http-proxy-3 + +> node-http-3 +> +> Copyright (c) 2010-2025 William Stein, Charlie Robbins, Jarrett Cruger & the Contributors. +> +> Permission is hereby granted, free of charge, to any person obtaining +> a copy of this software and associated documentation files (the +> "Software"), to deal in the Software without restriction, including +> without limitation the rights to use, copy, modify, merge, publish, +> distribute, sublicense, and/or sell copies of the Software, and to +> permit persons to whom the Software is furnished to do so, subject to +> the following conditions: +> +> The above copyright notice and this permission notice shall be +> included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +> MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +> NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +> LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +> OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +> WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## icss-utils +License: ISC +By: Glen Maddern +Repository: https://github.com/css-modules/icss-utils + +> ISC License (ISC) +> Copyright 2018 Glen Maddern +> +> Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. +> +> THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +--------------------------------------- + +## is-binary-path +License: MIT +By: Sindre Sorhus +Repository: https://github.com/sindresorhus/is-binary-path + +> MIT License +> +> Copyright (c) 2019 Sindre Sorhus (https://sindresorhus.com), Paul Miller (https://paulmillr.com) +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## is-extglob +License: MIT +By: Jon Schlinkert +Repository: https://github.com/jonschlinkert/is-extglob + +> The MIT License (MIT) +> +> Copyright (c) 2014-2016, Jon Schlinkert +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + +--------------------------------------- + +## is-glob +License: MIT +By: Jon Schlinkert, Brian Woodward, Daniel Perez +Repository: https://github.com/micromatch/is-glob + +> The MIT License (MIT) +> +> Copyright (c) 2014-2017, Jon Schlinkert. +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + +--------------------------------------- + +## isexe, which +License: ISC +By: Isaac Z. Schlueter +Repositories: https://github.com/isaacs/isexe, https://github.com/isaacs/node-which + +> The ISC License +> +> Copyright (c) Isaac Z. Schlueter and Contributors +> +> Permission to use, copy, modify, and/or distribute this software for any +> purpose with or without fee is hereby granted, provided that the above +> copyright notice and this permission notice appear in all copies. +> +> THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +> WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +> MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +> ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +> WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +> ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +> IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +--------------------------------------- + +## js-tokens +License: MIT +By: Simon Lydell +Repository: https://github.com/lydell/js-tokens + +> The MIT License (MIT) +> +> Copyright (c) 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024 Simon Lydell +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + +--------------------------------------- + +## launch-editor, launch-editor-middleware +License: MIT +By: Evan You +Repositories: https://github.com/yyx990803/launch-editor, https://github.com/yyx990803/launch-editor + +> The MIT License (MIT) +> +> Copyright (c) 2017-present, Yuxi (Evan) You +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + +--------------------------------------- + +## lilconfig +License: MIT +By: antonk52 +Repository: https://github.com/antonk52/lilconfig + +> MIT License +> +> Copyright (c) 2022 Anton Kastritskiy +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all +> copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +> SOFTWARE. + +--------------------------------------- + +## loader-utils +License: MIT +By: Tobias Koppers @sokra +Repository: https://github.com/webpack/loader-utils + +> Copyright JS Foundation and other contributors +> +> Permission is hereby granted, free of charge, to any person obtaining +> a copy of this software and associated documentation files (the +> 'Software'), to deal in the Software without restriction, including +> without limitation the rights to use, copy, modify, merge, publish, +> distribute, sublicense, and/or sell copies of the Software, and to +> permit persons to whom the Software is furnished to do so, subject to +> the following conditions: +> +> The above copyright notice and this permission notice shall be +> included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +> MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +> IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +> CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +> TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +> SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## lodash.camelcase +License: MIT +By: John-David Dalton, Blaine Bublitz, Mathias Bynens +Repository: https://github.com/lodash/lodash + +> Copyright jQuery Foundation and other contributors +> +> Based on Underscore.js, copyright Jeremy Ashkenas, +> DocumentCloud and Investigative Reporters & Editors +> +> This software consists of voluntary contributions made by many +> individuals. For exact contribution history, see the revision history +> available at https://github.com/lodash/lodash +> +> The following license applies to all parts of this software except as +> documented below: +> +> ==== +> +> Permission is hereby granted, free of charge, to any person obtaining +> a copy of this software and associated documentation files (the +> "Software"), to deal in the Software without restriction, including +> without limitation the rights to use, copy, modify, merge, publish, +> distribute, sublicense, and/or sell copies of the Software, and to +> permit persons to whom the Software is furnished to do so, subject to +> the following conditions: +> +> The above copyright notice and this permission notice shall be +> included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +> MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +> NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +> LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +> OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +> WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +> +> ==== +> +> Copyright and related rights for sample code are waived via CC0. Sample +> code is defined as all source code displayed within the prose of the +> documentation. +> +> CC0: http://creativecommons.org/publicdomain/zero/1.0/ +> +> ==== +> +> Files located in the node_modules and vendor directories are externally +> maintained libraries used by this software which have their own +> licenses; we recommend you read them, as their terms may differ from the +> terms above. + +--------------------------------------- + +## magic-string +License: MIT +By: Rich Harris +Repository: https://github.com/Rich-Harris/magic-string + +> Copyright 2018 Rich Harris +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## mlly, ufo +License: MIT +Repositories: https://github.com/unjs/mlly, https://github.com/unjs/ufo + +> MIT License +> +> Copyright (c) Pooya Parsa +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all +> copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +> SOFTWARE. + +--------------------------------------- + +## mrmime +License: MIT +By: Luke Edwards +Repository: https://github.com/lukeed/mrmime + +> The MIT License (MIT) +> +> Copyright (c) Luke Edwards (https://lukeed.com) +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + +--------------------------------------- + +## normalize-path +License: MIT +By: Jon Schlinkert, Blaine Bublitz +Repository: https://github.com/jonschlinkert/normalize-path + +> The MIT License (MIT) +> +> Copyright (c) 2014-2018, Jon Schlinkert. +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + +--------------------------------------- + +## object-assign +License: MIT +By: Sindre Sorhus +Repository: https://github.com/sindresorhus/object-assign + +> The MIT License (MIT) +> +> Copyright (c) Sindre Sorhus (sindresorhus.com) +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + +--------------------------------------- + +## obug +License: MIT +By: Kevin Deng +Repository: https://github.com/sxzz/obug + +> The MIT License (MIT) +> +> Copyright © 2025-PRESENT Kevin Deng (https://github.com/sxzz) +> Copyright (c) 2014-2017 TJ Holowaychuk +> Copyright (c) 2018-2021 Josh Junon +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all +> copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +> SOFTWARE. + +--------------------------------------- + +## on-finished +License: MIT +By: Douglas Christopher Wilson, Jonathan Ong +Repository: https://github.com/jshttp/on-finished + +> (The MIT License) +> +> Copyright (c) 2013 Jonathan Ong +> Copyright (c) 2014 Douglas Christopher Wilson +> +> Permission is hereby granted, free of charge, to any person obtaining +> a copy of this software and associated documentation files (the +> 'Software'), to deal in the Software without restriction, including +> without limitation the rights to use, copy, modify, merge, publish, +> distribute, sublicense, and/or sell copies of the Software, and to +> permit persons to whom the Software is furnished to do so, subject to +> the following conditions: +> +> The above copyright notice and this permission notice shall be +> included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +> MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +> IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +> CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +> TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +> SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## parse5 +License: MIT +By: Ivan Nikulin, James Garbutt, Felix Boehm, Titus +Repository: https://github.com/inikulin/parse5 + +> Copyright (c) 2013-2019 Ivan Nikulin (ifaaan@gmail.com, https://github.com/inikulin) +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + +--------------------------------------- + +## parseurl +License: MIT +By: Douglas Christopher Wilson, Jonathan Ong +Repository: https://github.com/pillarjs/parseurl + +> (The MIT License) +> +> Copyright (c) 2014 Jonathan Ong +> Copyright (c) 2014-2017 Douglas Christopher Wilson +> +> Permission is hereby granted, free of charge, to any person obtaining +> a copy of this software and associated documentation files (the +> 'Software'), to deal in the Software without restriction, including +> without limitation the rights to use, copy, modify, merge, publish, +> distribute, sublicense, and/or sell copies of the Software, and to +> permit persons to whom the Software is furnished to do so, subject to +> the following conditions: +> +> The above copyright notice and this permission notice shall be +> included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +> MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +> IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +> CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +> TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +> SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## path-key, shebang-regex +License: MIT +By: Sindre Sorhus +Repositories: https://github.com/sindresorhus/path-key, https://github.com/sindresorhus/shebang-regex + +> MIT License +> +> Copyright (c) Sindre Sorhus (sindresorhus.com) +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## periscopic +License: MIT +Repository: https://github.com/Rich-Harris/periscopic + +> Copyright (c) 2019 Rich Harris +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## picocolors +License: ISC +By: Alexey Raspopov +Repository: https://github.com/alexeyraspopov/picocolors + +> ISC License +> +> Copyright (c) 2021-2024 Oleksii Raspopov, Kostiantyn Denysov, Anton Verinov +> +> Permission to use, copy, modify, and/or distribute this software for any +> purpose with or without fee is hereby granted, provided that the above +> copyright notice and this permission notice appear in all copies. +> +> THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +> WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +> MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +> ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +> WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +> ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +> OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +--------------------------------------- + +## postcss-import +License: MIT +By: Maxime Thirouin +Repository: https://github.com/postcss/postcss-import + +> The MIT License (MIT) +> +> Copyright (c) 2014 Maxime Thirouin, Jason Campbell & Kevin Mårtensson +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of +> this software and associated documentation files (the "Software"), to deal in +> the Software without restriction, including without limitation the rights to +> use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +> the Software, and to permit persons to whom the Software is furnished to do so, +> subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all +> copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +> FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +> COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +> IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +> CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## postcss-load-config +License: MIT +By: Michael Ciniawky, Ryan Dunckel, Mateusz Derks, Dalton Santos, Patrick Gilday, François Wouts +Repository: https://github.com/postcss/postcss-load-config + +> The MIT License (MIT) +> +> Copyright Michael Ciniawsky +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of +> this software and associated documentation files (the "Software"), to deal in +> the Software without restriction, including without limitation the rights to +> use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +> the Software, and to permit persons to whom the Software is furnished to do so, +> subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all +> copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +> FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +> COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +> IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +> CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## postcss-modules +License: MIT +By: Alexander Madyankin +Repository: https://github.com/css-modules/postcss-modules + +> The MIT License (MIT) +> +> Copyright 2015-present Alexander Madyankin +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of +> this software and associated documentation files (the "Software"), to deal in +> the Software without restriction, including without limitation the rights to +> use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +> the Software, and to permit persons to whom the Software is furnished to do so, +> subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all +> copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +> FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +> COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +> IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +> CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## postcss-modules-extract-imports +License: ISC +By: Glen Maddern +Repository: https://github.com/css-modules/postcss-modules-extract-imports + +> Copyright 2015 Glen Maddern +> +> Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. +> +> THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +--------------------------------------- + +## postcss-modules-local-by-default +License: MIT +By: Mark Dalgleish +Repository: https://github.com/css-modules/postcss-modules-local-by-default + +> The MIT License (MIT) +> +> Copyright 2015 Mark Dalgleish +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of +> this software and associated documentation files (the "Software"), to deal in +> the Software without restriction, including without limitation the rights to +> use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +> the Software, and to permit persons to whom the Software is furnished to do so, +> subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all +> copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +> FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +> COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +> IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +> CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## postcss-modules-scope +License: ISC +By: Glen Maddern +Repository: https://github.com/css-modules/postcss-modules-scope + +> ISC License (ISC) +> +> Copyright (c) 2015, Glen Maddern +> +> Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. +> +> THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +--------------------------------------- + +## postcss-modules-values +License: ISC +By: Glen Maddern +Repository: https://github.com/css-modules/postcss-modules-values + +> ISC License (ISC) +> +> Copyright (c) 2015, Glen Maddern +> +> Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. +> +> THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +--------------------------------------- + +## postcss-selector-parser +License: MIT +By: Ben Briggs, Chris Eppstein +Repository: https://github.com/postcss/postcss-selector-parser + +> Copyright (c) Ben Briggs (http://beneb.info) +> +> Permission is hereby granted, free of charge, to any person +> obtaining a copy of this software and associated documentation +> files (the "Software"), to deal in the Software without +> restriction, including without limitation the rights to use, +> copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the +> Software is furnished to do so, subject to the following +> conditions: +> +> The above copyright notice and this permission notice shall be +> included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +> OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +> NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +> HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +> WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +> FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +> OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## postcss-value-parser +License: MIT +By: Bogdan Chadkin +Repository: https://github.com/TrySound/postcss-value-parser + +> Copyright (c) Bogdan Chadkin +> +> Permission is hereby granted, free of charge, to any person +> obtaining a copy of this software and associated documentation +> files (the "Software"), to deal in the Software without +> restriction, including without limitation the rights to use, +> copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the +> Software is furnished to do so, subject to the following +> conditions: +> +> The above copyright notice and this permission notice shall be +> included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +> OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +> NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +> HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +> WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +> FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +> OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## readdirp +License: MIT +By: Thorsten Lorenz, Paul Miller +Repository: https://github.com/paulmillr/readdirp + +> MIT License +> +> Copyright (c) 2012-2019 Thorsten Lorenz, Paul Miller (https://paulmillr.com) +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all +> copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +> SOFTWARE. + +--------------------------------------- + +## resolve.exports, totalist +License: MIT +By: Luke Edwards +Repositories: https://github.com/lukeed/resolve.exports, https://github.com/lukeed/totalist + +> The MIT License (MIT) +> +> Copyright (c) Luke Edwards (lukeed.com) +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + +--------------------------------------- + +## shebang-command +License: MIT +By: Kevin Mårtensson +Repository: https://github.com/kevva/shebang-command + +> MIT License +> +> Copyright (c) Kevin Mårtensson (github.com/kevva) +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## shell-quote +License: MIT +By: James Halliday +Repository: http://github.com/ljharb/shell-quote + +> The MIT License +> +> Copyright (c) 2013 James Halliday (mail@substack.net) +> +> Permission is hereby granted, free of charge, +> to any person obtaining a copy of this software and +> associated documentation files (the "Software"), to +> deal in the Software without restriction, including +> without limitation the rights to use, copy, modify, +> merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom +> the Software is furnished to do so, +> subject to the following conditions: +> +> The above copyright notice and this permission notice +> shall be included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +> OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +> IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +> ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +> TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +> SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## sirv +License: MIT +By: Luke Edwards +Repository: https://github.com/lukeed/sirv + +--------------------------------------- + +## statuses +License: MIT +By: Douglas Christopher Wilson, Jonathan Ong +Repository: https://github.com/jshttp/statuses + +> The MIT License (MIT) +> +> Copyright (c) 2014 Jonathan Ong +> Copyright (c) 2016 Douglas Christopher Wilson +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + +--------------------------------------- + +## string-hash +License: CC0-1.0 +By: The Dark Sky Company +Repository: https://github.com/darkskyapp/string-hash + +--------------------------------------- + +## strip-literal +License: MIT +By: Anthony Fu +Repository: https://github.com/antfu/strip-literal + +> MIT License +> +> Copyright (c) 2022 Anthony Fu +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all +> copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +> SOFTWARE. + +--------------------------------------- + +## to-regex-range +License: MIT +By: Jon Schlinkert, Rouven Weßling +Repository: https://github.com/micromatch/to-regex-range + +> The MIT License (MIT) +> +> Copyright (c) 2015-present, Jon Schlinkert. +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + +--------------------------------------- + +## unpipe +License: MIT +By: Douglas Christopher Wilson +Repository: https://github.com/stream-utils/unpipe + +> (The MIT License) +> +> Copyright (c) 2015 Douglas Christopher Wilson +> +> Permission is hereby granted, free of charge, to any person obtaining +> a copy of this software and associated documentation files (the +> 'Software'), to deal in the Software without restriction, including +> without limitation the rights to use, copy, modify, merge, publish, +> distribute, sublicense, and/or sell copies of the Software, and to +> permit persons to whom the Software is furnished to do so, subject to +> the following conditions: +> +> The above copyright notice and this permission notice shall be +> included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +> MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +> IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +> CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +> TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +> SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## util-deprecate +License: MIT +By: Nathan Rajlich +Repository: https://github.com/TooTallNate/util-deprecate + +> (The MIT License) +> +> Copyright (c) 2014 Nathan Rajlich +> +> Permission is hereby granted, free of charge, to any person +> obtaining a copy of this software and associated documentation +> files (the "Software"), to deal in the Software without +> restriction, including without limitation the rights to use, +> copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the +> Software is furnished to do so, subject to the following +> conditions: +> +> The above copyright notice and this permission notice shall be +> included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +> OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +> NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +> HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +> WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +> FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +> OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## utils-merge +License: MIT +By: Jared Hanson +Repository: https://github.com/jaredhanson/utils-merge + +> The MIT License (MIT) +> +> Copyright (c) 2013-2017 Jared Hanson +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of +> this software and associated documentation files (the "Software"), to deal in +> the Software without restriction, including without limitation the rights to +> use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +> the Software, and to permit persons to whom the Software is furnished to do so, +> subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all +> copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +> FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +> COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +> IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +> CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## vary +License: MIT +By: Douglas Christopher Wilson +Repository: https://github.com/jshttp/vary + +> (The MIT License) +> +> Copyright (c) 2014-2017 Douglas Christopher Wilson +> +> Permission is hereby granted, free of charge, to any person obtaining +> a copy of this software and associated documentation files (the +> 'Software'), to deal in the Software without restriction, including +> without limitation the rights to use, copy, modify, merge, publish, +> distribute, sublicense, and/or sell copies of the Software, and to +> permit persons to whom the Software is furnished to do so, subject to +> the following conditions: +> +> The above copyright notice and this permission notice shall be +> included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +> MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +> IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +> CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +> TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +> SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## ws +License: MIT +By: Einar Otto Stangvik +Repository: https://github.com/websockets/ws + +> Copyright (c) 2011 Einar Otto Stangvik +> Copyright (c) 2013 Arnout Kazemier and contributors +> Copyright (c) 2016 Luigi Pinca and contributors +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of +> this software and associated documentation files (the "Software"), to deal in +> the Software without restriction, including without limitation the rights to +> use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +> the Software, and to permit persons to whom the Software is furnished to do so, +> subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all +> copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +> FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +> COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +> IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +> CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/vite/README.md b/node_modules/vite/README.md new file mode 100644 index 00000000..1460e75b --- /dev/null +++ b/node_modules/vite/README.md @@ -0,0 +1,20 @@ +# Vite ⚡ + +> Next Generation Frontend Tooling + +- 💡 Instant Server Start +- ⚡️ Lightning Fast HMR +- 🛠️ Rich Features +- 📦 Optimized Build +- 🔩 Universal Plugin Interface +- 🔑 Fully Typed APIs + +Vite (French word for "quick", pronounced [`/viːt/`](https://cdn.jsdelivr.net/gh/vitejs/vite@main/docs/public/vite.mp3), like "veet") is a build tool that aims to provide a faster and leaner development experience for modern web projects. It consists of two major parts: + +- A dev server that provides [rich feature enhancements](https://vite.dev/guide/features) over [native ES modules](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules), for example extremely fast [Hot Module Replacement (HMR)](https://vite.dev/guide/features#hot-module-replacement). + +- A build command that bundles your code with [Rolldown](https://rolldown.rs), pre-configured to output highly optimized static assets for production. + +In addition, Vite is highly extensible via its [Plugin API](https://vite.dev/guide/api-plugin.html) and [JavaScript API](https://vite.dev/guide/api-javascript.html) with full typing support. + +[Read the Docs to Learn More](https://vite.dev). diff --git a/node_modules/vite/bin/openChrome.js b/node_modules/vite/bin/openChrome.js new file mode 100644 index 00000000..5a4aa95e --- /dev/null +++ b/node_modules/vite/bin/openChrome.js @@ -0,0 +1,68 @@ +/* +Copyright (c) 2015-present, Facebook, Inc. + +This source code is licensed under the MIT license found in the +LICENSE file at +https://github.com/facebook/create-react-app/blob/main/LICENSE +*/ + +/* global Application */ + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +function run(argv) { + const urlToOpen = argv[0] + // Allow requested program to be optional, default to Google Chrome + const programName = argv[1] ?? 'Google Chrome' + + const app = Application(programName) + + if (app.windows.length === 0) { + app.Window().make() + } + + // 1: Looking for tab running debugger then, + // Reload debugging tab if found, then return + const found = lookupTabWithUrl(urlToOpen, app) + if (found) { + found.targetWindow.activeTabIndex = found.targetTabIndex + found.targetTab.reload() + found.targetWindow.index = 1 + app.activate() + return + } + + // 2: Looking for Empty tab + // In case debugging tab was not found + // We try to find an empty tab instead + const emptyTabFound = lookupTabWithUrl('chrome://newtab/', app) + if (emptyTabFound) { + emptyTabFound.targetWindow.activeTabIndex = emptyTabFound.targetTabIndex + emptyTabFound.targetTab.url = urlToOpen + app.activate() + return + } + + // 3: Create new tab + // both debugging and empty tab were not found make a new tab with url + const firstWindow = app.windows[0] + firstWindow.tabs.push(app.Tab({ url: urlToOpen })) + app.activate() +} + +/** + * Lookup tab with given url + */ +function lookupTabWithUrl(lookupUrl, app) { + const windows = app.windows() + for (const window of windows) { + for (const [tabIndex, tab] of window.tabs().entries()) { + if (tab.url().includes(lookupUrl)) { + return { + targetTab: tab, + targetTabIndex: tabIndex + 1, + targetWindow: window, + } + } + } + } +} diff --git a/node_modules/vite/bin/vite.js b/node_modules/vite/bin/vite.js new file mode 100755 index 00000000..79c49ab7 --- /dev/null +++ b/node_modules/vite/bin/vite.js @@ -0,0 +1,79 @@ +#!/usr/bin/env node +import { performance } from 'node:perf_hooks' +import module from 'node:module' + +if (!import.meta.url.includes('node_modules')) { + if (!process.env.DEBUG_DISABLE_SOURCE_MAP) { + // eslint-disable-next-line n/no-unsupported-features/node-builtins -- only used in dev + process.setSourceMapsEnabled(true) + } + + process.on('unhandledRejection', (err) => { + throw new Error('UNHANDLED PROMISE REJECTION', { cause: err }) + }) +} + +global.__vite_start_time = performance.now() + +// check debug mode first before requiring the CLI. +const debugIndex = process.argv.findIndex((arg) => /^(?:-d|--debug)$/.test(arg)) +const filterIndex = process.argv.findIndex((arg) => + /^(?:-f|--filter)$/.test(arg), +) +const profileIndex = process.argv.indexOf('--profile') + +if (debugIndex > 0) { + let value = process.argv[debugIndex + 1] + if (!value || value[0] === '-') { + value = 'vite:*' + } else { + // support debugging multiple flags with comma-separated list + value = value + .split(',') + .map((v) => `vite:${v}`) + .join(',') + } + process.env.DEBUG = `${ + process.env.DEBUG ? process.env.DEBUG + ',' : '' + }${value}` + + if (filterIndex > 0) { + const filter = process.argv[filterIndex + 1] + if (filter && filter[0] !== '-') { + process.env.VITE_DEBUG_FILTER = filter + } + } +} + +function start() { + try { + // eslint-disable-next-line n/no-unsupported-features/node-builtins -- it is supported in Node 22.8.0+ and only called if it exists + module.enableCompileCache?.() + // flush the cache after 10s because the cache is not flushed until process end + // for dev server, the cache is never flushed unless manually flushed because the process.exit is called + // also flushing the cache in SIGINT handler seems to cause the process to hang + setTimeout(() => { + try { + // eslint-disable-next-line n/no-unsupported-features/node-builtins -- it is supported in Node 22.12.0+ and only called if it exists + module.flushCompileCache?.() + } catch {} + }, 10 * 1000).unref() + } catch {} + return import('../dist/node/cli.js') +} + +if (profileIndex > 0) { + process.argv.splice(profileIndex, 1) + const next = process.argv[profileIndex] + if (next && next[0] !== '-') { + process.argv.splice(profileIndex, 1) + } + const inspector = await import('node:inspector').then((r) => r.default) + const session = (global.__vite_profile_session = new inspector.Session()) + session.connect() + session.post('Profiler.enable', () => { + session.post('Profiler.start', start) + }) +} else { + start() +} diff --git a/node_modules/vite/client.d.ts b/node_modules/vite/client.d.ts new file mode 100644 index 00000000..e807d614 --- /dev/null +++ b/node_modules/vite/client.d.ts @@ -0,0 +1,282 @@ +/// + +// virtual modules +declare module 'vite/modulepreload-polyfill' {} + +// CSS modules +type CSSModuleClasses = { readonly [key: string]: string } + +declare module '*.module.css' { + const classes: CSSModuleClasses + export default classes +} +declare module '*.module.scss' { + const classes: CSSModuleClasses + export default classes +} +declare module '*.module.sass' { + const classes: CSSModuleClasses + export default classes +} +declare module '*.module.less' { + const classes: CSSModuleClasses + export default classes +} +declare module '*.module.styl' { + const classes: CSSModuleClasses + export default classes +} +declare module '*.module.stylus' { + const classes: CSSModuleClasses + export default classes +} +declare module '*.module.pcss' { + const classes: CSSModuleClasses + export default classes +} +declare module '*.module.sss' { + const classes: CSSModuleClasses + export default classes +} + +// CSS +declare module '*.css' {} +declare module '*.scss' {} +declare module '*.sass' {} +declare module '*.less' {} +declare module '*.styl' {} +declare module '*.stylus' {} +declare module '*.pcss' {} +declare module '*.sss' {} + +// Built-in asset types +// see `src/node/constants.ts` + +// images +declare module '*.apng' { + const src: string + export default src +} +declare module '*.bmp' { + const src: string + export default src +} +declare module '*.png' { + const src: string + export default src +} +declare module '*.jpg' { + const src: string + export default src +} +declare module '*.jpeg' { + const src: string + export default src +} +declare module '*.jfif' { + const src: string + export default src +} +declare module '*.pjpeg' { + const src: string + export default src +} +declare module '*.pjp' { + const src: string + export default src +} +declare module '*.gif' { + const src: string + export default src +} +declare module '*.svg' { + const src: string + export default src +} +declare module '*.ico' { + const src: string + export default src +} +declare module '*.webp' { + const src: string + export default src +} +declare module '*.avif' { + const src: string + export default src +} +declare module '*.cur' { + const src: string + export default src +} +declare module '*.jxl' { + const src: string + export default src +} + +// media +declare module '*.mp4' { + const src: string + export default src +} +declare module '*.webm' { + const src: string + export default src +} +declare module '*.ogg' { + const src: string + export default src +} +declare module '*.mp3' { + const src: string + export default src +} +declare module '*.wav' { + const src: string + export default src +} +declare module '*.flac' { + const src: string + export default src +} +declare module '*.aac' { + const src: string + export default src +} +declare module '*.opus' { + const src: string + export default src +} +declare module '*.mov' { + const src: string + export default src +} +declare module '*.m4a' { + const src: string + export default src +} +declare module '*.vtt' { + const src: string + export default src +} + +// fonts +declare module '*.woff' { + const src: string + export default src +} +declare module '*.woff2' { + const src: string + export default src +} +declare module '*.eot' { + const src: string + export default src +} +declare module '*.ttf' { + const src: string + export default src +} +declare module '*.otf' { + const src: string + export default src +} + +// other +declare module '*.webmanifest' { + const src: string + export default src +} +declare module '*.pdf' { + const src: string + export default src +} +declare module '*.txt' { + const src: string + export default src +} + +// wasm?init +declare module '*.wasm?init' { + const initWasm: ( + options?: WebAssembly.Imports, + ) => Promise + export default initWasm +} + +// web worker +declare module '*?worker' { + const workerConstructor: { + new (options?: { name?: string }): Worker + } + export default workerConstructor +} + +declare module '*?worker&inline' { + const workerConstructor: { + new (options?: { name?: string }): Worker + } + export default workerConstructor +} + +declare module '*?worker&url' { + const src: string + export default src +} + +declare module '*?sharedworker' { + const sharedWorkerConstructor: { + new (options?: { name?: string }): SharedWorker + } + export default sharedWorkerConstructor +} + +declare module '*?sharedworker&inline' { + const sharedWorkerConstructor: { + new (options?: { name?: string }): SharedWorker + } + export default sharedWorkerConstructor +} + +declare module '*?sharedworker&url' { + const src: string + export default src +} + +declare module '*?raw' { + const src: string + export default src +} + +declare module '*?url' { + const src: string + export default src +} + +declare module '*?inline' { + const src: string + export default src +} + +declare module '*?no-inline' { + const src: string + export default src +} + +declare module '*?url&inline' { + const src: string + export default src +} + +declare module '*?url&no-inline' { + const src: string + export default src +} + +declare interface VitePreloadErrorEvent extends Event { + payload: Error +} + +declare interface WindowEventMap { + 'vite:preloadError': VitePreloadErrorEvent +} diff --git a/node_modules/vite/dist/client/client.mjs b/node_modules/vite/dist/client/client.mjs new file mode 100644 index 00000000..6630ba6d --- /dev/null +++ b/node_modules/vite/dist/client/client.mjs @@ -0,0 +1,1237 @@ +import "@vite/env"; +//#region ../../node_modules/.pnpm/nanoid@5.1.9/node_modules/nanoid/non-secure/index.js +let urlAlphabet = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"; +let nanoid = (size = 21) => { + let id = ""; + let i = size | 0; + while (i--) id += urlAlphabet[Math.random() * 64 | 0]; + return id; +}; +//#endregion +//#region \0@oxc-project+runtime@0.127.0/helpers/typeof.js +function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) { + return typeof o; + } : function(o) { + return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, _typeof(o); +} +//#endregion +//#region \0@oxc-project+runtime@0.127.0/helpers/toPrimitive.js +function toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); +} +//#endregion +//#region \0@oxc-project+runtime@0.127.0/helpers/toPropertyKey.js +function toPropertyKey(t) { + var i = toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; +} +//#endregion +//#region \0@oxc-project+runtime@0.127.0/helpers/defineProperty.js +function _defineProperty(e, r, t) { + return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, { + value: t, + enumerable: !0, + configurable: !0, + writable: !0 + }) : e[r] = t, e; +} +//#endregion +//#region src/shared/hmr.ts +var HMRContext = class { + constructor(hmrClient, ownerPath) { + this.hmrClient = hmrClient; + this.ownerPath = ownerPath; + _defineProperty(this, "newListeners", void 0); + if (!hmrClient.dataMap.has(ownerPath)) hmrClient.dataMap.set(ownerPath, {}); + const mod = hmrClient.hotModulesMap.get(ownerPath); + if (mod) mod.callbacks = []; + const staleListeners = hmrClient.ctxToListenersMap.get(ownerPath); + if (staleListeners) for (const [event, staleFns] of staleListeners) { + const listeners = hmrClient.customListenersMap.get(event); + if (listeners) hmrClient.customListenersMap.set(event, listeners.filter((l) => !staleFns.includes(l))); + } + this.newListeners = /* @__PURE__ */ new Map(); + hmrClient.ctxToListenersMap.set(ownerPath, this.newListeners); + } + get data() { + return this.hmrClient.dataMap.get(this.ownerPath); + } + accept(deps, callback) { + if (typeof deps === "function" || !deps) this.acceptDeps([this.ownerPath], ([mod]) => deps?.(mod)); + else if (typeof deps === "string") this.acceptDeps([deps], ([mod]) => callback?.(mod)); + else if (Array.isArray(deps)) this.acceptDeps(deps, callback); + else throw new Error(`invalid hot.accept() usage.`); + } + acceptExports(_, callback) { + this.acceptDeps([this.ownerPath], ([mod]) => callback?.(mod)); + } + dispose(cb) { + this.hmrClient.disposeMap.set(this.ownerPath, cb); + } + prune(cb) { + this.hmrClient.pruneMap.set(this.ownerPath, cb); + } + decline() {} + invalidate(message) { + const firstInvalidatedBy = this.hmrClient.currentFirstInvalidatedBy ?? this.ownerPath; + this.hmrClient.notifyListeners("vite:invalidate", { + path: this.ownerPath, + message, + firstInvalidatedBy + }); + this.send("vite:invalidate", { + path: this.ownerPath, + message, + firstInvalidatedBy + }); + this.hmrClient.logger.debug(`invalidate ${this.ownerPath}${message ? `: ${message}` : ""}`); + } + on(event, cb) { + const addToMap = (map) => { + const existing = map.get(event) || []; + existing.push(cb); + map.set(event, existing); + }; + addToMap(this.hmrClient.customListenersMap); + addToMap(this.newListeners); + } + off(event, cb) { + const removeFromMap = (map) => { + const existing = map.get(event); + if (existing === void 0) return; + const pruned = existing.filter((l) => l !== cb); + if (pruned.length === 0) { + map.delete(event); + return; + } + map.set(event, pruned); + }; + removeFromMap(this.hmrClient.customListenersMap); + removeFromMap(this.newListeners); + } + send(event, data) { + this.hmrClient.send({ + type: "custom", + event, + data + }); + } + acceptDeps(deps, callback = () => {}) { + const mod = this.hmrClient.hotModulesMap.get(this.ownerPath) || { + id: this.ownerPath, + callbacks: [] + }; + mod.callbacks.push({ + deps, + fn: callback + }); + this.hmrClient.hotModulesMap.set(this.ownerPath, mod); + } +}; +var HMRClient = class { + constructor(logger, transport, importUpdatedModule) { + this.logger = logger; + this.transport = transport; + this.importUpdatedModule = importUpdatedModule; + _defineProperty(this, "hotModulesMap", /* @__PURE__ */ new Map()); + _defineProperty(this, "disposeMap", /* @__PURE__ */ new Map()); + _defineProperty(this, "pruneMap", /* @__PURE__ */ new Map()); + _defineProperty(this, "dataMap", /* @__PURE__ */ new Map()); + _defineProperty(this, "customListenersMap", /* @__PURE__ */ new Map()); + _defineProperty(this, "ctxToListenersMap", /* @__PURE__ */ new Map()); + _defineProperty(this, "currentFirstInvalidatedBy", void 0); + _defineProperty(this, "updateQueue", []); + _defineProperty(this, "pendingUpdateQueue", false); + } + async notifyListeners(event, data) { + const cbs = this.customListenersMap.get(event); + if (cbs) await Promise.allSettled(cbs.map((cb) => cb(data))); + } + send(payload) { + this.transport.send(payload).catch((err) => { + this.logger.error(err); + }); + } + clear() { + this.hotModulesMap.clear(); + this.disposeMap.clear(); + this.pruneMap.clear(); + this.dataMap.clear(); + this.customListenersMap.clear(); + this.ctxToListenersMap.clear(); + } + async prunePaths(paths) { + await Promise.all(paths.map((path) => { + const disposer = this.disposeMap.get(path); + if (disposer) return disposer(this.dataMap.get(path)); + })); + await Promise.all(paths.map((path) => { + const fn = this.pruneMap.get(path); + if (fn) return fn(this.dataMap.get(path)); + })); + } + warnFailedUpdate(err, path) { + if (!(err instanceof Error) || !err.message.includes("fetch")) this.logger.error(err); + this.logger.error(`Failed to reload ${path}. This could be due to syntax errors or importing non-existent modules. (see errors above)`); + } + /** + * buffer multiple hot updates triggered by the same src change + * so that they are invoked in the same order they were sent. + * (otherwise the order may be inconsistent because of the http request round trip) + */ + async queueUpdate(payload) { + this.updateQueue.push(this.fetchUpdate(payload)); + if (!this.pendingUpdateQueue) { + this.pendingUpdateQueue = true; + await Promise.resolve(); + this.pendingUpdateQueue = false; + const loading = [...this.updateQueue]; + this.updateQueue = []; + (await Promise.all(loading)).forEach((fn) => fn && fn()); + } + } + async fetchUpdate(update) { + const { path, acceptedPath, firstInvalidatedBy } = update; + const mod = this.hotModulesMap.get(path); + if (!mod) return; + let fetchedModule; + const isSelfUpdate = path === acceptedPath; + const qualifiedCallbacks = mod.callbacks.filter(({ deps }) => deps.includes(acceptedPath)); + if (isSelfUpdate || qualifiedCallbacks.length > 0) { + const disposer = this.disposeMap.get(acceptedPath); + if (disposer) await disposer(this.dataMap.get(acceptedPath)); + try { + fetchedModule = await this.importUpdatedModule(update); + } catch (e) { + this.warnFailedUpdate(e, acceptedPath); + } + } + return () => { + try { + this.currentFirstInvalidatedBy = firstInvalidatedBy; + for (const { deps, fn } of qualifiedCallbacks) fn(deps.map((dep) => dep === acceptedPath ? fetchedModule : void 0)); + const loggedPath = isSelfUpdate ? path : `${acceptedPath} via ${path}`; + this.logger.debug(`hot updated: ${loggedPath}`); + } finally { + this.currentFirstInvalidatedBy = void 0; + } + }; + } +}; +//#endregion +//#region src/shared/constants.ts +let SOURCEMAPPING_URL = "sourceMa"; +SOURCEMAPPING_URL += "ppingURL"; +typeof process !== "undefined" && process.platform; +(async function() {}).constructor; +function promiseWithResolvers() { + let resolve; + let reject; + return { + promise: new Promise((_resolve, _reject) => { + resolve = _resolve; + reject = _reject; + }), + resolve, + reject + }; +} +//#endregion +//#region src/shared/moduleRunnerTransport.ts +function reviveInvokeError(e) { + const error = new Error(e.message || "Unknown invoke error"); + Object.assign(error, e, { runnerError: /* @__PURE__ */ new Error("RunnerError") }); + return error; +} +const createInvokeableTransport = (transport) => { + if (transport.invoke) return { + ...transport, + async invoke(name, data) { + const result = await transport.invoke({ + type: "custom", + event: "vite:invoke", + data: { + id: "send", + name, + data + } + }); + if ("error" in result) throw reviveInvokeError(result.error); + return result.result; + } + }; + if (!transport.send || !transport.connect) throw new Error("transport must implement send and connect when invoke is not implemented"); + const rpcPromises = /* @__PURE__ */ new Map(); + return { + ...transport, + connect({ onMessage, onDisconnection }) { + return transport.connect({ + onMessage(payload) { + if (payload.type === "custom" && payload.event === "vite:invoke") { + const data = payload.data; + if (data.id.startsWith("response:")) { + const invokeId = data.id.slice(9); + const promise = rpcPromises.get(invokeId); + if (!promise) return; + if (promise.timeoutId) clearTimeout(promise.timeoutId); + rpcPromises.delete(invokeId); + const { error, result } = data.data; + if (error) promise.reject(error); + else promise.resolve(result); + return; + } + } + onMessage(payload); + }, + onDisconnection + }); + }, + disconnect() { + rpcPromises.forEach((promise) => { + promise.reject(/* @__PURE__ */ new Error(`transport was disconnected, cannot call ${JSON.stringify(promise.name)}`)); + }); + rpcPromises.clear(); + return transport.disconnect?.(); + }, + send(data) { + return transport.send(data); + }, + async invoke(name, data) { + const promiseId = nanoid(); + const wrappedData = { + type: "custom", + event: "vite:invoke", + data: { + name, + id: `send:${promiseId}`, + data + } + }; + const sendPromise = transport.send(wrappedData); + const { promise, resolve, reject } = promiseWithResolvers(); + const timeout = transport.timeout ?? 6e4; + let timeoutId; + if (timeout > 0) { + timeoutId = setTimeout(() => { + rpcPromises.delete(promiseId); + reject(/* @__PURE__ */ new Error(`transport invoke timed out after ${timeout}ms (data: ${JSON.stringify(wrappedData)})`)); + }, timeout); + timeoutId?.unref?.(); + } + rpcPromises.set(promiseId, { + resolve, + reject, + name, + timeoutId + }); + if (sendPromise) sendPromise.catch((err) => { + clearTimeout(timeoutId); + rpcPromises.delete(promiseId); + reject(err); + }); + try { + return await promise; + } catch (err) { + throw reviveInvokeError(err); + } + } + }; +}; +const normalizeModuleRunnerTransport = (transport) => { + const invokeableTransport = createInvokeableTransport(transport); + let isConnected = !invokeableTransport.connect; + let connectingPromise; + return { + ...transport, + ...invokeableTransport.connect ? { async connect(onMessage) { + if (isConnected) return; + if (connectingPromise) { + await connectingPromise; + return; + } + const maybePromise = invokeableTransport.connect({ + onMessage: onMessage ?? (() => {}), + onDisconnection() { + isConnected = false; + } + }); + if (maybePromise) { + connectingPromise = maybePromise; + await connectingPromise; + connectingPromise = void 0; + } + isConnected = true; + } } : {}, + ...invokeableTransport.disconnect ? { async disconnect() { + if (!isConnected) return; + if (connectingPromise) await connectingPromise; + isConnected = false; + await invokeableTransport.disconnect(); + } } : {}, + async send(data) { + if (!invokeableTransport.send) return; + if (!isConnected) if (connectingPromise) await connectingPromise; + else throw new Error("send was called before connect"); + await invokeableTransport.send(data); + }, + async invoke(name, data) { + if (!isConnected) if (connectingPromise) await connectingPromise; + else throw new Error("invoke was called before connect"); + return invokeableTransport.invoke(name, data); + } + }; +}; +const createWebSocketModuleRunnerTransport = (options) => { + const pingInterval = options.pingInterval ?? 3e4; + let ws; + let pingIntervalId; + return { + async connect({ onMessage, onDisconnection }) { + const socket = options.createConnection(); + socket.addEventListener("message", async ({ data }) => { + onMessage(JSON.parse(data)); + }); + let isOpened = socket.readyState === socket.OPEN; + if (!isOpened) await new Promise((resolve, reject) => { + socket.addEventListener("open", () => { + isOpened = true; + resolve(); + }, { once: true }); + socket.addEventListener("close", async () => { + if (!isOpened) { + reject(/* @__PURE__ */ new Error("WebSocket closed without opened.")); + return; + } + onMessage({ + type: "custom", + event: "vite:ws:disconnect", + data: { webSocket: socket } + }); + onDisconnection(); + }); + }); + onMessage({ + type: "custom", + event: "vite:ws:connect", + data: { webSocket: socket } + }); + ws = socket; + pingIntervalId = setInterval(() => { + if (socket.readyState === socket.OPEN) socket.send(JSON.stringify({ type: "ping" })); + }, pingInterval); + }, + disconnect() { + clearInterval(pingIntervalId); + ws?.close(); + }, + send(data) { + ws.send(JSON.stringify(data)); + } + }; +}; +//#endregion +//#region src/shared/hmrHandler.ts +function createHMRHandler(handler) { + const queue = new Queue(); + return (payload) => queue.enqueue(() => handler(payload)); +} +var Queue = class { + constructor() { + _defineProperty(this, "queue", []); + _defineProperty(this, "pending", false); + } + enqueue(promise) { + return new Promise((resolve, reject) => { + this.queue.push({ + promise, + resolve, + reject + }); + this.dequeue(); + }); + } + dequeue() { + if (this.pending) return false; + const item = this.queue.shift(); + if (!item) return false; + this.pending = true; + item.promise().then(item.resolve).catch(item.reject).finally(() => { + this.pending = false; + this.dequeue(); + }); + return true; + } +}; +//#endregion +//#region src/shared/forwardConsole.ts +function setupForwardConsoleHandler(transport, options) { + if (!options.enabled) return; + function sendError(type, error) { + transport.send({ + type: "custom", + event: "vite:forward-console", + data: { + type, + data: { + name: error?.name || "Unknown Error", + message: error?.message || String(error), + stack: error?.stack + } + } + }); + } + function sendLog(level, args) { + transport.send({ + type: "custom", + event: "vite:forward-console", + data: { + type: "log", + data: { + level, + message: formatConsoleArgs(args) + } + } + }); + } + for (const level of options.logLevels) { + const original = console[level]; + if (typeof original !== "function") continue; + console[level] = (...args) => { + original(...args); + sendLog(level, args); + }; + } + if (options.unhandledErrors && typeof window !== "undefined") { + window.addEventListener("error", (event) => { + sendError("error", event.error ?? (event.message ? new Error(event.message) : event)); + }); + window.addEventListener("unhandledrejection", (event) => { + sendError("unhandled-rejection", event.reason); + }); + } +} +function formatConsoleArgs(args) { + if (args.length === 0) return ""; + if (typeof args[0] !== "string") return args.map((arg) => stringifyConsoleArg(arg)).join(" "); + const len = args.length; + let i = 1; + let message = args[0].replace(/%[sdjifoOc%]/g, (specifier) => { + if (specifier === "%%") return "%"; + if (i >= len) return specifier; + const arg = args[i++]; + switch (specifier) { + case "%s": + if (typeof arg === "bigint") return `${arg.toString()}n`; + return typeof arg === "object" && arg != null ? stringifyConsoleArg(arg) : String(arg); + case "%d": + if (typeof arg === "bigint") return `${arg.toString()}n`; + if (typeof arg === "symbol") return "NaN"; + return Number(arg).toString(); + case "%i": + if (typeof arg === "bigint") return `${arg.toString()}n`; + return Number.parseInt(String(arg), 10).toString(); + case "%f": return Number.parseFloat(String(arg)).toString(); + case "%o": + case "%O": return stringifyConsoleArg(arg); + case "%j": try { + return JSON.stringify(arg) ?? "undefined"; + } catch { + return "[Circular]"; + } + case "%c": return ""; + default: return specifier; + } + }); + for (let arg = args[i]; i < len; arg = args[++i]) if (arg == null || typeof arg !== "object") message += ` ${typeof arg === "symbol" ? arg.toString() : String(arg)}`; + else message += ` ${stringifyConsoleArg(arg)}`; + return message; +} +function stringifyConsoleArg(value) { + if (typeof value === "string") return value; + if (typeof value === "number" || typeof value === "boolean" || typeof value === "undefined") return String(value); + if (typeof value === "symbol") return value.toString(); + if (typeof value === "function") return value.name ? `[Function: ${value.name}]` : "[Function]"; + if (value instanceof Error) return value.stack || `${value.name}: ${value.message}`; + if (typeof value === "bigint") return `${value}n`; + const seen = /* @__PURE__ */ new WeakSet(); + try { + return JSON.stringify(value, (_, nested) => { + if (typeof nested === "bigint") return `${nested}n`; + if (nested instanceof Error) return { + name: nested.name, + message: nested.message, + stack: nested.stack + }; + if (nested && typeof nested === "object") { + if (seen.has(nested)) return "[Circular]"; + seen.add(nested); + } + return nested; + }) ?? String(value); + } catch { + return String(value); + } +} +//#endregion +//#region src/client/overlay.ts +const hmrConfigName = __HMR_CONFIG_NAME__; +const base$1 = __BASE__ || "/"; +const cspNonce = "document" in globalThis ? document.querySelector("meta[property=csp-nonce]")?.nonce : void 0; +function h(e, attrs = {}, ...children) { + const elem = document.createElement(e); + for (const [k, v] of Object.entries(attrs)) if (v !== void 0) elem.setAttribute(k, v); + elem.append(...children); + return elem; +} +const templateStyle = ` +:host { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 99999; + --monospace: 'SFMono-Regular', Consolas, + 'Liberation Mono', Menlo, Courier, monospace; + --red: #ff5555; + --yellow: #e2aa53; + --purple: #cfa4ff; + --cyan: #2dd9da; + --dim: #c9c9c9; + + --window-background: #181818; + --window-color: #d8d8d8; +} + +.backdrop { + position: fixed; + z-index: 99999; + top: 0; + left: 0; + width: 100%; + height: 100%; + overflow-y: scroll; + margin: 0; + background: rgba(0, 0, 0, 0.66); +} + +.window { + font-family: var(--monospace); + line-height: 1.5; + max-width: 80vw; + color: var(--window-color); + box-sizing: border-box; + margin: 30px auto; + padding: 2.5vh 4vw; + position: relative; + background: var(--window-background); + border-radius: 6px 6px 8px 8px; + box-shadow: 0 19px 38px rgba(0,0,0,0.30), 0 15px 12px rgba(0,0,0,0.22); + overflow: hidden; + border-top: 8px solid var(--red); + direction: ltr; + text-align: left; +} + +pre { + font-family: var(--monospace); + font-size: 16px; + margin-top: 0; + margin-bottom: 1em; + overflow-x: scroll; + scrollbar-width: none; +} + +pre::-webkit-scrollbar { + display: none; +} + +pre.frame::-webkit-scrollbar { + display: block; + height: 5px; +} + +pre.frame::-webkit-scrollbar-thumb { + background: #999; + border-radius: 5px; +} + +pre.frame { + scrollbar-width: thin; +} + +.message { + line-height: 1.3; + font-weight: 600; + white-space: pre-wrap; +} + +.message-body { + color: var(--red); +} + +.plugin { + color: var(--purple); +} + +.file { + color: var(--cyan); + margin-bottom: 0; + white-space: pre-wrap; + word-break: break-all; +} + +.frame { + color: var(--yellow); +} + +.stack { + font-size: 13px; + color: var(--dim); +} + +.tip { + font-size: 13px; + color: #999; + border-top: 1px dotted #999; + padding-top: 13px; + line-height: 1.8; +} + +code { + font-size: 13px; + font-family: var(--monospace); + color: var(--yellow); +} + +.file-link { + text-decoration: underline; + cursor: pointer; +} + +kbd { + line-height: 1.5; + font-family: ui-monospace, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + font-size: 0.75rem; + font-weight: 700; + background-color: rgb(38, 40, 44); + color: rgb(166, 167, 171); + padding: 0.15rem 0.3rem; + border-radius: 0.25rem; + border-width: 0.0625rem 0.0625rem 0.1875rem; + border-style: solid; + border-color: rgb(54, 57, 64); + border-image: initial; +} +`; +const createTemplate = () => h("div", { + class: "backdrop", + part: "backdrop" +}, h("div", { + class: "window", + part: "window" +}, h("pre", { + class: "message", + part: "message" +}, h("span", { + class: "plugin", + part: "plugin" +}), h("span", { + class: "message-body", + part: "message-body" +})), h("pre", { + class: "file", + part: "file" +}), h("pre", { + class: "frame", + part: "frame" +}), h("pre", { + class: "stack", + part: "stack" +}), h("div", { + class: "tip", + part: "tip" +}, "Click outside, press ", h("kbd", {}, "Esc"), " key, or fix the code to dismiss.", h("br"), "You can also disable this overlay by setting ", h("code", { part: "config-option-name" }, "server.hmr.overlay"), " to ", h("code", { part: "config-option-value" }, "false"), " in ", h("code", { part: "config-file-name" }, hmrConfigName), ".")), h("style", { nonce: cspNonce }, templateStyle)); +const fileRE = /(?:file:\/\/)?(?:[a-zA-Z]:\\|\/).*?:\d+:\d+/g; +const codeframeRE = /^(?:>?\s*\d+\s+\|.*|\s+\|\s*\^.*)\r?\n/gm; +const { HTMLElement = class {} } = globalThis; +var ErrorOverlay = class extends HTMLElement { + constructor(err, links = true) { + super(); + this.root = this.attachShadow({ mode: "open" }); + this.root.appendChild(createTemplate()); + codeframeRE.lastIndex = 0; + const hasFrame = err.frame && codeframeRE.test(err.frame); + const message = hasFrame ? err.message.replace(codeframeRE, "") : err.message; + if (err.plugin) this.text(".plugin", `[plugin:${err.plugin}] `); + this.text(".message-body", message.trim()); + const [file] = (err.loc?.file || err.id || "unknown file").split(`?`); + if (err.loc) this.text(".file", `${file}:${err.loc.line}:${err.loc.column}`, links); + else if (err.id) this.text(".file", file); + if (hasFrame) this.text(".frame", err.frame.trim()); + this.text(".stack", err.stack, links); + this.root.querySelector(".window").addEventListener("click", (e) => { + e.stopPropagation(); + }); + this.addEventListener("click", () => { + this.close(); + }); + this.closeOnEsc = (e) => { + if (e.key === "Escape" || e.code === "Escape") this.close(); + }; + document.addEventListener("keydown", this.closeOnEsc); + } + text(selector, text, linkFiles = false) { + const el = this.root.querySelector(selector); + if (!linkFiles) el.textContent = text; + else { + let curIndex = 0; + let match; + fileRE.lastIndex = 0; + while (match = fileRE.exec(text)) { + const { 0: file, index } = match; + const frag = text.slice(curIndex, index); + el.appendChild(document.createTextNode(frag)); + const link = document.createElement("a"); + link.textContent = file; + link.className = "file-link"; + link.onclick = () => { + fetch(new URL(`${base$1}__open-in-editor?file=${encodeURIComponent(file)}`, import.meta.url)); + }; + el.appendChild(link); + curIndex += frag.length + file.length; + } + if (curIndex < text.length) el.appendChild(document.createTextNode(text.slice(curIndex))); + } + } + close() { + this.parentNode?.removeChild(this); + document.removeEventListener("keydown", this.closeOnEsc); + } +}; +const overlayId = "vite-error-overlay"; +const { customElements } = globalThis; +if (customElements && !customElements.get("vite-error-overlay")) customElements.define(overlayId, ErrorOverlay); +//#endregion +//#region src/client/client.ts +console.debug("[vite] connecting..."); +const importMetaUrl = new URL(import.meta.url); +const serverHost = __SERVER_HOST__; +const socketProtocol = __HMR_PROTOCOL__ || (importMetaUrl.protocol === "https:" ? "wss" : "ws"); +const hmrPort = __HMR_PORT__; +const socketHost = `${__HMR_HOSTNAME__ || importMetaUrl.hostname}:${hmrPort || importMetaUrl.port}${__HMR_BASE__}`; +const directSocketHost = __HMR_DIRECT_TARGET__; +const base = __BASE__ || "/"; +const hmrTimeout = __HMR_TIMEOUT__; +const wsToken = __WS_TOKEN__; +const isBundleMode = __BUNDLED_DEV__; +const forwardConsole = __SERVER_FORWARD_CONSOLE__; +const transport = normalizeModuleRunnerTransport((() => { + let wsTransport = createWebSocketModuleRunnerTransport({ + createConnection: () => new WebSocket(`${socketProtocol}://${socketHost}?token=${wsToken}`, "vite-hmr"), + pingInterval: hmrTimeout + }); + return { + async connect(handlers) { + try { + await wsTransport.connect(handlers); + } catch (e) { + if (!hmrPort) { + wsTransport = createWebSocketModuleRunnerTransport({ + createConnection: () => new WebSocket(`${socketProtocol}://${directSocketHost}?token=${wsToken}`, "vite-hmr"), + pingInterval: hmrTimeout + }); + try { + await wsTransport.connect(handlers); + console.info("[vite] Direct websocket connection fallback. Check out https://vite.dev/config/server-options.html#server-hmr to remove the previous connection error."); + } catch (e) { + if (e instanceof Error && e.message.includes("WebSocket closed without opened.")) { + const currentScriptHostURL = new URL(import.meta.url); + const currentScriptHost = currentScriptHostURL.host + currentScriptHostURL.pathname.replace(/@vite\/client$/, ""); + console.error(`[vite] failed to connect to websocket. +your current setup: + (browser) ${currentScriptHost} <--[HTTP]--> ${serverHost} (server)\n (browser) ${socketHost} <--[WebSocket (failing)]--> ${directSocketHost} (server)\nCheck out your Vite / network configuration and https://vite.dev/config/server-options.html#server-hmr .`); + } + } + return; + } + console.error(`[vite] failed to connect to websocket (${e}). `); + throw e; + } + }, + async disconnect() { + await wsTransport.disconnect(); + }, + send(data) { + wsTransport.send(data); + } + }; +})()); +let willUnload = false; +if (typeof window !== "undefined") window.addEventListener?.("beforeunload", () => { + willUnload = true; +}); +function cleanUrl(pathname) { + const url = new URL(pathname, "http://vite.dev"); + url.searchParams.delete("direct"); + return url.pathname + url.search; +} +let isFirstUpdate = true; +const outdatedLinkTags = /* @__PURE__ */ new WeakSet(); +const debounceReload = (time) => { + let timer; + return () => { + if (timer) { + clearTimeout(timer); + timer = null; + } + timer = setTimeout(() => { + location.reload(); + }, time); + }; +}; +const pageReload = debounceReload(20); +const hmrClient = new HMRClient({ + error: (err) => console.error("[vite]", err), + debug: (...msg) => console.debug("[vite]", ...msg) +}, transport, isBundleMode ? async function importUpdatedModule({ url, acceptedPath, isWithinCircularImport }) { + const importPromise = import(base + url).then(() => globalThis.__rolldown_runtime__.loadExports(acceptedPath)); + if (isWithinCircularImport) importPromise.catch(() => { + console.info(`[hmr] ${acceptedPath} failed to apply HMR as it's within a circular import. Reloading page to reset the execution order. To debug and break the circular import, you can run \`vite --debug hmr\` to log the circular dependency path if a file change triggered it.`); + pageReload(); + }); + return await importPromise; +} : async function importUpdatedModule({ acceptedPath, timestamp, explicitImportRequired, isWithinCircularImport }) { + const [acceptedPathWithoutQuery, query] = acceptedPath.split(`?`); + const importPromise = import( + /* @vite-ignore */ + base + acceptedPathWithoutQuery.slice(1) + `?${explicitImportRequired ? "import&" : ""}t=${timestamp}${query ? `&${query}` : ""}` +); + if (isWithinCircularImport) importPromise.catch(() => { + console.info(`[hmr] ${acceptedPath} failed to apply HMR as it's within a circular import. Reloading page to reset the execution order. To debug and break the circular import, you can run \`vite --debug hmr\` to log the circular dependency path if a file change triggered it.`); + pageReload(); + }); + return await importPromise; +}); +transport.connect(createHMRHandler(handleMessage)); +setupForwardConsoleHandler(transport, forwardConsole); +async function handleMessage(payload) { + switch (payload.type) { + case "connected": + console.debug(`[vite] connected.`); + break; + case "update": + await hmrClient.notifyListeners("vite:beforeUpdate", payload); + if (hasDocument) if (isFirstUpdate && hasErrorOverlay()) { + location.reload(); + return; + } else { + if (enableOverlay) clearErrorOverlay(); + isFirstUpdate = false; + } + await Promise.all(payload.updates.map(async (update) => { + if (update.type === "js-update") return hmrClient.queueUpdate(update); + const { path, timestamp } = update; + const searchUrl = cleanUrl(path); + const el = Array.from(document.querySelectorAll("link")).find((e) => !outdatedLinkTags.has(e) && cleanUrl(e.href).includes(searchUrl)); + if (!el) return; + const newPath = `${base}${searchUrl.slice(1)}${searchUrl.includes("?") ? "&" : "?"}t=${timestamp}`; + return new Promise((resolve) => { + const newLinkTag = el.cloneNode(); + newLinkTag.href = new URL(newPath, el.href).href; + const removeOldEl = () => { + el.remove(); + console.debug(`[vite] css hot updated: ${searchUrl}`); + resolve(); + }; + newLinkTag.addEventListener("load", removeOldEl); + newLinkTag.addEventListener("error", removeOldEl); + outdatedLinkTags.add(el); + el.after(newLinkTag); + }); + })); + await hmrClient.notifyListeners("vite:afterUpdate", payload); + break; + case "custom": + await hmrClient.notifyListeners(payload.event, payload.data); + if (payload.event === "vite:ws:disconnect") { + if (hasDocument && !willUnload) { + console.log(`[vite] server connection lost. Polling for restart...`); + const socket = payload.data.webSocket; + const url = new URL(socket.url); + url.search = ""; + await waitForSuccessfulPing(url.href); + location.reload(); + } + } + break; + case "full-reload": + await hmrClient.notifyListeners("vite:beforeFullReload", payload); + if (hasDocument) if (payload.path && payload.path.endsWith(".html")) { + const pagePath = decodeURI(location.pathname); + const payloadPath = base + payload.path.slice(1); + if (pagePath === payloadPath || payload.path === "/index.html" || pagePath.endsWith("/") && pagePath + "index.html" === payloadPath) pageReload(); + return; + } else pageReload(); + break; + case "prune": + await hmrClient.notifyListeners("vite:beforePrune", payload); + await hmrClient.prunePaths(payload.paths); + break; + case "error": + await hmrClient.notifyListeners("vite:error", payload); + if (hasDocument) { + const err = payload.err; + if (enableOverlay) createErrorOverlay(err); + else console.error(`[vite] Internal Server Error\n${err.message}\n${err.stack}`); + } + break; + case "ping": break; + default: return payload; + } +} +const enableOverlay = __HMR_ENABLE_OVERLAY__; +const hasDocument = "document" in globalThis; +function createErrorOverlay(err) { + clearErrorOverlay(); + const { customElements } = globalThis; + if (customElements) { + const ErrorOverlayConstructor = customElements.get(overlayId); + document.body.appendChild(new ErrorOverlayConstructor(err)); + } +} +function clearErrorOverlay() { + document.querySelectorAll(overlayId).forEach((n) => n.close()); +} +function hasErrorOverlay() { + return document.querySelectorAll(overlayId).length; +} +function waitForSuccessfulPing(socketUrl) { + if (typeof SharedWorker === "undefined") { + const visibilityManager = { + currentState: document.visibilityState, + listeners: /* @__PURE__ */ new Set() + }; + const onVisibilityChange = () => { + visibilityManager.currentState = document.visibilityState; + for (const listener of visibilityManager.listeners) listener(visibilityManager.currentState); + }; + document.addEventListener("visibilitychange", onVisibilityChange); + return waitForSuccessfulPingInternal(socketUrl, visibilityManager); + } + const blob = new Blob([ + "\"use strict\";", + `const waitForSuccessfulPingInternal = ${waitForSuccessfulPingInternal.toString()};`, + `const fn = ${pingWorkerContentMain.toString()};`, + `fn(${JSON.stringify(socketUrl)})` + ], { type: "application/javascript" }); + const objURL = URL.createObjectURL(blob); + const sharedWorker = new SharedWorker(objURL); + return new Promise((resolve, reject) => { + const onVisibilityChange = () => { + sharedWorker.port.postMessage({ visibility: document.visibilityState }); + }; + document.addEventListener("visibilitychange", onVisibilityChange); + sharedWorker.port.addEventListener("message", (event) => { + document.removeEventListener("visibilitychange", onVisibilityChange); + sharedWorker.port.close(); + const data = event.data; + if (data.type === "error") { + reject(data.error); + return; + } + resolve(); + }); + onVisibilityChange(); + sharedWorker.port.start(); + }); +} +function pingWorkerContentMain(socketUrl) { + self.addEventListener("connect", (_event) => { + const port = _event.ports[0]; + if (!socketUrl) { + port.postMessage({ + type: "error", + error: /* @__PURE__ */ new Error("socketUrl not found") + }); + return; + } + const visibilityManager = { + currentState: "visible", + listeners: /* @__PURE__ */ new Set() + }; + port.addEventListener("message", (event) => { + const { visibility } = event.data; + visibilityManager.currentState = visibility; + console.debug("[vite] new window visibility", visibility); + for (const listener of visibilityManager.listeners) listener(visibility); + }); + port.start(); + console.debug("[vite] connected from window"); + waitForSuccessfulPingInternal(socketUrl, visibilityManager).then(() => { + console.debug("[vite] ping successful"); + try { + port.postMessage({ type: "success" }); + } catch (error) { + port.postMessage({ + type: "error", + error + }); + } + }, (error) => { + console.debug("[vite] error happened", error); + try { + port.postMessage({ + type: "error", + error + }); + } catch (error) { + port.postMessage({ + type: "error", + error + }); + } + }); + }); +} +async function waitForSuccessfulPingInternal(socketUrl, visibilityManager, ms = 1e3) { + function wait(ms) { + return new Promise((resolve) => setTimeout(resolve, ms)); + } + async function ping() { + try { + const socket = new WebSocket(socketUrl, "vite-ping"); + return new Promise((resolve) => { + function onOpen() { + resolve(true); + close(); + } + function onError() { + resolve(false); + close(); + } + function close() { + socket.removeEventListener("open", onOpen); + socket.removeEventListener("error", onError); + socket.close(); + } + socket.addEventListener("open", onOpen); + socket.addEventListener("error", onError); + }); + } catch { + return false; + } + } + function waitForWindowShow(visibilityManager) { + return new Promise((resolve) => { + const onChange = (newVisibility) => { + if (newVisibility === "visible") { + resolve(); + visibilityManager.listeners.delete(onChange); + } + }; + visibilityManager.listeners.add(onChange); + }); + } + if (await ping()) return; + await wait(ms); + while (true) if (visibilityManager.currentState === "visible") { + if (await ping()) break; + await wait(ms); + } else await waitForWindowShow(visibilityManager); +} +const sheetsMap = /* @__PURE__ */ new Map(); +const linkSheetsMap = /* @__PURE__ */ new Map(); +if ("document" in globalThis) { + document.querySelectorAll("style[data-vite-dev-id]").forEach((el) => { + sheetsMap.set(el.getAttribute("data-vite-dev-id"), el); + }); + document.querySelectorAll("link[rel=\"stylesheet\"][data-vite-dev-id]").forEach((el) => { + linkSheetsMap.set(el.getAttribute("data-vite-dev-id"), el); + }); +} +let lastInsertedStyle; +function updateStyle(id, content) { + if (linkSheetsMap.has(id)) return; + let style = sheetsMap.get(id); + if (!style) { + style = document.createElement("style"); + style.setAttribute("type", "text/css"); + style.setAttribute("data-vite-dev-id", id); + style.textContent = content; + if (cspNonce) style.setAttribute("nonce", cspNonce); + if (!lastInsertedStyle) { + document.head.appendChild(style); + setTimeout(() => { + lastInsertedStyle = void 0; + }, 0); + } else lastInsertedStyle.insertAdjacentElement("afterend", style); + lastInsertedStyle = style; + } else style.textContent = content; + sheetsMap.set(id, style); +} +function removeStyle(id) { + if (linkSheetsMap.has(id)) { + document.querySelectorAll(`link[rel="stylesheet"][data-vite-dev-id]`).forEach((el) => { + if (el.getAttribute("data-vite-dev-id") === id) el.remove(); + }); + linkSheetsMap.delete(id); + } + const style = sheetsMap.get(id); + if (style) { + document.head.removeChild(style); + sheetsMap.delete(id); + } +} +function createHotContext(ownerPath) { + return new HMRContext(hmrClient, ownerPath); +} +/** +* urls here are dynamic import() urls that couldn't be statically analyzed +*/ +function injectQuery(url, queryToInject) { + if (url[0] !== "." && url[0] !== "/") return url; + const pathname = url.replace(/[?#].*$/, ""); + const { search, hash } = new URL(url, "http://vite.dev"); + return `${pathname}?${queryToInject}${search ? `&` + search.slice(1) : ""}${hash || ""}`; +} +if (isBundleMode && typeof DevRuntime !== "undefined") { + var _ref; + class ViteDevRuntime extends DevRuntime { + createModuleHotContext(moduleId) { + const ctx = createHotContext(moduleId); + ctx._internal = { + updateStyle, + removeStyle + }; + return ctx; + } + applyUpdates(_boundaries) {} + } + const wrappedSocket = { send(message) { + switch (message.type) { + case "hmr:module-registered": + transport.send({ + type: "custom", + event: "vite:module-loaded", + data: { modules: message.modules.slice() } + }); + break; + default: throw new Error(`Unknown message type: ${JSON.stringify(message)}`); + } + } }; + const clientId = nanoid(); + (_ref = globalThis).__rolldown_runtime__ ?? (_ref.__rolldown_runtime__ = new ViteDevRuntime(wrappedSocket, clientId)); +} +//#endregion +export { ErrorOverlay, createHotContext, injectQuery, removeStyle, updateStyle }; diff --git a/node_modules/vite/dist/client/env.mjs b/node_modules/vite/dist/client/env.mjs new file mode 100644 index 00000000..c7fd1209 --- /dev/null +++ b/node_modules/vite/dist/client/env.mjs @@ -0,0 +1,18 @@ +//#region src/client/env.ts +const context = (() => { + if (typeof globalThis !== "undefined") return globalThis; + else if (typeof self !== "undefined") return self; + else if (typeof window !== "undefined") return window; + else return Function("return this")(); +})(); +const defines = __DEFINES__; +Object.keys(defines).forEach((key) => { + const segments = key.split("."); + let target = context; + for (let i = 0; i < segments.length; i++) { + const segment = segments[i]; + if (i === segments.length - 1) target[segment] = defines[key]; + else target = target[segment] || (target[segment] = {}); + } +}); +//#endregion diff --git a/node_modules/vite/dist/node/chunks/build.js b/node_modules/vite/dist/node/chunks/build.js new file mode 100644 index 00000000..e3f36a3c --- /dev/null +++ b/node_modules/vite/dist/node/chunks/build.js @@ -0,0 +1,5381 @@ +import { i as __require, t as __commonJSMin } from "./chunk.js"; +import { t as require_lib } from "./lib.js"; +//#region ../../node_modules/.pnpm/postcss-modules@6.0.1_postcss@8.5.10/node_modules/postcss-modules/build/fs.js +var require_fs = /* @__PURE__ */ __commonJSMin(((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getFileSystem = getFileSystem; + exports.setFileSystem = setFileSystem; + let fileSystem = { + readFile: () => { + throw Error("readFile not implemented"); + }, + writeFile: () => { + throw Error("writeFile not implemented"); + } + }; + function setFileSystem(fs) { + fileSystem.readFile = fs.readFile; + fileSystem.writeFile = fs.writeFile; + } + function getFileSystem() { + return fileSystem; + } +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-modules@6.0.1_postcss@8.5.10/node_modules/postcss-modules/build/unquote.js +var require_unquote = /* @__PURE__ */ __commonJSMin(((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.default = unquote; + const reg = /['"]/; + function unquote(str) { + if (!str) return ""; + if (reg.test(str.charAt(0))) str = str.substr(1); + if (reg.test(str.charAt(str.length - 1))) str = str.substr(0, str.length - 1); + return str; + } +})); +//#endregion +//#region ../../node_modules/.pnpm/icss-utils@5.1.0_postcss@8.5.10/node_modules/icss-utils/src/replaceValueSymbols.js +var require_replaceValueSymbols = /* @__PURE__ */ __commonJSMin(((exports, module) => { + const matchValueName = /[$]?[\w-]+/g; + const replaceValueSymbols = (value, replacements) => { + let matches; + while (matches = matchValueName.exec(value)) { + const replacement = replacements[matches[0]]; + if (replacement) { + value = value.slice(0, matches.index) + replacement + value.slice(matchValueName.lastIndex); + matchValueName.lastIndex -= matches[0].length - replacement.length; + } + } + return value; + }; + module.exports = replaceValueSymbols; +})); +//#endregion +//#region ../../node_modules/.pnpm/icss-utils@5.1.0_postcss@8.5.10/node_modules/icss-utils/src/replaceSymbols.js +var require_replaceSymbols = /* @__PURE__ */ __commonJSMin(((exports, module) => { + const replaceValueSymbols = require_replaceValueSymbols(); + const replaceSymbols = (css, replacements) => { + css.walk((node) => { + if (node.type === "decl" && node.value) node.value = replaceValueSymbols(node.value.toString(), replacements); + else if (node.type === "rule" && node.selector) node.selector = replaceValueSymbols(node.selector.toString(), replacements); + else if (node.type === "atrule" && node.params) node.params = replaceValueSymbols(node.params.toString(), replacements); + }); + }; + module.exports = replaceSymbols; +})); +//#endregion +//#region ../../node_modules/.pnpm/icss-utils@5.1.0_postcss@8.5.10/node_modules/icss-utils/src/extractICSS.js +var require_extractICSS = /* @__PURE__ */ __commonJSMin(((exports, module) => { + const importPattern = /^:import\(("[^"]*"|'[^']*'|[^"']+)\)$/; + const balancedQuotes = /^("[^"]*"|'[^']*'|[^"']+)$/; + const getDeclsObject = (rule) => { + const object = {}; + rule.walkDecls((decl) => { + const before = decl.raws.before ? decl.raws.before.trim() : ""; + object[before + decl.prop] = decl.value; + }); + return object; + }; + /** + * + * @param {string} css + * @param {boolean} removeRules + * @param {'auto' | 'rule' | 'at-rule'} mode + */ + const extractICSS = (css, removeRules = true, mode = "auto") => { + const icssImports = {}; + const icssExports = {}; + function addImports(node, path) { + const unquoted = path.replace(/'|"/g, ""); + icssImports[unquoted] = Object.assign(icssImports[unquoted] || {}, getDeclsObject(node)); + if (removeRules) node.remove(); + } + function addExports(node) { + Object.assign(icssExports, getDeclsObject(node)); + if (removeRules) node.remove(); + } + css.each((node) => { + if (node.type === "rule" && mode !== "at-rule") { + if (node.selector.slice(0, 7) === ":import") { + const matches = importPattern.exec(node.selector); + if (matches) addImports(node, matches[1]); + } + if (node.selector === ":export") addExports(node); + } + if (node.type === "atrule" && mode !== "rule") { + if (node.name === "icss-import") { + const matches = balancedQuotes.exec(node.params); + if (matches) addImports(node, matches[1]); + } + if (node.name === "icss-export") addExports(node); + } + }); + return { + icssImports, + icssExports + }; + }; + module.exports = extractICSS; +})); +//#endregion +//#region ../../node_modules/.pnpm/icss-utils@5.1.0_postcss@8.5.10/node_modules/icss-utils/src/createICSSRules.js +var require_createICSSRules = /* @__PURE__ */ __commonJSMin(((exports, module) => { + const createImports = (imports, postcss, mode = "rule") => { + return Object.keys(imports).map((path) => { + const aliases = imports[path]; + const declarations = Object.keys(aliases).map((key) => postcss.decl({ + prop: key, + value: aliases[key], + raws: { before: "\n " } + })); + const hasDeclarations = declarations.length > 0; + const rule = mode === "rule" ? postcss.rule({ + selector: `:import('${path}')`, + raws: { after: hasDeclarations ? "\n" : "" } + }) : postcss.atRule({ + name: "icss-import", + params: `'${path}'`, + raws: { after: hasDeclarations ? "\n" : "" } + }); + if (hasDeclarations) rule.append(declarations); + return rule; + }); + }; + const createExports = (exports$7, postcss, mode = "rule") => { + const declarations = Object.keys(exports$7).map((key) => postcss.decl({ + prop: key, + value: exports$7[key], + raws: { before: "\n " } + })); + if (declarations.length === 0) return []; + const rule = mode === "rule" ? postcss.rule({ + selector: `:export`, + raws: { after: "\n" } + }) : postcss.atRule({ + name: "icss-export", + raws: { after: "\n" } + }); + rule.append(declarations); + return [rule]; + }; + const createICSSRules = (imports, exports$8, postcss, mode) => [...createImports(imports, postcss, mode), ...createExports(exports$8, postcss, mode)]; + module.exports = createICSSRules; +})); +//#endregion +//#region ../../node_modules/.pnpm/icss-utils@5.1.0_postcss@8.5.10/node_modules/icss-utils/src/index.js +var require_src$4 = /* @__PURE__ */ __commonJSMin(((exports, module) => { + module.exports = { + replaceValueSymbols: require_replaceValueSymbols(), + replaceSymbols: require_replaceSymbols(), + extractICSS: require_extractICSS(), + createICSSRules: require_createICSSRules() + }; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-modules@6.0.1_postcss@8.5.10/node_modules/postcss-modules/build/Parser.js +var require_Parser = /* @__PURE__ */ __commonJSMin(((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.default = void 0; + var _icssUtils = require_src$4(); + const importRegexp = /^:import\((.+)\)$/; + var Parser = class { + constructor(pathFetcher, trace) { + this.pathFetcher = pathFetcher; + this.plugin = this.plugin.bind(this); + this.exportTokens = {}; + this.translations = {}; + this.trace = trace; + } + plugin() { + const parser = this; + return { + postcssPlugin: "css-modules-parser", + async OnceExit(css) { + await Promise.all(parser.fetchAllImports(css)); + parser.linkImportedSymbols(css); + return parser.extractExports(css); + } + }; + } + fetchAllImports(css) { + let imports = []; + css.each((node) => { + if (node.type == "rule" && node.selector.match(importRegexp)) imports.push(this.fetchImport(node, css.source.input.from, imports.length)); + }); + return imports; + } + linkImportedSymbols(css) { + (0, _icssUtils.replaceSymbols)(css, this.translations); + } + extractExports(css) { + css.each((node) => { + if (node.type == "rule" && node.selector == ":export") this.handleExport(node); + }); + } + handleExport(exportNode) { + exportNode.each((decl) => { + if (decl.type == "decl") { + Object.keys(this.translations).forEach((translation) => { + decl.value = decl.value.replace(translation, this.translations[translation]); + }); + this.exportTokens[decl.prop] = decl.value; + } + }); + exportNode.remove(); + } + async fetchImport(importNode, relativeTo, depNr) { + const file = importNode.selector.match(importRegexp)[1]; + const depTrace = this.trace + String.fromCharCode(depNr); + const exports$6 = await this.pathFetcher(file, relativeTo, depTrace); + try { + importNode.each((decl) => { + if (decl.type == "decl") this.translations[decl.prop] = exports$6[decl.value]; + }); + importNode.remove(); + } catch (err) { + console.log(err); + } + } + }; + exports.default = Parser; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-modules@6.0.1_postcss@8.5.10/node_modules/postcss-modules/build/saveJSON.js +var require_saveJSON = /* @__PURE__ */ __commonJSMin(((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.default = saveJSON; + var _fs = require_fs(); + function saveJSON(cssFile, json) { + return new Promise((resolve, reject) => { + const { writeFile } = (0, _fs.getFileSystem)(); + writeFile(`${cssFile}.json`, JSON.stringify(json), (e) => e ? reject(e) : resolve(json)); + }); + } +})); +//#endregion +//#region ../../node_modules/.pnpm/lodash.camelcase@4.3.0/node_modules/lodash.camelcase/index.js +var require_lodash_camelcase = /* @__PURE__ */ __commonJSMin(((exports, module) => { + /** + * lodash (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright jQuery Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ + /** Used as references for various `Number` constants. */ + var INFINITY = Infinity; + /** `Object#toString` result references. */ + var symbolTag = "[object Symbol]"; + /** Used to match words composed of alphanumeric characters. */ + var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; + /** Used to match Latin Unicode letters (excluding mathematical operators). */ + var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; + /** Used to compose unicode character classes. */ + var rsAstralRange = "\\ud800-\\udfff", rsComboMarksRange = "\\u0300-\\u036f\\ufe20-\\ufe23", rsComboSymbolsRange = "\\u20d0-\\u20f0", rsDingbatRange = "\\u2700-\\u27bf", rsLowerRange = "a-z\\xdf-\\xf6\\xf8-\\xff", rsMathOpRange = "\\xac\\xb1\\xd7\\xf7", rsNonCharRange = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", rsPunctuationRange = "\\u2000-\\u206f", rsSpaceRange = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", rsUpperRange = "A-Z\\xc0-\\xd6\\xd8-\\xde", rsVarRange = "\\ufe0e\\ufe0f", rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; + /** Used to compose unicode capture groups. */ + var rsApos = "['’]", rsAstral = "[" + rsAstralRange + "]", rsBreak = "[" + rsBreakRange + "]", rsCombo = "[" + rsComboMarksRange + rsComboSymbolsRange + "]", rsDigits = "\\d+", rsDingbat = "[" + rsDingbatRange + "]", rsLower = "[" + rsLowerRange + "]", rsMisc = "[^" + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + "]", rsFitz = "\\ud83c[\\udffb-\\udfff]", rsModifier = "(?:" + rsCombo + "|" + rsFitz + ")", rsNonAstral = "[^" + rsAstralRange + "]", rsRegional = "(?:\\ud83c[\\udde6-\\uddff]){2}", rsSurrPair = "[\\ud800-\\udbff][\\udc00-\\udfff]", rsUpper = "[" + rsUpperRange + "]", rsZWJ = "\\u200d"; + /** Used to compose unicode regexes. */ + var rsLowerMisc = "(?:" + rsLower + "|" + rsMisc + ")", rsUpperMisc = "(?:" + rsUpper + "|" + rsMisc + ")", rsOptLowerContr = "(?:" + rsApos + "(?:d|ll|m|re|s|t|ve))?", rsOptUpperContr = "(?:" + rsApos + "(?:D|LL|M|RE|S|T|VE))?", reOptMod = rsModifier + "?", rsOptVar = "[" + rsVarRange + "]?", rsOptJoin = "(?:" + rsZWJ + "(?:" + [ + rsNonAstral, + rsRegional, + rsSurrPair + ].join("|") + ")" + rsOptVar + reOptMod + ")*", rsSeq = rsOptVar + reOptMod + rsOptJoin, rsEmoji = "(?:" + [ + rsDingbat, + rsRegional, + rsSurrPair + ].join("|") + ")" + rsSeq, rsSymbol = "(?:" + [ + rsNonAstral + rsCombo + "?", + rsCombo, + rsRegional, + rsSurrPair, + rsAstral + ].join("|") + ")"; + /** Used to match apostrophes. */ + var reApos = RegExp(rsApos, "g"); + /** + * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and + * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). + */ + var reComboMark = RegExp(rsCombo, "g"); + /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ + var reUnicode = RegExp(rsFitz + "(?=" + rsFitz + ")|" + rsSymbol + rsSeq, "g"); + /** Used to match complex or compound words. */ + var reUnicodeWord = RegExp([ + rsUpper + "?" + rsLower + "+" + rsOptLowerContr + "(?=" + [ + rsBreak, + rsUpper, + "$" + ].join("|") + ")", + rsUpperMisc + "+" + rsOptUpperContr + "(?=" + [ + rsBreak, + rsUpper + rsLowerMisc, + "$" + ].join("|") + ")", + rsUpper + "?" + rsLowerMisc + "+" + rsOptLowerContr, + rsUpper + "+" + rsOptUpperContr, + rsDigits, + rsEmoji + ].join("|"), "g"); + /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ + var reHasUnicode = RegExp("[" + rsZWJ + rsAstralRange + rsComboMarksRange + rsComboSymbolsRange + rsVarRange + "]"); + /** Used to detect strings that need a more robust regexp to match words. */ + var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; + /** Used to map Latin Unicode letters to basic Latin letters. */ + var deburredLetters = { + "À": "A", + "Á": "A", + "Â": "A", + "Ã": "A", + "Ä": "A", + "Å": "A", + "à": "a", + "á": "a", + "â": "a", + "ã": "a", + "ä": "a", + "å": "a", + "Ç": "C", + "ç": "c", + "Ð": "D", + "ð": "d", + "È": "E", + "É": "E", + "Ê": "E", + "Ë": "E", + "è": "e", + "é": "e", + "ê": "e", + "ë": "e", + "Ì": "I", + "Í": "I", + "Î": "I", + "Ï": "I", + "ì": "i", + "í": "i", + "î": "i", + "ï": "i", + "Ñ": "N", + "ñ": "n", + "Ò": "O", + "Ó": "O", + "Ô": "O", + "Õ": "O", + "Ö": "O", + "Ø": "O", + "ò": "o", + "ó": "o", + "ô": "o", + "õ": "o", + "ö": "o", + "ø": "o", + "Ù": "U", + "Ú": "U", + "Û": "U", + "Ü": "U", + "ù": "u", + "ú": "u", + "û": "u", + "ü": "u", + "Ý": "Y", + "ý": "y", + "ÿ": "y", + "Æ": "Ae", + "æ": "ae", + "Þ": "Th", + "þ": "th", + "ß": "ss", + "Ā": "A", + "Ă": "A", + "Ą": "A", + "ā": "a", + "ă": "a", + "ą": "a", + "Ć": "C", + "Ĉ": "C", + "Ċ": "C", + "Č": "C", + "ć": "c", + "ĉ": "c", + "ċ": "c", + "č": "c", + "Ď": "D", + "Đ": "D", + "ď": "d", + "đ": "d", + "Ē": "E", + "Ĕ": "E", + "Ė": "E", + "Ę": "E", + "Ě": "E", + "ē": "e", + "ĕ": "e", + "ė": "e", + "ę": "e", + "ě": "e", + "Ĝ": "G", + "Ğ": "G", + "Ġ": "G", + "Ģ": "G", + "ĝ": "g", + "ğ": "g", + "ġ": "g", + "ģ": "g", + "Ĥ": "H", + "Ħ": "H", + "ĥ": "h", + "ħ": "h", + "Ĩ": "I", + "Ī": "I", + "Ĭ": "I", + "Į": "I", + "İ": "I", + "ĩ": "i", + "ī": "i", + "ĭ": "i", + "į": "i", + "ı": "i", + "Ĵ": "J", + "ĵ": "j", + "Ķ": "K", + "ķ": "k", + "ĸ": "k", + "Ĺ": "L", + "Ļ": "L", + "Ľ": "L", + "Ŀ": "L", + "Ł": "L", + "ĺ": "l", + "ļ": "l", + "ľ": "l", + "ŀ": "l", + "ł": "l", + "Ń": "N", + "Ņ": "N", + "Ň": "N", + "Ŋ": "N", + "ń": "n", + "ņ": "n", + "ň": "n", + "ŋ": "n", + "Ō": "O", + "Ŏ": "O", + "Ő": "O", + "ō": "o", + "ŏ": "o", + "ő": "o", + "Ŕ": "R", + "Ŗ": "R", + "Ř": "R", + "ŕ": "r", + "ŗ": "r", + "ř": "r", + "Ś": "S", + "Ŝ": "S", + "Ş": "S", + "Š": "S", + "ś": "s", + "ŝ": "s", + "ş": "s", + "š": "s", + "Ţ": "T", + "Ť": "T", + "Ŧ": "T", + "ţ": "t", + "ť": "t", + "ŧ": "t", + "Ũ": "U", + "Ū": "U", + "Ŭ": "U", + "Ů": "U", + "Ű": "U", + "Ų": "U", + "ũ": "u", + "ū": "u", + "ŭ": "u", + "ů": "u", + "ű": "u", + "ų": "u", + "Ŵ": "W", + "ŵ": "w", + "Ŷ": "Y", + "ŷ": "y", + "Ÿ": "Y", + "Ź": "Z", + "Ż": "Z", + "Ž": "Z", + "ź": "z", + "ż": "z", + "ž": "z", + "IJ": "IJ", + "ij": "ij", + "Œ": "Oe", + "œ": "oe", + "ʼn": "'n", + "ſ": "ss" + }; + /** Used as a reference to the global object. */ + var root = typeof global == "object" && global && global.Object === Object && global || typeof self == "object" && self && self.Object === Object && self || Function("return this")(); + /** + * A specialized version of `_.reduce` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the first element of `array` as + * the initial value. + * @returns {*} Returns the accumulated value. + */ + function arrayReduce(array, iteratee, accumulator, initAccum) { + var index = -1, length = array ? array.length : 0; + if (initAccum && length) accumulator = array[++index]; + while (++index < length) accumulator = iteratee(accumulator, array[index], index, array); + return accumulator; + } + /** + * Converts an ASCII `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function asciiToArray(string) { + return string.split(""); + } + /** + * Splits an ASCII `string` into an array of its words. + * + * @private + * @param {string} The string to inspect. + * @returns {Array} Returns the words of `string`. + */ + function asciiWords(string) { + return string.match(reAsciiWord) || []; + } + /** + * The base implementation of `_.propertyOf` without support for deep paths. + * + * @private + * @param {Object} object The object to query. + * @returns {Function} Returns the new accessor function. + */ + function basePropertyOf(object) { + return function(key) { + return object == null ? void 0 : object[key]; + }; + } + /** + * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A + * letters to basic Latin letters. + * + * @private + * @param {string} letter The matched letter to deburr. + * @returns {string} Returns the deburred letter. + */ + var deburrLetter = basePropertyOf(deburredLetters); + /** + * Checks if `string` contains Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a symbol is found, else `false`. + */ + function hasUnicode(string) { + return reHasUnicode.test(string); + } + /** + * Checks if `string` contains a word composed of Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a word is found, else `false`. + */ + function hasUnicodeWord(string) { + return reHasUnicodeWord.test(string); + } + /** + * Converts `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function stringToArray(string) { + return hasUnicode(string) ? unicodeToArray(string) : asciiToArray(string); + } + /** + * Converts a Unicode `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function unicodeToArray(string) { + return string.match(reUnicode) || []; + } + /** + * Splits a Unicode `string` into an array of its words. + * + * @private + * @param {string} The string to inspect. + * @returns {Array} Returns the words of `string`. + */ + function unicodeWords(string) { + return string.match(reUnicodeWord) || []; + } + /** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ + var objectToString = Object.prototype.toString; + /** Built-in value references. */ + var Symbol = root.Symbol; + /** Used to convert symbols to primitives and strings. */ + var symbolProto = Symbol ? Symbol.prototype : void 0, symbolToString = symbolProto ? symbolProto.toString : void 0; + /** + * The base implementation of `_.slice` without an iteratee call guard. + * + * @private + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */ + function baseSlice(array, start, end) { + var index = -1, length = array.length; + if (start < 0) start = -start > length ? 0 : length + start; + end = end > length ? length : end; + if (end < 0) end += length; + length = start > end ? 0 : end - start >>> 0; + start >>>= 0; + var result = Array(length); + while (++index < length) result[index] = array[index + start]; + return result; + } + /** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ + function baseToString(value) { + if (typeof value == "string") return value; + if (isSymbol(value)) return symbolToString ? symbolToString.call(value) : ""; + var result = value + ""; + return result == "0" && 1 / value == -INFINITY ? "-0" : result; + } + /** + * Casts `array` to a slice if it's needed. + * + * @private + * @param {Array} array The array to inspect. + * @param {number} start The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the cast slice. + */ + function castSlice(array, start, end) { + var length = array.length; + end = end === void 0 ? length : end; + return !start && end >= length ? array : baseSlice(array, start, end); + } + /** + * Creates a function like `_.lowerFirst`. + * + * @private + * @param {string} methodName The name of the `String` case method to use. + * @returns {Function} Returns the new case function. + */ + function createCaseFirst(methodName) { + return function(string) { + string = toString(string); + var strSymbols = hasUnicode(string) ? stringToArray(string) : void 0; + var chr = strSymbols ? strSymbols[0] : string.charAt(0); + var trailing = strSymbols ? castSlice(strSymbols, 1).join("") : string.slice(1); + return chr[methodName]() + trailing; + }; + } + /** + * Creates a function like `_.camelCase`. + * + * @private + * @param {Function} callback The function to combine each word. + * @returns {Function} Returns the new compounder function. + */ + function createCompounder(callback) { + return function(string) { + return arrayReduce(words(deburr(string).replace(reApos, "")), callback, ""); + }; + } + /** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ + function isObjectLike(value) { + return !!value && typeof value == "object"; + } + /** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ + function isSymbol(value) { + return typeof value == "symbol" || isObjectLike(value) && objectToString.call(value) == symbolTag; + } + /** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {string} Returns the string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ + function toString(value) { + return value == null ? "" : baseToString(value); + } + /** + * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the camel cased string. + * @example + * + * _.camelCase('Foo Bar'); + * // => 'fooBar' + * + * _.camelCase('--foo-bar--'); + * // => 'fooBar' + * + * _.camelCase('__FOO_BAR__'); + * // => 'fooBar' + */ + var camelCase = createCompounder(function(result, word, index) { + word = word.toLowerCase(); + return result + (index ? capitalize(word) : word); + }); + /** + * Converts the first character of `string` to upper case and the remaining + * to lower case. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to capitalize. + * @returns {string} Returns the capitalized string. + * @example + * + * _.capitalize('FRED'); + * // => 'Fred' + */ + function capitalize(string) { + return upperFirst(toString(string).toLowerCase()); + } + /** + * Deburrs `string` by converting + * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) + * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A) + * letters to basic Latin letters and removing + * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to deburr. + * @returns {string} Returns the deburred string. + * @example + * + * _.deburr('déjà vu'); + * // => 'deja vu' + */ + function deburr(string) { + string = toString(string); + return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ""); + } + /** + * Converts the first character of `string` to upper case. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.upperFirst('fred'); + * // => 'Fred' + * + * _.upperFirst('FRED'); + * // => 'FRED' + */ + var upperFirst = createCaseFirst("toUpperCase"); + /** + * Splits `string` into an array of its words. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to inspect. + * @param {RegExp|string} [pattern] The pattern to match words. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the words of `string`. + * @example + * + * _.words('fred, barney, & pebbles'); + * // => ['fred', 'barney', 'pebbles'] + * + * _.words('fred, barney, & pebbles', /[^, ]+/g); + * // => ['fred', 'barney', '&', 'pebbles'] + */ + function words(string, pattern, guard) { + string = toString(string); + pattern = guard ? void 0 : pattern; + if (pattern === void 0) return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string); + return string.match(pattern) || []; + } + module.exports = camelCase; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-modules@6.0.1_postcss@8.5.10/node_modules/postcss-modules/build/localsConvention.js +var require_localsConvention = /* @__PURE__ */ __commonJSMin(((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.makeLocalsConventionReducer = makeLocalsConventionReducer; + var _lodash = _interopRequireDefault(require_lodash_camelcase()); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + function dashesCamelCase(string) { + return string.replace(/-+(\w)/g, (_, firstLetter) => firstLetter.toUpperCase()); + } + function makeLocalsConventionReducer(localsConvention, inputFile) { + const isFunc = typeof localsConvention === "function"; + return (tokens, [className, value]) => { + if (isFunc) { + const convention = localsConvention(className, value, inputFile); + tokens[convention] = value; + return tokens; + } + switch (localsConvention) { + case "camelCase": + tokens[className] = value; + tokens[(0, _lodash.default)(className)] = value; + break; + case "camelCaseOnly": + tokens[(0, _lodash.default)(className)] = value; + break; + case "dashes": + tokens[className] = value; + tokens[dashesCamelCase(className)] = value; + break; + case "dashesOnly": + tokens[dashesCamelCase(className)] = value; + break; + } + return tokens; + }; + } +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-modules@6.0.1_postcss@8.5.10/node_modules/postcss-modules/build/FileSystemLoader.js +var require_FileSystemLoader = /* @__PURE__ */ __commonJSMin(((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.default = void 0; + var _postcss$1 = _interopRequireDefault(__require("postcss")); + var _path = _interopRequireDefault(__require("path")); + var _Parser = _interopRequireDefault(require_Parser()); + var _fs = require_fs(); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + var Core = class Core { + constructor(plugins) { + this.plugins = plugins || Core.defaultPlugins; + } + async load(sourceString, sourcePath, trace, pathFetcher) { + const parser = new _Parser.default(pathFetcher, trace); + const plugins = this.plugins.concat([parser.plugin()]); + return { + injectableSource: (await (0, _postcss$1.default)(plugins).process(sourceString, { from: sourcePath })).css, + exportTokens: parser.exportTokens + }; + } + }; + const traceKeySorter = (a, b) => { + if (a.length < b.length) return a < b.substring(0, a.length) ? -1 : 1; + if (a.length > b.length) return a.substring(0, b.length) <= b ? -1 : 1; + return a < b ? -1 : 1; + }; + var FileSystemLoader = class { + constructor(root, plugins, fileResolve) { + if (root === "/" && process.platform === "win32") { + const cwdDrive = process.cwd().slice(0, 3); + if (!/^[A-Za-z]:\\$/.test(cwdDrive)) throw new Error(`Failed to obtain root from "${process.cwd()}".`); + root = cwdDrive; + } + this.root = root; + this.fileResolve = fileResolve; + this.sources = {}; + this.traces = {}; + this.importNr = 0; + this.core = new Core(plugins); + this.tokensByFile = {}; + this.fs = (0, _fs.getFileSystem)(); + } + async fetch(_newPath, relativeTo, _trace) { + const newPath = _newPath.replace(/^["']|["']$/g, ""); + const trace = _trace || String.fromCharCode(this.importNr++); + const useFileResolve = typeof this.fileResolve === "function"; + const fileResolvedPath = useFileResolve ? await this.fileResolve(newPath, relativeTo) : await Promise.resolve(); + if (fileResolvedPath && !_path.default.isAbsolute(fileResolvedPath)) throw new Error("The returned path from the \"fileResolve\" option must be absolute."); + const relativeDir = _path.default.dirname(relativeTo); + const rootRelativePath = fileResolvedPath || _path.default.resolve(relativeDir, newPath); + let fileRelativePath = fileResolvedPath || _path.default.resolve(_path.default.resolve(this.root, relativeDir), newPath); + if (!useFileResolve && newPath[0] !== "." && !_path.default.isAbsolute(newPath)) try { + fileRelativePath = __require.resolve(newPath); + } catch (e) {} + const tokens = this.tokensByFile[fileRelativePath]; + if (tokens) return tokens; + return new Promise((resolve, reject) => { + this.fs.readFile(fileRelativePath, "utf-8", async (err, source) => { + if (err) reject(err); + const { injectableSource, exportTokens } = await this.core.load(source, rootRelativePath, trace, this.fetch.bind(this)); + this.sources[fileRelativePath] = injectableSource; + this.traces[trace] = fileRelativePath; + this.tokensByFile[fileRelativePath] = exportTokens; + resolve(exportTokens); + }); + }); + } + get finalSource() { + const traces = this.traces; + const sources = this.sources; + let written = /* @__PURE__ */ new Set(); + return Object.keys(traces).sort(traceKeySorter).map((key) => { + const filename = traces[key]; + if (written.has(filename)) return null; + written.add(filename); + return sources[filename]; + }).join(""); + } + }; + exports.default = FileSystemLoader; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-modules-extract-imports@3.1.0_postcss@8.5.10/node_modules/postcss-modules-extract-imports/src/topologicalSort.js +var require_topologicalSort = /* @__PURE__ */ __commonJSMin(((exports, module) => { + const PERMANENT_MARKER = 2; + const TEMPORARY_MARKER = 1; + function createError(node, graph) { + const er = /* @__PURE__ */ new Error("Nondeterministic import's order"); + er.nodes = [node, graph[node].find((relatedNode) => graph[relatedNode].indexOf(node) > -1)]; + return er; + } + function walkGraph(node, graph, state, result, strict) { + if (state[node] === PERMANENT_MARKER) return; + if (state[node] === TEMPORARY_MARKER) { + if (strict) return createError(node, graph); + return; + } + state[node] = TEMPORARY_MARKER; + const children = graph[node]; + const length = children.length; + for (let i = 0; i < length; ++i) { + const error = walkGraph(children[i], graph, state, result, strict); + if (error instanceof Error) return error; + } + state[node] = PERMANENT_MARKER; + result.push(node); + } + function topologicalSort(graph, strict) { + const result = []; + const state = {}; + const nodes = Object.keys(graph); + const length = nodes.length; + for (let i = 0; i < length; ++i) { + const er = walkGraph(nodes[i], graph, state, result, strict); + if (er instanceof Error) return er; + } + return result; + } + module.exports = topologicalSort; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-modules-extract-imports@3.1.0_postcss@8.5.10/node_modules/postcss-modules-extract-imports/src/index.js +var require_src$3 = /* @__PURE__ */ __commonJSMin(((exports, module) => { + const topologicalSort = require_topologicalSort(); + const matchImports = /^(.+?)\s+from\s+(?:"([^"]+)"|'([^']+)'|(global))$/; + const icssImport = /^:import\((?:"([^"]+)"|'([^']+)')\)/; + const VISITED_MARKER = 1; + /** + * :import('G') {} + * + * Rule + * composes: ... from 'A' + * composes: ... from 'B' + + * Rule + * composes: ... from 'A' + * composes: ... from 'A' + * composes: ... from 'C' + * + * Results in: + * + * graph: { + * G: [], + * A: [], + * B: ['A'], + * C: ['A'], + * } + */ + function addImportToGraph(importId, parentId, graph, visited) { + const siblingsId = parentId + "_siblings"; + const visitedId = parentId + "_" + importId; + if (visited[visitedId] !== VISITED_MARKER) { + if (!Array.isArray(visited[siblingsId])) visited[siblingsId] = []; + const siblings = visited[siblingsId]; + if (Array.isArray(graph[importId])) graph[importId] = graph[importId].concat(siblings); + else graph[importId] = siblings.slice(); + visited[visitedId] = VISITED_MARKER; + siblings.push(importId); + } + } + module.exports = (options = {}) => { + let importIndex = 0; + const createImportedName = typeof options.createImportedName !== "function" ? (importName) => `i__imported_${importName.replace(/\W/g, "_")}_${importIndex++}` : options.createImportedName; + const failOnWrongOrder = options.failOnWrongOrder; + return { + postcssPlugin: "postcss-modules-extract-imports", + prepare() { + const graph = {}; + const visited = {}; + const existingImports = {}; + const importDecls = {}; + const imports = {}; + return { Once(root, postcss) { + root.walkRules((rule) => { + const matches = icssImport.exec(rule.selector); + if (matches) { + const [, doubleQuotePath, singleQuotePath] = matches; + const importPath = doubleQuotePath || singleQuotePath; + addImportToGraph(importPath, "root", graph, visited); + existingImports[importPath] = rule; + } + }); + root.walkDecls(/^composes$/, (declaration) => { + const multiple = declaration.value.split(","); + const values = []; + multiple.forEach((value) => { + const matches = value.trim().match(matchImports); + if (!matches) { + values.push(value); + return; + } + let tmpSymbols; + let [, symbols, doubleQuotePath, singleQuotePath, global] = matches; + if (global) tmpSymbols = symbols.split(/\s+/).map((s) => `global(${s})`); + else { + const importPath = doubleQuotePath || singleQuotePath; + let parent = declaration.parent; + let parentIndexes = ""; + while (parent.type !== "root") { + parentIndexes = parent.parent.index(parent) + "_" + parentIndexes; + parent = parent.parent; + } + const { selector } = declaration.parent; + addImportToGraph(importPath, `_${parentIndexes}${selector}`, graph, visited); + importDecls[importPath] = declaration; + imports[importPath] = imports[importPath] || {}; + tmpSymbols = symbols.split(/\s+/).map((s) => { + if (!imports[importPath][s]) imports[importPath][s] = createImportedName(s, importPath); + return imports[importPath][s]; + }); + } + values.push(tmpSymbols.join(" ")); + }); + declaration.value = values.join(", "); + }); + const importsOrder = topologicalSort(graph, failOnWrongOrder); + if (importsOrder instanceof Error) throw importDecls[importsOrder.nodes.find((importPath) => importDecls.hasOwnProperty(importPath))].error("Failed to resolve order of composed modules " + importsOrder.nodes.map((importPath) => "`" + importPath + "`").join(", ") + ".", { + plugin: "postcss-modules-extract-imports", + word: "composes" + }); + let lastImportRule; + importsOrder.forEach((path) => { + const importedSymbols = imports[path]; + let rule = existingImports[path]; + if (!rule && importedSymbols) { + rule = postcss.rule({ + selector: `:import("${path}")`, + raws: { after: "\n" } + }); + if (lastImportRule) root.insertAfter(lastImportRule, rule); + else root.prepend(rule); + } + lastImportRule = rule; + if (!importedSymbols) return; + Object.keys(importedSymbols).forEach((importedSymbol) => { + rule.append(postcss.decl({ + value: importedSymbol, + prop: importedSymbols[importedSymbol], + raws: { before: "\n " } + })); + }); + }); + } }; + } + }; + }; + module.exports.postcss = true; +})); +//#endregion +//#region ../../node_modules/.pnpm/loader-utils@3.3.1/node_modules/loader-utils/lib/hash/wasm-hash.js +var require_wasm_hash = /* @__PURE__ */ __commonJSMin(((exports, module) => { + const MAX_SHORT_STRING = Math.floor(65472 / 4) & -4; + var WasmHash = class { + /** + * @param {WebAssembly.Instance} instance wasm instance + * @param {WebAssembly.Instance[]} instancesPool pool of instances + * @param {number} chunkSize size of data chunks passed to wasm + * @param {number} digestSize size of digest returned by wasm + */ + constructor(instance, instancesPool, chunkSize, digestSize) { + const exports$2 = instance.exports; + exports$2.init(); + this.exports = exports$2; + this.mem = Buffer.from(exports$2.memory.buffer, 0, 65536); + this.buffered = 0; + this.instancesPool = instancesPool; + this.chunkSize = chunkSize; + this.digestSize = digestSize; + } + reset() { + this.buffered = 0; + this.exports.init(); + } + /** + * @param {Buffer | string} data data + * @param {BufferEncoding=} encoding encoding + * @returns {this} itself + */ + update(data, encoding) { + if (typeof data === "string") { + while (data.length > MAX_SHORT_STRING) { + this._updateWithShortString(data.slice(0, MAX_SHORT_STRING), encoding); + data = data.slice(MAX_SHORT_STRING); + } + this._updateWithShortString(data, encoding); + return this; + } + this._updateWithBuffer(data); + return this; + } + /** + * @param {string} data data + * @param {BufferEncoding=} encoding encoding + * @returns {void} + */ + _updateWithShortString(data, encoding) { + const { exports: exports$3, buffered, mem, chunkSize } = this; + let endPos; + if (data.length < 70) if (!encoding || encoding === "utf-8" || encoding === "utf8") { + endPos = buffered; + for (let i = 0; i < data.length; i++) { + const cc = data.charCodeAt(i); + if (cc < 128) mem[endPos++] = cc; + else if (cc < 2048) { + mem[endPos] = cc >> 6 | 192; + mem[endPos + 1] = cc & 63 | 128; + endPos += 2; + } else { + endPos += mem.write(data.slice(i), endPos, encoding); + break; + } + } + } else if (encoding === "latin1") { + endPos = buffered; + for (let i = 0; i < data.length; i++) { + const cc = data.charCodeAt(i); + mem[endPos++] = cc; + } + } else endPos = buffered + mem.write(data, buffered, encoding); + else endPos = buffered + mem.write(data, buffered, encoding); + if (endPos < chunkSize) this.buffered = endPos; + else { + const l = endPos & ~(this.chunkSize - 1); + exports$3.update(l); + const newBuffered = endPos - l; + this.buffered = newBuffered; + if (newBuffered > 0) mem.copyWithin(0, l, endPos); + } + } + /** + * @param {Buffer} data data + * @returns {void} + */ + _updateWithBuffer(data) { + const { exports: exports$4, buffered, mem } = this; + const length = data.length; + if (buffered + length < this.chunkSize) { + data.copy(mem, buffered, 0, length); + this.buffered += length; + } else { + const l = buffered + length & ~(this.chunkSize - 1); + if (l > 65536) { + let i = 65536 - buffered; + data.copy(mem, buffered, 0, i); + exports$4.update(65536); + const stop = l - buffered - 65536; + while (i < stop) { + data.copy(mem, 0, i, i + 65536); + exports$4.update(65536); + i += 65536; + } + data.copy(mem, 0, i, l - buffered); + exports$4.update(l - buffered - i); + } else { + data.copy(mem, buffered, 0, l - buffered); + exports$4.update(l); + } + const newBuffered = length + buffered - l; + this.buffered = newBuffered; + if (newBuffered > 0) data.copy(mem, 0, length - newBuffered, length); + } + } + digest(type) { + const { exports: exports$5, buffered, mem, digestSize } = this; + exports$5.final(buffered); + this.instancesPool.push(this); + const hex = mem.toString("latin1", 0, digestSize); + if (type === "hex") return hex; + if (type === "binary" || !type) return Buffer.from(hex, "hex"); + return Buffer.from(hex, "hex").toString(type); + } + }; + const create = (wasmModule, instancesPool, chunkSize, digestSize) => { + if (instancesPool.length > 0) { + const old = instancesPool.pop(); + old.reset(); + return old; + } else return new WasmHash(new WebAssembly.Instance(wasmModule), instancesPool, chunkSize, digestSize); + }; + module.exports = create; + module.exports.MAX_SHORT_STRING = MAX_SHORT_STRING; +})); +//#endregion +//#region ../../node_modules/.pnpm/loader-utils@3.3.1/node_modules/loader-utils/lib/hash/xxhash64.js +var require_xxhash64 = /* @__PURE__ */ __commonJSMin(((exports, module) => { + const create = require_wasm_hash(); + const xxhash64 = new WebAssembly.Module(Buffer.from("AGFzbQEAAAABCAJgAX8AYAAAAwQDAQAABQMBAAEGGgV+AUIAC34BQgALfgFCAAt+AUIAC34BQgALByIEBGluaXQAAAZ1cGRhdGUAAQVmaW5hbAACBm1lbW9yeQIACrUIAzAAQtbrgu7q/Yn14AAkAELP1tO+0ser2UIkAUIAJAJC+erQ0OfJoeThACQDQgAkBAvUAQIBfwR+IABFBEAPCyMEIACtfCQEIwAhAiMBIQMjAiEEIwMhBQNAIAIgASkDAELP1tO+0ser2UJ+fEIfiUKHla+vmLbem55/fiECIAMgASkDCELP1tO+0ser2UJ+fEIfiUKHla+vmLbem55/fiEDIAQgASkDEELP1tO+0ser2UJ+fEIfiUKHla+vmLbem55/fiEEIAUgASkDGELP1tO+0ser2UJ+fEIfiUKHla+vmLbem55/fiEFIAAgAUEgaiIBSw0ACyACJAAgAyQBIAQkAiAFJAMLqwYCAX8EfiMEQgBSBH4jACICQgGJIwEiA0IHiXwjAiIEQgyJfCMDIgVCEol8IAJCz9bTvtLHq9lCfkIfiUKHla+vmLbem55/foVCh5Wvr5i23puef35CnaO16oOxjYr6AH0gA0LP1tO+0ser2UJ+Qh+JQoeVr6+Ytt6bnn9+hUKHla+vmLbem55/fkKdo7Xqg7GNivoAfSAEQs/W077Sx6vZQn5CH4lCh5Wvr5i23puef36FQoeVr6+Ytt6bnn9+Qp2jteqDsY2K+gB9IAVCz9bTvtLHq9lCfkIfiUKHla+vmLbem55/foVCh5Wvr5i23puef35CnaO16oOxjYr6AH0FQsXP2bLx5brqJwsjBCAArXx8IQIDQCABQQhqIABNBEAgAiABKQMAQs/W077Sx6vZQn5CH4lCh5Wvr5i23puef36FQhuJQoeVr6+Ytt6bnn9+Qp2jteqDsY2K+gB9IQIgAUEIaiEBDAELCyABQQRqIABNBEACfyACIAE1AgBCh5Wvr5i23puef36FQheJQs/W077Sx6vZQn5C+fPd8Zn2masWfCECIAFBBGoLIQELA0AgACABRwRAIAIgATEAAELFz9my8eW66id+hUILiUKHla+vmLbem55/fiECIAFBAWohAQwBCwtBACACIAJCIYiFQs/W077Sx6vZQn4iAiACQh2IhUL5893xmfaZqxZ+IgIgAkIgiIUiAkIgiCIDQv//A4NCIIYgA0KAgPz/D4NCEIiEIgNC/4GAgPAfg0IQhiADQoD+g4CA4D+DQgiIhCIDQo+AvIDwgcAHg0IIhiADQvCBwIeAnoD4AINCBIiEIgNChoyYsODAgYMGfEIEiEKBgoSIkKDAgAGDQid+IANCsODAgYOGjJgwhHw3AwBBCCACQv////8PgyICQv//A4NCIIYgAkKAgPz/D4NCEIiEIgJC/4GAgPAfg0IQhiACQoD+g4CA4D+DQgiIhCICQo+AvIDwgcAHg0IIhiACQvCBwIeAnoD4AINCBIiEIgJChoyYsODAgYMGfEIEiEKBgoSIkKDAgAGDQid+IAJCsODAgYOGjJgwhHw3AwAL", "base64")); + module.exports = create.bind(null, xxhash64, [], 32, 16); +})); +//#endregion +//#region ../../node_modules/.pnpm/loader-utils@3.3.1/node_modules/loader-utils/lib/hash/BatchedHash.js +var require_BatchedHash = /* @__PURE__ */ __commonJSMin(((exports, module) => { + const MAX_SHORT_STRING = require_wasm_hash().MAX_SHORT_STRING; + var BatchedHash = class { + constructor(hash) { + this.string = void 0; + this.encoding = void 0; + this.hash = hash; + } + /** + * Update hash {@link https://nodejs.org/api/crypto.html#crypto_hash_update_data_inputencoding} + * @param {string|Buffer} data data + * @param {string=} inputEncoding data encoding + * @returns {this} updated hash + */ + update(data, inputEncoding) { + if (this.string !== void 0) { + if (typeof data === "string" && inputEncoding === this.encoding && this.string.length + data.length < MAX_SHORT_STRING) { + this.string += data; + return this; + } + this.hash.update(this.string, this.encoding); + this.string = void 0; + } + if (typeof data === "string") if (data.length < MAX_SHORT_STRING && (!inputEncoding || !inputEncoding.startsWith("ba"))) { + this.string = data; + this.encoding = inputEncoding; + } else this.hash.update(data, inputEncoding); + else this.hash.update(data); + return this; + } + /** + * Calculates the digest {@link https://nodejs.org/api/crypto.html#crypto_hash_digest_encoding} + * @param {string=} encoding encoding of the return value + * @returns {string|Buffer} digest + */ + digest(encoding) { + if (this.string !== void 0) this.hash.update(this.string, this.encoding); + return this.hash.digest(encoding); + } + }; + module.exports = BatchedHash; +})); +//#endregion +//#region ../../node_modules/.pnpm/loader-utils@3.3.1/node_modules/loader-utils/lib/hash/md4.js +var require_md4 = /* @__PURE__ */ __commonJSMin(((exports, module) => { + const create = require_wasm_hash(); + const md4 = new WebAssembly.Module(Buffer.from("AGFzbQEAAAABCAJgAX8AYAAAAwUEAQAAAAUDAQABBhoFfwFBAAt/AUEAC38BQQALfwFBAAt/AUEACwciBARpbml0AAAGdXBkYXRlAAIFZmluYWwAAwZtZW1vcnkCAAqFEAQmAEGBxpS6BiQBQYnXtv5+JAJB/rnrxXkkA0H2qMmBASQEQQAkAAvMCgEYfyMBIQojAiEGIwMhByMEIQgDQCAAIAVLBEAgBSgCCCINIAcgBiAFKAIEIgsgCCAHIAUoAgAiDCAKIAggBiAHIAhzcXNqakEDdyIDIAYgB3Nxc2pqQQd3IgEgAyAGc3FzampBC3chAiAFKAIUIg8gASACIAUoAhAiCSADIAEgBSgCDCIOIAYgAyACIAEgA3Nxc2pqQRN3IgQgASACc3FzampBA3ciAyACIARzcXNqakEHdyEBIAUoAiAiEiADIAEgBSgCHCIRIAQgAyAFKAIYIhAgAiAEIAEgAyAEc3FzampBC3ciAiABIANzcXNqakETdyIEIAEgAnNxc2pqQQN3IQMgBSgCLCIVIAQgAyAFKAIoIhQgAiAEIAUoAiQiEyABIAIgAyACIARzcXNqakEHdyIBIAMgBHNxc2pqQQt3IgIgASADc3FzampBE3chBCAPIBAgCSAVIBQgEyAFKAI4IhYgAiAEIAUoAjQiFyABIAIgBSgCMCIYIAMgASAEIAEgAnNxc2pqQQN3IgEgAiAEc3FzampBB3ciAiABIARzcXNqakELdyIDIAkgAiAMIAEgBSgCPCIJIAQgASADIAEgAnNxc2pqQRN3IgEgAiADcnEgAiADcXJqakGZ84nUBWpBA3ciAiABIANycSABIANxcmpqQZnzidQFakEFdyIEIAEgAnJxIAEgAnFyaiASakGZ84nUBWpBCXciAyAPIAQgCyACIBggASADIAIgBHJxIAIgBHFyampBmfOJ1AVqQQ13IgEgAyAEcnEgAyAEcXJqakGZ84nUBWpBA3ciAiABIANycSABIANxcmpqQZnzidQFakEFdyIEIAEgAnJxIAEgAnFyampBmfOJ1AVqQQl3IgMgECAEIAIgFyABIAMgAiAEcnEgAiAEcXJqakGZ84nUBWpBDXciASADIARycSADIARxcmogDWpBmfOJ1AVqQQN3IgIgASADcnEgASADcXJqakGZ84nUBWpBBXciBCABIAJycSABIAJxcmpqQZnzidQFakEJdyIDIBEgBCAOIAIgFiABIAMgAiAEcnEgAiAEcXJqakGZ84nUBWpBDXciASADIARycSADIARxcmpqQZnzidQFakEDdyICIAEgA3JxIAEgA3FyampBmfOJ1AVqQQV3IgQgASACcnEgASACcXJqakGZ84nUBWpBCXciAyAMIAIgAyAJIAEgAyACIARycSACIARxcmpqQZnzidQFakENdyIBcyAEc2pqQaHX5/YGakEDdyICIAQgASACcyADc2ogEmpBodfn9gZqQQl3IgRzIAFzampBodfn9gZqQQt3IgMgAiADIBggASADIARzIAJzampBodfn9gZqQQ93IgFzIARzaiANakGh1+f2BmpBA3ciAiAUIAQgASACcyADc2pqQaHX5/YGakEJdyIEcyABc2pqQaHX5/YGakELdyIDIAsgAiADIBYgASADIARzIAJzampBodfn9gZqQQ93IgFzIARzampBodfn9gZqQQN3IgIgEyAEIAEgAnMgA3NqakGh1+f2BmpBCXciBHMgAXNqakGh1+f2BmpBC3chAyAKIA4gAiADIBcgASADIARzIAJzampBodfn9gZqQQ93IgFzIARzampBodfn9gZqQQN3IgJqIQogBiAJIAEgESADIAIgFSAEIAEgAnMgA3NqakGh1+f2BmpBCXciBHMgAXNqakGh1+f2BmpBC3ciAyAEcyACc2pqQaHX5/YGakEPd2ohBiADIAdqIQcgBCAIaiEIIAVBQGshBQwBCwsgCiQBIAYkAiAHJAMgCCQECw0AIAAQASMAIABqJAAL/wQCA38BfiMAIABqrUIDhiEEIABByABqQUBxIgJBCGshAyAAIgFBAWohACABQYABOgAAA0AgACACSUEAIABBB3EbBEAgAEEAOgAAIABBAWohAAwBCwsDQCAAIAJJBEAgAEIANwMAIABBCGohAAwBCwsgAyAENwMAIAIQAUEAIwGtIgRC//8DgyAEQoCA/P8Pg0IQhoQiBEL/gYCA8B+DIARCgP6DgIDgP4NCCIaEIgRCj4C8gPCBwAeDQgiGIARC8IHAh4CegPgAg0IEiIQiBEKGjJiw4MCBgwZ8QgSIQoGChIiQoMCAAYNCJ34gBEKw4MCBg4aMmDCEfDcDAEEIIwKtIgRC//8DgyAEQoCA/P8Pg0IQhoQiBEL/gYCA8B+DIARCgP6DgIDgP4NCCIaEIgRCj4C8gPCBwAeDQgiGIARC8IHAh4CegPgAg0IEiIQiBEKGjJiw4MCBgwZ8QgSIQoGChIiQoMCAAYNCJ34gBEKw4MCBg4aMmDCEfDcDAEEQIwOtIgRC//8DgyAEQoCA/P8Pg0IQhoQiBEL/gYCA8B+DIARCgP6DgIDgP4NCCIaEIgRCj4C8gPCBwAeDQgiGIARC8IHAh4CegPgAg0IEiIQiBEKGjJiw4MCBgwZ8QgSIQoGChIiQoMCAAYNCJ34gBEKw4MCBg4aMmDCEfDcDAEEYIwStIgRC//8DgyAEQoCA/P8Pg0IQhoQiBEL/gYCA8B+DIARCgP6DgIDgP4NCCIaEIgRCj4C8gPCBwAeDQgiGIARC8IHAh4CegPgAg0IEiIQiBEKGjJiw4MCBgwZ8QgSIQoGChIiQoMCAAYNCJ34gBEKw4MCBg4aMmDCEfDcDAAs=", "base64")); + module.exports = create.bind(null, md4, [], 64, 32); +})); +//#endregion +//#region ../../node_modules/.pnpm/loader-utils@3.3.1/node_modules/loader-utils/lib/hash/BulkUpdateDecorator.js +var require_BulkUpdateDecorator = /* @__PURE__ */ __commonJSMin(((exports, module) => { + const BULK_SIZE = 2e3; + const digestCaches = {}; + var BulkUpdateDecorator = class { + /** + * @param {Hash | function(): Hash} hashOrFactory function to create a hash + * @param {string=} hashKey key for caching + */ + constructor(hashOrFactory, hashKey) { + this.hashKey = hashKey; + if (typeof hashOrFactory === "function") { + this.hashFactory = hashOrFactory; + this.hash = void 0; + } else { + this.hashFactory = void 0; + this.hash = hashOrFactory; + } + this.buffer = ""; + } + /** + * Update hash {@link https://nodejs.org/api/crypto.html#crypto_hash_update_data_inputencoding} + * @param {string|Buffer} data data + * @param {string=} inputEncoding data encoding + * @returns {this} updated hash + */ + update(data, inputEncoding) { + if (inputEncoding !== void 0 || typeof data !== "string" || data.length > BULK_SIZE) { + if (this.hash === void 0) this.hash = this.hashFactory(); + if (this.buffer.length > 0) { + this.hash.update(this.buffer); + this.buffer = ""; + } + this.hash.update(data, inputEncoding); + } else { + this.buffer += data; + if (this.buffer.length > BULK_SIZE) { + if (this.hash === void 0) this.hash = this.hashFactory(); + this.hash.update(this.buffer); + this.buffer = ""; + } + } + return this; + } + /** + * Calculates the digest {@link https://nodejs.org/api/crypto.html#crypto_hash_digest_encoding} + * @param {string=} encoding encoding of the return value + * @returns {string|Buffer} digest + */ + digest(encoding) { + let digestCache; + const buffer = this.buffer; + if (this.hash === void 0) { + const cacheKey = `${this.hashKey}-${encoding}`; + digestCache = digestCaches[cacheKey]; + if (digestCache === void 0) digestCache = digestCaches[cacheKey] = /* @__PURE__ */ new Map(); + const cacheEntry = digestCache.get(buffer); + if (cacheEntry !== void 0) return cacheEntry; + this.hash = this.hashFactory(); + } + if (buffer.length > 0) this.hash.update(buffer); + const digestResult = this.hash.digest(encoding); + if (digestCache !== void 0) digestCache.set(buffer, digestResult); + return digestResult; + } + }; + module.exports = BulkUpdateDecorator; +})); +//#endregion +//#region ../../node_modules/.pnpm/loader-utils@3.3.1/node_modules/loader-utils/lib/getHashDigest.js +var require_getHashDigest = /* @__PURE__ */ __commonJSMin(((exports, module) => { + const baseEncodeTables = { + 26: "abcdefghijklmnopqrstuvwxyz", + 32: "123456789abcdefghjkmnpqrstuvwxyz", + 36: "0123456789abcdefghijklmnopqrstuvwxyz", + 49: "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ", + 52: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", + 58: "123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ", + 62: "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", + 64: "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_" + }; + /** + * @param {Uint32Array} uint32Array Treated as a long base-0x100000000 number, little endian + * @param {number} divisor The divisor + * @return {number} Modulo (remainder) of the division + */ + function divmod32(uint32Array, divisor) { + let carry = 0; + for (let i = uint32Array.length - 1; i >= 0; i--) { + const value = carry * 4294967296 + uint32Array[i]; + carry = value % divisor; + uint32Array[i] = Math.floor(value / divisor); + } + return carry; + } + function encodeBufferToBase(buffer, base, length) { + const encodeTable = baseEncodeTables[base]; + if (!encodeTable) throw new Error("Unknown encoding base" + base); + const limit = Math.ceil(buffer.length * 8 / Math.log2(base)); + length = Math.min(length, limit); + const uint32Array = new Uint32Array(Math.ceil(buffer.length / 4)); + buffer.copy(Buffer.from(uint32Array.buffer)); + let output = ""; + for (let i = 0; i < length; i++) output = encodeTable[divmod32(uint32Array, base)] + output; + return output; + } + let crypto = void 0; + let createXXHash64 = void 0; + let createMd4 = void 0; + let BatchedHash = void 0; + let BulkUpdateDecorator = void 0; + function getHashDigest(buffer, algorithm, digestType, maxLength) { + algorithm = algorithm || "xxhash64"; + maxLength = maxLength || 9999; + let hash; + if (algorithm === "xxhash64") { + if (createXXHash64 === void 0) { + createXXHash64 = require_xxhash64(); + if (BatchedHash === void 0) BatchedHash = require_BatchedHash(); + } + hash = new BatchedHash(createXXHash64()); + } else if (algorithm === "md4") { + if (createMd4 === void 0) { + createMd4 = require_md4(); + if (BatchedHash === void 0) BatchedHash = require_BatchedHash(); + } + hash = new BatchedHash(createMd4()); + } else if (algorithm === "native-md4") { + if (typeof crypto === "undefined") { + crypto = __require("crypto"); + if (BulkUpdateDecorator === void 0) BulkUpdateDecorator = require_BulkUpdateDecorator(); + } + hash = new BulkUpdateDecorator(() => crypto.createHash("md4"), "md4"); + } else { + if (typeof crypto === "undefined") { + crypto = __require("crypto"); + if (BulkUpdateDecorator === void 0) BulkUpdateDecorator = require_BulkUpdateDecorator(); + } + hash = new BulkUpdateDecorator(() => crypto.createHash(algorithm), algorithm); + } + hash.update(buffer); + if (digestType === "base26" || digestType === "base32" || digestType === "base36" || digestType === "base49" || digestType === "base52" || digestType === "base58" || digestType === "base62" || digestType === "base64safe") return encodeBufferToBase(hash.digest(), digestType === "base64safe" ? 64 : digestType.substr(4), maxLength); + return hash.digest(digestType || "hex").substr(0, maxLength); + } + module.exports = getHashDigest; +})); +//#endregion +//#region ../../node_modules/.pnpm/loader-utils@3.3.1/node_modules/loader-utils/lib/interpolateName.js +var require_interpolateName = /* @__PURE__ */ __commonJSMin(((exports, module) => { + const path$1 = __require("path"); + const getHashDigest = require_getHashDigest(); + function interpolateName(loaderContext, name, options = {}) { + let filename; + const hasQuery = loaderContext.resourceQuery && loaderContext.resourceQuery.length > 1; + if (typeof name === "function") filename = name(loaderContext.resourcePath, hasQuery ? loaderContext.resourceQuery : void 0); + else filename = name || "[hash].[ext]"; + const context = options.context; + const content = options.content; + const regExp = options.regExp; + let ext = "bin"; + let basename = "file"; + let directory = ""; + let folder = ""; + let query = ""; + if (loaderContext.resourcePath) { + const parsed = path$1.parse(loaderContext.resourcePath); + let resourcePath = loaderContext.resourcePath; + if (parsed.ext) ext = parsed.ext.substr(1); + if (parsed.dir) { + basename = parsed.name; + resourcePath = parsed.dir + path$1.sep; + } + if (typeof context !== "undefined") { + directory = path$1.relative(context, resourcePath + "_").replace(/\\/g, "/").replace(/\.\.(\/)?/g, "_$1"); + directory = directory.substr(0, directory.length - 1); + } else directory = resourcePath.replace(/\\/g, "/").replace(/\.\.(\/)?/g, "_$1"); + if (directory.length <= 1) directory = ""; + else folder = path$1.basename(directory); + } + if (loaderContext.resourceQuery && loaderContext.resourceQuery.length > 1) { + query = loaderContext.resourceQuery; + const hashIdx = query.indexOf("#"); + if (hashIdx >= 0) query = query.substr(0, hashIdx); + } + let url = filename; + if (content) url = url.replace(/\[(?:([^[:\]]+):)?(?:hash|contenthash)(?::([a-z]+\d*(?:safe)?))?(?::(\d+))?\]/gi, (all, hashType, digestType, maxLength) => getHashDigest(content, hashType, digestType, parseInt(maxLength, 10))); + url = url.replace(/\[ext\]/gi, () => ext).replace(/\[name\]/gi, () => basename).replace(/\[path\]/gi, () => directory).replace(/\[folder\]/gi, () => folder).replace(/\[query\]/gi, () => query); + if (regExp && loaderContext.resourcePath) { + const match = loaderContext.resourcePath.match(new RegExp(regExp)); + match && match.forEach((matched, i) => { + url = url.replace(new RegExp("\\[" + i + "\\]", "ig"), matched); + }); + } + if (typeof loaderContext.options === "object" && typeof loaderContext.options.customInterpolateName === "function") url = loaderContext.options.customInterpolateName.call(loaderContext, url, name, options); + return url; + } + module.exports = interpolateName; +})); +//#endregion +//#region ../../node_modules/.pnpm/generic-names@4.0.0/node_modules/generic-names/index.js +var require_generic_names = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var interpolateName = require_interpolateName(); + var path = __require("path"); + /** + * @param {string} pattern + * @param {object} options + * @param {string} options.context + * @param {string} options.hashPrefix + * @return {function} + */ + module.exports = function createGenerator(pattern, options) { + options = options || {}; + var context = options && typeof options.context === "string" ? options.context : process.cwd(); + var hashPrefix = options && typeof options.hashPrefix === "string" ? options.hashPrefix : ""; + /** + * @param {string} localName Usually a class name + * @param {string} filepath Absolute path + * @return {string} + */ + return function generate(localName, filepath) { + var name = pattern.replace(/\[local\]/gi, localName); + return interpolateName({ resourcePath: filepath }, name, { + content: hashPrefix + path.relative(context, filepath).replace(/\\/g, "/") + "\0" + localName, + context + }).replace(/* @__PURE__ */ new RegExp("[^a-zA-Z0-9\\-_\xA0-￿]", "g"), "-").replace(/^((-?[0-9])|--)/, "_$1"); + }; + }; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.1/node_modules/postcss-selector-parser/dist/util/unesc.js +var require_unesc = /* @__PURE__ */ __commonJSMin(((exports, module) => { + exports.__esModule = true; + exports["default"] = unesc; + /** + * + * @param {string} str + * @returns {[string, number]|undefined} + */ + function gobbleHex(str) { + var lower = str.toLowerCase(); + var hex = ""; + var spaceTerminated = false; + for (var i = 0; i < 6 && lower[i] !== void 0; i++) { + var code = lower.charCodeAt(i); + var valid = code >= 97 && code <= 102 || code >= 48 && code <= 57; + spaceTerminated = code === 32; + if (!valid) break; + hex += lower[i]; + } + if (hex.length === 0) return; + var codePoint = parseInt(hex, 16); + if (codePoint >= 55296 && codePoint <= 57343 || codePoint === 0 || codePoint > 1114111) return ["�", hex.length + (spaceTerminated ? 1 : 0)]; + return [String.fromCodePoint(codePoint), hex.length + (spaceTerminated ? 1 : 0)]; + } + var CONTAINS_ESCAPE = /\\/; + function unesc(str) { + if (!CONTAINS_ESCAPE.test(str)) return str; + var ret = ""; + for (var i = 0; i < str.length; i++) { + if (str[i] === "\\") { + var gobbled = gobbleHex(str.slice(i + 1, i + 7)); + if (gobbled !== void 0) { + ret += gobbled[0]; + i += gobbled[1]; + continue; + } + if (str[i + 1] === "\\") { + ret += "\\"; + i++; + continue; + } + if (str.length === i + 1) ret += str[i]; + continue; + } + ret += str[i]; + } + return ret; + } + module.exports = exports.default; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.1/node_modules/postcss-selector-parser/dist/util/getProp.js +var require_getProp = /* @__PURE__ */ __commonJSMin(((exports, module) => { + exports.__esModule = true; + exports["default"] = getProp; + function getProp(obj) { + for (var _len = arguments.length, props = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) props[_key - 1] = arguments[_key]; + while (props.length > 0) { + var prop = props.shift(); + if (!obj[prop]) return; + obj = obj[prop]; + } + return obj; + } + module.exports = exports.default; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.1/node_modules/postcss-selector-parser/dist/util/ensureObject.js +var require_ensureObject = /* @__PURE__ */ __commonJSMin(((exports, module) => { + exports.__esModule = true; + exports["default"] = ensureObject; + function ensureObject(obj) { + for (var _len = arguments.length, props = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) props[_key - 1] = arguments[_key]; + while (props.length > 0) { + var prop = props.shift(); + if (!obj[prop]) obj[prop] = {}; + obj = obj[prop]; + } + } + module.exports = exports.default; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.1/node_modules/postcss-selector-parser/dist/util/stripComments.js +var require_stripComments = /* @__PURE__ */ __commonJSMin(((exports, module) => { + exports.__esModule = true; + exports["default"] = stripComments; + function stripComments(str) { + var s = ""; + var commentStart = str.indexOf("/*"); + var lastEnd = 0; + while (commentStart >= 0) { + s = s + str.slice(lastEnd, commentStart); + var commentEnd = str.indexOf("*/", commentStart + 2); + if (commentEnd < 0) return s; + lastEnd = commentEnd + 2; + commentStart = str.indexOf("/*", lastEnd); + } + s = s + str.slice(lastEnd); + return s; + } + module.exports = exports.default; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.1/node_modules/postcss-selector-parser/dist/util/index.js +var require_util = /* @__PURE__ */ __commonJSMin(((exports) => { + exports.__esModule = true; + exports.unesc = exports.stripComments = exports.getProp = exports.ensureObject = void 0; + exports.unesc = _interopRequireDefault(require_unesc())["default"]; + exports.getProp = _interopRequireDefault(require_getProp())["default"]; + exports.ensureObject = _interopRequireDefault(require_ensureObject())["default"]; + exports.stripComments = _interopRequireDefault(require_stripComments())["default"]; + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { "default": obj }; + } +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.1/node_modules/postcss-selector-parser/dist/selectors/node.js +var require_node$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { + exports.__esModule = true; + exports["default"] = void 0; + var _util = require_util(); + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + Object.defineProperty(Constructor, "prototype", { writable: false }); + return Constructor; + } + var cloneNode = function cloneNode(obj, parent) { + if (typeof obj !== "object" || obj === null) return obj; + var cloned = new obj.constructor(); + for (var i in obj) { + if (!obj.hasOwnProperty(i)) continue; + var value = obj[i]; + if (i === "parent" && typeof value === "object") { + if (parent) cloned[i] = parent; + } else if (value instanceof Array) cloned[i] = value.map(function(j) { + return cloneNode(j, cloned); + }); + else cloned[i] = cloneNode(value, cloned); + } + return cloned; + }; + exports["default"] = /* @__PURE__ */ function() { + function Node(opts) { + if (opts === void 0) opts = {}; + Object.assign(this, opts); + this.spaces = this.spaces || {}; + this.spaces.before = this.spaces.before || ""; + this.spaces.after = this.spaces.after || ""; + } + var _proto = Node.prototype; + _proto.remove = function remove() { + if (this.parent) this.parent.removeChild(this); + this.parent = void 0; + return this; + }; + _proto.replaceWith = function replaceWith() { + if (this.parent) { + for (var index in arguments) this.parent.insertBefore(this, arguments[index]); + this.remove(); + } + return this; + }; + _proto.next = function next() { + return this.parent.at(this.parent.index(this) + 1); + }; + _proto.prev = function prev() { + return this.parent.at(this.parent.index(this) - 1); + }; + _proto.clone = function clone(overrides) { + if (overrides === void 0) overrides = {}; + var cloned = cloneNode(this); + for (var name in overrides) cloned[name] = overrides[name]; + return cloned; + }; + _proto.appendToPropertyAndEscape = function appendToPropertyAndEscape(name, value, valueEscaped) { + if (!this.raws) this.raws = {}; + var originalValue = this[name]; + var originalEscaped = this.raws[name]; + this[name] = originalValue + value; + if (originalEscaped || valueEscaped !== value) this.raws[name] = (originalEscaped || originalValue) + valueEscaped; + else delete this.raws[name]; + }; + _proto.setPropertyAndEscape = function setPropertyAndEscape(name, value, valueEscaped) { + if (!this.raws) this.raws = {}; + this[name] = value; + this.raws[name] = valueEscaped; + }; + _proto.setPropertyWithoutEscape = function setPropertyWithoutEscape(name, value) { + this[name] = value; + if (this.raws) delete this.raws[name]; + }; + _proto.isAtPosition = function isAtPosition(line, column) { + if (this.source && this.source.start && this.source.end) { + if (this.source.start.line > line) return false; + if (this.source.end.line < line) return false; + if (this.source.start.line === line && this.source.start.column > column) return false; + if (this.source.end.line === line && this.source.end.column < column) return false; + return true; + } + }; + _proto.stringifyProperty = function stringifyProperty(name) { + return this.raws && this.raws[name] || this[name]; + }; + _proto.valueToString = function valueToString() { + return String(this.stringifyProperty("value")); + }; + _proto.toString = function toString() { + return [ + this.rawSpaceBefore, + this.valueToString(), + this.rawSpaceAfter + ].join(""); + }; + _createClass(Node, [{ + key: "rawSpaceBefore", + get: function get() { + var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.before; + if (rawSpace === void 0) rawSpace = this.spaces && this.spaces.before; + return rawSpace || ""; + }, + set: function set(raw) { + (0, _util.ensureObject)(this, "raws", "spaces"); + this.raws.spaces.before = raw; + } + }, { + key: "rawSpaceAfter", + get: function get() { + var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.after; + if (rawSpace === void 0) rawSpace = this.spaces.after; + return rawSpace || ""; + }, + set: function set(raw) { + (0, _util.ensureObject)(this, "raws", "spaces"); + this.raws.spaces.after = raw; + } + }]); + return Node; + }(); + module.exports = exports.default; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.1/node_modules/postcss-selector-parser/dist/selectors/types.js +var require_types = /* @__PURE__ */ __commonJSMin(((exports) => { + exports.__esModule = true; + exports.UNIVERSAL = exports.TAG = exports.STRING = exports.SELECTOR = exports.ROOT = exports.PSEUDO = exports.NESTING = exports.ID = exports.COMMENT = exports.COMBINATOR = exports.CLASS = exports.ATTRIBUTE = void 0; + exports.TAG = "tag"; + exports.STRING = "string"; + exports.SELECTOR = "selector"; + exports.ROOT = "root"; + exports.PSEUDO = "pseudo"; + exports.NESTING = "nesting"; + exports.ID = "id"; + exports.COMMENT = "comment"; + exports.COMBINATOR = "combinator"; + exports.CLASS = "class"; + exports.ATTRIBUTE = "attribute"; + exports.UNIVERSAL = "universal"; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.1/node_modules/postcss-selector-parser/dist/selectors/container.js +var require_container = /* @__PURE__ */ __commonJSMin(((exports, module) => { + exports.__esModule = true; + exports["default"] = void 0; + var _node = _interopRequireDefault(require_node$1()); + var types = _interopRequireWildcard(require_types()); + function _getRequireWildcardCache(nodeInterop) { + if (typeof WeakMap !== "function") return null; + var cacheBabelInterop = /* @__PURE__ */ new WeakMap(); + var cacheNodeInterop = /* @__PURE__ */ new WeakMap(); + return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { + return nodeInterop ? cacheNodeInterop : cacheBabelInterop; + })(nodeInterop); + } + function _interopRequireWildcard(obj, nodeInterop) { + if (!nodeInterop && obj && obj.__esModule) return obj; + if (obj === null || typeof obj !== "object" && typeof obj !== "function") return { "default": obj }; + var cache = _getRequireWildcardCache(nodeInterop); + if (cache && cache.has(obj)) return cache.get(obj); + var newObj = {}; + var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; + for (var key in obj) if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { + var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; + if (desc && (desc.get || desc.set)) Object.defineProperty(newObj, key, desc); + else newObj[key] = obj[key]; + } + newObj["default"] = obj; + if (cache) cache.set(obj, newObj); + return newObj; + } + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { "default": obj }; + } + function _createForOfIteratorHelperLoose(o, allowArrayLike) { + var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; + if (it) return (it = it.call(o)).next.bind(it); + if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { + if (it) o = it; + var i = 0; + return function() { + if (i >= o.length) return { done: true }; + return { + done: false, + value: o[i++] + }; + }; + } + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + return arr2; + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + Object.defineProperty(Constructor, "prototype", { writable: false }); + return Constructor; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + _setPrototypeOf(subClass, superClass); + } + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + return _setPrototypeOf(o, p); + } + exports["default"] = /* @__PURE__ */ function(_Node) { + _inheritsLoose(Container, _Node); + function Container(opts) { + var _this = _Node.call(this, opts) || this; + if (!_this.nodes) _this.nodes = []; + return _this; + } + var _proto = Container.prototype; + _proto.append = function append(selector) { + selector.parent = this; + this.nodes.push(selector); + return this; + }; + _proto.prepend = function prepend(selector) { + selector.parent = this; + this.nodes.unshift(selector); + for (var id in this.indexes) this.indexes[id]++; + return this; + }; + _proto.at = function at(index) { + return this.nodes[index]; + }; + _proto.index = function index(child) { + if (typeof child === "number") return child; + return this.nodes.indexOf(child); + }; + _proto.removeChild = function removeChild(child) { + child = this.index(child); + this.at(child).parent = void 0; + this.nodes.splice(child, 1); + var index; + for (var id in this.indexes) { + index = this.indexes[id]; + if (index >= child) this.indexes[id] = index - 1; + } + return this; + }; + _proto.removeAll = function removeAll() { + for (var _iterator = _createForOfIteratorHelperLoose(this.nodes), _step; !(_step = _iterator()).done;) { + var node = _step.value; + node.parent = void 0; + } + this.nodes = []; + return this; + }; + _proto.empty = function empty() { + return this.removeAll(); + }; + _proto.insertAfter = function insertAfter(oldNode, newNode) { + var _this$nodes; + newNode.parent = this; + var oldIndex = this.index(oldNode); + var resetNode = []; + for (var i = 2; i < arguments.length; i++) resetNode.push(arguments[i]); + (_this$nodes = this.nodes).splice.apply(_this$nodes, [ + oldIndex + 1, + 0, + newNode + ].concat(resetNode)); + newNode.parent = this; + var index; + for (var id in this.indexes) { + index = this.indexes[id]; + if (oldIndex < index) this.indexes[id] = index + arguments.length - 1; + } + return this; + }; + _proto.insertBefore = function insertBefore(oldNode, newNode) { + var _this$nodes2; + newNode.parent = this; + var oldIndex = this.index(oldNode); + var resetNode = []; + for (var i = 2; i < arguments.length; i++) resetNode.push(arguments[i]); + (_this$nodes2 = this.nodes).splice.apply(_this$nodes2, [ + oldIndex, + 0, + newNode + ].concat(resetNode)); + newNode.parent = this; + var index; + for (var id in this.indexes) { + index = this.indexes[id]; + if (index >= oldIndex) this.indexes[id] = index + arguments.length - 1; + } + return this; + }; + _proto._findChildAtPosition = function _findChildAtPosition(line, col) { + var found = void 0; + this.each(function(node) { + if (node.atPosition) { + var foundChild = node.atPosition(line, col); + if (foundChild) { + found = foundChild; + return false; + } + } else if (node.isAtPosition(line, col)) { + found = node; + return false; + } + }); + return found; + }; + _proto.atPosition = function atPosition(line, col) { + if (this.isAtPosition(line, col)) return this._findChildAtPosition(line, col) || this; + else return; + }; + _proto._inferEndPosition = function _inferEndPosition() { + if (this.last && this.last.source && this.last.source.end) { + this.source = this.source || {}; + this.source.end = this.source.end || {}; + Object.assign(this.source.end, this.last.source.end); + } + }; + _proto.each = function each(callback) { + if (!this.lastEach) this.lastEach = 0; + if (!this.indexes) this.indexes = {}; + this.lastEach++; + var id = this.lastEach; + this.indexes[id] = 0; + if (!this.length) return; + var index, result; + while (this.indexes[id] < this.length) { + index = this.indexes[id]; + result = callback(this.at(index), index); + if (result === false) break; + this.indexes[id] += 1; + } + delete this.indexes[id]; + if (result === false) return false; + }; + _proto.walk = function walk(callback) { + return this.each(function(node, i) { + var result = callback(node, i); + if (result !== false && node.length) result = node.walk(callback); + if (result === false) return false; + }); + }; + _proto.walkAttributes = function walkAttributes(callback) { + var _this2 = this; + return this.walk(function(selector) { + if (selector.type === types.ATTRIBUTE) return callback.call(_this2, selector); + }); + }; + _proto.walkClasses = function walkClasses(callback) { + var _this3 = this; + return this.walk(function(selector) { + if (selector.type === types.CLASS) return callback.call(_this3, selector); + }); + }; + _proto.walkCombinators = function walkCombinators(callback) { + var _this4 = this; + return this.walk(function(selector) { + if (selector.type === types.COMBINATOR) return callback.call(_this4, selector); + }); + }; + _proto.walkComments = function walkComments(callback) { + var _this5 = this; + return this.walk(function(selector) { + if (selector.type === types.COMMENT) return callback.call(_this5, selector); + }); + }; + _proto.walkIds = function walkIds(callback) { + var _this6 = this; + return this.walk(function(selector) { + if (selector.type === types.ID) return callback.call(_this6, selector); + }); + }; + _proto.walkNesting = function walkNesting(callback) { + var _this7 = this; + return this.walk(function(selector) { + if (selector.type === types.NESTING) return callback.call(_this7, selector); + }); + }; + _proto.walkPseudos = function walkPseudos(callback) { + var _this8 = this; + return this.walk(function(selector) { + if (selector.type === types.PSEUDO) return callback.call(_this8, selector); + }); + }; + _proto.walkTags = function walkTags(callback) { + var _this9 = this; + return this.walk(function(selector) { + if (selector.type === types.TAG) return callback.call(_this9, selector); + }); + }; + _proto.walkUniversals = function walkUniversals(callback) { + var _this10 = this; + return this.walk(function(selector) { + if (selector.type === types.UNIVERSAL) return callback.call(_this10, selector); + }); + }; + _proto.split = function split(callback) { + var _this11 = this; + var current = []; + return this.reduce(function(memo, node, index) { + var split = callback.call(_this11, node); + current.push(node); + if (split) { + memo.push(current); + current = []; + } else if (index === _this11.length - 1) memo.push(current); + return memo; + }, []); + }; + _proto.map = function map(callback) { + return this.nodes.map(callback); + }; + _proto.reduce = function reduce(callback, memo) { + return this.nodes.reduce(callback, memo); + }; + _proto.every = function every(callback) { + return this.nodes.every(callback); + }; + _proto.some = function some(callback) { + return this.nodes.some(callback); + }; + _proto.filter = function filter(callback) { + return this.nodes.filter(callback); + }; + _proto.sort = function sort(callback) { + return this.nodes.sort(callback); + }; + _proto.toString = function toString() { + return this.map(String).join(""); + }; + _createClass(Container, [ + { + key: "first", + get: function get() { + return this.at(0); + } + }, + { + key: "last", + get: function get() { + return this.at(this.length - 1); + } + }, + { + key: "length", + get: function get() { + return this.nodes.length; + } + } + ]); + return Container; + }(_node["default"]); + module.exports = exports.default; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.1/node_modules/postcss-selector-parser/dist/selectors/root.js +var require_root = /* @__PURE__ */ __commonJSMin(((exports, module) => { + exports.__esModule = true; + exports["default"] = void 0; + var _container = _interopRequireDefault(require_container()); + var _types = require_types(); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { "default": obj }; + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + Object.defineProperty(Constructor, "prototype", { writable: false }); + return Constructor; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + _setPrototypeOf(subClass, superClass); + } + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + return _setPrototypeOf(o, p); + } + exports["default"] = /* @__PURE__ */ function(_Container) { + _inheritsLoose(Root, _Container); + function Root(opts) { + var _this = _Container.call(this, opts) || this; + _this.type = _types.ROOT; + return _this; + } + var _proto = Root.prototype; + _proto.toString = function toString() { + var str = this.reduce(function(memo, selector) { + memo.push(String(selector)); + return memo; + }, []).join(","); + return this.trailingComma ? str + "," : str; + }; + _proto.error = function error(message, options) { + if (this._error) return this._error(message, options); + else return new Error(message); + }; + _createClass(Root, [{ + key: "errorGenerator", + set: function set(handler) { + this._error = handler; + } + }]); + return Root; + }(_container["default"]); + module.exports = exports.default; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.1/node_modules/postcss-selector-parser/dist/selectors/selector.js +var require_selector = /* @__PURE__ */ __commonJSMin(((exports, module) => { + exports.__esModule = true; + exports["default"] = void 0; + var _container = _interopRequireDefault(require_container()); + var _types = require_types(); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { "default": obj }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + _setPrototypeOf(subClass, superClass); + } + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + return _setPrototypeOf(o, p); + } + exports["default"] = /* @__PURE__ */ function(_Container) { + _inheritsLoose(Selector, _Container); + function Selector(opts) { + var _this = _Container.call(this, opts) || this; + _this.type = _types.SELECTOR; + return _this; + } + return Selector; + }(_container["default"]); + module.exports = exports.default; +})); +//#endregion +//#region ../../node_modules/.pnpm/cssesc@3.0.0/node_modules/cssesc/cssesc.js +/*! https://mths.be/cssesc v3.0.0 by @mathias */ +var require_cssesc = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var hasOwnProperty = {}.hasOwnProperty; + var merge = function merge(options, defaults) { + if (!options) return defaults; + var result = {}; + for (var key in defaults) result[key] = hasOwnProperty.call(options, key) ? options[key] : defaults[key]; + return result; + }; + var regexAnySingleEscape = /[ -,\.\/:-@\[-\^`\{-~]/; + var regexSingleEscape = /[ -,\.\/:-@\[\]\^`\{-~]/; + var regexExcessiveSpaces = /(^|\\+)?(\\[A-F0-9]{1,6})\x20(?![a-fA-F0-9\x20])/g; + var cssesc = function cssesc(string, options) { + options = merge(options, cssesc.options); + if (options.quotes != "single" && options.quotes != "double") options.quotes = "single"; + var quote = options.quotes == "double" ? "\"" : "'"; + var isIdentifier = options.isIdentifier; + var firstChar = string.charAt(0); + var output = ""; + var counter = 0; + var length = string.length; + while (counter < length) { + var character = string.charAt(counter++); + var codePoint = character.charCodeAt(); + var value = void 0; + if (codePoint < 32 || codePoint > 126) { + if (codePoint >= 55296 && codePoint <= 56319 && counter < length) { + var extra = string.charCodeAt(counter++); + if ((extra & 64512) == 56320) codePoint = ((codePoint & 1023) << 10) + (extra & 1023) + 65536; + else counter--; + } + value = "\\" + codePoint.toString(16).toUpperCase() + " "; + } else if (options.escapeEverything) if (regexAnySingleEscape.test(character)) value = "\\" + character; + else value = "\\" + codePoint.toString(16).toUpperCase() + " "; + else if (/[\t\n\f\r\x0B]/.test(character)) value = "\\" + codePoint.toString(16).toUpperCase() + " "; + else if (character == "\\" || !isIdentifier && (character == "\"" && quote == character || character == "'" && quote == character) || isIdentifier && regexSingleEscape.test(character)) value = "\\" + character; + else value = character; + output += value; + } + if (isIdentifier) { + if (/^-[-\d]/.test(output)) output = "\\-" + output.slice(1); + else if (/\d/.test(firstChar)) output = "\\3" + firstChar + " " + output.slice(1); + } + output = output.replace(regexExcessiveSpaces, function($0, $1, $2) { + if ($1 && $1.length % 2) return $0; + return ($1 || "") + $2; + }); + if (!isIdentifier && options.wrap) return quote + output + quote; + return output; + }; + cssesc.options = { + "escapeEverything": false, + "isIdentifier": false, + "quotes": "single", + "wrap": false + }; + cssesc.version = "3.0.0"; + module.exports = cssesc; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.1/node_modules/postcss-selector-parser/dist/selectors/className.js +var require_className = /* @__PURE__ */ __commonJSMin(((exports, module) => { + exports.__esModule = true; + exports["default"] = void 0; + var _cssesc = _interopRequireDefault(require_cssesc()); + var _util = require_util(); + var _node = _interopRequireDefault(require_node$1()); + var _types = require_types(); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { "default": obj }; + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + Object.defineProperty(Constructor, "prototype", { writable: false }); + return Constructor; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + _setPrototypeOf(subClass, superClass); + } + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + return _setPrototypeOf(o, p); + } + exports["default"] = /* @__PURE__ */ function(_Node) { + _inheritsLoose(ClassName, _Node); + function ClassName(opts) { + var _this = _Node.call(this, opts) || this; + _this.type = _types.CLASS; + _this._constructed = true; + return _this; + } + var _proto = ClassName.prototype; + _proto.valueToString = function valueToString() { + return "." + _Node.prototype.valueToString.call(this); + }; + _createClass(ClassName, [{ + key: "value", + get: function get() { + return this._value; + }, + set: function set(v) { + if (this._constructed) { + var escaped = (0, _cssesc["default"])(v, { isIdentifier: true }); + if (escaped !== v) { + (0, _util.ensureObject)(this, "raws"); + this.raws.value = escaped; + } else if (this.raws) delete this.raws.value; + } + this._value = v; + } + }]); + return ClassName; + }(_node["default"]); + module.exports = exports.default; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.1/node_modules/postcss-selector-parser/dist/selectors/comment.js +var require_comment = /* @__PURE__ */ __commonJSMin(((exports, module) => { + exports.__esModule = true; + exports["default"] = void 0; + var _node = _interopRequireDefault(require_node$1()); + var _types = require_types(); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { "default": obj }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + _setPrototypeOf(subClass, superClass); + } + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + return _setPrototypeOf(o, p); + } + exports["default"] = /* @__PURE__ */ function(_Node) { + _inheritsLoose(Comment, _Node); + function Comment(opts) { + var _this = _Node.call(this, opts) || this; + _this.type = _types.COMMENT; + return _this; + } + return Comment; + }(_node["default"]); + module.exports = exports.default; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.1/node_modules/postcss-selector-parser/dist/selectors/id.js +var require_id = /* @__PURE__ */ __commonJSMin(((exports, module) => { + exports.__esModule = true; + exports["default"] = void 0; + var _node = _interopRequireDefault(require_node$1()); + var _types = require_types(); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { "default": obj }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + _setPrototypeOf(subClass, superClass); + } + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + return _setPrototypeOf(o, p); + } + exports["default"] = /* @__PURE__ */ function(_Node) { + _inheritsLoose(ID, _Node); + function ID(opts) { + var _this = _Node.call(this, opts) || this; + _this.type = _types.ID; + return _this; + } + var _proto = ID.prototype; + _proto.valueToString = function valueToString() { + return "#" + _Node.prototype.valueToString.call(this); + }; + return ID; + }(_node["default"]); + module.exports = exports.default; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.1/node_modules/postcss-selector-parser/dist/selectors/namespace.js +var require_namespace = /* @__PURE__ */ __commonJSMin(((exports, module) => { + exports.__esModule = true; + exports["default"] = void 0; + var _cssesc = _interopRequireDefault(require_cssesc()); + var _util = require_util(); + var _node = _interopRequireDefault(require_node$1()); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { "default": obj }; + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + Object.defineProperty(Constructor, "prototype", { writable: false }); + return Constructor; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + _setPrototypeOf(subClass, superClass); + } + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + return _setPrototypeOf(o, p); + } + exports["default"] = /* @__PURE__ */ function(_Node) { + _inheritsLoose(Namespace, _Node); + function Namespace() { + return _Node.apply(this, arguments) || this; + } + var _proto = Namespace.prototype; + _proto.qualifiedName = function qualifiedName(value) { + if (this.namespace) return this.namespaceString + "|" + value; + else return value; + }; + _proto.valueToString = function valueToString() { + return this.qualifiedName(_Node.prototype.valueToString.call(this)); + }; + _createClass(Namespace, [ + { + key: "namespace", + get: function get() { + return this._namespace; + }, + set: function set(namespace) { + if (namespace === true || namespace === "*" || namespace === "&") { + this._namespace = namespace; + if (this.raws) delete this.raws.namespace; + return; + } + var escaped = (0, _cssesc["default"])(namespace, { isIdentifier: true }); + this._namespace = namespace; + if (escaped !== namespace) { + (0, _util.ensureObject)(this, "raws"); + this.raws.namespace = escaped; + } else if (this.raws) delete this.raws.namespace; + } + }, + { + key: "ns", + get: function get() { + return this._namespace; + }, + set: function set(namespace) { + this.namespace = namespace; + } + }, + { + key: "namespaceString", + get: function get() { + if (this.namespace) { + var ns = this.stringifyProperty("namespace"); + if (ns === true) return ""; + else return ns; + } else return ""; + } + } + ]); + return Namespace; + }(_node["default"]); + module.exports = exports.default; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.1/node_modules/postcss-selector-parser/dist/selectors/tag.js +var require_tag = /* @__PURE__ */ __commonJSMin(((exports, module) => { + exports.__esModule = true; + exports["default"] = void 0; + var _namespace = _interopRequireDefault(require_namespace()); + var _types = require_types(); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { "default": obj }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + _setPrototypeOf(subClass, superClass); + } + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + return _setPrototypeOf(o, p); + } + exports["default"] = /* @__PURE__ */ function(_Namespace) { + _inheritsLoose(Tag, _Namespace); + function Tag(opts) { + var _this = _Namespace.call(this, opts) || this; + _this.type = _types.TAG; + return _this; + } + return Tag; + }(_namespace["default"]); + module.exports = exports.default; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.1/node_modules/postcss-selector-parser/dist/selectors/string.js +var require_string = /* @__PURE__ */ __commonJSMin(((exports, module) => { + exports.__esModule = true; + exports["default"] = void 0; + var _node = _interopRequireDefault(require_node$1()); + var _types = require_types(); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { "default": obj }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + _setPrototypeOf(subClass, superClass); + } + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + return _setPrototypeOf(o, p); + } + exports["default"] = /* @__PURE__ */ function(_Node) { + _inheritsLoose(String, _Node); + function String(opts) { + var _this = _Node.call(this, opts) || this; + _this.type = _types.STRING; + return _this; + } + return String; + }(_node["default"]); + module.exports = exports.default; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.1/node_modules/postcss-selector-parser/dist/selectors/pseudo.js +var require_pseudo = /* @__PURE__ */ __commonJSMin(((exports, module) => { + exports.__esModule = true; + exports["default"] = void 0; + var _container = _interopRequireDefault(require_container()); + var _types = require_types(); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { "default": obj }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + _setPrototypeOf(subClass, superClass); + } + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + return _setPrototypeOf(o, p); + } + exports["default"] = /* @__PURE__ */ function(_Container) { + _inheritsLoose(Pseudo, _Container); + function Pseudo(opts) { + var _this = _Container.call(this, opts) || this; + _this.type = _types.PSEUDO; + return _this; + } + var _proto = Pseudo.prototype; + _proto.toString = function toString() { + var params = this.length ? "(" + this.map(String).join(",") + ")" : ""; + return [ + this.rawSpaceBefore, + this.stringifyProperty("value"), + params, + this.rawSpaceAfter + ].join(""); + }; + return Pseudo; + }(_container["default"]); + module.exports = exports.default; +})); +//#endregion +//#region ../../node_modules/.pnpm/util-deprecate@1.0.2/node_modules/util-deprecate/node.js +var require_node = /* @__PURE__ */ __commonJSMin(((exports, module) => { + /** + * For Node.js, simply re-export the core `util.deprecate` function. + */ + module.exports = __require("util").deprecate; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.1/node_modules/postcss-selector-parser/dist/selectors/attribute.js +var require_attribute = /* @__PURE__ */ __commonJSMin(((exports) => { + exports.__esModule = true; + exports["default"] = void 0; + exports.unescapeValue = unescapeValue; + var _cssesc = _interopRequireDefault(require_cssesc()); + var _unesc = _interopRequireDefault(require_unesc()); + var _namespace = _interopRequireDefault(require_namespace()); + var _types = require_types(); + var _CSSESC_QUOTE_OPTIONS; + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { "default": obj }; + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + Object.defineProperty(Constructor, "prototype", { writable: false }); + return Constructor; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + _setPrototypeOf(subClass, superClass); + } + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + return _setPrototypeOf(o, p); + } + var deprecate = require_node(); + var WRAPPED_IN_QUOTES = /^('|")([^]*)\1$/; + var warnOfDeprecatedValueAssignment = deprecate(function() {}, "Assigning an attribute a value containing characters that might need to be escaped is deprecated. Call attribute.setValue() instead."); + var warnOfDeprecatedQuotedAssignment = deprecate(function() {}, "Assigning attr.quoted is deprecated and has no effect. Assign to attr.quoteMark instead."); + var warnOfDeprecatedConstructor = deprecate(function() {}, "Constructing an Attribute selector with a value without specifying quoteMark is deprecated. Note: The value should be unescaped now."); + function unescapeValue(value) { + var deprecatedUsage = false; + var quoteMark = null; + var unescaped = value; + var m = unescaped.match(WRAPPED_IN_QUOTES); + if (m) { + quoteMark = m[1]; + unescaped = m[2]; + } + unescaped = (0, _unesc["default"])(unescaped); + if (unescaped !== value) deprecatedUsage = true; + return { + deprecatedUsage, + unescaped, + quoteMark + }; + } + function handleDeprecatedContructorOpts(opts) { + if (opts.quoteMark !== void 0) return opts; + if (opts.value === void 0) return opts; + warnOfDeprecatedConstructor(); + var _unescapeValue = unescapeValue(opts.value), quoteMark = _unescapeValue.quoteMark, unescaped = _unescapeValue.unescaped; + if (!opts.raws) opts.raws = {}; + if (opts.raws.value === void 0) opts.raws.value = opts.value; + opts.value = unescaped; + opts.quoteMark = quoteMark; + return opts; + } + var Attribute = /* @__PURE__ */ function(_Namespace) { + _inheritsLoose(Attribute, _Namespace); + function Attribute(opts) { + var _this; + if (opts === void 0) opts = {}; + _this = _Namespace.call(this, handleDeprecatedContructorOpts(opts)) || this; + _this.type = _types.ATTRIBUTE; + _this.raws = _this.raws || {}; + Object.defineProperty(_this.raws, "unquoted", { + get: deprecate(function() { + return _this.value; + }, "attr.raws.unquoted is deprecated. Call attr.value instead."), + set: deprecate(function() { + return _this.value; + }, "Setting attr.raws.unquoted is deprecated and has no effect. attr.value is unescaped by default now.") + }); + _this._constructed = true; + return _this; + } + /** + * Returns the Attribute's value quoted such that it would be legal to use + * in the value of a css file. The original value's quotation setting + * used for stringification is left unchanged. See `setValue(value, options)` + * if you want to control the quote settings of a new value for the attribute. + * + * You can also change the quotation used for the current value by setting quoteMark. + * + * Options: + * * quoteMark {'"' | "'" | null} - Use this value to quote the value. If this + * option is not set, the original value for quoteMark will be used. If + * indeterminate, a double quote is used. The legal values are: + * * `null` - the value will be unquoted and characters will be escaped as necessary. + * * `'` - the value will be quoted with a single quote and single quotes are escaped. + * * `"` - the value will be quoted with a double quote and double quotes are escaped. + * * preferCurrentQuoteMark {boolean} - if true, prefer the source quote mark + * over the quoteMark option value. + * * smart {boolean} - if true, will select a quote mark based on the value + * and the other options specified here. See the `smartQuoteMark()` + * method. + **/ + var _proto = Attribute.prototype; + _proto.getQuotedValue = function getQuotedValue(options) { + if (options === void 0) options = {}; + var cssescopts = CSSESC_QUOTE_OPTIONS[this._determineQuoteMark(options)]; + return (0, _cssesc["default"])(this._value, cssescopts); + }; + _proto._determineQuoteMark = function _determineQuoteMark(options) { + return options.smart ? this.smartQuoteMark(options) : this.preferredQuoteMark(options); + }; + _proto.setValue = function setValue(value, options) { + if (options === void 0) options = {}; + this._value = value; + this._quoteMark = this._determineQuoteMark(options); + this._syncRawValue(); + }; + _proto.smartQuoteMark = function smartQuoteMark(options) { + var v = this.value; + var numSingleQuotes = v.replace(/[^']/g, "").length; + var numDoubleQuotes = v.replace(/[^"]/g, "").length; + if (numSingleQuotes + numDoubleQuotes === 0) { + var escaped = (0, _cssesc["default"])(v, { isIdentifier: true }); + if (escaped === v) return Attribute.NO_QUOTE; + else { + var pref = this.preferredQuoteMark(options); + if (pref === Attribute.NO_QUOTE) { + var quote = this.quoteMark || options.quoteMark || Attribute.DOUBLE_QUOTE; + if ((0, _cssesc["default"])(v, CSSESC_QUOTE_OPTIONS[quote]).length < escaped.length) return quote; + } + return pref; + } + } else if (numDoubleQuotes === numSingleQuotes) return this.preferredQuoteMark(options); + else if (numDoubleQuotes < numSingleQuotes) return Attribute.DOUBLE_QUOTE; + else return Attribute.SINGLE_QUOTE; + }; + _proto.preferredQuoteMark = function preferredQuoteMark(options) { + var quoteMark = options.preferCurrentQuoteMark ? this.quoteMark : options.quoteMark; + if (quoteMark === void 0) quoteMark = options.preferCurrentQuoteMark ? options.quoteMark : this.quoteMark; + if (quoteMark === void 0) quoteMark = Attribute.DOUBLE_QUOTE; + return quoteMark; + }; + _proto._syncRawValue = function _syncRawValue() { + var rawValue = (0, _cssesc["default"])(this._value, CSSESC_QUOTE_OPTIONS[this.quoteMark]); + if (rawValue === this._value) { + if (this.raws) delete this.raws.value; + } else this.raws.value = rawValue; + }; + _proto._handleEscapes = function _handleEscapes(prop, value) { + if (this._constructed) { + var escaped = (0, _cssesc["default"])(value, { isIdentifier: true }); + if (escaped !== value) this.raws[prop] = escaped; + else delete this.raws[prop]; + } + }; + _proto._spacesFor = function _spacesFor(name) { + var attrSpaces = { + before: "", + after: "" + }; + var spaces = this.spaces[name] || {}; + var rawSpaces = this.raws.spaces && this.raws.spaces[name] || {}; + return Object.assign(attrSpaces, spaces, rawSpaces); + }; + _proto._stringFor = function _stringFor(name, spaceName, concat) { + if (spaceName === void 0) spaceName = name; + if (concat === void 0) concat = defaultAttrConcat; + var attrSpaces = this._spacesFor(spaceName); + return concat(this.stringifyProperty(name), attrSpaces); + }; + _proto.offsetOf = function offsetOf(name) { + var count = 1; + var attributeSpaces = this._spacesFor("attribute"); + count += attributeSpaces.before.length; + if (name === "namespace" || name === "ns") return this.namespace ? count : -1; + if (name === "attributeNS") return count; + count += this.namespaceString.length; + if (this.namespace) count += 1; + if (name === "attribute") return count; + count += this.stringifyProperty("attribute").length; + count += attributeSpaces.after.length; + var operatorSpaces = this._spacesFor("operator"); + count += operatorSpaces.before.length; + var operator = this.stringifyProperty("operator"); + if (name === "operator") return operator ? count : -1; + count += operator.length; + count += operatorSpaces.after.length; + var valueSpaces = this._spacesFor("value"); + count += valueSpaces.before.length; + var value = this.stringifyProperty("value"); + if (name === "value") return value ? count : -1; + count += value.length; + count += valueSpaces.after.length; + var insensitiveSpaces = this._spacesFor("insensitive"); + count += insensitiveSpaces.before.length; + if (name === "insensitive") return this.insensitive ? count : -1; + return -1; + }; + _proto.toString = function toString() { + var _this2 = this; + var selector = [this.rawSpaceBefore, "["]; + selector.push(this._stringFor("qualifiedAttribute", "attribute")); + if (this.operator && (this.value || this.value === "")) { + selector.push(this._stringFor("operator")); + selector.push(this._stringFor("value")); + selector.push(this._stringFor("insensitiveFlag", "insensitive", function(attrValue, attrSpaces) { + if (attrValue.length > 0 && !_this2.quoted && attrSpaces.before.length === 0 && !(_this2.spaces.value && _this2.spaces.value.after)) attrSpaces.before = " "; + return defaultAttrConcat(attrValue, attrSpaces); + })); + } + selector.push("]"); + selector.push(this.rawSpaceAfter); + return selector.join(""); + }; + _createClass(Attribute, [ + { + key: "quoted", + get: function get() { + var qm = this.quoteMark; + return qm === "'" || qm === "\""; + }, + set: function set(value) { + warnOfDeprecatedQuotedAssignment(); + } + }, + { + key: "quoteMark", + get: function get() { + return this._quoteMark; + }, + set: function set(quoteMark) { + if (!this._constructed) { + this._quoteMark = quoteMark; + return; + } + if (this._quoteMark !== quoteMark) { + this._quoteMark = quoteMark; + this._syncRawValue(); + } + } + }, + { + key: "qualifiedAttribute", + get: function get() { + return this.qualifiedName(this.raws.attribute || this.attribute); + } + }, + { + key: "insensitiveFlag", + get: function get() { + return this.insensitive ? "i" : ""; + } + }, + { + key: "value", + get: function get() { + return this._value; + }, + set: function set(v) { + if (this._constructed) { + var _unescapeValue2 = unescapeValue(v), deprecatedUsage = _unescapeValue2.deprecatedUsage, unescaped = _unescapeValue2.unescaped, quoteMark = _unescapeValue2.quoteMark; + if (deprecatedUsage) warnOfDeprecatedValueAssignment(); + if (unescaped === this._value && quoteMark === this._quoteMark) return; + this._value = unescaped; + this._quoteMark = quoteMark; + this._syncRawValue(); + } else this._value = v; + } + }, + { + key: "insensitive", + get: function get() { + return this._insensitive; + }, + set: function set(insensitive) { + if (!insensitive) { + this._insensitive = false; + if (this.raws && (this.raws.insensitiveFlag === "I" || this.raws.insensitiveFlag === "i")) this.raws.insensitiveFlag = void 0; + } + this._insensitive = insensitive; + } + }, + { + key: "attribute", + get: function get() { + return this._attribute; + }, + set: function set(name) { + this._handleEscapes("attribute", name); + this._attribute = name; + } + } + ]); + return Attribute; + }(_namespace["default"]); + exports["default"] = Attribute; + Attribute.NO_QUOTE = null; + Attribute.SINGLE_QUOTE = "'"; + Attribute.DOUBLE_QUOTE = "\""; + var CSSESC_QUOTE_OPTIONS = (_CSSESC_QUOTE_OPTIONS = { + "'": { + quotes: "single", + wrap: true + }, + "\"": { + quotes: "double", + wrap: true + } + }, _CSSESC_QUOTE_OPTIONS[null] = { isIdentifier: true }, _CSSESC_QUOTE_OPTIONS); + function defaultAttrConcat(attrValue, attrSpaces) { + return "" + attrSpaces.before + attrValue + attrSpaces.after; + } +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.1/node_modules/postcss-selector-parser/dist/selectors/universal.js +var require_universal = /* @__PURE__ */ __commonJSMin(((exports, module) => { + exports.__esModule = true; + exports["default"] = void 0; + var _namespace = _interopRequireDefault(require_namespace()); + var _types = require_types(); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { "default": obj }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + _setPrototypeOf(subClass, superClass); + } + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + return _setPrototypeOf(o, p); + } + exports["default"] = /* @__PURE__ */ function(_Namespace) { + _inheritsLoose(Universal, _Namespace); + function Universal(opts) { + var _this = _Namespace.call(this, opts) || this; + _this.type = _types.UNIVERSAL; + _this.value = "*"; + return _this; + } + return Universal; + }(_namespace["default"]); + module.exports = exports.default; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.1/node_modules/postcss-selector-parser/dist/selectors/combinator.js +var require_combinator = /* @__PURE__ */ __commonJSMin(((exports, module) => { + exports.__esModule = true; + exports["default"] = void 0; + var _node = _interopRequireDefault(require_node$1()); + var _types = require_types(); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { "default": obj }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + _setPrototypeOf(subClass, superClass); + } + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + return _setPrototypeOf(o, p); + } + exports["default"] = /* @__PURE__ */ function(_Node) { + _inheritsLoose(Combinator, _Node); + function Combinator(opts) { + var _this = _Node.call(this, opts) || this; + _this.type = _types.COMBINATOR; + return _this; + } + return Combinator; + }(_node["default"]); + module.exports = exports.default; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.1/node_modules/postcss-selector-parser/dist/selectors/nesting.js +var require_nesting = /* @__PURE__ */ __commonJSMin(((exports, module) => { + exports.__esModule = true; + exports["default"] = void 0; + var _node = _interopRequireDefault(require_node$1()); + var _types = require_types(); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { "default": obj }; + } + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + _setPrototypeOf(subClass, superClass); + } + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + return _setPrototypeOf(o, p); + } + exports["default"] = /* @__PURE__ */ function(_Node) { + _inheritsLoose(Nesting, _Node); + function Nesting(opts) { + var _this = _Node.call(this, opts) || this; + _this.type = _types.NESTING; + _this.value = "&"; + return _this; + } + return Nesting; + }(_node["default"]); + module.exports = exports.default; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.1/node_modules/postcss-selector-parser/dist/sortAscending.js +var require_sortAscending = /* @__PURE__ */ __commonJSMin(((exports, module) => { + exports.__esModule = true; + exports["default"] = sortAscending; + function sortAscending(list) { + return list.sort(function(a, b) { + return a - b; + }); + } + module.exports = exports.default; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.1/node_modules/postcss-selector-parser/dist/tokenTypes.js +var require_tokenTypes = /* @__PURE__ */ __commonJSMin(((exports) => { + exports.__esModule = true; + exports.word = exports.tilde = exports.tab = exports.str = exports.space = exports.slash = exports.singleQuote = exports.semicolon = exports.plus = exports.pipe = exports.openSquare = exports.openParenthesis = exports.newline = exports.greaterThan = exports.feed = exports.equals = exports.doubleQuote = exports.dollar = exports.cr = exports.comment = exports.comma = exports.combinator = exports.colon = exports.closeSquare = exports.closeParenthesis = exports.caret = exports.bang = exports.backslash = exports.at = exports.asterisk = exports.ampersand = void 0; + exports.ampersand = 38; + exports.asterisk = 42; + exports.at = 64; + exports.comma = 44; + exports.colon = 58; + exports.semicolon = 59; + exports.openParenthesis = 40; + exports.closeParenthesis = 41; + exports.openSquare = 91; + exports.closeSquare = 93; + exports.dollar = 36; + exports.tilde = 126; + exports.caret = 94; + exports.plus = 43; + exports.equals = 61; + exports.pipe = 124; + exports.greaterThan = 62; + exports.space = 32; + var singleQuote = 39; + exports.singleQuote = singleQuote; + exports.doubleQuote = 34; + exports.slash = 47; + exports.bang = 33; + exports.backslash = 92; + exports.cr = 13; + exports.feed = 12; + exports.newline = 10; + exports.tab = 9; + exports.str = singleQuote; + exports.comment = -1; + exports.word = -2; + exports.combinator = -3; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.1/node_modules/postcss-selector-parser/dist/tokenize.js +var require_tokenize = /* @__PURE__ */ __commonJSMin(((exports) => { + exports.__esModule = true; + exports.FIELDS = void 0; + exports["default"] = tokenize; + var t = _interopRequireWildcard(require_tokenTypes()); + var _unescapable, _wordDelimiters; + function _getRequireWildcardCache(nodeInterop) { + if (typeof WeakMap !== "function") return null; + var cacheBabelInterop = /* @__PURE__ */ new WeakMap(); + var cacheNodeInterop = /* @__PURE__ */ new WeakMap(); + return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { + return nodeInterop ? cacheNodeInterop : cacheBabelInterop; + })(nodeInterop); + } + function _interopRequireWildcard(obj, nodeInterop) { + if (!nodeInterop && obj && obj.__esModule) return obj; + if (obj === null || typeof obj !== "object" && typeof obj !== "function") return { "default": obj }; + var cache = _getRequireWildcardCache(nodeInterop); + if (cache && cache.has(obj)) return cache.get(obj); + var newObj = {}; + var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; + for (var key in obj) if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { + var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; + if (desc && (desc.get || desc.set)) Object.defineProperty(newObj, key, desc); + else newObj[key] = obj[key]; + } + newObj["default"] = obj; + if (cache) cache.set(obj, newObj); + return newObj; + } + var unescapable = (_unescapable = {}, _unescapable[t.tab] = true, _unescapable[t.newline] = true, _unescapable[t.cr] = true, _unescapable[t.feed] = true, _unescapable); + var wordDelimiters = (_wordDelimiters = {}, _wordDelimiters[t.space] = true, _wordDelimiters[t.tab] = true, _wordDelimiters[t.newline] = true, _wordDelimiters[t.cr] = true, _wordDelimiters[t.feed] = true, _wordDelimiters[t.ampersand] = true, _wordDelimiters[t.asterisk] = true, _wordDelimiters[t.bang] = true, _wordDelimiters[t.comma] = true, _wordDelimiters[t.colon] = true, _wordDelimiters[t.semicolon] = true, _wordDelimiters[t.openParenthesis] = true, _wordDelimiters[t.closeParenthesis] = true, _wordDelimiters[t.openSquare] = true, _wordDelimiters[t.closeSquare] = true, _wordDelimiters[t.singleQuote] = true, _wordDelimiters[t.doubleQuote] = true, _wordDelimiters[t.plus] = true, _wordDelimiters[t.pipe] = true, _wordDelimiters[t.tilde] = true, _wordDelimiters[t.greaterThan] = true, _wordDelimiters[t.equals] = true, _wordDelimiters[t.dollar] = true, _wordDelimiters[t.caret] = true, _wordDelimiters[t.slash] = true, _wordDelimiters); + var hex = {}; + var hexChars = "0123456789abcdefABCDEF"; + for (var i = 0; i < hexChars.length; i++) hex[hexChars.charCodeAt(i)] = true; + /** + * Returns the last index of the bar css word + * @param {string} css The string in which the word begins + * @param {number} start The index into the string where word's first letter occurs + */ + function consumeWord(css, start) { + var next = start; + var code; + do { + code = css.charCodeAt(next); + if (wordDelimiters[code]) return next - 1; + else if (code === t.backslash) next = consumeEscape(css, next) + 1; + else next++; + } while (next < css.length); + return next - 1; + } + /** + * Returns the last index of the escape sequence + * @param {string} css The string in which the sequence begins + * @param {number} start The index into the string where escape character (`\`) occurs. + */ + function consumeEscape(css, start) { + var next = start; + var code = css.charCodeAt(next + 1); + if (unescapable[code]) {} else if (hex[code]) { + var hexDigits = 0; + do { + next++; + hexDigits++; + code = css.charCodeAt(next + 1); + } while (hex[code] && hexDigits < 6); + if (hexDigits < 6 && code === t.space) next++; + } else next++; + return next; + } + exports.FIELDS = { + TYPE: 0, + START_LINE: 1, + START_COL: 2, + END_LINE: 3, + END_COL: 4, + START_POS: 5, + END_POS: 6 + }; + function tokenize(input) { + var tokens = []; + var css = input.css.valueOf(); + var length = css.length; + var offset = -1; + var line = 1; + var start = 0; + var end = 0; + var code, content, endColumn, endLine, escaped, escapePos, last, lines, next, nextLine, nextOffset, quote, tokenType; + function unclosed(what, fix) { + if (input.safe) { + css += fix; + next = css.length - 1; + } else throw input.error("Unclosed " + what, line, start - offset, start); + } + while (start < length) { + code = css.charCodeAt(start); + if (code === t.newline) { + offset = start; + line += 1; + } + switch (code) { + case t.space: + case t.tab: + case t.newline: + case t.cr: + case t.feed: + next = start; + do { + next += 1; + code = css.charCodeAt(next); + if (code === t.newline) { + offset = next; + line += 1; + } + } while (code === t.space || code === t.newline || code === t.tab || code === t.cr || code === t.feed); + tokenType = t.space; + endLine = line; + endColumn = next - offset - 1; + end = next; + break; + case t.plus: + case t.greaterThan: + case t.tilde: + case t.pipe: + next = start; + do { + next += 1; + code = css.charCodeAt(next); + } while (code === t.plus || code === t.greaterThan || code === t.tilde || code === t.pipe); + tokenType = t.combinator; + endLine = line; + endColumn = start - offset; + end = next; + break; + case t.asterisk: + case t.ampersand: + case t.bang: + case t.comma: + case t.equals: + case t.dollar: + case t.caret: + case t.openSquare: + case t.closeSquare: + case t.colon: + case t.semicolon: + case t.openParenthesis: + case t.closeParenthesis: + next = start; + tokenType = code; + endLine = line; + endColumn = start - offset; + end = next + 1; + break; + case t.singleQuote: + case t.doubleQuote: + quote = code === t.singleQuote ? "'" : "\""; + next = start; + do { + escaped = false; + next = css.indexOf(quote, next + 1); + if (next === -1) unclosed("quote", quote); + escapePos = next; + while (css.charCodeAt(escapePos - 1) === t.backslash) { + escapePos -= 1; + escaped = !escaped; + } + } while (escaped); + tokenType = t.str; + endLine = line; + endColumn = start - offset; + end = next + 1; + break; + default: + if (code === t.slash && css.charCodeAt(start + 1) === t.asterisk) { + next = css.indexOf("*/", start + 2) + 1; + if (next === 0) unclosed("comment", "*/"); + content = css.slice(start, next + 1); + lines = content.split("\n"); + last = lines.length - 1; + if (last > 0) { + nextLine = line + last; + nextOffset = next - lines[last].length; + } else { + nextLine = line; + nextOffset = offset; + } + tokenType = t.comment; + line = nextLine; + endLine = nextLine; + endColumn = next - nextOffset; + } else if (code === t.slash) { + next = start; + tokenType = code; + endLine = line; + endColumn = start - offset; + end = next + 1; + } else { + next = consumeWord(css, start); + tokenType = t.word; + endLine = line; + endColumn = next - offset; + } + end = next + 1; + break; + } + tokens.push([ + tokenType, + line, + start - offset, + endLine, + endColumn, + start, + end + ]); + if (nextOffset) { + offset = nextOffset; + nextOffset = null; + } + start = end; + } + return tokens; + } +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.1/node_modules/postcss-selector-parser/dist/parser.js +var require_parser = /* @__PURE__ */ __commonJSMin(((exports, module) => { + exports.__esModule = true; + exports["default"] = void 0; + var _root = _interopRequireDefault(require_root()); + var _selector = _interopRequireDefault(require_selector()); + var _className = _interopRequireDefault(require_className()); + var _comment = _interopRequireDefault(require_comment()); + var _id = _interopRequireDefault(require_id()); + var _tag = _interopRequireDefault(require_tag()); + var _string = _interopRequireDefault(require_string()); + var _pseudo = _interopRequireDefault(require_pseudo()); + var _attribute = _interopRequireWildcard(require_attribute()); + var _universal = _interopRequireDefault(require_universal()); + var _combinator = _interopRequireDefault(require_combinator()); + var _nesting = _interopRequireDefault(require_nesting()); + var _sortAscending = _interopRequireDefault(require_sortAscending()); + var _tokenize = _interopRequireWildcard(require_tokenize()); + var tokens = _interopRequireWildcard(require_tokenTypes()); + var types = _interopRequireWildcard(require_types()); + var _util = require_util(); + var _WHITESPACE_TOKENS, _Object$assign; + function _getRequireWildcardCache(nodeInterop) { + if (typeof WeakMap !== "function") return null; + var cacheBabelInterop = /* @__PURE__ */ new WeakMap(); + var cacheNodeInterop = /* @__PURE__ */ new WeakMap(); + return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { + return nodeInterop ? cacheNodeInterop : cacheBabelInterop; + })(nodeInterop); + } + function _interopRequireWildcard(obj, nodeInterop) { + if (!nodeInterop && obj && obj.__esModule) return obj; + if (obj === null || typeof obj !== "object" && typeof obj !== "function") return { "default": obj }; + var cache = _getRequireWildcardCache(nodeInterop); + if (cache && cache.has(obj)) return cache.get(obj); + var newObj = {}; + var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; + for (var key in obj) if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { + var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; + if (desc && (desc.get || desc.set)) Object.defineProperty(newObj, key, desc); + else newObj[key] = obj[key]; + } + newObj["default"] = obj; + if (cache) cache.set(obj, newObj); + return newObj; + } + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { "default": obj }; + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + Object.defineProperty(Constructor, "prototype", { writable: false }); + return Constructor; + } + var WHITESPACE_TOKENS = (_WHITESPACE_TOKENS = {}, _WHITESPACE_TOKENS[tokens.space] = true, _WHITESPACE_TOKENS[tokens.cr] = true, _WHITESPACE_TOKENS[tokens.feed] = true, _WHITESPACE_TOKENS[tokens.newline] = true, _WHITESPACE_TOKENS[tokens.tab] = true, _WHITESPACE_TOKENS); + var WHITESPACE_EQUIV_TOKENS = Object.assign({}, WHITESPACE_TOKENS, (_Object$assign = {}, _Object$assign[tokens.comment] = true, _Object$assign)); + function tokenStart(token) { + return { + line: token[_tokenize.FIELDS.START_LINE], + column: token[_tokenize.FIELDS.START_COL] + }; + } + function tokenEnd(token) { + return { + line: token[_tokenize.FIELDS.END_LINE], + column: token[_tokenize.FIELDS.END_COL] + }; + } + function getSource(startLine, startColumn, endLine, endColumn) { + return { + start: { + line: startLine, + column: startColumn + }, + end: { + line: endLine, + column: endColumn + } + }; + } + function getTokenSource(token) { + return getSource(token[_tokenize.FIELDS.START_LINE], token[_tokenize.FIELDS.START_COL], token[_tokenize.FIELDS.END_LINE], token[_tokenize.FIELDS.END_COL]); + } + function getTokenSourceSpan(startToken, endToken) { + if (!startToken) return; + return getSource(startToken[_tokenize.FIELDS.START_LINE], startToken[_tokenize.FIELDS.START_COL], endToken[_tokenize.FIELDS.END_LINE], endToken[_tokenize.FIELDS.END_COL]); + } + function unescapeProp(node, prop) { + var value = node[prop]; + if (typeof value !== "string") return; + if (value.indexOf("\\") !== -1) { + (0, _util.ensureObject)(node, "raws"); + node[prop] = (0, _util.unesc)(value); + if (node.raws[prop] === void 0) node.raws[prop] = value; + } + return node; + } + function indexesOf(array, item) { + var i = -1; + var indexes = []; + while ((i = array.indexOf(item, i + 1)) !== -1) indexes.push(i); + return indexes; + } + function uniqs() { + var list = Array.prototype.concat.apply([], arguments); + return list.filter(function(item, i) { + return i === list.indexOf(item); + }); + } + exports["default"] = /* @__PURE__ */ function() { + function Parser(rule, options) { + if (options === void 0) options = {}; + this.rule = rule; + this.options = Object.assign({ + lossy: false, + safe: false + }, options); + this.position = 0; + this.css = typeof this.rule === "string" ? this.rule : this.rule.selector; + this.tokens = (0, _tokenize["default"])({ + css: this.css, + error: this._errorGenerator(), + safe: this.options.safe + }); + var rootSource = getTokenSourceSpan(this.tokens[0], this.tokens[this.tokens.length - 1]); + this.root = new _root["default"]({ source: rootSource }); + this.root.errorGenerator = this._errorGenerator(); + var selector = new _selector["default"]({ + source: { start: { + line: 1, + column: 1 + } }, + sourceIndex: 0 + }); + this.root.append(selector); + this.current = selector; + this.loop(); + } + var _proto = Parser.prototype; + _proto._errorGenerator = function _errorGenerator() { + var _this = this; + return function(message, errorOptions) { + if (typeof _this.rule === "string") return new Error(message); + return _this.rule.error(message, errorOptions); + }; + }; + _proto.attribute = function attribute() { + var attr = []; + var startingToken = this.currToken; + this.position++; + while (this.position < this.tokens.length && this.currToken[_tokenize.FIELDS.TYPE] !== tokens.closeSquare) { + attr.push(this.currToken); + this.position++; + } + if (this.currToken[_tokenize.FIELDS.TYPE] !== tokens.closeSquare) return this.expected("closing square bracket", this.currToken[_tokenize.FIELDS.START_POS]); + var len = attr.length; + var node = { + source: getSource(startingToken[1], startingToken[2], this.currToken[3], this.currToken[4]), + sourceIndex: startingToken[_tokenize.FIELDS.START_POS] + }; + if (len === 1 && !~[tokens.word].indexOf(attr[0][_tokenize.FIELDS.TYPE])) return this.expected("attribute", attr[0][_tokenize.FIELDS.START_POS]); + var pos = 0; + var spaceBefore = ""; + var commentBefore = ""; + var lastAdded = null; + var spaceAfterMeaningfulToken = false; + while (pos < len) { + var token = attr[pos]; + var content = this.content(token); + var next = attr[pos + 1]; + switch (token[_tokenize.FIELDS.TYPE]) { + case tokens.space: + spaceAfterMeaningfulToken = true; + if (this.options.lossy) break; + if (lastAdded) { + (0, _util.ensureObject)(node, "spaces", lastAdded); + node.spaces[lastAdded].after = (node.spaces[lastAdded].after || "") + content; + var existingComment = (0, _util.getProp)(node, "raws", "spaces", lastAdded, "after") || null; + if (existingComment) node.raws.spaces[lastAdded].after = existingComment + content; + } else { + spaceBefore = spaceBefore + content; + commentBefore = commentBefore + content; + } + break; + case tokens.asterisk: + if (next[_tokenize.FIELDS.TYPE] === tokens.equals) { + node.operator = content; + lastAdded = "operator"; + } else if ((!node.namespace || lastAdded === "namespace" && !spaceAfterMeaningfulToken) && next) { + if (spaceBefore) { + (0, _util.ensureObject)(node, "spaces", "attribute"); + node.spaces.attribute.before = spaceBefore; + spaceBefore = ""; + } + if (commentBefore) { + (0, _util.ensureObject)(node, "raws", "spaces", "attribute"); + node.raws.spaces.attribute.before = spaceBefore; + commentBefore = ""; + } + node.namespace = (node.namespace || "") + content; + if ((0, _util.getProp)(node, "raws", "namespace") || null) node.raws.namespace += content; + lastAdded = "namespace"; + } + spaceAfterMeaningfulToken = false; + break; + case tokens.dollar: if (lastAdded === "value") { + var oldRawValue = (0, _util.getProp)(node, "raws", "value"); + node.value += "$"; + if (oldRawValue) node.raws.value = oldRawValue + "$"; + break; + } + case tokens.caret: + if (next[_tokenize.FIELDS.TYPE] === tokens.equals) { + node.operator = content; + lastAdded = "operator"; + } + spaceAfterMeaningfulToken = false; + break; + case tokens.combinator: + if (content === "~" && next[_tokenize.FIELDS.TYPE] === tokens.equals) { + node.operator = content; + lastAdded = "operator"; + } + if (content !== "|") { + spaceAfterMeaningfulToken = false; + break; + } + if (next[_tokenize.FIELDS.TYPE] === tokens.equals) { + node.operator = content; + lastAdded = "operator"; + } else if (!node.namespace && !node.attribute) node.namespace = true; + spaceAfterMeaningfulToken = false; + break; + case tokens.word: + if (next && this.content(next) === "|" && attr[pos + 2] && attr[pos + 2][_tokenize.FIELDS.TYPE] !== tokens.equals && !node.operator && !node.namespace) { + node.namespace = content; + lastAdded = "namespace"; + } else if (!node.attribute || lastAdded === "attribute" && !spaceAfterMeaningfulToken) { + if (spaceBefore) { + (0, _util.ensureObject)(node, "spaces", "attribute"); + node.spaces.attribute.before = spaceBefore; + spaceBefore = ""; + } + if (commentBefore) { + (0, _util.ensureObject)(node, "raws", "spaces", "attribute"); + node.raws.spaces.attribute.before = commentBefore; + commentBefore = ""; + } + node.attribute = (node.attribute || "") + content; + if ((0, _util.getProp)(node, "raws", "attribute") || null) node.raws.attribute += content; + lastAdded = "attribute"; + } else if (!node.value && node.value !== "" || lastAdded === "value" && !(spaceAfterMeaningfulToken || node.quoteMark)) { + var _unescaped = (0, _util.unesc)(content); + var _oldRawValue = (0, _util.getProp)(node, "raws", "value") || ""; + var oldValue = node.value || ""; + node.value = oldValue + _unescaped; + node.quoteMark = null; + if (_unescaped !== content || _oldRawValue) { + (0, _util.ensureObject)(node, "raws"); + node.raws.value = (_oldRawValue || oldValue) + content; + } + lastAdded = "value"; + } else { + var insensitive = content === "i" || content === "I"; + if ((node.value || node.value === "") && (node.quoteMark || spaceAfterMeaningfulToken)) { + node.insensitive = insensitive; + if (!insensitive || content === "I") { + (0, _util.ensureObject)(node, "raws"); + node.raws.insensitiveFlag = content; + } + lastAdded = "insensitive"; + if (spaceBefore) { + (0, _util.ensureObject)(node, "spaces", "insensitive"); + node.spaces.insensitive.before = spaceBefore; + spaceBefore = ""; + } + if (commentBefore) { + (0, _util.ensureObject)(node, "raws", "spaces", "insensitive"); + node.raws.spaces.insensitive.before = commentBefore; + commentBefore = ""; + } + } else if (node.value || node.value === "") { + lastAdded = "value"; + node.value += content; + if (node.raws.value) node.raws.value += content; + } + } + spaceAfterMeaningfulToken = false; + break; + case tokens.str: + if (!node.attribute || !node.operator) return this.error("Expected an attribute followed by an operator preceding the string.", { index: token[_tokenize.FIELDS.START_POS] }); + var _unescapeValue = (0, _attribute.unescapeValue)(content), unescaped = _unescapeValue.unescaped, quoteMark = _unescapeValue.quoteMark; + node.value = unescaped; + node.quoteMark = quoteMark; + lastAdded = "value"; + (0, _util.ensureObject)(node, "raws"); + node.raws.value = content; + spaceAfterMeaningfulToken = false; + break; + case tokens.equals: + if (!node.attribute) return this.expected("attribute", token[_tokenize.FIELDS.START_POS], content); + if (node.value) return this.error("Unexpected \"=\" found; an operator was already defined.", { index: token[_tokenize.FIELDS.START_POS] }); + node.operator = node.operator ? node.operator + content : content; + lastAdded = "operator"; + spaceAfterMeaningfulToken = false; + break; + case tokens.comment: + if (lastAdded) if (spaceAfterMeaningfulToken || next && next[_tokenize.FIELDS.TYPE] === tokens.space || lastAdded === "insensitive") { + var lastComment = (0, _util.getProp)(node, "spaces", lastAdded, "after") || ""; + var rawLastComment = (0, _util.getProp)(node, "raws", "spaces", lastAdded, "after") || lastComment; + (0, _util.ensureObject)(node, "raws", "spaces", lastAdded); + node.raws.spaces[lastAdded].after = rawLastComment + content; + } else { + var lastValue = node[lastAdded] || ""; + var rawLastValue = (0, _util.getProp)(node, "raws", lastAdded) || lastValue; + (0, _util.ensureObject)(node, "raws"); + node.raws[lastAdded] = rawLastValue + content; + } + else commentBefore = commentBefore + content; + break; + default: return this.error("Unexpected \"" + content + "\" found.", { index: token[_tokenize.FIELDS.START_POS] }); + } + pos++; + } + unescapeProp(node, "attribute"); + unescapeProp(node, "namespace"); + this.newNode(new _attribute["default"](node)); + this.position++; + }; + _proto.parseWhitespaceEquivalentTokens = function parseWhitespaceEquivalentTokens(stopPosition) { + if (stopPosition < 0) stopPosition = this.tokens.length; + var startPosition = this.position; + var nodes = []; + var space = ""; + var lastComment = void 0; + do + if (WHITESPACE_TOKENS[this.currToken[_tokenize.FIELDS.TYPE]]) { + if (!this.options.lossy) space += this.content(); + } else if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.comment) { + var spaces = {}; + if (space) { + spaces.before = space; + space = ""; + } + lastComment = new _comment["default"]({ + value: this.content(), + source: getTokenSource(this.currToken), + sourceIndex: this.currToken[_tokenize.FIELDS.START_POS], + spaces + }); + nodes.push(lastComment); + } + while (++this.position < stopPosition); + if (space) { + if (lastComment) lastComment.spaces.after = space; + else if (!this.options.lossy) { + var firstToken = this.tokens[startPosition]; + var lastToken = this.tokens[this.position - 1]; + nodes.push(new _string["default"]({ + value: "", + source: getSource(firstToken[_tokenize.FIELDS.START_LINE], firstToken[_tokenize.FIELDS.START_COL], lastToken[_tokenize.FIELDS.END_LINE], lastToken[_tokenize.FIELDS.END_COL]), + sourceIndex: firstToken[_tokenize.FIELDS.START_POS], + spaces: { + before: space, + after: "" + } + })); + } + } + return nodes; + }; + _proto.convertWhitespaceNodesToSpace = function convertWhitespaceNodesToSpace(nodes, requiredSpace) { + var _this2 = this; + if (requiredSpace === void 0) requiredSpace = false; + var space = ""; + var rawSpace = ""; + nodes.forEach(function(n) { + var spaceBefore = _this2.lossySpace(n.spaces.before, requiredSpace); + var rawSpaceBefore = _this2.lossySpace(n.rawSpaceBefore, requiredSpace); + space += spaceBefore + _this2.lossySpace(n.spaces.after, requiredSpace && spaceBefore.length === 0); + rawSpace += spaceBefore + n.value + _this2.lossySpace(n.rawSpaceAfter, requiredSpace && rawSpaceBefore.length === 0); + }); + if (rawSpace === space) rawSpace = void 0; + return { + space, + rawSpace + }; + }; + _proto.isNamedCombinator = function isNamedCombinator(position) { + if (position === void 0) position = this.position; + return this.tokens[position + 0] && this.tokens[position + 0][_tokenize.FIELDS.TYPE] === tokens.slash && this.tokens[position + 1] && this.tokens[position + 1][_tokenize.FIELDS.TYPE] === tokens.word && this.tokens[position + 2] && this.tokens[position + 2][_tokenize.FIELDS.TYPE] === tokens.slash; + }; + _proto.namedCombinator = function namedCombinator() { + if (this.isNamedCombinator()) { + var nameRaw = this.content(this.tokens[this.position + 1]); + var name = (0, _util.unesc)(nameRaw).toLowerCase(); + var raws = {}; + if (name !== nameRaw) raws.value = "/" + nameRaw + "/"; + var node = new _combinator["default"]({ + value: "/" + name + "/", + source: getSource(this.currToken[_tokenize.FIELDS.START_LINE], this.currToken[_tokenize.FIELDS.START_COL], this.tokens[this.position + 2][_tokenize.FIELDS.END_LINE], this.tokens[this.position + 2][_tokenize.FIELDS.END_COL]), + sourceIndex: this.currToken[_tokenize.FIELDS.START_POS], + raws + }); + this.position = this.position + 3; + return node; + } else this.unexpected(); + }; + _proto.combinator = function combinator() { + var _this3 = this; + if (this.content() === "|") return this.namespace(); + var nextSigTokenPos = this.locateNextMeaningfulToken(this.position); + if (nextSigTokenPos < 0 || this.tokens[nextSigTokenPos][_tokenize.FIELDS.TYPE] === tokens.comma || this.tokens[nextSigTokenPos][_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) { + var nodes = this.parseWhitespaceEquivalentTokens(nextSigTokenPos); + if (nodes.length > 0) { + var last = this.current.last; + if (last) { + var _this$convertWhitespa = this.convertWhitespaceNodesToSpace(nodes), space = _this$convertWhitespa.space, rawSpace = _this$convertWhitespa.rawSpace; + if (rawSpace !== void 0) last.rawSpaceAfter += rawSpace; + last.spaces.after += space; + } else nodes.forEach(function(n) { + return _this3.newNode(n); + }); + } + return; + } + var firstToken = this.currToken; + var spaceOrDescendantSelectorNodes = void 0; + if (nextSigTokenPos > this.position) spaceOrDescendantSelectorNodes = this.parseWhitespaceEquivalentTokens(nextSigTokenPos); + var node; + if (this.isNamedCombinator()) node = this.namedCombinator(); + else if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.combinator) { + node = new _combinator["default"]({ + value: this.content(), + source: getTokenSource(this.currToken), + sourceIndex: this.currToken[_tokenize.FIELDS.START_POS] + }); + this.position++; + } else if (WHITESPACE_TOKENS[this.currToken[_tokenize.FIELDS.TYPE]]) {} else if (!spaceOrDescendantSelectorNodes) this.unexpected(); + if (node) { + if (spaceOrDescendantSelectorNodes) { + var _this$convertWhitespa2 = this.convertWhitespaceNodesToSpace(spaceOrDescendantSelectorNodes), _space = _this$convertWhitespa2.space, _rawSpace = _this$convertWhitespa2.rawSpace; + node.spaces.before = _space; + node.rawSpaceBefore = _rawSpace; + } + } else { + var _this$convertWhitespa3 = this.convertWhitespaceNodesToSpace(spaceOrDescendantSelectorNodes, true), _space2 = _this$convertWhitespa3.space, _rawSpace2 = _this$convertWhitespa3.rawSpace; + if (!_rawSpace2) _rawSpace2 = _space2; + var spaces = {}; + var raws = { spaces: {} }; + if (_space2.endsWith(" ") && _rawSpace2.endsWith(" ")) { + spaces.before = _space2.slice(0, _space2.length - 1); + raws.spaces.before = _rawSpace2.slice(0, _rawSpace2.length - 1); + } else if (_space2[0] === " " && _rawSpace2[0] === " ") { + spaces.after = _space2.slice(1); + raws.spaces.after = _rawSpace2.slice(1); + } else raws.value = _rawSpace2; + node = new _combinator["default"]({ + value: " ", + source: getTokenSourceSpan(firstToken, this.tokens[this.position - 1]), + sourceIndex: firstToken[_tokenize.FIELDS.START_POS], + spaces, + raws + }); + } + if (this.currToken && this.currToken[_tokenize.FIELDS.TYPE] === tokens.space) { + node.spaces.after = this.optionalSpace(this.content()); + this.position++; + } + return this.newNode(node); + }; + _proto.comma = function comma() { + if (this.position === this.tokens.length - 1) { + this.root.trailingComma = true; + this.position++; + return; + } + this.current._inferEndPosition(); + var selector = new _selector["default"]({ + source: { start: tokenStart(this.tokens[this.position + 1]) }, + sourceIndex: this.tokens[this.position + 1][_tokenize.FIELDS.START_POS] + }); + this.current.parent.append(selector); + this.current = selector; + this.position++; + }; + _proto.comment = function comment() { + var current = this.currToken; + this.newNode(new _comment["default"]({ + value: this.content(), + source: getTokenSource(current), + sourceIndex: current[_tokenize.FIELDS.START_POS] + })); + this.position++; + }; + _proto.error = function error(message, opts) { + throw this.root.error(message, opts); + }; + _proto.missingBackslash = function missingBackslash() { + return this.error("Expected a backslash preceding the semicolon.", { index: this.currToken[_tokenize.FIELDS.START_POS] }); + }; + _proto.missingParenthesis = function missingParenthesis() { + return this.expected("opening parenthesis", this.currToken[_tokenize.FIELDS.START_POS]); + }; + _proto.missingSquareBracket = function missingSquareBracket() { + return this.expected("opening square bracket", this.currToken[_tokenize.FIELDS.START_POS]); + }; + _proto.unexpected = function unexpected() { + return this.error("Unexpected '" + this.content() + "'. Escaping special characters with \\ may help.", this.currToken[_tokenize.FIELDS.START_POS]); + }; + _proto.unexpectedPipe = function unexpectedPipe() { + return this.error("Unexpected '|'.", this.currToken[_tokenize.FIELDS.START_POS]); + }; + _proto.namespace = function namespace() { + var before = this.prevToken && this.content(this.prevToken) || true; + if (this.nextToken[_tokenize.FIELDS.TYPE] === tokens.word) { + this.position++; + return this.word(before); + } else if (this.nextToken[_tokenize.FIELDS.TYPE] === tokens.asterisk) { + this.position++; + return this.universal(before); + } + this.unexpectedPipe(); + }; + _proto.nesting = function nesting() { + if (this.nextToken) { + if (this.content(this.nextToken) === "|") { + this.position++; + return; + } + } + var current = this.currToken; + this.newNode(new _nesting["default"]({ + value: this.content(), + source: getTokenSource(current), + sourceIndex: current[_tokenize.FIELDS.START_POS] + })); + this.position++; + }; + _proto.parentheses = function parentheses() { + var last = this.current.last; + var unbalanced = 1; + this.position++; + if (last && last.type === types.PSEUDO) { + var selector = new _selector["default"]({ + source: { start: tokenStart(this.tokens[this.position]) }, + sourceIndex: this.tokens[this.position][_tokenize.FIELDS.START_POS] + }); + var cache = this.current; + last.append(selector); + this.current = selector; + while (this.position < this.tokens.length && unbalanced) { + if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) unbalanced++; + if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) unbalanced--; + if (unbalanced) this.parse(); + else { + this.current.source.end = tokenEnd(this.currToken); + this.current.parent.source.end = tokenEnd(this.currToken); + this.position++; + } + } + this.current = cache; + } else { + var parenStart = this.currToken; + var parenValue = "("; + var parenEnd; + while (this.position < this.tokens.length && unbalanced) { + if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) unbalanced++; + if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) unbalanced--; + parenEnd = this.currToken; + parenValue += this.parseParenthesisToken(this.currToken); + this.position++; + } + if (last) last.appendToPropertyAndEscape("value", parenValue, parenValue); + else this.newNode(new _string["default"]({ + value: parenValue, + source: getSource(parenStart[_tokenize.FIELDS.START_LINE], parenStart[_tokenize.FIELDS.START_COL], parenEnd[_tokenize.FIELDS.END_LINE], parenEnd[_tokenize.FIELDS.END_COL]), + sourceIndex: parenStart[_tokenize.FIELDS.START_POS] + })); + } + if (unbalanced) return this.expected("closing parenthesis", this.currToken[_tokenize.FIELDS.START_POS]); + }; + _proto.pseudo = function pseudo() { + var _this4 = this; + var pseudoStr = ""; + var startingToken = this.currToken; + while (this.currToken && this.currToken[_tokenize.FIELDS.TYPE] === tokens.colon) { + pseudoStr += this.content(); + this.position++; + } + if (!this.currToken) return this.expected(["pseudo-class", "pseudo-element"], this.position - 1); + if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.word) this.splitWord(false, function(first, length) { + pseudoStr += first; + _this4.newNode(new _pseudo["default"]({ + value: pseudoStr, + source: getTokenSourceSpan(startingToken, _this4.currToken), + sourceIndex: startingToken[_tokenize.FIELDS.START_POS] + })); + if (length > 1 && _this4.nextToken && _this4.nextToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) _this4.error("Misplaced parenthesis.", { index: _this4.nextToken[_tokenize.FIELDS.START_POS] }); + }); + else return this.expected(["pseudo-class", "pseudo-element"], this.currToken[_tokenize.FIELDS.START_POS]); + }; + _proto.space = function space() { + var content = this.content(); + if (this.position === 0 || this.prevToken[_tokenize.FIELDS.TYPE] === tokens.comma || this.prevToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis || this.current.nodes.every(function(node) { + return node.type === "comment"; + })) { + this.spaces = this.optionalSpace(content); + this.position++; + } else if (this.position === this.tokens.length - 1 || this.nextToken[_tokenize.FIELDS.TYPE] === tokens.comma || this.nextToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) { + this.current.last.spaces.after = this.optionalSpace(content); + this.position++; + } else this.combinator(); + }; + _proto.string = function string() { + var current = this.currToken; + this.newNode(new _string["default"]({ + value: this.content(), + source: getTokenSource(current), + sourceIndex: current[_tokenize.FIELDS.START_POS] + })); + this.position++; + }; + _proto.universal = function universal(namespace) { + var nextToken = this.nextToken; + if (nextToken && this.content(nextToken) === "|") { + this.position++; + return this.namespace(); + } + var current = this.currToken; + this.newNode(new _universal["default"]({ + value: this.content(), + source: getTokenSource(current), + sourceIndex: current[_tokenize.FIELDS.START_POS] + }), namespace); + this.position++; + }; + _proto.splitWord = function splitWord(namespace, firstCallback) { + var _this5 = this; + var nextToken = this.nextToken; + var word = this.content(); + while (nextToken && ~[ + tokens.dollar, + tokens.caret, + tokens.equals, + tokens.word + ].indexOf(nextToken[_tokenize.FIELDS.TYPE])) { + this.position++; + var current = this.content(); + word += current; + if (current.lastIndexOf("\\") === current.length - 1) { + var next = this.nextToken; + if (next && next[_tokenize.FIELDS.TYPE] === tokens.space) { + word += this.requiredSpace(this.content(next)); + this.position++; + } + } + nextToken = this.nextToken; + } + var hasClass = indexesOf(word, ".").filter(function(i) { + var escapedDot = word[i - 1] === "\\"; + var isKeyframesPercent = /^\d+\.\d+%$/.test(word); + return !escapedDot && !isKeyframesPercent; + }); + var hasId = indexesOf(word, "#").filter(function(i) { + return word[i - 1] !== "\\"; + }); + var interpolations = indexesOf(word, "#{"); + if (interpolations.length) hasId = hasId.filter(function(hashIndex) { + return !~interpolations.indexOf(hashIndex); + }); + var indices = (0, _sortAscending["default"])(uniqs([0].concat(hasClass, hasId))); + indices.forEach(function(ind, i) { + var index = indices[i + 1] || word.length; + var value = word.slice(ind, index); + if (i === 0 && firstCallback) return firstCallback.call(_this5, value, indices.length); + var node; + var current = _this5.currToken; + var sourceIndex = current[_tokenize.FIELDS.START_POS] + indices[i]; + var source = getSource(current[1], current[2] + ind, current[3], current[2] + (index - 1)); + if (~hasClass.indexOf(ind)) { + var classNameOpts = { + value: value.slice(1), + source, + sourceIndex + }; + node = new _className["default"](unescapeProp(classNameOpts, "value")); + } else if (~hasId.indexOf(ind)) { + var idOpts = { + value: value.slice(1), + source, + sourceIndex + }; + node = new _id["default"](unescapeProp(idOpts, "value")); + } else { + var tagOpts = { + value, + source, + sourceIndex + }; + unescapeProp(tagOpts, "value"); + node = new _tag["default"](tagOpts); + } + _this5.newNode(node, namespace); + namespace = null; + }); + this.position++; + }; + _proto.word = function word(namespace) { + var nextToken = this.nextToken; + if (nextToken && this.content(nextToken) === "|") { + this.position++; + return this.namespace(); + } + return this.splitWord(namespace); + }; + _proto.loop = function loop() { + while (this.position < this.tokens.length) this.parse(true); + this.current._inferEndPosition(); + return this.root; + }; + _proto.parse = function parse(throwOnParenthesis) { + switch (this.currToken[_tokenize.FIELDS.TYPE]) { + case tokens.space: + this.space(); + break; + case tokens.comment: + this.comment(); + break; + case tokens.openParenthesis: + this.parentheses(); + break; + case tokens.closeParenthesis: + if (throwOnParenthesis) this.missingParenthesis(); + break; + case tokens.openSquare: + this.attribute(); + break; + case tokens.dollar: + case tokens.caret: + case tokens.equals: + case tokens.word: + this.word(); + break; + case tokens.colon: + this.pseudo(); + break; + case tokens.comma: + this.comma(); + break; + case tokens.asterisk: + this.universal(); + break; + case tokens.ampersand: + this.nesting(); + break; + case tokens.slash: + case tokens.combinator: + this.combinator(); + break; + case tokens.str: + this.string(); + break; + case tokens.closeSquare: this.missingSquareBracket(); + case tokens.semicolon: this.missingBackslash(); + default: this.unexpected(); + } + }; + _proto.expected = function expected(description, index, found) { + if (Array.isArray(description)) { + var last = description.pop(); + description = description.join(", ") + " or " + last; + } + var an = /^[aeiou]/.test(description[0]) ? "an" : "a"; + if (!found) return this.error("Expected " + an + " " + description + ".", { index }); + return this.error("Expected " + an + " " + description + ", found \"" + found + "\" instead.", { index }); + }; + _proto.requiredSpace = function requiredSpace(space) { + return this.options.lossy ? " " : space; + }; + _proto.optionalSpace = function optionalSpace(space) { + return this.options.lossy ? "" : space; + }; + _proto.lossySpace = function lossySpace(space, required) { + if (this.options.lossy) return required ? " " : ""; + else return space; + }; + _proto.parseParenthesisToken = function parseParenthesisToken(token) { + var content = this.content(token); + if (token[_tokenize.FIELDS.TYPE] === tokens.space) return this.requiredSpace(content); + else return content; + }; + _proto.newNode = function newNode(node, namespace) { + if (namespace) { + if (/^ +$/.test(namespace)) { + if (!this.options.lossy) this.spaces = (this.spaces || "") + namespace; + namespace = true; + } + node.namespace = namespace; + unescapeProp(node, "namespace"); + } + if (this.spaces) { + node.spaces.before = this.spaces; + this.spaces = ""; + } + return this.current.append(node); + }; + _proto.content = function content(token) { + if (token === void 0) token = this.currToken; + return this.css.slice(token[_tokenize.FIELDS.START_POS], token[_tokenize.FIELDS.END_POS]); + }; + /** + * returns the index of the next non-whitespace, non-comment token. + * returns -1 if no meaningful token is found. + */ + _proto.locateNextMeaningfulToken = function locateNextMeaningfulToken(startPosition) { + if (startPosition === void 0) startPosition = this.position + 1; + var searchPosition = startPosition; + while (searchPosition < this.tokens.length) if (WHITESPACE_EQUIV_TOKENS[this.tokens[searchPosition][_tokenize.FIELDS.TYPE]]) { + searchPosition++; + continue; + } else return searchPosition; + return -1; + }; + _createClass(Parser, [ + { + key: "currToken", + get: function get() { + return this.tokens[this.position]; + } + }, + { + key: "nextToken", + get: function get() { + return this.tokens[this.position + 1]; + } + }, + { + key: "prevToken", + get: function get() { + return this.tokens[this.position - 1]; + } + } + ]); + return Parser; + }(); + module.exports = exports.default; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.1/node_modules/postcss-selector-parser/dist/processor.js +var require_processor = /* @__PURE__ */ __commonJSMin(((exports, module) => { + exports.__esModule = true; + exports["default"] = void 0; + var _parser = _interopRequireDefault(require_parser()); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { "default": obj }; + } + exports["default"] = /* @__PURE__ */ function() { + function Processor(func, options) { + this.func = func || function noop() {}; + this.funcRes = null; + this.options = options; + } + var _proto = Processor.prototype; + _proto._shouldUpdateSelector = function _shouldUpdateSelector(rule, options) { + if (options === void 0) options = {}; + if (Object.assign({}, this.options, options).updateSelector === false) return false; + else return typeof rule !== "string"; + }; + _proto._isLossy = function _isLossy(options) { + if (options === void 0) options = {}; + if (Object.assign({}, this.options, options).lossless === false) return true; + else return false; + }; + _proto._root = function _root(rule, options) { + if (options === void 0) options = {}; + return new _parser["default"](rule, this._parseOptions(options)).root; + }; + _proto._parseOptions = function _parseOptions(options) { + return { lossy: this._isLossy(options) }; + }; + _proto._run = function _run(rule, options) { + var _this = this; + if (options === void 0) options = {}; + return new Promise(function(resolve, reject) { + try { + var root = _this._root(rule, options); + Promise.resolve(_this.func(root)).then(function(transform) { + var string = void 0; + if (_this._shouldUpdateSelector(rule, options)) { + string = root.toString(); + rule.selector = string; + } + return { + transform, + root, + string + }; + }).then(resolve, reject); + } catch (e) { + reject(e); + return; + } + }); + }; + _proto._runSync = function _runSync(rule, options) { + if (options === void 0) options = {}; + var root = this._root(rule, options); + var transform = this.func(root); + if (transform && typeof transform.then === "function") throw new Error("Selector processor returned a promise to a synchronous call."); + var string = void 0; + if (options.updateSelector && typeof rule !== "string") { + string = root.toString(); + rule.selector = string; + } + return { + transform, + root, + string + }; + }; + _proto.ast = function ast(rule, options) { + return this._run(rule, options).then(function(result) { + return result.root; + }); + }; + _proto.astSync = function astSync(rule, options) { + return this._runSync(rule, options).root; + }; + _proto.transform = function transform(rule, options) { + return this._run(rule, options).then(function(result) { + return result.transform; + }); + }; + _proto.transformSync = function transformSync(rule, options) { + return this._runSync(rule, options).transform; + }; + _proto.process = function process(rule, options) { + return this._run(rule, options).then(function(result) { + return result.string || result.root.toString(); + }); + }; + _proto.processSync = function processSync(rule, options) { + var result = this._runSync(rule, options); + return result.string || result.root.toString(); + }; + return Processor; + }(); + module.exports = exports.default; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.1/node_modules/postcss-selector-parser/dist/selectors/constructors.js +var require_constructors = /* @__PURE__ */ __commonJSMin(((exports) => { + exports.__esModule = true; + exports.universal = exports.tag = exports.string = exports.selector = exports.root = exports.pseudo = exports.nesting = exports.id = exports.comment = exports.combinator = exports.className = exports.attribute = void 0; + var _attribute = _interopRequireDefault(require_attribute()); + var _className = _interopRequireDefault(require_className()); + var _combinator = _interopRequireDefault(require_combinator()); + var _comment = _interopRequireDefault(require_comment()); + var _id = _interopRequireDefault(require_id()); + var _nesting = _interopRequireDefault(require_nesting()); + var _pseudo = _interopRequireDefault(require_pseudo()); + var _root = _interopRequireDefault(require_root()); + var _selector = _interopRequireDefault(require_selector()); + var _string = _interopRequireDefault(require_string()); + var _tag = _interopRequireDefault(require_tag()); + var _universal = _interopRequireDefault(require_universal()); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { "default": obj }; + } + exports.attribute = function attribute(opts) { + return new _attribute["default"](opts); + }; + exports.className = function className(opts) { + return new _className["default"](opts); + }; + exports.combinator = function combinator(opts) { + return new _combinator["default"](opts); + }; + exports.comment = function comment(opts) { + return new _comment["default"](opts); + }; + exports.id = function id(opts) { + return new _id["default"](opts); + }; + exports.nesting = function nesting(opts) { + return new _nesting["default"](opts); + }; + exports.pseudo = function pseudo(opts) { + return new _pseudo["default"](opts); + }; + exports.root = function root(opts) { + return new _root["default"](opts); + }; + exports.selector = function selector(opts) { + return new _selector["default"](opts); + }; + exports.string = function string(opts) { + return new _string["default"](opts); + }; + exports.tag = function tag(opts) { + return new _tag["default"](opts); + }; + exports.universal = function universal(opts) { + return new _universal["default"](opts); + }; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.1/node_modules/postcss-selector-parser/dist/selectors/guards.js +var require_guards = /* @__PURE__ */ __commonJSMin(((exports) => { + exports.__esModule = true; + exports.isComment = exports.isCombinator = exports.isClassName = exports.isAttribute = void 0; + exports.isContainer = isContainer; + exports.isIdentifier = void 0; + exports.isNamespace = isNamespace; + exports.isNesting = void 0; + exports.isNode = isNode; + exports.isPseudo = void 0; + exports.isPseudoClass = isPseudoClass; + exports.isPseudoElement = isPseudoElement; + exports.isUniversal = exports.isTag = exports.isString = exports.isSelector = exports.isRoot = void 0; + var _types = require_types(); + var _IS_TYPE; + var IS_TYPE = (_IS_TYPE = {}, _IS_TYPE[_types.ATTRIBUTE] = true, _IS_TYPE[_types.CLASS] = true, _IS_TYPE[_types.COMBINATOR] = true, _IS_TYPE[_types.COMMENT] = true, _IS_TYPE[_types.ID] = true, _IS_TYPE[_types.NESTING] = true, _IS_TYPE[_types.PSEUDO] = true, _IS_TYPE[_types.ROOT] = true, _IS_TYPE[_types.SELECTOR] = true, _IS_TYPE[_types.STRING] = true, _IS_TYPE[_types.TAG] = true, _IS_TYPE[_types.UNIVERSAL] = true, _IS_TYPE); + function isNode(node) { + return typeof node === "object" && IS_TYPE[node.type]; + } + function isNodeType(type, node) { + return isNode(node) && node.type === type; + } + var isAttribute = isNodeType.bind(null, _types.ATTRIBUTE); + exports.isAttribute = isAttribute; + exports.isClassName = isNodeType.bind(null, _types.CLASS); + exports.isCombinator = isNodeType.bind(null, _types.COMBINATOR); + exports.isComment = isNodeType.bind(null, _types.COMMENT); + exports.isIdentifier = isNodeType.bind(null, _types.ID); + exports.isNesting = isNodeType.bind(null, _types.NESTING); + var isPseudo = isNodeType.bind(null, _types.PSEUDO); + exports.isPseudo = isPseudo; + exports.isRoot = isNodeType.bind(null, _types.ROOT); + exports.isSelector = isNodeType.bind(null, _types.SELECTOR); + exports.isString = isNodeType.bind(null, _types.STRING); + var isTag = isNodeType.bind(null, _types.TAG); + exports.isTag = isTag; + exports.isUniversal = isNodeType.bind(null, _types.UNIVERSAL); + function isPseudoElement(node) { + return isPseudo(node) && node.value && (node.value.startsWith("::") || node.value.toLowerCase() === ":before" || node.value.toLowerCase() === ":after" || node.value.toLowerCase() === ":first-letter" || node.value.toLowerCase() === ":first-line"); + } + function isPseudoClass(node) { + return isPseudo(node) && !isPseudoElement(node); + } + function isContainer(node) { + return !!(isNode(node) && node.walk); + } + function isNamespace(node) { + return isAttribute(node) || isTag(node); + } +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.1/node_modules/postcss-selector-parser/dist/selectors/index.js +var require_selectors = /* @__PURE__ */ __commonJSMin(((exports) => { + exports.__esModule = true; + var _types = require_types(); + Object.keys(_types).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _types[key]) return; + exports[key] = _types[key]; + }); + var _constructors = require_constructors(); + Object.keys(_constructors).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _constructors[key]) return; + exports[key] = _constructors[key]; + }); + var _guards = require_guards(); + Object.keys(_guards).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _guards[key]) return; + exports[key] = _guards[key]; + }); +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-selector-parser@7.1.1/node_modules/postcss-selector-parser/dist/index.js +var require_dist = /* @__PURE__ */ __commonJSMin(((exports, module) => { + exports.__esModule = true; + exports["default"] = void 0; + var _processor = _interopRequireDefault(require_processor()); + var selectors = _interopRequireWildcard(require_selectors()); + function _getRequireWildcardCache(nodeInterop) { + if (typeof WeakMap !== "function") return null; + var cacheBabelInterop = /* @__PURE__ */ new WeakMap(); + var cacheNodeInterop = /* @__PURE__ */ new WeakMap(); + return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { + return nodeInterop ? cacheNodeInterop : cacheBabelInterop; + })(nodeInterop); + } + function _interopRequireWildcard(obj, nodeInterop) { + if (!nodeInterop && obj && obj.__esModule) return obj; + if (obj === null || typeof obj !== "object" && typeof obj !== "function") return { "default": obj }; + var cache = _getRequireWildcardCache(nodeInterop); + if (cache && cache.has(obj)) return cache.get(obj); + var newObj = {}; + var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; + for (var key in obj) if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { + var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; + if (desc && (desc.get || desc.set)) Object.defineProperty(newObj, key, desc); + else newObj[key] = obj[key]; + } + newObj["default"] = obj; + if (cache) cache.set(obj, newObj); + return newObj; + } + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { "default": obj }; + } + var parser = function parser(processor) { + return new _processor["default"](processor); + }; + Object.assign(parser, selectors); + delete parser.__esModule; + exports["default"] = parser; + module.exports = exports.default; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-modules-local-by-default@4.2.0_postcss@8.5.10/node_modules/postcss-modules-local-by-default/src/index.js +var require_src$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => { + const selectorParser = require_dist(); + const valueParser = require_lib(); + const { extractICSS } = require_src$4(); + const IGNORE_FILE_MARKER = "cssmodules-pure-no-check"; + const IGNORE_NEXT_LINE_MARKER = "cssmodules-pure-ignore"; + const isSpacing = (node) => node.type === "combinator" && node.value === " "; + const isPureCheckDisabled = (root) => { + for (const node of root.nodes) { + if (node.type !== "comment") return false; + if (node.text.trim().startsWith(IGNORE_FILE_MARKER)) return true; + } + return false; + }; + function getIgnoreComment(node) { + if (!node.parent) return; + const indexInParent = node.parent.index(node); + for (let i = indexInParent - 1; i >= 0; i--) { + const prevNode = node.parent.nodes[i]; + if (prevNode.type === "comment") { + if (prevNode.text.trimStart().startsWith(IGNORE_NEXT_LINE_MARKER)) return prevNode; + } else break; + } + } + function normalizeNodeArray(nodes) { + const array = []; + nodes.forEach((x) => { + if (Array.isArray(x)) normalizeNodeArray(x).forEach((item) => { + array.push(item); + }); + else if (x) array.push(x); + }); + if (array.length > 0 && isSpacing(array[array.length - 1])) array.pop(); + return array; + } + const isPureSelectorSymbol = Symbol("is-pure-selector"); + function localizeNode(rule, mode, localAliasMap) { + const transform = (node, context) => { + if (context.ignoreNextSpacing && !isSpacing(node)) throw new Error("Missing whitespace after " + context.ignoreNextSpacing); + if (context.enforceNoSpacing && isSpacing(node)) throw new Error("Missing whitespace before " + context.enforceNoSpacing); + let newNodes; + switch (node.type) { + case "root": { + let resultingGlobal; + context.hasPureGlobals = false; + newNodes = node.nodes.map((n) => { + const nContext = { + global: context.global, + lastWasSpacing: true, + hasLocals: false, + explicit: false + }; + n = transform(n, nContext); + if (typeof resultingGlobal === "undefined") resultingGlobal = nContext.global; + else if (resultingGlobal !== nContext.global) throw new Error("Inconsistent rule global/local result in rule \"" + node + "\" (multiple selectors must result in the same mode for the rule)"); + if (!nContext.hasLocals) context.hasPureGlobals = true; + return n; + }); + context.global = resultingGlobal; + node.nodes = normalizeNodeArray(newNodes); + break; + } + case "selector": + newNodes = node.map((childNode) => transform(childNode, context)); + node = node.clone(); + node.nodes = normalizeNodeArray(newNodes); + break; + case "combinator": + if (isSpacing(node)) { + if (context.ignoreNextSpacing) { + context.ignoreNextSpacing = false; + context.lastWasSpacing = false; + context.enforceNoSpacing = false; + return null; + } + context.lastWasSpacing = true; + return node; + } + break; + case "pseudo": { + let childContext; + const isNested = !!node.length; + const isScoped = node.value === ":local" || node.value === ":global"; + if (node.value === ":import" || node.value === ":export") context.hasLocals = true; + else if (isNested) { + if (isScoped) { + if (node.nodes.length === 0) throw new Error(`${node.value}() can't be empty`); + if (context.inside) throw new Error(`A ${node.value} is not allowed inside of a ${context.inside}(...)`); + childContext = { + global: node.value === ":global", + inside: node.value, + hasLocals: false, + explicit: true + }; + newNodes = node.map((childNode) => transform(childNode, childContext)).reduce((acc, next) => acc.concat(next.nodes), []); + if (newNodes.length) { + const { before, after } = node.spaces; + const first = newNodes[0]; + const last = newNodes[newNodes.length - 1]; + first.spaces = { + before, + after: first.spaces.after + }; + last.spaces = { + before: last.spaces.before, + after + }; + } + node = newNodes; + break; + } else { + childContext = { + global: context.global, + inside: context.inside, + lastWasSpacing: true, + hasLocals: false, + explicit: context.explicit + }; + newNodes = node.map((childNode) => { + const newContext = { + ...childContext, + enforceNoSpacing: false + }; + const result = transform(childNode, newContext); + childContext.global = newContext.global; + childContext.hasLocals = newContext.hasLocals; + return result; + }); + node = node.clone(); + node.nodes = normalizeNodeArray(newNodes); + if (childContext.hasLocals) context.hasLocals = true; + } + break; + } else if (isScoped) { + if (context.inside) throw new Error(`A ${node.value} is not allowed inside of a ${context.inside}(...)`); + const addBackSpacing = !!node.spaces.before; + context.ignoreNextSpacing = context.lastWasSpacing ? node.value : false; + context.enforceNoSpacing = context.lastWasSpacing ? false : node.value; + context.global = node.value === ":global"; + context.explicit = true; + return addBackSpacing ? selectorParser.combinator({ value: " " }) : null; + } + break; + } + case "id": + case "class": { + if (!node.value) throw new Error("Invalid class or id selector syntax"); + if (context.global) break; + const isImportedValue = localAliasMap.has(node.value); + if (!isImportedValue || isImportedValue && context.explicit) { + const innerNode = node.clone(); + innerNode.spaces = { + before: "", + after: "" + }; + node = selectorParser.pseudo({ + value: ":local", + nodes: [innerNode], + spaces: node.spaces + }); + context.hasLocals = true; + } + break; + } + case "nesting": if (node.value === "&") context.hasLocals = rule.parent[isPureSelectorSymbol]; + } + context.lastWasSpacing = false; + context.ignoreNextSpacing = false; + context.enforceNoSpacing = false; + return node; + }; + const rootContext = { + global: mode === "global", + hasPureGlobals: false + }; + rootContext.selector = selectorParser((root) => { + transform(root, rootContext); + }).processSync(rule, { + updateSelector: false, + lossless: true + }); + return rootContext; + } + function localizeDeclNode(node, context) { + switch (node.type) { + case "word": + if (context.localizeNextItem) { + if (!context.localAliasMap.has(node.value)) { + node.value = ":local(" + node.value + ")"; + context.localizeNextItem = false; + } + } + break; + case "function": + if (context.options && context.options.rewriteUrl && node.value.toLowerCase() === "url") node.nodes.map((nestedNode) => { + if (nestedNode.type !== "string" && nestedNode.type !== "word") return; + let newUrl = context.options.rewriteUrl(context.global, nestedNode.value); + switch (nestedNode.type) { + case "string": + if (nestedNode.quote === "'") newUrl = newUrl.replace(/(\\)/g, "\\$1").replace(/'/g, "\\'"); + if (nestedNode.quote === "\"") newUrl = newUrl.replace(/(\\)/g, "\\$1").replace(/"/g, "\\\""); + break; + case "word": + newUrl = newUrl.replace(/("|'|\)|\\)/g, "\\$1"); + break; + } + nestedNode.value = newUrl; + }); + break; + } + return node; + } + const specialKeywords = [ + "none", + "inherit", + "initial", + "revert", + "revert-layer", + "unset" + ]; + function localizeDeclarationValues(localize, declaration, context) { + const valueNodes = valueParser(declaration.value); + valueNodes.walk((node, index, nodes) => { + if (node.type === "function" && (node.value.toLowerCase() === "var" || node.value.toLowerCase() === "env")) return false; + if (node.type === "word" && specialKeywords.includes(node.value.toLowerCase())) return; + nodes[index] = localizeDeclNode(node, { + options: context.options, + global: context.global, + localizeNextItem: localize && !context.global, + localAliasMap: context.localAliasMap + }); + }); + declaration.value = valueNodes.toString(); + } + const validIdent = /^-?([a-z\u0080-\uFFFF_]|(\\[^\r\n\f])|-(?![0-9]))((\\[^\r\n\f])|[a-z\u0080-\uFFFF_0-9-])*$/i; + const animationKeywords = { + $normal: 1, + $reverse: 1, + $alternate: 1, + "$alternate-reverse": 1, + $forwards: 1, + $backwards: 1, + $both: 1, + $infinite: 1, + $paused: 1, + $running: 1, + $ease: 1, + "$ease-in": 1, + "$ease-out": 1, + "$ease-in-out": 1, + $linear: 1, + "$step-end": 1, + "$step-start": 1, + $none: Infinity, + $initial: Infinity, + $inherit: Infinity, + $unset: Infinity, + $revert: Infinity, + "$revert-layer": Infinity + }; + function localizeDeclaration(declaration, context) { + if (/animation(-name)?$/i.test(declaration.prop)) { + let parsedAnimationKeywords = {}; + declaration.value = valueParser(declaration.value).walk((node) => { + if (node.type === "div") { + parsedAnimationKeywords = {}; + return; + } else if (node.type === "function" && node.value.toLowerCase() === "local" && node.nodes.length === 1) { + node.type = "word"; + node.value = node.nodes[0].value; + return localizeDeclNode(node, { + options: context.options, + global: context.global, + localizeNextItem: true, + localAliasMap: context.localAliasMap + }); + } else if (node.type === "function") { + if (node.value.toLowerCase() === "global" && node.nodes.length === 1) { + node.type = "word"; + node.value = node.nodes[0].value; + } + return false; + } else if (node.type !== "word") return; + const value = node.type === "word" ? node.value.toLowerCase() : null; + let shouldParseAnimationName = false; + if (value && validIdent.test(value)) if ("$" + value in animationKeywords) { + parsedAnimationKeywords["$" + value] = "$" + value in parsedAnimationKeywords ? parsedAnimationKeywords["$" + value] + 1 : 0; + shouldParseAnimationName = parsedAnimationKeywords["$" + value] >= animationKeywords["$" + value]; + } else shouldParseAnimationName = true; + return localizeDeclNode(node, { + options: context.options, + global: context.global, + localizeNextItem: shouldParseAnimationName && !context.global, + localAliasMap: context.localAliasMap + }); + }).toString(); + return; + } + if (/url\(/i.test(declaration.value)) return localizeDeclarationValues(false, declaration, context); + } + const isPureSelector = (context, rule) => { + if (!rule.parent || rule.type === "root") return !context.hasPureGlobals; + if (rule.type === "rule" && rule[isPureSelectorSymbol]) return rule[isPureSelectorSymbol] || isPureSelector(context, rule.parent); + return !context.hasPureGlobals || isPureSelector(context, rule.parent); + }; + const isNodeWithoutDeclarations = (rule) => { + if (rule.nodes.length > 0) return !rule.nodes.every((item) => item.type === "rule" || item.type === "atrule" && !isNodeWithoutDeclarations(item)); + return true; + }; + module.exports = (options = {}) => { + if (options && options.mode && options.mode !== "global" && options.mode !== "local" && options.mode !== "pure") throw new Error("options.mode must be either \"global\", \"local\" or \"pure\" (default \"local\")"); + const pureMode = options && options.mode === "pure"; + const globalMode = options && options.mode === "global"; + return { + postcssPlugin: "postcss-modules-local-by-default", + prepare() { + const localAliasMap = /* @__PURE__ */ new Map(); + return { Once(root) { + const { icssImports } = extractICSS(root, false); + const enforcePureMode = pureMode && !isPureCheckDisabled(root); + Object.keys(icssImports).forEach((key) => { + Object.keys(icssImports[key]).forEach((prop) => { + localAliasMap.set(prop, icssImports[key][prop]); + }); + }); + root.walkAtRules((atRule) => { + if (/keyframes$/i.test(atRule.name)) { + const globalMatch = /^\s*:global\s*\((.+)\)\s*$/.exec(atRule.params); + const localMatch = /^\s*:local\s*\((.+)\)\s*$/.exec(atRule.params); + let globalKeyframes = globalMode; + if (globalMatch) { + if (enforcePureMode) { + const ignoreComment = getIgnoreComment(atRule); + if (!ignoreComment) throw atRule.error("@keyframes :global(...) is not allowed in pure mode"); + else ignoreComment.remove(); + } + atRule.params = globalMatch[1]; + globalKeyframes = true; + } else if (localMatch) { + atRule.params = localMatch[0]; + globalKeyframes = false; + } else if (atRule.params && !globalMode && !localAliasMap.has(atRule.params)) atRule.params = ":local(" + atRule.params + ")"; + atRule.walkDecls((declaration) => { + localizeDeclaration(declaration, { + localAliasMap, + options, + global: globalKeyframes + }); + }); + } else if (/scope$/i.test(atRule.name)) { + if (atRule.params) { + const ignoreComment = pureMode ? getIgnoreComment(atRule) : void 0; + if (ignoreComment) ignoreComment.remove(); + atRule.params = atRule.params.split("to").map((item) => { + const selector = item.trim().slice(1, -1).trim(); + const context = localizeNode(selector, options.mode, localAliasMap); + context.options = options; + context.localAliasMap = localAliasMap; + if (enforcePureMode && context.hasPureGlobals && !ignoreComment) throw atRule.error("Selector in at-rule\"" + selector + "\" is not pure (pure selectors must contain at least one local class or id)"); + return `(${context.selector})`; + }).join(" to "); + } + atRule.nodes.forEach((declaration) => { + if (declaration.type === "decl") localizeDeclaration(declaration, { + localAliasMap, + options, + global: globalMode + }); + }); + } else if (atRule.nodes) atRule.nodes.forEach((declaration) => { + if (declaration.type === "decl") localizeDeclaration(declaration, { + localAliasMap, + options, + global: globalMode + }); + }); + }); + root.walkRules((rule) => { + if (rule.parent && rule.parent.type === "atrule" && /keyframes$/i.test(rule.parent.name)) return; + const context = localizeNode(rule, options.mode, localAliasMap); + context.options = options; + context.localAliasMap = localAliasMap; + const ignoreComment = enforcePureMode ? getIgnoreComment(rule) : void 0; + const isNotPure = enforcePureMode && !isPureSelector(context, rule); + if (isNotPure && isNodeWithoutDeclarations(rule) && !ignoreComment) throw rule.error("Selector \"" + rule.selector + "\" is not pure (pure selectors must contain at least one local class or id)"); + else if (ignoreComment) ignoreComment.remove(); + if (pureMode) rule[isPureSelectorSymbol] = !isNotPure; + rule.selector = context.selector; + if (rule.nodes) rule.nodes.forEach((declaration) => localizeDeclaration(declaration, context)); + }); + } }; + } + }; + }; + module.exports.postcss = true; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-modules-scope@3.2.1_postcss@8.5.10/node_modules/postcss-modules-scope/src/index.js +var require_src$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { + const selectorParser = require_dist(); + const hasOwnProperty = Object.prototype.hasOwnProperty; + function isNestedRule(rule) { + if (!rule.parent || rule.parent.type === "root") return false; + if (rule.parent.type === "rule") return true; + return isNestedRule(rule.parent); + } + function getSingleLocalNamesForComposes(root, rule) { + if (isNestedRule(rule)) throw new Error(`composition is not allowed in nested rule \n\n${rule}`); + return root.nodes.map((node) => { + if (node.type !== "selector" || node.nodes.length !== 1) throw new Error(`composition is only allowed when selector is single :local class name not in "${root}"`); + node = node.nodes[0]; + if (node.type !== "pseudo" || node.value !== ":local" || node.nodes.length !== 1) throw new Error("composition is only allowed when selector is single :local class name not in \"" + root + "\", \"" + node + "\" is weird"); + node = node.first; + if (node.type !== "selector" || node.length !== 1) throw new Error("composition is only allowed when selector is single :local class name not in \"" + root + "\", \"" + node + "\" is weird"); + node = node.first; + if (node.type !== "class") throw new Error("composition is only allowed when selector is single :local class name not in \"" + root + "\", \"" + node + "\" is weird"); + return node.value; + }); + } + const unescapeRegExp = /* @__PURE__ */ new RegExp("\\\\([\\da-f]{1,6}[\\x20\\t\\r\\n\\f]?|([\\x20\\t\\r\\n\\f])|.)", "ig"); + function unescape(str) { + return str.replace(unescapeRegExp, (_, escaped, escapedWhitespace) => { + const high = "0x" + escaped - 65536; + return high !== high || escapedWhitespace ? escaped : high < 0 ? String.fromCharCode(high + 65536) : String.fromCharCode(high >> 10 | 55296, high & 1023 | 56320); + }); + } + const plugin = (options = {}) => { + const generateScopedName = options && options.generateScopedName || plugin.generateScopedName; + const generateExportEntry = options && options.generateExportEntry || plugin.generateExportEntry; + const exportGlobals = options && options.exportGlobals; + return { + postcssPlugin: "postcss-modules-scope", + Once(root, { rule }) { + const exports$1 = Object.create(null); + function exportScopedName(name, rawName, node) { + const scopedName = generateScopedName(rawName ? rawName : name, root.source.input.from, root.source.input.css, node); + const { key, value } = generateExportEntry(rawName ? rawName : name, scopedName, root.source.input.from, root.source.input.css, node); + exports$1[key] = exports$1[key] || []; + if (exports$1[key].indexOf(value) < 0) exports$1[key].push(value); + return scopedName; + } + function localizeNode(node) { + switch (node.type) { + case "selector": + node.nodes = node.map((item) => localizeNode(item)); + return node; + case "class": return selectorParser.className({ value: exportScopedName(node.value, node.raws && node.raws.value ? node.raws.value : null, node) }); + case "id": return selectorParser.id({ value: exportScopedName(node.value, node.raws && node.raws.value ? node.raws.value : null, node) }); + case "attribute": if (node.attribute === "class" && node.operator === "=") return selectorParser.attribute({ + attribute: node.attribute, + operator: node.operator, + quoteMark: "'", + value: exportScopedName(node.value, null, null) + }); + } + throw new Error(`${node.type} ("${node}") is not allowed in a :local block`); + } + function traverseNode(node) { + switch (node.type) { + case "pseudo": if (node.value === ":local") { + if (node.nodes.length !== 1) throw new Error("Unexpected comma (\",\") in :local block"); + const selector = localizeNode(node.first); + selector.first.spaces = node.spaces; + const nextNode = node.next(); + if (nextNode && nextNode.type === "combinator" && nextNode.value === " " && /\\[A-F0-9]{1,6}$/.test(selector.last.value)) selector.last.spaces.after = " "; + node.replaceWith(selector); + return; + } + case "root": + case "selector": + node.each((item) => traverseNode(item)); + break; + case "id": + case "class": + if (exportGlobals) exports$1[node.value] = [node.value]; + break; + } + return node; + } + const importedNames = {}; + root.walkRules(/^:import\(.+\)$/, (rule) => { + rule.walkDecls((decl) => { + importedNames[decl.prop] = true; + }); + }); + root.walkRules((rule) => { + let parsedSelector = selectorParser().astSync(rule); + rule.selector = traverseNode(parsedSelector.clone()).toString(); + rule.walkDecls(/^(composes|compose-with)$/i, (decl) => { + const localNames = getSingleLocalNamesForComposes(parsedSelector, decl.parent); + decl.value.split(",").forEach((value) => { + value.trim().split(/\s+/).forEach((className) => { + const global = /^global\(([^)]+)\)$/.exec(className); + if (global) localNames.forEach((exportedName) => { + exports$1[exportedName].push(global[1]); + }); + else if (hasOwnProperty.call(importedNames, className)) localNames.forEach((exportedName) => { + exports$1[exportedName].push(className); + }); + else if (hasOwnProperty.call(exports$1, className)) localNames.forEach((exportedName) => { + exports$1[className].forEach((item) => { + exports$1[exportedName].push(item); + }); + }); + else throw decl.error(`referenced class name "${className}" in ${decl.prop} not found`); + }); + }); + decl.remove(); + }); + rule.walkDecls((decl) => { + if (!/:local\s*\((.+?)\)/.test(decl.value)) return; + let tokens = decl.value.split(/(,|'[^']*'|"[^"]*")/); + tokens = tokens.map((token, idx) => { + if (idx === 0 || tokens[idx - 1] === ",") { + let result = token; + const localMatch = /:local\s*\((.+?)\)/.exec(token); + if (localMatch) { + const input = localMatch.input; + const matchPattern = localMatch[0]; + const matchVal = localMatch[1]; + const newVal = exportScopedName(matchVal); + result = input.replace(matchPattern, newVal); + } else return token; + return result; + } else return token; + }); + decl.value = tokens.join(""); + }); + }); + root.walkAtRules(/keyframes$/i, (atRule) => { + const localMatch = /^\s*:local\s*\((.+?)\)\s*$/.exec(atRule.params); + if (!localMatch) return; + atRule.params = exportScopedName(localMatch[1]); + }); + root.walkAtRules(/scope$/i, (atRule) => { + if (atRule.params) atRule.params = atRule.params.split("to").map((item) => { + const selector = item.trim().slice(1, -1).trim(); + if (!/^\s*:local\s*\((.+?)\)\s*$/.exec(selector)) return `(${selector})`; + return `(${traverseNode(selectorParser().astSync(selector)).toString()})`; + }).join(" to "); + }); + const exportedNames = Object.keys(exports$1); + if (exportedNames.length > 0) { + const exportRule = rule({ selector: ":export" }); + exportedNames.forEach((exportedName) => exportRule.append({ + prop: exportedName, + value: exports$1[exportedName].join(" "), + raws: { before: "\n " } + })); + root.append(exportRule); + } + } + }; + }; + plugin.postcss = true; + plugin.generateScopedName = function(name, path) { + return `_${path.replace(/\.[^./\\]+$/, "").replace(/[\W_]+/g, "_").replace(/^_|_$/g, "")}__${name}`.trim(); + }; + plugin.generateExportEntry = function(name, scopedName) { + return { + key: unescape(name), + value: unescape(scopedName) + }; + }; + module.exports = plugin; +})); +//#endregion +//#region ../../node_modules/.pnpm/string-hash@1.1.3/node_modules/string-hash/index.js +var require_string_hash = /* @__PURE__ */ __commonJSMin(((exports, module) => { + function hash(str) { + var hash = 5381, i = str.length; + while (i) hash = hash * 33 ^ str.charCodeAt(--i); + return hash >>> 0; + } + module.exports = hash; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-modules-values@4.0.0_postcss@8.5.10/node_modules/postcss-modules-values/src/index.js +var require_src = /* @__PURE__ */ __commonJSMin(((exports, module) => { + const ICSSUtils = require_src$4(); + const matchImports = /^(.+?|\([\s\S]+?\))\s+from\s+("[^"]*"|'[^']*'|[\w-]+)$/; + const matchValueDefinition = /(?:\s+|^)([\w-]+):?(.*?)$/; + const matchImport = /^([\w-]+)(?:\s+as\s+([\w-]+))?/; + module.exports = (options) => { + let importIndex = 0; + const createImportedName = options && options.createImportedName || ((importName) => `i__const_${importName.replace(/\W/g, "_")}_${importIndex++}`); + return { + postcssPlugin: "postcss-modules-values", + prepare(result) { + const importAliases = []; + const definitions = {}; + return { Once(root, postcss) { + root.walkAtRules(/value/i, (atRule) => { + const matches = atRule.params.match(matchImports); + if (matches) { + let [, aliases, path] = matches; + if (definitions[path]) path = definitions[path]; + const imports = aliases.replace(/^\(\s*([\s\S]+)\s*\)$/, "$1").split(/\s*,\s*/).map((alias) => { + const tokens = matchImport.exec(alias); + if (tokens) { + const [, theirName, myName = theirName] = tokens; + const importedName = createImportedName(myName); + definitions[myName] = importedName; + return { + theirName, + importedName + }; + } else throw new Error(`@import statement "${alias}" is invalid!`); + }); + importAliases.push({ + path, + imports + }); + atRule.remove(); + return; + } + if (atRule.params.indexOf("@value") !== -1) result.warn("Invalid value definition: " + atRule.params); + let [, key, value] = `${atRule.params}${atRule.raws.between}`.match(matchValueDefinition); + const normalizedValue = value.replace(/\/\*((?!\*\/).*?)\*\//g, ""); + if (normalizedValue.length === 0) { + result.warn("Invalid value definition: " + atRule.params); + atRule.remove(); + return; + } + if (!/^\s+$/.test(normalizedValue)) value = value.trim(); + definitions[key] = ICSSUtils.replaceValueSymbols(value, definitions); + atRule.remove(); + }); + if (!Object.keys(definitions).length) return; + ICSSUtils.replaceSymbols(root, definitions); + const exportDeclarations = Object.keys(definitions).map((key) => postcss.decl({ + value: definitions[key], + prop: key, + raws: { before: "\n " } + })); + if (exportDeclarations.length > 0) { + const exportRule = postcss.rule({ + selector: ":export", + raws: { after: "\n" } + }); + exportRule.append(exportDeclarations); + root.prepend(exportRule); + } + importAliases.reverse().forEach(({ path, imports }) => { + const importRule = postcss.rule({ + selector: `:import(${path})`, + raws: { after: "\n" } + }); + imports.forEach(({ theirName, importedName }) => { + importRule.append({ + value: theirName, + prop: importedName, + raws: { before: "\n " } + }); + }); + root.prepend(importRule); + }); + } }; + } + }; + }; + module.exports.postcss = true; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-modules@6.0.1_postcss@8.5.10/node_modules/postcss-modules/build/scoping.js +var require_scoping = /* @__PURE__ */ __commonJSMin(((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.behaviours = void 0; + exports.getDefaultPlugins = getDefaultPlugins; + exports.getDefaultScopeBehaviour = getDefaultScopeBehaviour; + exports.getScopedNameGenerator = getScopedNameGenerator; + var _postcssModulesExtractImports = _interopRequireDefault(require_src$3()); + var _genericNames = _interopRequireDefault(require_generic_names()); + var _postcssModulesLocalByDefault = _interopRequireDefault(require_src$2()); + var _postcssModulesScope = _interopRequireDefault(require_src$1()); + var _stringHash = _interopRequireDefault(require_string_hash()); + var _postcssModulesValues = _interopRequireDefault(require_src()); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + const behaviours = { + LOCAL: "local", + GLOBAL: "global" + }; + exports.behaviours = behaviours; + function getDefaultPlugins({ behaviour, generateScopedName, exportGlobals }) { + const scope = (0, _postcssModulesScope.default)({ + generateScopedName, + exportGlobals + }); + return { + [behaviours.LOCAL]: [ + _postcssModulesValues.default, + (0, _postcssModulesLocalByDefault.default)({ mode: "local" }), + _postcssModulesExtractImports.default, + scope + ], + [behaviours.GLOBAL]: [ + _postcssModulesValues.default, + (0, _postcssModulesLocalByDefault.default)({ mode: "global" }), + _postcssModulesExtractImports.default, + scope + ] + }[behaviour]; + } + function isValidBehaviour(behaviour) { + return Object.keys(behaviours).map((key) => behaviours[key]).indexOf(behaviour) > -1; + } + function getDefaultScopeBehaviour(scopeBehaviour) { + return scopeBehaviour && isValidBehaviour(scopeBehaviour) ? scopeBehaviour : behaviours.LOCAL; + } + function generateScopedNameDefault(name, filename, css) { + const i = css.indexOf(`.${name}`); + const lineNumber = css.substr(0, i).split(/[\r\n]/).length; + return `_${name}_${(0, _stringHash.default)(css).toString(36).substr(0, 5)}_${lineNumber}`; + } + function getScopedNameGenerator(generateScopedName, hashPrefix) { + const scopedNameGenerator = generateScopedName || generateScopedNameDefault; + if (typeof scopedNameGenerator === "function") return scopedNameGenerator; + return (0, _genericNames.default)(scopedNameGenerator, { + context: process.cwd(), + hashPrefix + }); + } +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-modules@6.0.1_postcss@8.5.10/node_modules/postcss-modules/build/pluginFactory.js +var require_pluginFactory = /* @__PURE__ */ __commonJSMin(((exports) => { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.makePlugin = makePlugin; + var _postcss = _interopRequireDefault(__require("postcss")); + var _unquote = _interopRequireDefault(require_unquote()); + var _Parser = _interopRequireDefault(require_Parser()); + var _saveJSON = _interopRequireDefault(require_saveJSON()); + var _localsConvention = require_localsConvention(); + var _FileSystemLoader = _interopRequireDefault(require_FileSystemLoader()); + var _scoping = require_scoping(); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + const PLUGIN_NAME = "postcss-modules"; + function isGlobalModule(globalModules, inputFile) { + return globalModules.some((regex) => inputFile.match(regex)); + } + function getDefaultPluginsList(opts, inputFile) { + const globalModulesList = opts.globalModulePaths || null; + const exportGlobals = opts.exportGlobals || false; + const defaultBehaviour = (0, _scoping.getDefaultScopeBehaviour)(opts.scopeBehaviour); + const generateScopedName = (0, _scoping.getScopedNameGenerator)(opts.generateScopedName, opts.hashPrefix); + if (globalModulesList && isGlobalModule(globalModulesList, inputFile)) return (0, _scoping.getDefaultPlugins)({ + behaviour: _scoping.behaviours.GLOBAL, + generateScopedName, + exportGlobals + }); + return (0, _scoping.getDefaultPlugins)({ + behaviour: defaultBehaviour, + generateScopedName, + exportGlobals + }); + } + function getLoader(opts, plugins) { + const root = typeof opts.root === "undefined" ? "/" : opts.root; + return typeof opts.Loader === "function" ? new opts.Loader(root, plugins, opts.resolve) : new _FileSystemLoader.default(root, plugins, opts.resolve); + } + function isOurPlugin(plugin) { + return plugin.postcssPlugin === PLUGIN_NAME; + } + function makePlugin(opts) { + return { + postcssPlugin: PLUGIN_NAME, + async OnceExit(css, { result }) { + const getJSON = opts.getJSON || _saveJSON.default; + const inputFile = css.source.input.file; + const pluginList = getDefaultPluginsList(opts, inputFile); + const resultPluginIndex = result.processor.plugins.findIndex((plugin) => isOurPlugin(plugin)); + if (resultPluginIndex === -1) throw new Error("Plugin missing from options."); + const loader = getLoader(opts, [...result.processor.plugins.slice(0, resultPluginIndex), ...pluginList]); + const fetcher = async (file, relativeTo, depTrace) => { + const unquoteFile = (0, _unquote.default)(file); + return loader.fetch.call(loader, unquoteFile, relativeTo, depTrace); + }; + const parser = new _Parser.default(fetcher); + await (0, _postcss.default)([...pluginList, parser.plugin()]).process(css, { from: inputFile }); + const out = loader.finalSource; + if (out) css.prepend(out); + if (opts.localsConvention) { + const reducer = (0, _localsConvention.makeLocalsConventionReducer)(opts.localsConvention, inputFile); + parser.exportTokens = Object.entries(parser.exportTokens).reduce(reducer, {}); + } + result.messages.push({ + type: "export", + plugin: "postcss-modules", + exportTokens: parser.exportTokens + }); + return getJSON(css.source.input.file, parser.exportTokens, result.opts.to); + } + }; + } +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-modules@6.0.1_postcss@8.5.10/node_modules/postcss-modules/build/index.js +var require_build = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var _fs = __require("fs"); + var _fs2 = require_fs(); + var _pluginFactory = require_pluginFactory(); + (0, _fs2.setFileSystem)({ + readFile: _fs.readFile, + writeFile: _fs.writeFile + }); + module.exports = (opts = {}) => (0, _pluginFactory.makePlugin)(opts); + module.exports.postcss = true; +})); +//#endregion +export default require_build(); +export {}; diff --git a/node_modules/vite/dist/node/chunks/chunk.js b/node_modules/vite/dist/node/chunks/chunk.js new file mode 100644 index 00000000..4d5a8917 --- /dev/null +++ b/node_modules/vite/dist/node/chunks/chunk.js @@ -0,0 +1,37 @@ +import { createRequire } from "node:module"; +//#region \0rolldown/runtime.js +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __esmMin = (fn, res) => () => (fn && (res = fn(fn = 0)), res); +var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports); +var __exportAll = (all, no_symbols) => { + let target = {}; + for (var name in all) __defProp(target, name, { + get: all[name], + enumerable: true + }); + if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" }); + return target; +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) { + key = keys[i]; + if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { + get: ((k) => from[k]).bind(null, key), + enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable + }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { + value: mod, + enumerable: true +}) : target, mod)); +var __toCommonJS = (mod) => __hasOwnProp.call(mod, "module.exports") ? mod["module.exports"] : __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var __require = /* @__PURE__ */ createRequire(import.meta.url); +//#endregion +export { __toCommonJS as a, __require as i, __esmMin as n, __toESM as o, __exportAll as r, __commonJSMin as t }; diff --git a/node_modules/vite/dist/node/chunks/dist.js b/node_modules/vite/dist/node/chunks/dist.js new file mode 100644 index 00000000..ef0d746d --- /dev/null +++ b/node_modules/vite/dist/node/chunks/dist.js @@ -0,0 +1,6784 @@ +//#region ../../node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/common/unicode.js +const UNDEFINED_CODE_POINTS = new Set([ + 65534, + 65535, + 131070, + 131071, + 196606, + 196607, + 262142, + 262143, + 327678, + 327679, + 393214, + 393215, + 458750, + 458751, + 524286, + 524287, + 589822, + 589823, + 655358, + 655359, + 720894, + 720895, + 786430, + 786431, + 851966, + 851967, + 917502, + 917503, + 983038, + 983039, + 1048574, + 1048575, + 1114110, + 1114111 +]); +var CODE_POINTS; +(function(CODE_POINTS) { + CODE_POINTS[CODE_POINTS["EOF"] = -1] = "EOF"; + CODE_POINTS[CODE_POINTS["NULL"] = 0] = "NULL"; + CODE_POINTS[CODE_POINTS["TABULATION"] = 9] = "TABULATION"; + CODE_POINTS[CODE_POINTS["CARRIAGE_RETURN"] = 13] = "CARRIAGE_RETURN"; + CODE_POINTS[CODE_POINTS["LINE_FEED"] = 10] = "LINE_FEED"; + CODE_POINTS[CODE_POINTS["FORM_FEED"] = 12] = "FORM_FEED"; + CODE_POINTS[CODE_POINTS["SPACE"] = 32] = "SPACE"; + CODE_POINTS[CODE_POINTS["EXCLAMATION_MARK"] = 33] = "EXCLAMATION_MARK"; + CODE_POINTS[CODE_POINTS["QUOTATION_MARK"] = 34] = "QUOTATION_MARK"; + CODE_POINTS[CODE_POINTS["AMPERSAND"] = 38] = "AMPERSAND"; + CODE_POINTS[CODE_POINTS["APOSTROPHE"] = 39] = "APOSTROPHE"; + CODE_POINTS[CODE_POINTS["HYPHEN_MINUS"] = 45] = "HYPHEN_MINUS"; + CODE_POINTS[CODE_POINTS["SOLIDUS"] = 47] = "SOLIDUS"; + CODE_POINTS[CODE_POINTS["DIGIT_0"] = 48] = "DIGIT_0"; + CODE_POINTS[CODE_POINTS["DIGIT_9"] = 57] = "DIGIT_9"; + CODE_POINTS[CODE_POINTS["SEMICOLON"] = 59] = "SEMICOLON"; + CODE_POINTS[CODE_POINTS["LESS_THAN_SIGN"] = 60] = "LESS_THAN_SIGN"; + CODE_POINTS[CODE_POINTS["EQUALS_SIGN"] = 61] = "EQUALS_SIGN"; + CODE_POINTS[CODE_POINTS["GREATER_THAN_SIGN"] = 62] = "GREATER_THAN_SIGN"; + CODE_POINTS[CODE_POINTS["QUESTION_MARK"] = 63] = "QUESTION_MARK"; + CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_A"] = 65] = "LATIN_CAPITAL_A"; + CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_Z"] = 90] = "LATIN_CAPITAL_Z"; + CODE_POINTS[CODE_POINTS["RIGHT_SQUARE_BRACKET"] = 93] = "RIGHT_SQUARE_BRACKET"; + CODE_POINTS[CODE_POINTS["GRAVE_ACCENT"] = 96] = "GRAVE_ACCENT"; + CODE_POINTS[CODE_POINTS["LATIN_SMALL_A"] = 97] = "LATIN_SMALL_A"; + CODE_POINTS[CODE_POINTS["LATIN_SMALL_Z"] = 122] = "LATIN_SMALL_Z"; +})(CODE_POINTS || (CODE_POINTS = {})); +const SEQUENCES = { + DASH_DASH: "--", + CDATA_START: "[CDATA[", + DOCTYPE: "doctype", + SCRIPT: "script", + PUBLIC: "public", + SYSTEM: "system" +}; +function isSurrogate(cp) { + return cp >= 55296 && cp <= 57343; +} +function isSurrogatePair(cp) { + return cp >= 56320 && cp <= 57343; +} +function getSurrogatePairCodePoint(cp1, cp2) { + return (cp1 - 55296) * 1024 + 9216 + cp2; +} +function isControlCodePoint(cp) { + return cp !== 32 && cp !== 10 && cp !== 13 && cp !== 9 && cp !== 12 && cp >= 1 && cp <= 31 || cp >= 127 && cp <= 159; +} +function isUndefinedCodePoint(cp) { + return cp >= 64976 && cp <= 65007 || UNDEFINED_CODE_POINTS.has(cp); +} +//#endregion +//#region ../../node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/common/error-codes.js +var ERR; +(function(ERR) { + ERR["controlCharacterInInputStream"] = "control-character-in-input-stream"; + ERR["noncharacterInInputStream"] = "noncharacter-in-input-stream"; + ERR["surrogateInInputStream"] = "surrogate-in-input-stream"; + ERR["nonVoidHtmlElementStartTagWithTrailingSolidus"] = "non-void-html-element-start-tag-with-trailing-solidus"; + ERR["endTagWithAttributes"] = "end-tag-with-attributes"; + ERR["endTagWithTrailingSolidus"] = "end-tag-with-trailing-solidus"; + ERR["unexpectedSolidusInTag"] = "unexpected-solidus-in-tag"; + ERR["unexpectedNullCharacter"] = "unexpected-null-character"; + ERR["unexpectedQuestionMarkInsteadOfTagName"] = "unexpected-question-mark-instead-of-tag-name"; + ERR["invalidFirstCharacterOfTagName"] = "invalid-first-character-of-tag-name"; + ERR["unexpectedEqualsSignBeforeAttributeName"] = "unexpected-equals-sign-before-attribute-name"; + ERR["missingEndTagName"] = "missing-end-tag-name"; + ERR["unexpectedCharacterInAttributeName"] = "unexpected-character-in-attribute-name"; + ERR["unknownNamedCharacterReference"] = "unknown-named-character-reference"; + ERR["missingSemicolonAfterCharacterReference"] = "missing-semicolon-after-character-reference"; + ERR["unexpectedCharacterAfterDoctypeSystemIdentifier"] = "unexpected-character-after-doctype-system-identifier"; + ERR["unexpectedCharacterInUnquotedAttributeValue"] = "unexpected-character-in-unquoted-attribute-value"; + ERR["eofBeforeTagName"] = "eof-before-tag-name"; + ERR["eofInTag"] = "eof-in-tag"; + ERR["missingAttributeValue"] = "missing-attribute-value"; + ERR["missingWhitespaceBetweenAttributes"] = "missing-whitespace-between-attributes"; + ERR["missingWhitespaceAfterDoctypePublicKeyword"] = "missing-whitespace-after-doctype-public-keyword"; + ERR["missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers"] = "missing-whitespace-between-doctype-public-and-system-identifiers"; + ERR["missingWhitespaceAfterDoctypeSystemKeyword"] = "missing-whitespace-after-doctype-system-keyword"; + ERR["missingQuoteBeforeDoctypePublicIdentifier"] = "missing-quote-before-doctype-public-identifier"; + ERR["missingQuoteBeforeDoctypeSystemIdentifier"] = "missing-quote-before-doctype-system-identifier"; + ERR["missingDoctypePublicIdentifier"] = "missing-doctype-public-identifier"; + ERR["missingDoctypeSystemIdentifier"] = "missing-doctype-system-identifier"; + ERR["abruptDoctypePublicIdentifier"] = "abrupt-doctype-public-identifier"; + ERR["abruptDoctypeSystemIdentifier"] = "abrupt-doctype-system-identifier"; + ERR["cdataInHtmlContent"] = "cdata-in-html-content"; + ERR["incorrectlyOpenedComment"] = "incorrectly-opened-comment"; + ERR["eofInScriptHtmlCommentLikeText"] = "eof-in-script-html-comment-like-text"; + ERR["eofInDoctype"] = "eof-in-doctype"; + ERR["nestedComment"] = "nested-comment"; + ERR["abruptClosingOfEmptyComment"] = "abrupt-closing-of-empty-comment"; + ERR["eofInComment"] = "eof-in-comment"; + ERR["incorrectlyClosedComment"] = "incorrectly-closed-comment"; + ERR["eofInCdata"] = "eof-in-cdata"; + ERR["absenceOfDigitsInNumericCharacterReference"] = "absence-of-digits-in-numeric-character-reference"; + ERR["nullCharacterReference"] = "null-character-reference"; + ERR["surrogateCharacterReference"] = "surrogate-character-reference"; + ERR["characterReferenceOutsideUnicodeRange"] = "character-reference-outside-unicode-range"; + ERR["controlCharacterReference"] = "control-character-reference"; + ERR["noncharacterCharacterReference"] = "noncharacter-character-reference"; + ERR["missingWhitespaceBeforeDoctypeName"] = "missing-whitespace-before-doctype-name"; + ERR["missingDoctypeName"] = "missing-doctype-name"; + ERR["invalidCharacterSequenceAfterDoctypeName"] = "invalid-character-sequence-after-doctype-name"; + ERR["duplicateAttribute"] = "duplicate-attribute"; + ERR["nonConformingDoctype"] = "non-conforming-doctype"; + ERR["missingDoctype"] = "missing-doctype"; + ERR["misplacedDoctype"] = "misplaced-doctype"; + ERR["endTagWithoutMatchingOpenElement"] = "end-tag-without-matching-open-element"; + ERR["closingOfElementWithOpenChildElements"] = "closing-of-element-with-open-child-elements"; + ERR["disallowedContentInNoscriptInHead"] = "disallowed-content-in-noscript-in-head"; + ERR["openElementsLeftAfterEof"] = "open-elements-left-after-eof"; + ERR["abandonedHeadElementChild"] = "abandoned-head-element-child"; + ERR["misplacedStartTagForHeadElement"] = "misplaced-start-tag-for-head-element"; + ERR["nestedNoscriptInHead"] = "nested-noscript-in-head"; + ERR["eofInElementThatCanContainOnlyText"] = "eof-in-element-that-can-contain-only-text"; +})(ERR || (ERR = {})); +//#endregion +//#region ../../node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/tokenizer/preprocessor.js +const DEFAULT_BUFFER_WATERLINE = 65536; +var Preprocessor = class { + constructor(handler) { + this.handler = handler; + this.html = ""; + this.pos = -1; + this.lastGapPos = -2; + this.gapStack = []; + this.skipNextNewLine = false; + this.lastChunkWritten = false; + this.endOfChunkHit = false; + this.bufferWaterline = DEFAULT_BUFFER_WATERLINE; + this.isEol = false; + this.lineStartPos = 0; + this.droppedBufferSize = 0; + this.line = 1; + this.lastErrOffset = -1; + } + /** The column on the current line. If we just saw a gap (eg. a surrogate pair), return the index before. */ + get col() { + return this.pos - this.lineStartPos + Number(this.lastGapPos !== this.pos); + } + get offset() { + return this.droppedBufferSize + this.pos; + } + getError(code, cpOffset) { + const { line, col, offset } = this; + const startCol = col + cpOffset; + const startOffset = offset + cpOffset; + return { + code, + startLine: line, + endLine: line, + startCol, + endCol: startCol, + startOffset, + endOffset: startOffset + }; + } + _err(code) { + if (this.handler.onParseError && this.lastErrOffset !== this.offset) { + this.lastErrOffset = this.offset; + this.handler.onParseError(this.getError(code, 0)); + } + } + _addGap() { + this.gapStack.push(this.lastGapPos); + this.lastGapPos = this.pos; + } + _processSurrogate(cp) { + if (this.pos !== this.html.length - 1) { + const nextCp = this.html.charCodeAt(this.pos + 1); + if (isSurrogatePair(nextCp)) { + this.pos++; + this._addGap(); + return getSurrogatePairCodePoint(cp, nextCp); + } + } else if (!this.lastChunkWritten) { + this.endOfChunkHit = true; + return CODE_POINTS.EOF; + } + this._err(ERR.surrogateInInputStream); + return cp; + } + willDropParsedChunk() { + return this.pos > this.bufferWaterline; + } + dropParsedChunk() { + if (this.willDropParsedChunk()) { + this.html = this.html.substring(this.pos); + this.lineStartPos -= this.pos; + this.droppedBufferSize += this.pos; + this.pos = 0; + this.lastGapPos = -2; + this.gapStack.length = 0; + } + } + write(chunk, isLastChunk) { + if (this.html.length > 0) this.html += chunk; + else this.html = chunk; + this.endOfChunkHit = false; + this.lastChunkWritten = isLastChunk; + } + insertHtmlAtCurrentPos(chunk) { + this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1); + this.endOfChunkHit = false; + } + startsWith(pattern, caseSensitive) { + if (this.pos + pattern.length > this.html.length) { + this.endOfChunkHit = !this.lastChunkWritten; + return false; + } + if (caseSensitive) return this.html.startsWith(pattern, this.pos); + for (let i = 0; i < pattern.length; i++) if ((this.html.charCodeAt(this.pos + i) | 32) !== pattern.charCodeAt(i)) return false; + return true; + } + peek(offset) { + const pos = this.pos + offset; + if (pos >= this.html.length) { + this.endOfChunkHit = !this.lastChunkWritten; + return CODE_POINTS.EOF; + } + const code = this.html.charCodeAt(pos); + return code === CODE_POINTS.CARRIAGE_RETURN ? CODE_POINTS.LINE_FEED : code; + } + advance() { + this.pos++; + if (this.isEol) { + this.isEol = false; + this.line++; + this.lineStartPos = this.pos; + } + if (this.pos >= this.html.length) { + this.endOfChunkHit = !this.lastChunkWritten; + return CODE_POINTS.EOF; + } + let cp = this.html.charCodeAt(this.pos); + if (cp === CODE_POINTS.CARRIAGE_RETURN) { + this.isEol = true; + this.skipNextNewLine = true; + return CODE_POINTS.LINE_FEED; + } + if (cp === CODE_POINTS.LINE_FEED) { + this.isEol = true; + if (this.skipNextNewLine) { + this.line--; + this.skipNextNewLine = false; + this._addGap(); + return this.advance(); + } + } + this.skipNextNewLine = false; + if (isSurrogate(cp)) cp = this._processSurrogate(cp); + if (!(this.handler.onParseError === null || cp > 31 && cp < 127 || cp === CODE_POINTS.LINE_FEED || cp === CODE_POINTS.CARRIAGE_RETURN || cp > 159 && cp < 64976)) this._checkForProblematicCharacters(cp); + return cp; + } + _checkForProblematicCharacters(cp) { + if (isControlCodePoint(cp)) this._err(ERR.controlCharacterInInputStream); + else if (isUndefinedCodePoint(cp)) this._err(ERR.noncharacterInInputStream); + } + retreat(count) { + this.pos -= count; + while (this.pos < this.lastGapPos) { + this.lastGapPos = this.gapStack.pop(); + this.pos--; + } + this.isEol = false; + } +}; +//#endregion +//#region ../../node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/common/token.js +var TokenType; +(function(TokenType) { + TokenType[TokenType["CHARACTER"] = 0] = "CHARACTER"; + TokenType[TokenType["NULL_CHARACTER"] = 1] = "NULL_CHARACTER"; + TokenType[TokenType["WHITESPACE_CHARACTER"] = 2] = "WHITESPACE_CHARACTER"; + TokenType[TokenType["START_TAG"] = 3] = "START_TAG"; + TokenType[TokenType["END_TAG"] = 4] = "END_TAG"; + TokenType[TokenType["COMMENT"] = 5] = "COMMENT"; + TokenType[TokenType["DOCTYPE"] = 6] = "DOCTYPE"; + TokenType[TokenType["EOF"] = 7] = "EOF"; + TokenType[TokenType["HIBERNATION"] = 8] = "HIBERNATION"; +})(TokenType || (TokenType = {})); +function getTokenAttr(token, attrName) { + for (let i = token.attrs.length - 1; i >= 0; i--) if (token.attrs[i].name === attrName) return token.attrs[i].value; + return null; +} +//#endregion +//#region ../../node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/decode-codepoint.js +const decodeMap = new Map([ + [0, 65533], + [128, 8364], + [130, 8218], + [131, 402], + [132, 8222], + [133, 8230], + [134, 8224], + [135, 8225], + [136, 710], + [137, 8240], + [138, 352], + [139, 8249], + [140, 338], + [142, 381], + [145, 8216], + [146, 8217], + [147, 8220], + [148, 8221], + [149, 8226], + [150, 8211], + [151, 8212], + [152, 732], + [153, 8482], + [154, 353], + [155, 8250], + [156, 339], + [158, 382], + [159, 376] +]); +/** +* Replace the given code point with a replacement character if it is a +* surrogate or is outside the valid range. Otherwise return the code +* point unchanged. +* @param codePoint Unicode code point to convert. +*/ +function replaceCodePoint(codePoint) { + if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) return 65533; + return decodeMap.get(codePoint) ?? codePoint; +} +//#endregion +//#region ../../node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/internal/decode-shared.js +/** +* Shared base64 decode helper for generated decode data. +* Assumes global atob is available. +* @param input Input string to encode or decode. +*/ +function decodeBase64(input) { + const binary = atob(input); + const evenLength = binary.length & -2; + const out = new Uint16Array(evenLength / 2); + for (let index = 0, outIndex = 0; index < evenLength; index += 2) { + const lo = binary.charCodeAt(index); + const hi = binary.charCodeAt(index + 1); + out[outIndex++] = lo | hi << 8; + } + return out; +} +//#endregion +//#region ../../node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/generated/decode-data-html.js +/** Packed HTML decode trie data. */ +const htmlDecodeTree = /* @__PURE__ */ decodeBase64("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IAAOA12J/c8iFvaxBhAAhOVGFjZGZnbG1vcHFzdHV4owOlA6kDsAO/A8IDxgPNA9ID8gP9AwEEFAQeBCAEJQRHAEphSAA7gNAA0EBjAHUAdABlADuAyQDJQIABYWl5ALYDuQO+A/Ihb24aYXIAYwA7gMoAykAtZG8AdAAWYXIAAOA12AjdcgBhAHYAZQA7gMgAyEDlIm1lbnQAoAgiAAFhcNYD2QNjAHIAEmF0AHkAUwLhAwAAAADpA20lYWxsU3F1YXJlAACg+yVlJ3J5U21hbGxTcXVhcmUAAKCrJQABZ3D2A/kDbwBuABhhZgAA4DXYPN3zImlsb26VY3UAAAFhaQYEDgRsAFSgdSppImxkZQAAoEIi7CNpYnJpdW0AoMwhAAFjaRgEGwRyAACgMCFtAACgcyphAJdjbQBsADuAywDLQAABaXApBC0E8yF0cwCgAyLvJG5lbnRpYWxFAKBHIYACY2Zpb3MAPQQ/BEMEXQRyBHkAJGRyAADgNdgJ3WwibGVkAFMCTAQAAAAAVARtJWFsbFNxdWFyZQAAoPwlZSdyeVNtYWxsU3F1YXJlAACgqiVwA2UEAABpBAAAAABtBGYAAOA12D3dwSFsbACgACLyI2llcnRyZgCgMSFjAPIAcQQABkpUYWJjZGZnb3JzdIgEiwSOBJMElwSkBKcEqwStBLIE5QTqBGMAeQADZDuAPgA+QO0hbWFkoJMD3GNyImV2ZQAeYYABZWl5AJ0EoASjBOQhaWwiYXIAYwAcYRNkbwB0ACBhcgAA4DXYCt0AoNkicABmAADgNdg+3eUiYXRlcgADRUZHTFNUvwTIBM8E1QTZBOAEcSJ1YWwATKBlIuUhc3MAoNsidSRsbEVxdWFsAACgZyJyI2VhdGVyAACgoirlIXNzAKB3IuwkYW50RXF1YWwAoH4qaSJsZGUAAKBzImMAcgAA4DXYotwAoGsiAARBYWNmaW9zdfkE/QQFBQgFCwUTBSIFKwVSIkRjeQAqZAABY3QBBQQFZQBrAMdiXmDpIXJjJGFyAACgDCFsJWJlcnRTcGFjZQAAoAsh8AEYBQAAGwVmAACgDSHpJXpvbnRhbExpbmUAoAAlAAFjdCYFKAXyABIF8iFvayZhbQBwAEQBMQU5BW8AdwBuAEgAdQBtAPAAAAFxInVhbAAAoE8iAAdFSk9hY2RmZ21ub3N0dVMFVgVZBVwFYwVtBXAFcwV6BZAFtgXFBckFzQVjAHkAFWTsIWlnMmFjAHkAAWRjAHUAdABlADuAzQDNQAABaXlnBWwFcgBjADuAzgDOQBhkbwB0ADBhcgAAoBEhcgBhAHYAZQA7gMwAzEAAoREhYXB/BYsFAAFjZ4MFhQVyACphaSNuYXJ5SQAAoEghbABpAGUA8wD6AvQBlQUAAKUFZaAsIgABZ3KaBZ4F8iFhbACgKyLzI2VjdGlvbgCgwiJpI3NpYmxlAAABQ1SsBbEFbyJtbWEAAKBjIGkibWVzAACgYiCAAWdwdAC8Bb8FwwVvAG4ALmFmAADgNdhA3WEAmWNjAHIAAKAQIWkibGRlAChh6wHSBQAA1QVjAHkABmRsADuAzwDPQIACY2Zvc3UA4QXpBe0F8gX9BQABaXnlBegFcgBjADRhGWRyAADgNdgN3XAAZgAA4DXYQd3jAfcFAAD7BXIAAOA12KXc8iFjeQhk6yFjeQRkgANISmFjZm9zAAwGDwYSBhUGHQYhBiYGYwB5ACVkYwB5AAxk8CFwYZpjAAFleRkGHAbkIWlsNmEaZHIAAOA12A7dcABmAADgNdhC3WMAcgAA4DXYptyABUpUYWNlZmxtb3N0AD0GQAZDBl4GawZkB2gHcAd0B80H2gdjAHkACWQ7gDwAPECAAmNtbnByAEwGTwZSBlUGWwb1IXRlOWHiIWRhm2NnAACg6ifsI2FjZXRyZgCgEiFyAACgniGAAWFleQBkBmcGagbyIW9uPWHkIWlsO2EbZAABZnNvBjQHdAAABUFDREZSVFVWYXKABp4GpAbGBssG3AYDByEHwQIqBwABbnKEBowGZyVsZUJyYWNrZXQAAKDoJ/Ihb3cAoZAhQlKTBpcGYQByAACg5CHpJGdodEFycm93AKDGIWUjaWxpbmcAAKAII28A9QGqBgAAsgZiJWxlQnJhY2tldAAAoOYnbgDUAbcGAAC+BmUkZVZlY3RvcgAAoGEp5SJjdG9yQqDDIWEAcgAAoFkpbCJvb3IAAKAKI2kiZ2h0AAABQVbSBtcGciJyb3cAAKCUIeUiY3RvcgCgTikAAWVy4AbwBmUAAKGjIkFW5gbrBnIicm93AACgpCHlImN0b3IAoFopaSNhbmdsZQBCorIi+wYAAAAA/wZhAHIAAKDPKXEidWFsAACgtCJwAIABRFRWAAoHEQcYB+8kd25WZWN0b3IAoFEpZSRlVmVjdG9yAACgYCnlImN0b3JCoL8hYQByAACgWCnlImN0b3JCoLwhYQByAACgUilpAGcAaAB0AGEAcgByAG8A9wDMAnMAAANFRkdMU1Q/B0cHTgdUB1gHXwfxJXVhbEdyZWF0ZXIAoNoidSRsbEVxdWFsAACgZiJyI2VhdGVyAACgdiLlIXNzAKChKuwkYW50RXF1YWwAoH0qaSJsZGUAAKByInIAAOA12A/dZaDYIuYjdGFycm93AKDaIWkiZG90AD9hgAFucHcAege1B7kHZwAAAkxSbHKCB5QHmwerB+UhZnQAAUFSiAeNB3Iicm93AACg9SfpJGdodEFycm93AKD3J+kkZ2h0QXJyb3cAoPYn5SFmdAABYXLcAqEHaQBnAGgAdABhAHIAcgBvAPcA5wJpAGcAaAB0AGEAcgByAG8A9wDuAmYAAOA12EPdZQByAAABTFK/B8YHZSRmdEFycm93AACgmSHpJGdodEFycm93AKCYIYABY2h0ANMH1QfXB/IAWgYAoLAh8iFva0FhAKBqIgAEYWNlZmlvc3XpB+wH7gf/BwMICQgOCBEIcAAAoAUpeQAcZAABZGzyB/kHaSR1bVNwYWNlAACgXyBsI2ludHJmAACgMyFyAADgNdgQ3e4jdXNQbHVzAKATInAAZgAA4DXYRN1jAPIA/gecY4AESmFjZWZvc3R1ACEIJAgoCDUIgQiFCDsKQApHCmMAeQAKZGMidXRlAENhgAFhZXkALggxCDQI8iFvbkdh5CFpbEVhHWSAAWdzdwA7CGEIfQjhInRpdmWAAU1UVgBECEwIWQhlJWRpdW1TcGFjZQAAoAsgaABpAAABY25SCFMIawBTAHAAYQBjAOUASwhlAHIAeQBUAGgAaQDuAFQI9CFlZAABR0xnCHUIcgBlAGEAdABlAHIARwByAGUAYQB0AGUA8gDrBGUAcwBzAEwAZQBzAPMA2wdMImluZQAKYHIAAOA12BHdAAJCbnB0jAiRCJkInAhyImVhawAAoGAgwiZyZWFraW5nU3BhY2WgYGYAAKAVIUOq7CqzCMIIzQgAAOcIGwkAAAAAAAAtCQAAbwkAAIcJAACdCcAJGQoAADQKAAFvdbYIvAjuI2dydWVudACgYiJwIkNhcAAAoG0ibyh1YmxlVmVydGljYWxCYXIAAKAmIoABbHF4ANII1wjhCOUibWVudACgCSL1IWFsVKBgImkibGRlAADgQiI4A2kic3RzAACgBCJyI2VhdGVyAACjbyJFRkdMU1T1CPoIAgkJCQ0JFQlxInVhbAAAoHEidSRsbEVxdWFsAADgZyI4A3IjZWF0ZXIAAOBrIjgD5SFzcwCgeSLsJGFudEVxdWFsAOB+KjgDaSJsZGUAAKB1IvUhbXBEASAJJwnvI3duSHVtcADgTiI4A3EidWFsAADgTyI4A2UAAAFmczEJRgn0JFRyaWFuZ2xlQqLqIj0JAAAAAEIJYQByAADgzyk4A3EidWFsAACg7CJzAICibiJFR0xTVABRCVYJXAlhCWkJcSJ1YWwAAKBwInIjZWF0ZXIAAKB4IuUhc3MA4GoiOAPsJGFudEVxdWFsAOB9KjgDaSJsZGUAAKB0IuUic3RlZAABR0x1CX8J8iZlYXRlckdyZWF0ZXIA4KIqOAPlI3NzTGVzcwDgoSo4A/IjZWNlZGVzAKGAIkVTjwmVCXEidWFsAADgryo4A+wkYW50RXF1YWwAoOAiAAFlaaAJqQl2JmVyc2VFbGVtZW50AACgDCLnJWh0VHJpYW5nbGVCousitgkAAAAAuwlhAHIAAODQKTgDcSJ1YWwAAKDtIgABcXXDCeAJdSNhcmVTdQAAAWJwywnVCfMhZXRF4I8iOANxInVhbAAAoOIi5SJyc2V0ReCQIjgDcSJ1YWwAAKDjIoABYmNwAOYJ8AkNCvMhZXRF4IIi0iBxInVhbAAAoIgi4yJlZWRzgKGBIkVTVAD6CQAKBwpxInVhbAAA4LAqOAPsJGFudEVxdWFsAKDhImkibGRlAADgfyI4A+UicnNldEXggyLSIHEidWFsAACgiSJpImxkZQCAoUEiRUZUACIKJwouCnEidWFsAACgRCJ1JGxsRXF1YWwAAKBHImkibGRlAACgSSJlJXJ0aWNhbEJhcgAAoCQiYwByAADgNdip3GkAbABkAGUAO4DRANFAnWMAB0VhY2RmZ21vcHJzdHV2XgphCmgKcgp2CnoKgQqRCpYKqwqtCrsKyArNCuwhaWdSYWMAdQB0AGUAO4DTANNAAAFpeWwKcQpyAGMAO4DUANRAHmRiImxhYwBQYXIAAOA12BLdcgBhAHYAZQA7gNIA0kCAAWFlaQCHCooKjQpjAHIATGFnAGEAqWNjInJvbgCfY3AAZgAA4DXYRt3lI25DdXJseQABRFGeCqYKbyV1YmxlUXVvdGUAAKAcIHUib3RlAACgGCAAoFQqAAFjbLEKtQpyAADgNdiq3GEAcwBoADuA2ADYQGkAbAHACsUKZABlADuA1QDVQGUAcwAAoDcqbQBsADuA1gDWQGUAcgAAAUJQ0wrmCgABYXLXCtoKcgAAoD4gYQBjAAABZWvgCuIKAKDeI2UAdAAAoLQjYSVyZW50aGVzaXMAAKDcI4AEYWNmaGlsb3JzAP0KAwsFCwkLCwsMCxELIwtaC3IjdGlhbEQAAKACInkAH2RyAADgNdgT3WkApmOgY/Ujc01pbnVzsWAAAWlwFQsgC24AYwBhAHIAZQBwAGwAYQBuAOUACgVmAACgGSGAobsqZWlvACoLRQtJC+MiZWRlc4CheiJFU1QANAs5C0ALcSJ1YWwAAKCvKuwkYW50RXF1YWwAoHwiaSJsZGUAAKB+Im0AZQAAoDMgAAFkcE0LUQv1IWN0AKAPIm8jcnRpb24AYaA3ImwAAKAdIgABY2leC2ILcgAA4DXYq9yoYwACVWZvc2oLbwtzC3cLTwBUADuAIgAiQHIAAOA12BTdcABmAACgGiFjAHIAAOA12KzcAAZCRWFjZWZoaW9yc3WPC5MLlwupC7YL2AvbC90LhQyTDJoMowzhIXJyAKAQKUcAO4CuAK5AgAFjbnIAnQugC6ML9SF0ZVRhZwAAoOsncgB0oKAhbAAAoBYpgAFhZXkArwuyC7UL8iFvblhh5CFpbFZhIGR2oBwhZSJyc2UAAAFFVb8LzwsAAWxxwwvIC+UibWVudACgCyL1JGlsaWJyaXVtAKDLIXAmRXF1aWxpYnJpdW0AAKBvKXIAAKAcIW8AoWPnIWh0AARBQ0RGVFVWYewLCgwQDDIMNwxeDHwM9gIAAW5y8Av4C2clbGVCcmFja2V0AACg6SfyIW93AKGSIUJM/wsDDGEAcgAAoOUhZSRmdEFycm93AACgxCFlI2lsaW5nAACgCSNvAPUBFgwAAB4MYiVsZUJyYWNrZXQAAKDnJ24A1AEjDAAAKgxlJGVWZWN0b3IAAKBdKeUiY3RvckKgwiFhAHIAAKBVKWwib29yAACgCyMAAWVyOwxLDGUAAKGiIkFWQQxGDHIicm93AACgpiHlImN0b3IAoFspaSNhbmdsZQBCorMiVgwAAAAAWgxhAHIAAKDQKXEidWFsAACgtSJwAIABRFRWAGUMbAxzDO8kd25WZWN0b3IAoE8pZSRlVmVjdG9yAACgXCnlImN0b3JCoL4hYQByAACgVCnlImN0b3JCoMAhYQByAACgUykAAXB1iQyMDGYAAKAdIe4kZEltcGxpZXMAoHAp6SRnaHRhcnJvdwCg2yEAAWNongyhDHIAAKAbIQCgsSHsJGVEZWxheWVkAKD0KYAGSE9hY2ZoaW1vcXN0dQC/DMgMzAzQDOIM5gwKDQ0NFA0ZDU8NVA1YDQABQ2PDDMYMyCFjeSlkeQAoZEYiVGN5ACxkYyJ1dGUAWmEAorwqYWVpedgM2wzeDOEM8iFvbmBh5CFpbF5hcgBjAFxhIWRyAADgNdgW3e8hcnQAAkRMUlXvDPYM/QwEDW8kd25BcnJvdwAAoJMhZSRmdEFycm93AACgkCHpJGdodEFycm93AKCSIXAjQXJyb3cAAKCRIechbWGjY+EkbGxDaXJjbGUAoBgicABmAADgNdhK3XICHw0AAAAAIg10AACgGiLhIXJlgKGhJUlTVQAqDTINSg3uJXRlcnNlY3Rpb24AoJMidQAAAWJwNw1ADfMhZXRFoI8icSJ1YWwAAKCRIuUicnNldEWgkCJxInVhbAAAoJIibiJpb24AAKCUImMAcgAA4DXYrtxhAHIAAKDGIgACYmNtcF8Nag2ODZANc6DQImUAdABFoNAicSJ1YWwAAKCGIgABY2huDYkNZSJlZHMAgKF7IkVTVAB4DX0NhA1xInVhbAAAoLAq7CRhbnRFcXVhbACgfSJpImxkZQAAoH8iVABoAGEA9ADHCwCgESIAodEiZXOVDZ8NciJzZXQARaCDInEidWFsAACghyJlAHQAAKDRIoAFSFJTYWNmaGlvcnMAtQ27Db8NyA3ODdsN3w3+DRgOHQ4jDk8AUgBOADuA3gDeQMEhREUAoCIhAAFIY8MNxg1jAHkAC2R5ACZkAAFidcwNzQ0JYKRjgAFhZXkA1A3XDdoN8iFvbmRh5CFpbGJhImRyAADgNdgX3QABZWnjDe4N8gHoDQAA7Q3lImZvcmUAoDQiYQCYYwABY27yDfkNayNTcGFjZQAA4F8gCiDTInBhY2UAoAkg7CFkZYChPCJFRlQABw4MDhMOcSJ1YWwAAKBDInUkbGxFcXVhbAAAoEUiaSJsZGUAAKBIInAAZgAA4DXYS93pI3BsZURvdACg2yAAAWN0Jw4rDnIAAOA12K/c8iFva2Zh4QpFDlYOYA5qDgAAbg5yDgAAAAAAAAAAAAB5DnwOqA6zDgAADg8RDxYPGg8AAWNySA5ODnUAdABlADuA2gDaQHIAb6CfIeMhaXIAoEkpcgDjAVsOAABdDnkADmR2AGUAbGEAAWl5Yw5oDnIAYwA7gNsA20AjZGIibGFjAHBhcgAA4DXYGN1yAGEAdgBlADuA2QDZQOEhY3JqYQABZGl/Dp8OZQByAAABQlCFDpcOAAFhcokOiw5yAF9gYQBjAAABZWuRDpMOAKDfI2UAdAAAoLUjYSVyZW50aGVzaXMAAKDdI28AbgBQoMMi7CF1cwCgjiIAAWdwqw6uDm8AbgByYWYAAOA12EzdAARBREVUYWRwc78O0g7ZDuEOBQPqDvMOBw9yInJvdwDCoZEhyA4AAMwOYQByAACgEilvJHduQXJyb3cAAKDFIW8kd25BcnJvdwAAoJUhcSV1aWxpYnJpdW0AAKBuKWUAZQBBoKUiciJyb3cAAKClIW8AdwBuAGEAcgByAG8A9wAQA2UAcgAAAUxS+Q4AD2UkZnRBcnJvdwAAoJYh6SRnaHRBcnJvdwCglyFpAGyg0gNvAG4ApWPpIW5nbmFjAHIAAOA12LDcaSJsZGUAaGFtAGwAO4DcANxAgAREYmNkZWZvc3YALQ8xDzUPNw89D3IPdg97D4AP4SFzaACgqyJhAHIAAKDrKnkAEmThIXNobKCpIgCg5ioAAWVyQQ9DDwCgwSKAAWJ0eQBJD00Paw9hAHIAAKAWIGmgFiDjIWFsAAJCTFNUWA9cD18PZg9hAHIAAKAjIukhbmV8YGUkcGFyYXRvcgAAoFgnaSJsZGUAAKBAItQkaGluU3BhY2UAoAogcgAA4DXYGd1wAGYAAOA12E3dYwByAADgNdix3GQiYXNoAACgqiKAAmNlZm9zAI4PkQ+VD5kPng/pIXJjdGHkIWdlAKDAInIAAOA12BrdcABmAADgNdhO3WMAcgAA4DXYstwAAmZpb3OqD64Prw+0D3IAAOA12BvdnmNwAGYAAOA12E/dYwByAADgNdiz3IAEQUlVYWNmb3N1AMgPyw/OD9EP2A/gD+QP6Q/uD2MAeQAvZGMAeQAHZGMAeQAuZGMAdQB0AGUAO4DdAN1AAAFpedwP3w9yAGMAdmErZHIAAOA12BzdcABmAADgNdhQ3WMAcgAA4DXYtNxtAGwAeGEABEhhY2RlZm9z/g8BEAUQDRAQEB0QIBAkEGMAeQAWZGMidXRlAHlhAAFheQkQDBDyIW9ufWEXZG8AdAB7YfIBFRAAABwQbwBXAGkAZAB0AOgAVAhhAJZjcgAAoCghcABmAACgJCFjAHIAAOA12LXc4QtCEEkQTRAAAGcQbRByEAAAAAAAAAAAeRCKEJcQ8hD9EAAAGxEhETIROREAAD4RYwB1AHQAZQA7gOEA4UByImV2ZQADYYCiPiJFZGl1eQBWEFkQWxBgEGUQAOA+IjMDAKA/InIAYwA7gOIA4kB0AGUAO4C0ALRAMGRsAGkAZwA7gOYA5kByoGEgAOA12B7dcgBhAHYAZQA7gOAA4EAAAWVwfBCGEAABZnCAEIQQ8yF5bQCgNSHoAIMQaABhALFjAAFhcI0QWwAAAWNskRCTEHIAAWFnAACgPypkApwQAAAAALEQAKInImFkc3ajEKcQqRCuEG4AZAAAoFUqAKBcKmwib3BlAACgWCoAoFoqAKMgImVsbXJzersQvRDAEN0Q5RDtEACgpCllAACgICJzAGQAYaAhImEEzhDQENIQ1BDWENgQ2hDcEACgqCkAoKkpAKCqKQCgqykAoKwpAKCtKQCgrikAoK8pdAB2oB8iYgBkoL4iAKCdKQABcHTpEOwQaAAAoCIixWDhIXJyAKB8IwABZ3D1EPgQbwBuAAVhZgAA4DXYUt0Ao0giRWFlaW9wBxEJEQ0RDxESERQRAKBwKuMhaXIAoG8qAKBKImQAAKBLInMAJ2DyIW94ZaBIIvEADhFpAG4AZwA7gOUA5UCAAWN0eQAmESoRKxFyAADgNdi23CpgbQBwAGWgSCLxAPgBaQBsAGQAZQA7gOMA40BtAGwAO4DkAORAAAFjaUERRxFvAG4AaQBuAPQA6AFuAHQAAKARKgAITmFiY2RlZmlrbG5vcHJzdWQRaBGXEZ8RpxGrEdIR1hErEjASexKKEn0RThNbE3oTbwB0AACg7SoAAWNybBGJEWsAAAJjZXBzdBF4EX0RghHvIW5nAKBMInAjc2lsb24A9mNyImltZQAAoDUgaQBtAGWgPSJxAACgzSJ2AY0RkRFlAGUAAKC9ImUAZABnoAUjZQAAoAUjcgBrAHSgtSPiIXJrAKC2IwABb3mjEaYRbgDnAHcRMWTxIXVvAKAeIIACY21wcnQAtBG5Eb4RwRHFEeEhdXPloDUi5ABwInR5dgAAoLApcwDpAH0RbgBvAPUA6gCAAWFodwDLEcwRzhGyYwCgNiHlIWVuAKBsInIAAOA12B/dZwCAA2Nvc3R1dncA4xHyEQUSEhIhEiYSKRKAAWFpdQDpEesR7xHwAKMFcgBjAACg7yVwAACgwyKAAWRwdAD4EfwRABJvAHQAAKAAKuwhdXMAoAEqaSJtZXMAAKACKnECCxIAAAAADxLjIXVwAKAGKmEAcgAAoAUm8iNpYW5nbGUAAWR1GhIeEu8hd24AoL0lcAAAoLMlcCJsdXMAAKAEKmUA5QBCD+UAkg9hInJvdwAAoA0pgAFha28ANhJoEncSAAFjbjoSZRJrAIABbHN0AEESRxJNEm8jemVuZ2UAAKDrKXEAdQBhAHIA5QBcBPIjaWFuZ2xlgKG0JWRscgBYElwSYBLvIXduAKC+JeUhZnQAoMIlaSJnaHQAAKC4JWsAAKAjJLEBbRIAAHUSsgFxEgAAcxIAoJIlAKCRJTQAAKCTJWMAawAAoIglAAFlb38ShxJx4D0A5SD1IWl2AOBhIuUgdAAAoBAjAAJwdHd4kRKVEpsSnxJmAADgNdhT3XSgpSJvAG0AAKClIvQhaWUAoMgiAAZESFVWYmRobXB0dXayEsES0RLgEvcS+xIKExoTHxMjEygTNxMAAkxSbHK5ErsSvRK/EgCgVyUAoFQlAKBWJQCgUyUAolAlRFVkdckSyxLNEs8SAKBmJQCgaSUAoGQlAKBnJQACTFJsctgS2hLcEt4SAKBdJQCgWiUAoFwlAKBZJQCjUSVITFJobHLrEu0S7xLxEvMS9RIAoGwlAKBjJQCgYCUAoGslAKBiJQCgXyVvAHgAAKDJKQACTFJscgITBBMGEwgTAKBVJQCgUiUAoBAlAKAMJQCiACVEVWR1EhMUExYTGBMAoGUlAKBoJQCgLCUAoDQlaSJudXMAAKCfIuwhdXMAoJ4iaSJtZXMAAKCgIgACTFJsci8TMRMzEzUTAKBbJQCgWCUAoBglAKAUJQCjAiVITFJobHJCE0QTRhNIE0oTTBMAoGolAKBhJQCgXiUAoDwlAKAkJQCgHCUAAWV2UhNVE3YA5QD5AGIAYQByADuApgCmQAACY2Vpb2ITZhNqE24TcgAA4DXYt9xtAGkAAKBPIG0A5aA9IogRbAAAoVwAYmh0E3YTAKDFKfMhdWIAoMgnbAF+E4QTbABloCIgdAAAoCIgcAAAoU4iRWWJE4sTAKCuKvGgTyI8BeEMqRMAAN8TABQDFB8UAAAjFDQUAAAAAIUUAAAAAI0UAAAAANcU4xT3FPsUAACIFQAAlhWAAWNwcgCuE7ET1RP1IXRlB2GAoikiYWJjZHMAuxO/E8QTzhPSE24AZAAAoEQqciJjdXAAAKBJKgABYXXIE8sTcAAAoEsqcAAAoEcqbwB0AACgQCoA4CkiAP4AAWVv2RPcE3QAAKBBIO4ABAUAAmFlaXXlE+8T9RP4E/AB6hMAAO0TcwAAoE0qbwBuAA1hZABpAGwAO4DnAOdAcgBjAAlhcABzAHOgTCptAACgUCpvAHQAC2GAAWRtbgAIFA0UEhRpAGwAO4C4ALhAcCJ0eXYAAKCyKXQAAIGiADtlGBQZFKJAcgBkAG8A9ABiAXIAAOA12CDdgAFjZWkAKBQqFDIUeQBHZGMAawBtoBMn4SFyawCgEyfHY3IAAKPLJUVjZWZtcz8UQRRHFHcUfBSAFACgwykAocYCZWxGFEkUcQAAoFciZQBhAlAUAAAAAGAUciJyb3cAAAFsclYUWhTlIWZ0AKC6IWkiZ2h0AACguyGAAlJTYWNkAGgUaRRrFG8UcxSuYACgyCRzAHQAAKCbIukhcmMAoJoi4SFzaACgnSJuImludAAAoBAqaQBkAACg7yrjIWlyAKDCKfUhYnN1oGMmaQB0AACgYybsApMUmhS2FAAAwxRvAG4AZaA6APGgVCKrAG0CnxQAAAAAoxRhAHSgLABAYAChASJmbKcUqRTuABMNZQAAAW14rhSyFOUhbnQAoAEiZQDzANIB5wG6FAAAwBRkoEUibwB0AACgbSpuAPQAzAGAAWZyeQDIFMsUzhQA4DXYVN1vAOQA1wEAgakAO3MeAdMUcgAAoBchAAFhb9oU3hRyAHIAAKC1IXMAcwAAoBcnAAFjdeYU6hRyAADgNdi43AABYnDuFPIUZaDPKgCg0SploNAqAKDSKuQhb3QAoO8igANkZWxwcnZ3AAYVEBUbFSEVRBVlFYQV4SFycgABbHIMFQ4VAKA4KQCgNSlwAhYVAAAAABkVcgAAoN4iYwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWlsN2E6ZHIAAOA12CjdciJlZW4AOGFjAHkARWRjAHkAXGRwAGYAAOA12FzdYwByAADgNdjA3IALQUJFSGFiY2RlZmdoamxtbm9wcnN0dXYAXhxtHHEcdRx5HN8cBx0dHTwd3B3tHfEdAR4EHh0eLB5FHrwewx7hHgkfPR9LH4ABYXJ0AGQcZxxpHHIA8gBvB/IAxQLhIWlsAKAbKeEhcnIAoA4pZ6BmIgCgiyphAHIAAKBiKWMJjRwAAJAcAACVHAAAAAAAAAAAAACZHJwcAACmHKgcrRwAANIc9SF0ZTph7SJwdHl2AKC0KXIAYQDuAFoG4iFkYbtjZwAAoegnZGyhHKMcAKCRKeUAiwYAoIUqdQBvADuAqwCrQHIAgKOQIWJmaGxwc3QAuhy/HMIcxBzHHMoczhxmoOQhcwAAoB8pcwAAoB0p6wCyGnAAAKCrIWwAAKA5KWkAbQAAoHMpbAAAoKIhAKGrKmFl1hzaHGkAbAAAoBkpc6CtKgDgrSoA/oABYWJyAOUc6RztHHIAcgAAoAwpcgBrAACgcicAAWFr8Rz4HGMAAAFla/Yc9xx7YFtgAAFlc/wc/hwAoIspbAAAAWR1Ax0FHQCgjykAoI0pAAJhZXV5Dh0RHRodHB3yIW9uPmEAAWRpFR0YHWkAbAA8YewAowbiAPccO2QAAmNxcnMkHScdLB05HWEAAKA2KXUAbwDyoBwgqhEAAWR1MB00HeghYXIAoGcpcyJoYXIAAKBLKWgAAKCyIQCiZCJmZ3FzRB1FB5Qdnh10AIACYWhscnQATh1WHWUdbB2NHXIicm93AHSgkCFhAOkAzxxhI3Jwb29uAAABZHVeHWId7yF3bgCgvSFwAACgvCHlJGZ0YXJyb3dzAKDHIWkiZ2h0AIABYWhzAHUdex2DHXIicm93APOglCGdBmEAcgBwAG8AbwBuAPMAzgtxAHUAaQBnAGEAcgByAG8A9wBlGugkcmVldGltZXMAoMsi8aFkIk0HAACaHWwAYQBuAPQAXgcAon0qY2Rnc6YdqR2xHbcdYwAAoKgqbwB0AG+gfypyoIEqAKCDKmXg2iIA/nMAAKCTKoACYWRlZ3MAwB3GHcod1h3ZHXAAcAByAG8A+ACmHG8AdAAAoNYicQAAAWdxzx3SHXQA8gBGB2cAdADyAHQcdADyAFMHaQDtAGMHgAFpbHIA4h3mHeod8yFodACgfClvAG8A8gDKBgDgNdgp3UWgdiIAoJEqYQH1Hf4dcgAAAWR1YB35HWygvCEAoGopbABrAACghCVjAHkAWWQAomoiYWNodAweDx4VHhkecgDyAGsdbwByAG4AZQDyAGAW4SFyZACgaylyAGkAAKD6JQABaW8hHiQe5CFvdEBh9SFzdGGgsCPjIWhlAKCwIwACRWFlczMeNR48HkEeAKBoInAAcKCJKvIhb3gAoIkqcaCHKvGghyo0HmkAbQAAoOYiAARhYm5vcHR3elIeXB5fHoUelh6mHqsetB4AAW5yVh5ZHmcAAKDsJ3IAAKD9IXIA6wCwBmcAgAFsbXIAZh52Hnse5SFmdAABYXKIB2weaQBnAGgAdABhAHIAcgBvAPcAkwfhInBzdG8AoPwnaQBnAGgAdABhAHIAcgBvAPcAmgdwI2Fycm93AAABbHKNHpEeZQBmAPQAxhxpImdodAAAoKwhgAFhZmwAnB6fHqIecgAAoIUpAOA12F3ddQBzAACgLSppIm1lcwAAoDQqYQGvHrMecwB0AACgFyLhAIoOZaHKJbkeRhLuIWdlAKDKJWEAcgBsoCgAdAAAoJMpgAJhY2htdADMHs8e1R7bHt0ecgDyAJ0GbwByAG4AZQDyANYWYQByAGSgyyEAoG0pAKAOIHIAaQAAoL8iAANhY2hpcXTrHu8e1QfzHv0eBh/xIXVvAKA5IHIAAOA12MHcbQDloXIi+h4AAPweAKCNKgCgjyoAAWJ19xwBH28AcqAYIACgGiDyIW9rQmEAhDwAO2NkaGlscXJCBhcfxh0gHyQfKB8sHzEfAAFjaRsfHR8AoKYqcgAAoHkqcgBlAOUAkx3tIWVzAKDJIuEhcnIAoHYpdSJlc3QAAKB7KgABUGk1HzkfYQByAACglillocMlAgdfEnIAAAFkdUIfRx9zImhhcgAAoEop6CFhcgCgZikAAWVuTx9WH3IjdG5lcXEAAOBoIgD+xQBUHwAHRGFjZGVmaGlsbm9wc3VuH3Ifoh+rH68ftx+7H74f5h/uH/MfBwj/HwsgxCFvdACgOiIAAmNscHJ5H30fiR+eH3IAO4CvAK9AAAFldIEfgx8AoEImZaAgJ3MAZQAAoCAnc6CmIXQAbwCAoaYhZGx1AJQfmB+cH28AdwDuAHkDZQBmAPQA6gbwAOkO6yFlcgCgriUAAW95ph+qH+0hbWEAoCkqPGThIXNoAKAUIOElc3VyZWRhbmdsZQCgISJyAADgNdgq3W8AAKAnIYABY2RuAMQfyR/bH3IAbwA7gLUAtUBhoiMi0B8AANMf1x9zAPQAKxFpAHIAAKDwKm8AdAA7gLcAt0B1AHMA4qESIh4TAADjH3WgOCIAoCoqYwHqH+0fcAAAoNsq8gB+GnAAbAB1APMACAgAAWRw9x/7H+UhbHMAoKciZgAA4DXYXt0AAWN0AyAHIHIAAOA12MLc8CFvcwCgPiJsobwDECAVIPQiaW1hcACguCJhAPAAEyAADEdMUlZhYmNkZWZnaGlqbG1vcHJzdHV2dzwgRyBmIG0geSCqILgg2iDeIBEhFSEyIUMhTSFQIZwhnyHSIQAiIyKLIrEivyIUIwABZ3RAIEMgAODZIjgD9uBrItIgBwmAAWVsdABNIF8gYiBmAHQAAAFhclMgWCByInJvdwAAoM0h6SRnaHRhcnJvdwCgziEA4NgiOAP24Goi0iBfCekkZ2h0YXJyb3cAoM8hAAFEZHEgdSDhIXNoAKCvIuEhc2gAoK4igAJiY25wdACCIIYgiSCNIKIgbABhAACgByL1IXRlRGFnAADgICLSIACiSSJFaW9wlSCYIJwgniAA4HAqOANkAADgSyI4A3MASWFyAG8A+AAyCnUAcgBhoG4mbADzoG4mmwjzAa8gAACzIHAAO4CgAKBAbQBwAOXgTiI4AyoJgAJhZW91eQDBIMogzSDWINkg8AHGIAAAyCAAoEMqbwBuAEhh5CFpbEZhbgBnAGSgRyJvAHQAAOBtKjgDcAAAoEIqPWThIXNoAKATIACjYCJBYWRxc3jpIO0g+SD+IAIhDCFyAHIAAKDXIXIAAAFocvIg9SBrAACgJClvoJch9wAGD28AdAAA4FAiOAN1AGkA9gC7CAABZWkGIQohYQByAACgKCntAN8I6SFzdPOgBCLlCHIAAOA12CvdAAJFZXN0/wgcISshLiHxoXEiIiEAABMJ8aFxIgAJAAAnIWwAYQBuAPQAEwlpAO0AGQlyoG8iAKBvIoABQWFwADghOyE/IXIA8gBeIHIAcgAAoK4hYQByAACg8ipzogsiSiEAAAAAxwtkoPwiAKD6ImMAeQBaZIADQUVhZGVzdABcIV8hYiFmIWkhkyGWIXIA8gBXIADgZiI4A3IAcgAAoJohcgAAoCUggKFwImZxcwBwIYQhjiF0AAABYXJ1IXohcgByAG8A9wBlIWkAZwBoAHQAYQByAHIAbwD3AD4h8aFwImAhAACKIWwAYQBuAPQAZwlz4H0qOAMAoG4iaQDtAG0JcqBuImkA5aDqIkUJaQDkADoKAAFwdKMhpyFmAADgNdhf3YCBrAA7aW4AriGvIcchrEBuAIChCSJFZHYAtyG6Ib8hAOD5IjgDbwB0AADg9SI4A+EB1gjEIcYhAKD3IgCg9iJpAHagDCLhAagJzyHRIQCg/iIAoP0igAFhb3IA2CHsIfEhcgCAoSYiYXN0AOAh5SHpIWwAbABlAOwAywhsAADg/SrlIADgAiI4A2wiaW50AACgFCrjoYAi9yEAAPohdQDlAJsJY+CvKjgDZaCAIvEAkwkAAkFhaXQHIgoiFyIeInIA8gBsIHIAcgAAoZshY3cRIhQiAOAzKTgDAOCdITgDZyRodGFycm93AACgmyFyAGkA5aDrIr4JgANjaGltcHF1AC8iPCJHIpwhTSJQIloigKGBImNlcgA2Iv0JOSJ1AOUABgoA4DXYw9zvIXJ0bQKdIQAAAABEImEAcgDhAOEhbQBloEEi8aBEIiYKYQDyAMsIcwB1AAABYnBWIlgi5QDUCeUA3wmAAWJjcABgInMieCKAoYQiRWVzAGci7glqIgDgxSo4A2UAdABl4IIi0iBxAPGgiCJoImMAZaCBIvEA/gmAoYUiRWVzAH8iFgqCIgDgxio4A2UAdABl4IMi0iBxAPGgiSKAIgACZ2lscpIilCKaIpwi7AAMCWwAZABlADuA8QDxQOcAWwlpI2FuZ2xlAAABbHKkIqoi5SFmdGWg6iLxAEUJaSJnaHQAZaDrIvEAvgltoL0DAKEjAGVzuCK8InIAbwAAoBYhcAAAoAcggARESGFkZ2lscnMAziLSItYi2iLeIugi7SICIw8j4SFzaACgrSLhIXJyAKAEKXAAAOBNItIg4SFzaACgrCIAAWV04iLlIgDgZSLSIADgPgDSIG4iZmluAACg3imAAUFldADzIvci+iJyAHIAAKACKQDgZCLSIHLgPADSIGkAZQAA4LQi0iAAAUF0BiMKI3IAcgAAoAMp8iFpZQDgtSLSIGkAbQAA4Dwi0iCAAUFhbgAaIx4jKiNyAHIAAKDWIXIAAAFociMjJiNrAACgIylvoJYh9wD/DuUhYXIAoCcpUxJqFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVCMAAF4jaSN/I4IjjSOeI8AUAAAAAKYjwCMAANoj3yMAAO8jHiQvJD8kRCQAAWNzVyNsFHUAdABlADuA8wDzQAABaXlhI2cjcgBjoJoiO4D0APRAPmSAAmFiaW9zAHEjdCN3I3EBeiNzAOgAdhTsIWFjUWF2AACgOCrvIWxkAKC8KewhaWdTYQABY3KFI4kjaQByAACgvykA4DXYLN1vA5QjAAAAAJYjAACcI24A22JhAHYAZQA7gPIA8kAAoMEpAAFibaEjjAphAHIAAKC1KQACYWNpdKwjryO6I70jcgDyAFkUAAFpcrMjtiNyAACgvinvIXNzAKC7KW4A5QDZCgCgwCmAAWFlaQDFI8gjyyNjAHIATWFnAGEAyWOAAWNkbgDRI9Qj1iPyIW9uv2MAoLYpdQDzAHgBcABmAADgNdhg3YABYWVsAOQj5yPrI3IAAKC3KXIAcAAAoLkpdQDzAHwBAKMoImFkaW9zdvkj/CMPJBMkFiQbJHIA8gBeFIChXSplZm0AAyQJJAwkcgBvoDQhZgAAoDQhO4CqAKpAO4C6ALpA5yFvZgCgtiJyAACgVipsIm9wZQAAoFcqAKBbKoABY2xvACMkJSQrJPIACCRhAHMAaAA7gPgA+EBsAACgmCJpAGwBMyQ4JGQAZQA7gPUA9UBlAHMAYaCXInMAAKA2Km0AbAA7gPYA9kDiIWFyAKA9I+EKXiQAAHokAAB8JJQkAACYJKkkAAAAALUkEQsAAPAkAAAAAAQleiUAAIMlcgCAoSUiYXN0AGUkbyQBCwCBtgA7bGokayS2QGwAZQDsABgDaQJ1JAAAAAB4JG0AAKDzKgCg/Sp5AD9kcgCAAmNpbXB0AIUkiCSLJJkSjyRuAHQAJWBvAGQALmBpAGwAAKAwIOUhbmsAoDEgcgAA4DXYLd2AAWltbwCdJKAkpCR2oMYD1WNtAGEA9AD+B24AZQAAoA4m9KHAA64kAAC0JGMjaGZvcmsAAKDUItZjAAFhdbgkxCRuAAABY2u9JMIkawBooA8hAKAOIfYAaRpzAACkKwBhYmNkZW1zdNMkIRPXJNsk4STjJOck6yTjIWlyAKAjKmkAcgAAoCIqAAFvdYsW3yQAoCUqAKByKm4AO4CxALFAaQBtAACgJip3AG8AAKAnKoABaXB1APUk+iT+JO4idGludACgFSpmAADgNdhh3W4AZAA7gKMAo0CApHoiRWFjZWlub3N1ABMlFSUYJRslTCVRJVklSSV1JQCgsypwAACgtyp1AOUAPwtjoK8qgKJ6ImFjZW5zACclLSU0JTYlSSVwAHAAcgBvAPgAFyV1AHIAbAB5AGUA8QA/C/EAOAuAAWFlcwA8JUElRSXwInByb3gAoLkqcQBxAACgtSppAG0AAKDoImkA7QBEC20AZQDzoDIgIguAAUVhcwBDJVclRSXwAEAlgAFkZnAATwtfJXElgAFhbHMAZSVpJW0l7CFhcgCgLiPpIW5lAKASI/UhcmYAoBMjdKAdIu8AWQvyIWVsAKCwIgABY2l9JYElcgAA4DXYxdzIY24iY3NwAACgCCAAA2Zpb3BzdZElKxuVJZolnyWkJXIAAOA12C7dcABmAADgNdhi3XIiaW1lAACgVyBjAHIAAOA12MbcgAFhZW8AqiW6JcAldAAAAWVpryW2JXIAbgBpAG8AbgDzABkFbgB0AACgFipzAHQAZaA/APEACRj0AG0LgApBQkhhYmNkZWZoaWxtbm9wcnN0dXgA4yXyJfYl+iVpJpAmpia9JtUm5ib4JlonaCdxJ3UnnietJ7EnyCfiJ+cngAFhcnQA6SXsJe4lcgDyAJkM8gD6AuEhaWwAoBwpYQByAPIA3BVhAHIAAKBkKYADY2RlbnFydAAGJhAmEyYYJiYmKyZaJgABZXUKJg0mAOA9IjEDdABlAFVhaQDjACAN7SJwdHl2AKCzKWcAgKHpJ2RlbAAgJiImJCYAoJIpAKClKeUA9wt1AG8AO4C7ALtAcgAApZIhYWJjZmhscHN0dz0mQCZFJkcmSiZMJk4mUSZVJlgmcAAAoHUpZqDlIXMAAKAgKQCgMylzAACgHinrALka8ACVHmwAAKBFKWkAbQAAoHQpbAAAoKMhAKCdIQABYWleJmImaQBsAACgGilvAG6gNiJhAGwA8wB2C4ABYWJyAG8mciZ2JnIA8gAvEnIAawAAoHMnAAFha3omgSZjAAABZWt/JoAmfWBdYAABZXOFJocmAKCMKWwAAAFkdYwmjiYAoI4pAKCQKQACYWV1eZcmmiajJqUm8iFvbllhAAFkaZ4moSZpAGwAV2HsAA8M4gCAJkBkAAJjbHFzrSawJrUmuiZhAACgNylkImhhcgAAoGkpdQBvAPKgHSCjAWgAAKCzIYABYWNnAMMm0iaUC2wAgKEcIWlwcwDLJs4migxuAOUAoAxhAHIA9ADaC3QAAKCtJYABaWxyANsm3ybjJvMhaHQAoH0pbwBvAPIANgwA4DXYL90AAWFv6ib1JnIAAAFkde8m8SYAoMEhbKDAIQCgbCl2oMED8WOAAWducwD+Jk4nUCdoAHQAAANhaGxyc3QKJxInISc1Jz0nRydyInJvdwB0oJIhYQDpAFYmYSNycG9vbgAAAWR1GiceJ28AdwDuAPAmcAAAoMAh5SFmdAABYWgnJy0ncgByAG8AdwDzAAkMYQByAHAAbwBvAG4A8wATBGklZ2h0YXJyb3dzAACgySFxAHUAaQBnAGEAcgByAG8A9wBZJugkcmVldGltZXMAoMwiZwDaYmkAbgBnAGQAbwB0AHMAZQDxABwYgAFhaG0AYCdjJ2YncgDyAAkMYQDyABMEAKAPIG8idXN0AGGgsSPjIWhlAKCxI+0haWQAoO4qAAJhYnB0fCeGJ4knmScAAW5ygCeDJ2cAAKDtJ3IAAKD+IXIA6wAcDIABYWZsAI8nkieVJ3IAAKCGKQDgNdhj3XUAcwAAoC4qaSJtZXMAAKA1KgABYXCiJ6gncgBnoCkAdAAAoJQp7yJsaW50AKASKmEAcgDyADwnAAJhY2hxuCe8J6EMwCfxIXVvAKA6IHIAAOA12MfcAAFidYAmxCdvAPKgGSCoAYABaGlyAM4n0ifWJ3IAZQDlAE0n7SFlcwCgyiJpAIChuSVlZmwAXAxjEt4n9CFyaQCgzinsInVoYXIAoGgpAKAeIWENBSgJKA0oSyhVKIYoAACLKLAoAAAAAOMo5ygAABApJCkxKW0pcSmHKaYpAACYKgAAAACxKmMidXRlAFthcQB1AO8ABR+ApHsiRWFjZWlucHN5ABwoHignKCooLygyKEEoRihJKACgtCrwASMoAAAlKACguCpvAG4AYWF1AOUAgw1koLAqaQBsAF9hcgBjAF1hgAFFYXMAOCg6KD0oAKC2KnAAAKC6KmkAbQAAoOki7yJsaW50AKATKmkA7QCIDUFkbwB0AGKixSKRFgAAAABTKACgZiqAA0FhY21zdHgAYChkKG8ocyh1KHkogihyAHIAAKDYIXIAAAFocmkoayjrAJAab6CYIfcAzAd0ADuApwCnQGkAO2D3IWFyAKApKW0AAAFpbn4ozQBuAHUA8wDOAHQAAKA2J3IA7+A12DDdIxkAAmFjb3mRKJUonSisKHIAcAAAoG8mAAFoeZkonChjAHkASWRIZHIAdABtAqUoAAAAAKgoaQDkAFsPYQByAGEA7ABsJDuArQCtQAABZ22zKLsobQBhAAChwwNmdroouijCY4CjPCJkZWdsbnByAMgozCjPKNMo1yjaKN4obwB0AACgairxoEMiCw5FoJ4qAKCgKkWgnSoAoJ8qZQAAoEYi7CF1cwCgJCrhIXJyAKByKWEAcgDyAPwMAAJhZWl07Sj8KAEpCCkAAWxz8Sj4KGwAcwBlAHQAbQDpAH8oaABwAACgMyrwImFyc2wAoOQpAAFkbFoPBSllAACgIyNloKoqc6CsKgDgrCoA/oABZmxwABUpGCkfKfQhY3lMZGKgLwBhoMQpcgAAoD8jZgAA4DXYZN1hAAABZHIoKRcDZQBzAHWgYCZpAHQAAKBgJoABY3N1ADYpRilhKQABYXU6KUApcABzoJMiAOCTIgD+cABzoJQiAOCUIgD+dQAAAWJwSylWKQChjyJlcz4NUCllAHQAZaCPIvEAPw0AoZAiZXNIDVspZQB0AGWgkCLxAEkNAKGhJWFmZilbBHIAZQFrKVwEAKChJWEAcgDyAAMNAAJjZW10dyl7KX8pgilyAADgNdjI3HQAbQDuAM4AaQDsAAYpYQByAOYAVw0AAWFyiimOKXIA5qAGJhESAAFhbpIpoylpImdodAAAAWVwmSmgKXAAcwBpAGwAbwDuANkXaADpAKAkcwCvYIACYmNtbnAArin8KY4NJSooKgCkgiJFZGVtbnByc7wpvinCKcgpzCnUKdgp3CkAoMUqbwB0AACgvSpkoIYibwB0AACgwyr1IWx0AKDBKgABRWXQKdIpAKDLKgCgiiLsIXVzAKC/KuEhcnIAoHkpgAFlaXUA4inxKfQpdAAAoYIiZW7oKewpcQDxoIYivSllAHEA8aCKItEpbQAAoMcqAAFicPgp+ikAoNUqAKDTKmMAgKJ7ImFjZW5zAAcqDSoUKhYqRihwAHAAcgBvAPgAIyh1AHIAbAB5AGUA8QCDDfEAfA2AAWFlcwAcKiIqPShwAHAAcgBvAPgAPChxAPEAOShnAACgaiYApoMiMTIzRWRlaGxtbnBzPCo/KkIqRSpHKlIqWCpjKmcqaypzKncqO4C5ALlAO4CyALJAO4CzALNAAKDGKgABb3NLKk4qdAAAoL4qdQBiAACg2CpkoIcibwB0AACgxCpzAAABb3VdKmAqbAAAoMknYgAAoNcq4SFycgCgeyn1IWx0AKDCKgABRWVvKnEqAKDMKgCgiyLsIXVzAKDAKoABZWl1AH0qjCqPKnQAAKGDImVugyqHKnEA8aCHIkYqZQBxAPGgiyJwKm0AAKDIKgABYnCTKpUqAKDUKgCg1iqAAUFhbgCdKqEqrCpyAHIAAKDZIXIAAAFocqYqqCrrAJUab6CZIfcAxQf3IWFyAKAqKWwAaQBnADuA3wDfQOELzyrZKtwq6SrsKvEqAAD1KjQrAAAAAAAAAAAAAEwrbCsAAHErvSsAAAAAAADRK3IC1CoAAAAA2CrnIWV0AKAWI8RjcgDrAOUKgAFhZXkA4SrkKucq8iFvbmVh5CFpbGNhQmRvAPQAIg5sInJlYwAAoBUjcgAA4DXYMd0AAmVpa2/7KhIrKCsuK/IBACsAAAkrZQAAATRm6g0EK28AcgDlAOsNYQBzorgDECsAAAAAEit5AG0A0WMAAWNuFislK2sAAAFhcxsrIStwAHAAcgBvAPgAFw5pAG0AAKA8InMA8AD9DQABYXMsKyEr8AAXDnIAbgA7gP4A/kDsATgrOyswG2QA5QBnAmUAcwCAgdcAO2JkAEMrRCtJK9dAYaCgInIAAKAxKgCgMCqAAWVwcwBRK1MraSvhAAkh4qKkIlsrXysAAAAAYytvAHQAAKA2I2kAcgAAoPEqb+A12GXdcgBrAACg2irhAHgociJpbWUAAKA0IIABYWlwAHYreSu3K2QA5QC+DYADYWRlbXBzdACFK6MrmiunK6wrsCuzK24iZ2xlAACitSVkbHFykCuUK5ornCvvIXduAKC/JeUhZnRloMMl8QACBwCgXCJpImdodABloLkl8QBdDG8AdAAAoOwlaSJudXMAAKA6KuwhdXMAoDkqYgAAoM0p6SFtZQCgOyrlInppdW0AoOIjgAFjaHQAwivKK80rAAFyecYrySsA4DXYydxGZGMAeQBbZPIhb2tnYQABaW/UK9creAD0ANERaCJlYWQAAAFsct4r5ytlAGYAdABhAHIAcgBvAPcAXQbpJGdodGFycm93AKCgIQAJQUhhYmNkZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg"); +//#endregion +//#region ../../node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/internal/bin-trie-flags.js +/** +* Bit flags & masks for the binary trie encoding used for entity decoding. +* +* Bit layout (16 bits total): +* 15..14 VALUE_LENGTH (+1 encoding; 0 => no value) +* 13 FLAG13. If valueLength>0: semicolon required flag (implicit ';'). +* If valueLength==0: compact run flag. +* 12..7 BRANCH_LENGTH Branch length (0 => single branch in 6..0 if jumpOffset==char) OR run length (when compact run) +* 6..0 JUMP_TABLE Jump offset (jump table) OR single-branch char code OR first run char +*/ +var BinTrieFlags; +(function(BinTrieFlags) { + BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH"; + BinTrieFlags[BinTrieFlags["FLAG13"] = 8192] = "FLAG13"; + BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 8064] = "BRANCH_LENGTH"; + BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE"; +})(BinTrieFlags || (BinTrieFlags = {})); +//#endregion +//#region ../../node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/decode.js +var CharCodes; +(function(CharCodes) { + CharCodes[CharCodes["NUM"] = 35] = "NUM"; + CharCodes[CharCodes["SEMI"] = 59] = "SEMI"; + CharCodes[CharCodes["EQUALS"] = 61] = "EQUALS"; + CharCodes[CharCodes["ZERO"] = 48] = "ZERO"; + CharCodes[CharCodes["NINE"] = 57] = "NINE"; + CharCodes[CharCodes["LOWER_A"] = 97] = "LOWER_A"; + CharCodes[CharCodes["LOWER_F"] = 102] = "LOWER_F"; + CharCodes[CharCodes["LOWER_X"] = 120] = "LOWER_X"; + CharCodes[CharCodes["LOWER_Z"] = 122] = "LOWER_Z"; + CharCodes[CharCodes["UPPER_A"] = 65] = "UPPER_A"; + CharCodes[CharCodes["UPPER_F"] = 70] = "UPPER_F"; + CharCodes[CharCodes["UPPER_Z"] = 90] = "UPPER_Z"; +})(CharCodes || (CharCodes = {})); +/** Bit that needs to be set to convert an upper case ASCII character to lower case */ +const TO_LOWER_BIT = 32; +function isNumber(code) { + return code >= CharCodes.ZERO && code <= CharCodes.NINE; +} +function isHexadecimalCharacter(code) { + return code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F || code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F; +} +function isAsciiAlphaNumeric$1(code) { + return code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z || code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z || isNumber(code); +} +/** +* Checks if the given character is a valid end character for an entity in an attribute. +* +* Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error. +* See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state +* @param code Code point to decode. +*/ +function isEntityInAttributeInvalidEnd(code) { + return code === CharCodes.EQUALS || isAsciiAlphaNumeric$1(code); +} +var EntityDecoderState; +(function(EntityDecoderState) { + EntityDecoderState[EntityDecoderState["EntityStart"] = 0] = "EntityStart"; + EntityDecoderState[EntityDecoderState["NumericStart"] = 1] = "NumericStart"; + EntityDecoderState[EntityDecoderState["NumericDecimal"] = 2] = "NumericDecimal"; + EntityDecoderState[EntityDecoderState["NumericHex"] = 3] = "NumericHex"; + EntityDecoderState[EntityDecoderState["NamedEntity"] = 4] = "NamedEntity"; +})(EntityDecoderState || (EntityDecoderState = {})); +/** +* Decoding mode for named entities. +*/ +var DecodingMode; +(function(DecodingMode) { + /** Entities in text nodes that can end with any character. */ + DecodingMode[DecodingMode["Legacy"] = 0] = "Legacy"; + /** Only allow entities terminated with a semicolon. */ + DecodingMode[DecodingMode["Strict"] = 1] = "Strict"; + /** Entities in attributes have limitations on ending characters. */ + DecodingMode[DecodingMode["Attribute"] = 2] = "Attribute"; +})(DecodingMode || (DecodingMode = {})); +/** +* Token decoder with support of writing partial entities. +*/ +var EntityDecoder = class { + decodeTree; + emitCodePoint; + errors; + constructor(decodeTree, emitCodePoint, errors) { + this.decodeTree = decodeTree; + this.emitCodePoint = emitCodePoint; + this.errors = errors; + } + /** The current state of the decoder. */ + state = EntityDecoderState.EntityStart; + /** Characters that were consumed while parsing an entity. */ + consumed = 1; + /** + * The result of the entity. + * + * Either the result index of a numeric entity, or the codepoint of a + * numeric entity. + */ + result = 0; + /** The current index in the decode tree. */ + treeIndex = 0; + /** The number of characters that were consumed in excess. */ + excess = 1; + /** The mode in which the decoder is operating. */ + decodeMode = DecodingMode.Strict; + /** The number of characters that have been consumed in the current run. */ + runConsumed = 0; + /** + * Resets the instance to make it reusable. + * @param decodeMode Entity decoding mode to use. + */ + startEntity(decodeMode) { + this.decodeMode = decodeMode; + this.state = EntityDecoderState.EntityStart; + this.result = 0; + this.treeIndex = 0; + this.excess = 1; + this.consumed = 1; + this.runConsumed = 0; + } + /** + * Write an entity to the decoder. This can be called multiple times with partial entities. + * If the entity is incomplete, the decoder will return -1. + * + * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the + * entity is incomplete, and resume when the next string is written. + * @param input The string containing the entity (or a continuation of the entity). + * @param offset The offset at which the entity begins. Should be 0 if this is not the first call. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + write(input, offset) { + switch (this.state) { + case EntityDecoderState.EntityStart: + if (input.charCodeAt(offset) === CharCodes.NUM) { + this.state = EntityDecoderState.NumericStart; + this.consumed += 1; + return this.stateNumericStart(input, offset + 1); + } + this.state = EntityDecoderState.NamedEntity; + return this.stateNamedEntity(input, offset); + case EntityDecoderState.NumericStart: return this.stateNumericStart(input, offset); + case EntityDecoderState.NumericDecimal: return this.stateNumericDecimal(input, offset); + case EntityDecoderState.NumericHex: return this.stateNumericHex(input, offset); + case EntityDecoderState.NamedEntity: return this.stateNamedEntity(input, offset); + } + } + /** + * Switches between the numeric decimal and hexadecimal states. + * + * Equivalent to the `Numeric character reference state` in the HTML spec. + * @param input The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + stateNumericStart(input, offset) { + if (offset >= input.length) return -1; + if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) { + this.state = EntityDecoderState.NumericHex; + this.consumed += 1; + return this.stateNumericHex(input, offset + 1); + } + this.state = EntityDecoderState.NumericDecimal; + return this.stateNumericDecimal(input, offset); + } + /** + * Parses a hexadecimal numeric entity. + * + * Equivalent to the `Hexademical character reference state` in the HTML spec. + * @param input The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + stateNumericHex(input, offset) { + while (offset < input.length) { + const char = input.charCodeAt(offset); + if (isNumber(char) || isHexadecimalCharacter(char)) { + const digit = char <= CharCodes.NINE ? char - CharCodes.ZERO : (char | TO_LOWER_BIT) - CharCodes.LOWER_A + 10; + this.result = this.result * 16 + digit; + this.consumed++; + offset++; + } else return this.emitNumericEntity(char, 3); + } + return -1; + } + /** + * Parses a decimal numeric entity. + * + * Equivalent to the `Decimal character reference state` in the HTML spec. + * @param input The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + stateNumericDecimal(input, offset) { + while (offset < input.length) { + const char = input.charCodeAt(offset); + if (isNumber(char)) { + this.result = this.result * 10 + (char - CharCodes.ZERO); + this.consumed++; + offset++; + } else return this.emitNumericEntity(char, 2); + } + return -1; + } + /** + * Validate and emit a numeric entity. + * + * Implements the logic from the `Hexademical character reference start + * state` and `Numeric character reference end state` in the HTML spec. + * @param lastCp The last code point of the entity. Used to see if the + * entity was terminated with a semicolon. + * @param expectedLength The minimum number of characters that should be + * consumed. Used to validate that at least one digit + * was consumed. + * @returns The number of characters that were consumed. + */ + emitNumericEntity(lastCp, expectedLength) { + if (this.consumed <= expectedLength) { + this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed); + return 0; + } + if (lastCp === CharCodes.SEMI) this.consumed += 1; + else if (this.decodeMode === DecodingMode.Strict) return 0; + this.emitCodePoint(replaceCodePoint(this.result), this.consumed); + if (this.errors) { + if (lastCp !== CharCodes.SEMI) this.errors.missingSemicolonAfterCharacterReference(); + this.errors.validateNumericCharacterReference(this.result); + } + return this.consumed; + } + /** + * Parses a named entity. + * + * Equivalent to the `Named character reference state` in the HTML spec. + * @param input The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + stateNamedEntity(input, offset) { + const { decodeTree } = this; + let current = decodeTree[this.treeIndex]; + let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; + while (offset < input.length) { + if (valueLength === 0 && (current & BinTrieFlags.FLAG13) !== 0) { + const runLength = (current & BinTrieFlags.BRANCH_LENGTH) >> 7; + if (this.runConsumed === 0) { + const firstChar = current & BinTrieFlags.JUMP_TABLE; + if (input.charCodeAt(offset) !== firstChar) return this.result === 0 ? 0 : this.emitNotTerminatedNamedEntity(); + offset++; + this.excess++; + this.runConsumed++; + } + while (this.runConsumed < runLength) { + if (offset >= input.length) return -1; + const charIndexInPacked = this.runConsumed - 1; + const packedWord = decodeTree[this.treeIndex + 1 + (charIndexInPacked >> 1)]; + const expectedChar = charIndexInPacked % 2 === 0 ? packedWord & 255 : packedWord >> 8 & 255; + if (input.charCodeAt(offset) !== expectedChar) { + this.runConsumed = 0; + return this.result === 0 ? 0 : this.emitNotTerminatedNamedEntity(); + } + offset++; + this.excess++; + this.runConsumed++; + } + this.runConsumed = 0; + this.treeIndex += 1 + (runLength >> 1); + current = decodeTree[this.treeIndex]; + valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; + } + if (offset >= input.length) break; + const char = input.charCodeAt(offset); + if (char === CharCodes.SEMI && valueLength !== 0 && (current & BinTrieFlags.FLAG13) !== 0) return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess); + this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char); + if (this.treeIndex < 0) return this.result === 0 || this.decodeMode === DecodingMode.Attribute && (valueLength === 0 || isEntityInAttributeInvalidEnd(char)) ? 0 : this.emitNotTerminatedNamedEntity(); + current = decodeTree[this.treeIndex]; + valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; + if (valueLength !== 0) { + if (char === CharCodes.SEMI) return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess); + if (this.decodeMode !== DecodingMode.Strict && (current & BinTrieFlags.FLAG13) === 0) { + this.result = this.treeIndex; + this.consumed += this.excess; + this.excess = 0; + } + } + offset++; + this.excess++; + } + return -1; + } + /** + * Emit a named entity that was not terminated with a semicolon. + * @returns The number of characters consumed. + */ + emitNotTerminatedNamedEntity() { + const { result, decodeTree } = this; + const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14; + this.emitNamedEntityData(result, valueLength, this.consumed); + this.errors?.missingSemicolonAfterCharacterReference(); + return this.consumed; + } + /** + * Emit a named entity. + * @param result The index of the entity in the decode tree. + * @param valueLength The number of bytes in the entity. + * @param consumed The number of characters consumed. + * @returns The number of characters consumed. + */ + emitNamedEntityData(result, valueLength, consumed) { + const { decodeTree } = this; + this.emitCodePoint(valueLength === 1 ? decodeTree[result] & ~(BinTrieFlags.VALUE_LENGTH | BinTrieFlags.FLAG13) : decodeTree[result + 1], consumed); + if (valueLength === 3) this.emitCodePoint(decodeTree[result + 2], consumed); + return consumed; + } + /** + * Signal to the parser that the end of the input was reached. + * + * Remaining data will be emitted and relevant errors will be produced. + * @returns The number of characters consumed. + */ + end() { + switch (this.state) { + case EntityDecoderState.NamedEntity: return this.result !== 0 && (this.decodeMode !== DecodingMode.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0; + case EntityDecoderState.NumericDecimal: return this.emitNumericEntity(0, 2); + case EntityDecoderState.NumericHex: return this.emitNumericEntity(0, 3); + case EntityDecoderState.NumericStart: + this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed); + return 0; + case EntityDecoderState.EntityStart: return 0; + } + } +}; +/** +* Determines the branch of the current node that is taken given the current +* character. This function is used to traverse the trie. +* @param decodeTree The trie. +* @param current The current node. +* @param nodeIndex Index immediately after the current node header. +* @param char The current character. +* @returns The index of the next node, or -1 if no branch is taken. +*/ +function determineBranch(decodeTree, current, nodeIndex, char) { + const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7; + const jumpOffset = current & BinTrieFlags.JUMP_TABLE; + if (branchCount === 0) return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1; + if (jumpOffset) { + const value = char - jumpOffset; + return value < 0 || value >= branchCount ? -1 : decodeTree[nodeIndex + value] - 1; + } + const packedKeySlots = branchCount + 1 >> 1; + let lo = 0; + let hi = branchCount - 1; + while (lo <= hi) { + const mid = lo + hi >>> 1; + const midKey = decodeTree[nodeIndex + (mid >> 1)] >> (mid & 1) * 8 & 255; + if (midKey < char) lo = mid + 1; + else if (midKey > char) hi = mid - 1; + else return decodeTree[nodeIndex + packedKeySlots + mid]; + } + return -1; +} +//#endregion +//#region ../../node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/common/html.js +/** All valid namespaces in HTML. */ +var NS; +(function(NS) { + NS["HTML"] = "http://www.w3.org/1999/xhtml"; + NS["MATHML"] = "http://www.w3.org/1998/Math/MathML"; + NS["SVG"] = "http://www.w3.org/2000/svg"; + NS["XLINK"] = "http://www.w3.org/1999/xlink"; + NS["XML"] = "http://www.w3.org/XML/1998/namespace"; + NS["XMLNS"] = "http://www.w3.org/2000/xmlns/"; +})(NS || (NS = {})); +var ATTRS; +(function(ATTRS) { + ATTRS["TYPE"] = "type"; + ATTRS["ACTION"] = "action"; + ATTRS["ENCODING"] = "encoding"; + ATTRS["PROMPT"] = "prompt"; + ATTRS["NAME"] = "name"; + ATTRS["COLOR"] = "color"; + ATTRS["FACE"] = "face"; + ATTRS["SIZE"] = "size"; +})(ATTRS || (ATTRS = {})); +/** +* The mode of the document. +* +* @see {@link https://dom.spec.whatwg.org/#concept-document-limited-quirks} +*/ +var DOCUMENT_MODE; +(function(DOCUMENT_MODE) { + DOCUMENT_MODE["NO_QUIRKS"] = "no-quirks"; + DOCUMENT_MODE["QUIRKS"] = "quirks"; + DOCUMENT_MODE["LIMITED_QUIRKS"] = "limited-quirks"; +})(DOCUMENT_MODE || (DOCUMENT_MODE = {})); +var TAG_NAMES; +(function(TAG_NAMES) { + TAG_NAMES["A"] = "a"; + TAG_NAMES["ADDRESS"] = "address"; + TAG_NAMES["ANNOTATION_XML"] = "annotation-xml"; + TAG_NAMES["APPLET"] = "applet"; + TAG_NAMES["AREA"] = "area"; + TAG_NAMES["ARTICLE"] = "article"; + TAG_NAMES["ASIDE"] = "aside"; + TAG_NAMES["B"] = "b"; + TAG_NAMES["BASE"] = "base"; + TAG_NAMES["BASEFONT"] = "basefont"; + TAG_NAMES["BGSOUND"] = "bgsound"; + TAG_NAMES["BIG"] = "big"; + TAG_NAMES["BLOCKQUOTE"] = "blockquote"; + TAG_NAMES["BODY"] = "body"; + TAG_NAMES["BR"] = "br"; + TAG_NAMES["BUTTON"] = "button"; + TAG_NAMES["CAPTION"] = "caption"; + TAG_NAMES["CENTER"] = "center"; + TAG_NAMES["CODE"] = "code"; + TAG_NAMES["COL"] = "col"; + TAG_NAMES["COLGROUP"] = "colgroup"; + TAG_NAMES["DD"] = "dd"; + TAG_NAMES["DESC"] = "desc"; + TAG_NAMES["DETAILS"] = "details"; + TAG_NAMES["DIALOG"] = "dialog"; + TAG_NAMES["DIR"] = "dir"; + TAG_NAMES["DIV"] = "div"; + TAG_NAMES["DL"] = "dl"; + TAG_NAMES["DT"] = "dt"; + TAG_NAMES["EM"] = "em"; + TAG_NAMES["EMBED"] = "embed"; + TAG_NAMES["FIELDSET"] = "fieldset"; + TAG_NAMES["FIGCAPTION"] = "figcaption"; + TAG_NAMES["FIGURE"] = "figure"; + TAG_NAMES["FONT"] = "font"; + TAG_NAMES["FOOTER"] = "footer"; + TAG_NAMES["FOREIGN_OBJECT"] = "foreignObject"; + TAG_NAMES["FORM"] = "form"; + TAG_NAMES["FRAME"] = "frame"; + TAG_NAMES["FRAMESET"] = "frameset"; + TAG_NAMES["H1"] = "h1"; + TAG_NAMES["H2"] = "h2"; + TAG_NAMES["H3"] = "h3"; + TAG_NAMES["H4"] = "h4"; + TAG_NAMES["H5"] = "h5"; + TAG_NAMES["H6"] = "h6"; + TAG_NAMES["HEAD"] = "head"; + TAG_NAMES["HEADER"] = "header"; + TAG_NAMES["HGROUP"] = "hgroup"; + TAG_NAMES["HR"] = "hr"; + TAG_NAMES["HTML"] = "html"; + TAG_NAMES["I"] = "i"; + TAG_NAMES["IMG"] = "img"; + TAG_NAMES["IMAGE"] = "image"; + TAG_NAMES["INPUT"] = "input"; + TAG_NAMES["IFRAME"] = "iframe"; + TAG_NAMES["KEYGEN"] = "keygen"; + TAG_NAMES["LABEL"] = "label"; + TAG_NAMES["LI"] = "li"; + TAG_NAMES["LINK"] = "link"; + TAG_NAMES["LISTING"] = "listing"; + TAG_NAMES["MAIN"] = "main"; + TAG_NAMES["MALIGNMARK"] = "malignmark"; + TAG_NAMES["MARQUEE"] = "marquee"; + TAG_NAMES["MATH"] = "math"; + TAG_NAMES["MENU"] = "menu"; + TAG_NAMES["META"] = "meta"; + TAG_NAMES["MGLYPH"] = "mglyph"; + TAG_NAMES["MI"] = "mi"; + TAG_NAMES["MO"] = "mo"; + TAG_NAMES["MN"] = "mn"; + TAG_NAMES["MS"] = "ms"; + TAG_NAMES["MTEXT"] = "mtext"; + TAG_NAMES["NAV"] = "nav"; + TAG_NAMES["NOBR"] = "nobr"; + TAG_NAMES["NOFRAMES"] = "noframes"; + TAG_NAMES["NOEMBED"] = "noembed"; + TAG_NAMES["NOSCRIPT"] = "noscript"; + TAG_NAMES["OBJECT"] = "object"; + TAG_NAMES["OL"] = "ol"; + TAG_NAMES["OPTGROUP"] = "optgroup"; + TAG_NAMES["OPTION"] = "option"; + TAG_NAMES["P"] = "p"; + TAG_NAMES["PARAM"] = "param"; + TAG_NAMES["PLAINTEXT"] = "plaintext"; + TAG_NAMES["PRE"] = "pre"; + TAG_NAMES["RB"] = "rb"; + TAG_NAMES["RP"] = "rp"; + TAG_NAMES["RT"] = "rt"; + TAG_NAMES["RTC"] = "rtc"; + TAG_NAMES["RUBY"] = "ruby"; + TAG_NAMES["S"] = "s"; + TAG_NAMES["SCRIPT"] = "script"; + TAG_NAMES["SEARCH"] = "search"; + TAG_NAMES["SECTION"] = "section"; + TAG_NAMES["SELECT"] = "select"; + TAG_NAMES["SOURCE"] = "source"; + TAG_NAMES["SMALL"] = "small"; + TAG_NAMES["SPAN"] = "span"; + TAG_NAMES["STRIKE"] = "strike"; + TAG_NAMES["STRONG"] = "strong"; + TAG_NAMES["STYLE"] = "style"; + TAG_NAMES["SUB"] = "sub"; + TAG_NAMES["SUMMARY"] = "summary"; + TAG_NAMES["SUP"] = "sup"; + TAG_NAMES["TABLE"] = "table"; + TAG_NAMES["TBODY"] = "tbody"; + TAG_NAMES["TEMPLATE"] = "template"; + TAG_NAMES["TEXTAREA"] = "textarea"; + TAG_NAMES["TFOOT"] = "tfoot"; + TAG_NAMES["TD"] = "td"; + TAG_NAMES["TH"] = "th"; + TAG_NAMES["THEAD"] = "thead"; + TAG_NAMES["TITLE"] = "title"; + TAG_NAMES["TR"] = "tr"; + TAG_NAMES["TRACK"] = "track"; + TAG_NAMES["TT"] = "tt"; + TAG_NAMES["U"] = "u"; + TAG_NAMES["UL"] = "ul"; + TAG_NAMES["SVG"] = "svg"; + TAG_NAMES["VAR"] = "var"; + TAG_NAMES["WBR"] = "wbr"; + TAG_NAMES["XMP"] = "xmp"; +})(TAG_NAMES || (TAG_NAMES = {})); +/** +* Tag IDs are numeric IDs for known tag names. +* +* We use tag IDs to improve the performance of tag name comparisons. +*/ +var TAG_ID; +(function(TAG_ID) { + TAG_ID[TAG_ID["UNKNOWN"] = 0] = "UNKNOWN"; + TAG_ID[TAG_ID["A"] = 1] = "A"; + TAG_ID[TAG_ID["ADDRESS"] = 2] = "ADDRESS"; + TAG_ID[TAG_ID["ANNOTATION_XML"] = 3] = "ANNOTATION_XML"; + TAG_ID[TAG_ID["APPLET"] = 4] = "APPLET"; + TAG_ID[TAG_ID["AREA"] = 5] = "AREA"; + TAG_ID[TAG_ID["ARTICLE"] = 6] = "ARTICLE"; + TAG_ID[TAG_ID["ASIDE"] = 7] = "ASIDE"; + TAG_ID[TAG_ID["B"] = 8] = "B"; + TAG_ID[TAG_ID["BASE"] = 9] = "BASE"; + TAG_ID[TAG_ID["BASEFONT"] = 10] = "BASEFONT"; + TAG_ID[TAG_ID["BGSOUND"] = 11] = "BGSOUND"; + TAG_ID[TAG_ID["BIG"] = 12] = "BIG"; + TAG_ID[TAG_ID["BLOCKQUOTE"] = 13] = "BLOCKQUOTE"; + TAG_ID[TAG_ID["BODY"] = 14] = "BODY"; + TAG_ID[TAG_ID["BR"] = 15] = "BR"; + TAG_ID[TAG_ID["BUTTON"] = 16] = "BUTTON"; + TAG_ID[TAG_ID["CAPTION"] = 17] = "CAPTION"; + TAG_ID[TAG_ID["CENTER"] = 18] = "CENTER"; + TAG_ID[TAG_ID["CODE"] = 19] = "CODE"; + TAG_ID[TAG_ID["COL"] = 20] = "COL"; + TAG_ID[TAG_ID["COLGROUP"] = 21] = "COLGROUP"; + TAG_ID[TAG_ID["DD"] = 22] = "DD"; + TAG_ID[TAG_ID["DESC"] = 23] = "DESC"; + TAG_ID[TAG_ID["DETAILS"] = 24] = "DETAILS"; + TAG_ID[TAG_ID["DIALOG"] = 25] = "DIALOG"; + TAG_ID[TAG_ID["DIR"] = 26] = "DIR"; + TAG_ID[TAG_ID["DIV"] = 27] = "DIV"; + TAG_ID[TAG_ID["DL"] = 28] = "DL"; + TAG_ID[TAG_ID["DT"] = 29] = "DT"; + TAG_ID[TAG_ID["EM"] = 30] = "EM"; + TAG_ID[TAG_ID["EMBED"] = 31] = "EMBED"; + TAG_ID[TAG_ID["FIELDSET"] = 32] = "FIELDSET"; + TAG_ID[TAG_ID["FIGCAPTION"] = 33] = "FIGCAPTION"; + TAG_ID[TAG_ID["FIGURE"] = 34] = "FIGURE"; + TAG_ID[TAG_ID["FONT"] = 35] = "FONT"; + TAG_ID[TAG_ID["FOOTER"] = 36] = "FOOTER"; + TAG_ID[TAG_ID["FOREIGN_OBJECT"] = 37] = "FOREIGN_OBJECT"; + TAG_ID[TAG_ID["FORM"] = 38] = "FORM"; + TAG_ID[TAG_ID["FRAME"] = 39] = "FRAME"; + TAG_ID[TAG_ID["FRAMESET"] = 40] = "FRAMESET"; + TAG_ID[TAG_ID["H1"] = 41] = "H1"; + TAG_ID[TAG_ID["H2"] = 42] = "H2"; + TAG_ID[TAG_ID["H3"] = 43] = "H3"; + TAG_ID[TAG_ID["H4"] = 44] = "H4"; + TAG_ID[TAG_ID["H5"] = 45] = "H5"; + TAG_ID[TAG_ID["H6"] = 46] = "H6"; + TAG_ID[TAG_ID["HEAD"] = 47] = "HEAD"; + TAG_ID[TAG_ID["HEADER"] = 48] = "HEADER"; + TAG_ID[TAG_ID["HGROUP"] = 49] = "HGROUP"; + TAG_ID[TAG_ID["HR"] = 50] = "HR"; + TAG_ID[TAG_ID["HTML"] = 51] = "HTML"; + TAG_ID[TAG_ID["I"] = 52] = "I"; + TAG_ID[TAG_ID["IMG"] = 53] = "IMG"; + TAG_ID[TAG_ID["IMAGE"] = 54] = "IMAGE"; + TAG_ID[TAG_ID["INPUT"] = 55] = "INPUT"; + TAG_ID[TAG_ID["IFRAME"] = 56] = "IFRAME"; + TAG_ID[TAG_ID["KEYGEN"] = 57] = "KEYGEN"; + TAG_ID[TAG_ID["LABEL"] = 58] = "LABEL"; + TAG_ID[TAG_ID["LI"] = 59] = "LI"; + TAG_ID[TAG_ID["LINK"] = 60] = "LINK"; + TAG_ID[TAG_ID["LISTING"] = 61] = "LISTING"; + TAG_ID[TAG_ID["MAIN"] = 62] = "MAIN"; + TAG_ID[TAG_ID["MALIGNMARK"] = 63] = "MALIGNMARK"; + TAG_ID[TAG_ID["MARQUEE"] = 64] = "MARQUEE"; + TAG_ID[TAG_ID["MATH"] = 65] = "MATH"; + TAG_ID[TAG_ID["MENU"] = 66] = "MENU"; + TAG_ID[TAG_ID["META"] = 67] = "META"; + TAG_ID[TAG_ID["MGLYPH"] = 68] = "MGLYPH"; + TAG_ID[TAG_ID["MI"] = 69] = "MI"; + TAG_ID[TAG_ID["MO"] = 70] = "MO"; + TAG_ID[TAG_ID["MN"] = 71] = "MN"; + TAG_ID[TAG_ID["MS"] = 72] = "MS"; + TAG_ID[TAG_ID["MTEXT"] = 73] = "MTEXT"; + TAG_ID[TAG_ID["NAV"] = 74] = "NAV"; + TAG_ID[TAG_ID["NOBR"] = 75] = "NOBR"; + TAG_ID[TAG_ID["NOFRAMES"] = 76] = "NOFRAMES"; + TAG_ID[TAG_ID["NOEMBED"] = 77] = "NOEMBED"; + TAG_ID[TAG_ID["NOSCRIPT"] = 78] = "NOSCRIPT"; + TAG_ID[TAG_ID["OBJECT"] = 79] = "OBJECT"; + TAG_ID[TAG_ID["OL"] = 80] = "OL"; + TAG_ID[TAG_ID["OPTGROUP"] = 81] = "OPTGROUP"; + TAG_ID[TAG_ID["OPTION"] = 82] = "OPTION"; + TAG_ID[TAG_ID["P"] = 83] = "P"; + TAG_ID[TAG_ID["PARAM"] = 84] = "PARAM"; + TAG_ID[TAG_ID["PLAINTEXT"] = 85] = "PLAINTEXT"; + TAG_ID[TAG_ID["PRE"] = 86] = "PRE"; + TAG_ID[TAG_ID["RB"] = 87] = "RB"; + TAG_ID[TAG_ID["RP"] = 88] = "RP"; + TAG_ID[TAG_ID["RT"] = 89] = "RT"; + TAG_ID[TAG_ID["RTC"] = 90] = "RTC"; + TAG_ID[TAG_ID["RUBY"] = 91] = "RUBY"; + TAG_ID[TAG_ID["S"] = 92] = "S"; + TAG_ID[TAG_ID["SCRIPT"] = 93] = "SCRIPT"; + TAG_ID[TAG_ID["SEARCH"] = 94] = "SEARCH"; + TAG_ID[TAG_ID["SECTION"] = 95] = "SECTION"; + TAG_ID[TAG_ID["SELECT"] = 96] = "SELECT"; + TAG_ID[TAG_ID["SOURCE"] = 97] = "SOURCE"; + TAG_ID[TAG_ID["SMALL"] = 98] = "SMALL"; + TAG_ID[TAG_ID["SPAN"] = 99] = "SPAN"; + TAG_ID[TAG_ID["STRIKE"] = 100] = "STRIKE"; + TAG_ID[TAG_ID["STRONG"] = 101] = "STRONG"; + TAG_ID[TAG_ID["STYLE"] = 102] = "STYLE"; + TAG_ID[TAG_ID["SUB"] = 103] = "SUB"; + TAG_ID[TAG_ID["SUMMARY"] = 104] = "SUMMARY"; + TAG_ID[TAG_ID["SUP"] = 105] = "SUP"; + TAG_ID[TAG_ID["TABLE"] = 106] = "TABLE"; + TAG_ID[TAG_ID["TBODY"] = 107] = "TBODY"; + TAG_ID[TAG_ID["TEMPLATE"] = 108] = "TEMPLATE"; + TAG_ID[TAG_ID["TEXTAREA"] = 109] = "TEXTAREA"; + TAG_ID[TAG_ID["TFOOT"] = 110] = "TFOOT"; + TAG_ID[TAG_ID["TD"] = 111] = "TD"; + TAG_ID[TAG_ID["TH"] = 112] = "TH"; + TAG_ID[TAG_ID["THEAD"] = 113] = "THEAD"; + TAG_ID[TAG_ID["TITLE"] = 114] = "TITLE"; + TAG_ID[TAG_ID["TR"] = 115] = "TR"; + TAG_ID[TAG_ID["TRACK"] = 116] = "TRACK"; + TAG_ID[TAG_ID["TT"] = 117] = "TT"; + TAG_ID[TAG_ID["U"] = 118] = "U"; + TAG_ID[TAG_ID["UL"] = 119] = "UL"; + TAG_ID[TAG_ID["SVG"] = 120] = "SVG"; + TAG_ID[TAG_ID["VAR"] = 121] = "VAR"; + TAG_ID[TAG_ID["WBR"] = 122] = "WBR"; + TAG_ID[TAG_ID["XMP"] = 123] = "XMP"; +})(TAG_ID || (TAG_ID = {})); +const TAG_NAME_TO_ID = new Map([ + [TAG_NAMES.A, TAG_ID.A], + [TAG_NAMES.ADDRESS, TAG_ID.ADDRESS], + [TAG_NAMES.ANNOTATION_XML, TAG_ID.ANNOTATION_XML], + [TAG_NAMES.APPLET, TAG_ID.APPLET], + [TAG_NAMES.AREA, TAG_ID.AREA], + [TAG_NAMES.ARTICLE, TAG_ID.ARTICLE], + [TAG_NAMES.ASIDE, TAG_ID.ASIDE], + [TAG_NAMES.B, TAG_ID.B], + [TAG_NAMES.BASE, TAG_ID.BASE], + [TAG_NAMES.BASEFONT, TAG_ID.BASEFONT], + [TAG_NAMES.BGSOUND, TAG_ID.BGSOUND], + [TAG_NAMES.BIG, TAG_ID.BIG], + [TAG_NAMES.BLOCKQUOTE, TAG_ID.BLOCKQUOTE], + [TAG_NAMES.BODY, TAG_ID.BODY], + [TAG_NAMES.BR, TAG_ID.BR], + [TAG_NAMES.BUTTON, TAG_ID.BUTTON], + [TAG_NAMES.CAPTION, TAG_ID.CAPTION], + [TAG_NAMES.CENTER, TAG_ID.CENTER], + [TAG_NAMES.CODE, TAG_ID.CODE], + [TAG_NAMES.COL, TAG_ID.COL], + [TAG_NAMES.COLGROUP, TAG_ID.COLGROUP], + [TAG_NAMES.DD, TAG_ID.DD], + [TAG_NAMES.DESC, TAG_ID.DESC], + [TAG_NAMES.DETAILS, TAG_ID.DETAILS], + [TAG_NAMES.DIALOG, TAG_ID.DIALOG], + [TAG_NAMES.DIR, TAG_ID.DIR], + [TAG_NAMES.DIV, TAG_ID.DIV], + [TAG_NAMES.DL, TAG_ID.DL], + [TAG_NAMES.DT, TAG_ID.DT], + [TAG_NAMES.EM, TAG_ID.EM], + [TAG_NAMES.EMBED, TAG_ID.EMBED], + [TAG_NAMES.FIELDSET, TAG_ID.FIELDSET], + [TAG_NAMES.FIGCAPTION, TAG_ID.FIGCAPTION], + [TAG_NAMES.FIGURE, TAG_ID.FIGURE], + [TAG_NAMES.FONT, TAG_ID.FONT], + [TAG_NAMES.FOOTER, TAG_ID.FOOTER], + [TAG_NAMES.FOREIGN_OBJECT, TAG_ID.FOREIGN_OBJECT], + [TAG_NAMES.FORM, TAG_ID.FORM], + [TAG_NAMES.FRAME, TAG_ID.FRAME], + [TAG_NAMES.FRAMESET, TAG_ID.FRAMESET], + [TAG_NAMES.H1, TAG_ID.H1], + [TAG_NAMES.H2, TAG_ID.H2], + [TAG_NAMES.H3, TAG_ID.H3], + [TAG_NAMES.H4, TAG_ID.H4], + [TAG_NAMES.H5, TAG_ID.H5], + [TAG_NAMES.H6, TAG_ID.H6], + [TAG_NAMES.HEAD, TAG_ID.HEAD], + [TAG_NAMES.HEADER, TAG_ID.HEADER], + [TAG_NAMES.HGROUP, TAG_ID.HGROUP], + [TAG_NAMES.HR, TAG_ID.HR], + [TAG_NAMES.HTML, TAG_ID.HTML], + [TAG_NAMES.I, TAG_ID.I], + [TAG_NAMES.IMG, TAG_ID.IMG], + [TAG_NAMES.IMAGE, TAG_ID.IMAGE], + [TAG_NAMES.INPUT, TAG_ID.INPUT], + [TAG_NAMES.IFRAME, TAG_ID.IFRAME], + [TAG_NAMES.KEYGEN, TAG_ID.KEYGEN], + [TAG_NAMES.LABEL, TAG_ID.LABEL], + [TAG_NAMES.LI, TAG_ID.LI], + [TAG_NAMES.LINK, TAG_ID.LINK], + [TAG_NAMES.LISTING, TAG_ID.LISTING], + [TAG_NAMES.MAIN, TAG_ID.MAIN], + [TAG_NAMES.MALIGNMARK, TAG_ID.MALIGNMARK], + [TAG_NAMES.MARQUEE, TAG_ID.MARQUEE], + [TAG_NAMES.MATH, TAG_ID.MATH], + [TAG_NAMES.MENU, TAG_ID.MENU], + [TAG_NAMES.META, TAG_ID.META], + [TAG_NAMES.MGLYPH, TAG_ID.MGLYPH], + [TAG_NAMES.MI, TAG_ID.MI], + [TAG_NAMES.MO, TAG_ID.MO], + [TAG_NAMES.MN, TAG_ID.MN], + [TAG_NAMES.MS, TAG_ID.MS], + [TAG_NAMES.MTEXT, TAG_ID.MTEXT], + [TAG_NAMES.NAV, TAG_ID.NAV], + [TAG_NAMES.NOBR, TAG_ID.NOBR], + [TAG_NAMES.NOFRAMES, TAG_ID.NOFRAMES], + [TAG_NAMES.NOEMBED, TAG_ID.NOEMBED], + [TAG_NAMES.NOSCRIPT, TAG_ID.NOSCRIPT], + [TAG_NAMES.OBJECT, TAG_ID.OBJECT], + [TAG_NAMES.OL, TAG_ID.OL], + [TAG_NAMES.OPTGROUP, TAG_ID.OPTGROUP], + [TAG_NAMES.OPTION, TAG_ID.OPTION], + [TAG_NAMES.P, TAG_ID.P], + [TAG_NAMES.PARAM, TAG_ID.PARAM], + [TAG_NAMES.PLAINTEXT, TAG_ID.PLAINTEXT], + [TAG_NAMES.PRE, TAG_ID.PRE], + [TAG_NAMES.RB, TAG_ID.RB], + [TAG_NAMES.RP, TAG_ID.RP], + [TAG_NAMES.RT, TAG_ID.RT], + [TAG_NAMES.RTC, TAG_ID.RTC], + [TAG_NAMES.RUBY, TAG_ID.RUBY], + [TAG_NAMES.S, TAG_ID.S], + [TAG_NAMES.SCRIPT, TAG_ID.SCRIPT], + [TAG_NAMES.SEARCH, TAG_ID.SEARCH], + [TAG_NAMES.SECTION, TAG_ID.SECTION], + [TAG_NAMES.SELECT, TAG_ID.SELECT], + [TAG_NAMES.SOURCE, TAG_ID.SOURCE], + [TAG_NAMES.SMALL, TAG_ID.SMALL], + [TAG_NAMES.SPAN, TAG_ID.SPAN], + [TAG_NAMES.STRIKE, TAG_ID.STRIKE], + [TAG_NAMES.STRONG, TAG_ID.STRONG], + [TAG_NAMES.STYLE, TAG_ID.STYLE], + [TAG_NAMES.SUB, TAG_ID.SUB], + [TAG_NAMES.SUMMARY, TAG_ID.SUMMARY], + [TAG_NAMES.SUP, TAG_ID.SUP], + [TAG_NAMES.TABLE, TAG_ID.TABLE], + [TAG_NAMES.TBODY, TAG_ID.TBODY], + [TAG_NAMES.TEMPLATE, TAG_ID.TEMPLATE], + [TAG_NAMES.TEXTAREA, TAG_ID.TEXTAREA], + [TAG_NAMES.TFOOT, TAG_ID.TFOOT], + [TAG_NAMES.TD, TAG_ID.TD], + [TAG_NAMES.TH, TAG_ID.TH], + [TAG_NAMES.THEAD, TAG_ID.THEAD], + [TAG_NAMES.TITLE, TAG_ID.TITLE], + [TAG_NAMES.TR, TAG_ID.TR], + [TAG_NAMES.TRACK, TAG_ID.TRACK], + [TAG_NAMES.TT, TAG_ID.TT], + [TAG_NAMES.U, TAG_ID.U], + [TAG_NAMES.UL, TAG_ID.UL], + [TAG_NAMES.SVG, TAG_ID.SVG], + [TAG_NAMES.VAR, TAG_ID.VAR], + [TAG_NAMES.WBR, TAG_ID.WBR], + [TAG_NAMES.XMP, TAG_ID.XMP] +]); +function getTagID(tagName) { + var _a; + return (_a = TAG_NAME_TO_ID.get(tagName)) !== null && _a !== void 0 ? _a : TAG_ID.UNKNOWN; +} +const $ = TAG_ID; +const SPECIAL_ELEMENTS = { + [NS.HTML]: new Set([ + $.ADDRESS, + $.APPLET, + $.AREA, + $.ARTICLE, + $.ASIDE, + $.BASE, + $.BASEFONT, + $.BGSOUND, + $.BLOCKQUOTE, + $.BODY, + $.BR, + $.BUTTON, + $.CAPTION, + $.CENTER, + $.COL, + $.COLGROUP, + $.DD, + $.DETAILS, + $.DIR, + $.DIV, + $.DL, + $.DT, + $.EMBED, + $.FIELDSET, + $.FIGCAPTION, + $.FIGURE, + $.FOOTER, + $.FORM, + $.FRAME, + $.FRAMESET, + $.H1, + $.H2, + $.H3, + $.H4, + $.H5, + $.H6, + $.HEAD, + $.HEADER, + $.HGROUP, + $.HR, + $.HTML, + $.IFRAME, + $.IMG, + $.INPUT, + $.LI, + $.LINK, + $.LISTING, + $.MAIN, + $.MARQUEE, + $.MENU, + $.META, + $.NAV, + $.NOEMBED, + $.NOFRAMES, + $.NOSCRIPT, + $.OBJECT, + $.OL, + $.P, + $.PARAM, + $.PLAINTEXT, + $.PRE, + $.SCRIPT, + $.SECTION, + $.SELECT, + $.SOURCE, + $.STYLE, + $.SUMMARY, + $.TABLE, + $.TBODY, + $.TD, + $.TEMPLATE, + $.TEXTAREA, + $.TFOOT, + $.TH, + $.THEAD, + $.TITLE, + $.TR, + $.TRACK, + $.UL, + $.WBR, + $.XMP + ]), + [NS.MATHML]: new Set([ + $.MI, + $.MO, + $.MN, + $.MS, + $.MTEXT, + $.ANNOTATION_XML + ]), + [NS.SVG]: new Set([ + $.TITLE, + $.FOREIGN_OBJECT, + $.DESC + ]), + [NS.XLINK]: /* @__PURE__ */ new Set(), + [NS.XML]: /* @__PURE__ */ new Set(), + [NS.XMLNS]: /* @__PURE__ */ new Set() +}; +const NUMBERED_HEADERS = new Set([ + $.H1, + $.H2, + $.H3, + $.H4, + $.H5, + $.H6 +]); +//#endregion +//#region ../../node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/tokenizer/index.js +var State; +(function(State) { + State[State["DATA"] = 0] = "DATA"; + State[State["RCDATA"] = 1] = "RCDATA"; + State[State["RAWTEXT"] = 2] = "RAWTEXT"; + State[State["SCRIPT_DATA"] = 3] = "SCRIPT_DATA"; + State[State["PLAINTEXT"] = 4] = "PLAINTEXT"; + State[State["TAG_OPEN"] = 5] = "TAG_OPEN"; + State[State["END_TAG_OPEN"] = 6] = "END_TAG_OPEN"; + State[State["TAG_NAME"] = 7] = "TAG_NAME"; + State[State["RCDATA_LESS_THAN_SIGN"] = 8] = "RCDATA_LESS_THAN_SIGN"; + State[State["RCDATA_END_TAG_OPEN"] = 9] = "RCDATA_END_TAG_OPEN"; + State[State["RCDATA_END_TAG_NAME"] = 10] = "RCDATA_END_TAG_NAME"; + State[State["RAWTEXT_LESS_THAN_SIGN"] = 11] = "RAWTEXT_LESS_THAN_SIGN"; + State[State["RAWTEXT_END_TAG_OPEN"] = 12] = "RAWTEXT_END_TAG_OPEN"; + State[State["RAWTEXT_END_TAG_NAME"] = 13] = "RAWTEXT_END_TAG_NAME"; + State[State["SCRIPT_DATA_LESS_THAN_SIGN"] = 14] = "SCRIPT_DATA_LESS_THAN_SIGN"; + State[State["SCRIPT_DATA_END_TAG_OPEN"] = 15] = "SCRIPT_DATA_END_TAG_OPEN"; + State[State["SCRIPT_DATA_END_TAG_NAME"] = 16] = "SCRIPT_DATA_END_TAG_NAME"; + State[State["SCRIPT_DATA_ESCAPE_START"] = 17] = "SCRIPT_DATA_ESCAPE_START"; + State[State["SCRIPT_DATA_ESCAPE_START_DASH"] = 18] = "SCRIPT_DATA_ESCAPE_START_DASH"; + State[State["SCRIPT_DATA_ESCAPED"] = 19] = "SCRIPT_DATA_ESCAPED"; + State[State["SCRIPT_DATA_ESCAPED_DASH"] = 20] = "SCRIPT_DATA_ESCAPED_DASH"; + State[State["SCRIPT_DATA_ESCAPED_DASH_DASH"] = 21] = "SCRIPT_DATA_ESCAPED_DASH_DASH"; + State[State["SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN"] = 22] = "SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN"; + State[State["SCRIPT_DATA_ESCAPED_END_TAG_OPEN"] = 23] = "SCRIPT_DATA_ESCAPED_END_TAG_OPEN"; + State[State["SCRIPT_DATA_ESCAPED_END_TAG_NAME"] = 24] = "SCRIPT_DATA_ESCAPED_END_TAG_NAME"; + State[State["SCRIPT_DATA_DOUBLE_ESCAPE_START"] = 25] = "SCRIPT_DATA_DOUBLE_ESCAPE_START"; + State[State["SCRIPT_DATA_DOUBLE_ESCAPED"] = 26] = "SCRIPT_DATA_DOUBLE_ESCAPED"; + State[State["SCRIPT_DATA_DOUBLE_ESCAPED_DASH"] = 27] = "SCRIPT_DATA_DOUBLE_ESCAPED_DASH"; + State[State["SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH"] = 28] = "SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH"; + State[State["SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN"] = 29] = "SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN"; + State[State["SCRIPT_DATA_DOUBLE_ESCAPE_END"] = 30] = "SCRIPT_DATA_DOUBLE_ESCAPE_END"; + State[State["BEFORE_ATTRIBUTE_NAME"] = 31] = "BEFORE_ATTRIBUTE_NAME"; + State[State["ATTRIBUTE_NAME"] = 32] = "ATTRIBUTE_NAME"; + State[State["AFTER_ATTRIBUTE_NAME"] = 33] = "AFTER_ATTRIBUTE_NAME"; + State[State["BEFORE_ATTRIBUTE_VALUE"] = 34] = "BEFORE_ATTRIBUTE_VALUE"; + State[State["ATTRIBUTE_VALUE_DOUBLE_QUOTED"] = 35] = "ATTRIBUTE_VALUE_DOUBLE_QUOTED"; + State[State["ATTRIBUTE_VALUE_SINGLE_QUOTED"] = 36] = "ATTRIBUTE_VALUE_SINGLE_QUOTED"; + State[State["ATTRIBUTE_VALUE_UNQUOTED"] = 37] = "ATTRIBUTE_VALUE_UNQUOTED"; + State[State["AFTER_ATTRIBUTE_VALUE_QUOTED"] = 38] = "AFTER_ATTRIBUTE_VALUE_QUOTED"; + State[State["SELF_CLOSING_START_TAG"] = 39] = "SELF_CLOSING_START_TAG"; + State[State["BOGUS_COMMENT"] = 40] = "BOGUS_COMMENT"; + State[State["MARKUP_DECLARATION_OPEN"] = 41] = "MARKUP_DECLARATION_OPEN"; + State[State["COMMENT_START"] = 42] = "COMMENT_START"; + State[State["COMMENT_START_DASH"] = 43] = "COMMENT_START_DASH"; + State[State["COMMENT"] = 44] = "COMMENT"; + State[State["COMMENT_LESS_THAN_SIGN"] = 45] = "COMMENT_LESS_THAN_SIGN"; + State[State["COMMENT_LESS_THAN_SIGN_BANG"] = 46] = "COMMENT_LESS_THAN_SIGN_BANG"; + State[State["COMMENT_LESS_THAN_SIGN_BANG_DASH"] = 47] = "COMMENT_LESS_THAN_SIGN_BANG_DASH"; + State[State["COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH"] = 48] = "COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH"; + State[State["COMMENT_END_DASH"] = 49] = "COMMENT_END_DASH"; + State[State["COMMENT_END"] = 50] = "COMMENT_END"; + State[State["COMMENT_END_BANG"] = 51] = "COMMENT_END_BANG"; + State[State["DOCTYPE"] = 52] = "DOCTYPE"; + State[State["BEFORE_DOCTYPE_NAME"] = 53] = "BEFORE_DOCTYPE_NAME"; + State[State["DOCTYPE_NAME"] = 54] = "DOCTYPE_NAME"; + State[State["AFTER_DOCTYPE_NAME"] = 55] = "AFTER_DOCTYPE_NAME"; + State[State["AFTER_DOCTYPE_PUBLIC_KEYWORD"] = 56] = "AFTER_DOCTYPE_PUBLIC_KEYWORD"; + State[State["BEFORE_DOCTYPE_PUBLIC_IDENTIFIER"] = 57] = "BEFORE_DOCTYPE_PUBLIC_IDENTIFIER"; + State[State["DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED"] = 58] = "DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED"; + State[State["DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED"] = 59] = "DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED"; + State[State["AFTER_DOCTYPE_PUBLIC_IDENTIFIER"] = 60] = "AFTER_DOCTYPE_PUBLIC_IDENTIFIER"; + State[State["BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS"] = 61] = "BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS"; + State[State["AFTER_DOCTYPE_SYSTEM_KEYWORD"] = 62] = "AFTER_DOCTYPE_SYSTEM_KEYWORD"; + State[State["BEFORE_DOCTYPE_SYSTEM_IDENTIFIER"] = 63] = "BEFORE_DOCTYPE_SYSTEM_IDENTIFIER"; + State[State["DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED"] = 64] = "DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED"; + State[State["DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED"] = 65] = "DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED"; + State[State["AFTER_DOCTYPE_SYSTEM_IDENTIFIER"] = 66] = "AFTER_DOCTYPE_SYSTEM_IDENTIFIER"; + State[State["BOGUS_DOCTYPE"] = 67] = "BOGUS_DOCTYPE"; + State[State["CDATA_SECTION"] = 68] = "CDATA_SECTION"; + State[State["CDATA_SECTION_BRACKET"] = 69] = "CDATA_SECTION_BRACKET"; + State[State["CDATA_SECTION_END"] = 70] = "CDATA_SECTION_END"; + State[State["CHARACTER_REFERENCE"] = 71] = "CHARACTER_REFERENCE"; + State[State["AMBIGUOUS_AMPERSAND"] = 72] = "AMBIGUOUS_AMPERSAND"; +})(State || (State = {})); +const TokenizerMode = { + DATA: State.DATA, + RCDATA: State.RCDATA, + RAWTEXT: State.RAWTEXT, + SCRIPT_DATA: State.SCRIPT_DATA, + PLAINTEXT: State.PLAINTEXT, + CDATA_SECTION: State.CDATA_SECTION +}; +function isAsciiDigit(cp) { + return cp >= CODE_POINTS.DIGIT_0 && cp <= CODE_POINTS.DIGIT_9; +} +function isAsciiUpper(cp) { + return cp >= CODE_POINTS.LATIN_CAPITAL_A && cp <= CODE_POINTS.LATIN_CAPITAL_Z; +} +function isAsciiLower(cp) { + return cp >= CODE_POINTS.LATIN_SMALL_A && cp <= CODE_POINTS.LATIN_SMALL_Z; +} +function isAsciiLetter(cp) { + return isAsciiLower(cp) || isAsciiUpper(cp); +} +function isAsciiAlphaNumeric(cp) { + return isAsciiLetter(cp) || isAsciiDigit(cp); +} +function toAsciiLower(cp) { + return cp + 32; +} +function isWhitespace(cp) { + return cp === CODE_POINTS.SPACE || cp === CODE_POINTS.LINE_FEED || cp === CODE_POINTS.TABULATION || cp === CODE_POINTS.FORM_FEED; +} +function isScriptDataDoubleEscapeSequenceEnd(cp) { + return isWhitespace(cp) || cp === CODE_POINTS.SOLIDUS || cp === CODE_POINTS.GREATER_THAN_SIGN; +} +function getErrorForNumericCharacterReference(code) { + if (code === CODE_POINTS.NULL) return ERR.nullCharacterReference; + else if (code > 1114111) return ERR.characterReferenceOutsideUnicodeRange; + else if (isSurrogate(code)) return ERR.surrogateCharacterReference; + else if (isUndefinedCodePoint(code)) return ERR.noncharacterCharacterReference; + else if (isControlCodePoint(code) || code === CODE_POINTS.CARRIAGE_RETURN) return ERR.controlCharacterReference; + return null; +} +var Tokenizer = class { + constructor(options, handler) { + this.options = options; + this.handler = handler; + this.paused = false; + /** Ensures that the parsing loop isn't run multiple times at once. */ + this.inLoop = false; + /** + * Indicates that the current adjusted node exists, is not an element in the HTML namespace, + * and that it is not an integration point for either MathML or HTML. + * + * @see {@link https://html.spec.whatwg.org/multipage/parsing.html#tree-construction} + */ + this.inForeignNode = false; + this.lastStartTagName = ""; + this.active = false; + this.state = State.DATA; + this.returnState = State.DATA; + this.entityStartPos = 0; + this.consumedAfterSnapshot = -1; + this.currentCharacterToken = null; + this.currentToken = null; + this.currentAttr = { + name: "", + value: "" + }; + this.preprocessor = new Preprocessor(handler); + this.currentLocation = this.getCurrentLocation(-1); + this.entityDecoder = new EntityDecoder(htmlDecodeTree, (cp, consumed) => { + this.preprocessor.pos = this.entityStartPos + consumed - 1; + this._flushCodePointConsumedAsCharacterReference(cp); + }, handler.onParseError ? { + missingSemicolonAfterCharacterReference: () => { + this._err(ERR.missingSemicolonAfterCharacterReference, 1); + }, + absenceOfDigitsInNumericCharacterReference: (consumed) => { + this._err(ERR.absenceOfDigitsInNumericCharacterReference, this.entityStartPos - this.preprocessor.pos + consumed); + }, + validateNumericCharacterReference: (code) => { + const error = getErrorForNumericCharacterReference(code); + if (error) this._err(error, 1); + } + } : void 0); + } + _err(code, cpOffset = 0) { + var _a, _b; + (_b = (_a = this.handler).onParseError) === null || _b === void 0 || _b.call(_a, this.preprocessor.getError(code, cpOffset)); + } + getCurrentLocation(offset) { + if (!this.options.sourceCodeLocationInfo) return null; + return { + startLine: this.preprocessor.line, + startCol: this.preprocessor.col - offset, + startOffset: this.preprocessor.offset - offset, + endLine: -1, + endCol: -1, + endOffset: -1 + }; + } + _runParsingLoop() { + if (this.inLoop) return; + this.inLoop = true; + while (this.active && !this.paused) { + this.consumedAfterSnapshot = 0; + const cp = this._consume(); + if (!this._ensureHibernation()) this._callState(cp); + } + this.inLoop = false; + } + pause() { + this.paused = true; + } + resume(writeCallback) { + if (!this.paused) throw new Error("Parser was already resumed"); + this.paused = false; + if (this.inLoop) return; + this._runParsingLoop(); + if (!this.paused) writeCallback === null || writeCallback === void 0 || writeCallback(); + } + write(chunk, isLastChunk, writeCallback) { + this.active = true; + this.preprocessor.write(chunk, isLastChunk); + this._runParsingLoop(); + if (!this.paused) writeCallback === null || writeCallback === void 0 || writeCallback(); + } + insertHtmlAtCurrentPos(chunk) { + this.active = true; + this.preprocessor.insertHtmlAtCurrentPos(chunk); + this._runParsingLoop(); + } + _ensureHibernation() { + if (this.preprocessor.endOfChunkHit) { + this.preprocessor.retreat(this.consumedAfterSnapshot); + this.consumedAfterSnapshot = 0; + this.active = false; + return true; + } + return false; + } + _consume() { + this.consumedAfterSnapshot++; + return this.preprocessor.advance(); + } + _advanceBy(count) { + this.consumedAfterSnapshot += count; + for (let i = 0; i < count; i++) this.preprocessor.advance(); + } + _consumeSequenceIfMatch(pattern, caseSensitive) { + if (this.preprocessor.startsWith(pattern, caseSensitive)) { + this._advanceBy(pattern.length - 1); + return true; + } + return false; + } + _createStartTagToken() { + this.currentToken = { + type: TokenType.START_TAG, + tagName: "", + tagID: TAG_ID.UNKNOWN, + selfClosing: false, + ackSelfClosing: false, + attrs: [], + location: this.getCurrentLocation(1) + }; + } + _createEndTagToken() { + this.currentToken = { + type: TokenType.END_TAG, + tagName: "", + tagID: TAG_ID.UNKNOWN, + selfClosing: false, + ackSelfClosing: false, + attrs: [], + location: this.getCurrentLocation(2) + }; + } + _createCommentToken(offset) { + this.currentToken = { + type: TokenType.COMMENT, + data: "", + location: this.getCurrentLocation(offset) + }; + } + _createDoctypeToken(initialName) { + this.currentToken = { + type: TokenType.DOCTYPE, + name: initialName, + forceQuirks: false, + publicId: null, + systemId: null, + location: this.currentLocation + }; + } + _createCharacterToken(type, chars) { + this.currentCharacterToken = { + type, + chars, + location: this.currentLocation + }; + } + _createAttr(attrNameFirstCh) { + this.currentAttr = { + name: attrNameFirstCh, + value: "" + }; + this.currentLocation = this.getCurrentLocation(0); + } + _leaveAttrName() { + var _a; + var _b; + const token = this.currentToken; + if (getTokenAttr(token, this.currentAttr.name) === null) { + token.attrs.push(this.currentAttr); + if (token.location && this.currentLocation) { + const attrLocations = (_a = (_b = token.location).attrs) !== null && _a !== void 0 ? _a : _b.attrs = Object.create(null); + attrLocations[this.currentAttr.name] = this.currentLocation; + this._leaveAttrValue(); + } + } else this._err(ERR.duplicateAttribute); + } + _leaveAttrValue() { + if (this.currentLocation) { + this.currentLocation.endLine = this.preprocessor.line; + this.currentLocation.endCol = this.preprocessor.col; + this.currentLocation.endOffset = this.preprocessor.offset; + } + } + prepareToken(ct) { + this._emitCurrentCharacterToken(ct.location); + this.currentToken = null; + if (ct.location) { + ct.location.endLine = this.preprocessor.line; + ct.location.endCol = this.preprocessor.col + 1; + ct.location.endOffset = this.preprocessor.offset + 1; + } + this.currentLocation = this.getCurrentLocation(-1); + } + emitCurrentTagToken() { + const ct = this.currentToken; + this.prepareToken(ct); + ct.tagID = getTagID(ct.tagName); + if (ct.type === TokenType.START_TAG) { + this.lastStartTagName = ct.tagName; + this.handler.onStartTag(ct); + } else { + if (ct.attrs.length > 0) this._err(ERR.endTagWithAttributes); + if (ct.selfClosing) this._err(ERR.endTagWithTrailingSolidus); + this.handler.onEndTag(ct); + } + this.preprocessor.dropParsedChunk(); + } + emitCurrentComment(ct) { + this.prepareToken(ct); + this.handler.onComment(ct); + this.preprocessor.dropParsedChunk(); + } + emitCurrentDoctype(ct) { + this.prepareToken(ct); + this.handler.onDoctype(ct); + this.preprocessor.dropParsedChunk(); + } + _emitCurrentCharacterToken(nextLocation) { + if (this.currentCharacterToken) { + if (nextLocation && this.currentCharacterToken.location) { + this.currentCharacterToken.location.endLine = nextLocation.startLine; + this.currentCharacterToken.location.endCol = nextLocation.startCol; + this.currentCharacterToken.location.endOffset = nextLocation.startOffset; + } + switch (this.currentCharacterToken.type) { + case TokenType.CHARACTER: + this.handler.onCharacter(this.currentCharacterToken); + break; + case TokenType.NULL_CHARACTER: + this.handler.onNullCharacter(this.currentCharacterToken); + break; + case TokenType.WHITESPACE_CHARACTER: + this.handler.onWhitespaceCharacter(this.currentCharacterToken); + break; + } + this.currentCharacterToken = null; + } + } + _emitEOFToken() { + const location = this.getCurrentLocation(0); + if (location) { + location.endLine = location.startLine; + location.endCol = location.startCol; + location.endOffset = location.startOffset; + } + this._emitCurrentCharacterToken(location); + this.handler.onEof({ + type: TokenType.EOF, + location + }); + this.active = false; + } + _appendCharToCurrentCharacterToken(type, ch) { + if (this.currentCharacterToken) if (this.currentCharacterToken.type === type) { + this.currentCharacterToken.chars += ch; + return; + } else { + this.currentLocation = this.getCurrentLocation(0); + this._emitCurrentCharacterToken(this.currentLocation); + this.preprocessor.dropParsedChunk(); + } + this._createCharacterToken(type, ch); + } + _emitCodePoint(cp) { + const type = isWhitespace(cp) ? TokenType.WHITESPACE_CHARACTER : cp === CODE_POINTS.NULL ? TokenType.NULL_CHARACTER : TokenType.CHARACTER; + this._appendCharToCurrentCharacterToken(type, cp < 65536 ? String.fromCharCode(cp) : String.fromCodePoint(cp)); + } + _emitChars(ch) { + this._appendCharToCurrentCharacterToken(TokenType.CHARACTER, ch); + } + _startCharacterReference() { + this.returnState = this.state; + this.state = State.CHARACTER_REFERENCE; + this.entityStartPos = this.preprocessor.pos; + this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute() ? DecodingMode.Attribute : DecodingMode.Legacy); + } + _isCharacterReferenceInAttribute() { + return this.returnState === State.ATTRIBUTE_VALUE_DOUBLE_QUOTED || this.returnState === State.ATTRIBUTE_VALUE_SINGLE_QUOTED || this.returnState === State.ATTRIBUTE_VALUE_UNQUOTED; + } + _flushCodePointConsumedAsCharacterReference(cp) { + if (this._isCharacterReferenceInAttribute()) this.currentAttr.value += String.fromCodePoint(cp); + else this._emitCodePoint(cp); + } + _callState(cp) { + switch (this.state) { + case State.DATA: + this._stateData(cp); + break; + case State.RCDATA: + this._stateRcdata(cp); + break; + case State.RAWTEXT: + this._stateRawtext(cp); + break; + case State.SCRIPT_DATA: + this._stateScriptData(cp); + break; + case State.PLAINTEXT: + this._statePlaintext(cp); + break; + case State.TAG_OPEN: + this._stateTagOpen(cp); + break; + case State.END_TAG_OPEN: + this._stateEndTagOpen(cp); + break; + case State.TAG_NAME: + this._stateTagName(cp); + break; + case State.RCDATA_LESS_THAN_SIGN: + this._stateRcdataLessThanSign(cp); + break; + case State.RCDATA_END_TAG_OPEN: + this._stateRcdataEndTagOpen(cp); + break; + case State.RCDATA_END_TAG_NAME: + this._stateRcdataEndTagName(cp); + break; + case State.RAWTEXT_LESS_THAN_SIGN: + this._stateRawtextLessThanSign(cp); + break; + case State.RAWTEXT_END_TAG_OPEN: + this._stateRawtextEndTagOpen(cp); + break; + case State.RAWTEXT_END_TAG_NAME: + this._stateRawtextEndTagName(cp); + break; + case State.SCRIPT_DATA_LESS_THAN_SIGN: + this._stateScriptDataLessThanSign(cp); + break; + case State.SCRIPT_DATA_END_TAG_OPEN: + this._stateScriptDataEndTagOpen(cp); + break; + case State.SCRIPT_DATA_END_TAG_NAME: + this._stateScriptDataEndTagName(cp); + break; + case State.SCRIPT_DATA_ESCAPE_START: + this._stateScriptDataEscapeStart(cp); + break; + case State.SCRIPT_DATA_ESCAPE_START_DASH: + this._stateScriptDataEscapeStartDash(cp); + break; + case State.SCRIPT_DATA_ESCAPED: + this._stateScriptDataEscaped(cp); + break; + case State.SCRIPT_DATA_ESCAPED_DASH: + this._stateScriptDataEscapedDash(cp); + break; + case State.SCRIPT_DATA_ESCAPED_DASH_DASH: + this._stateScriptDataEscapedDashDash(cp); + break; + case State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: + this._stateScriptDataEscapedLessThanSign(cp); + break; + case State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN: + this._stateScriptDataEscapedEndTagOpen(cp); + break; + case State.SCRIPT_DATA_ESCAPED_END_TAG_NAME: + this._stateScriptDataEscapedEndTagName(cp); + break; + case State.SCRIPT_DATA_DOUBLE_ESCAPE_START: + this._stateScriptDataDoubleEscapeStart(cp); + break; + case State.SCRIPT_DATA_DOUBLE_ESCAPED: + this._stateScriptDataDoubleEscaped(cp); + break; + case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH: + this._stateScriptDataDoubleEscapedDash(cp); + break; + case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: + this._stateScriptDataDoubleEscapedDashDash(cp); + break; + case State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: + this._stateScriptDataDoubleEscapedLessThanSign(cp); + break; + case State.SCRIPT_DATA_DOUBLE_ESCAPE_END: + this._stateScriptDataDoubleEscapeEnd(cp); + break; + case State.BEFORE_ATTRIBUTE_NAME: + this._stateBeforeAttributeName(cp); + break; + case State.ATTRIBUTE_NAME: + this._stateAttributeName(cp); + break; + case State.AFTER_ATTRIBUTE_NAME: + this._stateAfterAttributeName(cp); + break; + case State.BEFORE_ATTRIBUTE_VALUE: + this._stateBeforeAttributeValue(cp); + break; + case State.ATTRIBUTE_VALUE_DOUBLE_QUOTED: + this._stateAttributeValueDoubleQuoted(cp); + break; + case State.ATTRIBUTE_VALUE_SINGLE_QUOTED: + this._stateAttributeValueSingleQuoted(cp); + break; + case State.ATTRIBUTE_VALUE_UNQUOTED: + this._stateAttributeValueUnquoted(cp); + break; + case State.AFTER_ATTRIBUTE_VALUE_QUOTED: + this._stateAfterAttributeValueQuoted(cp); + break; + case State.SELF_CLOSING_START_TAG: + this._stateSelfClosingStartTag(cp); + break; + case State.BOGUS_COMMENT: + this._stateBogusComment(cp); + break; + case State.MARKUP_DECLARATION_OPEN: + this._stateMarkupDeclarationOpen(cp); + break; + case State.COMMENT_START: + this._stateCommentStart(cp); + break; + case State.COMMENT_START_DASH: + this._stateCommentStartDash(cp); + break; + case State.COMMENT: + this._stateComment(cp); + break; + case State.COMMENT_LESS_THAN_SIGN: + this._stateCommentLessThanSign(cp); + break; + case State.COMMENT_LESS_THAN_SIGN_BANG: + this._stateCommentLessThanSignBang(cp); + break; + case State.COMMENT_LESS_THAN_SIGN_BANG_DASH: + this._stateCommentLessThanSignBangDash(cp); + break; + case State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH: + this._stateCommentLessThanSignBangDashDash(cp); + break; + case State.COMMENT_END_DASH: + this._stateCommentEndDash(cp); + break; + case State.COMMENT_END: + this._stateCommentEnd(cp); + break; + case State.COMMENT_END_BANG: + this._stateCommentEndBang(cp); + break; + case State.DOCTYPE: + this._stateDoctype(cp); + break; + case State.BEFORE_DOCTYPE_NAME: + this._stateBeforeDoctypeName(cp); + break; + case State.DOCTYPE_NAME: + this._stateDoctypeName(cp); + break; + case State.AFTER_DOCTYPE_NAME: + this._stateAfterDoctypeName(cp); + break; + case State.AFTER_DOCTYPE_PUBLIC_KEYWORD: + this._stateAfterDoctypePublicKeyword(cp); + break; + case State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: + this._stateBeforeDoctypePublicIdentifier(cp); + break; + case State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: + this._stateDoctypePublicIdentifierDoubleQuoted(cp); + break; + case State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: + this._stateDoctypePublicIdentifierSingleQuoted(cp); + break; + case State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER: + this._stateAfterDoctypePublicIdentifier(cp); + break; + case State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: + this._stateBetweenDoctypePublicAndSystemIdentifiers(cp); + break; + case State.AFTER_DOCTYPE_SYSTEM_KEYWORD: + this._stateAfterDoctypeSystemKeyword(cp); + break; + case State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: + this._stateBeforeDoctypeSystemIdentifier(cp); + break; + case State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: + this._stateDoctypeSystemIdentifierDoubleQuoted(cp); + break; + case State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: + this._stateDoctypeSystemIdentifierSingleQuoted(cp); + break; + case State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER: + this._stateAfterDoctypeSystemIdentifier(cp); + break; + case State.BOGUS_DOCTYPE: + this._stateBogusDoctype(cp); + break; + case State.CDATA_SECTION: + this._stateCdataSection(cp); + break; + case State.CDATA_SECTION_BRACKET: + this._stateCdataSectionBracket(cp); + break; + case State.CDATA_SECTION_END: + this._stateCdataSectionEnd(cp); + break; + case State.CHARACTER_REFERENCE: + this._stateCharacterReference(); + break; + case State.AMBIGUOUS_AMPERSAND: + this._stateAmbiguousAmpersand(cp); + break; + default: throw new Error("Unknown state"); + } + } + _stateData(cp) { + switch (cp) { + case CODE_POINTS.LESS_THAN_SIGN: + this.state = State.TAG_OPEN; + break; + case CODE_POINTS.AMPERSAND: + this._startCharacterReference(); + break; + case CODE_POINTS.NULL: + this._err(ERR.unexpectedNullCharacter); + this._emitCodePoint(cp); + break; + case CODE_POINTS.EOF: + this._emitEOFToken(); + break; + default: this._emitCodePoint(cp); + } + } + _stateRcdata(cp) { + switch (cp) { + case CODE_POINTS.AMPERSAND: + this._startCharacterReference(); + break; + case CODE_POINTS.LESS_THAN_SIGN: + this.state = State.RCDATA_LESS_THAN_SIGN; + break; + case CODE_POINTS.NULL: + this._err(ERR.unexpectedNullCharacter); + this._emitChars("�"); + break; + case CODE_POINTS.EOF: + this._emitEOFToken(); + break; + default: this._emitCodePoint(cp); + } + } + _stateRawtext(cp) { + switch (cp) { + case CODE_POINTS.LESS_THAN_SIGN: + this.state = State.RAWTEXT_LESS_THAN_SIGN; + break; + case CODE_POINTS.NULL: + this._err(ERR.unexpectedNullCharacter); + this._emitChars("�"); + break; + case CODE_POINTS.EOF: + this._emitEOFToken(); + break; + default: this._emitCodePoint(cp); + } + } + _stateScriptData(cp) { + switch (cp) { + case CODE_POINTS.LESS_THAN_SIGN: + this.state = State.SCRIPT_DATA_LESS_THAN_SIGN; + break; + case CODE_POINTS.NULL: + this._err(ERR.unexpectedNullCharacter); + this._emitChars("�"); + break; + case CODE_POINTS.EOF: + this._emitEOFToken(); + break; + default: this._emitCodePoint(cp); + } + } + _statePlaintext(cp) { + switch (cp) { + case CODE_POINTS.NULL: + this._err(ERR.unexpectedNullCharacter); + this._emitChars("�"); + break; + case CODE_POINTS.EOF: + this._emitEOFToken(); + break; + default: this._emitCodePoint(cp); + } + } + _stateTagOpen(cp) { + if (isAsciiLetter(cp)) { + this._createStartTagToken(); + this.state = State.TAG_NAME; + this._stateTagName(cp); + } else switch (cp) { + case CODE_POINTS.EXCLAMATION_MARK: + this.state = State.MARKUP_DECLARATION_OPEN; + break; + case CODE_POINTS.SOLIDUS: + this.state = State.END_TAG_OPEN; + break; + case CODE_POINTS.QUESTION_MARK: + this._err(ERR.unexpectedQuestionMarkInsteadOfTagName); + this._createCommentToken(1); + this.state = State.BOGUS_COMMENT; + this._stateBogusComment(cp); + break; + case CODE_POINTS.EOF: + this._err(ERR.eofBeforeTagName); + this._emitChars("<"); + this._emitEOFToken(); + break; + default: + this._err(ERR.invalidFirstCharacterOfTagName); + this._emitChars("<"); + this.state = State.DATA; + this._stateData(cp); + } + } + _stateEndTagOpen(cp) { + if (isAsciiLetter(cp)) { + this._createEndTagToken(); + this.state = State.TAG_NAME; + this._stateTagName(cp); + } else switch (cp) { + case CODE_POINTS.GREATER_THAN_SIGN: + this._err(ERR.missingEndTagName); + this.state = State.DATA; + break; + case CODE_POINTS.EOF: + this._err(ERR.eofBeforeTagName); + this._emitChars(""); + break; + case CODE_POINTS.NULL: + this._err(ERR.unexpectedNullCharacter); + this.state = State.SCRIPT_DATA_ESCAPED; + this._emitChars("�"); + break; + case CODE_POINTS.EOF: + this._err(ERR.eofInScriptHtmlCommentLikeText); + this._emitEOFToken(); + break; + default: + this.state = State.SCRIPT_DATA_ESCAPED; + this._emitCodePoint(cp); + } + } + _stateScriptDataEscapedLessThanSign(cp) { + if (cp === CODE_POINTS.SOLIDUS) this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN; + else if (isAsciiLetter(cp)) { + this._emitChars("<"); + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_START; + this._stateScriptDataDoubleEscapeStart(cp); + } else { + this._emitChars("<"); + this.state = State.SCRIPT_DATA_ESCAPED; + this._stateScriptDataEscaped(cp); + } + } + _stateScriptDataEscapedEndTagOpen(cp) { + if (isAsciiLetter(cp)) { + this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_NAME; + this._stateScriptDataEscapedEndTagName(cp); + } else { + this._emitChars(""); + break; + case CODE_POINTS.NULL: + this._err(ERR.unexpectedNullCharacter); + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; + this._emitChars("�"); + break; + case CODE_POINTS.EOF: + this._err(ERR.eofInScriptHtmlCommentLikeText); + this._emitEOFToken(); + break; + default: + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; + this._emitCodePoint(cp); + } + } + _stateScriptDataDoubleEscapedLessThanSign(cp) { + if (cp === CODE_POINTS.SOLIDUS) { + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_END; + this._emitChars("/"); + } else { + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; + this._stateScriptDataDoubleEscaped(cp); + } + } + _stateScriptDataDoubleEscapeEnd(cp) { + if (this.preprocessor.startsWith(SEQUENCES.SCRIPT, false) && isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek(SEQUENCES.SCRIPT.length))) { + this._emitCodePoint(cp); + for (let i = 0; i < SEQUENCES.SCRIPT.length; i++) this._emitCodePoint(this._consume()); + this.state = State.SCRIPT_DATA_ESCAPED; + } else if (!this._ensureHibernation()) { + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; + this._stateScriptDataDoubleEscaped(cp); + } + } + _stateBeforeAttributeName(cp) { + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: break; + case CODE_POINTS.SOLIDUS: + case CODE_POINTS.GREATER_THAN_SIGN: + case CODE_POINTS.EOF: + this.state = State.AFTER_ATTRIBUTE_NAME; + this._stateAfterAttributeName(cp); + break; + case CODE_POINTS.EQUALS_SIGN: + this._err(ERR.unexpectedEqualsSignBeforeAttributeName); + this._createAttr("="); + this.state = State.ATTRIBUTE_NAME; + break; + default: + this._createAttr(""); + this.state = State.ATTRIBUTE_NAME; + this._stateAttributeName(cp); + } + } + _stateAttributeName(cp) { + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: + case CODE_POINTS.SOLIDUS: + case CODE_POINTS.GREATER_THAN_SIGN: + case CODE_POINTS.EOF: + this._leaveAttrName(); + this.state = State.AFTER_ATTRIBUTE_NAME; + this._stateAfterAttributeName(cp); + break; + case CODE_POINTS.EQUALS_SIGN: + this._leaveAttrName(); + this.state = State.BEFORE_ATTRIBUTE_VALUE; + break; + case CODE_POINTS.QUOTATION_MARK: + case CODE_POINTS.APOSTROPHE: + case CODE_POINTS.LESS_THAN_SIGN: + this._err(ERR.unexpectedCharacterInAttributeName); + this.currentAttr.name += String.fromCodePoint(cp); + break; + case CODE_POINTS.NULL: + this._err(ERR.unexpectedNullCharacter); + this.currentAttr.name += "�"; + break; + default: this.currentAttr.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp); + } + } + _stateAfterAttributeName(cp) { + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: break; + case CODE_POINTS.SOLIDUS: + this.state = State.SELF_CLOSING_START_TAG; + break; + case CODE_POINTS.EQUALS_SIGN: + this.state = State.BEFORE_ATTRIBUTE_VALUE; + break; + case CODE_POINTS.GREATER_THAN_SIGN: + this.state = State.DATA; + this.emitCurrentTagToken(); + break; + case CODE_POINTS.EOF: + this._err(ERR.eofInTag); + this._emitEOFToken(); + break; + default: + this._createAttr(""); + this.state = State.ATTRIBUTE_NAME; + this._stateAttributeName(cp); + } + } + _stateBeforeAttributeValue(cp) { + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: break; + case CODE_POINTS.QUOTATION_MARK: + this.state = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED; + break; + case CODE_POINTS.APOSTROPHE: + this.state = State.ATTRIBUTE_VALUE_SINGLE_QUOTED; + break; + case CODE_POINTS.GREATER_THAN_SIGN: + this._err(ERR.missingAttributeValue); + this.state = State.DATA; + this.emitCurrentTagToken(); + break; + default: + this.state = State.ATTRIBUTE_VALUE_UNQUOTED; + this._stateAttributeValueUnquoted(cp); + } + } + _stateAttributeValueDoubleQuoted(cp) { + switch (cp) { + case CODE_POINTS.QUOTATION_MARK: + this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED; + break; + case CODE_POINTS.AMPERSAND: + this._startCharacterReference(); + break; + case CODE_POINTS.NULL: + this._err(ERR.unexpectedNullCharacter); + this.currentAttr.value += "�"; + break; + case CODE_POINTS.EOF: + this._err(ERR.eofInTag); + this._emitEOFToken(); + break; + default: this.currentAttr.value += String.fromCodePoint(cp); + } + } + _stateAttributeValueSingleQuoted(cp) { + switch (cp) { + case CODE_POINTS.APOSTROPHE: + this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED; + break; + case CODE_POINTS.AMPERSAND: + this._startCharacterReference(); + break; + case CODE_POINTS.NULL: + this._err(ERR.unexpectedNullCharacter); + this.currentAttr.value += "�"; + break; + case CODE_POINTS.EOF: + this._err(ERR.eofInTag); + this._emitEOFToken(); + break; + default: this.currentAttr.value += String.fromCodePoint(cp); + } + } + _stateAttributeValueUnquoted(cp) { + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: + this._leaveAttrValue(); + this.state = State.BEFORE_ATTRIBUTE_NAME; + break; + case CODE_POINTS.AMPERSAND: + this._startCharacterReference(); + break; + case CODE_POINTS.GREATER_THAN_SIGN: + this._leaveAttrValue(); + this.state = State.DATA; + this.emitCurrentTagToken(); + break; + case CODE_POINTS.NULL: + this._err(ERR.unexpectedNullCharacter); + this.currentAttr.value += "�"; + break; + case CODE_POINTS.QUOTATION_MARK: + case CODE_POINTS.APOSTROPHE: + case CODE_POINTS.LESS_THAN_SIGN: + case CODE_POINTS.EQUALS_SIGN: + case CODE_POINTS.GRAVE_ACCENT: + this._err(ERR.unexpectedCharacterInUnquotedAttributeValue); + this.currentAttr.value += String.fromCodePoint(cp); + break; + case CODE_POINTS.EOF: + this._err(ERR.eofInTag); + this._emitEOFToken(); + break; + default: this.currentAttr.value += String.fromCodePoint(cp); + } + } + _stateAfterAttributeValueQuoted(cp) { + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: + this._leaveAttrValue(); + this.state = State.BEFORE_ATTRIBUTE_NAME; + break; + case CODE_POINTS.SOLIDUS: + this._leaveAttrValue(); + this.state = State.SELF_CLOSING_START_TAG; + break; + case CODE_POINTS.GREATER_THAN_SIGN: + this._leaveAttrValue(); + this.state = State.DATA; + this.emitCurrentTagToken(); + break; + case CODE_POINTS.EOF: + this._err(ERR.eofInTag); + this._emitEOFToken(); + break; + default: + this._err(ERR.missingWhitespaceBetweenAttributes); + this.state = State.BEFORE_ATTRIBUTE_NAME; + this._stateBeforeAttributeName(cp); + } + } + _stateSelfClosingStartTag(cp) { + switch (cp) { + case CODE_POINTS.GREATER_THAN_SIGN: { + const token = this.currentToken; + token.selfClosing = true; + this.state = State.DATA; + this.emitCurrentTagToken(); + break; + } + case CODE_POINTS.EOF: + this._err(ERR.eofInTag); + this._emitEOFToken(); + break; + default: + this._err(ERR.unexpectedSolidusInTag); + this.state = State.BEFORE_ATTRIBUTE_NAME; + this._stateBeforeAttributeName(cp); + } + } + _stateBogusComment(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.GREATER_THAN_SIGN: + this.state = State.DATA; + this.emitCurrentComment(token); + break; + case CODE_POINTS.EOF: + this.emitCurrentComment(token); + this._emitEOFToken(); + break; + case CODE_POINTS.NULL: + this._err(ERR.unexpectedNullCharacter); + token.data += "�"; + break; + default: token.data += String.fromCodePoint(cp); + } + } + _stateMarkupDeclarationOpen(cp) { + if (this._consumeSequenceIfMatch(SEQUENCES.DASH_DASH, true)) { + this._createCommentToken(SEQUENCES.DASH_DASH.length + 1); + this.state = State.COMMENT_START; + } else if (this._consumeSequenceIfMatch(SEQUENCES.DOCTYPE, false)) { + this.currentLocation = this.getCurrentLocation(SEQUENCES.DOCTYPE.length + 1); + this.state = State.DOCTYPE; + } else if (this._consumeSequenceIfMatch(SEQUENCES.CDATA_START, true)) if (this.inForeignNode) this.state = State.CDATA_SECTION; + else { + this._err(ERR.cdataInHtmlContent); + this._createCommentToken(SEQUENCES.CDATA_START.length + 1); + this.currentToken.data = "[CDATA["; + this.state = State.BOGUS_COMMENT; + } + else if (!this._ensureHibernation()) { + this._err(ERR.incorrectlyOpenedComment); + this._createCommentToken(2); + this.state = State.BOGUS_COMMENT; + this._stateBogusComment(cp); + } + } + _stateCommentStart(cp) { + switch (cp) { + case CODE_POINTS.HYPHEN_MINUS: + this.state = State.COMMENT_START_DASH; + break; + case CODE_POINTS.GREATER_THAN_SIGN: { + this._err(ERR.abruptClosingOfEmptyComment); + this.state = State.DATA; + const token = this.currentToken; + this.emitCurrentComment(token); + break; + } + default: + this.state = State.COMMENT; + this._stateComment(cp); + } + } + _stateCommentStartDash(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.HYPHEN_MINUS: + this.state = State.COMMENT_END; + break; + case CODE_POINTS.GREATER_THAN_SIGN: + this._err(ERR.abruptClosingOfEmptyComment); + this.state = State.DATA; + this.emitCurrentComment(token); + break; + case CODE_POINTS.EOF: + this._err(ERR.eofInComment); + this.emitCurrentComment(token); + this._emitEOFToken(); + break; + default: + token.data += "-"; + this.state = State.COMMENT; + this._stateComment(cp); + } + } + _stateComment(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.HYPHEN_MINUS: + this.state = State.COMMENT_END_DASH; + break; + case CODE_POINTS.LESS_THAN_SIGN: + token.data += "<"; + this.state = State.COMMENT_LESS_THAN_SIGN; + break; + case CODE_POINTS.NULL: + this._err(ERR.unexpectedNullCharacter); + token.data += "�"; + break; + case CODE_POINTS.EOF: + this._err(ERR.eofInComment); + this.emitCurrentComment(token); + this._emitEOFToken(); + break; + default: token.data += String.fromCodePoint(cp); + } + } + _stateCommentLessThanSign(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.EXCLAMATION_MARK: + token.data += "!"; + this.state = State.COMMENT_LESS_THAN_SIGN_BANG; + break; + case CODE_POINTS.LESS_THAN_SIGN: + token.data += "<"; + break; + default: + this.state = State.COMMENT; + this._stateComment(cp); + } + } + _stateCommentLessThanSignBang(cp) { + if (cp === CODE_POINTS.HYPHEN_MINUS) this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH; + else { + this.state = State.COMMENT; + this._stateComment(cp); + } + } + _stateCommentLessThanSignBangDash(cp) { + if (cp === CODE_POINTS.HYPHEN_MINUS) this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH; + else { + this.state = State.COMMENT_END_DASH; + this._stateCommentEndDash(cp); + } + } + _stateCommentLessThanSignBangDashDash(cp) { + if (cp !== CODE_POINTS.GREATER_THAN_SIGN && cp !== CODE_POINTS.EOF) this._err(ERR.nestedComment); + this.state = State.COMMENT_END; + this._stateCommentEnd(cp); + } + _stateCommentEndDash(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.HYPHEN_MINUS: + this.state = State.COMMENT_END; + break; + case CODE_POINTS.EOF: + this._err(ERR.eofInComment); + this.emitCurrentComment(token); + this._emitEOFToken(); + break; + default: + token.data += "-"; + this.state = State.COMMENT; + this._stateComment(cp); + } + } + _stateCommentEnd(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.GREATER_THAN_SIGN: + this.state = State.DATA; + this.emitCurrentComment(token); + break; + case CODE_POINTS.EXCLAMATION_MARK: + this.state = State.COMMENT_END_BANG; + break; + case CODE_POINTS.HYPHEN_MINUS: + token.data += "-"; + break; + case CODE_POINTS.EOF: + this._err(ERR.eofInComment); + this.emitCurrentComment(token); + this._emitEOFToken(); + break; + default: + token.data += "--"; + this.state = State.COMMENT; + this._stateComment(cp); + } + } + _stateCommentEndBang(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.HYPHEN_MINUS: + token.data += "--!"; + this.state = State.COMMENT_END_DASH; + break; + case CODE_POINTS.GREATER_THAN_SIGN: + this._err(ERR.incorrectlyClosedComment); + this.state = State.DATA; + this.emitCurrentComment(token); + break; + case CODE_POINTS.EOF: + this._err(ERR.eofInComment); + this.emitCurrentComment(token); + this._emitEOFToken(); + break; + default: + token.data += "--!"; + this.state = State.COMMENT; + this._stateComment(cp); + } + } + _stateDoctype(cp) { + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: + this.state = State.BEFORE_DOCTYPE_NAME; + break; + case CODE_POINTS.GREATER_THAN_SIGN: + this.state = State.BEFORE_DOCTYPE_NAME; + this._stateBeforeDoctypeName(cp); + break; + case CODE_POINTS.EOF: { + this._err(ERR.eofInDoctype); + this._createDoctypeToken(null); + const token = this.currentToken; + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: + this._err(ERR.missingWhitespaceBeforeDoctypeName); + this.state = State.BEFORE_DOCTYPE_NAME; + this._stateBeforeDoctypeName(cp); + } + } + _stateBeforeDoctypeName(cp) { + if (isAsciiUpper(cp)) { + this._createDoctypeToken(String.fromCharCode(toAsciiLower(cp))); + this.state = State.DOCTYPE_NAME; + } else switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: break; + case CODE_POINTS.NULL: + this._err(ERR.unexpectedNullCharacter); + this._createDoctypeToken("�"); + this.state = State.DOCTYPE_NAME; + break; + case CODE_POINTS.GREATER_THAN_SIGN: { + this._err(ERR.missingDoctypeName); + this._createDoctypeToken(null); + const token = this.currentToken; + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this.state = State.DATA; + break; + } + case CODE_POINTS.EOF: { + this._err(ERR.eofInDoctype); + this._createDoctypeToken(null); + const token = this.currentToken; + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: + this._createDoctypeToken(String.fromCodePoint(cp)); + this.state = State.DOCTYPE_NAME; + } + } + _stateDoctypeName(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: + this.state = State.AFTER_DOCTYPE_NAME; + break; + case CODE_POINTS.GREATER_THAN_SIGN: + this.state = State.DATA; + this.emitCurrentDoctype(token); + break; + case CODE_POINTS.NULL: + this._err(ERR.unexpectedNullCharacter); + token.name += "�"; + break; + case CODE_POINTS.EOF: + this._err(ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + default: token.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp); + } + } + _stateAfterDoctypeName(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: break; + case CODE_POINTS.GREATER_THAN_SIGN: + this.state = State.DATA; + this.emitCurrentDoctype(token); + break; + case CODE_POINTS.EOF: + this._err(ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + default: if (this._consumeSequenceIfMatch(SEQUENCES.PUBLIC, false)) this.state = State.AFTER_DOCTYPE_PUBLIC_KEYWORD; + else if (this._consumeSequenceIfMatch(SEQUENCES.SYSTEM, false)) this.state = State.AFTER_DOCTYPE_SYSTEM_KEYWORD; + else if (!this._ensureHibernation()) { + this._err(ERR.invalidCharacterSequenceAfterDoctypeName); + token.forceQuirks = true; + this.state = State.BOGUS_DOCTYPE; + this._stateBogusDoctype(cp); + } + } + } + _stateAfterDoctypePublicKeyword(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: + this.state = State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER; + break; + case CODE_POINTS.QUOTATION_MARK: + this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword); + token.publicId = ""; + this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED; + break; + case CODE_POINTS.APOSTROPHE: + this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword); + token.publicId = ""; + this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED; + break; + case CODE_POINTS.GREATER_THAN_SIGN: + this._err(ERR.missingDoctypePublicIdentifier); + token.forceQuirks = true; + this.state = State.DATA; + this.emitCurrentDoctype(token); + break; + case CODE_POINTS.EOF: + this._err(ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + default: + this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier); + token.forceQuirks = true; + this.state = State.BOGUS_DOCTYPE; + this._stateBogusDoctype(cp); + } + } + _stateBeforeDoctypePublicIdentifier(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: break; + case CODE_POINTS.QUOTATION_MARK: + token.publicId = ""; + this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED; + break; + case CODE_POINTS.APOSTROPHE: + token.publicId = ""; + this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED; + break; + case CODE_POINTS.GREATER_THAN_SIGN: + this._err(ERR.missingDoctypePublicIdentifier); + token.forceQuirks = true; + this.state = State.DATA; + this.emitCurrentDoctype(token); + break; + case CODE_POINTS.EOF: + this._err(ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + default: + this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier); + token.forceQuirks = true; + this.state = State.BOGUS_DOCTYPE; + this._stateBogusDoctype(cp); + } + } + _stateDoctypePublicIdentifierDoubleQuoted(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.QUOTATION_MARK: + this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER; + break; + case CODE_POINTS.NULL: + this._err(ERR.unexpectedNullCharacter); + token.publicId += "�"; + break; + case CODE_POINTS.GREATER_THAN_SIGN: + this._err(ERR.abruptDoctypePublicIdentifier); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this.state = State.DATA; + break; + case CODE_POINTS.EOF: + this._err(ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + default: token.publicId += String.fromCodePoint(cp); + } + } + _stateDoctypePublicIdentifierSingleQuoted(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.APOSTROPHE: + this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER; + break; + case CODE_POINTS.NULL: + this._err(ERR.unexpectedNullCharacter); + token.publicId += "�"; + break; + case CODE_POINTS.GREATER_THAN_SIGN: + this._err(ERR.abruptDoctypePublicIdentifier); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this.state = State.DATA; + break; + case CODE_POINTS.EOF: + this._err(ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + default: token.publicId += String.fromCodePoint(cp); + } + } + _stateAfterDoctypePublicIdentifier(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: + this.state = State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS; + break; + case CODE_POINTS.GREATER_THAN_SIGN: + this.state = State.DATA; + this.emitCurrentDoctype(token); + break; + case CODE_POINTS.QUOTATION_MARK: + this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers); + token.systemId = ""; + this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; + break; + case CODE_POINTS.APOSTROPHE: + this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers); + token.systemId = ""; + this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; + break; + case CODE_POINTS.EOF: + this._err(ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + default: + this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier); + token.forceQuirks = true; + this.state = State.BOGUS_DOCTYPE; + this._stateBogusDoctype(cp); + } + } + _stateBetweenDoctypePublicAndSystemIdentifiers(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: break; + case CODE_POINTS.GREATER_THAN_SIGN: + this.emitCurrentDoctype(token); + this.state = State.DATA; + break; + case CODE_POINTS.QUOTATION_MARK: + token.systemId = ""; + this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; + break; + case CODE_POINTS.APOSTROPHE: + token.systemId = ""; + this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; + break; + case CODE_POINTS.EOF: + this._err(ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + default: + this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier); + token.forceQuirks = true; + this.state = State.BOGUS_DOCTYPE; + this._stateBogusDoctype(cp); + } + } + _stateAfterDoctypeSystemKeyword(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: + this.state = State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER; + break; + case CODE_POINTS.QUOTATION_MARK: + this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword); + token.systemId = ""; + this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; + break; + case CODE_POINTS.APOSTROPHE: + this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword); + token.systemId = ""; + this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; + break; + case CODE_POINTS.GREATER_THAN_SIGN: + this._err(ERR.missingDoctypeSystemIdentifier); + token.forceQuirks = true; + this.state = State.DATA; + this.emitCurrentDoctype(token); + break; + case CODE_POINTS.EOF: + this._err(ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + default: + this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier); + token.forceQuirks = true; + this.state = State.BOGUS_DOCTYPE; + this._stateBogusDoctype(cp); + } + } + _stateBeforeDoctypeSystemIdentifier(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: break; + case CODE_POINTS.QUOTATION_MARK: + token.systemId = ""; + this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; + break; + case CODE_POINTS.APOSTROPHE: + token.systemId = ""; + this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; + break; + case CODE_POINTS.GREATER_THAN_SIGN: + this._err(ERR.missingDoctypeSystemIdentifier); + token.forceQuirks = true; + this.state = State.DATA; + this.emitCurrentDoctype(token); + break; + case CODE_POINTS.EOF: + this._err(ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + default: + this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier); + token.forceQuirks = true; + this.state = State.BOGUS_DOCTYPE; + this._stateBogusDoctype(cp); + } + } + _stateDoctypeSystemIdentifierDoubleQuoted(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.QUOTATION_MARK: + this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER; + break; + case CODE_POINTS.NULL: + this._err(ERR.unexpectedNullCharacter); + token.systemId += "�"; + break; + case CODE_POINTS.GREATER_THAN_SIGN: + this._err(ERR.abruptDoctypeSystemIdentifier); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this.state = State.DATA; + break; + case CODE_POINTS.EOF: + this._err(ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + default: token.systemId += String.fromCodePoint(cp); + } + } + _stateDoctypeSystemIdentifierSingleQuoted(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.APOSTROPHE: + this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER; + break; + case CODE_POINTS.NULL: + this._err(ERR.unexpectedNullCharacter); + token.systemId += "�"; + break; + case CODE_POINTS.GREATER_THAN_SIGN: + this._err(ERR.abruptDoctypeSystemIdentifier); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this.state = State.DATA; + break; + case CODE_POINTS.EOF: + this._err(ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + default: token.systemId += String.fromCodePoint(cp); + } + } + _stateAfterDoctypeSystemIdentifier(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.SPACE: + case CODE_POINTS.LINE_FEED: + case CODE_POINTS.TABULATION: + case CODE_POINTS.FORM_FEED: break; + case CODE_POINTS.GREATER_THAN_SIGN: + this.emitCurrentDoctype(token); + this.state = State.DATA; + break; + case CODE_POINTS.EOF: + this._err(ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + default: + this._err(ERR.unexpectedCharacterAfterDoctypeSystemIdentifier); + this.state = State.BOGUS_DOCTYPE; + this._stateBogusDoctype(cp); + } + } + _stateBogusDoctype(cp) { + const token = this.currentToken; + switch (cp) { + case CODE_POINTS.GREATER_THAN_SIGN: + this.emitCurrentDoctype(token); + this.state = State.DATA; + break; + case CODE_POINTS.NULL: + this._err(ERR.unexpectedNullCharacter); + break; + case CODE_POINTS.EOF: + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + default: + } + } + _stateCdataSection(cp) { + switch (cp) { + case CODE_POINTS.RIGHT_SQUARE_BRACKET: + this.state = State.CDATA_SECTION_BRACKET; + break; + case CODE_POINTS.EOF: + this._err(ERR.eofInCdata); + this._emitEOFToken(); + break; + default: this._emitCodePoint(cp); + } + } + _stateCdataSectionBracket(cp) { + if (cp === CODE_POINTS.RIGHT_SQUARE_BRACKET) this.state = State.CDATA_SECTION_END; + else { + this._emitChars("]"); + this.state = State.CDATA_SECTION; + this._stateCdataSection(cp); + } + } + _stateCdataSectionEnd(cp) { + switch (cp) { + case CODE_POINTS.GREATER_THAN_SIGN: + this.state = State.DATA; + break; + case CODE_POINTS.RIGHT_SQUARE_BRACKET: + this._emitChars("]"); + break; + default: + this._emitChars("]]"); + this.state = State.CDATA_SECTION; + this._stateCdataSection(cp); + } + } + _stateCharacterReference() { + let length = this.entityDecoder.write(this.preprocessor.html, this.preprocessor.pos); + if (length < 0) if (this.preprocessor.lastChunkWritten) length = this.entityDecoder.end(); + else { + this.active = false; + this.preprocessor.pos = this.preprocessor.html.length - 1; + this.consumedAfterSnapshot = 0; + this.preprocessor.endOfChunkHit = true; + return; + } + if (length === 0) { + this.preprocessor.pos = this.entityStartPos; + this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.AMPERSAND); + this.state = !this._isCharacterReferenceInAttribute() && isAsciiAlphaNumeric(this.preprocessor.peek(1)) ? State.AMBIGUOUS_AMPERSAND : this.returnState; + } else this.state = this.returnState; + } + _stateAmbiguousAmpersand(cp) { + if (isAsciiAlphaNumeric(cp)) this._flushCodePointConsumedAsCharacterReference(cp); + else { + if (cp === CODE_POINTS.SEMICOLON) this._err(ERR.unknownNamedCharacterReference); + this.state = this.returnState; + this._callState(cp); + } + } +}; +//#endregion +//#region ../../node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/parser/open-element-stack.js +const IMPLICIT_END_TAG_REQUIRED = new Set([ + TAG_ID.DD, + TAG_ID.DT, + TAG_ID.LI, + TAG_ID.OPTGROUP, + TAG_ID.OPTION, + TAG_ID.P, + TAG_ID.RB, + TAG_ID.RP, + TAG_ID.RT, + TAG_ID.RTC +]); +const IMPLICIT_END_TAG_REQUIRED_THOROUGHLY = new Set([ + ...IMPLICIT_END_TAG_REQUIRED, + TAG_ID.CAPTION, + TAG_ID.COLGROUP, + TAG_ID.TBODY, + TAG_ID.TD, + TAG_ID.TFOOT, + TAG_ID.TH, + TAG_ID.THEAD, + TAG_ID.TR +]); +const SCOPING_ELEMENTS_HTML = new Set([ + TAG_ID.APPLET, + TAG_ID.CAPTION, + TAG_ID.HTML, + TAG_ID.MARQUEE, + TAG_ID.OBJECT, + TAG_ID.TABLE, + TAG_ID.TD, + TAG_ID.TEMPLATE, + TAG_ID.TH +]); +const SCOPING_ELEMENTS_HTML_LIST = new Set([ + ...SCOPING_ELEMENTS_HTML, + TAG_ID.OL, + TAG_ID.UL +]); +const SCOPING_ELEMENTS_HTML_BUTTON = new Set([...SCOPING_ELEMENTS_HTML, TAG_ID.BUTTON]); +const SCOPING_ELEMENTS_MATHML = new Set([ + TAG_ID.ANNOTATION_XML, + TAG_ID.MI, + TAG_ID.MN, + TAG_ID.MO, + TAG_ID.MS, + TAG_ID.MTEXT +]); +const SCOPING_ELEMENTS_SVG = new Set([ + TAG_ID.DESC, + TAG_ID.FOREIGN_OBJECT, + TAG_ID.TITLE +]); +const TABLE_ROW_CONTEXT = new Set([ + TAG_ID.TR, + TAG_ID.TEMPLATE, + TAG_ID.HTML +]); +const TABLE_BODY_CONTEXT = new Set([ + TAG_ID.TBODY, + TAG_ID.TFOOT, + TAG_ID.THEAD, + TAG_ID.TEMPLATE, + TAG_ID.HTML +]); +const TABLE_CONTEXT = new Set([ + TAG_ID.TABLE, + TAG_ID.TEMPLATE, + TAG_ID.HTML +]); +const TABLE_CELLS = new Set([TAG_ID.TD, TAG_ID.TH]); +var OpenElementStack = class { + get currentTmplContentOrNode() { + return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current; + } + constructor(document, treeAdapter, handler) { + this.treeAdapter = treeAdapter; + this.handler = handler; + this.items = []; + this.tagIDs = []; + this.stackTop = -1; + this.tmplCount = 0; + this.currentTagId = TAG_ID.UNKNOWN; + this.current = document; + } + _indexOf(element) { + return this.items.lastIndexOf(element, this.stackTop); + } + _isInTemplate() { + return this.currentTagId === TAG_ID.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS.HTML; + } + _updateCurrentElement() { + this.current = this.items[this.stackTop]; + this.currentTagId = this.tagIDs[this.stackTop]; + } + push(element, tagID) { + this.stackTop++; + this.items[this.stackTop] = element; + this.current = element; + this.tagIDs[this.stackTop] = tagID; + this.currentTagId = tagID; + if (this._isInTemplate()) this.tmplCount++; + this.handler.onItemPush(element, tagID, true); + } + pop() { + const popped = this.current; + if (this.tmplCount > 0 && this._isInTemplate()) this.tmplCount--; + this.stackTop--; + this._updateCurrentElement(); + this.handler.onItemPop(popped, true); + } + replace(oldElement, newElement) { + const idx = this._indexOf(oldElement); + this.items[idx] = newElement; + if (idx === this.stackTop) this.current = newElement; + } + insertAfter(referenceElement, newElement, newElementID) { + const insertionIdx = this._indexOf(referenceElement) + 1; + this.items.splice(insertionIdx, 0, newElement); + this.tagIDs.splice(insertionIdx, 0, newElementID); + this.stackTop++; + if (insertionIdx === this.stackTop) this._updateCurrentElement(); + if (this.current && this.currentTagId !== void 0) this.handler.onItemPush(this.current, this.currentTagId, insertionIdx === this.stackTop); + } + popUntilTagNamePopped(tagName) { + let targetIdx = this.stackTop + 1; + do + targetIdx = this.tagIDs.lastIndexOf(tagName, targetIdx - 1); + while (targetIdx > 0 && this.treeAdapter.getNamespaceURI(this.items[targetIdx]) !== NS.HTML); + this.shortenToLength(Math.max(targetIdx, 0)); + } + shortenToLength(idx) { + while (this.stackTop >= idx) { + const popped = this.current; + if (this.tmplCount > 0 && this._isInTemplate()) this.tmplCount -= 1; + this.stackTop--; + this._updateCurrentElement(); + this.handler.onItemPop(popped, this.stackTop < idx); + } + } + popUntilElementPopped(element) { + const idx = this._indexOf(element); + this.shortenToLength(Math.max(idx, 0)); + } + popUntilPopped(tagNames, targetNS) { + const idx = this._indexOfTagNames(tagNames, targetNS); + this.shortenToLength(Math.max(idx, 0)); + } + popUntilNumberedHeaderPopped() { + this.popUntilPopped(NUMBERED_HEADERS, NS.HTML); + } + popUntilTableCellPopped() { + this.popUntilPopped(TABLE_CELLS, NS.HTML); + } + popAllUpToHtmlElement() { + this.tmplCount = 0; + this.shortenToLength(1); + } + _indexOfTagNames(tagNames, namespace) { + for (let i = this.stackTop; i >= 0; i--) if (tagNames.has(this.tagIDs[i]) && this.treeAdapter.getNamespaceURI(this.items[i]) === namespace) return i; + return -1; + } + clearBackTo(tagNames, targetNS) { + const idx = this._indexOfTagNames(tagNames, targetNS); + this.shortenToLength(idx + 1); + } + clearBackToTableContext() { + this.clearBackTo(TABLE_CONTEXT, NS.HTML); + } + clearBackToTableBodyContext() { + this.clearBackTo(TABLE_BODY_CONTEXT, NS.HTML); + } + clearBackToTableRowContext() { + this.clearBackTo(TABLE_ROW_CONTEXT, NS.HTML); + } + remove(element) { + const idx = this._indexOf(element); + if (idx >= 0) if (idx === this.stackTop) this.pop(); + else { + this.items.splice(idx, 1); + this.tagIDs.splice(idx, 1); + this.stackTop--; + this._updateCurrentElement(); + this.handler.onItemPop(element, false); + } + } + tryPeekProperlyNestedBodyElement() { + return this.stackTop >= 1 && this.tagIDs[1] === TAG_ID.BODY ? this.items[1] : null; + } + contains(element) { + return this._indexOf(element) > -1; + } + getCommonAncestor(element) { + const elementIdx = this._indexOf(element) - 1; + return elementIdx >= 0 ? this.items[elementIdx] : null; + } + isRootHtmlElementCurrent() { + return this.stackTop === 0 && this.tagIDs[0] === TAG_ID.HTML; + } + hasInDynamicScope(tagName, htmlScope) { + for (let i = this.stackTop; i >= 0; i--) { + const tn = this.tagIDs[i]; + switch (this.treeAdapter.getNamespaceURI(this.items[i])) { + case NS.HTML: + if (tn === tagName) return true; + if (htmlScope.has(tn)) return false; + break; + case NS.SVG: + if (SCOPING_ELEMENTS_SVG.has(tn)) return false; + break; + case NS.MATHML: + if (SCOPING_ELEMENTS_MATHML.has(tn)) return false; + break; + } + } + return true; + } + hasInScope(tagName) { + return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML); + } + hasInListItemScope(tagName) { + return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_LIST); + } + hasInButtonScope(tagName) { + return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_BUTTON); + } + hasNumberedHeaderInScope() { + for (let i = this.stackTop; i >= 0; i--) { + const tn = this.tagIDs[i]; + switch (this.treeAdapter.getNamespaceURI(this.items[i])) { + case NS.HTML: + if (NUMBERED_HEADERS.has(tn)) return true; + if (SCOPING_ELEMENTS_HTML.has(tn)) return false; + break; + case NS.SVG: + if (SCOPING_ELEMENTS_SVG.has(tn)) return false; + break; + case NS.MATHML: + if (SCOPING_ELEMENTS_MATHML.has(tn)) return false; + break; + } + } + return true; + } + hasInTableScope(tagName) { + for (let i = this.stackTop; i >= 0; i--) { + if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) continue; + switch (this.tagIDs[i]) { + case tagName: return true; + case TAG_ID.TABLE: + case TAG_ID.HTML: return false; + } + } + return true; + } + hasTableBodyContextInTableScope() { + for (let i = this.stackTop; i >= 0; i--) { + if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) continue; + switch (this.tagIDs[i]) { + case TAG_ID.TBODY: + case TAG_ID.THEAD: + case TAG_ID.TFOOT: return true; + case TAG_ID.TABLE: + case TAG_ID.HTML: return false; + } + } + return true; + } + hasInSelectScope(tagName) { + for (let i = this.stackTop; i >= 0; i--) { + if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) continue; + switch (this.tagIDs[i]) { + case tagName: return true; + case TAG_ID.OPTION: + case TAG_ID.OPTGROUP: break; + default: return false; + } + } + return true; + } + generateImpliedEndTags() { + while (this.currentTagId !== void 0 && IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) this.pop(); + } + generateImpliedEndTagsThoroughly() { + while (this.currentTagId !== void 0 && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) this.pop(); + } + generateImpliedEndTagsWithExclusion(exclusionId) { + while (this.currentTagId !== void 0 && this.currentTagId !== exclusionId && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) this.pop(); + } +}; +//#endregion +//#region ../../node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/parser/formatting-element-list.js +const NOAH_ARK_CAPACITY = 3; +var EntryType; +(function(EntryType) { + EntryType[EntryType["Marker"] = 0] = "Marker"; + EntryType[EntryType["Element"] = 1] = "Element"; +})(EntryType || (EntryType = {})); +const MARKER = { type: EntryType.Marker }; +var FormattingElementList = class { + constructor(treeAdapter) { + this.treeAdapter = treeAdapter; + this.entries = []; + this.bookmark = null; + } + _getNoahArkConditionCandidates(newElement, neAttrs) { + const candidates = []; + const neAttrsLength = neAttrs.length; + const neTagName = this.treeAdapter.getTagName(newElement); + const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement); + for (let i = 0; i < this.entries.length; i++) { + const entry = this.entries[i]; + if (entry.type === EntryType.Marker) break; + const { element } = entry; + if (this.treeAdapter.getTagName(element) === neTagName && this.treeAdapter.getNamespaceURI(element) === neNamespaceURI) { + const elementAttrs = this.treeAdapter.getAttrList(element); + if (elementAttrs.length === neAttrsLength) candidates.push({ + idx: i, + attrs: elementAttrs + }); + } + } + return candidates; + } + _ensureNoahArkCondition(newElement) { + if (this.entries.length < NOAH_ARK_CAPACITY) return; + const neAttrs = this.treeAdapter.getAttrList(newElement); + const candidates = this._getNoahArkConditionCandidates(newElement, neAttrs); + if (candidates.length < NOAH_ARK_CAPACITY) return; + const neAttrsMap = new Map(neAttrs.map((neAttr) => [neAttr.name, neAttr.value])); + let validCandidates = 0; + for (let i = 0; i < candidates.length; i++) { + const candidate = candidates[i]; + if (candidate.attrs.every((cAttr) => neAttrsMap.get(cAttr.name) === cAttr.value)) { + validCandidates += 1; + if (validCandidates >= NOAH_ARK_CAPACITY) this.entries.splice(candidate.idx, 1); + } + } + } + insertMarker() { + this.entries.unshift(MARKER); + } + pushElement(element, token) { + this._ensureNoahArkCondition(element); + this.entries.unshift({ + type: EntryType.Element, + element, + token + }); + } + insertElementAfterBookmark(element, token) { + const bookmarkIdx = this.entries.indexOf(this.bookmark); + this.entries.splice(bookmarkIdx, 0, { + type: EntryType.Element, + element, + token + }); + } + removeEntry(entry) { + const entryIndex = this.entries.indexOf(entry); + if (entryIndex !== -1) this.entries.splice(entryIndex, 1); + } + /** + * Clears the list of formatting elements up to the last marker. + * + * @see https://html.spec.whatwg.org/multipage/parsing.html#clear-the-list-of-active-formatting-elements-up-to-the-last-marker + */ + clearToLastMarker() { + const markerIdx = this.entries.indexOf(MARKER); + if (markerIdx === -1) this.entries.length = 0; + else this.entries.splice(0, markerIdx + 1); + } + getElementEntryInScopeWithTagName(tagName) { + const entry = this.entries.find((entry) => entry.type === EntryType.Marker || this.treeAdapter.getTagName(entry.element) === tagName); + return entry && entry.type === EntryType.Element ? entry : null; + } + getElementEntry(element) { + return this.entries.find((entry) => entry.type === EntryType.Element && entry.element === element); + } +}; +//#endregion +//#region ../../node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/tree-adapters/default.js +const defaultTreeAdapter = { + createDocument() { + return { + nodeName: "#document", + mode: DOCUMENT_MODE.NO_QUIRKS, + childNodes: [] + }; + }, + createDocumentFragment() { + return { + nodeName: "#document-fragment", + childNodes: [] + }; + }, + createElement(tagName, namespaceURI, attrs) { + return { + nodeName: tagName, + tagName, + attrs, + namespaceURI, + childNodes: [], + parentNode: null + }; + }, + createCommentNode(data) { + return { + nodeName: "#comment", + data, + parentNode: null + }; + }, + createTextNode(value) { + return { + nodeName: "#text", + value, + parentNode: null + }; + }, + appendChild(parentNode, newNode) { + parentNode.childNodes.push(newNode); + newNode.parentNode = parentNode; + }, + insertBefore(parentNode, newNode, referenceNode) { + const insertionIdx = parentNode.childNodes.indexOf(referenceNode); + parentNode.childNodes.splice(insertionIdx, 0, newNode); + newNode.parentNode = parentNode; + }, + setTemplateContent(templateElement, contentElement) { + templateElement.content = contentElement; + }, + getTemplateContent(templateElement) { + return templateElement.content; + }, + setDocumentType(document, name, publicId, systemId) { + const doctypeNode = document.childNodes.find((node) => node.nodeName === "#documentType"); + if (doctypeNode) { + doctypeNode.name = name; + doctypeNode.publicId = publicId; + doctypeNode.systemId = systemId; + } else defaultTreeAdapter.appendChild(document, { + nodeName: "#documentType", + name, + publicId, + systemId, + parentNode: null + }); + }, + setDocumentMode(document, mode) { + document.mode = mode; + }, + getDocumentMode(document) { + return document.mode; + }, + detachNode(node) { + if (node.parentNode) { + const idx = node.parentNode.childNodes.indexOf(node); + node.parentNode.childNodes.splice(idx, 1); + node.parentNode = null; + } + }, + insertText(parentNode, text) { + if (parentNode.childNodes.length > 0) { + const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1]; + if (defaultTreeAdapter.isTextNode(prevNode)) { + prevNode.value += text; + return; + } + } + defaultTreeAdapter.appendChild(parentNode, defaultTreeAdapter.createTextNode(text)); + }, + insertTextBefore(parentNode, text, referenceNode) { + const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1]; + if (prevNode && defaultTreeAdapter.isTextNode(prevNode)) prevNode.value += text; + else defaultTreeAdapter.insertBefore(parentNode, defaultTreeAdapter.createTextNode(text), referenceNode); + }, + adoptAttributes(recipient, attrs) { + const recipientAttrsMap = new Set(recipient.attrs.map((attr) => attr.name)); + for (let j = 0; j < attrs.length; j++) if (!recipientAttrsMap.has(attrs[j].name)) recipient.attrs.push(attrs[j]); + }, + getFirstChild(node) { + return node.childNodes[0]; + }, + getChildNodes(node) { + return node.childNodes; + }, + getParentNode(node) { + return node.parentNode; + }, + getAttrList(element) { + return element.attrs; + }, + getTagName(element) { + return element.tagName; + }, + getNamespaceURI(element) { + return element.namespaceURI; + }, + getTextNodeContent(textNode) { + return textNode.value; + }, + getCommentNodeContent(commentNode) { + return commentNode.data; + }, + getDocumentTypeNodeName(doctypeNode) { + return doctypeNode.name; + }, + getDocumentTypeNodePublicId(doctypeNode) { + return doctypeNode.publicId; + }, + getDocumentTypeNodeSystemId(doctypeNode) { + return doctypeNode.systemId; + }, + isTextNode(node) { + return node.nodeName === "#text"; + }, + isCommentNode(node) { + return node.nodeName === "#comment"; + }, + isDocumentTypeNode(node) { + return node.nodeName === "#documentType"; + }, + isElementNode(node) { + return Object.prototype.hasOwnProperty.call(node, "tagName"); + }, + setNodeSourceCodeLocation(node, location) { + node.sourceCodeLocation = location; + }, + getNodeSourceCodeLocation(node) { + return node.sourceCodeLocation; + }, + updateNodeSourceCodeLocation(node, endLocation) { + node.sourceCodeLocation = { + ...node.sourceCodeLocation, + ...endLocation + }; + } +}; +//#endregion +//#region ../../node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/common/doctype.js +const VALID_DOCTYPE_NAME = "html"; +const VALID_SYSTEM_ID = "about:legacy-compat"; +const QUIRKS_MODE_SYSTEM_ID = "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd"; +const QUIRKS_MODE_PUBLIC_ID_PREFIXES = [ + "+//silmaril//dtd html pro v0r11 19970101//", + "-//as//dtd html 3.0 aswedit + extensions//", + "-//advasoft ltd//dtd html 3.0 aswedit + extensions//", + "-//ietf//dtd html 2.0 level 1//", + "-//ietf//dtd html 2.0 level 2//", + "-//ietf//dtd html 2.0 strict level 1//", + "-//ietf//dtd html 2.0 strict level 2//", + "-//ietf//dtd html 2.0 strict//", + "-//ietf//dtd html 2.0//", + "-//ietf//dtd html 2.1e//", + "-//ietf//dtd html 3.0//", + "-//ietf//dtd html 3.2 final//", + "-//ietf//dtd html 3.2//", + "-//ietf//dtd html 3//", + "-//ietf//dtd html level 0//", + "-//ietf//dtd html level 1//", + "-//ietf//dtd html level 2//", + "-//ietf//dtd html level 3//", + "-//ietf//dtd html strict level 0//", + "-//ietf//dtd html strict level 1//", + "-//ietf//dtd html strict level 2//", + "-//ietf//dtd html strict level 3//", + "-//ietf//dtd html strict//", + "-//ietf//dtd html//", + "-//metrius//dtd metrius presentational//", + "-//microsoft//dtd internet explorer 2.0 html strict//", + "-//microsoft//dtd internet explorer 2.0 html//", + "-//microsoft//dtd internet explorer 2.0 tables//", + "-//microsoft//dtd internet explorer 3.0 html strict//", + "-//microsoft//dtd internet explorer 3.0 html//", + "-//microsoft//dtd internet explorer 3.0 tables//", + "-//netscape comm. corp.//dtd html//", + "-//netscape comm. corp.//dtd strict html//", + "-//o'reilly and associates//dtd html 2.0//", + "-//o'reilly and associates//dtd html extended 1.0//", + "-//o'reilly and associates//dtd html extended relaxed 1.0//", + "-//sq//dtd html 2.0 hotmetal + extensions//", + "-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//", + "-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//", + "-//spyglass//dtd html 2.0 extended//", + "-//sun microsystems corp.//dtd hotjava html//", + "-//sun microsystems corp.//dtd hotjava strict html//", + "-//w3c//dtd html 3 1995-03-24//", + "-//w3c//dtd html 3.2 draft//", + "-//w3c//dtd html 3.2 final//", + "-//w3c//dtd html 3.2//", + "-//w3c//dtd html 3.2s draft//", + "-//w3c//dtd html 4.0 frameset//", + "-//w3c//dtd html 4.0 transitional//", + "-//w3c//dtd html experimental 19960712//", + "-//w3c//dtd html experimental 970421//", + "-//w3c//dtd w3 html//", + "-//w3o//dtd w3 html 3.0//", + "-//webtechs//dtd mozilla html 2.0//", + "-//webtechs//dtd mozilla html//" +]; +const QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = [ + ...QUIRKS_MODE_PUBLIC_ID_PREFIXES, + "-//w3c//dtd html 4.01 frameset//", + "-//w3c//dtd html 4.01 transitional//" +]; +const QUIRKS_MODE_PUBLIC_IDS = new Set([ + "-//w3o//dtd w3 html strict 3.0//en//", + "-/w3c/dtd html 4.0 transitional/en", + "html" +]); +const LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ["-//w3c//dtd xhtml 1.0 frameset//", "-//w3c//dtd xhtml 1.0 transitional//"]; +const LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = [ + ...LIMITED_QUIRKS_PUBLIC_ID_PREFIXES, + "-//w3c//dtd html 4.01 frameset//", + "-//w3c//dtd html 4.01 transitional//" +]; +function hasPrefix(publicId, prefixes) { + return prefixes.some((prefix) => publicId.startsWith(prefix)); +} +function isConforming(token) { + return token.name === VALID_DOCTYPE_NAME && token.publicId === null && (token.systemId === null || token.systemId === VALID_SYSTEM_ID); +} +function getDocumentMode(token) { + if (token.name !== VALID_DOCTYPE_NAME) return DOCUMENT_MODE.QUIRKS; + const { systemId } = token; + if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) return DOCUMENT_MODE.QUIRKS; + let { publicId } = token; + if (publicId !== null) { + publicId = publicId.toLowerCase(); + if (QUIRKS_MODE_PUBLIC_IDS.has(publicId)) return DOCUMENT_MODE.QUIRKS; + let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES; + if (hasPrefix(publicId, prefixes)) return DOCUMENT_MODE.QUIRKS; + prefixes = systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES; + if (hasPrefix(publicId, prefixes)) return DOCUMENT_MODE.LIMITED_QUIRKS; + } + return DOCUMENT_MODE.NO_QUIRKS; +} +//#endregion +//#region ../../node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/common/foreign-content.js +const MIME_TYPES = { + TEXT_HTML: "text/html", + APPLICATION_XML: "application/xhtml+xml" +}; +const DEFINITION_URL_ATTR = "definitionurl"; +const ADJUSTED_DEFINITION_URL_ATTR = "definitionURL"; +const SVG_ATTRS_ADJUSTMENT_MAP = new Map([ + "attributeName", + "attributeType", + "baseFrequency", + "baseProfile", + "calcMode", + "clipPathUnits", + "diffuseConstant", + "edgeMode", + "filterUnits", + "glyphRef", + "gradientTransform", + "gradientUnits", + "kernelMatrix", + "kernelUnitLength", + "keyPoints", + "keySplines", + "keyTimes", + "lengthAdjust", + "limitingConeAngle", + "markerHeight", + "markerUnits", + "markerWidth", + "maskContentUnits", + "maskUnits", + "numOctaves", + "pathLength", + "patternContentUnits", + "patternTransform", + "patternUnits", + "pointsAtX", + "pointsAtY", + "pointsAtZ", + "preserveAlpha", + "preserveAspectRatio", + "primitiveUnits", + "refX", + "refY", + "repeatCount", + "repeatDur", + "requiredExtensions", + "requiredFeatures", + "specularConstant", + "specularExponent", + "spreadMethod", + "startOffset", + "stdDeviation", + "stitchTiles", + "surfaceScale", + "systemLanguage", + "tableValues", + "targetX", + "targetY", + "textLength", + "viewBox", + "viewTarget", + "xChannelSelector", + "yChannelSelector", + "zoomAndPan" +].map((attr) => [attr.toLowerCase(), attr])); +const XML_ATTRS_ADJUSTMENT_MAP = new Map([ + ["xlink:actuate", { + prefix: "xlink", + name: "actuate", + namespace: NS.XLINK + }], + ["xlink:arcrole", { + prefix: "xlink", + name: "arcrole", + namespace: NS.XLINK + }], + ["xlink:href", { + prefix: "xlink", + name: "href", + namespace: NS.XLINK + }], + ["xlink:role", { + prefix: "xlink", + name: "role", + namespace: NS.XLINK + }], + ["xlink:show", { + prefix: "xlink", + name: "show", + namespace: NS.XLINK + }], + ["xlink:title", { + prefix: "xlink", + name: "title", + namespace: NS.XLINK + }], + ["xlink:type", { + prefix: "xlink", + name: "type", + namespace: NS.XLINK + }], + ["xml:lang", { + prefix: "xml", + name: "lang", + namespace: NS.XML + }], + ["xml:space", { + prefix: "xml", + name: "space", + namespace: NS.XML + }], + ["xmlns", { + prefix: "", + name: "xmlns", + namespace: NS.XMLNS + }], + ["xmlns:xlink", { + prefix: "xmlns", + name: "xlink", + namespace: NS.XMLNS + }] +]); +const SVG_TAG_NAMES_ADJUSTMENT_MAP = new Map([ + "altGlyph", + "altGlyphDef", + "altGlyphItem", + "animateColor", + "animateMotion", + "animateTransform", + "clipPath", + "feBlend", + "feColorMatrix", + "feComponentTransfer", + "feComposite", + "feConvolveMatrix", + "feDiffuseLighting", + "feDisplacementMap", + "feDistantLight", + "feFlood", + "feFuncA", + "feFuncB", + "feFuncG", + "feFuncR", + "feGaussianBlur", + "feImage", + "feMerge", + "feMergeNode", + "feMorphology", + "feOffset", + "fePointLight", + "feSpecularLighting", + "feSpotLight", + "feTile", + "feTurbulence", + "foreignObject", + "glyphRef", + "linearGradient", + "radialGradient", + "textPath" +].map((tn) => [tn.toLowerCase(), tn])); +const EXITS_FOREIGN_CONTENT = new Set([ + TAG_ID.B, + TAG_ID.BIG, + TAG_ID.BLOCKQUOTE, + TAG_ID.BODY, + TAG_ID.BR, + TAG_ID.CENTER, + TAG_ID.CODE, + TAG_ID.DD, + TAG_ID.DIV, + TAG_ID.DL, + TAG_ID.DT, + TAG_ID.EM, + TAG_ID.EMBED, + TAG_ID.H1, + TAG_ID.H2, + TAG_ID.H3, + TAG_ID.H4, + TAG_ID.H5, + TAG_ID.H6, + TAG_ID.HEAD, + TAG_ID.HR, + TAG_ID.I, + TAG_ID.IMG, + TAG_ID.LI, + TAG_ID.LISTING, + TAG_ID.MENU, + TAG_ID.META, + TAG_ID.NOBR, + TAG_ID.OL, + TAG_ID.P, + TAG_ID.PRE, + TAG_ID.RUBY, + TAG_ID.S, + TAG_ID.SMALL, + TAG_ID.SPAN, + TAG_ID.STRONG, + TAG_ID.STRIKE, + TAG_ID.SUB, + TAG_ID.SUP, + TAG_ID.TABLE, + TAG_ID.TT, + TAG_ID.U, + TAG_ID.UL, + TAG_ID.VAR +]); +function causesExit(startTagToken) { + const tn = startTagToken.tagID; + return tn === TAG_ID.FONT && startTagToken.attrs.some(({ name }) => name === ATTRS.COLOR || name === ATTRS.SIZE || name === ATTRS.FACE) || EXITS_FOREIGN_CONTENT.has(tn); +} +function adjustTokenMathMLAttrs(token) { + for (let i = 0; i < token.attrs.length; i++) if (token.attrs[i].name === DEFINITION_URL_ATTR) { + token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR; + break; + } +} +function adjustTokenSVGAttrs(token) { + for (let i = 0; i < token.attrs.length; i++) { + const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name); + if (adjustedAttrName != null) token.attrs[i].name = adjustedAttrName; + } +} +function adjustTokenXMLAttrs(token) { + for (let i = 0; i < token.attrs.length; i++) { + const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name); + if (adjustedAttrEntry) { + token.attrs[i].prefix = adjustedAttrEntry.prefix; + token.attrs[i].name = adjustedAttrEntry.name; + token.attrs[i].namespace = adjustedAttrEntry.namespace; + } + } +} +function adjustTokenSVGTagName(token) { + const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP.get(token.tagName); + if (adjustedTagName != null) { + token.tagName = adjustedTagName; + token.tagID = getTagID(token.tagName); + } +} +function isMathMLTextIntegrationPoint(tn, ns) { + return ns === NS.MATHML && (tn === TAG_ID.MI || tn === TAG_ID.MO || tn === TAG_ID.MN || tn === TAG_ID.MS || tn === TAG_ID.MTEXT); +} +function isHtmlIntegrationPoint(tn, ns, attrs) { + if (ns === NS.MATHML && tn === TAG_ID.ANNOTATION_XML) { + for (let i = 0; i < attrs.length; i++) if (attrs[i].name === ATTRS.ENCODING) { + const value = attrs[i].value.toLowerCase(); + return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML; + } + } + return ns === NS.SVG && (tn === TAG_ID.FOREIGN_OBJECT || tn === TAG_ID.DESC || tn === TAG_ID.TITLE); +} +function isIntegrationPoint(tn, ns, attrs, foreignNS) { + return (!foreignNS || foreignNS === NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs) || (!foreignNS || foreignNS === NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns); +} +//#endregion +//#region ../../node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/parser/index.js +const HIDDEN_INPUT_TYPE = "hidden"; +const AA_OUTER_LOOP_ITER = 8; +const AA_INNER_LOOP_ITER = 3; +var InsertionMode; +(function(InsertionMode) { + InsertionMode[InsertionMode["INITIAL"] = 0] = "INITIAL"; + InsertionMode[InsertionMode["BEFORE_HTML"] = 1] = "BEFORE_HTML"; + InsertionMode[InsertionMode["BEFORE_HEAD"] = 2] = "BEFORE_HEAD"; + InsertionMode[InsertionMode["IN_HEAD"] = 3] = "IN_HEAD"; + InsertionMode[InsertionMode["IN_HEAD_NO_SCRIPT"] = 4] = "IN_HEAD_NO_SCRIPT"; + InsertionMode[InsertionMode["AFTER_HEAD"] = 5] = "AFTER_HEAD"; + InsertionMode[InsertionMode["IN_BODY"] = 6] = "IN_BODY"; + InsertionMode[InsertionMode["TEXT"] = 7] = "TEXT"; + InsertionMode[InsertionMode["IN_TABLE"] = 8] = "IN_TABLE"; + InsertionMode[InsertionMode["IN_TABLE_TEXT"] = 9] = "IN_TABLE_TEXT"; + InsertionMode[InsertionMode["IN_CAPTION"] = 10] = "IN_CAPTION"; + InsertionMode[InsertionMode["IN_COLUMN_GROUP"] = 11] = "IN_COLUMN_GROUP"; + InsertionMode[InsertionMode["IN_TABLE_BODY"] = 12] = "IN_TABLE_BODY"; + InsertionMode[InsertionMode["IN_ROW"] = 13] = "IN_ROW"; + InsertionMode[InsertionMode["IN_CELL"] = 14] = "IN_CELL"; + InsertionMode[InsertionMode["IN_SELECT"] = 15] = "IN_SELECT"; + InsertionMode[InsertionMode["IN_SELECT_IN_TABLE"] = 16] = "IN_SELECT_IN_TABLE"; + InsertionMode[InsertionMode["IN_TEMPLATE"] = 17] = "IN_TEMPLATE"; + InsertionMode[InsertionMode["AFTER_BODY"] = 18] = "AFTER_BODY"; + InsertionMode[InsertionMode["IN_FRAMESET"] = 19] = "IN_FRAMESET"; + InsertionMode[InsertionMode["AFTER_FRAMESET"] = 20] = "AFTER_FRAMESET"; + InsertionMode[InsertionMode["AFTER_AFTER_BODY"] = 21] = "AFTER_AFTER_BODY"; + InsertionMode[InsertionMode["AFTER_AFTER_FRAMESET"] = 22] = "AFTER_AFTER_FRAMESET"; +})(InsertionMode || (InsertionMode = {})); +const BASE_LOC = { + startLine: -1, + startCol: -1, + startOffset: -1, + endLine: -1, + endCol: -1, + endOffset: -1 +}; +const TABLE_STRUCTURE_TAGS = new Set([ + TAG_ID.TABLE, + TAG_ID.TBODY, + TAG_ID.TFOOT, + TAG_ID.THEAD, + TAG_ID.TR +]); +const defaultParserOptions = { + scriptingEnabled: true, + sourceCodeLocationInfo: false, + treeAdapter: defaultTreeAdapter, + onParseError: null +}; +var Parser = class { + constructor(options, document, fragmentContext = null, scriptHandler = null) { + this.fragmentContext = fragmentContext; + this.scriptHandler = scriptHandler; + this.currentToken = null; + this.stopped = false; + /** @internal */ + this.insertionMode = InsertionMode.INITIAL; + /** @internal */ + this.originalInsertionMode = InsertionMode.INITIAL; + /** @internal */ + this.headElement = null; + /** @internal */ + this.formElement = null; + /** Indicates that the current node is not an element in the HTML namespace */ + this.currentNotInHTML = false; + /** + * The template insertion mode stack is maintained from the left. + * Ie. the topmost element will always have index 0. + * + * @internal + */ + this.tmplInsertionModeStack = []; + /** @internal */ + this.pendingCharacterTokens = []; + /** @internal */ + this.hasNonWhitespacePendingCharacterToken = false; + /** @internal */ + this.framesetOk = true; + /** @internal */ + this.skipNextNewLine = false; + /** @internal */ + this.fosterParentingEnabled = false; + this.options = { + ...defaultParserOptions, + ...options + }; + this.treeAdapter = this.options.treeAdapter; + this.onParseError = this.options.onParseError; + if (this.onParseError) this.options.sourceCodeLocationInfo = true; + this.document = document !== null && document !== void 0 ? document : this.treeAdapter.createDocument(); + this.tokenizer = new Tokenizer(this.options, this); + this.activeFormattingElements = new FormattingElementList(this.treeAdapter); + this.fragmentContextID = fragmentContext ? getTagID(this.treeAdapter.getTagName(fragmentContext)) : TAG_ID.UNKNOWN; + this._setContextModes(fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : this.document, this.fragmentContextID); + this.openElements = new OpenElementStack(this.document, this.treeAdapter, this); + } + static parse(html, options) { + const parser = new this(options); + parser.tokenizer.write(html, true); + return parser.document; + } + static getFragmentParser(fragmentContext, options) { + const opts = { + ...defaultParserOptions, + ...options + }; + fragmentContext !== null && fragmentContext !== void 0 || (fragmentContext = opts.treeAdapter.createElement(TAG_NAMES.TEMPLATE, NS.HTML, [])); + const documentMock = opts.treeAdapter.createElement("documentmock", NS.HTML, []); + const parser = new this(opts, documentMock, fragmentContext); + if (parser.fragmentContextID === TAG_ID.TEMPLATE) parser.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE); + parser._initTokenizerForFragmentParsing(); + parser._insertFakeRootElement(); + parser._resetInsertionMode(); + parser._findFormInFragmentContext(); + return parser; + } + getFragment() { + const rootElement = this.treeAdapter.getFirstChild(this.document); + const fragment = this.treeAdapter.createDocumentFragment(); + this._adoptNodes(rootElement, fragment); + return fragment; + } + /** @internal */ + _err(token, code, beforeToken) { + var _a; + if (!this.onParseError) return; + const loc = (_a = token.location) !== null && _a !== void 0 ? _a : BASE_LOC; + const err = { + code, + startLine: loc.startLine, + startCol: loc.startCol, + startOffset: loc.startOffset, + endLine: beforeToken ? loc.startLine : loc.endLine, + endCol: beforeToken ? loc.startCol : loc.endCol, + endOffset: beforeToken ? loc.startOffset : loc.endOffset + }; + this.onParseError(err); + } + /** @internal */ + onItemPush(node, tid, isTop) { + var _a, _b; + (_b = (_a = this.treeAdapter).onItemPush) === null || _b === void 0 || _b.call(_a, node); + if (isTop && this.openElements.stackTop > 0) this._setContextModes(node, tid); + } + /** @internal */ + onItemPop(node, isTop) { + var _a, _b; + if (this.options.sourceCodeLocationInfo) this._setEndLocation(node, this.currentToken); + (_b = (_a = this.treeAdapter).onItemPop) === null || _b === void 0 || _b.call(_a, node, this.openElements.current); + if (isTop) { + let current; + let currentTagId; + if (this.openElements.stackTop === 0 && this.fragmentContext) { + current = this.fragmentContext; + currentTagId = this.fragmentContextID; + } else ({current, currentTagId} = this.openElements); + this._setContextModes(current, currentTagId); + } + } + _setContextModes(current, tid) { + const isHTML = current === this.document || current && this.treeAdapter.getNamespaceURI(current) === NS.HTML; + this.currentNotInHTML = !isHTML; + this.tokenizer.inForeignNode = !isHTML && current !== void 0 && tid !== void 0 && !this._isIntegrationPoint(tid, current); + } + /** @protected */ + _switchToTextParsing(currentToken, nextTokenizerState) { + this._insertElement(currentToken, NS.HTML); + this.tokenizer.state = nextTokenizerState; + this.originalInsertionMode = this.insertionMode; + this.insertionMode = InsertionMode.TEXT; + } + switchToPlaintextParsing() { + this.insertionMode = InsertionMode.TEXT; + this.originalInsertionMode = InsertionMode.IN_BODY; + this.tokenizer.state = TokenizerMode.PLAINTEXT; + } + /** @protected */ + _getAdjustedCurrentElement() { + return this.openElements.stackTop === 0 && this.fragmentContext ? this.fragmentContext : this.openElements.current; + } + /** @protected */ + _findFormInFragmentContext() { + let node = this.fragmentContext; + while (node) { + if (this.treeAdapter.getTagName(node) === TAG_NAMES.FORM) { + this.formElement = node; + break; + } + node = this.treeAdapter.getParentNode(node); + } + } + _initTokenizerForFragmentParsing() { + if (!this.fragmentContext || this.treeAdapter.getNamespaceURI(this.fragmentContext) !== NS.HTML) return; + switch (this.fragmentContextID) { + case TAG_ID.TITLE: + case TAG_ID.TEXTAREA: + this.tokenizer.state = TokenizerMode.RCDATA; + break; + case TAG_ID.STYLE: + case TAG_ID.XMP: + case TAG_ID.IFRAME: + case TAG_ID.NOEMBED: + case TAG_ID.NOFRAMES: + case TAG_ID.NOSCRIPT: + this.tokenizer.state = TokenizerMode.RAWTEXT; + break; + case TAG_ID.SCRIPT: + this.tokenizer.state = TokenizerMode.SCRIPT_DATA; + break; + case TAG_ID.PLAINTEXT: + this.tokenizer.state = TokenizerMode.PLAINTEXT; + break; + default: + } + } + /** @protected */ + _setDocumentType(token) { + const name = token.name || ""; + const publicId = token.publicId || ""; + const systemId = token.systemId || ""; + this.treeAdapter.setDocumentType(this.document, name, publicId, systemId); + if (token.location) { + const docTypeNode = this.treeAdapter.getChildNodes(this.document).find((node) => this.treeAdapter.isDocumentTypeNode(node)); + if (docTypeNode) this.treeAdapter.setNodeSourceCodeLocation(docTypeNode, token.location); + } + } + /** @protected */ + _attachElementToTree(element, location) { + if (this.options.sourceCodeLocationInfo) { + const loc = location && { + ...location, + startTag: location + }; + this.treeAdapter.setNodeSourceCodeLocation(element, loc); + } + if (this._shouldFosterParentOnInsertion()) this._fosterParentElement(element); + else { + const parent = this.openElements.currentTmplContentOrNode; + this.treeAdapter.appendChild(parent !== null && parent !== void 0 ? parent : this.document, element); + } + } + /** + * For self-closing tags. Add an element to the tree, but skip adding it + * to the stack. + */ + /** @protected */ + _appendElement(token, namespaceURI) { + const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs); + this._attachElementToTree(element, token.location); + } + /** @protected */ + _insertElement(token, namespaceURI) { + const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs); + this._attachElementToTree(element, token.location); + this.openElements.push(element, token.tagID); + } + /** @protected */ + _insertFakeElement(tagName, tagID) { + const element = this.treeAdapter.createElement(tagName, NS.HTML, []); + this._attachElementToTree(element, null); + this.openElements.push(element, tagID); + } + /** @protected */ + _insertTemplate(token) { + const tmpl = this.treeAdapter.createElement(token.tagName, NS.HTML, token.attrs); + const content = this.treeAdapter.createDocumentFragment(); + this.treeAdapter.setTemplateContent(tmpl, content); + this._attachElementToTree(tmpl, token.location); + this.openElements.push(tmpl, token.tagID); + if (this.options.sourceCodeLocationInfo) this.treeAdapter.setNodeSourceCodeLocation(content, null); + } + /** @protected */ + _insertFakeRootElement() { + const element = this.treeAdapter.createElement(TAG_NAMES.HTML, NS.HTML, []); + if (this.options.sourceCodeLocationInfo) this.treeAdapter.setNodeSourceCodeLocation(element, null); + this.treeAdapter.appendChild(this.openElements.current, element); + this.openElements.push(element, TAG_ID.HTML); + } + /** @protected */ + _appendCommentNode(token, parent) { + const commentNode = this.treeAdapter.createCommentNode(token.data); + this.treeAdapter.appendChild(parent, commentNode); + if (this.options.sourceCodeLocationInfo) this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location); + } + /** @protected */ + _insertCharacters(token) { + let parent; + let beforeElement; + if (this._shouldFosterParentOnInsertion()) { + ({parent, beforeElement} = this._findFosterParentingLocation()); + if (beforeElement) this.treeAdapter.insertTextBefore(parent, token.chars, beforeElement); + else this.treeAdapter.insertText(parent, token.chars); + } else { + parent = this.openElements.currentTmplContentOrNode; + this.treeAdapter.insertText(parent, token.chars); + } + if (!token.location) return; + const siblings = this.treeAdapter.getChildNodes(parent); + const textNode = siblings[(beforeElement ? siblings.lastIndexOf(beforeElement) : siblings.length) - 1]; + if (this.treeAdapter.getNodeSourceCodeLocation(textNode)) { + const { endLine, endCol, endOffset } = token.location; + this.treeAdapter.updateNodeSourceCodeLocation(textNode, { + endLine, + endCol, + endOffset + }); + } else if (this.options.sourceCodeLocationInfo) this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location); + } + /** @protected */ + _adoptNodes(donor, recipient) { + for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) { + this.treeAdapter.detachNode(child); + this.treeAdapter.appendChild(recipient, child); + } + } + /** @protected */ + _setEndLocation(element, closingToken) { + if (this.treeAdapter.getNodeSourceCodeLocation(element) && closingToken.location) { + const ctLoc = closingToken.location; + const tn = this.treeAdapter.getTagName(element); + const endLoc = closingToken.type === TokenType.END_TAG && tn === closingToken.tagName ? { + endTag: { ...ctLoc }, + endLine: ctLoc.endLine, + endCol: ctLoc.endCol, + endOffset: ctLoc.endOffset + } : { + endLine: ctLoc.startLine, + endCol: ctLoc.startCol, + endOffset: ctLoc.startOffset + }; + this.treeAdapter.updateNodeSourceCodeLocation(element, endLoc); + } + } + shouldProcessStartTagTokenInForeignContent(token) { + if (!this.currentNotInHTML) return false; + let current; + let currentTagId; + if (this.openElements.stackTop === 0 && this.fragmentContext) { + current = this.fragmentContext; + currentTagId = this.fragmentContextID; + } else ({current, currentTagId} = this.openElements); + if (token.tagID === TAG_ID.SVG && this.treeAdapter.getTagName(current) === TAG_NAMES.ANNOTATION_XML && this.treeAdapter.getNamespaceURI(current) === NS.MATHML) return false; + return this.tokenizer.inForeignNode || (token.tagID === TAG_ID.MGLYPH || token.tagID === TAG_ID.MALIGNMARK) && currentTagId !== void 0 && !this._isIntegrationPoint(currentTagId, current, NS.HTML); + } + /** @protected */ + _processToken(token) { + switch (token.type) { + case TokenType.CHARACTER: + this.onCharacter(token); + break; + case TokenType.NULL_CHARACTER: + this.onNullCharacter(token); + break; + case TokenType.COMMENT: + this.onComment(token); + break; + case TokenType.DOCTYPE: + this.onDoctype(token); + break; + case TokenType.START_TAG: + this._processStartTag(token); + break; + case TokenType.END_TAG: + this.onEndTag(token); + break; + case TokenType.EOF: + this.onEof(token); + break; + case TokenType.WHITESPACE_CHARACTER: + this.onWhitespaceCharacter(token); + break; + } + } + /** @protected */ + _isIntegrationPoint(tid, element, foreignNS) { + return isIntegrationPoint(tid, this.treeAdapter.getNamespaceURI(element), this.treeAdapter.getAttrList(element), foreignNS); + } + /** @protected */ + _reconstructActiveFormattingElements() { + const listLength = this.activeFormattingElements.entries.length; + if (listLength) { + const endIndex = this.activeFormattingElements.entries.findIndex((entry) => entry.type === EntryType.Marker || this.openElements.contains(entry.element)); + const unopenIdx = endIndex === -1 ? listLength - 1 : endIndex - 1; + for (let i = unopenIdx; i >= 0; i--) { + const entry = this.activeFormattingElements.entries[i]; + this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element)); + entry.element = this.openElements.current; + } + } + } + /** @protected */ + _closeTableCell() { + this.openElements.generateImpliedEndTags(); + this.openElements.popUntilTableCellPopped(); + this.activeFormattingElements.clearToLastMarker(); + this.insertionMode = InsertionMode.IN_ROW; + } + /** @protected */ + _closePElement() { + this.openElements.generateImpliedEndTagsWithExclusion(TAG_ID.P); + this.openElements.popUntilTagNamePopped(TAG_ID.P); + } + /** @protected */ + _resetInsertionMode() { + for (let i = this.openElements.stackTop; i >= 0; i--) switch (i === 0 && this.fragmentContext ? this.fragmentContextID : this.openElements.tagIDs[i]) { + case TAG_ID.TR: + this.insertionMode = InsertionMode.IN_ROW; + return; + case TAG_ID.TBODY: + case TAG_ID.THEAD: + case TAG_ID.TFOOT: + this.insertionMode = InsertionMode.IN_TABLE_BODY; + return; + case TAG_ID.CAPTION: + this.insertionMode = InsertionMode.IN_CAPTION; + return; + case TAG_ID.COLGROUP: + this.insertionMode = InsertionMode.IN_COLUMN_GROUP; + return; + case TAG_ID.TABLE: + this.insertionMode = InsertionMode.IN_TABLE; + return; + case TAG_ID.BODY: + this.insertionMode = InsertionMode.IN_BODY; + return; + case TAG_ID.FRAMESET: + this.insertionMode = InsertionMode.IN_FRAMESET; + return; + case TAG_ID.SELECT: + this._resetInsertionModeForSelect(i); + return; + case TAG_ID.TEMPLATE: + this.insertionMode = this.tmplInsertionModeStack[0]; + return; + case TAG_ID.HTML: + this.insertionMode = this.headElement ? InsertionMode.AFTER_HEAD : InsertionMode.BEFORE_HEAD; + return; + case TAG_ID.TD: + case TAG_ID.TH: + if (i > 0) { + this.insertionMode = InsertionMode.IN_CELL; + return; + } + break; + case TAG_ID.HEAD: + if (i > 0) { + this.insertionMode = InsertionMode.IN_HEAD; + return; + } + break; + } + this.insertionMode = InsertionMode.IN_BODY; + } + /** @protected */ + _resetInsertionModeForSelect(selectIdx) { + if (selectIdx > 0) for (let i = selectIdx - 1; i > 0; i--) { + const tn = this.openElements.tagIDs[i]; + if (tn === TAG_ID.TEMPLATE) break; + else if (tn === TAG_ID.TABLE) { + this.insertionMode = InsertionMode.IN_SELECT_IN_TABLE; + return; + } + } + this.insertionMode = InsertionMode.IN_SELECT; + } + /** @protected */ + _isElementCausesFosterParenting(tn) { + return TABLE_STRUCTURE_TAGS.has(tn); + } + /** @protected */ + _shouldFosterParentOnInsertion() { + return this.fosterParentingEnabled && this.openElements.currentTagId !== void 0 && this._isElementCausesFosterParenting(this.openElements.currentTagId); + } + /** @protected */ + _findFosterParentingLocation() { + for (let i = this.openElements.stackTop; i >= 0; i--) { + const openElement = this.openElements.items[i]; + switch (this.openElements.tagIDs[i]) { + case TAG_ID.TEMPLATE: + if (this.treeAdapter.getNamespaceURI(openElement) === NS.HTML) return { + parent: this.treeAdapter.getTemplateContent(openElement), + beforeElement: null + }; + break; + case TAG_ID.TABLE: { + const parent = this.treeAdapter.getParentNode(openElement); + if (parent) return { + parent, + beforeElement: openElement + }; + return { + parent: this.openElements.items[i - 1], + beforeElement: null + }; + } + default: + } + } + return { + parent: this.openElements.items[0], + beforeElement: null + }; + } + /** @protected */ + _fosterParentElement(element) { + const location = this._findFosterParentingLocation(); + if (location.beforeElement) this.treeAdapter.insertBefore(location.parent, element, location.beforeElement); + else this.treeAdapter.appendChild(location.parent, element); + } + /** @protected */ + _isSpecialElement(element, id) { + return SPECIAL_ELEMENTS[this.treeAdapter.getNamespaceURI(element)].has(id); + } + /** @internal */ + onCharacter(token) { + this.skipNextNewLine = false; + if (this.tokenizer.inForeignNode) { + characterInForeignContent(this, token); + return; + } + switch (this.insertionMode) { + case InsertionMode.INITIAL: + tokenInInitialMode(this, token); + break; + case InsertionMode.BEFORE_HTML: + tokenBeforeHtml(this, token); + break; + case InsertionMode.BEFORE_HEAD: + tokenBeforeHead(this, token); + break; + case InsertionMode.IN_HEAD: + tokenInHead(this, token); + break; + case InsertionMode.IN_HEAD_NO_SCRIPT: + tokenInHeadNoScript(this, token); + break; + case InsertionMode.AFTER_HEAD: + tokenAfterHead(this, token); + break; + case InsertionMode.IN_BODY: + case InsertionMode.IN_CAPTION: + case InsertionMode.IN_CELL: + case InsertionMode.IN_TEMPLATE: + characterInBody(this, token); + break; + case InsertionMode.TEXT: + case InsertionMode.IN_SELECT: + case InsertionMode.IN_SELECT_IN_TABLE: + this._insertCharacters(token); + break; + case InsertionMode.IN_TABLE: + case InsertionMode.IN_TABLE_BODY: + case InsertionMode.IN_ROW: + characterInTable(this, token); + break; + case InsertionMode.IN_TABLE_TEXT: + characterInTableText(this, token); + break; + case InsertionMode.IN_COLUMN_GROUP: + tokenInColumnGroup(this, token); + break; + case InsertionMode.AFTER_BODY: + tokenAfterBody(this, token); + break; + case InsertionMode.AFTER_AFTER_BODY: + tokenAfterAfterBody(this, token); + break; + default: + } + } + /** @internal */ + onNullCharacter(token) { + this.skipNextNewLine = false; + if (this.tokenizer.inForeignNode) { + nullCharacterInForeignContent(this, token); + return; + } + switch (this.insertionMode) { + case InsertionMode.INITIAL: + tokenInInitialMode(this, token); + break; + case InsertionMode.BEFORE_HTML: + tokenBeforeHtml(this, token); + break; + case InsertionMode.BEFORE_HEAD: + tokenBeforeHead(this, token); + break; + case InsertionMode.IN_HEAD: + tokenInHead(this, token); + break; + case InsertionMode.IN_HEAD_NO_SCRIPT: + tokenInHeadNoScript(this, token); + break; + case InsertionMode.AFTER_HEAD: + tokenAfterHead(this, token); + break; + case InsertionMode.TEXT: + this._insertCharacters(token); + break; + case InsertionMode.IN_TABLE: + case InsertionMode.IN_TABLE_BODY: + case InsertionMode.IN_ROW: + characterInTable(this, token); + break; + case InsertionMode.IN_COLUMN_GROUP: + tokenInColumnGroup(this, token); + break; + case InsertionMode.AFTER_BODY: + tokenAfterBody(this, token); + break; + case InsertionMode.AFTER_AFTER_BODY: + tokenAfterAfterBody(this, token); + break; + default: + } + } + /** @internal */ + onComment(token) { + this.skipNextNewLine = false; + if (this.currentNotInHTML) { + appendComment(this, token); + return; + } + switch (this.insertionMode) { + case InsertionMode.INITIAL: + case InsertionMode.BEFORE_HTML: + case InsertionMode.BEFORE_HEAD: + case InsertionMode.IN_HEAD: + case InsertionMode.IN_HEAD_NO_SCRIPT: + case InsertionMode.AFTER_HEAD: + case InsertionMode.IN_BODY: + case InsertionMode.IN_TABLE: + case InsertionMode.IN_CAPTION: + case InsertionMode.IN_COLUMN_GROUP: + case InsertionMode.IN_TABLE_BODY: + case InsertionMode.IN_ROW: + case InsertionMode.IN_CELL: + case InsertionMode.IN_SELECT: + case InsertionMode.IN_SELECT_IN_TABLE: + case InsertionMode.IN_TEMPLATE: + case InsertionMode.IN_FRAMESET: + case InsertionMode.AFTER_FRAMESET: + appendComment(this, token); + break; + case InsertionMode.IN_TABLE_TEXT: + tokenInTableText(this, token); + break; + case InsertionMode.AFTER_BODY: + appendCommentToRootHtmlElement(this, token); + break; + case InsertionMode.AFTER_AFTER_BODY: + case InsertionMode.AFTER_AFTER_FRAMESET: + appendCommentToDocument(this, token); + break; + default: + } + } + /** @internal */ + onDoctype(token) { + this.skipNextNewLine = false; + switch (this.insertionMode) { + case InsertionMode.INITIAL: + doctypeInInitialMode(this, token); + break; + case InsertionMode.BEFORE_HEAD: + case InsertionMode.IN_HEAD: + case InsertionMode.IN_HEAD_NO_SCRIPT: + case InsertionMode.AFTER_HEAD: + this._err(token, ERR.misplacedDoctype); + break; + case InsertionMode.IN_TABLE_TEXT: + tokenInTableText(this, token); + break; + default: + } + } + /** @internal */ + onStartTag(token) { + this.skipNextNewLine = false; + this.currentToken = token; + this._processStartTag(token); + if (token.selfClosing && !token.ackSelfClosing) this._err(token, ERR.nonVoidHtmlElementStartTagWithTrailingSolidus); + } + /** + * Processes a given start tag. + * + * `onStartTag` checks if a self-closing tag was recognized. When a token + * is moved inbetween multiple insertion modes, this check for self-closing + * could lead to false positives. To avoid this, `_processStartTag` is used + * for nested calls. + * + * @param token The token to process. + * @protected + */ + _processStartTag(token) { + if (this.shouldProcessStartTagTokenInForeignContent(token)) startTagInForeignContent(this, token); + else this._startTagOutsideForeignContent(token); + } + /** @protected */ + _startTagOutsideForeignContent(token) { + switch (this.insertionMode) { + case InsertionMode.INITIAL: + tokenInInitialMode(this, token); + break; + case InsertionMode.BEFORE_HTML: + startTagBeforeHtml(this, token); + break; + case InsertionMode.BEFORE_HEAD: + startTagBeforeHead(this, token); + break; + case InsertionMode.IN_HEAD: + startTagInHead(this, token); + break; + case InsertionMode.IN_HEAD_NO_SCRIPT: + startTagInHeadNoScript(this, token); + break; + case InsertionMode.AFTER_HEAD: + startTagAfterHead(this, token); + break; + case InsertionMode.IN_BODY: + startTagInBody(this, token); + break; + case InsertionMode.IN_TABLE: + startTagInTable(this, token); + break; + case InsertionMode.IN_TABLE_TEXT: + tokenInTableText(this, token); + break; + case InsertionMode.IN_CAPTION: + startTagInCaption(this, token); + break; + case InsertionMode.IN_COLUMN_GROUP: + startTagInColumnGroup(this, token); + break; + case InsertionMode.IN_TABLE_BODY: + startTagInTableBody(this, token); + break; + case InsertionMode.IN_ROW: + startTagInRow(this, token); + break; + case InsertionMode.IN_CELL: + startTagInCell(this, token); + break; + case InsertionMode.IN_SELECT: + startTagInSelect(this, token); + break; + case InsertionMode.IN_SELECT_IN_TABLE: + startTagInSelectInTable(this, token); + break; + case InsertionMode.IN_TEMPLATE: + startTagInTemplate(this, token); + break; + case InsertionMode.AFTER_BODY: + startTagAfterBody(this, token); + break; + case InsertionMode.IN_FRAMESET: + startTagInFrameset(this, token); + break; + case InsertionMode.AFTER_FRAMESET: + startTagAfterFrameset(this, token); + break; + case InsertionMode.AFTER_AFTER_BODY: + startTagAfterAfterBody(this, token); + break; + case InsertionMode.AFTER_AFTER_FRAMESET: + startTagAfterAfterFrameset(this, token); + break; + default: + } + } + /** @internal */ + onEndTag(token) { + this.skipNextNewLine = false; + this.currentToken = token; + if (this.currentNotInHTML) endTagInForeignContent(this, token); + else this._endTagOutsideForeignContent(token); + } + /** @protected */ + _endTagOutsideForeignContent(token) { + switch (this.insertionMode) { + case InsertionMode.INITIAL: + tokenInInitialMode(this, token); + break; + case InsertionMode.BEFORE_HTML: + endTagBeforeHtml(this, token); + break; + case InsertionMode.BEFORE_HEAD: + endTagBeforeHead(this, token); + break; + case InsertionMode.IN_HEAD: + endTagInHead(this, token); + break; + case InsertionMode.IN_HEAD_NO_SCRIPT: + endTagInHeadNoScript(this, token); + break; + case InsertionMode.AFTER_HEAD: + endTagAfterHead(this, token); + break; + case InsertionMode.IN_BODY: + endTagInBody(this, token); + break; + case InsertionMode.TEXT: + endTagInText(this, token); + break; + case InsertionMode.IN_TABLE: + endTagInTable(this, token); + break; + case InsertionMode.IN_TABLE_TEXT: + tokenInTableText(this, token); + break; + case InsertionMode.IN_CAPTION: + endTagInCaption(this, token); + break; + case InsertionMode.IN_COLUMN_GROUP: + endTagInColumnGroup(this, token); + break; + case InsertionMode.IN_TABLE_BODY: + endTagInTableBody(this, token); + break; + case InsertionMode.IN_ROW: + endTagInRow(this, token); + break; + case InsertionMode.IN_CELL: + endTagInCell(this, token); + break; + case InsertionMode.IN_SELECT: + endTagInSelect(this, token); + break; + case InsertionMode.IN_SELECT_IN_TABLE: + endTagInSelectInTable(this, token); + break; + case InsertionMode.IN_TEMPLATE: + endTagInTemplate(this, token); + break; + case InsertionMode.AFTER_BODY: + endTagAfterBody(this, token); + break; + case InsertionMode.IN_FRAMESET: + endTagInFrameset(this, token); + break; + case InsertionMode.AFTER_FRAMESET: + endTagAfterFrameset(this, token); + break; + case InsertionMode.AFTER_AFTER_BODY: + tokenAfterAfterBody(this, token); + break; + default: + } + } + /** @internal */ + onEof(token) { + switch (this.insertionMode) { + case InsertionMode.INITIAL: + tokenInInitialMode(this, token); + break; + case InsertionMode.BEFORE_HTML: + tokenBeforeHtml(this, token); + break; + case InsertionMode.BEFORE_HEAD: + tokenBeforeHead(this, token); + break; + case InsertionMode.IN_HEAD: + tokenInHead(this, token); + break; + case InsertionMode.IN_HEAD_NO_SCRIPT: + tokenInHeadNoScript(this, token); + break; + case InsertionMode.AFTER_HEAD: + tokenAfterHead(this, token); + break; + case InsertionMode.IN_BODY: + case InsertionMode.IN_TABLE: + case InsertionMode.IN_CAPTION: + case InsertionMode.IN_COLUMN_GROUP: + case InsertionMode.IN_TABLE_BODY: + case InsertionMode.IN_ROW: + case InsertionMode.IN_CELL: + case InsertionMode.IN_SELECT: + case InsertionMode.IN_SELECT_IN_TABLE: + eofInBody(this, token); + break; + case InsertionMode.TEXT: + eofInText(this, token); + break; + case InsertionMode.IN_TABLE_TEXT: + tokenInTableText(this, token); + break; + case InsertionMode.IN_TEMPLATE: + eofInTemplate(this, token); + break; + case InsertionMode.AFTER_BODY: + case InsertionMode.IN_FRAMESET: + case InsertionMode.AFTER_FRAMESET: + case InsertionMode.AFTER_AFTER_BODY: + case InsertionMode.AFTER_AFTER_FRAMESET: + stopParsing(this, token); + break; + default: + } + } + /** @internal */ + onWhitespaceCharacter(token) { + if (this.skipNextNewLine) { + this.skipNextNewLine = false; + if (token.chars.charCodeAt(0) === CODE_POINTS.LINE_FEED) { + if (token.chars.length === 1) return; + token.chars = token.chars.substr(1); + } + } + if (this.tokenizer.inForeignNode) { + this._insertCharacters(token); + return; + } + switch (this.insertionMode) { + case InsertionMode.IN_HEAD: + case InsertionMode.IN_HEAD_NO_SCRIPT: + case InsertionMode.AFTER_HEAD: + case InsertionMode.TEXT: + case InsertionMode.IN_COLUMN_GROUP: + case InsertionMode.IN_SELECT: + case InsertionMode.IN_SELECT_IN_TABLE: + case InsertionMode.IN_FRAMESET: + case InsertionMode.AFTER_FRAMESET: + this._insertCharacters(token); + break; + case InsertionMode.IN_BODY: + case InsertionMode.IN_CAPTION: + case InsertionMode.IN_CELL: + case InsertionMode.IN_TEMPLATE: + case InsertionMode.AFTER_BODY: + case InsertionMode.AFTER_AFTER_BODY: + case InsertionMode.AFTER_AFTER_FRAMESET: + whitespaceCharacterInBody(this, token); + break; + case InsertionMode.IN_TABLE: + case InsertionMode.IN_TABLE_BODY: + case InsertionMode.IN_ROW: + characterInTable(this, token); + break; + case InsertionMode.IN_TABLE_TEXT: + whitespaceCharacterInTableText(this, token); + break; + default: + } + } +}; +function aaObtainFormattingElementEntry(p, token) { + let formattingElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName); + if (formattingElementEntry) { + if (!p.openElements.contains(formattingElementEntry.element)) { + p.activeFormattingElements.removeEntry(formattingElementEntry); + formattingElementEntry = null; + } else if (!p.openElements.hasInScope(token.tagID)) formattingElementEntry = null; + } else genericEndTagInBody(p, token); + return formattingElementEntry; +} +function aaObtainFurthestBlock(p, formattingElementEntry) { + let furthestBlock = null; + let idx = p.openElements.stackTop; + for (; idx >= 0; idx--) { + const element = p.openElements.items[idx]; + if (element === formattingElementEntry.element) break; + if (p._isSpecialElement(element, p.openElements.tagIDs[idx])) furthestBlock = element; + } + if (!furthestBlock) { + p.openElements.shortenToLength(Math.max(idx, 0)); + p.activeFormattingElements.removeEntry(formattingElementEntry); + } + return furthestBlock; +} +function aaInnerLoop(p, furthestBlock, formattingElement) { + let lastElement = furthestBlock; + let nextElement = p.openElements.getCommonAncestor(furthestBlock); + for (let i = 0, element = nextElement; element !== formattingElement; i++, element = nextElement) { + nextElement = p.openElements.getCommonAncestor(element); + const elementEntry = p.activeFormattingElements.getElementEntry(element); + const counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER; + if (!elementEntry || counterOverflow) { + if (counterOverflow) p.activeFormattingElements.removeEntry(elementEntry); + p.openElements.remove(element); + } else { + element = aaRecreateElementFromEntry(p, elementEntry); + if (lastElement === furthestBlock) p.activeFormattingElements.bookmark = elementEntry; + p.treeAdapter.detachNode(lastElement); + p.treeAdapter.appendChild(element, lastElement); + lastElement = element; + } + } + return lastElement; +} +function aaRecreateElementFromEntry(p, elementEntry) { + const ns = p.treeAdapter.getNamespaceURI(elementEntry.element); + const newElement = p.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs); + p.openElements.replace(elementEntry.element, newElement); + elementEntry.element = newElement; + return newElement; +} +function aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement) { + const tid = getTagID(p.treeAdapter.getTagName(commonAncestor)); + if (p._isElementCausesFosterParenting(tid)) p._fosterParentElement(lastElement); + else { + const ns = p.treeAdapter.getNamespaceURI(commonAncestor); + if (tid === TAG_ID.TEMPLATE && ns === NS.HTML) commonAncestor = p.treeAdapter.getTemplateContent(commonAncestor); + p.treeAdapter.appendChild(commonAncestor, lastElement); + } +} +function aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry) { + const ns = p.treeAdapter.getNamespaceURI(formattingElementEntry.element); + const { token } = formattingElementEntry; + const newElement = p.treeAdapter.createElement(token.tagName, ns, token.attrs); + p._adoptNodes(furthestBlock, newElement); + p.treeAdapter.appendChild(furthestBlock, newElement); + p.activeFormattingElements.insertElementAfterBookmark(newElement, token); + p.activeFormattingElements.removeEntry(formattingElementEntry); + p.openElements.remove(formattingElementEntry.element); + p.openElements.insertAfter(furthestBlock, newElement, token.tagID); +} +function callAdoptionAgency(p, token) { + for (let i = 0; i < AA_OUTER_LOOP_ITER; i++) { + const formattingElementEntry = aaObtainFormattingElementEntry(p, token); + if (!formattingElementEntry) break; + const furthestBlock = aaObtainFurthestBlock(p, formattingElementEntry); + if (!furthestBlock) break; + p.activeFormattingElements.bookmark = formattingElementEntry; + const lastElement = aaInnerLoop(p, furthestBlock, formattingElementEntry.element); + const commonAncestor = p.openElements.getCommonAncestor(formattingElementEntry.element); + p.treeAdapter.detachNode(lastElement); + if (commonAncestor) aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement); + aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry); + } +} +function appendComment(p, token) { + p._appendCommentNode(token, p.openElements.currentTmplContentOrNode); +} +function appendCommentToRootHtmlElement(p, token) { + p._appendCommentNode(token, p.openElements.items[0]); +} +function appendCommentToDocument(p, token) { + p._appendCommentNode(token, p.document); +} +function stopParsing(p, token) { + p.stopped = true; + if (token.location) { + const target = p.fragmentContext ? 0 : 2; + for (let i = p.openElements.stackTop; i >= target; i--) p._setEndLocation(p.openElements.items[i], token); + if (!p.fragmentContext && p.openElements.stackTop >= 0) { + const htmlElement = p.openElements.items[0]; + const htmlLocation = p.treeAdapter.getNodeSourceCodeLocation(htmlElement); + if (htmlLocation && !htmlLocation.endTag) { + p._setEndLocation(htmlElement, token); + if (p.openElements.stackTop >= 1) { + const bodyElement = p.openElements.items[1]; + const bodyLocation = p.treeAdapter.getNodeSourceCodeLocation(bodyElement); + if (bodyLocation && !bodyLocation.endTag) p._setEndLocation(bodyElement, token); + } + } + } + } +} +function doctypeInInitialMode(p, token) { + p._setDocumentType(token); + const mode = token.forceQuirks ? DOCUMENT_MODE.QUIRKS : getDocumentMode(token); + if (!isConforming(token)) p._err(token, ERR.nonConformingDoctype); + p.treeAdapter.setDocumentMode(p.document, mode); + p.insertionMode = InsertionMode.BEFORE_HTML; +} +function tokenInInitialMode(p, token) { + p._err(token, ERR.missingDoctype, true); + p.treeAdapter.setDocumentMode(p.document, DOCUMENT_MODE.QUIRKS); + p.insertionMode = InsertionMode.BEFORE_HTML; + p._processToken(token); +} +function startTagBeforeHtml(p, token) { + if (token.tagID === TAG_ID.HTML) { + p._insertElement(token, NS.HTML); + p.insertionMode = InsertionMode.BEFORE_HEAD; + } else tokenBeforeHtml(p, token); +} +function endTagBeforeHtml(p, token) { + const tn = token.tagID; + if (tn === TAG_ID.HTML || tn === TAG_ID.HEAD || tn === TAG_ID.BODY || tn === TAG_ID.BR) tokenBeforeHtml(p, token); +} +function tokenBeforeHtml(p, token) { + p._insertFakeRootElement(); + p.insertionMode = InsertionMode.BEFORE_HEAD; + p._processToken(token); +} +function startTagBeforeHead(p, token) { + switch (token.tagID) { + case TAG_ID.HTML: + startTagInBody(p, token); + break; + case TAG_ID.HEAD: + p._insertElement(token, NS.HTML); + p.headElement = p.openElements.current; + p.insertionMode = InsertionMode.IN_HEAD; + break; + default: tokenBeforeHead(p, token); + } +} +function endTagBeforeHead(p, token) { + const tn = token.tagID; + if (tn === TAG_ID.HEAD || tn === TAG_ID.BODY || tn === TAG_ID.HTML || tn === TAG_ID.BR) tokenBeforeHead(p, token); + else p._err(token, ERR.endTagWithoutMatchingOpenElement); +} +function tokenBeforeHead(p, token) { + p._insertFakeElement(TAG_NAMES.HEAD, TAG_ID.HEAD); + p.headElement = p.openElements.current; + p.insertionMode = InsertionMode.IN_HEAD; + p._processToken(token); +} +function startTagInHead(p, token) { + switch (token.tagID) { + case TAG_ID.HTML: + startTagInBody(p, token); + break; + case TAG_ID.BASE: + case TAG_ID.BASEFONT: + case TAG_ID.BGSOUND: + case TAG_ID.LINK: + case TAG_ID.META: + p._appendElement(token, NS.HTML); + token.ackSelfClosing = true; + break; + case TAG_ID.TITLE: + p._switchToTextParsing(token, TokenizerMode.RCDATA); + break; + case TAG_ID.NOSCRIPT: + if (p.options.scriptingEnabled) p._switchToTextParsing(token, TokenizerMode.RAWTEXT); + else { + p._insertElement(token, NS.HTML); + p.insertionMode = InsertionMode.IN_HEAD_NO_SCRIPT; + } + break; + case TAG_ID.NOFRAMES: + case TAG_ID.STYLE: + p._switchToTextParsing(token, TokenizerMode.RAWTEXT); + break; + case TAG_ID.SCRIPT: + p._switchToTextParsing(token, TokenizerMode.SCRIPT_DATA); + break; + case TAG_ID.TEMPLATE: + p._insertTemplate(token); + p.activeFormattingElements.insertMarker(); + p.framesetOk = false; + p.insertionMode = InsertionMode.IN_TEMPLATE; + p.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE); + break; + case TAG_ID.HEAD: + p._err(token, ERR.misplacedStartTagForHeadElement); + break; + default: tokenInHead(p, token); + } +} +function endTagInHead(p, token) { + switch (token.tagID) { + case TAG_ID.HEAD: + p.openElements.pop(); + p.insertionMode = InsertionMode.AFTER_HEAD; + break; + case TAG_ID.BODY: + case TAG_ID.BR: + case TAG_ID.HTML: + tokenInHead(p, token); + break; + case TAG_ID.TEMPLATE: + templateEndTagInHead(p, token); + break; + default: p._err(token, ERR.endTagWithoutMatchingOpenElement); + } +} +function templateEndTagInHead(p, token) { + if (p.openElements.tmplCount > 0) { + p.openElements.generateImpliedEndTagsThoroughly(); + if (p.openElements.currentTagId !== TAG_ID.TEMPLATE) p._err(token, ERR.closingOfElementWithOpenChildElements); + p.openElements.popUntilTagNamePopped(TAG_ID.TEMPLATE); + p.activeFormattingElements.clearToLastMarker(); + p.tmplInsertionModeStack.shift(); + p._resetInsertionMode(); + } else p._err(token, ERR.endTagWithoutMatchingOpenElement); +} +function tokenInHead(p, token) { + p.openElements.pop(); + p.insertionMode = InsertionMode.AFTER_HEAD; + p._processToken(token); +} +function startTagInHeadNoScript(p, token) { + switch (token.tagID) { + case TAG_ID.HTML: + startTagInBody(p, token); + break; + case TAG_ID.BASEFONT: + case TAG_ID.BGSOUND: + case TAG_ID.HEAD: + case TAG_ID.LINK: + case TAG_ID.META: + case TAG_ID.NOFRAMES: + case TAG_ID.STYLE: + startTagInHead(p, token); + break; + case TAG_ID.NOSCRIPT: + p._err(token, ERR.nestedNoscriptInHead); + break; + default: tokenInHeadNoScript(p, token); + } +} +function endTagInHeadNoScript(p, token) { + switch (token.tagID) { + case TAG_ID.NOSCRIPT: + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_HEAD; + break; + case TAG_ID.BR: + tokenInHeadNoScript(p, token); + break; + default: p._err(token, ERR.endTagWithoutMatchingOpenElement); + } +} +function tokenInHeadNoScript(p, token) { + p._err(token, token.type === TokenType.EOF ? ERR.openElementsLeftAfterEof : ERR.disallowedContentInNoscriptInHead); + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_HEAD; + p._processToken(token); +} +function startTagAfterHead(p, token) { + switch (token.tagID) { + case TAG_ID.HTML: + startTagInBody(p, token); + break; + case TAG_ID.BODY: + p._insertElement(token, NS.HTML); + p.framesetOk = false; + p.insertionMode = InsertionMode.IN_BODY; + break; + case TAG_ID.FRAMESET: + p._insertElement(token, NS.HTML); + p.insertionMode = InsertionMode.IN_FRAMESET; + break; + case TAG_ID.BASE: + case TAG_ID.BASEFONT: + case TAG_ID.BGSOUND: + case TAG_ID.LINK: + case TAG_ID.META: + case TAG_ID.NOFRAMES: + case TAG_ID.SCRIPT: + case TAG_ID.STYLE: + case TAG_ID.TEMPLATE: + case TAG_ID.TITLE: + p._err(token, ERR.abandonedHeadElementChild); + p.openElements.push(p.headElement, TAG_ID.HEAD); + startTagInHead(p, token); + p.openElements.remove(p.headElement); + break; + case TAG_ID.HEAD: + p._err(token, ERR.misplacedStartTagForHeadElement); + break; + default: tokenAfterHead(p, token); + } +} +function endTagAfterHead(p, token) { + switch (token.tagID) { + case TAG_ID.BODY: + case TAG_ID.HTML: + case TAG_ID.BR: + tokenAfterHead(p, token); + break; + case TAG_ID.TEMPLATE: + templateEndTagInHead(p, token); + break; + default: p._err(token, ERR.endTagWithoutMatchingOpenElement); + } +} +function tokenAfterHead(p, token) { + p._insertFakeElement(TAG_NAMES.BODY, TAG_ID.BODY); + p.insertionMode = InsertionMode.IN_BODY; + modeInBody(p, token); +} +function modeInBody(p, token) { + switch (token.type) { + case TokenType.CHARACTER: + characterInBody(p, token); + break; + case TokenType.WHITESPACE_CHARACTER: + whitespaceCharacterInBody(p, token); + break; + case TokenType.COMMENT: + appendComment(p, token); + break; + case TokenType.START_TAG: + startTagInBody(p, token); + break; + case TokenType.END_TAG: + endTagInBody(p, token); + break; + case TokenType.EOF: + eofInBody(p, token); + break; + default: + } +} +function whitespaceCharacterInBody(p, token) { + p._reconstructActiveFormattingElements(); + p._insertCharacters(token); +} +function characterInBody(p, token) { + p._reconstructActiveFormattingElements(); + p._insertCharacters(token); + p.framesetOk = false; +} +function htmlStartTagInBody(p, token) { + if (p.openElements.tmplCount === 0) p.treeAdapter.adoptAttributes(p.openElements.items[0], token.attrs); +} +function bodyStartTagInBody(p, token) { + const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement(); + if (bodyElement && p.openElements.tmplCount === 0) { + p.framesetOk = false; + p.treeAdapter.adoptAttributes(bodyElement, token.attrs); + } +} +function framesetStartTagInBody(p, token) { + const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement(); + if (p.framesetOk && bodyElement) { + p.treeAdapter.detachNode(bodyElement); + p.openElements.popAllUpToHtmlElement(); + p._insertElement(token, NS.HTML); + p.insertionMode = InsertionMode.IN_FRAMESET; + } +} +function addressStartTagInBody(p, token) { + if (p.openElements.hasInButtonScope(TAG_ID.P)) p._closePElement(); + p._insertElement(token, NS.HTML); +} +function numberedHeaderStartTagInBody(p, token) { + if (p.openElements.hasInButtonScope(TAG_ID.P)) p._closePElement(); + if (p.openElements.currentTagId !== void 0 && NUMBERED_HEADERS.has(p.openElements.currentTagId)) p.openElements.pop(); + p._insertElement(token, NS.HTML); +} +function preStartTagInBody(p, token) { + if (p.openElements.hasInButtonScope(TAG_ID.P)) p._closePElement(); + p._insertElement(token, NS.HTML); + p.skipNextNewLine = true; + p.framesetOk = false; +} +function formStartTagInBody(p, token) { + const inTemplate = p.openElements.tmplCount > 0; + if (!p.formElement || inTemplate) { + if (p.openElements.hasInButtonScope(TAG_ID.P)) p._closePElement(); + p._insertElement(token, NS.HTML); + if (!inTemplate) p.formElement = p.openElements.current; + } +} +function listItemStartTagInBody(p, token) { + p.framesetOk = false; + const tn = token.tagID; + for (let i = p.openElements.stackTop; i >= 0; i--) { + const elementId = p.openElements.tagIDs[i]; + if (tn === TAG_ID.LI && elementId === TAG_ID.LI || (tn === TAG_ID.DD || tn === TAG_ID.DT) && (elementId === TAG_ID.DD || elementId === TAG_ID.DT)) { + p.openElements.generateImpliedEndTagsWithExclusion(elementId); + p.openElements.popUntilTagNamePopped(elementId); + break; + } + if (elementId !== TAG_ID.ADDRESS && elementId !== TAG_ID.DIV && elementId !== TAG_ID.P && p._isSpecialElement(p.openElements.items[i], elementId)) break; + } + if (p.openElements.hasInButtonScope(TAG_ID.P)) p._closePElement(); + p._insertElement(token, NS.HTML); +} +function plaintextStartTagInBody(p, token) { + if (p.openElements.hasInButtonScope(TAG_ID.P)) p._closePElement(); + p._insertElement(token, NS.HTML); + p.tokenizer.state = TokenizerMode.PLAINTEXT; +} +function buttonStartTagInBody(p, token) { + if (p.openElements.hasInScope(TAG_ID.BUTTON)) { + p.openElements.generateImpliedEndTags(); + p.openElements.popUntilTagNamePopped(TAG_ID.BUTTON); + } + p._reconstructActiveFormattingElements(); + p._insertElement(token, NS.HTML); + p.framesetOk = false; +} +function aStartTagInBody(p, token) { + const activeElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(TAG_NAMES.A); + if (activeElementEntry) { + callAdoptionAgency(p, token); + p.openElements.remove(activeElementEntry.element); + p.activeFormattingElements.removeEntry(activeElementEntry); + } + p._reconstructActiveFormattingElements(); + p._insertElement(token, NS.HTML); + p.activeFormattingElements.pushElement(p.openElements.current, token); +} +function bStartTagInBody(p, token) { + p._reconstructActiveFormattingElements(); + p._insertElement(token, NS.HTML); + p.activeFormattingElements.pushElement(p.openElements.current, token); +} +function nobrStartTagInBody(p, token) { + p._reconstructActiveFormattingElements(); + if (p.openElements.hasInScope(TAG_ID.NOBR)) { + callAdoptionAgency(p, token); + p._reconstructActiveFormattingElements(); + } + p._insertElement(token, NS.HTML); + p.activeFormattingElements.pushElement(p.openElements.current, token); +} +function appletStartTagInBody(p, token) { + p._reconstructActiveFormattingElements(); + p._insertElement(token, NS.HTML); + p.activeFormattingElements.insertMarker(); + p.framesetOk = false; +} +function tableStartTagInBody(p, token) { + if (p.treeAdapter.getDocumentMode(p.document) !== DOCUMENT_MODE.QUIRKS && p.openElements.hasInButtonScope(TAG_ID.P)) p._closePElement(); + p._insertElement(token, NS.HTML); + p.framesetOk = false; + p.insertionMode = InsertionMode.IN_TABLE; +} +function areaStartTagInBody(p, token) { + p._reconstructActiveFormattingElements(); + p._appendElement(token, NS.HTML); + p.framesetOk = false; + token.ackSelfClosing = true; +} +function isHiddenInput(token) { + const inputType = getTokenAttr(token, ATTRS.TYPE); + return inputType != null && inputType.toLowerCase() === HIDDEN_INPUT_TYPE; +} +function inputStartTagInBody(p, token) { + p._reconstructActiveFormattingElements(); + p._appendElement(token, NS.HTML); + if (!isHiddenInput(token)) p.framesetOk = false; + token.ackSelfClosing = true; +} +function paramStartTagInBody(p, token) { + p._appendElement(token, NS.HTML); + token.ackSelfClosing = true; +} +function hrStartTagInBody(p, token) { + if (p.openElements.hasInButtonScope(TAG_ID.P)) p._closePElement(); + p._appendElement(token, NS.HTML); + p.framesetOk = false; + token.ackSelfClosing = true; +} +function imageStartTagInBody(p, token) { + token.tagName = TAG_NAMES.IMG; + token.tagID = TAG_ID.IMG; + areaStartTagInBody(p, token); +} +function textareaStartTagInBody(p, token) { + p._insertElement(token, NS.HTML); + p.skipNextNewLine = true; + p.tokenizer.state = TokenizerMode.RCDATA; + p.originalInsertionMode = p.insertionMode; + p.framesetOk = false; + p.insertionMode = InsertionMode.TEXT; +} +function xmpStartTagInBody(p, token) { + if (p.openElements.hasInButtonScope(TAG_ID.P)) p._closePElement(); + p._reconstructActiveFormattingElements(); + p.framesetOk = false; + p._switchToTextParsing(token, TokenizerMode.RAWTEXT); +} +function iframeStartTagInBody(p, token) { + p.framesetOk = false; + p._switchToTextParsing(token, TokenizerMode.RAWTEXT); +} +function rawTextStartTagInBody(p, token) { + p._switchToTextParsing(token, TokenizerMode.RAWTEXT); +} +function selectStartTagInBody(p, token) { + p._reconstructActiveFormattingElements(); + p._insertElement(token, NS.HTML); + p.framesetOk = false; + p.insertionMode = p.insertionMode === InsertionMode.IN_TABLE || p.insertionMode === InsertionMode.IN_CAPTION || p.insertionMode === InsertionMode.IN_TABLE_BODY || p.insertionMode === InsertionMode.IN_ROW || p.insertionMode === InsertionMode.IN_CELL ? InsertionMode.IN_SELECT_IN_TABLE : InsertionMode.IN_SELECT; +} +function optgroupStartTagInBody(p, token) { + if (p.openElements.currentTagId === TAG_ID.OPTION) p.openElements.pop(); + p._reconstructActiveFormattingElements(); + p._insertElement(token, NS.HTML); +} +function rbStartTagInBody(p, token) { + if (p.openElements.hasInScope(TAG_ID.RUBY)) p.openElements.generateImpliedEndTags(); + p._insertElement(token, NS.HTML); +} +function rtStartTagInBody(p, token) { + if (p.openElements.hasInScope(TAG_ID.RUBY)) p.openElements.generateImpliedEndTagsWithExclusion(TAG_ID.RTC); + p._insertElement(token, NS.HTML); +} +function mathStartTagInBody(p, token) { + p._reconstructActiveFormattingElements(); + adjustTokenMathMLAttrs(token); + adjustTokenXMLAttrs(token); + if (token.selfClosing) p._appendElement(token, NS.MATHML); + else p._insertElement(token, NS.MATHML); + token.ackSelfClosing = true; +} +function svgStartTagInBody(p, token) { + p._reconstructActiveFormattingElements(); + adjustTokenSVGAttrs(token); + adjustTokenXMLAttrs(token); + if (token.selfClosing) p._appendElement(token, NS.SVG); + else p._insertElement(token, NS.SVG); + token.ackSelfClosing = true; +} +function genericStartTagInBody(p, token) { + p._reconstructActiveFormattingElements(); + p._insertElement(token, NS.HTML); +} +function startTagInBody(p, token) { + switch (token.tagID) { + case TAG_ID.I: + case TAG_ID.S: + case TAG_ID.B: + case TAG_ID.U: + case TAG_ID.EM: + case TAG_ID.TT: + case TAG_ID.BIG: + case TAG_ID.CODE: + case TAG_ID.FONT: + case TAG_ID.SMALL: + case TAG_ID.STRIKE: + case TAG_ID.STRONG: + bStartTagInBody(p, token); + break; + case TAG_ID.A: + aStartTagInBody(p, token); + break; + case TAG_ID.H1: + case TAG_ID.H2: + case TAG_ID.H3: + case TAG_ID.H4: + case TAG_ID.H5: + case TAG_ID.H6: + numberedHeaderStartTagInBody(p, token); + break; + case TAG_ID.P: + case TAG_ID.DL: + case TAG_ID.OL: + case TAG_ID.UL: + case TAG_ID.DIV: + case TAG_ID.DIR: + case TAG_ID.NAV: + case TAG_ID.MAIN: + case TAG_ID.MENU: + case TAG_ID.ASIDE: + case TAG_ID.CENTER: + case TAG_ID.FIGURE: + case TAG_ID.FOOTER: + case TAG_ID.HEADER: + case TAG_ID.HGROUP: + case TAG_ID.DIALOG: + case TAG_ID.DETAILS: + case TAG_ID.ADDRESS: + case TAG_ID.ARTICLE: + case TAG_ID.SEARCH: + case TAG_ID.SECTION: + case TAG_ID.SUMMARY: + case TAG_ID.FIELDSET: + case TAG_ID.BLOCKQUOTE: + case TAG_ID.FIGCAPTION: + addressStartTagInBody(p, token); + break; + case TAG_ID.LI: + case TAG_ID.DD: + case TAG_ID.DT: + listItemStartTagInBody(p, token); + break; + case TAG_ID.BR: + case TAG_ID.IMG: + case TAG_ID.WBR: + case TAG_ID.AREA: + case TAG_ID.EMBED: + case TAG_ID.KEYGEN: + areaStartTagInBody(p, token); + break; + case TAG_ID.HR: + hrStartTagInBody(p, token); + break; + case TAG_ID.RB: + case TAG_ID.RTC: + rbStartTagInBody(p, token); + break; + case TAG_ID.RT: + case TAG_ID.RP: + rtStartTagInBody(p, token); + break; + case TAG_ID.PRE: + case TAG_ID.LISTING: + preStartTagInBody(p, token); + break; + case TAG_ID.XMP: + xmpStartTagInBody(p, token); + break; + case TAG_ID.SVG: + svgStartTagInBody(p, token); + break; + case TAG_ID.HTML: + htmlStartTagInBody(p, token); + break; + case TAG_ID.BASE: + case TAG_ID.LINK: + case TAG_ID.META: + case TAG_ID.STYLE: + case TAG_ID.TITLE: + case TAG_ID.SCRIPT: + case TAG_ID.BGSOUND: + case TAG_ID.BASEFONT: + case TAG_ID.TEMPLATE: + startTagInHead(p, token); + break; + case TAG_ID.BODY: + bodyStartTagInBody(p, token); + break; + case TAG_ID.FORM: + formStartTagInBody(p, token); + break; + case TAG_ID.NOBR: + nobrStartTagInBody(p, token); + break; + case TAG_ID.MATH: + mathStartTagInBody(p, token); + break; + case TAG_ID.TABLE: + tableStartTagInBody(p, token); + break; + case TAG_ID.INPUT: + inputStartTagInBody(p, token); + break; + case TAG_ID.PARAM: + case TAG_ID.TRACK: + case TAG_ID.SOURCE: + paramStartTagInBody(p, token); + break; + case TAG_ID.IMAGE: + imageStartTagInBody(p, token); + break; + case TAG_ID.BUTTON: + buttonStartTagInBody(p, token); + break; + case TAG_ID.APPLET: + case TAG_ID.OBJECT: + case TAG_ID.MARQUEE: + appletStartTagInBody(p, token); + break; + case TAG_ID.IFRAME: + iframeStartTagInBody(p, token); + break; + case TAG_ID.SELECT: + selectStartTagInBody(p, token); + break; + case TAG_ID.OPTION: + case TAG_ID.OPTGROUP: + optgroupStartTagInBody(p, token); + break; + case TAG_ID.NOEMBED: + case TAG_ID.NOFRAMES: + rawTextStartTagInBody(p, token); + break; + case TAG_ID.FRAMESET: + framesetStartTagInBody(p, token); + break; + case TAG_ID.TEXTAREA: + textareaStartTagInBody(p, token); + break; + case TAG_ID.NOSCRIPT: + if (p.options.scriptingEnabled) rawTextStartTagInBody(p, token); + else genericStartTagInBody(p, token); + break; + case TAG_ID.PLAINTEXT: + plaintextStartTagInBody(p, token); + break; + case TAG_ID.COL: + case TAG_ID.TH: + case TAG_ID.TD: + case TAG_ID.TR: + case TAG_ID.HEAD: + case TAG_ID.FRAME: + case TAG_ID.TBODY: + case TAG_ID.TFOOT: + case TAG_ID.THEAD: + case TAG_ID.CAPTION: + case TAG_ID.COLGROUP: break; + default: genericStartTagInBody(p, token); + } +} +function bodyEndTagInBody(p, token) { + if (p.openElements.hasInScope(TAG_ID.BODY)) { + p.insertionMode = InsertionMode.AFTER_BODY; + if (p.options.sourceCodeLocationInfo) { + const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement(); + if (bodyElement) p._setEndLocation(bodyElement, token); + } + } +} +function htmlEndTagInBody(p, token) { + if (p.openElements.hasInScope(TAG_ID.BODY)) { + p.insertionMode = InsertionMode.AFTER_BODY; + endTagAfterBody(p, token); + } +} +function addressEndTagInBody(p, token) { + const tn = token.tagID; + if (p.openElements.hasInScope(tn)) { + p.openElements.generateImpliedEndTags(); + p.openElements.popUntilTagNamePopped(tn); + } +} +function formEndTagInBody(p) { + const inTemplate = p.openElements.tmplCount > 0; + const { formElement } = p; + if (!inTemplate) p.formElement = null; + if ((formElement || inTemplate) && p.openElements.hasInScope(TAG_ID.FORM)) { + p.openElements.generateImpliedEndTags(); + if (inTemplate) p.openElements.popUntilTagNamePopped(TAG_ID.FORM); + else if (formElement) p.openElements.remove(formElement); + } +} +function pEndTagInBody(p) { + if (!p.openElements.hasInButtonScope(TAG_ID.P)) p._insertFakeElement(TAG_NAMES.P, TAG_ID.P); + p._closePElement(); +} +function liEndTagInBody(p) { + if (p.openElements.hasInListItemScope(TAG_ID.LI)) { + p.openElements.generateImpliedEndTagsWithExclusion(TAG_ID.LI); + p.openElements.popUntilTagNamePopped(TAG_ID.LI); + } +} +function ddEndTagInBody(p, token) { + const tn = token.tagID; + if (p.openElements.hasInScope(tn)) { + p.openElements.generateImpliedEndTagsWithExclusion(tn); + p.openElements.popUntilTagNamePopped(tn); + } +} +function numberedHeaderEndTagInBody(p) { + if (p.openElements.hasNumberedHeaderInScope()) { + p.openElements.generateImpliedEndTags(); + p.openElements.popUntilNumberedHeaderPopped(); + } +} +function appletEndTagInBody(p, token) { + const tn = token.tagID; + if (p.openElements.hasInScope(tn)) { + p.openElements.generateImpliedEndTags(); + p.openElements.popUntilTagNamePopped(tn); + p.activeFormattingElements.clearToLastMarker(); + } +} +function brEndTagInBody(p) { + p._reconstructActiveFormattingElements(); + p._insertFakeElement(TAG_NAMES.BR, TAG_ID.BR); + p.openElements.pop(); + p.framesetOk = false; +} +function genericEndTagInBody(p, token) { + const tn = token.tagName; + const tid = token.tagID; + for (let i = p.openElements.stackTop; i > 0; i--) { + const element = p.openElements.items[i]; + const elementId = p.openElements.tagIDs[i]; + if (tid === elementId && (tid !== TAG_ID.UNKNOWN || p.treeAdapter.getTagName(element) === tn)) { + p.openElements.generateImpliedEndTagsWithExclusion(tid); + if (p.openElements.stackTop >= i) p.openElements.shortenToLength(i); + break; + } + if (p._isSpecialElement(element, elementId)) break; + } +} +function endTagInBody(p, token) { + switch (token.tagID) { + case TAG_ID.A: + case TAG_ID.B: + case TAG_ID.I: + case TAG_ID.S: + case TAG_ID.U: + case TAG_ID.EM: + case TAG_ID.TT: + case TAG_ID.BIG: + case TAG_ID.CODE: + case TAG_ID.FONT: + case TAG_ID.NOBR: + case TAG_ID.SMALL: + case TAG_ID.STRIKE: + case TAG_ID.STRONG: + callAdoptionAgency(p, token); + break; + case TAG_ID.P: + pEndTagInBody(p); + break; + case TAG_ID.DL: + case TAG_ID.UL: + case TAG_ID.OL: + case TAG_ID.DIR: + case TAG_ID.DIV: + case TAG_ID.NAV: + case TAG_ID.PRE: + case TAG_ID.MAIN: + case TAG_ID.MENU: + case TAG_ID.ASIDE: + case TAG_ID.BUTTON: + case TAG_ID.CENTER: + case TAG_ID.FIGURE: + case TAG_ID.FOOTER: + case TAG_ID.HEADER: + case TAG_ID.HGROUP: + case TAG_ID.DIALOG: + case TAG_ID.ADDRESS: + case TAG_ID.ARTICLE: + case TAG_ID.DETAILS: + case TAG_ID.SEARCH: + case TAG_ID.SECTION: + case TAG_ID.SUMMARY: + case TAG_ID.LISTING: + case TAG_ID.FIELDSET: + case TAG_ID.BLOCKQUOTE: + case TAG_ID.FIGCAPTION: + addressEndTagInBody(p, token); + break; + case TAG_ID.LI: + liEndTagInBody(p); + break; + case TAG_ID.DD: + case TAG_ID.DT: + ddEndTagInBody(p, token); + break; + case TAG_ID.H1: + case TAG_ID.H2: + case TAG_ID.H3: + case TAG_ID.H4: + case TAG_ID.H5: + case TAG_ID.H6: + numberedHeaderEndTagInBody(p); + break; + case TAG_ID.BR: + brEndTagInBody(p); + break; + case TAG_ID.BODY: + bodyEndTagInBody(p, token); + break; + case TAG_ID.HTML: + htmlEndTagInBody(p, token); + break; + case TAG_ID.FORM: + formEndTagInBody(p); + break; + case TAG_ID.APPLET: + case TAG_ID.OBJECT: + case TAG_ID.MARQUEE: + appletEndTagInBody(p, token); + break; + case TAG_ID.TEMPLATE: + templateEndTagInHead(p, token); + break; + default: genericEndTagInBody(p, token); + } +} +function eofInBody(p, token) { + if (p.tmplInsertionModeStack.length > 0) eofInTemplate(p, token); + else stopParsing(p, token); +} +function endTagInText(p, token) { + var _a; + if (token.tagID === TAG_ID.SCRIPT) (_a = p.scriptHandler) === null || _a === void 0 || _a.call(p, p.openElements.current); + p.openElements.pop(); + p.insertionMode = p.originalInsertionMode; +} +function eofInText(p, token) { + p._err(token, ERR.eofInElementThatCanContainOnlyText); + p.openElements.pop(); + p.insertionMode = p.originalInsertionMode; + p.onEof(token); +} +function characterInTable(p, token) { + if (p.openElements.currentTagId !== void 0 && TABLE_STRUCTURE_TAGS.has(p.openElements.currentTagId)) { + p.pendingCharacterTokens.length = 0; + p.hasNonWhitespacePendingCharacterToken = false; + p.originalInsertionMode = p.insertionMode; + p.insertionMode = InsertionMode.IN_TABLE_TEXT; + switch (token.type) { + case TokenType.CHARACTER: + characterInTableText(p, token); + break; + case TokenType.WHITESPACE_CHARACTER: + whitespaceCharacterInTableText(p, token); + break; + } + } else tokenInTable(p, token); +} +function captionStartTagInTable(p, token) { + p.openElements.clearBackToTableContext(); + p.activeFormattingElements.insertMarker(); + p._insertElement(token, NS.HTML); + p.insertionMode = InsertionMode.IN_CAPTION; +} +function colgroupStartTagInTable(p, token) { + p.openElements.clearBackToTableContext(); + p._insertElement(token, NS.HTML); + p.insertionMode = InsertionMode.IN_COLUMN_GROUP; +} +function colStartTagInTable(p, token) { + p.openElements.clearBackToTableContext(); + p._insertFakeElement(TAG_NAMES.COLGROUP, TAG_ID.COLGROUP); + p.insertionMode = InsertionMode.IN_COLUMN_GROUP; + startTagInColumnGroup(p, token); +} +function tbodyStartTagInTable(p, token) { + p.openElements.clearBackToTableContext(); + p._insertElement(token, NS.HTML); + p.insertionMode = InsertionMode.IN_TABLE_BODY; +} +function tdStartTagInTable(p, token) { + p.openElements.clearBackToTableContext(); + p._insertFakeElement(TAG_NAMES.TBODY, TAG_ID.TBODY); + p.insertionMode = InsertionMode.IN_TABLE_BODY; + startTagInTableBody(p, token); +} +function tableStartTagInTable(p, token) { + if (p.openElements.hasInTableScope(TAG_ID.TABLE)) { + p.openElements.popUntilTagNamePopped(TAG_ID.TABLE); + p._resetInsertionMode(); + p._processStartTag(token); + } +} +function inputStartTagInTable(p, token) { + if (isHiddenInput(token)) p._appendElement(token, NS.HTML); + else tokenInTable(p, token); + token.ackSelfClosing = true; +} +function formStartTagInTable(p, token) { + if (!p.formElement && p.openElements.tmplCount === 0) { + p._insertElement(token, NS.HTML); + p.formElement = p.openElements.current; + p.openElements.pop(); + } +} +function startTagInTable(p, token) { + switch (token.tagID) { + case TAG_ID.TD: + case TAG_ID.TH: + case TAG_ID.TR: + tdStartTagInTable(p, token); + break; + case TAG_ID.STYLE: + case TAG_ID.SCRIPT: + case TAG_ID.TEMPLATE: + startTagInHead(p, token); + break; + case TAG_ID.COL: + colStartTagInTable(p, token); + break; + case TAG_ID.FORM: + formStartTagInTable(p, token); + break; + case TAG_ID.TABLE: + tableStartTagInTable(p, token); + break; + case TAG_ID.TBODY: + case TAG_ID.TFOOT: + case TAG_ID.THEAD: + tbodyStartTagInTable(p, token); + break; + case TAG_ID.INPUT: + inputStartTagInTable(p, token); + break; + case TAG_ID.CAPTION: + captionStartTagInTable(p, token); + break; + case TAG_ID.COLGROUP: + colgroupStartTagInTable(p, token); + break; + default: tokenInTable(p, token); + } +} +function endTagInTable(p, token) { + switch (token.tagID) { + case TAG_ID.TABLE: + if (p.openElements.hasInTableScope(TAG_ID.TABLE)) { + p.openElements.popUntilTagNamePopped(TAG_ID.TABLE); + p._resetInsertionMode(); + } + break; + case TAG_ID.TEMPLATE: + templateEndTagInHead(p, token); + break; + case TAG_ID.BODY: + case TAG_ID.CAPTION: + case TAG_ID.COL: + case TAG_ID.COLGROUP: + case TAG_ID.HTML: + case TAG_ID.TBODY: + case TAG_ID.TD: + case TAG_ID.TFOOT: + case TAG_ID.TH: + case TAG_ID.THEAD: + case TAG_ID.TR: break; + default: tokenInTable(p, token); + } +} +function tokenInTable(p, token) { + const savedFosterParentingState = p.fosterParentingEnabled; + p.fosterParentingEnabled = true; + modeInBody(p, token); + p.fosterParentingEnabled = savedFosterParentingState; +} +function whitespaceCharacterInTableText(p, token) { + p.pendingCharacterTokens.push(token); +} +function characterInTableText(p, token) { + p.pendingCharacterTokens.push(token); + p.hasNonWhitespacePendingCharacterToken = true; +} +function tokenInTableText(p, token) { + let i = 0; + if (p.hasNonWhitespacePendingCharacterToken) for (; i < p.pendingCharacterTokens.length; i++) tokenInTable(p, p.pendingCharacterTokens[i]); + else for (; i < p.pendingCharacterTokens.length; i++) p._insertCharacters(p.pendingCharacterTokens[i]); + p.insertionMode = p.originalInsertionMode; + p._processToken(token); +} +const TABLE_VOID_ELEMENTS = new Set([ + TAG_ID.CAPTION, + TAG_ID.COL, + TAG_ID.COLGROUP, + TAG_ID.TBODY, + TAG_ID.TD, + TAG_ID.TFOOT, + TAG_ID.TH, + TAG_ID.THEAD, + TAG_ID.TR +]); +function startTagInCaption(p, token) { + if (TABLE_VOID_ELEMENTS.has(token.tagID)) { + if (p.openElements.hasInTableScope(TAG_ID.CAPTION)) { + p.openElements.generateImpliedEndTags(); + p.openElements.popUntilTagNamePopped(TAG_ID.CAPTION); + p.activeFormattingElements.clearToLastMarker(); + p.insertionMode = InsertionMode.IN_TABLE; + startTagInTable(p, token); + } + } else startTagInBody(p, token); +} +function endTagInCaption(p, token) { + const tn = token.tagID; + switch (tn) { + case TAG_ID.CAPTION: + case TAG_ID.TABLE: + if (p.openElements.hasInTableScope(TAG_ID.CAPTION)) { + p.openElements.generateImpliedEndTags(); + p.openElements.popUntilTagNamePopped(TAG_ID.CAPTION); + p.activeFormattingElements.clearToLastMarker(); + p.insertionMode = InsertionMode.IN_TABLE; + if (tn === TAG_ID.TABLE) endTagInTable(p, token); + } + break; + case TAG_ID.BODY: + case TAG_ID.COL: + case TAG_ID.COLGROUP: + case TAG_ID.HTML: + case TAG_ID.TBODY: + case TAG_ID.TD: + case TAG_ID.TFOOT: + case TAG_ID.TH: + case TAG_ID.THEAD: + case TAG_ID.TR: break; + default: endTagInBody(p, token); + } +} +function startTagInColumnGroup(p, token) { + switch (token.tagID) { + case TAG_ID.HTML: + startTagInBody(p, token); + break; + case TAG_ID.COL: + p._appendElement(token, NS.HTML); + token.ackSelfClosing = true; + break; + case TAG_ID.TEMPLATE: + startTagInHead(p, token); + break; + default: tokenInColumnGroup(p, token); + } +} +function endTagInColumnGroup(p, token) { + switch (token.tagID) { + case TAG_ID.COLGROUP: + if (p.openElements.currentTagId === TAG_ID.COLGROUP) { + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_TABLE; + } + break; + case TAG_ID.TEMPLATE: + templateEndTagInHead(p, token); + break; + case TAG_ID.COL: break; + default: tokenInColumnGroup(p, token); + } +} +function tokenInColumnGroup(p, token) { + if (p.openElements.currentTagId === TAG_ID.COLGROUP) { + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_TABLE; + p._processToken(token); + } +} +function startTagInTableBody(p, token) { + switch (token.tagID) { + case TAG_ID.TR: + p.openElements.clearBackToTableBodyContext(); + p._insertElement(token, NS.HTML); + p.insertionMode = InsertionMode.IN_ROW; + break; + case TAG_ID.TH: + case TAG_ID.TD: + p.openElements.clearBackToTableBodyContext(); + p._insertFakeElement(TAG_NAMES.TR, TAG_ID.TR); + p.insertionMode = InsertionMode.IN_ROW; + startTagInRow(p, token); + break; + case TAG_ID.CAPTION: + case TAG_ID.COL: + case TAG_ID.COLGROUP: + case TAG_ID.TBODY: + case TAG_ID.TFOOT: + case TAG_ID.THEAD: + if (p.openElements.hasTableBodyContextInTableScope()) { + p.openElements.clearBackToTableBodyContext(); + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_TABLE; + startTagInTable(p, token); + } + break; + default: startTagInTable(p, token); + } +} +function endTagInTableBody(p, token) { + const tn = token.tagID; + switch (token.tagID) { + case TAG_ID.TBODY: + case TAG_ID.TFOOT: + case TAG_ID.THEAD: + if (p.openElements.hasInTableScope(tn)) { + p.openElements.clearBackToTableBodyContext(); + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_TABLE; + } + break; + case TAG_ID.TABLE: + if (p.openElements.hasTableBodyContextInTableScope()) { + p.openElements.clearBackToTableBodyContext(); + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_TABLE; + endTagInTable(p, token); + } + break; + case TAG_ID.BODY: + case TAG_ID.CAPTION: + case TAG_ID.COL: + case TAG_ID.COLGROUP: + case TAG_ID.HTML: + case TAG_ID.TD: + case TAG_ID.TH: + case TAG_ID.TR: break; + default: endTagInTable(p, token); + } +} +function startTagInRow(p, token) { + switch (token.tagID) { + case TAG_ID.TH: + case TAG_ID.TD: + p.openElements.clearBackToTableRowContext(); + p._insertElement(token, NS.HTML); + p.insertionMode = InsertionMode.IN_CELL; + p.activeFormattingElements.insertMarker(); + break; + case TAG_ID.CAPTION: + case TAG_ID.COL: + case TAG_ID.COLGROUP: + case TAG_ID.TBODY: + case TAG_ID.TFOOT: + case TAG_ID.THEAD: + case TAG_ID.TR: + if (p.openElements.hasInTableScope(TAG_ID.TR)) { + p.openElements.clearBackToTableRowContext(); + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_TABLE_BODY; + startTagInTableBody(p, token); + } + break; + default: startTagInTable(p, token); + } +} +function endTagInRow(p, token) { + switch (token.tagID) { + case TAG_ID.TR: + if (p.openElements.hasInTableScope(TAG_ID.TR)) { + p.openElements.clearBackToTableRowContext(); + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_TABLE_BODY; + } + break; + case TAG_ID.TABLE: + if (p.openElements.hasInTableScope(TAG_ID.TR)) { + p.openElements.clearBackToTableRowContext(); + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_TABLE_BODY; + endTagInTableBody(p, token); + } + break; + case TAG_ID.TBODY: + case TAG_ID.TFOOT: + case TAG_ID.THEAD: + if (p.openElements.hasInTableScope(token.tagID) || p.openElements.hasInTableScope(TAG_ID.TR)) { + p.openElements.clearBackToTableRowContext(); + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_TABLE_BODY; + endTagInTableBody(p, token); + } + break; + case TAG_ID.BODY: + case TAG_ID.CAPTION: + case TAG_ID.COL: + case TAG_ID.COLGROUP: + case TAG_ID.HTML: + case TAG_ID.TD: + case TAG_ID.TH: break; + default: endTagInTable(p, token); + } +} +function startTagInCell(p, token) { + if (TABLE_VOID_ELEMENTS.has(token.tagID)) { + if (p.openElements.hasInTableScope(TAG_ID.TD) || p.openElements.hasInTableScope(TAG_ID.TH)) { + p._closeTableCell(); + startTagInRow(p, token); + } + } else startTagInBody(p, token); +} +function endTagInCell(p, token) { + const tn = token.tagID; + switch (tn) { + case TAG_ID.TD: + case TAG_ID.TH: + if (p.openElements.hasInTableScope(tn)) { + p.openElements.generateImpliedEndTags(); + p.openElements.popUntilTagNamePopped(tn); + p.activeFormattingElements.clearToLastMarker(); + p.insertionMode = InsertionMode.IN_ROW; + } + break; + case TAG_ID.TABLE: + case TAG_ID.TBODY: + case TAG_ID.TFOOT: + case TAG_ID.THEAD: + case TAG_ID.TR: + if (p.openElements.hasInTableScope(tn)) { + p._closeTableCell(); + endTagInRow(p, token); + } + break; + case TAG_ID.BODY: + case TAG_ID.CAPTION: + case TAG_ID.COL: + case TAG_ID.COLGROUP: + case TAG_ID.HTML: break; + default: endTagInBody(p, token); + } +} +function startTagInSelect(p, token) { + switch (token.tagID) { + case TAG_ID.HTML: + startTagInBody(p, token); + break; + case TAG_ID.OPTION: + if (p.openElements.currentTagId === TAG_ID.OPTION) p.openElements.pop(); + p._insertElement(token, NS.HTML); + break; + case TAG_ID.OPTGROUP: + if (p.openElements.currentTagId === TAG_ID.OPTION) p.openElements.pop(); + if (p.openElements.currentTagId === TAG_ID.OPTGROUP) p.openElements.pop(); + p._insertElement(token, NS.HTML); + break; + case TAG_ID.HR: + if (p.openElements.currentTagId === TAG_ID.OPTION) p.openElements.pop(); + if (p.openElements.currentTagId === TAG_ID.OPTGROUP) p.openElements.pop(); + p._appendElement(token, NS.HTML); + token.ackSelfClosing = true; + break; + case TAG_ID.INPUT: + case TAG_ID.KEYGEN: + case TAG_ID.TEXTAREA: + case TAG_ID.SELECT: + if (p.openElements.hasInSelectScope(TAG_ID.SELECT)) { + p.openElements.popUntilTagNamePopped(TAG_ID.SELECT); + p._resetInsertionMode(); + if (token.tagID !== TAG_ID.SELECT) p._processStartTag(token); + } + break; + case TAG_ID.SCRIPT: + case TAG_ID.TEMPLATE: + startTagInHead(p, token); + break; + default: + } +} +function endTagInSelect(p, token) { + switch (token.tagID) { + case TAG_ID.OPTGROUP: + if (p.openElements.stackTop > 0 && p.openElements.currentTagId === TAG_ID.OPTION && p.openElements.tagIDs[p.openElements.stackTop - 1] === TAG_ID.OPTGROUP) p.openElements.pop(); + if (p.openElements.currentTagId === TAG_ID.OPTGROUP) p.openElements.pop(); + break; + case TAG_ID.OPTION: + if (p.openElements.currentTagId === TAG_ID.OPTION) p.openElements.pop(); + break; + case TAG_ID.SELECT: + if (p.openElements.hasInSelectScope(TAG_ID.SELECT)) { + p.openElements.popUntilTagNamePopped(TAG_ID.SELECT); + p._resetInsertionMode(); + } + break; + case TAG_ID.TEMPLATE: + templateEndTagInHead(p, token); + break; + default: + } +} +function startTagInSelectInTable(p, token) { + const tn = token.tagID; + if (tn === TAG_ID.CAPTION || tn === TAG_ID.TABLE || tn === TAG_ID.TBODY || tn === TAG_ID.TFOOT || tn === TAG_ID.THEAD || tn === TAG_ID.TR || tn === TAG_ID.TD || tn === TAG_ID.TH) { + p.openElements.popUntilTagNamePopped(TAG_ID.SELECT); + p._resetInsertionMode(); + p._processStartTag(token); + } else startTagInSelect(p, token); +} +function endTagInSelectInTable(p, token) { + const tn = token.tagID; + if (tn === TAG_ID.CAPTION || tn === TAG_ID.TABLE || tn === TAG_ID.TBODY || tn === TAG_ID.TFOOT || tn === TAG_ID.THEAD || tn === TAG_ID.TR || tn === TAG_ID.TD || tn === TAG_ID.TH) { + if (p.openElements.hasInTableScope(tn)) { + p.openElements.popUntilTagNamePopped(TAG_ID.SELECT); + p._resetInsertionMode(); + p.onEndTag(token); + } + } else endTagInSelect(p, token); +} +function startTagInTemplate(p, token) { + switch (token.tagID) { + case TAG_ID.BASE: + case TAG_ID.BASEFONT: + case TAG_ID.BGSOUND: + case TAG_ID.LINK: + case TAG_ID.META: + case TAG_ID.NOFRAMES: + case TAG_ID.SCRIPT: + case TAG_ID.STYLE: + case TAG_ID.TEMPLATE: + case TAG_ID.TITLE: + startTagInHead(p, token); + break; + case TAG_ID.CAPTION: + case TAG_ID.COLGROUP: + case TAG_ID.TBODY: + case TAG_ID.TFOOT: + case TAG_ID.THEAD: + p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE; + p.insertionMode = InsertionMode.IN_TABLE; + startTagInTable(p, token); + break; + case TAG_ID.COL: + p.tmplInsertionModeStack[0] = InsertionMode.IN_COLUMN_GROUP; + p.insertionMode = InsertionMode.IN_COLUMN_GROUP; + startTagInColumnGroup(p, token); + break; + case TAG_ID.TR: + p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE_BODY; + p.insertionMode = InsertionMode.IN_TABLE_BODY; + startTagInTableBody(p, token); + break; + case TAG_ID.TD: + case TAG_ID.TH: + p.tmplInsertionModeStack[0] = InsertionMode.IN_ROW; + p.insertionMode = InsertionMode.IN_ROW; + startTagInRow(p, token); + break; + default: + p.tmplInsertionModeStack[0] = InsertionMode.IN_BODY; + p.insertionMode = InsertionMode.IN_BODY; + startTagInBody(p, token); + } +} +function endTagInTemplate(p, token) { + if (token.tagID === TAG_ID.TEMPLATE) templateEndTagInHead(p, token); +} +function eofInTemplate(p, token) { + if (p.openElements.tmplCount > 0) { + p.openElements.popUntilTagNamePopped(TAG_ID.TEMPLATE); + p.activeFormattingElements.clearToLastMarker(); + p.tmplInsertionModeStack.shift(); + p._resetInsertionMode(); + p.onEof(token); + } else stopParsing(p, token); +} +function startTagAfterBody(p, token) { + if (token.tagID === TAG_ID.HTML) startTagInBody(p, token); + else tokenAfterBody(p, token); +} +function endTagAfterBody(p, token) { + var _a; + if (token.tagID === TAG_ID.HTML) { + if (!p.fragmentContext) p.insertionMode = InsertionMode.AFTER_AFTER_BODY; + if (p.options.sourceCodeLocationInfo && p.openElements.tagIDs[0] === TAG_ID.HTML) { + p._setEndLocation(p.openElements.items[0], token); + const bodyElement = p.openElements.items[1]; + if (bodyElement && !((_a = p.treeAdapter.getNodeSourceCodeLocation(bodyElement)) === null || _a === void 0 ? void 0 : _a.endTag)) p._setEndLocation(bodyElement, token); + } + } else tokenAfterBody(p, token); +} +function tokenAfterBody(p, token) { + p.insertionMode = InsertionMode.IN_BODY; + modeInBody(p, token); +} +function startTagInFrameset(p, token) { + switch (token.tagID) { + case TAG_ID.HTML: + startTagInBody(p, token); + break; + case TAG_ID.FRAMESET: + p._insertElement(token, NS.HTML); + break; + case TAG_ID.FRAME: + p._appendElement(token, NS.HTML); + token.ackSelfClosing = true; + break; + case TAG_ID.NOFRAMES: + startTagInHead(p, token); + break; + default: + } +} +function endTagInFrameset(p, token) { + if (token.tagID === TAG_ID.FRAMESET && !p.openElements.isRootHtmlElementCurrent()) { + p.openElements.pop(); + if (!p.fragmentContext && p.openElements.currentTagId !== TAG_ID.FRAMESET) p.insertionMode = InsertionMode.AFTER_FRAMESET; + } +} +function startTagAfterFrameset(p, token) { + switch (token.tagID) { + case TAG_ID.HTML: + startTagInBody(p, token); + break; + case TAG_ID.NOFRAMES: + startTagInHead(p, token); + break; + default: + } +} +function endTagAfterFrameset(p, token) { + if (token.tagID === TAG_ID.HTML) p.insertionMode = InsertionMode.AFTER_AFTER_FRAMESET; +} +function startTagAfterAfterBody(p, token) { + if (token.tagID === TAG_ID.HTML) startTagInBody(p, token); + else tokenAfterAfterBody(p, token); +} +function tokenAfterAfterBody(p, token) { + p.insertionMode = InsertionMode.IN_BODY; + modeInBody(p, token); +} +function startTagAfterAfterFrameset(p, token) { + switch (token.tagID) { + case TAG_ID.HTML: + startTagInBody(p, token); + break; + case TAG_ID.NOFRAMES: + startTagInHead(p, token); + break; + default: + } +} +function nullCharacterInForeignContent(p, token) { + token.chars = "�"; + p._insertCharacters(token); +} +function characterInForeignContent(p, token) { + p._insertCharacters(token); + p.framesetOk = false; +} +function popUntilHtmlOrIntegrationPoint(p) { + while (p.treeAdapter.getNamespaceURI(p.openElements.current) !== NS.HTML && p.openElements.currentTagId !== void 0 && !p._isIntegrationPoint(p.openElements.currentTagId, p.openElements.current)) p.openElements.pop(); +} +function startTagInForeignContent(p, token) { + if (causesExit(token)) { + popUntilHtmlOrIntegrationPoint(p); + p._startTagOutsideForeignContent(token); + } else { + const current = p._getAdjustedCurrentElement(); + const currentNs = p.treeAdapter.getNamespaceURI(current); + if (currentNs === NS.MATHML) adjustTokenMathMLAttrs(token); + else if (currentNs === NS.SVG) { + adjustTokenSVGTagName(token); + adjustTokenSVGAttrs(token); + } + adjustTokenXMLAttrs(token); + if (token.selfClosing) p._appendElement(token, currentNs); + else p._insertElement(token, currentNs); + token.ackSelfClosing = true; + } +} +function endTagInForeignContent(p, token) { + if (token.tagID === TAG_ID.P || token.tagID === TAG_ID.BR) { + popUntilHtmlOrIntegrationPoint(p); + p._endTagOutsideForeignContent(token); + return; + } + for (let i = p.openElements.stackTop; i > 0; i--) { + const element = p.openElements.items[i]; + if (p.treeAdapter.getNamespaceURI(element) === NS.HTML) { + p._endTagOutsideForeignContent(token); + break; + } + const tagName = p.treeAdapter.getTagName(element); + if (tagName.toLowerCase() === token.tagName) { + token.tagName = tagName; + p.openElements.shortenToLength(i); + break; + } + } +} +//#endregion +//#region ../../node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/index.js +/** +* Parses an HTML string. +* +* @param html Input HTML string. +* @param options Parsing options. +* @returns Document +* +* @example +* +* ```js +* const parse5 = require('parse5'); +* +* const document = parse5.parse('Hi there!'); +* +* console.log(document.childNodes[1].tagName); //> 'html' +*``` +*/ +function parse(html, options) { + return Parser.parse(html, options); +} +//#endregion +export { ERR as ErrorCodes, parse }; diff --git a/node_modules/vite/dist/node/chunks/lib.js b/node_modules/vite/dist/node/chunks/lib.js new file mode 100644 index 00000000..776ce27c --- /dev/null +++ b/node_modules/vite/dist/node/chunks/lib.js @@ -0,0 +1,371 @@ +import { t as __commonJSMin } from "./chunk.js"; +//#region ../../node_modules/.pnpm/postcss-value-parser@4.2.0/node_modules/postcss-value-parser/lib/parse.js +var require_parse = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var openParentheses = "(".charCodeAt(0); + var closeParentheses = ")".charCodeAt(0); + var singleQuote = "'".charCodeAt(0); + var doubleQuote = "\"".charCodeAt(0); + var backslash = "\\".charCodeAt(0); + var slash = "/".charCodeAt(0); + var comma = ",".charCodeAt(0); + var colon = ":".charCodeAt(0); + var star = "*".charCodeAt(0); + var uLower = "u".charCodeAt(0); + var uUpper = "U".charCodeAt(0); + var plus = "+".charCodeAt(0); + var isUnicodeRange = /^[a-f0-9?-]+$/i; + module.exports = function(input) { + var tokens = []; + var value = input; + var next, quote, prev, token, escape, escapePos, whitespacePos, parenthesesOpenPos; + var pos = 0; + var code = value.charCodeAt(pos); + var max = value.length; + var stack = [{ nodes: tokens }]; + var balanced = 0; + var parent; + var name = ""; + var before = ""; + var after = ""; + while (pos < max) if (code <= 32) { + next = pos; + do { + next += 1; + code = value.charCodeAt(next); + } while (code <= 32); + token = value.slice(pos, next); + prev = tokens[tokens.length - 1]; + if (code === closeParentheses && balanced) after = token; + else if (prev && prev.type === "div") { + prev.after = token; + prev.sourceEndIndex += token.length; + } else if (code === comma || code === colon || code === slash && value.charCodeAt(next + 1) !== star && (!parent || parent && parent.type === "function" && parent.value !== "calc")) before = token; + else tokens.push({ + type: "space", + sourceIndex: pos, + sourceEndIndex: next, + value: token + }); + pos = next; + } else if (code === singleQuote || code === doubleQuote) { + next = pos; + quote = code === singleQuote ? "'" : "\""; + token = { + type: "string", + sourceIndex: pos, + quote + }; + do { + escape = false; + next = value.indexOf(quote, next + 1); + if (~next) { + escapePos = next; + while (value.charCodeAt(escapePos - 1) === backslash) { + escapePos -= 1; + escape = !escape; + } + } else { + value += quote; + next = value.length - 1; + token.unclosed = true; + } + } while (escape); + token.value = value.slice(pos + 1, next); + token.sourceEndIndex = token.unclosed ? next : next + 1; + tokens.push(token); + pos = next + 1; + code = value.charCodeAt(pos); + } else if (code === slash && value.charCodeAt(pos + 1) === star) { + next = value.indexOf("*/", pos); + token = { + type: "comment", + sourceIndex: pos, + sourceEndIndex: next + 2 + }; + if (next === -1) { + token.unclosed = true; + next = value.length; + token.sourceEndIndex = next; + } + token.value = value.slice(pos + 2, next); + tokens.push(token); + pos = next + 2; + code = value.charCodeAt(pos); + } else if ((code === slash || code === star) && parent && parent.type === "function" && parent.value === "calc") { + token = value[pos]; + tokens.push({ + type: "word", + sourceIndex: pos - before.length, + sourceEndIndex: pos + token.length, + value: token + }); + pos += 1; + code = value.charCodeAt(pos); + } else if (code === slash || code === comma || code === colon) { + token = value[pos]; + tokens.push({ + type: "div", + sourceIndex: pos - before.length, + sourceEndIndex: pos + token.length, + value: token, + before, + after: "" + }); + before = ""; + pos += 1; + code = value.charCodeAt(pos); + } else if (openParentheses === code) { + next = pos; + do { + next += 1; + code = value.charCodeAt(next); + } while (code <= 32); + parenthesesOpenPos = pos; + token = { + type: "function", + sourceIndex: pos - name.length, + value: name, + before: value.slice(parenthesesOpenPos + 1, next) + }; + pos = next; + if (name === "url" && code !== singleQuote && code !== doubleQuote) { + next -= 1; + do { + escape = false; + next = value.indexOf(")", next + 1); + if (~next) { + escapePos = next; + while (value.charCodeAt(escapePos - 1) === backslash) { + escapePos -= 1; + escape = !escape; + } + } else { + value += ")"; + next = value.length - 1; + token.unclosed = true; + } + } while (escape); + whitespacePos = next; + do { + whitespacePos -= 1; + code = value.charCodeAt(whitespacePos); + } while (code <= 32); + if (parenthesesOpenPos < whitespacePos) { + if (pos !== whitespacePos + 1) token.nodes = [{ + type: "word", + sourceIndex: pos, + sourceEndIndex: whitespacePos + 1, + value: value.slice(pos, whitespacePos + 1) + }]; + else token.nodes = []; + if (token.unclosed && whitespacePos + 1 !== next) { + token.after = ""; + token.nodes.push({ + type: "space", + sourceIndex: whitespacePos + 1, + sourceEndIndex: next, + value: value.slice(whitespacePos + 1, next) + }); + } else { + token.after = value.slice(whitespacePos + 1, next); + token.sourceEndIndex = next; + } + } else { + token.after = ""; + token.nodes = []; + } + pos = next + 1; + token.sourceEndIndex = token.unclosed ? next : pos; + code = value.charCodeAt(pos); + tokens.push(token); + } else { + balanced += 1; + token.after = ""; + token.sourceEndIndex = pos + 1; + tokens.push(token); + stack.push(token); + tokens = token.nodes = []; + parent = token; + } + name = ""; + } else if (closeParentheses === code && balanced) { + pos += 1; + code = value.charCodeAt(pos); + parent.after = after; + parent.sourceEndIndex += after.length; + after = ""; + balanced -= 1; + stack[stack.length - 1].sourceEndIndex = pos; + stack.pop(); + parent = stack[balanced]; + tokens = parent.nodes; + } else { + next = pos; + do { + if (code === backslash) next += 1; + next += 1; + code = value.charCodeAt(next); + } while (next < max && !(code <= 32 || code === singleQuote || code === doubleQuote || code === comma || code === colon || code === slash || code === openParentheses || code === star && parent && parent.type === "function" && parent.value === "calc" || code === slash && parent.type === "function" && parent.value === "calc" || code === closeParentheses && balanced)); + token = value.slice(pos, next); + if (openParentheses === code) name = token; + else if ((uLower === token.charCodeAt(0) || uUpper === token.charCodeAt(0)) && plus === token.charCodeAt(1) && isUnicodeRange.test(token.slice(2))) tokens.push({ + type: "unicode-range", + sourceIndex: pos, + sourceEndIndex: next, + value: token + }); + else tokens.push({ + type: "word", + sourceIndex: pos, + sourceEndIndex: next, + value: token + }); + pos = next; + } + for (pos = stack.length - 1; pos; pos -= 1) { + stack[pos].unclosed = true; + stack[pos].sourceEndIndex = value.length; + } + return stack[0].nodes; + }; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-value-parser@4.2.0/node_modules/postcss-value-parser/lib/walk.js +var require_walk = /* @__PURE__ */ __commonJSMin(((exports, module) => { + module.exports = function walk(nodes, cb, bubble) { + var i, max, node, result; + for (i = 0, max = nodes.length; i < max; i += 1) { + node = nodes[i]; + if (!bubble) result = cb(node, i, nodes); + if (result !== false && node.type === "function" && Array.isArray(node.nodes)) walk(node.nodes, cb, bubble); + if (bubble) cb(node, i, nodes); + } + }; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-value-parser@4.2.0/node_modules/postcss-value-parser/lib/stringify.js +var require_stringify = /* @__PURE__ */ __commonJSMin(((exports, module) => { + function stringifyNode(node, custom) { + var type = node.type; + var value = node.value; + var buf; + var customResult; + if (custom && (customResult = custom(node)) !== void 0) return customResult; + else if (type === "word" || type === "space") return value; + else if (type === "string") { + buf = node.quote || ""; + return buf + value + (node.unclosed ? "" : buf); + } else if (type === "comment") return "/*" + value + (node.unclosed ? "" : "*/"); + else if (type === "div") return (node.before || "") + value + (node.after || ""); + else if (Array.isArray(node.nodes)) { + buf = stringify(node.nodes, custom); + if (type !== "function") return buf; + return value + "(" + (node.before || "") + buf + (node.after || "") + (node.unclosed ? "" : ")"); + } + return value; + } + function stringify(nodes, custom) { + var result, i; + if (Array.isArray(nodes)) { + result = ""; + for (i = nodes.length - 1; ~i; i -= 1) result = stringifyNode(nodes[i], custom) + result; + return result; + } + return stringifyNode(nodes, custom); + } + module.exports = stringify; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-value-parser@4.2.0/node_modules/postcss-value-parser/lib/unit.js +var require_unit = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var minus = "-".charCodeAt(0); + var plus = "+".charCodeAt(0); + var dot = ".".charCodeAt(0); + var exp = "e".charCodeAt(0); + var EXP = "E".charCodeAt(0); + function likeNumber(value) { + var code = value.charCodeAt(0); + var nextCode; + if (code === plus || code === minus) { + nextCode = value.charCodeAt(1); + if (nextCode >= 48 && nextCode <= 57) return true; + var nextNextCode = value.charCodeAt(2); + if (nextCode === dot && nextNextCode >= 48 && nextNextCode <= 57) return true; + return false; + } + if (code === dot) { + nextCode = value.charCodeAt(1); + if (nextCode >= 48 && nextCode <= 57) return true; + return false; + } + if (code >= 48 && code <= 57) return true; + return false; + } + module.exports = function(value) { + var pos = 0; + var length = value.length; + var code; + var nextCode; + var nextNextCode; + if (length === 0 || !likeNumber(value)) return false; + code = value.charCodeAt(pos); + if (code === plus || code === minus) pos++; + while (pos < length) { + code = value.charCodeAt(pos); + if (code < 48 || code > 57) break; + pos += 1; + } + code = value.charCodeAt(pos); + nextCode = value.charCodeAt(pos + 1); + if (code === dot && nextCode >= 48 && nextCode <= 57) { + pos += 2; + while (pos < length) { + code = value.charCodeAt(pos); + if (code < 48 || code > 57) break; + pos += 1; + } + } + code = value.charCodeAt(pos); + nextCode = value.charCodeAt(pos + 1); + nextNextCode = value.charCodeAt(pos + 2); + if ((code === exp || code === EXP) && (nextCode >= 48 && nextCode <= 57 || (nextCode === plus || nextCode === minus) && nextNextCode >= 48 && nextNextCode <= 57)) { + pos += nextCode === plus || nextCode === minus ? 3 : 2; + while (pos < length) { + code = value.charCodeAt(pos); + if (code < 48 || code > 57) break; + pos += 1; + } + } + return { + number: value.slice(0, pos), + unit: value.slice(pos) + }; + }; +})); +//#endregion +//#region ../../node_modules/.pnpm/postcss-value-parser@4.2.0/node_modules/postcss-value-parser/lib/index.js +var require_lib = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var parse = require_parse(); + var walk = require_walk(); + var stringify = require_stringify(); + function ValueParser(value) { + if (this instanceof ValueParser) { + this.nodes = parse(value); + return this; + } + return new ValueParser(value); + } + ValueParser.prototype.toString = function() { + return Array.isArray(this.nodes) ? stringify(this.nodes) : ""; + }; + ValueParser.prototype.walk = function(cb, bubble) { + walk(this.nodes, cb, bubble); + return this; + }; + ValueParser.unit = require_unit(); + ValueParser.walk = walk; + ValueParser.stringify = stringify; + module.exports = ValueParser; +})); +//#endregion +export { require_lib as t }; diff --git a/node_modules/vite/dist/node/chunks/logger.js b/node_modules/vite/dist/node/chunks/logger.js new file mode 100644 index 00000000..bd8dd7ca --- /dev/null +++ b/node_modules/vite/dist/node/chunks/logger.js @@ -0,0 +1,322 @@ +import { o as __toESM, t as __commonJSMin } from "./chunk.js"; +import { readFileSync } from "node:fs"; +import path, { resolve } from "node:path"; +import { fileURLToPath } from "node:url"; +import readline from "node:readline"; +//#region ../../node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js +var require_picocolors = /* @__PURE__ */ __commonJSMin(((exports, module) => { + let p = process || {}, argv = p.argv || [], env = p.env || {}; + let isColorSupported = !(!!env.NO_COLOR || argv.includes("--no-color")) && (!!env.FORCE_COLOR || argv.includes("--color") || p.platform === "win32" || (p.stdout || {}).isTTY && env.TERM !== "dumb" || !!env.CI); + let formatter = (open, close, replace = open) => (input) => { + let string = "" + input, index = string.indexOf(close, open.length); + return ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close; + }; + let replaceClose = (string, close, replace, index) => { + let result = "", cursor = 0; + do { + result += string.substring(cursor, index) + replace; + cursor = index + close.length; + index = string.indexOf(close, cursor); + } while (~index); + return result + string.substring(cursor); + }; + let createColors = (enabled = isColorSupported) => { + let f = enabled ? formatter : () => String; + return { + isColorSupported: enabled, + reset: f("\x1B[0m", "\x1B[0m"), + bold: f("\x1B[1m", "\x1B[22m", "\x1B[22m\x1B[1m"), + dim: f("\x1B[2m", "\x1B[22m", "\x1B[22m\x1B[2m"), + italic: f("\x1B[3m", "\x1B[23m"), + underline: f("\x1B[4m", "\x1B[24m"), + inverse: f("\x1B[7m", "\x1B[27m"), + hidden: f("\x1B[8m", "\x1B[28m"), + strikethrough: f("\x1B[9m", "\x1B[29m"), + black: f("\x1B[30m", "\x1B[39m"), + red: f("\x1B[31m", "\x1B[39m"), + green: f("\x1B[32m", "\x1B[39m"), + yellow: f("\x1B[33m", "\x1B[39m"), + blue: f("\x1B[34m", "\x1B[39m"), + magenta: f("\x1B[35m", "\x1B[39m"), + cyan: f("\x1B[36m", "\x1B[39m"), + white: f("\x1B[37m", "\x1B[39m"), + gray: f("\x1B[90m", "\x1B[39m"), + bgBlack: f("\x1B[40m", "\x1B[49m"), + bgRed: f("\x1B[41m", "\x1B[49m"), + bgGreen: f("\x1B[42m", "\x1B[49m"), + bgYellow: f("\x1B[43m", "\x1B[49m"), + bgBlue: f("\x1B[44m", "\x1B[49m"), + bgMagenta: f("\x1B[45m", "\x1B[49m"), + bgCyan: f("\x1B[46m", "\x1B[49m"), + bgWhite: f("\x1B[47m", "\x1B[49m"), + blackBright: f("\x1B[90m", "\x1B[39m"), + redBright: f("\x1B[91m", "\x1B[39m"), + greenBright: f("\x1B[92m", "\x1B[39m"), + yellowBright: f("\x1B[93m", "\x1B[39m"), + blueBright: f("\x1B[94m", "\x1B[39m"), + magentaBright: f("\x1B[95m", "\x1B[39m"), + cyanBright: f("\x1B[96m", "\x1B[39m"), + whiteBright: f("\x1B[97m", "\x1B[39m"), + bgBlackBright: f("\x1B[100m", "\x1B[49m"), + bgRedBright: f("\x1B[101m", "\x1B[49m"), + bgGreenBright: f("\x1B[102m", "\x1B[49m"), + bgYellowBright: f("\x1B[103m", "\x1B[49m"), + bgBlueBright: f("\x1B[104m", "\x1B[49m"), + bgMagentaBright: f("\x1B[105m", "\x1B[49m"), + bgCyanBright: f("\x1B[106m", "\x1B[49m"), + bgWhiteBright: f("\x1B[107m", "\x1B[49m") + }; + }; + module.exports = createColors(); + module.exports.createColors = createColors; +})); +//#endregion +//#region src/node/constants.ts +const { version } = JSON.parse(readFileSync(new URL("../../package.json", new URL("../../../src/node/constants.ts", import.meta.url))).toString()); +const ROLLUP_HOOKS = [ + "options", + "buildStart", + "buildEnd", + "renderStart", + "renderError", + "renderChunk", + "writeBundle", + "generateBundle", + "banner", + "footer", + "augmentChunkHash", + "outputOptions", + "intro", + "outro", + "closeBundle", + "closeWatcher", + "load", + "moduleParsed", + "watchChange", + "resolveDynamicImport", + "resolveId", + "transform", + "onLog" +]; +const VERSION = version; +const DEFAULT_MAIN_FIELDS = [ + "browser", + "module", + "jsnext:main", + "jsnext" +]; +const DEFAULT_CLIENT_MAIN_FIELDS = Object.freeze(DEFAULT_MAIN_FIELDS); +const DEFAULT_SERVER_MAIN_FIELDS = Object.freeze(DEFAULT_MAIN_FIELDS.filter((f) => f !== "browser")); +/** +* A special condition that would be replaced with production or development +* depending on NODE_ENV env variable +*/ +const DEV_PROD_CONDITION = `development|production`; +const DEFAULT_CONDITIONS = [ + "module", + "browser", + "node", + DEV_PROD_CONDITION +]; +const DEFAULT_CLIENT_CONDITIONS = Object.freeze(DEFAULT_CONDITIONS.filter((c) => c !== "node")); +const DEFAULT_SERVER_CONDITIONS = Object.freeze(DEFAULT_CONDITIONS.filter((c) => c !== "browser")); +const DEFAULT_EXTERNAL_CONDITIONS = Object.freeze(["node", "module-sync"]); +const DEFAULT_EXTENSIONS = [ + ".mjs", + ".js", + ".mts", + ".ts", + ".jsx", + ".tsx", + ".json" +]; +/** +* The browser versions that are included in the Baseline Widely Available on 2025-05-01. +* +* This value would be bumped on each major release of Vite. +* +* The value is generated by `pnpm generate-target` script. +*/ +const ESBUILD_BASELINE_WIDELY_AVAILABLE_TARGET = [ + "chrome111", + "edge111", + "firefox114", + "safari16.4", + "ios16.4" +]; +const DEFAULT_CONFIG_FILES = [ + "vite.config.js", + "vite.config.mjs", + "vite.config.ts", + "vite.config.cjs", + "vite.config.mts", + "vite.config.cts" +]; +const JS_TYPES_RE = /\.(?:j|t)sx?$|\.mjs$/; +const CSS_LANGS_RE = /\.(css|less|sass|scss|styl|stylus|pcss|postcss|sss)(?:$|\?)/; +const OPTIMIZABLE_ENTRY_RE = /\.[cm]?[jt]s$/; +const SPECIAL_QUERY_RE = /[?&](?:worker|sharedworker|raw|url)\b/; +/** +* Prefix for resolved fs paths, since windows paths may not be valid as URLs. +*/ +const FS_PREFIX = `/@fs/`; +const CLIENT_PUBLIC_PATH = `/@vite/client`; +const ENV_PUBLIC_PATH = `/@vite/env`; +const VITE_PACKAGE_DIR = resolve(fileURLToPath(new URL("../../../src/node/constants.ts", import.meta.url)), "../../.."); +const CLIENT_ENTRY = resolve(VITE_PACKAGE_DIR, "dist/client/client.mjs"); +const ENV_ENTRY = resolve(VITE_PACKAGE_DIR, "dist/client/env.mjs"); +const CLIENT_DIR = path.dirname(CLIENT_ENTRY); +const KNOWN_ASSET_TYPES = [ + "apng", + "bmp", + "png", + "jpe?g", + "jfif", + "pjpeg", + "pjp", + "gif", + "svg", + "ico", + "webp", + "avif", + "cur", + "jxl", + "mp4", + "webm", + "ogg", + "mp3", + "wav", + "flac", + "aac", + "opus", + "mov", + "m4a", + "vtt", + "woff2?", + "eot", + "ttf", + "otf", + "webmanifest", + "pdf", + "txt" +]; +const DEFAULT_ASSETS_RE = new RegExp(`\\.(` + KNOWN_ASSET_TYPES.join("|") + `)(\\?.*)?$`, "i"); +const DEP_VERSION_RE = /[?&](v=[\w.-]+)\b/; +const loopbackHosts = new Set([ + "localhost", + "127.0.0.1", + "::1", + "0000:0000:0000:0000:0000:0000:0000:0001" +]); +const wildcardHosts = new Set([ + "0.0.0.0", + "::", + "0000:0000:0000:0000:0000:0000:0000:0000" +]); +const DEFAULT_DEV_PORT = 5173; +const DEFAULT_PREVIEW_PORT = 4173; +const DEFAULT_ASSETS_INLINE_LIMIT = 4096; +const defaultAllowedOrigins = /^https?:\/\/(?:(?:[^:]+\.)?localhost|127\.0\.0\.1|\[::1\])(?::\d+)?$/; +const METADATA_FILENAME = "_metadata.json"; +const ERR_OPTIMIZE_DEPS_PROCESSING_ERROR = "ERR_OPTIMIZE_DEPS_PROCESSING_ERROR"; +const ERR_FILE_NOT_FOUND_IN_OPTIMIZED_DEP_DIR = "ERR_FILE_NOT_FOUND_IN_OPTIMIZED_DEP_DIR"; +//#endregion +//#region src/node/logger.ts +var import_picocolors = /* @__PURE__ */ __toESM(require_picocolors(), 1); +const LogLevels = { + silent: 0, + error: 1, + warn: 2, + info: 3 +}; +let lastType; +let lastMsg; +let sameCount = 0; +function clearScreen() { + const repeatCount = process.stdout.rows - 2; + const blank = repeatCount > 0 ? "\n".repeat(repeatCount) : ""; + console.log(blank); + readline.cursorTo(process.stdout, 0, 0); + readline.clearScreenDown(process.stdout); +} +let timeFormatter; +function getTimeFormatter() { + timeFormatter ??= new Intl.DateTimeFormat(void 0, { + hour: "numeric", + minute: "numeric", + second: "numeric" + }); + return timeFormatter; +} +function createLogger(level = "info", options = {}) { + if (options.customLogger) return options.customLogger; + const loggedErrors = /* @__PURE__ */ new WeakSet(); + const { prefix = "[vite]", allowClearScreen = true, console = globalThis.console } = options; + const thresh = LogLevels[level]; + const canClearScreen = allowClearScreen && process.stdout.isTTY && !process.env.CI; + const clear = canClearScreen ? clearScreen : () => {}; + function format(type, msg, options = {}) { + if (options.timestamp) { + let tag = ""; + if (type === "info") tag = import_picocolors.default.cyan(import_picocolors.default.bold(prefix)); + else if (type === "warn") tag = import_picocolors.default.yellow(import_picocolors.default.bold(prefix)); + else tag = import_picocolors.default.red(import_picocolors.default.bold(prefix)); + const environment = options.environment ? options.environment + " " : ""; + return `${import_picocolors.default.dim(getTimeFormatter().format(/* @__PURE__ */ new Date()))} ${tag} ${environment}${msg}`; + } else return msg; + } + function output(type, msg, options = {}) { + if (thresh >= LogLevels[type]) { + const method = type === "info" ? "log" : type; + if (options.error) loggedErrors.add(options.error); + if (canClearScreen) if (type === lastType && msg === lastMsg) { + sameCount++; + clear(); + console[method](format(type, msg, options), import_picocolors.default.yellow(`(x${sameCount + 1})`)); + } else { + sameCount = 0; + lastMsg = msg; + lastType = type; + if (options.clear) clear(); + console[method](format(type, msg, options)); + } + else console[method](format(type, msg, options)); + } + } + const warnedMessages = /* @__PURE__ */ new Set(); + const logger = { + hasWarned: false, + info(msg, opts) { + output("info", msg, opts); + }, + warn(msg, opts) { + logger.hasWarned = true; + output("warn", msg, opts); + }, + warnOnce(msg, opts) { + if (warnedMessages.has(msg)) return; + logger.hasWarned = true; + output("warn", msg, opts); + warnedMessages.add(msg); + }, + error(msg, opts) { + logger.hasWarned = true; + output("error", msg, opts); + }, + clearScreen(type) { + if (thresh >= LogLevels[type]) clear(); + }, + hasErrorLogged(error) { + return loggedErrors.has(error); + } + }; + return logger; +} +function printServerUrls(urls, optionsHost, info) { + const colorUrl = (url) => import_picocolors.default.cyan(url.replace(/:(\d+)\//, (_, port) => `:${import_picocolors.default.bold(port)}/`)); + for (const url of urls.local) info(` ${import_picocolors.default.green("➜")} ${import_picocolors.default.bold("Local")}: ${colorUrl(url)}`); + for (const url of urls.network) info(` ${import_picocolors.default.green("➜")} ${import_picocolors.default.bold("Network")}: ${colorUrl(url)}`); + if (urls.network.length === 0 && optionsHost === void 0) info(import_picocolors.default.dim(` ${import_picocolors.default.green("➜")} ${import_picocolors.default.bold("Network")}: use `) + import_picocolors.default.bold("--host") + import_picocolors.default.dim(" to expose")); +} +//#endregion +export { OPTIMIZABLE_ENTRY_RE as A, ERR_FILE_NOT_FOUND_IN_OPTIMIZED_DEP_DIR as C, JS_TYPES_RE as D, FS_PREFIX as E, defaultAllowedOrigins as F, loopbackHosts as I, wildcardHosts as L, SPECIAL_QUERY_RE as M, VERSION as N, KNOWN_ASSET_TYPES as O, VITE_PACKAGE_DIR as P, require_picocolors as R, ENV_PUBLIC_PATH as S, ESBUILD_BASELINE_WIDELY_AVAILABLE_TARGET as T, DEFAULT_SERVER_CONDITIONS as _, CLIENT_ENTRY as a, DEV_PROD_CONDITION as b, DEFAULT_ASSETS_INLINE_LIMIT as c, DEFAULT_CLIENT_MAIN_FIELDS as d, DEFAULT_CONFIG_FILES as f, DEFAULT_PREVIEW_PORT as g, DEFAULT_EXTERNAL_CONDITIONS as h, CLIENT_DIR as i, ROLLUP_HOOKS as j, METADATA_FILENAME as k, DEFAULT_ASSETS_RE as l, DEFAULT_EXTENSIONS as m, createLogger as n, CLIENT_PUBLIC_PATH as o, DEFAULT_DEV_PORT as p, printServerUrls as r, CSS_LANGS_RE as s, LogLevels as t, DEFAULT_CLIENT_CONDITIONS as u, DEFAULT_SERVER_MAIN_FIELDS as v, ERR_OPTIMIZE_DEPS_PROCESSING_ERROR as w, ENV_ENTRY as x, DEP_VERSION_RE as y }; diff --git a/node_modules/vite/dist/node/chunks/moduleRunnerTransport.d.ts b/node_modules/vite/dist/node/chunks/moduleRunnerTransport.d.ts new file mode 100644 index 00000000..27e8a182 --- /dev/null +++ b/node_modules/vite/dist/node/chunks/moduleRunnerTransport.d.ts @@ -0,0 +1,96 @@ +import { HotPayload } from "#types/hmrPayload"; + +//#region src/shared/invokeMethods.d.ts +interface FetchFunctionOptions { + cached?: boolean; + startOffset?: number; +} +type FetchResult = CachedFetchResult | ExternalFetchResult | ViteFetchResult; +interface CachedFetchResult { + /** + * If the module is cached in the runner, this confirms + * it was not invalidated on the server side. + */ + cache: true; +} +interface ExternalFetchResult { + /** + * The path to the externalized module starting with file://. + * By default this will be imported via a dynamic "import" + * instead of being transformed by Vite and loaded with the Vite runner. + */ + externalize: string; + /** + * Type of the module. Used to determine if the import statement is correct. + * For example, if Vite needs to throw an error if a variable is not actually exported. + */ + type: "module" | "commonjs" | "builtin" | "network"; +} +interface ViteFetchResult { + /** + * Code that will be evaluated by the Vite runner. + * By default this will be wrapped in an async function. + */ + code: string; + /** + * File path of the module on disk. + * This will be resolved as import.meta.url/filename. + * Will be `null` for virtual modules. + */ + file: string | null; + /** + * Module ID in the server module graph. + */ + id: string; + /** + * Module URL used in the import. + */ + url: string; + /** + * Invalidate module on the client side. + */ + invalidate: boolean; +} +type InvokeMethods = { + fetchModule: (id: string, importer?: string, options?: FetchFunctionOptions) => Promise; + getBuiltins: () => Promise>; +}; +//#endregion +//#region src/shared/moduleRunnerTransport.d.ts +type ModuleRunnerTransportHandlers = { + onMessage: (data: HotPayload) => void; + onDisconnection: () => void; +}; +/** +* "send and connect" or "invoke" must be implemented +*/ +interface ModuleRunnerTransport { + connect?(handlers: ModuleRunnerTransportHandlers): Promise | void; + disconnect?(): Promise | void; + send?(data: HotPayload): Promise | void; + invoke?(data: HotPayload): Promise<{ + result: any; + } | { + error: any; + }>; + timeout?: number; +} +interface NormalizedModuleRunnerTransport { + connect?(onMessage?: (data: HotPayload) => void): Promise | void; + disconnect?(): Promise | void; + send(data: HotPayload): Promise; + invoke(name: T, data: Parameters): Promise>>; +} +declare const createWebSocketModuleRunnerTransport: (options: { + createConnection: () => WebSocket; + pingInterval?: number; +}) => Required>; +//#endregion +export { ExternalFetchResult as a, ViteFetchResult as c, createWebSocketModuleRunnerTransport as i, ModuleRunnerTransportHandlers as n, FetchFunctionOptions as o, NormalizedModuleRunnerTransport as r, FetchResult as s, ModuleRunnerTransport as t }; \ No newline at end of file diff --git a/node_modules/vite/dist/node/chunks/node.js b/node_modules/vite/dist/node/chunks/node.js new file mode 100644 index 00000000..07053572 --- /dev/null +++ b/node_modules/vite/dist/node/chunks/node.js @@ -0,0 +1,34874 @@ +import { a as __toCommonJS, i as __require, n as __esmMin, o as __toESM, r as __exportAll, t as __commonJSMin } from "./chunk.js"; +import { A as OPTIMIZABLE_ENTRY_RE, C as ERR_FILE_NOT_FOUND_IN_OPTIMIZED_DEP_DIR, D as JS_TYPES_RE, E as FS_PREFIX, F as defaultAllowedOrigins, I as loopbackHosts, L as wildcardHosts, M as SPECIAL_QUERY_RE, N as VERSION, O as KNOWN_ASSET_TYPES, P as VITE_PACKAGE_DIR, R as require_picocolors, S as ENV_PUBLIC_PATH, T as ESBUILD_BASELINE_WIDELY_AVAILABLE_TARGET, _ as DEFAULT_SERVER_CONDITIONS, a as CLIENT_ENTRY, b as DEV_PROD_CONDITION, c as DEFAULT_ASSETS_INLINE_LIMIT, d as DEFAULT_CLIENT_MAIN_FIELDS, f as DEFAULT_CONFIG_FILES, g as DEFAULT_PREVIEW_PORT, h as DEFAULT_EXTERNAL_CONDITIONS, i as CLIENT_DIR, j as ROLLUP_HOOKS, k as METADATA_FILENAME, l as DEFAULT_ASSETS_RE, m as DEFAULT_EXTENSIONS, n as createLogger, o as CLIENT_PUBLIC_PATH, p as DEFAULT_DEV_PORT, r as printServerUrls, s as CSS_LANGS_RE, t as LogLevels, u as DEFAULT_CLIENT_CONDITIONS, v as DEFAULT_SERVER_MAIN_FIELDS, w as ERR_OPTIMIZE_DEPS_PROCESSING_ERROR, x as ENV_ENTRY, y as DEP_VERSION_RE } from "./logger.js"; +import { builtinModules, createRequire } from "node:module"; +import { parseAst, parseAstAsync } from "rolldown/parseAst"; +import { esmExternalRequirePlugin, esmExternalRequirePlugin as esmExternalRequirePlugin$1 } from "rolldown/plugins"; +import { TsconfigCache, Visitor, minify, minifySync, parse, parseSync, transformSync } from "rolldown/utils"; +import * as fs$1 from "node:fs"; +import fs, { existsSync, readFileSync } from "node:fs"; +import path, { basename, dirname, extname, isAbsolute, join, normalize, posix, relative, resolve, sep } from "node:path"; +import fsp, { constants } from "node:fs/promises"; +import { URL as URL$1, fileURLToPath, pathToFileURL } from "node:url"; +import { format, formatWithOptions, inspect, parseEnv, promisify, stripVTControlCharacters } from "node:util"; +import { performance as performance$1 } from "node:perf_hooks"; +import crypto, { randomUUID } from "node:crypto"; +import picomatch from "picomatch"; +import { VERSION as rolldownVersion, rolldown } from "rolldown"; +import os from "node:os"; +import net from "node:net"; +import childProcess, { exec, execFile, execSync } from "node:child_process"; +import { promises } from "node:dns"; +import { isatty } from "node:tty"; +import path$1, { isAbsolute as isAbsolute$1, join as join$1, posix as posix$1, resolve as resolve$1, win32 } from "path"; +import { exactRegex, makeIdFiltersToMatchWithQuery, prefixRegex, withFilter } from "rolldown/filter"; +import { dev, oxcRuntimePlugin, resolveTsconfig, scan, viteAliasPlugin, viteBuildImportAnalysisPlugin, viteDynamicImportVarsPlugin, viteImportGlobPlugin, viteJsonPlugin, viteLoadFallbackPlugin, viteManifestPlugin, viteModulePreloadPolyfillPlugin, viteReporterPlugin, viteResolvePlugin, viteTransformPlugin, viteWasmFallbackPlugin, viteWebWorkerPostPlugin } from "rolldown/experimental"; +import readline from "node:readline"; +import { MessageChannel, Worker } from "node:worker_threads"; +import isModuleSyncConditionEnabled from "#module-sync-enabled"; +import { escapePath, glob, globSync, isDynamicPattern } from "tinyglobby"; +import assert from "node:assert"; +import process$1 from "node:process"; +import v8 from "node:v8"; +import { EventEmitter } from "node:events"; +import { STATUS_CODES, createServer, get } from "node:http"; +import { createServer as createServer$1, get as get$1 } from "node:https"; +import { readdirSync, statSync } from "fs"; +import { ESModulesEvaluator, ModuleRunner, createNodeImportMeta } from "vite/module-runner"; +import { Buffer as Buffer$1 } from "node:buffer"; +import zlib from "zlib"; +import { setTimeout as setTimeout$1 } from "node:timers/promises"; +import * as qs from "node:querystring"; +//#region src/shared/constants.ts +/** +* Prefix for resolved Ids that are not valid browser import specifiers +*/ +const VALID_ID_PREFIX = `/@id/`; +/** +* Plugins that use 'virtual modules' (e.g. for helper functions), prefix the +* module ID with `\0`, a convention from the rollup ecosystem. +* This prevents other plugins from trying to process the id (like node resolution), +* and core features like sourcemaps can use this info to differentiate between +* virtual modules and regular files. +* `\0` is not a permitted char in import URLs so we have to replace them during +* import analysis. The id will be decoded back before entering the plugins pipeline. +* These encoded virtual ids are also prefixed by the VALID_ID_PREFIX, so virtual +* modules in the browser end up encoded as `/@id/__x00__{id}` +*/ +const NULL_BYTE_PLACEHOLDER = `__x00__`; +let SOURCEMAPPING_URL = "sourceMa"; +SOURCEMAPPING_URL += "ppingURL"; +const MODULE_RUNNER_SOURCEMAPPING_SOURCE = "//# sourceMappingSource=vite-generated"; +const ERR_OUTDATED_OPTIMIZED_DEP = "ERR_OUTDATED_OPTIMIZED_DEP"; +//#endregion +//#region src/shared/utils.ts +const isWindows = typeof process !== "undefined" && process.platform === "win32"; +/** +* Prepend `/@id/` and replace null byte so the id is URL-safe. +* This is prepended to resolved ids that are not valid browser +* import specifiers by the importAnalysis plugin. +*/ +function wrapId(id) { + return id.startsWith(VALID_ID_PREFIX) ? id : VALID_ID_PREFIX + id.replace("\0", NULL_BYTE_PLACEHOLDER); +} +/** +* Undo {@link wrapId}'s `/@id/` and null byte replacements. +*/ +function unwrapId(id) { + return id.startsWith(VALID_ID_PREFIX) ? id.slice(VALID_ID_PREFIX.length).replace(NULL_BYTE_PLACEHOLDER, "\0") : id; +} +const windowsSlashRE = /\\/g; +function slash(p) { + return p.replace(windowsSlashRE, "/"); +} +const postfixRE = /[?#].*$/; +function cleanUrl(url) { + return url.replace(postfixRE, ""); +} +function splitFileAndPostfix(path) { + const file = cleanUrl(path); + return { + file, + postfix: path.slice(file.length) + }; +} +function withTrailingSlash(path) { + if (path[path.length - 1] !== "/") return `${path}/`; + return path; +} +function promiseWithResolvers() { + let resolve; + let reject; + return { + promise: new Promise((_resolve, _reject) => { + resolve = _resolve; + reject = _reject; + }), + resolve, + reject + }; +} +//#endregion +//#region src/module-runner/importMetaResolver.ts +const customizationHookNamespace = "vite-module-runner:import-meta-resolve/v1/"; +const customizationHooksModule = ` + +export async function resolve(specifier, context, nextResolve) { + if (specifier.startsWith(${JSON.stringify(customizationHookNamespace)})) { + const data = specifier.slice(${JSON.stringify(customizationHookNamespace)}.length) + const [parsedSpecifier, parsedImporter] = JSON.parse(data) + specifier = parsedSpecifier + context.parentURL = parsedImporter + } + return nextResolve(specifier, context) +} + +`; +function customizationHookResolve(specifier, context, nextResolve) { + if (specifier.startsWith(customizationHookNamespace)) { + const data = specifier.slice(42); + const [parsedSpecifier, parsedImporter] = JSON.parse(data); + specifier = parsedSpecifier; + context.parentURL = parsedImporter; + } + return nextResolve(specifier, context); +} +let isHookRegistered = false; +function createImportMetaResolver() { + if (isHookRegistered) return importMetaResolveWithCustomHook; + let module; + try { + module = typeof process !== "undefined" ? process.getBuiltinModule("node:module").Module : void 0; + } catch { + return; + } + if (!module) return; + if (module.registerHooks) { + module.registerHooks({ resolve: customizationHookResolve }); + isHookRegistered = true; + return importMetaResolveWithCustomHook; + } + if (!module.register) return; + try { + const hookModuleContent = `data:text/javascript,${encodeURI(customizationHooksModule)}`; + module.register(hookModuleContent); + } catch (e) { + if ("code" in e && e.code === "ERR_NETWORK_IMPORT_DISALLOWED") return; + throw e; + } + isHookRegistered = true; + return importMetaResolveWithCustomHook; +} +function importMetaResolveWithCustomHook(specifier, importer) { + return import.meta.resolve(`${customizationHookNamespace}${JSON.stringify([specifier, importer])}`); +} +const importMetaResolveWithCustomHookString = ` + + (() => { + const resolve = 'resolve' + return (specifier, importer) => + import.meta[resolve]( + \`${customizationHookNamespace}\${JSON.stringify([specifier, importer])}\`, + ) + })() + +`; +//#endregion +//#region ../../node_modules/.pnpm/@jridgewell+sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs +var comma$1 = ",".charCodeAt(0); +var semicolon = ";".charCodeAt(0); +var chars$1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; +var intToChar$1 = new Uint8Array(64); +var charToInt$1 = new Uint8Array(128); +for (let i = 0; i < chars$1.length; i++) { + const c = chars$1.charCodeAt(i); + intToChar$1[i] = c; + charToInt$1[c] = i; +} +function decodeInteger$1(reader, relative) { + let value = 0; + let shift = 0; + let integer = 0; + do { + integer = charToInt$1[reader.next()]; + value |= (integer & 31) << shift; + shift += 5; + } while (integer & 32); + const shouldNegate = value & 1; + value >>>= 1; + if (shouldNegate) value = -2147483648 | -value; + return relative + value; +} +function encodeInteger(builder, num, relative) { + let delta = num - relative; + delta = delta < 0 ? -delta << 1 | 1 : delta << 1; + do { + let clamped = delta & 31; + delta >>>= 5; + if (delta > 0) clamped |= 32; + builder.write(intToChar$1[clamped]); + } while (delta > 0); + return num; +} +function hasMoreVlq$1(reader, max) { + if (reader.pos >= max) return false; + return reader.peek() !== comma$1; +} +var bufLength = 1024 * 16; +var td = typeof TextDecoder !== "undefined" ? /* @__PURE__ */ new TextDecoder() : typeof Buffer !== "undefined" ? { decode(buf) { + return Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength).toString(); +} } : { decode(buf) { + let out = ""; + for (let i = 0; i < buf.length; i++) out += String.fromCharCode(buf[i]); + return out; +} }; +var StringWriter = class { + constructor() { + this.pos = 0; + this.out = ""; + this.buffer = new Uint8Array(bufLength); + } + write(v) { + const { buffer } = this; + buffer[this.pos++] = v; + if (this.pos === bufLength) { + this.out += td.decode(buffer); + this.pos = 0; + } + } + flush() { + const { buffer, out, pos } = this; + return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out; + } +}; +var StringReader$1 = class { + constructor(buffer) { + this.pos = 0; + this.buffer = buffer; + } + next() { + return this.buffer.charCodeAt(this.pos++); + } + peek() { + return this.buffer.charCodeAt(this.pos); + } + indexOf(char) { + const { buffer, pos } = this; + const idx = buffer.indexOf(char, pos); + return idx === -1 ? buffer.length : idx; + } +}; +function decode$1(mappings) { + const { length } = mappings; + const reader = new StringReader$1(mappings); + const decoded = []; + let genColumn = 0; + let sourcesIndex = 0; + let sourceLine = 0; + let sourceColumn = 0; + let namesIndex = 0; + do { + const semi = reader.indexOf(";"); + const line = []; + let sorted = true; + let lastCol = 0; + genColumn = 0; + while (reader.pos < semi) { + let seg; + genColumn = decodeInteger$1(reader, genColumn); + if (genColumn < lastCol) sorted = false; + lastCol = genColumn; + if (hasMoreVlq$1(reader, semi)) { + sourcesIndex = decodeInteger$1(reader, sourcesIndex); + sourceLine = decodeInteger$1(reader, sourceLine); + sourceColumn = decodeInteger$1(reader, sourceColumn); + if (hasMoreVlq$1(reader, semi)) { + namesIndex = decodeInteger$1(reader, namesIndex); + seg = [ + genColumn, + sourcesIndex, + sourceLine, + sourceColumn, + namesIndex + ]; + } else seg = [ + genColumn, + sourcesIndex, + sourceLine, + sourceColumn + ]; + } else seg = [genColumn]; + line.push(seg); + reader.pos++; + } + if (!sorted) sort$1(line); + decoded.push(line); + reader.pos = semi + 1; + } while (reader.pos <= length); + return decoded; +} +function sort$1(line) { + line.sort(sortComparator$2); +} +function sortComparator$2(a, b) { + return a[0] - b[0]; +} +function encode$1(decoded) { + const writer = new StringWriter(); + let sourcesIndex = 0; + let sourceLine = 0; + let sourceColumn = 0; + let namesIndex = 0; + for (let i = 0; i < decoded.length; i++) { + const line = decoded[i]; + if (i > 0) writer.write(semicolon); + if (line.length === 0) continue; + let genColumn = 0; + for (let j = 0; j < line.length; j++) { + const segment = line[j]; + if (j > 0) writer.write(comma$1); + genColumn = encodeInteger(writer, segment[0], genColumn); + if (segment.length === 1) continue; + sourcesIndex = encodeInteger(writer, segment[1], sourcesIndex); + sourceLine = encodeInteger(writer, segment[2], sourceLine); + sourceColumn = encodeInteger(writer, segment[3], sourceColumn); + if (segment.length === 4) continue; + namesIndex = encodeInteger(writer, segment[4], namesIndex); + } + } + return writer.flush(); +} +//#endregion +//#region ../../node_modules/.pnpm/@jridgewell+resolve-uri@3.1.2/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs +const schemeRegex = /^[\w+.-]+:\/\//; +/** +* Matches the parts of a URL: +* 1. Scheme, including ":", guaranteed. +* 2. User/password, including "@", optional. +* 3. Host, guaranteed. +* 4. Port, including ":", optional. +* 5. Path, including "/", optional. +* 6. Query, including "?", optional. +* 7. Hash, including "#", optional. +*/ +const urlRegex = /^([\w+.-]+:)\/\/([^@/#?]*@)?([^:/#?]*)(:\d+)?(\/[^#?]*)?(\?[^#]*)?(#.*)?/; +/** +* File URLs are weird. They dont' need the regular `//` in the scheme, they may or may not start +* with a leading `/`, they can have a domain (but only if they don't start with a Windows drive). +* +* 1. Host, optional. +* 2. Path, which may include "/", guaranteed. +* 3. Query, including "?", optional. +* 4. Hash, including "#", optional. +*/ +const fileRegex = /^file:(?:\/\/((?![a-z]:)[^/#?]*)?)?(\/?[^#?]*)(\?[^#]*)?(#.*)?/i; +function isAbsoluteUrl(input) { + return schemeRegex.test(input); +} +function isSchemeRelativeUrl(input) { + return input.startsWith("//"); +} +function isAbsolutePath(input) { + return input.startsWith("/"); +} +function isFileUrl(input) { + return input.startsWith("file:"); +} +function isRelative(input) { + return /^[.?#]/.test(input); +} +function parseAbsoluteUrl(input) { + const match = urlRegex.exec(input); + return makeUrl(match[1], match[2] || "", match[3], match[4] || "", match[5] || "/", match[6] || "", match[7] || ""); +} +function parseFileUrl(input) { + const match = fileRegex.exec(input); + const path = match[2]; + return makeUrl("file:", "", match[1] || "", "", isAbsolutePath(path) ? path : "/" + path, match[3] || "", match[4] || ""); +} +function makeUrl(scheme, user, host, port, path, query, hash) { + return { + scheme, + user, + host, + port, + path, + query, + hash, + type: 7 + }; +} +function parseUrl(input) { + if (isSchemeRelativeUrl(input)) { + const url = parseAbsoluteUrl("http:" + input); + url.scheme = ""; + url.type = 6; + return url; + } + if (isAbsolutePath(input)) { + const url = parseAbsoluteUrl("http://foo.com" + input); + url.scheme = ""; + url.host = ""; + url.type = 5; + return url; + } + if (isFileUrl(input)) return parseFileUrl(input); + if (isAbsoluteUrl(input)) return parseAbsoluteUrl(input); + const url = parseAbsoluteUrl("http://foo.com/" + input); + url.scheme = ""; + url.host = ""; + url.type = input ? input.startsWith("?") ? 3 : input.startsWith("#") ? 2 : 4 : 1; + return url; +} +function stripPathFilename(path) { + if (path.endsWith("/..")) return path; + const index = path.lastIndexOf("/"); + return path.slice(0, index + 1); +} +function mergePaths(url, base) { + normalizePath$2(base, base.type); + if (url.path === "/") url.path = base.path; + else url.path = stripPathFilename(base.path) + url.path; +} +/** +* The path can have empty directories "//", unneeded parents "foo/..", or current directory +* "foo/.". We need to normalize to a standard representation. +*/ +function normalizePath$2(url, type) { + const rel = type <= 4; + const pieces = url.path.split("/"); + let pointer = 1; + let positive = 0; + let addTrailingSlash = false; + for (let i = 1; i < pieces.length; i++) { + const piece = pieces[i]; + if (!piece) { + addTrailingSlash = true; + continue; + } + addTrailingSlash = false; + if (piece === ".") continue; + if (piece === "..") { + if (positive) { + addTrailingSlash = true; + positive--; + pointer--; + } else if (rel) pieces[pointer++] = piece; + continue; + } + pieces[pointer++] = piece; + positive++; + } + let path = ""; + for (let i = 1; i < pointer; i++) path += "/" + pieces[i]; + if (!path || addTrailingSlash && !path.endsWith("/..")) path += "/"; + url.path = path; +} +/** +* Attempts to resolve `input` URL/path relative to `base`. +*/ +function resolve$4(input, base) { + if (!input && !base) return ""; + const url = parseUrl(input); + let inputType = url.type; + if (base && inputType !== 7) { + const baseUrl = parseUrl(base); + const baseType = baseUrl.type; + switch (inputType) { + case 1: url.hash = baseUrl.hash; + case 2: url.query = baseUrl.query; + case 3: + case 4: mergePaths(url, baseUrl); + case 5: + url.user = baseUrl.user; + url.host = baseUrl.host; + url.port = baseUrl.port; + case 6: url.scheme = baseUrl.scheme; + } + if (baseType > inputType) inputType = baseType; + } + normalizePath$2(url, inputType); + const queryHash = url.query + url.hash; + switch (inputType) { + case 2: + case 3: return queryHash; + case 4: { + const path = url.path.slice(1); + if (!path) return queryHash || "."; + if (isRelative(base || input) && !isRelative(path)) return "./" + path + queryHash; + return path + queryHash; + } + case 5: return url.path + queryHash; + default: return url.scheme + "//" + url.user + url.host + url.port + url.path + queryHash; + } +} +//#endregion +//#region ../../node_modules/.pnpm/@jridgewell+trace-mapping@0.3.31/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs +function stripFilename(path) { + if (!path) return ""; + const index = path.lastIndexOf("/"); + return path.slice(0, index + 1); +} +function resolver(mapUrl, sourceRoot) { + const from = stripFilename(mapUrl); + const prefix = sourceRoot ? sourceRoot + "/" : ""; + return (source) => resolve$4(prefix + (source || ""), from); +} +var COLUMN$2 = 0; +var SOURCES_INDEX$2 = 1; +var SOURCE_LINE$2 = 2; +var SOURCE_COLUMN$2 = 3; +var NAMES_INDEX$2 = 4; +function maybeSort(mappings, owned) { + const unsortedIndex = nextUnsortedSegmentLine(mappings, 0); + if (unsortedIndex === mappings.length) return mappings; + if (!owned) mappings = mappings.slice(); + for (let i = unsortedIndex; i < mappings.length; i = nextUnsortedSegmentLine(mappings, i + 1)) mappings[i] = sortSegments(mappings[i], owned); + return mappings; +} +function nextUnsortedSegmentLine(mappings, start) { + for (let i = start; i < mappings.length; i++) if (!isSorted(mappings[i])) return i; + return mappings.length; +} +function isSorted(line) { + for (let j = 1; j < line.length; j++) if (line[j][COLUMN$2] < line[j - 1][COLUMN$2]) return false; + return true; +} +function sortSegments(line, owned) { + if (!owned) line = line.slice(); + return line.sort(sortComparator$1); +} +function sortComparator$1(a, b) { + return a[COLUMN$2] - b[COLUMN$2]; +} +var found$1 = false; +function binarySearch$1(haystack, needle, low, high) { + while (low <= high) { + const mid = low + (high - low >> 1); + const cmp = haystack[mid][COLUMN$2] - needle; + if (cmp === 0) { + found$1 = true; + return mid; + } + if (cmp < 0) low = mid + 1; + else high = mid - 1; + } + found$1 = false; + return low - 1; +} +function upperBound$1(haystack, needle, index) { + for (let i = index + 1; i < haystack.length; index = i++) if (haystack[i][COLUMN$2] !== needle) break; + return index; +} +function lowerBound$1(haystack, needle, index) { + for (let i = index - 1; i >= 0; index = i--) if (haystack[i][COLUMN$2] !== needle) break; + return index; +} +function memoizedState$1() { + return { + lastKey: -1, + lastNeedle: -1, + lastIndex: -1 + }; +} +function memoizedBinarySearch$1(haystack, needle, state, key) { + const { lastKey, lastNeedle, lastIndex } = state; + let low = 0; + let high = haystack.length - 1; + if (key === lastKey) { + if (needle === lastNeedle) { + found$1 = lastIndex !== -1 && haystack[lastIndex][COLUMN$2] === needle; + return lastIndex; + } + if (needle >= lastNeedle) low = lastIndex === -1 ? 0 : lastIndex; + else high = lastIndex; + } + state.lastKey = key; + state.lastNeedle = needle; + return state.lastIndex = binarySearch$1(haystack, needle, low, high); +} +function parse$3(map) { + return typeof map === "string" ? JSON.parse(map) : map; +} +var LINE_GTR_ZERO$1 = "`line` must be greater than 0 (lines start at line 1)"; +var COL_GTR_EQ_ZERO$1 = "`column` must be greater than or equal to 0 (columns start at column 0)"; +var TraceMap = class { + constructor(map, mapUrl) { + const isString = typeof map === "string"; + if (!isString && map._decodedMemo) return map; + const parsed = parse$3(map); + const { version, file, names, sourceRoot, sources, sourcesContent } = parsed; + this.version = version; + this.file = file; + this.names = names || []; + this.sourceRoot = sourceRoot; + this.sources = sources; + this.sourcesContent = sourcesContent; + this.ignoreList = parsed.ignoreList || parsed.x_google_ignoreList || void 0; + const resolve = resolver(mapUrl, sourceRoot); + this.resolvedSources = sources.map(resolve); + const { mappings } = parsed; + if (typeof mappings === "string") { + this._encoded = mappings; + this._decoded = void 0; + } else if (Array.isArray(mappings)) { + this._encoded = void 0; + this._decoded = maybeSort(mappings, isString); + } else if (parsed.sections) throw new Error(`TraceMap passed sectioned source map, please use FlattenMap export instead`); + else throw new Error(`invalid source map: ${JSON.stringify(parsed)}`); + this._decodedMemo = memoizedState$1(); + this._bySources = void 0; + this._bySourceMemos = void 0; + } +}; +function cast$2(map) { + return map; +} +function decodedMappings$1(map) { + var _a; + return (_a = cast$2(map))._decoded || (_a._decoded = decode$1(cast$2(map)._encoded)); +} +function traceSegment(map, line, column) { + const decoded = decodedMappings$1(map); + if (line >= decoded.length) return null; + const segments = decoded[line]; + const index = traceSegmentInternal$1(segments, cast$2(map)._decodedMemo, line, column, 1); + return index === -1 ? null : segments[index]; +} +function originalPositionFor$2(map, needle) { + let { line, column, bias } = needle; + line--; + if (line < 0) throw new Error(LINE_GTR_ZERO$1); + if (column < 0) throw new Error(COL_GTR_EQ_ZERO$1); + const decoded = decodedMappings$1(map); + if (line >= decoded.length) return OMapping$1(null, null, null, null); + const segments = decoded[line]; + const index = traceSegmentInternal$1(segments, cast$2(map)._decodedMemo, line, column, bias || 1); + if (index === -1) return OMapping$1(null, null, null, null); + const segment = segments[index]; + if (segment.length === 1) return OMapping$1(null, null, null, null); + const { names, resolvedSources } = map; + return OMapping$1(resolvedSources[segment[SOURCES_INDEX$2]], segment[SOURCE_LINE$2] + 1, segment[SOURCE_COLUMN$2], segment.length === 5 ? names[segment[NAMES_INDEX$2]] : null); +} +function OMapping$1(source, line, column, name) { + return { + source, + line, + column, + name + }; +} +function traceSegmentInternal$1(segments, memo, line, column, bias) { + let index = memoizedBinarySearch$1(segments, column, memo, line); + if (found$1) index = (bias === -1 ? upperBound$1 : lowerBound$1)(segments, column, index); + else if (bias === -1) index++; + if (index === -1 || index === segments.length) return -1; + return index; +} +//#endregion +//#region ../../node_modules/.pnpm/@jridgewell+gen-mapping@0.3.13/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.mjs +var SetArray = class { + constructor() { + this._indexes = { __proto__: null }; + this.array = []; + } +}; +function cast$1(set) { + return set; +} +function get$2(setarr, key) { + return cast$1(setarr)._indexes[key]; +} +function put(setarr, key) { + const index = get$2(setarr, key); + if (index !== void 0) return index; + const { array, _indexes: indexes } = cast$1(setarr); + return indexes[key] = array.push(key) - 1; +} +function remove(setarr, key) { + const index = get$2(setarr, key); + if (index === void 0) return; + const { array, _indexes: indexes } = cast$1(setarr); + for (let i = index + 1; i < array.length; i++) { + const k = array[i]; + array[i - 1] = k; + indexes[k]--; + } + indexes[key] = void 0; + array.pop(); +} +var COLUMN$1 = 0; +var SOURCES_INDEX$1 = 1; +var SOURCE_LINE$1 = 2; +var SOURCE_COLUMN$1 = 3; +var NAMES_INDEX$1 = 4; +var NO_NAME = -1; +var GenMapping = class { + constructor({ file, sourceRoot } = {}) { + this._names = new SetArray(); + this._sources = new SetArray(); + this._sourcesContent = []; + this._mappings = []; + this.file = file; + this.sourceRoot = sourceRoot; + this._ignoreList = new SetArray(); + } +}; +function cast2(map) { + return map; +} +var maybeAddSegment = (map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) => { + return addSegmentInternal(true, map, genLine, genColumn, source, sourceLine, sourceColumn, name, content); +}; +function setSourceContent(map, source, content) { + const { _sources: sources, _sourcesContent: sourcesContent } = cast2(map); + const index = put(sources, source); + sourcesContent[index] = content; +} +function setIgnore(map, source, ignore = true) { + const { _sources: sources, _sourcesContent: sourcesContent, _ignoreList: ignoreList } = cast2(map); + const index = put(sources, source); + if (index === sourcesContent.length) sourcesContent[index] = null; + if (ignore) put(ignoreList, index); + else remove(ignoreList, index); +} +function toDecodedMap(map) { + const { _mappings: mappings, _sources: sources, _sourcesContent: sourcesContent, _names: names, _ignoreList: ignoreList } = cast2(map); + removeEmptyFinalLines(mappings); + return { + version: 3, + file: map.file || void 0, + names: names.array, + sourceRoot: map.sourceRoot || void 0, + sources: sources.array, + sourcesContent, + mappings, + ignoreList: ignoreList.array + }; +} +function toEncodedMap(map) { + const decoded = toDecodedMap(map); + return Object.assign({}, decoded, { mappings: encode$1(decoded.mappings) }); +} +function addSegmentInternal(skipable, map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) { + const { _mappings: mappings, _sources: sources, _sourcesContent: sourcesContent, _names: names } = cast2(map); + const line = getIndex(mappings, genLine); + const index = getColumnIndex(line, genColumn); + if (!source) { + if (skipable && skipSourceless(line, index)) return; + return insert(line, index, [genColumn]); + } + assert$2(sourceLine); + assert$2(sourceColumn); + const sourcesIndex = put(sources, source); + const namesIndex = name ? put(names, name) : NO_NAME; + if (sourcesIndex === sourcesContent.length) sourcesContent[sourcesIndex] = content != null ? content : null; + if (skipable && skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex)) return; + return insert(line, index, name ? [ + genColumn, + sourcesIndex, + sourceLine, + sourceColumn, + namesIndex + ] : [ + genColumn, + sourcesIndex, + sourceLine, + sourceColumn + ]); +} +function assert$2(_val) {} +function getIndex(arr, index) { + for (let i = arr.length; i <= index; i++) arr[i] = []; + return arr[index]; +} +function getColumnIndex(line, genColumn) { + let index = line.length; + for (let i = index - 1; i >= 0; index = i--) if (genColumn >= line[i][COLUMN$1]) break; + return index; +} +function insert(array, index, value) { + for (let i = array.length; i > index; i--) array[i] = array[i - 1]; + array[index] = value; +} +function removeEmptyFinalLines(mappings) { + const { length } = mappings; + let len = length; + for (let i = len - 1; i >= 0; len = i, i--) if (mappings[i].length > 0) break; + if (len < length) mappings.length = len; +} +function skipSourceless(line, index) { + if (index === 0) return true; + return line[index - 1].length === 1; +} +function skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex) { + if (index === 0) return false; + const prev = line[index - 1]; + if (prev.length === 1) return false; + return sourcesIndex === prev[SOURCES_INDEX$1] && sourceLine === prev[SOURCE_LINE$1] && sourceColumn === prev[SOURCE_COLUMN$1] && namesIndex === (prev.length === 5 ? prev[NAMES_INDEX$1] : NO_NAME); +} +//#endregion +//#region ../../node_modules/.pnpm/@jridgewell+remapping@2.3.5/node_modules/@jridgewell/remapping/dist/remapping.mjs +var SOURCELESS_MAPPING = /* @__PURE__ */ SegmentObject("", -1, -1, "", null, false); +var EMPTY_SOURCES = []; +function SegmentObject(source, line, column, name, content, ignore) { + return { + source, + line, + column, + name, + content, + ignore + }; +} +function Source(map, sources, source, content, ignore) { + return { + map, + sources, + source, + content, + ignore + }; +} +function MapSource(map, sources) { + return Source(map, sources, "", null, false); +} +function OriginalSource(source, content, ignore) { + return Source(null, EMPTY_SOURCES, source, content, ignore); +} +function traceMappings(tree) { + const gen = new GenMapping({ file: tree.map.file }); + const { sources: rootSources, map } = tree; + const rootNames = map.names; + const rootMappings = decodedMappings$1(map); + for (let i = 0; i < rootMappings.length; i++) { + const segments = rootMappings[i]; + for (let j = 0; j < segments.length; j++) { + const segment = segments[j]; + const genCol = segment[0]; + let traced = SOURCELESS_MAPPING; + if (segment.length !== 1) { + const source2 = rootSources[segment[1]]; + traced = originalPositionFor$1(source2, segment[2], segment[3], segment.length === 5 ? rootNames[segment[4]] : ""); + if (traced == null) continue; + } + const { column, line, name, content, source, ignore } = traced; + maybeAddSegment(gen, i, genCol, source, line, column, name); + if (source && content != null) setSourceContent(gen, source, content); + if (ignore) setIgnore(gen, source, true); + } + } + return gen; +} +function originalPositionFor$1(source, line, column, name) { + if (!source.map) return SegmentObject(source.source, line, column, name, source.content, source.ignore); + const segment = traceSegment(source.map, line, column); + if (segment == null) return null; + if (segment.length === 1) return SOURCELESS_MAPPING; + return originalPositionFor$1(source.sources[segment[1]], segment[2], segment[3], segment.length === 5 ? source.map.names[segment[4]] : name); +} +function asArray(value) { + if (Array.isArray(value)) return value; + return [value]; +} +function buildSourceMapTree(input, loader) { + const maps = asArray(input).map((m) => new TraceMap(m, "")); + const map = maps.pop(); + for (let i = 0; i < maps.length; i++) if (maps[i].sources.length > 1) throw new Error(`Transformation map ${i} must have exactly one source file. +Did you specify these with the most recent transformation maps first?`); + let tree = build$1(map, loader, "", 0); + for (let i = maps.length - 1; i >= 0; i--) tree = MapSource(maps[i], [tree]); + return tree; +} +function build$1(map, loader, importer, importerDepth) { + const { resolvedSources, sourcesContent, ignoreList } = map; + const depth = importerDepth + 1; + return MapSource(map, resolvedSources.map((sourceFile, i) => { + const ctx = { + importer, + depth, + source: sourceFile || "", + content: void 0, + ignore: void 0 + }; + const sourceMap = loader(ctx.source, ctx); + const { source, content, ignore } = ctx; + if (sourceMap) return build$1(new TraceMap(sourceMap, source), loader, source, depth); + return OriginalSource(source, content !== void 0 ? content : sourcesContent ? sourcesContent[i] : null, ignore !== void 0 ? ignore : ignoreList ? ignoreList.includes(i) : false); + })); +} +var SourceMap$1 = class { + constructor(map, options) { + const out = options.decodedMappings ? toDecodedMap(map) : toEncodedMap(map); + this.version = out.version; + this.file = out.file; + this.mappings = out.mappings; + this.names = out.names; + this.ignoreList = out.ignoreList; + this.sourceRoot = out.sourceRoot; + this.sources = out.sources; + if (!options.excludeContent) this.sourcesContent = out.sourcesContent; + } + toString() { + return JSON.stringify(this); + } +}; +function remapping(input, loader, options) { + const opts = typeof options === "object" ? options : { + excludeContent: !!options, + decodedMappings: false + }; + return new SourceMap$1(traceMappings(buildSourceMapTree(input, loader)), opts); +} +//#endregion +//#region ../../node_modules/.pnpm/obug@1.0.2_ms@2.1.3/node_modules/obug/dist/core.js +function coerce(value) { + if (value instanceof Error) return value.stack || value.message; + return value; +} +function selectColor(colors, namespace) { + let hash = 0; + for (let i = 0; i < namespace.length; i++) { + hash = (hash << 5) - hash + namespace.charCodeAt(i); + hash |= 0; + } + return colors[Math.abs(hash) % colors.length]; +} +function matchesTemplate(search, template) { + let searchIndex = 0; + let templateIndex = 0; + let starIndex = -1; + let matchIndex = 0; + while (searchIndex < search.length) if (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === "*")) if (template[templateIndex] === "*") { + starIndex = templateIndex; + matchIndex = searchIndex; + templateIndex++; + } else { + searchIndex++; + templateIndex++; + } + else if (starIndex !== -1) { + templateIndex = starIndex + 1; + matchIndex++; + searchIndex = matchIndex; + } else return false; + while (templateIndex < template.length && template[templateIndex] === "*") templateIndex++; + return templateIndex === template.length; +} +function humanize(value) { + if (value >= 1e3) return `${(value / 1e3).toFixed(1)}s`; + return `${value}ms`; +} +function setup(useColors, colors, log, load, save, formatArgs, init) { + const createDebug = (namespace) => { + let prevTime; + let enableOverride; + let namespacesCache; + let enabledCache; + const debug = (...args) => { + if (!debug.enabled) return; + const curr = Date.now(); + debug.diff = curr - (prevTime || curr); + debug.prev = prevTime; + debug.curr = curr; + prevTime = curr; + args[0] = coerce(args[0]); + if (typeof args[0] !== "string") args.unshift("%O"); + let index = 0; + args[0] = args[0].replace(/%([a-z%])/gi, (match, format) => { + if (match === "%%") return "%"; + index++; + const formatter = createDebug.formatters[format]; + if (typeof formatter === "function") { + match = formatter.call(debug, args[index]); + args.splice(index, 1); + index--; + } + return match; + }); + createDebug.formatArgs.call(debug, args); + (debug.log || createDebug.log).apply(debug, args); + }; + function extend(namespace$1, delimiter = ":") { + const newDebug = createDebug(this.namespace + delimiter + namespace$1); + newDebug.log = this.log; + return newDebug; + } + debug.namespace = namespace; + debug.useColors = useColors; + debug.color = selectColor(colors, namespace); + debug.extend = extend; + debug.log = log; + Object.defineProperty(debug, "enabled", { + enumerable: true, + configurable: false, + get: () => { + if (enableOverride != null) return enableOverride; + if (namespacesCache !== createDebug.namespaces) { + namespacesCache = createDebug.namespaces; + enabledCache = createDebug.enabled(namespace); + } + return enabledCache; + }, + set: (v) => { + enableOverride = v; + } + }); + init && init(debug); + return debug; + }; + function enable(namespaces) { + save(namespaces); + createDebug.namespaces = namespaces; + createDebug.names = []; + createDebug.skips = []; + const split = namespaces.trim().replace(/\s+/g, ",").split(",").filter(Boolean); + for (const ns of split) if (ns[0] === "-") createDebug.skips.push(ns.slice(1)); + else createDebug.names.push(ns); + } + function disable() { + const namespaces = [...createDebug.names, ...createDebug.skips.map((namespace) => `-${namespace}`)].join(","); + createDebug.enable(""); + return namespaces; + } + function enabled(name) { + for (const skip of createDebug.skips) if (matchesTemplate(name, skip)) return false; + for (const ns of createDebug.names) if (matchesTemplate(name, ns)) return true; + return false; + } + createDebug.namespaces = ""; + createDebug.formatters = {}; + createDebug.enable = enable; + createDebug.disable = disable; + createDebug.enabled = enabled; + createDebug.names = []; + createDebug.skips = []; + createDebug.selectColor = (ns) => selectColor(colors, ns); + createDebug.formatArgs = formatArgs; + createDebug.log = log; + createDebug.enable(load()); + return createDebug; +} +var init_core = __esmMin((() => {})); +//#endregion +//#region ../../node_modules/.pnpm/obug@1.0.2_ms@2.1.3/node_modules/obug/dist/node.js +var node_exports = /* @__PURE__ */ __exportAll({ + createDebug: () => createDebug, + default: () => node_default, + formatArgs: () => formatArgs, + log: () => log, + "module.exports": () => createDebug +}); +function log(...args) { + process.stderr.write(`${formatWithOptions(inspectOpts, ...args)}\n`); +} +function load() { + return process.env.DEBUG || ""; +} +function save(namespaces) { + if (namespaces) process.env.DEBUG = namespaces; + else delete process.env.DEBUG; +} +function useColors() { + return "colors" in inspectOpts ? Boolean(inspectOpts.colors) : isatty(process.stderr.fd); +} +function formatArgs(args) { + const { namespace: name, useColors: useColors$1 } = this; + if (useColors$1) { + const c = this.color; + const colorCode = `\u001B[3${c < 8 ? c : `8;5;${c}`}`; + const prefix = ` ${colorCode};1m${name} \u001B[0m`; + args[0] = prefix + args[0].split("\n").join(`\n${prefix}`); + args.push(`${colorCode}m+${humanize$1(this.diff)}\u001B[0m`); + } else args[0] = `${getDate()}${name} ${args[0]}`; +} +function getDate() { + if (inspectOpts.hideDate) return ""; + return `${(/* @__PURE__ */ new Date()).toISOString()} `; +} +function init$1(debug) { + debug.inspectOpts = Object.assign({}, inspectOpts); +} +var require$1, colors$37, inspectOpts, humanize$1, createDebug, node_default; +var init_node = __esmMin((() => { + init_core(); + require$1 = createRequire(import.meta.url); + colors$37 = process.stderr.getColorDepth && process.stderr.getColorDepth() > 2 ? [ + 20, + 21, + 26, + 27, + 32, + 33, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 56, + 57, + 62, + 63, + 68, + 69, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 92, + 93, + 98, + 99, + 112, + 113, + 128, + 129, + 134, + 135, + 148, + 149, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 178, + 179, + 184, + 185, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 214, + 215, + 220, + 221 + ] : [ + 6, + 2, + 3, + 4, + 5, + 1 + ]; + inspectOpts = Object.keys(process.env).filter((key) => { + return /^debug_/i.test(key); + }).reduce((obj, key) => { + const prop = key.slice(6).toLowerCase().replace(/_([a-z])/g, (_, k) => k.toUpperCase()); + let value = process.env[key]; + if (value === "null") value = null; + else if (/^yes|on|true|enabled$/i.test(value)) value = true; + else if (/^no|off|false|disabled$/i.test(value)) value = false; + else value = Number(value); + obj[prop] = value; + return obj; + }, {}); + try { + humanize$1 = require$1("ms"); + } catch (_unused) { + humanize$1 = humanize; + } + createDebug = setup(useColors(), colors$37, log, load, save, formatArgs, init$1); + createDebug.inspectOpts = inspectOpts; + createDebug.formatters.o = function(v) { + this.inspectOpts.colors = this.useColors; + return inspect(v, this.inspectOpts).split("\n").map((str) => str.trim()).join(" "); + }; + createDebug.formatters.O = function(v) { + this.inspectOpts.colors = this.useColors; + return inspect(v, this.inspectOpts); + }; + node_default = createDebug; + createDebug.default = createDebug; + createDebug.debug = createDebug; +})); +//#endregion +//#region ../../node_modules/.pnpm/@rollup+pluginutils@5.3.0_rollup@4.59.0/node_modules/@rollup/pluginutils/dist/es/index.js +function isArray(arg) { + return Array.isArray(arg); +} +function ensureArray(thing) { + if (isArray(thing)) return thing; + if (thing == null) return []; + return [thing]; +} +const normalizePathRegExp = new RegExp(`\\${win32.sep}`, "g"); +const normalizePath$1 = function normalizePath(filename) { + return filename.replace(normalizePathRegExp, posix$1.sep); +}; +function getMatcherString$1(id, resolutionBase) { + if (resolutionBase === false || isAbsolute$1(id) || id.startsWith("**")) return normalizePath$1(id); + const basePath = normalizePath$1(resolve$1(resolutionBase || "")).replace(/[-^$*+?.()|[\]{}]/g, "\\$&"); + return posix$1.join(basePath, normalizePath$1(id)); +} +const createFilter$2 = function createFilter(include, exclude, options) { + const resolutionBase = options && options.resolve; + const getMatcher = (id) => id instanceof RegExp ? id : { test: (what) => { + return picomatch(getMatcherString$1(id, resolutionBase), { dot: true })(what); + } }; + const includeMatchers = ensureArray(include).map(getMatcher); + const excludeMatchers = ensureArray(exclude).map(getMatcher); + if (!includeMatchers.length && !excludeMatchers.length) return (id) => typeof id === "string" && !id.includes("\0"); + return function result(id) { + if (typeof id !== "string") return false; + if (id.includes("\0")) return false; + const pathId = normalizePath$1(id); + for (let i = 0; i < excludeMatchers.length; ++i) { + const matcher = excludeMatchers[i]; + if (matcher instanceof RegExp) matcher.lastIndex = 0; + if (matcher.test(pathId)) return false; + } + for (let i = 0; i < includeMatchers.length; ++i) { + const matcher = includeMatchers[i]; + if (matcher instanceof RegExp) matcher.lastIndex = 0; + if (matcher.test(pathId)) return true; + } + return !includeMatchers.length; + }; +}; +const forbiddenIdentifiers = new Set(`break case class catch const continue debugger default delete do else export extends finally for function if import in instanceof let new return super switch this throw try typeof var void while with yield enum await implements package protected static interface private public arguments Infinity NaN undefined null true false eval uneval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Symbol Error EvalError InternalError RangeError ReferenceError SyntaxError TypeError URIError Number Math Date String RegExp Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array Map Set WeakMap WeakSet SIMD ArrayBuffer DataView JSON Promise Generator GeneratorFunction Reflect Proxy Intl`.split(" ")); +forbiddenIdentifiers.add(""); +const makeLegalIdentifier = function makeLegalIdentifier(str) { + let identifier = str.replace(/-(\w)/g, (_, letter) => letter.toUpperCase()).replace(/[^$_a-zA-Z0-9]/g, "_"); + if (/\d/.test(identifier[0]) || forbiddenIdentifiers.has(identifier)) identifier = `_${identifier}`; + return identifier || "_"; +}; +function stringify(obj) { + return (JSON.stringify(obj) || "undefined").replace(/[\u2028\u2029]/g, (char) => `\\u${`000${char.charCodeAt(0).toString(16)}`.slice(-4)}`); +} +function serializeArray(arr, indent, baseIndent) { + let output = "["; + const separator = indent ? `\n${baseIndent}${indent}` : ""; + for (let i = 0; i < arr.length; i++) { + const key = arr[i]; + output += `${i > 0 ? "," : ""}${separator}${serialize(key, indent, baseIndent + indent)}`; + } + return `${output}${indent ? `\n${baseIndent}` : ""}]`; +} +function serializeObject(obj, indent, baseIndent) { + let output = "{"; + const separator = indent ? `\n${baseIndent}${indent}` : ""; + const entries = Object.entries(obj); + for (let i = 0; i < entries.length; i++) { + const [key, value] = entries[i]; + const stringKey = makeLegalIdentifier(key) === key ? key : stringify(key); + output += `${i > 0 ? "," : ""}${separator}${stringKey}:${indent ? " " : ""}${serialize(value, indent, baseIndent + indent)}`; + } + return `${output}${indent ? `\n${baseIndent}` : ""}}`; +} +function serialize(obj, indent, baseIndent) { + if (typeof obj === "object" && obj !== null) { + if (Array.isArray(obj)) return serializeArray(obj, indent, baseIndent); + if (obj instanceof Date) return `new Date(${obj.getTime()})`; + if (obj instanceof RegExp) return obj.toString(); + return serializeObject(obj, indent, baseIndent); + } + if (typeof obj === "number") { + if (obj === Infinity) return "Infinity"; + if (obj === -Infinity) return "-Infinity"; + if (obj === 0) return 1 / obj === Infinity ? "0" : "-0"; + if (obj !== obj) return "NaN"; + } + if (typeof obj === "symbol") { + const key = Symbol.keyFor(obj); + if (key !== void 0) return `Symbol.for(${stringify(key)})`; + } + if (typeof obj === "bigint") return `${obj}n`; + return stringify(obj); +} +const hasStringIsWellFormed = "isWellFormed" in String.prototype; +function isWellFormedString(input) { + if (hasStringIsWellFormed) return input.isWellFormed(); + return !/\p{Surrogate}/u.test(input); +} +const dataToEsm = function dataToEsm(data, options = {}) { + var _a, _b; + const t = options.compact ? "" : "indent" in options ? options.indent : " "; + const _ = options.compact ? "" : " "; + const n = options.compact ? "" : "\n"; + const declarationType = options.preferConst ? "const" : "var"; + if (options.namedExports === false || typeof data !== "object" || Array.isArray(data) || data instanceof Date || data instanceof RegExp || data === null) { + const code = serialize(data, options.compact ? null : t, ""); + return `export default${_ || (/^[{[\-\/]/.test(code) ? "" : " ")}${code};`; + } + let maxUnderbarPrefixLength = 0; + for (const key of Object.keys(data)) { + const underbarPrefixLength = (_b = (_a = /^(_+)/.exec(key)) === null || _a === void 0 ? void 0 : _a[0].length) !== null && _b !== void 0 ? _b : 0; + if (underbarPrefixLength > maxUnderbarPrefixLength) maxUnderbarPrefixLength = underbarPrefixLength; + } + const arbitraryNamePrefix = `${"_".repeat(maxUnderbarPrefixLength + 1)}arbitrary`; + let namedExportCode = ""; + const defaultExportRows = []; + const arbitraryNameExportRows = []; + for (const [key, value] of Object.entries(data)) if (key === makeLegalIdentifier(key)) { + if (options.objectShorthand) defaultExportRows.push(key); + else defaultExportRows.push(`${key}:${_}${key}`); + namedExportCode += `export ${declarationType} ${key}${_}=${_}${serialize(value, options.compact ? null : t, "")};${n}`; + } else { + defaultExportRows.push(`${stringify(key)}:${_}${serialize(value, options.compact ? null : t, "")}`); + if (options.includeArbitraryNames && isWellFormedString(key)) { + const variableName = `${arbitraryNamePrefix}${arbitraryNameExportRows.length}`; + namedExportCode += `${declarationType} ${variableName}${_}=${_}${serialize(value, options.compact ? null : t, "")};${n}`; + arbitraryNameExportRows.push(`${variableName} as ${JSON.stringify(key)}`); + } + } + const arbitraryExportCode = arbitraryNameExportRows.length > 0 ? `export${_}{${n}${t}${arbitraryNameExportRows.join(`,${n}${t}`)}${n}};${n}` : ""; + const defaultExportCode = `export default${_}{${n}${t}${defaultExportRows.join(`,${n}${t}`)}${n}};${n}`; + return `${namedExportCode}${arbitraryExportCode}${defaultExportCode}`; +}; +//#endregion +//#region src/shared/builtin.ts +function createIsBuiltin(builtins) { + const plainBuiltinsSet = new Set(builtins.filter((builtin) => typeof builtin === "string")); + const regexBuiltins = builtins.filter((builtin) => typeof builtin !== "string"); + return (id) => plainBuiltinsSet.has(id) || regexBuiltins.some((regexp) => regexp.test(id)); +} +//#endregion +//#region src/node/packages.ts +let pnp; +if (process.versions.pnp) try { + pnp = createRequire( + /** #__KEEP__ */ + import.meta.url + )("pnpapi"); +} catch {} +function invalidatePackageData(packageCache, pkgPath) { + const pkgDir = normalizePath(path.dirname(pkgPath)); + packageCache.forEach((pkg, cacheKey) => { + if (pkg.dir === pkgDir) packageCache.delete(cacheKey); + }); +} +function resolvePackageData(pkgName, basedir, preserveSymlinks = false, packageCache) { + if (pnp) { + const cacheKey = getRpdCacheKey(pkgName, basedir, preserveSymlinks); + if (packageCache?.has(cacheKey)) return packageCache.get(cacheKey); + try { + const pkg = pnp.resolveToUnqualified(pkgName, basedir, { considerBuiltins: false }); + if (!pkg) return null; + const pkgData = loadPackageData(path.join(pkg, "package.json")); + packageCache?.set(cacheKey, pkgData); + return pkgData; + } catch { + return null; + } + } + const originalBasedir = basedir; + while (basedir) { + if (packageCache) { + const cached = getRpdCache(packageCache, pkgName, basedir, originalBasedir, preserveSymlinks); + if (cached) return cached; + } + const pkg = path.join(basedir, "node_modules", pkgName, "package.json"); + try { + if (fs.existsSync(pkg)) { + const pkgData = loadPackageData(preserveSymlinks ? pkg : safeRealpathSync(pkg)); + if (packageCache) setRpdCache(packageCache, pkgData, pkgName, basedir, originalBasedir, preserveSymlinks); + return pkgData; + } + } catch {} + const nextBasedir = path.dirname(basedir); + if (nextBasedir === basedir) break; + basedir = nextBasedir; + } + return null; +} +function findNearestPackageData(basedir, packageCache) { + const originalBasedir = basedir; + while (basedir) { + if (packageCache) { + const cached = getFnpdCache(packageCache, basedir, originalBasedir); + if (cached) return cached; + } + const pkgPath = path.join(basedir, "package.json"); + if (tryStatSync(pkgPath)?.isFile()) try { + const pkgData = loadPackageData(pkgPath); + if (packageCache) setFnpdCache(packageCache, pkgData, basedir, originalBasedir); + return pkgData; + } catch {} + const nextBasedir = path.dirname(basedir); + if (nextBasedir === basedir) break; + basedir = nextBasedir; + } + return null; +} +function findNearestMainPackageData(basedir, packageCache) { + const nearestPackage = findNearestPackageData(basedir, packageCache); + return nearestPackage && (nearestPackage.data.name ? nearestPackage : findNearestMainPackageData(path.dirname(nearestPackage.dir), packageCache)); +} +function loadPackageData(pkgPath) { + const data = JSON.parse(stripBomTag(fs.readFileSync(pkgPath, "utf-8"))); + const pkgDir = normalizePath(path.dirname(pkgPath)); + const { sideEffects } = data; + let hasSideEffects; + if (typeof sideEffects === "boolean") hasSideEffects = () => sideEffects; + else if (Array.isArray(sideEffects)) if (sideEffects.length <= 0) hasSideEffects = () => false; + else hasSideEffects = createFilter$1(sideEffects.map((sideEffect) => { + if (sideEffect.includes("/")) return sideEffect; + return `**/${sideEffect}`; + }), null, { resolve: pkgDir }); + else hasSideEffects = () => null; + const resolvedCache = {}; + return { + dir: pkgDir, + data, + hasSideEffects, + setResolvedCache(key, entry, options) { + resolvedCache[getResolveCacheKey(key, options)] = entry; + }, + getResolvedCache(key, options) { + return resolvedCache[getResolveCacheKey(key, options)]; + } + }; +} +function getResolveCacheKey(key, options) { + return [ + key, + options.isRequire ? "1" : "0", + options.conditions.join("_"), + options.extensions.join("_"), + options.mainFields.join("_") + ].join("|"); +} +function findNearestNodeModules(basedir) { + while (basedir) { + const pkgPath = path.join(basedir, "node_modules"); + if (tryStatSync(pkgPath)?.isDirectory()) return pkgPath; + const nextBasedir = path.dirname(basedir); + if (nextBasedir === basedir) break; + basedir = nextBasedir; + } + return null; +} +function watchPackageDataPlugin(packageCache) { + const watchQueue = /* @__PURE__ */ new Set(); + const watchedDirs = /* @__PURE__ */ new Set(); + const watchFileStub = (id) => { + watchQueue.add(id); + }; + let watchFile = watchFileStub; + const setPackageData = packageCache.set.bind(packageCache); + packageCache.set = (id, pkg) => { + if (!isInNodeModules(pkg.dir) && !watchedDirs.has(pkg.dir)) { + watchedDirs.add(pkg.dir); + watchFile(path.join(pkg.dir, "package.json")); + } + return setPackageData(id, pkg); + }; + return { + name: "vite:watch-package-data", + buildStart() { + watchFile = this.addWatchFile.bind(this); + watchQueue.forEach(watchFile); + watchQueue.clear(); + }, + buildEnd() { + watchFile = watchFileStub; + }, + watchChange(id) { + if (id.endsWith("/package.json")) invalidatePackageData(packageCache, path.normalize(id)); + } + }; +} +/** +* Get cached `resolvePackageData` value based on `basedir`. When one is found, +* and we've already traversed some directories between `basedir` and `originalBasedir`, +* we cache the value for those in-between directories as well. +* +* This makes it so the fs is only read once for a shared `basedir`. +*/ +function getRpdCache(packageCache, pkgName, basedir, originalBasedir, preserveSymlinks) { + const cacheKey = getRpdCacheKey(pkgName, basedir, preserveSymlinks); + const pkgData = packageCache.get(cacheKey); + if (pkgData) { + traverseBetweenDirs(originalBasedir, basedir, (dir) => { + packageCache.set(getRpdCacheKey(pkgName, dir, preserveSymlinks), pkgData); + }); + return pkgData; + } +} +function setRpdCache(packageCache, pkgData, pkgName, basedir, originalBasedir, preserveSymlinks) { + packageCache.set(getRpdCacheKey(pkgName, basedir, preserveSymlinks), pkgData); + traverseBetweenDirs(originalBasedir, basedir, (dir) => { + packageCache.set(getRpdCacheKey(pkgName, dir, preserveSymlinks), pkgData); + }); +} +function getRpdCacheKey(pkgName, basedir, preserveSymlinks) { + return `rpd_${pkgName}_${basedir}_${preserveSymlinks}`; +} +/** +* Get cached `findNearestPackageData` value based on `basedir`. When one is found, +* and we've already traversed some directories between `basedir` and `originalBasedir`, +* we cache the value for those in-between directories as well. +* +* This makes it so the fs is only read once for a shared `basedir`. +*/ +function getFnpdCache(packageCache, basedir, originalBasedir) { + const cacheKey = getFnpdCacheKey(basedir); + const pkgData = packageCache.get(cacheKey); + if (pkgData) { + traverseBetweenDirs(originalBasedir, basedir, (dir) => { + packageCache.set(getFnpdCacheKey(dir), pkgData); + }); + return pkgData; + } +} +function setFnpdCache(packageCache, pkgData, basedir, originalBasedir) { + packageCache.set(getFnpdCacheKey(basedir), pkgData); + traverseBetweenDirs(originalBasedir, basedir, (dir) => { + packageCache.set(getFnpdCacheKey(dir), pkgData); + }); +} +function getFnpdCacheKey(basedir) { + return `fnpd_${basedir}`; +} +/** +* Traverse between `longerDir` (inclusive) and `shorterDir` (exclusive) and call `cb` for each dir. +* @param longerDir Longer dir path, e.g. `/User/foo/bar/baz` +* @param shorterDir Shorter dir path, e.g. `/User/foo` +*/ +function traverseBetweenDirs(longerDir, shorterDir, cb) { + while (longerDir !== shorterDir) { + cb(longerDir); + longerDir = path.dirname(longerDir); + } +} +//#endregion +//#region src/node/utils.ts +var import_picocolors = /* @__PURE__ */ __toESM(require_picocolors(), 1); +init_node(); +const createFilter$1 = createFilter$2; +const invalidUrlPathCharRE = /[\u0000-\u001F"#$%&*+,:;<=>?[\]^`{|}\u007F]/g; +const replaceNestedIdRE = /\s*>\s*/g; +const flattenId = (id) => { + return limitFlattenIdLength(id.replaceAll(/_+/g, "$&__").replaceAll("/", "_").replaceAll(".", "__").replace(replaceNestedIdRE, "_n_").replace(invalidUrlPathCharRE, (c) => "_0" + c.charCodeAt(0).toString(16) + "_")); +}; +const FLATTEN_ID_HASH_LENGTH = 8; +const FLATTEN_ID_MAX_FILE_LENGTH = 170; +const limitFlattenIdLength = (id, limit = FLATTEN_ID_MAX_FILE_LENGTH) => { + if (id.length <= limit) return id; + return id.slice(0, limit - (FLATTEN_ID_HASH_LENGTH + 1)) + "_" + getHash(id); +}; +const normalizeId = (id) => id.replace(replaceNestedIdRE, " > "); +const NODE_BUILTIN_NAMESPACE = "node:"; +const BUN_BUILTIN_NAMESPACE = "bun:"; +const nodeBuiltins = builtinModules.filter((id) => !id.includes(":")); +const isBuiltinCache = /* @__PURE__ */ new WeakMap(); +function isBuiltin(builtins, id) { + let isBuiltin = isBuiltinCache.get(builtins); + if (!isBuiltin) { + isBuiltin = createIsBuiltin(builtins); + isBuiltinCache.set(builtins, isBuiltin); + } + return isBuiltin(id); +} +const nodeLikeBuiltins = [ + ...nodeBuiltins, + new RegExp(`^${NODE_BUILTIN_NAMESPACE}`), + new RegExp(`^${BUN_BUILTIN_NAMESPACE}`) +]; +function isNodeLikeBuiltin(id) { + return isBuiltin(nodeLikeBuiltins, id); +} +function isNodeBuiltin(id) { + if (id.startsWith(NODE_BUILTIN_NAMESPACE)) return true; + return nodeBuiltins.includes(id); +} +function isInNodeModules(id) { + return id.includes("node_modules"); +} +function moduleListContains(moduleList, id) { + return moduleList?.some((m) => m === id || id.startsWith(withTrailingSlash(m))); +} +function isOptimizable(id, optimizeDeps) { + const { extensions } = optimizeDeps; + return OPTIMIZABLE_ENTRY_RE.test(id) || (extensions?.some((ext) => id.endsWith(ext)) ?? false); +} +const bareImportRE = /^(?![a-zA-Z]:)[\w@](?!.*:\/\/)/; +const deepImportRE = /^([^@][^/]*)\/|^(@[^/]+\/[^/]+)\//; +const _dirname = path.dirname(fileURLToPath( + /** #__KEEP__ */ + import.meta.url +)); +const rollupVersion = "4.23.0"; +const filter = process.env.VITE_DEBUG_FILTER; +const DEBUG = process.env.DEBUG; +function createDebugger(namespace, options = {}) { + const log = node_default(namespace); + const { onlyWhenFocused, depth } = options; + if (depth && log.inspectOpts && log.inspectOpts.depth == null) log.inspectOpts.depth = options.depth; + let enabled = log.enabled; + if (enabled && onlyWhenFocused) enabled = !!DEBUG?.includes(typeof onlyWhenFocused === "string" ? onlyWhenFocused : namespace); + if (enabled) return (...args) => { + if (!filter || args.some((a) => a?.includes?.(filter))) log(...args); + }; +} +function testCaseInsensitiveFS() { + if (!CLIENT_ENTRY.endsWith("client.mjs")) throw new Error(`cannot test case insensitive FS, CLIENT_ENTRY const doesn't contain client.mjs`); + if (!fs.existsSync(CLIENT_ENTRY)) throw new Error("cannot test case insensitive FS, CLIENT_ENTRY does not point to an existing file: " + CLIENT_ENTRY); + return fs.existsSync(CLIENT_ENTRY.replace("client.mjs", "cLiEnT.mjs")); +} +const isCaseInsensitiveFS = testCaseInsensitiveFS(); +const VOLUME_RE = /^[A-Z]:/i; +function normalizePath(id) { + return path.posix.normalize(isWindows ? slash(id) : id); +} +function fsPathFromId(id) { + const fsPath = normalizePath(id.startsWith(FS_PREFIX) ? id.slice(FS_PREFIX.length) : id); + return fsPath[0] === "/" || VOLUME_RE.test(fsPath) ? fsPath : `/${fsPath}`; +} +function fsPathFromUrl(url) { + return fsPathFromId(cleanUrl(url)); +} +/** +* Check if dir is a parent of file +* +* Warning: parameters are not validated, only works with normalized absolute paths +* +* @param dir - normalized absolute path +* @param file - normalized absolute path +* @returns true if dir is a parent of file +*/ +function isParentDirectory(dir, file) { + dir = withTrailingSlash(dir); + return file.startsWith(dir) || isCaseInsensitiveFS && file.toLowerCase().startsWith(dir.toLowerCase()); +} +/** +* Check if 2 file name are identical +* +* Warning: parameters are not validated, only works with normalized absolute paths +* +* @param file1 - normalized absolute path +* @param file2 - normalized absolute path +* @returns true if both files url are identical +*/ +function isSameFilePath(file1, file2) { + return file1 === file2 || isCaseInsensitiveFS && file1.toLowerCase() === file2.toLowerCase(); +} +const externalRE = /^([a-z]+:)?\/\//; +const isExternalUrl = (url) => externalRE.test(url); +const dataUrlRE = /^\s*data:/i; +const isDataUrl = (url) => dataUrlRE.test(url); +const virtualModuleRE = /^virtual-module:.*/; +const virtualModulePrefix = "virtual-module:"; +const knownJsSrcRE = /\.(?:[jt]sx?|m[jt]s|vue|marko|svelte|astro|imba|mdx)(?:$|\?)/; +const isJSRequest = (url) => { + url = cleanUrl(url); + if (knownJsSrcRE.test(url)) return true; + if (!path.extname(url) && url[url.length - 1] !== "/") return true; + return false; +}; +const isCSSRequest = (request) => CSS_LANGS_RE.test(request); +const importQueryRE = /(\?|&)import=?(?:&|$)/; +const directRequestRE$1 = /(\?|&)direct=?(?:&|$)/; +const InternalPrefixRE = new RegExp(`^(?:${[ + FS_PREFIX, + VALID_ID_PREFIX, + CLIENT_PUBLIC_PATH, + ENV_PUBLIC_PATH +].join("|")})`); +const trailingSeparatorRE = /[?&]$/; +const isImportRequest = (url) => importQueryRE.test(url); +const isInternalRequest = (url) => InternalPrefixRE.test(url); +function removeImportQuery(url) { + return url.replace(importQueryRE, "$1").replace(trailingSeparatorRE, ""); +} +function removeDirectQuery(url) { + return url.replace(directRequestRE$1, "$1").replace(trailingSeparatorRE, ""); +} +const urlRE$1 = /(\?|&)url(?:&|$)/; +const rawRE$1 = /(\?|&)raw(?:&|$)/; +function removeUrlQuery(url) { + return url.replace(urlRE$1, "$1").replace(trailingSeparatorRE, ""); +} +function injectQuery(url, queryToInject) { + const { file, postfix } = splitFileAndPostfix(url); + return `${isWindows ? slash(file) : file}?${queryToInject}${postfix[0] === "?" ? `&${postfix.slice(1)}` : postfix}`; +} +const timestampRE = /\bt=\d{13}&?\b/; +function removeTimestampQuery(url) { + return url.replace(timestampRE, "").replace(trailingSeparatorRE, ""); +} +async function asyncReplace(input, re, replacer) { + let match; + let remaining = input; + let rewritten = ""; + while (match = re.exec(remaining)) { + rewritten += remaining.slice(0, match.index); + rewritten += await replacer(match); + remaining = remaining.slice(match.index + match[0].length); + } + rewritten += remaining; + return rewritten; +} +function timeFrom(start, subtract = 0) { + const time = performance$1.now() - start - subtract; + const timeString = (time.toFixed(2) + `ms`).padEnd(5, " "); + if (time < 10) return import_picocolors.default.green(timeString); + else if (time < 50) return import_picocolors.default.yellow(timeString); + else return import_picocolors.default.red(timeString); +} +/** +* pretty url for logging. +*/ +function prettifyUrl(url, root) { + url = removeTimestampQuery(url); + const isAbsoluteFile = url.startsWith(root); + if (isAbsoluteFile || url.startsWith(FS_PREFIX)) { + const file = path.posix.relative(root, isAbsoluteFile ? url : fsPathFromId(url)); + return import_picocolors.default.dim(file); + } else return import_picocolors.default.dim(url); +} +function isObject$1(value) { + return Object.prototype.toString.call(value) === "[object Object]"; +} +function isDefined(value) { + return value != null; +} +function tryStatSync(file) { + try { + return fs.statSync(file, { throwIfNoEntry: false }); + } catch {} +} +function lookupFile(dir, fileNames) { + while (dir) { + for (const fileName of fileNames) { + const fullPath = path.join(dir, fileName); + if (tryStatSync(fullPath)?.isFile()) return fullPath; + } + const parentDir = path.dirname(dir); + if (parentDir === dir) return; + dir = parentDir; + } +} +function isFilePathESM(filePath, packageCache) { + if (/\.m[jt]s$/.test(filePath)) return true; + else if (/\.c[jt]s$/.test(filePath)) return false; + else try { + return findNearestPackageData(path.dirname(filePath), packageCache)?.data.type === "module"; + } catch { + return false; + } +} +const splitRE = /\r?\n/g; +const range = 2; +function pad(source, n = 2) { + return source.split(splitRE).map((l) => ` `.repeat(n) + l).join(`\n`); +} +function posToNumber(source, pos) { + if (typeof pos === "number") return pos; + const lines = source.split(splitRE); + const { line, column } = pos; + let start = 0; + for (let i = 0; i < line - 1 && i < lines.length; i++) start += lines[i].length + 1; + return start + column; +} +function numberToPos(source, offset) { + if (typeof offset !== "number") return offset; + if (offset > source.length) throw new Error(`offset is longer than source length! offset ${offset} > length ${source.length}`); + const lines = source.slice(0, offset).split(splitRE); + return { + line: lines.length, + column: lines[lines.length - 1].length + }; +} +const MAX_DISPLAY_LEN = 120; +const ELLIPSIS = "..."; +function generateCodeFrame(source, start = 0, end) { + start = Math.max(posToNumber(source, start), 0); + end = Math.min(end !== void 0 ? posToNumber(source, end) : start, source.length); + const lastPosLine = end !== void 0 ? numberToPos(source, end).line : numberToPos(source, start).line + range; + const lineNumberWidth = Math.max(3, String(lastPosLine).length + 1); + const lines = source.split(splitRE); + let count = 0; + const res = []; + for (let i = 0; i < lines.length; i++) { + count += lines[i].length; + if (count >= start) { + for (let j = i - range; j <= i + range || end > count; j++) { + if (j < 0 || j >= lines.length) continue; + const line = j + 1; + const lineLength = lines[j].length; + const pad = Math.max(start - (count - lineLength), 0); + const underlineLength = Math.max(1, end > count ? lineLength - pad : end - start); + let displayLine = lines[j]; + let underlinePad = pad; + if (lineLength > MAX_DISPLAY_LEN) { + let startIdx = 0; + if (j === i) { + if (underlineLength > MAX_DISPLAY_LEN) startIdx = pad; + else { + const center = pad + Math.floor(underlineLength / 2); + startIdx = Math.max(0, center - Math.floor(MAX_DISPLAY_LEN / 2)); + } + underlinePad = Math.max(0, pad - startIdx) + (startIdx > 0 ? 3 : 0); + } + const prefix = startIdx > 0 ? ELLIPSIS : ""; + const suffix = lineLength - startIdx > MAX_DISPLAY_LEN ? ELLIPSIS : ""; + const sliceLen = MAX_DISPLAY_LEN - prefix.length - suffix.length; + displayLine = prefix + displayLine.slice(startIdx, startIdx + sliceLen) + suffix; + } + res.push(`${line}${" ".repeat(lineNumberWidth - String(line).length)}| ${displayLine}`); + if (j === i) { + const underline = "^".repeat(Math.min(underlineLength, MAX_DISPLAY_LEN)); + res.push(`${" ".repeat(lineNumberWidth)}| ` + " ".repeat(underlinePad) + underline); + } else if (j > i) { + if (end > count) { + const length = Math.max(Math.min(end - count, lineLength), 1); + const underline = "^".repeat(Math.min(length, MAX_DISPLAY_LEN)); + res.push(`${" ".repeat(lineNumberWidth)}| ` + underline); + } + count += lineLength + 1; + } + } + break; + } + count++; + } + return res.join("\n"); +} +function isFileReadable(filename) { + if (!tryStatSync(filename)) return false; + try { + fs.accessSync(filename, fs.constants.R_OK); + return true; + } catch { + return false; + } +} +const splitFirstDirRE = /(.+?)[\\/](.+)/; +/** +* Delete every file and subdirectory. **The given directory must exist.** +* Pass an optional `skip` array to preserve files under the root directory. +*/ +function emptyDir(dir, skip) { + const skipInDir = []; + let nested = null; + if (skip?.length) for (const file of skip) if (path.dirname(file) !== ".") { + const matched = splitFirstDirRE.exec(file); + if (matched) { + nested ??= /* @__PURE__ */ new Map(); + const [, nestedDir, skipPath] = matched; + let nestedSkip = nested.get(nestedDir); + if (!nestedSkip) { + nestedSkip = []; + nested.set(nestedDir, nestedSkip); + } + if (!nestedSkip.includes(skipPath)) nestedSkip.push(skipPath); + } + } else skipInDir.push(file); + for (const file of fs.readdirSync(dir)) { + if (skipInDir.includes(file)) continue; + if (nested?.has(file)) emptyDir(path.resolve(dir, file), nested.get(file)); + else fs.rmSync(path.resolve(dir, file), { + recursive: true, + force: true + }); + } +} +function copyDir(srcDir, destDir) { + fs.mkdirSync(destDir, { recursive: true }); + for (const file of fs.readdirSync(srcDir)) { + const srcFile = path.resolve(srcDir, file); + if (srcFile === destDir) continue; + const destFile = path.resolve(destDir, file); + if (fs.statSync(srcFile).isDirectory()) copyDir(srcFile, destFile); + else fs.copyFileSync(srcFile, destFile); + } +} +const ERR_SYMLINK_IN_RECURSIVE_READDIR = "ERR_SYMLINK_IN_RECURSIVE_READDIR"; +async function recursiveReaddir(dir) { + if (!fs.existsSync(dir)) return []; + let dirents; + try { + dirents = await fsp.readdir(dir, { withFileTypes: true }); + } catch (e) { + if (e.code === "EACCES") return []; + throw e; + } + if (dirents.some((dirent) => dirent.isSymbolicLink())) { + const err = /* @__PURE__ */ new Error("Symbolic links are not supported in recursiveReaddir"); + err.code = ERR_SYMLINK_IN_RECURSIVE_READDIR; + throw err; + } + return (await Promise.all(dirents.map((dirent) => { + const res = path.resolve(dir, dirent.name); + return dirent.isDirectory() ? recursiveReaddir(res) : normalizePath(res); + }))).flat(1); +} +let safeRealpathSync = isWindows ? windowsSafeRealPathSync : fs.realpathSync.native; +const windowsNetworkMap = /* @__PURE__ */ new Map(); +function windowsMappedRealpathSync(path) { + const realPath = fs.realpathSync.native(path); + if (realPath.startsWith("\\\\")) { + for (const [network, volume] of windowsNetworkMap) if (realPath.startsWith(network)) return realPath.replace(network, volume); + } + return realPath; +} +const parseNetUseRE = /^\w* +(\w:) +([^ ]+)\s/; +let firstSafeRealPathSyncRun = false; +function windowsSafeRealPathSync(path) { + if (!firstSafeRealPathSyncRun) { + optimizeSafeRealPathSync(); + firstSafeRealPathSyncRun = true; + } + return fs.realpathSync(path); +} +function optimizeSafeRealPathSync() { + try { + fs.realpathSync.native(path.resolve("./")); + } catch (error) { + if (error.message.includes("EISDIR: illegal operation on a directory")) { + safeRealpathSync = fs.realpathSync; + return; + } + } + exec("net use", (error, stdout) => { + if (error) return; + const lines = stdout.split("\n"); + for (const line of lines) { + const m = parseNetUseRE.exec(line); + if (m) windowsNetworkMap.set(m[2], m[1]); + } + if (windowsNetworkMap.size === 0) safeRealpathSync = fs.realpathSync.native; + else safeRealpathSync = windowsMappedRealpathSync; + }); +} +function ensureWatchedFile(watcher, file, root) { + if (file && !file.startsWith(withTrailingSlash(root)) && !file.includes("\0") && fs.existsSync(file)) watcher.add(path.resolve(file)); +} +function joinSrcset(ret) { + return ret.map(({ url, descriptor }) => url + (descriptor ? ` ${descriptor}` : "")).join(", "); +} +/** +This regex represents a loose rule of an “image candidate string” and "image set options". + +@see https://html.spec.whatwg.org/multipage/images.html#srcset-attribute +@see https://drafts.csswg.org/css-images-4/#image-set-notation + +The Regex has named capturing groups `url` and `descriptor`. +The `url` group can be: +* any CSS function +* CSS string (single or double-quoted) +* URL string (unquoted) +The `descriptor` is anything after the space and before the comma. +*/ +const imageCandidateRegex = /(?:^|\s|(?<=,))(?[\w-]+\([^)]*\)|"[^"]*"|'[^']*'|[^,]\S*[^,])\s*(?:\s(?\w[^,]+))?(?:,|$)/g; +const escapedSpaceCharacters = /(?: |\\t|\\n|\\f|\\r)+/g; +function parseSrcset(string) { + const matches = string.trim().replace(escapedSpaceCharacters, " ").replace(/\r?\n/, "").replace(/,\s+/, ", ").replaceAll(/\s+/g, " ").matchAll(imageCandidateRegex); + return Array.from(matches, ({ groups }) => ({ + url: groups?.url?.trim() ?? "", + descriptor: groups?.descriptor?.trim() ?? "" + })).filter(({ url }) => !!url); +} +function processSrcSet(srcs, replacer) { + return Promise.all(parseSrcset(srcs).map(async ({ url, descriptor }) => ({ + url: await replacer({ + url, + descriptor + }), + descriptor + }))).then(joinSrcset); +} +function processSrcSetSync(srcs, replacer) { + return joinSrcset(parseSrcset(srcs).map(({ url, descriptor }) => ({ + url: replacer({ + url, + descriptor + }), + descriptor + }))); +} +const windowsDriveRE = /^[A-Z]:/; +const replaceWindowsDriveRE = /^([A-Z]):\//; +const linuxAbsolutePathRE = /^\/[^/]/; +function escapeToLinuxLikePath(path) { + if (windowsDriveRE.test(path)) return path.replace(replaceWindowsDriveRE, "/windows/$1/"); + if (linuxAbsolutePathRE.test(path)) return `/linux${path}`; + return path; +} +const revertWindowsDriveRE = /^\/windows\/([A-Z])\//; +function unescapeToLinuxLikePath(path) { + if (path.startsWith("/linux/")) return path.slice(6); + if (path.startsWith("/windows/")) return path.replace(revertWindowsDriveRE, "$1:/"); + return path; +} +const nullSourceMap = { + names: [], + sources: [], + mappings: "", + version: 3 +}; +/** +* Combines multiple sourcemaps into a single sourcemap. +* Note that the length of sourcemapList must be 2. +*/ +function combineSourcemaps(filename, sourcemapList) { + if (sourcemapList.length === 0 || sourcemapList.every((m) => m.sources.length === 0)) return { ...nullSourceMap }; + sourcemapList = sourcemapList.map((sourcemap) => { + const newSourcemaps = { ...sourcemap }; + newSourcemaps.sources = sourcemap.sources.map((source) => source ? escapeToLinuxLikePath(source) : null); + if (sourcemap.sourceRoot) newSourcemaps.sourceRoot = escapeToLinuxLikePath(sourcemap.sourceRoot); + return newSourcemaps; + }); + const escapedFilename = escapeToLinuxLikePath(filename); + let map; + let mapIndex = 1; + if (sourcemapList.slice(0, -1).find((m) => m.sources.length !== 1) === void 0) map = remapping(sourcemapList, () => null); + else map = remapping(sourcemapList[0], function loader(sourcefile) { + if (sourcefile === escapedFilename && sourcemapList[mapIndex]) return sourcemapList[mapIndex++]; + else return null; + }); + if (!map.file) delete map.file; + map.sources = map.sources.map((source) => source ? unescapeToLinuxLikePath(source) : source); + map.file = filename; + return map; +} +function unique(arr) { + return Array.from(new Set(arr)); +} +/** +* Returns resolved localhost address when `dns.lookup` result differs from DNS +* +* `dns.lookup` result is same when defaultResultOrder is `verbatim`. +* Even if defaultResultOrder is `ipv4first`, `dns.lookup` result maybe same. +* For example, when IPv6 is not supported on that machine/network. +*/ +function getLocalhostAddressIfDiffersFromDNS() { + if (promises.getDefaultResultOrder && promises.getDefaultResultOrder() === "verbatim") return; + return Promise.all([promises.lookup("localhost"), promises.lookup("localhost", { verbatim: true })]).then(([nodeResult, dnsResult]) => { + return nodeResult.family === dnsResult.family && nodeResult.address === dnsResult.address ? void 0 : nodeResult.address; + }); +} +function diffDnsOrderChange(oldUrls, newUrls) { + return !(oldUrls === newUrls || oldUrls && newUrls && arrayEqual(oldUrls.local, newUrls.local) && arrayEqual(oldUrls.network, newUrls.network)); +} +async function resolveHostname(optionsHost) { + let host; + if (optionsHost === void 0 || optionsHost === false) host = "localhost"; + else if (optionsHost === true) host = void 0; + else host = optionsHost; + let name = host === void 0 || wildcardHosts.has(host) ? "localhost" : host; + if (host === "localhost") { + const localhostAddr = await getLocalhostAddressIfDiffersFromDNS(); + if (localhostAddr) name = localhostAddr; + } + return { + host, + name + }; +} +function extractHostnamesFromCerts(certs) { + const certList = certs ? arraify(certs) : []; + if (certList.length === 0) return []; + return unique(certList.map((cert) => { + try { + return new crypto.X509Certificate(cert); + } catch { + return null; + } + }).flatMap((cert) => cert?.subjectAltName ? extractHostnamesFromSubjectAltName(cert.subjectAltName) : [])); +} +function resolveServerUrls(server, options, hostname, httpsOptions, config) { + const address = server.address(); + const isAddressInfo = (x) => x?.address; + if (!isAddressInfo(address)) return { + local: [], + network: [] + }; + const local = []; + const network = []; + const protocol = options.https ? "https" : "http"; + const port = address.port; + const base = config.rawBase === "./" || config.rawBase === "" ? "/" : config.rawBase; + if (hostname.host !== void 0 && !wildcardHosts.has(hostname.host)) { + let hostnameName = hostname.name; + if (hostnameName.includes(":")) hostnameName = `[${hostnameName}]`; + const address = `${protocol}://${hostnameName}:${port}${base}`; + if (loopbackHosts.has(hostname.host)) local.push(address); + else network.push(address); + } else Object.values(os.networkInterfaces()).flatMap((nInterface) => nInterface ?? []).filter((detail) => detail.address && detail.family === "IPv4").forEach((detail) => { + let host = detail.address.replace("127.0.0.1", hostname.name); + if (host.includes(":")) host = `[${host}]`; + const url = `${protocol}://${host}:${port}${base}`; + if (detail.address.includes("127.0.0.1")) local.push(url); + else network.push(url); + }); + const hostnamesFromCert = extractHostnamesFromCerts(httpsOptions?.cert); + if (hostnamesFromCert.length > 0) { + const existings = new Set([...local, ...network]); + local.push(...hostnamesFromCert.map((hostname) => `${protocol}://${hostname}:${port}${base}`).filter((url) => !existings.has(url))); + } + return { + local, + network + }; +} +function extractHostnamesFromSubjectAltName(subjectAltName) { + const hostnames = []; + let remaining = subjectAltName; + while (remaining) { + const nameEndIndex = remaining.indexOf(":"); + const name = remaining.slice(0, nameEndIndex); + remaining = remaining.slice(nameEndIndex + 1); + if (!remaining) break; + const isQuoted = remaining[0] === "\""; + let value; + if (isQuoted) { + const endQuoteIndex = remaining.indexOf("\"", 1); + value = JSON.parse(remaining.slice(0, endQuoteIndex + 1)); + remaining = remaining.slice(endQuoteIndex + 1); + } else { + const maybeEndIndex = remaining.indexOf(","); + const endIndex = maybeEndIndex === -1 ? remaining.length : maybeEndIndex; + value = remaining.slice(0, endIndex); + remaining = remaining.slice(endIndex); + } + remaining = remaining.slice(1).trimStart(); + if (name === "DNS" && value !== "[::1]" && !(value.startsWith("*.") && net.isIPv4(value.slice(2)))) hostnames.push(value.replace("*", "vite")); + } + return hostnames; +} +function arraify(target) { + return Array.isArray(target) ? target : [target]; +} +const multilineCommentsRE = /\/\*[^*]*\*+(?:[^/*][^*]*\*+)*\//g; +const singlelineCommentsRE = /\/\/.*/g; +const requestQuerySplitRE = /\?(?!.*[/|}])/; +const requestQueryMaybeEscapedSplitRE = /\\?\?(?!.*[/|}])/; +const blankReplacer = (match) => " ".repeat(match.length); +function getHash(text, length = 8) { + const h = crypto.hash("sha256", text, "hex").substring(0, length); + if (length <= 64) return h; + return h.padEnd(length, "_"); +} +function emptyCssComments(raw) { + return raw.replace(multilineCommentsRE, blankReplacer); +} +function backwardCompatibleWorkerPlugins(plugins) { + if (Array.isArray(plugins)) return plugins; + if (typeof plugins === "function") return plugins(); + return []; +} +function deepClone(value) { + if (Array.isArray(value)) return value.map((v) => deepClone(v)); + if (isObject$1(value)) { + const cloned = {}; + for (const key in value) cloned[key] = deepClone(value[key]); + return cloned; + } + if (typeof value === "function") return value; + if (value instanceof RegExp) return new RegExp(value); + if (typeof value === "object" && value != null) throw new Error("Cannot deep clone non-plain object"); + return value; +} +function mergeWithDefaultsRecursively(defaults, values) { + const merged = defaults; + for (const key in values) { + const value = values[key]; + if (value === void 0) continue; + const existing = merged[key]; + if (existing === void 0) { + merged[key] = value; + continue; + } + if (isObject$1(existing) && isObject$1(value)) { + merged[key] = mergeWithDefaultsRecursively(existing, value); + continue; + } + merged[key] = value; + } + return merged; +} +const environmentPathRE = /^environments\.[^.]+$/; +function mergeWithDefaults(defaults, values) { + return mergeWithDefaultsRecursively(deepClone(defaults), values); +} +const runtimeDeprecatedPath = new Set(["optimizeDeps", "ssr.optimizeDeps"]); +const rollupOptionsDeprecationCall = () => { + const method = process.env.VITE_DEPRECATION_TRACE ? "trace" : "warn"; + console[method]("`optimizeDeps.rollupOptions` / `ssr.optimizeDeps.rollupOptions` is deprecated. Use `optimizeDeps.rolldownOptions` instead. Note that this option may be set by a plugin. " + (method === "trace" ? "Showing trace because VITE_DEPRECATION_TRACE is set." : "Set VITE_DEPRECATION_TRACE=1 to see where it is called.")); +}; +function setupRollupOptionCompat(buildConfig, path) { + buildConfig.rolldownOptions ??= buildConfig.rollupOptions; + if (runtimeDeprecatedPath.has(path) && buildConfig.rollupOptions && buildConfig.rolldownOptions !== buildConfig.rollupOptions) rollupOptionsDeprecationCall(); + Object.defineProperty(buildConfig, "rollupOptions", { + get() { + return buildConfig.rolldownOptions; + }, + set(newValue) { + if (runtimeDeprecatedPath.has(path)) rollupOptionsDeprecationCall(); + buildConfig.rolldownOptions = newValue; + }, + configurable: true, + enumerable: true + }); +} +const rollupOptionsRootPaths = new Set([ + "build", + "worker", + "optimizeDeps", + "ssr.optimizeDeps" +]); +/** +* Sets up `rollupOptions` compat proxies for an environment. +*/ +function setupRollupOptionCompatForEnvironment(environment) { + if (!isObject$1(environment)) return environment; + const merged = { ...environment }; + if (isObject$1(merged.build)) setupRollupOptionCompat(merged.build, "build"); + return merged; +} +function hasBothRollupOptionsAndRolldownOptions(options) { + for (const opt of [ + options.build, + options.worker, + options.optimizeDeps, + options.ssr?.optimizeDeps + ]) if (opt != null && opt.rollupOptions != null && opt.rolldownOptions != null && opt.rollupOptions !== opt.rolldownOptions) return true; + return false; +} +function mergeConfigRecursively(defaults, overrides, rootPath) { + const merged = { ...defaults }; + if (rollupOptionsRootPaths.has(rootPath)) setupRollupOptionCompat(merged, rootPath); + for (const key in overrides) { + const value = overrides[key]; + if (value == null) continue; + let existing = merged[key]; + if (key === "rollupOptions" && rollupOptionsRootPaths.has(rootPath)) { + if (overrides.rolldownOptions) continue; + existing = merged.rolldownOptions; + } + if (existing == null) { + if (rootPath === "" && key === "environments" && isObject$1(value)) { + const environments = { ...value }; + for (const envName in environments) environments[envName] = setupRollupOptionCompatForEnvironment(environments[envName]); + merged[key] = environments; + } else if (rootPath === "environments") merged[key] = setupRollupOptionCompatForEnvironment(value); + else merged[key] = value; + continue; + } + if (key === "alias" && (rootPath === "resolve" || rootPath === "")) { + merged[key] = mergeAlias(existing, value); + continue; + } else if (key === "assetsInclude" && rootPath === "") { + merged[key] = [].concat(existing, value); + continue; + } else if (((key === "noExternal" || key === "external") && (rootPath === "ssr" || rootPath === "resolve") || key === "allowedHosts" && rootPath === "server") && (existing === true || value === true)) { + merged[key] = true; + continue; + } else if (key === "plugins" && rootPath === "worker") { + merged[key] = () => [...backwardCompatibleWorkerPlugins(existing), ...backwardCompatibleWorkerPlugins(value)]; + continue; + } else if (key === "server" && rootPath === "server.hmr") { + merged[key] = value; + continue; + } + if (Array.isArray(existing) || Array.isArray(value)) { + merged[key] = [...arraify(existing), ...arraify(value)]; + continue; + } + if (isObject$1(existing) && isObject$1(value)) { + merged[key] = mergeConfigRecursively(existing, value, rootPath && !environmentPathRE.test(rootPath) ? `${rootPath}.${key}` : key); + continue; + } + merged[key] = value; + } + return merged; +} +function mergeConfig(defaults, overrides, isRoot = true) { + if (typeof defaults === "function" || typeof overrides === "function") throw new Error(`Cannot merge config in form of callback`); + return mergeConfigRecursively(defaults, overrides, isRoot ? "" : "."); +} +function mergeAlias(a, b) { + if (!a) return b; + if (!b) return a; + if (isObject$1(a) && isObject$1(b)) return { + ...a, + ...b + }; + return [...normalizeAlias(b), ...normalizeAlias(a)]; +} +function normalizeAlias(o = []) { + return Array.isArray(o) ? o.map(normalizeSingleAlias) : Object.keys(o).map((find) => normalizeSingleAlias({ + find, + replacement: o[find] + })); +} +function normalizeSingleAlias({ find, replacement, customResolver }) { + if (typeof find === "string" && find.endsWith("/") && replacement.endsWith("/")) { + find = find.slice(0, find.length - 1); + replacement = replacement.slice(0, replacement.length - 1); + } + const alias = { + find, + replacement + }; + if (customResolver) alias.customResolver = customResolver; + return alias; +} +/** +* Transforms transpiled code result where line numbers aren't altered, +* so we can skip sourcemap generation during dev +*/ +function transformStableResult(s, id, config) { + return { + code: s.toString(), + map: config.command === "build" && config.build.sourcemap ? s.generateMap({ + hires: "boundary", + source: id + }) : null + }; +} +async function asyncFlatten(arr) { + do + arr = (await Promise.all(arr)).flat(Infinity); + while (arr.some((v) => v?.then)); + return arr; +} +function stripBomTag(content) { + if (content.charCodeAt(0) === 65279) return content.slice(1); + return content; +} +/** +* Determine if a file is being requested with the correct case, to ensure +* consistent behavior between dev and prod and across operating systems. +*/ +function shouldServeFile(filePath, root) { + if (!isCaseInsensitiveFS) return true; + return hasCorrectCase(filePath, root); +} +/** +* Note that we can't use realpath here, because we don't want to follow +* symlinks. +*/ +function hasCorrectCase(file, assets) { + if (file === assets) return true; + const parent = path.dirname(file); + if (fs.readdirSync(parent).includes(path.basename(file))) return hasCorrectCase(parent, assets); + return false; +} +function joinUrlSegments(a, b) { + if (!a || !b) return a || b || ""; + if (a.endsWith("/")) a = a.substring(0, a.length - 1); + if (b[0] !== "/") b = "/" + b; + return a + b; +} +function removeLeadingSlash(str) { + return str[0] === "/" ? str.slice(1) : str; +} +function stripBase(path, base) { + if (path === base) return "/"; + const devBase = withTrailingSlash(base); + return path.startsWith(devBase) ? path.slice(devBase.length - 1) : path; +} +function arrayEqual(a, b) { + if (a === b) return true; + if (a.length !== b.length) return false; + for (let i = 0; i < a.length; i++) if (a[i] !== b[i]) return false; + return true; +} +function evalValue(rawValue) { + return new Function(` + var console, exports, global, module, process, require + return (\n${rawValue}\n) + `)(); +} +function getNpmPackageName(importPath) { + const parts = importPath.split("/"); + if (parts[0][0] === "@") { + if (!parts[1]) return null; + return `${parts[0]}/${parts[1]}`; + } else return parts[0]; +} +function getPkgName(name) { + return name[0] === "@" ? name.split("/")[1] : name; +} +const escapeRegexRE = /[-/\\^$*+?.()|[\]{}]/g; +function escapeRegex(str) { + return str.replace(escapeRegexRE, "\\$&"); +} +function getPackageManagerCommand(type = "install") { + const packageManager = process.env.npm_config_user_agent?.split(" ")[0].split("/")[0] || "npm"; + switch (type) { + case "install": return packageManager === "npm" ? "npm install" : `${packageManager} add`; + case "uninstall": return packageManager === "npm" ? "npm uninstall" : `${packageManager} remove`; + case "update": return packageManager === "yarn" ? "yarn upgrade" : `${packageManager} update`; + default: throw new TypeError(`Unknown command type: ${type}`); + } +} +function isDevServer(server) { + return "pluginContainer" in server; +} +function createSerialPromiseQueue() { + let previousTask; + return { async run(f) { + const thisTask = f(); + const depTasks = Promise.all([previousTask, thisTask]); + previousTask = depTasks; + const [, result] = await depTasks; + if (previousTask === depTasks) previousTask = void 0; + return result; + } }; +} +function sortObjectKeys(obj) { + const sorted = {}; + for (const key of Object.keys(obj).sort()) sorted[key] = obj[key]; + return sorted; +} +function displayTime(time) { + if (time < 1e3) return `${time}ms`; + time = time / 1e3; + if (time < 60) return `${time.toFixed(2)}s`; + const mins = Math.floor(time / 60); + const seconds = Math.round(time % 60); + if (seconds === 60) return `${mins + 1}m`; + return `${mins}m${seconds < 1 ? "" : ` ${seconds}s`}`; +} +/** +* Encodes the URI path portion (ignores part after ? or #) +*/ +function encodeURIPath(uri) { + if (uri.startsWith("data:")) return uri; + const filePath = cleanUrl(uri); + const postfix = filePath !== uri ? uri.slice(filePath.length) : ""; + return encodeURI(filePath) + postfix; +} +/** +* Like `encodeURIPath`, but only replacing `%` as `%25`. This is useful for environments +* that can handle un-encoded URIs, where `%` is the only ambiguous character. +*/ +function partialEncodeURIPath(uri) { + if (uri.startsWith("data:")) return uri; + const filePath = cleanUrl(uri); + const postfix = filePath !== uri ? uri.slice(filePath.length) : ""; + return filePath.replaceAll("%", "%25") + postfix; +} +function decodeURIIfPossible(input) { + try { + return decodeURI(input); + } catch { + return; + } +} +const sigtermCallbacks = /* @__PURE__ */ new Set(); +const parentSigtermCallback = async (signal, exitCode) => { + await Promise.all([...sigtermCallbacks].map((cb) => cb(signal, exitCode))); +}; +const setupSIGTERMListener = (callback) => { + if (sigtermCallbacks.size === 0) { + process.once("SIGTERM", parentSigtermCallback); + if (process.env.CI !== "true") process.stdin.on("end", parentSigtermCallback); + } + sigtermCallbacks.add(callback); +}; +const teardownSIGTERMListener = (callback) => { + sigtermCallbacks.delete(callback); + if (sigtermCallbacks.size === 0) { + process.off("SIGTERM", parentSigtermCallback); + if (process.env.CI !== "true") process.stdin.off("end", parentSigtermCallback); + } +}; +function getServerUrlByHost(resolvedUrls, host) { + if (typeof host === "string") { + const matchedUrl = [...resolvedUrls?.local ?? [], ...resolvedUrls?.network ?? []].find((url) => url.includes(host)); + if (matchedUrl) return matchedUrl; + } + return resolvedUrls?.local[0] ?? resolvedUrls?.network[0]; +} +let lastDateNow = 0; +/** +* Similar to `Date.now()`, but strictly monotonically increasing. +* +* This function will never return the same value. +* Thus, the value may differ from the actual time. +* +* related: https://github.com/vitejs/vite/issues/19804 +*/ +function monotonicDateNow() { + const now = Date.now(); + if (now > lastDateNow) { + lastDateNow = now; + return lastDateNow; + } + lastDateNow++; + return lastDateNow; +} +function formatAndTruncateFileList(files) { + const MAX_LOG_LENGTH = 500; + let log = ""; + let truncated = false; + for (let i = 0; i < files.length; i++) { + const file = files[i]; + if (log === "") log = file; + else if (log.length + 2 + file.length < MAX_LOG_LENGTH) log += ", " + file; + else { + log += ` and ${files.length - i} more`; + truncated = true; + break; + } + } + return { + formatted: log, + truncated + }; +} +const hashbangRE = /^#!.*\n/; +function getFileStartIndex(code) { + return hashbangRE.exec(code)?.[0].length ?? 0; +} +//#endregion +//#region src/node/plugin.ts +async function resolveEnvironmentPlugins(environment) { + const environmentPlugins = []; + for (const plugin of environment.getTopLevelConfig().plugins) { + if (plugin.applyToEnvironment) { + const applied = await plugin.applyToEnvironment(environment); + if (!applied) continue; + if (applied !== true) { + environmentPlugins.push(...(await asyncFlatten(arraify(applied))).filter(Boolean)); + continue; + } + } + environmentPlugins.push(plugin); + } + return environmentPlugins; +} +/** +* @experimental +*/ +function perEnvironmentPlugin(name, applyToEnvironment) { + return { + name, + applyToEnvironment + }; +} +//#endregion +//#region src/node/plugins/reporter.ts +function buildReporterPlugin(config) { + return perEnvironmentPlugin("native:reporter", (env) => { + const tty = process.stdout.isTTY && !process.env.CI; + const shouldLogInfo = LogLevels[config.logLevel || "info"] >= LogLevels.info; + const assetsDir = path.join(env.config.build.assetsDir, "/"); + return viteReporterPlugin({ + root: env.config.root, + isTty: !!tty, + isLib: !!env.config.build.lib, + assetsDir, + chunkLimit: env.config.build.chunkSizeWarningLimit, + logInfo: shouldLogInfo ? (msg) => env.logger.info(msg) : void 0, + reportCompressedSize: env.config.build.reportCompressedSize, + warnLargeChunks: env.config.build.minify && !env.config.build.lib && env.config.consumer === "client" + }); + }); +} +//#endregion +//#region src/node/plugins/esbuild.ts +const debug$14 = createDebugger("vite:esbuild"); +const IIFE_BEGIN_RE$1 = /(?:const|var)\s+\S+\s*=\s*\(?function\([^()]*\)\s*\{\s*"use strict";/; +const validExtensionRE$1 = /\.\w+$/; +const defaultEsbuildSupported = { + "dynamic-import": true, + "import-meta": true +}; +let esbuild; +const importEsbuild$1 = () => { + esbuild ||= import("esbuild"); + return esbuild; +}; +let warnedTransformWithEsbuild = false; +const warnTransformWithEsbuildUsageOnce = () => { + if (warnedTransformWithEsbuild) return; + warnedTransformWithEsbuild = true; + console.warn(import_picocolors.default.yellow("`transformWithEsbuild` is deprecated and will be removed in the future. Please migrate to `transformWithOxc`.")); +}; +async function transformWithEsbuild(code, filename, options, inMap, config, watcher, ignoreEsbuildWarning = false) { + let loader = options?.loader; + if (!loader) { + const ext = path.extname(validExtensionRE$1.test(filename) ? filename : cleanUrl(filename)).slice(1); + if (ext === "cjs" || ext === "mjs") loader = "js"; + else if (ext === "cts" || ext === "mts") loader = "ts"; + else loader = ext; + } + let tsconfigRaw = options?.tsconfigRaw; + if (typeof tsconfigRaw !== "string") { + const meaningfulFields = [ + "alwaysStrict", + "experimentalDecorators", + "importsNotUsedAsValues", + "jsx", + "jsxFactory", + "jsxFragmentFactory", + "jsxImportSource", + "preserveValueImports", + "target", + "useDefineForClassFields", + "verbatimModuleSyntax" + ]; + const compilerOptionsForFile = {}; + if (loader === "ts" || loader === "tsx") { + const result = resolveTsconfig(filename, getTSConfigResolutionCache(config)); + if (result) { + const { tsconfig: loadedTsconfig, tsconfigFilePaths } = result; + if (watcher && config) for (const tsconfigFile of tsconfigFilePaths) ensureWatchedFile(watcher, tsconfigFile, config.root); + const loadedCompilerOptions = loadedTsconfig.compilerOptions ?? {}; + for (const field of meaningfulFields) if (field in loadedCompilerOptions) compilerOptionsForFile[field] = loadedCompilerOptions[field]; + } + } + const compilerOptions = { + ...compilerOptionsForFile, + ...tsconfigRaw?.compilerOptions + }; + if (compilerOptions.useDefineForClassFields === void 0 && compilerOptions.target === void 0) compilerOptions.useDefineForClassFields = false; + if (options) { + if (options.jsx) compilerOptions.jsx = void 0; + if (options.jsxFactory) compilerOptions.jsxFactory = void 0; + if (options.jsxFragment) compilerOptions.jsxFragmentFactory = void 0; + if (options.jsxImportSource) compilerOptions.jsxImportSource = void 0; + } + tsconfigRaw = { + ...tsconfigRaw, + compilerOptions + }; + } + const resolvedOptions = { + sourcemap: true, + sourcefile: filename, + ...options, + loader, + tsconfigRaw + }; + delete resolvedOptions.include; + delete resolvedOptions.exclude; + delete resolvedOptions.jsxInject; + let transform; + try { + transform = (await importEsbuild$1()).transform; + } catch (e) { + throw new Error("Failed to load `transformWithEsbuild`. It is deprecated and it now requires esbuild to be installed separately. If you are a package author, please migrate to `transformWithOxc` instead.", { cause: e }); + } + if (!ignoreEsbuildWarning) warnTransformWithEsbuildUsageOnce(); + try { + const result = await transform(code, resolvedOptions); + let map; + if (inMap && resolvedOptions.sourcemap) { + const nextMap = JSON.parse(result.map); + nextMap.sourcesContent = []; + map = combineSourcemaps(filename, [nextMap, inMap]); + } else map = resolvedOptions.sourcemap && resolvedOptions.sourcemap !== "inline" ? JSON.parse(result.map) : { mappings: "" }; + return { + ...result, + map + }; + } catch (e) { + debug$14?.(`esbuild error with options used: `, resolvedOptions); + if (e.errors) { + e.frame = ""; + e.errors.forEach((m) => { + if (m.text === "Experimental decorators are not currently enabled" || m.text === "Parameter decorators only work when experimental decorators are enabled") m.text += ". Vite 5 now uses esbuild 0.18 and you need to enable them by adding \"experimentalDecorators\": true in your \"tsconfig.json\" file."; + e.frame += `\n` + prettifyMessage(m, code); + }); + e.loc = e.errors[0].location; + } + throw e; + } +} +const rollupToEsbuildFormatMap = { + es: "esm", + cjs: "cjs", + iife: void 0 +}; +const injectEsbuildHelpers = (esbuildCode, format) => { + const contentIndex = format === "iife" ? Math.max(esbuildCode.search(IIFE_BEGIN_RE$1), 0) : format === "umd" ? esbuildCode.indexOf(`(function(`) : 0; + if (contentIndex > 0) { + const esbuildHelpers = esbuildCode.slice(0, contentIndex); + return esbuildCode.slice(contentIndex).replace("\"use strict\";", (m) => m + esbuildHelpers); + } + return esbuildCode; +}; +const buildEsbuildPlugin = () => { + return { + name: "vite:esbuild-transpile", + applyToEnvironment(environment) { + return environment.config.esbuild !== false; + }, + async renderChunk(code, chunk, opts) { + if (this.environment.config.isOutputOptionsForLegacyChunks?.(opts)) return null; + const config = this.environment.config; + const options = resolveEsbuildTranspileOptions(config, opts.format); + if (!options) return null; + const res = await transformWithEsbuild(code, chunk.fileName, options, void 0, config, void 0, true); + if (config.build.lib) res.code = injectEsbuildHelpers(res.code, opts.format); + return res; + } + }; +}; +function resolveEsbuildTranspileOptions(config, format) { + const target = config.build.target; + const minify = config.build.minify === "esbuild"; + if ((!target || target === "esnext") && !minify) return null; + const isEsLibBuild = config.build.lib && format === "es"; + const esbuildOptions = config.esbuild || {}; + const options = { + ...esbuildOptions, + loader: "js", + target: target || void 0, + format: rollupToEsbuildFormatMap[format], + supported: { + ...defaultEsbuildSupported, + ...esbuildOptions.supported + } + }; + if (!minify) return { + ...options, + minify: false, + minifyIdentifiers: false, + minifySyntax: false, + minifyWhitespace: false, + treeShaking: false + }; + if (options.minifyIdentifiers != null || options.minifySyntax != null || options.minifyWhitespace != null) if (isEsLibBuild) return { + ...options, + minify: false, + minifyIdentifiers: options.minifyIdentifiers ?? true, + minifySyntax: options.minifySyntax ?? true, + minifyWhitespace: false, + treeShaking: true + }; + else return { + ...options, + minify: false, + minifyIdentifiers: options.minifyIdentifiers ?? true, + minifySyntax: options.minifySyntax ?? true, + minifyWhitespace: options.minifyWhitespace ?? true, + treeShaking: true + }; + if (isEsLibBuild) return { + ...options, + minify: false, + minifyIdentifiers: true, + minifySyntax: true, + minifyWhitespace: false, + treeShaking: true + }; + else return { + ...options, + minify: true, + treeShaking: true + }; +} +function prettifyMessage(m, code) { + let res = import_picocolors.default.yellow(m.text); + if (m.location) res += `\n` + generateCodeFrame(code, m.location); + return res + `\n`; +} +let globalTSConfigResolutionCache; +const tsconfigResolutionCacheMap = /* @__PURE__ */ new WeakMap(); +function getTSConfigResolutionCache(config) { + if (!config) return globalTSConfigResolutionCache ??= new TsconfigCache(); + let cache = tsconfigResolutionCacheMap.get(config); + if (!cache) { + cache = new TsconfigCache(); + tsconfigResolutionCacheMap.set(config, cache); + } + return cache; +} +async function reloadOnTsconfigChange(server, changedFile) { + if (changedFile.endsWith(".json")) { + const cache = getTSConfigResolutionCache(server.config); + if (changedFile.endsWith("/tsconfig.json")) { + server.config.logger.info(`changed tsconfig file detected: ${changedFile} - Clearing cache and forcing full-reload to ensure TypeScript is compiled with updated config values.`, { + clear: server.config.clearScreen, + timestamp: true + }); + for (const environment of Object.values(server.environments)) environment.moduleGraph.invalidateAll(); + cache.clear(); + for (const environment of Object.values(server.environments)) environment.hot.send({ + type: "full-reload", + path: "*" + }); + } + } +} +//#endregion +//#region ../../node_modules/.pnpm/artichokie@0.4.3/node_modules/artichokie/dist/index.js +const AsyncFunction = async function() {}.constructor; +const codeToDataUrl = (code) => `data:application/javascript,${encodeURIComponent(code + "\n//# sourceURL=[worker-eval(artichokie)]")}`; +const viteSsrDynamicImport = "__vite_ssr_dynamic_import__"; +const stackBlitzImport = "𝐢𝐦𝐩𝐨𝐫𝐭"; +var Worker$1 = class { + /** @internal */ + _isModule; + /** @internal */ + _code; + /** @internal */ + _parentFunctions; + /** @internal */ + _max; + /** @internal */ + _pool; + /** @internal */ + _idlePool; + /** @internal */ + _queue; + constructor(fn, options = {}) { + this._isModule = options.type === "module"; + this._code = genWorkerCode(fn, this._isModule, 5 * 1e3, options.parentFunctions ?? {}); + this._parentFunctions = options.parentFunctions ?? {}; + const defaultMax = Math.max(1, (os.availableParallelism?.() ?? os.cpus().length) - 1); + this._max = options.max || defaultMax; + this._pool = []; + this._idlePool = []; + this._queue = []; + } + async run(...args) { + const worker = await this._getAvailableWorker(); + return new Promise((resolve, reject) => { + worker.currentResolve = resolve; + worker.currentReject = reject; + worker.postMessage({ args }); + }); + } + stop() { + this._pool.forEach((w) => w.unref()); + this._queue.forEach(([, reject]) => reject(/* @__PURE__ */ new Error("Main worker pool stopped before a worker was available."))); + this._pool = []; + this._idlePool = []; + this._queue = []; + } + /** @internal */ + _createWorker(parentFunctionSyncMessagePort, parentFunctionAsyncMessagePort, lockState) { + const options = { + workerData: [ + parentFunctionSyncMessagePort, + parentFunctionAsyncMessagePort, + lockState + ], + transferList: [parentFunctionSyncMessagePort, parentFunctionAsyncMessagePort] + }; + if (this._isModule) return new Worker(new URL(codeToDataUrl(this._code)), options); + return new Worker(this._code, { + ...options, + eval: true + }); + } + /** @internal */ + async _getAvailableWorker() { + if (this._idlePool.length) return this._idlePool.shift(); + if (this._pool.length < this._max) { + const parentFunctionResponder = createParentFunctionResponder(this._parentFunctions); + const worker = this._createWorker(parentFunctionResponder.workerPorts.sync, parentFunctionResponder.workerPorts.async, parentFunctionResponder.lockState); + worker.on("message", async (args) => { + if ("result" in args) { + worker.currentResolve?.(args.result); + worker.currentResolve = null; + } else { + if (args.error instanceof ReferenceError) args.error.message += ". Maybe you forgot to pass the function to parentFunction?"; + worker.currentReject?.(args.error); + worker.currentReject = null; + } + this._assignDoneWorker(worker); + }); + worker.on("error", (err) => { + worker.currentReject?.(err); + worker.currentReject = null; + parentFunctionResponder.close(); + }); + worker.on("exit", (code) => { + const i = this._pool.indexOf(worker); + if (i > -1) this._pool.splice(i, 1); + if (code !== 0 && worker.currentReject) { + worker.currentReject(/* @__PURE__ */ new Error(`Worker stopped with non-0 exit code ${code}`)); + worker.currentReject = null; + parentFunctionResponder.close(); + } + }); + this._pool.push(worker); + return worker; + } + let resolve; + let reject; + const onWorkerAvailablePromise = new Promise((r, rj) => { + resolve = r; + reject = rj; + }); + this._queue.push([resolve, reject]); + return onWorkerAvailablePromise; + } + /** @internal */ + _assignDoneWorker(worker) { + if (this._queue.length) { + const [resolve] = this._queue.shift(); + resolve(worker); + return; + } + this._idlePool.push(worker); + } +}; +function createParentFunctionResponder(parentFunctions) { + const lockState = new Int32Array(new SharedArrayBuffer(4)); + const unlock = () => { + Atomics.store(lockState, 0, 0); + Atomics.notify(lockState, 0); + }; + const parentFunctionSyncMessageChannel = new MessageChannel(); + const parentFunctionAsyncMessageChannel = new MessageChannel(); + const parentFunctionSyncMessagePort = parentFunctionSyncMessageChannel.port1; + const parentFunctionAsyncMessagePort = parentFunctionAsyncMessageChannel.port1; + const syncResponse = (data) => { + parentFunctionSyncMessagePort.postMessage(data); + unlock(); + }; + parentFunctionSyncMessagePort.on("message", async (args) => { + let syncResult; + try { + syncResult = parentFunctions[args.name](...args.args); + } catch (error) { + syncResponse({ + id: args.id, + error + }); + return; + } + if (!(typeof syncResult === "object" && syncResult !== null && "then" in syncResult && typeof syncResult.then === "function")) { + syncResponse({ + id: args.id, + result: syncResult + }); + return; + } + syncResponse({ + id: args.id, + isAsync: true + }); + try { + const result = await syncResult; + parentFunctionAsyncMessagePort.postMessage({ + id: args.id, + result + }); + } catch (error) { + parentFunctionAsyncMessagePort.postMessage({ + id: args.id, + error + }); + } + }); + parentFunctionSyncMessagePort.unref(); + return { + close: () => { + parentFunctionSyncMessagePort.close(); + parentFunctionAsyncMessagePort.close(); + }, + lockState, + workerPorts: { + sync: parentFunctionSyncMessageChannel.port2, + async: parentFunctionAsyncMessageChannel.port2 + } + }; +} +function genWorkerCode(fn, isModule, waitTimeout, parentFunctions) { + const createLock = (performance, lockState) => { + return { + lock: () => { + Atomics.store(lockState, 0, 1); + }, + waitUnlock: () => { + let utilizationBefore; + while (true) { + const status = Atomics.wait(lockState, 0, 1, waitTimeout); + if (status === "timed-out") { + if (utilizationBefore === void 0) { + utilizationBefore = performance.eventLoopUtilization(); + continue; + } + utilizationBefore = performance.eventLoopUtilization(utilizationBefore); + if (utilizationBefore.utilization > .9) continue; + throw new Error(status); + } + break; + } + } + }; + }; + const createParentFunctionRequester = (syncPort, asyncPort, receive, lock) => { + let id = 0; + const resolvers = /* @__PURE__ */ new Map(); + const call = (key) => (...args) => { + id++; + lock.lock(); + syncPort.postMessage({ + id, + name: key, + args + }); + lock.waitUnlock(); + const resArgs = receive(syncPort).message; + if (resArgs.isAsync) { + let resolve, reject; + const promise = new Promise((res, rej) => { + resolve = res; + reject = rej; + }); + resolvers.set(id, { + resolve, + reject + }); + return promise; + } + if ("error" in resArgs) throw resArgs.error; + else return resArgs.result; + }; + asyncPort.on("message", (args) => { + const id = args.id; + if (resolvers.has(id)) { + const { resolve, reject } = resolvers.get(id); + resolvers.delete(id); + if ("result" in args) resolve(args.result); + else reject(args.error); + } + }); + return { call }; + }; + const fnString = fn.toString().replaceAll(stackBlitzImport, "import").replaceAll(viteSsrDynamicImport, "import"); + return ` +${isModule ? "import { parentPort, receiveMessageOnPort, workerData } from 'worker_threads'" : "const { parentPort, receiveMessageOnPort, workerData } = require('worker_threads')"} +${isModule ? "import { performance } from 'node:perf_hooks'" : "const { performance } = require('node:perf_hooks')"} +const [parentFunctionSyncMessagePort, parentFunctionAsyncMessagePort, lockState] = workerData +const waitTimeout = ${waitTimeout} +const createLock = ${createLock.toString()} +const parentFunctionRequester = (${createParentFunctionRequester.toString()})( + parentFunctionSyncMessagePort, + parentFunctionAsyncMessagePort, + receiveMessageOnPort, + createLock(performance, lockState) +) + +const doWorkPromise = (async () => { + ${Object.keys(parentFunctions).map((key) => `const ${key} = parentFunctionRequester.call(${JSON.stringify(key)});`).join("\n")} + return await (${fnString})() +})() +let doWork + +parentPort.on('message', async (args) => { + doWork ||= await doWorkPromise + + try { + const res = await doWork(...args.args) + parentPort.postMessage({ result: res }) + } catch (e) { + parentPort.postMessage({ error: e }) + } +}) + `; +} +const importRe = /\bimport\s*\(/g; +const internalImportName = "__artichokie_local_import__"; +var FakeWorker = class { + /** @internal */ + _fn; + constructor(fn, options = {}) { + const declareRequire = options.type !== "module"; + const argsAndCode = genFakeWorkerArgsAndCode(fn, declareRequire, options.parentFunctions ?? {}); + const localImport = (specifier) => import(specifier); + const args = [ + ...declareRequire ? [createRequire(import.meta.url)] : [], + localImport, + options.parentFunctions + ]; + this._fn = new AsyncFunction(...argsAndCode)(...args); + } + async run(...args) { + try { + return await (await this._fn)(...args); + } catch (err) { + if (err instanceof ReferenceError) err.message += ". Maybe you forgot to pass the function to parentFunction?"; + throw err; + } + } + stop() {} +}; +function genFakeWorkerArgsAndCode(fn, declareRequire, parentFunctions) { + const fnString = fn.toString().replace(importRe, `${internalImportName}(`).replaceAll(stackBlitzImport, internalImportName).replaceAll(viteSsrDynamicImport, internalImportName); + return [ + ...declareRequire ? ["require"] : [], + internalImportName, + "parentFunctions", + ` +${Object.keys(parentFunctions).map((key) => `const ${key} = parentFunctions[${JSON.stringify(key)}];`).join("\n")} +return await (${fnString})() + ` + ]; +} +var WorkerWithFallback = class { + /** @internal */ + _disableReal; + /** @internal */ + _realWorker; + /** @internal */ + _fakeWorker; + /** @internal */ + _shouldUseFake; + constructor(fn, options) { + this._disableReal = options.max !== void 0 && options.max <= 0; + this._realWorker = new Worker$1(fn, options); + this._fakeWorker = new FakeWorker(fn, options); + this._shouldUseFake = options.shouldUseFake; + } + async run(...args) { + const useFake = this._disableReal || this._shouldUseFake(...args); + return this[useFake ? "_fakeWorker" : "_realWorker"].run(...args); + } + stop() { + this._realWorker.stop(); + this._fakeWorker.stop(); + } +}; +//#endregion +//#region ../../node_modules/.pnpm/resolve.exports@2.0.3/node_modules/resolve.exports/dist/index.mjs +function e(e, n, r) { + throw new Error(r ? `No known conditions for "${n}" specifier in "${e}" package` : `Missing "${n}" specifier in "${e}" package`); +} +function n$1(n, i, o, f) { + let s, u, l = r(n, o), c = function(e) { + let n = new Set(["default", ...e.conditions || []]); + return e.unsafe || n.add(e.require ? "require" : "import"), e.unsafe || n.add(e.browser ? "browser" : "node"), n; + }(f || {}), a = i[l]; + if (void 0 === a) { + let e, n, r, t; + for (t in i) n && t.length < n.length || ("/" === t[t.length - 1] && l.startsWith(t) ? (u = l.substring(t.length), n = t) : t.length > 1 && (r = t.indexOf("*", 1), ~r && (e = RegExp("^" + t.substring(0, r) + "(.*)" + t.substring(1 + r) + "$").exec(l), e && e[1] && (u = e[1], n = t)))); + a = i[n]; + } + return a || e(n, l), s = t(a, c), s || e(n, l, 1), u && function(e, n) { + let r, t = 0, i = e.length, o = /[*]/g, f = /[/]$/; + for (; t < i; t++) e[t] = o.test(r = e[t]) ? r.replace(o, n) : f.test(r) ? r + n : r; + }(s, u), s; +} +function r(e, n, r) { + if (e === n || "." === n) return "."; + let t = e + "/", i = t.length, o = n.slice(0, i) === t, f = o ? n.slice(i) : n; + return "#" === f[0] ? f : o || !r ? "./" === f.slice(0, 2) ? f : "./" + f : f; +} +function t(e, n, r) { + if (e) { + if ("string" == typeof e) return r && r.add(e), [e]; + let i, o; + if (Array.isArray(e)) { + for (o = r || /* @__PURE__ */ new Set(), i = 0; i < e.length; i++) t(e[i], n, o); + if (!r && o.size) return [...o]; + } else for (i in e) if (n.has(i)) return t(e[i], n, r); + } +} +function o(e, r, t) { + let i, o = e.exports; + if (o) { + if ("string" == typeof o) o = { ".": o }; + else for (i in o) { + "." !== i[0] && (o = { ".": o }); + break; + } + return n$1(e.name, o, r || ".", t); + } +} +function f(e, r, t) { + if (e.imports) return n$1(e.name, e.imports, r, t); +} +//#endregion +//#region ../../node_modules/.pnpm/es-module-lexer@1.7.0/node_modules/es-module-lexer/dist/lexer.js +var ImportType; +(function(A) { + A[A.Static = 1] = "Static", A[A.Dynamic = 2] = "Dynamic", A[A.ImportMeta = 3] = "ImportMeta", A[A.StaticSourcePhase = 4] = "StaticSourcePhase", A[A.DynamicSourcePhase = 5] = "DynamicSourcePhase", A[A.StaticDeferPhase = 6] = "StaticDeferPhase", A[A.DynamicDeferPhase = 7] = "DynamicDeferPhase"; +})(ImportType || (ImportType = {})); +const A = 1 === new Uint8Array(new Uint16Array([1]).buffer)[0]; +function parse$2(E, g = "@") { + if (!C) return init.then((() => parse$2(E))); + const I = E.length + 1, w = (C.__heap_base.value || C.__heap_base) + 4 * I - C.memory.buffer.byteLength; + w > 0 && C.memory.grow(Math.ceil(w / 65536)); + const K = C.sa(I - 1); + if ((A ? B : Q)(E, new Uint16Array(C.memory.buffer, K, I)), !C.parse()) throw Object.assign(/* @__PURE__ */ new Error(`Parse error ${g}:${E.slice(0, C.e()).split("\n").length}:${C.e() - E.lastIndexOf("\n", C.e() - 1)}`), { idx: C.e() }); + const o = [], D = []; + for (; C.ri();) { + const A = C.is(), Q = C.ie(), B = C.it(), g = C.ai(), I = C.id(), w = C.ss(), K = C.se(); + let D; + C.ip() && (D = k(E.slice(-1 === I ? A - 1 : A, -1 === I ? Q + 1 : Q))), o.push({ + n: D, + t: B, + s: A, + e: Q, + ss: w, + se: K, + d: I, + a: g + }); + } + for (; C.re();) { + const A = C.es(), Q = C.ee(), B = C.els(), g = C.ele(), I = E.slice(A, Q), w = I[0], K = B < 0 ? void 0 : E.slice(B, g), o = K ? K[0] : ""; + D.push({ + s: A, + e: Q, + ls: B, + le: g, + n: "\"" === w || "'" === w ? k(I) : I, + ln: "\"" === o || "'" === o ? k(K) : K + }); + } + function k(A) { + try { + return (0, eval)(A); + } catch (A) {} + } + return [ + o, + D, + !!C.f(), + !!C.ms() + ]; +} +function Q(A, Q) { + const B = A.length; + let C = 0; + for (; C < B;) { + const B = A.charCodeAt(C); + Q[C++] = (255 & B) << 8 | B >>> 8; + } +} +function B(A, Q) { + const B = A.length; + let C = 0; + for (; C < B;) Q[C] = A.charCodeAt(C++); +} +let C; +const E = () => { + return A = "AGFzbQEAAAABKwhgAX8Bf2AEf39/fwBgAAF/YAAAYAF/AGADf39/AX9gAn9/AX9gA39/fwADMTAAAQECAgICAgICAgICAgICAgICAgIAAwMDBAQAAAUAAAAAAAMDAwAGAAAABwAGAgUEBQFwAQEBBQMBAAEGDwJ/AUHA8gALfwBBwPIACwd6FQZtZW1vcnkCAAJzYQAAAWUAAwJpcwAEAmllAAUCc3MABgJzZQAHAml0AAgCYWkACQJpZAAKAmlwAAsCZXMADAJlZQANA2VscwAOA2VsZQAPAnJpABACcmUAEQFmABICbXMAEwVwYXJzZQAUC19faGVhcF9iYXNlAwEKzkQwaAEBf0EAIAA2AoAKQQAoAtwJIgEgAEEBdGoiAEEAOwEAQQAgAEECaiIANgKECkEAIAA2AogKQQBBADYC4AlBAEEANgLwCUEAQQA2AugJQQBBADYC5AlBAEEANgL4CUEAQQA2AuwJIAEL0wEBA39BACgC8AkhBEEAQQAoAogKIgU2AvAJQQAgBDYC9AlBACAFQSRqNgKICiAEQSBqQeAJIAQbIAU2AgBBACgC1AkhBEEAKALQCSEGIAUgATYCACAFIAA2AgggBSACIAJBAmpBACAGIANGIgAbIAQgA0YiBBs2AgwgBSADNgIUIAVBADYCECAFIAI2AgQgBUEANgIgIAVBA0EBQQIgABsgBBs2AhwgBUEAKALQCSADRiICOgAYAkACQCACDQBBACgC1AkgA0cNAQtBAEEBOgCMCgsLXgEBf0EAKAL4CSIEQRBqQeQJIAQbQQAoAogKIgQ2AgBBACAENgL4CUEAIARBFGo2AogKQQBBAToAjAogBEEANgIQIAQgAzYCDCAEIAI2AgggBCABNgIEIAQgADYCAAsIAEEAKAKQCgsVAEEAKALoCSgCAEEAKALcCWtBAXULHgEBf0EAKALoCSgCBCIAQQAoAtwJa0EBdUF/IAAbCxUAQQAoAugJKAIIQQAoAtwJa0EBdQseAQF/QQAoAugJKAIMIgBBACgC3AlrQQF1QX8gABsLCwBBACgC6AkoAhwLHgEBf0EAKALoCSgCECIAQQAoAtwJa0EBdUF/IAAbCzsBAX8CQEEAKALoCSgCFCIAQQAoAtAJRw0AQX8PCwJAIABBACgC1AlHDQBBfg8LIABBACgC3AlrQQF1CwsAQQAoAugJLQAYCxUAQQAoAuwJKAIAQQAoAtwJa0EBdQsVAEEAKALsCSgCBEEAKALcCWtBAXULHgEBf0EAKALsCSgCCCIAQQAoAtwJa0EBdUF/IAAbCx4BAX9BACgC7AkoAgwiAEEAKALcCWtBAXVBfyAAGwslAQF/QQBBACgC6AkiAEEgakHgCSAAGygCACIANgLoCSAAQQBHCyUBAX9BAEEAKALsCSIAQRBqQeQJIAAbKAIAIgA2AuwJIABBAEcLCABBAC0AlAoLCABBAC0AjAoL3Q0BBX8jAEGA0ABrIgAkAEEAQQE6AJQKQQBBACgC2Ak2ApwKQQBBACgC3AlBfmoiATYCsApBACABQQAoAoAKQQF0aiICNgK0CkEAQQA6AIwKQQBBADsBlgpBAEEAOwGYCkEAQQA6AKAKQQBBADYCkApBAEEAOgD8CUEAIABBgBBqNgKkCkEAIAA2AqgKQQBBADoArAoCQAJAAkACQANAQQAgAUECaiIDNgKwCiABIAJPDQECQCADLwEAIgJBd2pBBUkNAAJAAkACQAJAAkAgAkGbf2oOBQEICAgCAAsgAkEgRg0EIAJBL0YNAyACQTtGDQIMBwtBAC8BmAoNASADEBVFDQEgAUEEakGCCEEKEC8NARAWQQAtAJQKDQFBAEEAKAKwCiIBNgKcCgwHCyADEBVFDQAgAUEEakGMCEEKEC8NABAXC0EAQQAoArAKNgKcCgwBCwJAIAEvAQQiA0EqRg0AIANBL0cNBBAYDAELQQEQGQtBACgCtAohAkEAKAKwCiEBDAALC0EAIQIgAyEBQQAtAPwJDQIMAQtBACABNgKwCkEAQQA6AJQKCwNAQQAgAUECaiIDNgKwCgJAAkACQAJAAkACQAJAIAFBACgCtApPDQAgAy8BACICQXdqQQVJDQYCQAJAAkACQAJAAkACQAJAAkACQCACQWBqDgoQDwYPDw8PBQECAAsCQAJAAkACQCACQaB/ag4KCxISAxIBEhISAgALIAJBhX9qDgMFEQYJC0EALwGYCg0QIAMQFUUNECABQQRqQYIIQQoQLw0QEBYMEAsgAxAVRQ0PIAFBBGpBjAhBChAvDQ8QFwwPCyADEBVFDQ4gASkABELsgISDsI7AOVINDiABLwEMIgNBd2oiAUEXSw0MQQEgAXRBn4CABHFFDQwMDQtBAEEALwGYCiIBQQFqOwGYCkEAKAKkCiABQQN0aiIBQQE2AgAgAUEAKAKcCjYCBAwNC0EALwGYCiIDRQ0JQQAgA0F/aiIDOwGYCkEALwGWCiICRQ0MQQAoAqQKIANB//8DcUEDdGooAgBBBUcNDAJAIAJBAnRBACgCqApqQXxqKAIAIgMoAgQNACADQQAoApwKQQJqNgIEC0EAIAJBf2o7AZYKIAMgAUEEajYCDAwMCwJAQQAoApwKIgEvAQBBKUcNAEEAKALwCSIDRQ0AIAMoAgQgAUcNAEEAQQAoAvQJIgM2AvAJAkAgA0UNACADQQA2AiAMAQtBAEEANgLgCQtBAEEALwGYCiIDQQFqOwGYCkEAKAKkCiADQQN0aiIDQQZBAkEALQCsChs2AgAgAyABNgIEQQBBADoArAoMCwtBAC8BmAoiAUUNB0EAIAFBf2oiATsBmApBACgCpAogAUH//wNxQQN0aigCAEEERg0EDAoLQScQGgwJC0EiEBoMCAsgAkEvRw0HAkACQCABLwEEIgFBKkYNACABQS9HDQEQGAwKC0EBEBkMCQsCQAJAAkACQEEAKAKcCiIBLwEAIgMQG0UNAAJAAkAgA0FVag4EAAkBAwkLIAFBfmovAQBBK0YNAwwICyABQX5qLwEAQS1GDQIMBwsgA0EpRw0BQQAoAqQKQQAvAZgKIgJBA3RqKAIEEBxFDQIMBgsgAUF+ai8BAEFQakH//wNxQQpPDQULQQAvAZgKIQILAkACQCACQf//A3EiAkUNACADQeYARw0AQQAoAqQKIAJBf2pBA3RqIgQoAgBBAUcNACABQX5qLwEAQe8ARw0BIAQoAgRBlghBAxAdRQ0BDAULIANB/QBHDQBBACgCpAogAkEDdGoiAigCBBAeDQQgAigCAEEGRg0ECyABEB8NAyADRQ0DIANBL0ZBAC0AoApBAEdxDQMCQEEAKAL4CSICRQ0AIAEgAigCAEkNACABIAIoAgRNDQQLIAFBfmohAUEAKALcCSECAkADQCABQQJqIgQgAk0NAUEAIAE2ApwKIAEvAQAhAyABQX5qIgQhASADECBFDQALIARBAmohBAsCQCADQf//A3EQIUUNACAEQX5qIQECQANAIAFBAmoiAyACTQ0BQQAgATYCnAogAS8BACEDIAFBfmoiBCEBIAMQIQ0ACyAEQQJqIQMLIAMQIg0EC0EAQQE6AKAKDAcLQQAoAqQKQQAvAZgKIgFBA3QiA2pBACgCnAo2AgRBACABQQFqOwGYCkEAKAKkCiADakEDNgIACxAjDAULQQAtAPwJQQAvAZYKQQAvAZgKcnJFIQIMBwsQJEEAQQA6AKAKDAMLECVBACECDAULIANBoAFHDQELQQBBAToArAoLQQBBACgCsAo2ApwKC0EAKAKwCiEBDAALCyAAQYDQAGokACACCxoAAkBBACgC3AkgAEcNAEEBDwsgAEF+ahAmC/4KAQZ/QQBBACgCsAoiAEEMaiIBNgKwCkEAKAL4CSECQQEQKSEDAkACQAJAAkACQAJAAkACQAJAQQAoArAKIgQgAUcNACADEChFDQELAkACQAJAAkACQAJAAkAgA0EqRg0AIANB+wBHDQFBACAEQQJqNgKwCkEBECkhA0EAKAKwCiEEA0ACQAJAIANB//8DcSIDQSJGDQAgA0EnRg0AIAMQLBpBACgCsAohAwwBCyADEBpBAEEAKAKwCkECaiIDNgKwCgtBARApGgJAIAQgAxAtIgNBLEcNAEEAQQAoArAKQQJqNgKwCkEBECkhAwsgA0H9AEYNA0EAKAKwCiIFIARGDQ8gBSEEIAVBACgCtApNDQAMDwsLQQAgBEECajYCsApBARApGkEAKAKwCiIDIAMQLRoMAgtBAEEAOgCUCgJAAkACQAJAAkACQCADQZ9/ag4MAgsEAQsDCwsLCwsFAAsgA0H2AEYNBAwKC0EAIARBDmoiAzYCsAoCQAJAAkBBARApQZ9/ag4GABICEhIBEgtBACgCsAoiBSkAAkLzgOSD4I3AMVINESAFLwEKECFFDRFBACAFQQpqNgKwCkEAECkaC0EAKAKwCiIFQQJqQbIIQQ4QLw0QIAUvARAiAkF3aiIBQRdLDQ1BASABdEGfgIAEcUUNDQwOC0EAKAKwCiIFKQACQuyAhIOwjsA5Ug0PIAUvAQoiAkF3aiIBQRdNDQYMCgtBACAEQQpqNgKwCkEAECkaQQAoArAKIQQLQQAgBEEQajYCsAoCQEEBECkiBEEqRw0AQQBBACgCsApBAmo2ArAKQQEQKSEEC0EAKAKwCiEDIAQQLBogA0EAKAKwCiIEIAMgBBACQQBBACgCsApBfmo2ArAKDwsCQCAEKQACQuyAhIOwjsA5Ug0AIAQvAQoQIEUNAEEAIARBCmo2ArAKQQEQKSEEQQAoArAKIQMgBBAsGiADQQAoArAKIgQgAyAEEAJBAEEAKAKwCkF+ajYCsAoPC0EAIARBBGoiBDYCsAoLQQAgBEEGajYCsApBAEEAOgCUCkEBECkhBEEAKAKwCiEDIAQQLCEEQQAoArAKIQIgBEHf/wNxIgFB2wBHDQNBACACQQJqNgKwCkEBECkhBUEAKAKwCiEDQQAhBAwEC0EAQQE6AIwKQQBBACgCsApBAmo2ArAKC0EBECkhBEEAKAKwCiEDAkAgBEHmAEcNACADQQJqQawIQQYQLw0AQQAgA0EIajYCsAogAEEBEClBABArIAJBEGpB5AkgAhshAwNAIAMoAgAiA0UNBSADQgA3AgggA0EQaiEDDAALC0EAIANBfmo2ArAKDAMLQQEgAXRBn4CABHFFDQMMBAtBASEECwNAAkACQCAEDgIAAQELIAVB//8DcRAsGkEBIQQMAQsCQAJAQQAoArAKIgQgA0YNACADIAQgAyAEEAJBARApIQQCQCABQdsARw0AIARBIHJB/QBGDQQLQQAoArAKIQMCQCAEQSxHDQBBACADQQJqNgKwCkEBECkhBUEAKAKwCiEDIAVBIHJB+wBHDQILQQAgA0F+ajYCsAoLIAFB2wBHDQJBACACQX5qNgKwCg8LQQAhBAwACwsPCyACQaABRg0AIAJB+wBHDQQLQQAgBUEKajYCsApBARApIgVB+wBGDQMMAgsCQCACQVhqDgMBAwEACyACQaABRw0CC0EAIAVBEGo2ArAKAkBBARApIgVBKkcNAEEAQQAoArAKQQJqNgKwCkEBECkhBQsgBUEoRg0BC0EAKAKwCiEBIAUQLBpBACgCsAoiBSABTQ0AIAQgAyABIAUQAkEAQQAoArAKQX5qNgKwCg8LIAQgA0EAQQAQAkEAIARBDGo2ArAKDwsQJQuFDAEKf0EAQQAoArAKIgBBDGoiATYCsApBARApIQJBACgCsAohAwJAAkACQAJAAkACQAJAAkAgAkEuRw0AQQAgA0ECajYCsAoCQEEBECkiAkHkAEYNAAJAIAJB8wBGDQAgAkHtAEcNB0EAKAKwCiICQQJqQZwIQQYQLw0HAkBBACgCnAoiAxAqDQAgAy8BAEEuRg0ICyAAIAAgAkEIakEAKALUCRABDwtBACgCsAoiAkECakGiCEEKEC8NBgJAQQAoApwKIgMQKg0AIAMvAQBBLkYNBwtBACEEQQAgAkEMajYCsApBASEFQQUhBkEBECkhAkEAIQdBASEIDAILQQAoArAKIgIpAAJC5YCYg9CMgDlSDQUCQEEAKAKcCiIDECoNACADLwEAQS5GDQYLQQAhBEEAIAJBCmo2ArAKQQIhCEEHIQZBASEHQQEQKSECQQEhBQwBCwJAAkACQAJAIAJB8wBHDQAgAyABTQ0AIANBAmpBoghBChAvDQACQCADLwEMIgRBd2oiB0EXSw0AQQEgB3RBn4CABHENAgsgBEGgAUYNAQtBACEHQQchBkEBIQQgAkHkAEYNAQwCC0EAIQRBACADQQxqIgI2ArAKQQEhBUEBECkhCQJAQQAoArAKIgYgAkYNAEHmACECAkAgCUHmAEYNAEEFIQZBACEHQQEhCCAJIQIMBAtBACEHQQEhCCAGQQJqQawIQQYQLw0EIAYvAQgQIEUNBAtBACEHQQAgAzYCsApBByEGQQEhBEEAIQVBACEIIAkhAgwCCyADIABBCmpNDQBBACEIQeQAIQICQCADKQACQuWAmIPQjIA5Ug0AAkACQCADLwEKIgRBd2oiB0EXSw0AQQEgB3RBn4CABHENAQtBACEIIARBoAFHDQELQQAhBUEAIANBCmo2ArAKQSohAkEBIQdBAiEIQQEQKSIJQSpGDQRBACADNgKwCkEBIQRBACEHQQAhCCAJIQIMAgsgAyEGQQAhBwwCC0EAIQVBACEICwJAIAJBKEcNAEEAKAKkCkEALwGYCiICQQN0aiIDQQAoArAKNgIEQQAgAkEBajsBmAogA0EFNgIAQQAoApwKLwEAQS5GDQRBAEEAKAKwCiIDQQJqNgKwCkEBECkhAiAAQQAoArAKQQAgAxABAkACQCAFDQBBACgC8AkhAQwBC0EAKALwCSIBIAY2AhwLQQBBAC8BlgoiA0EBajsBlgpBACgCqAogA0ECdGogATYCAAJAIAJBIkYNACACQSdGDQBBAEEAKAKwCkF+ajYCsAoPCyACEBpBAEEAKAKwCkECaiICNgKwCgJAAkACQEEBEClBV2oOBAECAgACC0EAQQAoArAKQQJqNgKwCkEBECkaQQAoAvAJIgMgAjYCBCADQQE6ABggA0EAKAKwCiICNgIQQQAgAkF+ajYCsAoPC0EAKALwCSIDIAI2AgQgA0EBOgAYQQBBAC8BmApBf2o7AZgKIANBACgCsApBAmo2AgxBAEEALwGWCkF/ajsBlgoPC0EAQQAoArAKQX5qNgKwCg8LAkAgBEEBcyACQfsAR3INAEEAKAKwCiECQQAvAZgKDQUDQAJAAkACQCACQQAoArQKTw0AQQEQKSICQSJGDQEgAkEnRg0BIAJB/QBHDQJBAEEAKAKwCkECajYCsAoLQQEQKSEDQQAoArAKIQICQCADQeYARw0AIAJBAmpBrAhBBhAvDQcLQQAgAkEIajYCsAoCQEEBECkiAkEiRg0AIAJBJ0cNBwsgACACQQAQKw8LIAIQGgtBAEEAKAKwCkECaiICNgKwCgwACwsCQAJAIAJBWWoOBAMBAQMACyACQSJGDQILQQAoArAKIQYLIAYgAUcNAEEAIABBCmo2ArAKDwsgAkEqRyAHcQ0DQQAvAZgKQf//A3ENA0EAKAKwCiECQQAoArQKIQEDQCACIAFPDQECQAJAIAIvAQAiA0EnRg0AIANBIkcNAQsgACADIAgQKw8LQQAgAkECaiICNgKwCgwACwsQJQsPC0EAIAJBfmo2ArAKDwtBAEEAKAKwCkF+ajYCsAoLRwEDf0EAKAKwCkECaiEAQQAoArQKIQECQANAIAAiAkF+aiABTw0BIAJBAmohACACLwEAQXZqDgQBAAABAAsLQQAgAjYCsAoLmAEBA39BAEEAKAKwCiIBQQJqNgKwCiABQQZqIQFBACgCtAohAgNAAkACQAJAIAFBfGogAk8NACABQX5qLwEAIQMCQAJAIAANACADQSpGDQEgA0F2ag4EAgQEAgQLIANBKkcNAwsgAS8BAEEvRw0CQQAgAUF+ajYCsAoMAQsgAUF+aiEBC0EAIAE2ArAKDwsgAUECaiEBDAALC4gBAQR/QQAoArAKIQFBACgCtAohAgJAAkADQCABIgNBAmohASADIAJPDQEgAS8BACIEIABGDQICQCAEQdwARg0AIARBdmoOBAIBAQIBCyADQQRqIQEgAy8BBEENRw0AIANBBmogASADLwEGQQpGGyEBDAALC0EAIAE2ArAKECUPC0EAIAE2ArAKC2wBAX8CQAJAIABBX2oiAUEFSw0AQQEgAXRBMXENAQsgAEFGakH//wNxQQZJDQAgAEEpRyAAQVhqQf//A3FBB0lxDQACQCAAQaV/ag4EAQAAAQALIABB/QBHIABBhX9qQf//A3FBBElxDwtBAQsuAQF/QQEhAQJAIABBpglBBRAdDQAgAEGWCEEDEB0NACAAQbAJQQIQHSEBCyABC0YBA39BACEDAkAgACACQQF0IgJrIgRBAmoiAEEAKALcCSIFSQ0AIAAgASACEC8NAAJAIAAgBUcNAEEBDwsgBBAmIQMLIAMLgwEBAn9BASEBAkACQAJAAkACQAJAIAAvAQAiAkFFag4EBQQEAQALAkAgAkGbf2oOBAMEBAIACyACQSlGDQQgAkH5AEcNAyAAQX5qQbwJQQYQHQ8LIABBfmovAQBBPUYPCyAAQX5qQbQJQQQQHQ8LIABBfmpByAlBAxAdDwtBACEBCyABC7QDAQJ/QQAhAQJAAkACQAJAAkACQAJAAkACQAJAIAAvAQBBnH9qDhQAAQIJCQkJAwkJBAUJCQYJBwkJCAkLAkACQCAAQX5qLwEAQZd/ag4EAAoKAQoLIABBfGpByghBAhAdDwsgAEF8akHOCEEDEB0PCwJAAkACQCAAQX5qLwEAQY1/ag4DAAECCgsCQCAAQXxqLwEAIgJB4QBGDQAgAkHsAEcNCiAAQXpqQeUAECcPCyAAQXpqQeMAECcPCyAAQXxqQdQIQQQQHQ8LIABBfGpB3AhBBhAdDwsgAEF+ai8BAEHvAEcNBiAAQXxqLwEAQeUARw0GAkAgAEF6ai8BACICQfAARg0AIAJB4wBHDQcgAEF4akHoCEEGEB0PCyAAQXhqQfQIQQIQHQ8LIABBfmpB+AhBBBAdDwtBASEBIABBfmoiAEHpABAnDQQgAEGACUEFEB0PCyAAQX5qQeQAECcPCyAAQX5qQYoJQQcQHQ8LIABBfmpBmAlBBBAdDwsCQCAAQX5qLwEAIgJB7wBGDQAgAkHlAEcNASAAQXxqQe4AECcPCyAAQXxqQaAJQQMQHSEBCyABCzQBAX9BASEBAkAgAEF3akH//wNxQQVJDQAgAEGAAXJBoAFGDQAgAEEuRyAAEChxIQELIAELMAEBfwJAAkAgAEF3aiIBQRdLDQBBASABdEGNgIAEcQ0BCyAAQaABRg0AQQAPC0EBC04BAn9BACEBAkACQCAALwEAIgJB5QBGDQAgAkHrAEcNASAAQX5qQfgIQQQQHQ8LIABBfmovAQBB9QBHDQAgAEF8akHcCEEGEB0hAQsgAQveAQEEf0EAKAKwCiEAQQAoArQKIQECQAJAAkADQCAAIgJBAmohACACIAFPDQECQAJAAkAgAC8BACIDQaR/ag4FAgMDAwEACyADQSRHDQIgAi8BBEH7AEcNAkEAIAJBBGoiADYCsApBAEEALwGYCiICQQFqOwGYCkEAKAKkCiACQQN0aiICQQQ2AgAgAiAANgIEDwtBACAANgKwCkEAQQAvAZgKQX9qIgA7AZgKQQAoAqQKIABB//8DcUEDdGooAgBBA0cNAwwECyACQQRqIQAMAAsLQQAgADYCsAoLECULC3ABAn8CQAJAA0BBAEEAKAKwCiIAQQJqIgE2ArAKIABBACgCtApPDQECQAJAAkAgAS8BACIBQaV/ag4CAQIACwJAIAFBdmoOBAQDAwQACyABQS9HDQIMBAsQLhoMAQtBACAAQQRqNgKwCgwACwsQJQsLNQEBf0EAQQE6APwJQQAoArAKIQBBAEEAKAK0CkECajYCsApBACAAQQAoAtwJa0EBdTYCkAoLQwECf0EBIQECQCAALwEAIgJBd2pB//8DcUEFSQ0AIAJBgAFyQaABRg0AQQAhASACEChFDQAgAkEuRyAAECpyDwsgAQs9AQJ/QQAhAgJAQQAoAtwJIgMgAEsNACAALwEAIAFHDQACQCADIABHDQBBAQ8LIABBfmovAQAQICECCyACC2gBAn9BASEBAkACQCAAQV9qIgJBBUsNAEEBIAJ0QTFxDQELIABB+P8DcUEoRg0AIABBRmpB//8DcUEGSQ0AAkAgAEGlf2oiAkEDSw0AIAJBAUcNAQsgAEGFf2pB//8DcUEESSEBCyABC5wBAQN/QQAoArAKIQECQANAAkACQCABLwEAIgJBL0cNAAJAIAEvAQIiAUEqRg0AIAFBL0cNBBAYDAILIAAQGQwBCwJAAkAgAEUNACACQXdqIgFBF0sNAUEBIAF0QZ+AgARxRQ0BDAILIAIQIUUNAwwBCyACQaABRw0CC0EAQQAoArAKIgNBAmoiATYCsAogA0EAKAK0CkkNAAsLIAILMQEBf0EAIQECQCAALwEAQS5HDQAgAEF+ai8BAEEuRw0AIABBfGovAQBBLkYhAQsgAQumBAEBfwJAIAFBIkYNACABQSdGDQAQJQ8LQQAoArAKIQMgARAaIAAgA0ECakEAKAKwCkEAKALQCRABAkAgAkEBSA0AQQAoAvAJQQRBBiACQQFGGzYCHAtBAEEAKAKwCkECajYCsAoCQAJAAkACQEEAECkiAUHhAEYNACABQfcARg0BQQAoArAKIQEMAgtBACgCsAoiAUECakHACEEKEC8NAUEGIQIMAgtBACgCsAoiAS8BAkHpAEcNACABLwEEQfQARw0AQQQhAiABLwEGQegARg0BC0EAIAFBfmo2ArAKDwtBACABIAJBAXRqNgKwCgJAQQEQKUH7AEYNAEEAIAE2ArAKDwtBACgCsAoiACECA0BBACACQQJqNgKwCgJAAkACQEEBECkiAkEiRg0AIAJBJ0cNAUEnEBpBAEEAKAKwCkECajYCsApBARApIQIMAgtBIhAaQQBBACgCsApBAmo2ArAKQQEQKSECDAELIAIQLCECCwJAIAJBOkYNAEEAIAE2ArAKDwtBAEEAKAKwCkECajYCsAoCQEEBECkiAkEiRg0AIAJBJ0YNAEEAIAE2ArAKDwsgAhAaQQBBACgCsApBAmo2ArAKAkACQEEBECkiAkEsRg0AIAJB/QBGDQFBACABNgKwCg8LQQBBACgCsApBAmo2ArAKQQEQKUH9AEYNAEEAKAKwCiECDAELC0EAKALwCSIBIAA2AhAgAUEAKAKwCkECajYCDAttAQJ/AkACQANAAkAgAEH//wNxIgFBd2oiAkEXSw0AQQEgAnRBn4CABHENAgsgAUGgAUYNASAAIQIgARAoDQJBACECQQBBACgCsAoiAEECajYCsAogAC8BAiIADQAMAgsLIAAhAgsgAkH//wNxC6sBAQR/AkACQEEAKAKwCiICLwEAIgNB4QBGDQAgASEEIAAhBQwBC0EAIAJBBGo2ArAKQQEQKSECQQAoArAKIQUCQAJAIAJBIkYNACACQSdGDQAgAhAsGkEAKAKwCiEEDAELIAIQGkEAQQAoArAKQQJqIgQ2ArAKC0EBECkhA0EAKAKwCiECCwJAIAIgBUYNACAFIARBACAAIAAgAUYiAhtBACABIAIbEAILIAMLcgEEf0EAKAKwCiEAQQAoArQKIQECQAJAA0AgAEECaiECIAAgAU8NAQJAAkAgAi8BACIDQaR/ag4CAQQACyACIQAgA0F2ag4EAgEBAgELIABBBGohAAwACwtBACACNgKwChAlQQAPC0EAIAI2ArAKQd0AC0kBA39BACEDAkAgAkUNAAJAA0AgAC0AACIEIAEtAAAiBUcNASABQQFqIQEgAEEBaiEAIAJBf2oiAg0ADAILCyAEIAVrIQMLIAMLC+wBAgBBgAgLzgEAAHgAcABvAHIAdABtAHAAbwByAHQAZgBvAHIAZQB0AGEAbwB1AHIAYwBlAHIAbwBtAHUAbgBjAHQAaQBvAG4AcwBzAGUAcgB0AHYAbwB5AGkAZQBkAGUAbABlAGMAbwBuAHQAaQBuAGkAbgBzAHQAYQBuAHQAeQBiAHIAZQBhAHIAZQB0AHUAcgBkAGUAYgB1AGcAZwBlAGEAdwBhAGkAdABoAHIAdwBoAGkAbABlAGkAZgBjAGEAdABjAGYAaQBuAGEAbABsAGUAbABzAABB0AkLEAEAAAACAAAAAAQAAEA5AAA=", "undefined" != typeof Buffer ? Buffer.from(A, "base64") : Uint8Array.from(atob(A), ((A) => A.charCodeAt(0))); + var A; +}; +const init = WebAssembly.compile(E()).then(WebAssembly.instantiate).then((({ exports: A }) => { + C = A; +})); +//#endregion +//#region src/node/plugins/oxc.ts +const IIFE_BEGIN_RE = /(?:(?:(?:const|var)\s+[^.\s]+|[^.\s]+\.[^.\s]+\.[^.\s]+)\s*=\s*|^|\n)\(?function\([^()]*\)\s*\{(?:\s*"use strict";)?/; +const UMD_BEGIN_RE = /\}\)\((?:this,\s*)?function\([^()]*\)\s*\{(?:\s*"use strict";)?/; +const jsxExtensionsRE = /\.(?:j|t)sx\b/; +const validExtensionRE = /\.\w+$/; +function getRollupJsxPresets(preset) { + switch (preset) { + case "react": return { + runtime: "classic", + pragma: "React.createElement", + pragmaFrag: "React.Fragment", + importSource: "react" + }; + case "react-jsx": return { + runtime: "automatic", + pragma: "React.createElement", + importSource: "react" + }; + } +} +function joinNewLine(s1, s2) { + return s1.replace(/\n+$/, "") + "\n" + s2.replace(/^\n+/, ""); +} +function getErrorMessage(e) { + if (Object.hasOwn(e, "kind")) return e.message; + let s = ""; + if (e.plugin) s += `[plugin ${e.plugin}]`; + const id = e.id ?? e.loc?.file; + if (id) { + s += " " + id; + if (e.loc) s += `:${e.loc.line}:${e.loc.column}`; + } + if (s) s += "\n"; + const message = `${e.name ?? "Error"}: ${e.message}`; + s += message; + if (e.frame) s = joinNewLine(s, e.frame); + if (e.stack) s = joinNewLine(s, e.stack.replace(message, "")); + if (e.cause) { + s = joinNewLine(s, "Caused by:"); + s = joinNewLine(s, getErrorMessage(e.cause).split("\n").map((line) => " " + line).join("\n")); + } + return s; +} +async function transformWithOxc(code, filename, options, inMap, config, watcher) { + let lang = options?.lang; + if (!lang) { + const ext = path.extname(validExtensionRE.test(filename) ? filename : cleanUrl(filename)).slice(1); + if (ext === "cjs" || ext === "mjs") lang = "js"; + else if (ext === "cts" || ext === "mts") lang = "ts"; + else lang = ext; + } + const result = transformSync(filename, code, { + sourcemap: true, + ...options, + inputMap: inMap, + lang + }, getTSConfigResolutionCache(config)); + if (watcher && config && result.tsconfigFilePaths && result.tsconfigFilePaths.length > 0) for (const tsconfigFile of result.tsconfigFilePaths) ensureWatchedFile(watcher, normalizePath(tsconfigFile), config.root); + if (result.errors.length > 0) { + let summary = `Transform failed with ${result.errors.length} error${result.errors.length < 2 ? "" : "s"}:\n`; + for (let i = 0; i < result.errors.length; i++) { + summary += "\n"; + if (i >= 5) { + summary += "..."; + break; + } + summary += getErrorMessage(result.errors[i]); + } + const wrapper = new Error(summary); + Object.defineProperty(wrapper, "errors", { + configurable: true, + enumerable: true, + get: () => result.errors, + set: (value) => Object.defineProperty(wrapper, "errors", { + configurable: true, + enumerable: true, + value + }) + }); + throw wrapper; + } + return result; +} +const warnedMessages = /* @__PURE__ */ new Set(); +function shouldSkipWarning(warning) { + if (warning.code === "UNSUPPORTED_TSCONFIG_OPTION") { + if (warnedMessages.has(warning.message)) return true; + warnedMessages.add(warning.message); + } + return false; +} +function oxcPlugin(config) { + if (config.isBundled) return perEnvironmentPlugin("native:transform", (environment) => { + const { jsxInject, include = /\.(m?ts|[jt]sx)$/, exclude = /\.js$/, jsxRefreshInclude, jsxRefreshExclude, ..._transformOptions } = config.oxc; + const transformOptions = _transformOptions; + transformOptions.sourcemap = environment.config.mode !== "build" || !!environment.config.build.sourcemap; + return viteTransformPlugin({ + root: environment.config.root, + include, + exclude, + jsxRefreshInclude, + jsxRefreshExclude, + isServerConsumer: environment.config.consumer === "server", + jsxInject, + transformOptions + }); + }); + const { jsxInject, include, exclude, jsxRefreshInclude, jsxRefreshExclude, ...oxcTransformOptions } = config.oxc; + const filter = createFilter$1(include || /\.(m?ts|[jt]sx)$/, exclude || /\.js$/); + const jsxRefreshFilter = jsxRefreshInclude || jsxRefreshExclude ? createFilter$1(jsxRefreshInclude, jsxRefreshExclude) : void 0; + const jsxImportSource = typeof oxcTransformOptions.jsx === "object" && oxcTransformOptions.jsx.importSource || "react"; + const jsxImportRuntime = `${jsxImportSource}/jsx-runtime`; + const jsxImportDevRuntime = `${jsxImportSource}/jsx-dev-runtime`; + const getModifiedOxcTransformOptions = (oxcTransformOptions, id, code, environment) => { + const result = { + ...oxcTransformOptions, + sourcemap: environment.mode !== "build" || !!environment.config.build.sourcemap + }; + const jsxOptions = result.jsx; + const [filepath] = id.split("?"); + const isJSX = filepath.endsWith("x"); + if (typeof jsxOptions === "object" && jsxOptions.refresh && (environment.config.consumer === "server" || jsxRefreshFilter && !jsxRefreshFilter(id) || !(isJSX || code.includes(jsxImportRuntime) || code.includes(jsxImportDevRuntime)))) result.jsx = { + ...jsxOptions, + refresh: false + }; + if (jsxRefreshFilter?.(id) && !JS_TYPES_RE.test(cleanUrl(id))) result.lang = "js"; + return result; + }; + let server; + return { + name: "vite:oxc", + configureServer(_server) { + server = _server; + }, + async transform(code, id) { + if (filter(id) || filter(cleanUrl(id)) || jsxRefreshFilter?.(id)) { + const result = await transformWithOxc(code, id, getModifiedOxcTransformOptions(oxcTransformOptions, id, code, this.environment), void 0, config, server?.watcher); + if (jsxInject && jsxExtensionsRE.test(id)) result.code = jsxInject + ";" + result.code; + for (const warning of result.warnings) if (!shouldSkipWarning(warning)) this.warn(warning); + return { + code: result.code, + map: result.map, + moduleType: "js" + }; + } + } + }; +} +function convertEsbuildConfigToOxcConfig(esbuildConfig, logger) { + const { jsxInject, include, exclude, ...esbuildTransformOptions } = esbuildConfig; + const oxcOptions = { + jsxInject, + include, + exclude + }; + if (esbuildTransformOptions.jsx === "preserve") oxcOptions.jsx = "preserve"; + else { + const jsxOptions = {}; + switch (esbuildTransformOptions.jsx) { + case "automatic": + jsxOptions.runtime = "automatic"; + if (esbuildTransformOptions.jsxImportSource) jsxOptions.importSource = esbuildTransformOptions.jsxImportSource; + break; + case "transform": + jsxOptions.runtime = "classic"; + if (esbuildTransformOptions.jsxFactory) jsxOptions.pragma = esbuildTransformOptions.jsxFactory; + if (esbuildTransformOptions.jsxFragment) jsxOptions.pragmaFrag = esbuildTransformOptions.jsxFragment; + break; + default: break; + } + if (esbuildTransformOptions.jsxDev !== void 0) jsxOptions.development = esbuildTransformOptions.jsxDev; + if (esbuildTransformOptions.jsxSideEffects !== void 0) jsxOptions.pure = esbuildTransformOptions.jsxSideEffects; + oxcOptions.jsx = jsxOptions; + } + if (esbuildTransformOptions.define) oxcOptions.define = esbuildTransformOptions.define; + if (esbuildTransformOptions.banner) warnDeprecatedShouldBeConvertedToPluginOptions(logger, "banner"); + if (esbuildTransformOptions.footer) warnDeprecatedShouldBeConvertedToPluginOptions(logger, "footer"); + return oxcOptions; +} +function warnDeprecatedShouldBeConvertedToPluginOptions(logger, name) { + logger.warn(import_picocolors.default.yellow(`\`esbuild.${name}\` option was specified. But this option is deprecated and will be removed in future versions. This option can be achieved by using a plugin with transform hook, please use that instead.`)); +} +//#endregion +//#region ../../node_modules/.pnpm/magic-string@0.30.21/node_modules/magic-string/dist/magic-string.es.mjs +var BitSet = class BitSet { + constructor(arg) { + this.bits = arg instanceof BitSet ? arg.bits.slice() : []; + } + add(n) { + this.bits[n >> 5] |= 1 << (n & 31); + } + has(n) { + return !!(this.bits[n >> 5] & 1 << (n & 31)); + } +}; +var Chunk = class Chunk { + constructor(start, end, content) { + this.start = start; + this.end = end; + this.original = content; + this.intro = ""; + this.outro = ""; + this.content = content; + this.storeName = false; + this.edited = false; + this.previous = null; + this.next = null; + } + appendLeft(content) { + this.outro += content; + } + appendRight(content) { + this.intro = this.intro + content; + } + clone() { + const chunk = new Chunk(this.start, this.end, this.original); + chunk.intro = this.intro; + chunk.outro = this.outro; + chunk.content = this.content; + chunk.storeName = this.storeName; + chunk.edited = this.edited; + return chunk; + } + contains(index) { + return this.start < index && index < this.end; + } + eachNext(fn) { + let chunk = this; + while (chunk) { + fn(chunk); + chunk = chunk.next; + } + } + eachPrevious(fn) { + let chunk = this; + while (chunk) { + fn(chunk); + chunk = chunk.previous; + } + } + edit(content, storeName, contentOnly) { + this.content = content; + if (!contentOnly) { + this.intro = ""; + this.outro = ""; + } + this.storeName = storeName; + this.edited = true; + return this; + } + prependLeft(content) { + this.outro = content + this.outro; + } + prependRight(content) { + this.intro = content + this.intro; + } + reset() { + this.intro = ""; + this.outro = ""; + if (this.edited) { + this.content = this.original; + this.storeName = false; + this.edited = false; + } + } + split(index) { + const sliceIndex = index - this.start; + const originalBefore = this.original.slice(0, sliceIndex); + const originalAfter = this.original.slice(sliceIndex); + this.original = originalBefore; + const newChunk = new Chunk(index, this.end, originalAfter); + newChunk.outro = this.outro; + this.outro = ""; + this.end = index; + if (this.edited) { + newChunk.edit("", false); + this.content = ""; + } else this.content = originalBefore; + newChunk.next = this.next; + if (newChunk.next) newChunk.next.previous = newChunk; + newChunk.previous = this; + this.next = newChunk; + return newChunk; + } + toString() { + return this.intro + this.content + this.outro; + } + trimEnd(rx) { + this.outro = this.outro.replace(rx, ""); + if (this.outro.length) return true; + const trimmed = this.content.replace(rx, ""); + if (trimmed.length) { + if (trimmed !== this.content) { + this.split(this.start + trimmed.length).edit("", void 0, true); + if (this.edited) this.edit(trimmed, this.storeName, true); + } + return true; + } else { + this.edit("", void 0, true); + this.intro = this.intro.replace(rx, ""); + if (this.intro.length) return true; + } + } + trimStart(rx) { + this.intro = this.intro.replace(rx, ""); + if (this.intro.length) return true; + const trimmed = this.content.replace(rx, ""); + if (trimmed.length) { + if (trimmed !== this.content) { + const newChunk = this.split(this.end - trimmed.length); + if (this.edited) newChunk.edit(trimmed, this.storeName, true); + this.edit("", void 0, true); + } + return true; + } else { + this.edit("", void 0, true); + this.outro = this.outro.replace(rx, ""); + if (this.outro.length) return true; + } + } +}; +function getBtoa() { + if (typeof globalThis !== "undefined" && typeof globalThis.btoa === "function") return (str) => globalThis.btoa(unescape(encodeURIComponent(str))); + else if (typeof Buffer === "function") return (str) => Buffer.from(str, "utf-8").toString("base64"); + else return () => { + throw new Error("Unsupported environment: `window.btoa` or `Buffer` should be supported."); + }; +} +const btoa$1 = /* @__PURE__ */ getBtoa(); +var SourceMap = class { + constructor(properties) { + this.version = 3; + this.file = properties.file; + this.sources = properties.sources; + this.sourcesContent = properties.sourcesContent; + this.names = properties.names; + this.mappings = encode$1(properties.mappings); + if (typeof properties.x_google_ignoreList !== "undefined") this.x_google_ignoreList = properties.x_google_ignoreList; + if (typeof properties.debugId !== "undefined") this.debugId = properties.debugId; + } + toString() { + return JSON.stringify(this); + } + toUrl() { + return "data:application/json;charset=utf-8;base64," + btoa$1(this.toString()); + } +}; +function guessIndent(code) { + const lines = code.split("\n"); + const tabbed = lines.filter((line) => /^\t+/.test(line)); + const spaced = lines.filter((line) => /^ {2,}/.test(line)); + if (tabbed.length === 0 && spaced.length === 0) return null; + if (tabbed.length >= spaced.length) return " "; + const min = spaced.reduce((previous, current) => { + const numSpaces = /^ +/.exec(current)[0].length; + return Math.min(numSpaces, previous); + }, Infinity); + return new Array(min + 1).join(" "); +} +function getRelativePath(from, to) { + const fromParts = from.split(/[/\\]/); + const toParts = to.split(/[/\\]/); + fromParts.pop(); + while (fromParts[0] === toParts[0]) { + fromParts.shift(); + toParts.shift(); + } + if (fromParts.length) { + let i = fromParts.length; + while (i--) fromParts[i] = ".."; + } + return fromParts.concat(toParts).join("/"); +} +const toString = Object.prototype.toString; +function isObject(thing) { + return toString.call(thing) === "[object Object]"; +} +function getLocator(source) { + const originalLines = source.split("\n"); + const lineOffsets = []; + for (let i = 0, pos = 0; i < originalLines.length; i++) { + lineOffsets.push(pos); + pos += originalLines[i].length + 1; + } + return function locate(index) { + let i = 0; + let j = lineOffsets.length; + while (i < j) { + const m = i + j >> 1; + if (index < lineOffsets[m]) j = m; + else i = m + 1; + } + const line = i - 1; + return { + line, + column: index - lineOffsets[line] + }; + }; +} +const wordRegex = /\w/; +var Mappings = class { + constructor(hires) { + this.hires = hires; + this.generatedCodeLine = 0; + this.generatedCodeColumn = 0; + this.raw = []; + this.rawSegments = this.raw[this.generatedCodeLine] = []; + this.pending = null; + } + addEdit(sourceIndex, content, loc, nameIndex) { + if (content.length) { + const contentLengthMinusOne = content.length - 1; + let contentLineEnd = content.indexOf("\n", 0); + let previousContentLineEnd = -1; + while (contentLineEnd >= 0 && contentLengthMinusOne > contentLineEnd) { + const segment = [ + this.generatedCodeColumn, + sourceIndex, + loc.line, + loc.column + ]; + if (nameIndex >= 0) segment.push(nameIndex); + this.rawSegments.push(segment); + this.generatedCodeLine += 1; + this.raw[this.generatedCodeLine] = this.rawSegments = []; + this.generatedCodeColumn = 0; + previousContentLineEnd = contentLineEnd; + contentLineEnd = content.indexOf("\n", contentLineEnd + 1); + } + const segment = [ + this.generatedCodeColumn, + sourceIndex, + loc.line, + loc.column + ]; + if (nameIndex >= 0) segment.push(nameIndex); + this.rawSegments.push(segment); + this.advance(content.slice(previousContentLineEnd + 1)); + } else if (this.pending) { + this.rawSegments.push(this.pending); + this.advance(content); + } + this.pending = null; + } + addUneditedChunk(sourceIndex, chunk, original, loc, sourcemapLocations) { + let originalCharIndex = chunk.start; + let first = true; + let charInHiresBoundary = false; + while (originalCharIndex < chunk.end) { + if (original[originalCharIndex] === "\n") { + loc.line += 1; + loc.column = 0; + this.generatedCodeLine += 1; + this.raw[this.generatedCodeLine] = this.rawSegments = []; + this.generatedCodeColumn = 0; + first = true; + charInHiresBoundary = false; + } else { + if (this.hires || first || sourcemapLocations.has(originalCharIndex)) { + const segment = [ + this.generatedCodeColumn, + sourceIndex, + loc.line, + loc.column + ]; + if (this.hires === "boundary") if (wordRegex.test(original[originalCharIndex])) { + if (!charInHiresBoundary) { + this.rawSegments.push(segment); + charInHiresBoundary = true; + } + } else { + this.rawSegments.push(segment); + charInHiresBoundary = false; + } + else this.rawSegments.push(segment); + } + loc.column += 1; + this.generatedCodeColumn += 1; + first = false; + } + originalCharIndex += 1; + } + this.pending = null; + } + advance(str) { + if (!str) return; + const lines = str.split("\n"); + if (lines.length > 1) { + for (let i = 0; i < lines.length - 1; i++) { + this.generatedCodeLine++; + this.raw[this.generatedCodeLine] = this.rawSegments = []; + } + this.generatedCodeColumn = 0; + } + this.generatedCodeColumn += lines[lines.length - 1].length; + } +}; +const n = "\n"; +const warned = { + insertLeft: false, + insertRight: false, + storeName: false +}; +var MagicString = class MagicString { + constructor(string, options = {}) { + const chunk = new Chunk(0, string.length, string); + Object.defineProperties(this, { + original: { + writable: true, + value: string + }, + outro: { + writable: true, + value: "" + }, + intro: { + writable: true, + value: "" + }, + firstChunk: { + writable: true, + value: chunk + }, + lastChunk: { + writable: true, + value: chunk + }, + lastSearchedChunk: { + writable: true, + value: chunk + }, + byStart: { + writable: true, + value: {} + }, + byEnd: { + writable: true, + value: {} + }, + filename: { + writable: true, + value: options.filename + }, + indentExclusionRanges: { + writable: true, + value: options.indentExclusionRanges + }, + sourcemapLocations: { + writable: true, + value: new BitSet() + }, + storedNames: { + writable: true, + value: {} + }, + indentStr: { + writable: true, + value: void 0 + }, + ignoreList: { + writable: true, + value: options.ignoreList + }, + offset: { + writable: true, + value: options.offset || 0 + } + }); + this.byStart[0] = chunk; + this.byEnd[string.length] = chunk; + } + addSourcemapLocation(char) { + this.sourcemapLocations.add(char); + } + append(content) { + if (typeof content !== "string") throw new TypeError("outro content must be a string"); + this.outro += content; + return this; + } + appendLeft(index, content) { + index = index + this.offset; + if (typeof content !== "string") throw new TypeError("inserted content must be a string"); + this._split(index); + const chunk = this.byEnd[index]; + if (chunk) chunk.appendLeft(content); + else this.intro += content; + return this; + } + appendRight(index, content) { + index = index + this.offset; + if (typeof content !== "string") throw new TypeError("inserted content must be a string"); + this._split(index); + const chunk = this.byStart[index]; + if (chunk) chunk.appendRight(content); + else this.outro += content; + return this; + } + clone() { + const cloned = new MagicString(this.original, { + filename: this.filename, + offset: this.offset + }); + let originalChunk = this.firstChunk; + let clonedChunk = cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone(); + while (originalChunk) { + cloned.byStart[clonedChunk.start] = clonedChunk; + cloned.byEnd[clonedChunk.end] = clonedChunk; + const nextOriginalChunk = originalChunk.next; + const nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone(); + if (nextClonedChunk) { + clonedChunk.next = nextClonedChunk; + nextClonedChunk.previous = clonedChunk; + clonedChunk = nextClonedChunk; + } + originalChunk = nextOriginalChunk; + } + cloned.lastChunk = clonedChunk; + if (this.indentExclusionRanges) cloned.indentExclusionRanges = this.indentExclusionRanges.slice(); + cloned.sourcemapLocations = new BitSet(this.sourcemapLocations); + cloned.intro = this.intro; + cloned.outro = this.outro; + return cloned; + } + generateDecodedMap(options) { + options = options || {}; + const sourceIndex = 0; + const names = Object.keys(this.storedNames); + const mappings = new Mappings(options.hires); + const locate = getLocator(this.original); + if (this.intro) mappings.advance(this.intro); + this.firstChunk.eachNext((chunk) => { + const loc = locate(chunk.start); + if (chunk.intro.length) mappings.advance(chunk.intro); + if (chunk.edited) mappings.addEdit(sourceIndex, chunk.content, loc, chunk.storeName ? names.indexOf(chunk.original) : -1); + else mappings.addUneditedChunk(sourceIndex, chunk, this.original, loc, this.sourcemapLocations); + if (chunk.outro.length) mappings.advance(chunk.outro); + }); + if (this.outro) mappings.advance(this.outro); + return { + file: options.file ? options.file.split(/[/\\]/).pop() : void 0, + sources: [options.source ? getRelativePath(options.file || "", options.source) : options.file || ""], + sourcesContent: options.includeContent ? [this.original] : void 0, + names, + mappings: mappings.raw, + x_google_ignoreList: this.ignoreList ? [sourceIndex] : void 0 + }; + } + generateMap(options) { + return new SourceMap(this.generateDecodedMap(options)); + } + _ensureindentStr() { + if (this.indentStr === void 0) this.indentStr = guessIndent(this.original); + } + _getRawIndentString() { + this._ensureindentStr(); + return this.indentStr; + } + getIndentString() { + this._ensureindentStr(); + return this.indentStr === null ? " " : this.indentStr; + } + indent(indentStr, options) { + const pattern = /^[^\r\n]/gm; + if (isObject(indentStr)) { + options = indentStr; + indentStr = void 0; + } + if (indentStr === void 0) { + this._ensureindentStr(); + indentStr = this.indentStr || " "; + } + if (indentStr === "") return this; + options = options || {}; + const isExcluded = {}; + if (options.exclude) (typeof options.exclude[0] === "number" ? [options.exclude] : options.exclude).forEach((exclusion) => { + for (let i = exclusion[0]; i < exclusion[1]; i += 1) isExcluded[i] = true; + }); + let shouldIndentNextCharacter = options.indentStart !== false; + const replacer = (match) => { + if (shouldIndentNextCharacter) return `${indentStr}${match}`; + shouldIndentNextCharacter = true; + return match; + }; + this.intro = this.intro.replace(pattern, replacer); + let charIndex = 0; + let chunk = this.firstChunk; + while (chunk) { + const end = chunk.end; + if (chunk.edited) { + if (!isExcluded[charIndex]) { + chunk.content = chunk.content.replace(pattern, replacer); + if (chunk.content.length) shouldIndentNextCharacter = chunk.content[chunk.content.length - 1] === "\n"; + } + } else { + charIndex = chunk.start; + while (charIndex < end) { + if (!isExcluded[charIndex]) { + const char = this.original[charIndex]; + if (char === "\n") shouldIndentNextCharacter = true; + else if (char !== "\r" && shouldIndentNextCharacter) { + shouldIndentNextCharacter = false; + if (charIndex === chunk.start) chunk.prependRight(indentStr); + else { + this._splitChunk(chunk, charIndex); + chunk = chunk.next; + chunk.prependRight(indentStr); + } + } + } + charIndex += 1; + } + } + charIndex = chunk.end; + chunk = chunk.next; + } + this.outro = this.outro.replace(pattern, replacer); + return this; + } + insert() { + throw new Error("magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)"); + } + insertLeft(index, content) { + if (!warned.insertLeft) { + console.warn("magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead"); + warned.insertLeft = true; + } + return this.appendLeft(index, content); + } + insertRight(index, content) { + if (!warned.insertRight) { + console.warn("magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead"); + warned.insertRight = true; + } + return this.prependRight(index, content); + } + move(start, end, index) { + start = start + this.offset; + end = end + this.offset; + index = index + this.offset; + if (index >= start && index <= end) throw new Error("Cannot move a selection inside itself"); + this._split(start); + this._split(end); + this._split(index); + const first = this.byStart[start]; + const last = this.byEnd[end]; + const oldLeft = first.previous; + const oldRight = last.next; + const newRight = this.byStart[index]; + if (!newRight && last === this.lastChunk) return this; + const newLeft = newRight ? newRight.previous : this.lastChunk; + if (oldLeft) oldLeft.next = oldRight; + if (oldRight) oldRight.previous = oldLeft; + if (newLeft) newLeft.next = first; + if (newRight) newRight.previous = last; + if (!first.previous) this.firstChunk = last.next; + if (!last.next) { + this.lastChunk = first.previous; + this.lastChunk.next = null; + } + first.previous = newLeft; + last.next = newRight || null; + if (!newLeft) this.firstChunk = first; + if (!newRight) this.lastChunk = last; + return this; + } + overwrite(start, end, content, options) { + options = options || {}; + return this.update(start, end, content, { + ...options, + overwrite: !options.contentOnly + }); + } + update(start, end, content, options) { + start = start + this.offset; + end = end + this.offset; + if (typeof content !== "string") throw new TypeError("replacement content must be a string"); + if (this.original.length !== 0) { + while (start < 0) start += this.original.length; + while (end < 0) end += this.original.length; + } + if (end > this.original.length) throw new Error("end is out of bounds"); + if (start === end) throw new Error("Cannot overwrite a zero-length range – use appendLeft or prependRight instead"); + this._split(start); + this._split(end); + if (options === true) { + if (!warned.storeName) { + console.warn("The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string"); + warned.storeName = true; + } + options = { storeName: true }; + } + const storeName = options !== void 0 ? options.storeName : false; + const overwrite = options !== void 0 ? options.overwrite : false; + if (storeName) { + const original = this.original.slice(start, end); + Object.defineProperty(this.storedNames, original, { + writable: true, + value: true, + enumerable: true + }); + } + const first = this.byStart[start]; + const last = this.byEnd[end]; + if (first) { + let chunk = first; + while (chunk !== last) { + if (chunk.next !== this.byStart[chunk.end]) throw new Error("Cannot overwrite across a split point"); + chunk = chunk.next; + chunk.edit("", false); + } + first.edit(content, storeName, !overwrite); + } else { + const newChunk = new Chunk(start, end, "").edit(content, storeName); + last.next = newChunk; + newChunk.previous = last; + } + return this; + } + prepend(content) { + if (typeof content !== "string") throw new TypeError("outro content must be a string"); + this.intro = content + this.intro; + return this; + } + prependLeft(index, content) { + index = index + this.offset; + if (typeof content !== "string") throw new TypeError("inserted content must be a string"); + this._split(index); + const chunk = this.byEnd[index]; + if (chunk) chunk.prependLeft(content); + else this.intro = content + this.intro; + return this; + } + prependRight(index, content) { + index = index + this.offset; + if (typeof content !== "string") throw new TypeError("inserted content must be a string"); + this._split(index); + const chunk = this.byStart[index]; + if (chunk) chunk.prependRight(content); + else this.outro = content + this.outro; + return this; + } + remove(start, end) { + start = start + this.offset; + end = end + this.offset; + if (this.original.length !== 0) { + while (start < 0) start += this.original.length; + while (end < 0) end += this.original.length; + } + if (start === end) return this; + if (start < 0 || end > this.original.length) throw new Error("Character is out of bounds"); + if (start > end) throw new Error("end must be greater than start"); + this._split(start); + this._split(end); + let chunk = this.byStart[start]; + while (chunk) { + chunk.intro = ""; + chunk.outro = ""; + chunk.edit(""); + chunk = end > chunk.end ? this.byStart[chunk.end] : null; + } + return this; + } + reset(start, end) { + start = start + this.offset; + end = end + this.offset; + if (this.original.length !== 0) { + while (start < 0) start += this.original.length; + while (end < 0) end += this.original.length; + } + if (start === end) return this; + if (start < 0 || end > this.original.length) throw new Error("Character is out of bounds"); + if (start > end) throw new Error("end must be greater than start"); + this._split(start); + this._split(end); + let chunk = this.byStart[start]; + while (chunk) { + chunk.reset(); + chunk = end > chunk.end ? this.byStart[chunk.end] : null; + } + return this; + } + lastChar() { + if (this.outro.length) return this.outro[this.outro.length - 1]; + let chunk = this.lastChunk; + do { + if (chunk.outro.length) return chunk.outro[chunk.outro.length - 1]; + if (chunk.content.length) return chunk.content[chunk.content.length - 1]; + if (chunk.intro.length) return chunk.intro[chunk.intro.length - 1]; + } while (chunk = chunk.previous); + if (this.intro.length) return this.intro[this.intro.length - 1]; + return ""; + } + lastLine() { + let lineIndex = this.outro.lastIndexOf(n); + if (lineIndex !== -1) return this.outro.substr(lineIndex + 1); + let lineStr = this.outro; + let chunk = this.lastChunk; + do { + if (chunk.outro.length > 0) { + lineIndex = chunk.outro.lastIndexOf(n); + if (lineIndex !== -1) return chunk.outro.substr(lineIndex + 1) + lineStr; + lineStr = chunk.outro + lineStr; + } + if (chunk.content.length > 0) { + lineIndex = chunk.content.lastIndexOf(n); + if (lineIndex !== -1) return chunk.content.substr(lineIndex + 1) + lineStr; + lineStr = chunk.content + lineStr; + } + if (chunk.intro.length > 0) { + lineIndex = chunk.intro.lastIndexOf(n); + if (lineIndex !== -1) return chunk.intro.substr(lineIndex + 1) + lineStr; + lineStr = chunk.intro + lineStr; + } + } while (chunk = chunk.previous); + lineIndex = this.intro.lastIndexOf(n); + if (lineIndex !== -1) return this.intro.substr(lineIndex + 1) + lineStr; + return this.intro + lineStr; + } + slice(start = 0, end = this.original.length - this.offset) { + start = start + this.offset; + end = end + this.offset; + if (this.original.length !== 0) { + while (start < 0) start += this.original.length; + while (end < 0) end += this.original.length; + } + let result = ""; + let chunk = this.firstChunk; + while (chunk && (chunk.start > start || chunk.end <= start)) { + if (chunk.start < end && chunk.end >= end) return result; + chunk = chunk.next; + } + if (chunk && chunk.edited && chunk.start !== start) throw new Error(`Cannot use replaced character ${start} as slice start anchor.`); + const startChunk = chunk; + while (chunk) { + if (chunk.intro && (startChunk !== chunk || chunk.start === start)) result += chunk.intro; + const containsEnd = chunk.start < end && chunk.end >= end; + if (containsEnd && chunk.edited && chunk.end !== end) throw new Error(`Cannot use replaced character ${end} as slice end anchor.`); + const sliceStart = startChunk === chunk ? start - chunk.start : 0; + const sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length; + result += chunk.content.slice(sliceStart, sliceEnd); + if (chunk.outro && (!containsEnd || chunk.end === end)) result += chunk.outro; + if (containsEnd) break; + chunk = chunk.next; + } + return result; + } + snip(start, end) { + const clone = this.clone(); + clone.remove(0, start); + clone.remove(end, clone.original.length); + return clone; + } + _split(index) { + if (this.byStart[index] || this.byEnd[index]) return; + let chunk = this.lastSearchedChunk; + let previousChunk = chunk; + const searchForward = index > chunk.end; + while (chunk) { + if (chunk.contains(index)) return this._splitChunk(chunk, index); + chunk = searchForward ? this.byStart[chunk.end] : this.byEnd[chunk.start]; + if (chunk === previousChunk) return; + previousChunk = chunk; + } + } + _splitChunk(chunk, index) { + if (chunk.edited && chunk.content.length) { + const loc = getLocator(this.original)(index); + throw new Error(`Cannot split a chunk that has already been edited (${loc.line}:${loc.column} – "${chunk.original}")`); + } + const newChunk = chunk.split(index); + this.byEnd[index] = chunk; + this.byStart[index] = newChunk; + this.byEnd[newChunk.end] = newChunk; + if (chunk === this.lastChunk) this.lastChunk = newChunk; + this.lastSearchedChunk = chunk; + return true; + } + toString() { + let str = this.intro; + let chunk = this.firstChunk; + while (chunk) { + str += chunk.toString(); + chunk = chunk.next; + } + return str + this.outro; + } + isEmpty() { + let chunk = this.firstChunk; + do + if (chunk.intro.length && chunk.intro.trim() || chunk.content.length && chunk.content.trim() || chunk.outro.length && chunk.outro.trim()) return false; + while (chunk = chunk.next); + return true; + } + length() { + let chunk = this.firstChunk; + let length = 0; + do + length += chunk.intro.length + chunk.content.length + chunk.outro.length; + while (chunk = chunk.next); + return length; + } + trimLines() { + return this.trim("[\\r\\n]"); + } + trim(charType) { + return this.trimStart(charType).trimEnd(charType); + } + trimEndAborted(charType) { + const rx = new RegExp((charType || "\\s") + "+$"); + this.outro = this.outro.replace(rx, ""); + if (this.outro.length) return true; + let chunk = this.lastChunk; + do { + const end = chunk.end; + const aborted = chunk.trimEnd(rx); + if (chunk.end !== end) { + if (this.lastChunk === chunk) this.lastChunk = chunk.next; + this.byEnd[chunk.end] = chunk; + this.byStart[chunk.next.start] = chunk.next; + this.byEnd[chunk.next.end] = chunk.next; + } + if (aborted) return true; + chunk = chunk.previous; + } while (chunk); + return false; + } + trimEnd(charType) { + this.trimEndAborted(charType); + return this; + } + trimStartAborted(charType) { + const rx = new RegExp("^" + (charType || "\\s") + "+"); + this.intro = this.intro.replace(rx, ""); + if (this.intro.length) return true; + let chunk = this.firstChunk; + do { + const end = chunk.end; + const aborted = chunk.trimStart(rx); + if (chunk.end !== end) { + if (chunk === this.lastChunk) this.lastChunk = chunk.next; + this.byEnd[chunk.end] = chunk; + this.byStart[chunk.next.start] = chunk.next; + this.byEnd[chunk.next.end] = chunk.next; + } + if (aborted) return true; + chunk = chunk.next; + } while (chunk); + return false; + } + trimStart(charType) { + this.trimStartAborted(charType); + return this; + } + hasChanged() { + return this.original !== this.toString(); + } + _replaceRegexp(searchValue, replacement) { + function getReplacement(match, str) { + if (typeof replacement === "string") return replacement.replace(/\$(\$|&|\d+)/g, (_, i) => { + if (i === "$") return "$"; + if (i === "&") return match[0]; + if (+i < match.length) return match[+i]; + return `$${i}`; + }); + else return replacement(...match, match.index, str, match.groups); + } + function matchAll(re, str) { + let match; + const matches = []; + while (match = re.exec(str)) matches.push(match); + return matches; + } + if (searchValue.global) matchAll(searchValue, this.original).forEach((match) => { + if (match.index != null) { + const replacement = getReplacement(match, this.original); + if (replacement !== match[0]) this.overwrite(match.index, match.index + match[0].length, replacement); + } + }); + else { + const match = this.original.match(searchValue); + if (match && match.index != null) { + const replacement = getReplacement(match, this.original); + if (replacement !== match[0]) this.overwrite(match.index, match.index + match[0].length, replacement); + } + } + return this; + } + _replaceString(string, replacement) { + const { original } = this; + const index = original.indexOf(string); + if (index !== -1) { + if (typeof replacement === "function") replacement = replacement(string, index, original); + if (string !== replacement) this.overwrite(index, index + string.length, replacement); + } + return this; + } + replace(searchValue, replacement) { + if (typeof searchValue === "string") return this._replaceString(searchValue, replacement); + return this._replaceRegexp(searchValue, replacement); + } + _replaceAllString(string, replacement) { + const { original } = this; + const stringLength = string.length; + for (let index = original.indexOf(string); index !== -1; index = original.indexOf(string, index + stringLength)) { + const previous = original.slice(index, index + stringLength); + let _replacement = replacement; + if (typeof replacement === "function") _replacement = replacement(previous, index, original); + if (previous !== _replacement) this.overwrite(index, index + stringLength, _replacement); + } + return this; + } + replaceAll(searchValue, replacement) { + if (typeof searchValue === "string") return this._replaceAllString(searchValue, replacement); + if (!searchValue.global) throw new TypeError("MagicString.prototype.replaceAll called with a non-global RegExp argument"); + return this._replaceRegexp(searchValue, replacement); + } +}; +//#endregion +//#region ../../node_modules/.pnpm/@rollup+plugin-alias@6.0.0_rollup@4.59.0/node_modules/@rollup/plugin-alias/dist/index.js +function matches$1(pattern, importee) { + if (pattern instanceof RegExp) return pattern.test(importee); + if (importee.length < pattern.length) return false; + if (importee === pattern) return true; + return importee.startsWith(pattern + "/"); +} +function getEntries({ entries, customResolver }) { + if (!entries) return []; + const resolverFunctionFromOptions = resolveCustomResolver(customResolver); + if (Array.isArray(entries)) return entries.map((entry) => { + return { + find: entry.find, + replacement: entry.replacement, + resolverFunction: resolveCustomResolver(entry.customResolver) || resolverFunctionFromOptions + }; + }); + return Object.entries(entries).map(([key, value]) => { + return { + find: key, + replacement: value, + resolverFunction: resolverFunctionFromOptions + }; + }); +} +function getHookFunction(hook) { + if (typeof hook === "function") return hook; + if (hook && "handler" in hook && typeof hook.handler === "function") return hook.handler; + return null; +} +function resolveCustomResolver(customResolver) { + if (typeof customResolver === "function") return customResolver; + if (customResolver) return getHookFunction(customResolver.resolveId); + return null; +} +function alias$1(options = {}) { + const entries = getEntries(options); + if (entries.length === 0) return { + name: "alias", + resolveId: () => null + }; + return { + name: "alias", + async buildStart(inputOptions) { + await Promise.all([...Array.isArray(options.entries) ? options.entries : [], options].map(({ customResolver }) => customResolver && getHookFunction(customResolver.buildStart)?.call(this, inputOptions))); + }, + resolveId(importee, importer, resolveOptions) { + const matchedEntry = entries.find((entry) => matches$1(entry.find, importee)); + if (!matchedEntry) return null; + const updatedId = importee.replace(matchedEntry.find, matchedEntry.replacement); + if (matchedEntry.resolverFunction) return matchedEntry.resolverFunction.call(this, updatedId, importer, resolveOptions); + return this.resolve(updatedId, importer, Object.assign({ skipSelf: true }, resolveOptions)).then((resolved) => { + if (resolved) return resolved; + if (!path.isAbsolute(updatedId)) this.warn(`rewrote ${importee} to ${updatedId} but was not an absolute path and was not handled by other plugins. This will lead to duplicated modules for the same path. To avoid duplicating modules, you should resolve to an absolute path.`); + return { id: updatedId }; + }); + } + }; +} +//#endregion +//#region src/node/plugins/optimizedDeps.ts +const debug$13 = createDebugger("vite:optimize-deps"); +function optimizedDepsPlugin() { + return { + name: "vite:optimized-deps", + applyToEnvironment(environment) { + return !isDepOptimizationDisabled(environment.config.optimizeDeps); + }, + resolveId(id) { + if (this.environment.depsOptimizer?.isOptimizedDepFile(id)) return id; + }, + async load(id) { + const environment = this.environment; + const depsOptimizer = environment.depsOptimizer; + if (depsOptimizer?.isOptimizedDepFile(id)) { + const metadata = depsOptimizer.metadata; + const file = cleanUrl(id); + const versionMatch = DEP_VERSION_RE.exec(id); + const browserHash = versionMatch ? versionMatch[1].split("=")[1] : void 0; + const info = optimizedDepInfoFromFile(metadata, file); + if (info) { + if (browserHash && info.browserHash !== browserHash && !environment.config.optimizeDeps.ignoreOutdatedRequests) throwOutdatedRequest(id); + try { + await info.processing; + } catch { + throwProcessingError(id); + } + const newMetadata = depsOptimizer.metadata; + if (metadata !== newMetadata) { + const currentInfo = optimizedDepInfoFromFile(newMetadata, file); + if (info.browserHash !== currentInfo?.browserHash && !environment.config.optimizeDeps.ignoreOutdatedRequests) throwOutdatedRequest(id); + } + } + debug$13?.(`load ${import_picocolors.default.cyan(file)}`); + try { + return await fsp.readFile(file, "utf-8"); + } catch { + if (browserHash && !environment.config.optimizeDeps.ignoreOutdatedRequests) throwOutdatedRequest(id); + throwFileNotFoundInOptimizedDep(id); + } + } + } + }; +} +function throwProcessingError(id) { + const err = /* @__PURE__ */ new Error(`Something unexpected happened while optimizing "${id}". The current page should have reloaded by now`); + err.code = ERR_OPTIMIZE_DEPS_PROCESSING_ERROR; + throw err; +} +function throwOutdatedRequest(id) { + const err = /* @__PURE__ */ new Error(`There is a new version of the pre-bundle for "${id}", a page reload is going to ask for it.`); + err.code = ERR_OUTDATED_OPTIMIZED_DEP; + throw err; +} +function throwFileNotFoundInOptimizedDep(id) { + const err = /* @__PURE__ */ new Error(`The file does not exist at "${id}" which is in the optimize deps directory. The dependency might be incompatible with the dep optimizer. Try adding it to \`optimizeDeps.exclude\`.`); + err.code = ERR_FILE_NOT_FOUND_IN_OPTIMIZED_DEP_DIR; + throw err; +} +//#endregion +//#region ../../node_modules/.pnpm/ufo@1.6.3/node_modules/ufo/dist/index.mjs +const HASH_RE = /#/g; +const AMPERSAND_RE = /&/g; +const SLASH_RE = /\//g; +const EQUAL_RE = /=/g; +const PLUS_RE = /\+/g; +const ENC_CARET_RE = /%5e/gi; +const ENC_BACKTICK_RE = /%60/gi; +const ENC_PIPE_RE = /%7c/gi; +const ENC_SPACE_RE = /%20/gi; +function encode(text) { + return encodeURI("" + text).replace(ENC_PIPE_RE, "|"); +} +function encodeQueryValue(input) { + return encode(typeof input === "string" ? input : JSON.stringify(input)).replace(PLUS_RE, "%2B").replace(ENC_SPACE_RE, "+").replace(HASH_RE, "%23").replace(AMPERSAND_RE, "%26").replace(ENC_BACKTICK_RE, "`").replace(ENC_CARET_RE, "^").replace(SLASH_RE, "%2F"); +} +function encodeQueryKey(text) { + return encodeQueryValue(text).replace(EQUAL_RE, "%3D"); +} +function encodeQueryItem(key, value) { + if (typeof value === "number" || typeof value === "boolean") value = String(value); + if (!value) return encodeQueryKey(key); + if (Array.isArray(value)) return value.map((_value) => `${encodeQueryKey(key)}=${encodeQueryValue(_value)}`).join("&"); + return `${encodeQueryKey(key)}=${encodeQueryValue(value)}`; +} +function stringifyQuery(query) { + return Object.keys(query).filter((k) => query[k] !== void 0).map((k) => encodeQueryItem(k, query[k])).filter(Boolean).join("&"); +} +new Set(builtinModules); +function clearImports(imports) { + return (imports || "").replace(/\/\/[^\n]*\n|\/\*.*\*\//g, "").replace(/\s+/g, " "); +} +function getImportNames(cleanedImports) { + const topLevelImports = cleanedImports.replace(/{[^}]*}/, ""); + return { + namespacedImport: topLevelImports.match(/\* as \s*(\S*)/)?.[1], + defaultImport: topLevelImports.split(",").find((index) => !/[*{}]/.test(index))?.trim() || void 0 + }; +} +/** +* @typedef ErrnoExceptionFields +* @property {number | undefined} [errnode] +* @property {string | undefined} [code] +* @property {string | undefined} [path] +* @property {string | undefined} [syscall] +* @property {string | undefined} [url] +* +* @typedef {Error & ErrnoExceptionFields} ErrnoException +*/ +const own$1 = {}.hasOwnProperty; +const classRegExp = /^([A-Z][a-z\d]*)+$/; +const kTypes = new Set([ + "string", + "function", + "number", + "object", + "Function", + "Object", + "boolean", + "bigint", + "symbol" +]); +const codes = {}; +/** +* Create a list string in the form like 'A and B' or 'A, B, ..., and Z'. +* We cannot use Intl.ListFormat because it's not available in +* --without-intl builds. +* +* @param {Array} array +* An array of strings. +* @param {string} [type] +* The list type to be inserted before the last element. +* @returns {string} +*/ +function formatList(array, type = "and") { + return array.length < 3 ? array.join(` ${type} `) : `${array.slice(0, -1).join(", ")}, ${type} ${array[array.length - 1]}`; +} +/** @type {Map} */ +const messages = /* @__PURE__ */ new Map(); +const nodeInternalPrefix = "__node_internal_"; +/** @type {number} */ +let userStackTraceLimit; +codes.ERR_INVALID_ARG_TYPE = createError( + "ERR_INVALID_ARG_TYPE", + /** + * @param {string} name + * @param {Array | string} expected + * @param {unknown} actual + */ + (name, expected, actual) => { + assert.ok(typeof name === "string", "'name' must be a string"); + if (!Array.isArray(expected)) expected = [expected]; + let message = "The "; + if (name.endsWith(" argument")) message += `${name} `; + else { + const type = name.includes(".") ? "property" : "argument"; + message += `"${name}" ${type} `; + } + message += "must be "; + /** @type {Array} */ + const types = []; + /** @type {Array} */ + const instances = []; + /** @type {Array} */ + const other = []; + for (const value of expected) { + assert.ok(typeof value === "string", "All expected entries have to be of type string"); + if (kTypes.has(value)) types.push(value.toLowerCase()); + else if (classRegExp.exec(value) === null) { + assert.ok(value !== "object", "The value \"object\" should be written as \"Object\""); + other.push(value); + } else instances.push(value); + } + if (instances.length > 0) { + const pos = types.indexOf("object"); + if (pos !== -1) { + types.slice(pos, 1); + instances.push("Object"); + } + } + if (types.length > 0) { + message += `${types.length > 1 ? "one of type" : "of type"} ${formatList(types, "or")}`; + if (instances.length > 0 || other.length > 0) message += " or "; + } + if (instances.length > 0) { + message += `an instance of ${formatList(instances, "or")}`; + if (other.length > 0) message += " or "; + } + if (other.length > 0) if (other.length > 1) message += `one of ${formatList(other, "or")}`; + else { + if (other[0].toLowerCase() !== other[0]) message += "an "; + message += `${other[0]}`; + } + message += `. Received ${determineSpecificType(actual)}`; + return message; + }, + TypeError +); +codes.ERR_INVALID_MODULE_SPECIFIER = createError( + "ERR_INVALID_MODULE_SPECIFIER", + /** + * @param {string} request + * @param {string} reason + * @param {string} [base] + */ + (request, reason, base = void 0) => { + return `Invalid module "${request}" ${reason}${base ? ` imported from ${base}` : ""}`; + }, + TypeError +); +codes.ERR_INVALID_PACKAGE_CONFIG = createError( + "ERR_INVALID_PACKAGE_CONFIG", + /** + * @param {string} path + * @param {string} [base] + * @param {string} [message] + */ + (path, base, message) => { + return `Invalid package config ${path}${base ? ` while importing ${base}` : ""}${message ? `. ${message}` : ""}`; + }, + Error +); +codes.ERR_INVALID_PACKAGE_TARGET = createError( + "ERR_INVALID_PACKAGE_TARGET", + /** + * @param {string} packagePath + * @param {string} key + * @param {unknown} target + * @param {boolean} [isImport=false] + * @param {string} [base] + */ + (packagePath, key, target, isImport = false, base = void 0) => { + const relatedError = typeof target === "string" && !isImport && target.length > 0 && !target.startsWith("./"); + if (key === ".") { + assert.ok(isImport === false); + return `Invalid "exports" main target ${JSON.stringify(target)} defined in the package config ${packagePath}package.json${base ? ` imported from ${base}` : ""}${relatedError ? "; targets must start with \"./\"" : ""}`; + } + return `Invalid "${isImport ? "imports" : "exports"}" target ${JSON.stringify(target)} defined for '${key}' in the package config ${packagePath}package.json${base ? ` imported from ${base}` : ""}${relatedError ? "; targets must start with \"./\"" : ""}`; + }, + Error +); +codes.ERR_MODULE_NOT_FOUND = createError( + "ERR_MODULE_NOT_FOUND", + /** + * @param {string} path + * @param {string} base + * @param {boolean} [exactUrl] + */ + (path, base, exactUrl = false) => { + return `Cannot find ${exactUrl ? "module" : "package"} '${path}' imported from ${base}`; + }, + Error +); +codes.ERR_NETWORK_IMPORT_DISALLOWED = createError("ERR_NETWORK_IMPORT_DISALLOWED", "import of '%s' by %s is not supported: %s", Error); +codes.ERR_PACKAGE_IMPORT_NOT_DEFINED = createError( + "ERR_PACKAGE_IMPORT_NOT_DEFINED", + /** + * @param {string} specifier + * @param {string} packagePath + * @param {string} base + */ + (specifier, packagePath, base) => { + return `Package import specifier "${specifier}" is not defined${packagePath ? ` in package ${packagePath}package.json` : ""} imported from ${base}`; + }, + TypeError +); +codes.ERR_PACKAGE_PATH_NOT_EXPORTED = createError( + "ERR_PACKAGE_PATH_NOT_EXPORTED", + /** + * @param {string} packagePath + * @param {string} subpath + * @param {string} [base] + */ + (packagePath, subpath, base = void 0) => { + if (subpath === ".") return `No "exports" main defined in ${packagePath}package.json${base ? ` imported from ${base}` : ""}`; + return `Package subpath '${subpath}' is not defined by "exports" in ${packagePath}package.json${base ? ` imported from ${base}` : ""}`; + }, + Error +); +codes.ERR_UNSUPPORTED_DIR_IMPORT = createError("ERR_UNSUPPORTED_DIR_IMPORT", "Directory import '%s' is not supported resolving ES modules imported from %s", Error); +codes.ERR_UNSUPPORTED_RESOLVE_REQUEST = createError("ERR_UNSUPPORTED_RESOLVE_REQUEST", "Failed to resolve module specifier \"%s\" from \"%s\": Invalid relative URL or base scheme is not hierarchical.", TypeError); +codes.ERR_UNKNOWN_FILE_EXTENSION = createError( + "ERR_UNKNOWN_FILE_EXTENSION", + /** + * @param {string} extension + * @param {string} path + */ + (extension, path) => { + return `Unknown file extension "${extension}" for ${path}`; + }, + TypeError +); +codes.ERR_INVALID_ARG_VALUE = createError( + "ERR_INVALID_ARG_VALUE", + /** + * @param {string} name + * @param {unknown} value + * @param {string} [reason='is invalid'] + */ + (name, value, reason = "is invalid") => { + let inspected = inspect(value); + if (inspected.length > 128) inspected = `${inspected.slice(0, 128)}...`; + return `The ${name.includes(".") ? "property" : "argument"} '${name}' ${reason}. Received ${inspected}`; + }, + TypeError +); +/** +* Utility function for registering the error codes. Only used here. Exported +* *only* to allow for testing. +* @param {string} sym +* @param {MessageFunction | string} value +* @param {ErrorConstructor} constructor +* @returns {new (...parameters: Array) => Error} +*/ +function createError(sym, value, constructor) { + messages.set(sym, value); + return makeNodeErrorWithCode(constructor, sym); +} +/** +* @param {ErrorConstructor} Base +* @param {string} key +* @returns {ErrorConstructor} +*/ +function makeNodeErrorWithCode(Base, key) { + return NodeError; + /** + * @param {Array} parameters + */ + function NodeError(...parameters) { + const limit = Error.stackTraceLimit; + if (isErrorStackTraceLimitWritable()) Error.stackTraceLimit = 0; + const error = new Base(); + if (isErrorStackTraceLimitWritable()) Error.stackTraceLimit = limit; + const message = getMessage(key, parameters, error); + Object.defineProperties(error, { + message: { + value: message, + enumerable: false, + writable: true, + configurable: true + }, + toString: { + /** @this {Error} */ + value() { + return `${this.name} [${key}]: ${this.message}`; + }, + enumerable: false, + writable: true, + configurable: true + } + }); + captureLargerStackTrace(error); + error.code = key; + return error; + } +} +/** +* @returns {boolean} +*/ +function isErrorStackTraceLimitWritable() { + try { + if (v8.startupSnapshot.isBuildingSnapshot()) return false; + } catch {} + const desc = Object.getOwnPropertyDescriptor(Error, "stackTraceLimit"); + if (desc === void 0) return Object.isExtensible(Error); + return own$1.call(desc, "writable") && desc.writable !== void 0 ? desc.writable : desc.set !== void 0; +} +/** +* This function removes unnecessary frames from Node.js core errors. +* @template {(...parameters: unknown[]) => unknown} T +* @param {T} wrappedFunction +* @returns {T} +*/ +function hideStackFrames(wrappedFunction) { + const hidden = nodeInternalPrefix + wrappedFunction.name; + Object.defineProperty(wrappedFunction, "name", { value: hidden }); + return wrappedFunction; +} +const captureLargerStackTrace = hideStackFrames( + /** + * @param {Error} error + * @returns {Error} + */ + function(error) { + const stackTraceLimitIsWritable = isErrorStackTraceLimitWritable(); + if (stackTraceLimitIsWritable) { + userStackTraceLimit = Error.stackTraceLimit; + Error.stackTraceLimit = Number.POSITIVE_INFINITY; + } + Error.captureStackTrace(error); + if (stackTraceLimitIsWritable) Error.stackTraceLimit = userStackTraceLimit; + return error; + } +); +/** +* @param {string} key +* @param {Array} parameters +* @param {Error} self +* @returns {string} +*/ +function getMessage(key, parameters, self) { + const message = messages.get(key); + assert.ok(message !== void 0, "expected `message` to be found"); + if (typeof message === "function") { + assert.ok(message.length <= parameters.length, `Code: ${key}; The provided arguments length (${parameters.length}) does not match the required ones (${message.length}).`); + return Reflect.apply(message, self, parameters); + } + const regex = /%[dfijoOs]/g; + let expectedLength = 0; + while (regex.exec(message) !== null) expectedLength++; + assert.ok(expectedLength === parameters.length, `Code: ${key}; The provided arguments length (${parameters.length}) does not match the required ones (${expectedLength}).`); + if (parameters.length === 0) return message; + parameters.unshift(message); + return Reflect.apply(format, null, parameters); +} +/** +* Determine the specific type of a value for type-mismatch errors. +* @param {unknown} value +* @returns {string} +*/ +function determineSpecificType(value) { + if (value === null || value === void 0) return String(value); + if (typeof value === "function" && value.name) return `function ${value.name}`; + if (typeof value === "object") { + if (value.constructor && value.constructor.name) return `an instance of ${value.constructor.name}`; + return `${inspect(value, { depth: -1 })}`; + } + let inspected = inspect(value, { colors: false }); + if (inspected.length > 28) inspected = `${inspected.slice(0, 25)}...`; + return `type ${typeof value} (${inspected})`; +} +const DEFAULT_CONDITIONS = Object.freeze(["node", "import"]); +new Set(DEFAULT_CONDITIONS); +const ESM_STATIC_IMPORT_RE = /(?<=\s|^|;|\})import\s*(?:[\s"']*(?[\p{L}\p{M}\w\t\n\r $*,/{}@.]+)from\s*)?["']\s*(?(?<="\s*)[^"]*[^\s"](?=\s*")|(?<='\s*)[^']*[^\s'](?=\s*'))\s*["'][\s;]*/gmu; +const TYPE_RE = /^\s*?type\s/; +function parseStaticImport(matched) { + const cleanedImports = clearImports(matched.imports); + const namedImports = {}; + const _matches = cleanedImports.match(/{([^}]*)}/)?.[1]?.split(",") || []; + for (const namedImport of _matches) { + const _match = namedImport.match(/^\s*(\S*) as (\S*)\s*$/); + const source = _match?.[1] || namedImport.trim(); + const importName = _match?.[2] || source; + if (source && !TYPE_RE.test(source)) namedImports[source] = importName; + } + const { namespacedImport, defaultImport } = getImportNames(cleanedImports); + return { + ...matched, + defaultImport, + namespacedImport, + namedImports + }; +} +//#endregion +//#region src/node/env.ts +var import_main = (/* @__PURE__ */ __commonJSMin(((exports, module) => { + function _resolveEscapeSequences(value) { + return value.replace(/\\\$/g, "$"); + } + function expandValue(value, processEnv, runningParsed) { + const env = { + ...runningParsed, + ...processEnv + }; + const regex = /(? normalizePath(path.join(envDir, file))); + return []; +} +function loadEnv(mode, envDir, prefixes = "VITE_") { + const start = performance.now(); + const getTime = () => `${(performance.now() - start).toFixed(2)}ms`; + if (mode === "local") throw new Error("\"local\" cannot be used as a mode name because it conflicts with the .local postfix for .env files."); + prefixes = arraify(prefixes); + const env = {}; + const envFiles = getEnvFilesForMode(mode, envDir); + debug$12?.(`loading env files: %O`, envFiles); + const parsed = Object.fromEntries(envFiles.flatMap((filePath) => { + const stat = tryStatSync(filePath); + if (!stat || !stat.isFile() && !stat.isFIFO()) return []; + const parsedEnv = parseEnv(fs.readFileSync(filePath, "utf-8")); + return Object.entries(parsedEnv); + })); + debug$12?.(`env files loaded in ${getTime()}`); + if (parsed.NODE_ENV && process.env.VITE_USER_NODE_ENV === void 0) process.env.VITE_USER_NODE_ENV = parsed.NODE_ENV; + if (parsed.BROWSER && process.env.BROWSER === void 0) process.env.BROWSER = parsed.BROWSER; + if (parsed.BROWSER_ARGS && process.env.BROWSER_ARGS === void 0) process.env.BROWSER_ARGS = parsed.BROWSER_ARGS; + (0, import_main.expand)({ + parsed, + processEnv: { ...process.env } + }); + for (const [key, value] of Object.entries(parsed)) if (prefixes.some((prefix) => key.startsWith(prefix))) env[key] = value; + for (const key in process.env) if (prefixes.some((prefix) => key.startsWith(prefix))) env[key] = process.env[key]; + debug$12?.(`using resolved env: %O`, env); + return env; +} +function resolveEnvPrefix({ envPrefix = "VITE_" }) { + envPrefix = arraify(envPrefix); + if (envPrefix.includes("")) throw new Error(`envPrefix option contains value '', which could lead unexpected exposure of sensitive information.`); + if (envPrefix.some((prefix) => /\s/.test(prefix))) console.warn(import_picocolors.default.yellow(`[vite] Warning: envPrefix option contains values with whitespace, which does not work in practice.`)); + return envPrefix; +} +//#endregion +//#region src/node/deprecations.ts +const docsURL = "https://vite.dev"; +const deprecationCode = { + removePluginHookSsrArgument: "this-environment-in-hooks", + removePluginHookHandleHotUpdate: "hotupdate-hook", + removeServerModuleGraph: "per-environment-apis", + removeServerReloadModule: "per-environment-apis", + removeServerPluginContainer: "per-environment-apis", + removeServerHot: "per-environment-apis", + removeServerTransformRequest: "per-environment-apis", + removeServerWarmupRequest: "per-environment-apis", + removeSsrLoadModule: "ssr-using-modulerunner" +}; +const deprecationMessages = { + removePluginHookSsrArgument: "Plugin hook `options.ssr` is replaced with `this.environment.config.consumer === 'server'`.", + removePluginHookHandleHotUpdate: "Plugin hook `handleHotUpdate()` is replaced with `hotUpdate()`.", + removeServerModuleGraph: "The `server.moduleGraph` is replaced with `this.environment.moduleGraph`.", + removeServerReloadModule: "The `server.reloadModule` is replaced with `environment.reloadModule`.", + removeServerPluginContainer: "The `server.pluginContainer` is replaced with `this.environment.pluginContainer`.", + removeServerHot: "The `server.hot` is replaced with `this.environment.hot`.", + removeServerTransformRequest: "The `server.transformRequest` is replaced with `this.environment.transformRequest`.", + removeServerWarmupRequest: "The `server.warmupRequest` is replaced with `this.environment.warmupRequest`.", + removeSsrLoadModule: "The `server.ssrLoadModule` is replaced with Environment Runner." +}; +let _ignoreDeprecationWarnings = false; +function isFutureDeprecationEnabled(config, type) { + return !!config.future?.[type]; +} +/** +* Warn about future deprecations. +*/ +function warnFutureDeprecation(config, type, extraMessage, stacktrace = true) { + if (_ignoreDeprecationWarnings || !config.future || config.future[type] !== "warn") return; + let msg = `[vite future] ${deprecationMessages[type]}`; + if (extraMessage) msg += ` ${extraMessage}`; + msg = import_picocolors.default.yellow(msg); + const docs = `${docsURL}/changes/${deprecationCode[type].toLowerCase()}`; + msg += import_picocolors.default.gray(`\n ${stacktrace ? "├" : "└"}─── `) + import_picocolors.default.underline(docs) + "\n"; + if (stacktrace) { + const stack = (/* @__PURE__ */ new Error()).stack; + if (stack) { + let stacks = stack.split("\n").slice(3).filter((i) => !i.includes("/node_modules/vite/dist/")); + if (stacks.length === 0) stacks.push("No stack trace found."); + stacks = stacks.map((i, idx) => ` ${idx === stacks.length - 1 ? "└" : "│"} ${i.trim()}`); + msg += import_picocolors.default.dim(stacks.join("\n")) + "\n"; + } + } + config.logger.warnOnce(msg); +} +function ignoreDeprecationWarnings(fn) { + const before = _ignoreDeprecationWarnings; + _ignoreDeprecationWarnings = true; + const ret = fn(); + _ignoreDeprecationWarnings = before; + return ret; +} +//#endregion +//#region src/node/server/middlewares/error.ts +function prepareError(err) { + return { + message: stripVTControlCharacters(err.message), + stack: stripVTControlCharacters(cleanStack(err.stack || "")), + id: err.id, + frame: stripVTControlCharacters(err.frame || ""), + plugin: err.plugin, + pluginCode: err.pluginCode?.toString(), + loc: err.loc + }; +} +function buildErrorMessage(err, args = [], includeStack = true) { + if (err.plugin) args.push(` Plugin: ${import_picocolors.default.magenta(err.plugin)}`); + const loc = err.loc ? `:${err.loc.line}:${err.loc.column}` : ""; + if (err.id) args.push(` File: ${import_picocolors.default.cyan(err.id)}${loc}`); + if (err.frame) args.push(import_picocolors.default.yellow(pad(err.frame))); + if (includeStack && err.stack) args.push(pad(cleanStack(err.stack))); + return args.join("\n"); +} +function cleanStack(stack) { + return stack.split(/\n/).filter((l) => /^\s*at/.test(l)).join("\n"); +} +function logError(server, err) { + const msg = buildErrorMessage(err, [import_picocolors.default.red(`Internal server error: ${err.message}`)]); + server.config.logger.error(msg, { + clear: true, + timestamp: true, + error: err + }); + server.environments.client.hot.send({ + type: "error", + err: prepareError(err) + }); +} +function errorMiddleware(server, allowNext = false) { + return function viteErrorMiddleware(err, _req, res, next) { + logError(server, err); + if (allowNext) next(); + else { + res.statusCode = 500; + res.end(` + + + + + Error +